From 749a8b126e658c57d1edb82d58fe04175d388a04 Mon Sep 17 00:00:00 2001 From: spessasus Date: Fri, 26 Jul 2024 03:41:59 +0200 Subject: [PATCH] The Soundfont Compression Update added soundfont compression wiki updates credit updates web app options for that also added bugfixes and improvements bug additions --- README.md | 91 +- package.json | 2 +- src/spessasynth_lib/externals/NOTICE | 5 + .../externals/OggVorbisEncoder.js | 37341 ++++++++++++++++ .../midi_parser/midi_editor.js | 9 +- .../midi_parser/rmidi_writer.js | 49 +- .../sequencer/worklet_sequencer/play.js | 2 +- .../worklet_sequencer/process_event.js | 2 +- src/spessasynth_lib/soundfont/read/samples.js | 223 +- src/spessasynth_lib/soundfont/write/sdta.js | 12 +- .../soundfont/write/soundfont_trimmer.js | 3 +- src/spessasynth_lib/soundfont/write/write.js | 31 +- src/spessasynth_lib/utils/encode_vorbis.js | 29 + src/website/css/notification/buttons.css | 3 +- src/website/css/notification/inputs.css | 26 +- src/website/css/notification/notification.css | 5 +- src/website/css/notification/texts.css | 5 + src/website/js/notification/get_content.js | 16 + src/website/js/notification/notification.js | 13 +- src/website/js/settings_ui/sliders.js | 111 +- src/website/js/soundfont_mixer.js | 2 +- .../locale_files/locale_en/export_audio.js | 31 +- .../locale_files/locale_ja/export_audio.js | 26 +- .../locale_files/locale_pl/export_audio.js | 27 + .../{export_wav.js => export_audio.js} | 78 +- src/website/manager/export_rmidi.js | 109 +- src/website/manager/export_song.js | 9 +- src/website/manager/export_soundfont.js | 58 +- src/website/manager/manager.js | 8 +- 29 files changed, 38012 insertions(+), 314 deletions(-) create mode 100644 src/spessasynth_lib/externals/NOTICE create mode 100644 src/spessasynth_lib/externals/OggVorbisEncoder.js create mode 100644 src/spessasynth_lib/utils/encode_vorbis.js rename src/website/manager/{export_wav.js => export_audio.js} (71%) diff --git a/README.md b/README.md index 87b23be0..b14ff89c 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,12 @@ SpessaSynth logo

-SoundFont2 based realtime synthetizer and MIDI player written in JavaScript using Web Audio API. -MIDI file reader and writer. SF2 Reader and writer. [RMIDI file](../../wiki/MIDI/About-RMIDI) reader and writer. +**SpessaSynth is SoundFont2 based realtime synthetizer and MIDI player written in JavaScript using Web Audio API. +A powerful library that allows you to read, write or play MIDI files and read/write SF2/SF3 files.** ![SpessaSynth Promotional Image](https://github.com/spessasus/SpessaSynth/assets/95608008/e2e6c4c6-0762-4c11-8887-a2318d431854) -

Exporting Soundfonts and RMIDIs now available!

+

Exporting Soundfonts and RMIDIs now available! With compression too!

@@ -20,61 +20,35 @@ MIDI file reader and writer. SF2 Reader and writer. [RMIDI file](../../wiki/MIDI

-This repository is essentially 2 programs in one: -

spessasynth_lib

+This repository contains both the library and a complete musical web application. See below +

spessasynth_lib

A flexible, powerful, and feature-packed soundfont synthesizer library for the WebAudio API. -Comes with the ability to edit midis and soundfonts!

+Comes with the ability to edit MIDIs and soundfonts!

-> [!TIP] -> Looking for a Node.js version? try [spessasynth_core](https://www.npmjs.com/package/spessasynth_core) - -

Documentation can be found here

+

Documentation can be found here

Features

- +- SoundFont2 Generator Support +- SoundFont2 Modulator Support +- SoundFont3 (vorbis compressed sf2) Support (thanks to [stbvorbis.js](https://github.com/hajimehoshi/stbvorbis.js)) +- Can provide very high quality audio while being relatively light on file size thanks to sf3 support +- Reverb and chorus support (customizable) +- Render audio to a .wav file +- Read and write .mid files +- Read and write [.rmi files with embedded SF2 soundfonts](../../wiki/MIDI/About-RMIDI) +- Read and write .sf2 files (or compress them to sf3) +- Read and write .sf3 files +- A few custom modulators to support some additional controllers (see `modulators.js`) +- Written using AudioWorklets (Firefox and Chrome both work perfectly) +- Can load really large soundfonts (4GB!) (but only on Firefox, Chromium has a memory limit) +- [Multi Port MIDIs support](../../wiki/MIDI/About-Multi-Port) (more than 16 channels) +- MIDI Controller Support (Default supported controllers can be found [here](../../wiki/MIDI-Implementation#supported-controllers)) +- [RPN and NRPN support](../../wiki/MIDI/MIDI-Implementation#supported-registered-parameters) +- Supports some Roland GS and Yamaha XG sysex messages +- High performance mode for playing black MIDIs (Don't go too crazy with the amount of notes though) +- Modular design allows easy integrations into other projects +- Written in pure JavaScript using WebAudio API (Every modern browser supports it) +- No dependencies ## Limitations - The performance is questionable, especially on mobile devices. @@ -84,6 +58,10 @@ Comes with the ability to edit midis and soundfonts!

2. copy `src/spessasynth_lib` to your project. 3. [Use the library](../../wiki/Home) + +> [!TIP] +> Looking for a Node.js version? try [spessasynth_core](https://www.npmjs.com/package/spessasynth_core)! +

Web app / Local Edition

The complete GUI for spessasynth_lib, allowing remixing experimenting and playing MIDIs in the coolest way possible.

Usage Guide

@@ -101,7 +79,7 @@ Comes with the ability to edit midis and soundfonts!

- Play around with the MIDI file, edit instruments controllers and more! - Render the MIDI file (either modified or unmodified) to .wav - Export the modified MIDI file to .mid -- Export the trimmed soundfont to .sf2 +- Export the trimmed soundfont to .sf2 or compressed .sf3 - Or bundle both as .rmi! - Comes bundled with a compressed [SGM](https://web.archive.org/web/20130616094125/http://www.geocities.jp/shansoundfont/) SoundFont to get you started - Also no dependencies! @@ -151,13 +129,14 @@ Comes with the ability to edit midis and soundfonts!

- [Polyphone](https://www.polyphone-soundfonts.com/) - a wonderful testing and editing tool for soundfonts and how they should sound - [Meltysynth](https://github.com/sinshu/meltysynth) - for the initial low-pass filter implementation - [RecordingBlogs](https://www.recordingblogs.com/) - for the detailed explanations on MIDI messages + - [OggVorbisEncoder](https://github.com/higuma/ogg-vorbis-encoder-js) - for the MIT vorbis encoder. - **And You!** - for checking out this project. I hope you like it :) ### Major releases - [0.0.1](https://github.com/spessasus/SpessaSynth/commit/bc5c6516ae7edc94656b5df75d254a29280caa18) - the initial release - [1.0.0](https://github.com/spessasus/SpessaSynth/commit/45c23d1c2906b2dec202c0533a9737bd1fa6b3c4) - removed the 2 sample limit(the biggest problem program faced so far) - [2.0.0](https://github.com/spessasus/SpessaSynth/commit/350e4db90210375da27e393393df743be2137d59) - implemented the worklet system and added support for modulators -- [3.0.0](https://github.com/spessasus/SpessaSynth/commit/b7f9e382a2f62eef462755ac9ebfe603663e4106) - everything moved to audioWorkletGlobalScope which allows for offline audio rendering +- [3.0.0](https://github.com/spessasus/SpessaSynth/commit/b7f9e382a2f62eef462755ac9ebfe603663e4106) - everything moved to audioWorkletGlobalScope which allows for offline audio rendering. (We are here) ### License Copyright © 2024 Spessasus. Licensed under the MIT License. diff --git a/package.json b/package.json index 7e0528f8..75643115 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "SpessaSynth", - "version": "3.7.0", + "version": "3.8.6", "type": "module", "scripts": { "start": "node src/website/server/server.js", diff --git a/src/spessasynth_lib/externals/NOTICE b/src/spessasynth_lib/externals/NOTICE new file mode 100644 index 00000000..7b555d7b --- /dev/null +++ b/src/spessasynth_lib/externals/NOTICE @@ -0,0 +1,5 @@ +LICENSE is for stbvorbis_sync.js which is licensed under Apache-2.0 + +OggVorbisEncoder (https://github.com/higuma/ogg-vorbis-encoder-js) +is licensed under MIT. +The file provided is a slight modification to work with es6. \ No newline at end of file diff --git a/src/spessasynth_lib/externals/OggVorbisEncoder.js b/src/spessasynth_lib/externals/OggVorbisEncoder.js new file mode 100644 index 00000000..3a47fb1a --- /dev/null +++ b/src/spessasynth_lib/externals/OggVorbisEncoder.js @@ -0,0 +1,37341 @@ +let libvorbis = { + init: ( + function() + { + +// The Module object: Our interface to the outside world. We import +// and export values on it, and do the work to get that through +// closure compiler if necessary. There are various ways Module can be used: +// 1. Not defined. We create it here +// 2. A function parameter, function(Module) { ..generated code.. } +// 3. pre-run appended it, var Module = {}; ..generated code.. +// 4. External script tag defines var Module. +// We need to do an eval in order to handle the closure compiler +// case, where this code here is minified but Module was defined +// elsewhere (e.g. case 4 above). We also need to check if Module +// already exists (e.g. case 3 above). +// Note that if you want to run closure, and also to use Module +// after the generated code, you will need to define var Module = {}; +// before the code. Then that object will be used in the code, and you +// can continue to use Module afterwards as well. +var Module; +if (!Module) Module = (typeof Module !== 'undefined' ? Module : null) || {}; + +// Sometimes an existing Module object exists with properties +// meant to overwrite the default module functionality. Here +// we collect those properties and reapply _after_ we configure +// the current environment's defaults to avoid having to be so +// defensive during initialization. +var moduleOverrides = {}; +for (var key in Module) { + if (Module.hasOwnProperty(key)) { + moduleOverrides[key] = Module[key]; + } +} + +// The environment setup code below is customized to use Module. +// *** Environment setup code *** +var ENVIRONMENT_IS_WEB = typeof window === 'object'; +var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function' && !ENVIRONMENT_IS_WEB; +// Three configurations we can be running in: +// 1) We could be the application main() thread running in the main JS UI thread. (ENVIRONMENT_IS_WORKER == false and ENVIRONMENT_IS_PTHREAD == false) +// 2) We could be the application main() thread proxied to worker. (with Emscripten -s PROXY_TO_WORKER=1) (ENVIRONMENT_IS_WORKER == true, ENVIRONMENT_IS_PTHREAD == false) +// 3) We could be an application pthread running in a worker. (ENVIRONMENT_IS_WORKER == true and ENVIRONMENT_IS_PTHREAD == true) +var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function'; +var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; + +if (ENVIRONMENT_IS_NODE) { + // Expose functionality in the same simple way that the shells work + // Note that we pollute the global namespace here, otherwise we break in 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); + // The path is absolute if the normalized version is the same as the resolved. + 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) { return Module['read'](filename, true) }; + + 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) { + // suppress ExitStatus exceptions from showing an error + 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; // not present in v8 or older sm + + 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 { + // Probably a worker, and without console.log. We can do very little here... + var TRY_USE_DUMP = false; + if (!Module['print']) Module['print'] = (TRY_USE_DUMP && (typeof(dump) !== "undefined") ? (function(x) { + dump(x); + }) : (function(x) { + // self.postMessage(x); // enable this if you want stdout to be sent as messages + })); + } + + if (ENVIRONMENT_IS_WORKER) { + Module['load'] = importScripts; + } + + if (typeof Module['setWindowTitle'] === 'undefined') { + Module['setWindowTitle'] = function(title) { document.title = title }; + } +} +else { + // Unreachable because SHELL is dependant on the others + 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'; +} + +// *** Environment setup code *** + +// Closure helpers +Module.print = Module['print']; +Module.printErr = Module['printErr']; + +// Callbacks +Module['preRun'] = []; +Module['postRun'] = []; + +// Merge back in the overrides +for (var key in moduleOverrides) { + if (moduleOverrides.hasOwnProperty(key)) { + Module[key] = moduleOverrides[key]; + } +} + + + +// === Preamble library stuff === + +// Documentation for the public APIs defined in this file must be updated in: +// site/source/docs/api_reference/preamble.js.rst +// A prebuilt local version of the documentation is available at: +// site/build/text/docs/api_reference/preamble.js.txt +// You can also build docs locally as HTML or other formats in site/ +// An online HTML version (which may be of a different version of Emscripten) +// is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html + +//======================================== +// Runtime code shared with compiler +//======================================== + +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; // A pointer + } 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') { + // move so the load is aligned + if (ptr & 7) { + assert((ptr & 7) === 4); + ptr += 4; + } + } else { + assert((ptr & 3) === 0); + } + return ptr; + }, + getAlignSize: function (type, size, vararg) { + // we align i64s and doubles on 64-bit boundaries, unlike x86 + if (!vararg && (type == 'i64' || type == 'double')) return 8; + if (!type) return Math.min(size, 8); // align structures internally to 64 bits + 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.0)) : ((+((low>>>0)))+((+((high|0)))*4294967296.0))); return ret; }, + GLOBAL_BASE: 8, + QUANTUM_SIZE: 4, + __dummy__: 0 +} + + +Module['Runtime'] = Runtime; + + + +//======================================== +// Runtime essentials +//======================================== + +var __THREW__ = 0; // Used in checking for thrown exceptions. + +var ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort() +var EXITSTATUS = 0; + +var undef = 0; +// tempInt is used for 32-bit signed values or smaller. tempBigInt is used +// for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt +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; + +// Returns the C function with a specified identifier (for C++, you need to do manual name mangling) +function getCFunc(ident) { + var func = Module['_' + ident]; // closure exported function + if (!func) { + try { + func = eval('_' + ident); // explicit lookup + } catch(e) {} + } + assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)'); + return func; +} + +var cwrap, ccall; +(function(){ + var JSfuncs = { + // Helpers for cwrap -- it can't refer to Runtime directly because it might + // be renamed by closure, instead it calls JSfuncs['stackSave'].body to find + // out what the minified function name is. + 'stackSave': function() { + Runtime.stackSave() + }, + 'stackRestore': function() { + Runtime.stackRestore() + }, + // type conversion from js to c + '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) { // null string + // at most 4 bytes per UTF-8 code point, +1 for the trailing '\0' + ret = Runtime.stackAlloc((str.length << 2) + 1); + writeStringToMemory(str, ret); + } + return ret; + } + }; + // For fast lookup of conversion functions + var toC = {'string' : JSfuncs['stringToC'], 'array' : JSfuncs['arrayToC']}; + + // C calling interface. + 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) { + // Match the body and the return value of a javascript function source + 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)) { + // Elements of toCsource are arrays of three items: + // the code, and the return value + JSsource[fun] = parseJSFunc(JSfuncs[fun]); + } + } + + + cwrap = function cwrap(ident, returnType, argTypes) { + argTypes = argTypes || []; + var cfunc = getCFunc(ident); + // When the function takes numbers and returns a number, we can just return + // the original function + var numericArgs = argTypes.every(function(type){ return type === 'number'}); + var numericRet = (returnType !== 'string'); + if ( numericRet && numericArgs) { + return cfunc; + } + // Creation of the arguments list (["$1","$2",...,"$nargs"]) + var argNames = argTypes.map(function(x,i){return '$'+i}); + var funcstr = "(function(" + argNames.join(',') + ") {"; + var nargs = argTypes.length; + if (!numericArgs) { + // Generate the code needed to convert the arguments from javascript + // values to pointers + 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']; // [code, return] + funcstr += 'var ' + convertCode.arguments + ' = ' + arg + ';'; + funcstr += convertCode.body + ';'; + funcstr += arg + '=' + convertCode.returnValue + ';'; + } + } + + // When the code is compressed, the name of cfunc is not literally 'cfunc' anymore + var cfuncname = parseJSFunc(function(){return cfunc}).returnValue; + // Call the function + funcstr += 'var ret = ' + cfuncname + '(' + argNames.join(',') + ');'; + if (!numericRet) { // Return type can only by 'string' or 'number' + // Convert the result to a string + var strgfy = parseJSFunc(function(){return Pointer_stringify}).returnValue; + funcstr += 'ret = ' + strgfy + '(ret);'; + } + if (!numericArgs) { + // If we had a stack, restore it + funcstr += JSsource['stackRestore'].body.replace('()', '(stack)') + ';'; + } + funcstr += 'return ret})'; + return eval(funcstr); + }; +})(); +Module["cwrap"] = cwrap; +Module["ccall"] = ccall; + + +function setValue(ptr, value, type, noSafe) { + type = type || 'i8'; + if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit + 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.0 ? (tempDouble > 0.0 ? ((Math_min((+(Math_floor((tempDouble)/4294967296.0))), 4294967295.0))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/4294967296.0)))))>>>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'; // pointers are 32-bit + 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; // Tries to use _malloc() +var ALLOC_STACK = 1; // Lives for the duration of the current function call +var ALLOC_STATIC = 2; // Cannot be freed +var ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk +var ALLOC_NONE = 4; // Do not allocate +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; + +// allocate(): This is for internal use. You can use it yourself as well, but the interface +// is a little tricky (see docs right below). The reason is that it is optimized +// for multiple syntaxes to save space in generated code. So you should +// normally not use allocate(), and instead allocate memory using _malloc(), +// initialize it with setValue(), and so forth. +// @slab: An array of data, or a number. If a number, then the size of the block to allocate, +// in *bytes* (note that this is sometimes confusing: the next parameter does not +// affect this!) +// @types: Either an array of types, one for each byte (or 0 if no type at that position), +// or a single type which is used for the entire block. This only matters if there +// is initial data - if @slab is a number, then this does not matter at all and is +// ignored. +// @allocator: How to allocate memory, see ALLOC_* +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'; // special case: we have one i32 here, and one i32 later + + setValue(ret+i, curr, type); + + // no need to look up size unless type changes, so cache it + if (previousType !== type) { + typeSize = Runtime.getNativeTypeSize(type); + previousType = type; + } + i += typeSize; + } + + return ret; +} +Module['allocate'] = allocate; + +// Allocate memory during any stage of startup - static memory early on, dynamic memory later, malloc when ready +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, /* optional */ length) { + if (length === 0 || !ptr) return ''; + // TODO: use TextDecoder + // Find the length, and check for UTF while doing so + 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; // split up into chunks, because .apply on a huge string can overflow the stack + 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; + +// Given a pointer 'ptr' to a null-terminated ASCII-encoded string in the emscripten HEAP, returns +// a copy of that string as a Javascript String object. + +function AsciiToString(ptr) { + var str = ''; + while (1) { + var ch = HEAP8[((ptr++)>>0)]; + if (!ch) return str; + str += String.fromCharCode(ch); + } +} +Module['AsciiToString'] = AsciiToString; + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in ASCII form. The copy will require at most str.length+1 bytes of space in the HEAP. + +function stringToAscii(str, outPtr) { + return writeAsciiToMemory(str, outPtr, false); +} +Module['stringToAscii'] = stringToAscii; + +// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the given array that contains uint8 values, returns +// a copy of that string as a Javascript String object. + +function UTF8ArrayToString(u8Array, idx) { + var u0, u1, u2, u3, u4, u5; + + var str = ''; + while (1) { + // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629 + u0 = u8Array[idx++]; + if (!u0) return str; + if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; } + u1 = u8Array[idx++] & 63; + if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; } + u2 = u8Array[idx++] & 63; + if ((u0 & 0xF0) == 0xE0) { + u0 = ((u0 & 15) << 12) | (u1 << 6) | u2; + } else { + u3 = u8Array[idx++] & 63; + if ((u0 & 0xF8) == 0xF0) { + u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | u3; + } else { + u4 = u8Array[idx++] & 63; + if ((u0 & 0xFC) == 0xF8) { + 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 < 0x10000) { + str += String.fromCharCode(u0); + } else { + var ch = u0 - 0x10000; + str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); + } + } +} +Module['UTF8ArrayToString'] = UTF8ArrayToString; + +// Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the emscripten HEAP, returns +// a copy of that string as a Javascript String object. + +function UTF8ToString(ptr) { + return UTF8ArrayToString(HEAPU8, ptr); +} +Module['UTF8ToString'] = UTF8ToString; + +// Copies the given Javascript String object 'str' to the given byte array at address 'outIdx', +// encoded in UTF8 form and null-terminated. The copy will require at most str.length*4+1 bytes of space in the HEAP. +// Use the function lengthBytesUTF8() to compute the exact number of bytes (excluding null terminator) that this function will write. +// Parameters: +// str: the Javascript string to copy. +// outU8Array: the array to copy to. Each index in this array is assumed to be one 8-byte element. +// outIdx: The starting offset in the array to begin the copying. +// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null +// terminator, i.e. if maxBytesToWrite=1, only the null terminator will be written and nothing else. +// maxBytesToWrite=0 does not write any bytes to the output, not even the null terminator. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) // Parameter maxBytesToWrite is not optional. Negative values, 0, null, undefined and false each don't write out any bytes. + return 0; + + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; // -1 for string null terminator. + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + // For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description and https://www.ietf.org/rfc/rfc2279.txt and https://tools.ietf.org/html/rfc3629 + var u = str.charCodeAt(i); // possibly a lead surrogate + if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF); + if (u <= 0x7F) { + if (outIdx >= endIdx) break; + outU8Array[outIdx++] = u; + } else if (u <= 0x7FF) { + if (outIdx + 1 >= endIdx) break; + outU8Array[outIdx++] = 0xC0 | (u >> 6); + outU8Array[outIdx++] = 0x80 | (u & 63); + } else if (u <= 0xFFFF) { + if (outIdx + 2 >= endIdx) break; + outU8Array[outIdx++] = 0xE0 | (u >> 12); + outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63); + outU8Array[outIdx++] = 0x80 | (u & 63); + } else if (u <= 0x1FFFFF) { + if (outIdx + 3 >= endIdx) break; + outU8Array[outIdx++] = 0xF0 | (u >> 18); + outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63); + outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63); + outU8Array[outIdx++] = 0x80 | (u & 63); + } else if (u <= 0x3FFFFFF) { + if (outIdx + 4 >= endIdx) break; + outU8Array[outIdx++] = 0xF8 | (u >> 24); + outU8Array[outIdx++] = 0x80 | ((u >> 18) & 63); + outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63); + outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63); + outU8Array[outIdx++] = 0x80 | (u & 63); + } else { + if (outIdx + 5 >= endIdx) break; + outU8Array[outIdx++] = 0xFC | (u >> 30); + outU8Array[outIdx++] = 0x80 | ((u >> 24) & 63); + outU8Array[outIdx++] = 0x80 | ((u >> 18) & 63); + outU8Array[outIdx++] = 0x80 | ((u >> 12) & 63); + outU8Array[outIdx++] = 0x80 | ((u >> 6) & 63); + outU8Array[outIdx++] = 0x80 | (u & 63); + } + } + // Null-terminate the pointer to the buffer. + outU8Array[outIdx] = 0; + return outIdx - startIdx; +} +Module['stringToUTF8Array'] = stringToUTF8Array; + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in UTF8 form. The copy will require at most str.length*4+1 bytes of space in the HEAP. +// Use the function lengthBytesUTF8() to compute the exact number of bytes (excluding null terminator) that this function will write. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF8(str, outPtr, maxBytesToWrite) { + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); +} +Module['stringToUTF8'] = stringToUTF8; + +// Returns the number of bytes the given Javascript string takes if encoded as a UTF8 byte array, EXCLUDING the null terminator byte. + +function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! So decode UTF16->UTF32->UTF8. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + var u = str.charCodeAt(i); // possibly a lead surrogate + if (u >= 0xD800 && u <= 0xDFFF) u = 0x10000 + ((u & 0x3FF) << 10) | (str.charCodeAt(++i) & 0x3FF); + if (u <= 0x7F) { + ++len; + } else if (u <= 0x7FF) { + len += 2; + } else if (u <= 0xFFFF) { + len += 3; + } else if (u <= 0x1FFFFF) { + len += 4; + } else if (u <= 0x3FFFFFF) { + len += 5; + } else { + len += 6; + } + } + return len; +} +Module['lengthBytesUTF8'] = lengthBytesUTF8; + +// Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns +// a copy of that string as a Javascript String object. + +function UTF16ToString(ptr) { + var i = 0; + + var str = ''; + while (1) { + var codeUnit = HEAP16[(((ptr)+(i*2))>>1)]; + if (codeUnit == 0) + return str; + ++i; + // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through. + str += String.fromCharCode(codeUnit); + } +} +Module['UTF16ToString'] = UTF16ToString; + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in UTF16 form. The copy will require at most str.length*4+2 bytes of space in the HEAP. +// Use the function lengthBytesUTF16() to compute the exact number of bytes (excluding null terminator) that this function will write. +// Parameters: +// str: the Javascript string to copy. +// outPtr: Byte address in Emscripten HEAP where to write the string to. +// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null +// terminator, i.e. if maxBytesToWrite=2, only the null terminator will be written and nothing else. +// maxBytesToWrite<2 does not write any bytes to the output, not even the null terminator. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF16(str, outPtr, maxBytesToWrite) { + // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 0x7FFFFFFF; + } + if (maxBytesToWrite < 2) return 0; + maxBytesToWrite -= 2; // Null terminator. + var startPtr = outPtr; + var numCharsToWrite = (maxBytesToWrite < str.length*2) ? (maxBytesToWrite / 2) : str.length; + for (var i = 0; i < numCharsToWrite; ++i) { + // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP. + var codeUnit = str.charCodeAt(i); // possibly a lead surrogate + HEAP16[((outPtr)>>1)]=codeUnit; + outPtr += 2; + } + // Null-terminate the pointer to the HEAP. + HEAP16[((outPtr)>>1)]=0; + return outPtr - startPtr; +} +Module['stringToUTF16'] = stringToUTF16; + +// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte. + +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; + // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + if (utf32 >= 0x10000) { + var ch = utf32 - 0x10000; + str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF)); + } else { + str += String.fromCharCode(utf32); + } + } +} +Module['UTF32ToString'] = UTF32ToString; + +// Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr', +// null-terminated and encoded in UTF32 form. The copy will require at most str.length*4+4 bytes of space in the HEAP. +// Use the function lengthBytesUTF32() to compute the exact number of bytes (excluding null terminator) that this function will write. +// Parameters: +// str: the Javascript string to copy. +// outPtr: Byte address in Emscripten HEAP where to write the string to. +// maxBytesToWrite: The maximum number of bytes this function can write to the array. This count should include the null +// terminator, i.e. if maxBytesToWrite=4, only the null terminator will be written and nothing else. +// maxBytesToWrite<4 does not write any bytes to the output, not even the null terminator. +// Returns the number of bytes written, EXCLUDING the null terminator. + +function stringToUTF32(str, outPtr, maxBytesToWrite) { + // Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed. + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 0x7FFFFFFF; + } + if (maxBytesToWrite < 4) return 0; + var startPtr = outPtr; + var endPtr = startPtr + maxBytesToWrite - 4; + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + var codeUnit = str.charCodeAt(i); // possibly a lead surrogate + if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) { + var trailSurrogate = str.charCodeAt(++i); + codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF); + } + HEAP32[((outPtr)>>2)]=codeUnit; + outPtr += 4; + if (outPtr + 4 > endPtr) break; + } + // Null-terminate the pointer to the HEAP. + HEAP32[((outPtr)>>2)]=0; + return outPtr - startPtr; +} +Module['stringToUTF32'] = stringToUTF32; + +// Returns the number of bytes the given Javascript string takes if encoded as a UTF16 byte array, EXCLUDING the null terminator byte. + +function lengthBytesUTF32(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap. + // See http://unicode.org/faq/utf_bom.html#utf16-3 + var codeUnit = str.charCodeAt(i); + if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) ++i; // possibly a lead surrogate, so skip over the tail surrogate. + 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); + } + // otherwise, libcxxabi failed, we can try ours which may return a partial result + } catch(e) { + // failure when using libcxxabi, we can try ours which may return a partial result + } finally { + if (buf) _free(buf); + if (status) _free(status); + if (ret) _free(ret); + } + } + var i = 3; + // params, etc. + 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) { + //return; + 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++; // ignore const + var parts = []; + while (func[i] !== 'E') { + if (func[i] === 'S') { // substitution + 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') { // constructor + 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; } // counter i++ below us + var curr = func.substr(i + pre, size); + parts.push(curr); + subs.push(curr); + i += pre + size; + } + i++; // skip E + return parts; + } + function parse(rawList, limit, allowVoid) { // main parser + limit = limit || Infinity; + var ret = '', list = []; + function flushList() { + return '(' + list.join(', ') + ')'; + } + var name; + if (func[i] === 'N') { + // namespaced N-E + name = parseNested().join('::'); + limit--; + if (limit === 0) return rawList ? [name] : name; + } else { + // not namespaced + if (func[i] === 'K' || (first && func[i] === 'L')) i++; // ignore const and first 'L' + 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) { + //dump('paramLoop'); + 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; // pointer + case 'R': list.push(parse(true, 1, true)[0] + '&'); break; // reference + case 'L': { // literal + i++; // skip basic type + var end = func.indexOf('E', i); + var size = end - i; + list.push(func.substr(i, size)); + i += size + 2; // size + 'EE' + break; + } + case 'A': { // array + var size = parseInt(func.substr(i)); + i += size.toString().length; + if (func[i] !== '_') throw '?'; + i++; // skip _ + 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 = []; // avoid (void) + if (rawList) { + if (ret) { + list.push(ret + '?'); + } + return list; + } else { + return ret + flushList(); + } + } + var parsed = func; + try { + // Special-case the entry point, since its name differs from other name mangling. + 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; // C function + 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) { + // IE10+ special cases: It does have callstack info, but it is only populated if an Error object is thrown, + // so try that as a special-case. + 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; + +// Memory management + +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; // static area +var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; // stack area +var DYNAMIC_BASE = 0, DYNAMICTOP = 0; // dynamic area handled by sbrk + + +function enlargeMemory() { + 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 ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.'); +} + + +var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880; +var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 16777216; + +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) { + Module.printErr('increasing TOTAL_MEMORY to ' + totalMemory + ' to be compliant with the asm.js spec (and given that TOTAL_STACK=' + TOTAL_STACK + ')'); + TOTAL_MEMORY = totalMemory; +} + +// Initialize the runtime's memory +// check for full engine support (use string 'subarray' to avoid closure compiler confusion) +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); + +// Endianness check (note: assumes compiler arch was little-endian) +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__ = []; // functions called before the runtime is initialized +var __ATINIT__ = []; // functions called during startup +var __ATMAIN__ = []; // functions called when main() is to be run +var __ATEXIT__ = []; // functions called during shutdown +var __ATPOSTRUN__ = []; // functions called after the runtime has exited + +var runtimeInitialized = false; +var runtimeExited = false; + + +function preRun() { + // compatibility - merge in anything from Module['preRun'] at this time + 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() { + // compatibility - merge in anything from Module['postRun'] at this time + 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'] = Module.addOnPreRun = addOnPreRun; + +function addOnInit(cb) { + __ATINIT__.unshift(cb); +} +Module['addOnInit'] = Module.addOnInit = addOnInit; + +function addOnPreMain(cb) { + __ATMAIN__.unshift(cb); +} +Module['addOnPreMain'] = Module.addOnPreMain = addOnPreMain; + +function addOnExit(cb) { + __ATEXIT__.unshift(cb); +} +Module['addOnExit'] = Module.addOnExit = addOnExit; + +function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); +} +Module['addOnPostRun'] = Module.addOnPostRun = addOnPostRun; + +// Tools + + +function intArrayFromString(stringy, dontAddNull, length /* optional */) { + 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 > 0xFF) { + chr &= 0xFF; + } + 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); + } + // Null-terminate the pointer to the HEAP. + 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 // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts + : Math.pow(2, bits) + value; +} +function reSign(value, bits, ignore) { + if (value <= 0) { + return value; + } + var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32 + : Math.pow(2, bits-1); + if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that + // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors + // TODO: In i64 mode 1, resign the two parts separately and safely + value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts + } + return value; +} + + +// check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 ) +if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) { + var ah = a >>> 16; + var al = a & 0xffff; + var bh = b >>> 16; + var bl = b & 0xffff; + 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; + +// A counter of dependencies for calling run(). If we need to +// do asynchronous work before running, increment this and +// decrement it. Incrementing must happen in a place like +// PRE_RUN_ADDITIONS (used by emcc to add file preloading). +// Note that you can add dependencies in preRun, even though +// it happens right before run - run will be postponed until +// the dependencies are met. +var runDependencies = 0; +var runDependencyWatcher = null; +var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled + +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(); // can add another dependenciesFulfilled + } + } +} +Module['removeRunDependency'] = removeRunDependency; + +Module["preloadedImages"] = {}; // maps url to image data +Module["preloadedAudios"] = {}; // maps url to audio data + + + +var memoryInitializer = null; + + + +// === Body === + +var ASM_CONSTS = []; + + + + +STATIC_BASE = 8; + +STATICTOP = STATIC_BASE + 553552; + /* global initializers */ __ATINIT__.push(); + + +/* memory initializer */ allocate([0,0,0,0,1,0,0,0,3,0,0,0,7,0,0,0,15,0,0,0,31,0,0,0,63,0,0,0,127,0,0,0,255,0,0,0,255,1,0,0,255,3,0,0,255,7,0,0,255,15,0,0,255,31,0,0,255,63,0,0,255,127,0,0,255,255,0,0,255,255,1,0,255,255,3,0,255,255,7,0,255,255,15,0,255,255,31,0,255,255,63,0,255,255,127,0,255,255,255,0,255,255,255,1,255,255,255,3,255,255,255,7,255,255,255,15,255,255,255,31,255,255,255,63,255,255,255,127,255,255,255,255,0,0,0,0,0,0,0,0,183,29,193,4,110,59,130,9,217,38,67,13,220,118,4,19,107,107,197,23,178,77,134,26,5,80,71,30,184,237,8,38,15,240,201,34,214,214,138,47,97,203,75,43,100,155,12,53,211,134,205,49,10,160,142,60,189,189,79,56,112,219,17,76,199,198,208,72,30,224,147,69,169,253,82,65,172,173,21,95,27,176,212,91,194,150,151,86,117,139,86,82,200,54,25,106,127,43,216,110,166,13,155,99,17,16,90,103,20,64,29,121,163,93,220,125,122,123,159,112,205,102,94,116,224,182,35,152,87,171,226,156,142,141,161,145,57,144,96,149,60,192,39,139,139,221,230,143,82,251,165,130,229,230,100,134,88,91,43,190,239,70,234,186,54,96,169,183,129,125,104,179,132,45,47,173,51,48,238,169,234,22,173,164,93,11,108,160,144,109,50,212,39,112,243,208,254,86,176,221,73,75,113,217,76,27,54,199,251,6,247,195,34,32,180,206,149,61,117,202,40,128,58,242,159,157,251,246,70,187,184,251,241,166,121,255,244,246,62,225,67,235,255,229,154,205,188,232,45,208,125,236,119,112,134,52,192,109,71,48,25,75,4,61,174,86,197,57,171,6,130,39,28,27,67,35,197,61,0,46,114,32,193,42,207,157,142,18,120,128,79,22,161,166,12,27,22,187,205,31,19,235,138,1,164,246,75,5,125,208,8,8,202,205,201,12,7,171,151,120,176,182,86,124,105,144,21,113,222,141,212,117,219,221,147,107,108,192,82,111,181,230,17,98,2,251,208,102,191,70,159,94,8,91,94,90,209,125,29,87,102,96,220,83,99,48,155,77,212,45,90,73,13,11,25,68,186,22,216,64,151,198,165,172,32,219,100,168,249,253,39,165,78,224,230,161,75,176,161,191,252,173,96,187,37,139,35,182,146,150,226,178,47,43,173,138,152,54,108,142,65,16,47,131,246,13,238,135,243,93,169,153,68,64,104,157,157,102,43,144,42,123,234,148,231,29,180,224,80,0,117,228,137,38,54,233,62,59,247,237,59,107,176,243,140,118,113,247,85,80,50,250,226,77,243,254,95,240,188,198,232,237,125,194,49,203,62,207,134,214,255,203,131,134,184,213,52,155,121,209,237,189,58,220,90,160,251,216,238,224,12,105,89,253,205,109,128,219,142,96,55,198,79,100,50,150,8,122,133,139,201,126,92,173,138,115,235,176,75,119,86,13,4,79,225,16,197,75,56,54,134,70,143,43,71,66,138,123,0,92,61,102,193,88,228,64,130,85,83,93,67,81,158,59,29,37,41,38,220,33,240,0,159,44,71,29,94,40,66,77,25,54,245,80,216,50,44,118,155,63,155,107,90,59,38,214,21,3,145,203,212,7,72,237,151,10,255,240,86,14,250,160,17,16,77,189,208,20,148,155,147,25,35,134,82,29,14,86,47,241,185,75,238,245,96,109,173,248,215,112,108,252,210,32,43,226,101,61,234,230,188,27,169,235,11,6,104,239,182,187,39,215,1,166,230,211,216,128,165,222,111,157,100,218,106,205,35,196,221,208,226,192,4,246,161,205,179,235,96,201,126,141,62,189,201,144,255,185,16,182,188,180,167,171,125,176,162,251,58,174,21,230,251,170,204,192,184,167,123,221,121,163,198,96,54,155,113,125,247,159,168,91,180,146,31,70,117,150,26,22,50,136,173,11,243,140,116,45,176,129,195,48,113,133,153,144,138,93,46,141,75,89,247,171,8,84,64,182,201,80,69,230,142,78,242,251,79,74,43,221,12,71,156,192,205,67,33,125,130,123,150,96,67,127,79,70,0,114,248,91,193,118,253,11,134,104,74,22,71,108,147,48,4,97,36,45,197,101,233,75,155,17,94,86,90,21,135,112,25,24,48,109,216,28,53,61,159,2,130,32,94,6,91,6,29,11,236,27,220,15,81,166,147,55,230,187,82,51,63,157,17,62,136,128,208,58,141,208,151,36,58,205,86,32,227,235,21,45,84,246,212,41,121,38,169,197,206,59,104,193,23,29,43,204,160,0,234,200,165,80,173,214,18,77,108,210,203,107,47,223,124,118,238,219,193,203,161,227,118,214,96,231,175,240,35,234,24,237,226,238,29,189,165,240,170,160,100,244,115,134,39,249,196,155,230,253,9,253,184,137,190,224,121,141,103,198,58,128,208,219,251,132,213,139,188,154,98,150,125,158,187,176,62,147,12,173,255,151,177,16,176,175,6,13,113,171,223,43,50,166,104,54,243,162,109,102,180,188,218,123,117,184,3,93,54,181,180,64,247,177,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,88,105,112,104,46,79,114,103,32,108,105,98,86,111,114,98,105,115,32,73,32,50,48,49,53,48,49,48,53,32,40,226,155,132,226,155,132,226,155,132,226,155,132,41,0,0,0,0,1,0,0,0,4,0,0,0,3,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,0,0,76,194,0,0,80,194,0,0,84,194,0,0,88,194,0,0,92,194,0,0,96,194,0,0,100,194,0,0,104,194,0,0,108,194,0,0,112,194,0,0,116,194,0,0,120,194,0,0,124,194,0,0,128,194,0,0,130,194,0,0,132,194,0,0,134,194,0,0,136,194,0,0,138,194,0,0,140,194,0,0,142,194,0,0,144,194,0,0,146,194,0,0,148,194,0,0,150,194,0,0,152,194,0,0,154,194,0,0,156,194,0,0,160,194,0,0,162,194,0,0,164,194,0,0,166,194,0,0,168,194,0,0,170,194,0,0,172,194,0,0,174,194,0,0,176,194,0,0,176,194,0,0,178,194,0,0,178,194,0,0,180,194,0,0,182,194,0,0,182,194,0,0,184,194,0,0,186,194,0,0,188,194,0,0,190,194,0,0,192,194,0,0,192,194,0,0,194,194,0,0,196,194,0,0,196,194,0,0,198,194,0,0,198,194,0,0,200,194,0,0,200,194,0,0,202,194,0,0,204,194,0,0,206,194,0,0,208,194,0,0,212,194,0,0,214,194,0,0,214,194,0,0,214,194,0,0,214,194,0,0,210,194,0,0,206,194,0,0,204,194,0,0,202,194,0,0,198,194,0,0,196,194,0,0,192,194,0,0,190,194,0,0,190,194,0,0,192,194,0,0,194,194,0,0,192,194,0,0,190,194,0,0,186,194,0,0,180,194,0,0,160,194,0,0,140,194,0,0,72,194,0,0,32,194,0,0,240,193,0,0,240,193,0,0,240,193,0,0,240,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,248,63,0,0,0,0,0,0,4,64,0,0,0,0,0,0,18,64,0,0,0,0,0,0,33,64,0,0,0,0,0,128,48,64,0,0,0,4,107,244,52,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,248,63,0,0,0,0,0,0,0,64,0,0,0,0,0,0,4,64,0,0,0,0,0,0,18,64,0,0,0,0,0,0,33,64,0,0,0,4,107,244,52,66,62,180,228,51,9,145,243,51,139,178,1,52,60,32,10,52,35,26,19,52,96,169,28,52,167,215,38,52,75,175,49,52,80,59,61,52,112,135,73,52,35,160,86,52,184,146,100,52,85,109,115,52,136,159,129,52,252,11,138,52,147,4,147,52,105,146,156,52,50,191,166,52,63,149,177,52,147,31,189,52,228,105,201,52,173,128,214,52,54,113,228,52,166,73,243,52,136,140,1,53,192,247,9,53,6,239,18,53,118,123,28,53,192,166,38,53,55,123,49,53,218,3,61,53,94,76,73,53,59,97,86,53,185,79,100,53,252,37,115,53,138,121,129,53,134,227,137,53,124,217,146,53,133,100,156,53,82,142,166,53,51,97,177,53,37,232,188,53,220,46,201,53,206,65,214,53,65,46,228,53,87,2,243,53,143,102,1,54,79,207,9,54,245,195,18,54,152,77,28,54,232,117,38,54,50,71,49,54,116,204,60,54,94,17,73,54,101,34,86,54,206,12,100,54,184,222,114,54,151,83,129,54,28,187,137,54,114,174,146,54,175,54,156,54,129,93,166,54,53,45,177,54,199,176,188,54,228,243,200,54,1,3,214,54,96,235,227,54,30,187,242,54,162,64,1,55,235,166,9,55,241,152,18,55,201,31,28,55,30,69,38,55,61,19,49,55,30,149,60,55,111,214,72,55,162,227,85,55,247,201,99,55,137,151,114,55,175,45,129,55,190,146,137,55,116,131,146,55,230,8,156,55,190,44,166,55,71,249,176,55,121,121,188,55,254,184,200,55,71,196,213,55,146,168,227,55,248,115,242,55,192,26,1,56,147,126,9,56,249,109,18,56,6,242,27,56,98,20,38,56,86,223,48,56,216,93,60,56,146,155,72,56,242,164,85,56,51,135,99,56,110,80,114,56,211,7,129,56,107,106,137,56,130,88,146,56,42,219,155,56,9,252,165,56,104,197,176,56,59,66,188,56,41,126,200,56,160,133,213,56,217,101,227,56,232,44,242,56,233,244,0,57,70,86,9,57,14,67,18,57,81,196,27,57,181,227,37,57,127,171,48,57,162,38,60,57,197,96,72,57,83,102,85,57,131,68,99,57,104,9,114,57,1,226,128,57,36,66,137,57,157,45,146,57,123,173,155,57,99,203,165,57,153,145,176,57,13,11,188,57,102,67,200,57,11,71,213,57,50,35,227,57,237,229,241,57,29,207,0,58,5,46,9,58,48,24,18,58,169,150,27,58,21,179,37,58,183,119,48,58,124,239,59,58,10,38,72,58,199,39,85,58,230,1,99,58,120,194,113,58,59,188,128,58,233,25,137,58,198,2,146,58,219,127,155,58,203,154,165,58,216,93,176,58,239,211,187,58,179,8,200,58,136,8,213,58,159,224,226,58,7,159,241,58,92,169,0,59,208,5,9,59,94,237,17,59,15,105,27,59,132,130,37,59,253,67,48,59,103,184,59,59,97,235,71,59,77,233,84,59,93,191,98,59,156,123,113,59,127,150,128,59,186,241,136,59,249,215,145,59,71,82,155,59,65,106,165,59,39,42,176,59,226,156,187,59,18,206,199,59,23,202,212,59,32,158,226,59,53,88,241,59,166,131,0,60,167,221,8,60,152,194,17,60,130,59,27,60,1,82,37,60,84,16,48,60,97,129,59,60,200,176,71,60,229,170,84,60,232,124,98,60,212,52,113,60,207,112,128,60,150,201,136,60,58,173,145,60,192,36,155,60,197,57,165,60,133,246,175,60,229,101,187,60,130,147,199,60,185,139,212,60,180,91,226,60,121,17,241,60,251,93,0,61,137,181,8,61,223,151,17,61,2,14,27,61,141,33,37,61,185,220,47,61,109,74,59,61,64,118,71,61,145,108,84,61,133,58,98,61,34,238,112,61,42,75,128,61,127,161,136,61,136,130,145,61,72,247,154,61,88,9,165,61,242,194,175,61,248,46,187,61,3,89,199,61,109,77,212,61,92,25,226,61,209,202,240,61,91,56,0,62,119,141,8,62,51,109,17,62,144,224,26,62,39,241,36,62,46,169,47,62,135,19,59,62,202,59,71,62,77,46,84,62,55,248,97,62,132,167,112,62,143,37,128,62,115,121,136,62,226,87,145,62,220,201,154,62,249,216,164,62,109,143,175,62,27,248,186,62,149,30,199,62,51,15,212,62,23,215,225,62,61,132,240,62,198,18,0,63,114,101,8,63,147,66,17,63,43,179,26,63,206,192,36,63,177,117,47,63,178,220,58,63,101,1,71,63,29,240,83,63,251,181,97,63,251,96,112,63,0,0,128,63,0,0,112,194,0,0,112,194,0,0,112,194,0,0,112,194,0,0,112,194,0,0,112,194,0,0,112,194,0,0,112,194,0,0,112,194,0,0,112,194,0,0,112,194,0,0,112,194,0,0,120,194,0,0,120,194,0,0,130,194,0,0,146,194,0,0,138,194,0,0,136,194,0,0,136,194,0,0,134,194,0,0,140,194,0,0,140,194,0,0,144,194,0,0,148,194,0,0,150,194,0,0,158,194,0,0,158,194,0,0,160,194,0,0,166,194,0,0,176,194,0,0,186,194,0,0,200,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,64,194,0,0,64,194,0,0,64,194,0,0,64,194,0,0,64,194,0,0,64,194,0,0,64,194,0,0,64,194,0,0,64,194,0,0,64,194,0,0,64,194,0,0,64,194,0,0,64,194,0,0,84,194,0,0,116,194,0,0,132,194,0,0,132,194,0,0,136,194,0,0,134,194,0,0,140,194,0,0,152,194,0,0,152,194,0,0,144,194,0,0,146,194,0,0,150,194,0,0,152,194,0,0,156,194,0,0,158,194,0,0,166,194,0,0,176,194,0,0,186,194,0,0,200,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,20,194,0,0,20,194,0,0,20,194,0,0,20,194,0,0,20,194,0,0,20,194,0,0,20,194,0,0,20,194,0,0,24,194,0,0,32,194,0,0,40,194,0,0,56,194,0,0,64,194,0,0,84,194,0,0,92,194,0,0,120,194,0,0,130,194,0,0,104,194,0,0,96,194,0,0,96,194,0,0,116,194,0,0,112,194,0,0,130,194,0,0,134,194,0,0,138,194,0,0,142,194,0,0,154,194,0,0,154,194,0,0,156,194,0,0,160,194,0,0,164,194,0,0,168,194,0,0,176,194,0,0,186,194,0,0,196,194,0,0,212,194,0,0,224,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,200,193,0,0,200,193,0,0,200,193,0,0,200,193,0,0,200,193,0,0,200,193,0,0,200,193,0,0,200,193,0,0,200,193,0,0,208,193,0,0,216,193,0,0,232,193,0,0,0,194,0,0,24,194,0,0,64,194,0,0,80,194,0,0,80,194,0,0,72,194,0,0,64,194,0,0,64,194,0,0,76,194,0,0,80,194,0,0,88,194,0,0,112,194,0,0,134,194,0,0,134,194,0,0,132,194,0,0,136,194,0,0,138,194,0,0,146,194,0,0,146,194,0,0,152,194,0,0,160,194,0,0,162,194,0,0,162,194,0,0,170,194,0,0,170,194,0,0,172,194,0,0,176,194,0,0,186,194,0,0,200,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,128,193,0,0,128,193,0,0,128,193,0,0,128,193,0,0,128,193,0,0,128,193,0,0,128,193,0,0,128,193,0,0,136,193,0,0,152,193,0,0,160,193,0,0,176,193,0,0,208,193,0,0,224,193,0,0,248,193,0,0,32,194,0,0,60,194,0,0,28,194,0,0,28,194,0,0,32,194,0,0,40,194,0,0,44,194,0,0,60,194,0,0,76,194,0,0,100,194,0,0,80,194,0,0,92,194,0,0,92,194,0,0,112,194,0,0,104,194,0,0,120,194,0,0,124,194,0,0,140,194,0,0,134,194,0,0,138,194,0,0,144,194,0,0,146,194,0,0,154,194,0,0,160,194,0,0,164,194,0,0,166,194,0,0,174,194,0,0,180,194,0,0,188,194,0,0,196,194,0,0,208,194,0,0,230,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,0,193,0,0,0,193,0,0,0,193,0,0,0,193,0,0,0,193,0,0,0,193,0,0,0,193,0,0,0,193,0,0,0,193,0,0,0,193,0,0,32,193,0,0,48,193,0,0,112,193,0,0,152,193,0,0,200,193,0,0,240,193,0,0,8,194,0,0,248,193,0,0,240,193,0,0,248,193,0,0,232,193,0,0,0,194,0,0,12,194,0,0,40,194,0,0,64,194,0,0,40,194,0,0,48,194,0,0,56,194,0,0,72,194,0,0,72,194,0,0,76,194,0,0,80,194,0,0,108,194,0,0,88,194,0,0,92,194,0,0,92,194,0,0,104,194,0,0,120,194,0,0,124,194,0,0,132,194,0,0,144,194,0,0,146,194,0,0,152,194,0,0,150,194,0,0,156,194,0,0,160,194,0,0,160,194,0,0,162,194,0,0,168,194,0,0,176,194,0,0,180,194,0,0,188,194,0,0,196,194,0,0,202,194,0,0,212,194,0,0,220,194,0,0,132,194,0,0,132,194,0,0,132,194,0,0,132,194,0,0,132,194,0,0,132,194,0,0,132,194,0,0,132,194,0,0,132,194,0,0,132,194,0,0,132,194,0,0,132,194,0,0,132,194,0,0,134,194,0,0,134,194,0,0,134,194,0,0,152,194,0,0,144,194,0,0,142,194,0,0,148,194,0,0,152,194,0,0,152,194,0,0,150,194,0,0,156,194,0,0,158,194,0,0,158,194,0,0,162,194,0,0,166,194,0,0,172,194,0,0,178,194,0,0,186,194,0,0,194,194,0,0,200,194,0,0,210,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,60,194,0,0,60,194,0,0,60,194,0,0,60,194,0,0,60,194,0,0,60,194,0,0,60,194,0,0,60,194,0,0,60,194,0,0,60,194,0,0,60,194,0,0,64,194,0,0,76,194,0,0,92,194,0,0,108,194,0,0,132,194,0,0,132,194,0,0,132,194,0,0,134,194,0,0,132,194,0,0,136,194,0,0,138,194,0,0,140,194,0,0,148,194,0,0,158,194,0,0,154,194,0,0,154,194,0,0,156,194,0,0,160,194,0,0,162,194,0,0,164,194,0,0,168,194,0,0,172,194,0,0,176,194,0,0,182,194,0,0,190,194,0,0,200,194,0,0,216,194,0,0,232,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,16,194,0,0,16,194,0,0,16,194,0,0,16,194,0,0,16,194,0,0,16,194,0,0,16,194,0,0,16,194,0,0,16,194,0,0,20,194,0,0,20,194,0,0,36,194,0,0,48,194,0,0,64,194,0,0,76,194,0,0,104,194,0,0,120,194,0,0,112,194,0,0,100,194,0,0,108,194,0,0,108,194,0,0,112,194,0,0,124,194,0,0,130,194,0,0,144,194,0,0,142,194,0,0,140,194,0,0,144,194,0,0,148,194,0,0,154,194,0,0,152,194,0,0,156,194,0,0,162,194,0,0,162,194,0,0,160,194,0,0,166,194,0,0,172,194,0,0,182,194,0,0,192,194,0,0,200,194,0,0,210,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,224,193,0,0,224,193,0,0,224,193,0,0,224,193,0,0,224,193,0,0,224,193,0,0,224,193,0,0,224,193,0,0,224,193,0,0,240,193,0,0,0,194,0,0,0,194,0,0,4,194,0,0,12,194,0,0,36,194,0,0,68,194,0,0,72,194,0,0,68,194,0,0,60,194,0,0,64,194,0,0,64,194,0,0,80,194,0,0,76,194,0,0,100,194,0,0,130,194,0,0,116,194,0,0,108,194,0,0,116,194,0,0,128,194,0,0,138,194,0,0,140,194,0,0,148,194,0,0,154,194,0,0,154,194,0,0,156,194,0,0,162,194,0,0,168,194,0,0,170,194,0,0,174,194,0,0,180,194,0,0,184,194,0,0,192,194,0,0,200,194,0,0,214,194,0,0,224,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,152,193,0,0,152,193,0,0,152,193,0,0,152,193,0,0,152,193,0,0,152,193,0,0,152,193,0,0,152,193,0,0,160,193,0,0,168,193,0,0,184,193,0,0,216,193,0,0,240,193,0,0,12,194,0,0,16,194,0,0,36,194,0,0,56,194,0,0,48,194,0,0,40,194,0,0,32,194,0,0,36,194,0,0,36,194,0,0,44,194,0,0,64,194,0,0,92,194,0,0,84,194,0,0,80,194,0,0,84,194,0,0,96,194,0,0,108,194,0,0,104,194,0,0,112,194,0,0,134,194,0,0,132,194,0,0,138,194,0,0,142,194,0,0,144,194,0,0,150,194,0,0,158,194,0,0,162,194,0,0,168,194,0,0,174,194,0,0,180,194,0,0,186,194,0,0,194,194,0,0,202,194,0,0,214,194,0,0,228,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,16,193,0,0,16,193,0,0,16,193,0,0,16,193,0,0,16,193,0,0,16,193,0,0,16,193,0,0,16,193,0,0,48,193,0,0,64,193,0,0,64,193,0,0,112,193,0,0,128,193,0,0,160,193,0,0,184,193,0,0,240,193,0,0,20,194,0,0,8,194,0,0,4,194,0,0,8,194,0,0,248,193,0,0,0,194,0,0,0,194,0,0,24,194,0,0,60,194,0,0,48,194,0,0,36,194,0,0,32,194,0,0,60,194,0,0,68,194,0,0,56,194,0,0,56,194,0,0,104,194,0,0,72,194,0,0,72,194,0,0,88,194,0,0,104,194,0,0,120,194,0,0,128,194,0,0,134,194,0,0,134,194,0,0,140,194,0,0,144,194,0,0,152,194,0,0,158,194,0,0,166,194,0,0,174,194,0,0,182,194,0,0,192,194,0,0,200,194,0,0,208,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,120,194,0,0,120,194,0,0,120,194,0,0,120,194,0,0,120,194,0,0,120,194,0,0,120,194,0,0,120,194,0,0,120,194,0,0,120,194,0,0,124,194,0,0,128,194,0,0,132,194,0,0,134,194,0,0,132,194,0,0,136,194,0,0,150,194,0,0,144,194,0,0,152,194,0,0,150,194,0,0,152,194,0,0,156,194,0,0,158,194,0,0,164,194,0,0,168,194,0,0,170,194,0,0,180,194,0,0,188,194,0,0,202,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,108,194,0,0,108,194,0,0,108,194,0,0,108,194,0,0,108,194,0,0,108,194,0,0,108,194,0,0,108,194,0,0,108,194,0,0,108,194,0,0,108,194,0,0,112,194,0,0,112,194,0,0,116,194,0,0,124,194,0,0,132,194,0,0,142,194,0,0,136,194,0,0,140,194,0,0,140,194,0,0,142,194,0,0,144,194,0,0,144,194,0,0,150,194,0,0,162,194,0,0,156,194,0,0,158,194,0,0,164,194,0,0,166,194,0,0,172,194,0,0,180,194,0,0,194,194,0,0,206,194,0,0,226,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,84,194,0,0,84,194,0,0,84,194,0,0,84,194,0,0,84,194,0,0,84,194,0,0,84,194,0,0,84,194,0,0,84,194,0,0,88,194,0,0,92,194,0,0,100,194,0,0,96,194,0,0,100,194,0,0,92,194,0,0,116,194,0,0,130,194,0,0,112,194,0,0,112,194,0,0,120,194,0,0,124,194,0,0,124,194,0,0,132,194,0,0,136,194,0,0,148,194,0,0,146,194,0,0,150,194,0,0,150,194,0,0,156,194,0,0,160,194,0,0,160,194,0,0,164,194,0,0,170,194,0,0,180,194,0,0,192,194,0,0,202,194,0,0,216,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,56,194,0,0,56,194,0,0,56,194,0,0,56,194,0,0,56,194,0,0,56,194,0,0,56,194,0,0,56,194,0,0,56,194,0,0,56,194,0,0,60,194,0,0,60,194,0,0,60,194,0,0,60,194,0,0,64,194,0,0,76,194,0,0,100,194,0,0,76,194,0,0,68,194,0,0,72,194,0,0,76,194,0,0,84,194,0,0,88,194,0,0,108,194,0,0,132,194,0,0,112,194,0,0,120,194,0,0,134,194,0,0,134,194,0,0,140,194,0,0,144,194,0,0,150,194,0,0,152,194,0,0,156,194,0,0,162,194,0,0,170,194,0,0,176,194,0,0,188,194,0,0,194,194,0,0,208,194,0,0,224,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,16,194,0,0,16,194,0,0,16,194,0,0,16,194,0,0,16,194,0,0,16,194,0,0,16,194,0,0,16,194,0,0,28,194,0,0,36,194,0,0,40,194,0,0,40,194,0,0,28,194,0,0,24,194,0,0,36,194,0,0,44,194,0,0,80,194,0,0,48,194,0,0,32,194,0,0,28,194,0,0,20,194,0,0,20,194,0,0,32,194,0,0,60,194,0,0,88,194,0,0,72,194,0,0,64,194,0,0,72,194,0,0,92,194,0,0,116,194,0,0,108,194,0,0,120,194,0,0,132,194,0,0,132,194,0,0,132,194,0,0,138,194,0,0,138,194,0,0,146,194,0,0,148,194,0,0,148,194,0,0,150,194,0,0,154,194,0,0,158,194,0,0,164,194,0,0,174,194,0,0,182,194,0,0,190,194,0,0,200,194,0,0,216,194,0,0,230,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,224,193,0,0,208,193,0,0,192,193,0,0,176,193,0,0,160,193,0,0,160,193,0,0,184,193,0,0,232,193,0,0,240,193,0,0,248,193,0,0,224,193,0,0,216,193,0,0,224,193,0,0,224,193,0,0,224,193,0,0,12,194,0,0,32,194,0,0,4,194,0,0,0,194,0,0,232,193,0,0,240,193,0,0,240,193,0,0,240,193,0,0,20,194,0,0,52,194,0,0,36,194,0,0,20,194,0,0,24,194,0,0,52,194,0,0,60,194,0,0,60,194,0,0,64,194,0,0,84,194,0,0,68,194,0,0,64,194,0,0,72,194,0,0,68,194,0,0,68,194,0,0,76,194,0,0,80,194,0,0,104,194,0,0,96,194,0,0,100,194,0,0,96,194,0,0,112,194,0,0,116,194,0,0,120,194,0,0,140,194,0,0,144,194,0,0,148,194,0,0,156,194,0,0,166,194,0,0,176,194,0,0,186,194,0,0,200,194,0,0,212,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,210,194,0,0,200,194,0,0,190,194,0,0,182,194,0,0,174,194,0,0,166,194,0,0,160,194,0,0,156,194,0,0,152,194,0,0,156,194,0,0,156,194,0,0,162,194,0,0,166,194,0,0,170,194,0,0,172,194,0,0,170,194,0,0,172,194,0,0,174,194,0,0,180,194,0,0,194,194,0,0,214,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,210,194,0,0,200,194,0,0,190,194,0,0,180,194,0,0,170,194,0,0,162,194,0,0,154,194,0,0,146,194,0,0,140,194,0,0,134,194,0,0,134,194,0,0,136,194,0,0,150,194,0,0,146,194,0,0,140,194,0,0,138,194,0,0,140,194,0,0,144,194,0,0,150,194,0,0,158,194,0,0,168,194,0,0,166,194,0,0,168,194,0,0,172,194,0,0,176,194,0,0,178,194,0,0,178,194,0,0,186,194,0,0,196,194,0,0,210,194,0,0,224,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,210,194,0,0,200,194,0,0,190,194,0,0,180,194,0,0,170,194,0,0,160,194,0,0,152,194,0,0,142,194,0,0,136,194,0,0,136,194,0,0,130,194,0,0,124,194,0,0,124,194,0,0,120,194,0,0,120,194,0,0,128,194,0,0,130,194,0,0,128,194,0,0,116,194,0,0,120,194,0,0,124,194,0,0,128,194,0,0,132,194,0,0,136,194,0,0,146,194,0,0,146,194,0,0,148,194,0,0,150,194,0,0,152,194,0,0,162,194,0,0,166,194,0,0,170,194,0,0,176,194,0,0,178,194,0,0,184,194,0,0,190,194,0,0,200,194,0,0,216,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,160,194,0,0,150,194,0,0,142,194,0,0,136,194,0,0,130,194,0,0,124,194,0,0,120,194,0,0,116,194,0,0,116,194,0,0,116,194,0,0,116,194,0,0,108,194,0,0,96,194,0,0,100,194,0,0,84,194,0,0,72,194,0,0,104,194,0,0,80,194,0,0,72,194,0,0,72,194,0,0,80,194,0,0,84,194,0,0,88,194,0,0,104,194,0,0,134,194,0,0,124,194,0,0,134,194,0,0,136,194,0,0,144,194,0,0,150,194,0,0,156,194,0,0,160,194,0,0,162,194,0,0,162,194,0,0,164,194,0,0,170,194,0,0,178,194,0,0,180,194,0,0,186,194,0,0,194,194,0,0,202,194,0,0,214,194,0,0,228,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,130,194,0,0,116,194,0,0,108,194,0,0,100,194,0,0,96,194,0,0,92,194,0,0,92,194,0,0,96,194,0,0,96,194,0,0,100,194,0,0,92,194,0,0,84,194,0,0,80,194,0,0,60,194,0,0,48,194,0,0,48,194,0,0,72,194,0,0,48,194,0,0,36,194,0,0,28,194,0,0,28,194,0,0,40,194,0,0,32,194,0,0,56,194,0,0,76,194,0,0,68,194,0,0,72,194,0,0,84,194,0,0,88,194,0,0,124,194,0,0,112,194,0,0,116,194,0,0,120,194,0,0,132,194,0,0,132,194,0,0,132,194,0,0,140,194,0,0,146,194,0,0,148,194,0,0,150,194,0,0,152,194,0,0,150,194,0,0,158,194,0,0,170,194,0,0,178,194,0,0,182,194,0,0,192,194,0,0,204,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,80,194,0,0,72,194,0,0,68,194,0,0,68,194,0,0,64,194,0,0,64,194,0,0,64,194,0,0,68,194,0,0,72,194,0,0,72,194,0,0,68,194,0,0,56,194,0,0,44,194,0,0,28,194,0,0,12,194,0,0,4,194,0,0,24,194,0,0,16,194,0,0,0,194,0,0,232,193,0,0,0,194,0,0,0,194,0,0,0,194,0,0,12,194,0,0,48,194,0,0,28,194,0,0,24,194,0,0,24,194,0,0,56,194,0,0,72,194,0,0,52,194,0,0,56,194,0,0,84,194,0,0,72,194,0,0,72,194,0,0,72,194,0,0,88,194,0,0,88,194,0,0,84,194,0,0,84,194,0,0,96,194,0,0,100,194,0,0,108,194,0,0,132,194,0,0,140,194,0,0,144,194,0,0,148,194,0,0,158,194,0,0,166,194,0,0,170,194,0,0,180,194,0,0,194,194,0,0,228,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,210,194,0,0,200,194,0,0,190,194,0,0,180,194,0,0,172,194,0,0,160,194,0,0,150,194,0,0,150,194,0,0,158,194,0,0,160,194,0,0,158,194,0,0,160,194,0,0,162,194,0,0,164,194,0,0,176,194,0,0,190,194,0,0,206,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,216,194,0,0,206,194,0,0,196,194,0,0,186,194,0,0,176,194,0,0,166,194,0,0,158,194,0,0,156,194,0,0,150,194,0,0,142,194,0,0,134,194,0,0,136,194,0,0,146,194,0,0,146,194,0,0,144,194,0,0,146,194,0,0,150,194,0,0,154,194,0,0,160,194,0,0,164,194,0,0,176,194,0,0,186,194,0,0,200,194,0,0,214,194,0,0,228,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,210,194,0,0,202,194,0,0,192,194,0,0,180,194,0,0,172,194,0,0,162,194,0,0,154,194,0,0,146,194,0,0,138,194,0,0,132,194,0,0,116,194,0,0,120,194,0,0,132,194,0,0,128,194,0,0,120,194,0,0,130,194,0,0,132,194,0,0,140,194,0,0,144,194,0,0,152,194,0,0,162,194,0,0,160,194,0,0,168,194,0,0,180,194,0,0,190,194,0,0,204,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,214,194,0,0,206,194,0,0,194,194,0,0,184,194,0,0,176,194,0,0,166,194,0,0,158,194,0,0,148,194,0,0,140,194,0,0,132,194,0,0,108,194,0,0,84,194,0,0,104,194,0,0,120,194,0,0,92,194,0,0,88,194,0,0,88,194,0,0,88,194,0,0,104,194,0,0,116,194,0,0,120,194,0,0,144,194,0,0,140,194,0,0,144,194,0,0,150,194,0,0,156,194,0,0,160,194,0,0,162,194,0,0,160,194,0,0,166,194,0,0,166,194,0,0,176,194,0,0,186,194,0,0,200,194,0,0,214,194,0,0,230,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,210,194,0,0,200,194,0,0,190,194,0,0,180,194,0,0,170,194,0,0,160,194,0,0,150,194,0,0,140,194,0,0,132,194,0,0,120,194,0,0,96,194,0,0,64,194,0,0,48,194,0,0,64,194,0,0,56,194,0,0,56,194,0,0,44,194,0,0,56,194,0,0,64,194,0,0,64,194,0,0,76,194,0,0,104,194,0,0,104,194,0,0,108,194,0,0,112,194,0,0,120,194,0,0,120,194,0,0,116,194,0,0,116,194,0,0,130,194,0,0,128,194,0,0,130,194,0,0,136,194,0,0,140,194,0,0,148,194,0,0,150,194,0,0,156,194,0,0,162,194,0,0,172,194,0,0,190,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,210,194,0,0,200,194,0,0,190,194,0,0,180,194,0,0,170,194,0,0,160,194,0,0,150,194,0,0,140,194,0,0,130,194,0,0,116,194,0,0,92,194,0,0,68,194,0,0,28,194,0,0,4,194,0,0,32,194,0,0,12,194,0,0,0,194,0,0,24,194,0,0,32,194,0,0,4,194,0,0,12,194,0,0,20,194,0,0,56,194,0,0,36,194,0,0,52,194,0,0,48,194,0,0,56,194,0,0,40,194,0,0,52,194,0,0,56,194,0,0,80,194,0,0,72,194,0,0,72,194,0,0,72,194,0,0,88,194,0,0,88,194,0,0,92,194,0,0,100,194,0,0,120,194,0,0,128,194,0,0,132,194,0,0,136,194,0,0,140,194,0,0,152,194,0,0,162,194,0,0,180,194,0,0,200,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,210,194,0,0,196,194,0,0,180,194,0,0,170,194,0,0,164,194,0,0,166,194,0,0,160,194,0,0,156,194,0,0,168,194,0,0,158,194,0,0,160,194,0,0,166,194,0,0,174,194,0,0,178,194,0,0,182,194,0,0,186,194,0,0,198,194,0,0,212,194,0,0,234,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,210,194,0,0,196,194,0,0,180,194,0,0,170,194,0,0,160,194,0,0,150,194,0,0,140,194,0,0,136,194,0,0,148,194,0,0,144,194,0,0,148,194,0,0,154,194,0,0,160,194,0,0,164,194,0,0,170,194,0,0,174,194,0,0,184,194,0,0,178,194,0,0,182,194,0,0,190,194,0,0,200,194,0,0,212,194,0,0,224,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,210,194,0,0,196,194,0,0,180,194,0,0,166,194,0,0,150,194,0,0,142,194,0,0,124,194,0,0,128,194,0,0,134,194,0,0,120,194,0,0,128,194,0,0,134,194,0,0,140,194,0,0,146,194,0,0,154,194,0,0,162,194,0,0,168,194,0,0,166,194,0,0,170,194,0,0,178,194,0,0,180,194,0,0,186,194,0,0,196,194,0,0,208,194,0,0,218,194,0,0,228,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,206,194,0,0,192,194,0,0,176,194,0,0,162,194,0,0,150,194,0,0,136,194,0,0,104,194,0,0,88,194], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE); +/* memory initializer */ allocate([0,0,96,194,0,0,88,194,0,0,96,194,0,0,96,194,0,0,104,194,0,0,112,194,0,0,124,194,0,0,132,194,0,0,148,194,0,0,138,194,0,0,144,194,0,0,144,194,0,0,150,194,0,0,148,194,0,0,154,194,0,0,162,194,0,0,162,194,0,0,164,194,0,0,168,194,0,0,174,194,0,0,186,194,0,0,192,194,0,0,198,194,0,0,208,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,216,194,0,0,204,194,0,0,192,194,0,0,182,194,0,0,170,194,0,0,160,194,0,0,148,194,0,0,136,194,0,0,112,194,0,0,76,194,0,0,56,194,0,0,64,194,0,0,56,194,0,0,44,194,0,0,52,194,0,0,60,194,0,0,60,194,0,0,68,194,0,0,64,194,0,0,96,194,0,0,84,194,0,0,92,194,0,0,104,194,0,0,100,194,0,0,124,194,0,0,104,194,0,0,112,194,0,0,132,194,0,0,128,194,0,0,134,194,0,0,140,194,0,0,140,194,0,0,148,194,0,0,154,194,0,0,168,194,0,0,172,194,0,0,178,194,0,0,182,194,0,0,186,194,0,0,188,194,0,0,202,194,0,0,218,194,0,0,236,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,216,194,0,0,206,194,0,0,196,194,0,0,186,194,0,0,176,194,0,0,166,194,0,0,156,194,0,0,146,194,0,0,136,194,0,0,112,194,0,0,84,194,0,0,48,194,0,0,12,194,0,0,24,194,0,0,24,194,0,0,8,194,0,0,8,194,0,0,16,194,0,0,32,194,0,0,36,194,0,0,48,194,0,0,76,194,0,0,52,194,0,0,56,194,0,0,60,194,0,0,56,194,0,0,88,194,0,0,72,194,0,0,68,194,0,0,72,194,0,0,72,194,0,0,72,194,0,0,76,194,0,0,88,194,0,0,100,194,0,0,104,194,0,0,112,194,0,0,132,194,0,0,132,194,0,0,132,194,0,0,128,194,0,0,130,194,0,0,136,194,0,0,154,194,0,0,164,194,0,0,174,194,0,0,190,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,214,194,0,0,204,194,0,0,194,194,0,0,184,194,0,0,174,194,0,0,166,194,0,0,156,194,0,0,150,194,0,0,164,194,0,0,158,194,0,0,166,194,0,0,170,194,0,0,178,194,0,0,184,194,0,0,190,194,0,0,196,194,0,0,202,194,0,0,210,194,0,0,218,194,0,0,226,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,212,194,0,0,200,194,0,0,190,194,0,0,180,194,0,0,172,194,0,0,162,194,0,0,156,194,0,0,148,194,0,0,138,194,0,0,148,194,0,0,148,194,0,0,152,194,0,0,158,194,0,0,166,194,0,0,168,194,0,0,172,194,0,0,178,194,0,0,184,194,0,0,194,194,0,0,186,194,0,0,200,194,0,0,206,194,0,0,214,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,212,194,0,0,200,194,0,0,190,194,0,0,180,194,0,0,174,194,0,0,166,194,0,0,160,194,0,0,150,194,0,0,138,194,0,0,112,194,0,0,132,194,0,0,132,194,0,0,136,194,0,0,140,194,0,0,148,194,0,0,156,194,0,0,158,194,0,0,162,194,0,0,162,194,0,0,166,194,0,0,168,194,0,0,174,194,0,0,186,194,0,0,192,194,0,0,198,194,0,0,206,194,0,0,214,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,216,194,0,0,206,194,0,0,196,194,0,0,186,194,0,0,178,194,0,0,170,194,0,0,164,194,0,0,156,194,0,0,142,194,0,0,120,194,0,0,92,194,0,0,104,194,0,0,104,194,0,0,88,194,0,0,88,194,0,0,92,194,0,0,108,194,0,0,116,194,0,0,120,194,0,0,140,194,0,0,132,194,0,0,132,194,0,0,134,194,0,0,140,194,0,0,144,194,0,0,150,194,0,0,156,194,0,0,168,194,0,0,168,194,0,0,168,194,0,0,176,194,0,0,182,194,0,0,180,194,0,0,190,194,0,0,196,194,0,0,204,194,0,0,206,194,0,0,212,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,216,194,0,0,206,194,0,0,196,194,0,0,188,194,0,0,180,194,0,0,174,194,0,0,164,194,0,0,158,194,0,0,146,194,0,0,134,194,0,0,104,194,0,0,60,194,0,0,72,194,0,0,52,194,0,0,36,194,0,0,52,194,0,0,64,194,0,0,48,194,0,0,48,194,0,0,68,194,0,0,88,194,0,0,76,194,0,0,64,194,0,0,60,194,0,0,68,194,0,0,72,194,0,0,76,194,0,0,100,194,0,0,104,194,0,0,112,194,0,0,124,194,0,0,138,194,0,0,140,194,0,0,138,194,0,0,142,194,0,0,148,194,0,0,156,194,0,0,164,194,0,0,180,194,0,0,190,194,0,0,202,194,0,0,210,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,210,194,0,0,202,194,0,0,194,194,0,0,186,194,0,0,180,194,0,0,170,194,0,0,160,194,0,0,154,194,0,0,144,194,0,0,130,194,0,0,96,194,0,0,64,194,0,0,20,194,0,0,32,194,0,0,16,194,0,0,8,194,0,0,32,194,0,0,72,194,0,0,60,194,0,0,24,194,0,0,36,194,0,0,60,194,0,0,24,194,0,0,12,194,0,0,28,194,0,0,24,194,0,0,44,194,0,0,32,194,0,0,52,194,0,0,72,194,0,0,52,194,0,0,48,194,0,0,60,194,0,0,72,194,0,0,92,194,0,0,64,194,0,0,64,194,0,0,80,194,0,0,132,194,0,0,140,194,0,0,152,194,0,0,164,194,0,0,180,194,0,0,194,194,0,0,210,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,216,194,0,0,206,194,0,0,196,194,0,0,186,194,0,0,172,194,0,0,158,194,0,0,152,194,0,0,166,194,0,0,162,194,0,0,170,194,0,0,174,194,0,0,178,194,0,0,186,194,0,0,196,194,0,0,204,194,0,0,214,194,0,0,224,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,216,194,0,0,206,194,0,0,196,194,0,0,186,194,0,0,172,194,0,0,158,194,0,0,142,194,0,0,154,194,0,0,148,194,0,0,154,194,0,0,158,194,0,0,162,194,0,0,168,194,0,0,170,194,0,0,180,194,0,0,184,194,0,0,186,194,0,0,184,194,0,0,196,194,0,0,202,194,0,0,216,194,0,0,224,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,216,194,0,0,206,194,0,0,196,194,0,0,186,194,0,0,174,194,0,0,156,194,0,0,136,194,0,0,130,194,0,0,132,194,0,0,120,194,0,0,130,194,0,0,134,194,0,0,140,194,0,0,146,194,0,0,150,194,0,0,156,194,0,0,164,194,0,0,164,194,0,0,166,194,0,0,168,194,0,0,182,194,0,0,186,194,0,0,196,194,0,0,204,194,0,0,212,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,210,194,0,0,200,194,0,0,190,194,0,0,180,194,0,0,164,194,0,0,148,194,0,0,120,194,0,0,100,194,0,0,104,194,0,0,96,194,0,0,76,194,0,0,80,194,0,0,80,194,0,0,88,194,0,0,88,194,0,0,104,194,0,0,132,194,0,0,108,194,0,0,112,194,0,0,124,194,0,0,132,194,0,0,138,194,0,0,146,194,0,0,158,194,0,0,166,194,0,0,168,194,0,0,160,194,0,0,162,194,0,0,162,194,0,0,164,194,0,0,176,194,0,0,184,194,0,0,196,194,0,0,210,194,0,0,226,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,214,194,0,0,204,194,0,0,194,194,0,0,184,194,0,0,168,194,0,0,158,194,0,0,138,194,0,0,100,194,0,0,60,194,0,0,80,194,0,0,60,194,0,0,48,194,0,0,52,194,0,0,72,194,0,0,80,194,0,0,40,194,0,0,40,194,0,0,84,194,0,0,44,194,0,0,44,194,0,0,64,194,0,0,76,194,0,0,96,194,0,0,92,194,0,0,80,194,0,0,100,194,0,0,108,194,0,0,116,194,0,0,120,194,0,0,134,194,0,0,142,194,0,0,156,194,0,0,166,194,0,0,172,194,0,0,188,194,0,0,196,194,0,0,206,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,210,194,0,0,200,194,0,0,190,194,0,0,180,194,0,0,168,194,0,0,156,194,0,0,140,194,0,0,116,194,0,0,76,194,0,0,36,194,0,0,32,194,0,0,24,194,0,0,32,194,0,0,56,194,0,0,80,194,0,0,76,194,0,0,36,194,0,0,32,194,0,0,56,194,0,0,32,194,0,0,24,194,0,0,24,194,0,0,36,194,0,0,56,194,0,0,36,194,0,0,56,194,0,0,60,194,0,0,44,194,0,0,44,194,0,0,52,194,0,0,36,194,0,0,52,194,0,0,96,194,0,0,134,194,0,0,136,194,0,0,166,194,0,0,174,194,0,0,180,194,0,0,190,194,0,0,204,194,0,0,214,194,0,0,226,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,218,194,0,0,210,194,0,0,202,194,0,0,192,194,0,0,182,194,0,0,168,194,0,0,154,194,0,0,164,194,0,0,164,194,0,0,170,194,0,0,178,194,0,0,188,194,0,0,200,194,0,0,212,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,212,194,0,0,206,194,0,0,196,194,0,0,184,194,0,0,170,194,0,0,160,194,0,0,142,194,0,0,150,194,0,0,144,194,0,0,152,194,0,0,160,194,0,0,168,194,0,0,172,194,0,0,178,194,0,0,186,194,0,0,200,194,0,0,214,194,0,0,226,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,214,194,0,0,208,194,0,0,202,194,0,0,194,194,0,0,184,194,0,0,176,194,0,0,168,194,0,0,160,194,0,0,128,194,0,0,132,194,0,0,124,194,0,0,128,194,0,0,132,194,0,0,138,194,0,0,146,194,0,0,154,194,0,0,166,194,0,0,166,194,0,0,172,194,0,0,182,194,0,0,196,194,0,0,208,194,0,0,222,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,214,194,0,0,208,194,0,0,202,194,0,0,194,194,0,0,184,194,0,0,180,194,0,0,168,194,0,0,148,194,0,0,100,194,0,0,104,194,0,0,80,194,0,0,92,194,0,0,88,194,0,0,72,194,0,0,80,194,0,0,72,194,0,0,80,194,0,0,124,194,0,0,120,194,0,0,138,194,0,0,152,194,0,0,154,194,0,0,156,194,0,0,156,194,0,0,158,194,0,0,164,194,0,0,176,194,0,0,188,194,0,0,200,194,0,0,212,194,0,0,222,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,212,194,0,0,204,194,0,0,196,194,0,0,190,194,0,0,180,194,0,0,170,194,0,0,166,194,0,0,156,194,0,0,140,194,0,0,72,194,0,0,72,194,0,0,36,194,0,0,48,194,0,0,68,194,0,0,60,194,0,0,72,194,0,0,72,194,0,0,48,194,0,0,92,194,0,0,56,194,0,0,60,194,0,0,64,194,0,0,64,194,0,0,88,194,0,0,68,194,0,0,68,194,0,0,104,194,0,0,120,194,0,0,142,194,0,0,162,194,0,0,174,194,0,0,184,194,0,0,194,194,0,0,204,194,0,0,216,194,0,0,228,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,212,194,0,0,204,194,0,0,196,194,0,0,190,194,0,0,180,194,0,0,170,194,0,0,166,194,0,0,156,194,0,0,140,194,0,0,52,194,0,0,44,194,0,0,36,194,0,0,60,194,0,0,72,194,0,0,76,194,0,0,72,194,0,0,68,194,0,0,52,194,0,0,60,194,0,0,36,194,0,0,48,194,0,0,36,194,0,0,28,194,0,0,44,194,0,0,24,194,0,0,20,194,0,0,32,194,0,0,36,194,0,0,48,194,0,0,72,194,0,0,104,194,0,0,130,194,0,0,146,194,0,0,158,194,0,0,170,194,0,0,184,194,0,0,194,194,0,0,202,194,0,0,210,194,0,0,218,194,0,0,226,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,214,194,0,0,200,194,0,0,190,194,0,0,174,194,0,0,162,194,0,0,170,194,0,0,166,194,0,0,176,194,0,0,186,194,0,0,200,194,0,0,214,194,0,0,228,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,214,194,0,0,202,194,0,0,190,194,0,0,176,194,0,0,166,194,0,0,152,194,0,0,146,194,0,0,144,194,0,0,158,194,0,0,168,194,0,0,180,194,0,0,190,194,0,0,200,194,0,0,210,194,0,0,220,194,0,0,230,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,208,194,0,0,196,194,0,0,184,194,0,0,174,194,0,0,162,194,0,0,140,194,0,0,130,194,0,0,120,194,0,0,134,194,0,0,142,194,0,0,148,194,0,0,160,194,0,0,170,194,0,0,182,194,0,0,190,194,0,0,198,194,0,0,206,194,0,0,216,194,0,0,222,194,0,0,228,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,206,194,0,0,194,194,0,0,180,194,0,0,170,194,0,0,152,194,0,0,112,194,0,0,96,194,0,0,88,194,0,0,112,194,0,0,120,194,0,0,116,194,0,0,96,194,0,0,124,194,0,0,130,194,0,0,146,194,0,0,148,194,0,0,154,194,0,0,150,194,0,0,156,194,0,0,162,194,0,0,172,194,0,0,174,194,0,0,176,194,0,0,182,194,0,0,188,194,0,0,196,194,0,0,206,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,210,194,0,0,200,194,0,0,194,194,0,0,184,194,0,0,172,194,0,0,162,194,0,0,158,194,0,0,140,194,0,0,100,194,0,0,76,194,0,0,60,194,0,0,76,194,0,0,104,194,0,0,112,194,0,0,96,194,0,0,84,194,0,0,72,194,0,0,104,194,0,0,80,194,0,0,72,194,0,0,72,194,0,0,84,194,0,0,92,194,0,0,128,194,0,0,138,194,0,0,142,194,0,0,170,194,0,0,164,194,0,0,156,194,0,0,162,194,0,0,170,194,0,0,190,194,0,0,204,194,0,0,224,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,210,194,0,0,200,194,0,0,194,194,0,0,184,194,0,0,170,194,0,0,166,194,0,0,158,194,0,0,144,194,0,0,68,194,0,0,32,194,0,0,44,194,0,0,44,194,0,0,88,194,0,0,96,194,0,0,76,194,0,0,72,194,0,0,32,194,0,0,44,194,0,0,24,194,0,0,16,194,0,0,12,194,0,0,20,194,0,0,24,194,0,0,20,194,0,0,48,194,0,0,88,194,0,0,112,194,0,0,100,194,0,0,112,194,0,0,140,194,0,0,150,194,0,0,168,194,0,0,184,194,0,0,206,194,0,0,224,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,204,194,0,0,190,194,0,0,178,194,0,0,164,194,0,0,166,194,0,0,168,194,0,0,180,194,0,0,184,194,0,0,198,194,0,0,214,194,0,0,226,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,214,194,0,0,202,194,0,0,190,194,0,0,178,194,0,0,166,194,0,0,144,194,0,0,148,194,0,0,156,194,0,0,170,194,0,0,176,194,0,0,176,194,0,0,180,194,0,0,184,194,0,0,196,194,0,0,210,194,0,0,222,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,218,194,0,0,206,194,0,0,194,194,0,0,186,194,0,0,174,194,0,0,162,194,0,0,140,194,0,0,140,194,0,0,134,194,0,0,150,194,0,0,146,194,0,0,152,194,0,0,158,194,0,0,162,194,0,0,166,194,0,0,176,194,0,0,178,194,0,0,194,194,0,0,206,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,214,194,0,0,200,194,0,0,188,194,0,0,176,194,0,0,166,194,0,0,150,194,0,0,124,194,0,0,108,194,0,0,108,194,0,0,124,194,0,0,132,194,0,0,112,194,0,0,120,194,0,0,134,194,0,0,134,194,0,0,154,194,0,0,152,194,0,0,162,194,0,0,176,194,0,0,172,194,0,0,184,194,0,0,192,194,0,0,204,194,0,0,218,194,0,0,232,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,210,194,0,0,196,194,0,0,184,194,0,0,172,194,0,0,162,194,0,0,146,194,0,0,96,194,0,0,80,194,0,0,60,194,0,0,92,194,0,0,112,194,0,0,104,194,0,0,80,194,0,0,76,194,0,0,52,194,0,0,68,194,0,0,72,194,0,0,84,194,0,0,88,194,0,0,116,194,0,0,142,194,0,0,140,194,0,0,138,194,0,0,156,194,0,0,158,194,0,0,174,194,0,0,180,194,0,0,192,194,0,0,208,194,0,0,224,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,206,194,0,0,192,194,0,0,180,194,0,0,172,194,0,0,156,194,0,0,140,194,0,0,76,194,0,0,40,194,0,0,60,194,0,0,64,194,0,0,92,194,0,0,88,194,0,0,88,194,0,0,84,194,0,0,40,194,0,0,12,194,0,0,224,193,0,0,4,194,0,0,24,194,0,0,20,194,0,0,48,194,0,0,60,194,0,0,68,194,0,0,88,194,0,0,124,194,0,0,136,194,0,0,156,194,0,0,164,194,0,0,178,194,0,0,188,194,0,0,198,194,0,0,208,194,0,0,218,194,0,0,228,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,200,194,0,0,180,194,0,0,158,194,0,0,170,194,0,0,162,194,0,0,164,194,0,0,164,194,0,0,178,194,0,0,188,194,0,0,198,194,0,0,206,194,0,0,218,194,0,0,230,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,210,194,0,0,194,194,0,0,170,194,0,0,144,194,0,0,148,194,0,0,140,194,0,0,140,194,0,0,140,194,0,0,152,194,0,0,170,194,0,0,182,194,0,0,186,194,0,0,194,194,0,0,206,194,0,0,218,194,0,0,230,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,224,194,0,0,186,194,0,0,162,194,0,0,136,194,0,0,120,194,0,0,112,194,0,0,112,194,0,0,100,194,0,0,124,194,0,0,140,194,0,0,154,194,0,0,164,194,0,0,180,194,0,0,186,194,0,0,196,194,0,0,208,194,0,0,218,194,0,0,226,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,226,194,0,0,200,194,0,0,186,194,0,0,168,194,0,0,124,194,0,0,104,194,0,0,64,194,0,0,84,194,0,0,88,194,0,0,80,194,0,0,80,194,0,0,100,194,0,0,128,194,0,0,132,194,0,0,152,194,0,0,166,194,0,0,162,194,0,0,170,194,0,0,170,194,0,0,180,194,0,0,190,194,0,0,196,194,0,0,202,194,0,0,206,194,0,0,212,194,0,0,216,194,0,0,222,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,210,194,0,0,190,194,0,0,172,194,0,0,148,194,0,0,84,194,0,0,72,194,0,0,24,194,0,0,44,194,0,0,68,194,0,0,44,194,0,0,40,194,0,0,28,194,0,0,28,194,0,0,56,194,0,0,80,194,0,0,100,194,0,0,96,194,0,0,144,194,0,0,138,194,0,0,148,194,0,0,162,194,0,0,174,194,0,0,184,194,0,0,188,194,0,0,194,194,0,0,198,194,0,0,204,194,0,0,210,194,0,0,216,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,216,194,0,0,198,194,0,0,180,194,0,0,152,194,0,0,132,194,0,0,52,194,0,0,44,194,0,0,36,194,0,0,48,194,0,0,60,194,0,0,44,194,0,0,60,194,0,0,32,194,0,0,240,193,0,0,248,193,0,0,248,193,0,0,28,194,0,0,4,194,0,0,32,194,0,0,36,194,0,0,44,194,0,0,84,194,0,0,108,194,0,0,140,194,0,0,146,194,0,0,154,194,0,0,158,194,0,0,164,194,0,0,168,194,0,0,174,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,182,194,0,0,152,194,0,0,150,194,0,0,170,194,0,0,186,194,0,0,196,194,0,0,208,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,182,194,0,0,140,194,0,0,140,194,0,0,150,194,0,0,172,194,0,0,178,194,0,0,188,194,0,0,196,194,0,0,202,194,0,0,212,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,190,194,0,0,160,194,0,0,112,194,0,0,130,194,0,0,128,194,0,0,148,194,0,0,166,194,0,0,176,194,0,0,182,194,0,0,190,194,0,0,198,194,0,0,206,194,0,0,214,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,190,194,0,0,160,194,0,0,104,194,0,0,92,194,0,0,68,194,0,0,132,194,0,0,136,194,0,0,142,194,0,0,156,194,0,0,156,194,0,0,160,194,0,0,176,194,0,0,170,194,0,0,178,194,0,0,194,194,0,0,200,194,0,0,210,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,190,194,0,0,160,194,0,0,84,194,0,0,80,194,0,0,36,194,0,0,108,194,0,0,108,194,0,0,68,194,0,0,104,194,0,0,96,194,0,0,124,194,0,0,172,194,0,0,158,194,0,0,180,194,0,0,186,194,0,0,196,194,0,0,206,194,0,0,214,194,0,0,224,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,194,194,0,0,182,194,0,0,146,194,0,0,52,194,0,0,32,194,0,0,4,194,0,0,84,194,0,0,116,194,0,0,68,194,0,0,88,194,0,0,72,194,0,0,72,194,0,0,112,194,0,0,80,194,0,0,134,194,0,0,148,194,0,0,162,194,0,0,184,194,0,0,192,194,0,0,200,194,0,0,210,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,226,194,0,0,212,194,0,0,198,194,0,0,184,194,0,0,154,194,0,0,160,194,0,0,176,194,0,0,194,194,0,0,212,194,0,0,230,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+10240); +/* memory initializer */ allocate([0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,232,194,0,0,218,194,0,0,204,194,0,0,190,194,0,0,178,194,0,0,148,194,0,0,144,194,0,0,176,194,0,0,174,194,0,0,190,194,0,0,204,194,0,0,218,194,0,0,232,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,232,194,0,0,218,194,0,0,204,194,0,0,190,194,0,0,178,194,0,0,150,194,0,0,132,194,0,0,148,194,0,0,154,194,0,0,156,194,0,0,172,194,0,0,174,194,0,0,180,194,0,0,192,194,0,0,210,194,0,0,230,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,230,194,0,0,216,194,0,0,202,194,0,0,188,194,0,0,176,194,0,0,132,194,0,0,96,194,0,0,116,194,0,0,140,194,0,0,130,194,0,0,156,194,0,0,144,194,0,0,166,194,0,0,168,194,0,0,186,194,0,0,196,194,0,0,210,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,210,194,0,0,190,194,0,0,178,194,0,0,164,194,0,0,100,194,0,0,80,194,0,0,80,194,0,0,108,194,0,0,96,194,0,0,108,194,0,0,104,194,0,0,138,194,0,0,134,194,0,0,176,194,0,0,164,194,0,0,164,194,0,0,178,194,0,0,188,194,0,0,200,194,0,0,216,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,202,194,0,0,192,194,0,0,180,194,0,0,166,194,0,0,154,194,0,0,88,194,0,0,44,194,0,0,24,194,0,0,72,194,0,0,64,194,0,0,80,194,0,0,64,194,0,0,40,194,0,0,40,194,0,0,76,194,0,0,80,194,0,0,84,194,0,0,108,194,0,0,130,194,0,0,142,194,0,0,156,194,0,0,170,194,0,0,190,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,240,194,0,0,210,194,0,0,172,194,0,0,136,194,0,0,156,194,0,0,158,194,0,0,180,194,0,0,200,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,240,194,0,0,210,194,0,0,172,194,0,0,132,194,0,0,146,194,0,0,154,194,0,0,176,194,0,0,192,194,0,0,210,194,0,0,230,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,240,194,0,0,210,194,0,0,184,194,0,0,160,194,0,0,116,194,0,0,128,194,0,0,136,194,0,0,160,194,0,0,174,194,0,0,184,194,0,0,200,194,0,0,220,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,240,194,0,0,208,194,0,0,182,194,0,0,158,194,0,0,80,194,0,0,112,194,0,0,88,194,0,0,128,194,0,0,138,194,0,0,154,194,0,0,160,194,0,0,164,194,0,0,168,194,0,0,170,194,0,0,174,194,0,0,176,194,0,0,180,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,236,194,0,0,200,194,0,0,174,194,0,0,154,194,0,0,68,194,0,0,72,194,0,0,48,194,0,0,104,194,0,0,116,194,0,0,116,194,0,0,134,194,0,0,130,194,0,0,120,194,0,0,120,194,0,0,120,194,0,0,130,194,0,0,136,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,230,194,0,0,196,194,0,0,168,194,0,0,120,194,0,0,68,194,0,0,48,194,0,0,24,194,0,0,56,194,0,0,68,194,0,0,68,194,0,0,56,194,0,0,28,194,0,0,20,194,0,0,28,194,0,0,32,194,0,0,40,194,0,0,44,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,176,194,0,0,148,194,0,0,154,194,0,0,164,194,0,0,164,194,0,0,170,194,0,0,180,194,0,0,188,194,0,0,198,194,0,0,208,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,176,194,0,0,132,194,0,0,140,194,0,0,162,194,0,0,160,194,0,0,162,194,0,0,168,194,0,0,176,194,0,0,182,194,0,0,186,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,176,194,0,0,116,194,0,0,124,194,0,0,140,194,0,0,142,194,0,0,148,194,0,0,154,194,0,0,160,194,0,0,166,194,0,0,170,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,172,194,0,0,120,194,0,0,124,194,0,0,120,194,0,0,120,194,0,0,104,194,0,0,80,194,0,0,72,194,0,0,72,194,0,0,80,194,0,0,88,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,236,194,0,0,216,194,0,0,168,194,0,0,84,194,0,0,72,194,0,0,72,194,0,0,72,194,0,0,92,194,0,0,60,194,0,0,52,194,0,0,32,194,0,0,32,194,0,0,32,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,236,194,0,0,200,194,0,0,146,194,0,0,44,194,0,0,20,194,0,0,40,194,0,0,44,194,0,0,84,194,0,0,24,194,0,0,20,194,0,0,12,194,0,0,12,194,0,0,24,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,200,194,0,0,182,194,0,0,168,194,0,0,148,194,0,0,160,194,0,0,160,194,0,0,160,194,0,0,160,194,0,0,160,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,200,194,0,0,182,194,0,0,168,194,0,0,148,194,0,0,136,194,0,0,136,194,0,0,136,194,0,0,136,194,0,0,136,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,200,194,0,0,172,194,0,0,156,194,0,0,140,194,0,0,112,194,0,0,52,194,0,0,240,193,0,0,168,193,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,200,194,0,0,174,194,0,0,156,194,0,0,134,194,0,0,64,194,0,0,24,194,0,0,232,193,0,0,168,193,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,200,194,0,0,172,194,0,0,138,194,0,0,96,194,0,0,52,194,0,0,12,194,0,0,4,194,0,0,232,193,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,220,194,0,0,200,194,0,0,166,194,0,0,142,194,0,0,64,194,0,0,216,193,0,0,24,194,0,0,20,194,0,0,8,194,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,192,121,196,0,0,0,0,144,4,0,0,72,100,0,0,104,100,0,0,136,100,0,0,0,0,0,0,224,4,0,0,0,0,0,0,0,0,0,0,6,0,0,0,7,0,0,0,4,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,6,0,0,0,7,0,0,0,4,0,0,0,5,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,6,0,0,0,7,0,0,0,4,0,0,0,5,0,0,0,4,0,0,0,2,0,0,0,5,0,0,0,4,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,255,255,255,255,0,0,12,195,0,0,12,195,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,194,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,128,0,0,0,63,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,66,0,0,0,0,255,255,255,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,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,40,103,0,0,200,103,0,0,104,104,0,0,8,105,0,0,168,105,0,0,72,106,0,0,232,106,0,0,136,107,0,0,40,108,0,0,200,108,0,0,104,109,0,0,8,110,0,0,168,110,0,0,72,111,0,0,232,111,0,0,136,112,0,0,40,113,0,0,0,0,0,0,11,0,0,0,48,240,7,0,64,164,1,0,2,0,0,0,64,156,0,0,80,195,0,0,160,164,1,0,208,164,1,0,0,165,1,0,136,114,0,0,184,114,0,0,240,165,1,0,32,169,1,0,240,165,1,0,80,172,1,0,128,172,1,0,16,182,1,0,160,191,1,0,48,201,1,0,56,118,0,0,192,210,1,0,128,214,1,0,224,214,1,0,64,215,1,0,112,215,1,0,160,215,1,0,208,215,1,0,0,216,1,0,88,216,1,0,136,216,1,0,184,216,1,0,24,120,0,0,24,217,1,0,136,149,2,0,160,132,0,0,208,132,0,0,2,0,0,0,120,217,1,0,200,160,2,0,0,0,0,0,11,0,0,0,160,87,5,0,64,164,1,0,6,0,0,0,64,156,0,0,112,17,1,0,160,164,1,0,208,164,1,0,0,165,1,0,136,114,0,0,184,114,0,0,240,165,1,0,32,169,1,0,240,165,1,0,80,172,1,0,128,172,1,0,16,182,1,0,160,191,1,0,48,201,1,0,56,118,0,0,192,210,1,0,128,214,1,0,224,214,1,0,64,215,1,0,112,215,1,0,160,215,1,0,208,215,1,0,0,216,1,0,88,216,1,0,136,216,1,0,184,216,1,0,24,120,0,0,24,217,1,0,136,149,2,0,160,132,0,0,208,132,0,0,3,0,0,0,120,217,1,0,0,88,5,0,0,0,0,0,11,0,0,0,64,87,5,0,64,164,1,0,255,255,255,255,64,156,0,0,80,195,0,0,160,164,1,0,208,164,1,0,0,165,1,0,136,114,0,0,184,114,0,0,240,165,1,0,32,169,1,0,240,165,1,0,80,172,1,0,128,172,1,0,16,182,1,0,160,191,1,0,48,201,1,0,56,118,0,0,192,210,1,0,128,214,1,0,224,214,1,0,64,215,1,0,112,215,1,0,160,215,1,0,208,215,1,0,0,216,1,0,88,216,1,0,136,216,1,0,184,216,1,0,24,120,0,0,24,217,1,0,136,149,2,0,160,132,0,0,208,132,0,0,2,0,0,0,120,217,1,0,136,217,1,0,0,0,0,0,11,0,0,0,224,86,5,0,64,164,1,0,2,0,0,0,144,101,0,0,64,156,0,0,160,164,1,0,208,164,1,0,0,165,1,0,136,114,0,0,184,114,0,0,240,165,1,0,32,169,1,0,240,165,1,0,80,172,1,0,128,172,1,0,16,182,1,0,160,191,1,0,48,201,1,0,56,118,0,0,192,210,1,0,128,214,1,0,224,214,1,0,64,215,1,0,112,215,1,0,160,215,1,0,208,215,1,0,0,216,1,0,88,216,1,0,136,216,1,0,128,86,5,0,24,120,0,0,24,217,1,0,136,149,2,0,160,132,0,0,208,132,0,0,2,0,0,0,120,217,1,0,200,160,2,0,0,0,0,0,11,0,0,0,32,86,5,0,64,164,1,0,255,255,255,255,144,101,0,0,64,156,0,0,160,164,1,0,208,164,1,0,0,165,1,0,136,114,0,0,184,114,0,0,240,165,1,0,32,169,1,0,240,165,1,0,80,172,1,0,128,172,1,0,16,182,1,0,160,191,1,0,48,201,1,0,56,118,0,0,192,210,1,0,128,214,1,0,224,214,1,0,64,215,1,0,112,215,1,0,160,215,1,0,208,215,1,0,0,216,1,0,88,216,1,0,136,216,1,0,128,86,5,0,24,120,0,0,24,217,1,0,0,0,0,0,160,132,0,0,208,132,0,0,2,0,0,0,120,217,1,0,136,217,1,0,0,0,0,0,3,0,0,0,0,86,5,0,16,172,4,0,2,0,0,0,56,74,0,0,144,101,0,0,48,172,4,0,64,172,4,0,80,172,4,0,136,114,0,0,184,114,0,0,160,172,4,0,160,172,4,0,160,172,4,0,176,173,4,0,224,173,4,0,16,177,4,0,16,177,4,0,64,180,4,0,56,118,0,0,104,118,0,0,112,183,4,0,112,183,4,0,144,183,4,0,144,183,4,0,160,183,4,0,160,183,4,0,176,183,4,0,208,183,4,0,224,183,4,0,224,85,5,0,24,120,0,0,16,184,4,0,48,184,4,0,160,132,0,0,208,132,0,0,2,0,0,0,240,187,4,0,8,240,4,0,0,0,0,0,3,0,0,0,192,85,5,0,16,172,4,0,255,255,255,255,56,74,0,0,144,101,0,0,48,172,4,0,64,172,4,0,80,172,4,0,136,114,0,0,184,114,0,0,160,172,4,0,160,172,4,0,160,172,4,0,176,173,4,0,224,173,4,0,16,177,4,0,16,177,4,0,64,180,4,0,56,118,0,0,104,118,0,0,112,183,4,0,112,183,4,0,144,183,4,0,144,183,4,0,160,183,4,0,160,183,4,0,176,183,4,0,208,183,4,0,224,183,4,0,224,85,5,0,24,120,0,0,16,184,4,0,48,184,4,0,160,132,0,0,208,132,0,0,2,0,0,0,240,187,4,0,248,187,4,0,0,0,0,0,3,0,0,0,232,239,4,0,16,172,4,0,2,0,0,0,152,58,0,0,56,74,0,0,48,172,4,0,64,172,4,0,80,172,4,0,136,114,0,0,184,114,0,0,160,172,4,0,160,172,4,0,160,172,4,0,176,173,4,0,224,173,4,0,16,177,4,0,16,177,4,0,64,180,4,0,56,118,0,0,104,118,0,0,112,183,4,0,112,183,4,0,144,183,4,0,144,183,4,0,160,183,4,0,160,183,4,0,176,183,4,0,208,183,4,0,224,183,4,0,240,183,4,0,24,120,0,0,16,184,4,0,48,184,4,0,160,132,0,0,208,132,0,0,2,0,0,0,240,187,4,0,8,240,4,0,0,0,0,0,3,0,0,0,240,171,4,0,16,172,4,0,255,255,255,255,152,58,0,0,56,74,0,0,48,172,4,0,64,172,4,0,80,172,4,0,136,114,0,0,184,114,0,0,160,172,4,0,160,172,4,0,160,172,4,0,176,173,4,0,224,173,4,0,16,177,4,0,16,177,4,0,64,180,4,0,56,118,0,0,104,118,0,0,112,183,4,0,112,183,4,0,144,183,4,0,144,183,4,0,160,183,4,0,160,183,4,0,176,183,4,0,208,183,4,0,224,183,4,0,240,183,4,0,24,120,0,0,16,184,4,0,48,184,4,0,160,132,0,0,208,132,0,0,2,0,0,0,240,187,4,0,248,187,4,0,0,0,0,0,2,0,0,0,216,171,4,0,0,168,4,0,2,0,0,0,40,35,0,0,152,58,0,0,24,168,4,0,24,168,4,0,32,168,4,0,136,114,0,0,184,114,0,0,96,168,4,0,0,0,0,0,96,168,4,0,184,115,0,0,48,169,4,0,48,169,4,0,0,0,0,0,0,0,0,0,56,118,0,0,104,118,0,0,168,119,0,0,0,0,0,0,192,119,0,0,192,119,0,0,200,119,0,0,200,119,0,0,152,171,4,0,224,119,0,0,240,119,0,0,176,171,4,0,24,120,0,0,184,129,0,0,208,129,0,0,160,132,0,0,208,132,0,0,1,0,0,0,200,171,4,0,184,47,1,0,0,0,0,0,2,0,0,0,232,167,4,0,0,168,4,0,255,255,255,255,40,35,0,0,152,58,0,0,24,168,4,0,24,168,4,0,32,168,4,0,136,114,0,0,184,114,0,0,96,168,4,0,0,0,0,0,96,168,4,0,184,115,0,0,48,169,4,0,48,169,4,0,0,0,0,0,0,0,0,0,56,118,0,0,104,118,0,0,168,119,0,0,0,0,0,0,192,119,0,0,192,119,0,0,200,119,0,0,200,119,0,0,152,171,4,0,224,119,0,0,240,119,0,0,176,171,4,0,24,120,0,0,184,129,0,0,208,129,0,0,160,132,0,0,208,132,0,0,1,0,0,0,200,171,4,0,248,180,0,0,0,0,0,0,2,0,0,0,208,167,4,0,40,114,0,0,2,0,0,0,64,31,0,0,40,35,0,0,64,114,0,0,64,114,0,0,72,114,0,0,136,114,0,0,184,114,0,0,232,114,0,0,0,0,0,0,232,114,0,0,184,115,0,0,208,115,0,0,208,115,0,0,0,0,0,0,0,0,0,0,56,118,0,0,104,118,0,0,168,119,0,0,0,0,0,0,192,119,0,0,192,119,0,0,200,119,0,0,200,119,0,0,208,119,0,0,224,119,0,0,240,119,0,0,0,120,0,0,24,120,0,0,184,129,0,0,208,129,0,0,160,132,0,0,208,132,0,0,1,0,0,0,240,180,0,0,184,47,1,0,0,0,0,0,2,0,0,0,184,167,4,0,40,114,0,0,255,255,255,255,64,31,0,0,40,35,0,0,64,114,0,0,64,114,0,0,72,114,0,0,136,114,0,0,184,114,0,0,232,114,0,0,0,0,0,0,232,114,0,0,184,115,0,0,208,115,0,0,208,115,0,0,0,0,0,0,0,0,0,0,56,118,0,0,104,118,0,0,168,119,0,0,0,0,0,0,192,119,0,0,192,119,0,0,200,119,0,0,200,119,0,0,208,119,0,0,224,119,0,0,240,119,0,0,0,120,0,0,24,120,0,0,184,129,0,0,208,129,0,0,160,132,0,0,208,132,0,0,1,0,0,0,240,180,0,0,248,180,0,0,0,0,0,0,11,0,0,0,200,113,0,0,64,164,1,0,2,0,0,0,80,195,0,0,64,13,3,0,160,164,1,0,208,164,1,0,0,165,1,0,136,114,0,0,184,114,0,0,240,165,1,0,32,169,1,0,240,165,1,0,80,172,1,0,128,172,1,0,16,182,1,0,160,191,1,0,48,201,1,0,56,118,0,0,192,210,1,0,128,214,1,0,224,214,1,0,64,215,1,0,112,215,1,0,160,215,1,0,208,215,1,0,0,216,1,0,88,216,1,0,136,216,1,0,184,216,1,0,24,120,0,0,24,217,1,0,136,149,2,0,160,132,0,0,208,132,0,0,2,0,0,0,120,217,1,0,200,160,2,0,0,0,0,0,11,0,0,0,200,113,0,0,64,164,1,0,255,255,255,255,80,195,0,0,64,13,3,0,160,164,1,0,208,164,1,0,0,165,1,0,136,114,0,0,184,114,0,0,240,165,1,0,32,169,1,0,240,165,1,0,80,172,1,0,128,172,1,0,16,182,1,0,160,191,1,0,48,201,1,0,56,118,0,0,192,210,1,0,128,214,1,0,224,214,1,0,64,215,1,0,112,215,1,0,160,215,1,0,208,215,1,0,0,216,1,0,88,216,1,0,136,216,1,0,184,216,1,0,24,120,0,0,24,217,1,0,0,0,0,0,160,132,0,0,208,132,0,0,2,0,0,0,120,217,1,0,136,217,1,0,0,0,0,0,2,0,0,0,200,113,0,0,40,114,0,0,2,0,0,0,0,0,0,0,64,31,0,0,64,114,0,0,64,114,0,0,72,114,0,0,136,114,0,0,184,114,0,0,232,114,0,0,0,0,0,0,232,114,0,0,184,115,0,0,208,115,0,0,208,115,0,0,0,0,0,0,0,0,0,0,56,118,0,0,104,118,0,0,168,119,0,0,0,0,0,0,192,119,0,0,192,119,0,0,200,119,0,0,200,119,0,0,208,119,0,0,224,119,0,0,240,119,0,0,0,120,0,0,24,120,0,0,184,129,0,0,208,129,0,0,160,132,0,0,208,132,0,0,1,0,0,0,240,180,0,0,184,47,1,0,0,0,0,0,2,0,0,0,200,113,0,0,40,114,0,0,255,255,255,255,0,0,0,0,64,31,0,0,64,114,0,0,64,114,0,0,72,114,0,0,136,114,0,0,184,114,0,0,232,114,0,0,0,0,0,0,232,114,0,0,184,115,0,0,208,115,0,0,208,115,0,0,0,0,0,0,0,0,0,0,56,118,0,0,104,118,0,0,168,119,0,0,0,0,0,0,192,119,0,0,192,119,0,0,200,119,0,0,200,119,0,0,208,119,0,0,224,119,0,0,240,119,0,0,0,120,0,0,24,120,0,0,184,129,0,0,208,129,0,0,160,132,0,0,208,132,0,0,1,0,0,0,240,180,0,0,248,180,0,0,0,0,0,0,0,0,0,0,0,0,240,191,0,0,0,0,0,0,240,191,0,0,0,0,0,0,240,191,0,0,0,0,0,0,240,191,0,0,0,0,0,0,240,191,0,0,0,0,0,0,240,191,0,0,0,0,0,0,240,191,0,0,0,0,0,0,240,191,0,0,0,0,0,0,240,191,0,0,0,0,0,0,240,191,0,0,0,0,0,0,240,191,0,0,0,0,0,0,240,191,154,153,153,153,153,153,185,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,63,0,2,0,0,0,2,0,0,32,0,0,0,25,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,25,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,242,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,90,0,0,0,90,0,0,0,95,0,0,0,95,0,0,0,95,0,0,0,95,0,0,0,105,0,0,0,105,0,0,0,105,0,0,0,105,0,0,0,105,0,0,0,105,0,0,0,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,232,255,255,255,226,255,255,255,216,255,255,255,216,255,255,255,211,255,255,255,211,255,255,255,211,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,246,255,255,255,246,255,255,255,250,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,246,255,255,255,246,255,255,255,250,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,246,255,255,255,246,255,255,255,250,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,99,0,0,0,99,0,0,0,99,0,0,0,0,0,0,0,10,0,0,0,10,0,0,0,255,255,255,255,10,0,0,0,10,0,0,0,255,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,251,255,255,255,251,255,255,255,251,255,255,255,0,0,0,0,4,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,10,0,0,0,10,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,251,255,255,255,251,255,255,255,251,255,255,255,0,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,250,255,255,255,248,255,255,255,248,255,255,255,250,255,255,255,250,255,255,255,99,0,0,0,99,0,0,0,99,0,0,0,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,251,255,255,255,251,255,255,255,251,255,255,255,0,0,0,0,4,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,10,0,0,0,10,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,251,255,255,255,251,255,255,255,251,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,250,255,255,255,248,255,255,255,248,255,255,255,250,255,255,255,250,255,255,255,99,0,0,0,99,0,0,0,99,0,0,0,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,244,255,255,255,246,255,255,255,248,255,255,255,0,0,0,0,2,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,244,255,255,255,244,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,99,0,0,0,99,0,0,0,99,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,232,255,255,255,99,0,0,0,99,0,0,0,99,0,0,0,0,0,0,0,236,255,255,255,236,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,226,255,255,255,216,255,255,255,216,255,255,255,211,255,255,255,211,255,255,255,211,255,255,255,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,8,0,0,0,9,0,0,0,9,0,0,0,10,0,0,0,10,0,0,0,11,0,0,0,11,0,0,0,12,0,0,0,12,0,0,0,13,0,0,0,13,0,0,0,14,0,0,0,14,0,0,0,15,0,0,0,15,0,0,0,16,0,0,0,16,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,18,0,0,0,18,0,0,0,19,0,0,0,19,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,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,6,0,0,0,7,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,4,0,0,0,3,0,0,0,3,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,64,0,0,0,64,0,0,0,8,0,0,0,8,0,0,0,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,156,255,255,255,156,255,255,255,151,255,255,255,0,0,0,0,126,255,255,255,126,255,255,255,116,255,255,255,0,0,0,0,0,0,0,0,0,0,8,64], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+20480); +/* memory initializer */ allocate([0,0,0,0,0,0,16,64,0,0,0,0,0,0,16,64,8,0,0,0,0,0,160,65,0,0,96,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,112,194,0,0,240,193,0,0,32,194,0,0,32,194,0,0,32,194,0,0,32,194,0,0,32,194,0,0,0,64,0,0,150,194,0,0,192,192,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,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,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,8,0,0,0,0,0,96,65,0,0,32,65,0,0,32,65,0,0,32,65,0,0,32,65,0,0,32,65,0,0,32,65,0,0,32,194,0,0,240,193,0,0,200,193,0,0,200,193,0,0,200,193,0,0,200,193,0,0,200,193,0,0,0,64,0,0,160,194,0,0,192,192,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,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,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,8,0,0,0,0,0,64,65,0,0,32,65,0,0,32,65,0,0,32,65,0,0,32,65,0,0,32,65,0,0,32,65,0,0,160,193,0,0,160,193,0,0,112,193,0,0,112,193,0,0,112,193,0,0,112,193,0,0,112,193,0,0,0,0,0,0,160,194,0,0,192,192,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,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,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,8,0,0,0,0,0,32,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,160,193,0,0,112,193,0,0,64,193,0,0,64,193,0,0,64,193,0,0,64,193,0,0,64,193,0,0,0,0,0,0,160,194,0,0,192,192,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,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,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,8,0,0,0,0,0,32,65,0,0,192,64,0,0,192,64,0,0,192,64,0,0,192,64,0,0,192,64,0,0,192,64,0,0,112,193,0,0,112,193,0,0,64,193,0,0,64,193,0,0,64,193,0,0,64,193,0,0,64,193,0,0,0,0,0,0,170,194,0,0,192,192,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,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,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,240,63,0,0,0,0,0,0,0,64,0,0,0,0,0,0,8,64,4,0,0,0,4,0,0,0,4,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,6,0,0,0,5,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,4,0,0,0,4,0,0,0,4,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,6,0,0,0,5,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,3,1,0,24,3,1,0,48,3,1,0,80,3,1,0,112,3,1,0,160,3,1,0,208,3,1,0,232,3,1,0,40,4,1,0,104,4,1,0,152,4,1,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,128,0,0,0,33,0,0,0,8,0,0,0,16,0,0,0,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,66,0,0,240,65,0,0,250,67,0,0,128,63,0,0,144,65,128,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,1,0,0,66,0,0,0,16,0,0,0,32,0,0,0,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,66,0,0,240,65,0,0,250,67,0,0,128,63,0,0,144,65,0,1,0,0,2,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,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,0,0,0,0,0,0,0,0,0,0,0,0,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,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,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,0,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,2,0,0,0,3,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,5,0,0,0,6,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,128,0,0,0,14,0,0,0,4,0,0,0,58,0,0,0,2,0,0,0,8,0,0,0,28,0,0,0,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,66,0,0,240,65,0,0,250,67,0,0,128,63,0,0,144,65,128,0,0,0,2,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,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,0,0,0,0,0,0,0,0,0,0,0,0,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,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,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,0,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,2,0,0,0,3,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,5,0,0,0,6,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,1,0,0,28,0,0,0,8,0,0,0,116,0,0,0,4,0,0,0,16,0,0,0,56,0,0,0,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,66,0,0,240,65,0,0,250,67,0,0,128,63,0,0,144,65,0,1,0,0,4,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,3,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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,255,255,255,255,0,0,0,0,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,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,0,0,0,0,255,255,255,255,6,0,0,0,7,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,9,0,0,0,10,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,128,0,0,0,8,0,0,0,33,0,0,0,4,0,0,0,16,0,0,0,70,0,0,0,2,0,0,0,6,0,0,0,12,0,0,0,23,0,0,0,46,0,0,0,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,66,0,0,240,65,0,0,250,67,0,0,128,63,0,0,144,65,128,0,0,0,6,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,3,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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,255,255,255,255,0,0,0,0,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,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,0,0,0,0,255,255,255,255,6,0,0,0,7,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,9,0,0,0,10,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,128,0,0,0,12,0,0,0,46,0,0,0,4,0,0,0,8,0,0,0,16,0,0,0,23,0,0,0,33,0,0,0,70,0,0,0,2,0,0,0,6,0,0,0,10,0,0,0,14,0,0,0,19,0,0,0,28,0,0,0,39,0,0,0,58,0,0,0,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,66,0,0,240,65,0,0,250,67,0,0,128,63,0,0,144,65,128,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+30720); +/* memory initializer */ allocate([1,0,0,0,2,0,0,0,3,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,1,0,0,66,0,0,0,16,0,0,0,32,0,0,0,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,66,0,0,240,65,0,0,250,67,0,0,128,63,0,0,144,65,0,1,0,0,8,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,0,0,0,2,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,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,1,0,0,0,2,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,5,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,7,0,0,0,8,0,0,0,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,9,0,0,0,10,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,12,0,0,0,13,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,4,0,0,93,0,0,0,23,0,0,0,116,1,0,0,6,0,0,0,46,0,0,0,186,0,0,0,238,2,0,0,14,0,0,0,33,0,0,0,65,0,0,0,130,0,0,0,4,1,0,0,44,2,0,0,3,0,0,0,10,0,0,0,18,0,0,0,28,0,0,0,39,0,0,0,55,0,0,0,79,0,0,0,111,0,0,0,158,0,0,0,220,0,0,0,56,1,0,0,208,1,0,0,138,2,0,0,82,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,66,0,0,240,65,0,0,250,67,0,0,64,64,0,0,144,65,0,4,0,0,8,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,1,0,0,0,2,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,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,1,0,0,0,2,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,5,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,7,0,0,0,8,0,0,0,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,9,0,0,0,10,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,12,0,0,0,13,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,8,0,0,186,0,0,0,46,0,0,0,232,2,0,0,12,0,0,0,92,0,0,0,116,1,0,0,220,5,0,0,28,0,0,0,66,0,0,0,130,0,0,0,4,1,0,0,8,2,0,0,88,4,0,0,6,0,0,0,20,0,0,0,36,0,0,0,56,0,0,0,78,0,0,0,110,0,0,0,158,0,0,0,222,0,0,0,60,1,0,0,184,1,0,0,112,2,0,0,160,3,0,0,20,5,0,0,164,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,66,0,0,240,65,0,0,250,67,0,0,64,64,0,0,144,65,0,8,0,0,6,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,3,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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,255,255,255,255,0,0,0,0,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,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,0,0,0,0,255,255,255,255,6,0,0,0,7,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,9,0,0,0,10,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,2,0,0,46,0,0,0,186,0,0,0,16,0,0,0,33,0,0,0,65,0,0,0,93,0,0,0,130,0,0,0,22,1,0,0,7,0,0,0,23,0,0,0,39,0,0,0,55,0,0,0,79,0,0,0,110,0,0,0,156,0,0,0,232,0,0,0,104,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,66,0,0,240,65,0,0,250,67,0,0,128,63,0,0,144,65,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,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,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,2,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,66,0,0,240,65,0,0,250,67,0,0,128,63,0,0,144,65,10,0,0,0,248,2,1,0,0,0,0,0,8,181,0,0,24,206,0,0,8,181,0,0,56,206,0,0,1], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+41032); +/* memory initializer */ allocate([1], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+49544); +/* memory initializer */ allocate([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,0,0,0,0,0,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], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+50572); +/* memory initializer */ allocate([1,0,0,0,0,0,0,0,32,0,0,0,240,233,0,0,8,245,0,0,8,245,0,0,48,245,0,0,48,245,0,0,1,0,0,0,0,0,0,0,32,0,0,0,88,206,0,0,112,217,0,0,112,217,0,0,152,217,0,0,152,217,0,0,0,0,0,0,255,255,255,255,255,255,255,255,10,0,0,0,255,255,255,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+52752); +/* memory initializer */ allocate([1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,4,0,0,0,4,0,0,0,16,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,30,0,0,0,255,255,255,255,50,0,0,0,255,255,255,255,80,0,0,0,255,255,255,255,255,255,255,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,100,0,0,0,136,233,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,219,0,0,0,0,0,0,72,219,0,0,112,219,0,0,0,0,0,0,0,0,0,0,152,219,0,0,192,219,0,0,0,0,0,0,0,0,0,0,232,219,0,0,16,220,0,0,56,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,81,0,0,0,32,233,0,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,120,233,0,0,0,0,0,0,4,0,0,0,81,0,0,0,184,232,0,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,16,233,0,0,0,0,0,0,4,0,0,0,113,2,0,0,40,230,0,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,160,232,0,0,0,0,0,0,4,0,0,0,113,2,0,0,152,227,0,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,16,230,0,0,0,0,0,0,2,0,0,0,81,0,0,0,24,227,0,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,112,227,0,0,0,0,0,0,2,0,0,0,81,0,0,0,152,226,0,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,240,226,0,0,0,0,0,0,4,0,0,0,81,0,0,0,48,226,0,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,136,226,0,0,0,0,0,0,2,0,0,0,121,0,0,0,128,225,0,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,0,226,0,0,0,0,0,0,2,0,0,0,121,0,0,0,208,224,0,0,1,0,0,0,0,128,187,224,0,0,118,96,4,0,0,0,0,0,0,0,80,225,0,0,0,0,0,0,2,0,0,0,121,0,0,0,32,224,0,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,160,224,0,0,0,0,0,0,2,0,0,0,225,0,0,0,248,222,0,0,1,0,0,0,0,228,91,225,0,224,255,96,4,0,0,0,0,0,0,0,224,223,0,0,0,0,0,0,2,0,0,0,225,0,0,0,208,221,0,0,1,0,0,0,0,192,221,224,0,0,145,96,4,0,0,0,0,0,0,0,184,222,0,0,0,0,0,0,2,0,0,0,33,1,0,0,96,220,0,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,136,221,0,0,0,0,0,0,2,5,4,6,6,8,8,8,8,8,9,9,9,9,9,9,9,5,6,6,7,7,8,8,9,8,9,9,9,9,9,9,9,9,5,6,6,7,7,8,8,8,9,9,9,9,9,9,9,9,9,7,7,7,8,8,9,9,9,9,9,9,9,9,9,10,10,9,7,7,7,8,8,9,9,9,9,9,9,9,9,9,9,10,10,8,8,8,9,9,9,9,10,10,10,9,10,10,10,10,10,10,8,8,8,9,9,9,9,9,9,9,10,10,10,10,10,10,10,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,10,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,9,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,4,4,7,7,9,9,7,7,8,8,10,10,11,11,4,7,7,9,9,10,10,8,8,10,10,10,11,10,11,4,7,7,9,9,10,10,8,8,10,9,11,11,11,11,7,9,9,12,12,11,12,10,10,11,10,12,11,11,11,7,9,9,11,11,13,12,9,9,11,10,11,11,12,11,9,10,10,12,12,14,14,10,10,11,12,12,11,11,11,9,10,11,11,13,14,13,10,11,11,11,12,11,12,12,7,8,8,10,9,11,10,11,12,12,11,12,14,12,13,7,8,8,9,10,10,11,12,12,12,11,12,12,12,13,9,9,9,11,11,13,12,12,12,12,11,12,12,13,12,8,10,10,11,10,11,12,12,12,12,12,12,14,12,12,9,11,11,11,12,12,12,12,13,13,12,12,13,13,12,10,11,11,12,11,12,12,12,11,12,13,12,12,12,13,11,11,12,12,12,13,12,12,11,12,13,13,12,12,13,12,11,12,12,13,13,12,13,12,13,13,13,13,14,13,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,1,4,4,11,11,11,11,11,11,11,11,11,11,11,11,3,11,8,11,11,11,11,11,11,11,11,11,11,11,11,3,9,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,2,5,5,6,6,7,7,7,7,8,8,5,6,6,7,7,7,7,8,8,8,8,5,6,6,7,7,7,7,8,8,8,8,6,7,7,7,7,8,8,8,8,8,8,6,7,7,7,7,8,8,8,8,8,8,7,7,7,8,8,8,8,8,8,8,8,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,9,9,7,8,8,8,8,8,8,9,8,9,9,8,8,8,8,8,8,8,9,9,9,9,8,8,8,8,8,8,8,9,9,9,9,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,6,6,8,8,10,10,11,11,4,6,6,7,7,9,9,11,11,13,12,4,6,6,7,7,9,9,11,11,12,12,6,7,7,9,9,11,11,12,12,13,13,6,7,7,9,9,11,11,12,12,13,13,8,9,9,11,11,12,12,13,13,14,14,8,9,9,11,11,12,12,13,13,14,14,9,11,11,12,12,13,13,14,14,15,15,9,11,11,12,12,13,13,14,14,15,14,11,12,12,13,13,14,14,15,15,16,16,11,12,12,13,13,14,14,15,15,15,15,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,2,4,4,6,6,7,7,8,8,8,8,4,5,5,7,7,8,8,9,9,9,9,4,5,5,7,7,8,8,9,9,9,9,6,7,7,8,8,8,8,9,9,9,9,6,7,7,8,8,8,8,9,9,9,9,8,8,8,8,8,9,9,9,9,9,9,8,8,8,8,8,9,9,9,9,9,9,8,9,9,9,9,9,9,10,10,10,10,8,9,9,9,9,9,9,10,10,10,10,8,9,9,9,9,9,9,10,10,10,10,8,9,9,9,9,9,9,10,10,10,10,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,5,7,7,5,7,7,5,9,9,8,10,10,8,10,10,5,9,9,7,10,10,8,10,10,4,10,10,9,12,12,9,11,11,7,12,11,10,11,13,10,13,13,7,12,12,10,13,12,10,13,13,4,10,10,9,12,12,9,12,12,7,12,12,10,13,13,10,12,13,7,11,12,10,13,13,10,13,11,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,4,4,6,6,7,7,9,9,4,4,5,6,6,7,7,9,9,4,4,4,6,6,7,7,9,9,6,6,6,7,7,8,8,9,9,6,6,6,7,7,8,8,9,9,7,7,7,8,8,8,9,10,10,7,7,7,8,8,9,8,10,10,9,9,9,9,9,10,10,10,10,9,9,9,9,9,10,10,10,10,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,1,4,4,7,7,7,7,9,9,4,6,5,8,7,8,8,10,10,4,6,6,8,8,8,8,10,10,7,8,8,9,9,9,9,11,11,7,8,8,9,9,9,9,11,11,8,8,8,9,9,10,10,12,11,8,8,8,9,9,10,10,11,11,9,10,10,11,11,11,11,13,12,9,10,10,11,11,12,12,12,13,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,4,5,5,9,9,6,7,7,9,9,6,7,7,9,9,9,9,9,11,11,9,9,9,11,11,6,7,7,9,9,7,7,8,9,10,7,7,8,9,10,9,9,10,10,11,9,9,10,10,12,6,7,7,9,9,7,8,7,10,9,7,8,7,10,9,9,10,9,12,11,10,10,9,12,10,9,10,10,12,11,9,10,10,12,11,9,10,10,12,12,11,11,12,12,13,11,11,12,12,13,9,9,10,12,11,9,10,10,12,12,10,10,10,12,12,11,12,11,13,12,11,12,11,13,12,6,7,7,9,9,7,8,8,10,10,7,8,7,10,9,10,10,10,12,12,10,10,10,12,11,7,8,7,10,10,7,7,9,10,11,8,9,9,11,10,10,10,11,10,12,10,10,11,12,12,7,8,8,10,10,7,9,8,11,10,8,8,9,11,11,10,11,10,12,11,10,11,11,12,12,9,10,10,12,12,9,10,10,12,12,10,11,11,13,12,11,10,12,10,14,12,12,12,13,14,9,10,10,12,12,9,11,10,12,12,10,11,11,12,12,11,12,11,14,12,12,12,12,14,14,5,7,7,9,9,7,7,7,9,10,7,8,8,10,10,10,10,10,11,11,10,10,10,12,12,7,8,8,10,10,8,9,8,11,10,7,8,9,10,11,10,10,10,11,12,10,10,11,11,13,6,7,8,10,10,8,9,9,10,10,7,9,7,11,10,10,11,10,12,12,10,11,10,12,10,9,10,10,12,12,10,11,11,13,12,9,10,10,12,12,12,12,12,14,13,11,11,12,11,14,9,10,10,11,12,10,11,11,12,13,9,10,10,12,12,12,12,12,14,13,11,12,10,14,11,9,9,10,11,12,9,10,10,12,12,9,10,10,12,12,12,12,12,14,14,11,12,12,13,12,9,10,9,12,12,9,10,11,12,13,10,11,10,13,11,12,12,13,13,14,12,12,12,13,13,9,10,10,12,12,10,11,10,13,12,10,10,11,12,13,12,13,12,14,13,12,12,12,13,14,11,12,11,14,13,10,10,11,13,13,12,12,12,14,13,12,10,14,10,15,13,14,14,14,14,11,11,12,13,14,10,12,11,13,13,12,12,12,13,15,12,13,11,15,12,13,13,14,14,14,9,10,9,12,12,9,10,10,12,12,10,10,10,12,12,11,11,12,12,13,12,12,12,14,14,9,10,10,12,12,10,11,10,13,12,10,10,11,12,13,12,12,12,14,13,12,12,13,13,14,9,10,10,12,13,10,10,11,11,12,9,11,10,13,12,12,12,12,13,14,12,13,12,14,13,11,12,11,13,13,12,13,12,14,13,10,11,12,13,13,13,13,13,14,15,12,11,14,12,14,11,11,12,12,13,12,12,12,13,14,10,12,10,14,13,13,13,13,14,15,12,14,11,15,10,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,5,7,7,6,7,7,9,9,6,7,7,9,9,8,10,9,11,11,9,9,9,11,11,6,8,8,10,10,8,10,10,11,11,8,9,10,11,11,10,11,11,12,12,10,11,11,12,13,6,8,8,10,10,8,10,9,11,11,8,10,9,11,11,10,11,11,12,12,10,11,11,12,12,9,11,11,14,13,10,12,11,14,14,10,12,11,14,13,12,13,13,15,14,12,13,13,15,14,8,11,11,13,14,10,11,12,13,15,10,11,12,14,14,12,13,13,14,15,12,13,13,14,15,5,8,8,11,11,8,10,10,12,12,8,10,10,12,12,11,12,12,14,13,11,12,12,13,14,8,10,10,12,12,9,11,12,13,14,10,12,12,13,13,12,12,13,14,14,11,13,13,15,15,7,10,10,12,12,9,12,11,14,12,10,11,12,13,14,12,13,12,14,14,12,13,13,15,16,10,12,12,15,14,11,12,13,15,15,11,13,13,15,16,14,14,15,15,16,13,14,15,17,15,9,12,12,14,15,11,13,12,15,15,11,13,13,15,15,13,14,13,15,14,13,14,14,17,0,5,8,8,11,11,8,10,10,12,12,8,10,10,12,12,11,12,12,14,14,11,12,12,14,14,7,10,10,12,12,10,12,12,13,13,9,11,12,12,13,11,12,13,15,15,11,12,13,14,15,8,10,10,12,12,10,12,11,13,13,10,12,11,13,13,11,13,13,15,14,12,13,12,15,13,9,12,12,14,14,11,13,13,16,15,11,12,13,16,15,13,14,15,16,16,13,13,15,15,16,10,12,12,15,14,11,13,13,14,16,11,13,13,15,16,13,15,15,16,17,13,15,14,16,15,8,11,11,14,15,10,12,12,15,15,10,12,12,15,16,14,15,15,16,17,13,14,14,16,16,9,12,12,15,15,11,13,14,15,17,11,13,13,15,16,14,15,16,19,17,13,15,15,0,17,9,12,12,15,15,11,14,13,16,15,11,13,13,15,16,15,15,15,18,17,13,15,15,17,17,11,15,14,18,16,12,14,15,17,17,12,15,15,18,18,15,15,16,15,19,14,16,16,0,0,11,14,14,16,17,12,15,14,18,17,12,15,15,18,18,15,17,15,18,16,14,16,16,18,18,7,11,11,14,14,10,12,12,15,15,10,12,13,15,15,13,14,15,16,16,14,15,15,18,18,9,12,12,15,15,11,13,13,16,15,11,12,13,16,16,14,15,15,17,16,15,16,16,17,17,9,12,12,15,15,11,13,13,15,17,11,14,13,16,15,13,15,15,17,17,15,15,15,18,17,11,14,14,17,15,12,14,15,17,18,13,13,15,17,17,14,16,16,19,18,16,15,17,17,0,11,14,14,17,17,12,15,15,18,0,12,15,14,18,16,14,17,17,19,0,16,18,15,0,16,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,3,4,5,5,6,6,5,6,6,5,7,6,6,7,8,6,7,8,5,6,6,6,8,7,6,8,7,5,6,6,7,8,8,6,7,7,6,8,7,7,7,9,8,9,9,6,7,8,7,9,7,8,9,9,5,6,6,6,7,7,7,8,8,6,8,7,8,9,9,7,7,9,6,7,8,8,9,9,7,9,7,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,4,5,7,7,5,7,7,5,8,8,7,9,10,7,9,9,5,8,8,7,10,9,7,9,9,5,8,8,8,10,10,8,10,10,7,10,10,9,10,12,10,12,12,7,10,10,9,12,11,10,12,12,5,8,8,8,10,10,8,10,10,7,10,10,10,12,12,9,11,12,7,10,10,10,12,12,9,12,10,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,7,13,9,15,9,16,8,10,13,7,5,8,6,9,7,10,7,10,11,11,6,7,8,8,9,9,9,12,16,8,5,8,6,8,6,9,7,10,12,11,7,7,7,6,7,7,7,11,15,7,5,8,6,7,5,7,6,9,13,13,9,9,8,6,6,5,5,9,14,8,6,8,6,6,4,5,3,5,13,9,9,11,8,10,7,8,4,5,12,11,16,17,15,17,12,13,8,8,15,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,8,0,0,0,255,255,255,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+55148); +/* memory initializer */ allocate([1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,4,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,25,0,0,0,255,255,255,255,45,0,0,0,255,255,255,255,255,255,255,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,64,0,0,0,184,2,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,246,0,0,0,0,0,0,184,246,0,0,224,246,0,0,0,0,0,0,0,0,0,0,8,247,0,0,48,247,0,0,88,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,81,0,0,0,80,2,1,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,168,2,1,0,0,0,0,0,4,0,0,0,81,0,0,0,232,1,1,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,64,2,1,0,0,0,0,0,4,0,0,0,113,2,0,0,88,255,0,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,208,1,1,0,0,0,0,0,4,0,0,0,113,2,0,0,200,252,0,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,64,255,0,0,0,0,0,0,2,0,0,0,81,0,0,0,72,252,0,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,160,252,0,0,0,0,0,0,2,0,0,0,169,0,0,0,96,251,0,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,16,252,0,0,0,0,0,0,2,0,0,0,25,0,0,0,40,251,0,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,72,251,0,0,0,0,0,0,4,0,0,0,81,0,0,0,192,250,0,0,1,0,0,0,0,176,19,225,0,176,19,97,2,0,0,0,0,0,0,0,24,251,0,0,0,0,0,0,2,0,0,0,225,0,0,0,152,249,0,0,1,0,0,0,0,96,242,224,0,0,149,96,4,0,0,0,0,0,0,0,128,250,0,0,0,0,0,0,2,0,0,0,185,1,0,0,128,247,0,0,1,0,0,0,0,0,116,224,0,0,16,96,5,0,0,0,0,0,0,0,64,249,0,0,0,0,0,0,1,6,5,7,7,9,9,9,9,10,12,12,10,11,11,10,11,11,11,10,11,6,8,8,9,9,10,10,9,10,11,11,10,11,11,11,11,10,11,11,11,11,6,7,8,9,9,9,10,11,10,11,12,11,10,11,11,11,11,11,11,12,10,8,9,9,10,9,10,10,9,10,10,10,10,10,9,10,10,10,10,9,10,10,9,9,9,9,10,10,9,9,10,10,11,10,9,12,10,11,10,9,10,10,10,8,9,9,10,9,10,9,9,10,10,9,10,9,11,10,10,10,10,10,9,10,8,8,9,9,10,9,11,9,8,9,9,10,11,10,10,10,11,12,9,9,11,8,9,8,11,10,11,10,10,9,11,10,10,10,10,10,10,10,11,11,11,11,8,9,9,9,10,10,10,11,11,12,11,12,11,10,10,10,12,11,11,11,10,8,10,9,11,10,10,11,12,10,11,12,11,11,12,11,12,12,10,11,11,10,9,9,10,11,12,10,10,10,11,10,11,11,10,12,12,10,11,10,11,12,10,9,10,10,11,10,11,11,11,11,11,12,11,11,11,9,11,10,11,10,11,10,9,9,10,11,11,11,10,10,11,12,12,11,12,11,11,11,12,12,12,12,11,9,11,11,12,10,11,11,11,11,11,11,12,11,11,12,11,11,11,10,11,11,9,11,10,11,11,11,10,10,10,11,11,11,12,10,11,10,11,11,11,11,12,9,11,10,11,11,10,10,11,11,9,11,11,12,10,10,10,10,10,11,11,10,9,10,11,11,12,11,10,10,12,11,11,12,11,12,11,11,10,10,11,11,10,12,11,10,11,10,11,10,10,10,11,11,10,10,11,11,11,11,10,10,10,12,11,11,11,11,10,9,10,11,11,11,12,11,11,11,12,10,11,11,11,9,10,11,11,11,11,11,11,10,10,11,11,12,11,10,11,12,11,10,10,11,9,10,11,11,11,11,11,10,11,11,10,12,11,11,11,12,11,11,11,10,10,11,11,0,0,0,0,0,0,0,10,0,0,0,9,0,0,0,11,0,0,0,8,0,0,0,12,0,0,0,7,0,0,0,13,0,0,0,6,0,0,0,14,0,0,0,5,0,0,0,15,0,0,0,4,0,0,0,16,0,0,0,3,0,0,0,17,0,0,0,2,0,0,0,18,0,0,0,1,0,0,0,19,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,1,5,5,5,5,10,10,11,11,11,11,11,11,11,11,5,7,6,8,8,9,10,11,11,11,11,11,11,11,11,6,6,7,9,7,11,10,11,11,11,11,11,11,11,11,5,6,6,11,8,11,11,11,11,11,11,11,11,11,11,5,6,6,9,10,11,10,11,11,11,11,11,11,11,11,7,10,10,11,11,11,11,11,11,11,11,11,11,11,11,7,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,1,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,4,6,6,4,6,5,7,7,4,5,6,7,7,6,7,7,7,7,6,7,7,7,7,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,7,7,9,9,11,11,12,12,16,16,3,6,6,9,9,11,11,12,12,13,14,18,16,3,6,7,9,9,11,11,13,12,14,14,17,16,7,9,9,11,11,12,12,14,14,14,14,17,16,7,9,9,11,11,13,12,13,13,14,14,17,0,9,11,11,12,13,14,14,14,13,15,14,17,17,9,11,11,12,12,14,14,13,14,14,15,0,0,11,12,12,15,14,15,14,15,14,15,16,17,0,11,12,13,13,13,14,14,15,14,15,15,0,0,12,14,14,15,15,14,16,15,15,17,16,0,18,13,14,14,15,14,15,14,15,16,17,16,0,0,17,17,18,0,16,18,16,0,0,0,17,0,0,16,0,0,16,16,0,15,0,17,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,4,4,7,7,7,7,9,9,4,6,6,8,7,8,8,10,10,4,6,6,8,8,8,8,10,10,6,8,8,9,9,9,9,11,11,7,8,8,9,9,9,9,11,11,7,8,8,9,9,10,10,12,11,7,8,8,9,9,10,10,11,11,9,10,10,11,11,11,12,12,12,9,10,10,11,11,12,12,12,12,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,3,5,5,8,8,5,6,7,9,9,6,7,6,9,9,9,9,9,10,11,9,9,9,11,10,6,7,7,10,10,7,7,8,10,10,7,8,8,10,10,10,10,10,10,11,9,10,10,11,12,6,7,7,10,10,7,8,8,10,10,7,8,7,10,10,9,10,10,12,11,10,10,10,11,10,9,10,10,12,11,10,10,10,13,11,9,10,10,12,12,11,11,12,12,13,11,11,11,12,13,9,10,10,12,12,10,10,11,12,12,10,10,11,12,12,11,11,11,13,13,11,12,12,13,13,5,7,7,10,10,7,8,8,10,10,7,8,8,10,10,10,11,11,12,12,10,11,10,12,12,7,8,8,11,11,7,8,9,10,11,8,9,9,11,11,11,10,11,10,12,10,11,11,12,13,7,8,8,10,11,8,9,8,12,10,8,9,9,11,12,10,11,10,13,11,10,11,11,13,12,9,11,10,13,12,10,10,11,12,12,10,11,11,13,13,12,10,13,11,14,11,12,12,15,13,9,11,11,13,13,10,11,11,13,12,10,11,11,12,14,12,13,11,14,12,12,12,12,14,14,5,7,7,10,10,7,8,8,10,10,7,8,8,11,10,10,11,11,12,12,10,11,10,12,12,7,8,8,10,11,8,9,9,12,11,8,8,9,10,11,10,11,11,12,13,11,10,11,11,13,6,8,8,10,11,8,9,9,11,11,7,9,7,11,10,10,11,11,12,12,10,11,10,13,10,9,11,10,13,12,10,12,11,13,13,10,10,11,12,13,11,12,13,15,14,11,11,13,12,13,9,10,11,12,13,10,11,11,12,13,10,11,10,13,12,12,13,13,13,14,12,12,11,14,11,8,10,10,12,13,10,11,11,13,13,10,11,10,13,13,12,13,14,15,14,12,12,12,14,13,9,10,10,13,12,10,10,12,13,13,10,11,11,15,12,12,12,13,15,14,12,13,13,15,13,9,10,11,12,13,10,12,10,13,12,10,11,11,12,13,12,14,12,15,13,12,12,12,15,14,11,12,11,14,13,11,11,12,14,14,12,13,13,14,13,13,11,15,11,15,14,14,14,16,15,11,12,12,13,14,11,13,11,14,14,12,12,13,14,15,12,14,12,15,12,13,15,14,16,15,8,10,10,12,12,10,10,10,12,13,10,11,11,13,13,12,12,12,13,14,13,13,13,15,15,9,10,10,12,12,10,11,11,13,12,10,10,11,13,13,12,12,12,14,14,12,12,13,15,14,9,10,10,13,12,10,10,12,12,13,10,11,10,13,13,12,13,13,14,14,12,13,12,14,13,11,12,12,14,13,12,13,12,14,14,10,12,12,14,14,14,14,14,16,14,13,12,14,12,15,10,12,12,14,15,12,13,13,14,16,11,12,11,15,14,13,14,14,14,15,13,14,11,14,12,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,5,7,7,6,7,7,9,9,6,7,7,9,9,8,10,9,11,11,8,9,9,11,11,6,8,8,10,10,8,10,10,11,11,8,10,10,11,11,10,11,11,12,12,10,11,11,12,13,6,8,8,10,10,8,10,10,11,11,8,10,10,11,11,9,10,11,12,12,10,11,11,12,12,8,11,11,14,13,10,12,11,15,13,10,12,11,14,14,12,13,12,16,14,12,14,12,16,15,8,11,11,13,14,10,11,12,13,15,10,11,12,13,15,11,12,13,14,15,12,12,14,14,16,5,8,8,11,11,9,11,11,12,12,8,10,11,12,12,11,12,12,15,14,11,12,12,14,14,7,11,10,13,12,10,11,12,13,14,10,12,12,14,13,12,13,13,14,15,12,13,13,15,15,7,10,11,12,13,10,12,11,14,13,10,12,13,13,15,12,13,12,14,14,11,13,13,15,16,9,12,12,15,14,11,13,13,15,16,11,13,13,16,16,13,14,15,15,15,12,14,15,17,16,9,12,12,14,15,11,13,13,15,16,11,13,13,16,18,13,14,14,17,16,13,15,15,17,18,5,8,9,11,11,8,11,11,12,12,8,10,11,12,12,11,12,12,14,14,11,12,12,14,15,7,11,10,12,13,10,12,12,14,13,10,11,12,13,14,11,13,13,15,14,12,13,13,14,15,7,10,11,13,13,10,12,12,13,14,10,12,12,13,13,11,13,13,16,16,12,13,13,15,14,9,12,12,16,15,10,13,13,15,15,11,13,13,17,15,12,15,15,18,17,13,14,14,15,16,9,12,12,15,15,11,13,13,15,16,11,13,13,15,15,12,15,15,16,16,13,15,14,17,15,7,11,11,15,15,10,13,13,16,15,10,13,13,15,16,14,15,15,17,19,13,15,14,15,18,9,12,12,16,16,11,13,14,17,16,11,13,13,17,16,15,15,16,17,19,13,15,16,0,18,9,12,12,16,15,11,14,13,17,17,11,13,14,16,16,15,16,16,19,18,13,15,15,17,19,11,14,14,19,16,12,14,15,0,18,12,16,15,18,17,15,15,18,16,19,14,15,17,19,19,11,14,14,18,19,13,15,14,19,19,12,16,15,18,17,15,17,15,0,16,14,17,16,19,0,7,11,11,14,14,10,12,12,15,15,10,13,13,16,15,13,15,15,17,0,14,15,15,16,19,9,12,12,16,16,11,14,14,16,16,11,13,13,16,16,14,17,16,19,0,14,18,17,17,19,9,12,12,15,16,11,13,13,15,17,12,14,13,19,16,13,15,15,17,19,15,17,16,17,19,11,14,14,19,16,12,15,15,19,17,13,14,15,17,19,14,16,17,19,19,16,15,16,17,19,11,15,14,16,16,12,15,15,19,0,12,14,15,19,19,14,16,16,0,18,15,19,14,18,16,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,4,4,5,6,6,5,6,6,5,7,7,6,7,8,6,7,8,5,7,7,6,8,8,7,9,7,5,7,7,7,9,9,7,8,8,6,9,8,7,7,10,8,10,10,6,8,8,8,10,8,8,10,10,5,7,7,7,8,8,7,8,9,6,8,8,8,10,10,8,8,10,6,8,9,8,10,10,7,10,8,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,4,5,7,7,5,7,7,5,8,8,8,10,10,7,10,10,5,8,8,7,10,10,8,10,10,4,9,8,8,11,11,8,11,11,7,11,11,10,11,13,10,13,13,7,11,11,10,13,12,10,13,13,5,9,8,8,11,11,8,11,11,7,11,11,9,13,13,10,12,13,7,11,11,10,13,13,10,13,11,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,7,11,9,12,8,7,10,6,4,5,5,7,5,6,16,9,5,5,6,7,7,9,16,7,4,6,5,7,5,7,17,10,7,7,8,7,7,8,18,7,5,6,4,5,4,5,15,7,6,7,5,6,4,5,15,12,13,18,12,17,11,9,17,6,0,0,0,6,0,0,0,120,45,1,0,160,45,1,0,200,45,1,0,240,45,1,0,24,46,1,0,0,0,0,0,56,43,1,0,96,43,1,0,136,43,1,0,176,43,1,0,216,43,1,0,0,0,0,0,216,39,1,0,0,40,1,0,40,40,1,0,80,40,1,0,120,40,1,0,160,40,1,0,200,40,1,0,240,40,1,0,120,36,1,0,160,36,1,0,200,36,1,0,240,36,1,0,24,37,1,0,64,37,1,0,104,37,1,0,144,37,1,0,80,31,1,0,120,31,1,0,160,31,1,0,200,31,1,0,240,31,1,0,24,32,1,0,64,32,1,0,104,32,1,0,144,32,1,0,184,32,1,0,224,32,1,0,8,33,1,0,40,26,1,0,80,26,1,0,120,26,1,0,160,26,1,0,200,26,1,0,240,26,1,0,24,27,1,0,64,27,1,0,104,27,1,0,144,27,1,0,184,27,1,0,224,27,1,0,232,23,1,0,16,24,1,0,56,24,1,0,96,24,1,0,136,24,1,0,0,0,0,0,216,16,1,0,0,17,1,0,40,17,1,0,80,17,1,0,120,17,1,0,160,17,1,0,200,17,1,0,240,17,1,0,24,18,1,0,64,18,1,0,104,18,1,0,144,18,1,0,184,18,1,0,224,18,1,0,8,19,1,0,0,0,0,0,200,9,1,0,240,9,1,0,24,10,1,0,64,10,1,0,104,10,1,0,144,10,1,0,184,10,1,0,224,10,1,0,8,11,1,0,48,11,1,0,88,11,1,0,128,11,1,0,168,11,1,0,208,11,1,0,248,11,1,0,0,0,0,0,160,4,1,0,200,4,1,0,240,4,1,0,24,5,1,0,64,5,1,0,104,5,1,0,144,5,1,0,184,5,1,0,224,5,1,0,8,6,1,0,48,6,1,0,88,6,1,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,192,9,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,1,0,0,0,64,0,0,0,128,9,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,1,0,0,0,64,0,0,0,64,9,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,1,0,0,0,128,0,0,0,192,8,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,1,0,0,0,32,0,0,0,160,8,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,1,0,0,0,128,0,0,0,32,8,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,1,0,0,0,18,0,0,0,8,8,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,1,0,0,0,50,0,0,0,208,7,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,1,0,0,0,128,0,0,0,80,7,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,1,0,0,0,18,0,0,0,56,7,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,1,0,0,0,50,0,0,0,0,7,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,1,0,0,0,128,0,0,0,128,6,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,8,4,8,4,8,4,8,5,8,5,8,6,8,4,8,4,8,5,8,5,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,3,4,3,5,4,6,4,6,5,7,6,7,6,8,6,8,7,9,8,10,8,12,9,13,10,15,10,15,11,14,0,0,0,0,0,0,0,4,4,4,4,4,4,3,4,4,4,4,4,5,4,5,5,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,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,4,3,4,4,5,5,6,6,7,7,7,8,8,11,8,9,9,9,10,11,11,11,9,10,10,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,3,4,3,4,4,5,4,5,4,6,4,6,5,6,5,7,5,7,6,8,6,8,6,8,7,8,7,9,7,9,8,0,0,0,0,0,0,0,4,5,4,4,4,5,4,4,4,5,4,5,4,5,3,5,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,3,5,3,5,4,5,4,5,4,5,5,5,5,6,5,6,5,7,5,8,6,8,6,8,6,8,6,8,7,9,7,9,7,11,9,11,11,12,11,14,12,14,16,14,16,13,16,14,16,12,15,13,16,14,16,13,14,12,15,13,15,13,13,13,15,12,14,14,15,13,15,12,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,2,4,5,4,5,4,5,4,5,5,5,5,5,5,6,5,6,5,6,6,7,6,7,6,8,7,8,7,8,7,8,7,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,5,6,6,6,6,5,6,6,7,6,7,6,7,6,7,6,8,7,8,7,8,7,8,7,8,7,9,7,9,7,9,7,9,8,9,8,10,8,10,8,10,7,10,6,10,8,10,8,11,7,10,7,11,8,11,11,12,12,11,11,12,11,13,11,13,11,13,12,15,12,13,13,14,14,14,14,14,15,15,15,16,14,17,19,19,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,2,4,6,17,4,5,7,17,8,7,10,17,17,17,17,17,3,4,6,15,3,3,6,15,7,6,9,17,17,17,17,17,6,8,10,17,6,6,8,16,9,8,10,17,17,15,16,17,17,17,17,17,12,15,15,16,12,15,15,16,16,16,16,16,3,3,3,14,5,4,4,11,8,6,6,10,17,12,11,17,6,5,5,15,5,3,4,11,8,5,5,8,16,9,10,14,10,8,9,17,8,6,6,13,10,7,7,10,16,11,13,14,17,17,17,17,17,16,16,16,16,15,16,16,16,16,16,16,1,2,3,6,5,4,7,7,1,0,0,0,16,0,0,0,200,16,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,1,0,0,0,8,0,0,0,192,16,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,1,0,0,0,0,1,0,0,192,15,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,1,0,0,0,64,0,0,0,128,15,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,1,0,0,0,128,0,0,0,0,15,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,1,0,0,0,32,0,0,0,224,14,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,1,0,0,0,128,0,0,0,96,14,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,1,0,0,0,32,0,0,0,64,14,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,1,0,0,0,128,0,0,0,192,13,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,1,0,0,0,18,0,0,0,168,13,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,1,0,0,0,50,0,0,0,112,13,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,1,0,0,0,128,0,0,0,240,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,1,0,0,0,18,0,0,0,216,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,1,0,0,0,50,0,0,0,160,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,1,0,0,0,128,0,0,0,32,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,5,7,5,7,7,7,7,7,5,7,5,7,5,7,5,7,7,7,7,7,4,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,4,3,4,4,4,5,5,6,5,6,5,7,6,6,6,7,7,7,8,9,9,9,12,10,11,10,10,12,10,10,0,0,0,0,0,0,0,3,4,4,4,4,4,4,4,4,5,4,5,4,5,4,4,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,0,0,0,0,0,0,0,0,0,0,0,0,3,6,3,7,3,7,5,7,7,7,7,7,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,4,4,4,4,4,4,5,5,5,5,6,6,7,6,7,6,8,6,9,7,9,7,9,9,11,9,12,10,12,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,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,3,4,3,4,3,4,4,5,4,5,5,5,6,6,6,7,6,8,6,8,6,9,7,10,7,10,7,10,7,12,7,12,7,12,9,12,11,12,10,12,10,12,11,12,12,12,10,12,10,12,10,12,9,12,11,12,12,12,12,12,11,12,11,12,12,12,12,12,12,12,12,12,10,10,12,12,12,12,12,10,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,2,4,5,4,5,4,5,4,5,5,5,5,5,5,6,5,6,5,6,6,6,6,7,7,7,7,7,7,8,8,8,8,0,0,0,0,0,0,0,0,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,5,7,5,7,4,7,4,8,4,8,4,8,4,8,3,8,4,9,4,9,4,9,4,9,4,9,5,9,5,9,6,9,7,9,8,9,9,9,10,9,11,9,14,9,15,10,15,10,15,10,15,10,15,11,15,10,14,12,14,11,14,13,14,13,15,15,15,12,15,15,15,13,15,13,15,13,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,14,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,7,6,7,6,7,6,7,6,5,5,5,5,5,5,6,5,6,5,6,5,6,5,6,5,6,5,7,5,7,5,7,5,8,5,8,5,8,5,9,5,9,6,10,6,10,6,11,6,11,6,11,6,11,6,11,6,11,6,11,6,12,7,11,7,11,7,11,7,11,7,10,7,11,7,11,7,12,7,11,8,11,8,11,8,11,8,13,8,12,9,11,9,11,9,11,10,12,10,12,9,12,10,12,11,14,12,16,12,12,11,14,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,16,16,16,16,2,4,7,13,4,5,7,15,8,7,10,16,16,14,16,16,2,4,7,16,3,4,7,14,8,8,10,16,16,16,15,16,6,8,11,16,7,7,9,16,11,9,13,16,16,16,15,16,16,16,16,16,14,16,16,16,16,16,16,16,16,16,16,16,3,3,6,16,5,5,7,16,9,8,11,16,16,16,16,16,5,5,8,16,5,5,7,16,8,7,9,16,16,16,16,16,9,9,12,16,6,8,11,16,9,10,11,16,16,16,16,16,16,16,16,16,13,16,16,16,15,16,16,16,16,16,16,16,5,4,7,16,6,5,8,16,9,8,10,16,16,16,16,16,5,5,7,15,5,4,6,15,7,6,8,16,16,16,16,16,9,9,11,15,7,7,9,16,8,8,9,16,16,16,16,16,16,16,16,16,15,15,15,16,15,15,14,16,16,16,16,16,8,8,11,16,8,9,10,16,11,10,14,16,16,16,16,16,6,8,10,16,6,7,10,16,8,8,11,16,14,16,16,16,10,11,14,16,9,9,11,16,10,10,11,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,16,12,16,15,16,12,14,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,1,2,3,6,4,7,5,7,2,6,8,9,7,11,13,13,1,3,5,5,6,6,12,10,1,0,0,0,16,0,0,0,216,23,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,1,0,0,0,8,0,0,0,208,23,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,1,0,0,0,0,1,0,0,208,22,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,1,0,0,0,64,0,0,0,144,22,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,1,0,0,0,128,0,0,0,16,22,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,1,0,0,0,32,0,0,0,240,21,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,1,0,0,0,128,0,0,0,112,21,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,1,0,0,0,32,0,0,0,80,21,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,1,0,0,0,128,0,0,0,208,20,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,1,0,0,0,18,0,0,0,184,20,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,1,0,0,0,50,0,0,0,128,20,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,1,0,0,0,128,0,0,0,0,20,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,1,0,0,0,18,0,0,0,232,19,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,1,0,0,0,50,0,0,0,176,19,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,1,0,0,0,128,0,0,0,48,19,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,5,2,6,3,6,4,7,4,7,5,9,5,11,6,11,6,11,7,11,6,11,6,11,9,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,2,4,2,5,3,5,4,6,6,6,7,7,8,7,8,7,8,7,9,8,9,8,9,8,10,8,11,9,12,9,12,0,0,0,0,0,0,0,4,5,4,5,4,5,4,5,3,5,3,5,3,5,4,5,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,7,3,8,3,10,3,8,3,9,3,8,4,9,4,9,5,9,6,10,6,9,7,11,7,12,9,13,10,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,4,3,4,4,4,4,5,5,5,5,5,6,5,7,5,8,6,8,6,9,7,10,7,10,8,10,8,11,9,11,0,0,0,0,0,0,0,4,5,4,5,3,5,3,5,3,5,4,4,4,4,5,5,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,4,3,4,3,4,4,5,4,5,4,5,5,6,5,6,5,7,5,7,6,7,6,8,7,8,7,8,7,9,8,9,9,9,9,10,10,10,11,9,12,9,12,9,15,10,14,9,13,10,13,10,12,10,12,10,13,10,12,11,13,11,14,12,13,13,14,14,13,14,15,14,16,13,13,14,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,15,1,5,5,5,5,5,5,5,6,5,6,5,6,5,6,5,6,6,7,7,7,7,8,7,8,8,9,8,10,9,10,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,8,5,8,4,9,4,9,4,9,4,9,4,9,4,9,4,9,4,9,4,9,4,8,4,8,4,9,5,9,5,9,5,9,5,9,6,10,6,10,7,10,8,11,9,11,11,12,13,12,14,13,15,13,15,14,16,14,17,15,17,15,15,16,16,15,16,16,16,15,18,16,15,17,17,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,2,5,5,4,5,4,5,4,5,4,6,5,6,5,6,5,6,5,7,5,7,6,8,6,8,6,8,6,9,6,9,6,5,5,5,5,6,5,6,5,6,5,6,5,6,5,6,5,6,5,6,5,6,5,6,5,7,5,7,5,7,5,7,5,8,6,8,6,8,6,9,6,9,6,10,6,10,6,11,6,11,7,11,7,12,7,12,7,12,7,12,7,12,7,12,7,12,7,12,8,13,8,12,8,12,8,13,8,13,9,13,9,13,9,13,9,12,10,12,10,13,10,14,11,14,12,14,13,14,13,14,14,15,16,15,15,15,14,15,17,21,22,22,21,22,22,22,22,22,22,21,21,21,21,21,21,21,21,21,21,2,3,7,13,4,4,7,15,8,6,9,17,21,16,15,21,2,5,7,11,5,5,7,14,9,7,10,16,17,15,16,21,4,7,10,17,7,7,9,15,11,9,11,16,21,18,15,21,18,21,21,21,15,17,17,19,21,19,18,20,21,21,21,20,1,5,7,21,5,8,9,21,10,9,12,20,20,16,20,20,4,8,9,20,6,8,9,20,11,11,13,20,20,15,17,20,9,11,14,20,8,10,15,20,11,13,15,20,20,20,20,20,20,20,20,20,13,20,20,20,18,18,20,20,20,20,20,20,3,6,8,20,6,7,9,20,10,9,12,20,20,20,20,20,5,7,9,20,6,6,9,20,10,9,12,20,20,20,20,20,8,10,13,20,8,9,12,20,11,10,12,20,20,20,20,20,18,20,20,20,15,17,18,20,18,17,18,20,20,20,20,20,7,10,12,20,8,9,11,20,14,13,14,20,20,20,20,20,6,9,12,20,7,8,11,20,12,11,13,20,20,20,20,20,9,11,15,20,8,10,14,20,12,11,14,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,11,16,18,20,15,15,17,20,20,17,20,20,20,20,20,20,9,14,16,20,12,12,15,20,17,15,18,20,20,20,20,20,16,19,18,20,15,16,20,20,17,17,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,1,4,2,6,3,7,5,7,2,10,8,14,7,12,11,14,1,5,3,7,4,9,7,13,1,0,0,0,0,1,0,0,40,25,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,1,0,0,0,4,0,0,0,32,25,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,1,0,0,0,10,0,0,0,16,25,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,1,0,0,0,25,0,0,0,240,24,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,1,0,0,0,64,0,0,0,176,24,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,4,2,4,3,5,4,5,5,5,5,6,6,6,6,6,6,6,7,7,8,6,9,7,12,11,16,13,16,12,15,13,15,12,14,12,15,15,15,0,0,0,0,0,0,0,0,0,0,3,3,3,4,3,4,4,4,4,4,5,5,5,6,6,0,0,0,0,0,0,0,0,0,0,0,2,3,2,3,3,3,0,0,0,0,0,0,1,3,2,3,0,0,0,0,4,5,6,11,5,5,6,10,7,7,6,6,14,13,9,9,6,6,6,10,6,6,6,9,8,7,7,9,14,12,8,11,8,7,7,11,8,8,7,11,9,9,7,9,13,11,9,13,19,19,18,19,15,16,16,19,11,11,10,13,10,10,9,15,5,5,6,13,6,6,6,11,8,7,6,7,14,11,10,11,6,6,6,12,7,6,6,11,8,7,7,11,13,11,9,11,9,7,6,12,8,7,6,12,9,8,8,11,13,10,7,13,19,19,17,19,17,14,14,19,12,10,8,12,13,10,9,16,7,8,7,12,7,7,7,11,8,7,7,8,12,12,11,11,8,8,7,12,8,7,6,11,8,7,7,10,10,11,10,11,9,8,8,13,9,8,7,12,10,9,7,11,9,8,7,11,18,18,15,18,18,16,17,18,15,11,10,18,11,9,9,18,16,16,13,16,12,11,10,16,12,11,9,6,15,12,11,13,16,16,14,14,13,11,12,16,12,9,9,13,13,10,10,12,17,18,17,17,14,15,14,16,14,12,14,15,12,10,11,12,18,18,18,18,18,18,18,18,18,12,13,18,16,11,9,18,1,0,0,0,8,0,0,0,72,31,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,1,0,0,0,64,0,0,0,8,31,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,1,0,0,0,64,0,0,0,200,30,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,1,0,0,0,128,0,0,0,72,30,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,1,0,0,0,32,0,0,0,40,30,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,1,0,0,0,128,0,0,0,168,29,1], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+62212); +/* memory initializer */ allocate([1,0,0,0,18,0,0,0,144,29,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,1,0,0,0,50,0,0,0,88,29,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,1,0,0,0,128,0,0,0,216,28,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,1,0,0,0,18,0,0,0,192,28,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,1,0,0,0,50,0,0,0,136,28,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,1,0,0,0,128,0,0,0,8,28,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,4,3,4,4,4,5,4,7,5,8,5,11,6,10,6,12,7,12,7,12,8,12,8,12,10,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,3,6,3,6,4,7,4,7,4,7,4,8,4,8,4,8,4,8,4,9,4,9,5,10,5,10,7,10,8,10,8,0,0,0,0,0,0,0,4,4,4,4,4,4,4,5,3,5,3,5,4,6,4,6,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,5,3,5,3,5,4,7,5,10,7,10,7,12,10,14,10,14,9,14,11,14,14,14,13,13,13,13,13,13,13,0,0,0,0,0,0,0,4,5,4,6,4,8,3,9,3,9,2,9,3,8,4,9,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,0,0,0,0,0,0,0,0,0,0,0,0,4,3,5,3,5,3,6,3,6,4,6,4,7,4,7,5,8,5,8,6,9,7,9,7,9,8,10,9,10,9,11,10,11,11,11,11,11,11,12,12,12,13,12,13,12,14,12,15,12,14,12,16,13,17,13,17,14,17,14,16,13,17,14,17,14,17,15,17,15,15,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,16,16,16,16,16,16,16,16,16,16,2,5,5,4,5,4,5,4,5,5,5,5,5,5,6,5,6,5,6,5,7,6,7,6,7,6,8,6,9,7,9,7,5,5,6,5,6,5,6,5,6,5,6,5,6,5,6,5,7,5,7,5,7,5,7,5,7,5,7,5,8,5,8,5,8,5,8,5,8,6,8,6,8,6,9,6,9,6,9,6,9,6,9,7,9,7,9,7,9,7,10,7,10,8,10,8,10,8,10,8,10,8,11,8,11,8,11,8,11,8,11,9,12,9,12,9,12,9,12,9,12,10,12,10,13,11,13,11,14,12,14,13,15,14,16,14,17,15,18,16,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,3,6,10,17,4,8,11,20,8,10,11,20,20,20,20,20,2,4,8,18,4,6,8,17,7,8,10,20,20,17,20,20,3,5,8,17,3,4,6,17,8,8,10,17,17,12,16,20,13,13,15,20,10,10,12,20,15,14,15,20,20,20,19,19,1,4,10,19,3,8,13,19,7,12,19,19,19,19,19,19,2,6,11,19,8,13,19,19,9,11,19,19,19,19,19,19,6,7,13,19,9,13,19,19,10,13,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,1,3,4,7,2,5,6,7,1,0,0,0,8,0,0,0,112,36,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,1,0,0,0,64,0,0,0,48,36,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,1,0,0,0,64,0,0,0,240,35,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,1,0,0,0,128,0,0,0,112,35,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,1,0,0,0,32,0,0,0,80,35,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,1,0,0,0,128,0,0,0,208,34,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,1,0,0,0,18,0,0,0,184,34,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,1,0,0,0,50,0,0,0,128,34,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,1,0,0,0,128,0,0,0,0,34,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,1,0,0,0,18,0,0,0,232,33,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,1,0,0,0,50,0,0,0,176,33,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,1,0,0,0,128,0,0,0,48,33,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,1,6,3,7,3,8,4,8,5,8,8,8,9,7,8,8,7,7,7,8,9,10,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,3,5,4,6,4,6,4,7,4,7,4,8,4,8,4,9,4,9,4,10,4,10,5,10,5,11,5,12,6,12,6,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,5,4,5,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,8,3,8,4,8,4,8,6,8,5,8,4,8,4,8,6,8,7,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,4,4,4,4,5,4,5,4,6,5,7,5,7,6,8,6,8,6,9,7,9,7,10,7,9,8,11,8,11,0,0,0,0,0,0,0,4,5,4,5,4,5,3,5,3,5,3,5,4,4,4,5,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,5,3,5,3,6,4,6,4,7,4,7,4,7,4,8,4,8,4,9,5,9,5,9,5,9,6,10,6,10,6,11,7,10,7,10,8,11,9,11,9,11,10,11,11,12,11,11,12,15,15,12,14,11,14,12,14,11,14,13,14,12,14,11,14,11,14,12,14,11,14,11,14,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,2,5,5,5,5,5,5,4,5,5,5,5,5,5,5,5,6,5,6,5,6,5,7,6,7,6,7,6,8,6,8,6,5,5,5,5,5,5,6,5,6,5,6,5,6,5,6,5,6,5,6,5,6,5,6,5,6,5,6,6,6,6,7,6,7,6,7,6,7,6,7,6,7,6,8,6,8,6,8,7,8,7,8,7,8,7,9,7,9,8,9,8,9,8,10,8,10,9,10,9,10,9,11,9,11,9,10,10,11,10,11,10,11,11,11,11,11,11,12,13,14,14,14,15,15,16,16,16,17,15,16,15,16,16,17,17,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,7,6,9,17,7,6,8,17,12,9,11,16,16,16,16,16,5,4,7,16,5,3,6,14,9,6,8,15,16,16,16,16,5,4,6,13,3,2,4,11,7,4,6,13,16,11,10,14,12,12,12,16,9,7,10,15,12,9,11,16,16,15,15,16,1,6,12,16,4,12,15,16,9,15,16,16,16,16,16,16,2,5,11,16,5,11,13,16,9,13,16,16,16,16,16,16,4,8,12,16,5,9,12,16,9,13,15,16,16,16,16,16,15,16,16,16,11,14,13,16,12,15,16,16,16,16,16,15,1,6,3,7,2,4,5,7,1,0,0,0,64,0,0,0,152,39,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,1,0,0,0,0,1,0,0,152,38,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,1,0,0,0,9,0,0,0,136,38,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,1,0,0,0,25,0,0,0,104,38,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,1,0,0,0,64,0,0,0,40,38,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,1,0,0,0,9,0,0,0,24,38,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,1,0,0,0,25,0,0,0,248,37,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,1,0,0,0,64,0,0,0,184,37,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,4,3,6,3,7,3,8,5,8,6,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,0,0,0,0,0,0,0,0,0,2,3,3,4,3,4,4,5,4,6,5,6,7,6,8,8,0,0,0,0,0,0,0,0,3,3,3,3,2,4,3,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,0,0,0,0,0,0,3,5,2,5,3,5,3,6,3,6,4,7,6,7,8,7,9,8,9,9,9,10,9,11,13,11,13,10,10,13,13,13,13,13,13,12,12,12,12,0,0,0,0,0,0,0,0,0,3,4,3,4,3,5,3,6,3,6,4,6,4,7,5,7,0,0,0,0,0,0,0,0,2,3,3,3,3,4,3,4,0,0,0,0,0,0,0,5,6,8,15,6,9,10,15,10,11,12,15,15,15,15,15,4,6,7,15,6,7,8,15,9,8,9,15,15,15,15,15,6,8,9,15,7,7,8,15,10,9,10,15,15,15,15,15,15,13,15,15,15,10,11,15,15,13,13,15,15,15,15,15,4,6,7,15,6,8,9,15,10,10,12,15,15,15,15,15,2,5,6,15,5,6,7,15,8,6,7,15,15,15,15,15,5,6,8,15,5,6,7,15,9,6,7,15,15,15,15,15,14,12,13,15,12,10,11,15,15,15,15,15,15,15,15,15,7,8,9,15,9,10,10,15,15,14,14,15,15,15,15,15,5,6,7,15,7,8,9,15,12,9,10,15,15,15,15,15,7,7,9,15,7,7,8,15,12,8,9,15,15,15,15,15,13,13,14,15,12,11,12,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,13,13,13,15,15,15,15,15,15,15,15,15,15,15,15,15,15,12,13,15,15,12,13,15,15,14,15,15,15,15,15,15,15,15,15,15,15,15,13,15,15,15,15,15,15,15,15,15,7,5,5,9,9,6,6,9,12,8,7,8,11,8,9,15,6,3,3,7,7,4,3,6,9,6,5,6,8,6,8,15,8,5,5,9,8,5,4,6,10,7,5,5,11,8,7,15,14,15,13,13,13,13,8,11,15,10,7,6,11,9,10,15,1,0,0,0,64,0,0,0,248,42,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,1,0,0,0,0,1,0,0,248,41,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,1,0,0,0,9,0,0,0,232,41,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,1,0,0,0,25,0,0,0,200,41,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,1,0,0,0,64,0,0,0,136,41,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,1,0,0,0,9,0,0,0,120,41,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,1,0,0,0,25,0,0,0,88,41,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,1,0,0,0,64,0,0,0,24,41,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,2,7,3,8,4,9,5,9,8,10,11,11,12,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,13,13,13,13,0,0,0,0,0,0,0,0,0,3,4,3,6,3,6,3,6,3,7,3,8,4,9,4,9,0,0,0,0,0,0,0,0,3,3,2,3,3,4,3,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,0,0,0,0,0,0,3,5,3,5,3,5,4,5,4,5,5,5,5,6,5,6,5,6,5,6,5,6,5,7,8,9,11,13,13,13,13,13,13,13,13,13,13,13,13,0,0,0,0,0,0,0,0,0,3,3,3,4,4,4,4,5,4,5,4,5,4,6,4,6,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,8,13,17,17,8,11,17,17,11,13,17,17,17,17,17,17,6,10,16,17,6,10,15,17,8,10,16,17,17,17,17,17,9,13,15,17,8,11,17,17,10,12,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,6,11,15,17,7,10,15,17,8,10,17,17,17,15,17,17,4,8,13,17,4,7,13,17,6,8,15,17,16,15,17,17,6,11,15,17,6,9,13,17,8,10,17,17,15,17,17,17,16,17,17,17,12,14,15,17,13,14,15,17,17,17,17,17,5,10,14,17,5,9,14,17,7,9,15,17,15,15,17,17,3,7,12,17,3,6,11,17,5,7,13,17,12,12,17,17,5,9,14,17,3,7,11,17,5,8,13,17,13,11,16,17,12,17,17,17,9,14,15,17,10,11,14,17,16,14,17,17,8,12,17,17,8,12,17,17,10,12,17,17,17,17,17,17,5,10,17,17,5,9,15,17,7,9,17,17,13,13,17,17,7,11,17,17,6,10,15,17,7,9,15,17,12,11,17,17,12,15,17,17,11,14,17,17,11,10,15,17,17,16,17,17,10,7,8,13,9,6,7,11,10,8,8,12,17,17,17,17,7,5,5,9,6,4,4,8,8,5,5,8,16,14,13,16,7,5,5,7,6,3,3,5,8,5,4,7,14,12,12,15,10,7,8,9,7,5,5,6,9,6,5,5,15,12,9,10,1,0,0,0,0,1,0,0,120,44,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,1,0,0,0,4,0,0,0,112,44,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,1,0,0,0,10,0,0,0,96,44,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,1,0,0,0,25,0,0,0,64,44,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,1,0,0,0,64,0,0,0,0,44,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,3,5,3,5,3,6,4,7,4,7,5,7,6,7,6,7,8,10,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,0,0,0,0,0,0,0,0,0,0,4,3,4,3,4,3,5,3,5,4,5,4,6,4,6,0,0,0,0,0,0,0,0,0,0,0,2,2,3,3,3,3,0,0,0,0,0,0,2,2,2,2,0,0,0,0,6,7,7,12,6,6,7,12,7,6,6,10,15,12,11,13,7,7,8,13,7,7,8,12,7,7,7,11,12,12,11,13,10,9,9,11,9,9,9,10,10,8,8,12,14,12,12,14,11,11,12,14,11,12,11,15,15,12,13,15,15,15,15,15,6,6,7,10,6,6,6,11,7,6,6,9,14,12,11,13,7,7,7,10,6,6,7,9,7,7,6,10,13,12,10,12,9,9,9,11,9,9,8,9,9,8,8,10,13,12,10,12,12,12,11,13,12,12,11,12,15,13,12,15,15,15,14,14,6,6,6,8,6,6,5,6,7,7,6,5,11,10,9,8,7,6,6,7,6,6,5,6,7,7,6,6,11,10,9,8,8,8,8,9,8,8,7,8,8,8,6,7,11,10,9,9,14,11,10,14,14,11,10,15,13,11,9,11,15,12,12,11,11,9,8,8,10,9,8,9,11,10,9,8,12,11,12,11,13,10,8,9,11,10,8,9,10,9,8,9,10,8,12,12,15,11,10,10,13,11,10,10,8,8,7,12,10,9,11,12,15,12,11,15,13,11,11,15,12,14,11,13,15,15,13,13,1,0,0,0,0,1,0,0,184,46,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,1,0,0,0,4,0,0,0,176,46,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,1,0,0,0,10,0,0,0,160,46,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,1,0,0,0,25,0,0,0,128,46,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,1,0,0,0,64,0,0,0,64,46,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,3,5,3,5,3,5,4,6,5,6,5,7,6,6,7,7,9,9,11,11,16,11,14,10,11,11,13,16,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,3,3,4,3,4,3,4,4,5,4,5,4,6,5,6,0,0,0,0,0,0,0,0,0,0,0,3,2,3,2,3,3,0,0,0,0,0,0,2,2,2,2,0,0,0,0,7,7,7,11,6,6,7,11,7,6,6,10,12,10,10,13,7,7,8,11,7,7,7,11,7,6,7,10,11,10,10,13,10,10,9,12,9,9,9,11,8,8,8,11,13,11,10,14,15,15,14,15,15,14,13,14,15,12,12,17,17,17,17,17,7,7,6,9,6,6,6,9,7,6,6,8,11,11,10,12,7,7,7,9,7,6,6,9,7,6,6,9,13,10,10,11,10,9,8,10,9,8,8,10,8,8,7,9,13,12,10,11,17,14,14,13,15,14,12,13,17,13,12,15,17,17,14,17,7,6,6,7,6,6,5,7,6,6,6,6,11,9,9,9,7,7,6,7,7,6,6,7,6,6,6,6,10,9,8,9,10,9,8,8,9,8,7,8,8,7,6,8,11,10,9,10,17,17,12,15,15,15,12,14,14,14,10,12,15,13,12,13,11,10,8,10,11,10,8,8,10,9,7,7,10,9,9,11,11,11,9,10,11,10,8,9,10,8,6,8,10,9,9,11,14,13,10,12,12,11,10,10,8,7,8,10,10,11,11,12,17,17,15,17,17,17,17,17,17,13,12,17,17,17,14,17,200,47,1,0,216,72,1,0,200,47,1,0,248,72,1,0,1], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+72464); +/* memory initializer */ allocate([1], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+78916); +/* memory initializer */ allocate([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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+79944); +/* memory initializer */ allocate([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,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+81996); +/* memory initializer */ allocate([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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,32,0,0,0,24,73,1,0,120,124,1,0,120,124,1,0,160,124,1,0,160,124,1,0,2,0,0,0,0,0,0,0,32,0,0,0,24,73,1,0,48,84,1,0,48,84,1,0,88,84,1,0,88,84,1,0,0,0,0,0,255,255,255,255,255,255,255,255,10,0,0,0,255,255,255,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+83152); +/* memory initializer */ allocate([1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,16,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,3,0,0,0,0,0,0,231,3,0,0,4,0,0,0,8,0,0,0,16,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,100,0,0,0,16,124,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,85,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,64,85,1,0,0,0,0,0,0,0,0,0,0,0,0,0,104,85,1,0,0,0,0,0,0,0,0,0,0,0,0,0,144,85,1,0,0,0,0,0,0,0,0,0,0,0,0,0,184,85,1,0,0,0,0,0,224,85,1,0,8,86,1,0,0,0,0,0,0,0,0,0,48,86,1,0,88,86,1,0,0,0,0,0,0,0,0,0,128,86,1,0,168,86,1,0,208,86,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,0,0,0,8,0,0,0,161,25,0,0,88,98,1,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,0,124,1,0,0,0,0,0,4,0,0,0,113,2,0,0,200,95,1,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,64,98,1,0,0,0,0,0,2,0,0,0,81,0,0,0,72,95,1,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,160,95,1,0,0,0,0,0,2,0,0,0,81,0,0,0,200,94,1,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,32,95,1,0,0,0,0,0,2,0,0,0,33,1,0,0,88,93,1,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,128,94,1,0,0,0,0,0,4,0,0,0,81,0,0,0,240,92,1,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,72,93,1,0,0,0,0,0,2,0,0,0,121,0,0,0,64,92,1,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,192,92,1,0,0,0,0,0,2,0,0,0,169,0,0,0,88,91,1,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,8,92,1,0,0,0,0,0,2,0,0,0,25,0,0,0,32,91,1,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,64,91,1,0,0,0,0,0,2,0,0,0,169,0,0,0,56,90,1,0,1,0,0,0,0,136,93,225,0,176,19,97,4,0,0,0,0,0,0,0,232,90,1,0,0,0,0,0,2,0,0,0,225,0,0,0,16,89,1,0,1,0,0,0,0,96,242,224,0,0,149,96,4,0,0,0,0,0,0,0,248,89,1,0,0,0,0,0,2,0,0,0,185,1,0,0,248,86,1,0,1,0,0,0,0,0,116,224,0,0,16,96,5,0,0,0,0,0,0,0,184,88,1,0,0,0,0,0,2,4,4,6,6,7,7,8,8,8,8,9,8,9,9,9,9,9,9,9,9,11,11,12,7,7,7,7,8,8,9,9,9,9,10,10,10,10,10,10,10,10,11,11,11,7,7,7,7,8,8,9,8,9,9,9,9,9,9,10,10,10,10,11,11,12,8,8,8,8,8,8,9,9,9,9,10,10,10,10,10,10,10,10,11,11,11,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,10,10,10,11,11,11,8,8,8,8,9,9,9,9,9,9,10,10,10,10,10,10,10,10,11,11,11,8,8,8,8,9,9,9,9,9,9,10,10,10,10,10,10,10,10,11,12,11,9,9,8,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,8,8,9,9,9,9,10,10,10,10,10,10,10,10,10,10,11,12,11,12,11,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,12,11,12,11,11,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,12,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,12,11,11,12,11,10,10,10,10,10,10,10,10,10,10,10,10,11,10,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,12,11,12,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,12,11,12,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,11,11,12,11,11,12,11,11,12,10,10,11,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,12,12,11,12,11,11,12,12,12,11,11,10,10,10,10,10,10,10,10,10,11,12,12,11,12,12,11,12,11,11,11,11,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,10,0,0,0,9,0,0,0,11,0,0,0,8,0,0,0,12,0,0,0,7,0,0,0,13,0,0,0,6,0,0,0,14,0,0,0,5,0,0,0,15,0,0,0,4,0,0,0,16,0,0,0,3,0,0,0,17,0,0,0,2,0,0,0,18,0,0,0,1,0,0,0,19,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,1,4,4,5,5,7,7,9,9,11,11,12,12,13,13,6,5,5,6,6,9,9,10,10,12,12,12,13,15,14,6,5,5,7,7,9,9,10,10,12,12,12,13,14,13,17,7,7,8,8,10,10,11,11,12,13,13,13,13,13,17,7,7,8,8,10,10,11,11,13,13,13,13,14,14,17,11,11,9,9,11,11,12,12,12,13,13,14,15,13,17,12,12,9,9,11,11,12,12,13,13,13,13,14,16,17,17,17,11,12,12,12,13,13,13,14,15,14,15,15,17,17,17,12,12,11,11,13,13,14,14,15,14,15,15,17,17,17,15,15,13,13,14,14,15,14,15,15,16,15,17,17,17,15,15,13,13,13,14,14,15,15,15,15,16,17,17,17,17,16,14,15,14,14,15,14,14,15,15,15,17,17,17,17,17,14,14,16,14,15,15,15,15,15,15,17,17,17,17,17,17,16,16,15,17,15,15,14,17,15,17,16,17,17,17,17,16,15,14,15,15,15,15,15,15,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,1,3,3,10,10,10,10,10,10,10,10,10,10,5,6,6,10,10,10,10,10,10,10,10,10,10,6,7,8,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,3,3,5,5,6,6,6,5,5,6,6,6,5,5,6,6,6,5,5,6,6,6,5,5,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,6,6,8,8,8,8,9,9,10,10,7,5,5,7,7,8,8,8,8,9,10,11,11,7,5,5,7,7,8,8,9,9,10,10,11,11,0,8,8,8,8,9,9,9,9,9,10,11,11,0,8,8,8,8,9,9,9,9,10,10,11,11,0,12,12,9,9,9,9,10,9,10,11,11,11,0,13,12,9,8,9,9,10,10,11,11,12,11,0,0,0,9,9,9,9,10,10,11,11,12,12,0,0,0,10,10,9,9,10,10,11,11,12,12,0,0,0,13,13,10,10,11,11,12,11,13,12,0,0,0,14,14,10,10,11,10,11,11,12,12,0,0,0,0,0,12,12,11,11,12,12,13,13,0,0,0,0,0,12,12,11,10,12,11,13,12,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,3,3,5,5,7,7,7,7,7,7,10,10,9,7,7,7,7,8,8,8,8,9,9,9,7,7,7,7,8,8,8,8,10,10,10,7,7,7,7,8,8,8,8,10,10,10,7,7,7,7,8,8,8,8,10,10,10,8,8,8,8,8,8,8,8,10,10,10,8,8,8,8,8,8,8,8,10,10,10,8,8,8,8,8,8,8,8,10,10,10,10,10,8,8,8,8,8,8,10,10,10,10,10,8,8,8,8,8,8,10,10,10,10,10,8,8,8,8,8,8,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,6,6,6,7,6,6,4,7,7,10,9,9,10,9,9,5,7,7,10,9,9,10,9,9,6,10,10,10,10,10,11,10,10,6,9,9,10,9,10,11,10,10,6,9,9,10,9,9,11,9,10,7,10,10,11,11,11,11,10,10,6,9,9,10,10,10,11,9,9,6,9,9,10,10,10,10,9,9,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,3,3,5,5,8,8,8,8,9,9,10,10,11,11,11,11,0,0,0,8,8,8,8,9,9,9,9,10,10,11,11,12,12,0,0,0,8,8,8,8,9,9,9,9,10,10,11,11,12,12,0,0,0,9,9,8,8,10,10,10,10,11,11,12,12,12,12,0,0,0,9,9,8,8,10,10,10,10,11,11,12,12,12,12,0,0,0,10,10,9,9,10,10,10,10,11,11,12,12,13,13,0,0,0,10,10,9,9,10,10,10,10,11,11,12,12,13,13,0,0,0,11,11,9,9,10,10,10,10,11,11,12,12,13,13,0,0,0,0,0,9,9,10,10,10,10,11,11,12,12,13,13,0,0,0,0,0,9,9,10,10,11,11,12,12,12,12,13,13,0,0,0,0,0,9,9,10,10,11,11,12,11,12,12,13,13,0,0,0,0,0,10,10,11,11,11,11,12,12,13,12,13,13,0,0,0,0,0,0,0,11,10,11,11,12,12,13,13,13,13,0,0,0,0,0,0,0,11,11,12,12,12,12,13,13,13,14,0,0,0,0,0,0,0,11,11,12,12,12,12,13,13,14,13,0,0,0,0,0,0,0,12,12,12,12,13,13,13,13,14,14,0,0,0,0,0,0,0,0,0,12,12,13,13,13,13,14,14,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,3,3,4,5,6,6,8,8,0,0,0,8,8,7,7,9,9,0,0,0,8,8,7,7,9,9,0,0,0,9,10,8,8,9,9,0,0,0,10,10,8,8,9,9,0,0,0,11,10,8,8,10,10,0,0,0,11,11,8,8,10,10,0,0,0,12,12,9,9,10,10,0,0,0,0,0,9,9,10,10,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,1,2,3,7,7,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,9,8,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,2,4,4,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,5,0,0,0,0,0,0,5,7,7,0,0,0,0,0,0,5,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,7,0,0,0,0,0,0,7,8,9,0,0,0,0,0,0,7,8,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,7,8,0,0,0,0,0,0,7,9,8,0,0,0,0,0,0,7,9,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,8,0,0,0,0,0,0,8,9,9,0,0,0,0,0,0,8,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,8,8,10,0,0,0,0,0,0,9,10,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,7,9,9,0,0,0,0,0,0,8,10,9,0,0,0,0,0,0,9,10,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,8,0,0,0,0,0,0,8,9,9,0,0,0,0,0,0,8,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,9,10,10,0,0,0,0,0,0,8,9,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,7,9,9,0,0,0,0,0,0,9,10,10,0,0,0,0,0,0,8,10,8], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+86572); +/* memory initializer */ allocate([1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,6,18,8,11,8,8,9,9,10,4,4,18,5,9,5,6,7,8,10,18,18,18,18,17,17,17,17,17,17,7,5,17,6,11,6,7,8,9,12,12,9,17,12,8,8,9,10,10,13,7,5,17,6,8,4,5,6,8,10,6,5,17,6,8,5,4,5,7,9,7,7,17,8,9,6,5,5,6,8,8,8,17,9,11,8,6,6,6,7,9,10,17,12,12,10,9,7,7,8,0,0,0,0,2,0,0,0,100,0,0,0,216,163,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,125,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,136,125,1,0,0,0,0,0,0,0,0,0,0,0,0,0,176,125,1,0,0,0,0,0,0,0,0,0,0,0,0,0,216,125,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,1,0,0,0,0,0,40,126,1,0,80,126,1,0,0,0,0,0,0,0,0,0,120,126,1,0,160,126,1,0,0,0,0,0,0,0,0,0,200,126,1,0,240,126,1,0,24,127,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,0,0,0,8,0,0,0,161,25,0,0,32,138,1,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,200,163,1,0,0,0,0,0,4,0,0,0,113,2,0,0,144,135,1,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,8,138,1,0,0,0,0,0,2,0,0,0,81,0,0,0,16,135,1,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,104,135,1,0,0,0,0,0,2,0,0,0,81,0,0,0,144,134,1,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,232,134,1,0,0,0,0,0,2,0,0,0,33,1,0,0,32,133,1,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,72,134,1,0,0,0,0,0,4,0,0,0,81,0,0,0,184,132,1,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,16,133,1,0,0,0,0,0,2,0,0,0,121,0,0,0,8,132,1,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,136,132,1,0,0,0,0,0,2,0,0,0,169,0,0,0,32,131,1,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,208,131,1,0,0,0,0,0,2,0,0,0,25,0,0,0,232,130,1,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,8,131,1,0,0,0,0,0,4,0,0,0,81,0,0,0,128,130,1,0,1,0,0,0,0,176,19,225,0,176,19,97,2,0,0,0,0,0,0,0,216,130,1,0,0,0,0,0,2,0,0,0,225,0,0,0,88,129,1,0,1,0,0,0,0,96,242,224,0,0,149,96,4,0,0,0,0,0,0,0,64,130,1,0,0,0,0,0,2,0,0,0,185,1,0,0,64,127,1,0,1,0,0,0,0,0,116,224,0,0,16,96,5,0,0,0,0,0,0,0,0,129,1,0,0,0,0,0,1,5,5,7,7,8,7,8,8,10,10,9,9,10,10,10,11,11,10,12,11,12,12,12,9,8,8,8,8,8,9,10,10,10,10,11,11,11,10,11,11,12,12,11,12,8,8,7,7,8,9,10,10,10,9,10,10,9,10,10,11,11,11,11,11,11,9,9,9,9,8,9,10,10,11,10,10,11,11,12,10,10,12,12,11,11,10,9,9,10,8,9,10,10,10,9,10,10,11,11,10,11,10,10,10,12,12,12,9,10,9,10,9,9,10,10,11,11,11,11,10,10,10,11,12,11,12,11,12,10,11,10,11,9,10,9,10,9,10,10,9,10,10,11,10,11,11,11,11,12,11,9,10,10,10,10,11,11,11,11,11,10,11,11,11,11,10,12,10,12,12,11,12,10,10,11,10,9,11,10,11,9,10,11,10,10,10,11,11,11,11,12,12,10,9,9,11,10,9,12,11,10,12,12,11,11,11,11,10,11,11,12,11,10,12,9,11,10,11,10,10,11,10,11,9,10,10,10,11,12,11,11,12,11,10,10,11,11,9,10,10,12,10,11,10,10,10,9,10,10,10,10,9,10,10,11,11,11,11,12,11,10,10,10,10,11,11,10,11,11,9,11,10,12,10,12,11,10,11,10,10,10,11,10,10,11,11,10,11,10,10,10,10,11,11,12,10,10,10,11,10,11,12,11,10,11,10,10,11,11,10,12,10,9,10,10,11,11,11,10,12,10,10,11,11,11,10,10,11,10,10,10,11,10,11,10,12,11,11,10,10,10,12,10,10,11,9,10,11,11,11,10,10,11,10,10,9,11,11,12,12,11,12,11,11,11,11,11,11,9,10,11,10,12,10,10,10,10,11,10,10,11,10,10,12,10,10,10,10,10,9,12,10,10,10,10,12,9,11,10,10,11,10,12,12,10,12,12,12,10,10,10,10,9,10,11,10,10,12,10,10,12,11,10,11,10,10,12,11,10,12,10,10,11,9,11,10,9,10,9,10,0,0,0,0,0,0,0,10,0,0,0,9,0,0,0,11,0,0,0,8,0,0,0,12,0,0,0,7,0,0,0,13,0,0,0,6,0,0,0,14,0,0,0,5,0,0,0,15,0,0,0,4,0,0,0,16,0,0,0,3,0,0,0,17,0,0,0,2,0,0,0,18,0,0,0,1,0,0,0,19,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,1,4,4,5,5,10,8,11,11,11,11,11,11,11,11,6,6,6,7,6,11,10,11,11,11,11,11,11,11,11,7,5,6,6,6,8,7,11,11,11,11,11,11,11,11,11,7,8,8,8,9,9,11,11,11,11,11,11,11,11,11,9,8,7,8,9,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,1,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,3,4,5,5,7,6,6,6,5,7,7,7,6,6,7,7,7,6,6,7,7,7,6,6,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,7,6,7,7,7,7,8,8,9,9,7,6,6,7,7,8,8,7,7,8,9,10,10,7,6,6,7,7,8,7,7,7,9,9,10,12,0,8,8,8,8,8,9,8,8,9,9,10,10,0,8,8,8,8,8,9,8,9,9,9,11,10,0,0,13,9,8,9,9,9,9,10,10,11,11,0,13,0,9,9,9,9,9,9,11,10,11,11,0,0,0,8,9,10,9,10,10,13,11,12,12,0,0,0,8,9,9,9,10,10,13,12,12,13,0,0,0,12,0,10,10,12,11,10,11,12,12,0,0,0,13,13,10,10,10,11,12,0,13,0,0,0,0,0,0,13,11,0,12,12,12,13,12,0,0,0,0,0,0,13,13,11,13,13,11,12,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,3,3,6,6,8,8,9,9,9,9,10,10,10,7,7,8,8,9,9,9,9,10,10,9,7,7,8,8,9,9,9,9,10,10,10,8,8,9,9,9,9,9,9,10,10,10,8,8,9,9,9,9,8,9,10,10,10,8,8,9,9,9,10,10,10,10,10,10,9,9,9,9,9,9,10,10,11,10,11,9,9,9,9,10,10,10,10,11,11,11,10,10,9,9,10,10,10,9,11,10,10,10,10,10,10,9,9,10,10,11,11,10,10,10,9,9,9,10,10,10,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,7,6,6,7,6,6,4,7,7,11,9,10,12,9,10,4,7,7,10,10,10,11,9,9,6,11,10,11,11,12,11,11,11,6,10,10,11,11,12,11,10,10,6,9,10,11,11,11,11,10,10,7,10,11,12,11,11,12,11,12,6,9,9,10,9,9,11,10,10,6,9,9,10,10,10,11,10,10,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,3,3,6,6,8,8,9,9,8,8,10,9,10,10,11,11,0,0,0,7,7,8,8,9,9,9,9,10,10,11,11,11,12,0,0,0,7,7,8,8,9,9,9,9,10,10,11,11,12,11,0,0,0,8,8,9,9,10,10,9,9,10,10,11,11,12,12,0,0,0,8,8,9,9,10,10,9,9,11,10,11,11,12,12,0,0,0,9,9,9,9,10,10,10,10,11,11,11,12,12,12,0,0,0,9,9,9,9,10,10,10,10,11,11,12,12,13,13,0,0,0,10,10,10,10,11,11,10,10,11,11,12,12,13,13,0,0,0,0,0,10,9,10,11,10,10,11,11,12,12,13,13,0,0,0,0,0,9,9,10,9,10,11,12,12,13,13,14,13,0,0,0,0,0,9,9,9,10,10,10,11,11,13,12,13,13,0,0,0,0,0,10,10,10,10,11,11,12,12,13,13,14,14,0,0,0,0,0,0,0,10,10,11,11,12,12,13,13,13,14,0,0,0,0,0,0,0,11,11,11,11,12,12,13,14,14,14,0,0,0,0,0,0,0,11,11,11,11,12,12,13,13,14,13,0,0,0,0,0,0,0,11,11,12,12,13,13,14,14,14,14,0,0,0,0,0,0,0,0,0,12,12,12,12,13,13,14,14,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,3,3,5,5,7,6,8,8,0,0,0,7,7,7,7,8,8,0,0,0,7,7,7,7,8,9,0,0,0,8,8,8,8,9,9,0,0,0,8,8,8,8,9,9,0,0,0,9,9,8,8,10,10,0,0,0,9,9,8,8,10,10,0,0,0,10,10,9,9,10,10,0,0,0,0,0,9,9,10,10,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,1,2,3,7,7,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,9,8,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,1,4,4,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5,6,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5,5,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,7,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,7,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,4,0,0,0,0,0,0,5,7,7,0,0,0,0,0,0,5,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,8,0,0,0,0,0,0,7,8,9,0,0,0,0,0,0,7,8,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,8,8,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,7,9,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,8,0,0,0,0,0,0,8,10,10,0,0,0,0,0,0,8,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,10,9,0,0,0,0,0,0,8,9,11,0,0,0,0,0,0,9,11,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,10,0,0,0,0,0,0,9,11,10,0,0,0,0,0,0,9,11,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,8,0,0,0,0,0,0,8,9,9,0,0,0,0,0,0,8,9,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,7,9,9,0,0,0,0,0,0,9,11,11,0,0,0,0,0,0,9,10,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,10,0,0,0,0,0,0,9,11,11,0,0,0,0,0,0,8,11,9], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+97272); +/* memory initializer */ allocate([1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,5,18,7,10,6,7,8,9,10,5,2,18,5,7,5,6,7,8,11,17,17,17,17,17,17,17,17,17,17,7,4,17,6,9,6,8,10,12,15,11,7,17,9,6,6,7,9,11,15,6,4,17,6,6,4,5,8,11,16,6,6,17,8,6,5,6,9,13,16,8,9,17,11,9,8,8,11,13,17,9,12,17,15,14,13,12,13,14,17,12,15,17,17,17,17,17,16,17,17,0,0,0,0,154,153,153,153,153,153,185,191,0,0,0,0,0,0,0,0,154,153,153,153,153,153,185,63,154,153,153,153,153,153,201,63,51,51,51,51,51,51,211,63,154,153,153,153,153,153,217,63,0,0,0,0,0,0,224,63,51,51,51,51,51,51,227,63,102,102,102,102,102,102,230,63,154,153,153,153,153,153,233,63,205,204,204,204,204,204,236,63,0,0,0,0,0,0,240,63,0,2,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,16,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,0,0,0,35,0,0,0,21,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,20,0,0,0,8,0,0,0,0,0,0,192,0,0,160,63,25,0,0,0,12,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,9,0,0,0,253,255,255,255,0,0,0,0,0,0,0,0,20,0,0,0,9,0,0,0,252,255,255,255,0,0,0,0,0,0,0,0,20,0,0,0,9,0,0,0,252,255,255,255,0,0,0,0,0,0,0,0,20,0,0,0,6,0,0,0,250,255,255,255,0,0,0,0,0,0,0,0,20,0,0,0,3,0,0,0,246,255,255,255,0,0,0,0,0,0,0,0,18,0,0,0,1,0,0,0,242,255,255,255,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,240,255,255,255,0,0,0,0,0,0,0,0,18,0,0,0,254,255,255,255,240,255,255,255,0,0,0,0,0,0,0,0,12,0,0,0,254,255,255,255,236,255,255,255,0,0,0,0,0,0,0,0,253,255,255,255,248,255,255,255,243,255,255,255,241,255,255,255,246,255,255,255,246,255,255,255,247,255,255,255,247,255,255,255,247,255,255,255,247,255,255,255,247,255,255,255,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,252,255,255,255,246,255,255,255,242,255,255,255,240,255,255,255,242,255,255,255,243,255,255,255,244,255,255,255,244,255,255,255,245,255,255,255,245,255,255,255,246,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,250,255,255,255,244,255,255,255,242,255,255,255,240,255,255,255,241,255,255,255,241,255,255,255,242,255,255,255,243,255,255,255,243,255,255,255,244,255,255,255,244,255,255,255,254,255,255,255,254,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,244,255,255,255,243,255,255,255,242,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,241,255,255,255,242,255,255,255,243,255,255,255,244,255,255,255,244,255,255,255,251,255,255,255,254,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,241,255,255,255,241,255,255,255,241,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,242,255,255,255,243,255,255,255,243,255,255,255,243,255,255,255,246,255,255,255,252,255,255,255,254,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,241,255,255,255,242,255,255,255,242,255,255,255,243,255,255,255,245,255,255,255,246,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,241,255,255,255,242,255,255,255,242,255,255,255,243,255,255,255,245,255,255,255,246,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,241,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,244,255,255,255,248,255,255,255,252,255,255,255,254,255,255,255,254,255,255,255,0,0,0,0,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,241,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,244,255,255,255,247,255,255,255,252,255,255,255,254,255,255,255,254,255,255,255,0,0,0,0,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,241,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,244,255,255,255,247,255,255,255,252,255,255,255,254,255,255,255,254,255,255,255,0,0,0,0,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,241,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,244,255,255,255,247,255,255,255,252,255,255,255,254,255,255,255,254,255,255,255,0,0,0,0,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,241,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,244,255,255,255,247,255,255,255,252,255,255,255,254,255,255,255,254,255,255,255,0,0,0,0,253,255,255,255,248,255,255,255,243,255,255,255,241,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,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,252,255,255,255,246,255,255,255,242,255,255,255,240,255,255,255,241,255,255,255,242,255,255,255,243,255,255,255,244,255,255,255,244,255,255,255,244,255,255,255,245,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,250,255,255,255,244,255,255,255,242,255,255,255,240,255,255,255,241,255,255,255,241,255,255,255,242,255,255,255,243,255,255,255,243,255,255,255,244,255,255,255,244,255,255,255,254,255,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,244,255,255,255,243,255,255,255,242,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,241,255,255,255,242,255,255,255,243,255,255,255,244,255,255,255,244,255,255,255,250,255,255,255,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,241,255,255,255,241,255,255,255,241,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,242,255,255,255,243,255,255,255,243,255,255,255,243,255,255,255,246,255,255,255,252,255,255,255,254,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,241,255,255,255,242,255,255,255,242,255,255,255,243,255,255,255,245,255,255,255,246,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,241,255,255,255,242,255,255,255,242,255,255,255,243,255,255,255,245,255,255,255,246,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,241,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,244,255,255,255,248,255,255,255,252,255,255,255,254,255,255,255,254,255,255,255,0,0,0,0,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,241,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,244,255,255,255,247,255,255,255,252,255,255,255,254,255,255,255,254,255,255,255,0,0,0,0,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,241,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,244,255,255,255,247,255,255,255,252,255,255,255,254,255,255,255,254,255,255,255,0,0,0,0,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,241,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,244,255,255,255,247,255,255,255,252,255,255,255,254,255,255,255,254,255,255,255,0,0,0,0,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,241,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,244,255,255,255,247,255,255,255,252,255,255,255,254,255,255,255,254,255,255,255,0,0,0,0,3,0,0,0,3,0,0,0,15,0,0,0,3,0,0,0,3,0,0,0,15,0,0,0,10,0,0,0,10,0,0,0,100,0,0,0,10,0,0,0,10,0,0,0,100,0,0,0,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,252,255,255,255,0,0,0,0,0,0,0,0,4,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,10,0,0,0,12,0,0,0,14,0,0,0,20,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,236,255,255,255,240,255,255,255,248,255,255,255,250,255,255,255,250,255,255,255,254,255,255,255,2,0,0,0,2,0,0,0,3,0,0,0,6,0,0,0,6,0,0,0,15,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,250,255,255,255,248,255,255,255,248,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,252,255,255,255,254,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,252,255,255,255,0,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,10,0,0,0,12,0,0,0,14,0,0,0,20,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,250,255,255,255,254,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,6,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,250,255,255,255,248,255,255,255,248,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,252,255,255,255,254,255,255,255,244,255,255,255,244,255,255,255,244,255,255,255,244,255,255,255,244,255,255,255,248,255,255,255,250,255,255,255,252,255,255,255,0,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,10,0,0,0,12,0,0,0,14,0,0,0,20,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,250,255,255,255,252,255,255,255,252,255,255,255,254,255,255,255,254,255,255,255,254,255,255,255,254,255,255,255,2,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,248,255,255,255,246,255,255,255,246,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255,250,255,255,255,252,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,246,255,255,255,248,255,255,255,250,255,255,255,254,255,255,255,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,8,0,0,0,10,0,0,0,10,0,0,0,16,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,254,255,255,255,0,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,248,255,255,255,252,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,246,255,255,255,248,255,255,255,250,255,255,255,254,255,255,255,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,6,0,0,0,8,0,0,0,8,0,0,0,14,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,254,255,255,255,0,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,248,255,255,255,252,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,244,255,255,255,246,255,255,255,250,255,255,255,254,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,6,0,0,0,6,0,0,0,12,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,254,255,255,255,0,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,248,255,255,255,252,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,238,255,255,255,242,255,255,255,246,255,255,255,252,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,6,0,0,0,11,0,0,0,224,255,255,255,224,255,255,255,224,255,255,255,224,255,255,255,228,255,255,255,232,255,255,255,234,255,255,255,240,255,255,255,246,255,255,255,250,255,255,255,248,255,255,255,248,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,252,255,255,255,254,255,255,255,222,255,255,255,222,255,255,255,222,255,255,255,222,255,255,255,226,255,255,255,230,255,255,255,232,255,255,255,238,255,255,255,242,255,255,255,244,255,255,255,244,255,255,255,244,255,255,255,244,255,255,255,244,255,255,255,246,255,255,255,247,255,255,255,251,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,238,255,255,255,242,255,255,255,246,255,255,255,252,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,6,0,0,0,11,0,0,0,222,255,255,255,222,255,255,255,222,255,255,255,222,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,242,255,255,255,242,255,255,255,244,255,255,255,220,255,255,255,220,255,255,255,220,255,255,255,220,255,255,255,220,255,255,255,222,255,255,255,228,255,255,255,232,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,238,255,255,255,240,255,255,255,234,255,255,255,234,255,255,255,234,255,255,255,234,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,250,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,6,0,0,0,11,0,0,0,222,255,255,255,222,255,255,255,222,255,255,255,222,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,232,255,255,255,234,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,224,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,234,255,255,255,242,255,255,255,246,255,255,255,250,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,3,0,0,0,3,0,0,0,5,0,0,0,10,0,0,0,222,255,255,255,222,255,255,255,222,255,255,255,222,255,255,255,222,255,255,255,224,255,255,255,224,255,255,255,226,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,232,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,224,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,228,255,255,255,228,255,255,255,228,255,255,255,228,255,255,255,228,255,255,255,228,255,255,255,228,255,255,255,236,255,255,255,242,255,255,255,248,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,254,255,255,255,2,0,0,0,220,255,255,255,220,255,255,255,220,255,255,255,220,255,255,255,222,255,255,255,224,255,255,255,224,255,255,255,226,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,224,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,236,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,236,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,242,255,255,255,244,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,221,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,252,255,255,255,0,0,0,0,0,0,0,0,4,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,10,0,0,0,12,0,0,0,14,0,0,0,20,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,236,255,255,255,240,255,255,255,248,255,255,255,250,255,255,255,250,255,255,255,254,255,255,255,2,0,0,0,2,0,0,0,3,0,0,0,6,0,0,0,6,0,0,0,15,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,250,255,255,255,248,255,255,255,248,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,252,255,255,255,254,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,252,255,255,255,0,0,0,0,0,0,0,0,4,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,10,0,0,0,12,0,0,0,14,0,0,0,20,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,252,255,255,255,254,255,255,255,2,0,0,0,3,0,0,0,6,0,0,0,6,0,0,0,8,0,0,0,10,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,254,255,255,255,0,0,0,0,2,0,0,0,244,255,255,255,244,255,255,255,244,255,255,255,244,255,255,255,244,255,255,255,248,255,255,255,250,255,255,255,252,255,255,255,0,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,10,0,0,0,12,0,0,0,14,0,0,0,20,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,252,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,252,255,255,255,254,255,255,255,0,0,0,0,242,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,246,255,255,255,248,255,255,255,250,255,255,255,254,255,255,255,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,8,0,0,0,10,0,0,0,10,0,0,0,16,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,250,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,2,0,0,0,6,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255,250,255,255,255,252,255,255,255,254,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,246,255,255,255,248,255,255,255,250,255,255,255,254,255,255,255,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,6,0,0,0,8,0,0,0,8,0,0,0,14,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,250,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,2,0,0,0,6,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255,250,255,255,255,252,255,255,255,254,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,244,255,255,255,246,255,255,255,250,255,255,255,254,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,6,0,0,0,6,0,0,0,12,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,250,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,2,0,0,0,6,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255,250,255,255,255,252,255,255,255,254,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,238,255,255,255,242,255,255,255,246,255,255,255,252,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,6,0,0,0,6,0,0,0,12,0,0,0,224,255,255,255,224,255,255,255,224,255,255,255,224,255,255,255,228,255,255,255,232,255,255,255,234,255,255,255,240,255,255,255,244,255,255,255,250,255,255,255,253,255,255,255,253,255,255,255,253,255,255,255,253,255,255,255,254,255,255,255,0,0,0,0,4,0,0,0,222,255,255,255,222,255,255,255,222,255,255,255,222,255,255,255,226,255,255,255,230,255,255,255,232,255,255,255,238,255,255,255,242,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,248,255,255,255,251,255,255,255,253,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,238,255,255,255,242,255,255,255,246,255,255,255,252,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,6,0,0,0,6,0,0,0,12,0,0,0,222,255,255,255,222,255,255,255,222,255,255,255,222,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,236,255,255,255,242,255,255,255,248,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,253,255,255,255,255,255,255,255,4,0,0,0,222,255,255,255,222,255,255,255,222,255,255,255,222,255,255,255,222,255,255,255,226,255,255,255,230,255,255,255,236,255,255,255,240,255,255,255,243,255,255,255,243,255,255,255,243,255,255,255,243,255,255,255,243,255,255,255,245,255,255,255,248,255,255,255,250,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,238,255,255,255,242,255,255,255,246,255,255,255,252,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,6,0,0,0,6,0,0,0,12,0,0,0,222,255,255,255,222,255,255,255,222,255,255,255,222,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,240,255,255,255,246,255,255,255,248,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,251,255,255,255,253,255,255,255,1,0,0,0,222,255,255,255,222,255,255,255,222,255,255,255,222,255,255,255,224,255,255,255,224,255,255,255,228,255,255,255,234,255,255,255,238,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,242,255,255,255,244,255,255,255,246,255,255,255,234,255,255,255,234,255,255,255,234,255,255,255,234,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,252,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,5,0,0,0,5,0,0,0,11,0,0,0,222,255,255,255,222,255,255,255,222,255,255,255,222,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,240,255,255,255,244,255,255,255,246,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255,249,255,255,255,251,255,255,255,254,255,255,255,220,255,255,255,220,255,255,255,220,255,255,255,220,255,255,255,220,255,255,255,222,255,255,255,228,255,255,255,234,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,240,255,255,255,242,255,255,255,228,255,255,255,228,255,255,255,228,255,255,255,228,255,255,255,228,255,255,255,228,255,255,255,228,255,255,255,236,255,255,255,242,255,255,255,248,255,255,255,254,255,255,255,254,255,255,255,254,255,255,255,254,255,255,255,0,0,0,0,2,0,0,0,6,0,0,0,220,255,255,255,220,255,255,255,220,255,255,255,220,255,255,255,222,255,255,255,224,255,255,255,224,255,255,255,232,255,255,255,240,255,255,255,244,255,255,255,244,255,255,255,244,255,255,255,244,255,255,255,244,255,255,255,246,255,255,255,248,255,255,255,251,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,224,255,255,255,230,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,236,255,255,255,238,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,236,255,255,255,244,255,255,255,244,255,255,255,244,255,255,255,244,255,255,255,244,255,255,255,246,255,255,255,248,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,221,255,255,255,226,255,255,255,231,255,255,255,231,255,255,255,231,255,255,255,231,255,255,255,231,255,255,255,231,255,255,255,241,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,252,255,255,255,0,0,0,0,0,0,0,0,4,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,10,0,0,0,12,0,0,0,14,0,0,0,20,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,236,255,255,255,240,255,255,255,248,255,255,255,250,255,255,255,250,255,255,255,254,255,255,255,2,0,0,0,2,0,0,0,3,0,0,0,6,0,0,0,6,0,0,0,15,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,250,255,255,255,248,255,255,255,248,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,252,255,255,255,254,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,244,255,255,255,250,255,255,255,252,255,255,255,0,0,0,0,2,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,8,0,0,0,10,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,248,255,255,255,252,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,6,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,254,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,244,255,255,255,246,255,255,255,248,255,255,255,0,0,0,0,2,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,8,0,0,0,10,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,252,255,255,255,254,255,255,255,254,255,255,255,254,255,255,255,254,255,255,255,0,0,0,0,1,0,0,0,4,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,252,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,244,255,255,255,246,255,255,255,248,255,255,255,0,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,10,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,252,255,255,255,253,255,255,255,253,255,255,255,253,255,255,255,254,255,255,255,255,255,255,255,0,0,0,0,3,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,248,255,255,255,248,255,255,255,249,255,255,255,252,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,244,255,255,255,246,255,255,255,248,255,255,255,0,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,8,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,252,255,255,255,253,255,255,255,253,255,255,255,253,255,255,255,253,255,255,255,254,255,255,255,0,0,0,0,2,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255,252,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,238,255,255,255,242,255,255,255,248,255,255,255,255,255,255,255,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,7,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,252,255,255,255,253,255,255,255,253,255,255,255,253,255,255,255,253,255,255,255,254,255,255,255,255,255,255,255,1,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255,252,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,236,255,255,255,238,255,255,255,242,255,255,255,248,255,255,255,255,255,255,255,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,7,0,0,0,224,255,255,255,224,255,255,255,224,255,255,255,224,255,255,255,228,255,255,255,232,255,255,255,234,255,255,255,240,255,255,255,244,255,255,255,250,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,253,255,255,255,255,255,255,255,0,0,0,0,222,255,255,255,222,255,255,255,222,255,255,255,222,255,255,255,226,255,255,255,232,255,255,255,232,255,255,255,238,255,255,255,242,255,255,255,244,255,255,255,244,255,255,255,244,255,255,255,244,255,255,255,246,255,255,255,246,255,255,255,247,255,255,255,251,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,236,255,255,255,238,255,255,255,242,255,255,255,248,255,255,255,255,255,255,255,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,7,0,0,0,224,255,255,255,224,255,255,255,224,255,255,255,224,255,255,255,228,255,255,255,232,255,255,255,232,255,255,255,238,255,255,255,242,255,255,255,248,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,251,255,255,255,254,255,255,255,0,0,0,0,222,255,255,255,222,255,255,255,222,255,255,255,222,255,255,255,226,255,255,255,230,255,255,255,230,255,255,255,232,255,255,255,234,255,255,255,237,255,255,255,237,255,255,255,237,255,255,255,237,255,255,255,238,255,255,255,239,255,255,255,240,255,255,255,244,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,236,255,255,255,238,255,255,255,242,255,255,255,248,255,255,255,255,255,255,255,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,7,0,0,0,224,255,255,255,224,255,255,255,224,255,255,255,224,255,255,255,228,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,238,255,255,255,242,255,255,255,244,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,248,255,255,255,250,255,255,255,254,255,255,255,222,255,255,255,222,255,255,255,222,255,255,255,222,255,255,255,226,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,236,255,255,255,240,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,234,255,255,255,236,255,255,255,241,255,255,255,246,255,255,255,248,255,255,255,254,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,7,0,0,0,220,255,255,255,220,255,255,255,220,255,255,255,220,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,236,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,242,255,255,255,244,255,255,255,246,255,255,255,249,255,255,255,220,255,255,255,220,255,255,255,220,255,255,255,220,255,255,255,222,255,255,255,226,255,255,255,228,255,255,255,230,255,255,255,232,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,236,255,255,255,228,255,255,255,228,255,255,255,228,255,255,255,228,255,255,255,228,255,255,255,228,255,255,255,228,255,255,255,236,255,255,255,242,255,255,255,248,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,254,255,255,255,2,0,0,0,218,255,255,255,218,255,255,255,218,255,255,255,218,255,255,255,220,255,255,255,222,255,255,255,222,255,255,255,226,255,255,255,232,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,238,255,255,255,240,255,255,255,244,255,255,255,246,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,218,255,255,255,221,255,255,255,221,255,255,255,221,255,255,255,221,255,255,255,221,255,255,255,221,255,255,255,221,255,255,255,221,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,228,255,255,255,236,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,244,255,255,255,246,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,221,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,236,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,252,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,10,0,0,0,10,0,0,0,12,0,0,0,20,0,0,0,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,246,255,255,255,254,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,6,0,0,0,15,0,0,0,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,246,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,254,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,248,255,255,255,2,0,0,0,2,0,0,0,2,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,8,0,0,0,10,0,0,0,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,242,255,255,255,250,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,6,0,0,0,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,242,255,255,255,248,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,254,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,248,255,255,255,252,255,255,255,0,0,0,0,2,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,8,0,0,0,10,0,0,0,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,252,255,255,255,254,255,255,255,254,255,255,255,254,255,255,255,254,255,255,255,0,0,0,0,1,0,0,0,4,0,0,0,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,252,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,248,255,255,255,0,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,4], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+107456); +/* memory initializer */ allocate([4,0,0,0,5,0,0,0,6,0,0,0,10,0,0,0,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,252,255,255,255,253,255,255,255,253,255,255,255,253,255,255,255,254,255,255,255,255,255,255,255,0,0,0,0,3,0,0,0,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255,252,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,248,255,255,255,0,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,8,0,0,0,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,252,255,255,255,253,255,255,255,253,255,255,255,253,255,255,255,253,255,255,255,254,255,255,255,0,0,0,0,2,0,0,0,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255,251,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,246,255,255,255,252,255,255,255,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,7,0,0,0,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,252,255,255,255,253,255,255,255,253,255,255,255,253,255,255,255,253,255,255,255,254,255,255,255,255,255,255,255,1,0,0,0,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255,249,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,246,255,255,255,252,255,255,255,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,7,0,0,0,234,255,255,255,234,255,255,255,234,255,255,255,234,255,255,255,234,255,255,255,234,255,255,255,234,255,255,255,240,255,255,255,244,255,255,255,250,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,253,255,255,255,255,255,255,255,0,0,0,0,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,238,255,255,255,242,255,255,255,244,255,255,255,244,255,255,255,244,255,255,255,244,255,255,255,246,255,255,255,246,255,255,255,247,255,255,255,248,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,246,255,255,255,252,255,255,255,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,7,0,0,0,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,238,255,255,255,242,255,255,255,248,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,251,255,255,255,254,255,255,255,0,0,0,0,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,238,255,255,255,240,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,243,255,255,255,243,255,255,255,244,255,255,255,246,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,246,255,255,255,252,255,255,255,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,7,0,0,0,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,238,255,255,255,242,255,255,255,246,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255,248,255,255,255,250,255,255,255,252,255,255,255,0,0,0,0,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,237,255,255,255,237,255,255,255,237,255,255,255,237,255,255,255,238,255,255,255,239,255,255,255,240,255,255,255,244,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,246,255,255,255,252,255,255,255,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,7,0,0,0,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,236,255,255,255,240,255,255,255,244,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,248,255,255,255,250,255,255,255,254,255,255,255,228,255,255,255,228,255,255,255,228,255,255,255,228,255,255,255,228,255,255,255,228,255,255,255,228,255,255,255,230,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,236,255,255,255,240,255,255,255,234,255,255,255,234,255,255,255,234,255,255,255,234,255,255,255,234,255,255,255,234,255,255,255,234,255,255,255,238,255,255,255,242,255,255,255,248,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,252,255,255,255,254,255,255,255,2,0,0,0,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,234,255,255,255,238,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,240,255,255,255,242,255,255,255,244,255,255,255,246,255,255,255,249,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,236,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,232,255,255,255,238,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,242,255,255,255,244,255,255,255,246,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,236,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,216,255,255,255,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,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,6,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,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,17,0,0,0,17,0,0,0,18,0,0,0,18,0,0,0,19,0,0,0,19,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,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,5,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,8,0,0,0,8,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,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,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,12,0,0,0,13,0,0,0,13,0,0,0,13,0,0,0,14,0,0,0,14,0,0,0,14,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,15,0,0,0,16,0,0,0,16,0,0,0,17,0,0,0,17,0,0,0,17,0,0,0,18,0,0,0,18,0,0,0,19,0,0,0,19,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,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,8,0,0,0,7,0,0,0,6,0,0,0,5,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,8,0,0,0,8,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,0,0,0,0,0,0,224,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,205,204,204,204,204,204,244,63,154,153,153,153,153,153,249,63,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,12,64,0,0,0,0,0,0,16,64,0,0,0,0,0,0,16,64,51,51,51,51,51,51,17,64,102,102,102,102,102,102,18,64,0,0,0,0,0,0,20,64,0,0,0,0,0,0,20,64,0,0,0,0,0,0,20,64,0,0,0,0,0,0,20,64,0,0,0,0,0,0,20,64,0,0,0,0,0,0,20,64,0,0,0,0,0,0,20,64,32,0,0,0,16,0,0,0,16,0,0,0,16,0,0,0,32,0,0,0,15,39,0,0,15,39,0,0,15,39,0,0,15,39,0,0,15,39,0,0,15,39,0,0,0,0,0,0,0,1,0,0,128,0,0,0,128,0,0,0,0,1,0,0,0,2,0,0,15,39,0,0,15,39,0,0,15,39,0,0,15,39,0,0,15,39,0,0,15,39,0,0,0,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,0,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,32,0,0,0,0,0,0,0,154,153,153,153,153,153,201,63,154,153,153,153,153,153,201,63,154,153,153,153,153,153,201,63,154,153,153,153,153,153,217,63,51,51,51,51,51,51,227,63,0,0,0,0,128,135,195,64,0,0,0,0,128,135,195,64,0,0,0,0,128,135,195,64,0,0,0,0,128,135,195,64,0,0,0,0,128,135,195,64,0,0,0,0,128,135,195,64,156,255,255,255,156,255,255,255,156,255,255,255,156,255,255,255,156,255,255,255,156,255,255,255,151,255,255,255,151,255,255,255,151,255,255,255,151,255,255,255,146,255,255,255,136,255,255,255,126,255,255,255,126,255,255,255,126,255,255,255,126,255,255,255,116,255,255,255,116,255,255,255,116,255,255,255,116,255,255,255,116,255,255,255,116,255,255,255,116,255,255,255,106,255,255,255,205,204,204,204,204,204,43,64,51,51,51,51,51,51,46,64,154,153,153,153,153,153,47,64,0,0,0,0,0,128,48,64,51,51,51,51,51,51,49,64,102,102,102,102,102,230,50,64,154,153,153,153,153,25,52,64,0,0,0,0,0,0,72,64,0,0,0,0,0,56,143,64,0,0,0,0,0,56,143,64,0,0,0,0,0,56,143,64,0,0,0,0,0,56,143,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,248,63,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,4,64,154,153,153,153,153,153,5,64,0,0,0,0,0,0,8,64,154,153,153,153,153,153,13,64,0,0,0,0,0,0,16,64,0,0,0,0,0,0,16,64,248,148,2,0,40,149,2,0,88,149,2,0,0,0,0,0,8,181,0,0,224,217,1,0,8,181,0,0,32,218,1,0,8,181,0,0,96,218,1,0,8,181,0,0,160,218,1,0,8,181,0,0,224,218,1,0,8,181,0,0,32,219,1,0,8,181,0,0,96,219,1,0,8,181,0,0,160,219,1,0,8,181,0,0,224,219,1,0,8,181,0,0,32,220,1,0,8,181,0,0,96,220,1,0,1,0,0,0,0,0,0,0,32,0,0,0,240,233,0,0,232,133,2,0,232,133,2,0,16,134,2,0,16,134,2,0,1,0,0,0,0,0,0,0,32,0,0,0,240,233,0,0,208,134,2,0,208,134,2,0,16,134,2,0,16,134,2,0,1,0,0,0,0,0,0,0,16,0,0,0,240,233,0,0,216,118,2,0,216,118,2,0,0,119,2,0,0,119,2,0,1,0,0,0,0,0,0,0,32,0,0,0,240,233,0,0,192,119,2,0,192,119,2,0,0,119,2,0,0,119,2,0,1,0,0,0,0,0,0,0,16,0,0,0,240,233,0,0,0,106,2,0,0,106,2,0,40,106,2,0,40,106,2,0,1,0,0,0,0,0,0,0,32,0,0,0,240,233,0,0,232,106,2,0,232,106,2,0,40,106,2,0,40,106,2,0,1,0,0,0,0,0,0,0,16,0,0,0,240,233,0,0,0,93,2,0,0,93,2,0,40,93,2,0,40,93,2,0,1,0,0,0,0,0,0,0,32,0,0,0,240,233,0,0,232,93,2,0,232,93,2,0,40,93,2,0,40,93,2,0,1,0,0,0,0,0,0,0,16,0,0,0,240,233,0,0,56,79,2,0,56,79,2,0,96,79,2,0,96,79,2,0,1,0,0,0,0,0,0,0,32,0,0,0,240,233,0,0,32,80,2,0,32,80,2,0,96,79,2,0,96,79,2,0,1,0,0,0,0,0,0,0,16,0,0,0,240,233,0,0,8,65,2,0,8,65,2,0,48,65,2,0,48,65,2,0,1,0,0,0,0,0,0,0,32,0,0,0,240,233,0,0,240,65,2,0,240,65,2,0,48,65,2,0,48,65,2,0,1,0,0,0,0,0,0,0,16,0,0,0,88,206,0,0,56,48,2,0,56,48,2,0,96,48,2,0,96,48,2,0,1,0,0,0,0,0,0,0,32,0,0,0,88,206,0,0,32,49,2,0,32,49,2,0,96,48,2,0,96,48,2,0,1,0,0,0,0,0,0,0,16,0,0,0,88,206,0,0,40,31,2,0,40,31,2,0,80,31,2,0,80,31,2,0,1,0,0,0,0,0,0,0,32,0,0,0,88,206,0,0,16,32,2,0,16,32,2,0,80,31,2,0,80,31,2,0,1,0,0,0,0,0,0,0,16,0,0,0,88,206,0,0,64,15,2,0,64,15,2,0,104,15,2,0,104,15,2,0,1,0,0,0,0,0,0,0,32,0,0,0,88,206,0,0,40,16,2,0,40,16,2,0,104,15,2,0,104,15,2,0,1,0,0,0,0,0,0,0,16,0,0,0,160,220,1,0,208,251,1,0,208,251,1,0,248,251,1,0,248,251,1,0,1,0,0,0,0,0,0,0,32,0,0,0,160,220,1,0,184,252,1,0,184,252,1,0,248,251,1,0,248,251,1,0,1,0,0,0,0,0,0,0,16,0,0,0,160,220,1,0,184,231,1,0,184,231,1,0,224,231,1,0,224,231,1,0,1,0,0,0,0,0,0,0,32,0,0,0,160,220,1,0,160,232,1,0,160,232,1,0,224,231,1,0,224,231,1,0,0,0,0,0,255,255,255,255,255,255,255,255,10,0,0,0,255,255,255,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+117696); +/* memory initializer */ allocate([1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,16,0,0,0,32,0,0,0,71,0,0,0,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,100,0,0,0,104,251,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,233,1,0,0,0,0,0,0,0,0,0,0,0,0,0,88,233,1,0,0,0,0,0,0,0,0,0,0,0,0,0,128,233,1,0,0,0,0,0,0,0,0,0,0,0,0,0,168,233,1,0,0,0,0,0,208,233,1,0,248,233,1,0,0,0,0,0,0,0,0,0,32,234,1,0,72,234,1,0,0,0,0,0,0,0,0,0,112,234,1,0,152,234,1,0,0,0,0,0,0,0,0,0,192,234,1,0,232,234,1,0,0,0,0,0,0,0,0,0,16,235,1,0,56,235,1,0,96,235,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,0,0,0,2,0,0,0,100,0,0,0,200,232,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,3,9,13,13,14,15,14,14,15,15,5,5,9,10,12,12,13,14,16,15,10,6,6,6,8,11,12,13,16,15,11,7,5,3,5,8,10,12,15,15,10,10,7,4,3,5,8,10,12,12,12,12,9,7,5,4,6,8,10,13,13,12,11,9,7,5,5,6,9,12,14,12,12,10,8,6,6,6,7,11,13,12,14,13,10,8,7,7,7,10,11,11,12,13,12,11,10,8,8,9,0,0,0,0,4,0,0,0,81,0,0,0,0,251,1,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,88,251,1,0,0,0,0,0,4,0,0,0,113,2,0,0,112,248,1,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,232,250,1,0,0,0,0,0,2,0,0,0,81,0,0,0,240,247,1,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,72,248,1,0,0,0,0,0,2,0,0,0,33,1,0,0,128,246,1,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,168,247,1,0,0,0,0,0,4,0,0,0,81,0,0,0,24,246,1,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,112,246,1,0,0,0,0,0,2,0,0,0,121,0,0,0,104,245,1,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,232,245,1,0,0,0,0,0,2,0,0,0,169,0,0,0,128,244,1,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,48,245,1,0,0,0,0,0,2,0,0,0,25,0,0,0,72,244,1,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,104,244,1,0,0,0,0,0,2,0,0,0,169,0,0,0,96,243,1,0,1,0,0,0,0,128,208,224,0,0,118,96,4,0,0,0,0,0,0,0,16,244,1,0,0,0,0,0,2,0,0,0,121,0,0,0,176,242,1,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,48,243,1,0,0,0,0,0,2,0,0,0,225,0,0,0,136,241,1,0,1,0,0,0,0,96,242,224,0,0,149,96,4,0,0,0,0,0,0,0,112,242,1,0,0,0,0,0,2,0,0,0,185,1,0,0,112,239,1,0,1,0,0,0,0,0,116,224,0,0,16,96,5,0,0,0,0,0,0,0,48,241,1,0,0,0,0,0,2,0,0,0,225,0,0,0,72,238,1,0,1,0,0,0,0,117,153,225,0,24,61,97,4,0,0,0,0,0,0,0,48,239,1,0,0,0,0,0,2,0,0,0,105,1,0,0,136,236,1,0,1,0,0,0,0,144,27,225,0,128,184,96,5,0,0,0,0,0,0,0,248,237,1,0,0,0,0,0,1,0,0,0,49,0,0,0,136,235,1,0,1,0,0,0,0,0,152,224,0,0,16,96,6,0,0,0,0,0,0,0,192,235,1,0,0,0,0,0,2,4,4,5,4,5,5,5,5,6,6,6,6,6,6,6,6,6,6,7,6,7,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,24,0,0,0,23,0,0,0,25,0,0,0,22,0,0,0,26,0,0,0,21,0,0,0,27,0,0,0,20,0,0,0,28,0,0,0,19,0,0,0,29,0,0,0,18,0,0,0,30,0,0,0,17,0,0,0,31,0,0,0,16,0,0,0,32,0,0,0,15,0,0,0,33,0,0,0,14,0,0,0,34,0,0,0,13,0,0,0,35,0,0,0,12,0,0,0,36,0,0,0,11,0,0,0,37,0,0,0,10,0,0,0,38,0,0,0,9,0,0,0,39,0,0,0,8,0,0,0,40,0,0,0,7,0,0,0,41,0,0,0,6,0,0,0,42,0,0,0,5,0,0,0,43,0,0,0,4,0,0,0,44,0,0,0,3,0,0,0,45,0,0,0,2,0,0,0,46,0,0,0,1,0,0,0,47,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,1,4,4,7,7,8,7,8,7,9,8,10,9,10,10,11,11,12,12,4,7,6,9,9,10,9,9,8,10,10,11,10,12,10,13,12,13,12,4,6,6,9,9,9,9,9,9,10,10,11,11,11,12,12,12,12,12,7,9,8,11,10,10,10,11,10,11,11,12,12,13,12,13,13,13,13,7,8,9,10,10,11,11,10,10,11,11,11,12,13,13,13,13,14,14,8,9,9,11,11,12,11,12,12,13,12,12,13,13,14,15,14,14,14,8,9,9,10,11,11,11,12,12,13,12,13,13,14,14,14,15,14,16,8,9,9,11,10,12,12,12,12,15,13,13,13,17,14,15,15,15,14,8,9,9,10,11,11,12,13,12,13,13,13,14,15,14,14,14,16,15,9,11,10,12,12,13,13,13,13,14,14,16,15,14,14,14,15,15,17,9,10,10,11,11,13,13,13,14,14,13,15,14,15,14,15,16,15,16,10,11,11,12,12,13,14,15,14,15,14,14,15,17,16,15,15,17,17,10,12,11,13,12,14,14,13,14,15,15,15,15,16,17,17,15,17,16,11,12,12,14,13,15,14,15,16,17,15,17,15,17,15,15,16,17,15,11,11,12,14,14,14,14,14,15,15,16,15,17,17,17,16,17,16,15,12,12,13,14,14,14,15,14,15,15,16,16,17,16,17,15,17,17,16,12,14,12,14,14,15,15,15,14,14,16,16,16,15,16,16,15,17,15,12,13,13,14,15,14,15,17,15,17,16,17,17,17,16,17,16,17,17,12,13,13,14,16,15,15,15,16,15,17,17,15,17,15,17,16,16,17,0,0,0,0,0,0,0,9,0,0,0,8,0,0,0,10,0,0,0,7,0,0,0,11,0,0,0,6,0,0,0,12,0,0,0,5,0,0,0,13,0,0,0,4,0,0,0,14,0,0,0,3,0,0,0,15,0,0,0,2,0,0,0,16,0,0,0,1,0,0,0,17,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,1,3,3,11,11,11,11,11,11,11,11,11,11,11,11,4,10,11,11,11,11,11,11,11,11,11,11,11,11,11,4,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,4,6,6,7,7,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,6,6,6,7,7,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,6,6,6,7,7,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,7,7,7,8,8,8,8,9,8,9,9,9,9,9,9,9,9,9,9,9,9,7,7,7,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,10,9,10,10,10,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,8,8,8,9,9,9,9,9,9,9,9,9,9,10,9,10,9,10,10,10,10,8,8,8,9,9,9,9,9,9,9,9,9,9,10,10,9,10,10,10,10,10,9,9,9,9,9,9,9,9,9,9,9,10,9,10,10,10,10,10,10,10,10,8,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,9,10,9,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,10,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,10,9,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,10,0,0,0,9,0,0,0,11,0,0,0,8,0,0,0,12,0,0,0,7,0,0,0,13,0,0,0,6,0,0,0,14,0,0,0,5,0,0,0,15,0,0,0,4,0,0,0,16,0,0,0,3,0,0,0,17,0,0,0,2,0,0,0,18,0,0,0,1,0,0,0,19,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,1,4,4,7,7,8,8,8,8,9,9,10,9,11,10,4,6,6,8,8,9,9,9,9,10,10,11,10,12,10,4,6,6,8,8,9,10,9,9,10,10,11,11,12,12,7,8,8,10,10,11,11,10,10,11,11,12,12,13,12,7,8,8,10,10,11,11,10,10,11,11,12,12,12,13,8,10,9,11,11,12,12,11,11,12,12,13,13,14,13,8,9,9,11,11,12,12,11,12,12,12,13,13,14,13,8,9,9,10,10,12,11,13,12,13,13,14,13,15,14,8,9,9,10,10,11,12,12,12,13,13,13,14,14,14,9,10,10,12,11,13,12,13,13,14,13,14,14,14,15,9,10,10,11,12,12,12,13,13,14,14,14,15,15,15,10,11,11,12,12,13,13,14,14,14,14,15,14,16,15,10,11,11,12,12,13,13,13,14,14,14,14,14,15,16,11,12,12,13,13,14,13,14,14,15,14,15,16,16,16,11,12,12,13,13,14,13,14,14,15,15,15,16,15,15,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,5,6,6,7,7,7,7,7,7,7,7,6,6,6,7,7,7,7,7,7,7,7,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,7,7,7,7,7,7,7,7,7,7,7,7,8,8,7,7,7,7,7,7,7,8,7,8,8,7,7,7,7,7,7,7,8,8,8,8,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,5,6,6,7,7,8,9,10,10,11,11,5,6,6,7,7,8,8,9,9,10,10,11,11,5,6,6,7,7,8,8,9,9,10,10,11,11,6,7,7,8,8,9,9,10,10,11,11,12,12,6,7,7,8,8,9,9,10,10,11,11,12,12,8,8,8,9,9,10,10,11,11,12,12,13,13,8,8,8,9,9,10,10,11,11,12,12,13,13,9,9,9,10,10,11,11,12,12,13,13,13,13,9,9,9,10,10,11,11,12,12,13,13,14,14,10,10,10,11,11,12,12,13,13,14,13,15,14,10,10,10,11,11,12,12,13,13,14,14,14,14,11,11,12,12,12,13,13,14,14,14,14,15,15,11,11,12,12,12,13,13,14,14,14,15,15,15,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,4,4,4,5,5,4,5,4,5,5,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,4,4,6,6,7,7,8,8,9,9,10,10,4,6,5,7,7,8,8,8,8,9,9,10,10,4,5,6,7,7,8,8,8,8,9,9,10,10,6,7,7,8,8,8,8,9,9,10,10,10,10,6,7,7,8,8,8,8,9,9,10,10,10,10,7,8,8,8,8,9,9,9,9,10,10,11,11,7,8,8,8,8,9,9,9,9,10,10,11,11,8,8,8,9,9,9,9,9,10,10,10,11,11,8,8,8,9,9,9,9,10,9,10,10,11,11,9,9,9,10,10,10,10,10,11,11,11,11,12,9,9,9,10,10,10,10,10,10,11,10,12,11,10,10,10,10,10,11,11,11,11,11,12,12,12,10,10,10,10,10,11,11,11,11,12,11,12,12,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,5,5,5,6,6,7,7,7,7,7,7,5,6,6,6,6,7,7,7,7,8,7,5,6,6,6,6,7,7,7,7,7,7,6,6,6,7,7,7,7,7,7,8,8,6,6,6,7,7,7,7,7,7,8,8,7,7,7,7,7,8,7,8,8,8,8,7,7,7,7,7,7,8,8,8,8,8,7,7,7,8,7,8,8,8,8,8,8,7,7,7,7,8,8,8,8,8,8,8,7,8,7,8,8,8,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,5,7,7,5,7,7,5,8,8,8,9,9,7,9,9,5,8,8,7,9,9,8,9,9,5,8,8,8,10,10,8,10,10,7,10,10,9,10,12,9,11,11,7,10,10,9,11,10,9,11,12,5,8,8,8,10,10,8,10,10,7,10,10,9,12,11,9,10,11,7,10,10,9,11,11,10,12,10,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,5,5,6,6,7,7,8,8,8,8,9,9,10,10,11,11,5,5,5,6,6,7,7,8,8,8,8,9,9,10,10,11,11,5,5,5,6,6,7,7,8,8,8,8,9,9,10,10,11,11,6,6,6,7,6,7,7,8,8,9,9,10,10,11,11,12,11,6,6,6,6,7,7,7,8,8,9,9,10,10,11,11,11,12,7,7,7,7,7,8,8,9,9,9,9,10,10,11,11,12,12,7,7,7,7,7,8,8,9,9,9,9,10,10,11,11,12,12,8,8,8,8,8,9,8,10,9,10,10,11,10,12,11,13,12,8,8,8,8,8,9,9,9,10,10,10,10,11,11,12,12,12,8,8,8,9,9,9,9,10,10,11,10,12,11,12,12,13,12,8,8,8,9,9,9,9,10,10,10,11,11,11,12,12,12,13,9,9,9,10,10,10,10,11,10,11,11,12,11,13,12,13,13,9,9,10,10,10,10,10,10,11,11,11,11,12,12,13,13,13,10,11,10,11,11,11,11,12,11,12,12,13,12,13,13,14,13,10,10,10,11,11,11,11,11,12,12,12,12,13,13,13,13,14,11,11,11,12,11,12,12,12,12,13,13,13,13,14,13,14,14,11,11,11,11,12,12,12,12,12,12,13,13,13,13,14,14,14,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,3,4,4,5,5,7,7,8,8,4,5,5,6,6,7,7,9,9,4,4,5,6,6,7,7,9,9,5,6,6,7,7,8,8,9,9,5,6,6,7,7,8,8,9,9,7,7,7,8,8,9,9,10,10,7,7,7,8,8,9,9,10,10,8,9,9,10,9,10,10,11,11,8,9,9,9,10,10,10,11,11,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,3,5,5,8,8,5,7,7,9,9,6,7,7,9,9,8,9,9,11,10,8,9,9,11,11,6,7,7,9,9,7,8,8,10,10,7,8,8,9,10,9,10,10,11,11,9,9,10,11,11,6,7,7,9,9,7,8,8,10,9,7,8,8,10,10,9,10,9,11,11,9,10,10,11,11,8,9,9,11,11,9,10,10,12,11,9,10,10,11,12,11,11,11,13,13,11,11,11,12,13,8,9,9,11,11,9,10,10,11,11,9,10,10,12,11,11,12,11,13,12,11,11,12,13,13,6,7,7,9,9,7,8,8,10,10,7,8,8,10,10,9,10,10,12,11,9,10,10,11,12,7,8,8,10,10,8,9,9,11,11,8,9,9,10,10,10,11,11,12,12,10,10,11,12,12,7,8,8,10,10,8,9,8,10,10,8,9,9,10,10,10,11,10,12,11,10,10,11,12,12,9,10,10,11,12,10,11,11,12,12,10,11,10,12,12,12,12,12,13,13,11,12,12,13,13,9,10,10,11,11,9,10,10,12,12,10,11,11,12,13,11,12,11,13,12,12,12,12,13,14,6,7,7,9,9,7,8,8,10,10,7,8,8,10,10,9,10,10,11,11,9,10,10,11,12,7,8,8,10,10,8,9,9,11,10,8,8,9,10,10,10,11,10,12,12,10,10,11,11,12,7,8,8,10,10,8,9,9,10,10,8,9,9,10,10,10,11,10,12,12,10,11,10,12,12,9,10,10,12,11,10,11,11,12,12,9,10,10,12,12,12,12,12,13,13,11,11,12,12,14,9,10,10,11,12,10,11,11,12,12,10,11,11,12,12,11,12,12,14,14,12,12,12,13,13,8,9,9,11,11,9,10,10,12,11,9,10,10,12,12,11,12,11,13,13,11,11,12,13,13,9,10,10,12,12,10,11,11,12,12,10,11,11,12,12,12,12,12,14,14,12,12,12,13,13,9,10,10,12,11,10,11,10,12,12,10,11,11,12,12,11,12,12,14,13,12,12,12,13,14,11,12,11,13,13,11,12,12,13,13,12,12,12,14,14,13,13,13,13,15,13,13,14,15,15,11,11,11,13,13,11,12,11,13,13,11,12,12,13,13,12,13,12,15,13,13,13,14,14,15,8,9,9,11,11,9,10,10,11,12,9,10,10,11,12,11,12,11,13,13,11,12,12,13,13,9,10,10,11,12,10,11,10,12,12,10,10,11,12,13,12,12,12,14,13,11,12,12,13,14,9,10,10,12,12,10,11,11,12,12,10,11,11,12,12,12,12,12,14,13,12,12,12,14,13,11,11,11,13,13,11,12,12,14,13,11,11,12,13,13,13,13,13,15,14,12,12,13,13,15,11,12,12,13,13,12,12,12,13,14,11,12,12,13,13,13,13,14,14,15,13,13,13,14,14,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,5,5,7,7,5,7,7,5,7,7,7,9,9,7,9,9,5,7,7,7,9,9,7,9,9,5,7,7,7,9,9,7,9,9,8,9,9,9,10,11,9,11,11,7,9,9,9,11,10,9,11,11,5,7,7,7,9,9,8,9,10,7,9,9,9,11,11,9,10,11,7,9,10,9,11,11,9,11,10,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,9,16,18,18,17,17,17,17,17,17,5,8,11,12,11,12,17,17,16,16,6,6,8,8,9,10,14,15,16,16,6,7,7,4,6,9,13,16,16,16,6,6,7,4,5,8,11,15,17,16,7,6,7,6,6,8,9,10,14,16,11,8,8,7,6,6,3,4,10,15,14,12,12,10,5,6,3,3,8,13,15,17,15,11,6,8,6,6,9,14,17,15,15,12,8,10,9,9,12,15,0,0,0,0,2,0,0,0,100,0,0,0,216,14,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,72,253,1,0,0,0,0,0,0,0,0,0,0,0,0,0,112,253,1,0,0,0,0,0,0,0,0,0,0,0,0,0,152,253,1,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,1,0,0,0,0,0,232,253,1,0,16,254,1,0,0,0,0,0,0,0,0,0,56,254,1,0,96,254,1,0,0,0,0,0,0,0,0,0,136,254,1,0,176,254,1,0,0,0,0,0,0,0,0,0,216,254,1,0,0,255,1,0,0,0,0,0,0,0,0,0,40,255,1,0,80,255,1,0,120,255,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,0,0,0,2,0,0,0,100,0,0,0,224,252,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,3,9,13,14,14,15,14,14,15,15,5,4,6,8,10,12,12,14,15,15,9,5,4,5,8,10,11,13,16,16,10,7,4,3,5,7,9,11,13,13,10,9,7,4,4,6,8,10,12,14,13,11,9,6,5,5,6,8,12,14,13,11,10,8,7,6,6,7,10,14,13,11,12,10,8,7,6,6,9,13,12,11,14,12,11,9,8,7,9,11,11,12,14,13,14,11,10,8,8,9,0,0,0,0,4,0,0,0,81,0,0,0,112,14,2,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,200,14,2,0,0,0,0,0,4,0,0,0,113,2,0,0,224,11,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,88,14,2,0,0,0,0,0,2,0,0,0,81,0,0,0,96,11,2,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,184,11,2,0,0,0,0,0,2,0,0,0,33,1,0,0,240,9,2,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,24,11,2,0,0,0,0,0,4,0,0,0,81,0,0,0,136,9,2,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,224,9,2,0,0,0,0,0,2,0,0,0,121,0,0,0,216,8,2,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,88,9,2,0,0,0,0,0,2,0,0,0,169,0,0,0,240,7,2,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,160,8,2,0,0,0,0,0,2,0,0,0,25,0,0,0,184,7,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,216,7,2,0,0,0,0,0,2,0,0,0,169,0,0,0,208,6,2,0,1,0,0,0,0,128,208,224,0,0,118,96,4,0,0,0,0,0,0,0,128,7,2,0,0,0,0,0,2,0,0,0,121,0,0,0,32,6,2,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,160,6,2,0,0,0,0,0,2,0,0,0,225,0,0,0,248,4,2,0,1,0,0,0,0,96,242,224,0,0,149,96,4,0,0,0,0,0,0,0,224,5,2,0,0,0,0,0,2,0,0,0,185,1,0,0,224,2,2,0,1,0,0,0,0,0,116,224,0,0,16,96,5,0,0,0,0,0,0,0,160,4,2,0,0,0,0,0,2,0,0,0,81,0,0,0,96,2,2,0,1,0,0,0,0,24,125,225,0,24,61,97,4,0,0,0,0,0,0,0,184,2,2,0,0,0,0,0,2,0,0,0,105,1,0,0,160,0,2,0,1,0,0,0,0,144,27,225,0,128,184,96,5,0,0,0,0,0,0,0,16,2,2,0,0,0,0,0,1,0,0,0,49,0,0,0,160,255,1,0,1,0,0,0,0,0,152,224,0,0,16,96,6,0,0,0,0,0,0,0,216,255,1,0,0,0,0,0,2,3,4,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,24,0,0,0,23,0,0,0,25,0,0,0,22,0,0,0,26,0,0,0,21,0,0,0,27,0,0,0,20,0,0,0,28,0,0,0,19,0,0,0,29,0,0,0,18,0,0,0,30,0,0,0,17,0,0,0,31,0,0,0,16,0,0,0,32,0,0,0,15,0,0,0,33,0,0,0,14,0,0,0,34,0,0,0,13,0,0,0,35,0,0,0,12,0,0,0,36,0,0,0,11,0,0,0,37,0,0,0,10,0,0,0,38,0,0,0,9,0,0,0,39,0,0,0,8,0,0,0,40,0,0,0,7,0,0,0,41,0,0,0,6,0,0,0,42,0,0,0,5,0,0,0,43,0,0,0,4,0,0,0,44,0,0,0,3,0,0,0,45,0,0,0,2,0,0,0,46,0,0,0,1,0,0,0,47,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,1,4,4,7,7,8,7,8,6,9,7,10,8,11,10,11,11,11,11,4,7,6,9,9,10,9,9,9,10,10,11,10,11,10,11,11,13,11,4,7,7,9,9,9,9,9,9,10,10,11,10,11,11,11,12,11,12,7,9,8,11,11,11,11,10,10,11,11,12,12,12,12,12,12,14,13,7,8,9,10,11,11,11,10,10,11,11,11,11,12,12,14,12,13,14,8,9,9,11,11,11,11,11,11,12,12,14,12,15,14,14,14,15,14,8,9,9,11,11,11,11,12,11,12,12,13,13,13,13,13,13,14,14,8,9,9,11,10,12,11,12,12,13,13,13,13,15,14,14,14,16,16,8,9,9,10,11,11,12,12,12,13,13,13,14,14,14,15,16,15,15,9,10,10,11,12,12,13,13,13,14,14,16,14,14,16,16,16,16,15,9,10,10,11,11,12,13,13,14,15,14,16,14,15,16,16,16,16,15,10,11,11,12,13,13,14,15,15,15,15,15,16,15,16,15,16,15,15,10,11,11,13,13,14,13,13,15,14,15,15,16,15,15,15,16,15,16,10,12,12,14,14,14,14,14,16,16,15,15,15,16,16,16,16,16,16,11,12,12,14,14,14,14,15,15,16,15,16,15,16,15,16,16,16,16,12,12,13,14,14,15,16,16,16,16,16,16,15,16,16,16,16,16,16,12,13,13,14,14,14,14,15,16,15,16,16,16,16,16,16,16,16,16,12,13,14,14,14,16,15,16,15,16,16,16,16,16,16,16,16,16,16,12,14,13,14,15,15,15,16,15,16,16,15,16,16,16,16,16,16,16,0,0,0,0,0,0,0,9,0,0,0,8,0,0,0,10,0,0,0,7,0,0,0,11,0,0,0,6,0,0,0,12,0,0,0,5,0,0,0,13,0,0,0,4,0,0,0,14,0,0,0,3,0,0,0,15,0,0,0,2,0,0,0,16,0,0,0,1,0,0,0,17,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,1,3,3,9,9,9,9,9,9,4,9,9,9,9,9,9,9,9,5,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,8,8,8,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,4,6,6,7,7,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,6,6,6,7,7,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,5,6,6,7,7,8,8,9,8,9,9,9,9,9,9,9,9,9,9,9,9,7,7,7,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,7,7,7,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,10,10,9,10,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,10,9,10,10,9,10,8,9,8,9,9,9,9,9,9,9,9,10,9,10,10,10,10,10,10,10,10,8,9,8,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,9,10,10,9,9,9,9,9,9,9,9,9,9,9,10,9,10,10,10,10,10,10,10,10,9,9,9,9,9,9,9,9,9,9,9,10,9,10,10,10,10,10,10,10,10,9,9,9,9,9,9,9,10,9,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,10,9,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,10,0,0,0,9,0,0,0,11,0,0,0,8,0,0,0,12,0,0,0,7,0,0,0,13,0,0,0,6,0,0,0,14,0,0,0,5,0,0,0,15,0,0,0,4,0,0,0,16,0,0,0,3,0,0,0,17,0,0,0,2,0,0,0,18,0,0,0,1,0,0,0,19,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,1,4,4,7,7,8,8,8,7,9,8,10,9,11,10,4,6,6,8,8,10,9,9,9,10,10,11,10,12,10,4,6,6,8,8,10,10,9,9,10,10,11,11,11,12,7,8,8,10,10,11,11,11,10,12,11,12,12,13,11,7,8,8,10,10,11,11,10,10,11,11,12,12,13,13,8,10,10,11,11,12,11,12,11,13,12,13,12,14,13,8,10,9,11,11,12,12,12,12,12,12,13,13,14,13,8,9,9,11,10,12,11,13,12,13,13,14,13,14,13,8,9,9,10,11,12,12,12,12,13,13,14,15,14,14,9,10,10,12,11,13,12,13,13,14,13,14,14,14,14,9,10,10,12,12,12,12,13,13,14,14,14,15,14,14,10,11,11,13,12,13,12,14,14,14,14,14,14,15,15,10,11,11,12,12,13,13,14,14,14,15,15,14,16,15,11,12,12,13,12,14,14,14,13,15,14,15,15,15,17,11,12,12,13,13,14,14,14,15,15,14,15,15,14,17,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,4,5,5,6,6,7,7,7,7,7,7,5,6,6,7,7,7,7,7,7,7,7,5,6,6,7,7,7,7,7,7,7,7,6,7,7,7,7,7,7,7,7,8,8,6,7,7,7,7,7,7,7,7,7,8,7,7,7,7,7,7,7,8,8,8,8,7,7,7,7,7,7,7,8,8,8,8,7,7,7,8,7,8,8,8,8,8,8,7,7,7,7,7,8,8,8,8,8,8,7,7,7,8,8,8,8,8,8,8,8,7,7,7,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,5,6,6,7,7,8,8,10,10,11,11,5,6,6,7,7,8,8,9,9,11,10,12,11,5,6,6,7,7,8,8,9,9,10,11,11,12,6,7,7,8,8,9,9,10,10,11,11,12,12,6,7,7,8,8,9,9,10,10,11,12,13,12,7,8,8,9,9,10,10,11,11,12,12,13,13,8,8,8,9,9,10,10,11,11,12,12,13,13,9,9,9,10,10,11,11,12,12,13,13,14,14,9,9,9,10,10,11,11,12,12,13,13,14,14,10,11,11,12,11,13,12,13,13,14,14,15,15,10,11,11,11,12,12,13,13,14,14,14,15,15,11,12,12,13,13,14,13,15,14,15,15,16,15,11,11,12,13,13,13,14,14,14,15,15,15,16,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,3,4,4,5,5,4,5,5,5,5,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,4,4,6,6,7,7,8,8,9,9,10,10,4,6,5,7,7,8,8,8,8,9,9,10,10,4,6,6,7,7,8,8,8,8,9,9,10,10,6,7,7,7,8,8,8,8,9,9,10,10,10,6,7,7,8,8,8,8,9,8,10,9,11,10,7,8,8,8,8,8,9,9,9,10,10,11,11,7,8,8,8,8,9,8,9,9,10,10,11,11,8,8,8,9,9,9,9,9,10,10,10,11,11,8,8,8,9,9,9,9,10,9,10,10,11,11,9,9,9,9,10,10,10,10,10,10,11,11,12,9,9,9,10,9,10,10,10,10,11,10,12,11,10,10,10,10,10,11,11,11,11,11,12,12,12,10,10,10,10,11,11,11,11,11,12,11,12,12,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,4,5,5,6,6,7,7,7,7,8,8,5,5,5,6,6,7,7,8,8,8,8,5,5,5,6,6,7,7,7,8,8,8,6,6,6,7,7,7,7,8,8,8,8,6,6,6,7,7,7,7,8,8,8,8,7,7,7,7,7,8,8,8,8,8,8,7,7,7,7,7,8,8,8,8,8,8,7,8,7,8,8,8,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,8,8,8,8,8,8,8,8,8,9,9,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,5,7,7,5,7,7,5,8,8,8,9,9,7,9,9,5,8,8,7,9,9,8,9,9,5,8,8,8,10,10,8,10,10,7,10,10,9,10,12,9,12,11,7,10,10,9,11,10,9,11,12,5,8,8,8,10,10,8,10,10,7,10,10,9,11,11,9,10,11,7,10,10,9,11,11,10,12,10,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,4,4,6,6,7,7,8,8,8,8,10,10,11,11,11,11,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,6,6,6,7,7,8,8,9,9,9,9,10,10,11,11,12,12,6,6,6,7,7,8,8,9,9,9,9,10,10,11,11,12,12,7,7,7,8,8,9,8,10,9,10,9,11,10,12,11,13,12,7,7,7,8,8,8,9,9,10,9,10,10,11,11,12,12,13,8,8,8,9,9,9,9,10,10,11,10,11,11,12,12,13,13,8,8,8,9,9,9,10,10,10,10,11,11,11,12,12,12,13,8,9,9,9,9,10,9,11,10,11,11,12,11,13,12,13,13,8,9,9,9,9,9,10,10,11,11,11,11,12,12,13,13,13,10,10,10,10,10,11,10,11,11,12,11,13,12,13,13,14,13,10,10,10,10,10,10,11,11,11,11,12,12,13,13,13,13,14,11,11,11,11,11,12,11,12,12,13,12,13,13,14,13,14,14,11,11,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,11,12,12,12,12,13,12,13,12,13,13,14,13,14,14,14,14,11,12,12,12,12,12,12,13,13,13,13,13,14,14,14,14,14,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,3,4,4,5,5,7,7,9,9,4,5,4,6,6,7,7,9,9,4,4,5,6,6,7,7,9,9,5,6,6,7,7,8,8,10,10,6,6,6,7,7,8,8,10,10,7,7,7,8,8,9,9,11,10,7,7,7,8,8,9,9,10,11,9,9,9,10,10,11,10,12,11,9,9,9,9,10,11,11,11,12,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,4,5,5,8,8,5,7,6,9,9,5,6,7,9,9,8,9,9,11,11,8,9,9,11,11,5,7,7,9,9,7,8,8,10,10,7,8,8,10,10,9,10,10,12,12,9,10,10,11,12,5,7,7,9,9,7,8,7,10,10,7,8,8,10,10,9,10,9,12,11,9,10,10,12,12,8,9,9,12,11,9,10,10,12,12,9,10,10,12,12,11,12,12,14,14,11,11,12,13,14,8,9,9,11,11,9,10,10,12,12,9,10,10,12,12,11,12,11,13,13,11,12,12,14,14,5,7,7,9,9,7,8,8,10,10,7,8,8,10,10,9,10,10,12,12,9,10,10,11,12,7,8,8,10,10,8,9,9,11,11,8,9,9,11,11,10,11,11,12,13,10,11,11,12,13,6,8,8,10,10,8,9,8,11,10,8,9,9,11,11,10,11,10,13,12,10,11,11,13,13,9,10,10,12,12,10,11,11,13,13,10,11,11,13,13,12,12,13,13,14,12,13,13,14,14,9,10,10,12,12,10,11,10,13,12,10,11,11,13,13,11,13,12,14,13,12,13,13,14,14,5,7,7,9,9,7,8,8,10,10,7,8,8,10,10,9,10,10,12,12,9,10,10,12,12,7,8,8,10,10,8,9,9,11,11,8,8,9,10,11,10,11,11,13,13,10,10,11,12,13,7,8,8,10,10,8,9,9,11,11,8,9,9,11,11,10,11,11,13,13,10,11,11,13,12,9,10,10,12,12,10,11,11,13,13,10,10,11,12,13,12,13,13,14,14,12,12,13,13,14,9,10,10,12,12,10,11,11,13,13,10,11,11,13,13,12,13,13,15,14,12,13,13,14,13,8,9,9,11,11,9,10,10,12,12,9,10,10,12,12,12,12,12,14,13,11,12,12,14,14,9,10,10,12,12,10,11,11,13,13,10,11,11,13,13,12,13,13,14,15,12,13,13,14,15,9,10,10,12,12,10,11,10,13,12,10,11,11,13,13,12,13,12,15,14,12,13,13,14,15,11,12,12,14,14,12,13,13,14,14,12,13,13,15,14,14,14,14,14,16,14,14,15,16,16,11], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+124340); +/* memory initializer */ allocate([12,12,14,14,11,12,12,14,14,12,13,13,14,15,13,14,13,16,14,14,14,14,16,16,8,9,9,11,11,9,10,10,12,12,9,10,10,12,12,11,12,12,14,13,11,12,12,14,14,9,10,10,12,12,10,11,11,13,13,10,10,11,12,13,12,13,13,15,14,12,12,13,13,14,9,10,10,12,12,10,11,11,13,13,10,11,11,13,13,12,13,13,14,14,12,13,13,15,14,11,12,12,14,13,12,13,13,15,14,11,12,12,13,14,14,15,14,16,15,13,13,14,13,16,11,12,12,14,14,12,13,13,14,15,12,13,12,15,14,14,14,14,16,15,14,15,13,16,14,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,5,5,7,7,5,7,7,5,7,7,8,9,9,7,9,9,5,7,7,7,9,9,8,9,9,5,7,7,7,9,9,7,9,9,7,9,9,9,10,11,9,11,10,7,9,9,9,11,10,9,10,11,5,7,7,7,9,9,7,9,9,7,9,9,9,11,10,9,10,10,8,9,9,9,11,11,9,11,10,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,6,14,18,18,17,17,17,17,17,17,4,7,9,9,10,13,15,17,17,17,6,7,5,6,8,11,16,17,16,17,5,7,5,4,6,10,14,17,17,17,6,6,6,5,7,10,13,16,17,17,7,6,7,7,7,8,7,10,15,16,12,9,9,6,6,5,3,5,11,15,14,14,13,5,5,7,3,4,8,15,17,17,13,7,7,10,6,6,10,15,17,17,16,10,11,14,10,10,15,17,0,0,0,0,2,0,0,0,100,0,0,0,192,30,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,184,16,2,0,0,0,0,0,0,0,0,0,0,0,0,0,224,16,2,0,0,0,0,0,0,0,0,0,0,0,0,0,8,17,2,0,0,0,0,0,0,0,0,0,0,0,0,0,48,17,2,0,0,0,0,0,0,0,0,0,0,0,0,0,88,17,2,0,0,0,0,0,0,0,0,0,0,0,0,0,128,17,2,0,0,0,0,0,168,17,2,0,208,17,2,0,0,0,0,0,0,0,0,0,248,17,2,0,32,18,2,0,0,0,0,0,0,0,0,0,72,18,2,0,112,18,2,0,152,18,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,2,0,0,0,100,0,0,0,80,16,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,3,9,14,13,15,14,16,13,13,14,5,5,7,7,8,9,11,10,12,15,10,6,5,6,6,9,10,10,13,16,10,6,6,6,6,8,9,9,12,15,14,7,6,6,5,6,6,8,12,15,10,8,7,7,6,7,7,7,11,13,14,10,9,8,5,6,4,5,9,12,10,9,9,8,6,6,5,3,6,11,12,11,12,12,10,9,8,5,5,8,10,11,15,13,13,13,12,8,6,7,0,0,0,0,4,0,0,0,81,0,0,0,88,30,2,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,176,30,2,0,0,0,0,0,4,0,0,0,81,0,0,0,240,29,2,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,72,30,2,0,0,0,0,0,4,0,0,0,113,2,0,0,96,27,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,216,29,2,0,0,0,0,0,4,0,0,0,113,2,0,0,208,24,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,72,27,2,0,0,0,0,0,2,0,0,0,81,0,0,0,80,24,2,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,168,24,2,0,0,0,0,0,2,0,0,0,81,0,0,0,208,23,2,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,40,24,2,0,0,0,0,0,4,0,0,0,81,0,0,0,104,23,2,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,192,23,2,0,0,0,0,0,2,0,0,0,121,0,0,0,184,22,2,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,56,23,2,0,0,0,0,0,2,0,0,0,121,0,0,0,8,22,2,0,1,0,0,0,0,128,187,224,0,0,118,96,4,0,0,0,0,0,0,0,136,22,2,0,0,0,0,0,2,0,0,0,121,0,0,0,88,21,2,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,216,21,2,0,0,0,0,0,2,0,0,0,121,0,0,0,168,20,2,0,1,0,0,0,0,226,120,225,0,232,51,97,4,0,0,0,0,0,0,0,40,21,2,0,0,0,0,0,2,0,0,0,169,0,0,0,192,19,2,0,1,0,0,0,0,96,18,225,0,128,184,96,4,0,0,0,0,0,0,0,112,20,2,0,0,0,0,0,1,0,0,0,49,0,0,0,192,18,2,0,1,0,0,0,0,0,152,224,0,0,16,96,6,0,0,0,0,0,0,0,248,18,2,0,0,0,0,0,2,4,4,4,4,5,5,5,5,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,0,0,0,0,0,0,0,24,0,0,0,23,0,0,0,25,0,0,0,22,0,0,0,26,0,0,0,21,0,0,0,27,0,0,0,20,0,0,0,28,0,0,0,19,0,0,0,29,0,0,0,18,0,0,0,30,0,0,0,17,0,0,0,31,0,0,0,16,0,0,0,32,0,0,0,15,0,0,0,33,0,0,0,14,0,0,0,34,0,0,0,13,0,0,0,35,0,0,0,12,0,0,0,36,0,0,0,11,0,0,0,37,0,0,0,10,0,0,0,38,0,0,0,9,0,0,0,39,0,0,0,8,0,0,0,40,0,0,0,7,0,0,0,41,0,0,0,6,0,0,0,42,0,0,0,5,0,0,0,43,0,0,0,4,0,0,0,44,0,0,0,3,0,0,0,45,0,0,0,2,0,0,0,46,0,0,0,1,0,0,0,47,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,1,4,4,6,5,8,6,9,8,10,9,11,10,4,6,6,8,8,9,9,11,10,11,11,11,11,4,6,6,8,8,10,9,11,11,11,11,11,12,6,8,8,10,10,11,11,12,12,13,12,13,13,6,8,8,10,10,11,11,12,12,12,13,14,13,8,10,10,11,11,12,13,14,14,14,14,15,15,8,10,10,11,12,12,13,13,14,14,14,14,15,9,11,11,13,13,14,14,15,14,16,15,17,15,9,11,11,12,13,14,14,15,14,15,15,15,16,10,12,12,13,14,15,15,15,15,16,17,16,17,10,13,12,13,14,14,16,16,16,16,15,16,17,11,13,13,14,15,14,17,15,16,17,17,17,17,11,13,13,14,15,15,15,15,17,17,16,17,16,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,3,3,10,10,10,10,10,10,10,10,4,10,10,10,10,10,10,10,10,10,10,4,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,4,5,5,6,6,7,7,7,7,7,7,5,6,6,7,7,7,7,7,7,7,7,5,6,6,6,7,7,7,7,7,7,7,6,7,7,7,7,7,7,7,7,8,8,6,7,7,7,7,7,7,7,7,8,8,7,7,7,7,7,8,7,8,8,8,8,7,7,7,7,7,7,8,8,8,8,8,7,7,7,7,7,8,8,8,8,8,8,7,7,7,7,7,8,8,8,8,8,8,7,7,7,8,8,8,8,8,8,8,8,7,7,7,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,6,6,8,8,10,10,11,11,4,6,6,7,7,9,9,11,10,12,12,5,6,5,7,7,9,9,10,11,12,12,6,7,7,8,8,10,10,11,11,13,13,6,7,7,8,8,10,10,11,12,13,13,8,9,9,10,10,11,11,12,12,14,14,8,9,9,10,10,11,11,12,12,14,14,10,10,10,11,11,13,12,14,14,15,15,10,10,10,12,12,13,13,14,14,15,15,11,12,12,13,13,14,14,15,14,16,15,11,12,12,13,13,14,14,15,15,15,16,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,3,4,4,6,6,7,7,8,8,8,8,4,5,5,6,6,8,7,8,8,8,8,4,5,5,6,6,7,8,8,8,8,8,6,7,6,7,7,8,8,9,9,9,9,6,6,7,7,7,8,8,9,9,9,9,7,8,7,8,8,9,9,9,9,9,9,7,7,8,8,8,9,9,9,9,9,9,8,8,8,9,9,9,9,10,9,9,9,8,8,8,9,9,9,9,9,9,9,10,8,8,8,9,9,9,9,10,9,10,10,8,8,8,9,9,9,9,9,10,10,10,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,5,7,7,5,7,7,5,9,8,8,9,9,7,10,10,5,8,9,7,9,10,8,9,9,4,9,9,9,11,10,8,10,10,7,11,10,10,10,12,10,12,12,7,10,10,10,12,11,10,12,12,5,9,9,8,10,10,9,11,11,7,11,10,10,12,12,10,11,12,7,10,11,10,12,12,10,12,10,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,4,4,5,5,7,7,9,9,4,5,4,6,6,8,7,9,9,4,4,5,6,6,7,7,9,9,5,6,6,7,7,8,8,10,10,5,6,6,7,7,8,8,10,10,7,8,7,8,8,10,9,11,11,7,7,8,8,8,9,10,11,11,9,9,9,10,10,11,10,12,11,9,9,9,10,10,11,11,11,12,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,2,3,3,6,6,7,8,10,10,4,5,5,8,7,8,8,11,11,3,5,5,7,7,8,9,11,11,6,8,7,9,9,10,10,12,12,6,7,8,9,10,10,10,12,12,8,8,8,10,10,12,11,13,13,8,8,9,10,10,11,11,13,13,10,11,11,12,12,13,13,14,14,10,11,11,12,12,13,13,14,14,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,4,5,5,8,8,6,7,6,9,9,6,6,7,9,9,8,9,9,11,11,8,9,9,10,11,6,7,7,9,9,7,8,8,10,10,6,7,8,9,10,9,10,10,12,12,9,9,10,11,12,6,7,7,9,9,6,8,7,10,9,7,8,8,10,10,9,10,9,12,11,9,10,10,12,11,8,9,9,11,11,9,10,10,12,12,9,10,10,12,12,11,12,12,13,14,11,11,12,13,13,8,9,9,11,11,9,10,10,12,11,9,10,10,12,12,11,12,11,13,13,11,12,12,13,13,6,7,7,9,9,7,8,7,10,10,7,7,8,10,10,9,10,10,12,11,9,10,10,12,12,7,8,8,10,10,8,8,9,11,11,8,9,9,11,11,10,11,11,12,12,10,10,11,12,13,6,7,7,10,10,7,9,8,11,10,8,8,9,10,11,10,11,10,13,11,10,11,11,12,12,9,10,10,12,12,10,10,11,13,13,10,11,11,13,12,12,12,13,13,14,12,12,13,14,14,9,10,10,12,12,9,10,10,12,12,10,11,11,13,13,11,12,11,14,12,12,13,13,14,14,6,7,7,9,9,7,8,7,10,10,7,7,8,10,10,9,10,10,12,11,9,10,10,11,12,6,7,7,10,10,8,9,8,11,10,7,8,9,10,11,10,11,11,13,12,10,10,11,11,13,7,8,8,10,10,8,9,9,11,11,8,9,9,11,11,10,11,10,13,12,10,11,11,12,12,9,10,10,12,12,10,11,11,13,12,9,10,10,12,13,12,13,12,14,14,11,11,12,12,14,9,10,10,12,12,10,11,11,13,13,10,11,11,13,13,12,13,12,14,14,12,13,12,14,13,8,9,9,11,11,9,10,10,12,12,9,10,10,12,12,11,12,12,14,13,11,12,12,13,13,9,10,10,12,12,10,11,11,13,13,10,11,11,13,12,12,13,13,14,14,12,12,13,14,14,9,10,10,12,12,9,11,10,13,12,10,10,11,12,13,11,13,12,14,13,12,12,13,14,14,11,12,12,13,13,11,12,13,14,14,12,13,13,14,14,13,13,14,14,16,13,14,14,16,16,11,11,11,13,13,11,12,11,14,13,12,12,13,14,15,13,14,12,16,13,14,14,14,15,16,8,9,9,11,11,9,10,10,12,12,9,10,10,12,12,11,12,12,14,13,11,12,12,13,14,9,10,10,12,12,10,11,10,13,12,9,10,11,12,13,12,13,12,14,14,12,12,13,13,14,9,10,10,12,12,10,11,11,12,13,10,11,11,13,13,12,13,12,14,14,12,13,13,14,14,11,12,12,13,13,12,13,12,14,14,11,11,12,13,14,13,15,14,16,15,13,12,14,13,16,11,12,12,13,13,12,13,13,14,14,12,12,12,14,14,13,14,14,15,15,13,14,13,16,14,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,5,4,8,8,5,7,6,9,9,5,6,7,9,9,8,9,9,13,12,8,9,10,12,13,5,7,7,10,9,7,9,9,11,11,6,8,9,11,11,10,11,11,14,14,9,10,11,13,14,5,7,7,9,9,7,9,8,11,11,7,9,9,11,11,9,11,10,14,13,10,11,11,14,14,8,10,10,14,13,10,11,12,15,14,9,11,11,15,14,13,14,14,16,16,12,13,14,17,16,8,10,10,13,13,9,11,11,14,15,10,11,12,14,15,12,14,13,16,16,13,14,15,15,17,5,7,7,10,10,7,9,9,11,11,7,9,9,11,11,10,12,11,15,14,10,11,12,14,14,7,9,9,12,12,9,11,11,13,13,9,11,11,13,13,11,13,13,14,17,11,13,13,15,16,6,9,9,11,11,8,11,10,13,12,9,11,11,13,13,11,13,12,16,14,11,13,13,16,16,10,12,12,15,15,11,13,13,16,16,11,13,13,16,15,14,16,17,17,19,14,16,16,18,0,9,11,11,14,15,10,13,12,16,15,11,13,13,16,16,14,15,14,0,16,14,16,16,18,0,5,7,7,10,10,7,9,9,12,11,7,9,9,11,12,10,11,11,15,14,10,11,12,14,14,6,9,9,11,11,9,11,11,13,13,8,10,11,12,13,11,13,13,17,15,11,12,13,14,15,7,9,9,11,12,9,11,11,13,13,9,11,11,13,13,11,13,12,16,16,11,13,13,15,14,9,11,11,14,15,11,13,13,16,15,10,12,13,16,16,15,16,16,0,0,14,13,15,16,18,10,11,11,15,15,11,13,14,16,18,11,13,13,16,15,15,16,16,19,0,14,15,15,16,16,8,10,10,13,13,10,12,11,16,15,10,11,11,16,15,13,15,16,18,0,13,14,15,17,17,9,11,11,15,15,11,13,13,16,18,11,13,13,16,17,15,16,16,0,0,15,18,16,0,17,9,11,11,15,15,11,13,12,17,15,11,13,14,16,17,15,18,15,0,17,15,16,16,18,19,13,15,14,0,18,14,16,16,19,18,14,16,15,19,19,16,18,19,0,0,16,17,0,0,0,12,14,14,17,17,13,16,14,0,18,14,16,15,18,0,16,18,16,19,17,18,19,17,0,0,8,10,10,14,14,9,12,11,15,15,10,11,12,15,17,13,15,15,18,16,14,16,15,18,17,9,11,11,16,15,11,13,13,0,16,11,12,13,16,15,15,16,16,0,17,15,15,16,18,17,9,12,11,15,17,11,13,13,16,16,11,14,13,16,16,15,15,16,18,19,16,18,16,0,0,12,14,14,0,16,14,16,16,0,18,13,14,15,16,0,17,16,18,0,0,16,16,17,19,0,13,14,14,17,0,14,17,16,0,19,14,15,15,18,19,17,16,18,0,0,15,19,16,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,3,4,4,5,6,6,5,6,6,5,6,6,6,8,8,6,7,8,5,6,6,6,8,7,6,8,8,5,6,6,6,8,7,6,8,8,6,8,8,8,9,9,8,9,9,6,8,7,7,9,8,8,9,9,5,6,6,6,8,7,6,8,8,6,8,8,8,9,9,7,8,9,6,8,8,8,9,9,8,9,9,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,4,4,7,7,5,7,7,5,8,8,8,10,10,7,10,10,5,8,8,7,10,10,8,10,10,5,8,8,8,11,10,8,10,10,8,10,10,10,12,13,10,13,13,7,10,10,10,13,12,10,13,13,5,8,8,8,11,10,8,10,11,7,10,10,10,13,13,10,12,13,8,11,11,10,13,13,10,13,12,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,5,12,17,16,16,17,17,17,17,17,4,7,11,11,12,9,17,10,17,17,7,7,8,9,7,9,11,10,15,17,7,9,10,11,10,12,14,12,16,17,7,8,5,7,4,7,7,8,16,16,6,10,9,10,7,10,11,11,16,17,6,8,8,9,5,7,5,8,16,17,5,5,8,7,6,7,7,6,6,14,12,10,12,11,7,11,4,4,2,7,17,15,15,15,8,15,6,8,5,9,0,0,0,0,2,0,0,0,100,0,0,0,208,47,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,160,32,2,0,0,0,0,0,0,0,0,0,0,0,0,0,200,32,2,0,0,0,0,0,0,0,0,0,0,0,0,0,240,32,2,0,0,0,0,0,0,0,0,0,0,0,0,0,24,33,2,0,0,0,0,0,0,0,0,0,0,0,0,0,64,33,2,0,0,0,0,0,0,0,0,0,0,0,0,0,104,33,2,0,0,0,0,0,144,33,2,0,184,33,2,0,0,0,0,0,0,0,0,0,224,33,2,0,8,34,2,0,0,0,0,0,0,0,0,0,48,34,2,0,88,34,2,0,128,34,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,2,0,0,0,100,0,0,0,56,32,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,3,9,14,13,14,13,16,12,13,14,5,4,6,6,8,9,11,10,12,15,10,5,5,6,6,8,10,10,13,16,10,6,6,6,6,8,9,9,12,14,13,7,6,6,4,6,6,7,11,14,10,7,7,7,6,6,6,7,10,13,15,10,9,8,5,6,5,6,10,14,10,9,8,8,6,6,5,4,6,11,11,11,12,11,10,9,9,5,5,9,10,12,15,13,13,13,13,8,7,7,0,0,0,0,4,0,0,0,81,0,0,0,104,47,2,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,192,47,2,0,0,0,0,0,4,0,0,0,81,0,0,0,0,47,2,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,88,47,2,0,0,0,0,0,4,0,0,0,113,2,0,0,112,44,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,232,46,2,0,0,0,0,0,4,0,0,0,113,2,0,0,224,41,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,88,44,2,0,0,0,0,0,2,0,0,0,81,0,0,0,96,41,2,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,184,41,2,0,0,0,0,0,2,0,0,0,81,0,0,0,224,40,2,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,56,41,2,0,0,0,0,0,4,0,0,0,81,0,0,0,120,40,2,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,208,40,2,0,0,0,0,0,2,0,0,0,121,0,0,0,200,39,2,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,72,40,2,0,0,0,0,0,2,0,0,0,121,0,0,0,24,39,2,0,1,0,0,0,0,128,187,224,0,0,118,96,4,0,0,0,0,0,0,0,152,39,2,0,0,0,0,0,2,0,0,0,121,0,0,0,104,38,2,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,232,38,2,0,0,0,0,0,2,0,0,0,225,0,0,0,64,37,2,0,1,0,0,0,0,228,91,225,0,224,255,96,4,0,0,0,0,0,0,0,40,38,2,0,0,0,0,0,2,0,0,0,225,0,0,0,24,36,2,0,1,0,0,0,0,192,221,224,0,0,145,96,4,0,0,0,0,0,0,0,0,37,2,0,0,0,0,0,2,0,0,0,33,1,0,0,168,34,2,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,208,35,2,0,0,0,0,0,3,5,5,7,7,8,8,8,8,8,8,9,8,8,9,9,9,5,6,6,7,7,8,8,8,8,8,8,9,9,9,9,9,9,5,6,6,7,7,8,8,8,8,8,8,9,9,9,9,9,9,7,7,7,8,8,8,8,9,9,9,9,9,9,9,9,9,9,7,7,7,8,8,8,8,9,9,9,9,9,9,9,9,9,9,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,9,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,9,9,9,9,9,9,9,9,9,9,9,10,9,9,9,10,9,9,9,9,9,9,9,9,9,9,10,9,9,9,10,9,9,10,9,9,9,9,9,9,9,9,9,10,10,10,9,10,9,10,10,9,9,9,9,9,9,9,9,9,10,10,9,10,10,9,9,10,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,4,4,7,7,8,9,8,8,9,8,9,8,9,9,4,7,6,8,8,9,9,9,9,9,9,9,9,9,9,4,7,6,9,9,10,10,9,9,10,10,10,10,11,11,7,9,8,10,10,11,11,10,10,11,11,11,11,11,11,7,8,9,10,10,11,11,10,10,11,11,11,11,11,12,8,10,10,11,11,12,12,11,11,12,12,12,12,13,12,8,10,10,11,11,12,11,11,11,11,12,12,12,12,13,8,9,9,11,10,11,11,12,12,12,12,13,12,13,12,8,9,9,11,11,11,11,12,12,12,12,12,13,13,13,9,10,10,11,12,12,12,12,12,13,13,13,13,13,13,9,10,10,11,11,12,12,12,12,13,13,13,13,14,13,10,10,10,12,11,12,12,13,13,13,13,13,13,13,13,10,10,11,11,11,12,12,13,13,13,13,13,13,13,13,10,11,11,12,12,13,12,12,13,13,13,13,13,13,14,10,11,11,12,12,13,12,13,13,13,14,13,13,14,13,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,1,3,2,9,8,15,15,15,15,15,15,15,15,15,15,4,8,9,13,14,14,14,14,14,14,14,14,14,14,14,5,8,9,14,14,14,14,14,14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,14,14,14,14,14,14,14,11,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,3,5,5,6,6,7,7,7,7,7,7,5,6,5,7,7,7,7,8,7,8,8,5,5,6,6,7,7,7,7,7,8,8,6,7,7,7,7,8,7,8,8,8,8,6,6,7,7,7,7,8,8,8,8,8,7,7,7,8,8,8,8,8,8,8,8,7,7,7,7,8,8,8,8,8,8,8,7,7,7,8,8,8,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,6,6,8,8,9,9,10,10,4,6,6,7,7,9,9,10,10,11,11,4,6,6,7,7,9,9,10,10,11,11,6,8,8,9,9,10,10,11,11,12,12,6,8,8,9,9,10,10,11,11,12,12,8,9,9,10,10,11,11,12,12,13,13,8,9,9,10,10,11,11,12,12,13,13,10,10,10,11,11,13,13,13,13,15,14,9,10,10,12,11,12,13,13,13,14,15,11,12,12,13,13,13,13,15,14,15,15,11,11,12,13,13,14,14,14,15,15,15,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,3,4,4,6,6,7,7,8,8,8,8,4,5,5,7,6,8,8,8,8,8,8,4,5,5,6,7,8,8,8,8,8,8,6,7,7,7,7,8,8,8,8,8,8,6,7,7,7,7,8,8,8,8,8,8,7,8,8,8,8,8,8,9,9,9,9,7,8,8,8,8,8,8,9,9,9,9,8,8,8,8,8,9,9,9,9,9,9,8,8,8,8,8,9,9,9,9,9,9,8,8,8,8,8,9,9,9,9,9,9,8,8,8,8,8,9,9,9,9,9,9,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,5,7,7,5,7,7,5,9,8,7,10,10,8,10,10,5,8,9,7,10,10,7,10,9,4,8,8,9,11,11,8,11,11,7,11,11,10,10,13,10,13,13,7,11,11,10,13,12,10,13,13,5,9,8,8,11,11,9,11,11,7,11,11,10,13,13,10,12,13,7,11,11,10,13,13,9,13,10,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,4,4,5,5,7,7,9,9,4,5,4,6,6,7,7,9,9,4,4,5,6,6,7,8,9,9,5,6,6,7,7,8,8,10,10,5,6,6,7,7,8,8,10,10,7,8,7,8,8,10,9,11,11,7,7,8,8,8,9,10,10,11,9,9,9,10,10,11,11,12,11,9,9,9,10,10,11,11,11,12,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,2,3,3,6,6,8,8,10,10,4,5,5,8,7,8,8,11,11,3,5,5,7,8,8,8,11,11,6,8,7,9,9,10,9,12,11,6,7,8,9,9,9,10,11,12,8,8,8,10,9,12,11,13,13,8,8,9,9,10,11,12,13,13,10,11,11,12,12,13,13,14,14,10,10,11,11,12,13,13,14,14,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,4,5,5,8,8,6,7,6,9,9,6,6,7,9,9,8,9,9,11,11,8,9,9,11,11,6,7,7,9,9,7,8,8,10,10,7,7,8,9,10,9,10,10,11,11,9,9,10,11,12,6,7,7,9,9,7,8,7,10,9,7,8,8,10,10,9,10,9,12,11,9,10,10,12,11,8,9,9,11,11,9,10,10,12,12,9,10,10,12,12,11,12,12,14,13,11,11,12,13,13,8,9,9,11,11,9,10,10,12,12,9,10,10,12,12,11,12,11,13,12,11,12,12,13,13,5,7,7,9,9,7,8,7,10,10,7,7,8,10,10,9,10,10,12,11,9,10,10,11,12,7,8,8,10,10,8,8,9,11,11,8,9,9,11,11,10,10,11,12,13,10,10,11,12,12,6,7,7,10,10,7,9,8,11,10,8,8,9,10,11,10,11,10,13,11,10,11,11,12,12,9,10,10,12,12,10,10,11,13,13,10,11,11,12,13,12,12,12,13,14,12,12,13,14,14,9,10,10,12,12,9,10,10,13,12,10,11,11,13,13,11,12,11,14,12,12,13,13,14,14,6,7,7,9,9,7,8,7,10,10,7,8,8,10,10,9,10,10,12,11,9,10,10,11,12,6,7,7,10,10,8,9,8,11,10,7,8,9,10,11,10,11,11,12,12,10,10,11,11,13,7,8,8,10,10,8,9,9,11,11,8,9,8,11,11,10,11,10,13,12,10,11,11,13,12,9,10,10,12,12,10,11,11,13,12,9,10,10,12,13,12,13,12,14,14,11,11,12,12,14,9,10,10,12,12,10,11,11,13,13,10,11,10,13,12,12,12,12,14,14,12,13,12,14,13,8,9,9,11,11,9,10,10,12,12,9,10,10,12,12,11,12,12,14,13,11,12,12,13,14,9,10,10,12,12,10,11,11,13,13,10,11,11,13,13,12,12,13,14,15,12,12,13,14,14,9,10,10,12,12,9,11,10,13,12,10,10,11,12,13,12,13,12,14,13,12,12,13,14,15,11,12,12,14,13,11,12,12,14,14,12,13,13,14,14,13,13,14,14,16,13,14,14,15,15,11,12,11,13,13,11,12,11,14,13,12,12,13,14,15,12,14,12,15,12,13,14,15,15,16,8,9,9,11,11,9,10,10,12,12,9,10,10,12,12,11,12,12,14,13,11,12,12,13,13,9,10,10,12,12,10,11,10,13,12,9,10,11,12,13,12,13,12,14,14,12,12,13,13,14,9,10,10,12,12,10,11,11,13,13,10,11,11,13,13,12,13,12,14,14,12,13,13,14,14,11,11,11,13,13,12,13,12,14,14,11,11,12,13,14,14,14,14,16,15,12,12,14,12,15,11,12,12,13,14,12,13,13,14,15,11,12,12,14,14,13,14,14,16,16,13,14,13,16,13,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,5,4,8,8,5,7,6,9,9,5,6,7,9,9,8,9,9,13,12,8,9,10,12,13,5,7,7,10,9,7,9,9,11,11,7,8,9,11,11,10,11,11,14,14,9,10,11,13,14,5,7,7,9,10,6,9,8,11,11,7,9,9,11,11,9,11,10,14,13,10,11,11,14,13,8,10,10,13,13,10,11,11,15,15,9,11,11,14,14,13,14,14,17,16,12,13,14,16,16,8,10,10,13,14,9,11,11,14,15,10,11,12,14,15,12,14,13,16,15,13,14,14,15,17,5,7,7,10,10,7,9,9,11,11,7,9,9,11,11,10,12,11,14,14,10,11,11,14,14,7,9,9,12,11,9,11,11,13,13,9,11,11,13,13,11,13,13,14,15,11,12,13,15,16,6,9,9,11,12,8,11,10,13,12,9,11,11,13,14,11,13,12,16,14,11,13,13,15,16,10,12,11,14,15,11,13,13,15,17,11,13,13,17,16,15,15,16,17,16,14,15,16,18,0,9,11,11,14,15,10,12,12,16,15,11,13,13,16,16,13,15,14,18,15,14,16,16,0,0,5,7,7,10,10,7,9,9,11,11,7,9,9,11,11,10,11,11,14,14,10,11,12,14,14,6,9,9,11,11,9,11,11,13,13,8,10,11,12,13,11,13,13,16,15,11,12,13,14,16,7,9,9,11,12,9,11,11,13,13,9,11,11,13,13,11,13,13,16,15,11,13,12,15,15,9,11,11,15,14,11,13,13,17,16,10,12,13,15,16,14,16,16,0,18,14,14,15,15,17,10,11,12,15,15,11,13,13,16,16,11,13,13,16,16,14,16,16,19,17,14,15,15,17,17,8,10,10,14,14,10,12,11,15,15,10,11,12,16,15,14,15,15,18,20,13,14,16,17,18,9,11,11,15,16,11,13,13,17,17,11,13,13,17,16,15,16,16,0,0,15,16,16,0,0,9,11,11,15,15,10,13,12,17,15,11,13,13,17,16,15,17,15,20,19,15,16,16,19,0,13,15,14,0,17,14,15,16,0,20,15,16,16,0,19,17,18,0,0,0,16,17,18,0,0,12,14,14,19,18,13,15,14,0,17,14,15,16,19,19,16,18,16,0,19,19,20,17,20,0,8,10,10,13,14,10,11,11,15,15,10,12,12,15,16,14,15,14,19,16,14,15,15,0,18,9,11,11,16,15,11,13,13,0,16,11,12,13,16,17,14,16,17,0,19,15,16,16,18,0,9,11,11,15,16,11,13,13,16,16,11,14,13,18,17,15,16,16,18,20,15,17,19,0,0,12,14,14,17,17,14,16,15,0,0,13,14,15,19,0,16,18,20,0,0,16,16,18,18,0,12,14,14,17,20,14,16,16,19,0,14,16,14,0,20,16,20,17,0,0,17,0,15,0,19,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,3,4,4,5,6,6,5,6,6,5,6,6,6,8,8,6,7,8,5,6,6,6,8,7,6,8,8,5,6,6,6,8,8,6,8,8,6,8,8,8,9,9,8,9,9,6,7,7,7,9,8,8,9,9,5,6,6,6,8,7,6,8,8,6,8,8,8,9,9,7,8,9,6,8,8,8,9,9,8,9,9,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,4,4,8,7,5,7,7,5,8,8,8,10,10,7,9,10,5,8,8,7,10,9,8,10,10,5,8,8,8,10,10,8,10,10,8,10,10,10,12,13,10,13,13,7,10,10,10,13,11,10,13,13,5,8,8,8,11,10,8,10,10,7,10,10,10,13,13,10,11,13,8,10,11,10,13,13,10,13,12,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,11,16,13,17,13,17,16,17,17,4,7,9,9,13,10,16,12,16,17,7,6,5,7,8,9,12,12,16,17,6,9,7,9,10,10,15,15,17,17,6,7,5,7,5,7,7,10,16,17,7,9,8,9,8,10,11,11,15,17,7,7,7,8,5,8,8,9,15,17,8,7,9,9,7,8,7,2,7,15,14,13,13,15,5,10,4,3,6,17,17,15,13,17,7,11,7,6,9,16,0,0,0,0,2,0,0,0,100,0,0,0,160,64,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,176,49,2,0,0,0,0,0,0,0,0,0,0,0,0,0,216,49,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,2,0,0,0,0,0,0,0,0,0,0,0,0,0,40,50,2,0,0,0,0,0,0,0,0,0,0,0,0,0,80,50,2,0,0,0,0,0,0,0,0,0,0,0,0,0,120,50,2,0,0,0,0,0,160,50,2,0,200,50,2,0,0,0,0,0,0,0,0,0,240,50,2,0,24,51,2,0,0,0,0,0,0,0,0,0,64,51,2,0,104,51,2,0,144,51,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,2,0,0,0,100,0,0,0,72,49,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,3,8,13,12,14,12,16,11,13,14,5,4,5,6,7,8,10,9,12,15,10,5,5,5,6,8,9,9,13,15,10,5,5,6,6,7,8,8,11,13,12,7,5,6,4,6,7,7,11,14,11,7,7,6,6,6,7,6,10,14,14,9,8,8,6,7,7,7,11,16,11,8,8,7,6,6,7,4,7,12,10,10,12,10,10,9,10,5,6,9,10,12,15,13,14,14,14,8,7,8,0,0,0,0,4,0,0,0,81,0,0,0,56,64,2,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,144,64,2,0,0,0,0,0,4,0,0,0,81,0,0,0,208,63,2,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,40,64,2,0,0,0,0,0,4,0,0,0,113,2,0,0,64,61,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,184,63,2,0,0,0,0,0,4,0,0,0,113,2,0,0,176,58,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,40,61,2,0,0,0,0,0,2,0,0,0,81,0,0,0,48,58,2,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,136,58,2,0,0,0,0,0,2,0,0,0,81,0,0,0,176,57,2,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,8,58,2,0,0,0,0,0,4,0,0,0,81,0,0,0,72,57,2,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,160,57,2,0,0,0,0,0,2,0,0,0,121,0,0,0,152,56,2,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,24,57,2,0,0,0,0,0,2,0,0,0,121,0,0,0,232,55,2,0,1,0,0,0,0,128,187,224,0,0,118,96,4,0,0,0,0,0,0,0,104,56,2,0,0,0,0,0,2,0,0,0,121,0,0,0,56,55,2,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,184,55,2,0,0,0,0,0,2,0,0,0,169,0,0,0,80,54,2,0,1,0,0,0,0,232,87,225,0,224,255,96,4,0,0,0,0,0,0,0,0,55,2,0,0,0,0,0,2,0,0,0,225,0,0,0,40,53,2,0,1,0,0,0,0,192,221,224,0,0,145,96,4,0,0,0,0,0,0,0,16,54,2,0,0,0,0,0,2,0,0,0,33,1,0,0,184,51,2,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,224,52,2,0,0,0,0,0,2,5,5,7,7,8,8,8,8,8,8,9,9,9,9,9,9,5,6,6,7,7,8,8,9,8,9,9,9,9,9,9,9,9,5,6,6,7,7,8,8,9,8,9,9,9,9,9,9,9,9,7,7,7,8,8,9,8,9,9,9,9,9,9,9,9,9,9,7,7,7,8,8,9,8,9,9,9,9,9,9,9,9,9,9,8,8,8,8,9,9,9,9,9,9,9,9,10,9,10,10,10,8,8,8,9,8,9,9,9,9,9,9,9,10,9,10,9,10,8,9,9,9,9,9,9,9,9,9,10,9,10,10,10,10,10,8,9,9,9,9,9,9,10,9,10,9,10,10,10,10,10,10,9,9,9,9,9,10,9,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,9,10,9,10,9,10,10,10,10,10,10,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,10,10,9,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,10,9,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,4,4,7,7,8,8,8,7,8,7,9,8,9,9,4,7,6,9,8,10,10,9,8,9,9,9,9,9,8,5,6,6,8,9,10,10,9,9,9,10,10,10,10,11,7,8,8,10,10,11,11,10,10,11,11,11,12,11,11,7,8,8,10,10,11,11,10,10,11,11,12,11,11,11,8,9,9,11,11,12,12,11,11,12,11,12,12,12,12,8,9,10,11,11,12,12,11,11,12,12,12,12,12,12,8,9,9,10,10,12,11,12,12,12,12,12,12,12,13,8,9,9,11,11,11,11,12,12,12,12,13,12,13,13,9,10,10,11,11,12,12,12,13,12,13,13,13], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+134580); +/* memory initializer */ allocate([14,13,9,10,10,11,11,12,12,12,13,13,12,13,13,14,13,9,11,10,12,11,13,12,12,13,13,13,13,13,13,14,9,10,10,12,12,12,12,12,13,13,13,13,13,14,14,10,11,11,12,12,12,13,13,13,14,14,13,14,14,14,10,11,11,12,12,12,12,13,12,13,14,13,14,14,14,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,1,3,2,12,10,13,13,13,13,13,13,13,13,4,9,9,13,13,13,13,13,13,13,13,13,13,5,10,9,13,13,13,13,13,13,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,11,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,3,5,5,6,6,7,7,7,7,7,7,5,6,5,7,6,7,7,8,8,8,8,5,5,5,6,6,7,7,8,8,8,8,6,7,6,7,7,8,8,8,8,8,8,6,6,7,7,7,8,8,8,8,8,8,7,7,7,8,8,8,8,8,8,8,8,7,7,7,8,8,8,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,6,6,8,8,9,9,10,10,4,6,6,7,7,9,9,10,10,11,11,4,6,6,7,7,9,9,10,10,11,11,6,8,7,9,9,10,10,11,11,13,12,6,8,8,9,9,10,10,11,11,12,13,8,9,9,10,10,12,12,13,12,14,13,8,9,9,10,10,12,12,13,13,14,14,9,11,11,12,12,13,13,14,14,15,14,9,11,11,12,12,13,13,14,14,15,14,11,12,12,13,13,14,14,15,14,15,14,11,11,12,13,13,14,14,14,14,15,15,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,2,4,4,6,6,7,7,8,8,8,8,4,5,5,7,7,8,8,9,8,8,9,4,5,5,7,7,8,8,9,9,8,9,6,7,7,8,8,9,8,9,9,9,9,6,7,7,8,8,9,9,9,9,9,9,7,8,8,9,9,9,9,9,9,9,9,7,8,8,9,9,9,9,9,9,9,9,8,9,9,9,9,9,9,10,10,10,10,8,9,9,9,9,9,9,10,10,10,10,8,9,9,9,9,9,9,10,10,10,10,8,9,9,9,9,9,9,10,10,10,10,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,5,7,7,5,7,7,5,9,9,8,11,10,7,11,10,5,9,9,7,10,10,8,10,11,4,9,9,9,12,12,9,12,12,8,12,12,11,12,12,10,12,13,7,12,12,11,12,12,10,12,13,4,9,9,9,12,12,9,12,12,7,12,11,10,13,13,11,12,12,7,12,12,10,13,13,11,12,12,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,4,4,5,5,7,7,9,9,4,5,4,6,6,7,7,9,9,4,4,5,6,6,7,7,9,9,5,6,6,7,7,8,8,10,10,6,6,6,7,7,8,8,10,10,7,7,7,8,8,9,9,11,10,7,7,7,8,8,9,9,10,11,9,9,9,10,10,11,10,11,11,9,9,9,10,10,11,10,11,11,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,2,3,3,6,6,8,8,10,10,4,5,5,8,7,8,8,11,10,3,5,5,7,8,8,8,10,11,6,8,7,10,9,10,10,11,11,6,7,8,9,9,9,10,11,12,8,8,8,10,10,11,11,13,12,8,8,9,9,10,11,11,12,13,10,11,10,12,11,13,12,14,14,10,10,11,11,12,12,13,14,14,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,4,5,5,8,8,6,7,6,9,9,6,6,7,9,9,8,9,9,11,11,8,9,9,11,11,6,7,7,9,9,7,8,8,10,10,6,7,8,9,10,9,10,10,11,12,9,9,10,11,12,6,7,7,9,9,6,8,7,10,9,7,8,8,10,10,9,10,9,12,11,9,10,10,12,11,8,9,9,12,11,9,10,10,12,12,9,10,10,12,12,11,12,12,13,14,11,11,12,13,14,8,9,9,11,12,9,10,10,12,12,9,10,10,12,12,11,12,11,14,13,11,12,12,13,13,5,7,7,9,9,7,8,8,10,10,7,8,8,10,10,9,10,10,12,12,9,10,10,12,12,7,8,8,10,10,8,8,9,10,11,8,9,9,11,11,10,10,11,11,13,10,11,11,12,13,6,7,8,10,10,7,9,8,11,10,8,9,9,11,11,10,11,10,13,11,10,11,11,12,12,9,10,10,12,12,10,10,11,12,13,10,11,11,13,13,12,11,13,12,15,12,13,13,14,15,9,10,10,12,12,9,11,10,13,12,10,11,11,13,13,11,13,11,14,12,12,13,13,14,15,5,7,7,9,9,7,8,8,10,10,7,8,8,10,10,9,10,10,12,12,9,10,10,12,12,6,8,7,10,10,8,9,9,11,11,7,8,9,10,11,10,11,11,12,12,10,10,11,11,13,7,8,8,10,10,8,9,9,11,11,8,9,8,11,10,10,11,11,13,12,10,11,10,13,11,9,10,10,12,12,10,11,11,13,12,9,10,10,12,13,12,13,13,14,15,11,11,13,12,14,9,10,10,12,12,10,11,11,13,13,10,11,10,13,12,12,13,13,14,14,12,13,11,14,12,8,9,9,12,12,9,10,10,12,12,9,10,10,12,12,12,12,12,14,14,11,12,12,14,13,9,10,10,12,12,10,11,11,13,13,10,11,11,13,12,12,12,13,14,15,12,13,13,15,14,9,10,10,12,12,10,11,10,13,12,10,11,11,12,13,12,13,12,15,13,12,13,13,14,15,11,12,12,14,13,11,12,12,14,15,12,13,13,15,14,13,12,14,12,16,13,14,14,15,15,11,11,12,14,14,11,12,11,14,13,12,13,13,14,15,13,14,12,16,12,14,14,15,16,16,8,9,9,11,12,9,10,10,12,12,9,10,10,12,13,11,12,12,13,13,12,12,13,14,14,9,10,10,12,12,10,11,10,13,12,10,10,11,12,13,12,13,13,15,14,12,12,13,13,15,9,10,10,12,13,10,11,11,12,13,10,11,11,13,13,12,13,13,14,15,12,13,12,15,14,11,12,11,14,13,12,13,13,15,14,11,11,12,13,14,14,15,14,16,15,13,12,14,13,16,11,12,12,13,14,12,13,13,14,15,11,12,11,14,14,14,14,14,15,16,13,15,12,16,12,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,4,5,8,8,5,7,6,9,9,5,6,7,9,9,8,10,9,13,12,8,9,10,12,12,5,7,7,10,10,7,9,9,11,11,6,8,9,11,11,10,11,11,14,14,9,10,11,13,14,5,7,7,9,10,7,9,8,11,11,7,9,9,11,11,9,11,10,14,13,10,11,11,14,14,8,10,10,13,13,10,11,11,15,14,9,11,11,14,14,13,14,14,17,16,12,13,13,15,16,8,10,10,13,13,9,11,11,14,15,10,11,11,14,15,12,14,13,16,16,13,15,14,15,17,5,7,7,10,10,7,9,9,11,11,7,9,9,11,11,10,11,11,14,14,10,11,12,14,14,7,9,9,12,11,9,11,11,13,13,9,11,11,13,13,12,13,13,15,16,11,12,13,15,16,6,9,9,11,11,8,11,10,13,12,9,11,11,13,14,11,13,12,16,14,11,13,13,16,17,10,12,11,15,15,11,13,13,16,16,11,13,13,17,16,14,15,15,17,17,14,16,16,17,18,9,11,11,14,15,10,12,12,15,15,11,13,13,16,17,13,15,13,17,15,14,15,16,18,0,5,7,7,10,10,7,9,9,11,11,7,9,9,11,11,10,11,11,14,14,10,11,12,14,15,6,9,9,12,11,9,11,11,13,13,8,10,11,12,13,11,13,13,16,15,11,12,13,14,15,7,9,9,11,12,9,11,11,13,13,9,11,11,13,13,11,13,13,15,16,11,13,13,15,14,9,11,11,15,14,11,13,13,17,15,10,12,12,15,15,14,16,16,17,17,13,13,15,15,17,10,11,12,15,15,11,13,13,16,16,11,13,13,15,15,14,15,15,18,18,14,15,15,17,17,8,10,10,13,13,10,12,11,15,15,10,11,12,15,15,14,15,15,18,18,13,14,14,18,18,9,11,11,15,16,11,13,13,17,17,11,13,13,16,16,15,15,16,17,0,14,15,17,0,0,9,11,11,15,15,10,13,12,18,16,11,13,13,15,16,14,16,15,20,20,14,15,16,17,0,13,14,14,20,16,14,15,16,19,18,14,15,15,19,0,18,16,0,20,20,16,18,18,0,0,12,14,14,18,18,13,15,14,18,16,14,15,16,18,20,16,19,16,0,17,17,18,18,19,0,8,10,10,14,14,10,11,11,14,15,10,11,12,15,15,13,15,14,19,17,13,15,15,17,0,9,11,11,16,15,11,13,13,16,16,10,12,13,15,17,14,16,16,18,18,14,15,15,18,0,9,11,11,15,15,11,13,13,16,17,11,13,13,18,17,14,18,16,18,18,15,17,17,18,0,12,14,14,18,18,14,15,15,20,0,13,14,15,17,0,16,18,17,0,0,16,16,0,17,20,12,14,14,18,18,14,16,15,0,18,14,16,15,18,0,16,19,17,0,0,17,18,16,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,3,4,4,5,6,6,5,6,6,5,6,6,6,8,8,6,7,8,5,6,6,6,8,7,6,8,8,5,6,6,6,8,8,6,8,8,6,8,8,8,9,9,8,9,9,6,8,7,7,9,8,8,9,9,5,6,6,6,8,7,6,8,8,6,8,7,8,9,9,7,8,9,6,8,8,8,9,9,8,9,9,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,4,5,8,7,5,7,7,5,8,8,8,10,10,7,9,10,5,8,8,7,10,9,8,10,10,5,8,8,8,10,10,8,10,10,8,10,10,10,12,13,10,13,13,7,10,10,10,13,11,10,13,13,4,8,8,8,11,10,8,10,10,7,10,10,10,13,13,10,11,13,8,10,11,10,13,13,10,13,12,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,10,17,13,17,13,17,17,17,17,3,6,8,9,11,9,15,12,16,17,6,5,5,7,7,8,10,11,17,17,7,8,7,9,9,10,13,13,17,17,8,6,5,7,4,7,5,8,14,17,9,9,8,9,7,9,8,10,16,17,12,10,7,8,4,7,4,7,16,17,12,11,9,10,6,9,5,7,14,17,14,13,10,15,4,8,3,5,14,17,17,14,11,15,6,10,6,8,15,17,0,0,0,0,2,0,0,0,64,0,0,0,248,78,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,88,66,2,0,0,0,0,0,0,0,0,0,0,0,0,0,128,66,2,0,0,0,0,0,0,0,0,0,0,0,0,0,168,66,2,0,0,0,0,0,0,0,0,0,0,0,0,0,208,66,2,0,0,0,0,0,0,0,0,0,0,0,0,0,248,66,2,0,0,0,0,0,32,67,2,0,72,67,2,0,0,0,0,0,0,0,0,0,112,67,2,0,152,67,2,0,192,67,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,2,0,0,0,64,0,0,0,24,66,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,3,8,12,12,13,12,11,13,5,4,6,7,8,8,9,13,9,5,4,5,5,7,9,13,9,6,5,6,6,7,8,12,12,7,5,6,4,5,8,13,11,7,6,6,5,5,6,12,10,8,8,7,7,5,3,8,10,12,13,12,12,9,6,7,4,0,0,0,81,0,0,0,144,78,2,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,232,78,2,0,0,0,0,0,4,0,0,0,81,0,0,0,40,78,2,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,128,78,2,0,0,0,0,0,4,0,0,0,113,2,0,0,152,75,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,16,78,2,0,0,0,0,0,4,0,0,0,113,2,0,0,8,73,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,128,75,2,0,0,0,0,0,2,0,0,0,81,0,0,0,136,72,2,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,224,72,2,0,0,0,0,0,2,0,0,0,169,0,0,0,160,71,2,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,80,72,2,0,0,0,0,0,2,0,0,0,25,0,0,0,104,71,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,136,71,2,0,0,0,0,0,2,0,0,0,169,0,0,0,128,70,2,0,1,0,0,0,0,232,87,225,0,224,255,96,4,0,0,0,0,0,0,0,48,71,2,0,0,0,0,0,2,0,0,0,225,0,0,0,88,69,2,0,1,0,0,0,0,192,221,224,0,0,145,96,4,0,0,0,0,0,0,0,64,70,2,0,0,0,0,0,2,0,0,0,33,1,0,0,232,67,2,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,16,69,2,0,0,0,0,0,2,5,5,7,7,7,7,8,8,8,8,9,9,9,9,9,9,5,6,6,7,7,8,8,8,8,9,9,9,9,9,9,9,9,5,6,6,7,7,8,8,8,8,9,9,9,9,9,9,9,9,7,7,7,8,8,8,8,9,9,9,9,9,9,10,10,10,10,7,7,7,8,8,8,8,9,9,9,9,10,9,10,9,10,10,7,8,8,8,8,9,9,9,9,9,9,10,10,10,10,10,10,7,8,8,8,8,9,9,9,9,9,9,10,10,10,10,10,10,8,9,8,9,9,9,9,9,9,10,10,10,10,10,10,10,10,8,8,8,9,9,9,9,9,10,10,10,10,10,10,10,10,10,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,10,10,10,10,10,10,10,10,10,11,10,10,10,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,10,9,10,10,10,10,10,10,10,10,10,10,11,10,10,10,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,4,4,6,6,7,7,9,8,10,8,10,9,11,11,4,7,6,8,7,9,9,10,10,11,10,11,10,12,10,4,6,7,8,8,9,9,10,10,11,11,11,11,12,12,6,8,8,10,9,11,10,12,11,12,12,12,12,13,13,6,8,8,10,10,10,11,11,11,12,12,13,12,13,13,8,9,9,11,11,12,11,12,12,13,13,13,13,13,13,8,9,9,11,11,11,12,12,12,13,13,13,13,13,13,9,10,10,12,11,13,13,13,13,14,13,13,14,14,14,9,10,11,11,12,12,13,13,13,13,13,14,15,14,14,10,11,11,12,12,13,13,14,14,14,14,14,15,16,16,10,11,11,12,13,13,13,13,15,14,14,15,16,15,16,10,12,12,13,13,14,14,14,15,15,15,15,15,15,16,11,12,12,13,13,14,14,14,15,15,15,16,15,17,16,11,12,12,13,13,13,15,15,14,16,16,16,16,16,17,11,12,12,13,13,14,14,15,14,15,15,17,17,16,16,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,1,3,3,12,12,12,12,12,12,12,12,12,12,3,12,11,12,12,12,12,12,12,12,12,12,12,4,11,10,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,4,4,5,5,4,5,5,6,5,4,5,5,5,6,5,6,5,6,6,5,5,6,6,6,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,6,6,8,8,9,9,11,10,13,13,4,6,5,8,8,9,9,10,10,11,11,14,14,4,6,6,8,8,9,9,10,10,11,11,14,14,6,8,8,9,9,10,10,11,11,12,12,15,15,6,8,8,9,9,10,11,11,11,12,12,15,15,8,9,9,11,10,11,11,12,12,13,13,16,16,8,9,9,10,10,11,11,12,12,13,13,16,16,10,10,10,12,11,12,12,13,13,14,14,16,16,10,10,10,11,12,12,12,13,13,13,14,16,17,11,12,11,12,12,13,13,14,14,15,14,18,17,11,11,12,12,12,13,13,14,14,14,15,19,18,14,15,14,15,15,17,16,17,17,17,17,21,0,14,15,15,16,16,16,16,17,17,18,17,20,21,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,3,3,6,6,7,7,9,9,4,5,5,7,7,8,8,10,9,4,5,5,7,7,8,8,10,10,6,7,7,8,8,9,9,11,10,6,7,7,8,8,9,9,10,11,7,8,8,9,9,10,10,11,11,7,8,8,9,9,10,10,11,11,9,10,10,11,10,11,11,12,12,9,10,10,10,11,11,11,12,12,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,4,5,5,8,8,5,7,6,9,9,5,6,7,9,9,9,9,9,11,11,8,9,9,11,11,5,7,7,9,9,7,8,8,10,10,7,7,8,10,10,9,10,10,11,12,9,10,10,11,12,5,7,7,9,9,7,8,7,10,10,7,8,8,10,10,9,10,10,12,11,9,10,10,12,11,9,10,9,12,12,9,10,10,13,12,9,10,10,12,12,12,12,12,14,14,11,12,12,13,14,9,9,10,12,12,9,10,10,13,13,9,10,10,12,13,11,12,12,14,13,11,12,12,14,14,5,7,7,9,9,7,8,8,10,10,7,8,8,10,10,10,10,10,12,12,9,10,10,12,12,7,8,8,11,10,8,8,9,11,11,8,9,9,11,11,11,11,11,12,13,10,11,11,13,13,6,8,8,10,10,7,9,8,11,10,8,9,9,11,11,10,11,10,13,11,10,11,11,13,13,9,11,10,13,12,10,11,11,13,14,10,11,11,14,13,12,12,13,12,15,12,13,13,15,15,9,10,10,12,13,10,11,10,13,12,10,11,11,13,14,12,13,11,15,13,13,13,13,15,15,5,7,7,9,9,7,8,8,10,10,7,8,8,10,10,9,10,10,12,12,10,10,11,12,13,6,8,8,10,10,8,9,9,11,11,7,8,9,10,11,10,11,11,13,13,10,10,11,11,13,7,8,8,10,11,8,9,9,11,11,8,9,8,11,11,10,11,11,13,13,11,12,11,13,12,9,10,10,13,12,10,11,11,14,13,10,10,11,12,13,12,13,13,15,15,12,11,13,13,14,9,10,11,12,13,10,11,11,13,14,10,11,11,13,13,12,13,13,15,15,12,13,12,15,12,8,9,9,12,12,9,11,10,13,13,9,10,10,13,13,12,13,13,15,15,12,12,12,14,14,9,10,10,13,13,10,11,11,13,14,10,11,11,14,13,13,13,14,14,16,13,13,13,15,15,9,10,10,13,13,10,11,10,14,13,10,11,11,13,14,12,14,13,16,14,12,13,13,14,15,11,12,12,15,14,11,12,13,14,15,12,13,13,16,15,14,12,15,12,16,14,15,15,16,16,11,12,12,14,14,11,13,12,15,14,12,13,13,15,16,13,15,13,17,13,14,15,15,16,17,8,9,9,12,12,9,10,10,12,13,9,10,10,13,13,12,12,12,14,14,12,13,13,15,15,9,10,10,13,12,10,11,11,14,13,10,10,11,13,14,13,13,13,15,15,12,13,14,14,16,9,10,10,13,13,10,11,11,13,14,10,11,11,14,14,13,13,13,15,15,13,14,13,16,14,11,12,12,15,14,12,13,13,16,15,11,12,13,14,15,14,15,15,17,16,13,13,15,13,16,11,12,13,14,15,13,13,13,15,16,11,13,12,15,14,14,15,15,16,16,14,15,12,17,13,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,4,4,8,8,5,7,7,9,9,5,7,7,9,9,8,10,9,12,12,8,9,10,12,12,5,7,7,10,10,7,9,9,11,11,7,9,9,11,11,10,12,11,14,14,9,10,11,13,14,5,7,7,10,10,7,9,9,11,11,7,9,9,11,11,9,11,10,14,13,10,11,11,14,14,8,10,10,14,13,10,12,12,15,14,9,11,11,15,14,13,14,14,17,17,12,14,14,16,16,8,10,10,14,14,9,11,11,14,15,10,12,12,14,15,12,14,13,16,16,13,14,15,15,18,4,7,7,10,10,7,9,9,12,11,7,9,9,11,12,10,12,11,15,14,10,11,12,14,15,7,9,9,12,12,9,11,12,13,13,9,11,12,13,13,12,13,13,15,16,11,13,13,15,16,7,9,9,12,12,9,11,10,13,12,9,11,12,13,14,11,13,12,16,14,12,13,13,15,16,10,12,12,16,15,11,13,13,17,16,11,13,13,17,16,14,15,15,17,17,14,16,16,18,20,9,11,11,15,16,11,13,12,16,16,11,13,13,16,17,14,15,14,18,16,14,16,16,17,20,5,7,7,10,10,7,9,9,12,11,7,9,10,11,12,10,12,11,15,15,10,12,12,14,14,7,9,9,12,12,9,12,11,14,13,9,10,11,12,13,12,13,14,16,16,11,12,13,14,16,7,9,9,12,12,9,12,11,13,13,9,12,11,13,13,11,13,13,16,16,12,13,13,16,15,9,11,11,16,14,11,13,13,16,16,11,12,13,16,16,14,16,16,17,17,13,14,15,16,17,10,12,12,15,15,11,13,13,16,17,11,13,13,16,16,14,16,15,19,19,14,15,15,17,18,8,10,10,14,14,10,12,12,15,15,10,12,12,16,16,14,16,15,20,19,13,15,15,17,16,9,12,12,16,16,11,13,13,16,18,11,14,13,16,17,16,17,16,20,0,15,16,18,18,20,9,11,11,15,15,11,14,12,17,16,11,13,13,17,17,15,17,15,20,20,14,16,16,17,0,13,15,14,18,16,14,15,16,0,18,14,16,16,0,0,18,16,0,0,20,16,18,18,0,0,12,14,14,17,18,13,15,14,20,18,14,16,15,19,19,16,20,16,0,18,16,19,17,19,0,8,10,10,14,14,10,12,12,16,15,10,12,12,16,16,13,15,15,18,17,14,16,16,19,0,9,11,11,16,15,11,14,13,18,17,11,12,13,17,18,14,17,16,18,18,15,16,17,18,18,9,12,12,16,16,11,13,13,16,18,11,14,13,17,17,15,16,16,18,20,16,17,17,20,20,12,14,14,18,17,14,16,16,0,19,13,14,15,18,0,16,0,0,0,0,16,16,0,19,20,13,15,14,0,0,14,16,16,18,19,14,16,15,0,20,16,20,18,0,20,17,20,17,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,5,5,5,6,6,5,6,6,5,6,6,7,8,8,6,8,8,5,6,6,6,8,8,7,8,8,5,7,6,6,8,8,6,8,8,6,8,8,8,9,10,8,10,10,6,8,8,8,10,8,8,10,10,5,6,6,6,8,8,6,8,8,6,8,8,8,10,10,8,8,10,6,8,8,8,10,10,8,10,9,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,4,5,8,7,5,7,8,5,8,8,8,10,11,8,10,11,5,8,8,8,11,10,8,11,11,4,8,8,8,11,11,8,11,11,8,11,11,11,13,14,11,15,14,8,11,11,10,13,12,11,14,14,4,8,8,8,11,11,8,11,11,7,11,11,11,15,14,10,12,14,8,11,11,11,14,14,11,14,13,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,14,17,15,17,16,14,13,16,10,7,7,10,13,10,15,16,9,4,4,6,5,7,9,16,12,8,7,8,8,8,11,16,14,7,4,6,3,5,8,15,13,8,5,7,4,5,7,16,12,9,6,8,3,3,5,16,14,13,7,10,5,5,7,15,2,0,0,0,64,0,0,0,192,92,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,136,80,2,0,0,0,0,0,0,0,0,0,0,0,0,0,176,80,2,0,0,0,0,0,0,0,0,0,0,0,0,0,216,80,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,81,2,0,0,0,0,0,0,0,0,0,0,0,0,0,40,81,2,0,0,0,0,0,80,81,2,0,120,81,2,0,0,0,0,0,0,0,0,0,160,81,2,0,200,81,2,0,240,81,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,2,0,0,0,64,0,0,0,72,80,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,6,9,13,12,14,11,10,13,8,4,5,7,8,7,8,12,11,4,3,5,5,7,9,14,11,6,5,6,6,6,7,13,13,7,5,6,4,5,7,14,11,7,6,6,5,5,6,13,9,7,8,6,7,5,3,9,9,12,13,12,14,10,6,7,4,0,0,0,81,0,0,0,88,92,2,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,176,92,2,0,0,0,0,0,4,0,0,0,81,0,0,0,240,91,2,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,72,92,2,0,0,0,0,0,4,0,0,0,113,2,0,0,96,89,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,216,91,2,0,0,0,0,0,4,0,0,0,113,2,0,0,208,86,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,72,89,2,0,0,0,0,0,2,0,0,0,81,0,0,0,80,86,2,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,168,86,2,0,0,0,0,0,2,0,0,0,169,0,0,0,104,85,2,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,24,86,2,0,0,0,0,0,2,0,0,0,25,0,0,0,48,85,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,80,85,2,0,0,0,0,0,2,0,0,0,81,0,0,0,176,84,2,0,1,0,0,0,0,224,63,225,0,224,255,96,4,0,0,0,0,0,0,0,8,85,2,0,0,0,0,0,2,0,0,0,225,0,0,0,136,83,2,0,1,0,0,0,0,192,221,224,0,0,145,96,4,0,0,0,0,0,0,0,112,84,2,0,0,0,0,0,2,0,0,0,33,1,0,0,24,82,2,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,64,83,2,0,0,0,0,0,2,5,5,7,6,7,7,8,8,8,8,9,9,9,9,9,9,5,6,6,7,7,8,8,8,8,9,9,9,9,9,9,10,10,5,6,6,7,7,8,8,8,8,9,8,9,9,9,9,10,9,7,7,7,8,8,8,8,9,9,9,9,9,9,10,10,10,10,7,7,7,8,8,8,8,9,9,9,9,10,9,10,10,10,10,7,8,8,8,8,9,9,9,9,9,9,10,10,10,10,10,10,7,8,8,9,8,9,9,9,9,10,9,10,10,10,10,10,10,8,8,8,9,9,9,9,9,9,9,10,10,10,10,10,10,10,8,9,8,9,9,9,9,10,9,10,10,10,10,10,10,10,10,9,9,9,9,9,9,10,9,10,10,10,10,10,10,10,10,10,9,9,9,9,9,10,9,10,10,10,10,10,10,10,10,10,10,9,9,9,10,9,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,11,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,10,10,10,10,10,10,10,10,10,10,10,11,11,11,10,11,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,4,4,6,6,7,6,8,7,9,8,10,9,11,11,4,7,7,8,7,9,9,10,10,11,11,11,11,12,12,4,7,7,7,7,9,9,10,10,11,11,12,12,12,11,6,8,8,9,9,10,10,11,11,12,12,13,12,13,13,6,8,8,9,9,10,11,11,11,12,12,13,14,13,13,8,9,9,11,11,12,12,12,13,14,13,14,14,14,15,8,9,9,11,11,11,12,13,14,13,14,15,17,14,15,9,10,10,12,12,13,13,13,14,15,15,15,16,16,16,9,11,11,12,12,13,13,14,14,14,15,16,16,16,16,10,12,12,13,13,14,14,15,15,15,16,17,17,17,17,10,12,11,13,13,15,14,15,14,16,17,16,16,16,16,11,13,12,14,14,14,14,15,16,17,16,17,17,17,17,11,13,12,14,14,14,15,17,16,17,17,17,17,17,17,12,13,13,15,16,15,16,17,17,16,16,17,17,17,17,12,13,13,15,15,15,16,17,17,17,16,17,16,17,17,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,1,3,3,10,10,10,10,10,10,4,10,10,10,10,10,10,10,10,4,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,2,4,4,5,5,4,5,5,6,5,4,5,5,5,6,5,6,5,6,6,5,5,6,6,6,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,6,6,8,8,9,9,10,11,13,14,4,6,5,8,8,9,9,10,10,11,11,14,14,4,6,6,8,8,9,9,10,10,11,11,14,14,6,8,8,9,9,10,10,11,11,12,12,15,15,6,8,8,9,9,10,11,11,11,12,12,15,15,8,9,9,11,10,11,11,12,12,13,13,15,16,8,9,9,10,11,11,11,12,12,13,13,16,16,10,10,11,11,11,12,12,13,13,13,14,17,16,9,10,11,12,11,12,12,13,13,13,13,16,18,11,12,11,12,12,13,13,13,14,15,14,17,17,11,11,12,12,12,13,13,13,14,14,15,18,17,14,15,15,15,15,16,16,17,17,19,18,0,20,14,15,14,15,15,16,16,16,17,18,16,20,18,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,3,3,6,6,7,7,9,9,4,5,5,7,7,8,8,10,10,4,5,5,7,7,8,8,10,10,6,7,7,8,8,9,9,11,10,6,7,7,8,8,9,9,10,10,7,8,8,9,9,10,10,11,11,7,8,8,9,9,10,10,11,11,9,10,10,11,10,11,11,12,12,9,10,10,10,10,11,11,12,12,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,4,5,5,8,8,5,7,6,9,9,5,6,7,9,9,9,9,9,11,11,9,9,9,11,11,5,7,7,9,9,7,8,8,10,10,7,7,8,10,10,9,10,10,11,12,9,10,10,11,12,5,7,7,9,9,7,8,7,10,10,7,8,8,10,10,9,10,9,12,11,9,10,10,12,11,9,10,9,12,12,9,10,10,13,12,9,10,10,12,13,12,12,12,14,14,11,12,12,13,14,9,9,10,12,12,9,10,10,12,12,9,10,10,12,13,11,12,11,14,13,12,12,12,14,13,5,7,7,9,9,7,8,8,10,10,7,8,8,10,10,10,10,10,12,12,9,10,10,12,12,7,8,8,11,10,8,8,9,11,11,8,9,9,11,11,11,11,11,12,13,10,11,11,13,13,6,8,8,10,10,7,9,8,11,10,8,9,9,11,11,10,11,10,13,11,10,11,11,13,13,9,11,10,13,12,10,11,11,13,13,10,11,11,13,13,12,12,13,12,15,12,13,13,15,15,9,10,10,12,13,10,11,10,13,12,10,11,11,13,14,12,13,11,15,13,12,13,13,15,15,5,7,7,9,9,7,8,8,10,10,7,8,8,10,10,9,10,10,12,12,10,10,11,12,12,6,8,8,10,10,8,9,9,11,11,7,8,9,10,11,10,11,11,13,13,10,10,11,11,13,7,8,8,10,10,8,9,9,11,11,8,9,9,11,11,10,11,11,13,13,11,11,11,13,12,9,10,10,13,12,10,11,11,14,13,10,10,11,12,13,12,13,13,15,15,12,11,13,13,14,9,10,11,12,13,10,11,11,13,13,10,11,11,13,13,12,13,13,15,15,12,13,12,15,12,8,9,9,12,12,9,11,10,13,13,9,10,10,13,13,12,13,13,15,14,12,12,12,14,13,9,10,10,13,12,10,11,11,13,13,10,11,11,14,12,13,13,14,14,16,12,13,13,15,15,9,10,10,13,13,10,11,10,14,13,10,11,11,13,14,12,14,13,15,14,13,13,13,15,15,11,13,12,15,14,11,12,13,14,15,12,13,13,16,14,14,12,15,12,16,14,15,15,17,15,11,12,12,14,14,11,13,11,15,14,12,13,13,15,15,13,15,12,17,13,14,15,15,16,16,8,9,9,12,12,9,10,10,12,13,9,10,10,13,13,12,12,12,14,14,12,13,13,15,15,9,10,10,13,12,10,11,11,14,13,10,10,11,13,14,12,13,13,15,15,12,12,13,14,16,9,10,10,13,13,10,11,11,13,14,10,11,11,14,13,12,13,13,14,15,13,14,13,16,14,11,12,12,14,14,12,13,13,15,14,11,12,13,14,15,14,15,15,16,16,13,13,15,13,16,11,12,12,14,15,12,13,13,14,15,11,13,12,15,14,14,15,15,16,16,14,15,12,16,13,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,4,4,7,7,5,7,7,9,9,5,7,7,9,9,8,9,9,12,12,8,9,9,11,12,5,7,7,10,10,7,9,9,11,11,7,9,9,10,11,10,11,11,13,13,9,10,11,13,13,5,7,7,10,10,7,9,9,11,10,7,9,9,11,11,9,11,10,13,13,10,11,11,14,13,8,10,10,14,13,10,11,11,15,14,9,11,11,14,14,13,14,13,16,16,12,13,13,15,15,8,10,10,13,14,9,11,11,14,14,10,11,11,14,15,12,13,13,15,15,13,14,14,15,16,5,7,7,10,10,7,9,9,11,11,7,9,9,11,12,10,11,11,14,14,10,11,11,14,14,7,9,9,12,12,9,11,11,13,13,9,11,11,13,13,12,12,13,15,15,11,12,13,15,16,7,9,9,11,11,8,11,10,13,12,9,11,11,13,13,11,13,12,15,13,11,13,13,15,16,9,12,11,15,14,11,12,13,16,15,11,13,13,15,16,14,14,15,17,16,13,15,16,0,17,9,11,11,15,15,10,13,12,15,15,11,13,13,15,16,13,15,13,16,15,14,16,15,0,19,5,7,7,10,10,7,9,9,11,11,7,9,9,11,11,10,12,11,14,14,10,11,12,14,14,7,9,9,12,12,9,11,11,14,13,9,10,11,12,13,11,13,13,16,16,11,12,13,13,16,7,9,9,12,12,9,11,11,13,13,9,11,11,13,13,11,13,13,15,15,12,13,12,15,14,9,11,11,15,14,11,13,12,16,16,10,12,12,15,15,13,15,15,17,19,13,14,15,16,17,10,12,12,15,15,11,13,13,16,16,11,13,13,15,16,13,15,15,0,0,14,15,15,16,16,8,10,10,14,14,10,12,12,15,15,10,12,11,15,16,14,15,15,19,20,13,14,14,18,16,9,11,11,15,15,11,13,13,17,16,11,13,13,16,16,15,17,17,20,20,14,15,16,17,20,9,11,11,15,15,10,13,12,16,15,11,13,13,15,17,14,16,15,18,0,14,16,15,18,20,12,14,14,0,0,14,14,16,0,0,13,16,15,0,0,17,17,18,0,0,16,17,19,19,0,12,14,14,18,0,12,16,14,0,17,13,15,15,18,0,16,18,17,0,17,16,18,17,0,0,7,10,10,14,14,10,12,11,15,15,10,12,12,16,15,13,15,15,18,0,14,15,15,17,0,9,11,11,15,15,11,13,13,16,16,11,12,13,16,16,14,15,16,17,17,14,16,16,16,18,9,11,12,16,16,11,13,13,17,17,11,14,13,20,17,15,16,16,19,0,15,16,17,0,19,11,13,14,17,16,14,15,15,20,18,13,14,15,17,19,16,18,18,0,20,16,16,19,17,0,12,15,14,17,0,14,15,15,18,19,13,16,15,19,20,15,18,18,0,20,17,0,16,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,5,4,5,6,6,5,6,6,5,6,6,7,8,8,6,8,8,5,6,6,6,8,8,7,8,8,5,7,6,7,8,8,6,8,8,7,8,8,8,9,10,8,10,10,6,8,8,8,10,8,8,10,10,5,6,6,6,8,8,7,8,8,6,8,8,8,10,10,8,8,10,7,8,8,8,10,10,8,10,9,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,4,5,8,7,5,7,8,5,8,8,8,10,11,8,10,11,5,8,8,8,11,10,8,11,11,4,8,8,8,11,11,8,11,11,8,11,11,11,13,14,11,14,14,8,11,11,10,14,12,11,14,14,4,8,8,8,11,11,8,11,11,7,11,11,11,14,14,10,12,14,8,11,11,11,14,14,11,14,13,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,14,14,14,15,13,15,12,16,10,8,7,9,9,8,12,16,10,5,4,6,5,6,9,16,14,8,6,8,7,8,10,16,14,7,4,6,3,5,8,16,15,9,5,7,4,4,7,16,13,10,6,7,4,3,4,13,13,12,7,9,5,5,6,12,2,0,0,0,64,0,0,0,192,105,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,80,94,2,0,0,0,0,0,0,0,0,0,0,0,0,0,120,94,2,0,0,0,0,0,0,0,0,0,0,0,0,0,160,94,2,0,0,0,0,0,0,0,0,0,0,0,0,0,200,94,2,0,0,0,0,0,0,0,0,0,0,0,0,0,240,94,2,0,0,0,0,0,24,95,2,0,64,95,2,0,0,0,0,0,0,0,0,0,104,95,2,0,144,95,2,0,184,95,2], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+144820); +/* memory initializer */ allocate([2,0,0,0,64,0,0,0,16,94,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,5,9,14,12,15,13,10,13,7,4,5,6,8,7,8,12,13,4,3,5,5,6,9,15,12,6,5,6,6,6,7,14,14,7,4,6,4,6,8,15,12,6,6,5,5,5,6,14,9,7,8,6,7,5,4,10,10,13,14,14,15,10,6,8,4,0,0,0,81,0,0,0,88,105,2,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,176,105,2,0,0,0,0,0,4,0,0,0,81,0,0,0,240,104,2,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,72,105,2,0,0,0,0,0,4,0,0,0,113,2,0,0,96,102,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,216,104,2,0,0,0,0,0,4,0,0,0,113,2,0,0,208,99,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,72,102,2,0,0,0,0,0,2,0,0,0,81,0,0,0,80,99,2,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,168,99,2,0,0,0,0,0,2,0,0,0,169,0,0,0,104,98,2,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,24,99,2,0,0,0,0,0,2,0,0,0,25,0,0,0,48,98,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,80,98,2,0,0,0,0,0,2,0,0,0,81,0,0,0,176,97,2,0,1,0,0,0,0,32,53,225,0,32,245,96,4,0,0,0,0,0,0,0,8,98,2,0,0,0,0,0,2,0,0,0,169,0,0,0,200,96,2,0,1,0,0,0,0,128,211,224,0,0,122,96,4,0,0,0,0,0,0,0,120,97,2,0,0,0,0,0,2,0,0,0,169,0,0,0,224,95,2,0,1,0,0,0,0,0,88,224,0,0,16,96,4,0,0,0,0,0,0,0,144,96,2,0,0,0,0,0,2,5,5,6,6,7,7,8,7,8,8,8,8,5,6,6,7,7,8,8,8,8,8,8,8,8,5,6,6,7,7,8,7,8,8,8,8,8,8,6,7,7,7,8,8,8,8,8,9,9,9,9,6,7,7,8,7,8,8,9,9,9,9,9,9,7,8,8,8,8,8,8,9,9,9,9,9,9,7,8,8,8,8,8,8,9,9,9,9,9,9,8,8,8,8,9,9,9,9,9,9,9,9,9,8,8,8,9,9,9,9,9,9,9,9,9,9,8,8,9,9,9,9,9,9,9,9,9,9,9,8,9,9,9,9,9,9,9,9,9,9,9,9,8,9,9,9,9,9,9,9,9,9,9,9,9,8,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,4,4,7,6,7,6,8,7,9,7,9,8,4,7,6,8,8,9,8,10,9,10,10,11,11,4,7,7,8,8,8,8,9,10,11,11,11,11,6,8,8,10,10,10,10,11,11,12,12,12,12,7,8,8,10,10,10,10,11,11,12,12,13,13,7,9,9,11,10,12,12,13,13,14,13,14,14,7,9,9,10,11,11,12,13,13,13,13,16,14,9,10,10,12,12,13,13,14,14,15,16,15,16,9,10,10,12,12,12,13,14,14,14,15,16,15,10,12,12,13,13,15,13,16,16,15,17,17,17,10,11,11,12,14,14,14,15,15,17,17,15,17,11,12,12,14,14,14,15,15,15,17,16,17,17,10,12,12,13,14,14,14,17,15,17,17,17,17,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,3,2,12,12,12,12,12,12,4,12,12,12,12,12,12,12,12,5,12,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,2,4,4,5,5,4,5,5,6,5,4,5,5,5,6,5,6,5,6,6,5,5,6,6,6,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,6,6,8,8,10,10,11,11,14,13,4,6,5,8,8,9,9,11,10,12,11,15,14,4,5,6,8,8,9,9,11,11,11,11,14,14,6,8,8,10,9,11,11,11,11,12,12,15,15,6,8,8,9,9,11,11,11,12,12,12,15,15,8,10,10,11,11,11,11,12,12,13,13,15,16,8,10,10,11,11,11,11,12,12,13,13,16,16,10,11,11,12,12,12,12,13,13,13,13,17,16,10,11,11,12,12,12,12,13,13,13,14,16,17,11,12,12,13,13,13,13,14,14,15,14,18,17,11,12,12,13,13,13,13,14,14,14,15,19,18,14,15,15,15,15,16,16,18,19,18,18,0,0,14,15,15,16,15,17,17,16,18,17,18,0,0,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,4,4,7,7,8,8,9,9,4,6,5,8,8,8,8,10,10,4,5,6,8,8,8,8,10,10,7,8,8,9,9,9,9,11,11,7,8,8,9,9,9,9,11,11,8,8,8,9,9,10,11,12,12,8,8,8,9,9,10,10,12,12,10,10,10,11,11,12,12,13,13,10,10,10,11,11,12,12,13,13,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,4,5,5,8,8,5,7,6,9,9,5,6,7,9,9,9,9,9,11,11,9,9,9,11,11,5,7,7,9,9,7,8,8,10,10,7,7,8,10,10,10,10,10,11,12,9,10,10,11,12,5,7,7,9,9,6,8,7,10,10,7,8,8,10,10,9,10,10,12,11,9,10,10,12,11,9,10,10,12,12,10,10,10,13,12,9,10,10,12,13,12,12,12,14,14,11,12,12,13,14,9,10,10,12,12,9,10,10,12,13,10,10,10,12,13,11,12,12,14,13,12,12,12,14,13,5,7,7,10,9,7,8,8,10,10,7,8,8,10,10,10,10,10,12,12,10,10,10,12,12,7,8,8,11,10,8,8,9,11,11,8,9,9,11,11,10,11,11,12,13,10,11,11,13,13,6,8,8,10,10,7,9,8,11,10,8,9,9,11,11,10,11,10,13,11,10,11,11,13,13,9,10,10,13,13,10,11,11,13,13,10,11,11,14,13,12,11,13,12,15,12,13,13,15,15,9,10,10,12,13,10,11,10,13,13,10,11,11,13,13,12,13,11,15,13,12,13,13,15,15,5,7,7,9,10,7,8,8,10,10,7,8,8,10,10,10,10,10,12,12,10,10,11,12,12,6,8,8,10,10,8,9,9,11,11,7,8,9,10,11,10,11,11,13,13,10,10,11,11,13,7,8,8,10,11,8,9,9,11,11,8,9,8,11,11,10,11,11,13,13,10,11,11,13,12,9,10,10,13,12,10,11,11,14,13,10,10,11,13,13,12,13,13,15,15,12,11,13,12,14,9,10,10,12,13,10,11,11,13,14,10,11,11,13,13,12,13,13,15,15,12,13,12,15,12,8,9,9,12,12,9,11,10,13,13,9,10,10,13,13,12,13,13,15,15,12,12,12,14,14,9,10,10,13,13,10,11,11,13,14,10,11,11,14,12,13,13,14,14,16,12,13,13,15,14,9,10,10,13,13,10,11,10,14,13,10,11,11,13,14,12,14,13,16,14,13,13,13,14,15,11,13,12,15,14,11,12,13,14,15,12,13,13,16,15,14,12,15,12,16,14,15,15,17,16,11,12,12,14,15,11,13,11,15,14,12,13,13,15,16,13,15,12,17,13,14,15,15,16,16,8,9,9,12,12,9,10,10,13,13,9,10,10,13,13,12,13,12,14,14,12,13,13,15,15,9,10,10,13,13,10,11,11,14,13,10,10,11,13,14,12,13,13,15,14,12,12,14,14,16,9,10,10,13,13,10,11,11,13,14,10,11,11,14,13,13,13,13,15,15,13,14,13,16,14,11,12,12,14,14,12,13,13,16,15,11,12,13,14,15,14,15,15,16,16,14,13,15,13,17,11,12,12,14,15,12,13,13,15,16,11,13,12,15,15,14,15,14,16,16,14,15,12,17,13,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,4,4,7,8,5,7,7,9,9,5,7,7,9,9,8,9,9,12,11,8,9,9,11,12,5,7,7,10,10,7,9,9,11,11,7,9,9,10,11,10,11,11,13,13,9,10,11,12,13,5,7,7,10,10,7,9,9,11,10,7,9,9,11,11,9,11,10,13,13,10,11,11,13,13,8,10,10,14,13,10,11,11,15,14,9,11,11,15,14,13,14,13,16,14,12,13,13,15,16,8,10,10,13,14,9,11,11,14,15,10,11,11,14,15,12,13,13,15,15,12,13,14,15,16,5,7,7,10,10,7,9,9,11,11,7,9,9,11,12,10,11,11,14,13,10,11,11,14,14,7,9,9,12,12,9,11,11,13,13,9,11,11,13,13,12,13,12,14,14,11,12,13,15,15,7,9,9,12,12,8,11,10,13,12,9,11,11,13,13,11,13,12,15,13,11,13,13,15,16,9,12,11,15,15,11,12,12,16,15,11,12,13,16,16,13,14,15,16,15,13,15,15,17,17,9,11,11,14,15,10,12,12,15,15,11,13,12,15,16,13,15,14,16,16,13,15,15,17,19,5,7,7,10,10,7,9,9,12,11,7,9,9,11,11,10,11,11,14,14,10,11,11,13,14,7,9,9,12,12,9,11,11,13,13,9,10,11,12,13,11,13,12,16,15,11,12,12,14,15,7,9,9,12,12,9,11,11,13,13,9,11,11,13,12,11,13,12,15,16,12,13,13,15,14,9,11,11,15,14,11,13,12,16,15,10,11,12,15,15,13,14,14,18,17,13,14,14,15,17,10,11,11,14,15,11,13,12,15,17,11,13,12,15,16,13,15,14,18,17,14,15,15,16,18,7,10,10,14,14,10,12,12,15,15,10,12,12,15,15,14,15,15,18,17,13,15,15,16,16,9,11,11,16,15,11,13,13,16,18,11,13,13,16,16,15,16,16,0,0,14,15,16,18,17,9,11,11,15,15,10,13,12,17,16,11,12,13,16,17,14,15,16,19,19,14,15,15,0,20,12,14,14,0,0,13,14,16,19,18,13,15,16,20,17,16,18,0,0,0,15,16,17,18,19,11,14,14,0,19,12,15,14,17,17,13,15,15,0,0,16,17,15,20,19,15,17,16,19,0,8,10,10,14,15,10,12,11,15,15,10,11,12,16,15,13,14,14,19,17,14,15,15,0,0,9,11,11,16,15,11,13,13,17,16,10,12,13,16,17,14,15,15,18,18,14,15,16,20,19,9,12,12,0,15,11,13,13,16,17,11,13,13,19,17,14,16,16,18,17,15,16,16,17,19,11,14,14,18,18,13,14,15,0,0,12,14,15,19,18,15,16,19,0,19,15,16,19,19,17,12,14,14,16,19,13,15,15,0,17,13,15,14,18,18,15,16,15,0,18,16,17,17,0,0,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,5,5,5,6,6,5,6,6,5,6,6,7,8,8,6,8,8,5,6,6,6,8,7,7,8,8,5,6,6,7,8,8,6,8,8,6,8,8,8,9,10,8,10,10,6,8,8,7,10,8,8,10,10,5,6,6,6,8,8,7,8,8,6,8,8,8,10,10,8,8,10,6,8,8,8,10,10,8,10,9,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,4,5,8,7,5,7,8,5,8,8,8,11,11,8,10,11,5,8,8,8,11,10,8,11,11,4,8,8,8,11,11,8,11,11,8,11,11,11,13,14,11,13,13,7,11,11,10,13,12,11,14,14,4,8,8,8,11,11,8,11,11,8,11,11,11,14,13,10,12,13,8,11,11,11,13,13,11,13,13,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,13,15,17,17,15,15,12,17,11,9,7,10,10,9,12,17,10,6,3,6,5,7,10,17,15,10,6,9,8,9,11,17,15,8,4,7,3,5,9,16,16,10,5,8,4,5,8,16,13,11,5,8,3,3,5,14,13,12,7,10,5,5,7,14,2,0,0,0,64,0,0,0,152,118,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,80,107,2,0,0,0,0,0,0,0,0,0,0,0,0,0,120,107,2,0,0,0,0,0,0,0,0,0,0,0,0,0,160,107,2,0,0,0,0,0,0,0,0,0,0,0,0,0,200,107,2,0,0,0,0,0,0,0,0,0,0,0,0,0,240,107,2,0,0,0,0,0,24,108,2,0,64,108,2,0,0,0,0,0,0,0,0,0,104,108,2,0,144,108,2,0,184,108,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,2,0,0,0,64,0,0,0,16,107,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,5,8,13,10,17,11,11,15,7,2,4,5,8,7,9,16,13,4,3,5,6,8,11,20,10,4,5,5,7,6,8,18,15,7,6,7,8,10,14,20,10,6,7,6,9,7,8,17,9,8,10,8,10,5,4,11,12,17,19,14,16,10,7,12,4,0,0,0,81,0,0,0,48,118,2,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,136,118,2,0,0,0,0,0,4,0,0,0,81,0,0,0,200,117,2,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,32,118,2,0,0,0,0,0,4,0,0,0,113,2,0,0,56,115,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,176,117,2,0,0,0,0,0,4,0,0,0,113,2,0,0,168,112,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,32,115,2,0,0,0,0,0,2,0,0,0,81,0,0,0,40,112,2,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,128,112,2,0,0,0,0,0,2,0,0,0,169,0,0,0,64,111,2,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,240,111,2,0,0,0,0,0,2,0,0,0,25,0,0,0,8,111,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,40,111,2,0,0,0,0,0,2,0,0,0,49,0,0,0,176,110,2,0,1,0,0,0,0,176,31,225,0,32,245,96,3,0,0,0,0,0,0,0,232,110,2,0,0,0,0,0,2,0,0,0,169,0,0,0,200,109,2,0,1,0,0,0,0,128,211,224,0,0,122,96,4,0,0,0,0,0,0,0,120,110,2,0,0,0,0,0,2,0,0,0,169,0,0,0,224,108,2,0,1,0,0,0,0,0,88,224,0,0,16,96,4,0,0,0,0,0,0,0,144,109,2,0,0,0,0,0,2,5,4,6,6,7,7,8,8,8,8,9,8,5,5,6,7,7,8,8,8,8,9,9,9,9,5,6,5,7,7,8,8,8,8,9,9,9,9,6,7,7,8,8,8,8,9,8,9,9,9,9,6,7,7,8,7,8,8,9,9,9,9,9,9,7,8,8,8,8,9,9,9,9,9,9,9,9,7,8,8,9,8,9,8,9,9,9,9,9,9,8,9,8,9,9,9,9,9,9,9,9,10,10,8,8,9,9,9,9,9,9,9,9,10,9,10,9,9,9,9,9,9,9,9,9,9,9,9,9,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,9,9,9,9,9,9,9,9,10,9,9,10,10,9,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,4,4,6,6,6,6,7,7,8,8,9,9,5,7,7,8,7,7,7,9,8,10,9,10,11,5,7,7,8,8,7,7,8,9,10,10,11,11,6,8,8,9,9,9,9,11,10,12,12,15,12,6,8,8,9,9,9,9,11,11,12,11,14,12,7,8,8,10,10,12,12,13,13,13,15,13,13,7,8,8,10,10,11,11,13,12,14,15,15,15,9,10,10,11,12,13,13,14,15,14,15,14,15,8,10,10,12,12,14,14,15,14,14,15,15,14,10,12,12,14,14,15,14,15,15,15,14,15,15,10,12,12,13,14,15,14,15,15,14,15,15,15,12,15,13,15,14,15,15,15,15,15,15,15,15,13,13,15,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,3,2,9,9,7,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,4,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,2,4,4,5,5,4,5,5,5,5,4,5,5,5,5,5,6,6,6,6,5,6,6,6,6,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,6,6,8,8,10,9,11,10,14,13,4,6,5,8,8,9,9,11,10,11,11,14,14,4,5,6,8,8,9,9,10,10,11,11,14,14,6,8,8,9,9,10,10,11,11,12,12,16,15,7,8,8,9,9,10,10,11,11,12,12,15,15,9,10,10,10,10,11,11,12,12,12,12,15,15,9,10,9,10,11,11,11,12,12,12,13,15,15,10,10,11,11,11,12,12,13,12,13,13,16,15,10,11,11,11,11,12,12,13,12,13,13,16,17,11,11,12,12,12,13,13,13,14,14,15,17,17,11,11,12,12,12,13,13,13,14,14,14,16,18,14,15,15,15,15,16,16,16,16,17,18,0,0,14,15,15,15,15,17,16,17,18,17,17,18,0,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,4,4,7,7,7,7,9,9,4,6,6,8,8,8,8,9,9,4,6,6,8,8,8,8,9,9,7,8,8,9,9,9,9,11,10,7,8,8,9,9,9,9,10,10,7,8,8,9,9,10,10,11,11,7,8,8,9,9,10,10,11,11,9,9,9,10,10,11,11,12,12,9,9,9,10,11,11,11,12,12,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,4,5,5,9,9,5,6,6,9,9,5,6,6,9,9,9,10,9,12,12,9,9,10,12,12,5,7,7,10,10,7,7,8,10,10,6,7,8,10,10,10,10,10,11,13,10,9,10,12,13,5,7,7,10,10,6,8,7,10,10,7,8,7,10,10,9,10,10,12,12,10,10,10,13,11,9,10,10,13,13,10,11,10,13,13,10,10,10,13,13,12,12,13,14,14,12,12,13,14,14,9,10,10,13,13,10,10,10,13,13,10,10,10,13,13,12,13,12,15,14,12,13,12,15,15,5,7,6,10,10,7,8,8,10,10,7,8,8,10,10,10,11,10,13,13,10,10,10,12,12,7,8,8,11,10,8,8,9,10,11,8,9,9,11,11,11,10,11,11,14,11,11,11,13,13,6,8,8,10,10,7,9,8,11,10,8,9,9,11,11,10,11,10,14,11,10,11,11,13,13,10,11,11,14,13,10,10,11,14,13,10,11,11,14,14,12,11,13,12,16,13,14,14,15,15,10,10,11,13,14,10,11,10,14,13,10,11,11,14,14,12,13,12,15,13,13,13,14,15,16,5,7,7,10,10,7,8,8,10,10,7,8,8,10,10,10,10,10,13,13,10,10,11,12,13,6,8,8,11,10,8,9,9,11,11,7,8,9,10,11,10,11,11,13,13,10,10,11,11,13,6,8,8,10,11,8,9,9,11,11,8,9,8,12,10,10,11,11,13,13,10,11,10,14,11,10,10,10,14,13,10,11,11,14,13,10,10,11,13,13,12,14,14,16,16,12,12,13,13,15,10,11,11,13,14,10,11,11,14,15,10,11,10,13,13,13,14,13,16,16,12,13,11,15,12,9,10,10,13,13,10,11,11,14,13,10,10,11,13,14,13,14,13,16,16,13,13,13,15,16,9,10,10,13,13,10,10,11,13,14,10,11,11,15,13,13,13,14,14,18,13,13,14,16,15,9,10,10,13,14,10,11,10,14,13,10,11,11,13,14,13,14,13,16,15,13,13,14,15,16,12,13,12,16,14,11,11,13,15,15,13,14,13,16,15,15,12,16,12,17,14,15,15,17,17,12,13,13,14,16,11,13,11,16,15,12,13,14,15,16,14,15,13,0,14,14,16,16,0,0,9,10,10,13,13,10,11,10,14,14,10,11,11,13,13,12,13,13,14,16,13,14,14,16,16,9,10,10,14,14,11,11,11,14,13,10,10,11,14,14,13,13,13,16,16,13,13,14,14,17,9,10,10,13,14,10,11,11,13,15,10,11,10,14,14,13,13,13,14,17,13,14,13,17,14,12,13,13,16,14,13,14,13,16,15,12,12,13,15,16,15,15,16,18,16,15,13,15,14,0,12,12,13,14,16,13,13,14,15,16,11,12,11,16,14,15,16,16,17,17,14,15,12,17,12,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,5,8,8,5,8,7,9,9,5,7,8,9,9,9,10,9,12,12,9,9,10,12,12,6,8,8,11,10,8,10,10,11,11,8,9,10,11,11,10,11,11,14,13,10,11,11,13,13,5,8,8,10,10,8,10,10,11,11,8,10,10,11,11,10,11,11,13,13,10,11,11,13,13,9,11,11,15,14,10,12,12,15,14,10,12,11,15,14,13,14,14,16,16,12,14,13,17,15,9,11,11,14,15,10,11,12,14,16,10,11,12,14,16,12,13,14,16,16,13,13,15,15,18,5,8,8,11,11,8,10,10,12,12,8,10,10,12,13,11,12,12,14,14,11,12,12,15,15,8,10,10,13,13,10,12,12,13,13,10,12,12,14,14,12,13,13,15,15,12,13,13,16,16,7,10,10,12,12,10,12,11,13,13,10,12,12,13,14,12,13,12,15,14,12,13,13,16,16,10,12,12,17,16,12,13,13,16,15,11,13,13,17,17,15,15,15,16,17,14,15,15,19,19,10,12,12,15,16,11,13,12,15,18,11,13,13,16,16,14,15,15,17,17,14,15,15,17,19,5,8,8,11,11,8,10,10,12,12,8,10,10,12,12,11,12,12,16,15,11,12,12,14,15,7,10,10,13,13,10,12,12,14,13,10,11,12,13,13,12,13,13,16,16,12,12,13,15,15,8,10,10,13,13,10,12,12,14,14,10,12,12,13,13,12,13,13,16,16,12,13,13,15,15,10,12,12,16,15,11,13,13,17,16,11,12,13,16,15,13,15,15,19,17,14,15,14,17,16,10,12,12,16,16,11,13,13,16,17,12,13,13,15,17,14,15,15,17,19,14,15,15,17,17,8,11,11,16,16,10,13,12,17,17,10,12,13,16,16,15,17,16,20,19,14,15,17,18,19,9,12,12,16,17,11,13,14,17,18,11,13,13,19,18,16,17,18,19,19,15,16,16,19,19,9,12,12,16,17,11,14,13,18,17,11,13,13,17,17,16,17,16,20,19,14,16,16,18,18,12,15,15,19,17,14,15,16,0,20,13,15,16,20,17,18,16,20,0,0,15,16,19,20,0,12,15,14,18,19,13,16,15,20,19,13,16,15,20,18,17,18,17,0,20,16,17,16,0,0,8,11,11,16,15,10,12,12,17,17,10,13,13,17,16,14,16,15,18,20,15,16,16,19,19,9,12,12,16,16,11,13,13,17,16,11,13,14,17,18,15,15,16,20,20,16,16,17,19,19,9,13,12,16,17,11,14,13,17,17,11,14,14,18,17,14,16,15,18,19,16,17,18,18,19,12,14,15,19,18,13,15,16,18,0,13,14,15,0,0,16,16,17,20,0,17,17,20,20,0,12,15,15,19,20,13,15,15,0,0,14,16,15,0,0,15,18,16,0,0,17,18,16,0,19,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,4,4,5,6,6,5,6,6,5,7,7,7,8,8,6,8,8,5,7,7,6,8,8,7,8,8,4,7,7,7,8,8,7,8,8,7,8,8,8,9,10,8,10,10,6,8,8,8,10,8,8,10,10,5,7,7,7,8,8,7,8,8,6,8,8,8,10,10,8,8,10,6,8,8,8,10,10,8,10,9,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,4,5,8,7,5,7,8,5,8,8,8,11,11,8,10,10,5,8,8,8,11,10,8,11,11,4,8,8,8,11,11,8,11,11,8,12,11,11,13,13,11,13,14,7,11,11,10,13,12,11,13,14,4,8,8,8,11,11,8,11,12,8,11,11,11,13,13,10,12,13,8,11,11,11,14,13,11,14,13,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,12,13,14,13,17,12,15,17,5,5,6,10,10,11,15,16,4,3,3,7,5,7,10,16,7,7,7,10,9,11,12,16,6,5,5,9,5,6,10,16,8,7,7,9,6,7,9,16,11,7,3,6,4,5,8,16,12,9,4,8,5,7,9,16,2,0,0,0,64,0,0,0,168,133,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,40,120,2,0,0,0,0,0,0,0,0,0,0,0,0,0,80,120,2,0,0,0,0,0,0,0,0,0,0,0,0,0,120,120,2,0,0,0,0,0,0,0,0,0,0,0,0,0,160,120,2,0,0,0,0,0,0,0,0,0,0,0,0,0,200,120,2,0,0,0,0,0,240,120,2,0,24,121,2,0,0,0,0,0,0,0,0,0,64,121,2,0,104,121,2,0,144,121,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,2,0,0,0,64,0,0,0,232,119,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,5,8,13,10,17,11,11,15,7,2,4,5,8,7,9,16,13,4,3,5,6,8,11,20,10,4,5,5,7,6,8,18,15,7,6,7,8,10,14,20,10,6,7,6,9,7,8,17,9,8,10,8,10,5,4,11,12,17,19,14,16,10,7,12,4,0,0,0,81,0,0,0,64,133,2,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,152,133,2,0,0,0,0,0,4,0,0,0,81,0,0,0,216,132,2,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,48,133,2,0,0,0,0,0,4,0,0,0,113,2,0,0,72,130,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,192,132,2,0,0,0,0,0,4,0,0,0,113,2,0,0,184,127,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,48,130,2,0,0,0,0,0,2,0,0,0,81,0,0,0,56,127,2,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,144,127,2,0,0,0,0,0,2,0,0,0,169,0,0,0,80,126,2,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,0,127,2,0,0,0,0,0,2,0,0,0,25,0,0,0,24,126,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,56,126,2,0,0,0,0,0,4,0,0,0,113,2,0,0,136,123,2,0,1,0,0,0,0,32,21,225,0,32,245,96,3,0,0,0,0,0,0,0,0,126,2,0,0,0,0,0,2,0,0,0,169,0,0,0,160,122,2,0,1,0,0,0,0,128,211,224,0,0,122,96,4,0,0,0,0,0,0,0,80,123,2,0,0,0,0,0,2,0,0,0,169,0,0,0,184,121,2,0,1,0,0,0,0,0,88,224,0,0,16,96,4,0,0,0,0,0,0,0,104,122,2,0,0,0,0,0,2,5,4,6,6,7,7,8,8,8,8,9,8,5,5,6,7,7,8,8,8,8,9,9,9,9,5,6,5,7,7,8,8,8,8,9,9,9,9,6,7,7,8,8,8,8,9,8,9,9,9,9,6,7,7,8,7,8,8,9,9,9,9,9,9,7,8,8,8,8,9,9,9,9,9,9,9,9,7,8,8,9,8,9,8,9,9,9,9,9,9,8,9,8,9,9,9,9,9,9,9,9,10,10,8,8,9,9,9,9,9,9,9,9,10,9,10,9,9,9,9,9,9,9,9,9,9,9,9,9,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,9,9,9,9,9,9,9,9,10,9,9,10,10,9,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,4,4,6,6,6,6,7,7,8,8,9,9,5,7,7,8,7,7,7,9,8,10,9,10,11,5,7,7,8,8,7,7,8,9,10,10,11,11,6,8,8,9,9,9,9,11,10,12,12,15,12,6,8,8,9,9,9,9,11,11,12,11,14,12,7,8,8,10,10,12,12,13,13,13,15,13,13,7,8,8,10,10,11,11,13,12,14,15,15,15,9,10,10,11,12,13,13,14,15,14,15,14,15,8,10,10,12,12,14,14,15,14,14,15,15,14,10,12,12,14,14,15,14,15,15,15,14,15,15,10,12,12,13,14,15,14,15,15,14,15,15,15,12,15,13,15,14,15,15,15,15,15,15,15,15,13,13,15,15,15,15,15,15,15,15,15,15,15,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,4,4,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,4,4,5,5,4,5,5,5,5,4,5,5,5,5,5,6,6,6,6,5,6,6,6,6,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,6,6,8,8,10,9,11,10,14,13,4,6,5,8,8,9,9,11,10,11,11,14,14,4,5,6,8,8,9,9,10,10,11,11,14,14,6,8,8,9,9,10,10,11,11,12,12,16,15,7,8,8,9,9,10,10,11,11,12,12,15,15,9,10,10,10,10,11,11,12,12,12,12,15,15,9,10,9,10,11,11,11,12,12,12,13,15,15,10,10,11,11,11,12,12,13,12,13,13,16,15,10,11,11,11,11,12,12,13,12,13,13,16,17,11,11,12,12,12,13,13,13,14,14,15,17,17,11,11,12,12,12,13,13,13,14,14,14,16,18,14,15,15,15,15,16,16,16,16,17,18,0,0,14,15,15,15,15,17,16,17,18,17,17,18,0,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,4,4,7,7,7,7,9,9,4,6,6,8,8,8,8,9,9,4,6,6,8,8,8,8,9,9,7,8,8,9,9,9,9,11,10,7,8,8,9,9,9,9,10,10,7,8,8,9,9,10,10,11,11,7,8,8,9,9,10,10,11,11,9,9,9,10,10,11,11,12,12,9,9,9,10,11,11,11,12,12,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,4,5,5,9,9,5,6,6,9,9,5,6,6,9,9,9,10,9,12,12,9,9,10,12,12,5,7,7,10,10,7,7,8,10,10,6,7,8,10,10,10,10,10,11,13,10,9,10,12,13,5,7,7,10,10,6,8,7,10,10,7,8,7,10,10,9,10,10,12,12,10,10,10,13,11,9,10,10,13,13,10,11,10,13,13,10,10,10,13,13,12,12,13,14,14,12,12,13,14,14,9,10,10,13,13,10,10,10,13,13,10,10,10,13,13,12,13,12,15,14,12,13,12,15,15,5,7,6,10,10,7,8,8,10,10,7,8,8,10,10,10,11,10,13,13,10,10,10,12,12,7,8,8,11,10,8,8,9,10,11,8,9,9,11,11,11,10,11,11,14,11,11,11,13,13,6,8,8,10,10,7,9,8,11,10,8,9,9,11,11,10,11,10,14,11,10,11,11,13,13,10,11,11,14,13,10,10,11,14,13,10,11,11,14,14,12,11,13,12,16,13,14,14,15,15,10,10,11,13,14,10,11,10,14,13,10,11,11,14,14,12,13,12,15,13,13,13,14,15,16,5,7,7,10,10,7,8,8,10,10,7,8,8,10,10,10,10,10,13,13,10,10,11,12,13,6,8,8,11,10,8,9,9,11,11,7,8,9,10,11,10,11,11,13,13,10,10,11,11,13,6,8,8,10,11,8,9,9,11,11,8,9,8,12,10,10,11,11,13,13,10,11,10,14,11,10,10,10,14,13,10,11,11,14,13,10,10,11,13,13,12,14,14,16,16,12,12,13,13,15,10,11,11,13,14,10,11,11,14,15,10,11,10,13,13,13,14,13,16,16,12,13,11,15,12,9,10,10,13,13,10,11,11,14,13,10,10,11,13,14,13,14,13,16,16,13,13,13,15,16,9,10,10,13,13,10,10,11,13,14,10,11,11,15,13,13,13,14,14,18,13,13,14,16,15,9,10,10,13,14,10,11,10,14,13,10,11,11,13,14,13,14,13,16,15,13,13,14,15,16,12,13,12,16,14,11,11,13,15,15,13,14,13,16,15,15,12,16,12,17,14,15,15,17,17,12,13,13,14,16,11,13,11,16,15,12,13,14,15,16,14,15,13,0,14,14,16,16,0,0,9,10,10,13,13,10,11,10,14,14,10,11,11,13,13,12,13,13,14,16,13,14,14,16,16,9,10,10,14,14,11,11,11,14,13,10,10,11,14,14,13,13,13,16,16,13,13,14,14,17,9,10,10,13,14,10,11,11,13,15,10,11,10,14,14,13,13,13,14,17,13,14,13,17,14,12,13,13,16,14,13,14,13,16,15,12,12,13,15,16,15,15,16,18,16,15,13,15,14,0,12,12,13,14,16,13,13,14,15,16,11,12,11,16,14,15,16,16,17,17,14,15,12,17,12,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,5,8,8,5,8,7,9,9,5,7,8,9,9,9,10,9,12,12,9,9,10,12,12,6,8,8,11,10,8,10,10,11,11,8,9,10,11,11,10,11,11,14,13,10,11,11,13,13,5,8,8,10,10,8,10,10,11,11,8,10,10,11,11,10,11,11,13,13,10,11,11,13,13,9,11,11,15,14,10,12,12,15,14,10,12,11,15,14,13,14,14,16,16,12,14,13,17,15,9,11,11,14,15,10,11,12,14,16,10,11,12,14,16,12,13,14,16,16,13,13,15,15,18,5,8,8,11,11,8,10,10,12,12,8,10,10,12,13,11,12,12,14,14,11,12,12,15,15,8,10,10,13,13,10,12,12,13,13,10,12,12,14,14,12,13,13,15,15,12,13,13,16,16,7,10,10,12,12,10,12,11,13,13,10,12,12,13,14,12,13,12,15,14,12,13,13,16,16,10,12,12,17,16,12,13,13,16,15,11,13,13,17,17,15,15,15,16,17,14,15,15,19,19,10,12,12,15,16,11,13,12,15,18,11,13,13,16,16,14,15,15,17,17,14,15,15,17,19,5,8,8,11,11,8,10,10,12,12,8,10,10,12,12,11,12,12,16,15,11,12,12,14,15,7,10,10,13,13,10,12,12,14,13,10,11,12,13,13,12,13,13,16,16,12,12,13,15,15,8,10,10,13,13,10,12,12,14,14,10,12,12,13,13,12,13,13,16,16,12,13,13,15,15,10,12,12,16,15,11,13,13,17,16,11,12,13,16,15,13,15,15,19,17,14,15,14,17,16,10,12,12,16,16,11,13,13,16,17,12,13,13,15,17,14,15,15,17,19,14,15,15,17,17,8,11,11,16,16,10,13,12,17,17,10,12,13,16,16,15,17,16,20,19,14,15,17,18,19,9,12,12,16,17,11,13,14,17,18,11,13,13,19,18,16,17,18,19,19,15,16,16,19,19,9,12,12,16,17,11,14,13,18,17,11,13,13,17,17,16,17,16,20,19,14,16,16,18,18,12,15,15,19,17,14,15,16,0,20,13,15,16,20,17,18,16,20,0,0,15,16,19,20,0,12,15,14,18,19,13,16,15,20,19,13,16,15,20,18,17,18,17,0,20,16,17,16,0,0,8,11,11,16,15,10,12,12,17,17,10,13,13,17,16,14,16,15,18,20,15,16,16,19,19,9,12,12,16,16,11,13,13,17,16,11,13,14,17,18,15,15,16,20,20,16,16,17,19,19,9,13,12,16,17,11,14,13,17,17,11,14,14,18,17,14,16,15,18,19,16,17,18,18,19,12,14,15,19,18,13,15,16,18,0,13,14,15,0,0,16,16,17,20,0,17,17,20,20,0,12,15,15,19,20,13,15,15,0,0,14,16,15,0,0,15,18,16,0,0,17,18,16,0,19,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,4,4,5,6,6,5,6,6,5,7,7,7,8,8,6,8,8,5,7,7,6,8,8,7,8,8,4,7,7,7,8,8,7,8,8,7,8,8,8,9,10,8,10,10,6,8,8,8,10,8,8,10,10,5,7,7,7,8,8,7,8,8,6,8,8,8,10,10,8,8,10,6,8,8,8,10,10,8,10,9,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,4,5,8,7,5,7,8,5,8,8,8,11,11,8,10,10,5,8,8,8,11,10,8,11,11,4,8,8,8,11,11,8,11,11,8,12,11,11,13,13,11,13,14,7,11,11,10,13,12,11,13,14,4,8,8,8,11,11,8,11,12,8,11,11,11,13,13,10,12,13,8,11,11,11,14,13,11,14,13,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,12,13,14,13,17,12,15,17,5,5,6,10,10,11,15,16,4,3,3,7,5,7,10,16,7,7,7,10,9,11,12,16,6,5,5,9,5,6,10,16,8,7,7,9,6,7,9,16,11,7,3,6,4,5,8,16,12,9,4,8,5,7,9,16], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+155104); +/* memory initializer */ allocate([2,0,0,0,64,0,0,0,184,148,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,56,135,2,0,0,0,0,0,0,0,0,0,0,0,0,0,96,135,2,0,0,0,0,0,0,0,0,0,0,0,0,0,136,135,2,0,0,0,0,0,0,0,0,0,0,0,0,0,176,135,2,0,0,0,0,0,0,0,0,0,0,0,0,0,216,135,2,0,0,0,0,0,0,136,2,0,40,136,2,0,0,0,0,0,0,0,0,0,80,136,2,0,120,136,2,0,160,136,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,2,0,0,0,64,0,0,0,248,134,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,5,6,12,9,14,9,9,19,6,1,5,5,8,7,9,19,12,4,4,7,7,9,11,18,9,5,6,6,8,7,8,17,14,8,7,8,8,10,12,18,9,6,8,6,8,6,8,18,9,8,11,8,11,7,5,15,16,18,18,18,17,15,11,18,4,0,0,0,81,0,0,0,80,148,2,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,168,148,2,0,0,0,0,0,4,0,0,0,81,0,0,0,232,147,2,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,64,148,2,0,0,0,0,0,4,0,0,0,113,2,0,0,88,145,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,208,147,2,0,0,0,0,0,4,0,0,0,113,2,0,0,200,142,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,64,145,2,0,0,0,0,0,2,0,0,0,81,0,0,0,72,142,2,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,160,142,2,0,0,0,0,0,2,0,0,0,169,0,0,0,96,141,2,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,16,142,2,0,0,0,0,0,2,0,0,0,25,0,0,0,40,141,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,72,141,2,0,0,0,0,0,4,0,0,0,113,2,0,0,152,138,2,0,1,0,0,0,0,32,21,225,0,32,245,96,3,0,0,0,0,0,0,0,16,141,2,0,0,0,0,0,2,0,0,0,169,0,0,0,176,137,2,0,1,0,0,0,0,128,211,224,0,0,122,96,4,0,0,0,0,0,0,0,96,138,2,0,0,0,0,0,2,0,0,0,169,0,0,0,200,136,2,0,1,0,0,0,0,0,88,224,0,0,16,96,4,0,0,0,0,0,0,0,120,137,2,0,0,0,0,0,3,4,4,6,6,7,7,8,8,9,9,9,8,4,5,5,6,6,8,8,9,8,9,9,9,9,4,5,5,7,6,8,8,8,8,9,8,9,8,6,7,7,7,8,8,8,9,9,9,9,9,9,6,7,7,7,7,8,8,9,9,9,9,9,9,7,8,8,8,8,9,8,9,9,10,9,9,10,7,8,8,8,8,9,9,9,9,9,9,10,10,8,9,9,9,9,9,9,9,9,10,10,9,10,8,9,9,9,9,9,9,9,9,9,9,10,10,9,9,9,10,9,9,10,9,9,10,10,10,10,9,9,9,9,9,9,9,10,9,10,10,10,10,9,9,9,10,9,9,10,10,9,10,10,10,10,9,9,9,10,9,9,9,10,10,10,10,10,10,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,4,4,6,6,6,6,9,8,9,8,8,8,5,7,7,7,7,8,8,8,10,8,10,8,9,5,7,7,8,7,7,8,10,10,11,10,12,11,7,8,8,9,9,9,10,11,11,11,11,11,11,7,8,8,8,9,9,9,10,10,10,11,11,12,7,8,8,9,9,10,11,11,12,11,12,11,11,7,8,8,9,9,10,10,11,11,11,12,12,11,8,10,10,10,10,11,11,14,11,12,12,12,13,9,10,10,10,10,12,11,14,11,14,11,12,13,10,11,11,11,11,13,11,14,14,13,13,13,14,11,11,11,12,11,12,12,12,13,14,14,13,14,12,11,12,12,12,12,13,13,13,14,13,14,14,11,12,12,14,12,13,13,12,13,13,14,14,14,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,5,3,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,7,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,4,4,5,5,4,5,5,5,5,4,5,5,6,5,5,6,5,6,6,5,6,6,6,6,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,6,6,8,8,10,10,11,11,15,15,4,5,5,8,8,9,9,11,11,12,12,16,16,4,5,6,8,8,9,9,11,11,12,12,14,14,7,8,8,9,9,10,10,11,12,13,13,16,17,7,8,8,9,9,10,10,12,12,12,13,15,15,9,10,10,10,10,11,11,12,12,13,13,15,16,9,9,9,10,10,11,11,13,12,13,13,17,17,10,11,11,11,12,12,12,13,13,14,15,0,18,10,11,11,12,12,12,13,14,13,14,14,17,16,11,12,12,13,13,14,14,14,14,15,16,17,16,11,12,12,13,13,14,14,14,14,15,15,17,17,14,15,15,16,16,16,17,17,16,0,17,0,18,14,15,15,16,16,0,15,18,18,0,16,0,0,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,4,4,7,7,8,8,9,9,4,6,5,8,7,8,8,10,9,4,6,6,8,8,8,8,10,10,7,8,7,9,9,9,9,11,10,7,8,8,9,9,9,9,10,11,8,8,8,9,9,10,10,11,11,8,8,8,9,9,10,10,11,11,9,10,10,11,10,11,11,12,12,9,10,10,10,11,11,11,12,12,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,3,5,5,9,9,5,6,6,10,9,5,6,6,9,10,10,10,10,12,11,9,10,10,12,12,5,7,7,10,10,7,7,8,10,11,7,7,8,10,11,10,10,11,11,13,10,10,11,11,13,6,7,7,10,10,7,8,7,11,10,7,8,7,10,10,10,11,9,13,11,10,11,10,13,11,10,10,10,14,13,10,11,11,14,13,10,10,11,13,14,12,12,13,15,15,12,12,13,13,14,10,10,10,12,13,10,11,10,13,13,10,11,11,13,13,12,13,12,14,13,12,13,13,14,13,5,7,7,10,10,7,8,8,11,10,7,8,8,10,10,11,11,11,13,13,10,11,11,12,12,7,8,8,11,11,7,8,9,10,12,8,9,9,11,11,11,10,12,11,14,11,11,12,13,13,6,8,8,10,11,7,9,7,12,10,8,9,10,11,12,10,12,10,14,11,11,12,11,13,13,10,11,11,14,14,10,10,11,13,14,11,12,12,15,13,12,11,14,12,16,12,13,14,15,16,10,10,11,13,14,10,11,10,14,12,11,12,12,13,14,12,13,11,15,12,14,14,14,15,15,5,7,7,10,10,7,8,8,10,10,7,8,8,10,11,10,11,10,12,12,10,11,11,12,13,6,8,8,11,11,8,9,9,12,11,7,7,9,10,12,11,11,11,12,13,11,10,12,11,15,7,8,8,11,11,8,9,9,11,11,7,9,8,12,10,11,12,11,13,12,11,12,10,15,11,10,11,10,14,12,11,12,11,14,13,10,10,11,13,14,13,13,13,17,15,12,11,14,12,15,10,10,11,13,14,11,12,12,14,14,10,11,10,14,13,13,14,13,16,17,12,14,11,16,12,9,10,10,14,13,10,11,10,14,14,10,11,11,13,13,13,14,14,16,15,12,13,13,14,14,9,11,10,14,13,10,10,12,13,14,11,12,11,14,13,13,14,14,14,15,13,14,14,15,15,9,10,11,13,14,10,11,10,15,13,11,11,12,12,15,13,14,12,15,14,13,13,14,14,15,12,13,12,16,14,11,11,12,15,14,13,15,13,16,14,13,12,15,12,17,15,16,15,16,16,12,12,13,13,15,11,13,11,15,14,13,13,14,15,17,13,14,12,0,13,14,15,14,15,0,9,10,10,13,13,10,11,11,13,13,10,11,11,13,13,12,13,12,14,14,13,14,14,15,17,9,10,10,13,13,11,12,11,15,12,10,10,11,13,16,13,14,13,15,14,13,13,14,15,16,10,10,11,13,14,11,11,12,13,14,10,12,11,14,14,13,13,13,14,15,13,15,13,16,15,12,13,12,15,13,12,15,13,15,15,11,11,13,14,15,15,15,15,15,17,13,12,14,13,17,12,12,14,14,15,13,13,14,14,16,11,13,11,16,15,14,16,16,17,0,14,13,11,16,12,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,5,8,8,5,8,7,9,9,5,7,8,9,9,9,10,9,12,12,9,9,10,11,12,6,8,8,10,10,8,10,10,11,11,8,9,10,11,11,10,11,11,13,13,10,11,11,12,13,6,8,8,10,10,8,10,9,11,11,8,10,10,11,11,10,11,11,13,12,10,11,11,13,12,9,11,11,15,13,10,12,11,15,13,10,11,11,15,14,12,14,13,16,15,12,13,13,17,16,9,11,11,13,15,10,11,12,14,15,10,11,12,14,15,12,13,13,15,16,12,13,13,16,16,5,8,8,11,11,8,10,10,12,12,8,10,10,12,12,11,12,12,14,14,11,12,12,14,14,8,11,10,13,12,10,11,12,12,13,10,12,12,13,13,12,12,13,13,15,11,12,13,15,14,7,10,10,12,12,9,12,11,13,12,10,12,12,13,14,12,13,12,15,13,11,13,12,14,15,10,12,12,16,14,11,12,12,16,15,11,13,12,17,16,13,13,15,15,17,13,15,15,20,17,10,12,12,14,16,11,12,12,15,15,11,13,13,15,18,13,14,13,15,15,13,15,14,16,16,5,8,8,11,11,8,10,10,12,12,8,10,10,12,12,11,12,12,14,14,11,12,12,14,15,7,10,10,13,12,10,12,12,14,13,9,10,12,12,13,11,13,13,15,15,11,12,13,13,15,8,10,10,12,13,10,12,12,13,13,10,12,11,13,13,11,13,12,15,15,12,13,12,15,13,10,12,12,16,14,11,12,12,16,15,10,12,12,16,14,14,15,14,18,16,13,13,14,15,16,10,12,12,14,16,11,13,13,16,16,11,13,12,14,16,13,15,15,18,18,13,15,13,16,14,8,11,11,16,16,10,13,13,17,16,10,12,12,16,15,14,16,15,20,17,13,14,14,17,17,9,12,12,16,16,11,13,14,16,17,11,13,13,16,16,15,15,19,18,0,14,15,15,18,18,9,12,12,17,16,11,13,12,17,16,11,12,13,15,17,15,16,15,0,19,14,15,14,19,18,12,14,14,0,16,13,14,14,19,18,13,15,16,17,16,15,15,17,18,0,14,16,16,19,0,12,14,14,16,18,13,15,13,17,18,13,15,14,17,18,15,18,14,18,18,16,17,16,0,17,8,11,11,15,15,10,12,12,16,16,10,13,13,16,16,13,15,14,17,17,14,15,17,17,18,9,12,12,16,15,11,13,13,16,16,11,12,13,17,17,14,14,15,17,17,14,15,16,0,18,9,12,12,16,17,11,13,13,16,17,11,14,13,18,17,14,16,14,17,17,15,17,17,18,18,12,14,14,0,16,13,15,15,19,0,12,13,15,0,0,14,17,16,19,0,16,15,18,18,0,12,14,14,17,0,13,14,14,17,0,13,15,14,0,18,15,16,16,0,18,15,18,15,0,17,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,4,4,5,6,6,5,6,6,5,7,7,7,8,8,6,7,9,5,7,7,6,8,7,7,9,8,4,7,7,7,9,8,7,8,8,7,9,8,8,8,10,9,10,10,6,8,8,7,10,8,9,10,10,5,7,7,7,8,8,7,8,9,6,8,8,9,10,10,7,8,10,6,8,9,9,10,10,8,10,8,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,4,5,8,7,5,7,8,5,8,8,8,10,11,8,10,11,5,8,8,8,11,10,8,11,10,4,9,9,8,11,11,8,11,11,8,12,11,10,12,14,11,13,13,7,11,11,10,13,11,11,13,14,4,8,9,8,11,11,8,11,12,7,11,11,11,14,13,10,11,13,8,11,12,11,13,13,10,14,12,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,12,12,14,12,14,14,14,14,12,6,6,8,9,9,11,14,12,4,2,6,6,7,11,14,13,6,5,7,8,9,11,14,13,8,5,8,6,8,12,14,12,7,7,8,8,8,10,14,12,6,3,4,4,4,7,14,11,7,4,6,6,6,8,14,1,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,7,0,0,0,0,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,3,0,0,0,2,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,5,0,0,0,4,0,0,0,3,0,0,0,0,0,128,63,0,0,0,64,0,0,64,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,160,64,0,0,192,64,0,0,224,64,0,0,0,65,0,0,0,65,0,0,0,65,0,0,64,65,0,0,72,65,0,0,80,65,0,0,88,65,0,0,96,65,0,0,104,65,0,0,112,65,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,3,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,6,0,0,0,6,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,3,0,0,0,0,0,128,63,0,0,0,64,0,0,64,64,0,0,128,64,0,0,128,64,0,0,160,64,0,0,192,64,0,0,192,64,0,0,192,64,0,0,192,64,0,0,192,64,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,64,65,0,0,72,65,0,0,80,65,0,0,88,65,0,0,96,65,0,0,104,65,0,0,112,65,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,6,0,0,0,6,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,3,0,0,0,0,0,128,63,0,0,0,64,0,0,64,64,0,0,128,64,0,0,128,64,0,0,160,64,0,0,192,64,0,0,192,64,0,0,192,64,0,0,192,64,0,0,192,64,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,8,0,0,0,6,0,0,0,6,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,3,0,0,0,2,0,0,0,1,0,0,0,0,0,64,64,0,0,128,64,0,0,128,64,0,0,160,64,0,0,160,64,0,0,192,64,0,0,192,64,0,0,192,64,0,0,192,64,0,0,192,64,0,0,192,64,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,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,5,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,3,0,0,0,2,0,0,0,1,0,0,0,0,0,128,64,0,0,128,64,0,0,160,64,0,0,192,64,0,0,192,64,0,0,192,64,0,0,192,64,0,0,192,64,0,0,0,65,0,0,0,65,0,0,32,65,0,0,32,65,0,0,32,65,0,0,32,65,0,0,32,65,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,2,0,0,0,2,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,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,0,0,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,3,0,0,0,3,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,192,64,0,0,192,64,0,0,192,64,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,32,65,0,0,32,65,0,0,32,65,0,0,32,65,0,0,32,65,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,2,0,0,0,2,0,0,0,2,0,0,0,1,0,0,0,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,0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,2,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,192,64,0,0,224,64,0,0,0,65,0,0,0,65,0,0,0,65,0,0,32,65,0,0,32,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,2,0,0,0,2,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,65,0,0,0,65,0,0,32,65,0,0,32,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,2,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65,0,0,0,65,0,0,32,65,0,0,32,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,2,0,0,0,2,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,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,32,65,0,0,32,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,64,65,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,200,47,1,0,32,161,2,0,200,47,1,0,96,161,2,0,200,47,1,0,160,161,2,0,200,47,1,0,224,161,2,0,200,47,1,0,32,162,2,0,200,47,1,0,96,162,2,0,200,47,1,0,160,162,2,0,200,47,1,0,224,162,2,0,200,47,1,0,32,163,2,0,200,47,1,0,96,163,2,0,200,47,1,0,160,163,2,0,2,0,0,0,0,0,0,0,32,0,0,0,64,171,3,0,216,86,4,0,0,87,4,0,40,87,4,0,232,87,4,0,2,0,0,0,0,0,0,0,32,0,0,0,64,171,3,0,168,88,4,0,208,88,4,0,40,87,4,0,232,87,4,0,2,0,0,0,0,0,0,0,16,0,0,0,64,171,3,0,248,5,4,0,32,6,4,0,72,6,4,0,8,7,4,0,2,0,0,0,0,0,0,0,32,0,0,0,64,171,3,0,200,7,4,0,240,7,4,0,72,6,4,0,8,7,4,0,2,0,0,0,0,0,0,0,16,0,0,0,64,171,3,0,88,182,3,0,128,182,3,0,168,182,3,0,104,183,3,0,2,0,0,0,0,0,0,0,32,0,0,0,64,171,3,0,40,184,3,0,80,184,3,0,168,182,3,0,104,183,3,0,2,0,0,0,0,0,0,0,16,0,0,0,24,73,1,0,152,128,3,0,152,128,3,0,192,128,3,0,192,128,3,0,2,0,0,0,0,0,0,0,32,0,0,0,24,73,1,0,128,129,3,0,128,129,3,0,192,128,3,0,192,128,3,0,2,0,0,0,0,0,0,0,16,0,0,0,24,73,1,0,176,85,3,0,176,85,3,0,216,85,3,0,216,85,3,0,2,0,0,0,0,0,0,0,32,0,0,0,24,73,1,0,152,86,3,0,152,86,3,0,216,85,3,0,216,85,3,0,2,0,0,0,0,0,0,0,16,0,0,0,24,73,1,0,32,42,3,0,32,42,3,0,72,42,3,0,72,42,3,0,2,0,0,0,0,0,0,0,32,0,0,0,24,73,1,0,8,43,3,0,8,43,3,0,72,42,3,0,72,42,3,0,2,0,0,0,0,0,0,0,16,0,0,0,24,73,1,0,8,254,2,0,8,254,2,0,48,254,2,0,48,254,2,0,2,0,0,0,0,0,0,0,32,0,0,0,24,73,1,0,240,254,2,0,240,254,2,0,48,254,2,0,48,254,2,0,2,0,0,0,0,0,0,0,16,0,0,0,224,163,2,0,8,235,2,0,8,235,2,0,48,235,2,0,48,235,2,0,2,0,0,0,0,0,0,0,32,0,0,0,224,163,2,0,240,235,2,0,240,235,2,0,48,235,2,0,48,235,2,0,2,0,0,0,0,0,0,0,16,0,0,0,224,163,2,0,8,216,2,0,8,216,2,0,48,216,2,0,48,216,2,0,2,0,0,0,0,0,0,0,32,0,0,0,224,163,2,0,240,216,2,0,240,216,2,0,48,216,2,0,48,216,2,0,2,0,0,0,0,0,0,0,16,0,0,0,224,163,2,0,168,195,2,0,168,195,2,0,208,195,2,0,208,195,2,0,2,0,0,0,0,0,0,0,32,0,0,0,224,163,2,0,144,196,2,0,144,196,2,0,208,195,2,0,208,195,2,0,2,0,0,0,0,0,0,0,16,0,0,0,224,163,2,0,248,174,2,0,248,174,2,0,32,175,2,0,32,175,2,0,2,0,0,0,0,0,0,0,32,0,0,0,224,163,2,0,224,175,2,0,224,175,2,0,32,175,2,0,32,175,2,0,0,0,0,0,255,255,255,255,255,255,255,255,10,0,0,0,255,255,255,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+165344); +/* memory initializer */ allocate([1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,16,0,0,0,32,0,0,0,71,0,0,0,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,0,0,0,16,0,0,0,71,0,0,0,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,100,0,0,0,64,195,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,112,176,2,0,0,0,0,0,0,0,0,0,0,0,0,0,152,176,2,0,0,0,0,0,0,0,0,0,0,0,0,0,192,176,2,0,0,0,0,0,0,0,0,0,0,0,0,0,232,176,2,0,0,0,0,0,16,177,2,0,56,177,2,0,0,0,0,0,0,0,0,0,96,177,2,0,136,177,2,0,0,0,0,0,0,0,0,0,176,177,2,0,216,177,2,0,0,0,0,0,0,0,0,0,0,178,2,0,40,178,2,0,0,0,0,0,0,0,0,0,80,178,2,0,120,178,2,0,160,178,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,2,0,0,0,100,0,0,0,8,176,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,3,8,12,14,15,15,15,13,15,15,6,5,8,10,12,12,13,12,14,13,10,6,5,6,8,9,11,11,13,13,13,8,5,4,5,6,8,10,11,13,14,10,7,5,4,5,7,9,11,12,13,11,8,6,5,4,5,7,9,11,12,11,10,8,7,5,4,5,9,10,13,13,11,10,8,6,5,4,7,9,15,14,13,12,10,9,8,7,8,9,12,12,14,13,12,11,10,9,8,9,0,0,0,0,4,0,0,0,81,0,0,0,216,194,2,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,48,195,2,0,0,0,0,0,4,0,0,0,113,2,0,0,72,192,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,192,194,2,0,0,0,0,0,2,0,0,0,81,0,0,0,200,191,2,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,32,192,2,0,0,0,0,0,2,0,0,0,33,1,0,0,88,190,2,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,128,191,2,0,0,0,0,0,4,0,0,0,81,0,0,0,240,189,2,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,72,190,2,0,0,0,0,0,2,0,0,0,121,0,0,0,64,189,2,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,192,189,2,0,0,0,0,0,2,0,0,0,169,0,0,0,88,188,2,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,8,189,2,0,0,0,0,0,2,0,0,0,25,0,0,0,32,188,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,64,188,2,0,0,0,0,0,2,0,0,0,169,0,0,0,56,187,2,0,1,0,0,0,0,128,208,224,0,0,118,96,4,0,0,0,0,0,0,0,232,187,2,0,0,0,0,0,2,0,0,0,121,0,0,0,136,186,2,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,8,187,2,0,0,0,0,0,2,0,0,0,225,0,0,0,96,185,2,0,1,0,0,0,0,96,242,224,0,0,149,96,4,0,0,0,0,0,0,0,72,186,2,0,0,0,0,0,2,0,0,0,185,1,0,0,72,183,2,0,1,0,0,0,0,0,116,224,0,0,16,96,5,0,0,0,0,0,0,0,8,185,2,0,0,0,0,0,2,0,0,0,105,1,0,0,136,181,2,0,1,0,0,0,128,93,176,225,0,24,61,97,5,0,0,0,0,0,0,0,248,182,2,0,0,0,0,0,2,0,0,0,105,1,0,0,200,179,2,0,1,0,0,0,0,144,27,225,0,128,184,96,5,0,0,0,0,0,0,0,56,181,2,0,0,0,0,0,1,0,0,0,49,0,0,0,200,178,2,0,1,0,0,0,0,0,152,224,0,0,16,96,6,0,0,0,0,0,0,0,0,179,2,0,0,0,0,0,2,4,4,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,24,0,0,0,23,0,0,0,25,0,0,0,22,0,0,0,26,0,0,0,21,0,0,0,27,0,0,0,20,0,0,0,28,0,0,0,19,0,0,0,29,0,0,0,18,0,0,0,30,0,0,0,17,0,0,0,31,0,0,0,16,0,0,0,32,0,0,0,15,0,0,0,33,0,0,0,14,0,0,0,34,0,0,0,13,0,0,0,35,0,0,0,12,0,0,0,36,0,0,0,11,0,0,0,37,0,0,0,10,0,0,0,38,0,0,0,9,0,0,0,39,0,0,0,8,0,0,0,40,0,0,0,7,0,0,0,41,0,0,0,6,0,0,0,42,0,0,0,5,0,0,0,43,0,0,0,4,0,0,0,44,0,0,0,3,0,0,0,45,0,0,0,2,0,0,0,46,0,0,0,1,0,0,0,47,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,1,4,4,7,7,7,7,8,7,9,8,9,9,10,10,11,11,11,11,6,5,5,8,8,9,9,9,8,10,9,11,10,12,12,13,12,13,13,5,5,5,8,8,9,9,9,9,10,10,11,11,12,12,13,12,13,13,17,8,8,9,9,9,9,9,9,10,10,12,11,13,12,13,13,13,13,18,8,8,9,9,9,9,9,9,11,11,12,12,13,13,13,13,13,13,17,13,12,9,9,10,10,10,10,11,11,12,12,12,13,13,13,14,14,18,13,12,9,9,10,10,10,10,11,11,12,12,13,13,13,14,14,14,17,18,18,10,10,10,10,11,11,11,12,12,12,14,13,14,13,13,14,18,18,18,10,9,10,9,11,11,12,12,12,12,13,13,15,14,14,14,18,18,16,13,14,10,11,11,11,12,13,13,13,13,14,13,13,14,14,18,18,18,14,12,11,9,11,10,13,12,13,13,13,14,14,14,13,14,18,18,17,18,18,11,12,12,12,13,13,14,13,14,14,13,14,14,14,18,18,18,18,17,12,10,12,9,13,11,13,14,14,14,14,14,15,14,18,18,17,17,18,14,15,12,13,13,13,14,13,14,14,15,14,15,14,18,17,18,18,18,15,15,12,10,14,10,14,14,13,13,14,14,14,14,18,16,18,18,18,18,17,14,14,13,14,14,13,13,14,14,14,15,15,18,18,18,18,17,17,17,14,14,14,12,14,13,14,14,15,14,15,14,18,18,18,18,18,18,18,17,16,13,13,13,14,14,14,14,15,16,15,18,18,18,18,18,18,18,17,17,13,13,13,13,14,13,14,15,15,15,0,0,0,0,0,0,0,9,0,0,0,8,0,0,0,10,0,0,0,7,0,0,0,11,0,0,0,6,0,0,0,12,0,0,0,5,0,0,0,13,0,0,0,4,0,0,0,14,0,0,0,3,0,0,0,15,0,0,0,2,0,0,0,16,0,0,0,1,0,0,0,17,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,1,4,3,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,4,5,6,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,4,6,6,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,9,0,0,0,8,0,0,0,10,0,0,0,7,0,0,0,11,0,0,0,6,0,0,0,12,0,0,0,5,0,0,0,13,0,0,0,4,0,0,0,14,0,0,0,3,0,0,0,15,0,0,0,2,0,0,0,16,0,0,0,1,0,0,0,17,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,4,6,6,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,10,6,6,7,7,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,10,6,6,7,7,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,10,7,7,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,9,9,9,9,9,9,9,9,9,9,9,9,10,9,9,9,10,10,10,10,10,10,10,9,9,9,9,9,9,10,9,9,9,9,9,9,9,10,10,10,10,10,10,10,9,9,9,10,10,10,10,10,9,9,9,9,9,9,10,10,10,10,10,10,10,9,9,10,9,10,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,9,9,10,10,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,10,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,9,9,10,10,9,9,10,9,9,9,10,10,10,10,10,10,10,10,10,10,10,9,9,10,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,10,9,9,9,9,9,0,0,0,0,0,0,0,10,0,0,0,9,0,0,0,11,0,0,0,8,0,0,0,12,0,0,0,7,0,0,0,13,0,0,0,6,0,0,0,14,0,0,0,5,0,0,0,15,0,0,0,4,0,0,0,16,0,0,0,3,0,0,0,17,0,0,0,2,0,0,0,18,0,0,0,1,0,0,0,19,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,1,4,4,7,6,8,8,8,8,9,9,10,10,11,10,6,5,5,7,7,9,9,8,9,10,10,11,11,12,12,6,5,5,7,7,9,9,9,9,10,10,11,11,12,12,21,7,8,8,8,9,9,9,9,10,10,11,11,12,12,21,8,8,8,8,9,9,9,9,10,10,11,11,12,12,21,11,12,9,9,10,10,10,10,10,11,11,12,12,12,21,12,12,9,8,10,10,10,10,11,11,12,12,13,13,21,21,21,9,9,9,9,11,11,11,11,12,12,12,13,21,20,20,9,9,9,9,10,11,11,11,12,12,13,13,20,20,20,13,13,10,10,11,11,12,12,13,13,13,13,20,20,20,13,13,10,10,11,11,12,12,13,13,13,13,20,20,20,20,20,12,12,12,12,12,12,13,13,14,14,20,20,20,20,20,12,12,12,11,13,12,13,13,14,14,20,20,20,20,20,15,16,13,12,13,13,14,13,14,14,20,20,20,20,20,16,15,12,12,13,12,14,13,14,14,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,5,6,6,6,6,7,7,7,7,7,7,7,6,6,6,6,7,7,7,7,7,7,7,6,6,6,6,7,7,7,7,7,7,8,6,6,6,6,7,7,7,7,7,7,8,8,8,6,6,7,7,7,7,7,7,8,8,8,7,7,7,7,7,7,7,7,8,8,8,7,7,7,7,7,7,7,7,8,8,8,7,7,7,7,7,7,7,7,8,8,8,8,8,7,7,7,7,7,7,8,8,8,8,8,7,7,7,7,7,7,8,8,8,8,8,7,7,7,7,7,7,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,2,4,4,6,6,7,7,8,8,10,10,11,11,6,4,4,6,6,8,8,9,9,10,10,12,12,6,4,5,6,6,8,8,9,9,10,10,12,12,20,6,6,6,6,8,8,9,10,11,11,12,12,20,6,6,6,6,8,8,10,10,11,11,12,12,20,10,10,7,7,9,9,10,10,11,11,12,12,20,11,11,7,7,9,9,10,10,11,11,12,12,20,20,20,9,9,9,9,11,11,12,12,13,13,20,20,20,9,9,9,9,11,11,12,12,13,13,20,20,20,13,13,10,10,11,11,12,13,13,13,20,20,20,13,13,10,10,11,11,12,13,13,13,20,20,20,20,19,12,12,12,12,13,13,14,15,19,19,19,19,19,12,12,12,12,13,13,14,14,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,4,4,4,5,5,5,4,4,5,5,5,4,4,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,4,4,6,6,7,7,7,7,8,8,9,9,5,4,4,6,6,8,8,9,9,9,9,10,10,6,4,4,6,6,8,8,9,9,9,9,10,10,0,6,6,7,7,8,8,9,9,10,10,11,11,0,6,6,7,7,8,8,9,9,10,10,11,11,0,10,10,8,8,9,9,10,10,11,11,12,12,0,11,11,8,8,9,9,10,10,11,11,12,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,4,5,5,6,6,7,7,7,7,7,7,11,5,5,6,6,7,7,7,7,8,8,11,5,5,6,6,7,7,7,7,8,8,11,5,5,6,6,7,7,8,8,8,8,11,11,11,6,6,7,7,7,8,8,8,11,11,11,6,6,7,7,7,8,8,8,11,11,11,6,6,7,7,7,7,8,8,11,11,11,7,7,7,7,7,7,8,8,11,11,11,10,10,7,7,7,7,8,8,11,11,11,11,11,7,7,7,7,7,7,11,11,11,11,11,7,7,7,7,7,7,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,5,7,7,6,7,7,4,7,6,9,10,10,10,10,9,4,6,7,9,10,10,10,9,10,5,9,9,9,11,11,10,11,11,7,10,9,11,12,11,12,12,12,7,9,10,11,11,12,12,12,12,6,10,10,10,12,12,10,12,11,7,10,10,11,12,12,11,12,12,7,10,10,11,12,12,12,12,12,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,10,10,0,5,4,5,5,7,7,8,8,8,8,9,9,10,10,11,11,0,5,5,6,6,7,7,8,8,8,8,9,9,10,10,11,11,0,6,5,6,6,7,7,8,8,9,9,10,10,11,11,11,12,0,0,0,6,6,7,7,8,8,9,9,10,10,11,11,12,12,0,0,0,7,7,7,7,9,9,9,9,10,10,11,11,12,12,0,0,0,7,7,7,8,9,9,9,9,10,10,11,11,12,12,0,0,0,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0,0,0,0,8,8,9,9,10,10,11,11,12,12,12,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,3,4,4,5,5,6,6,8,8,0,4,4,5,5,6,7,8,8,0,4,4,5,5,7,7,8,8,0,5,5,6,6,7,7,9,9,0,0,0,6,6,7,7,9,9,0,0,0,7,7,8,8,9,9,0,0,0,7,7,8,8,9,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,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,3,5,5,8,8,0,5,5,8,8,0,5,5,8,8,0,7,7,9,9,0,0,0,9,9,6,7,7,9,8,0,8,8,9,9,0,8,7,9,9,0,9,10,10,10,0,0,0,11,10,6,7,7,8,9,0,8,8,9,9,0,7,8,9,9,0,10,9,11,10,0,0,0,10,10,8,9,8,10,10,0,10,10,12,11,0,10,10,11,11,0,12,13,13,13,0,0,0,13,12,8,8,9,10,10,0,10,10,11,12,0,10,10,11,11,0,13,12,13,13,0,0,0,13,13,0,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,8,7,10,10,0,7,7,10,9,0,7,7,10,10,0,9,9,10,10,0,0,0,10,10,6,7,8,10,10,0,7,7,9,10,0,7,7,10,10,0,9,9,10,10,0,0,0,10,10,8,9,9,11,11,0,10,10,11,11,0,10,10,11,11,0,12,12,12,12,0,0,0,12,12,8,9,10,11,11,0,9,10,11,11,0,10,10,11,11,0,12,12,12,12,0,0,0,12,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,5,8,7,10,10,0,7,7,10,10,0,7,7,10,9,0,9,9,10,10,0,0,0,10,10,6,7,8,10,10,0,7,7,10,10,0,7,7,9,10,0,9,9,10,10,0,0,0,10,10,8,10,9,12,11,0,10,10,12,11,0,10,9,11,11,0,11,12,12,12,0,0,0,12,12,8,9,10,11,12,0,10,10,11,11,0,9,10,11,11,0,12,11,12,12,0,0,0,12,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,7,10,9,12,12,0,9,9,12,11,0,9,9,11,11,0,10,10,12,11,0,0,0,11,12,7,9,10,12,12,0,9,9,11,12,0,9,9,11,11,0,10,10,11,12,0,0,0,11,11,9,11,10,13,12,0,10,10,12,12,0,10,10,12,12,0,11,11,12,12,0,0,0,13,12,9,10,11,12,13,0,10,10,12,12,0,10,10,12,12,0,11,12,12,12,0,0,0,12,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,11,10,13,13,0,10,10,12,12,0,10,10,12,12,0,11,12,12,12,0,0,0,12,12,9,10,11,13,13,0,10,10,12,12,0,10,10,12,12,0,12,11,13,12,0,0,0,12,12,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,5,0,5,5,0,5,5,6,8,8,0,9,8,0,9,8,6,8,8,0,8,9,0,8,9,0,0,0,0,0,0,0,0,0,5,8,8,0,7,7,0,8,8,5,8,8,0,7,8,0,8,8,0,0,0,0,0,0,0,0,0,5,9,8,0,8,8,0,7,7,5,8,9,0,8,8,0,7,7,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,5,13,18,16,17,17,19,18,19,19,5,7,10,11,12,12,13,16,17,18,6,6,7,7,9,9,10,14,17,19,8,7,6,5,6,7,9,12,19,17,8,7,7,6,5,6,8,11,15,19,9,8,7,6,5,5,6,8,13,15,11,10,8,8,7,5,4,4,10,14,12,13,11,9,7,6,4,2,6,12,18,16,16,13,8,7,7,5,8,13,16,17,18,15,11,9,9,8,10,13,0,0,0,0,2,0,0,0,100,0,0,0,160,215,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,32,197,2,0,0,0,0,0,0,0,0,0,0,0,0,0,72,197,2,0,0,0,0,0,0,0,0,0,0,0,0,0,112,197,2,0,0,0,0,0,0,0,0,0,0,0,0,0,152,197,2,0,0,0,0,0,192,197,2,0,232,197,2,0,0,0,0,0,0,0,0,0,16,198,2,0,56,198,2,0,0,0,0,0,0,0,0,0,96,198,2,0,136,198,2,0,0,0,0,0,0,0,0,0,176,198,2,0,216,198,2,0,0,0,0,0,0,0,0,0,0,199,2,0,40,199,2,0,80,199,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,2,0,0,0,100,0,0,0,184,196,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,3,8,12,13,14,14,14,13,14,14,6,4,5,8,10,10,11,11,14,13,9,5,4,5,7,8,9,10,13,13,12,7,5,4,5,6,8,9,12,13,13,9,6,5,5,5,7,9,11,14,12,10,7,6,5,4,6,7,10,11,12,11,9,8,7,5,5,6,10,10,13,12,10,9,8,6,6,5,8,10,14,13,12,12,11,10,9,7,8,10,12,13,14,14,13,12,11,9,9,10,0,0,0,0,4,0,0,0,81,0,0,0,56,215,2,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,144,215,2,0,0,0,0,0,4,0,0,0,113,2,0,0,168,212,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,32,215,2,0,0,0,0,0,2,0,0,0,81,0,0,0,40,212,2,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,128,212,2,0,0,0,0,0,2,0,0,0,33,1,0,0,184,210,2,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,224,211,2,0,0,0,0,0,4,0,0,0,81,0,0,0,80,210,2,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,168,210,2,0,0,0,0,0,2,0,0,0,121,0,0,0,160,209,2,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,32,210,2,0,0,0,0,0,2,0,0,0,169,0,0,0,184,208,2,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,104,209,2,0,0,0,0,0,2,0,0,0,25,0,0,0,128,208,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,160,208,2,0,0,0,0,0,2,0,0,0,169,0,0,0,152,207,2,0,1,0,0,0,0,128,208,224,0,0,118,96,4,0,0,0,0,0,0,0,72,208,2,0,0,0,0,0,2,0,0,0,121,0,0,0,232,206,2,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,104,207,2,0,0,0,0,0,2,0,0,0,225,0,0,0,192,205,2,0,1,0,0,0,0,96,242,224,0,0,149,96,4,0,0,0,0,0,0,0,168,206,2,0,0,0,0,0,2,0,0,0,185,1,0,0,168,203,2,0,1,0,0,0,0,0,116,224,0,0,16,96,5,0,0,0,0,0,0,0,104,205,2,0,0,0,0,0,2,0,0,0,33,1,0,0,56,202,2,0,1,0,0,0,0,24,157,225,0,24,61,97,5,0,0,0,0,0,0,0,96,203,2,0,0,0,0,0,2,0,0,0,105,1,0,0,120,200,2,0,1,0,0,0,0,144,27,225,0,128,184,96,5,0,0,0,0,0,0,0,232,201,2,0,0,0,0,0,1,0,0,0,49,0,0,0,120,199,2,0,1,0,0,0,0,0,152,224,0,0,16,96,6,0,0,0,0,0,0,0,176,199,2,0,0,0,0,0,2,4,4,4,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,24,0,0,0,23,0,0,0,25,0,0,0,22,0,0,0,26,0,0,0,21,0,0,0,27,0,0,0,20,0,0,0,28,0,0,0,19,0,0,0,29,0,0,0,18,0,0,0,30,0,0,0,17,0,0,0,31,0,0,0,16,0,0,0,32,0,0,0,15,0,0,0,33,0,0,0,14,0,0,0,34,0,0,0,13,0,0,0,35,0,0,0,12,0,0,0,36,0,0,0,11,0,0,0,37,0,0,0,10,0,0,0,38,0,0,0,9,0,0,0,39,0,0,0,8,0,0,0,40,0,0,0,7,0,0,0,41,0,0,0,6,0,0,0,42,0,0,0,5,0,0,0,43,0,0,0,4,0,0,0,44,0,0,0,3,0,0,0,45,0,0,0,2,0,0,0,46,0,0,0,1,0,0,0,47,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,1,4,4,7,6,7,7,7,7,8,8,9,9,10,10,10,10,11,11,6,6,6,8,8,9,8,8,7,10,8,11,10,12,11,12,12,13,13,5,5,6,8,8,9,9,8,8,10,9,11,11,12,12,13,13,13,13,17,8,8,9,9,9,9,9,9,10,9,12,10,12,12,13,12,13,13,17,9,8,9,9,9,9,9,9,10,10,12,12,12,12,13,13,13,13,17,13,13,9,9,10,10,10,10,11,11,12,11,13,12,13,13,14,15,17,13,13,9,8,10,9,10,10,11,11,12,12,14,13,15,13,14,15,17,17,17,9,10,9,10,11,11,12,12,12,12,13,13,14,14,15,15,17,17,17,9,8,9,8,11,11,12,12,12,12,14,13,14,14,14,15,17,17,17,12,14,9,10,11,11,12,12,14,13,13,14,15,13,15,15,17,17,17,13,11,10,8,11,9,13,12,13,13,13,13,13,14,14,14,17,17,17,17,17,11,12,11,11,13,13,14,13,15,14,13,15,16,15,17,17,17,17,17,11,11,12,8,13,12,14,13,17,14,15,14,15,14,17,17,17,17,17,15,15,12,12,12,12,13,14,14,14,15,14,17,14,17,17,17,17,17,16,17,12,12,13,12,13,13,14,14,14,14,14,14,17,17,17,17,17,17,17,14,14,13,12,13,13,15,15,14,13,15,17,17,17,17,17,17,17,17,13,14,13,13,13,13,14,15,15,15,14,15,17,17,17,17,17,17,17,16,15,13,14,13,13,14,14,15,14,14,16,17,17,17,17,17,17,17,16,16,13,14,13,13,14,14,15,14,15,14,0,0,0,0,0,0,0,9,0,0,0,8,0,0,0,10,0,0,0,7,0,0,0,11,0,0,0,6,0,0,0,12,0,0,0,5,0,0,0,13,0,0,0,4,0,0,0,14,0,0,0,3,0,0,0,15,0,0,0,2,0,0,0,16,0,0,0,1,0,0,0,17,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,1,4,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,4,7,7,11,11,11,11,11,11,11,11,11,11,11,11,11,11,4,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,4,5,5,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,10,6,6,7,7,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,10,6,6,7,7,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,10,7,7,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,9,9,9,9,9,9,9,9,10,9,9,9,9,9,9,9,10,10,10,10,10,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,9,9,9,9,9,9,9,9,10,10,10,9,9,9,9,9,10,10,10,10,10,10,10,9,9,9,9,9,10,10,10,9,9,9,9,9,9,10,10,10,10,10,10,10,9,10,10,9,10,10,10,10,9,10,9,10,10,9,10,10,10,10,10,10,10,9,10,10,10,10,10,10,9,9,10,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,10,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,10,9,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,10,9,9,9,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,10,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,10,9,9,10,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,10,10,9,10,9,9,0,0,0,0,0,0,0,10,0,0,0,9,0,0,0,11,0,0,0,8,0,0,0,12,0,0,0,7,0,0,0,13,0,0,0,6,0,0,0,14,0,0,0,5,0,0,0,15,0,0,0,4,0,0,0,16,0,0,0,3,0,0,0,17,0,0,0,2,0,0,0,18,0,0,0,1,0,0,0,19,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,1,4,4,7,6,8,8,8,7,9,8,10,10,11,10,6,5,5,7,7,9,9,8,8,10,10,11,11,12,11,6,5,5,7,7,9,9,9,9,10,10,11,11,12,12,20,8,8,8,8,9,9,9,9,10,10,11,11,12,12,20,8,8,8,8,10,9,9,9,10,10,11,11,12,12,20,12,12,9,9,10,10,10,10,10,11,12,12,12,12,20,12,12,9,9,10,10,10,10,11,11,12,12,13,13,20,20,20,9,9,9,9,11,10,11,11,12,12,12,13,20,19,19,9,9,9,9,11,11,11,12,12,12,13,13,19,19,19,13,13,10,10,11,11,12,12,13,13,13,13,19,19,19,14,13,11,10,11,11,12,12,12,13,13,13,19,19,19,19,19,12,12,12,12,13,13,13,13,14,13,19,19,19,19,19,12,12,12,11,12,12,13,14,14,14,19,19,19,19,19,16,15,13,12,13,13,13,14,14,14,19,19,19,19,19,17,17,13,12,13,11,14,13,15,15,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,4,5,6,6,6,7,7,7,7,7,7,8,6,6,6,7,7,7,7,7,7,7,8,6,6,6,6,7,7,7,7,7,7,8,6,6,7,7,7,7,7,7,7,7,8,8,8,7,7,7,7,7,7,7,7,8,8,8,7,7,7,7,7,7,7,7,8,8,8,7,7,7,7,7,7,7,7,8,8,8,7,7,7,7,7,7,7,7,8,8,8,8,8,7,7,7,7,7,7,8,8,8,8,8,7,7,7,7,7,7,8,8,8,8,8,7,7,7,7,7,7,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,6,6,8,7,9,9,10,10,12,12,6,5,5,7,7,8,8,10,10,11,11,12,12,7,5,5,7,7,8,8,10,10,11,11,12,12,21,7,7,7,7,8,9,10,10,11,11,12,12,21,7,7,7,7,9,9,10,10,12,12,13,13,21,11,11,8,8,9,9,11,11,12,12,13,13,21,11,11,8,8,9,9,11,11,12,12,13,13,21,21,21,10,10,10,10,11,11,12,13,13,13,21,21,21,10,10,10,10,11,11,13,13,14,13,21,21,21,13,13,11,11,12,12,13,13,14,14,21,21,21,14,14,11,11,12,12,13,13,14,14,21,21,21,21,20,13,13,13,12,14,14,16,15,20,20,20,20,20,13,13,13,13,14,13,15,15,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,3,4,4,5,5,5,4,4,5,5,5,4,4,5,5,6,5,5,5,5,6,6,6,5,5,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,6,6,7,7,8,8,9,9,10,10,6,5,5,7,7,8,8,9,9,10,10,11,11,6,5,5,7,7,8,8,9,9,10,10,11,11,0,7,7,7,7,9,9,10,10,10,10,11,11,0,7,7,7,7,9,9,10,10,10,10,11,11,0,11,11,9,9,10,10,11,11,11,11,12,12,0,12,12,9,9,10,10,11,11,12,12,12,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,3,5,5,6,6,7,7,8,8,8,8,11,4,5,6,6,7,7,8,8,8,8,11,5,5,6,6,7,7,8,8,8,9,12,5,5,6,6,7,7,8,8,9,9,12,12,12,6,6,7,7,8,8,9,9,11,11,11,6,6,7,7,8,8,8,8,11,11,11,6,6,7,7,8,8,8,8,11,11,11,7,7,7,8,8,8,8,8,11,11,11,11,11,7,7,8,8,8,8,11,11,11,11,11,7,7,7,7,8,8,11,11,11,11,11,7,7,7,7,8,8,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,5,7,7,6,7,7,4,7,6,10,10,10,10,10,10,4,6,6,10,10,10,10,9,10,5,10,10,9,11,11,10,11,11,7,10,10,11,12,12,12,12,12,7,10,10,11,12,12,12,12,12,6,10,10,10,12,12,10,12,12,7,10,10,11,12,12,12,12,12,7,10,10,11,12,12,12,12,12,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,4,4,5,5,7,7,8,8,8,8,9,9,10,10,11,11,0,4,4,6,6,7,7,8,8,9,8,10,10,11,11,11,11,0,4,4,6,6,7,7,8,8,9,9,10,10,11,11,11,11,0,6,5,6,6,7,7,9,9,9,9,10,10,11,11,12,12,0,0,0,6,6,7,7,9,9,9,9,10,10,11,11,12,12,0,0,0,7,7,8,8,9,9,10,10,11,11,11,12,12,12,0,0,0,7,7,8,8,9,9,10,10,11,11,11,12,12,12,0,0,0,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0,0,0,0,8,8,9,9,10,10,11,11,12,12,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,2,4,4,5,5,7,7,9,9,0,4,4,6,6,7,7,9,9,0,4,4,6,6,7,7,9,9,0,5,5,6,6,8,8,10,10,0,0,0,6,6,8,8,10,10,0,0,0,7,7,9,9,10,10,0,0,0,7,7,8,8,10,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,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,3,5,5,8,8,0,5,5,8,8,0,5,5,8,8,0,7,7,9,9,0,0,0,9,9,5,7,7,9,9,0,8,7,10,9,0,8,7,10,9,0,10,10,11,11,0,0,0,11,11,5,7,7,9,9,0,7,8,9,10,0,7,8,9,10,0,10,10,11,11,0,0,0,11,11,8,9,9,11,10,0,11,10,12], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+175348); +/* memory initializer */ allocate([11,0,11,10,12,12,0,13,13,14,14,0,0,0,14,13,8,9,9,10,11,0,10,11,12,12,0,10,11,12,12,0,13,13,14,14,0,0,0,13,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,5,8,7,11,10,0,7,7,10,10,0,7,7,10,10,0,9,9,10,10,0,0,0,11,10,5,7,8,10,11,0,7,7,10,10,0,7,7,10,10,0,9,9,10,10,0,0,0,10,10,8,10,9,12,12,0,10,10,12,11,0,10,10,12,12,0,12,12,13,12,0,0,0,13,12,8,9,10,12,12,0,10,10,11,12,0,10,10,11,12,0,12,12,13,13,0,0,0,12,13,0,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,8,7,11,10,0,7,7,10,10,0,7,7,10,10,0,9,9,10,11,0,0,0,10,10,6,7,8,10,11,0,7,7,10,10,0,7,7,10,10,0,9,9,10,10,0,0,0,10,10,9,10,9,12,12,0,10,10,12,12,0,10,10,12,11,0,12,12,13,13,0,0,0,13,12,8,9,10,12,12,0,10,10,12,12,0,10,10,11,12,0,12,12,13,13,0,0,0,12,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,10,10,13,13,0,9,9,12,12,0,9,9,12,12,0,10,10,12,12,0,0,0,12,12,7,10,10,13,13,0,9,9,12,12,0,9,9,12,12,0,10,10,12,12,0,0,0,12,12,9,11,11,14,13,0,10,10,13,12,0,11,10,13,12,0,12,12,13,12,0,0,0,13,13,9,11,11,13,14,0,10,11,12,13,0,10,11,13,13,0,12,12,12,13,0,0,0,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,11,11,14,14,0,10,11,13,13,0,11,10,13,13,0,11,12,13,13,0,0,0,13,12,9,11,11,14,14,0,11,10,13,13,0,10,11,13,13,0,12,12,13,13,0,0,0,12,13,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,5,0,5,5,0,5,5,5,7,7,0,9,8,0,9,8,6,7,7,0,8,9,0,8,9,0,0,0,0,0,0,0,0,0,5,9,8,0,8,8,0,8,8,5,8,9,0,8,8,0,8,8,0,0,0,0,0,0,0,0,0,5,9,8,0,8,8,0,8,8,5,8,9,0,8,8,0,8,8,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,11,13,14,15,15,18,17,19,17,5,6,8,9,10,10,12,15,19,19,6,6,6,6,8,8,11,14,18,19,8,6,5,4,6,7,10,13,16,17,9,7,6,5,6,7,9,12,15,19,10,8,7,6,6,6,7,9,13,15,12,10,9,8,7,6,4,5,10,15,13,13,11,8,6,6,4,2,7,12,17,15,16,10,8,8,7,6,9,12,19,18,17,13,11,10,10,9,11,14,0,0,0,0,2,0,0,0,100,0,0,0,160,234,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,128,217,2,0,0,0,0,0,0,0,0,0,0,0,0,0,168,217,2,0,0,0,0,0,0,0,0,0,0,0,0,0,208,217,2,0,0,0,0,0,0,0,0,0,0,0,0,0,248,217,2,0,0,0,0,0,32,218,2,0,72,218,2,0,0,0,0,0,0,0,0,0,112,218,2,0,152,218,2,0,0,0,0,0,0,0,0,0,192,218,2,0,232,218,2,0,0,0,0,0,0,0,0,0,16,219,2,0,56,219,2,0,0,0,0,0,0,0,0,0,96,219,2,0,136,219,2,0,176,219,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,2,0,0,0,100,0,0,0,24,217,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,3,8,11,13,15,14,14,13,15,14,6,4,5,7,9,10,11,11,14,13,10,4,3,5,7,8,9,10,13,13,12,7,4,4,5,6,8,9,12,14,13,9,6,5,5,6,8,9,12,14,12,9,7,6,5,5,6,8,11,11,12,11,9,8,7,6,6,7,10,11,13,11,10,9,8,7,6,6,9,11,13,13,12,12,12,10,9,8,9,11,12,14,15,15,14,12,11,10,10,12,0,0,0,0,4,0,0,0,81,0,0,0,56,234,2,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,144,234,2,0,0,0,0,0,4,0,0,0,113,2,0,0,168,231,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,32,234,2,0,0,0,0,0,2,0,0,0,81,0,0,0,40,231,2,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,128,231,2,0,0,0,0,0,2,0,0,0,33,1,0,0,184,229,2,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,224,230,2,0,0,0,0,0,4,0,0,0,81,0,0,0,80,229,2,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,168,229,2,0,0,0,0,0,2,0,0,0,121,0,0,0,160,228,2,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,32,229,2,0,0,0,0,0,2,0,0,0,169,0,0,0,184,227,2,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,104,228,2,0,0,0,0,0,2,0,0,0,25,0,0,0,128,227,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,160,227,2,0,0,0,0,0,2,0,0,0,169,0,0,0,152,226,2,0,1,0,0,0,0,128,208,224,0,0,118,96,4,0,0,0,0,0,0,0,72,227,2,0,0,0,0,0,2,0,0,0,121,0,0,0,232,225,2,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,104,226,2,0,0,0,0,0,2,0,0,0,225,0,0,0,192,224,2,0,1,0,0,0,0,96,242,224,0,0,149,96,4,0,0,0,0,0,0,0,168,225,2,0,0,0,0,0,2,0,0,0,185,1,0,0,168,222,2,0,1,0,0,0,0,0,116,224,0,0,16,96,5,0,0,0,0,0,0,0,104,224,2,0,0,0,0,0,2,0,0,0,169,0,0,0,192,221,2,0,1,0,0,0,0,220,125,225,0,232,51,97,4,0,0,0,0,0,0,0,112,222,2,0,0,0,0,0,2,0,0,0,169,0,0,0,216,220,2,0,1,0,0,0,0,96,18,225,0,128,184,96,4,0,0,0,0,0,0,0,136,221,2,0,0,0,0,0,1,0,0,0,49,0,0,0,216,219,2,0,1,0,0,0,0,0,152,224,0,0,16,96,6,0,0,0,0,0,0,0,16,220,2,0,0,0,0,0,2,4,3,4,5,5,5,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,24,0,0,0,23,0,0,0,25,0,0,0,22,0,0,0,26,0,0,0,21,0,0,0,27,0,0,0,20,0,0,0,28,0,0,0,19,0,0,0,29,0,0,0,18,0,0,0,30,0,0,0,17,0,0,0,31,0,0,0,16,0,0,0,32,0,0,0,15,0,0,0,33,0,0,0,14,0,0,0,34,0,0,0,13,0,0,0,35,0,0,0,12,0,0,0,36,0,0,0,11,0,0,0,37,0,0,0,10,0,0,0,38,0,0,0,9,0,0,0,39,0,0,0,8,0,0,0,40,0,0,0,7,0,0,0,41,0,0,0,6,0,0,0,42,0,0,0,5,0,0,0,43,0,0,0,4,0,0,0,44,0,0,0,3,0,0,0,45,0,0,0,2,0,0,0,46,0,0,0,1,0,0,0,47,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,1,4,4,7,7,7,7,7,6,8,8,8,8,6,6,6,8,8,9,8,8,7,9,8,11,10,5,6,6,8,8,9,8,8,8,10,9,11,11,16,8,8,9,8,9,9,9,8,10,9,11,10,16,8,8,9,9,10,10,9,9,10,10,11,11,16,13,13,9,9,10,10,9,10,11,11,12,11,16,13,13,9,8,10,9,10,10,10,10,11,11,16,14,16,8,9,9,9,11,10,11,11,12,11,16,16,16,9,7,10,7,11,10,11,11,12,11,16,16,16,12,12,9,10,11,11,12,11,12,12,16,16,16,12,10,10,7,11,8,12,11,12,12,16,16,15,16,16,11,12,10,10,12,11,12,12,16,16,16,15,15,11,11,10,10,12,12,12,12,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,3,3,11,11,11,11,11,11,11,11,11,11,4,6,6,11,11,11,11,11,11,11,11,11,11,4,7,7,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,3,5,5,7,6,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,10,6,6,7,7,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,10,6,6,7,7,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,10,7,7,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,11,10,10,10,9,9,9,9,9,9,9,9,9,9,10,9,9,10,9,9,10,11,10,11,10,9,9,9,9,9,9,9,10,10,10,9,10,9,9,9,9,11,10,11,10,10,9,9,9,9,9,9,10,9,9,10,9,9,10,9,9,10,11,10,10,11,10,9,9,9,9,9,10,10,9,10,10,10,10,9,10,10,10,10,10,10,11,11,11,10,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,10,10,10,10,10,10,10,10,10,10,10,10,9,10,10,9,10,11,11,10,11,10,11,10,9,10,10,9,10,10,10,10,10,10,10,10,10,10,11,11,11,11,10,11,11,10,10,10,10,10,10,9,10,9,10,10,9,10,9,10,10,10,11,10,11,10,11,11,10,10,10,10,10,10,9,10,10,10,10,10,10,10,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,10,11,11,10,10,10,10,9,9,10,10,9,9,10,9,10,10,10,10,11,11,10,10,10,10,10,10,10,9,9,10,10,10,9,9,10,10,10,10,10,11,10,11,10,10,10,10,10,10,9,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,10,0,0,0,9,0,0,0,11,0,0,0,8,0,0,0,12,0,0,0,7,0,0,0,13,0,0,0,6,0,0,0,14,0,0,0,5,0,0,0,15,0,0,0,4,0,0,0,16,0,0,0,3,0,0,0,17,0,0,0,2,0,0,0,18,0,0,0,1,0,0,0,19,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,1,4,4,7,7,8,8,8,7,9,8,9,9,10,10,6,5,5,7,7,9,9,8,8,10,9,11,10,12,11,6,5,5,8,7,9,9,8,8,10,10,11,11,12,11,19,8,8,8,8,10,10,9,9,10,10,11,11,12,11,19,8,8,8,8,10,10,9,9,10,10,11,11,12,12,19,12,12,9,9,10,10,9,10,10,10,11,11,12,12,19,12,12,9,9,10,10,10,10,10,10,12,12,12,12,19,19,19,9,9,9,9,11,10,11,11,12,11,13,13,19,19,19,9,9,9,9,11,10,11,11,11,12,13,13,19,19,19,13,13,10,10,11,11,12,12,12,12,13,12,19,19,19,14,13,10,10,11,11,12,12,12,13,13,13,19,19,19,19,19,12,12,12,11,12,13,14,13,13,13,19,19,19,19,19,12,12,12,11,12,12,13,14,13,14,19,19,19,19,19,16,16,12,13,12,13,13,14,15,14,19,18,18,18,18,16,15,12,11,12,11,14,12,14,14,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,4,5,5,6,6,7,7,7,7,7,7,8,6,6,7,7,7,7,7,7,7,7,8,6,6,6,7,7,7,7,7,7,7,8,6,6,7,7,7,7,7,7,7,7,8,8,8,7,7,7,7,7,7,7,7,8,8,8,7,7,7,7,7,7,7,7,8,8,8,7,7,7,7,7,7,7,7,8,8,8,7,7,7,7,7,7,7,7,8,8,8,8,8,7,7,7,7,7,7,8,8,8,8,8,7,7,7,7,7,7,8,8,8,8,8,7,7,7,7,7,7,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,6,6,7,8,9,9,10,10,12,11,6,5,5,7,7,8,8,9,10,11,11,12,12,7,5,5,7,7,8,8,10,10,11,11,12,12,20,7,7,7,7,8,9,10,10,11,11,12,13,20,7,7,7,7,9,9,10,10,11,12,13,13,20,11,11,8,8,9,9,11,11,12,12,13,13,20,11,11,8,8,9,9,11,11,12,12,13,13,20,20,20,10,10,10,10,12,12,13,13,13,13,20,20,20,10,10,10,10,12,12,13,13,13,14,20,20,20,14,14,11,11,12,12,13,13,14,14,20,20,20,14,14,11,11,12,12,13,13,14,14,20,20,20,20,19,13,13,13,13,14,14,15,14,19,19,19,19,19,13,13,13,13,14,14,15,15,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,3,4,4,5,5,5,4,4,5,5,5,4,4,5,5,6,5,5,5,5,6,6,6,5,5,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,6,6,7,7,8,7,9,8,10,10,6,5,5,7,7,8,8,9,9,9,10,11,11,7,5,5,7,7,8,8,9,9,10,10,11,11,0,7,7,7,7,9,8,9,9,10,10,11,11,0,8,8,7,7,8,9,9,9,10,10,11,11,0,11,11,9,9,10,10,11,10,11,11,12,12,0,12,12,9,9,10,10,11,11,11,11,12,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,3,5,5,6,6,7,7,8,8,8,8,11,4,4,6,6,7,7,8,8,9,9,11,4,4,6,6,7,7,8,8,9,9,12,5,5,6,6,7,7,9,9,9,9,12,12,12,6,6,7,7,9,9,9,9,11,11,11,7,7,7,7,8,8,9,9,11,11,11,7,7,7,7,8,8,9,9,11,11,11,7,7,8,8,8,8,9,9,11,11,11,11,11,8,8,8,8,8,9,11,11,11,11,11,8,8,8,8,8,8,11,11,11,11,11,7,7,8,8,8,8,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,5,7,7,6,7,7,4,6,7,10,10,10,10,10,9,4,6,6,10,10,10,10,9,10,5,10,10,9,11,12,10,11,12,7,10,10,11,12,12,12,12,12,7,10,10,11,12,12,12,12,12,6,10,10,10,12,12,11,12,12,7,10,10,12,12,12,12,11,12,7,10,10,11,12,12,12,12,12,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,4,4,5,5,7,7,8,8,8,8,9,9,10,10,11,11,0,4,4,6,6,7,7,8,8,9,9,10,10,11,11,12,12,0,4,4,6,6,7,7,8,8,9,9,10,10,11,11,12,12,0,5,5,6,6,8,8,9,9,9,9,10,10,11,12,12,12,0,0,0,6,6,8,7,9,9,9,9,10,10,11,11,12,12,0,0,0,7,7,8,8,9,9,10,10,11,11,12,12,13,12,0,0,0,7,7,8,8,9,9,10,10,11,11,12,12,12,13,0,0,0,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0,0,0,0,8,8,9,9,10,10,11,11,12,12,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,2,4,4,5,5,7,7,9,9,0,4,4,6,6,7,7,9,9,0,4,4,6,6,7,7,9,9,0,5,5,6,6,8,8,10,10,0,0,0,6,6,8,8,10,10,0,0,0,7,7,9,9,10,10,0,0,0,7,7,8,8,10,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,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,3,5,5,8,8,0,5,5,8,8,0,5,5,8,8,0,7,7,9,9,0,0,0,9,9,5,7,7,9,9,0,8,8,10,10,0,8,7,10,9,0,10,10,11,11,0,0,0,11,11,5,7,7,9,9,0,8,8,10,10,0,7,8,9,10,0,10,10,11,11,0,0,0,11,11,8,9,9,11,10,0,11,11,12,12,0,11,10,12,12,0,13,14,14,14,0,0,0,14,13,8,9,9,10,11,0,11,11,12,12,0,10,11,12,12,0,13,13,14,14,0,0,0,13,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,5,8,7,11,10,0,7,7,10,10,0,7,7,10,10,0,9,9,11,10,0,0,0,11,11,5,7,8,10,11,0,7,7,10,10,0,7,7,10,10,0,9,9,10,11,0,0,0,11,11,8,10,9,12,12,0,10,10,12,12,0,10,10,12,12,0,12,12,13,13,0,0,0,13,13,8,9,10,12,12,0,10,10,12,12,0,10,10,11,12,0,12,12,13,13,0,0,0,13,13,0,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,8,8,11,11,0,7,7,10,10,0,7,7,10,10,0,9,9,10,11,0,0,0,11,10,5,8,8,10,11,0,7,7,10,10,0,7,7,10,10,0,9,9,11,10,0,0,0,10,11,9,10,10,12,12,0,10,10,12,12,0,10,10,12,12,0,12,13,13,13,0,0,0,13,12,9,10,10,12,12,0,10,10,12,12,0,10,10,12,12,0,13,12,13,13,0,0,0,12,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,10,10,14,13,0,9,9,12,12,0,9,9,12,12,0,10,10,12,12,0,0,0,12,12,7,10,10,13,14,0,9,9,12,13,0,9,9,12,12,0,10,10,12,12,0,0,0,12,12,9,11,11,14,13,0,11,10,13,12,0,11,11,13,13,0,12,12,13,13,0,0,0,13,13,9,11,11,13,14,0,10,11,12,13,0,11,11,13,13,0,12,12,13,13,0,0,0,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,11,11,14,14,0,10,11,13,13,0,11,10,13,13,0,12,12,13,13,0,0,0,13,12,9,11,11,14,14,0,11,10,13,13,0,10,11,13,13,0,12,12,14,13,0,0,0,13,13,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,5,0,5,5,0,5,5,5,8,7,0,9,9,0,9,8,5,7,8,0,9,9,0,8,9,0,0,0,0,0,0,0,0,0,5,9,9,0,8,8,0,8,8,5,8,9,0,8,8,0,8,8,0,0,0,0,0,0,0,0,0,5,9,9,0,8,8,0,8,8,5,8,9,0,8,8,0,8,8,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,11,12,14,15,15,17,17,18,18,5,6,6,8,9,10,13,17,18,19,7,5,4,6,8,9,11,15,19,19,8,6,5,5,6,7,11,14,16,17,9,7,7,6,7,7,10,13,15,19,10,8,7,6,7,6,7,9,14,16,12,10,9,7,7,6,4,5,10,15,14,13,11,7,6,6,4,2,7,13,16,16,15,9,8,8,8,6,9,13,19,19,17,12,11,10,10,9,11,14,0,0,0,0,2,0,0,0,100,0,0,0,160,253,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,128,236,2,0,0,0,0,0,0,0,0,0,0,0,0,0,168,236,2,0,0,0,0,0,0,0,0,0,0,0,0,0,208,236,2,0,0,0,0,0,0,0,0,0,0,0,0,0,248,236,2,0,0,0,0,0,32,237,2,0,72,237,2,0,0,0,0,0,0,0,0,0,112,237,2,0,152,237,2,0,0,0,0,0,0,0,0,0,192,237,2,0,232,237,2,0,0,0,0,0,0,0,0,0,16,238,2,0,56,238,2,0,0,0,0,0,0,0,0,0,96,238,2,0,136,238,2,0,176,238,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,2,0,0,0,100,0,0,0,24,236,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,3,8,11,13,14,14,13,13,16,14,6,3,4,7,9,9,10,11,14,13,10,4,3,5,7,7,9,10,13,15,12,7,4,4,6,6,8,10,13,15,12,8,6,6,6,6,8,10,13,14,11,9,7,6,6,6,7,8,12,11,13,10,9,8,7,6,6,7,11,11,13,11,10,9,9,7,7,6,10,11,13,13,13,13,13,11,9,8,10,12,12,15,15,16,15,12,11,10,10,12,0,0,0,0,4,0,0,0,81,0,0,0,56,253,2,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,144,253,2,0,0,0,0,0,4,0,0,0,113,2,0,0,168,250,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,32,253,2,0,0,0,0,0,2,0,0,0,81,0,0,0,40,250,2,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,128,250,2,0,0,0,0,0,2,0,0,0,33,1,0,0,184,248,2,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,224,249,2,0,0,0,0,0,4,0,0,0,81,0,0,0,80,248,2,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,168,248,2,0,0,0,0,0,2,0,0,0,121,0,0,0,160,247,2,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,32,248,2,0,0,0,0,0,2,0,0,0,169,0,0,0,184,246,2,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,104,247,2,0,0,0,0,0,2,0,0,0,25,0,0,0,128,246,2,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,160,246,2,0,0,0,0,0,2,0,0,0,169,0,0,0,152,245,2,0,1,0,0,0,0,128,208,224,0,0,118,96,4,0,0,0,0,0,0,0,72,246,2,0,0,0,0,0,2,0,0,0,121,0,0,0,232,244,2,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,104,245,2,0,0,0,0,0,2,0,0,0,225,0,0,0,192,243,2,0,1,0,0,0,0,96,242,224,0,0,149,96,4,0,0,0,0,0,0,0,168,244,2,0,0,0,0,0,2,0,0,0,185,1,0,0,168,241,2,0,1,0,0,0,0,0,116,224,0,0,16,96,5,0,0,0,0,0,0,0,104,243,2,0,0,0,0,0,2,0,0,0,169,0,0,0,192,240,2,0,1,0,0,0,0,220,125,225,0,232,51,97,4,0,0,0,0,0,0,0,112,241,2,0,0,0,0,0,2,0,0,0,169,0,0,0,216,239,2,0,1,0,0,0,0,96,18,225,0,128,184,96,4,0,0,0,0,0,0,0,136,240,2,0,0,0,0,0,1,0,0,0,49,0,0,0,216,238,2,0,1,0,0,0,0,0,152,224,0,0,16,96,6,0,0,0,0,0,0,0,16,239,2,0,0,0,0,0,2,4,3,4,5,5,5,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,24,0,0,0,23,0,0,0,25,0,0,0,22,0,0,0,26,0,0,0,21,0,0,0,27,0,0,0,20,0,0,0,28,0,0,0,19,0,0,0,29,0,0,0,18,0,0,0,30,0,0,0,17,0,0,0,31,0,0,0,16,0,0,0,32,0,0,0,15,0,0,0,33,0,0,0,14,0,0,0,34,0,0,0,13,0,0,0,35,0,0,0,12,0,0,0,36,0,0,0,11,0,0,0,37,0,0,0,10,0,0,0,38,0,0,0,9,0,0,0,39,0,0,0,8,0,0,0,40,0,0,0,7,0,0,0,41,0,0,0,6,0,0,0,42,0,0,0,5,0,0,0,43,0,0,0,4,0,0,0,44,0,0,0,3,0,0,0,45,0,0,0,2,0,0,0,46,0,0,0,1,0,0,0,47,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,1,4,4,7,7,7,7,7,6,8,8,8,8,6,6,6,8,8,8,8,8,7,9,8,10,10,5,6,6,8,8,9,9,8,8,10,10,10,10,16,9,9,9,9,9,9,9,8,10,9,11,11,16,8,9,9,9,9,9,9,9,10,10,11,11,16,13,13,9,9,10,9,9,10,11,11,11,12,16,13,14,9,8,10,8,9,9,10,10,12,11,16,14,16,9,9,9,9,11,11,12,11,12,11,16,16,16,9,7,9,6,11,11,11,10,11,11,16,16,16,11,12,9,10,11,11,12,11,13,13,16,16,16,12,11,10,7,12,10,12,12,12,12,16,16,15,16,16,10,11,10,11,13,13,14,12,16,16,16,15,15,12,10,11,11,13,11,12,13,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,3,3,11,11,11,11,11,11,11,11,11,11,4,7,7,11,11,11,11,11,11,11,11,11,11,5,8,9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,3,5,5,6,6,7,7,7,7,8,7,8,8,8,8,8,8,8,8,8,8,10,6,6,7,7,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,10,6,6,7,7,8,8,8,8,8,8,9,8,9,9,9,9,9,9,9,9,10,7,7,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,10,11,11,8,7,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,11,11,11,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,11,11,11,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,11,11,11,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,11,11,11,11,11,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,9,11,11,11,11,11,9,9,9,9,9,9,10,9,9,10,9,10,9,9,10,9,11,11,11,11,11,9,9,9,9,9,9,9,10,10,10,10,9,10,10,9,10,11,11,11,11,11,9,9,9,9,10,10,10,9,10,10,10,10,9,10,10,9,11,11,11,11,11,11,11,9,9,9,9,10,10,10,10,9,10,10,10,10,10,11,11,11,11,11,11,11,10,9,10,10,10,10,10,10,10,9,10,9,10,10,11,11,11,11,11,11,11,10,9,10,9,10,10,9,10,10,10,10,10,10,10,11,11,11,11,11,11,11,10,10,10,10,10,10,10,9,10,10,10,10,10,9,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,9,10,10,11,11,11,11,11,11,11,11,11,10,10,10,9,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,10,11,9,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,10,0,0,0,9,0,0,0,11,0,0,0,8,0,0,0,12,0,0,0,7,0,0,0,13,0,0,0,6,0,0,0,14,0,0,0,5,0,0,0,15,0,0,0,4,0,0,0,16,0,0,0,3,0,0,0,17,0,0,0,2,0,0,0,18,0,0,0,1,0,0,0,19,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,1,4,4,7,7,8,8,7,7,8,7,9,8,10,9,6,5,5,8,8,9,9,8,8,9,9,11,10,11,10,6,5,5,8,8,9,9,8,8,9,9,10,10,11,11,18,8,8,9,8,10,10,9,9,10,10,10,10,11,10,18,8,8,9,9,10,10,9,9,10,10,11,11,12,12,18,12,13,9,10,10,10,9,10,10,10,11,11,12,11,18,13,13,9,9,10,10,10,10,10,10,11,11,12,12,18,18,18,10,10,9,9,11,11,11,11,11,12,12,12,18,18,18,10,9,10,9,11,10,11,11,11,11,13,12,18,18,18,14,13,10,10,11,11,12,12,12,12,12,12,18,18,18,14,13,10,10,11,10,12,12,12,12,12,12,18,18,18,18,18,12,12,11,11,12,12,13,13,13,14,18,18,18,18,18,12,12,11,11,12,11,13,13,14,13,18,18,18,18,18,16,16,11,12,12,13,13,13,14,13,18,18,18,18,18,16,15,12,11,12,11,13,11,15,14,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,3,5,5,6,6,7,7,7,7,7,7,9,5,5,6,6,7,7,7,7,8,7,8,5,5,6,6,7,7,7,7,7,7,9,6,6,7,7,7,7,8,7,7,8,9,9,9,7,7,7,7,7,7,7,8,9,9,9,7,7,7,7,8,8,8,8,9,9,9,7,7,7,7,7,7,8,8,9,9,9,8,8,8,8,7,7,8,8,9,9,9,9,8,8,8,7,7,8,8,9,9,9,8,8,8,8,7,7,8,8,9,9,9,8,8,7,7,7,7,8,8,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,6,6,8,8,8,8,10,10,11,10,6,5,5,7,7,8,8,9,9,10,10,12,11,6,5,5,7,7,8,8,9,9,10,10,12,11,21,7,7,7,7,9,9,10,10,11,11,12,12,21,7,7,7,7,9,9,10,10,11,11,12,12,21,12,12,9,9,10,10,11,11,11,11,12,12,21,12,12,9,9,10,10,11,11,12,12,12,12,21,21,21,11,11,10,10,11,12,12,12,13,13,21,21,21,11,11,10,10,12,12,12,12,13,13,21,21,21,15,15,11,11,12,12,13,13,13,13,21,21,21,15,16,11,11,12,12,13,13,14,14,21,21,21,21,20,13,13,13,13,13,13,14,14,20,20,20,20,20,13,13,13,13,13,13,14,14,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,3,4,4,5,5,5,4,4,5,5,5,4,4,5,5,6,5,5,5,5,6,6,6,5,5,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,6,6,8,8,8,8,10,9,10,10,6,5,5,7,7,9,9,9,9,10,10,11,11,6,5,5,7,7,9,9,10,9,11,10,11,11,0,6,6,7,7,9,9,10,10,11,11,12,12,0,7,7,7,7,9,9,10,10,11,11,12,12,0,11,11,8,8,10,10,11,11,12,12,12,12,0,11,12,9,8,10,10,11,11,12,12,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,3,5,4,6,6,7,7,8,8,8,8,11,4,4,6,6,7,7,8,8,8,8,11,4,4,6,6,7,7,8,8,8,8,11,6,6,6,6,8,8,8,8,9,9,11,11,11,6,6,7,8,8,8,8,9,11,11,11,7,7,8,8,8,8,8,8,11,11,11,7,7,8,8,8,8,8,8,11,11,11,8,8,8,8,8,8,8,8,11,11,11,10,10,8,8,8,8,8,8,11,11,11,10,10,8,8,8,8,8,8,11,11,11,10,10,7,7,8,8,8,8,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,5,7,7,6,7,7,4,6,6,9,9,10,10,10,9,4,6,6,9,10,9,10,9,10,6,9,9,10,12,11,10,11,11,7,10,9,11,12,12,12,12,12,7,10,10,11,12,12,12,12,12,6,10,10,10,12,12,11,12,12,7,9,10,11,12,12,12,12,12,7,10,9,12,12,12,12,12,12,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,4,4,6,6,7,7,8,8,8,8,9,9,9,10,10,10,0,4,4,6,6,8,8,9,9,9,9,10,10,10,10,11,11,0,4,4,6,6,8,8,9,9,9,9,10,10,10,10,11,11,0,6,6,7,7,8,8,9,9,9,9,10,10,11,11,11,11,0,0,0,7,7,8,8,9,9,9,9,10,10,11,11,11,11,0,0,0,7,7,9,9,10,10,10,10,11,11,11,11,12,12,0,0,0,7,7,9,9,10,10,10,10,11,11,11,11,12,12,0,0,0,7,7,8,8,9,9,10,10,11,11,12,12,12,12,0,0,0,0,0,8,8,9,9,10,10,11,11,12,12,12,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,2,3,4,6,6,7,7,9,9,0,4,4,6,6,7,7,9,10,0,4,4,6,6,7,7,10,9,0,5,5,7,7,8,8,10,10,0,0,0,7,6,8,8,10,10,0,0,0,7,7,9,9,11,11,0,0,0,7,7,9,9,11,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,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,3,5,5,8,8,0,5,5,8,8,0,5,5,8,8,0,7,7,9,9,0,0,0,9,9,5,7,7,9,9,0,8,8,10,10,0,8,7,10,9,0,10,10,11,11,0,0,0,11,11,5,7,7,9,9,0,8,8,10,10,0,7,8,9,10,0,10,10,11,11,0,0,0,11,11,8,9,9,11,11,0,11,11,12,12,0,11,10,12,12,0,13,14,14,14,0,0,0,14,13,8,9,9,11,11,0,11,11,12,12,0,10,11,12,12,0,14,13,14,14,0,0,0,13,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,5,8,7,11,10,0,7,7,10,10,0,7,7,10,10,0,9,9,11,10,0,0,0,11,11,5,7,8,10,11,0,7,7,10,10,0,7,7,10,10,0,9,9,10,11,0,0,0,11,11,8,10,9,12,12,0,10,10,12,12,0,10,10,12,12,0,12,12,13,13,0,0,0,13,13,8,9,10,12,12,0,10,10,11,12,0,10,10,12,12,0,12,12,13,13,0,0,0,13,13,0,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,8,8,11,11,0,7,7,10,10,0,7,7,10,10,0,9,9,10,11,0,0,0,11,10,5,8,8,11,11,0,7,7,10,10,0,7,7,10,10,0,9,9,11,11,0,0,0,10,11,8,10,10,12,12,0,10,10,12,12,0,10,10,12,12,0,12,13,13,13,0,0,0,14,13,8,10,10,12,12,0,10,10,12,12,0,10,10,12,12,0,13,12,13,13,0,0,0,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,10,10,14,13,0,9,9,13,12,0,9,9,12,12,0,10,10,12,12,0,0,0,12,12,7,10,10,13,14,0,9,9,12,13,0,9,9,12,12,0,10,10,12,12,0,0,0,12,12,9,11,11,14,13,0,11,10,14,13,0,11,11,13,13,0,12,12,13,13,0,0,0,13,13,9,11,11,13,14,0,10,11,13,14,0,11,11,13,13,0,12,12,13,13,0,0,0,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,11,11,14,14,0,11,11,13,13,0,11,10,13,13,0,12,12,13,13], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+185588); +/* memory initializer */ allocate([13,13,9,11,11,14,14,0,11,11,13,13,0,10,11,13,13,0,12,12,14,13,0,0,0,13,13,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,5,0,5,5,0,5,5,5,8,7,0,9,9,0,9,8,5,7,8,0,9,9,0,8,9,0,0,0,0,0,0,0,0,0,5,9,8,0,8,8,0,8,8,5,8,9,0,8,8,0,8,8,0,0,0,0,0,0,0,0,0,5,9,9,0,8,8,0,8,8,5,9,9,0,8,8,0,8,8,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,9,11,11,13,14,19,17,17,19,5,4,5,8,10,10,13,16,18,19,7,4,4,5,8,9,12,14,17,19,8,6,5,5,7,7,10,13,16,18,10,8,7,6,5,5,8,11,17,19,11,9,7,7,5,4,5,8,17,19,13,11,8,7,7,5,5,7,16,18,14,13,8,6,6,5,5,7,16,18,18,16,10,8,8,7,7,9,16,18,18,18,12,10,10,9,9,10,17,18,0,0,0,0,2,0,0,0,100,0,0,0,184,41,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,2,0,0,0,0,0,0,0,0,0,0,0,0,0,168,255,2,0,0,0,0,0,0,0,0,0,0,0,0,0,208,255,2,0,0,0,0,0,0,0,0,0,0,0,0,0,248,255,2,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,72,0,3,0,0,0,0,0,112,0,3,0,152,0,3,0,0,0,0,0,0,0,0,0,192,0,3,0,232,0,3,0,0,0,0,0,0,0,0,0,16,1,3,0,56,1,3,0,96,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,100,0,0,0,24,255,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,3,8,9,13,10,12,12,12,12,12,6,4,6,8,6,8,10,10,11,12,8,5,4,10,4,7,8,9,10,11,13,8,10,8,9,9,11,12,13,14,10,6,4,9,3,5,6,8,10,11,11,8,6,9,5,5,6,7,9,11,12,9,7,11,6,6,6,7,8,10,12,11,9,12,7,7,6,6,7,9,13,12,10,13,9,8,7,7,7,8,11,15,11,15,11,10,9,8,7,7,0,0,0,0,8,0,0,0,161,25,0,0,0,16,3,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,168,41,3,0,0,0,0,0,4,0,0,0,113,2,0,0,112,13,3,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,232,15,3,0,0,0,0,0,4,0,0,0,113,2,0,0,224,10,3,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,88,13,3,0,0,0,0,0,2,0,0,0,81,0,0,0,96,10,3,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,184,10,3,0,0,0,0,0,2,0,0,0,81,0,0,0,224,9,3,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,56,10,3,0,0,0,0,0,2,0,0,0,33,1,0,0,112,8,3,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,152,9,3,0,0,0,0,0,4,0,0,0,81,0,0,0,8,8,3,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,96,8,3,0,0,0,0,0,2,0,0,0,121,0,0,0,88,7,3,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,216,7,3,0,0,0,0,0,2,0,0,0,169,0,0,0,112,6,3,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,32,7,3,0,0,0,0,0,2,0,0,0,25,0,0,0,56,6,3,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,88,6,3,0,0,0,0,0,2,0,0,0,225,0,0,0,16,5,3,0,1,0,0,0,0,134,115,225,0,80,22,97,4,0,0,0,0,0,0,0,248,5,3,0,0,0,0,0,2,0,0,0,33,1,0,0,160,3,3,0,1,0,0,0,0,0,245,224,0,0,149,96,5,0,0,0,0,0,0,0,200,4,3,0,0,0,0,0,2,0,0,0,185,1,0,0,136,1,3,0,1,0,0,0,0,0,116,224,0,0,16,96,5,0,0,0,0,0,0,0,72,3,3,0,0,0,0,0,3,5,5,6,6,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,9,11,5,6,7,7,8,7,8,8,8,8,9,9,9,9,9,9,9,9,9,9,11,5,5,7,7,7,7,8,8,8,8,9,9,9,9,9,9,9,9,9,9,11,7,7,7,7,8,8,8,8,9,9,9,9,9,9,9,9,9,10,9,10,11,11,11,7,7,8,8,8,8,9,9,9,9,9,9,10,10,10,10,10,10,11,11,11,8,8,8,8,9,9,9,9,9,9,9,10,10,10,10,10,10,10,11,11,11,8,8,8,8,9,9,9,9,9,9,10,10,10,10,10,10,10,10,11,11,11,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,11,11,11,11,11,9,9,9,9,9,9,10,9,10,10,10,10,10,10,10,10,11,11,11,11,11,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,9,9,10,9,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,9,9,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,10,0,0,0,9,0,0,0,11,0,0,0,8,0,0,0,12,0,0,0,7,0,0,0,13,0,0,0,6,0,0,0,14,0,0,0,5,0,0,0,15,0,0,0,4,0,0,0,16,0,0,0,3,0,0,0,17,0,0,0,2,0,0,0,18,0,0,0,1,0,0,0,19,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,1,4,4,5,5,7,7,9,8,10,9,10,10,11,10,11,11,6,5,5,7,7,8,9,10,10,11,10,12,11,12,11,13,12,6,5,5,7,7,9,9,10,10,11,11,12,12,13,12,13,13,18,8,8,8,8,9,9,10,11,11,11,12,11,13,11,13,12,18,8,8,8,8,10,10,11,11,12,12,13,13,13,13,13,14,18,12,12,9,9,11,11,11,11,12,12,13,12,13,12,13,13,20,13,12,9,9,11,11,11,11,12,12,13,13,13,14,14,13,20,18,19,11,12,11,11,12,12,13,13,13,13,13,13,14,13,18,19,19,12,11,11,11,12,12,13,12,13,13,13,14,14,13,18,17,19,14,15,12,12,12,13,13,13,14,14,14,14,14,14,19,19,19,16,15,12,11,13,12,14,14,14,13,13,14,14,14,19,18,19,18,19,13,13,13,13,14,14,14,13,14,14,14,14,18,17,19,19,19,13,13,13,11,13,11,13,14,14,14,14,14,19,17,17,18,18,16,16,13,13,13,13,14,13,15,15,14,14,19,19,17,17,18,16,16,13,11,14,10,13,12,14,14,14,14,19,19,19,19,19,18,17,13,14,13,11,14,13,14,14,15,15,19,19,19,17,19,18,18,14,13,12,11,14,11,15,15,15,15,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,3,3,13,13,13,13,13,13,13,13,13,13,13,13,4,7,7,13,13,13,13,13,13,13,13,13,13,13,13,3,8,6,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,12,12,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,2,4,4,5,5,6,5,5,5,5,6,4,5,5,5,6,5,5,5,5,6,6,6,5,5,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,6,6,7,7,8,8,9,9,10,10,6,5,5,7,7,8,8,8,9,10,10,10,10,7,5,5,7,7,8,8,9,9,10,10,10,10,0,8,8,8,8,9,9,9,9,10,10,11,11,0,8,8,8,8,9,9,9,9,10,10,11,11,0,12,12,9,9,9,10,10,10,10,10,11,11,0,13,13,9,9,9,9,10,10,11,11,11,11,0,0,0,10,10,10,10,10,10,11,11,11,11,0,0,0,10,10,10,10,10,10,11,11,12,12,0,0,0,14,14,11,11,11,11,12,12,12,12,0,0,0,14,14,11,11,11,11,12,12,12,12,0,0,0,0,0,12,12,12,12,12,12,13,13,0,0,0,0,0,12,12,12,12,12,12,13,13,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,4,4,6,6,7,7,8,8,8,8,10,5,5,6,6,7,7,8,8,8,8,10,5,5,6,6,7,7,8,8,8,8,10,6,6,7,7,8,8,8,8,8,8,10,10,10,7,7,8,8,8,8,8,8,10,10,10,7,7,8,8,8,8,8,8,10,10,10,7,7,8,8,8,8,8,8,10,10,10,8,8,8,8,8,8,8,9,10,10,10,10,10,8,8,8,8,8,8,10,10,10,10,10,9,9,8,8,8,8,10,10,10,10,10,8,8,8,8,8,8,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,7,6,6,7,6,6,4,7,7,10,9,9,11,9,9,4,7,7,10,9,9,11,9,9,7,10,10,11,11,10,11,11,11,6,9,9,11,10,10,11,10,10,6,9,9,11,10,10,11,10,10,7,11,11,12,11,11,12,11,11,6,9,9,11,10,10,11,10,10,6,9,9,11,10,10,11,10,10,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,4,4,6,6,8,8,9,9,9,9,10,10,10,10,11,11,0,4,4,6,6,8,8,9,9,9,9,10,10,11,11,12,12,0,4,4,6,6,8,8,9,9,9,9,10,10,11,11,12,12,0,6,6,7,7,8,8,9,9,9,9,10,10,11,11,12,12,0,0,0,7,7,8,8,9,9,9,9,10,10,11,11,12,12,0,0,0,7,7,9,9,10,10,10,10,11,11,11,11,12,12,0,0,0,7,7,8,9,10,10,10,10,11,11,11,11,12,12,0,0,0,8,8,9,9,10,10,10,10,11,11,12,12,12,12,0,0,0,0,0,9,9,10,10,10,10,11,11,12,12,12,12,0,0,0,0,0,9,9,10,10,10,10,11,11,12,12,12,12,0,0,0,0,0,9,9,9,10,10,10,11,11,12,12,12,12,0,0,0,0,0,10,10,10,10,11,11,11,12,12,12,13,13,0,0,0,0,0,0,0,10,10,11,11,11,11,12,12,13,13,0,0,0,0,0,0,0,11,11,11,11,12,12,12,13,13,13,0,0,0,0,0,0,0,11,11,11,11,12,12,12,12,13,13,0,0,0,0,0,0,0,12,12,12,12,13,12,13,13,13,13,0,0,0,0,0,0,0,0,0,12,12,12,12,13,13,13,13,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,2,4,3,6,6,7,7,9,9,0,4,4,6,6,7,7,9,9,0,4,4,6,6,7,7,9,9,0,6,6,7,7,7,7,9,9,0,0,0,7,6,7,7,9,9,0,0,0,8,8,8,8,10,10,0,0,0,8,8,8,8,10,10,0,0,0,9,9,9,9,10,10,0,0,0,0,0,9,9,10,10,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,2,3,3,6,6,0,0,0,0,0,4,4,6,6,0,0,0,0,0,4,4,6,6,0,0,0,0,0,5,5,6,6,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,8,7,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,2,4,3,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5,5,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,5,5,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,6,6,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,4,4,0,0,0,5,5,0,0,0,5,5,0,0,0,8,7,0,0,0,0,0,0,0,4,6,6,0,0,0,8,8,0,0,0,8,7,0,0,0,10,10,0,0,0,0,0,0,0,4,6,6,0,0,0,8,8,0,0,0,7,8,0,0,0,10,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,5,8,7,0,0,0,8,8,0,0,0,8,8,0,0,0,10,10,0,0,0,0,0,0,0,5,7,8,0,0,0,8,8,0,0,0,8,8,0,0,0,10,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,5,8,8,0,0,0,8,8,0,0,0,8,8,0,0,0,10,10,0,0,0,0,0,0,0,5,8,8,0,0,0,8,8,0,0,0,8,8,0,0,0,10,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,8,10,10,0,0,0,10,10,0,0,0,9,10,0,0,0,11,10,0,0,0,0,0,0,0,8,10,10,0,0,0,10,10,0,0,0,10,10,0,0,0,10,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,4,4,0,0,0,0,0,0,4,7,7,0,0,0,0,0,0,4,6,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,7,7,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,7,8,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,7,0,0,0,0,0,0,7,9,8,0,0,0,0,0,0,7,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,7,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,7,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,9,10,11,0,0,0,0,0,0,9,10,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,7,9,9,0,0,0,0,0,0,8,10,9,0,0,0,0,0,0,9,10,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,7,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,7,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,9,11,10,0,0,0,0,0,0,8,9,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,7,9,9,0,0,0,0,0,0,9,10,10,0,0,0,0,0,0,9,11,10], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+195830); +/* memory initializer */ allocate([1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,5,8,10,14,11,11,12,16,15,17,5,5,7,9,7,8,10,13,17,17,7,5,5,10,5,7,8,11,13,15,10,8,10,8,8,8,11,15,18,18,8,5,5,8,3,4,6,10,14,16,9,7,6,7,4,3,5,9,14,18,10,9,8,10,6,5,6,9,14,18,12,12,11,12,8,7,8,11,14,18,14,13,12,10,7,5,6,9,14,18,14,14,13,10,6,5,6,8,11,16,0,0,0,0,2,0,0,0,100,0,0,0,72,85,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,43,3,0,0,0,0,0,0,0,0,0,0,0,0,0,192,43,3,0,0,0,0,0,0,0,0,0,0,0,0,0,232,43,3,0,0,0,0,0,0,0,0,0,0,0,0,0,16,44,3,0,0,0,0,0,0,0,0,0,0,0,0,0,56,44,3,0,0,0,0,0,0,0,0,0,0,0,0,0,96,44,3,0,0,0,0,0,136,44,3,0,176,44,3,0,0,0,0,0,0,0,0,0,216,44,3,0,0,45,3,0,0,0,0,0,0,0,0,0,40,45,3,0,80,45,3,0,120,45,3,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,100,0,0,0,48,43,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,11,11,11,11,10,11,12,11,5,2,11,5,6,6,7,9,11,12,11,9,6,10,6,7,8,9,10,11,11,5,11,7,8,8,9,11,13,14,11,6,5,8,4,5,7,8,10,11,10,6,7,7,5,5,6,8,9,11,10,7,8,9,6,6,6,7,8,9,11,9,9,11,7,7,6,6,7,9,12,12,10,13,9,8,7,7,7,8,11,13,11,14,11,10,9,8,7,7,0,0,0,0,8,0,0,0,161,25,0,0,144,59,3,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,56,85,3,0,0,0,0,0,4,0,0,0,113,2,0,0,0,57,3,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,120,59,3,0,0,0,0,0,4,0,0,0,113,2,0,0,112,54,3,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,232,56,3,0,0,0,0,0,2,0,0,0,81,0,0,0,240,53,3,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,72,54,3,0,0,0,0,0,2,0,0,0,81,0,0,0,112,53,3,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,200,53,3,0,0,0,0,0,2,0,0,0,33,1,0,0,0,52,3,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,40,53,3,0,0,0,0,0,4,0,0,0,81,0,0,0,152,51,3,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,240,51,3,0,0,0,0,0,2,0,0,0,121,0,0,0,232,50,3,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,104,51,3,0,0,0,0,0,2,0,0,0,169,0,0,0,0,50,3,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,176,50,3,0,0,0,0,0,2,0,0,0,25,0,0,0,200,49,3,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,232,49,3,0,0,0,0,0,2,0,0,0,169,0,0,0,224,48,3,0,1,0,0,0,0,136,93,225,0,176,19,97,4,0,0,0,0,0,0,0,144,49,3,0,0,0,0,0,2,0,0,0,225,0,0,0,184,47,3,0,1,0,0,0,0,96,242,224,0,0,149,96,4,0,0,0,0,0,0,0,160,48,3,0,0,0,0,0,2,0,0,0,185,1,0,0,160,45,3,0,1,0,0,0,0,0,116,224,0,0,16,96,5,0,0,0,0,0,0,0,96,47,3,0,0,0,0,0,2,5,5,6,6,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,11,6,6,7,7,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,11,6,6,7,7,8,8,8,8,9,9,9,9,9,9,10,9,10,10,10,10,11,7,7,7,7,8,8,9,9,9,9,9,9,9,10,10,10,10,10,10,10,12,11,11,7,7,8,8,9,9,9,9,9,9,10,10,10,10,10,10,10,10,12,11,12,8,8,8,8,9,9,9,9,9,10,10,10,10,10,10,10,10,10,11,11,11,8,8,8,8,9,9,9,9,10,10,10,10,10,10,10,10,10,10,11,11,12,9,9,9,9,9,9,10,9,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,11,12,11,11,11,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,12,12,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,12,11,12,11,11,11,9,10,10,10,10,10,10,10,10,10,10,10,10,10,11,12,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,12,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,12,11,11,12,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,12,12,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,12,12,12,11,11,11,12,11,11,11,10,10,10,10,10,10,10,10,10,10,10,12,11,12,12,12,12,12,11,12,11,11,10,10,10,10,10,10,10,10,10,10,12,12,12,12,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,10,0,0,0,9,0,0,0,11,0,0,0,8,0,0,0,12,0,0,0,7,0,0,0,13,0,0,0,6,0,0,0,14,0,0,0,5,0,0,0,15,0,0,0,4,0,0,0,16,0,0,0,3,0,0,0,17,0,0,0,2,0,0,0,18,0,0,0,1,0,0,0,19,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,1,4,4,5,5,7,7,9,8,10,9,10,10,10,10,6,5,5,7,7,9,8,10,9,11,10,12,12,13,13,6,5,5,7,7,9,9,10,10,11,11,12,12,12,13,19,8,8,8,8,9,9,10,10,12,11,12,12,13,13,19,8,8,8,8,9,9,11,11,12,12,13,13,13,13,19,12,12,9,9,11,11,11,11,12,11,13,12,13,13,18,12,12,9,9,11,10,11,11,12,12,12,13,13,14,19,18,18,11,11,11,11,12,12,13,12,13,13,14,14,16,18,18,11,11,11,10,12,11,13,13,13,13,13,14,17,18,18,14,15,11,12,12,13,13,13,13,14,14,14,18,18,18,15,15,12,10,13,10,13,13,13,13,13,14,18,17,18,17,18,12,13,12,13,13,13,14,14,16,14,18,17,18,18,17,13,12,13,10,12,12,14,14,14,14,17,18,18,18,18,14,15,12,12,13,12,14,14,15,15,18,18,18,17,18,15,14,12,11,12,12,14,14,14,15,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,1,3,3,12,12,12,12,12,12,12,12,12,12,4,7,7,12,12,12,12,12,12,12,12,12,12,3,8,8,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,4,4,5,5,6,5,5,5,5,6,5,4,5,5,6,5,5,5,5,6,6,6,5,5,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,6,6,7,7,8,8,9,9,10,10,6,5,5,7,7,8,8,8,8,9,10,11,11,7,5,5,7,7,8,8,9,9,10,10,11,11,0,8,8,8,8,9,9,9,9,10,10,11,11,0,8,8,8,8,9,9,9,9,10,10,11,11,0,12,12,9,9,9,9,10,10,10,10,11,11,0,13,13,9,9,10,9,10,10,11,11,11,12,0,0,0,10,10,10,10,10,10,11,11,12,12,0,0,0,10,10,10,10,10,10,11,11,12,12,0,0,0,14,14,11,11,11,11,12,12,12,12,0,0,0,14,14,11,11,11,11,12,12,12,13,0,0,0,0,0,12,12,12,12,12,12,13,13,0,0,0,0,0,13,12,12,12,12,12,13,13,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,4,4,6,6,7,7,7,7,8,8,10,5,5,6,6,7,7,8,8,8,8,10,5,5,6,6,7,7,8,8,8,8,10,6,6,7,7,8,8,8,8,8,8,10,10,10,7,7,8,8,8,8,8,8,10,10,10,8,7,8,8,8,8,8,8,10,10,10,7,7,8,8,8,8,8,8,10,10,10,8,8,8,8,8,8,8,8,10,10,10,10,10,8,8,8,8,8,8,10,10,10,10,10,9,9,8,8,9,8,10,10,10,10,10,8,8,8,8,9,9,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,7,6,6,7,6,6,4,7,7,10,9,9,11,9,9,4,7,7,10,9,9,11,9,9,7,10,10,11,11,10,11,11,11,6,9,9,11,10,10,11,10,10,6,9,9,11,10,10,11,10,10,7,11,11,12,11,11,12,11,11,6,9,9,11,10,10,11,10,10,6,9,9,11,10,10,11,10,10,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,4,4,6,6,8,8,9,9,8,8,9,9,10,10,11,11,0,4,4,6,6,8,8,9,9,9,9,10,10,11,11,11,11,0,4,4,7,6,8,8,9,9,9,9,10,10,11,11,11,11,0,6,6,7,7,8,8,9,9,9,9,10,10,11,11,11,12,0,0,0,7,7,8,8,9,9,9,9,10,10,11,11,12,12,0,0,0,8,8,8,8,9,9,9,9,10,10,11,11,12,12,0,0,0,8,8,8,8,9,9,9,9,10,10,11,11,12,12,0,0,0,9,9,9,9,10,10,10,10,11,11,11,11,12,12,0,0,0,0,0,9,9,10,10,10,10,11,11,11,11,12,12,0,0,0,0,0,9,9,9,10,10,10,11,11,11,11,12,12,0,0,0,0,0,9,9,9,9,10,10,11,11,11,12,12,12,0,0,0,0,0,10,10,10,10,11,11,11,11,12,12,13,12,0,0,0,0,0,0,0,10,10,11,11,11,11,12,12,12,12,0,0,0,0,0,0,0,11,11,11,11,12,12,12,12,13,13,0,0,0,0,0,0,0,11,11,11,11,12,12,12,12,13,13,0,0,0,0,0,0,0,12,12,12,12,12,12,13,13,13,13,0,0,0,0,0,0,0,0,0,12,12,12,12,12,13,13,13,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,2,3,3,6,6,7,7,9,9,0,4,4,6,6,7,7,9,9,0,4,5,6,6,7,7,9,9,0,6,6,7,7,8,8,10,10,0,0,0,7,7,8,8,10,9,0,0,0,9,8,8,8,10,10,0,0,0,8,8,8,8,10,10,0,0,0,10,10,9,9,11,11,0,0,0,0,0,9,9,10,10,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,2,3,3,6,6,0,0,0,0,0,4,4,6,6,0,0,0,0,0,4,4,6,6,0,0,0,0,0,5,5,6,6,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,7,8,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,2,3,3,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5,4,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,5,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,7,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,5,5,0,0,0,5,5,0,0,0,5,5,0,0,0,7,7,0,0,0,0,0,0,0,5,6,6,0,0,0,7,7,0,0,0,7,7,0,0,0,10,10,0,0,0,0,0,0,0,5,6,6,0,0,0,7,7,0,0,0,7,7,0,0,0,10,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,5,8,7,0,0,0,7,7,0,0,0,7,7,0,0,0,9,9,0,0,0,0,0,0,0,5,7,8,0,0,0,7,7,0,0,0,7,7,0,0,0,9,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,0,0,0,0,0,0,0,0,0,0,0,0,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,7,7,0,0,0,7,7,0,0,0,7,7,0,0,0,9,9,0,0,0,0,0,0,0,5,7,7,0,0,0,7,7,0,0,0,7,7,0,0,0,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,10,10,0,0,0,9,9,0,0,0,9,9,0,0,0,10,10,0,0,0,0,0,0,0,8,10,10,0,0,0,9,9,0,0,0,9,9,0,0,0,10,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,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,4,4,0,0,0,0,0,0,5,6,6,0,0,0,0,0,0,5,6,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,7,7,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,6,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,7,7,0,0,0,0,0,0,6,8,7,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,7,7,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,8,9,9,0,0,0,0,0,0,8,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,8,8,0,0,0,0,0,0,8,9,8,0,0,0,0,0,0,8,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,7,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,8,0,0,0,0,0,0,8,9,9,0,0,0,0,0,0,8,8,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,8,9,9,0,0,0,0,0,0,8,9,9], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+207264); +/* memory initializer */ allocate([1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,7,14,10,15,10,12,15,16,15,4,2,11,5,10,6,8,11,14,14,14,10,7,11,6,8,10,11,13,15,9,4,11,5,9,6,9,12,14,15,14,9,6,9,4,5,7,10,12,13,9,5,7,6,5,5,7,10,13,13,10,8,9,8,7,6,8,10,14,14,13,11,10,10,7,7,8,11,14,15,13,12,9,9,6,5,7,10,14,17,15,13,11,10,6,6,7,9,12,17,0,0,0,0,2,0,0,0,100,0,0,0,48,128,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,87,3,0,0,0,0,0,0,0,0,0,0,0,0,0,80,87,3,0,0,0,0,0,0,0,0,0,0,0,0,0,120,87,3,0,0,0,0,0,0,0,0,0,0,0,0,0,160,87,3,0,0,0,0,0,0,0,0,0,0,0,0,0,200,87,3,0,0,0,0,0,0,0,0,0,0,0,0,0,240,87,3,0,0,0,0,0,24,88,3,0,64,88,3,0,0,0,0,0,0,0,0,0,104,88,3,0,144,88,3,0,0,0,0,0,0,0,0,0,184,88,3,0,224,88,3,0,8,89,3,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,100,0,0,0,192,86,3,0,0,0,0,0,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,6,11,11,11,11,10,10,12,11,5,2,11,5,6,6,7,9,11,13,13,10,7,11,6,7,8,9,10,12,11,5,11,6,8,7,9,11,14,15,11,6,6,8,4,5,7,8,10,13,10,5,7,7,5,5,6,8,10,11,10,7,7,8,6,5,5,7,9,9,11,8,8,11,8,7,6,6,7,9,12,11,10,13,9,9,7,7,7,9,11,13,12,15,12,11,9,8,8,8,0,0,0,0,8,0,0,0,161,25,0,0,120,102,3,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,32,128,3,0,0,0,0,0,4,0,0,0,113,2,0,0,232,99,3,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,96,102,3,0,0,0,0,0,4,0,0,0,113,2,0,0,88,97,3,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,208,99,3,0,0,0,0,0,2,0,0,0,81,0,0,0,216,96,3,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,48,97,3,0,0,0,0,0,2,0,0,0,81,0,0,0,88,96,3,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,176,96,3,0,0,0,0,0,2,0,0,0,33,1,0,0,232,94,3,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,16,96,3,0,0,0,0,0,4,0,0,0,81,0,0,0,128,94,3,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,216,94,3,0,0,0,0,0,2,0,0,0,121,0,0,0,208,93,3,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,80,94,3,0,0,0,0,0,2,0,0,0,169,0,0,0,232,92,3,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,152,93,3,0,0,0,0,0,2,0,0,0,25,0,0,0,176,92,3,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,208,92,3,0,0,0,0,0,2,0,0,0,169,0,0,0,200,91,3,0,1,0,0,0,0,232,87,225,0,224,255,96,4,0,0,0,0,0,0,0,120,92,3,0,0,0,0,0,2,0,0,0,225,0,0,0,160,90,3,0,1,0,0,0,0,192,221,224,0,0,145,96,4,0,0,0,0,0,0,0,136,91,3,0,0,0,0,0,2,0,0,0,33,1,0,0,48,89,3,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,88,90,3,0,0,0,0,0,2,5,5,6,6,7,7,7,7,7,7,8,8,8,8,8,8,10,6,6,7,7,8,7,8,8,8,8,8,9,9,9,9,9,10,6,6,7,7,7,7,8,8,8,8,9,9,9,9,9,9,10,7,7,7,7,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,7,7,8,8,8,9,9,9,9,9,9,9,9,9,11,11,11,8,8,8,8,9,9,9,9,9,9,9,9,9,9,10,10,10,8,8,8,8,9,9,9,9,9,9,9,9,9,9,10,10,10,8,9,9,9,9,9,9,9,9,9,9,9,10,9,10,10,10,11,11,9,9,9,9,9,9,9,9,9,9,9,9,11,10,11,11,11,9,9,9,9,9,9,10,10,9,9,10,9,11,10,11,11,11,9,9,9,9,9,9,9,9,10,10,10,9,11,11,11,11,11,9,9,9,9,10,10,9,9,9,9,10,9,11,11,11,11,11,11,11,9,9,9,9,9,9,10,10,10,10,11,11,11,11,11,11,11,10,9,10,10,9,10,9,9,10,9,11,10,10,11,11,11,11,9,10,9,9,9,9,10,10,10,10,11,11,11,11,11,11,10,10,10,9,9,10,9,10,9,10,10,10,10,11,11,11,11,11,11,11,9,9,9,9,9,10,10,10,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,4,4,6,6,7,7,8,7,9,9,10,10,10,10,6,5,5,7,7,8,8,10,8,11,10,12,12,13,13,6,5,5,7,7,8,8,10,9,11,11,12,12,13,12,18,8,8,8,8,9,9,10,9,11,10,12,12,13,13,18,8,8,8,8,9,9,10,10,11,11,13,12,14,13,18,11,11,9,9,10,10,11,11,11,12,13,12,13,14,18,11,11,9,8,11,10,11,11,11,11,12,12,14,13,18,18,18,10,11,10,11,12,12,12,12,13,12,14,13,18,18,18,10,11,11,9,12,11,12,12,12,13,13,13,18,18,17,14,14,11,11,12,12,13,12,14,12,14,13,18,18,18,14,14,11,10,12,9,12,13,13,13,13,13,18,18,17,16,18,13,13,12,12,13,11,14,12,14,14,17,18,18,17,18,13,12,13,10,12,11,14,14,14,14,17,18,18,18,18,15,16,12,12,13,10,14,12,14,15,18,18,18,16,17,16,14,12,11,13,10,13,13,14,15,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,1,4,4,12,12,12,12,12,12,12,12,12,12,4,9,8,12,12,12,12,12,12,12,12,12,12,2,9,7,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,4,4,5,5,6,5,5,5,5,6,4,5,5,5,6,5,5,5,5,6,6,6,5,5,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,6,6,7,7,8,8,9,9,10,10,6,5,5,7,7,8,8,8,8,9,9,10,10,7,5,5,7,7,8,8,8,8,9,9,11,10,0,8,8,8,8,9,9,9,9,10,10,11,11,0,8,8,8,8,9,9,9,9,10,10,11,11,0,12,12,9,9,10,10,10,10,11,11,11,12,0,13,13,9,9,10,10,10,10,11,11,12,12,0,0,0,10,10,10,10,11,11,12,12,12,12,0,0,0,10,10,10,10,11,11,12,12,12,12,0,0,0,14,14,11,11,11,11,12,12,13,13,0,0,0,14,14,11,11,11,11,12,12,13,13,0,0,0,0,0,12,12,12,12,13,13,14,13,0,0,0,0,0,13,13,12,12,13,12,14,13,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,4,4,6,6,7,7,7,7,8,8,10,5,5,6,6,7,7,8,8,8,8,10,5,5,6,6,7,7,8,8,8,8,10,6,6,7,7,8,8,8,8,8,8,10,10,10,7,7,8,7,8,8,8,8,10,10,10,8,8,8,8,8,8,8,8,10,10,10,7,8,8,8,8,8,8,8,10,10,10,8,8,8,8,8,8,8,8,10,10,10,10,10,8,8,8,8,8,8,10,10,10,10,10,9,9,8,8,9,8,10,10,10,10,10,8,8,8,8,8,8,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,7,6,6,7,6,6,4,7,7,10,9,9,11,9,9,4,7,7,10,9,9,11,9,9,7,10,10,11,11,10,12,11,11,6,9,9,11,10,10,11,10,10,6,9,9,11,10,10,11,10,10,7,11,11,11,11,11,12,11,11,6,9,9,11,10,10,11,10,10,6,9,9,11,10,10,11,10,10,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,3,3,6,6,7,7,8,8,8,8,9,9,10,10,11,10,0,5,5,7,7,8,8,9,9,9,9,10,10,10,10,11,11,0,5,5,7,7,8,8,9,9,9,9,10,10,10,10,11,11,0,6,6,7,7,8,8,9,9,9,9,10,10,11,11,11,11,0,0,0,7,7,8,8,9,9,9,9,10,10,11,11,11,12,0,0,0,8,8,8,8,9,9,9,9,10,10,11,11,12,12,0,0,0,8,8,8,8,9,9,9,9,10,10,11,11,12,12,0,0,0,9,9,9,9,10,10,10,10,11,10,11,11,12,12,0,0,0,0,0,9,9,10,10,10,10,11,11,11,11,12,12,0,0,0,0,0,9,8,9,9,10,10,11,11,12,12,12,12,0,0,0,0,0,8,8,9,9,10,10,11,11,12,11,12,12,0,0,0,0,0,9,10,10,10,11,11,11,11,12,12,13,13,0,0,0,0,0,0,0,10,10,10,10,11,11,12,12,13,13,0,0,0,0,0,0,0,11,11,11,11,12,12,12,12,13,13,0,0,0,0,0,0,0,11,11,11,11,12,12,12,12,13,13,0,0,0,0,0,0,0,11,11,12,12,12,12,13,13,13,13,0,0,0,0,0,0,0,0,0,12,12,12,12,13,13,13,13,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,3,4,6,6,7,7,9,9,0,5,5,7,7,7,8,9,9,0,5,5,7,7,8,8,9,9,0,7,7,8,8,8,8,10,10,0,0,0,8,8,8,8,10,10,0,0,0,9,9,9,9,10,10,0,0,0,9,9,9,9,10,10,0,0,0,10,10,10,10,11,11,0,0,0,0,0,10,10,11,11,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,2,3,3,6,6,0,0,0,0,0,4,4,6,6,0,0,0,0,0,4,4,6,6,0,0,0,0,0,5,5,6,6,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,7,8,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,2,4,3,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,7,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,5,5,0,0,0,5,5,0,0,0,5,5,0,0,0,7,8,0,0,0,0,0,0,0,5,6,6,0,0,0,7,7,0,0,0,7,7,0,0,0,10,10,0,0,0,0,0,0,0,5,6,6,0,0,0,7,7,0,0,0,7,7,0,0,0,10,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,5,7,7,0,0,0,7,7,0,0,0,7,7,0,0,0,9,9,0,0,0,0,0,0,0,5,7,7,0,0,0,7,7,0,0,0,7,7,0,0,0,9,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,0,0,0,0,0,0,0,0,0,0,0,0,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,7,7,0,0,0,7,7,0,0,0,7,7,0,0,0,9,9,0,0,0,0,0,0,0,5,7,7,0,0,0,7,7,0,0,0,7,7,0,0,0,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,10,10,0,0,0,9,9,0,0,0,9,9,0,0,0,10,10,0,0,0,0,0,0,0,8,10,10,0,0,0,9,9,0,0,0,9,9,0,0,0,10,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,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,4,4,0,0,0,0,0,0,5,6,6,0,0,0,0,0,0,5,6,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,0,0,0,0,0,5,7,7,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,6,7,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,7,7,0,0,0,0,0,0,6,8,7,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,7,7,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,8,8,9,0,0,0,0,0,0,8,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,8,8,0,0,0,0,0,0,7,9,8,0,0,0,0,0,0,8,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,7,7,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,8,0,0,0,0,0,0,8,9,9,0,0,0,0,0,0,7,8,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,8,8,0,0,0,0,0,0,8,9,9,0,0,0,0,0,0,8,9,8], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+218416); +/* memory initializer */ allocate([1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,10,9,13,11,14,10,12,13,13,14,7,2,12,5,10,5,7,10,12,14,12,6,9,8,7,7,9,11,13,16,10,4,12,5,10,6,8,12,14,16,12,6,8,7,6,5,7,11,12,16,10,4,8,5,6,4,6,9,13,16,10,6,10,7,7,6,7,9,13,15,12,9,11,9,8,6,7,10,12,14,14,11,10,9,6,5,6,9,11,13,15,13,11,10,6,5,6,8,9,11,0,0,0,0,2,0,0,0,100,0,0,0,216,170,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,130,3,0,0,0,0,0,0,0,0,0,0,0,0,0,56,130,3,0,0,0,0,0,0,0,0,0,0,0,0,0,96,130,3,0,0,0,0,0,0,0,0,0,0,0,0,0,136,130,3,0,0,0,0,0,0,0,0,0,0,0,0,0,176,130,3,0,0,0,0,0,0,0,0,0,0,0,0,0,216,130,3,0,0,0,0,0,0,131,3,0,40,131,3,0,0,0,0,0,0,0,0,0,80,131,3,0,120,131,3,0,0,0,0,0,0,0,0,0,160,131,3,0,200,131,3,0,240,131,3,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,100,0,0,0,168,129,3,0,0,0,0,0,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,6,12,10,10,10,9,10,12,12,6,1,10,5,6,6,7,9,11,14,12,9,8,11,7,8,9,11,13,15,10,5,12,7,8,7,9,12,14,15,10,6,7,8,5,6,7,9,12,14,9,6,8,7,6,6,7,9,12,12,9,7,9,9,7,6,6,7,10,10,10,9,10,11,8,7,6,6,8,10,12,11,13,13,11,10,8,8,8,10,11,13,15,15,14,13,10,8,8,9,0,0,0,0,8,0,0,0,161,25,0,0,32,145,3,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,200,170,3,0,0,0,0,0,4,0,0,0,113,2,0,0,144,142,3,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,8,145,3,0,0,0,0,0,4,0,0,0,113,2,0,0,0,140,3,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,120,142,3,0,0,0,0,0,2,0,0,0,81,0,0,0,128,139,3,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,216,139,3,0,0,0,0,0,2,0,0,0,81,0,0,0,0,139,3,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,88,139,3,0,0,0,0,0,2,0,0,0,33,1,0,0,144,137,3,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,184,138,3,0,0,0,0,0,4,0,0,0,81,0,0,0,40,137,3,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,128,137,3,0,0,0,0,0,2,0,0,0,121,0,0,0,120,136,3,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,248,136,3,0,0,0,0,0,2,0,0,0,169,0,0,0,144,135,3,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,64,136,3,0,0,0,0,0,2,0,0,0,25,0,0,0,88,135,3,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,120,135,3,0,0,0,0,0,2,0,0,0,169,0,0,0,112,134,3,0,1,0,0,0,0,184,84,225,0,160,251,96,4,0,0,0,0,0,0,0,32,135,3,0,0,0,0,0,2,0,0,0,169,0,0,0,136,133,3,0,1,0,0,0,0,128,217,224,0,0,145,96,4,0,0,0,0,0,0,0,56,134,3,0,0,0,0,0,2,0,0,0,33,1,0,0,24,132,3,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,64,133,3,0,0,0,0,0,2,4,4,6,6,7,7,7,7,7,7,8,8,8,8,8,8,10,7,7,7,7,7,7,8,8,8,8,9,9,9,9,9,9,10,7,7,7,7,8,8,8,8,8,8,9,9,9,9,9,9,10,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,8,7,8,8,8,8,9,9,9,9,9,9,9,9,10,11,11,8,8,8,8,9,9,9,9,9,9,10,9,9,9,10,11,10,8,8,8,8,9,9,9,9,9,9,9,10,10,10,10,11,10,8,8,9,9,9,9,9,9,10,9,9,10,9,10,11,10,11,11,11,8,8,9,9,9,9,9,9,9,9,10,10,11,11,11,11,11,9,9,9,9,9,9,10,9,9,9,10,10,11,11,11,11,11,9,9,9,9,9,9,9,9,9,10,9,10,11,11,11,11,11,9,9,9,9,10,10,9,9,9,10,10,10,11,11,11,11,11,11,11,9,9,9,10,9,9,10,10,10,10,11,11,10,11,11,11,11,10,9,10,10,9,9,9,9,10,10,11,10,11,11,11,11,11,9,9,9,9,10,9,10,10,10,10,11,10,11,11,11,11,11,10,10,9,9,10,9,10,10,10,10,10,10,10,11,11,11,11,11,11,9,9,10,9,10,9,10,10,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,4,4,6,6,7,6,8,8,10,9,10,10,6,5,5,7,7,8,7,10,9,11,11,12,13,6,5,5,7,7,8,8,10,10,11,11,13,13,18,8,8,8,8,9,9,10,10,12,12,12,13,18,8,8,8,8,9,9,10,10,12,12,13,13,18,11,11,8,8,10,10,11,11,12,11,13,12,18,11,11,9,7,10,10,11,11,11,12,12,13,17,17,17,10,10,11,11,12,12,12,10,12,12,17,17,17,11,10,11,10,13,12,11,12,12,12,17,17,17,15,14,11,11,12,11,13,10,13,12,17,17,17,14,14,12,10,11,11,13,13,13,13,17,17,16,17,16,13,13,12,10,13,10,14,13,17,16,17,16,17,13,12,12,10,13,11,14,14,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,5,4,12,12,12,12,12,12,12,12,12,12,4,9,8,11,11,11,11,11,11,11,11,11,11,2,8,7,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,4,4,5,4,6,5,5,5,5,6,5,5,5,5,6,5,5,5,5,6,6,6,5,5,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,6,6,7,7,7,7,8,8,9,9,6,5,5,7,7,8,8,8,8,9,9,10,10,7,6,5,7,7,8,8,8,8,9,9,10,10,0,8,8,8,8,9,9,9,9,10,10,11,11,0,8,8,8,8,9,9,9,9,10,10,11,11,0,12,12,9,9,10,10,10,10,11,11,11,11,0,13,13,9,9,10,10,10,10,11,11,12,12,0,0,0,10,10,10,10,11,11,12,12,12,13,0,0,0,10,10,10,10,11,11,12,12,12,12,0,0,0,14,14,10,11,11,11,12,12,13,13,0,0,0,14,14,11,10,11,11,13,12,13,13,0,0,0,0,0,12,12,11,12,13,12,14,14,0,0,0,0,0,12,12,12,12,13,12,14,14,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,3,4,6,6,7,7,7,7,7,7,9,7,7,6,6,7,7,8,8,8,8,9,6,6,6,6,7,7,8,8,8,8,10,7,7,7,7,7,7,8,8,8,8,10,10,10,7,7,7,7,8,8,8,8,10,10,10,7,7,8,8,8,8,8,8,10,10,10,7,8,8,8,8,8,8,8,10,10,10,8,8,8,8,8,8,8,8,10,10,10,10,10,8,8,8,8,8,8,10,10,10,10,10,9,9,8,8,8,8,10,10,10,10,10,8,8,8,8,8,8,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,7,6,6,7,6,6,4,7,7,10,9,9,11,9,9,4,7,7,10,9,9,10,9,9,7,10,10,11,10,11,11,10,11,6,9,9,11,10,10,11,10,10,6,9,9,11,10,11,11,10,10,7,11,10,11,11,11,12,11,11,6,9,9,11,10,10,11,11,10,6,9,9,11,10,10,12,10,11,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,3,6,6,8,8,9,9,9,9,9,9,10,10,11,11,0,7,7,7,7,8,8,9,9,9,9,10,10,11,11,12,11,0,7,7,7,7,8,8,9,9,9,9,10,10,11,11,11,12,0,8,8,7,7,9,9,10,10,9,9,10,10,11,11,12,12,0,0,0,7,7,9,9,10,10,10,9,10,10,11,11,12,12,0,0,0,8,8,9,9,10,10,10,10,11,11,11,11,12,12,0,0,0,8,8,9,9,10,10,10,10,11,11,12,12,12,12,0,0,0,9,9,9,9,10,10,10,10,11,11,12,12,12,12,0,0,0,0,0,9,9,10,10,10,10,11,11,12,12,13,13,0,0,0,0,0,9,9,10,10,11,11,11,11,12,12,13,13,0,0,0,0,0,9,9,10,10,11,11,11,11,12,12,13,13,0,0,0,0,0,10,10,10,10,11,11,12,12,13,12,13,13,0,0,0,0,0,0,0,10,10,11,11,12,12,13,13,13,13,0,0,0,0,0,0,0,11,11,12,12,12,12,13,13,13,14,0,0,0,0,0,0,0,11,11,12,12,12,12,13,13,13,14,0,0,0,0,0,0,0,12,12,12,12,13,13,13,13,14,14,0,0,0,0,0,0,0,0,0,12,12,13,13,13,13,14,14,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,3,3,6,6,7,7,9,9,0,7,7,7,7,7,7,9,9,0,7,7,7,7,7,7,9,9,0,8,8,7,7,8,8,10,10,0,0,0,7,7,8,8,10,10,0,0,0,9,9,8,8,10,10,0,0,0,9,9,8,8,10,10,0,0,0,10,10,9,9,11,11,0,0,0,0,0,9,9,11,11,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,1,3,3,6,6,0,0,0,0,0,6,6,6,6,0,0,0,0,0,6,6,6,6,0,0,0,0,0,7,7,6,6,0,0,0,0,0,0,0,6,7,0,0,0,0,0,0,0,7,8,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,2,4,3,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,7,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,0,0,0,7,7,0,0,0,7,7,0,0,0,8,8,0,0,0,0,0,0,0,4,6,6,0,0,0,8,8,0,0,0,8,8,0,0,0,9,9,0,0,0,0,0,0,0,4,6,6,0,0,0,8,8,0,0,0,8,8,0,0,0,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,8,0,0,0,11,11,0,0,0,11,11,0,0,0,12,11,0,0,0,0,0,0,0,7,8,8,0,0,0,10,11,0,0,0,11,11,0,0,0,11,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,8,0,0,0,11,11,0,0,0,11,11,0,0,0,12,12,0,0,0,0,0,0,0,6,8,8,0,0,0,10,11,0,0,0,10,11,0,0,0,11,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,9,9,0,0,0,11,12,0,0,0,11,12,0,0,0,12,11,0,0,0,0,0,0,0,8,10,9,0,0,0,12,11,0,0,0,12,11,0,0,0,11,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,4,4,0,0,0,0,0,0,5,6,6,0,0,0,0,0,0,5,6,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,7,7,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,6,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,7,7,0,0,0,0,0,0,6,8,7,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,7,7,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,8,9,9,0,0,0,0,0,0,8,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,8,8,0,0,0,0,0,0,8,9,8,0,0,0,0,0,0,8,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,7,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,8,0,0,0,0,0,0,8,9,9,0,0,0,0,0,0,8,8,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,8,9,9,0,0,0,0,0,0,8,9,9], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+229400); +/* memory initializer */ allocate([1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,11,9,13,12,12,11,12,12,13,15,8,2,11,4,8,5,7,10,12,15,13,7,10,9,8,8,10,13,17,17,11,4,12,5,9,5,8,11,14,16,12,6,8,7,6,6,8,11,13,16,11,4,9,5,6,4,6,10,13,16,11,6,11,7,7,6,7,10,13,15,13,9,12,9,8,6,8,10,12,14,14,10,10,8,6,5,6,9,11,13,15,11,11,9,6,5,6,8,9,12,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,9,0,0,0,255,255,255,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+240320); +/* memory initializer */ allocate([1,0,0,0,2,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,16,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,3,0,0,4,0,0,0,8,0,0,0,16,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,81,0,0,0,160,5,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,0,0,0,2,0,0,0,81,0,0,0,72,5,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,0,0,0,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,223,3,0,0,0,0,0,0,0,0,0,0,0,0,0,96,223,3,0,0,0,0,0,0,0,0,0,0,0,0,0,136,223,3,0,0,0,0,0,0,0,0,0,0,0,0,0,176,223,3,0,0,0,0,0,0,0,0,0,0,0,0,0,216,223,3,0,0,0,0,0,0,224,3,0,40,224,3,0,0,0,0,0,0,0,0,0,80,224,3,0,120,224,3,0,0,0,0,0,0,0,0,0,160,224,3,0,200,224,3,0,240,224,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,185,3,0,0,0,0,0,0,0,0,0,0,0,0,0,80,185,3,0,0,0,0,0,0,0,0,0,0,0,0,0,120,185,3,0,0,0,0,0,0,0,0,0,0,0,0,0,160,185,3,0,0,0,0,0,0,0,0,0,0,0,0,0,200,185,3,0,0,0,0,0,240,185,3,0,24,186,3,0,0,0,0,0,0,0,0,0,64,186,3,0,104,186,3,0,0,0,0,0,0,0,0,0,144,186,3,0,184,186,3,0,224,186,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,81,0,0,0,208,184,3,0,0,0,0,0,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,0,81,0,0,0,120,184,3,0,0,0,0,0,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,4,8,10,9,9,10,11,12,4,2,5,6,6,8,10,11,13,8,4,6,8,7,9,12,12,14,10,6,8,4,5,6,9,11,12,9,5,6,5,5,6,9,11,11,9,7,9,6,5,5,7,10,10,10,9,11,8,7,6,7,9,11,11,12,13,10,10,9,8,9,11,11,15,15,12,13,11,9,10,11,0,0,0,0,0,0,0,5,5,9,10,9,9,10,11,12,5,1,5,6,6,7,10,12,14,9,5,6,8,8,10,12,14,14,10,5,8,5,6,8,11,13,14,9,5,7,6,6,8,10,12,11,9,7,9,7,6,6,7,10,10,10,9,12,9,8,7,7,10,12,11,11,13,12,10,9,8,9,11,11,14,15,15,13,11,9,9,11,0,0,0,0,0,0,0,8,0,0,0,161,25,0,0,128,197,3,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,40,223,3,0,0,0,0,0,4,0,0,0,113,2,0,0,240,194,3,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,104,197,3,0,0,0,0,0,2,0,0,0,81,0,0,0,112,194,3,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,200,194,3,0,0,0,0,0,2,0,0,0,81,0,0,0,240,193,3,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,72,194,3,0,0,0,0,0,2,0,0,0,33,1,0,0,128,192,3,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,168,193,3,0,0,0,0,0,4,0,0,0,81,0,0,0,24,192,3,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,112,192,3,0,0,0,0,0,2,0,0,0,121,0,0,0,104,191,3,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,232,191,3,0,0,0,0,0,2,0,0,0,169,0,0,0,128,190,3,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,48,191,3,0,0,0,0,0,2,0,0,0,25,0,0,0,72,190,3,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,104,190,3,0,0,0,0,0,2,0,0,0,169,0,0,0,96,189,3,0,1,0,0,0,0,184,84,225,0,160,251,96,4,0,0,0,0,0,0,0,16,190,3,0,0,0,0,0,2,0,0,0,169,0,0,0,120,188,3,0,1,0,0,0,0,128,217,224,0,0,145,96,4,0,0,0,0,0,0,0,40,189,3,0,0,0,0,0,2,0,0,0,33,1,0,0,8,187,3,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,48,188,3,0,0,0,0,0,2,5,5,6,6,7,6,7,7,8,8,8,8,8,8,8,8,10,6,6,7,7,7,7,8,8,9,9,9,9,9,9,9,9,10,6,6,7,7,8,8,8,8,9,9,9,9,9,9,9,9,10,7,7,7,7,8,8,8,9,9,9,9,9,9,9,9,9,10,10,10,7,7,8,8,9,9,9,9,9,9,9,9,9,9,10,11,11,8,8,8,8,9,9,9,9,9,9,10,10,9,10,10,10,10,8,8,8,8,9,9,9,9,9,9,9,9,10,10,11,10,10,8,8,9,9,9,9,9,9,9,9,9,9,10,9,10,10,10,11,11,8,8,9,9,9,9,9,9,9,9,9,9,11,11,11,11,11,9,9,9,9,9,9,9,9,10,9,10,9,11,11,11,11,11,9,8,9,9,9,9,9,9,9,10,10,9,11,11,10,11,11,9,9,9,9,9,9,9,9,9,10,10,9,11,11,11,11,11,11,11,9,9,10,9,9,9,9,10,9,10,10,11,10,11,11,11,11,9,10,10,10,9,9,9,9,9,9,10,11,11,11,11,11,11,9,9,9,9,9,9,9,9,10,9,11,11,10,11,11,11,11,10,10,9,9,9,9,9,9,10,9,10,11,10,11,11,11,11,11,11,9,9,10,9,9,9,9,9,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,4,4,6,6,7,7,9,9,10,11,12,12,6,5,5,7,7,8,7,10,10,11,11,12,12,6,5,5,7,7,8,8,10,10,11,11,12,12,16,7,7,8,8,9,9,11,11,12,12,13,13,17,7,7,8,7,9,9,11,10,12,12,13,13,19,11,10,8,8,10,10,11,11,12,12,13,13,19,11,11,9,7,11,10,11,11,12,12,13,12,19,19,19,10,10,10,10,11,12,12,12,13,14,18,19,19,11,9,11,9,13,12,12,12,13,13,19,20,19,13,15,11,11,12,12,13,13,14,13,18,19,20,15,13,12,10,13,10,13,13,13,14,20,20,20,20,20,13,14,12,12,13,12,13,13,20,20,20,20,20,13,12,12,12,14,12,14,13,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,3,3,13,13,13,13,13,13,13,13,13,13,3,6,6,13,13,13,13,13,13,13,13,13,13,4,8,7,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,4,4,4,5,6,5,5,5,5,6,5,5,5,5,6,5,5,5,5,6,6,6,5,5,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,6,6,7,7,7,7,8,8,9,9,7,5,5,7,7,8,8,8,8,9,9,10,10,7,5,6,7,7,8,8,8,8,9,9,11,10,0,8,8,8,8,9,9,9,9,10,10,11,11,0,8,8,8,8,9,9,9,9,10,10,11,11,0,12,12,9,9,10,10,10,10,11,11,11,11,0,13,13,9,9,9,9,10,10,11,11,12,12,0,0,0,9,10,9,10,11,11,12,11,13,12,0,0,0,10,10,9,9,11,11,12,12,13,12,0,0,0,13,13,10,10,11,11,12,12,13,13,0,0,0,14,14,10,10,11,11,12,12,13,13,0,0,0,0,0,11,12,11,11,12,13,14,13,0,0,0,0,0,12,12,11,11,13,12,14,13,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,4,4,6,6,7,7,7,7,8,8,10,5,5,6,6,7,7,8,8,8,8,10,5,5,6,6,7,7,8,8,8,8,10,7,7,7,7,8,8,8,8,8,8,10,10,10,7,7,7,7,8,8,8,8,10,10,10,7,7,8,8,8,8,8,8,10,10,10,7,7,8,8,8,8,8,8,10,10,10,8,8,8,8,8,8,9,8,10,10,10,10,10,8,8,8,8,8,8,10,10,10,10,10,9,9,8,8,8,8,10,10,10,10,10,8,8,8,8,8,8,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,7,6,6,7,6,6,4,7,7,10,9,9,11,9,9,4,7,7,10,9,9,11,9,9,7,10,10,10,11,11,11,10,10,6,9,9,11,11,10,11,10,10,6,9,9,11,10,11,11,10,10,7,11,11,11,11,11,11,11,11,6,9,9,11,10,10,11,11,10,6,9,9,10,10,10,11,10,11,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,3,3,6,6,7,7,8,8,8,8,9,9,10,10,11,11,0,5,5,6,6,8,8,9,9,9,9,10,10,10,10,11,11,0,5,5,6,6,8,8,9,9,9,9,10,10,10,10,11,11,0,7,7,7,7,8,8,9,9,9,9,10,10,11,11,12,12,0,0,0,7,7,8,8,9,9,9,9,10,10,11,11,12,12,0,0,0,8,8,8,8,9,9,10,10,10,11,11,11,12,12,0,0,0,8,8,8,8,9,9,10,10,10,10,11,11,12,12,0,0,0,9,9,9,9,10,10,10,10,11,11,12,12,12,12,0,0,0,0,0,9,9,10,10,10,10,11,11,12,12,13,13,0,0,0,0,0,9,9,9,9,10,10,11,11,12,12,13,13,0,0,0,0,0,9,9,9,9,10,10,11,11,12,12,13,13,0,0,0,0,0,9,9,10,10,11,11,12,12,12,12,13,13,0,0,0,0,0,0,0,10,10,11,11,12,12,12,12,13,13,0,0,0,0,0,0,0,11,11,11,11,12,12,13,13,13,13,0,0,0,0,0,0,0,11,11,11,11,12,12,13,13,13,13,0,0,0,0,0,0,0,11,11,12,12,12,12,13,13,14,14,0,0,0,0,0,0,0,0,0,12,12,12,12,13,13,14,14,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,3,3,6,6,7,7,9,9,0,6,6,7,7,8,8,9,9,0,6,6,7,7,8,8,9,9,0,7,7,8,8,8,8,10,10,0,0,0,8,8,8,8,10,10,0,0,0,8,8,9,9,11,11,0,0,0,9,9,9,9,11,11,0,0,0,10,10,10,10,11,11,0,0,0,0,0,9,9,11,11,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,1,3,3,7,7,0,0,0,0,0,5,5,6,6,0,0,0,0,0,5,5,7,7,0,0,0,0,0,7,7,7,7,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,8,9,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,2,3,4,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,7,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,5,0,0,0,0,0,0,5,7,7,0,0,0,0,0,0,5,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,7,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,7,8,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,7,7,0,0,0,0,0,0,7,9,8,0,0,0,0,0,0,7,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,7,0,0,0,0,0,0,8,9,9,0,0,0,0,0,0,8,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,9,9,10,0,0,0,0,0,0,9,10,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,7,9,9,0,0,0,0,0,0,8,10,9,0,0,0,0,0,0,9,10,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,7,8,0,0,0,0,0,0,8,9,9,0,0,0,0,0,0,8,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,9,10,10,0,0,0,0,0,0,8,9,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,7,9,9,0,0,0,0,0,0,9,10,10,0,0,0,0,0,0,9,10,9], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+242772); +/* memory initializer */ allocate([1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,8,0,0,0,161,25,0,0,144,235,3,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,56,5,4,0,0,0,0,0,4,0,0,0,113,2,0,0,0,233,3,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,120,235,3,0,0,0,0,0,2,0,0,0,81,0,0,0,128,232,3,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,216,232,3,0,0,0,0,0,2,0,0,0,81,0,0,0,0,232,3,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,88,232,3,0,0,0,0,0,2,0,0,0,33,1,0,0,144,230,3,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,184,231,3,0,0,0,0,0,4,0,0,0,81,0,0,0,40,230,3,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,128,230,3,0,0,0,0,0,2,0,0,0,121,0,0,0,120,229,3,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,248,229,3,0,0,0,0,0,2,0,0,0,169,0,0,0,144,228,3,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,64,229,3,0,0,0,0,0,2,0,0,0,25,0,0,0,88,228,3,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,120,228,3,0,0,0,0,0,2,0,0,0,169,0,0,0,112,227,3,0,1,0,0,0,0,184,84,225,0,160,251,96,4,0,0,0,0,0,0,0,32,228,3,0,0,0,0,0,2,0,0,0,169,0,0,0,136,226,3,0,1,0,0,0,0,128,217,224,0,0,145,96,4,0,0,0,0,0,0,0,56,227,3,0,0,0,0,0,2,0,0,0,33,1,0,0,24,225,3,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,64,226,3,0,0,0,0,0,2,4,4,6,6,6,6,7,7,8,8,8,8,8,8,8,8,10,10,10,7,7,7,7,8,8,9,9,9,9,9,9,9,9,10,10,10,7,7,8,7,8,8,9,9,9,9,9,9,9,9,10,10,10,7,7,8,8,8,9,9,9,9,9,9,10,9,9,10,10,10,7,7,8,8,9,8,9,9,9,9,10,9,9,10,10,11,11,8,8,8,8,9,9,9,9,9,9,10,9,9,10,10,10,10,8,8,8,8,9,9,9,9,9,9,9,9,10,10,11,11,11,8,8,9,9,9,9,9,9,9,9,9,9,10,10,10,10,11,11,11,8,8,9,9,9,9,10,9,9,9,9,9,11,11,11,11,11,9,9,9,9,9,9,9,9,9,9,9,9,11,10,10,11,11,9,9,9,9,9,9,9,9,9,10,10,10,10,11,10,11,11,9,9,9,9,9,9,9,9,9,10,10,9,10,10,11,11,11,11,11,9,9,9,10,9,9,9,9,9,9,10,11,11,11,11,11,11,10,10,10,10,9,9,9,9,9,9,10,11,11,11,11,11,11,9,10,9,9,9,9,10,9,9,9,11,11,11,11,11,11,11,10,10,9,9,9,9,9,9,10,9,11,11,10,11,11,11,11,10,11,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,4,4,6,5,7,7,9,9,10,10,12,12,6,5,5,7,7,8,8,10,10,12,11,12,12,6,5,5,7,7,8,8,10,10,11,11,12,12,15,7,7,8,8,9,9,11,11,12,12,13,12,15,8,8,8,7,9,9,10,10,12,12,13,13,16,11,10,8,8,10,10,11,11,12,12,13,13,16,11,11,9,8,11,10,11,11,12,12,13,12,16,16,16,10,11,10,11,12,12,12,12,13,13,16,16,16,11,9,11,9,14,12,12,12,13,13,16,16,16,12,14,11,12,12,12,13,13,14,13,16,16,16,15,13,12,10,13,10,13,14,13,13,16,16,16,16,16,13,14,12,13,13,12,13,13,16,16,16,16,16,13,12,12,11,14,12,15,13,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,4,3,10,10,10,10,10,10,10,10,10,10,4,8,6,10,10,10,10,10,10,10,10,10,10,4,8,7,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,3,3,5,5,6,6,6,5,5,6,6,6,5,5,6,6,6,5,5,6,6,6,5,5,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,6,6,7,7,7,7,8,8,10,9,7,5,6,7,7,8,8,8,8,9,9,10,10,7,5,5,7,7,8,8,8,8,9,9,10,10,0,8,8,8,8,9,9,9,9,10,10,11,10,0,8,8,8,8,9,9,9,9,10,10,11,11,0,12,12,9,9,9,10,10,10,11,11,11,11,0,13,13,9,9,9,9,10,10,11,11,11,11,0,0,0,10,10,10,10,11,11,12,11,12,12,0,0,0,10,10,10,9,11,11,12,11,13,12,0,0,0,13,13,10,10,11,11,12,12,13,13,0,0,0,14,14,10,10,11,11,12,12,13,13,0,0,0,0,0,11,12,11,11,12,12,14,13,0,0,0,0,0,12,11,11,11,13,10,14,13,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,3,3,6,6,7,7,7,7,8,8,10,10,10,6,6,7,7,8,8,8,8,10,10,10,6,6,7,7,8,8,8,8,10,10,10,7,7,7,7,8,8,8,8,10,10,10,7,7,7,7,8,8,8,8,10,10,10,7,7,8,8,8,8,8,8,10,10,10,7,7,8,8,8,8,8,8,10,10,10,8,8,8,8,8,8,8,8,10,10,10,10,10,8,8,8,8,8,8,10,10,10,10,10,9,9,8,8,8,8,10,10,10,10,10,8,8,8,8,8,8,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,7,6,6,7,6,6,4,7,7,10,9,9,11,9,9,4,7,7,10,9,9,11,9,9,6,10,10,11,11,11,11,10,10,6,9,9,11,10,10,11,10,10,6,9,9,11,10,11,11,10,10,7,11,10,11,11,11,12,11,11,7,9,9,11,10,10,11,11,10,6,9,9,10,10,10,12,10,11,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,3,6,6,7,7,8,8,8,8,9,9,10,10,11,11,0,0,0,7,7,8,8,9,9,9,9,10,10,10,10,11,11,0,0,0,7,7,8,8,9,9,9,9,10,10,10,10,11,11,0,0,0,7,7,8,8,9,9,9,9,10,10,11,11,11,11,0,0,0,7,7,8,8,9,9,9,9,10,10,11,11,12,11,0,0,0,8,8,9,9,9,10,10,10,10,10,11,11,12,12,0,0,0,8,8,9,9,10,9,10,10,10,10,11,11,12,12,0,0,0,9,9,9,9,10,10,10,10,11,11,12,12,12,12,0,0,0,0,0,9,9,10,10,10,10,11,11,12,12,12,12,0,0,0,0,0,9,9,10,10,10,11,11,11,12,12,13,13,0,0,0,0,0,9,9,10,10,10,10,11,11,12,12,13,13,0,0,0,0,0,10,10,10,10,11,11,12,12,12,12,13,13,0,0,0,0,0,0,0,10,10,11,11,12,12,12,12,13,13,0,0,0,0,0,0,0,11,11,12,12,12,12,13,13,13,13,0,0,0,0,0,0,0,11,11,11,11,12,12,13,13,13,13,0,0,0,0,0,0,0,12,12,12,12,12,12,13,13,14,14,0,0,0,0,0,0,0,0,0,12,12,12,12,13,13,14,14,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,3,3,6,5,6,6,8,8,0,0,0,7,7,7,7,9,9,0,0,0,7,7,7,7,9,9,0,0,0,7,7,8,8,10,10,0,0,0,7,7,8,8,10,10,0,0,0,9,9,8,8,10,10,0,0,0,8,8,8,8,10,10,0,0,0,10,10,9,9,11,11,0,0,0,0,0,9,9,11,11,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,1,3,2,7,7,0,0,0,0,0,13,13,6,6,0,0,0,0,0,12,0,6,6,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,8,9,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,11,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,2,3,4,6,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,5,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,4,4,0,0,0,0,0,0,5,7,6,0,0,0,0,0,0,5,6,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,7,7,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,7,7,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,7,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,8,9,10,0,0,0,0,0,0,8,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,8,8,0,0,0,0,0,0,8,9,8,0,0,0,0,0,0,8,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,7,7,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,7,8,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,8,8,0,0,0,0,0,0,8,10,9,0,0,0,0,0,0,8,8,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,8,8,0,0,0,0,0,0,8,9,9,0,0,0,0,0,0,8,9,9], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+253728); +/* memory initializer */ allocate([1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,7,13,14,14,15,16,18,18,4,2,5,8,7,9,12,15,15,10,4,5,10,6,8,11,15,17,12,5,7,5,6,8,11,14,17,11,5,6,6,5,6,9,13,17,12,6,7,6,5,6,8,12,14,14,7,8,6,6,7,9,11,14,14,8,9,6,5,6,9,11,13,16,10,10,7,6,7,8,10,11,0,0,0,0,0,0,0,6,8,13,12,13,14,15,16,16,4,2,4,7,6,8,11,13,15,10,4,4,8,6,8,11,14,17,11,5,6,5,6,8,12,14,17,11,5,5,6,5,7,10,13,16,12,6,7,8,7,8,10,13,15,13,8,8,7,7,8,10,12,15,15,7,7,5,5,7,9,12,14,15,8,8,6,6,7,8,10,11,0,0,0,0,0,0,0,2,0,0,0,81,0,0,0,128,86,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,0,0,0,2,0,0,0,81,0,0,0,40,86,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,0,0,0,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,46,4,0,0,0,0,0,0,0,0,0,0,0,0,0,152,46,4,0,0,0,0,0,0,0,0,0,0,0,0,0,192,46,4,0,0,0,0,0,0,0,0,0,0,0,0,0,232,46,4,0,0,0,0,0,0,0,0,0,0,0,0,0,16,47,4,0,0,0,0,0,56,47,4,0,96,47,4,0,0,0,0,0,0,0,0,0,136,47,4,0,176,47,4,0,0,0,0,0,0,0,0,0,216,47,4,0,0,48,4,0,40,48,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,240,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,24,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,64,9,4,0,0,0,0,0,0,0,0,0,0,0,0,0,104,9,4,0,0,0,0,0,144,9,4,0,184,9,4,0,0,0,0,0,0,0,0,0,224,9,4,0,8,10,4,0,0,0,0,0,0,0,0,0,48,10,4,0,88,10,4,0,128,10,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,0,0,0,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,0,81,0,0,0,112,8,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,0,0,0,2,0,0,0,81,0,0,0,24,8,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,0,0,0,5,4,9,10,9,10,11,12,13,4,1,5,7,7,9,11,12,14,8,5,7,9,8,10,13,13,13,10,7,9,4,6,7,10,12,14,9,6,7,6,6,7,10,12,12,9,8,9,7,6,7,8,11,12,11,11,11,9,8,7,8,10,12,12,13,14,12,11,9,9,9,12,12,17,17,15,16,12,10,11,13,0,0,0,0,0,0,0,5,4,8,9,8,9,10,12,15,4,1,5,5,6,8,11,12,12,8,5,8,9,9,11,13,12,12,9,5,8,5,7,9,12,13,13,8,6,8,7,7,9,11,11,11,9,7,9,7,7,7,7,10,12,10,10,11,9,8,7,7,9,11,11,12,13,12,11,9,8,9,11,13,16,16,15,15,12,10,11,12,0,0,0,0,0,0,0,8,0,0,0,161,25,0,0,184,20,4,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,96,46,4,0,0,0,0,0,4,0,0,0,113,2,0,0,40,18,4,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,160,20,4,0,0,0,0,0,2,0,0,0,81,0,0,0,168,17,4,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,0,18,4,0,0,0,0,0,2,0,0,0,81,0,0,0,40,17,4,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,128,17,4,0,0,0,0,0,2,0,0,0,33,1,0,0,184,15,4,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,224,16,4,0,0,0,0,0,4,0,0,0,81,0,0,0,80,15,4,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,168,15,4,0,0,0,0,0,2,0,0,0,121,0,0,0,160,14,4,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,32,15,4,0,0,0,0,0,2,0,0,0,169,0,0,0,184,13,4,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,104,14,4,0,0,0,0,0,2,0,0,0,25,0,0,0,128,13,4,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,160,13,4,0,0,0,0,0,2,0,0,0,81,0,0,0,0,13,4,0,1,0,0,0,0,160,59,225,0,160,251,96,4,0,0,0,0,0,0,0,88,13,4,0,0,0,0,0,2,0,0,0,169,0,0,0,24,12,4,0,1,0,0,0,0,128,217,224,0,0,145,96,4,0,0,0,0,0,0,0,200,12,4,0,0,0,0,0,2,0,0,0,33,1,0,0,168,10,4,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,208,11,4,0,0,0,0,0,2,5,5,6,6,7,7,7,7,8,8,8,8,8,8,8,8,10,6,6,7,7,7,7,8,8,9,9,9,9,9,9,9,9,10,6,6,7,7,8,7,8,8,9,9,9,9,9,9,9,9,10,7,7,7,7,8,8,8,9,9,9,9,9,9,9,9,9,10,10,10,7,7,8,8,9,8,9,9,9,9,10,9,9,10,10,10,11,8,8,8,8,9,9,9,9,9,9,9,10,9,10,10,10,10,8,8,8,8,9,9,9,9,9,9,9,9,10,10,11,10,10,8,8,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,11,11,8,8,9,9,9,9,9,9,9,9,9,10,11,11,11,11,11,9,9,9,9,9,9,9,9,10,9,10,9,11,11,10,11,11,9,9,9,9,9,9,9,9,9,9,10,9,11,11,10,11,11,9,9,9,9,9,9,9,9,9,9,10,9,11,10,11,11,11,11,11,9,9,10,9,9,9,9,9,9,9,10,11,10,11,11,11,11,10,10,10,10,9,9,9,9,9,9,10,11,11,11,11,11,11,9,10,9,9,9,9,9,9,9,9,11,11,10,11,11,11,10,10,10,9,9,9,9,9,9,9,9,10,11,10,11,11,11,11,11,11,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,4,4,6,6,7,7,9,9,10,11,12,12,6,5,5,7,7,8,8,10,10,12,11,12,12,6,5,5,7,7,8,8,10,10,12,11,12,12,17,7,7,8,8,9,9,10,10,12,12,13,13,18,7,7,8,7,9,9,10,10,12,12,12,13,19,10,10,8,8,10,10,11,11,12,12,13,14,19,11,10,8,7,10,10,11,11,12,12,13,12,19,19,19,10,10,10,10,11,11,12,12,13,13,19,19,19,11,9,11,9,14,12,13,12,13,13,19,20,18,13,14,11,11,12,12,13,13,14,13,20,20,20,15,13,11,10,13,11,13,13,14,13,20,20,20,20,20,13,14,12,12,13,13,13,13,20,20,20,20,20,13,13,12,12,16,13,15,13,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,3,3,11,11,11,11,11,11,3,7,6,11,11,11,11,11,11,4,8,7,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,2,4,4,4,4,6,5,5,5,5,6,5,5,5,5,6,6,6,5,5,6,6,6,5,5,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,6,6,7,7,7,7,8,8,9,9,7,5,5,7,7,8,8,8,8,9,9,10,10,7,6,5,7,7,8,8,8,8,9,9,10,10,0,8,8,8,8,9,9,9,9,10,10,11,11,0,8,8,8,8,9,9,9,9,10,10,11,11,0,12,12,9,9,10,10,10,10,11,11,11,11,0,13,13,9,9,9,9,10,10,11,11,11,12,0,0,0,9,10,10,10,11,11,12,11,12,12,0,0,0,10,10,9,9,11,11,12,12,12,12,0,0,0,13,13,10,10,11,11,12,12,13,13,0,0,0,14,14,10,10,11,11,12,12,13,13,0,0,0,0,0,11,12,11,11,13,12,13,13,0,0,0,0,0,12,12,11,11,13,12,14,14,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,4,4,6,6,7,7,7,7,7,8,9,5,5,6,6,7,7,8,8,8,8,9,5,5,6,6,7,7,8,8,8,8,10,7,7,7,7,7,7,8,8,8,8,10,10,10,7,7,7,7,8,8,8,8,10,10,10,8,8,8,8,8,8,8,8,10,10,10,8,8,8,8,8,8,8,8,10,10,10,8,8,8,8,8,8,8,8,10,10,10,10,10,8,8,8,8,8,8,10,10,10,10,10,9,9,8,8,8,8,10,10,10,10,10,8,8,8,8,8,8,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,7,6,6,7,6,6,4,7,7,10,9,9,11,9,9,4,7,7,10,9,9,11,9,9,7,10,10,10,11,11,11,10,10,6,9,9,11,11,10,11,10,10,6,9,9,11,10,11,11,10,10,7,11,10,11,11,11,11,11,11,6,9,9,11,10,10,11,11,10,6,9,9,11,10,10,11,10,11,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,4,6,6,8,8,8,8,8,8,9,9,10,10,11,11,0,6,6,7,7,8,8,9,9,9,9,10,10,10,11,11,11,0,5,6,7,7,8,8,9,9,9,9,10,10,10,11,11,11,0,7,7,8,8,8,8,9,9,9,9,10,10,11,11,12,12,0,0,0,8,8,8,8,9,9,9,9,10,10,11,11,12,12,0,0,0,8,8,9,9,10,10,10,10,11,11,11,11,12,12,0,0,0,8,8,9,9,10,10,10,10,11,11,11,11,12,12,0,0,0,9,9,9,9,10,10,10,10,11,11,12,12,12,13,0,0,0,0,0,9,9,10,10,10,10,11,11,12,12,13,13,0,0,0,0,0,9,9,10,10,11,11,11,11,12,12,13,13,0,0,0,0,0,9,9,10,10,11,10,11,11,12,12,13,13,0,0,0,0,0,10,10,10,10,11,11,12,12,12,13,13,13,0,0,0,0,0,0,0,10,10,11,11,12,12,12,13,13,13,0,0,0,0,0,0,0,11,11,12,12,12,12,13,13,14,14,0,0,0,0,0,0,0,11,11,12,11,12,12,13,13,13,13,0,0,0,0,0,0,0,12,12,12,12,13,13,13,13,14,14,0,0,0,0,0,0,0,0,0,12,12,12,12,13,13,14,14,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,4,3,6,6,7,7,9,9,0,5,5,7,7,8,7,9,9,0,5,5,7,7,8,8,9,9,0,7,7,8,8,8,8,10,10,0,0,0,8,8,8,8,10,10,0,0,0,9,9,9,9,11,11,0,0,0,9,9,9,9,11,11,0,0,0,10,10,10,10,11,11,0,0,0,0,0,9,9,11,11,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,1,3,3,7,7,0,0,0,0,0,5,4,7,7,0,0,0,0,0,5,5,7,7,0,0,0,0,0,6,7,8,8,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,9,10,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,1,4,4,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5,5,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5,5,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,7,7,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,5,0,0,0,0,0,0,5,7,7,0,0,0,0,0,0,5,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,7,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,7,8,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,7,7,0,0,0,0,0,0,7,9,8,0,0,0,0,0,0,7,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,7,0,0,0,0,0,0,8,9,9,0,0,0,0,0,0,8,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,9,10,10,0,0,0,0,0,0,9,10,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,7,9,9,0,0,0,0,0,0,8,10,9,0,0,0,0,0,0,9,10,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,7,8,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,8,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,9,10,10,0,0,0,0,0,0,9,9,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,7,9,9,0,0,0,0,0,0,9,10,10,0,0,0,0,0,0,9,10,10], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+263472); +/* memory initializer */ allocate([1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,8,0,0,0,161,25,0,0,112,60,4,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,24,86,4,0,0,0,0,0,4,0,0,0,113,2,0,0,224,57,4,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,88,60,4,0,0,0,0,0,2,0,0,0,81,0,0,0,96,57,4,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,184,57,4,0,0,0,0,0,2,0,0,0,81,0,0,0,224,56,4,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,56,57,4,0,0,0,0,0,2,0,0,0,33,1,0,0,112,55,4,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,152,56,4,0,0,0,0,0,4,0,0,0,81,0,0,0,8,55,4,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,96,55,4,0,0,0,0,0,2,0,0,0,121,0,0,0,88,54,4,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,216,54,4,0,0,0,0,0,2,0,0,0,169,0,0,0,112,53,4,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,32,54,4,0,0,0,0,0,2,0,0,0,25,0,0,0,56,53,4,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,88,53,4,0,0,0,0,0,4,0,0,0,113,2,0,0,168,50,4,0,1,0,0,0,0,160,27,225,0,160,251,96,3,0,0,0,0,0,0,0,32,53,4,0,0,0,0,0,2,0,0,0,169,0,0,0,192,49,4,0,1,0,0,0,0,128,217,224,0,0,145,96,4,0,0,0,0,0,0,0,112,50,4,0,0,0,0,0,2,0,0,0,33,1,0,0,80,48,4,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,120,49,4,0,0,0,0,0,2,4,4,6,6,7,7,7,7,8,8,8,8,8,8,8,8,10,10,10,7,7,7,8,8,8,9,9,9,9,9,9,9,9,10,10,10,7,7,7,7,8,8,9,9,9,9,9,9,9,9,10,10,10,7,7,8,8,8,8,9,9,9,9,9,10,9,9,10,10,10,7,7,8,8,9,8,9,9,9,9,10,9,9,10,10,10,10,8,8,8,8,9,8,9,9,9,9,9,10,9,10,10,10,10,7,7,8,8,9,9,9,9,9,9,10,9,10,10,10,10,10,8,8,8,9,9,9,9,9,9,9,10,10,10,9,11,10,10,10,10,8,8,9,9,9,9,9,10,9,9,9,10,10,10,10,11,11,9,9,9,9,9,9,9,9,10,9,9,10,11,10,10,11,11,9,9,9,9,9,9,9,9,9,9,10,9,11,11,10,11,11,9,9,9,9,9,9,9,9,9,9,10,9,11,10,10,11,11,11,11,9,9,9,9,9,9,9,9,9,9,10,10,10,11,11,11,11,9,10,9,10,9,9,9,9,10,9,10,11,10,11,10,10,10,10,10,9,9,9,10,9,9,9,10,11,11,10,11,11,10,11,10,10,10,9,9,9,9,10,9,9,10,11,10,11,11,11,11,10,11,10,10,9,10,9,9,9,10,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,4,4,6,6,7,7,9,9,11,12,13,12,6,5,5,7,7,8,8,10,9,12,12,12,12,6,5,5,7,7,8,8,10,9,12,11,11,13,16,7,7,8,8,9,9,10,10,12,12,13,12,16,7,7,8,7,9,9,10,10,11,12,12,13,16,10,10,8,8,10,10,11,12,12,12,13,13,16,11,10,8,7,11,10,11,11,12,11,13,13,16,16,16,10,10,10,10,11,11,13,12,13,13,16,16,16,11,9,11,9,15,13,12,13,13,13,16,16,16,15,13,11,11,12,13,12,12,14,13,16,16,16,14,13,11,11,13,12,14,13,13,13,16,16,16,16,16,13,13,13,12,14,13,14,14,16,16,16,16,16,13,13,12,12,14,14,15,13,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,5,5,10,10,6,9,8,10,10,6,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,8,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,3,3,5,5,6,6,6,5,5,6,6,6,5,5,6,6,6,5,5,6,6,6,5,5,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,6,6,7,7,7,7,8,8,9,9,7,5,5,7,7,8,8,8,8,9,9,10,10,7,5,6,7,7,8,8,8,8,9,9,10,10,0,8,8,8,8,9,9,9,9,10,10,11,11,0,8,8,8,8,9,9,9,9,10,10,11,11,0,12,12,9,9,10,10,10,10,11,11,11,11,0,13,13,9,9,9,9,10,10,11,11,11,12,0,0,0,10,10,10,10,11,11,11,11,12,12,0,0,0,10,10,9,9,11,11,11,12,12,12,0,0,0,13,13,10,10,11,11,12,12,13,13,0,0,0,14,14,10,10,11,11,12,12,13,13,0,0,0,0,0,11,11,11,11,13,12,13,13,0,0,0,0,0,12,12,11,11,12,12,13,13,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,3,3,6,6,7,7,7,7,7,8,10,10,10,6,6,7,7,8,8,8,8,10,10,10,6,6,7,7,8,8,8,8,10,10,10,7,7,7,7,8,8,8,8,10,10,10,7,7,7,7,8,8,8,8,10,10,10,8,7,8,8,8,8,8,8,10,10,10,7,7,8,8,8,8,8,8,10,10,10,8,8,8,8,8,8,8,8,10,10,10,10,10,8,8,8,8,8,8,10,10,10,10,10,9,9,8,8,8,8,10,10,10,10,10,8,8,8,8,8,8,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,7,6,6,7,6,6,4,7,7,10,9,9,10,9,9,4,6,7,10,9,9,11,9,9,7,10,10,11,11,11,12,10,11,6,9,9,11,10,11,11,10,10,6,9,9,11,10,11,11,10,10,7,11,10,12,11,11,11,11,11,7,9,9,10,10,10,11,11,10,6,9,9,11,10,10,11,10,10,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,3,6,6,8,7,8,8,8,8,9,9,10,10,11,11,0,0,0,7,7,8,8,9,9,9,9,9,10,10,10,11,11,0,0,0,7,7,8,8,9,9,9,9,10,10,10,10,11,11,0,0,0,7,7,8,8,9,9,9,9,10,10,11,11,11,11,0,0,0,7,7,8,8,9,9,9,9,10,10,11,11,11,11,0,0,0,8,8,9,9,9,9,10,10,10,10,11,11,12,12,0,0,0,8,8,9,9,9,9,10,10,10,10,11,11,12,12,0,0,0,9,9,9,9,10,10,10,10,11,11,11,12,12,12,0,0,0,0,0,9,9,10,10,10,10,11,11,11,11,12,12,0,0,0,0,0,9,9,10,10,10,10,11,11,12,12,13,13,0,0,0,0,0,9,9,10,10,10,10,11,11,12,12,13,13,0,0,0,0,0,10,10,11,11,11,11,11,12,12,12,13,13,0,0,0,0,0,0,0,11,10,11,11,11,11,12,12,13,13,0,0,0,0,0,0,0,11,11,12,11,12,12,12,12,13,13,0,0,0,0,0,0,0,11,11,11,12,12,12,12,13,13,13,0,0,0,0,0,0,0,12,12,12,12,12,13,13,13,14,14,0,0,0,0,0,0,0,0,0,12,12,12,12,13,13,14,14,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,3,3,6,6,6,6,8,8,0,0,0,7,7,7,7,9,9,0,0,0,7,7,7,7,9,9,0,0,0,7,7,7,8,9,9,0,0,0,7,7,7,7,9,9,0,0,0,9,9,8,8,10,10,0,0,0,8,9,8,8,10,10,0,0,0,10,10,9,9,10,10,0,0,0,0,0,9,9,10,10,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,1,3,2,8,7,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,1,4,4,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5,5,7,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5,6,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,7,7,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,7,7,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,5,0,0,0,0,0,0,5,7,7,0,0,0,0,0,0,5,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,7,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,7,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,7,7,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,7,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,7,7,0,0,0,0,0,0,8,10,9,0,0,0,0,0,0,7,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,9,10,11,0,0,0,0,0,0,9,11,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,7,9,9,0,0,0,0,0,0,9,11,9,0,0,0,0,0,0,9,10,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,7,7,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,8,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,9,11,10,0,0,0,0,0,0,9,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,10,0,0,0,0,0,0,9,10,11,0,0,0,0,0,0,9,11,10], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+274008); +/* memory initializer */ allocate([1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,6,6,12,13,13,14,16,17,17,4,2,5,8,7,9,12,15,15,9,4,5,9,7,9,12,16,18,11,6,7,4,6,8,11,14,18,10,5,6,5,5,7,10,14,17,10,5,7,7,6,7,10,13,16,11,5,7,7,7,8,10,12,15,13,6,7,5,5,7,9,12,13,16,8,9,6,6,7,9,10,12,0,0,0,0,0,0,0,9,8,12,11,12,13,14,14,16,6,1,5,6,6,9,12,14,17,9,4,5,9,7,9,13,15,16,8,5,8,6,8,10,13,17,17,9,6,7,7,8,9,13,15,17,11,8,9,9,9,10,12,16,16,13,7,8,7,7,9,12,14,15,13,6,7,5,5,7,10,13,13,14,7,8,5,6,7,9,10,12,0,0,0,0,0,0,0,2,0,0,0,81,0,0,0,96,167,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,0,0,0,2,0,0,0,81,0,0,0,8,167,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,127,4,0,0,0,0,0,0,0,0,0,0,0,0,0,120,127,4,0,0,0,0,0,0,0,0,0,0,0,0,0,160,127,4,0,0,0,0,0,0,0,0,0,0,0,0,0,200,127,4,0,0,0,0,0,0,0,0,0,0,0,0,0,240,127,4,0,0,0,0,0,24,128,4,0,64,128,4,0,0,0,0,0,0,0,0,0,104,128,4,0,144,128,4,0,0,0,0,0,0,0,0,0,184,128,4,0,224,128,4,0,8,129,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,168,89,4,0,0,0,0,0,0,0,0,0,0,0,0,0,208,89,4,0,0,0,0,0,0,0,0,0,0,0,0,0,248,89,4,0,0,0,0,0,0,0,0,0,0,0,0,0,32,90,4,0,0,0,0,0,0,0,0,0,0,0,0,0,72,90,4,0,0,0,0,0,112,90,4,0,152,90,4,0,0,0,0,0,0,0,0,0,192,90,4,0,232,90,4,0,0,0,0,0,0,0,0,0,16,91,4,0,56,91,4,0,96,91,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,0,0,0,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,0,81,0,0,0,80,89,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,0,0,0,2,0,0,0,81,0,0,0,248,88,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,0,0,0,3,3,8,8,8,8,10,12,14,3,2,6,7,7,8,10,12,16,7,6,7,9,8,10,12,14,16,8,6,8,4,5,7,9,11,13,7,6,8,5,6,7,9,11,14,8,8,10,7,7,6,8,10,13,9,11,12,9,9,7,8,10,12,10,13,15,11,11,10,9,10,13,13,16,17,14,15,14,13,14,17,0,0,0,0,0,0,0,4,4,7,8,7,8,10,12,17,3,1,6,6,7,8,10,12,15,7,6,9,9,9,11,12,14,17,8,6,9,6,7,9,11,13,17,7,6,9,7,7,8,9,12,15,8,8,10,8,7,7,7,10,14,9,10,12,10,8,8,8,10,14,11,13,15,13,12,11,11,12,16,17,18,18,19,20,18,16,16,20,0,0,0,0,0,0,0,8,0,0,0,161,25,0,0,152,101,4,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,64,127,4,0,0,0,0,0,4,0,0,0,113,2,0,0,8,99,4,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,128,101,4,0,0,0,0,0,2,0,0,0,81,0,0,0,136,98,4,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,224,98,4,0,0,0,0,0,2,0,0,0,81,0,0,0,8,98,4,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,96,98,4,0,0,0,0,0,2,0,0,0,33,1,0,0,152,96,4,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,192,97,4,0,0,0,0,0,4,0,0,0,81,0,0,0,48,96,4,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,136,96,4,0,0,0,0,0,2,0,0,0,121,0,0,0,128,95,4,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,0,96,4,0,0,0,0,0,2,0,0,0,169,0,0,0,152,94,4,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,72,95,4,0,0,0,0,0,2,0,0,0,25,0,0,0,96,94,4,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,128,94,4,0,0,0,0,0,2,0,0,0,81,0,0,0,224,93,4,0,1,0,0,0,0,160,59,225,0,160,251,96,4,0,0,0,0,0,0,0,56,94,4,0,0,0,0,0,2,0,0,0,169,0,0,0,248,92,4,0,1,0,0,0,0,128,217,224,0,0,145,96,4,0,0,0,0,0,0,0,168,93,4,0,0,0,0,0,2,0,0,0,33,1,0,0,136,91,4,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,176,92,4,0,0,0,0,0,3,4,4,6,6,7,7,8,8,8,8,9,9,9,9,9,9,10,6,6,6,6,7,7,8,8,8,9,9,9,9,9,9,9,10,6,6,6,6,7,7,8,8,8,8,9,9,9,9,9,9,10,7,7,7,7,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,7,7,7,8,8,8,9,9,9,9,9,9,9,9,10,10,10,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,8,8,8,8,8,8,9,9,9,9,9,9,9,9,11,10,11,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,11,11,8,8,8,8,9,9,9,9,9,9,9,9,11,10,11,11,11,9,9,9,9,9,9,9,9,9,9,9,9,10,11,10,11,11,9,9,9,9,9,9,9,9,9,9,9,10,11,11,10,11,11,9,9,9,9,9,9,9,9,9,9,9,9,11,10,11,11,11,11,11,9,9,9,9,9,9,9,9,9,9,10,11,11,11,11,11,11,9,10,10,10,9,9,9,9,9,9,11,10,11,11,11,11,11,9,9,9,9,9,9,9,9,9,9,11,11,11,11,11,11,11,10,10,9,9,9,9,9,9,9,9,10,11,11,11,11,11,11,11,11,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,4,4,6,6,8,8,9,9,10,11,11,11,6,5,5,7,7,8,8,10,10,10,11,11,11,6,5,5,7,7,8,8,10,10,11,12,12,12,14,7,7,7,8,9,9,11,11,11,12,11,12,17,7,7,8,7,9,9,11,11,12,12,12,12,14,11,11,8,8,10,10,11,12,12,13,11,12,14,11,11,8,8,10,10,11,12,12,13,13,12,14,15,14,10,10,10,10,11,12,12,12,12,11,14,13,16,10,10,10,9,12,11,12,12,13,14,14,15,14,14,13,10,10,11,11,12,11,13,11,14,12,15,13,14,11,10,12,10,12,12,13,13,13,13,14,15,15,12,12,11,11,12,11,13,12,14,14,14,14,17,12,12,11,10,13,11,13,13,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,4,4,12,11,13,13,14,14,4,7,7,11,13,14,14,14,14,3,8,3,14,14,14,14,14,14,14,10,12,14,14,14,14,14,14,14,14,5,14,8,14,14,14,14,14,12,14,13,14,14,14,14,14,14,14,13,14,10,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,2,4,4,4,5,6,5,5,5,5,6,5,5,5,5,6,5,5,5,5,6,6,6,5,5,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,6,6,7,7,7,7,9,9,10,10,7,5,5,7,7,8,8,8,8,10,9,11,10,7,5,5,7,7,8,8,8,8,9,10,11,11,0,8,8,8,8,9,9,9,9,10,10,11,11,0,8,8,8,8,9,9,9,9,10,10,11,11,0,12,12,9,9,9,10,10,10,11,11,12,12,0,13,13,9,9,9,9,10,10,11,11,12,12,0,0,0,10,10,10,10,11,11,12,12,12,13,0,0,0,10,10,10,10,11,11,12,12,12,12,0,0,0,14,14,11,11,11,11,12,13,13,13,0,0,0,14,14,11,10,11,11,12,12,13,13,0,0,0,0,0,12,12,12,12,13,13,13,14,0,0,0,0,0,13,12,12,12,13,13,13,14,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,4,4,5,5,7,7,7,7,8,8,10,5,5,6,6,7,7,8,8,8,8,10,5,5,6,6,7,7,8,8,8,8,10,7,7,7,7,8,8,8,8,8,8,10,10,10,7,7,7,7,8,8,8,8,10,10,10,8,8,8,8,8,8,8,8,10,10,10,8,8,8,8,8,8,8,8,10,10,10,8,8,8,8,8,8,9,9,10,10,10,10,10,8,8,8,8,9,9,10,10,10,10,10,9,9,9,9,8,9,10,10,10,10,10,8,9,8,8,9,8,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,7,6,6,7,6,6,4,7,6,10,9,9,11,9,9,4,6,7,10,9,9,11,9,9,7,10,10,10,11,11,11,11,10,6,9,9,11,10,10,11,10,10,6,9,9,11,10,11,11,10,10,7,11,11,11,11,11,12,11,11,7,9,9,11,10,10,12,10,10,7,9,9,11,10,10,11,10,10,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,4,6,6,8,8,9,9,8,8,9,9,10,10,11,11,0,6,6,7,7,8,8,9,9,9,9,10,10,11,11,12,12,0,6,5,7,7,8,8,9,9,9,9,10,10,11,11,12,12,0,7,7,7,7,8,8,9,9,9,9,10,10,11,11,12,12,0,0,0,7,7,8,8,9,9,10,10,11,11,11,11,12,12,0,0,0,8,8,9,9,10,10,10,10,11,11,12,12,12,12,0,0,0,8,8,9,9,10,10,10,10,11,11,12,12,12,12,0,0,0,9,9,9,9,10,10,10,10,11,11,12,12,13,13,0,0,0,0,0,9,9,10,10,10,10,11,11,12,12,13,13,0,0,0,0,0,9,9,10,10,11,11,12,12,13,13,13,13,0,0,0,0,0,9,9,10,10,11,11,12,12,12,13,13,13,0,0,0,0,0,10,10,11,11,11,11,12,12,13,13,14,14,0,0,0,0,0,0,0,11,11,11,11,12,12,13,13,14,14,0,0,0,0,0,0,0,11,11,12,12,13,13,13,13,14,14,0,0,0,0,0,0,0,11,11,12,12,13,13,13,13,14,14,0,0,0,0,0,0,0,12,12,12,13,13,13,14,14,14,14,0,0,0,0,0,0,0,0,0,12,12,13,13,14,14,14,14,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,4,3,6,6,7,7,9,9,0,5,5,7,7,8,7,9,9,0,5,5,7,7,8,8,9,9,0,7,7,8,8,8,8,10,10,0,0,0,8,8,8,8,10,10,0,0,0,9,9,9,9,10,10,0,0,0,9,9,9,9,10,10,0,0,0,10,10,10,10,11,11,0,0,0,0,0,10,10,11,11,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,1,3,4,7,7,0,0,0,0,0,4,4,7,7,0,0,0,0,0,4,5,7,7,0,0,0,0,0,6,7,8,8,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,10,9,0,0,0,0,0,0,0,11,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,1,4,4,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5,5,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5,5,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,7,7,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,5,0,0,0,0,0,0,5,7,7,0,0,0,0,0,0,5,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,8,0,0,0,0,0,0,8,9,9,0,0,0,0,0,0,7,8,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,8,8,0,0,0,0,0,0,7,9,8,0,0,0,0,0,0,8,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,8,0,0,0,0,0,0,8,10,9,0,0,0,0,0,0,8,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,10,9,0,0,0,0,0,0,9,9,10,0,0,0,0,0,0,9,10,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,7,9,9,0,0,0,0,0,0,8,10,9,0,0,0,0,0,0,9,10,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,8,0,0,0,0,0,0,8,9,9,0,0,0,0,0,0,8,9,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,7,9,9,0,0,0,0,0,0,9,10,10,0,0,0,0,0,0,8,9,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,7,9,10,0,0,0,0,0,0,9,10,10,0,0,0,0,0,0,9,10,9], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+284176); +/* memory initializer */ allocate([1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,8,0,0,0,161,25,0,0,80,141,4,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,248,166,4,0,0,0,0,0,4,0,0,0,113,2,0,0,192,138,4,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,56,141,4,0,0,0,0,0,2,0,0,0,81,0,0,0,64,138,4,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,152,138,4,0,0,0,0,0,2,0,0,0,81,0,0,0,192,137,4,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,24,138,4,0,0,0,0,0,2,0,0,0,33,1,0,0,80,136,4,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,120,137,4,0,0,0,0,0,4,0,0,0,81,0,0,0,232,135,4,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,64,136,4,0,0,0,0,0,2,0,0,0,121,0,0,0,56,135,4,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,184,135,4,0,0,0,0,0,2,0,0,0,169,0,0,0,80,134,4,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,0,135,4,0,0,0,0,0,2,0,0,0,25,0,0,0,24,134,4,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,56,134,4,0,0,0,0,0,4,0,0,0,113,2,0,0,136,131,4,0,1,0,0,0,0,160,27,225,0,160,251,96,3,0,0,0,0,0,0,0,0,134,4,0,0,0,0,0,2,0,0,0,169,0,0,0,160,130,4,0,1,0,0,0,0,128,217,224,0,0,145,96,4,0,0,0,0,0,0,0,80,131,4,0,0,0,0,0,2,0,0,0,33,1,0,0,48,129,4,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,88,130,4,0,0,0,0,0,3,4,3,6,6,7,7,8,8,9,9,9,9,9,9,9,9,10,11,11,6,6,7,7,8,8,9,9,9,9,9,9,9,9,10,10,10,6,6,7,7,8,8,9,9,9,9,9,9,9,9,10,10,10,7,7,7,8,8,8,9,9,9,9,9,9,10,9,10,11,10,7,6,7,7,8,8,9,9,9,9,9,9,9,10,10,10,11,7,7,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,7,7,8,8,8,8,9,9,9,9,9,9,9,10,11,11,11,8,8,8,8,8,8,9,9,9,9,9,9,9,9,11,10,10,11,11,8,8,8,9,9,9,9,9,9,10,9,10,10,10,10,11,11,9,9,9,9,9,9,9,9,9,9,9,9,11,11,10,11,11,9,9,9,9,9,9,9,9,9,10,10,10,10,11,10,11,11,9,9,9,9,9,9,9,9,9,9,9,9,11,10,10,11,11,11,11,9,9,9,9,9,9,9,9,10,10,10,11,11,10,11,11,11,9,10,10,9,9,9,9,9,9,9,10,11,11,11,11,11,11,9,9,9,9,9,9,9,9,9,9,11,11,11,11,11,11,11,10,10,9,9,9,9,9,9,9,9,11,11,11,10,11,11,11,11,11,9,9,9,10,9,9,9,9,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,4,4,6,6,8,8,9,10,10,11,11,11,6,5,5,7,7,8,8,9,10,9,11,11,12,5,5,5,7,7,8,9,10,10,12,12,14,13,15,7,7,8,8,9,10,11,11,10,12,10,11,15,7,8,8,8,9,9,11,11,13,12,12,13,15,10,10,8,8,10,10,12,12,11,14,10,10,15,11,11,8,8,10,10,12,13,13,14,15,13,15,15,15,10,10,10,10,12,12,13,12,13,10,15,15,15,10,10,11,10,13,11,13,13,15,13,15,15,15,13,13,10,11,11,11,12,10,14,11,15,15,14,14,13,10,10,12,11,13,13,14,14,15,15,15,15,15,11,11,11,11,12,11,15,12,15,15,15,15,15,12,12,11,11,14,12,13,14,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,7,7,11,11,8,11,11,11,11,4,11,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,7,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,3,3,5,5,6,6,6,5,5,6,6,6,5,5,6,6,6,5,5,6,6,6,5,5,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,6,6,7,7,8,8,9,9,10,10,6,5,5,7,7,8,8,8,8,9,9,11,11,7,5,5,7,7,8,8,8,8,9,10,11,11,0,8,8,8,8,9,9,9,9,10,10,11,11,0,8,8,8,8,9,9,9,9,10,10,11,11,0,12,12,9,9,9,10,10,10,11,11,11,12,0,13,13,9,9,9,9,10,10,11,11,11,12,0,0,0,10,10,10,10,11,11,12,12,12,13,0,0,0,10,10,10,10,11,11,12,12,13,12,0,0,0,14,14,11,10,11,12,12,13,13,14,0,0,0,15,15,11,11,12,11,12,12,14,13,0,0,0,0,0,12,12,12,12,13,13,14,14,0,0,0,0,0,13,13,12,12,13,13,13,14,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,4,4,6,6,7,7,8,8,8,8,10,10,10,7,6,8,8,8,8,8,8,10,10,10,7,6,7,7,8,8,8,8,10,10,10,7,7,8,8,8,8,8,8,10,10,10,7,7,8,8,8,8,8,8,10,10,10,8,8,8,8,9,9,9,9,10,10,10,8,8,8,8,9,9,9,9,10,10,10,9,9,9,9,9,9,9,9,10,10,10,10,10,9,9,9,9,9,9,10,10,10,10,10,9,9,9,9,9,9,10,10,10,10,10,9,9,9,9,9,9,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,7,6,6,7,6,6,4,6,6,10,9,9,11,9,9,4,6,6,10,9,9,10,9,9,7,10,10,11,11,11,12,11,11,7,9,9,11,11,10,11,10,10,7,9,9,11,10,11,11,10,10,7,10,10,11,11,11,12,11,11,7,9,9,11,10,10,11,10,10,7,9,9,11,10,10,11,10,10,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,3,6,6,7,7,8,8,8,8,9,9,10,10,10,10,0,0,0,7,7,8,8,9,9,9,9,10,10,10,10,11,11,0,0,0,7,7,8,8,9,9,9,9,10,10,10,10,11,11,0,0,0,7,7,8,8,9,9,9,9,10,10,11,11,11,12,0,0,0,7,7,8,8,9,9,9,9,10,10,11,11,11,11,0,0,0,8,8,9,9,9,9,10,10,10,10,11,11,12,12,0,0,0,8,8,9,9,9,9,10,10,10,11,11,11,12,12,0,0,0,9,9,10,9,10,10,10,10,11,11,11,11,12,12,0,0,0,0,0,9,9,10,10,10,10,11,11,12,12,12,12,0,0,0,0,0,9,9,10,10,10,11,11,11,12,12,13,13,0,0,0,0,0,9,9,10,10,10,10,11,11,12,12,13,13,0,0,0,0,0,10,10,11,10,11,11,11,12,13,12,13,13,0,0,0,0,0,0,0,11,10,11,11,12,12,12,12,13,13,0,0,0,0,0,0,0,11,11,12,12,12,12,13,13,13,14,0,0,0,0,0,0,0,11,11,12,12,12,12,13,13,13,14,0,0,0,0,0,0,0,12,12,12,13,13,13,13,13,14,14,0,0,0,0,0,0,0,0,0,12,12,13,12,13,13,14,14,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,3,3,6,6,6,6,8,8,0,0,0,6,6,7,7,9,9,0,0,0,6,6,7,7,9,9,0,0,0,7,7,8,8,10,10,0,0,0,7,7,8,8,10,10,0,0,0,9,9,9,9,10,10,0,0,0,9,9,9,9,10,10,0,0,0,10,10,10,10,11,11,0,0,0,0,0,10,10,11,11,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,1,2,3,7,7,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,9,8,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,1,4,4,7,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5,5,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5,5,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,7,7,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,7,7,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,0,0,0,0,0,0,5,7,7,0,0,0,0,0,0,5,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,8,0,0,0,0,0,0,8,9,9,0,0,0,0,0,0,7,9,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,5,8,8,0,0,0,0,0,0,7,10,9,0,0,0,0,0,0,8,10,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,8,0,0,0,0,0,0,8,10,10,0,0,0,0,0,0,8,9,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,7,10,10,0,0,0,0,0,0,9,9,11,0,0,0,0,0,0,10,11,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,10,10,0,0,0,0,0,0,9,11,9,0,0,0,0,0,0,10,11,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,8,0,0,0,0,0,0,8,10,10,0,0,0,0,0,0,8,10,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,7,10,10,0,0,0,0,0,0,10,11,11,0,0,0,0,0,0,9,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,10,10,0,0,0,0,0,0,10,11,11,0,0,0,0,0,0,9,11,9], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+294712); +/* memory initializer */ allocate([1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,5,6,12,14,12,14,16,17,18,4,2,5,11,7,10,12,14,15,9,4,5,11,7,10,13,15,18,15,6,7,5,6,8,11,13,16,11,5,6,5,5,6,9,13,15,12,5,7,6,5,6,9,12,14,12,6,7,8,6,7,9,12,13,14,8,8,7,5,5,8,10,12,16,9,9,8,6,6,7,9,9,0,0,0,0,0,0,0,10,9,12,15,12,13,16,14,16,7,1,5,14,7,10,13,16,16,9,4,6,16,8,11,16,16,16,14,4,7,16,9,12,14,16,16,10,5,7,14,9,12,14,15,15,13,8,9,14,10,12,13,14,15,13,9,9,7,6,8,11,12,12,14,8,8,5,4,5,8,11,12,16,10,10,6,5,6,8,9,10,0,0,0,0,0,0,0,0,0,0,0,0,64,191,64,0,0,0,0,0,88,203,64,0,0,0,0,0,130,228,64,0,0,0,0,0,112,183,64,0,0,0,0,0,148,193,64,0,0,0,0,0,64,223,64,0,0,0,0,0,112,199,64,0,0,0,0,0,136,211,64,0,0,0,0,0,106,232,64,154,153,153,153,153,153,185,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,63,0,2,0,0,0,2,0,0,30,0,0,0,25,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,25,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,242,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,240,255,255,255,246,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,2,0,0,0,0,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,240,255,255,255,246,255,255,255,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,99,0,0,0,99,0,0,0,99,0,0,0,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,240,255,255,255,246,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,99,0,0,0,99,0,0,0,99,0,0,0,0,0,0,0,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,251,255,255,255,251,255,255,255,251,255,255,255,0,0,0,0,4,0,0,0,10,0,0,0,10,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,246,255,255,255,246,255,255,255,251,255,255,255,0,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,10,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,250,255,255,255,248,255,255,255,248,255,255,255,250,255,255,255,250,255,255,255,99,0,0,0,99,0,0,0,99,0,0,0,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,251,255,255,255,251,255,255,255,251,255,255,255,0,0,0,0,4,0,0,0,10,0,0,0,10,0,0,0,12,0,0,0,12,0,0,0,12,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,246,255,255,255,246,255,255,255,251,255,255,255,251,255,255,255,251,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,250,255,255,255,248,255,255,255,248,255,255,255,250,255,255,255,250,255,255,255,99,0,0,0,99,0,0,0,99,0,0,0,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,244,255,255,255,246,255,255,255,248,255,255,255,0,0,0,0,2,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,99,0,0,0,99,0,0,0,99,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,244,255,255,255,244,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,99,0,0,0,99,0,0,0,99,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,232,255,255,255,99,0,0,0,99,0,0,0,99,0,0,0,0,0,0,0,51,51,51,51,51,51,211,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,18,64,0,0,0,0,0,0,22,64,0,0,0,0,0,0,62,64,208,171,4,0,0,0,0,0,6,0,0,0,6,0,0,0,0,0,0,0,0,64,191,64,0,0,0,0,0,100,201,64,0,0,0,0,0,124,229,64,0,0,0,0,0,64,207,64,0,0,0,0,0,88,219,64,0,0,0,0,0,64,239,64,0,0,0,0,0,106,248,64,154,153,153,153,153,153,185,191,154,153,153,153,153,153,169,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,240,63,0,4,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,0,0,0,30,0,0,0,25,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,22,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,242,255,255,255,0,0,0,0,0,0,0,0,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,240,255,255,255,246,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,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,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,240,255,255,255,246,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,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,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,240,255,255,255,246,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,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,236,255,255,255,246,255,255,255,251,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,10,0,0,0,10,0,0,0,255,255,255,255,10,0,0,0,10,0,0,0,255,255,255,255,20,0,0,0,20,0,0,0,255,255,255,255,20,0,0,0,20,0,0,0,255,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,246,255,255,255,246,255,255,255,251,255,255,255,4,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,12,0,0,0,12,0,0,0,14,0,0,0,20,0,0,0,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,246,255,255,255,246,255,255,255,251,255,255,255,0,0,0,0,0,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,8,0,0,0,8,0,0,0,15,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,250,255,255,255,248,255,255,255,248,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,246,255,255,255,246,255,255,255,251,255,255,255,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,8,0,0,0,15,0,0,0,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,246,255,255,255,251,255,255,255,251,255,255,255,251,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,10,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,244,255,255,255,246,255,255,255,248,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,4,0,0,0,10,0,0,0,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,240,255,255,255,244,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,249,255,255,255,251,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,232,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,244,255,255,255,246,255,255,255,248,255,255,255,251,255,255,255,251,255,255,255,251,255,255,255,251,255,255,255,251,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,238,255,255,255,238,255,255,255,238,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,240,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,232,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,246,255,255,255,246,255,255,255,251,255,255,255,4,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,12,0,0,0,12,0,0,0,14,0,0,0,20,0,0,0,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,246,255,255,255,246,255,255,255,251,255,255,255,0,0,0,0,0,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,8,0,0,0,8,0,0,0,15,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,250,255,255,255,248,255,255,255,248,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,246,255,255,255,246,255,255,255,251,255,255,255,4,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,8,0,0,0,10,0,0,0,12,0,0,0,20,0,0,0,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,246,255,255,255,251,255,255,255,251,255,255,255,251,255,255,255,4,0,0,0,5,0,0,0,6,0,0,0,8,0,0,0,8,0,0,0,15,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,244,255,255,255,246,255,255,255,248,255,255,255,0,0,0,0,2,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,8,0,0,0,12,0,0,0,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,240,255,255,255,244,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,246,255,255,255,248,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,5,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,232,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,244,255,255,255,246,255,255,255,248,255,255,255,251,255,255,255,251,255,255,255,251,255,255,255,251,255,255,255,251,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,244,255,255,255,244,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,250,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,232,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,251,255,255,255,251,255,255,255,251,255,255,255,0,0,0,0,4,0,0,0,6,0,0,0,8,0,0,0,8,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,14,0,0,0,20,0,0,0,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,251,255,255,255,254,255,255,255,254,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,8,0,0,0,8,0,0,0,15,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,250,255,255,255,248,255,255,255,248,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,251,255,255,255,251,255,255,255,251,255,255,255,0,0,0,0,4,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,8,0,0,0,10,0,0,0,12,0,0,0,20,0,0,0,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,246,255,255,255,251,255,255,255,251,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,8,0,0,0,8,0,0,0,15,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,232,255,255,255,236,255,255,255,242,255,255,255,246,255,255,255,250,255,255,255,248,255,255,255,248,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,250,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,244,255,255,255,246,255,255,255,248,255,255,255,0,0,0,0,2,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,5,0,0,0,8,0,0,0,12,0,0,0,236,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,240,255,255,255,244,255,255,255,236,255,255,255,246,255,255,255,251,255,255,255,251,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,5,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,232,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,241,255,255,255,244,255,255,255,246,255,255,255,248,255,255,255,251,255,255,255,251,255,255,255,251,255,255,255,251,255,255,255,251,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,234,255,255,255,236,255,255,255,242,255,255,255,244,255,255,255,244,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,246,255,255,255,250,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,226,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,230,255,255,255,232,255,255,255,236,255,255,255,236,255,255,255,236,255,255,255,0,0,0,0,0,0,0,0,154,153,153,153,153,153,233,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,1,0,0,0,1,0,0,15,39,0,0,0,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,8,0,0,0,51,51,51,51,51,51,211,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,156,255,255,255,156,255,255,255,156,255,255,255,151,255,255,255,126,255,255,255,126,255,255,255,126,255,255,255,116,255,255,255,0,0,0,0,0,0,26,64,0,0,0,0,0,0,32,64,0,0,0,0,0,0,62,64,0,0,0,0,0,192,88,64,0,0,0,0,0,0,240,63,0,0,0,0,0,0,0,64,0,0,0,0,0,0,8,64,0,0,0,0,0,0,16,64,4,0,0,0,4,0,0,0,4,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,6,0,0,0,5,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,64,64,0,0,64,64,0,0,128,64,0,0,128,64,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,4,0,0,0,4,0,0,0,4,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,6,0,0,0,5,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,4,0,0,0,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,0,64,0,0,64,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,5,0,0,0,4,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,3,0,0,0,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,128,64,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,0,65,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,0,0,198,66,200,239,4,0,216,239,4,0,8,181,0,0,16,188,4,0,8,181,0,0,48,188,4,0,8,181,0,0,112,188,4,0,1,0,0,0,0,0,0,0,32,0,0,0,240,233,0,0,216,225,4,0,216,225,4,0,0,226,4,0,0,226,4,0,1,0,0,0,0,0,0,0,32,0,0,0,88,206,0,0,200,208,4,0,200,208,4,0,240,208,4,0,240,208,4,0,1,0,0,0,0,0,0,0,32,0,0,0,88,206,0,0,176,209,4,0,176,209,4,0,240,208,4,0,240,208,4,0,1,0,0,0,0,0,0,0,32,0,0,0,160,220,1,0,176,188,4,0,176,188,4,0,216,188,4,0,216,188,4,0,1,0,0,0,0,0,0,0,32,0,0,0,160,220,1,0,152,189,4,0,152,189,4,0,216,188,4,0,216,188,4,0,2,0,0,0,100,0,0,0,96,208,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,0,0,0,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,190,4,0,0,0,0,0,0,0,0,0,0,0,0,0,80,190,4,0,0,0,0,0,0,0,0,0,0,0,0,0,120,190,4,0,0,0,0,0,0,0,0,0,0,0,0,0,160,190,4,0,0,0,0,0,200,190,4,0,240,190,4,0,0,0,0,0,0,0,0,0,24,191,4,0,64,191,4,0,0,0,0,0,0,0,0,0,104,191,4,0,144,191,4,0,0,0,0,0,0,0,0,0,184,191,4,0,224,191,4,0,0,0,0,0,0,0,0,0,8,192,4,0,48,192,4,0,88,192,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,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,100,0,0,0,192,189,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,0,0,0,5,8,10,10,10,11,11,12,14,18,7,5,5,6,8,9,10,12,14,17,9,5,4,5,6,8,10,11,13,19,9,5,4,4,5,6,9,10,12,17,8,6,5,4,4,5,7,10,11,15,8,7,7,6,5,5,6,9,11,14,8,9,8,7,6,5,6,7,11,14,9,11,11,9,7,6,6,6,9,14,11,14,15,13,9,8,7,7,9,14,13,15,19,17,12,11,10,9,10,14,0,0,0,0,4,0,0,0,81,0,0,0,248,207,4,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,80,208,4,0,0,0,0,0,4,0,0,0,113,2,0,0,104,205,4,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,224,207,4,0,0,0,0,0,2,0,0,0,81,0,0,0,232,204,4,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,64,205,4,0,0,0,0,0,2,0,0,0,33,1,0,0,120,203,4,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,160,204,4,0,0,0,0,0,4,0,0,0,81,0,0,0,16,203,4,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,104,203,4,0,0,0,0,0,2,0,0,0,121,0,0,0,96,202,4,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,224,202,4,0,0,0,0,0,2,0,0,0,169,0,0,0,120,201,4,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,40,202,4,0,0,0,0,0,2,0,0,0,25,0,0,0,64,201,4,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,96,201,4,0,0,0,0,0,2,0,0,0,169,0,0,0,88,200,4,0,1,0,0,0,0,128,208,224,0,0,118,96,4,0,0,0,0,0,0,0,8,201,4,0,0,0,0,0,2,0,0,0,121,0,0,0,168,199,4,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,40,200,4,0,0,0,0,0,2,0,0,0,225,0,0,0,128,198,4,0,1,0,0,0,0,96,242,224,0,0,149,96,4,0,0,0,0,0,0,0,104,199,4,0,0,0,0,0,2,0,0,0,185,1,0,0,104,196,4,0,1,0,0,0,0,0,116,224,0,0,16,96,5,0,0,0,0,0,0,0,40,198,4,0,0,0,0,0,2,0,0,0,225,0,0,0,64,195,4,0,1,0,0,0,0,117,153,225,0,24,61,97,4,0,0,0,0,0,0,0,40,196,4,0,0,0,0,0,2,0,0,0,105,1,0,0,128,193,4,0,1,0,0,0,0,144,27,225,0,128,184,96,5,0,0,0,0,0,0,0,240,194,4,0,0,0,0,0,1,0,0,0,49,0,0,0,128,192,4,0,1,0,0,0,0,0,152,224,0,0,16,96,6,0,0,0,0,0,0,0,184,192,4,0,0,0,0,0,2,3,4,4,4,5,5,6,5,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,7,8,8,8,8,8,8,0,0,0,0,0,0,0,24,0,0,0,23,0,0,0,25,0,0,0,22,0,0,0,26,0,0,0,21,0,0,0,27,0,0,0,20,0,0,0,28,0,0,0,19,0,0,0,29,0,0,0,18,0,0,0,30,0,0,0,17,0,0,0,31,0,0,0,16,0,0,0,32,0,0,0,15,0,0,0,33,0,0,0,14,0,0,0,34,0,0,0,13,0,0,0,35,0,0,0,12,0,0,0,36,0,0,0,11,0,0,0,37,0,0,0,10,0,0,0,38,0,0,0,9,0,0,0,39,0,0,0,8,0,0,0,40,0,0,0,7,0,0,0,41,0,0,0,6,0,0,0,42,0,0,0,5,0,0,0,43,0,0,0,4,0,0,0,44,0,0,0,3,0,0,0,45,0,0,0,2,0,0,0,46,0,0,0,1,0,0,0,47,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,1,4,4,7,7,7,7,7,6,9,7,10,8,12,12,13,13,14,14,4,7,7,9,9,9,8,9,8,10,9,11,9,14,9,14,10,13,11,4,7,7,9,9,9,9,8,9,10,10,11,11,12,13,12,13,14,15,7,9,9,10,11,10,10,10,10,11,12,13,13,13,14,17,14,15,16,7,9,9,10,10,10,10,10,10,11,12,13,13,14,14,15,15,18,18,8,9,9,11,10,11,11,11,12,13,12,14,14,16,15,15,17,18,15,8,9,9,10,10,11,11,11,11,13,13,14,14,15,15,15,16,16,18,7,9,8,10,10,11,11,12,12,14,14,15,15,16,16,15,17,16,18,8,9,9,10,10,11,12,12,12,13,13,16,15,17,16,17,18,17,18,9,10,10,12,11,13,13,14,13,14,14,15,17,16,18,17,18,17,18,9,10,10,12,11,12,13,13,14,15,16,14,15,16,18,18,18,18,17,11,11,11,13,13,14,14,16,15,15,15,16,15,15,18,18,18,17,16,11,11,12,13,13,15,14,15,16,16,16,17,16,15,18,17,18,16,18,12,13,13,15,15,15,16,18,16,17,16,17,16,17,17,17,18,18,17,13,13,13,15,13,16,15,17,16,16,16,18,18,18,18,16,17,17,18,13,15,14,15,15,18,17,18,18,18,16,18,17,18,17,18,16,17,17,14,14,14,15,16,17,16,18,18,18,17,18,17,18,18,18,16,16,16,14,17,16,17,15,16,18,18,17,18,17,18,17,18,18,18,17,18,17,15,16,15,18,15,18,17,16,18,18,18,18,18,18,17,18,16,18,17,0,0,0,0,0,0,0,9,0,0,0,8,0,0,0,10,0,0,0,7,0,0,0,11,0,0,0,6,0,0,0,12,0,0,0,5,0,0,0,13,0,0,0,4,0,0,0,14,0,0,0,3,0,0,0,15,0,0,0,2,0,0,0,16,0,0,0,1,0,0,0,17,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,1,5,3,9,8,9,9,9,9,9,9,9,9,9,9,5,7,8,9,9,9,9,9,9,9,9,9,9,9,9,5,7,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,3,5,5,7,7,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,5,6,6,7,7,8,8,9,9,9,9,9,9,9,9,9,9,10,10,10,10,5,6,6,7,7,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,7,7,7,8,8,9,8,9,9,9,9,9,9,10,10,10,10,10,10,10,10,7,7,7,8,8,9,9,9,9,9,9,9,9,10,9,10,10,10,9,10,9,8,8,8,9,8,9,9,9,9,10,9,10,10,10,10,10,10,10,10,10,10,8,8,8,8,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,8,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,10,0,0,0,9,0,0,0,11,0,0,0,8,0,0,0,12,0,0,0,7,0,0,0,13,0,0,0,6,0,0,0,14,0,0,0,5,0,0,0,15,0,0,0,4,0,0,0,16,0,0,0,3,0,0,0,17,0,0,0,2,0,0,0,18,0,0,0,1,0,0,0,19,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,1,4,4,7,7,8,8,7,7,9,8,10,9,11,11,4,7,6,9,8,9,9,9,9,10,9,11,9,12,9,4,6,7,8,8,9,9,9,9,10,10,10,11,11,12,7,9,8,10,10,11,11,10,10,11,11,12,12,13,12,7,8,8,10,10,10,11,10,10,11,11,11,12,12,13,8,9,9,11,11,11,11,11,11,12,12,13,13,13,13,8,9,9,11,11,11,11,11,11,12,12,13,13,13,14,8,9,9,10,10,11,11,12,11,13,13,14,13,14,14,8,9,9,10,10,11,11,12,12,12,12,13,13,14,14,9,10,10,11,11,12,12,13,12,13,13,14,14,15,15,9,10,10,11,11,12,12,12,13,13,13,14,14,14,15,10,11,11,12,12,13,13,14,13,14,14,15,14,15,15,10,11,11,12,12,13,12,13,14,14,14,14,14,15,15,11,12,12,13,13,13,13,14,14,15,14,15,15,16,16,11,12,12,13,13,13,13,14,14,14,15,15,15,16,16,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,2,5,5,7,7,7,7,7,7,8,8,5,6,6,7,7,7,7,8,8,8,8,5,6,6,7,7,7,7,8,8,8,8,7,7,7,7,7,8,8,8,8,8,8,7,7,7,7,7,8,8,8,8,8,8,7,7,7,8,8,8,8,8,8,8,8,7,7,7,8,8,8,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,7,7,8,8,8,8,9,9,10,10,4,6,6,8,8,9,9,9,9,10,10,11,10,4,6,6,8,8,9,9,9,9,10,10,11,11,7,8,8,10,9,10,10,10,10,11,11,12,12,7,8,8,10,10,10,10,10,10,11,11,12,12,8,9,9,10,10,11,11,11,11,12,12,13,13,8,9,9,10,10,11,11,11,11,12,12,13,13,8,9,9,11,10,11,11,12,12,13,13,14,13,8,9,9,10,10,11,11,12,12,13,13,13,13,9,10,10,11,11,12,12,13,13,13,13,14,14,9,10,10,11,11,12,12,13,13,13,13,14,14,10,11,11,12,12,13,13,14,13,14,14,15,14,10,11,11,12,12,13,13,14,13,14,14,15,14,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,4,7,7,8,8,8,8,10,10,11,11,4,6,6,7,7,9,9,9,9,10,10,11,11,4,6,6,7,7,9,9,9,9,10,10,11,11,7,8,8,9,9,9,9,10,10,11,11,12,12,7,7,7,9,8,10,9,10,10,11,11,12,12,8,9,9,9,10,10,10,11,11,12,12,13,13,8,9,9,10,9,10,10,11,11,12,12,13,13,8,9,9,10,10,11,11,11,11,12,12,13,13,8,9,9,10,10,11,11,12,11,12,12,13,13,10,10,10,11,11,12,12,12,12,13,13,14,14,10,10,10,11,11,12,12,12,12,13,13,14,14,11,11,11,12,12,13,13,13,13,14,14,14,14,11,11,11,12,12,13,13,13,13,14,14,14,14,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,5,5,6,6,7,7,8,8,8,8,5,6,6,7,7,7,7,8,8,8,8,5,6,6,6,7,7,7,8,8,8,8,6,7,7,7,7,8,8,8,8,8,8,6,7,7,7,7,8,8,8,8,8,8,7,7,7,8,8,8,8,8,8,8,8,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,8,8,8,8,8,8,8,8,8,9,9,8,8,8,8,8,8,8,9,9,9,9,8,8,8,8,8,8,8,9,9,9,9,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,5,7,7,5,7,7,5,8,8,7,9,9,7,9,10,5,8,8,7,10,9,7,10,9,5,8,8,8,11,10,8,10,10,7,10,10,9,9,12,10,12,12,7,10,10,9,12,10,10,11,12,5,8,8,8,10,10,8,11,11,7,11,10,10,12,11,9,10,12,7,10,11,10,12,12,9,12,9,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,5,5,6,6,7,7,8,8,9,9,10,10,11,11,11,11,5,5,5,7,6,8,7,9,9,9,9,10,10,11,11,12,12,5,5,5,6,6,7,8,8,9,9,9,10,10,11,11,12,12,6,7,6,7,7,8,8,9,9,9,9,10,10,11,11,12,12,6,6,7,7,7,8,8,9,9,9,9,10,10,11,11,12,12,7,8,8,8,8,9,9,9,9,10,10,11,11,11,11,12,12,7,7,8,8,8,9,9,9,9,10,10,11,11,11,11,12,12,8,9,9,9,9,9,9,10,10,10,10,11,11,12,12,12,12,8,9,9,9,9,9,9,10,10,10,10,11,11,12,12,12,12,9,9,9,9,9,10,10,10,10,10,11,11,11,12,12,13,13,9,9,9,9,9,10,10,10,10,11,10,11,11,12,12,13,13,10,10,10,10,10,11,11,11,11,11,11,11,12,12,12,13,13,10,10,10,10,10,11,11,11,11,11,11,12,11,12,12,13,13,11,11,11,11,11,11,11,12,12,12,12,12,12,13,13,13,13,11,11,11,11,11,11,11,12,12,12,12,13,12,13,13,13,13,11,12,12,12,12,12,12,12,12,13,13,13,13,13,13,14,14,11,12,12,12,12,12,12,12,13,13,13,13,13,13,13,14,14,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,2,4,4,6,6,7,7,9,9,4,5,5,6,6,8,7,9,9,4,5,5,6,6,7,8,9,9,6,6,6,7,7,8,8,10,10,6,6,6,7,7,8,8,10,10,7,8,7,8,8,9,9,11,10,7,7,8,8,8,9,9,10,11,9,9,9,10,10,11,10,11,11,9,9,9,10,10,10,11,11,11,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,3,5,5,8,8,5,7,7,9,9,5,7,7,9,9,9,10,9,11,11,9,9,9,11,11,5,7,7,9,9,7,8,8,10,10,7,8,8,10,10,10,10,10,12,12,9,10,10,11,12,5,7,7,9,9,7,8,8,10,10,7,8,8,10,10,9,10,10,12,11,10,10,10,12,12,9,10,10,12,12,10,10,10,12,12,9,10,10,12,12,12,12,12,14,14,11,12,12,13,14,9,10,10,12,12,9,10,10,12,12,10,10,10,12,12,11,12,12,14,13,12,12,12,14,13,5,7,7,9,9,7,8,8,10,10,7,8,8,10,10,10,10,10,12,12,10,10,10,12,12,7,8,8,11,10,8,9,9,11,11,8,9,9,11,11,10,11,11,12,13,10,11,11,12,13,7,8,8,10,10,8,9,8,11,10,8,9,9,11,11,10,11,10,13,12,10,11,11,13,13,10,11,10,13,12,10,11,11,13,13,10,11,11,13,13,12,12,13,13,14,12,13,13,14,14,9,10,10,12,12,10,11,10,13,12,10,11,11,13,13,12,13,12,14,13,12,13,13,14,15,5,7,7,9,10,7,8,8,10,10,7,8,8,10,10,10,10,10,12,12,10,10,11,12,12,7,8,8,10,10,8,9,9,11,11,8,8,9,10,11,10,11,11,13,13,10,10,11,12,13,7,8,8,10,10,8,9,9,11,11,8,9,9,11,11,10,11,11,13,12,10,11,11,13,12,9,10,10,12,12,10,11,11,13,13,10,10,11,12,13,12,13,13,15,14,12,12,13,12,14,9,10,11,12,13,10,11,11,13,13,10,11,11,13,13,12,13,13,14,14,12,13,12,14,13,8,10,10,12,12,9,11,10,13,12,9,10,10,12,13,12,13,13,14,14,12,12,12,14,14], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+304880); +/* memory initializer */ allocate([9,10,10,13,13,10,11,11,13,13,10,11,11,13,13,13,13,13,14,15,12,13,13,14,15,9,10,10,12,13,10,11,10,13,13,10,11,11,12,13,12,13,12,15,14,12,13,13,14,15,11,12,12,15,14,12,12,13,14,15,12,13,13,15,14,13,13,15,14,16,14,14,14,16,15,11,12,12,14,14,11,12,12,14,14,12,13,13,14,15,13,14,13,15,13,14,14,14,15,16,8,9,10,12,12,9,10,10,13,12,9,10,11,12,13,12,12,12,14,14,12,13,13,14,14,9,10,10,13,12,10,11,11,13,13,10,10,11,13,13,12,13,13,15,14,12,12,13,14,15,9,10,10,13,13,10,11,11,13,13,10,11,11,13,13,12,13,13,14,14,13,13,13,15,15,11,12,12,14,13,12,13,13,15,14,11,12,12,14,14,14,14,14,16,15,13,13,14,13,16,11,12,12,14,14,12,13,13,14,15,12,13,12,14,14,14,14,14,16,16,14,15,13,16,14,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,5,5,7,7,5,7,7,5,7,7,7,9,9,7,9,9,5,7,7,7,9,9,8,9,9,5,7,7,8,9,9,7,9,9,7,9,9,9,10,11,9,10,10,7,9,9,9,10,9,9,10,11,5,8,7,7,9,9,8,9,9,7,9,9,9,11,10,9,9,10,7,9,9,9,10,10,9,11,10,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,8,11,13,13,15,16,19,19,19,19,11,8,8,9,9,11,13,15,19,20,14,8,7,7,8,9,12,13,15,20,15,9,6,5,5,7,10,12,14,18,14,9,7,5,3,4,7,10,12,16,13,10,8,6,3,3,5,8,11,14,11,10,9,7,5,4,4,6,11,14,10,10,10,8,6,5,5,6,10,14,10,10,10,9,8,7,7,7,10,14,11,12,12,12,11,10,10,10,12,16,0,0,0,0,2,0,0,0,100,0,0,0,112,225,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,0,0,0,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,210,4,0,0,0,0,0,0,0,0,0,0,0,0,0,104,210,4,0,0,0,0,0,0,0,0,0,0,0,0,0,144,210,4,0,0,0,0,0,0,0,0,0,0,0,0,0,184,210,4,0,0,0,0,0,0,0,0,0,0,0,0,0,224,210,4,0,0,0,0,0,0,0,0,0,0,0,0,0,8,211,4,0,0,0,0,0,48,211,4,0,88,211,4,0,0,0,0,0,0,0,0,0,128,211,4,0,168,211,4,0,0,0,0,0,0,0,0,0,208,211,4,0,248,211,4,0,32,212,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,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,100,0,0,0,216,209,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,0,0,0,3,6,10,8,12,8,14,8,14,19,5,3,5,5,7,6,11,7,16,19,7,5,6,7,7,9,11,12,19,19,6,4,7,5,7,6,10,7,18,18,8,6,7,7,7,7,8,9,18,18,7,5,8,5,7,5,8,6,18,18,12,9,10,9,9,9,8,9,18,18,8,7,10,6,8,5,6,4,11,18,11,15,16,12,11,8,8,6,9,18,14,18,18,18,16,16,16,13,16,18,0,0,0,0,4,0,0,0,81,0,0,0,8,225,4,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,96,225,4,0,0,0,0,0,4,0,0,0,81,0,0,0,160,224,4,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,248,224,4,0,0,0,0,0,4,0,0,0,113,2,0,0,16,222,4,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,136,224,4,0,0,0,0,0,4,0,0,0,113,2,0,0,128,219,4,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,248,221,4,0,0,0,0,0,2,0,0,0,81,0,0,0,0,219,4,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,88,219,4,0,0,0,0,0,2,0,0,0,81,0,0,0,128,218,4,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,216,218,4,0,0,0,0,0,4,0,0,0,81,0,0,0,24,218,4,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,112,218,4,0,0,0,0,0,2,0,0,0,121,0,0,0,104,217,4,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,232,217,4,0,0,0,0,0,2,0,0,0,121,0,0,0,184,216,4,0,1,0,0,0,0,128,187,224,0,0,118,96,4,0,0,0,0,0,0,0,56,217,4,0,0,0,0,0,2,0,0,0,121,0,0,0,8,216,4,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,136,216,4,0,0,0,0,0,2,0,0,0,225,0,0,0,224,214,4,0,1,0,0,0,0,228,91,225,0,224,255,96,4,0,0,0,0,0,0,0,200,215,4,0,0,0,0,0,2,0,0,0,225,0,0,0,184,213,4,0,1,0,0,0,0,192,221,224,0,0,145,96,4,0,0,0,0,0,0,0,160,214,4,0,0,0,0,0,2,0,0,0,33,1,0,0,72,212,4,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,112,213,4,0,0,0,0,0,1,6,6,7,8,8,11,10,9,9,11,9,10,9,11,11,9,6,7,6,11,8,11,9,10,10,11,9,11,10,10,10,11,9,5,7,7,8,8,10,11,8,8,11,9,9,10,11,9,10,11,8,9,6,8,8,9,9,10,10,11,11,11,9,11,10,9,11,8,8,8,9,8,9,10,11,9,9,11,11,10,9,9,11,10,8,11,8,9,8,11,9,10,9,10,11,11,10,10,9,10,10,8,8,9,10,10,10,9,11,9,10,11,11,11,11,10,9,11,9,9,11,11,10,8,11,11,11,9,10,10,11,10,11,11,9,11,10,9,11,10,10,10,10,9,11,10,11,10,9,9,10,11,9,8,10,11,11,10,10,11,9,11,10,11,11,10,11,9,9,8,10,8,9,11,9,8,10,10,9,11,10,11,10,11,9,11,8,10,11,11,11,11,10,10,11,11,11,11,10,11,11,10,9,8,10,10,9,11,10,11,11,11,9,9,9,11,11,11,10,10,9,9,10,9,11,11,11,11,8,10,11,10,11,11,10,11,11,9,9,9,10,9,11,9,11,11,11,11,11,10,11,11,10,11,10,11,11,9,11,10,11,10,9,10,9,10,10,11,11,11,11,9,10,9,10,11,11,10,11,11,11,11,11,11,10,11,11,10,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,6,5,9,9,10,10,6,7,9,9,10,10,10,10,5,10,8,10,8,10,10,8,8,10,9,10,10,10,10,5,8,9,10,10,10,10,8,10,10,10,10,10,10,10,9,10,10,10,10,10,10,9,9,10,10,10,10,10,10,9,9,8,9,10,10,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,8,10,10,10,10,10,10,10,10,10,10,10,10,10,6,8,8,10,10,10,8,10,10,10,10,10,10,10,10,5,8,8,10,10,10,9,9,10,10,10,10,10,10,10,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,2,5,5,6,6,7,7,8,8,8,8,4,6,6,7,7,8,7,8,8,8,8,4,6,6,7,7,7,7,8,8,8,8,6,7,7,7,7,8,8,8,8,8,9,6,7,7,7,7,8,8,8,8,9,9,7,7,7,8,8,8,8,9,9,9,9,7,7,7,8,8,8,8,9,9,9,9,8,8,8,8,8,9,9,9,9,9,9,8,8,8,8,8,9,9,9,9,9,9,8,8,8,9,8,9,9,9,9,9,9,8,8,8,9,9,9,9,9,9,9,9,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,5,5,8,8,10,10,12,12,4,7,7,8,8,9,9,12,11,14,13,4,7,7,7,8,9,10,11,11,13,12,5,8,8,9,9,11,11,12,13,15,14,5,7,8,9,9,11,11,13,13,17,15,8,9,10,11,11,12,13,17,14,17,16,8,10,9,11,11,12,12,13,15,15,17,10,11,11,12,13,14,15,15,16,16,17,9,11,11,12,12,14,15,17,15,15,16,11,14,12,14,15,16,15,16,16,16,15,11,13,13,14,14,15,15,16,16,15,16,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,2,4,4,6,6,7,7,8,8,8,8,4,6,5,7,7,8,8,8,8,8,8,4,5,6,7,7,8,8,8,8,8,8,6,7,7,8,8,8,8,9,9,9,9,6,7,7,8,8,8,8,9,9,9,9,7,8,8,8,8,9,9,9,10,9,10,7,8,8,8,8,9,9,9,9,10,9,8,8,8,9,9,10,10,10,10,10,10,8,8,8,9,9,9,9,10,10,10,10,8,8,8,9,9,9,10,10,10,10,10,8,8,8,9,9,10,10,10,10,10,10,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,4,8,8,4,8,8,5,11,9,8,12,11,8,12,11,5,10,11,8,11,12,8,11,12,4,11,11,11,14,13,10,13,13,8,14,13,12,14,16,12,16,15,8,14,14,13,16,14,12,15,16,4,11,11,10,14,13,11,14,14,8,15,14,12,15,15,12,14,16,8,14,14,11,16,15,12,15,13,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,4,4,6,6,7,7,9,9,4,4,4,6,6,8,8,9,9,4,4,4,6,6,7,7,9,9,6,6,6,7,7,8,8,10,9,6,6,6,7,7,8,8,9,10,7,8,7,8,8,9,9,10,10,7,8,8,8,8,9,9,10,10,9,9,9,10,10,10,10,11,11,9,9,9,10,10,10,10,11,11,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,1,4,4,7,7,7,7,9,9,4,6,6,8,8,8,8,10,10,4,5,6,8,8,8,8,10,10,7,8,8,9,9,9,9,11,11,7,8,8,9,9,9,9,11,11,7,8,8,10,9,11,11,12,11,7,8,8,9,9,11,11,12,12,9,10,10,11,11,12,12,13,12,9,10,10,11,11,12,12,12,13,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,4,5,5,8,8,6,6,7,9,9,6,6,6,9,9,9,10,9,11,11,9,9,10,11,11,6,7,7,10,9,7,7,8,9,10,7,7,8,10,10,10,10,10,10,12,9,9,10,11,12,6,7,7,9,9,7,8,7,10,10,7,8,7,10,10,9,10,9,12,11,10,10,9,12,10,9,10,10,12,11,10,10,10,12,12,9,10,10,12,12,12,11,12,13,13,11,11,12,12,13,9,10,10,11,12,9,10,10,12,12,10,10,10,12,12,11,12,11,14,13,11,12,12,14,13,5,7,7,10,10,7,8,8,10,10,7,8,7,10,10,10,10,10,12,12,10,10,10,12,12,6,8,7,10,10,7,7,9,10,11,8,9,9,11,10,10,10,11,11,13,10,10,11,12,13,6,8,8,10,10,7,9,8,11,10,8,9,9,10,11,10,11,10,13,11,10,11,10,12,12,10,11,10,12,11,10,10,10,12,13,10,11,11,13,12,11,11,13,11,14,12,12,13,14,14,9,10,10,12,13,10,11,10,13,12,10,11,11,12,13,11,12,11,14,12,12,13,13,15,14,5,7,7,10,10,7,7,8,10,10,7,8,8,10,10,10,10,10,11,12,10,10,10,12,12,7,8,8,10,10,8,9,8,11,10,7,8,9,10,11,10,11,11,12,12,10,10,11,11,13,7,7,8,10,10,8,8,9,10,11,7,9,7,11,10,10,11,11,13,12,11,11,10,13,11,9,10,10,12,12,10,11,11,13,12,10,10,11,12,12,12,13,13,14,14,11,11,12,12,14,10,10,11,12,12,10,11,11,12,13,10,10,10,13,12,12,13,13,15,14,12,13,10,14,11,8,10,10,12,12,10,11,10,13,13,9,10,10,12,12,12,13,13,15,14,11,12,12,13,13,9,10,10,13,12,10,10,11,13,13,10,11,10,13,12,12,12,13,14,15,12,13,12,15,13,9,10,10,12,13,10,11,10,13,12,10,10,11,12,13,12,14,12,15,13,12,12,13,14,15,11,12,11,14,13,11,11,12,14,15,12,13,12,15,14,13,11,15,11,16,13,14,14,16,15,11,12,12,14,14,11,12,11,14,13,12,12,13,14,15,13,14,12,16,12,14,14,14,15,15,8,10,10,12,12,9,10,10,12,12,10,10,11,13,13,11,12,12,13,13,12,13,13,14,15,9,10,10,13,12,10,11,11,13,12,10,10,11,13,13,12,13,12,15,14,12,12,13,13,16,9,9,10,12,13,10,10,11,12,13,10,11,10,13,13,12,12,13,13,15,13,13,12,15,13,11,12,12,14,14,12,13,12,15,14,11,11,12,13,14,14,14,14,16,15,13,12,15,12,16,11,11,12,13,14,12,13,13,14,15,10,12,11,14,13,14,15,14,16,16,13,14,11,15,11,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,5,8,8,6,7,7,9,9,5,7,7,9,9,9,10,9,11,11,9,9,10,11,11,6,8,8,10,10,8,9,10,11,11,8,9,10,11,11,10,11,11,12,13,10,11,11,13,13,6,8,8,10,10,8,10,9,11,11,8,10,9,11,11,10,11,11,13,13,10,11,11,13,12,9,11,11,14,13,10,12,12,15,14,10,12,11,14,13,12,13,13,15,15,12,13,13,16,14,9,11,11,13,14,10,11,12,14,14,10,12,12,14,15,12,13,13,14,15,12,13,14,15,16,5,8,8,11,11,8,10,10,12,12,8,10,10,12,12,11,12,12,14,14,11,12,12,14,14,8,10,10,12,12,9,11,12,12,13,10,12,12,13,13,12,12,13,14,15,11,13,13,15,15,7,10,10,12,12,9,12,11,13,12,10,11,12,13,13,12,13,12,15,14,11,12,13,15,15,10,12,12,15,14,11,13,13,16,15,11,13,13,16,15,14,13,14,15,16,13,15,15,17,17,10,12,12,14,15,11,12,12,15,15,11,13,13,15,16,13,15,13,16,15,13,15,15,16,17,5,8,8,11,11,8,10,10,12,12,8,10,10,12,12,11,12,12,14,14,11,12,12,14,14,7,10,10,12,12,10,12,12,14,13,9,11,12,12,13,12,13,13,15,15,12,12,13,13,15,7,10,10,12,13,10,11,12,13,13,10,12,11,13,13,11,13,13,15,15,12,13,12,15,14,9,12,12,15,14,11,13,13,15,15,11,12,13,15,15,13,14,14,17,19,13,13,14,16,16,10,12,12,14,15,11,13,13,15,16,11,13,12,16,15,13,15,15,17,18,14,15,13,16,15,8,11,11,15,14,10,12,12,16,15,10,12,12,16,16,14,15,15,18,17,13,14,15,16,18,9,12,12,15,15,11,12,14,16,17,11,13,13,16,15,15,15,15,17,18,14,15,16,17,17,9,12,12,15,15,11,14,13,16,16,11,13,13,16,16,15,16,15,17,18,14,16,15,17,16,12,14,14,17,16,12,14,15,18,17,13,15,15,17,17,15,15,18,16,20,15,16,17,18,18,11,14,14,16,17,13,15,14,18,17,13,15,15,17,17,15,17,15,18,17,15,17,16,19,18,8,11,11,14,15,10,12,12,15,15,10,12,12,16,16,13,14,14,17,16,14,15,15,17,17,9,12,12,15,16,11,13,13,16,16,11,12,13,16,16,14,16,15,20,17,14,16,16,17,17,9,12,12,15,16,11,13,13,16,17,11,13,13,17,16,14,15,15,17,18,15,15,15,18,18,11,14,14,17,16,13,15,15,17,17,13,14,14,18,17,15,16,16,18,19,15,15,17,17,19,11,14,14,16,17,13,15,14,17,19,13,15,14,18,17,15,17,16,18,18,15,17,15,18,16,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,3,4,4,5,6,6,5,6,6,5,6,6,6,7,8,6,7,8,5,6,6,6,8,7,6,8,7,5,6,6,6,8,8,6,8,8,6,8,8,7,7,10,8,9,9,6,8,8,7,9,8,8,9,10,5,6,6,6,8,8,7,8,8,6,8,8,8,10,9,7,8,9,6,8,8,8,9,9,7,10,8,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,4,5,7,7,5,7,7,5,8,7,7,10,10,7,9,10,5,7,8,7,10,9,7,10,10,5,8,8,8,10,10,8,10,10,7,10,10,10,11,12,10,12,13,7,10,10,9,13,11,10,12,13,5,8,8,8,10,10,8,10,10,7,10,10,10,12,12,9,11,12,7,10,11,10,12,12,10,13,11,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,5,7,10,9,11,10,15,11,13,16,6,4,6,6,7,7,10,9,12,16,10,6,5,6,6,7,10,11,16,16,9,6,7,6,7,7,10,8,14,16,11,6,5,4,5,6,8,9,15,16,9,6,6,5,6,6,9,8,14,16,12,7,6,6,5,6,6,7,13,16,8,6,7,6,5,5,4,4,11,16,9,8,9,9,7,7,6,5,13,16,14,14,16,15,16,15,16,16,16,16,0,0,0,0,2,0,0,0,64,0,0,0,136,239,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,226,4,0,0,0,0,0,0,0,0,0,0,0,0,0,232,226,4,0,0,0,0,0,0,0,0,0,0,0,0,0,16,227,4,0,0,0,0,0,0,0,0,0,0,0,0,0,56,227,4,0,0,0,0,0,0,0,0,0,0,0,0,0,96,227,4,0,0,0,0,0,136,227,4,0,176,227,4,0,0,0,0,0,0,0,0,0,216,227,4,0,0,228,4,0,40,228,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,81,0,0,0,32,239,4,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,120,239,4,0,0,0,0,0,4,0,0,0,81,0,0,0,184,238,4,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,16,239,4,0,0,0,0,0,4,0,0,0,113,2,0,0,40,236,4,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,160,238,4,0,0,0,0,0,4,0,0,0,113,2,0,0,152,233,4,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,16,236,4,0,0,0,0,0,2,0,0,0,81,0,0,0,24,233,4,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,112,233,4,0,0,0,0,0,2,0,0,0,169,0,0,0,48,232,4,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,224,232,4,0,0,0,0,0,2,0,0,0,25,0,0,0,248,231,4,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,24,232,4,0,0,0,0,0,4,0,0,0,81,0,0,0,144,231,4,0,1,0,0,0,0,176,19,225,0,176,19,97,2,0,0,0,0,0,0,0,232,231,4,0,0,0,0,0,2,0,0,0,225,0,0,0,104,230,4,0,1,0,0,0,0,96,242,224,0,0,149,96,4,0,0,0,0,0,0,0,80,231,4,0,0,0,0,0,2,0,0,0,185,1,0,0,80,228,4,0,1,0,0,0,0,0,116,224,0,0,16,96,5,0,0,0,0,0,0,0,16,230,4,0,0,0,0,0,1,6,6,7,8,7,7,10,9,10,9,11,10,9,11,10,9,9,9,9,10,6,8,7,9,9,8,8,10,10,9,11,11,12,12,10,9,11,9,12,10,9,6,9,8,9,12,8,8,11,9,11,11,12,11,12,12,10,11,11,10,10,11,7,10,9,9,9,9,9,10,9,10,9,10,10,12,10,10,10,11,12,10,10,7,9,9,9,10,9,9,10,10,9,9,9,11,11,10,10,10,10,9,9,12,7,9,10,9,11,9,10,9,10,11,11,11,10,11,12,9,12,11,10,10,10,7,9,9,9,9,10,12,10,9,11,12,10,11,12,12,11,9,10,11,10,11,7,9,10,10,11,10,9,10,11,11,11,10,12,12,12,11,11,10,11,11,12,8,9,10,12,11,10,10,12,12,12,12,12,10,11,11,9,11,10,12,11,11,8,9,10,10,11,12,11,11,10,10,10,12,12,12,9,10,12,12,12,12,12,8,10,11,10,10,12,9,11,12,12,11,12,12,12,12,10,12,10,10,10,10,8,12,11,11,11,10,10,11,12,12,12,12,11,12,12,12,11,11,11,12,10,9,10,10,12,10,12,10,12,12,10,10,10,11,12,12,12,11,12,12,12,11,10,11,12,12,12,11,12,12,11,12,12,11,12,12,12,12,11,12,12,10,10,10,10,11,11,12,11,12,12,12,12,12,12,12,11,12,11,10,11,11,12,11,11,9,10,10,10,12,10,10,11,9,11,12,11,12,11,12,12,10,11,10,12,9,9,9,12,11,10,11,10,12,10,12,10,12,12,12,11,11,11,11,11,10,9,10,10,11,10,11,11,12,11,10,11,12,12,12,11,11,9,12,10,12,9,10,12,10,10,11,10,11,11,12,11,10,11,10,11,11,11,11,12,11,11,10,9,10,10,10,9,11,11,10,9,12,10,11,12,11,12,12,11,12,11,12,11,10,11,10,12,11,12,11,12,11,12,10,11,10,10,12,11,10,11,11,11,10,0,0,0,0,0,0,0,10,0,0,0,9,0,0,0,11,0,0,0,8,0,0,0,12,0,0,0,7,0,0,0,13,0,0,0,6,0,0,0,14,0,0,0,5,0,0,0,15,0,0,0,4,0,0,0,16,0,0,0,3,0,0,0,17,0,0,0,2,0,0,0,18,0,0,0,1,0,0,0,19,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,1,5,5,6,5,9,10,11,11,10,10,10,10,10,10,5,8,8,8,10,10,10,10,10,10,10,10,10,10,10,5,8,9,9,9,10,10,10,10,10,10,10,10,10,10,5,10,8,10,10,10,10,10,10,10,10,10,10,10,10,4,8,9,10,10,10,10,10,10,10,10,10,10,10,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,1,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,5,6,6,4,6,6,6,6,4,6,6,6,6,6,6,6,7,7,6,6,6,7,7,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,7,7,10,10,12,12,13,13,18,17,3,6,6,9,9,11,11,13,13,14,14,18,17,3,6,6,9,9,11,11,13,13,14,14,17,18,7,9,9,11,11,13,13,14,14,15,15,0,0,7,9,9,11,11,13,13,14,14,15,16,19,18,10,11,11,13,13,14,14,16,15,17,18,0,0,10,11,11,13,13,14,14,15,15,16,18,0,0,11,13,13,14,14,15,15,17,17,0,19,0,0,11,13,13,14,14,14,15,16,18,0,19,0,0,13,14,14,15,15,18,17,18,18,0,19,0,0,13,14,14,15,16,16,16,18,18,19,0,0,0,16,17,17,0,17,19,19,0,19,0,0,0,0,16,19,16,17,18,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,4,4,7,7,7,7,9,9,4,6,6,8,8,8,8,9,9,4,6,6,8,8,8,8,9,9,7,8,8,9,9,9,9,11,10,7,8,8,9,9,9,9,10,11,7,8,8,9,9,10,10,11,11,7,8,8,9,9,10,10,11,11,9,9,9,10,10,11,11,12,12,9,9,9,10,10,11,11,12,12,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,3,5,5,8,8,6,6,6,9,9,6,6,6,9,9,9,10,9,11,11,9,9,9,11,11,6,7,7,10,10,7,7,8,10,10,7,7,8,10,10,10,10,10,11,12,9,10,10,11,12,6,7,7,10,10,7,8,7,10,10,7,8,7,10,10,10,11,10,12,11,10,10,10,13,10,9,10,10,12,12,10,11,10,14,12,9,11,11,13,13,11,12,13,13,13,11,12,12,15,13,9,10,10,12,13,9,11,10,12,13,10,10,11,12,13,11,12,12,12,13,11,12,12,13,13,5,7,7,10,10,7,8,8,10,10,7,8,8,10,10,10,11,10,12,13,10,10,11,12,12,6,8,8,11,10,7,8,9,10,12,8,9,9,11,11,11,10,11,11,12,10,11,11,13,12,7,8,8,10,11,8,9,8,11,10,8,9,9,11,11,10,12,10,13,11,10,11,11,13,13,10,11,10,14,13,10,10,11,13,13,10,12,11,14,13,12,11,13,12,13,13,12,13,14,14,10,11,11,13,13,10,11,10,12,13,10,12,12,12,14,12,12,12,14,12,12,13,12,17,15,5,7,7,10,10,7,8,8,10,10,7,8,8,11,10,10,10,11,12,12,10,11,11,12,13,6,8,8,11,10,8,9,9,11,11,7,8,9,10,11,11,11,11,12,12,10,10,11,12,13,6,8,8,10,11,8,9,9,11,11,7,9,7,11,10,10,12,12,13,13,11,11,10,13,11,9,11,10,14,13,11,11,11,15,13,10,10,11,13,13,12,13,13,14,14,12,11,12,12,13,10,11,11,12,13,10,11,12,13,13,10,11,10,13,12,12,12,13,14,0,12,13,11,13,11,8,10,10,13,13,10,11,11,14,13,10,11,11,13,12,13,14,14,14,15,12,12,12,15,14,9,11,10,13,12,10,10,11,13,14,11,11,11,15,12,13,12,14,15,16,13,13,13,14,13,9,11,11,12,12,10,12,11,13,13,10,11,11,13,14,13,13,13,15,15,13,13,14,17,15,11,12,12,14,14,10,11,12,13,15,12,13,13,0,15,13,11,14,12,16,14,16,14,0,15,11,12,12,14,16,11,13,12,16,15,12,13,13,14,15,12,14,12,15,13,15,14,14,16,16,8,10,10,13,13,10,11,10,13,14,10,11,11,13,13,13,13,12,14,14,14,13,13,16,17,9,10,10,12,14,10,12,11,14,13,10,11,12,13,14,12,12,12,15,15,13,13,13,14,14,9,10,10,13,13,10,11,12,12,14,10,11,10,13,13,13,13,13,14,16,13,13,13,14,14,11,12,13,15,13,12,14,13,14,16,12,12,13,13,14,13,14,14,17,15,13,12,17,13,16,11,12,13,14,15,12,13,14,14,17,11,12,11,14,14,13,16,14,16,0,14,15,11,15,11,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,5,7,7,6,7,7,8,8,6,7,8,8,8,8,9,9,11,11,8,9,9,11,11,6,9,8,10,10,8,10,10,11,11,8,10,10,11,11,10,11,10,13,12,9,11,10,13,13,6,8,9,10,10,8,10,10,11,11,8,10,10,11,11,9,10,11,13,12,10,10,11,12,12,8,11,11,14,13,10,12,11,15,13,9,12,11,15,14,12,14,13,16,14,12,13,13,17,14,8,11,11,13,14,9,11,12,14,15,10,11,12,13,15,11,13,13,14,16,12,13,14,14,16,5,9,9,11,11,9,11,11,12,12,8,11,11,12,12,11,12,12,15,14,10,12,12,15,15,8,11,11,13,12,10,12,12,13,13,10,12,12,14,13,12,12,13,14,15,11,13,13,17,16,7,11,11,13,13,10,12,12,14,13,10,12,12,13,14,12,13,12,15,14,11,13,13,15,14,9,12,12,16,15,11,13,13,17,16,10,13,13,16,16,13,14,15,15,16,13,15,14,19,17,9,12,12,14,16,11,13,13,15,16,10,13,13,17,16,13,14,13,17,15,12,15,15,16,17,5,9,9,11,11,8,11,11,13,12,9,11,11,12,12,10,12,12,14,15,11,12,12,14,14,7,11,10,13,12,10,12,12,14,13,10,11,12,13,13,11,13,13,15,16,12,12,13,15,15,7,11,11,13,13,10,13,13,14,14,10,12,12,13,13,11,13,13,16,15,12,13,13,15,14,9,12,12,15,15,10,13,13,17,16,11,12,13,15,15,12,15,14,18,18,13,14,14,16,17,9,12,12,15,16,10,13,13,15,16,11,13,13,15,16,13,15,15,17,17,13,15,14,16,15,7,11,11,15,16,10,13,12,16,17,10,12,13,15,17,15,16,16,18,17,13,15,15,17,18,8,12,12,16,16,11,13,14,17,18,11,13,13,18,16,15,17,16,17,19,14,15,15,17,16,8,12,12,16,15,11,14,13,18,17,11,13,14,18,17,15,16,16,18,17,13,16,16,18,18,11,15,14,18,17,13,14,15,18,0,12,15,15,0,17,17,16,17,17,18,14,16,18,18,0,11,14,14,17,0,12,15,14,17,19,12,15,14,18,0,15,18,16,0,17,14,18,16,18,0,7,11,11,16,15,10,12,12,18,16,10,13,13,16,15,13,15,14,17,17,14,16,16,19,18,8,12,12,16,16,11,13,13,18,16,11,13,14,17,16,14,15,15,19,18,15,16,16,0,19,8,12,12,16,17,11,13,13,17,17,11,14,13,17,17,13,15,15,17,19,15,17,17,19,0,11,14,15,19,17,12,15,16,18,18,12,14,15,19,17,14,16,17,0,18,16,16,19,17,0,11,14,14,18,19,12,15,14,17,17,13,16,14,17,16,14,17,16,18,18,15,18,15,0,18,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,4,4,5,6,6,5,6,6,5,7,7,7,8,9,7,8,9,5,7,7,7,9,8,7,9,7,4,7,7,7,9,9,7,8,8,6,9,8,7,8,11,9,11,10,6,8,9,8,11,8,9,10,11,4,7,7,7,8,8,7,9,9,6,9,8,9,11,10,8,8,11,6,8,9,9,10,11,8,11,8,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,4,5,7,7,5,7,8,5,8,8,8,10,10,8,10,11,5,8,8,8,10,10,8,10,10,4,9,9,9,12,11,8,11,11,8,12,11,10,12,14,10,13,13,7,11,11,10,14,12,11,14,14,4,9,9,8,11,11,9,11,12,7,11,11,10,13,14,10,12,14,8,11,12,10,14,14,10,13,12,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,5,8,7,14,8,9,19,5,2,5,5,9,6,9,19,8,4,5,7,8,9,13,19,7,4,6,5,9,6,9,19,12,8,7,9,10,11,13,19,8,5,8,6,9,6,7,19,8,8,10,7,7,4,5,19,12,17,19,15,18,13,11,18,9,0,0,0,3,0,0,0,3,0,0,0,0,0,0,0,9,0,0,0,9,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,112,199,64,0,0,0,0,0,136,211,64,0,0,0,0,0,124,229,64,0,0,0,0,0,255,244,64,200,47,1,0,32,240,4,0,200,47,1,0,64,240,4,0,200,47,1,0,128,240,4,0,2,0,0,0,0,0,0,0,32,0,0,0,24,73,1,0,248,45,5,0,248,45,5,0,32,46,5,0,32,46,5,0,2,0,0,0,0,0,0,0,32,0,0,0,24,73,1,0,32,5,5,0,32,5,5,0,72,5,5,0,72,5,5,0,2,0,0,0,0,0,0,0,32,0,0,0,24,73,1,0,8,6,5,0,8,6,5,0,72,5,5,0,72,5,5,0,2,0,0,0,0,0,0,0,32,0,0,0,224,163,2,0,192,240,4,0,192,240,4,0,232,240,4,0,232,240,4,0,2,0,0,0,0,0,0,0,32,0,0,0,224,163,2,0,168,241,4,0,168,241,4,0,232,240,4,0,232,240,4,0,2,0,0,0,100,0,0,0,184,4,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,0,0,0,0,0,0,0,0,0,56,242,4,0,0,0,0,0,0,0,0,0,0,0,0,0,96,242,4,0,0,0,0,0,0,0,0,0,0,0,0,0,136,242,4,0,0,0,0,0,0,0,0,0,0,0,0,0,176,242,4,0,0,0,0,0,216,242,4,0,0,243,4,0,0,0,0,0,0,0,0,0,40,243,4,0,80,243,4,0,0,0,0,0,0,0,0,0,120,243,4,0,160,243,4,0,0,0,0,0,0,0,0,0,200,243,4,0,240,243,4,0,0,0,0,0,0,0,0,0,24,244,4,0,64,244,4,0,104,244,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,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,100,0,0,0,208,241,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,0,0,0,4,7,9,9,9,8,9,10,13,16,5,4,5,6,7,7,8,9,12,16,6,5,5,5,7,7,9,10,12,15,7,6,5,4,5,6,8,9,10,13,8,7,7,5,5,5,7,9,10,12,7,7,7,6,5,5,6,7,10,12,8,8,8,7,7,5,5,6,9,11,8,9,9,8,8,6,6,5,8,11,10,11,12,12,11,9,9,8,9,12,13,14,15,15,14,12,12,11,11,13,0,0,0,0,4,0,0,0,81,0,0,0,80,4,5,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,168,4,5,0,0,0,0,0,4,0,0,0,113,2,0,0,192,1,5,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,56,4,5,0,0,0,0,0,2,0,0,0,81,0,0,0,64,1,5,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,152,1,5,0,0,0,0,0,2,0,0,0,33,1,0,0,208,255,4,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,248,0,5,0,0,0,0,0,4,0,0,0,81,0,0,0,104,255,4,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,192,255,4,0,0,0,0,0,2,0,0,0,121,0,0,0,184,254,4,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,56,255,4,0,0,0,0,0,2,0,0,0,169,0,0,0,208,253,4,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,128,254,4,0,0,0,0,0,2,0,0,0,25,0,0,0,152,253,4,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,184,253,4,0,0,0,0,0,2,0,0,0,169,0,0,0,176,252,4,0,1,0,0,0,0,128,208,224,0,0,118,96,4,0,0,0,0,0,0,0,96,253,4,0,0,0,0,0,2,0,0,0,121,0,0,0,0,252,4,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,128,252,4,0,0,0,0,0,2,0,0,0,225,0,0,0,216,250,4,0,1,0,0,0,0,96,242,224,0,0,149,96,4,0,0,0,0,0,0,0,192,251,4,0,0,0,0,0,2,0,0,0,185,1,0,0,192,248,4,0,1,0,0,0,0,0,116,224,0,0,16,96,5,0,0,0,0,0,0,0,128,250,4,0,0,0,0,0,2,0,0,0,33,1,0,0,80,247,4,0,1,0,0,0,0,24,157,225,0,24,61,97,5,0,0,0,0,0,0,0,120,248,4,0,0,0,0,0,2,0,0,0,105,1,0,0,144,245,4,0,1,0,0,0,0,144,27,225,0,128,184,96,5,0,0,0,0,0,0,0,0,247,4,0,0,0,0,0,1,0,0,0,49,0,0,0,144,244,4,0,1,0,0,0,0,0,152,224,0,0,16,96,6,0,0,0,0,0,0,0,200,244,4,0,0,0,0,0,2,4,4,4,4,5,5,5,5,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,24,0,0,0,23,0,0,0,25,0,0,0,22,0,0,0,26,0,0,0,21,0,0,0,27,0,0,0,20,0,0,0,28,0,0,0,19,0,0,0,29,0,0,0,18,0,0,0,30,0,0,0,17,0,0,0,31,0,0,0,16,0,0,0,32,0,0,0,15,0,0,0,33,0,0,0,14,0,0,0,34,0,0,0,13,0,0,0,35,0,0,0,12,0,0,0,36,0,0,0,11,0,0,0,37,0,0,0,10,0,0,0,38,0,0,0,9,0,0,0,39,0,0,0,8,0,0,0,40,0,0,0,7,0,0,0,41,0,0,0,6,0,0,0,42,0,0,0,5,0,0,0,43,0,0,0,4,0,0,0,44,0,0,0,3,0,0,0,45,0,0,0,2,0,0,0,46,0,0,0,1,0,0,0,47,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,1,4,4,7,7,7,7,7,7,8,8,10,9,11,10,13,11,14,13,6,6,6,8,8,8,8,8,7,9,8,11,9,13,11,14,12,14,13,5,6,6,8,8,8,8,8,8,9,9,11,11,13,11,14,13,15,15,17,8,8,8,8,9,9,9,8,11,9,12,10,13,11,14,12,14,13,17,8,8,8,8,9,9,9,9,10,10,11,11,13,13,13,14,16,15,17,12,12,8,8,9,9,10,10,11,11,12,11,13,12,13,12,14,13,16,12,12,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,17,17,17,9,9,9,9,11,11,12,12,12,13,13,13,16,14,14,14,17,17,17,9,8,9,8,11,10,12,12,13,13,14,14,15,15,16,16,17,17,17,12,12,10,10,11,12,12,13,13,14,13,15,15,14,16,15,17,17,17,12,12,10,8,12,9,13,12,14,14,15,14,15,16,16,16,17,17,17,17,17,11,11,12,12,14,14,14,16,15,16,15,16,15,17,17,17,17,17,17,11,9,12,10,13,11,15,14,16,16,17,16,16,15,17,17,17,17,17,15,15,12,12,14,14,15,16,16,15,16,16,17,17,17,17,17,17,17,14,14,12,10,14,11,15,12,17,16,15,16,17,16,17,17,17,17,17,17,17,13,13,14,14,14,16,17,17,16,17,17,17,17,17,17,17,17,17,17,13,9,13,12,15,13,16,16,17,17,17,17,17,17,17,17,17,17,17,15,17,14,14,15,16,16,17,16,17,16,17,17,17,17,17,17,17,17,17,17,14,13,15,16,16,17,16,17,17], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+315120); +/* memory initializer */ allocate([17,0,0,0,0,0,0,0,9,0,0,0,8,0,0,0,10,0,0,0,7,0,0,0,11,0,0,0,6,0,0,0,12,0,0,0,5,0,0,0,13,0,0,0,4,0,0,0,14,0,0,0,3,0,0,0,15,0,0,0,2,0,0,0,16,0,0,0,1,0,0,0,17,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,1,4,3,10,8,10,10,10,10,10,10,10,10,10,10,10,10,6,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,6,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,2,4,4,6,6,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,11,11,11,7,7,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,10,11,10,7,7,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,11,11,11,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,11,11,11,8,8,8,8,9,9,9,9,9,9,9,9,10,9,10,10,10,10,11,11,11,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,11,11,11,8,8,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,11,11,11,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,10,0,0,0,9,0,0,0,11,0,0,0,8,0,0,0,12,0,0,0,7,0,0,0,13,0,0,0,6,0,0,0,14,0,0,0,5,0,0,0,15,0,0,0,4,0,0,0,16,0,0,0,3,0,0,0,17,0,0,0,2,0,0,0,18,0,0,0,1,0,0,0,19,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,1,4,4,6,6,7,7,7,7,8,8,9,9,10,10,6,6,6,8,8,9,9,8,8,9,9,10,10,11,11,6,5,5,8,7,9,9,8,8,9,9,10,10,11,11,20,8,8,8,8,9,9,9,9,10,10,11,10,12,11,20,8,8,8,8,9,9,9,9,10,10,11,11,12,12,20,12,12,9,9,10,10,10,10,11,11,12,12,13,12,20,13,13,9,9,10,10,10,10,11,11,12,12,13,13,20,20,20,9,9,9,9,10,10,11,11,12,12,13,12,20,20,20,9,9,9,8,10,10,12,11,12,12,13,13,20,20,20,13,13,10,10,11,11,12,12,13,13,13,13,20,20,20,13,13,10,10,11,10,12,11,13,13,14,14,20,20,20,20,20,11,11,11,11,12,12,13,13,14,14,20,20,20,20,20,11,10,11,11,13,11,13,13,14,14,20,20,21,21,21,14,14,11,12,13,13,13,13,14,14,21,21,21,21,21,15,15,12,11,13,12,14,13,15,14,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,2,4,4,6,6,7,7,7,7,7,7,9,9,9,6,7,7,7,7,7,8,8,9,9,9,6,6,7,7,7,7,8,8,9,9,9,7,7,7,7,8,8,8,8,9,9,9,7,7,7,7,8,8,8,8,9,9,9,7,7,7,7,8,8,8,8,9,9,9,7,7,7,7,7,7,8,8,9,9,9,7,7,8,8,7,7,8,8,9,9,9,9,9,8,8,7,7,8,8,9,9,9,9,9,8,8,7,7,8,8,9,9,9,9,9,7,7,7,7,8,8,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,7,7,8,8,8,8,10,9,10,10,5,5,5,7,7,9,9,10,10,11,10,12,11,6,5,5,7,7,9,9,10,10,11,11,12,12,20,7,7,7,7,9,9,10,10,11,11,12,12,20,7,7,7,7,9,9,11,10,12,11,12,12,20,11,11,8,8,10,10,11,11,12,12,13,13,20,12,12,8,8,9,9,11,11,12,12,13,13,20,20,21,10,10,10,10,11,11,12,12,13,13,21,21,21,10,10,10,10,11,11,12,12,13,13,21,21,21,14,14,11,11,12,12,13,13,13,14,21,21,21,16,15,11,11,12,11,13,13,14,14,21,21,21,21,21,13,13,12,12,13,13,14,14,21,21,21,21,21,13,13,12,12,13,13,14,14,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,3,3,5,5,6,6,6,5,5,6,6,6,5,5,6,6,6,5,5,6,6,6,5,5,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,6,6,8,7,8,8,9,9,10,10,5,5,5,7,7,9,9,9,9,11,11,12,12,6,5,5,7,7,9,9,10,9,11,11,12,12,0,7,7,7,7,9,9,10,10,11,11,12,12,0,7,7,7,7,9,9,10,10,11,11,12,12,0,11,11,8,8,10,10,11,11,12,12,13,13,0,12,12,9,9,10,10,11,11,12,12,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,3,3,6,6,6,6,7,7,7,7,11,10,10,6,6,7,7,8,8,8,8,10,10,10,6,6,7,7,8,8,8,8,11,11,11,7,7,8,8,8,8,9,9,11,11,11,6,7,8,8,8,8,9,9,11,11,11,7,7,8,8,8,8,8,8,11,11,11,7,7,8,8,8,8,9,9,11,11,11,8,8,8,8,8,8,8,8,11,11,11,11,11,8,8,8,8,8,8,12,11,11,11,11,8,8,8,8,8,8,12,11,11,11,11,7,7,8,8,8,8,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,5,7,7,6,7,7,4,6,6,10,11,10,10,10,11,4,6,6,10,10,11,10,11,10,5,10,10,9,12,11,10,12,12,7,10,10,12,12,12,12,13,13,7,11,10,11,12,12,12,13,13,6,11,10,10,12,12,11,12,12,7,11,10,12,13,13,12,12,12,7,10,11,12,13,13,12,12,12,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,3,3,5,5,6,6,6,6,7,7,8,8,8,8,9,9,0,0,0,6,6,7,7,8,8,8,8,9,9,10,10,11,10,0,0,0,6,6,7,7,8,8,8,8,9,9,10,10,10,10,0,0,0,6,6,8,8,9,9,9,9,10,10,11,11,11,11,0,0,0,7,6,8,8,9,9,9,9,10,10,11,11,11,11,0,0,0,7,7,8,8,9,9,10,10,11,11,11,11,12,12,0,0,0,7,7,8,8,9,9,10,10,11,11,11,11,12,12,0,0,0,7,8,8,8,9,9,10,10,11,11,12,12,13,13,0,0,0,0,0,8,8,9,9,10,10,11,11,12,12,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,3,3,5,5,7,7,8,8,0,0,0,6,6,8,8,9,9,0,0,0,6,6,8,8,9,9,0,0,0,7,7,8,9,10,10,0,0,0,7,7,9,9,10,10,0,0,0,8,8,9,9,11,11,0,0,0,7,7,9,9,11,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,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,2,4,4,7,7,0,0,0,8,8,0,0,0,8,8,0,0,0,8,8,0,0,0,8,8,4,4,4,8,7,0,0,0,8,8,0,0,0,8,8,0,0,0,9,9,0,0,0,9,9,4,4,4,7,8,0,0,0,8,8,0,0,0,8,8,0,0,0,9,9,0,0,0,9,9,7,8,8,10,9,0,0,0,12,11,0,0,0,11,12,0,0,0,14,13,0,0,0,14,14,7,8,8,9,10,0,0,0,11,12,0,0,0,11,11,0,0,0,14,14,0,0,0,14,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,11,11,0,0,0,12,11,0,0,0,12,12,0,0,0,13,12,0,0,0,13,13,8,8,8,11,11,0,0,0,11,11,0,0,0,12,12,0,0,0,13,13,0,0,0,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,9,8,12,11,0,0,0,12,12,0,0,0,12,11,0,0,0,13,13,0,0,0,13,13,8,8,8,11,12,0,0,0,11,12,0,0,0,11,12,0,0,0,13,14,0,0,0,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,9,9,14,14,0,0,0,13,13,0,0,0,13,13,0,0,0,13,12,0,0,0,13,13,8,9,9,14,14,0,0,0,13,13,0,0,0,13,13,0,0,0,12,13,0,0,0,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,9,9,14,14,0,0,0,13,13,0,0,0,13,13,0,0,0,13,13,0,0,0,13,12,8,9,9,14,14,0,0,0,13,13,0,0,0,13,13,0,0,0,13,13,0,0,0,12,12,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,3,3,0,0,0,0,0,0,4,5,5,0,0,0,0,0,0,4,5,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,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,2,0,0,0,0,0,0,0,7,10,12,11,12,13,15,16,18,15,10,8,8,8,9,10,12,13,14,17,10,7,7,7,7,8,10,12,15,18,10,7,7,5,5,6,8,10,13,15,10,7,6,5,4,4,6,9,12,15,11,7,7,5,4,3,4,7,11,13,12,9,8,7,5,4,4,5,10,13,11,11,11,9,7,5,5,5,9,12,13,12,13,12,10,8,8,7,9,13,14,14,14,14,13,11,11,10,10,13,0,0,0,0,2,0,0,0,100,0,0,0,144,45,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,0,0,0,0,0,0,0,0,0,152,6,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,192,6,5,0,0,0,0,0,0,0,0,0,0,0,0,0,232,6,5,0,0,0,0,0,0,0,0,0,0,0,0,0,16,7,5,0,0,0,0,0,0,0,0,0,0,0,0,0,56,7,5,0,0,0,0,0,96,7,5,0,136,7,5,0,0,0,0,0,0,0,0,0,176,7,5,0,216,7,5,0,0,0,0,0,0,0,0,0,0,8,5,0,40,8,5,0,80,8,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,2,0,0,0,100,0,0,0,48,6,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,2,5,20,7,10,7,8,10,11,11,4,2,20,5,8,6,7,9,10,10,20,20,20,20,19,19,19,19,19,19,7,5,19,6,10,7,9,11,13,17,11,8,19,10,7,7,8,10,11,15,7,5,19,7,7,5,6,9,11,16,7,6,19,8,7,6,6,7,9,13,9,9,19,11,9,8,6,7,8,13,12,14,19,16,13,10,9,8,9,13,14,17,19,18,18,17,12,11,11,13,0,0,0,0,8,0,0,0,161,25,0,0,216,19,5,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,128,45,5,0,0,0,0,0,4,0,0,0,113,2,0,0,72,17,5,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,192,19,5,0,0,0,0,0,2,0,0,0,81,0,0,0,200,16,5,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,32,17,5,0,0,0,0,0,2,0,0,0,81,0,0,0,72,16,5,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,160,16,5,0,0,0,0,0,2,0,0,0,33,1,0,0,216,14,5,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,0,16,5,0,0,0,0,0,4,0,0,0,81,0,0,0,112,14,5,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,200,14,5,0,0,0,0,0,2,0,0,0,121,0,0,0,192,13,5,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,64,14,5,0,0,0,0,0,2,0,0,0,169,0,0,0,216,12,5,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,136,13,5,0,0,0,0,0,2,0,0,0,25,0,0,0,160,12,5,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,192,12,5,0,0,0,0,0,2,0,0,0,169,0,0,0,184,11,5,0,1,0,0,0,0,136,93,225,0,176,19,97,4,0,0,0,0,0,0,0,104,12,5,0,0,0,0,0,2,0,0,0,225,0,0,0,144,10,5,0,1,0,0,0,0,96,242,224,0,0,149,96,4,0,0,0,0,0,0,0,120,11,5,0,0,0,0,0,2,0,0,0,185,1,0,0,120,8,5,0,1,0,0,0,0,0,116,224,0,0,16,96,5,0,0,0,0,0,0,0,56,10,5,0,0,0,0,0,1,4,4,6,6,7,7,8,7,8,8,9,9,9,9,10,10,10,9,10,10,11,12,12,8,8,8,8,9,9,9,9,10,10,10,10,10,11,11,10,12,11,11,13,11,7,7,8,8,8,8,9,9,9,10,10,10,10,9,10,10,11,11,12,11,11,8,8,8,8,9,9,10,10,10,10,11,11,11,11,11,11,11,12,11,12,12,8,8,9,9,9,9,9,10,10,10,10,10,10,11,11,11,11,11,11,12,11,9,9,9,9,10,10,10,10,11,10,11,11,11,11,11,11,12,12,12,12,11,9,9,9,9,10,10,10,10,11,11,11,11,11,11,11,11,11,12,12,12,13,9,10,10,9,11,10,10,10,10,11,11,11,11,11,10,11,12,11,12,12,11,12,11,10,9,10,10,11,10,11,11,11,11,11,11,11,11,11,12,12,11,12,12,12,10,10,10,11,10,11,11,11,11,11,11,11,11,11,11,11,12,13,12,12,11,9,10,10,11,11,10,11,11,11,12,11,11,11,11,11,12,12,13,13,12,13,10,10,12,10,11,11,11,11,11,11,11,11,11,12,12,11,13,12,12,12,12,13,12,11,11,11,11,11,11,12,11,12,11,11,11,11,12,12,13,12,11,12,12,11,11,11,11,11,12,11,11,11,11,12,11,11,12,11,12,13,13,12,12,12,12,11,11,11,11,11,12,11,11,12,11,12,11,11,11,11,13,12,12,12,12,13,11,11,11,12,12,11,11,11,12,11,12,12,12,11,12,13,12,11,11,12,12,11,12,11,11,11,12,12,11,12,11,11,11,12,12,12,12,13,12,13,12,12,12,12,11,11,12,11,11,11,11,11,11,12,12,12,13,12,11,13,13,12,12,11,12,10,11,11,11,11,12,11,12,12,11,12,12,13,12,12,13,12,12,12,12,12,11,12,12,12,11,12,11,11,11,12,13,12,13,13,13,13,13,12,13,13,12,12,13,11,11,11,11,11,12,11,11,12,11,0,0,0,0,0,0,0,10,0,0,0,9,0,0,0,11,0,0,0,8,0,0,0,12,0,0,0,7,0,0,0,13,0,0,0,6,0,0,0,14,0,0,0,5,0,0,0,15,0,0,0,4,0,0,0,16,0,0,0,3,0,0,0,17,0,0,0,2,0,0,0,18,0,0,0,1,0,0,0,19,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,1,4,4,4,4,8,8,12,13,14,14,14,14,14,14,6,6,6,6,6,10,9,14,14,14,14,14,14,14,14,7,6,5,6,6,10,9,12,13,13,13,13,13,13,13,13,7,7,9,9,11,11,12,13,13,13,13,13,13,13,13,7,7,8,8,11,12,13,13,13,13,13,13,13,13,13,12,12,10,10,13,12,13,13,13,13,13,13,13,13,13,12,12,10,10,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,3,3,5,5,6,6,6,5,5,6,6,6,5,5,6,6,6,5,5,6,6,6,5,5,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,6,6,7,7,7,7,8,8,9,9,6,5,5,7,8,8,9,8,8,9,9,10,11,6,5,5,8,8,9,9,8,8,9,10,10,11,0,8,8,8,9,9,9,9,9,10,10,11,11,0,9,9,9,8,9,9,9,9,10,10,11,11,0,13,13,9,9,10,10,10,10,11,11,12,12,0,14,13,9,9,10,10,10,10,11,11,12,12,0,0,0,10,10,9,9,11,11,12,12,13,12,0,0,0,10,10,9,9,10,10,12,12,13,13,0,0,0,13,14,11,10,11,11,12,12,13,14,0,0,0,14,14,10,10,11,11,12,12,13,13,0,0,0,0,0,12,12,12,12,13,13,14,15,0,0,0,0,0,12,12,12,12,13,13,14,15,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,3,3,5,6,7,7,7,7,8,8,10,10,10,6,6,7,7,8,8,8,8,10,10,10,6,6,7,7,8,8,8,8,10,10,10,7,7,7,7,8,8,8,8,10,10,10,7,7,7,7,8,8,8,8,10,10,10,7,7,8,8,8,8,8,8,10,10,10,7,7,8,8,8,8,8,8,10,10,10,8,8,8,8,8,8,9,9,10,10,10,10,10,8,8,8,8,9,9,10,10,10,10,10,9,9,8,8,9,9,10,10,10,10,10,8,8,8,8,9,9,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,6,6,6,7,6,6,4,7,7,10,9,10,10,10,9,4,7,7,10,10,10,11,10,10,6,10,10,11,11,11,11,10,10,6,10,9,11,11,11,11,10,10,6,10,10,11,11,11,11,10,10,7,11,11,11,11,11,12,12,11,6,10,10,11,10,10,11,11,11,6,10,10,10,11,10,11,11,11,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,3,3,6,6,8,8,9,9,9,9,10,10,11,11,12,12,0,0,0,7,7,8,8,9,9,9,9,10,10,11,11,12,12,0,0,0,7,7,8,8,9,9,9,9,10,10,11,11,12,12,0,0,0,8,8,8,9,10,9,10,10,10,10,11,11,12,12,0,0,0,8,8,9,9,10,10,10,10,11,11,11,12,12,12,0,0,0,8,8,9,9,10,10,10,10,11,11,12,12,12,12,0,0,0,8,8,9,9,10,10,10,10,11,11,12,12,13,13,0,0,0,9,9,9,9,10,10,10,10,11,11,12,12,13,13,0,0,0,0,0,9,9,10,10,10,10,11,11,12,12,13,13,0,0,0,0,0,9,9,10,10,11,11,12,12,12,12,13,13,0,0,0,0,0,9,9,10,10,11,11,12,12,12,12,13,13,0,0,0,0,0,10,10,11,10,11,11,12,12,13,13,13,13,0,0,0,0,0,0,0,10,10,11,11,12,12,13,13,13,13,0,0,0,0,0,0,0,11,11,12,12,12,12,13,13,14,14,0,0,0,0,0,0,0,11,11,12,12,12,12,13,13,14,14,0,0,0,0,0,0,0,12,12,12,12,13,13,13,13,14,14,0,0,0,0,0,0,0,0,0,12,12,13,13,13,13,14,14,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,3,3,5,5,6,6,8,8,0,0,0,7,7,7,7,9,9,0,0,0,7,7,7,7,9,9,0,0,0,8,8,8,8,9,9,0,0,0,8,8,8,8,10,10,0,0,0,9,9,8,8,10,10,0,0,0,9,9,8,8,10,10,0,0,0,10,10,9,9,10,10,0,0,0,0,0,9,9,10,10,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,1,2,3,7,7,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,8,9,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,1,4,4,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5,5,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,5,5,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,7,7,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,5,0,0,0,0,0,0,5,7,7,0,0,0,0,0,0,5,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,7,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,7,8,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,7,8,0,0,0,0,0,0,7,9,8,0,0,0,0,0,0,7,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,7,0,0,0,0,0,0,8,9,9,0,0,0,0,0,0,7,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,9,9,11,0,0,0,0,0,0,9,11,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,7,9,9,0,0,0,0,0,0,8,11,9,0,0,0,0,0,0,9,10,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,7,8,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,8,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,9,11,10,0,0,0,0,0,0,8,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,9,10,11,0,0,0,0,0,0,9,11,9], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+325360); +/* memory initializer */ allocate([1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,5,6,17,8,12,9,10,10,12,13,5,2,17,4,9,5,7,8,11,13,16,16,16,16,16,16,16,16,16,16,6,4,16,5,10,5,7,10,14,16,13,9,16,11,8,7,8,9,13,16,7,4,16,5,7,4,6,8,11,13,8,6,16,7,8,5,5,7,9,13,9,8,16,9,8,6,6,7,9,13,11,11,16,10,10,7,7,7,9,13,13,13,16,13,13,9,9,9,10,13,0,0,0,0,2,0,0,0,100,0,0,0,88,85,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,0,0,0,0,0,0,0,0,0,224,46,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,8,47,5,0,0,0,0,0,0,0,0,0,0,0,0,0,48,47,5,0,0,0,0,0,0,0,0,0,0,0,0,0,88,47,5,0,0,0,0,0,0,0,0,0,0,0,0,0,128,47,5,0,0,0,0,0,168,47,5,0,208,47,5,0,0,0,0,0,0,0,0,0,248,47,5,0,32,48,5,0,0,0,0,0,0,0,0,0,72,48,5,0,112,48,5,0,152,48,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,8,0,0,0,161,25,0,0,160,59,5,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,72,85,5,0,0,0,0,0,4,0,0,0,113,2,0,0,16,57,5,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,136,59,5,0,0,0,0,0,2,0,0,0,81,0,0,0,144,56,5,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,232,56,5,0,0,0,0,0,2,0,0,0,81,0,0,0,16,56,5,0,1,0,0,0,0,0,80,224,0,0,16,96,4,0,0,0,0,0,0,0,104,56,5,0,0,0,0,0,2,0,0,0,33,1,0,0,160,54,5,0,1,0,0,0,0,0,112,224,0,0,16,96,5,0,0,0,0,0,0,0,200,55,5,0,0,0,0,0,4,0,0,0,81,0,0,0,56,54,5,0,1,0,0,0,0,0,118,224,0,0,118,96,2,0,0,0,0,0,0,0,144,54,5,0,0,0,0,0,2,0,0,0,121,0,0,0,136,53,5,0,1,0,0,0,0,0,84,224,0,0,16,96,4,0,0,0,0,0,0,0,8,54,5,0,0,0,0,0,2,0,0,0,169,0,0,0,160,52,5,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,80,53,5,0,0,0,0,0,2,0,0,0,25,0,0,0,104,52,5,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,136,52,5,0,0,0,0,0,4,0,0,0,81,0,0,0,0,52,5,0,1,0,0,0,0,176,19,225,0,176,19,97,2,0,0,0,0,0,0,0,88,52,5,0,0,0,0,0,2,0,0,0,225,0,0,0,216,50,5,0,1,0,0,0,0,96,242,224,0,0,149,96,4,0,0,0,0,0,0,0,192,51,5,0,0,0,0,0,2,0,0,0,185,1,0,0,192,48,5,0,1,0,0,0,0,0,116,224,0,0,16,96,5,0,0,0,0,0,0,0,128,50,5,0,0,0,0,0,1,5,5,7,8,8,7,9,9,9,12,12,11,12,12,10,10,11,12,12,12,11,12,12,8,9,8,7,9,10,10,11,11,10,11,12,10,12,10,12,12,12,11,12,11,9,8,8,9,10,9,8,9,10,12,12,11,11,12,11,10,11,12,11,12,12,8,9,9,9,10,11,12,11,12,11,11,11,11,12,12,11,11,12,12,11,11,9,9,8,9,9,11,9,9,10,9,11,11,11,11,12,11,11,10,12,12,12,9,12,11,10,11,11,11,11,12,12,12,11,11,11,12,10,12,12,12,10,10,9,10,9,10,10,9,9,9,10,10,12,10,11,11,9,11,11,10,11,11,11,10,10,10,9,9,10,10,9,9,10,11,11,10,11,10,11,10,11,11,10,11,11,11,10,9,10,10,9,10,9,9,11,9,9,11,10,10,11,11,10,10,11,10,11,8,9,11,11,10,9,10,11,11,10,11,11,10,10,10,11,10,9,10,10,11,9,10,10,9,11,10,10,10,10,11,10,11,11,9,11,10,11,10,10,11,11,10,10,10,9,10,10,11,11,11,9,10,10,10,10,10,11,10,10,10,9,10,10,11,10,10,10,10,10,9,10,11,10,10,10,10,11,11,11,10,10,10,10,10,11,10,11,10,11,10,10,10,9,11,11,10,10,10,11,11,10,10,10,10,10,10,10,10,11,11,9,10,10,10,11,10,11,10,10,10,11,9,10,11,10,11,10,10,9,10,10,10,11,10,11,10,10,10,10,10,11,11,10,11,11,10,10,11,11,10,9,9,10,10,10,10,10,9,11,9,10,10,10,11,11,10,10,10,10,11,11,11,10,9,9,10,10,11,10,10,10,10,10,11,11,11,10,10,10,11,11,11,9,10,10,10,10,9,10,9,10,11,10,11,10,10,11,11,10,11,11,11,11,11,10,11,10,10,10,9,11,11,10,11,11,11,11,11,11,11,11,11,10,11,10,10,10,10,11,10,10,11,9,10,10,10,0,0,0,0,0,0,0,10,0,0,0,9,0,0,0,11,0,0,0,8,0,0,0,12,0,0,0,7,0,0,0,13,0,0,0,6,0,0,0,14,0,0,0,5,0,0,0,15,0,0,0,4,0,0,0,16,0,0,0,3,0,0,0,17,0,0,0,2,0,0,0,18,0,0,0,1,0,0,0,19,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,1,5,5,5,5,9,11,11,10,10,10,10,10,10,10,7,6,6,6,6,10,10,10,10,10,10,10,10,10,10,7,6,6,6,6,10,9,10,10,10,10,10,10,10,10,10,7,7,8,9,10,10,10,10,10,10,10,10,10,10,10,8,7,10,10,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,8,0,0,0,5,0,0,0,9,0,0,0,4,0,0,0,10,0,0,0,3,0,0,0,11,0,0,0,2,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,1,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,3,5,5,7,7,7,6,6,7,7,7,5,5,7,7,7,6,6,7,7,7,6,6,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,7,7,7,7,7,6,8,8,10,10,6,5,6,8,8,8,8,8,8,8,9,10,10,7,6,6,8,8,8,8,8,8,8,8,10,10,0,8,8,8,8,9,8,9,9,9,10,10,10,0,9,8,8,8,9,9,8,8,9,9,10,10,0,12,11,8,8,9,9,9,9,10,10,11,10,0,12,13,8,8,9,10,9,9,11,11,11,12,0,0,0,8,8,8,8,10,9,12,13,12,14,0,0,0,8,8,8,9,10,10,12,12,13,14,0,0,0,13,13,9,9,11,11,0,0,14,0,0,0,0,14,14,10,10,12,11,12,14,14,14,0,0,0,0,0,11,11,13,13,14,13,14,14,0,0,0,0,0,12,13,13,12,13,14,14,14,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,3,4,6,6,7,7,8,8,8,8,10,10,10,7,7,8,8,8,9,9,9,10,10,10,6,7,8,8,8,8,9,8,10,10,10,7,7,8,8,9,9,9,9,10,10,10,7,7,8,8,9,9,8,9,10,10,10,8,8,9,9,9,9,9,9,11,11,11,8,8,9,9,9,9,9,10,10,11,11,9,9,9,9,9,9,9,10,11,11,11,10,11,9,9,9,9,10,9,11,11,11,10,11,10,10,9,9,10,10,11,11,11,11,11,9,9,9,9,10,10,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,1,4,4,6,6,6,7,6,6,4,7,7,11,10,10,11,11,10,4,7,7,10,10,10,11,10,10,6,10,10,11,11,11,11,11,10,6,9,9,11,12,12,11,9,9,6,9,10,11,12,12,11,9,10,7,11,11,11,11,11,12,13,12,6,9,10,11,10,10,12,13,13,6,10,9,11,10,10,11,12,13,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,3,4,6,6,7,7,8,8,8,8,9,9,10,10,11,11,0,0,0,7,7,8,8,9,9,9,9,10,10,10,11,11,11,0,0,0,6,6,8,8,9,9,9,9,10,10,11,11,11,11,0,0,0,7,7,8,8,9,9,9,9,10,10,11,11,12,12,0,0,0,7,7,8,8,9,9,9,9,10,10,11,11,12,12,0,0,0,8,8,9,9,10,10,10,10,11,11,12,12,12,12,0,0,0,8,8,9,9,10,10,10,10,11,11,12,12,12,13,0,0,0,9,9,9,9,10,10,10,10,11,11,12,12,13,13,0,0,0,0,0,10,10,10,10,10,10,11,11,12,12,13,13,0,0,0,0,0,9,9,10,10,11,11,12,12,13,13,13,13,0,0,0,0,0,9,9,10,10,11,11,12,12,13,13,13,14,0,0,0,0,0,10,10,10,11,11,11,12,12,13,13,13,14,0,0,0,0,0,0,0,10,10,11,11,12,12,13,13,14,14,0,0,0,0,0,0,0,11,11,12,12,13,13,13,13,14,14,0,0,0,0,0,0,0,11,11,12,12,12,13,13,14,15,14,0,0,0,0,0,0,0,12,12,12,12,13,13,13,14,14,15,0,0,0,0,0,0,0,0,0,12,12,13,13,14,13,14,14,0,0,0,0,0,0,0,8,0,0,0,7,0,0,0,9,0,0,0,6,0,0,0,10,0,0,0,5,0,0,0,11,0,0,0,4,0,0,0,12,0,0,0,3,0,0,0,13,0,0,0,2,0,0,0,14,0,0,0,1,0,0,0,15,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,3,3,6,6,6,6,8,8,0,0,0,7,7,7,7,8,8,0,0,0,7,7,7,7,8,8,0,0,0,7,7,8,8,9,9,0,0,0,7,7,8,8,9,9,0,0,0,8,9,8,8,10,10,0,0,0,8,8,8,8,10,10,0,0,0,10,10,9,9,10,10,0,0,0,0,0,9,9,10,10,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,1,3,2,7,8,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,6,6,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,1,4,4,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,6,7,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,9,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,6,6,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,0,0,0,0,0,0,5,7,7,0,0,0,0,0,0,5,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,8,0,0,0,0,0,0,8,9,10,0,0,0,0,0,0,7,9,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,5,8,8,0,0,0,0,0,0,7,9,9,0,0,0,0,0,0,7,9,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,8,0,0,0,0,0,0,8,10,10,0,0,0,0,0,0,8,10,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,7,10,10,0,0,0,0,0,0,9,9,12,0,0,0,0,0,0,10,12,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,10,10,0,0,0,0,0,0,9,12,10,0,0,0,0,0,0,10,11,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,8,0,0,0,0,0,0,8,10,10,0,0,0,0,0,0,8,10,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,7,10,10,0,0,0,0,0,0,10,12,11,0,0,0,0,0,0,9,10,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,10,10,0,0,0,0,0,0,10,11,12,0,0,0,0,0,0,9,12,9], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+339320); +/* memory initializer */ allocate([1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,4,19,7,9,7,8,11,9,12,4,1,19,6,7,7,8,10,11,13,18,18,18,18,18,18,18,18,18,18,8,6,18,8,9,9,11,12,14,18,9,6,18,9,7,8,9,11,12,18,7,6,18,8,7,7,7,9,11,17,8,8,18,9,7,6,6,8,11,17,10,10,18,12,9,8,7,9,12,18,13,15,18,15,13,11,10,11,15,18,14,18,18,18,18,18,16,16,18,18,0,0,0,0,0,0,0,0,0,64,207,64,0,0,0,0,0,88,219,64,0,0,0,0,0,106,232,64,0,0,0,0,0,249,245,64,0,0,0,0,0,0,35,64,0,0,0,0,0,0,38,64,0,0,0,0,0,0,62,64,0,0,0,0,0,192,88,64,0,0,0,0,0,76,205,64,0,0,0,0,0,136,211,64,0,0,0,0,0,124,229,64,0,0,0,0,0,255,244,64,0,0,0,0,0,76,221,64,0,0,0,0,0,130,228,64,0,0,0,0,0,100,233,64,0,0,0,0,0,64,239,64,0,0,0,0,0,148,241,64,0,0,0,0,0,11,243,64,0,0,0,0,0,255,244,64,0,0,0,0,0,118,246,64,0,0,0,0,0,219,250,64,0,0,0,0,0,76,253,64,0,0,0,0,0,23,1,65,0,0,0,0,128,49,7,65,154,153,153,153,153,153,40,64,0,0,0,0,0,0,42,64,0,0,0,0,0,0,42,64,0,0,0,0,0,0,44,64,0,0,0,0,0,0,46,64,0,0,0,0,0,192,88,64,0,0,0,0,0,192,88,64,0,0,0,0,0,192,88,64,0,0,0,0,0,192,88,64,0,0,0,0,0,192,88,64,0,0,0,0,0,192,88,64,0,0,0,0,0,192,88,64,0,0,0,0,0,148,209,64,0,0,0,0,0,88,219,64,0,0,0,0,0,23,225,64,0,0,0,0,0,249,229,64,0,0,0,0,0,88,235,64,0,0,0,0,0,76,237,64,0,0,0,0,128,79,242,64,0,0,0,0,0,249,245,64,0,0,0,0,0,106,248,64,0,0,0,0,128,19,252,64,0,0,0,0,128,79,2,65,0,0,0,0,128,49,7,65,0,0,0,0,0,64,223,64,0,0,0,0,0,112,231,64,0,0,0,0,0,76,237,64,0,0,0,0,0,23,241,64,0,0,0,0,0,136,243,64,0,0,0,0,0,255,244,64,0,0,0,0,0,112,247,64,0,0,0,0,0,219,250,64,0,0,0,0,0,76,253,64,0,0,0,0,0,23,1,65,0,0,0,0,0,136,3,65,0,0,0,0,8,76,13,65,0,0,0,0,0,88,203,64,0,0,0,0,0,136,211,64,0,0,0,0,0,88,219,64,0,0,0,0,0,142,226,64,0,0,0,0,0,118,230,64,0,0,0,0,0,94,234,64,0,0,0,0,128,79,242,64,0,0,0,0,0,112,247,64,0,0,0,0,0,76,253,64,0,0,0,0,0,23,1,65,0,0,0,0,0,249,5,65,0,0,0,0,8,76,13,65,88,88,5,0,104,113,5,0,88,88,5,0,200,113,5,0,88,88,5,0,40,114,5,0,88,88,5,0,136,114,5,0,88,88,5,0,232,114,5,0,88,88,5,0,72,115,5,0,168,115,5,0,184,140,5,0,168,115,5,0,24,141,5,0,168,115,5,0,120,141,5,0,168,115,5,0,216,141,5,0,168,115,5,0,56,142,5,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,4,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,4,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,30,0,0,0,208,111,7,0,24,201,7,0,24,201,7,0,64,201,7,0,64,201,7,0,2,0,0,0,0,0,0,0,30,0,0,0,208,111,7,0,0,202,7,0,0,202,7,0,64,201,7,0,64,201,7,0,1,0,0,0,2,0,0,0,6,0,0,0,192,154,5,0,40,202,7,0,40,202,7,0,80,202,7,0,80,202,7,0,2,0,0,0,0,0,0,0,15,0,0,0,208,111,7,0,0,162,7,0,0,162,7,0,40,162,7,0,40,162,7,0,2,0,0,0,0,0,0,0,30,0,0,0,208,111,7,0,232,162,7,0,232,162,7,0,40,162,7,0,40,162,7,0,1,0,0,0,2,0,0,0,6,0,0,0,192,154,5,0,16,163,7,0,16,163,7,0,56,163,7,0,56,163,7,0,2,0,0,0,0,0,0,0,15,0,0,0,208,111,7,0,232,122,7,0,232,122,7,0,16,123,7,0,16,123,7,0,2,0,0,0,0,0,0,0,30,0,0,0,208,111,7,0,208,123,7,0,208,123,7,0,16,123,7,0,16,123,7,0,1,0,0,0,2,0,0,0,6,0,0,0,192,154,5,0,248,123,7,0,248,123,7,0,32,124,7,0,32,124,7,0,2,0,0,0,0,0,0,0,15,0,0,0,72,198,6,0,0,59,7,0,0,59,7,0,40,59,7,0,40,59,7,0,2,0,0,0,0,0,0,0,30,0,0,0,72,198,6,0,232,59,7,0,232,59,7,0,40,59,7,0,40,59,7,0,1,0,0,0,2,0,0,0,6,0,0,0,192,154,5,0,16,60,7,0,16,60,7,0,56,60,7,0,56,60,7,0,2,0,0,0,0,0,0,0,15,0,0,0,72,198,6,0,48,6,7,0,48,6,7,0,88,6,7,0,88,6,7,0,2,0,0,0,0,0,0,0,30,0,0,0,72,198,6,0,24,7,7,0,24,7,7,0,88,6,7,0,88,6,7,0,1,0,0,0,2,0,0,0,6,0,0,0,192,154,5,0,64,7,7,0,64,7,7,0,104,7,7,0,104,7,7,0,2,0,0,0,0,0,0,0,15,0,0,0,72,198,6,0,96,209,6,0,96,209,6,0,136,209,6,0,136,209,6,0,2,0,0,0,0,0,0,0,30,0,0,0,72,198,6,0,72,210,6,0,72,210,6,0,136,209,6,0,136,209,6,0,1,0,0,0,2,0,0,0,6,0,0,0,192,154,5,0,112,210,6,0,112,210,6,0,152,210,6,0,152,210,6,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+349504); +/* memory initializer */ allocate([2,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+360488); +/* memory initializer */ allocate([2,0,0,0,0,0,0,0,15,0,0,0,152,142,5,0,120,145,6,0,120,145,6,0,160,145,6,0,160,145,6,0,2,0,0,0,0,0,0,0,30,0,0,0,152,142,5,0,96,146,6,0,96,146,6,0,160,145,6,0,160,145,6,0,1,0,0,0,2,0,0,0,6,0,0,0,192,154,5,0,136,146,6,0,136,146,6,0,176,146,6,0,176,146,6,0,2,0,0,0,0,0,0,0,15,0,0,0,152,142,5,0,176,96,6,0,176,96,6,0,216,96,6,0,216,96,6,0,2,0,0,0,0,0,0,0,30,0,0,0,152,142,5,0,152,97,6,0,152,97,6,0,216,96,6,0,216,96,6,0,1,0,0,0,2,0,0,0,6,0,0,0,192,154,5,0,216,165,5,0,216,165,5,0,0,166,5,0,0,166,5,0,2,0,0,0,0,0,0,0,15,0,0,0,152,142,5,0,136,46,6,0,136,46,6,0,176,46,6,0,176,46,6,0,2,0,0,0,0,0,0,0,30,0,0,0,152,142,5,0,112,47,6,0,112,47,6,0,176,46,6,0,176,46,6,0,1,0,0,0,2,0,0,0,6,0,0,0,192,154,5,0,216,165,5,0,216,165,5,0,0,166,5,0,0,166,5,0,2,0,0,0,0,0,0,0,15,0,0,0,152,142,5,0,24,241,5,0,24,241,5,0,64,241,5,0,64,241,5,0,2,0,0,0,0,0,0,0,30,0,0,0,152,142,5,0,0,242,5,0,0,242,5,0,64,241,5,0,64,241,5,0,1,0,0,0,2,0,0,0,6,0,0,0,192,154,5,0,216,165,5,0,216,165,5,0,0,166,5,0,0,166,5,0,2,0,0,0,0,0,0,0,15,0,0,0,152,142,5,0,176,153,5,0,176,153,5,0,216,153,5,0,216,153,5,0,2,0,0,0,0,0,0,0,30,0,0,0,152,142,5,0,152,154,5,0,152,154,5,0,216,153,5,0,216,153,5,0,1,0,0,0,2,0,0,0,6,0,0,0,192,154,5,0,216,165,5,0,216,165,5,0,0,166,5,0,0,166,5,0,0,0,0,0,255,255,255,255,255,255,255,255,8,0,0,0,255,255,255,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+363696); +/* memory initializer */ allocate([1,0,0,0,2,0,0,0,4,0,0,0,7,0,0,0,17,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,4,0,0,0,7,0,0,0,17,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,8,0,0,0,16,241,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,0,0,0,0,0,0,0,0,0,232,169,5,0,0,0,0,0,0,0,0,0,16,170,5,0,0,0,0,0,0,0,0,0,56,170,5,0,96,170,5,0,0,0,0,0,0,0,0,0,136,170,5,0,176,170,5,0,0,0,0,0,0,0,0,0,216,170,5,0,0,171,5,0,0,0,0,0,0,0,0,0,40,171,5,0,80,171,5,0,0,171,5,0,0,0,0,0,120,171,5,0,160,171,5,0,200,171,5,0,240,171,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,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,8,0,0,0,224,169,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,255,255,255,255,255,255,255,255,2,0,0,0,255,255,255,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+366508); +/* memory initializer */ allocate([32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,4,0,0,0,216,169,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,192,166,5,0,232,166,5,0,0,0,0,0,0,0,0,0,16,167,5,0,56,167,5,0,96,167,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,169,0,0,0,240,168,5,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,160,169,5,0,0,0,0,0,2,0,0,0,25,0,0,0,184,168,5,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,216,168,5,0,0,0,0,0,2,0,0,0,9,0,0,0,152,168,5,0,1,0,0,0,0,136,51,225,0,136,51,97,2,0,0,0,0,0,0,0,168,168,5,0,0,0,0,0,1,0,0,0,25,0,0,0,16,168,5,0,1,0,0,0,0,192,18,225,0,0,153,96,5,0,0,0,0,0,0,0,48,168,5,0,0,0,0,0,1,0,0,0,25,0,0,0,136,167,5,0,1,0,0,0,0,0,120,224,0,0,16,96,5,0,0,0,0,0,0,0,168,167,5,0,0,0,0,0,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,13,0,0,0,10,0,0,0,14,0,0,0,9,0,0,0,15,0,0,0,8,0,0,0,16,0,0,0,7,0,0,0,17,0,0,0,6,0,0,0,18,0,0,0,5,0,0,0,19,0,0,0,4,0,0,0,20,0,0,0,3,0,0,0,21,0,0,0,2,0,0,0,22,0,0,0,1,0,0,0,23,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,1,2,3,4,5,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,15,15,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,13,0,0,0,10,0,0,0,14,0,0,0,9,0,0,0,15,0,0,0,8,0,0,0,16,0,0,0,7,0,0,0,17,0,0,0,6,0,0,0,18,0,0,0,5,0,0,0,19,0,0,0,4,0,0,0,20,0,0,0,3,0,0,0,21,0,0,0,2,0,0,0,22,0,0,0,1,0,0,0,23,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,1,3,2,5,5,6,6,6,6,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,4,4,5,5,4,5,5,5,5,4,5,5,5,5,5,5,5,4,5,5,5,5,5,4,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,7,7,10,10,12,12,12,12,13,12,5,5,5,8,6,11,9,12,12,13,12,12,12,4,5,5,6,8,9,11,12,12,13,12,12,12,7,7,8,9,9,11,8,12,9,12,12,12,12,7,8,8,9,9,8,11,9,12,12,12,11,12,10,10,10,11,11,11,11,11,10,11,11,12,11,10,10,10,11,11,11,11,10,11,11,11,11,12,11,11,11,12,11,12,11,12,11,13,11,13,11,11,11,11,11,12,11,12,10,13,11,12,11,13,12,12,12,13,12,13,13,13,12,14,12,14,13,12,12,12,12,13,13,13,12,14,12,14,13,14,13,14,14,14,14,14,14,14,14,15,14,15,14,13,14,13,14,14,14,14,14,15,14,14,14,15,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,2,3,1,3,0,0,0,0,3,3,3,3,3,3,3,3,5,0,0,0,243,0,0,0,8,240,5,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,0,241,5,0,0,0,0,0,5,0,0,0,53,12,0,0,184,227,5,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,240,239,5,0,0,0,0,0,5,0,0,0,243,0,0,0,176,226,5,0,1,0,0,0,0,0,56,224,0,0,56,96,2,0,0,0,0,0,0,0,168,227,5,0,0,0,0,0,5,0,0,0,243,0,0,0,168,225,5,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,160,226,5,0,0,0,0,0,5,0,0,0,243,0,0,0,160,224,5,0,1,0,0,0,0,0,84,224,0,0,84,96,2,0,0,0,0,0,0,0,152,225,5,0,0,0,0,0,5,0,0,0,53,12,0,0,80,212,5,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,136,224,5,0,0,0,0,0,5,0,0,0,53,12,0,0,0,200,5,0,1,0,0,0,0,0,124,224,0,0,92,96,3,0,0,0,0,0,0,0,56,212,5,0,0,0,0,0,1,0,0,0,7,0,0,0,216,199,5,0,1,0,0,0,0,0,56,224,0,0,16,96,3,0,0,0,0,0,0,0,224,199,5,0,0,0,0,0,5,0,0,0,243,0,0,0,208,198,5,0,1,0,0,0,0,0,149,224,0,0,149,96,2,0,0,0,0,0,0,0,200,199,5,0,0,0,0,0,5,0,0,0,243,0,0,0,200,197,5,0,1,0,0,0,0,0,92,224,0,0,92,96,2,0,0,0,0,0,0,0,192,198,5,0,0,0,0,0,5,0,0,0,53,12,0,0,120,185,5,0,1,0,0,0,0,106,152,225,0,106,120,97,3,0,0,0,0,0,0,0,176,197,5,0,0,0,0,0,5,0,0,0,53,12,0,0,40,173,5,0,1,0,0,0,0,136,83,225,0,136,51,97,3,0,0,0,0,0,0,0,96,185,5,0,0,0,0,0,1,0,0,0,25,0,0,0,160,172,5,0,1,0,0,0,0,192,18,225,0,0,153,96,5,0,0,0,0,0,0,0,192,172,5,0,0,0,0,0,1,0,0,0,25,0,0,0,24,172,5,0,1,0,0,0,0,0,120,224,0,0,16,96,5,0,0,0,0,0,0,0,56,172,5,0,0,0,0,0,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,13,0,0,0,10,0,0,0,14,0,0,0,9,0,0,0,15,0,0,0,8,0,0,0,16,0,0,0,7,0,0,0,17,0,0,0,6,0,0,0,18,0,0,0,5,0,0,0,19,0,0,0,4,0,0,0,20,0,0,0,3,0,0,0,21,0,0,0,2,0,0,0,22,0,0,0,1,0,0,0,23,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,1,3,2,5,4,7,7,8,8,9,10,10,10,11,11,11,12,12,12,13,13,13,13,13,13,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,13,0,0,0,10,0,0,0,14,0,0,0,9,0,0,0,15,0,0,0,8,0,0,0,16,0,0,0,7,0,0,0,17,0,0,0,6,0,0,0,18,0,0,0,5,0,0,0,19,0,0,0,4,0,0,0,20,0,0,0,3,0,0,0,21,0,0,0,2,0,0,0,22,0,0,0,1,0,0,0,23,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,1,4,4,16,16,4,9,11,15,16,4,12,8,16,16,12,16,16,16,16,13,16,16,16,16,5,8,10,16,16,9,9,14,15,16,12,14,14,16,16,16,16,16,16,16,16,16,16,16,16,5,11,8,16,15,12,14,16,16,16,9,15,9,16,16,16,16,16,16,16,16,16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,6,11,11,16,16,12,13,16,16,16,12,16,14,16,16,16,16,16,16,16,16,16,16,16,16,11,15,15,16,16,14,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,12,15,16,16,16,16,16,16,16,16,14,16,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,5,11,11,16,16,12,15,16,16,16,12,16,14,16,16,16,16,16,16,16,16,16,16,16,16,12,15,15,16,16,14,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,11,15,15,16,16,16,16,16,16,16,15,16,14,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,6,11,12,16,16,11,15,16,16,16,13,16,14,16,16,16,16,16,16,16,16,16,16,16,16,11,16,14,16,16,14,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,12,14,14,16,16,16,16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,8,13,15,16,16,15,15,16,16,16,14,16,16,16,16,16,16,16,16,16,16,16,16,16,16,14,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,7,12,12,16,16,13,12,16,16,16,14,16,14,16,16,16,16,16,16,16,16,16,16,16,16,13,16,16,16,16,14,14,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,12,14,16,16,16,16,16,16,16,16,14,16,14,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,6,11,11,16,16,13,15,16,16,16,11,15,14,16,16,16,16,16,16,16,14,16,16,16,16,11,16,16,16,16,16,16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,11,16,14,16,16,14,16,16,16,16,13,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,7,11,11,16,16,13,13,16,16,16,13,16,13,16,16,16,16,16,16,16,16,16,16,16,16,12,16,15,16,16,14,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,12,14,16,16,16,16,16,16,16,16,14,16,13,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,8,13,14,16,16,15,16,16,16,16,14,16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,16,15,16,16,16,16,16,16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,6,7,7,7,7,7,7,7,7,7,7,8,7,8,8,7,8,8,7,8,7,7,8,8,7,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,8,9,8,8,8,8,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,8,9,8,8,8,8,9,9,8,9,9,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,8,8,8,8,9,9,8,9,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,8,8,8,8,8,8,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,9,9,8,8,8,8,8,9,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,8,9,9,8,8,8,8,9,8,8,9,8,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,5,5,5,7,7,5,7,7,5,7,7,7,8,9,7,9,9,5,7,7,7,9,9,7,9,8,5,7,8,8,9,10,8,9,10,8,9,10,10,10,12,10,11,11,8,10,10,10,11,12,10,11,10,5,8,7,8,10,10,8,10,9,8,10,10,10,10,11,10,12,11,8,10,9,10,11,11,10,12,10,5,8,8,7,9,10,8,10,9,7,9,10,9,10,11,9,11,11,8,10,9,10,11,11,9,11,10,7,9,9,9,10,11,9,11,11,9,9,11,10,10,13,11,12,12,9,11,11,11,12,13,11,13,11,7,9,9,9,10,11,9,11,10,9,11,10,10,10,12,11,13,12,9,11,11,11,12,12,10,12,10,5,8,8,8,9,10,7,10,9,8,9,10,9,10,11,10,11,11,7,10,9,9,11,11,9,11,10,7,9,9,9,10,11,9,11,10,9,11,11,10,10,12,11,12,12,9,10,11,11,12,13,10,12,10,7,9,9,9,11,11,9,11,10,9,11,11,11,11,13,11,13,12,9,11,9,11,12,12,10,13,10,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,3,3,3,3,3,3,0,3,0,0,0,2,0,0,0,4,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,4,6,6,9,9,6,7,8,10,11,6,8,7,10,10,8,10,10,12,12,8,10,10,12,12,6,7,8,10,10,7,8,9,10,11,8,9,9,11,11,10,10,11,12,13,10,11,11,13,13,6,8,7,10,10,8,9,9,11,11,7,9,8,11,10,10,11,11,13,13,10,11,10,13,12,9,10,10,11,12,10,10,11,12,13,10,11,11,12,13,12,12,13,12,14,12,13,13,14,14,9,10,10,12,11,10,11,11,13,12,10,11,10,13,12,12,13,13,14,14,12,13,12,14,12,7,8,8,10,11,8,9,10,11,12,8,9,9,11,12,10,11,12,13,14,10,11,11,13,13,8,9,10,11,12,9,10,11,12,13,10,10,11,12,12,11,12,12,13,14,11,12,12,14,14,8,9,9,11,12,10,10,11,12,13,9,10,10,12,12,11,12,12,14,14,11,12,12,14,13,11,11,12,12,13,11,12,12,13,14,12,12,13,14,14,13,13,14,14,16,13,14,14,15,15,11,12,11,13,13,12,12,12,14,14,11,12,12,14,13,13,14,14,15,15,13,14,13,15,14,7,8,8,11,10,8,10,9,12,11,8,10,9,12,11,10,11,11,13,13,10,12,11,14,13,8,9,9,12,11,9,10,10,12,12,10,11,10,13,12,11,12,12,13,14,11,12,12,14,14,8,10,9,12,11,10,11,10,12,12,9,11,10,13,11,11,12,12,14,14,11,12,12,14,13,11,11,12,13,13,11,12,12,13,14,12,12,12,14,14,13,13,14,14,15,13,14,14,15,15,11,12,11,13,12,12,12,12,14,14,11,12,12,14,13,13,14,14,15,15,13,14,13,15,14,10,11,11,12,13,11,12,12,13,14,11,12,12,13,14,13,13,14,14,16,13,14,14,15,15,11,12,12,12,14,12,12,13,13,15,12,13,13,13,15,14,14,15,15,16,14,14,15,15,16,11,12,12,13,14,12,13,13,14,15,12,13,13,14,14,14,14,15,15,16,14,14,14,15,15,13,14,14,14,15,14,14,15,15,16,14,15,15,15,16,15,15,16,16,18,16,16,16,17,17,13,14,14,15,15,14,14,15,16,16,14,14,14,16,15,16,16,16,17,17,15,16,16,17,16,10,11,11,13,12,11,12,12,14,13,11,12,12,14,13,13,14,14,15,15,13,14,13,16,14,11,12,12,14,13,12,13,13,14,14,12,13,13,15,14,14,14,14,15,15,14,15,14,16,15,11,12,12,14,12,12,13,13,15,14,12,13,12,15,13,14,15,14,16,15,14,15,14,16,15,13,14,14,15,15,14,14,14,15,16,14,15,14,16,16,15,16,16,16,17,16,16,16,17,17,13,14,14,15,14,14,15,15,16,15,14,15,14,16,15,16,16,16,17,17,15,16,15,18,16,6,8,8,11,11,8,9,10,11,12,8,10,9,12,12,10,11,11,13,13,10,12,11,14,13,8,9,9,11,12,9,10,10,12,12,9,10,10,12,12,11,11,12,13,14,11,12,12,14,14,8,10,9,12,11,10,11,11,12,12,9,11,10,13,12,11,12,12,14,14,11,12,12,14,13,10,11,11,13,13,11,12,12,13,14,11,12,12,14,14,13,13,14,13,15,13,14,14,15,15,11,12,11,13,13,12,12,12,14,14,11,12,12,14,13,13,14,14,15,15,13,14,13,15,14,8,9,9,11,11,9,10,10,12,12,9,10,10,12,12,11,12,12,13,14,11,12,12,14,14,9,9,10,11,12,10,10,11,12,13,10,10,11,12,13,12,12,13,13,15,12,12,13,14,14,9,10,10,12,12,10,11,11,13,13,10,11,11,13,13,12,13,13,14,15,12,13,12,14,14,11,11,12,12,14,12,12,13,13,14,12,12,13,13,14,13,13,14,14,16,14,14,14,15,15,11,12,12,14,13,12,13,13,14,14,12,13,13,15,14,14,14,14,16,16,13,14,14,16,14,7,9,9,12,11,9,10,10,12,12,9,11,10,13,12,11,12,12,13,14,11,13,12,14,13,9,10,10,12,12,10,10,11,12,13,10,12,11,13,13,12,12,13,13,14,12,13,13,15,14,9,10,10,12,12,11,11,11,13,13,10,12,10,13,12,12,13,13,14,15,12,13,12,15,13,11,12,12,14,13,12,12,13,13,14,12,13,13,15,14,13,13,14,13,16,14,15,14,16,15,12,12,12,14,14,13,13,13,14], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+369616); +/* memory initializer */ allocate([14,12,13,12,14,13,14,15,15,16,16,13,14,13,16,13,10,11,12,13,14,11,12,13,13,15,12,12,13,14,14,13,14,14,15,16,13,14,14,16,15,12,12,13,12,14,12,12,13,13,15,13,13,13,13,15,14,14,15,14,16,14,15,15,15,16,12,13,12,14,14,13,13,13,15,15,12,13,13,15,15,14,15,15,16,16,14,15,15,16,16,13,14,14,13,16,14,14,15,14,16,14,14,15,14,16,15,15,16,15,18,16,16,16,16,17,14,14,14,16,15,14,15,15,16,16,14,15,15,16,16,16,16,16,17,17,15,16,16,17,16,10,12,11,14,13,12,13,13,14,14,12,13,12,15,14,14,14,14,15,15,14,15,14,16,15,12,13,12,14,13,12,13,13,15,14,13,14,13,15,14,14,15,15,16,16,14,15,15,17,15,12,13,12,14,14,13,14,14,15,15,13,14,13,15,14,15,15,15,16,16,14,15,15,17,15,14,14,14,16,15,14,15,15,16,16,14,15,15,16,15,16,16,16,16,17,16,17,16,18,17,14,14,14,16,15,15,15,15,16,16,14,15,14,16,15,16,16,17,17,17,15,16,15,17,16,6,8,8,11,11,8,9,10,12,12,8,10,9,12,11,10,11,12,13,13,10,11,11,13,13,8,9,10,11,12,9,10,11,12,13,10,11,11,12,12,11,12,12,13,14,11,12,12,14,14,8,9,9,12,11,9,10,10,12,12,9,10,10,12,12,11,12,12,14,14,11,12,11,14,13,11,11,12,13,13,11,12,12,13,14,12,12,12,14,14,13,13,14,14,15,13,14,14,15,15,10,11,11,13,13,11,12,12,14,14,11,12,12,14,13,13,14,14,15,15,13,14,13,15,13,7,9,9,11,12,9,10,11,12,13,9,10,10,12,12,11,12,13,13,14,11,12,12,14,14,9,10,10,12,12,10,10,11,12,13,11,12,11,13,13,12,12,13,13,15,12,13,13,15,14,9,10,10,12,12,10,11,12,13,13,10,11,10,13,12,12,13,13,14,15,12,13,12,14,13,12,12,12,14,14,12,12,13,13,14,13,13,13,15,14,14,13,14,13,16,14,15,15,16,16,11,12,12,13,14,12,13,13,14,15,12,13,12,14,13,14,14,15,15,16,13,14,13,15,13,8,9,9,11,11,9,10,10,12,12,9,10,10,12,12,11,12,12,14,14,11,12,11,14,13,9,10,10,12,12,10,11,11,13,13,10,11,11,13,13,12,12,13,14,15,12,13,13,15,14,9,10,9,12,11,10,11,10,13,12,10,11,10,13,12,12,13,12,14,14,12,13,12,15,13,11,12,12,13,14,12,13,13,14,14,12,13,13,14,14,14,14,14,14,16,14,14,14,16,15,11,12,11,14,12,12,13,12,15,13,12,13,12,15,13,14,14,14,16,15,13,14,13,16,14,10,11,12,13,14,12,12,13,13,15,12,13,13,14,14,14,14,15,15,16,14,14,14,15,16,12,12,13,14,14,12,13,14,14,15,13,14,14,15,15,14,15,15,15,17,15,15,15,16,16,12,12,13,13,14,13,13,14,14,15,12,13,13,14,15,15,15,15,15,17,14,15,15,15,15,14,14,14,16,16,14,15,15,15,16,15,15,15,16,16,16,15,16,16,18,16,16,17,17,17,14,14,14,15,16,15,15,15,16,17,14,15,14,16,16,16,16,17,17,18,16,16,15,17,16,10,12,11,14,13,12,12,12,14,14,11,13,12,14,13,13,14,14,15,15,13,14,13,16,15,12,12,13,14,14,12,13,13,15,15,13,13,13,15,15,14,15,15,16,16,14,15,15,17,16,12,13,12,14,12,13,13,13,15,13,12,13,12,15,13,14,15,15,16,15,14,15,14,16,14,14,14,14,16,16,14,15,15,16,16,14,15,15,16,16,15,16,16,16,17,16,17,16,18,17,13,14,14,16,13,14,15,15,16,14,14,15,14,16,14,16,16,16,17,16,15,16,15,18,15,9,11,11,13,13,11,12,12,14,14,11,12,12,14,14,13,14,14,15,15,13,14,14,15,15,11,12,12,14,14,11,12,13,14,15,12,13,13,15,14,13,14,14,15,16,13,14,14,16,16,11,12,12,14,14,12,13,13,15,15,12,13,13,15,14,14,14,14,16,16,14,15,14,16,15,12,13,13,14,15,12,13,14,15,16,13,14,14,16,16,14,14,15,16,17,15,15,15,17,17,13,14,14,15,15,14,15,14,16,16,14,15,14,16,15,15,16,16,17,17,15,16,15,17,16,10,12,12,13,14,11,12,13,14,14,12,13,12,14,14,13,14,14,15,16,13,14,14,16,15,11,12,12,14,14,12,12,13,14,15,12,13,13,15,15,13,13,15,15,17,14,14,15,16,16,12,13,12,14,14,12,13,13,15,15,12,13,13,15,14,14,15,15,16,16,14,15,14,16,16,13,12,14,13,16,13,13,15,14,16,14,13,15,15,16,14,14,16,15,17,15,15,16,16,17,13,14,14,16,15,14,15,15,16,16,14,15,14,16,15,16,16,16,17,17,15,16,16,18,16,10,12,12,14,14,12,12,13,14,14,12,13,12,15,14,13,14,14,15,16,14,15,14,16,15,11,12,12,14,14,12,13,13,14,15,13,14,13,15,15,14,14,15,15,16,14,15,15,17,16,12,13,13,14,14,13,13,14,15,15,12,14,13,15,15,14,15,15,16,16,14,15,15,17,15,13,14,13,15,15,13,14,14,15,16,14,15,14,17,16,15,15,15,15,17,16,16,16,18,17,14,14,14,16,16,15,15,15,16,16,14,15,14,16,16,16,16,17,17,17,16,16,16,17,16,11,12,13,14,14,12,13,13,15,15,12,13,13,15,15,14,15,15,16,16,14,15,15,17,16,12,13,13,14,15,13,13,14,14,16,13,14,14,15,16,15,14,16,15,17,15,15,16,16,17,12,13,13,15,15,13,14,14,16,16,13,14,14,16,15,15,15,16,17,17,15,16,15,17,16,14,14,15,13,16,15,14,16,14,17,15,15,16,14,17,16,15,17,15,18,16,16,17,16,18,14,15,15,17,16,15,16,16,17,17,15,16,15,17,16,16,17,17,18,18,16,17,15,18,16,11,12,12,14,14,13,13,14,14,15,13,14,13,16,14,15,15,15,16,16,15,16,15,17,16,12,13,13,15,14,13,13,14,15,15,14,15,14,16,15,15,15,16,15,16,16,16,16,18,16,12,13,13,15,15,14,14,15,15,16,13,14,13,16,15,16,16,16,17,17,15,16,15,17,15,14,15,14,16,15,14,15,15,16,16,15,16,15,17,16,16,15,16,15,17,17,18,17,18,17,15,15,15,16,16,16,16,16,17,17,14,15,15,17,16,17,17,18,18,18,16,17,15,18,15,9,11,11,13,13,11,12,12,14,14,11,12,12,14,14,13,14,14,15,16,13,14,14,15,15,11,12,12,14,14,12,13,13,14,15,12,13,13,14,14,14,14,15,15,16,14,14,14,16,16,11,12,12,14,14,12,13,13,14,15,11,13,12,14,14,13,14,14,16,16,13,14,14,16,15,13,14,14,15,15,14,14,15,15,16,14,15,14,16,16,15,15,16,16,17,15,16,16,17,17,12,13,13,15,15,13,14,14,16,15,12,14,13,16,15,15,16,15,17,17,14,15,15,17,15,10,12,12,14,14,12,12,13,14,15,12,13,12,14,14,14,14,15,15,16,13,14,14,16,16,12,13,13,14,14,13,13,14,14,15,13,14,13,15,15,14,15,15,15,17,14,15,15,16,16,11,12,12,14,14,13,13,14,15,15,12,13,13,15,14,14,15,15,16,17,14,15,14,16,15,14,14,14,16,16,14,15,15,16,16,15,15,15,16,16,15,16,16,16,18,16,17,16,18,17,13,13,14,15,15,14,14,15,16,16,13,14,14,16,15,16,16,17,17,17,15,15,15,17,15,10,12,12,14,13,12,12,13,14,14,11,13,12,14,14,13,14,14,16,16,13,14,14,16,15,12,12,13,14,14,12,13,13,14,15,13,13,13,15,15,14,14,15,16,16,14,15,15,16,16,11,12,12,14,14,12,13,13,15,15,12,13,12,15,14,14,15,14,16,16,13,15,13,16,15,13,14,14,15,16,14,15,15,15,17,14,15,15,16,16,16,15,16,16,17,16,16,16,17,17,13,14,12,16,13,14,15,13,16,15,13,15,13,16,14,15,16,15,17,16,15,16,14,17,15,11,12,12,14,15,13,13,14,14,16,13,14,13,15,14,15,15,16,16,17,15,15,15,16,16,12,13,13,15,15,13,13,14,15,16,14,15,14,16,15,15,15,16,15,17,16,16,16,17,17,12,13,13,14,15,14,14,15,15,16,13,14,13,15,15,16,16,16,17,17,15,16,15,16,15,15,15,15,16,16,14,15,15,16,17,16,16,16,17,17,16,15,17,15,18,17,18,17,18,18,14,14,15,15,17,15,15,16,16,17,14,15,15,16,16,17,17,17,17,18,16,16,15,17,15,11,12,12,14,14,12,13,13,15,15,12,13,13,15,15,14,15,15,16,16,14,15,14,17,16,13,13,13,15,15,13,14,14,15,16,13,14,14,16,16,15,15,16,16,17,15,16,16,17,17,12,13,13,15,14,13,14,14,16,15,13,14,13,16,14,15,16,16,17,16,15,16,14,17,15,14,15,15,16,17,15,15,16,16,17,15,16,16,17,17,16,15,17,16,18,16,17,17,18,18,14,15,14,16,13,15,16,15,17,14,15,16,14,17,14,16,17,16,18,16,16,17,15,18,15,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,6,8,8,10,9,8,9,9,10,10,8,9,9,10,10,8,10,10,10,10,8,10,10,10,10,9,9,9,10,10,9,10,10,10,11,9,10,10,11,11,10,10,10,11,11,10,10,10,11,11,9,9,9,10,10,9,10,10,11,11,9,10,10,11,10,10,10,10,11,11,10,10,10,11,11,10,10,10,10,11,10,10,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,10,11,10,10,11,11,11,11,10,11,10,11,11,11,11,11,11,11,10,11,11,11,11,9,10,10,10,11,10,10,11,11,11,10,11,11,11,11,10,11,11,11,11,10,11,11,11,11,10,10,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,12,12,12,11,11,11,12,12,10,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,12,12,11,11,11,12,12,11,11,11,11,11,11,12,12,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,12,12,12,12,11,12,11,12,12,11,12,12,12,12,12,12,12,12,12,9,10,10,11,10,10,11,11,11,11,10,11,11,11,11,10,11,11,11,11,10,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,12,12,12,11,11,11,12,12,10,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,12,12,11,11,11,11,11,11,12,12,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,12,12,12,12,11,12,11,12,12,12,12,12,12,12,11,12,12,12,12,11,11,11,11,11,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,11,11,11,11,11,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,13,13,13,13,12,13,13,13,13,7,10,10,11,11,10,10,11,11,11,10,11,11,11,11,10,11,11,11,11,10,11,11,11,11,10,10,10,11,11,10,11,11,11,11,11,11,11,11,12,11,11,11,12,12,11,11,11,12,12,10,11,11,11,11,11,11,11,12,11,11,11,11,12,11,11,11,11,12,12,11,11,11,12,12,11,11,11,11,11,11,11,11,12,12,11,11,12,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,11,11,11,12,12,12,12,11,11,12,12,12,11,12,12,12,12,11,12,12,12,12,10,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,12,12,11,11,11,12,12,11,11,11,11,11,11,11,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,11,11,11,12,11,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,11,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,10,11,10,11,11,11,11,11,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,10,11,11,12,11,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,11,11,12,12,12,12,11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,13,12,11,11,11,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,12,12,12,12,13,13,13,12,13,12,13,13,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,12,12,13,13,12,13,12,13,13,12,13,13,13,13,12,13,13,13,13,11,11,11,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,13,12,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,12,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,13,13,13,13,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,7,10,10,11,11,10,11,11,11,11,10,11,11,11,11,10,11,11,11,11,10,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,12,12,12,11,11,11,12,12,10,10,10,11,11,11,11,11,12,11,10,11,11,11,11,11,11,11,12,12,11,11,11,12,12,11,11,11,11,11,11,11,12,12,12,11,12,11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,11,11,11,11,11,12,12,11,12,11,12,12,11,12,12,12,12,11,12,12,12,12,10,10,10,11,11,11,11,11,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,11,11,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,12,12,12,12,11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,13,12,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,12,12,11,11,11,11,11,11,11,12,12,12,11,12,11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,11,11,11,11,11,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,11,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,13,12,11,12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,12,12,12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,12,13,13,13,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,13,13,13,13,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,13,12,13,13,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,13,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,13,12,13,13,12,13,12,13,12,12,13,13,13,13,12,13,13,13,13,8,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,12,12,12,12,13,13,13,12,12,13,13,13,11,12,12,12,12,12,12,12,13,12,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,13,13,12,13,12,13,13,12,12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,13,12,12,12,12,12,13,11,12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,13,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,13,12,12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,12,12,13,13,12,12,13,13,13,12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,13,13,13,13,12,13,12,13,13,12,13,13,13,13,13,13,13,13,13,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,12,13,12,13,13,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,13,12,13,13,12,12,12,13,13,13,13,13,13,13,12,13,13,13,13,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,13,12,11,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,13,12,12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,13,13,13,13,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,8,11,11,11,11,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,11,12,12,12,12,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,13,13,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,13,11,11,11,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,11,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,12,12,12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,12,13,13,13,12,12,13,13,13,13,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,13,12,13,13,12,12,12,13,13,13,13,13,13,13,12,13,13,13,13,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,12,12,12,12,12,13,13,12,13,12,13,13,12,12,12,12,12,12,12,12,13,12,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,13,13,13,13,12,13,13,13,13,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,12,12,12,13,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,12,12,12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,12,12,13,13,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,13,13,13,13,12,12,12,13,12,13,13,13,13,13,12,13,13,13,13,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,11,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,12,13,12,13,13,12,12,12,12,12,12,12,13,13,13,12,13,12,13,13,12,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,12,12,12,13,12,12,12,13,13,13,13,13,13,13,12,13,13,13,13,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,5,5,4,7,7,4,7,6,5,7,7,7,8,9,7,9,9,5,7,7,7,9,9,7,9,8,6,7,8,8,9,10,8,10,10,8,9,10,10,11,12,10,11,12,8,10,10,10,11,12,10,12,11,6,8,7,8,10,10,8,10,9,8,10,10,10,11,12,10,12,12,8,10,9,10,12,11,10,12,11,5,8,8,8,10,10,8,10,10,7,9,10,9,10,11,10,11,11,8,10,10,10,12,12,10,12,11,7,9,9,9,11,11,9,11,11,9,10,11,11,11,12,11,12,12,9,11,11,11,12,12,11,12,12,7,9,9,10,11,12,10,12,11,9,11,10,11,11,12,12,13,13,9,11,11,12,13,13,11,13,11,5,8,8,8,10,10,8,10,10,8,10,10,10,11,12,10,12,12,7,9,9,9,11,11,9,11,10,7,9,9,10,11,12,10,12,11,9,11,11,11,11,13,12,13,13,9,10,11,12,13,13,11,12,11,7,9,9,9,11,11,9,11,11,9,11,11,11,12,12,11,12,12,9,11,10,11,12,12,10,12,11,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,6,6,6,7,7,6,7,7,6,7,7,7,7,8,7,7,8,6,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,9,9,8,9,9,8,8,8,8,9,9,8,9,9,7,8,8,8,8,8,8,8,8,8,8,8,8,9,9,8,9,9,8,8,8,8,9,9,8,9,9,5,8,8,8,8,8,8,8,8,8,8,8,8,9,9,8,9,9,8,8,8,8,9,9,8,9,9,8,8,8,8,9,9,8,9,9,8,8,9,9,9,9,9,9,9,8,9,9,9,9,9,9,9,9,7,8,8,8,9,9,8,9,9,8,9,8,9,9,9,9,9,9,8,8,8,9,9,9,9,9,9,6,8,8,8,8,8,8,8,8,8,8,8,8,9,9,8,9,9,8,8,8,8,9,9,8,9,9,7,8,8,8,9,9,8,9,9,8,8,9,9,9,9,9,9,9,8,8,8,9,9,9,9,9,9,8,8,8,8,9,9,8,9,9,8,9,9,9,9,9,9,9,9,8,9,8,9,9,9,9,9,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,5,4,4,7,7,4,7,6,5,6,7,7,8,9,7,9,9,5,7,6,7,9,9,7,9,8,6,8,8,8,10,10,8,10,10,8,9,10,10,11,12,10,12,12,8,10,10,10,12,12,10,12,11,6,8,8,8,10,10,8,10,10,8,10,10,10,11,12,10,12,12,8,10,9,10,12,11,10,12,11,5,8,8,8,10,10,8,10,10,8,9,10,10,11,11,10,11,11,8,10,10,10,11,12,10,12,11,8,10,10,10,11,11,10,11,11,10,11,11,11,12,13,11,12,13,10,11,11,11,13,13,11,13,13,7,9,9,10,11,12,10,12,11,9,11,11,11,12,13,12,14,13,9,11,11,12,13,14,11,13,12,5,8,8,8,10,10,8,10,10,8,10,10,10,11,12,10,12,12,8,10,9,10,12,11,9,11,11,7,9,9,10,11,12,10,12,11,9,11,11,11,12,13,12,14,13,9,11,11,12,13,14,11,13,12,8,10,10,10,11,11,10,11,11,10,11,11,11,13,13,11,13,13,10,11,10,11,13,12,11,13,12,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,6,6,8,8,5,7,7,9,9,5,7,7,9,9,6,8,8,11,11,6,8,8,11,11,6,7,7,9,9,7,8,9,10,11,7,9,9,11,10,8,9,10,12,12,8,10,10,12,12,6,7,7,9,9,7,9,9,10,10,7,9,8,11,10,8,10,10,12,12,8,10,9,12,12,8,9,9,11,11,9,10,10,12,12,9,11,11,12,13,11,12,12,13,14,11,12,12,14,14,8,9,9,11,11,9,11,10,13,12,9,10,10,13,12,11,12,12,14,14,11,12,12,14,13,7,8,9,10,10,8,10,10,11,11,8,10,10,11,11,10,11,11,13,13,10,11,11,13,13,8,9,10,10,11,10,11,11,12,13,10,11,11,12,12,11,11,12,13,14,11,12,12,14,14,8,10,10,11,11,10,11,11,12,13,10,11,11,12,12,11,12,12,14,14,11,12,12,14,14,10,11,11,12,13,11,12,12,13,14,12,13,13,14,14,13,13,14,14,16,13,14,14,15,16,10,11,11,13,13,12,12,12,14,14,11,12,12,14,14,13,14,14,15,16,13,14,14,16,15,7,8,8,10,10,8,10,10,11,11,8,10,10,12,11,10,11,11,13,13,10,11,11,13,13,8,10,10,11,11,10,11,11,12,12,10,11,11,12,12,11,12,12,14,14,11,12,12,14,14,8,10,9,11,10,10,11,11,13,12,10,11,10,13,12,11,12,12,14,14,11,12,11,14,13,10,11,11,13,13,11,12,12,14,14,12,12,12,14,14,13,14,14,15,16,13,14,14,15,15,10,11,11,13,12,12,12,12,14,14,11,12,12,14,13,13,14,14,16,15,13,14,13,16,14,10,11,11,13,13,12,12,13,14,15,12,13,13,14,15,13,14,15,15,16,13,14,14,16,16,11,12,13,14,14,13,13,14,15,16,13,14,14,15,16,14,15,15,16,17,14,15,16,17,17,11,12,12,14,14,13,14,14,15,16,13,14,14,15,15,14,15,15,16,18,14,15,15,17,16,13,14,15,15,16,15,15,16,16,18,15,15,15,17,17,16,16,17,17,18,16,16,16,18,18,14,14,14,16,16,15,15,15,16,17,15,15,15,16,17,16,17,17,18,18,16,16,17,18,17,10,11,11,14,13,12,13,13,15,14,11,13,13,15,14,13,15,15,16,16,13,14,14,16,16,11,12,12,14,14,13,13,13,15,15,13,14,13,15,15,15,15,15,17,16,14,15,15,17,16,11,13,12,14,14,13,14,13,15,15,13,14,13,15,15,14,15,15,17,17,14,15,15,17,16,14,14,14,16,16,14,15,15,17,17,15,15,16,17,16,17,16,17,18,18,16,17,17,18,18,13,14,14,16,15,15,15,15,17,17,14,16,15,16,16,17,17,17,18,18,16,17,16,20,19,6,8,8,10,10,8,10,10,11,11,8,10,10,12,11,10,11,11,13,13,10,11,11,13,13,8,9,10,11,11,10,11,11,12,12,10,11,11,13,12,11,12,12,14,14,11,12,12,14,14,9,10,10,11,11,10,11,11,12,12,10,11,11,13,12,11,12,12,14,14,11,12,12,14,14,10,10,11,12,13,11,12,12,14,14,11,12,12,14,14,13,14,14,15,16,13,14,14,15,16,10,11,11,13,13,12,12,12,14,14,12,13,12,14,14,13,14,14,16,16,13,14,14,15,15,9,10,10,11,12,10,11,11,12,13,10,11,11,13,12,11,12,12,14,14,11,12,12,14,14,10,10,11,12,13,11,12,12,13,14,11,12,12,13,14,12,13,14,14,15,12,13,13,15,15,10,11,11,13,13,11,12,12,13,14,11,12,12,14,13,12,13,13,15,15,12,13,13,15,15,12,11,13,12,14,13,13,14,14,15,13,13,14,14,15,14,15,15,16,17,14,15,15,16,17,12,13,12,14,14,13,14,14,15,15,13,14,14,15,15,14,15,15,16,17,14,15,15,16,17,8,9,9,11,11,10,11,11,12,13,10,11,11,13,12,12,13,13,14,15,11,13,12,15,14,9,11,10,12,12,11,12,12,13,14,11,12,12,14,13,13,13,14,15,15,13,14,13,15,15,9,11,11,12,12,11,12,12,14,14,11,12,12,14,13,13,14,14,15,16,13,14,13,15,14,11,12,12,14,13,12,13,13,14,15,13,14,14,16,15,15,15,15,15,16,15,16,15,17,17,11,12,12,14,14,13,14,14,15,15,12,13,13,15,14,15,15,15,17,17,14,15,15,17,15,11,12,12,14,14,12,13,13,15,15,12,13,13,15,15,14,15,15,17,17,14,15,15,16,16,12,13,13,14,15,13,14,14,16,16,14,14,14,15,16,15,16,16,17,17,15,16,16,17,17,12,13,13,15,15,14,14,14,16,16,14,14,15,16,16,15,16,16,17,17,15,16,16,17,17,14,15,15,15,16,15,15,16,16,18,15,16,16,17,17,17,17,17,18,18,16,17,17,19,18,14,15,15,16,17,15,16,16,17,17,15,16,16,18,17,16,17,17,19,18,17,17,17,19,18,10,12,12,14,14,13,13,14,15,15,12,14,13,16,15,15,15,15,17,17,14,15,15,17,16,12,13,13,15,14,13,14,14,16,16,14,14,15,17,16,15,16,16,17,17,15,16,16,18,17,12,13,13,15,14,14,15,15,16,16,13,15,14,16,15,16,17,16,19,17,15,16,16,17,17,14,15,15,17,15,15,16,15,17,17,16,17,16,18,17,17,17,18,18,18,17,17,18,19,18,14,15,15,16,16,15,16,16,17,18,15,16,16,18,16,17,18,18,19,19,17,18,17,18,19,6,8,8,10,10,8,10,10,11,11,8,10,10,12,11,10,11,11,13,13,9,11,11,13,13,9,10,10,11,11,10,11,11,12,12,10,11,11,12,12,11,12,12,14,14,11,12,12,14,14,8,10,9,11,11,10,11,11,12,12,10,11,11,12,12,11,12,12,14,14,11,12,12,14,14,10,11,11,13,13,11,12,13,14,14,12,12,12,14,14,13,14,14,15,16,13,14,14,16,16,10,11,10,13,12,11,12,12,14,14,11,12,12,14,14,13,14,14,15,16,13,14,14,16,15,8,9,9,11,11,10,11,11,12,13,10,11,11,13,12,12,13,13,14,15,12,13,13,15,14,10,11,11,12,12,11,11,12,13,14,11,12,12,14,14,13,13,14,15,16,13,14,14,15,15,9,10,11,12,12,11,12,12,13,14,11,12,12,14,13,13,14,14,15,16,12,14,13,15,15,11,12,12,14,14,12,13,13,14,15,13,14,14,16,15,14,15,15,15,17,15,15,16,16,17,11,12,12,13,14,13,14,14,15,15,12,13,13,15,14,15,16,15,16,17,14,16,15,17,15,9,10,10,12,11,10,11,11,13,13,10,11,11,13,12,11,12,12,14,14,11,12,12,14,14,10,11,11,12,13,11,12,12,13,14,11,12,12,14,14,12,13,13,15,15,12,13,13,15,15,10,11,10,13,12,11,12,12,13,13,11,12,12,14,13,12,13,13,15,15,12,13,13,15,14,12,13,12,14,14,13,14,14,15,15,13,14,14,15,15,14,15,15,16,16,14,15,15,16,16,11,13,11,14,12,13,13,13,15,14,12,14,13,15,14,15,15,15,17,16,14,15,14,17,15,10,12,12,14,14,13,13,14,15,16,12,14,13,15,15,14,15,16,17,17,14,15,16,17,17,12,13,13,14,15,13,14,14,16,16,14,14,15,16,16,16,16,16,17,17,16,16,16,18,18,12,13,13,14,15,14,14,15,16,16,13,14,14,16,15,16,16,16,17,18,15,16,16,17,17,14,15,15,16,16,15,15,16,17,17,15,16,16,17,18,17,18,18,18,19,17,18,18,19,19,14,15,15,16,16,15,16,16,17,17,15,16,16,17,17,17,17,18,20,18,17,18,17,18,18,11,12,12,14,14,12,13,14,15,15,12,13,13,15,15,14,15,15,16,17,14,15,15,16,17,12,13,13,15,15,14,14,14,16,16,14,14,14,16,16,15,16,16,17,17,15,16,16,17,17,12,13,13,15,14,13,14,14,16,15,14,15,14,16,15,15,16,16,17,17,15,16,16,17,16,14,15,15,16,16,15,16,16,17,17,16,16,16,17,17,17,17,17,19,18,17,17,17,18,19,14,15,14,17,15,15,16,16,17,17,15,16,15,17,17,16,17,17,18,18,16,17,17,18,17,6,11,11,13,13,11,12,12,14,14,11,12,12,14,14,13,14,14,16,16,13,14,14,16,16,11,12,12,14,14,12,13,13,15,15,12,13,13,15,15,14,15,15,16,17,14,15,15,17,18,11,12,12,14,14,12,13,13,15,15,12,13,13,15,15,14,15,15,17,17,14,15,15,16,16,13,14,14,15,16,14,15,15,16,17,14,15,15,17,16,15,16,17,18,17,16,16,16,18,17,14,14,15,16,16,14,15,15,18,16,14,15,15,17,16,16,17,17,18,18,16,17,16,18,17,11,12,12,14,14,12,13,13,15,15,12,13,13,15,15,14,15,15,17,17,14,15,15,16,16,12,13,13,15,15,13,14,14,15,16,13,14,14,16,16,15,16,16,17,17,15,15,16,17,17,12,13,13,15,15,14,14,14,16,16,13,14,14,16,16,15,16,16,17,17,15,16,16,17,17,14,14,15,15,16,15,15,16,16,17,15,15,16,16,17,16,17,17,17,18,16,17,17,18,18,14,15,15,16,16,15,16,16,17,17,15,16,16,17,17,17,17,17,18,19,17,17,17,18,18,10,12,12,14,14,12,13,14,15,16,13,14,13,15,15,14,15,15,17,17,14,15,16,17,17,12,13,13,15,15,13,14,14,15,15,14,15,14,16,16,15,16,16,17,18,15,17,16,18,17,12,13,13,15,15,14,14,14,16,16,13,14,14,16,15,15,16,16,17,18,15,16,16,17,17,14,14,14,16,16,15,15,16,17,17,15,16,16,17,17,17,17,17,18,20,17,17,17,19,19,14,15,15,16,16,15,17,16,18,18,15,16,15,17,16,17,18,19,19,19,17,17,17,18,17,13,14,14,16,16,14,15,15,17,17,14,15,15,16,17,15,17,17,18,18,16,16,17,18,17,14,15,15,16,17,15,16,16,17,17,15,16,16,17,17,16,17,17,18,18,17,17,17,18,19,14,15,15,16,17,15,16,16,17,17,15,16,16,17,17,16,17,17,18,18,17,17,17,19,19,16,16,16,16,18,16,17,17,17,18,17,17,17,17,19,18,18,18,19,19,18,18,18,19,20,16,16,17,18,18,16,18,17,18,18,17,17,17,20,19,18,18,19,21,20,18,20,18,18,19,10,12,12,14,14,14,14,15,15,17,14,15,14,17,15,16,16,17,18,18,16,18,17,19,18,12,14,13,16,15,14,14,15,15,17,15,16,16,18,17,16,17,18,17,19,17,19,18,20,19,12,13,13,15,15,15,16,17,17,18,14,16,14,17,16,17,18,18,19,19,17,17,17,18,18,15,15,15,17,16,15,16,16,17,17,17,19,17,18,18,18,18,18,18,21,19,20,19,20,19,15,15,16,16,17,17,17,18,20,20,15,16,16,18,17,18,19,19,19,20,18,19,18,19,17,6,11,11,13,13,11,12,12,14,14,11,12,12,14,14,13,14,14,16,16,13,14,14,16,16,11,12,12,14,14,12,13,13,15,15,12,13,13,15,15,14,15,15,17,17,14,15,15,17,16,11,12,12,14,14,12,13,13,15,15,12,13,13,15,15,14,15,15,16,16,14,15,15,16,16,13,14,14,16,16,15,15,15,16,16,14,15,15,17,16,16,17,17,19,18,16,17,17,18,18,13,14,14,15,15,14,15,15,17,16,14,15,15,17,16,16,17,16,17,18,15,16,16,18,18,10,12,12,14,14,12,13,14,15,15,12,13,13,15,15,14,15,15,17,17,14,15,15,17,16,12,13,13,15,15,14,14,14,15,16,14,15,15,16,16,15,16,16,17,18,16,16,16,18,18,12,13,13,14,14,14,14,15,16,16,13,14,14,16,16,15,16,16,18,18,15,16,16,19,17,14,15,15,16,17,15,15,16,17,17,16,17,16,17,18,17,17,18,17,19,17,17,18,18,19,14,14,14,16,16,15,16,16,17,17,15,16,15,17,17,17,17,17,19,20,16,17,17,18,18,11,12,12,14,14,12,13,13,15,15,12,13,13,15,15,14,15,15,16,16,14,15,14,16,16,12,13,13,15,15,14,14,14,16,16,13,14,14,16,16,15,16,16,18,17,15,16,16,17,17,12,13,13,15,15,13,14,14,16,16,13,14,14,16,16,15,16,15,18,18,15,16,15,17,16,14,15,15,16,16,15,16,16,17,17,15,16,16,18,17,16,17,17,18,18,16,17,17,18,18,14,15,14,16,15,15,16,15,17,17,15,16,15,17,16,16,17,17,18,18,17,17,16,19,17,10,12,12,14,15,14,14,15,15,17,14,15,14,17,15,16,17,17,17,18,16,17,17,18,18,12,14,13,16,15,14,14,16,15,17,15,17,16,18,17,17,17,18,17,19,18,18,18,19,18,12,13,14,15,15,15,16,16,16,17,14,15,14,18,16,18,17,18,19,19,17,18,17,20,18,15,15,15,17,17,15,16,16,17,18,18,18,18,19,18,18,18,19,18,20,18,19,19,21,21,15,15,16,16,17,17,18,18,18,18,15,16,16,17,17,17,19,20,19,20,17,18,18,19,17,13,14,14,16,16,14,15,15,16,17,14,15,15,17,17,16,16,17,17,18,15,17,16,17,17,14,15,15,16,16,15,16,16,17,17,16,16,16,17,17,17,17,18,17,18,17,17,17,18,20,14,15,15,17,16,15,16,16,17,17,15,16,16,17,17,17,17,17,18,18,16,17,17,19,18,16,16,17,17,17,17,18,17,19,18,17,17,17,18,19,17,20,18,19,21,17,19,18,19,20,15,17,15,17,16,16,17,17,18,18,17,17,17,18,17,18,19,18,19,21,18,18,17,19,19,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,5,4,8,8,4,8,8,5,7,8,8,9,10,8,10,10,5,8,7,8,10,10,8,10,9,7,9,9,9,11,11,9,11,11,9,11,11,11,12,13,11,13,13,9,11,11,11,13,13,11,13,13,7,9,9,9,11,11,9,11,11,9,11,11,11,13,13,11,13,13,9,11,11,11,13,13,11,13,12,5,9,9,9,11,11,9,11,11,9,11,11,11,12,13,11,13,13,9,11,11,11,13,13,11,13,13,9,11,12,11,13,13,12,13,13,11,12,13,13,14,15,13,14,14,12,13,13,13,15,15,13,15,14,8,10,10,11,13,13,12,14,13,11,12,12,13,14,15,13,15,15,11,12,12,13,15,15,13,15,14,5,9,9,9,11,11,9,11,11,9,11,11,11,13,13,11,13,13,9,11,10,11,13,13,11,13,12,8,10,10,11,13,13,12,13,13,11,12,12,13,14,15,14,15,15,10,12,12,13,14,15,13,15,14,9,12,11,12,13,13,11,13,13,12,13,13,13,15,15,13,14,15,11,13,12,13,15,14,13,15,14,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,2,0,0,0,64,0,0,0,72,46,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,104,242,5,0,0,0,0,0,0,0,0,0,144,242,5,0,0,0,0,0,0,0,0,0,184,242,5,0,224,242,5,0,0,0,0,0,0,0,0,0,8,243,5,0,48,243,5,0,0,0,0,0,0,0,0,0,88,243,5,0,128,243,5,0,0,0,0,0,0,0,0,0,168,243,5,0,208,243,5,0,128,243,5,0,0,0,0,0,248,243,5,0,32,244,5,0,72,244,5,0,112,244,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,64,0,0,0,40,242,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,2,7,14,16,17,18,20,21,7,4,6,8,11,12,14,16,13,5,4,4,8,9,11,13,15,8,4,3,5,7,9,10,17,11,8,4,4,6,9,9,17,11,9,7,6,5,7,8,19,13,11,9,9,7,8,8,21,15,13,11,10,8,8,7,5,0,0,0,243,0,0,0,64,45,6,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,56,46,6,0,0,0,0,0,5,0,0,0,53,12,0,0,240,32,6,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,40,45,6,0,0,0,0,0,5,0,0,0,243,0,0,0,232,31,6,0,1,0,0,0,0,0,56,224,0,0,56,96,2,0,0,0,0,0,0,0,224,32,6,0,0,0,0,0,5,0,0,0,243,0,0,0,224,30,6,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,216,31,6,0,0,0,0,0,5,0,0,0,243,0,0,0,216,29,6,0,1,0,0,0,0,0,84,224,0,0,84,96,2,0,0,0,0,0,0,0,208,30,6,0,0,0,0,0,5,0,0,0,53,12,0,0,136,17,6,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,192,29,6,0,0,0,0,0,5,0,0,0,53,12,0,0,56,5,6,0,1,0,0,0,0,0,124,224,0,0,92,96,3,0,0,0,0,0,0,0,112,17,6,0,0,0,0,0,1,0,0,0,7,0,0,0,16,5,6,0,1,0,0,0,0,0,56,224,0,0,16,96,3,0,0,0,0,0,0,0,24,5,6,0,0,0,0,0,5,0,0,0,243,0,0,0,8,4,6,0,1,0,0,0,0,0,149,224,0,0,149,96,2,0,0,0,0,0,0,0,0,5,6,0,0,0,0,0,5,0,0,0,243], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+379856); +/* memory initializer */ allocate([3,6,0,1,0,0,0,0,0,92,224,0,0,92,96,2,0,0,0,0,0,0,0,248,3,6,0,0,0,0,0,5,0,0,0,243,0,0,0,248,1,6,0,1,0,0,0,0,106,120,225,0,106,120,97,2,0,0,0,0,0,0,0,240,2,6,0,0,0,0,0,5,0,0,0,53,12,0,0,168,245,5,0,1,0,0,0,0,136,83,225,0,136,51,97,3,0,0,0,0,0,0,0,224,1,6,0,0,0,0,0,1,0,0,0,25,0,0,0,32,245,5,0,1,0,0,0,0,192,18,225,0,0,153,96,5,0,0,0,0,0,0,0,64,245,5,0,0,0,0,0,1,0,0,0,25,0,0,0,152,244,5,0,1,0,0,0,0,0,120,224,0,0,16,96,5,0,0,0,0,0,0,0,184,244,5,0,0,0,0,0,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,13,0,0,0,10,0,0,0,14,0,0,0,9,0,0,0,15,0,0,0,8,0,0,0,16,0,0,0,7,0,0,0,17,0,0,0,6,0,0,0,18,0,0,0,5,0,0,0,19,0,0,0,4,0,0,0,20,0,0,0,3,0,0,0,21,0,0,0,2,0,0,0,22,0,0,0,1,0,0,0,23,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,1,3,2,4,5,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,15,15,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,13,0,0,0,10,0,0,0,14,0,0,0,9,0,0,0,15,0,0,0,8,0,0,0,16,0,0,0,7,0,0,0,17,0,0,0,6,0,0,0,18,0,0,0,5,0,0,0,19,0,0,0,4,0,0,0,20,0,0,0,3,0,0,0,21,0,0,0,2,0,0,0,22,0,0,0,1,0,0,0,23,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,1,7,7,12,12,5,11,12,12,12,5,12,11,12,12,12,12,12,12,12,12,13,13,13,13,7,11,11,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,7,13,10,13,13,13,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,7,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,8,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,8,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,10,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,8,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,11,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,11,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,7,7,7,7,8,7,8,7,7,7,8,7,8,8,8,8,8,7,8,7,8,8,8,7,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,8,9,8,8,8,8,9,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,8,9,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,8,9,8,8,8,8,9,9,8,9,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,9,9,8,8,8,8,9,9,8,9,9,7,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,9,8,8,8,8,8,9,9,8,9,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,9,9,8,8,8,8,9,8,8,9,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,9,9,8,8,8,8,9,9,8,9,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,8,9,9,8,8,8,8,9,9,8,9,8,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,6,6,5,7,7,5,7,7,5,7,7,7,7,9,7,9,9,6,7,7,8,9,9,7,9,7,6,8,8,8,9,10,8,9,9,8,9,10,9,9,10,10,10,10,8,9,9,10,10,11,9,10,10,6,8,8,8,9,9,8,10,9,8,9,9,9,10,10,10,11,10,8,10,9,10,11,10,9,11,9,6,8,8,7,9,9,7,9,9,7,9,9,8,9,10,9,10,10,8,9,9,9,10,10,9,10,9,7,9,9,9,9,10,9,10,10,9,9,10,10,9,11,10,11,11,9,10,10,10,11,11,10,11,10,6,9,8,9,9,10,9,10,9,8,10,10,9,9,10,10,11,11,9,10,10,10,11,11,9,11,9,6,8,8,7,9,9,7,9,9,8,9,9,9,9,10,9,10,10,7,9,9,9,10,10,8,10,9,6,8,9,9,9,10,9,10,9,9,10,10,9,9,11,10,11,11,8,9,10,10,11,11,9,10,9,7,9,9,9,10,10,9,10,9,9,10,10,10,10,11,10,11,11,9,10,9,10,11,11,10,11,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,3,3,3,3,3,3,0,3,0,0,0,2,0,0,0,4,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,2,6,6,9,9,5,7,8,10,11,5,8,7,11,10,8,10,11,12,13,8,11,10,13,12,6,7,8,10,11,7,8,10,10,12,8,9,9,12,12,10,10,12,12,14,10,12,12,14,13,6,8,7,11,10,8,9,9,12,12,7,10,8,12,11,10,12,12,13,14,10,12,10,14,12,9,10,11,11,13,10,10,11,11,13,11,12,12,13,14,12,12,13,11,15,13,14,14,15,14,9,11,10,13,11,11,12,12,13,13,10,11,10,13,11,13,14,14,15,15,12,13,12,15,11,6,8,9,11,12,8,9,11,12,13,8,10,10,13,13,11,12,13,14,15,11,12,13,14,14,9,9,10,12,13,10,10,12,12,14,10,11,11,13,14,12,12,14,14,15,13,13,14,15,15,9,10,10,13,13,10,11,11,13,14,10,11,10,14,13,13,13,14,15,15,12,14,13,15,14,12,12,13,13,14,12,13,14,13,15,13,14,14,15,15,14,14,15,14,16,15,15,15,16,16,12,13,13,14,14,13,14,14,15,15,12,14,13,15,14,14,15,15,16,16,14,15,14,16,14,6,9,8,12,11,8,10,10,13,13,8,11,9,13,12,11,12,12,14,14,11,13,12,15,14,9,10,10,13,13,10,10,11,13,14,10,12,11,14,13,12,13,14,14,15,13,13,13,15,14,9,10,9,13,12,10,11,11,14,13,10,12,10,14,12,13,14,13,15,15,12,14,12,15,14,12,13,13,14,14,13,13,13,14,15,13,14,14,15,15,14,14,15,14,16,14,15,15,16,16,12,13,12,14,13,13,14,14,15,15,12,14,13,15,13,15,15,15,16,16,14,15,14,16,14,11,12,12,13,14,12,13,14,14,16,12,13,13,15,15,14,14,16,15,17,14,15,15,16,16,12,13,14,14,15,13,13,15,15,16,14,14,14,15,16,15,15,16,16,17,15,15,16,16,17,13,13,13,15,15,14,14,15,15,16,13,14,14,15,16,15,15,16,16,17,15,16,15,17,16,14,15,15,16,16,15,15,16,16,17,15,16,16,17,17,16,16,17,16,18,16,17,17,17,17,15,15,15,16,16,15,16,16,17,17,15,16,16,17,16,16,17,17,18,18,16,17,16,17,16,11,12,12,15,13,13,13,13,15,15,12,14,13,16,14,14,15,15,16,16,14,15,14,17,15,13,13,13,15,14,13,14,14,16,15,14,14,14,16,15,15,15,16,16,17,15,16,15,17,16,12,14,13,15,14,14,14,14,16,15,13,14,13,16,15,15,16,16,17,16,15,16,15,17,16,15,15,15,16,16,15,15,16,16,17,15,16,16,17,17,16,16,17,17,17,17,17,17,18,17,14,15,15,16,16,15,16,16,17,16,15,16,15,17,16,17,17,17,18,17,16,17,16,18,16,6,9,9,12,12,8,10,10,12,13,8,10,10,13,12,10,12,12,14,15,11,13,12,15,14,8,9,10,12,13,9,10,11,13,14,10,11,11,14,13,12,12,13,14,15,12,13,13,15,15,8,10,10,13,13,10,11,11,13,14,10,12,10,14,13,12,13,13,15,15,12,14,13,15,14,11,12,12,13,14,12,12,13,13,15,12,13,13,15,15,14,13,15,14,16,14,15,15,16,16,12,13,13,14,14,13,13,14,15,14,12,14,13,15,14,14,15,15,16,15,14,15,14,16,14,7,9,10,12,12,9,10,11,13,14,9,11,10,13,13,11,12,13,14,15,12,13,13,15,14,9,10,11,12,13,10,10,12,13,14,11,11,12,14,14,12,12,14,14,15,13,13,14,15,15,9,11,11,13,13,11,12,12,14,14,10,12,10,14,13,13,14,14,15,15,13,14,13,16,14,12,12,13,14,15,13,13,14,14,16,13,14,14,15,15,14,14,15,14,17,14,15,15,16,16,12,13,13,15,14,13,14,14,15,15,13,14,13,16,14,15,15,15,16,16,14,15,14,16,14,7,10,9,13,12,10,11,12,12,14,10,12,11,14,12,12,13,13,14,15,12,14,13,15,14,9,11,10,13,13,10,11,12,13,14,12,13,12,15,13,13,13,14,13,15,13,14,14,16,15,10,11,11,13,13,12,12,13,14,14,11,12,11,14,13,14,14,14,15,16,13,14,13,16,13,12,13,13,14,14,12,13,13,14,15,14,14,14,15,15,14,13,15,13,16,15,15,15,17,16,13,13,13,14,14,14,14,14,15,15,12,13,13,15,14,15,16,16,16,16,14,15,14,16,13,11,12,13,14,15,12,13,14,15,16,13,14,14,15,15,14,14,15,15,17,14,15,15,16,16,13,13,14,14,15,13,13,15,14,16,14,14,15,15,16,15,14,16,15,17,15,16,16,16,17,13,14,14,15,15,14,14,15,16,16,13,15,14,16,16,15,16,16,17,17,15,16,15,17,16,14,15,15,15,17,15,15,16,15,17,15,16,16,16,17,16,16,17,16,18,17,17,17,17,18,15,15,15,17,16,15,16,16,17,17,15,16,16,17,16,16,17,17,18,18,16,17,16,18,17,11,13,12,15,14,13,13,14,15,15,13,14,13,16,14,15,15,15,16,16,15,16,15,17,16,13,14,13,15,14,13,13,14,15,15,14,15,14,16,15,15,15,16,16,16,15,16,15,18,16,13,14,14,15,15,14,15,15,15,16,13,15,13,16,15,15,16,16,17,17,15,16,15,17,16,15,15,15,16,16,15,15,15,16,17,16,16,16,17,16,16,16,17,16,17,17,17,17,18,17,15,15,15,16,16,16,16,16,17,17,15,16,15,17,16,17,17,17,18,18,16,17,16,17,15,6,9,9,12,12,8,10,10,12,13,8,10,10,13,12,11,12,13,14,15,10,12,12,14,14,9,10,10,13,13,10,10,12,13,14,10,11,11,14,13,12,13,14,14,15,12,13,13,15,15,8,10,9,13,12,10,11,11,13,14,9,11,10,14,13,12,13,13,15,15,12,13,12,15,14,12,13,13,14,14,12,13,13,14,15,13,14,14,14,15,14,14,15,14,16,14,15,15,16,16,11,12,12,14,13,13,13,13,15,15,12,13,12,15,13,14,15,15,16,16,14,15,14,16,14,7,9,10,12,13,10,10,12,12,14,10,12,11,14,13,12,13,14,14,15,12,13,13,15,14,10,11,11,13,13,11,11,12,13,14,12,13,12,14,14,13,13,14,13,16,14,14,14,15,15,9,10,11,13,14,12,12,13,13,15,10,12,10,14,13,13,14,14,15,16,13,14,13,15,13,13,14,13,14,15,12,13,13,14,15,14,14,14,15,15,14,13,15,13,16,15,16,16,16,16,12,13,13,14,14,14,14,14,15,15,12,13,13,15,14,15,15,16,16,16,14,15,13,16,13,7,10,9,12,12,9,10,11,13,13,9,11,10,14,13,12,13,13,14,15,11,13,12,15,14,9,11,11,13,13,10,10,12,13,14,11,12,12,14,14,13,13,14,14,16,13,14,14,16,15,9,11,10,13,12,11,12,11,14,14,10,12,10,14,13,13,14,13,15,15,12,14,12,16,14,12,13,13,14,15,13,13,14,14,16,13,14,14,15,15,14,14,15,14,16,15,15,15,16,16,12,13,12,15,14,13,14,14,15,15,12,14,13,16,14,14,15,15,16,16,14,15,14,17,14,11,12,13,14,15,13,13,14,14,16,13,14,13,15,15,15,15,16,16,17,15,15,15,16,16,13,14,13,15,15,13,13,15,15,16,14,15,15,16,16,15,15,16,15,17,16,16,16,17,17,13,13,14,14,15,14,14,15,15,16,13,14,13,15,15,15,16,16,16,17,15,16,15,16,16,15,15,15,16,16,15,15,16,16,17,16,16,16,17,17,16,16,17,16,18,17,17,17,18,18,15,15,15,16,16,16,16,16,17,17,15,15,15,16,16,17,17,17,17,18,16,16,16,17,15,11,13,12,15,14,13,13,14,15,15,12,14,13,16,14,14,15,15,16,16,14,15,14,16,15,13,14,14,15,15,13,14,14,16,16,14,15,14,16,16,15,15,16,17,17,15,16,16,17,17,13,14,13,15,14,14,14,14,16,15,13,15,13,16,14,15,16,15,17,16,15,16,14,17,15,14,16,15,16,17,15,16,16,16,17,15,16,16,17,17,16,16,17,17,18,16,17,17,18,17,14,15,15,17,15,15,16,16,17,16,15,16,15,17,15,16,17,17,18,17,16,17,16,18,15,10,12,12,14,14,12,13,13,15,15,12,13,13,15,15,13,14,14,15,16,14,15,14,16,16,12,13,13,15,15,12,13,14,15,15,13,14,14,15,15,14,14,15,16,17,14,15,15,17,16,12,13,13,15,15,13,14,14,15,16,13,14,14,16,15,14,15,15,16,17,14,15,15,17,16,13,14,14,15,16,14,14,15,15,16,14,15,15,16,16,15,15,16,16,17,15,16,16,17,17,14,15,15,16,16,15,15,15,16,16,15,15,15,16,16,16,17,16,17,17,16,16,16,18,16,11,12,12,14,14,12,13,14,15,15,12,13,13,15,15,13,14,15,16,16,14,15,15,16,16,12,13,13,15,15,13,13,14,15,16,13,14,14,15,16,14,14,15,16,17,15,15,15,16,17,12,13,13,15,15,13,14,14,15,16,13,14,14,16,15,15,15,15,16,17,15,16,15,17,16,14,14,15,15,16,14,14,15,15,17,15,15,16,16,17,15,15,16,15,18,16,16,16,17,17,14,15,15,16,16,15,16,16,17,17,15,15,15,17,16,16,17,16,17,17,16,16,16,18,16,11,12,12,14,14,13,13,14,15,15,13,14,13,15,15,14,15,15,16,16,14,15,15,16,16,12,13,13,15,15,13,13,14,15,15,14,14,14,16,15,15,15,15,15,16,15,16,15,17,16,12,13,13,15,15,14,14,15,15,16,13,14,13,16,15,15,15,16,16,17,15,16,15,17,15,14,15,14,16,16,14,15,15,16,16,15,16,15,17,16,15,15,16,15,17,16,17,16,17,17,14,15,15,16,16,15,16,16,16,17,14,15,15,16,16,16,17,17,17,18,16,16,16,17,16,12,13,13,15,15,13,13,14,15,16,13,14,14,16,15,14,15,15,16,17,14,15,15,17,16,13,14,14,15,16,14,14,15,15,17,14,15,15,16,16,15,14,16,15,17,15,16,16,17,17,13,14,14,16,16,14,15,15,16,16,14,15,14,16,16,15,16,16,17,17,15,16,15,17,16,15,15,16,15,17,15,15,16,15,17,15,16,16,16,17,16,15,17,15,18,17,17,17,17,17,15,15,15,17,17,16,16,16,17,17,15,16,15,17,17,16,17,17,18,18,16,17,15,18,15,11,12,12,15,15,13,13,15,14,16,13,14,13,16,14,15,15,16,16,17,15,16,15,17,15,12,14,13,16,14,13,13,14,14,16,14,15,14,16,15,15,15,16,15,17,16,16,16,17,16,12,13,14,15,16,15,15,15,15,16,13,15,13,16,14,16,16,16,17,17,15,16,15,17,15,15,16,15,16,15,14,14,15,16,16,16,16,16,17,16,15,15,16,15,17,17,17,17,18,17,15,15,15,16,16,16,16,16,16,17,14,15,15,17,16,17,17,17,17,18,15,16,15,18,14,10,12,12,14,14,12,13,13,15,15,12,13,13,15,15,14,14,15,15,16,13,15,14,16,16,12,13,13,15,15,13,14,14,15,16,13,14,14,15,15,14,15,15,16,17,14,15,15,17,16,12,13,13,15,15,13,14,14,15,15,12,14,13,15,15,14,15,15,16,17,14,15,14,17,15,14,15,15,16,16,14,15,15,16,17,15,15,15,17,16,16,16,16,16,17,16,16,16,17,17,13,14,14,16,15,14,15,15,16,16,14,15,14,16,16,15,16,16,17,17,15,16,15,17,16,11,12,12,14,15,13,13,14,14,15,13,14,13,15,15,14,15,15,16,16,14,15,15,16,16,12,14,13,15,15,13,13,14,15,16,14,15,14,16,15,15,15,16,15,17,15,16,16,17,16,12,13,13,15,15,14,14,15,15,16,13,14,13,16,15,15,15,16,16,17,15,15,15,16,16,14,15,15,16,16,14,15,15,16,16,15,16,16,17,17,16,16,16,16,17,16,17,17,18,17,14,14,15,15,16,15,15,16,16,17,14,15,15,16,16,16,16,16,17,17,15,16,15,17,15,11,12,12,14,14,12,13,14,15,15,12,13,13,15,15,14,15,15,16,16,13,15,14,16,16,12,13,13,15,15,13,14,14,15,16,13,14,14,16,16,15,15,15,16,17,15,15,15,17,16,12,13,13,15,15,13,14,14,16,15,13,14,13,16,15,15,16,15,17,17,14,15,14,17,16,14,15,15,16,16,15,15,16,16,17,15,16,16,17,17,16,16,16,16,18,16,17,16,18,17,14,15,14,16,15,15,15,15,17,16,14,15,14,17,15,16,17,16,17,17,15,16,15,17,15,11,12,12,15,15,13,13,15,14,16,13,15,13,16,14,15,15,16,15,17,15,16,15,17,16,12,14,13,15,15,13,13,15,15,16,15,15,15,16,15,15,15,16,15,17,16,16,16,17,16,12,13,14,15,16,14,14,15,15,16,13,14,13,16,14,16,16,16,16,17,15,16,15,17,15,15,16,15,16,16,14,15,15,16,16,16,16,16,17,16,15,15,16,15,17,17,17,17,18,17,15,15,15,15,16,16,16,16,16,17,14,15,14,16,15,17,17,17,17,18,15,16,15,17,15,12,13,13,15,15,13,14,14,15,16,13,14,14,16,15,14,15,15,16,17,14,15,15,17,16,13,14,14,16,15,13,14,15,16,16,14,15,15,16,16,15,15,16,16,17,15,16,16,17,17,13,14,13,16,15,14,15,15,16,16,13,15,14,16,15,15,16,16,17,17,15,16,14,17,15,15,15,16,17,17,15,15,16,16,17,16,16,16,17,17,16,15,17,16,18,17,17,17,18,18,15,15,15,17,14,16,16,16,17,16,15,16,15,17,15,16,17,17,18,17,16,17,15,18,15,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,7,9,9,10,10,9,10,10,10,11,9,10,10,11,10,9,10,10,11,11,9,10,10,11,11,9,10,10,11,11,10,10,10,11,11,10,10,10,11,11,10,11,11,11,11,10,11,11,11,11,9,10,10,11,11,10,10,10,11,11,9,10,10,11,11,10,11,11,11,11,10,11,11,11,11,10,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,10,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,9,10,10,11,11,10,10,11,11,11,10,10,11,11,11,10,11,11,11,12,10,11,11,12,12,10,10,11,11,11,10,11,11,11,12,11,11,11,12,12,11,11,12,12,12,11,11,12,12,12,10,11,11,11,11,11,11,11,12,12,10,11,11,12,12,11,12,11,12,12,11,12,11,12,12,11,11,11,11,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,9,10,10,11,11,10,11,10,11,11,10,11,10,11,11,10,11,11,12,12,10,11,11,12,11,10,11,11,11,11,10,11,11,11,12,11,11,11,12,12,11,11,12,12,12,11,11,11,12,12,10,11,10,11,11,11,11,11,12,12,10,11,11,12,11,11,12,11,12,12,11,12,11,12,12,11,11,11,12,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,11,11,12,12,12,12,11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,10,11,11,11,11,11,11,11,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,12,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,13,12,12,12,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,10,11,11,11,11,11,11,11,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,13,12,13,12,9,10,10,11,11,10,10,11,11,11,10,11,10,11,11,10,11,11,12,12,10,11,11,12,12,10,10,11,11,11,10,11,11,11,12,10,11,11,12,12,11,11,12,12,12,11,11,11,12,12,10,11,10,11,11,11,11,11,12,12,10,11,11,12,11,11,12,11,12,12,11,12,11,12,12,11,11,11,11,12,11,11,12,12,12,11,12,12,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,12,11,11,12,12,12,12,11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,10,10,11,11,11,10,11,11,12,12,10,11,11,12,12,11,11,11,12,12,11,11,12,12,12,10,11,11,11,12,11,11,12,12,12,11,11,12,12,12,11,11,12,12,12,11,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,9,10,10,11,11,10,11,11,11,12,10,11,11,12,11,11,12,11,12,12,11,12,11,12,12,10,11,11,12,11,11,11,11,12,12,11,12,11,12,12,11,12,12,12,12,11,12,12,12,12,10,11,11,12,12,11,12,11,12,12,11,12,11,12,12,12,12,12,12,12,11,12,12,12,12,11,12,11,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,13,12,13,12,13,13,13,13,12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,13,13,13,13,12,13,13,13,13,10,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,13,12,12,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,13,13,12,13,12,13,13,13,13,12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,13,13,13,13,12,13,13,13,13,9,10,10,11,11,10,10,11,11,11,10,11,10,11,11,10,11,11,12,12,10,11,11,12,12,10,11,11,11,11,10,11,11,12,12,11,11,11,12,12,11,11,12,12,12,11,11,12,12,12,10,11,10,11,11,10,11,11,12,12,10,11,11,12,11,11,12,11,12,12,11,11,11,12,12,11,11,11,11,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,11,11,12,12,12,12,11,12,11,12,12,12,12,12,12,12,11,12,12,12,12,9,10,10,11,11,10,11,11,11,12,10,11,11,12,11,11,11,12,12,12,11,11,12,12,12,10,11,11,12,12,11,11,12,12,12,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,10,11,11,12,12,11,11,11,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,10,11,10,11,11,10,11,11,12,12,10,11,11,12,12,11,11,11,12,12,11,12,11,12,12,11,11,11,12,12,11,11,12,12,12,11,11,12,12,12,11,12,12,12,12,11,12,12,12,12,10,11,11,12,11,11,12,11,12,12,11,12,11,12,12,11,12,12,12,12,11,12,11,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,13,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,12,12,12,12,12,12,12,12,13,12,13,12,12,12,13,13,12,13,13,12,13,12,13,13,13,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,12,13,12,13,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,12,12,12,12,12,12,12,13,13,12,12,12,12,13,12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,13,13,13,13,12,13,13,13,12,10,11,11,12,12,11,11,11,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,12,12,11,11,12,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,11,12,12,12,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,13,12,13,12,12,13,13,13,12,12,12,12,12,12,12,12,12,13,12,12,12,13,12,12,13,13,13,13,12,13,13,13,13,10,11,11,12,12,11,12,12,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,13,13,11,12,11,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,12,13,12,13,12,13,13,12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,13,12,13,13,12,13,12,13,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,13,12,12,13,13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,13,12,12,12,13,12,12,12,12,12,12,12,12,13,12,13,12,12,12,12,13,12,12,13,12,13,12,13,13,12,13,12,12,12,12,12,12,13,13,13,12,12,12,12,13,12,12,13,13,13,13,12,13,13,13,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,13,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,13,12,12,13,12,13,13,12,13,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,13,12,13,13,13,12,12,12,12,12,12,12,13,12,13,12,12,12,12,13,12,12,13,13,13,12,12,13,12,13,12,10,11,11,12,12,11,11,11,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,12,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,11,12,12,12,12,12,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,10,11,11,12,12,11,11,12,12,12,11,12,12,12,12,11], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+390097); +/* memory initializer */ allocate([12,12,12,12,12,12,12,12,12,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,13,13,11,11,11,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,13,12,13,12,12,13,13,13,12,12,12,12,12,12,12,12,12,13,12,12,12,12,12,12,12,13,13,13,12,12,12,13,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,11,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,13,12,13,13,12,13,12,13,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,12,13,12,13,12,12,13,13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,12,13,12,13,12,13,13,13,13,12,12,12,12,12,12,12,13,12,13,12,12,12,12,12,12,13,13,12,12,12,13,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,13,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,13,13,12,13,12,13,12,12,12,12,12,12,12,12,12,12,13,12,13,12,13,13,12,13,13,12,13,12,13,13,13,13,12,12,12,12,12,12,12,12,13,12,12,13,12,13,12,12,13,12,13,12,12,13,12,13,12,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,5,5,4,7,8,4,8,7,5,7,8,7,7,10,8,9,9,5,7,7,8,9,9,7,10,7,5,7,8,8,9,11,8,10,10,8,9,10,10,10,12,11,12,12,8,10,10,10,12,12,10,12,11,5,8,7,8,10,10,8,11,9,8,10,10,10,11,12,10,12,12,8,10,9,11,12,12,10,12,10,5,8,8,7,10,10,8,11,10,7,9,10,9,10,12,10,12,12,8,10,10,10,12,12,10,12,11,7,9,10,9,11,12,10,12,11,9,9,12,10,10,13,12,12,13,10,12,11,12,13,13,11,13,11,7,10,9,10,11,12,10,13,11,9,11,11,11,11,13,12,14,13,10,11,11,12,14,14,11,14,11,5,8,8,8,10,11,7,10,10,8,10,10,10,11,12,10,12,12,7,10,9,10,12,12,9,12,10,7,9,10,10,11,13,10,12,11,10,11,11,11,11,14,12,14,14,9,11,11,12,13,14,11,13,11,7,10,9,10,11,12,9,12,10,10,11,12,11,11,13,12,13,13,9,12,9,12,13,12,10,13,10,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,6,7,7,7,7,8,7,8,7,7,7,8,7,8,8,8,8,8,7,8,7,7,8,8,7,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,8,9,8,8,8,8,9,9,8,9,9,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,8,8,8,8,9,9,8,9,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,9,9,8,8,8,8,8,9,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,8,9,9,8,8,8,8,9,8,8,9,8,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,5,5,5,7,7,5,7,7,5,7,7,7,8,9,7,9,9,5,7,7,7,9,9,7,9,8,5,7,8,7,9,10,8,9,9,8,9,10,9,10,12,10,11,11,8,10,9,10,11,12,9,11,10,5,8,7,8,10,9,7,10,9,8,9,10,9,10,11,10,12,11,8,10,9,10,11,11,9,12,10,5,8,8,7,9,10,8,10,9,7,9,10,9,10,11,9,11,11,8,10,9,10,11,11,10,12,10,7,9,10,9,10,12,9,11,11,9,9,12,11,10,13,11,11,13,10,12,11,11,13,13,11,13,12,7,9,9,9,11,11,9,12,11,9,11,10,10,11,12,11,13,12,9,11,11,12,13,13,11,13,11,5,8,8,8,9,10,7,10,9,8,9,10,10,10,12,10,11,11,7,10,9,9,11,11,9,11,10,7,9,9,9,11,12,9,11,11,9,11,11,11,11,13,12,13,13,9,10,11,11,12,13,10,12,11,7,10,9,9,11,11,9,12,10,10,11,12,11,12,13,12,13,13,9,12,9,11,13,11,10,13,10,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,6,6,9,9,6,8,8,10,10,6,8,8,10,10,8,9,10,12,12,8,10,9,12,12,6,8,8,10,10,8,8,9,10,11,8,9,9,11,11,9,10,11,12,13,10,11,11,13,13,6,8,8,10,10,8,9,9,11,11,8,9,8,11,10,10,11,11,13,13,9,11,10,13,12,9,10,10,12,12,10,10,11,12,13,10,11,11,13,13,12,12,13,12,15,12,13,13,15,14,9,10,10,12,12,10,11,11,13,13,10,11,10,13,12,12,13,13,14,15,12,13,12,15,12,7,8,8,10,11,8,9,10,11,12,8,9,9,11,11,10,11,11,13,14,10,11,11,13,13,8,9,9,11,12,9,10,11,11,13,9,10,10,12,12,11,11,12,13,15,11,12,12,14,14,8,9,9,11,11,9,10,11,12,13,9,10,10,12,12,11,12,12,14,15,11,12,12,14,14,10,11,12,13,13,11,12,12,13,14,12,12,12,14,14,13,13,14,14,16,14,14,14,16,15,10,11,11,13,13,12,12,12,14,14,11,12,12,14,13,14,14,14,15,16,13,14,13,16,14,7,8,8,11,10,8,9,9,11,11,8,10,9,12,11,10,11,11,13,13,10,11,11,14,13,8,9,9,12,11,9,10,10,12,12,9,11,10,13,12,11,12,12,13,14,11,12,12,15,14,8,9,9,12,11,9,10,10,12,12,9,11,10,13,11,11,12,12,14,14,11,12,12,14,13,10,11,11,13,13,11,12,12,13,14,12,13,12,14,14,13,13,14,14,16,13,14,14,16,15,10,11,11,13,13,12,12,12,14,14,11,12,12,14,13,13,14,14,15,15,13,14,13,16,14,9,10,11,12,13,11,11,12,12,14,11,11,12,13,14,13,13,14,14,16,13,13,14,15,15,11,11,12,12,14,12,12,13,13,15,12,12,13,13,15,14,14,15,15,16,14,14,14,15,16,11,12,12,13,14,12,12,13,14,15,12,13,12,14,14,14,14,15,15,16,14,14,14,16,16,13,13,14,15,16,14,14,15,15,16,14,15,15,16,16,15,15,16,16,18,16,16,16,17,17,13,14,14,15,15,14,14,15,16,16,14,15,14,16,16,16,16,16,17,18,15,16,16,17,16,9,11,10,13,12,11,12,11,14,13,11,12,11,14,12,13,14,13,15,14,13,14,13,16,14,11,12,12,14,13,12,12,13,14,14,12,13,12,15,14,14,14,14,16,16,14,15,14,17,15,11,12,11,14,12,12,13,12,15,13,12,13,12,15,13,14,14,14,16,15,14,15,14,16,15,13,14,14,15,15,14,14,15,16,16,14,15,14,16,16,15,15,16,16,17,16,16,16,17,17,13,14,14,16,15,14,15,15,16,16,14,15,14,17,15,16,16,16,17,17,15,16,15,18,16,7,8,8,10,11,8,9,9,11,12,8,9,9,12,11,10,11,11,13,14,10,11,11,14,13,8,9,9,11,11,9,10,10,12,12,9,10,10,12,12,11,12,12,13,14,11,12,12,14,14,8,9,9,12,11,9,10,11,12,13,9,11,10,13,12,11,12,12,14,14,11,12,12,14,13,10,11,11,13,13,11,12,12,13,14,11,12,12,14,14,13,13,14,14,16,13,14,14,16,15,10,12,11,13,13,12,12,12,14,14,11,12,12,14,13,14,14,14,15,16,13,14,14,16,14,8,9,9,11,11,9,10,10,12,12,9,10,10,12,12,11,11,12,13,14,11,12,12,14,14,9,9,10,11,12,10,10,11,12,13,10,10,11,12,13,12,12,13,14,15,12,12,13,14,15,9,10,10,12,12,10,11,11,13,13,10,11,11,13,13,12,13,13,15,15,12,13,13,15,14,11,11,12,13,14,12,12,13,13,15,12,12,13,14,15,14,14,15,14,16,14,14,15,15,16,11,12,12,14,14,12,13,13,15,15,12,13,13,15,14,14,15,15,16,16,14,15,14,17,15,8,9,9,11,11,9,10,10,12,12,9,11,10,13,12,11,12,12,14,14,11,13,12,15,13,9,10,10,12,12,10,10,11,12,13,10,12,11,13,13,12,12,13,13,15,12,13,13,15,14,9,10,10,12,12,11,11,12,13,13,10,12,10,13,12,12,13,13,15,15,12,13,13,15,13,11,12,12,14,14,12,12,13,14,14,12,13,13,15,14,13,13,14,13,16,14,15,14,16,16,11,12,12,14,14,13,13,13,15,15,12,13,12,15,14,14,15,15,16,17,14,15,13,16,13,10,11,11,13,14,11,12,12,13,15,11,12,12,14,14,13,14,14,15,16,13,14,14,16,16,11,11,12,12,14,12,12,13,13,15,12,13,13,13,15,14,14,15,14,17,14,14,15,15,16,11,12,12,14,14,12,13,13,15,15,12,13,13,15,15,14,15,15,16,17,14,15,15,16,16,13,14,14,14,16,14,14,15,14,17,14,15,15,14,17,16,16,17,15,18,16,16,17,16,18,13,14,14,16,16,14,15,15,17,16,14,15,15,17,16,16,17,17,18,18,16,17,16,18,17,10,11,11,14,13,11,12,12,14,14,11,13,12,15,14,14,14,14,16,15,14,15,14,16,15,11,12,12,14,13,12,13,13,15,14,13,14,13,15,14,14,15,15,16,16,14,15,15,17,15,11,12,12,14,14,13,13,13,15,15,12,13,13,15,14,15,15,15,17,17,14,15,15,17,15,13,14,14,16,15,14,15,15,16,16,15,15,15,17,16,16,16,16,16,17,16,17,16,18,17,14,14,14,16,16,15,15,15,16,16,14,15,14,17,16,16,17,17,17,18,16,17,16,18,16,7,8,8,11,11,8,9,9,11,12,8,9,9,12,11,10,11,11,13,14,10,11,11,14,13,8,9,9,11,12,9,10,11,12,13,9,11,10,13,12,11,12,12,13,14,11,12,12,14,14,8,9,9,11,11,9,10,10,12,12,9,10,10,13,12,11,12,12,14,14,11,12,11,14,13,10,11,12,13,13,11,12,12,13,14,12,13,12,14,14,13,13,14,14,16,13,14,14,16,15,10,11,11,13,13,11,12,12,14,14,11,12,12,14,13,13,14,14,15,16,13,14,13,16,14,8,9,9,11,11,9,10,11,12,13,9,10,10,12,12,11,12,13,13,14,11,12,12,14,14,9,10,10,12,12,10,10,11,12,13,11,12,11,13,13,12,12,13,13,15,12,13,13,15,15,9,10,10,12,12,10,11,12,13,14,10,11,10,13,12,12,13,13,14,15,12,13,12,15,13,12,12,12,14,14,12,12,13,14,15,13,13,13,15,15,14,14,15,13,16,14,15,15,16,16,11,12,12,14,14,12,13,13,14,15,12,13,12,14,14,14,14,15,16,16,13,14,13,16,14,8,9,9,11,11,9,10,10,12,12,9,10,10,12,12,11,12,12,14,14,11,12,11,14,14,9,10,10,12,12,10,11,11,13,13,10,11,11,13,13,12,13,13,14,15,12,13,13,15,14,9,10,9,12,11,10,11,10,13,12,10,11,10,13,12,12,13,12,15,14,12,13,12,15,14,11,12,12,14,14,12,13,13,14,15,12,13,13,15,15,14,14,15,15,17,14,15,15,16,16,11,12,11,14,13,12,13,12,15,14,12,13,12,15,13,14,15,14,16,15,13,15,14,17,14,10,11,11,13,14,11,12,13,13,15,11,12,12,14,14,14,14,15,15,17,13,14,14,15,16,11,12,12,14,14,12,12,13,14,15,13,13,13,15,15,14,15,15,15,17,15,15,15,16,16,11,12,12,13,14,13,13,14,14,15,12,13,13,14,15,14,15,15,16,17,14,15,15,16,16,14,14,14,16,16,14,14,15,15,17,15,15,15,17,16,16,16,17,16,18,16,17,17,18,17,13,14,14,15,16,14,15,15,16,17,14,15,15,16,16,16,17,17,17,18,16,16,16,17,16,10,11,11,14,13,11,12,12,14,14,11,12,12,15,13,13,14,14,16,15,13,14,14,16,15,11,12,12,14,14,12,13,13,15,15,12,13,13,15,15,14,15,15,16,17,14,15,15,17,16,11,12,11,14,12,12,13,13,15,13,12,13,12,15,13,14,15,15,16,15,14,15,14,17,14,13,14,14,16,16,14,15,15,16,17,14,15,15,16,17,16,16,17,17,18,16,17,17,18,18,13,14,14,16,13,14,15,15,17,14,14,15,14,17,14,16,17,16,17,16,16,17,16,18,15,8,11,11,13,13,10,12,12,14,14,11,12,12,14,14,13,13,14,15,16,13,14,14,16,15,10,11,11,14,14,11,12,12,14,15,11,12,12,15,14,13,14,14,15,16,13,14,14,16,16,11,12,12,14,14,12,13,13,15,15,12,13,12,15,14,14,14,15,16,16,14,15,14,16,16,12,13,13,15,15,12,13,14,15,16,13,14,14,16,16,14,15,15,16,17,15,15,16,17,17,13,14,14,16,15,14,15,15,16,16,14,15,14,16,16,16,16,16,17,17,15,16,16,18,16,10,11,11,13,14,11,12,12,14,15,11,12,12,15,14,13,14,14,16,16,13,14,14,16,16,11,11,12,14,14,12,12,13,14,15,12,13,13,15,15,14,14,15,15,17,14,14,15,16,16,11,12,12,15,14,12,13,13,15,15,12,13,13,15,15,14,15,15,17,17,14,15,15,17,16,13,12,14,14,16,13,13,15,14,17,14,13,15,15,17,15,14,16,15,18,16,15,16,16,18,13,14,14,16,16,14,15,15,17,17,14,15,15,17,16,16,17,17,18,18,16,17,16,18,17,10,11,11,14,13,11,12,12,14,14,11,13,12,15,14,13,14,14,15,16,13,14,14,16,16,11,12,12,14,14,12,13,13,14,15,12,13,13,15,15,14,14,15,15,16,14,15,15,17,16,11,12,12,14,14,13,13,13,15,15,12,13,13,15,14,14,15,15,16,17,14,15,14,17,15,13,14,13,16,15,14,14,14,15,16,14,15,14,16,16,15,15,16,16,17,16,16,16,18,17,14,14,14,16,16,15,15,15,17,16,14,15,14,17,16,16,16,17,17,18,16,17,16,18,16,11,13,13,15,15,12,13,14,15,16,12,14,14,15,15,14,15,15,16,17,14,15,15,17,17,12,13,14,14,16,13,14,14,14,16,14,14,14,15,16,15,15,16,15,18,15,16,16,17,17,13,14,14,16,16,14,14,15,16,16,14,15,14,16,16,15,16,16,17,18,15,16,16,18,17,14,14,16,13,17,15,15,16,14,18,15,15,16,14,18,16,16,18,15,19,17,17,18,16,18,15,16,15,17,17,15,16,17,18,18,16,16,16,18,17,17,18,18,19,19,17,18,17,19,18,11,12,12,15,14,13,13,14,15,16,13,14,13,16,14,15,15,15,16,17,15,16,15,17,16,12,13,13,15,14,13,13,14,15,15,14,15,14,16,15,15,15,16,16,17,16,16,16,18,17,12,13,13,15,15,14,14,15,16,16,13,14,13,16,15,16,16,16,17,18,15,16,15,17,16,14,15,14,17,15,14,15,15,16,16,15,16,15,17,16,16,15,16,15,17,17,18,17,18,17,15,15,15,16,17,16,16,16,17,17,15,16,15,17,16,17,18,18,18,18,16,17,16,18,15,8,11,11,13,13,11,12,12,14,14,10,12,12,14,14,13,14,14,15,16,13,14,13,16,15,11,12,12,14,14,12,12,13,14,15,12,13,13,15,15,14,14,15,15,16,14,14,14,16,16,10,11,11,14,14,11,12,12,14,15,11,12,12,15,14,13,14,14,16,16,13,14,14,16,15,13,14,14,15,16,14,14,15,16,16,14,15,15,16,16,15,16,16,16,18,16,16,16,17,17,12,13,13,15,15,13,14,14,16,16,12,14,13,16,15,15,16,15,17,17,14,16,15,17,16,10,11,11,13,14,11,12,13,14,15,11,13,12,14,14,14,14,15,16,16,13,14,14,16,16,11,12,12,14,14,12,13,13,14,15,13,14,13,15,15,14,15,15,16,17,14,15,15,17,16,11,12,12,14,14,12,13,13,15,15,12,13,12,15,14,14,15,15,16,17,14,15,15,16,16,14,14,14,16,16,14,14,15,16,16,15,15,15,16,16,16,16,17,16,18,16,17,17,18,18,13,13,14,15,16,14,14,15,16,17,13,14,14,16,16,16,16,17,17,18,15,16,15,17,16,10,11,11,14,13,11,12,12,14,14,11,12,12,15,14,13,14,14,16,16,13,14,14,16,16,11,12,12,14,14,12,13,13,15,15,12,13,13,15,15,14,15,15,16,17,14,15,15,17,16,11,12,11,14,14,12,13,13,15,15,12,13,12,15,14,14,15,14,16,16,14,15,14,17,16,14,14,14,16,16,14,15,15,16,17,14,15,15,17,17,16,16,17,17,18,16,17,17,18,18,13,14,12,16,14,14,15,13,17,15,13,15,13,17,14,16,16,15,18,16,15,17,14,18,15,11,12,12,14,15,13,13,14,14,16,13,14,13,15,14,15,15,16,16,17,15,16,15,17,16,12,13,13,15,15,13,13,14,15,16,14,15,14,16,16,15,15,16,15,18,16,16,16,18,17,12,13,13,15,15,14,14,15,15,16,13,14,13,15,15,16,16,16,16,18,15,16,15,17,16,15,15,15,17,16,15,15,16,16,17,16,16,16,18,17,16,16,17,15,18,17,18,17,19,18,14,14,15,15,17,15,15,16,16,17,14,15,15,16,16,17,17,18,17,19,16,17,15,17,15,11,13,12,15,15,12,14,14,15,15,12,14,13,16,15,15,15,15,17,17,14,15,15,17,16,12,14,14,16,16,14,14,15,16,16,14,14,14,16,16,15,16,17,17,18,15,16,16,18,17,12,14,13,16,14,13,14,14,16,15,13,15,14,16,14,15,16,16,17,17,15,16,15,18,15,15,15,16,17,17,15,16,16,17,18,16,16,16,18,18,17,17,18,18,19,17,17,18,19,19,14,15,14,17,13,15,16,15,18,14,15,16,15,18,14,17,18,17,18,16,16,18,16,19,15,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,5,5,4,7,7,4,7,7,5,7,7,7,8,9,7,9,9,5,7,7,7,9,9,7,9,8,6,7,8,8,9,10,8,9,10,8,9,10,10,10,12,10,11,12,8,10,10,10,11,12,10,11,11,6,8,7,8,10,9,8,10,9,8,10,10,10,11,11,10,12,11,8,10,9,10,12,11,10,12,10,5,8,8,8,10,10,8,10,10,7,9,10,9,10,11,9,11,11,8,10,10,10,12,12,10,12,11,7,9,9,9,10,11,9,11,11,9,9,11,10,11,12,10,11,12,9,11,11,11,12,12,11,12,12,7,9,9,10,11,11,10,12,11,9,11,10,11,11,12,11,13,12,10,11,11,12,13,13,11,13,11,5,8,8,8,10,10,8,10,10,8,10,10,10,11,12,10,12,11,7,10,9,9,11,11,9,11,10,7,9,9,10,11,12,10,11,11,10,11,11,11,11,13,12,13,13,9,10,11,12,12,13,11,12,11,7,9,9,9,11,11,9,11,10,9,11,11,11,12,12,11,12,12,9,11,9,10,12,11,10,12,11,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,9,15,17,20,21,22,23,5,5,7,9,11,13,17,20,9,5,5,6,8,10,15,18,11,7,5,4,6,9,13,17,14,9,7,5,6,7,10,14,17,10,8,6,6,4,5,8,20,14,13,10,8,4,3,4,23,17,16,14,12,6,4,4,2,0,0,0,64,0,0,0,112,96,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,216,47,6,0,0,0,0,0,0,0,0,0,0,48,6,0,0,0,0,0,0,0,0,0,40,48,6,0,80,48,6,0,0,0,0,0,0,0,0,0,120,48,6,0,160,48,6,0,0,0,0,0,0,0,0,0,200,48,6,0,240,48,6,0,0,0,0,0,0,0,0,0,24,49,6,0,64,49,6,0,240,48,6,0,0,0,0,0,104,49,6,0,144,49,6,0,184,49,6,0,224,49,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,0,0,0,0,0,0,0,0,0,0,2,0,0,0,64,0,0,0,152,47,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,2,7,14,16,17,17,18,20,6,3,5,8,10,11,13,15,13,5,3,5,8,9,11,12,15,7,4,3,5,7,9,11,16,10,7,5,6,7,9,10,17,11,8,7,7,6,8,8,19,13,11,9,9,8,8,9,20,14,13,11,10,8,9,9,5,0,0,0,243,0,0,0,104,95,6,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,96,96,6,0,0,0,0,0,5,0,0,0,53,12,0,0,24,83,6,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,80,95,6,0,0,0,0,0,5,0,0,0,243,0,0,0,16,82,6,0,1,0,0,0,0,0,56,224,0,0,56,96,2,0,0,0,0,0,0,0,8,83,6,0,0,0,0,0,5,0,0,0,243,0,0,0,8,81,6,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,0,82,6,0,0,0,0,0,5,0,0,0,243,0,0,0,0,80,6,0,1,0,0,0,0,0,84,224,0,0,84,96,2,0,0,0,0,0,0,0,248,80,6,0,0,0,0,0,5,0,0,0,53,12,0,0,176,67,6,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,232,79,6,0,0,0,0,0,5,0,0,0,53,12,0,0,96,55,6,0,1,0,0,0,0,0,124,224,0,0,92,96,3,0,0,0,0,0,0,0,152,67,6,0,0,0,0,0,1,0,0,0,7,0,0,0,56,55,6,0,1,0,0,0,0,0,56,224,0,0,16,96,3,0,0,0,0,0,0,0,64,55,6,0,0,0,0,0,5,0,0,0,243,0,0,0,48,54,6,0,1,0,0,0,0,0,149,224,0,0,149,96,2,0,0,0,0,0,0,0,40,55,6,0,0,0,0,0,5,0,0,0,243,0,0,0,40,53,6,0,1,0,0,0,0,0,92,224,0,0,92,96,2,0,0,0,0,0,0,0,32,54,6,0,0,0,0,0,5,0,0,0,243,0,0,0,32,52,6,0,1,0,0,0,0,76,93,225,0,76,93,97,2,0,0,0,0,0,0,0,24,53,6,0,0,0,0,0,5,0,0,0,243,0,0,0,24,51,6,0,1,0,0,0,0,136,51,225,0,136,51,97,2,0,0,0,0,0,0,0,16,52,6,0,0,0,0,0,1,0,0,0,25,0,0,0,144,50,6,0,1,0,0,0,0,192,18,225,0,0,153,96,5,0,0,0,0,0,0,0,176,50,6,0,0,0,0,0,1,0,0,0,25,0,0,0,8,50,6,0,1,0,0,0,0,0,120,224,0,0,16,96,5,0,0,0,0,0,0,0,40,50,6,0,0,0,0,0,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,13,0,0,0,10,0,0,0,14,0,0,0,9,0,0,0,15,0,0,0,8,0,0,0,16,0,0,0,7,0,0,0,17,0,0,0,6,0,0,0,18,0,0,0,5,0,0,0,19,0,0,0,4,0,0,0,20,0,0,0,3,0,0,0,21,0,0,0,2,0,0,0,22,0,0,0,1,0,0,0,23,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,1,3,2,4,5,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,15,15,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,13,0,0,0,10,0,0,0,14,0,0,0,9,0,0,0,15,0,0,0,8,0,0,0,16,0,0,0,7,0,0,0,17,0,0,0,6,0,0,0,18,0,0,0,5,0,0,0,19,0,0,0,4,0,0,0,20,0,0,0,3,0,0,0,21,0,0,0,2,0,0,0,22,0,0,0,1,0,0,0,23,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,1,5,5,4,10,10,5,10,10,5,10,10,10,10,10,10,10,10,5,10,10,10,10,10,9,10,10,6,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,7,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,6,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,6,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,7,7,6,7,8,6,8,7,7,7,8,7,7,8,8,8,8,7,7,7,8,8,8,7,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,9,9,8,8,8,8,9,9,8,9,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,9,9,8,8,8,8,9,9,8,9,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,9,9,8,8,8,8,9,9,8,9,8,7,8,8,8,8,9,8,9,8,8,8,8,8,8,9,8,9,9,8,8,8,9,9,9,8,9,9,7,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,9,9,8,8,8,8,9,9,8,9,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,9,9,8,8,8,8,9,9,8,9,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,9,9,8,8,8,8,9,9,8,9,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,8,9,9,8,8,8,9,9,9,8,9,8,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,5,6,5,7,8,5,8,7,5,7,7,7,7,9,8,9,9,5,7,7,8,9,9,7,9,7,6,8,8,8,9,10,8,9,9,8,9,10,9,9,11,10,10,11,8,10,9,10,10,11,9,10,10,6,8,8,8,9,9,8,10,9,8,9,10,9,10,10,10,11,10,8,10,9,10,11,10,9,11,9,6,8,8,7,9,9,8,9,9,7,9,9,9,9,10,9,10,10,8,9,9,9,10,10,9,10,9,7,9,9,9,10,10,9,10,10,9,9,10,10,9,11,10,11,11,9,10,10,10,11,11,10,11,10,6,9,8,9,10,10,9,10,9,8,10,10,9,9,10,10,11,11,9,10,10,10,11,11,9,11,9,6,8,8,8,9,9,7,9,9,8,9,9,9,9,10,9,10,10,7,9,9,9,10,10,9,10,9,6,8,9,9,9,10,9,10,10,9,10,10,9,9,11,10,11,11,8,10,10,10,11,11,9,10,9,7,9,9,9,10,10,9,10,10,9,10,10,10,10,11,10,11,11,9,10,9,10,11,11,10,11,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,3,3,3,3,3,3,0,3,0,0,0,2,0,0,0,4,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,2,6,6,9,9,5,7,8,10,11,5,8,7,11,10,8,10,11,12,13,8,11,10,13,12,6,7,8,10,11,7,8,10,10,12,8,9,9,12,11,10,10,12,11,14,10,11,12,14,13,6,8,7,11,10,8,9,9,11,12,7,10,8,12,10,10,12,12,13,14,10,12,10,14,11,9,10,11,11,12,10,10,11,11,13,11,12,12,13,13,12,11,13,11,15,13,14,13,14,14,9,11,10,12,11,11,12,12,13,13,10,11,10,13,11,13,13,14,14,14,12,13,11,14,11,7,8,9,11,12,9,9,11,12,13,9,10,10,13,12,11,12,13,13,15,11,12,12,14,14,9,10,10,12,13,10,10,12,12,14,11,11,11,13,13,12,12,13,13,15,12,13,13,15,14,9,10,10,12,13,10,11,11,13,14,10,12,11,14,13,12,13,13,14,15,12,13,13,15,14,12,12,13,13,14,12,13,13,13,15,13,14,14,14,15,14,14,15,14,16,14,15,15,16,16,12,13,13,14,14,13,13,14,15,14,12,13,13,15,14,14,15,15,15,16,14,15,14,16,14,7,9,8,12,11,9,10,10,12,13,9,11,9,13,12,11,12,12,14,14,11,13,12,15,13,9,10,10,13,12,10,11,12,13,14,10,12,11,14,13,12,13,13,14,15,13,13,13,15,14,9,10,10,13,12,11,11,11,13,13,10,12,10,14,12,13,13,13,14,15,12,13,12,15,13,12,13,13,14,14,12,13,13,14,15,13,14,13,15,15,14,14,15,14,16,14,15,15,16,15,12,13,12,14,13,13,13,13,15,14,12,13,13,15,13,14,15,15,16,15,14,15,14,16,14,11,12,12,13,14,12,13,14,14,15,12,13,13,14,15,14,14,15,15,16,14,15,15,16,16,12,13,13,14,15,13,13,14,14,16,13,14,14,15,15,15,15,16,15,17,15,15,15,16,16,12,13,13,14,15,13,14,14,15,16,13,14,14,15,15,15,15,16,16,17,15,15,15,17,16,14,15,15,16,16,15,15,16,15,16,15,16,16,16,17,16,16,17,16,18,16,16,17,18,17,14,15,15,16,16,15,16,16,16,17,15,16,15,17,16,16,17,17,17,18,16,16,16,17,16,11,12,12,14,13,12,13,13,15,14,12,14,13,15,14,14,15,15,16,16,14,15,14,16,15,12,13,13,15,14,13,14,14,15,15,13,14,14,16,15,15,15,15,16,16,15,16,15,17,16,12,13,13,15,14,13,14,14,15,15,13,14,13,16,14,15,15,15,16,16,15,15,15,17,15,14,15,15,16,16,15,15,15,16,16,15,16,16,17,17,16,16,17,17,17,16,17,17,18,17,14,15,15,16,15,15,15,16,16,16,15,15,15,17,15,17,17,17,18,17,16,17,16,18,16,6,9,9,12,12,8,10,10,12,13,9,11,10,13,12,10,12,12,14,14,11,13,12,14,14,8,10,10,12,12,9,10,11,12,14,10,11,11,13,13,12,12,13,13,15,12,13,13,15,14,9,10,10,13,13,10,11,11,13,13,10,12,10,14,13,12,13,13,14,15,12,13,13,15,14,11,12,12,13,14,12,12,13,13,15,12,13,13,14,14,13,13,14,13,16,14,15,15,16,15,11,12,12,14,14,13,13,13,15,14,12,13,13,15,14,14,15,15,16,15,14,14,14,16,14,7,9,10,12,12,9,10,11,13,13,9,11,10,13,13,11,12,13,14,15,12,13,13,15,14,9,10,11,12,13,10,10,12,13,14,11,11,12,14,14,12,12,14,14,15,13,13,13,15,15,9,11,11,13,13,11,12,12,14,14,10,12,10,14,13,13,14,13,15,15,12,14,13,15,14,12,12,13,13,15,12,12,14,13,15,13,14,14,15,15,14,14,15,14,17,14,15,15,16,16,12,13,13,15,14,13,14,14,15,15,12,14,13,15,14,14,15,15,16,16,14,15,14,16,14,7,10,10,12,12,10,11,11,12,13,10,12,10,14,12,12,13,13,14,15,12,13,13,15,14,9,11,10,13,12,10,10,12,12,14,11,13,12,14,13,13,13,14,13,15,13,14,14,15,14,10,11,11,13,13,12,12,12,13,14,10,12,10,14,12,13,14,14,15,15,13,14,13,15,13,12,13,13,14,14,12,12,13,14,15,13,14,14,15,15,13,13,14,13,15,14,15,15,16,16,12,13,13,14,14,13,14,14,15,15,12,13,13,15,13,15,15,15,16,16,13,14,13,16,13,11,12,13,14,14,12,13,14,14,15,12,13,13,15,15,14,14,15,15,17,14,15,15,16,16,12,13,14,14,15,13,13,14,14,16,13,14,14,15,16,14,14,16,15,17,15,15,16,16,16,12,13,13,15,15,13,14,14,15,16,13,14,14,15,16,15,15,16,17,17,15,16,15,17,16,14,15,15,15,16,15,15,16,15,17,15,15,16,16,17,16,16,16,16,18,16,16,17,17,17,14,15,15,16,16,15,16,16,16,17,15,16,15,17,16,16,17,17,17,17,16,17,16,18,17,11,12,12,14,14,13,13,14,14,15,13,14,13,15,14,14,15,15,15,16,14,15,15,17,15,12,13,13,15,14,13,13,14,15,15,14,15,14,16,15,15,15,15,15,16,15,16,15,17,16,12,13,13,15,15,14,14,14,15,16,13,14,13,16,15,15,15,16,16,17,15,16,15,17,15,14,15,15,16,16,14,15,15,16,16,15,16,16,17,16,15,15,16,15,17,16,17,17,18,17,14,15,15,16,16,15,16,16,16,17,14,15,15,17,16,17,17,17,17,18,15,16,16,18,15,6,9,9,12,12,9,10,11,12,13,8,10,10,13,12,11,12,13,14,14,10,12,12,14,13,9,10,10,12,13,10,10,12,13,14,10,11,11,13,13,12,13,13,14,15,12,13,13,15,14,8,10,10,12,12,10,11,11,13,13,9,11,10,13,13,12,13,13,14,15,12,13,12,15,13,11,12,12,14,14,12,13,13,13,15,13,13,13,14,15,14,14,15,14,16,14,15,15,15,15,11,12,12,14,13,12,13,13,15,14,12,13,12,15,13,14,14,15,16,16,13,14,13,16,13,7,10,10,12,12,10,10,12,12,14,10,11,11,13,12,12,13,13,13,15,12,13,13,15,14,10,11,11,13,13,10,10,12,12,14,12,12,12,14,13,13,13,14,13,15,13,14,14,15,14,9,10,11,13,13,11,12,12,13,14,10,12,10,14,12,13,13,14,14,15,13,13,12,15,13,12,13,13,14,14,12,13,13,14,15,13,14,14,15,15,13,13,15,13,16,15,15,15,16,16,12,13,13,14,14,13,14,14,15,15,12,13,12,15,14,15,15,15,16,16,13,14,13,15,13,7,10,9,12,12,9,10,11,13,13,9,11,10,13,13,11,13,13,14,15,11,13,12,15,14,9,11,11,13,13,10,10,12,13,14,11,12,12,14,14,12,13,14,14,15,13,13,13,15,15,9,11,10,13,12,11,12,11,14,14,10,12,10,14,13,13,14,13,15,15,12,14,12,15,14,12,13,13,14,15,13,13,14,14,15,13,14,14,15,15,14,14,15,14,17,14,15,15,16,16,12,13,12,15,13,13,14,14,15,15,12,14,13,15,13,14,15,15,16,16,14,15,14,16,14,11,12,12,14,14,13,13,14,14,15,13,14,13,15,15,14,15,15,16,17,14,15,15,16,15,12,13,13,15,15,13,13,14,15,16,14,14,14,16,15,15,15,16,15,17,15,16,15,17,16,12,13,13,14,15,14,14,15,15,16,13,14,13,15,15,15,15,16,16,17,15,15,15,16,15,14,15,15,16,16,14,15,15,16,17,15,16,16,17,17,16,15,16,15,17,16,17,17,17,17,14,15,15,15,16,15,15,16,16,17,14,15,15,16,16,16,16,17,17,18,15,16,15,17,15,11,13,12,14,14,12,13,13,15,15,12,14,13,15,14,14,15,15,16,16,14,15,14,16,15,12,13,13,15,15,13,14,14,15,16,13,14,14,16,16,15,15,16,16,17,15,16,15,17,16,12,13,13,15,14,13,14,14,16,15,13,14,13,16,14,15,16,15,17,16,15,15,14,18,15,14,15,15,16,16,15,15,16,16,17,15,16,15,17,16,16,16,17,17,18,16,17,17,18,17,14,15,15,16,15,15,16,15,17,16,15,15,15,17,15,16,17,17,18,17,16,17,16,18,15,10,12,12,14,14,12,13,13,14,14,12,13,13,14,14,13,14,14,15,15,13,14,14,16,15,11,12,13,14,14,12,13,13,15,15,12,13,13,15,15,13,14,15,15,16,14,15,15,16,16,12,13,13,14,14,13,13,14,15,15,13,14,13,15,15,14,15,15,16,16,14,15,14,16,15,13,14,14,15,15,13,14,14,15,16,14,14,15,16,16,14,15,15,15,17,15,16,16,17,17,13,14,14,15,15,14,15,15,16,16,14,15,15,16,16,15,16,16,16,17,15,16,15,17,16,11,12,12,14,14,12,13,13,14,15,12,13,13,15,14,13,14,14,15,16,13,14,14,16,15,12,13,13,14,15,13,13,14,15,15,13,14,14,15,15,14,14,15,15,17,14,15,15,16,16,12,13,13,15,15,13,14,14,15,15,13,14,13,15,15,14,15,15,16,17,14,15,15,16,16,13,13,14,15,16,14,14,15,15,16,14,15,15,16,16,15,15,16,15,18,15,16,16,17,17,14,15,15,16,16,15,15,15,16,16,14,15,15,17,16,16,16,16,17,17,15,16,16,17,16,10,12,12,14,14,12,13,13,14,15,12,13,13,15,14,14,14,15,15,16,14,15,14,16,15,12,13,13,15,14,13,13,14,15,15,13,14,14,15,15,14,14,15,15,16,14,15,15,16,16,12,13,13,15,15,13,14,14,15,16,13,14,13,15,14,15,15,15,16,16,14,15,15,16,15,13,14,14,16,15,14,14,14,15,16,14,15,15,16,16,15,15,16,15,17,16,17,16,17,17,14,14,15,15,16,15,15,16,16,16,14,15,14,16,15,16,16,16,17,17,15,16,15,17,15,11,13,13,14,15,13,13,14,15,15,13,14,13,15,15,14,15,15,15,16,14,15,15,17,15,13,13,14,15,15,13,14,15,15,16,14,14,14,16,16,15,14,16,15,17,15,16,16,17,16,13,14,14,15,15,14,14,14,16,16,13,15,14,16,15,15,15,16,17,17,15,16,15,17,16,14,15,15,15,16,15,15,16,15,17,15,16,16,16,17,16,16,17,15,18,16,17,17,17,17,14,15,15,16,16,15,16,16,17,17,15,16,15,17,16,16,17,17,18,18,16,17,15,18,16,10,12,12,14,14,13,13,14,14,15,13,14,13,15,14,14,15,15,15,16,15,15,15,16,15,12,13,13,15,14,12,12,14,14,15,14,15,14,16,15,15,14,15,14,17,15,16,16,17,16,12,13,13,14,15,14,14,15,15,16,13,14,12,16,14,15,16,16,16,17,15,16,14,17,15,14,15,14,16,15,14,14,15,15,15,15,16,15,17,16,15,14,16,14,16,16,17,17,18,17,14,14,15,15,16,15,16,16,16,17,14,15,14,16,15,16,16,17,17,17,15,16,14,17,14,10,12,12,14,13,12,13,13,14,14,11,13,12,14,14,13,14,14,15,16,13,14,14,16,15,12,13,13,14,14,13,13,14,15,15,13,14,13,15,15,14,14,15,15,16,14,15,15,16,16,11,13,12,14,14,12,13,13,15,15,12,13,13,15,15,14,15,15,16,16,13,14,14,16,15,13,14,14,15,15,14,15,15,15,16,14,15,15,16,16,15,16,16,16,17,16,16,16,17,17,13,14,14,15,15,14,15,15,16,16,13,14,14,16,15,15,16,16,17,17,15,15,15,17,15,11,12,12,14,14,12,13,13,14,15,12,13,13,15,14,14,14,15,15,16,14,14,14,16,15,12,13,13,15,14,13,13,14,15,15,13,14,14,16,15,14,15,15,15,16,15,15,15,16,16,12,13,13,14,15,13,13,14,15,15,13,14,13,15,15,15,15,15,16,16,14,15,14,16,15,14,14,15,16,16,14,15,15,15,16,15,16,15,16,16,15,15,16,15,17,16,16,16,17,17,13,14,14,15,16,14,15,15,16,16,14,14,14,16,16,16,16,16,17,17,15,15,15,17,15,11,12,12,14,14,12,13,13,14,15,12,13,13,15,14,14,14,14,15,16,13,14,14,16,15,12,13,13,15,15,13,13,14,15,16,13,14,14,15,15,14,15,15,16,17,14,15,15,17,16,12,13,13,15,14,13,14,14,15,15,13,14,13,15,15,14,15,15,16,16,14,15,14,17,15,14,15,15,16,16,14,15,15,16,17,15,15,15,17,17,15,16,16,16,17,16,17,16,17,17,13,15,14,16,15,14,15,15,16,16,14,15,14,16,15,16,16,16,17,17,15,16,15,17,15,10,12,12,14,14,13,13,14,14,15,13,14,13,15,14,14,15,15,15,17,14,15,15,16,15,12,13,13,15,14,12,12,14,14,15,14,15,14,16,15,15,14,16,15,17,15,16,16,17,16,12,13,13,14,15,14,14,15,15,16,12,14,12,15,14,15,16,16,16,17,15,16,14,17,14,14,15,14,16,16,14,14,15,15,16,15,16,16,17,16,15,14,16,14,17,16,17,17,18,17,14,14,15,15,16,15,15,16,16,17,14,15,14,16,15,16,17,17,17,18,15,16,14,17,14,11,13,13,15,14,13,13,14,15,15,12,14,13,15,15,14,15,15,15,17,14,15,14,16,15,13,14,14,15,15,13,14,15,15,16,14,15,14,16,16,15,15,16,16,17,15,16,16,17,17,13,14,13,15,15,14,14,14,16,16,13,15,14,16,15,15,16,16,17,17,15,16,14,17,15,15,15,15,16,17,15,15,16,16,17,15,16,16,17,17,16,15,17,16,17,17,17,17,18,18,14,15,15,17,15,15,16,16,17,16,15,16,15,17,15,16,17,17,17,17,16,17,15,18,15,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,7,8,8,10,10,8,9,9,10,11,8,9,9,10,10,9,10,10,11,11,9,10,10,11,11,8,9,9,10,10,9,9,10,11,11,9,10,10,11,11,10], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+400337); +/* memory initializer */ allocate([10,11,11,11,10,11,11,11,11,8,9,9,10,10,9,10,10,11,11,9,10,9,11,11,10,11,11,11,11,10,11,10,11,11,10,10,10,11,11,10,11,11,11,11,10,11,11,11,11,11,11,11,11,12,11,11,11,11,12,10,10,10,11,11,10,11,11,11,11,10,11,11,11,11,11,11,11,12,11,11,11,11,12,11,8,9,10,11,11,9,10,11,11,11,9,10,10,11,11,10,11,11,12,12,10,11,11,12,12,10,10,10,11,11,10,10,11,11,12,10,11,11,12,12,11,11,12,12,12,11,11,12,12,12,10,10,10,11,11,10,11,11,12,12,10,11,11,12,11,11,12,12,12,12,11,12,11,12,12,11,11,11,11,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,8,10,9,11,11,9,10,10,11,11,9,10,10,11,11,10,11,11,12,12,10,11,11,12,12,10,10,10,11,11,10,11,11,12,12,10,11,11,12,12,11,11,12,12,12,11,12,12,12,12,10,10,10,11,11,10,11,11,12,12,10,11,10,12,11,11,12,11,12,12,11,12,11,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,11,11,12,12,12,12,11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,10,11,11,11,12,11,11,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,13,12,13,12,12,12,13,13,11,12,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,12,12,12,12,12,12,12,12,13,12,12,13,13,13,12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,12,13,13,13,12,12,12,13,12,12,13,13,13,13,12,13,13,13,13,10,11,11,12,11,11,11,11,12,12,11,12,11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,11,12,12,12,12,12,12,12,11,12,11,12,12,12,12,12,13,13,12,12,12,13,12,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,12,12,13,13,12,13,12,13,12,12,13,13,13,13,13,13,13,13,13,8,10,10,11,11,9,10,10,11,11,9,10,10,11,11,10,11,11,12,12,10,11,11,12,12,9,10,10,11,11,10,10,11,11,12,10,11,11,12,12,11,11,12,12,12,11,11,12,12,12,10,10,10,11,11,10,11,11,12,12,10,11,10,12,11,11,12,11,12,12,11,12,11,12,12,11,11,11,12,12,11,11,12,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,11,11,11,12,11,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,9,10,10,11,11,10,11,11,11,12,10,11,11,12,12,11,11,11,12,12,11,11,11,12,12,10,10,11,11,12,11,11,12,12,12,11,11,11,12,12,11,11,12,12,12,11,12,12,12,12,10,11,11,12,12,11,11,11,12,12,11,12,11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,9,10,10,11,11,10,11,11,12,12,10,11,11,12,11,11,12,11,12,12,11,12,11,12,12,10,11,11,12,12,11,11,11,12,12,11,12,11,12,12,11,12,12,12,12,12,12,12,12,12,10,11,11,12,12,11,12,11,12,12,11,12,11,12,12,12,12,12,13,12,12,12,12,12,12,11,12,11,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,11,12,12,12,12,12,12,12,13,12,11,12,12,12,12,12,12,12,13,12,12,12,12,13,12,10,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,13,12,12,12,13,13,11,11,12,12,12,12,12,12,12,13,12,12,12,12,12,12,12,13,12,13,12,12,13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,13,12,13,13,12,13,12,13,13,12,12,12,12,12,12,12,13,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,10,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,13,12,12,12,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,13,12,12,12,12,12,12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,13,12,12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,8,10,10,11,11,9,10,10,11,11,9,10,10,11,11,10,11,11,12,12,10,11,11,12,12,10,10,10,11,11,10,11,11,11,12,10,11,11,12,12,11,11,12,12,12,11,11,12,12,12,9,10,10,11,11,10,11,11,12,12,10,11,10,12,11,11,12,11,12,12,11,12,11,12,12,11,11,11,12,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,11,11,12,12,12,12,11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,9,10,10,11,11,10,11,11,12,12,10,11,11,12,12,11,11,12,12,12,11,12,12,12,12,10,11,11,12,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,10,11,11,12,12,11,11,12,12,12,11,11,11,12,12,12,12,12,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,13,12,12,12,13,12,11,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,13,12,12,12,12,13,12,9,10,10,11,11,10,11,11,12,12,10,11,11,12,12,11,11,11,12,12,11,12,11,12,12,10,11,11,12,12,11,11,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,10,11,10,12,11,11,11,11,12,12,11,12,11,12,12,11,12,12,12,12,11,12,11,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,11,12,11,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,13,12,12,12,12,13,12,10,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,12,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,12,12,12,13,13,13,13,12,13,12,13,13,12,12,12,12,13,12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,13,13,13,13,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,12,13,13,13,12,13,13,13,13,11,12,11,12,12,12,12,12,13,12,12,12,12,13,12,12,13,12,13,13,12,13,12,13,12,12,12,12,12,13,12,12,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,13,13,13,13,12,13,12,13,12,13,13,13,13,13,13,13,13,13,13,10,11,11,12,12,10,11,11,12,12,10,11,11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,12,12,11,11,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,11,11,12,12,11,12,12,12,12,11,12,11,13,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,12,13,13,13,12,13,12,13,13,11,12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,13,13,13,13,12,13,13,13,13,10,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,11,12,12,12,11,12,12,12,13,12,12,12,13,13,12,12,13,13,13,12,12,13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,13,13,13,13,12,13,12,13,13,12,12,12,12,13,12,12,13,12,13,12,12,13,13,13,12,12,13,13,13,12,13,13,13,13,12,12,12,12,13,12,12,13,13,13,12,12,12,13,13,13,13,13,13,13,12,13,13,13,13,10,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,11,12,12,12,13,12,12,12,13,13,12,12,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,13,12,13,13,12,13,12,13,13,12,12,12,12,12,12,12,12,13,13,12,13,12,13,13,12,13,13,13,13,13,13,13,13,13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,12,13,13,13,12,12,13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,13,13,13,13,12,13,12,13,13,12,12,12,12,12,12,12,13,12,13,12,13,13,13,13,12,13,13,12,13,13,13,13,13,13,12,12,12,12,12,12,13,13,13,13,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,10,11,11,12,12,11,12,12,12,13,11,12,12,13,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,13,13,12,13,12,13,13,12,12,13,13,13,12,13,13,13,13,11,12,12,12,13,12,12,12,13,13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,13,12,12,12,12,12,12,12,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,10,11,11,12,12,10,11,11,12,12,10,11,11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,12,12,11,11,12,12,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,10,11,11,12,12,11,12,12,12,12,11,12,11,12,12,12,12,12,13,13,12,12,12,13,12,11,12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,12,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,13,10,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,12,13,13,13,12,12,13,13,13,11,12,12,12,12,12,12,12,13,13,11,12,12,13,12,12,13,13,13,13,12,13,12,13,13,12,12,12,12,13,12,12,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,13,12,12,12,13,13,13,12,12,12,13,13,13,13,13,13,13,12,13,13,13,13,10,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,12,13,13,13,12,12,13,13,13,11,12,11,12,12,12,12,12,13,13,11,12,12,13,12,12,13,12,13,13,12,13,12,13,13,12,12,12,12,12,12,12,13,13,13,12,13,12,13,13,12,13,13,13,13,13,13,13,13,13,12,12,12,13,12,12,13,12,13,13,12,13,12,13,13,13,13,13,13,13,12,13,12,13,13,10,11,11,12,12,11,12,12,12,12,11,12,12,13,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,12,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,13,12,12,12,12,13,12,12,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,13,13,13,13,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,12,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,13,12,13,13,12,13,12,13,13,12,12,12,12,12,12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,13,13,13,13,12,13,12,13,12,13,13,13,13,13,13,13,13,13,12,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,5,5,7,8,5,8,7,5,7,8,7,8,10,8,10,10,5,8,7,8,10,10,7,10,8,6,8,9,9,10,12,9,11,11,9,10,11,11,11,13,11,13,13,9,11,11,11,12,13,11,13,11,6,9,8,9,11,11,9,12,10,9,11,11,11,11,13,11,13,13,9,11,10,11,13,13,11,13,11,6,9,9,8,10,11,9,12,11,8,10,11,10,11,13,11,13,13,9,11,11,11,13,12,11,13,11,8,10,10,9,11,12,10,12,12,10,10,12,11,11,14,12,13,14,10,12,12,12,13,13,11,14,11,8,11,10,11,12,13,11,14,12,10,12,11,11,12,14,13,15,14,10,12,12,13,14,15,12,14,12,5,9,9,9,11,12,8,11,10,9,11,11,11,11,13,11,12,13,8,11,10,11,13,13,10,13,11,8,10,11,11,12,14,11,13,12,10,12,12,12,12,14,14,15,14,10,11,12,13,14,15,11,14,12,8,10,10,10,12,12,9,12,11,10,12,12,11,11,14,12,13,13,10,12,10,12,14,13,11,13,11,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,6,7,7,7,7,7,7,7,7,7,7,8,7,8,8,7,8,8,7,8,7,7,8,8,7,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,8,9,8,8,8,8,8,8,8,9,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,8,8,8,8,8,8,9,8,8,9,8,7,8,8,7,8,8,7,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,9,8,8,9,8,7,8,8,8,8,9,8,8,8,8,8,8,8,8,9,8,9,9,8,8,8,9,9,9,8,9,9,7,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,9,9,8,8,8,8,9,9,8,9,8,7,8,8,7,8,8,7,8,8,8,8,8,8,8,9,8,8,9,7,8,8,8,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,9,9,8,8,8,8,9,9,8,9,8,7,8,8,8,8,8,8,9,8,8,8,8,8,9,9,9,9,9,8,8,8,8,9,9,8,9,8,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,5,5,4,7,7,4,7,7,5,7,8,7,8,10,8,9,9,5,7,7,8,9,9,7,10,8,5,7,8,8,9,10,8,10,10,8,9,10,10,10,12,10,12,12,8,10,10,10,12,12,10,12,11,5,8,7,8,10,10,8,10,9,8,10,10,10,11,12,10,12,12,8,10,9,10,12,12,10,12,10,5,8,8,7,10,10,8,10,10,7,9,10,9,10,12,10,12,12,8,10,10,10,12,12,10,12,11,7,9,10,9,11,12,10,12,11,9,9,12,11,10,14,12,12,13,10,12,11,12,13,13,11,14,12,7,10,9,10,11,11,10,12,11,9,11,11,11,11,13,12,14,13,10,12,12,12,14,14,11,14,12,5,8,8,8,10,10,7,10,10,8,10,10,10,11,12,10,12,12,7,10,9,10,12,12,9,12,10,7,9,10,10,11,12,10,11,11,10,12,12,11,12,14,12,14,14,9,11,11,12,13,14,11,13,11,7,10,9,10,11,12,9,12,11,10,11,12,11,12,14,12,13,13,9,12,9,12,13,12,11,14,10,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,6,6,9,9,6,8,8,10,10,6,8,8,10,10,8,10,10,12,13,8,10,10,13,12,6,8,8,10,10,8,8,9,10,11,8,9,9,11,11,10,10,11,12,13,10,11,11,13,13,6,8,8,10,10,8,9,9,11,11,8,9,8,11,10,10,11,11,13,13,10,11,10,13,12,9,10,10,12,12,10,10,11,12,13,10,11,11,13,13,12,12,13,12,15,13,13,13,15,14,9,10,10,12,12,10,11,11,13,13,10,11,10,13,12,12,13,13,14,15,12,13,12,15,12,6,8,8,10,11,8,9,10,11,12,8,9,9,11,11,10,11,12,13,14,10,11,11,13,13,8,9,9,11,12,9,10,11,12,13,9,10,10,12,13,11,12,13,13,15,11,12,12,14,14,8,9,9,11,12,9,10,11,12,13,9,10,10,13,12,11,12,13,14,15,11,12,12,14,13,10,11,12,13,14,11,12,13,13,15,12,13,13,14,14,13,13,14,14,16,14,15,14,16,15,10,12,11,14,13,12,12,13,14,14,11,12,12,14,14,14,14,15,15,16,13,14,14,16,14,6,8,8,11,10,8,9,9,11,11,8,10,9,12,11,10,11,11,13,13,10,12,11,14,13,8,9,9,12,11,9,10,10,12,13,9,11,10,13,12,11,12,12,14,14,11,13,12,15,14,8,9,9,12,11,9,10,10,13,12,9,11,10,13,12,11,12,12,14,14,11,13,12,15,13,10,11,12,13,14,11,12,13,13,14,12,13,12,14,14,13,13,14,14,16,14,15,14,16,16,10,12,11,14,13,12,13,13,14,14,11,13,12,15,13,14,14,15,16,16,13,14,13,16,14,9,10,11,12,13,11,11,12,13,14,11,11,12,13,14,13,13,14,14,16,13,14,14,15,15,11,11,12,13,14,12,12,13,13,15,12,13,13,14,15,14,14,15,15,17,14,14,15,16,16,11,12,12,13,14,12,12,13,14,15,12,13,12,14,15,14,14,15,15,17,14,15,14,16,16,13,14,14,15,16,14,14,15,15,17,14,15,15,16,16,15,16,17,16,18,16,17,16,17,17,13,14,14,16,15,14,15,15,16,16,14,15,14,16,15,16,16,17,17,18,16,16,16,17,16,9,11,10,13,12,11,12,11,14,13,11,12,11,14,13,13,14,14,16,15,13,14,13,16,14,11,12,12,14,13,12,12,13,14,14,12,13,13,15,14,14,14,15,16,16,14,15,14,17,15,11,12,11,14,13,12,13,13,15,14,12,13,12,15,13,14,15,14,16,16,14,15,14,17,15,13,14,14,15,16,14,14,15,16,16,14,15,15,16,16,15,16,16,16,17,16,16,16,17,17,13,14,14,16,15,14,15,15,17,16,14,15,14,17,15,16,17,17,17,17,16,16,16,18,16,6,8,8,11,11,8,9,9,11,12,8,9,9,12,11,10,11,11,13,14,10,11,11,14,13,8,9,9,11,12,9,10,10,12,13,9,10,10,13,12,11,11,12,13,15,11,12,12,15,14,8,9,9,12,11,9,10,11,12,13,9,11,10,13,12,11,12,12,14,15,11,13,12,15,14,10,11,11,13,14,11,12,12,13,14,11,12,12,14,14,13,13,14,14,16,13,14,14,16,15,11,12,11,14,13,12,13,13,14,14,11,13,12,14,13,14,14,15,16,16,13,14,14,16,14,8,9,9,11,12,9,10,10,12,13,9,10,10,13,12,11,12,12,14,15,11,12,12,14,14,9,9,10,11,13,10,10,12,12,14,10,10,11,13,13,12,12,13,14,16,12,12,13,15,15,9,10,10,13,12,10,11,11,13,14,10,12,11,14,13,12,13,13,15,15,12,13,13,15,15,11,11,12,13,15,12,12,13,13,15,12,13,13,14,15,14,14,15,15,17,14,15,15,16,16,11,13,12,15,14,13,13,13,15,15,12,14,13,15,14,15,15,15,16,16,14,15,15,17,15,7,9,9,12,11,9,10,10,12,12,9,11,10,13,12,11,12,12,14,14,11,13,12,15,14,9,10,10,12,12,10,10,11,12,13,10,11,11,14,13,12,12,13,14,15,12,13,13,15,14,9,10,10,12,12,10,11,11,13,13,10,11,10,14,12,12,13,13,15,15,12,13,12,15,13,11,12,12,14,14,12,12,13,14,15,12,13,13,15,15,14,13,14,13,16,14,15,15,16,16,11,12,12,14,14,13,13,14,15,15,12,13,12,15,14,15,15,15,16,16,14,15,14,17,14,10,11,12,13,14,11,12,13,14,15,11,12,12,14,15,13,14,15,15,17,14,14,14,16,16,11,12,13,12,15,12,12,14,13,16,13,13,14,13,16,14,14,15,14,17,15,15,15,15,17,11,13,12,15,15,13,13,14,15,16,12,14,13,16,15,15,15,15,17,17,15,15,15,17,16,14,14,15,14,16,14,14,16,14,17,15,15,15,14,17,16,16,17,15,18,17,17,17,16,18,14,15,15,17,16,15,16,16,17,17,15,16,15,17,16,17,17,17,18,18,16,17,16,18,17,10,11,11,14,13,11,12,12,14,14,11,13,12,15,14,14,14,14,16,16,14,15,14,16,15,11,12,12,15,13,12,13,13,15,14,13,14,13,16,14,14,15,15,16,16,15,16,15,17,16,11,13,12,15,14,13,13,14,15,15,12,14,13,16,14,15,15,15,17,17,14,16,15,17,16,14,14,14,16,15,14,15,15,16,16,15,16,15,17,16,16,16,16,16,17,16,17,17,18,17,14,15,15,16,16,15,15,16,17,16,14,15,15,17,16,17,17,17,18,18,16,17,16,18,16,6,8,8,11,11,8,9,9,11,12,8,9,9,12,11,10,11,12,13,14,10,11,11,14,13,8,9,9,11,12,9,10,11,12,13,9,11,10,13,12,11,12,13,14,15,11,12,12,15,14,8,9,9,12,11,9,10,10,12,13,9,10,10,13,12,11,12,12,14,15,11,12,12,14,13,11,11,12,13,14,11,12,13,13,15,12,13,13,14,14,13,14,14,14,16,14,15,14,16,16,10,11,11,14,13,11,12,12,14,14,11,12,12,14,13,13,14,14,15,16,13,14,13,16,14,7,9,9,11,11,9,10,11,12,13,9,10,10,12,12,11,12,13,14,15,11,12,12,14,14,9,10,10,12,12,10,10,11,12,13,10,11,11,13,13,12,12,13,13,15,12,13,13,15,15,9,10,10,12,12,10,11,11,13,13,10,11,10,13,12,12,13,13,14,15,12,13,12,15,13,11,12,12,14,14,12,12,13,14,15,13,14,13,15,15,14,13,15,13,16,15,15,15,16,16,11,12,12,14,14,12,13,13,14,15,12,13,12,15,14,14,15,15,16,17,13,14,13,16,13,8,9,9,12,11,9,10,10,12,13,9,10,10,13,12,11,12,12,14,15,11,12,12,15,14,9,10,10,12,13,10,11,12,13,14,10,11,11,14,13,12,13,13,15,15,12,13,13,15,15,9,10,9,13,11,10,11,10,13,13,10,12,10,14,12,12,13,12,15,15,12,13,12,15,14,11,12,13,14,15,12,13,14,14,15,13,13,13,15,15,14,15,15,15,17,15,15,15,16,16,11,12,11,15,13,12,13,13,15,14,12,13,12,16,13,14,15,15,16,16,14,15,14,17,14,10,11,11,13,14,11,12,13,14,15,11,12,12,14,14,14,14,15,15,17,14,14,14,15,16,11,12,13,14,15,12,13,14,14,16,13,14,13,15,15,14,15,16,15,17,15,15,15,17,17,11,12,12,13,15,13,13,14,14,16,12,13,13,14,15,15,15,15,16,17,14,15,15,16,16,14,15,15,16,16,14,15,15,16,17,15,15,16,16,17,16,16,17,16,18,17,17,17,18,18,14,14,15,15,16,15,15,15,16,17,14,15,15,16,16,16,17,17,17,18,16,16,16,17,16,10,11,11,14,13,11,13,12,15,14,11,13,12,15,14,14,15,14,16,16,13,15,14,17,15,11,12,13,15,15,12,13,14,15,16,13,14,13,16,15,15,15,15,16,17,15,15,15,17,16,11,13,11,15,12,13,14,13,16,13,12,14,12,16,13,15,15,15,17,15,14,16,14,17,14,14,15,15,16,17,15,15,16,16,17,15,16,15,17,17,16,16,17,17,18,16,17,17,18,18,14,15,14,17,13,15,16,15,17,15,15,16,15,17,14,16,17,16,18,16,16,17,16,18,15,9,11,11,13,13,10,12,12,14,14,11,12,12,14,14,13,14,14,15,16,13,14,14,16,16,10,11,12,14,14,11,12,13,14,15,11,13,13,15,15,13,14,14,15,16,14,15,15,16,16,11,12,12,14,14,12,13,13,15,15,12,13,12,15,14,14,15,15,16,16,14,15,14,17,16,12,13,13,15,16,13,13,14,15,16,13,14,14,16,16,14,15,16,16,17,15,16,16,17,17,13,14,14,16,15,14,15,15,17,16,14,15,14,17,15,16,16,17,17,17,16,16,16,18,16,10,11,12,14,14,11,12,13,14,15,11,13,12,15,15,13,14,15,16,16,14,15,15,17,16,11,11,13,14,15,12,12,14,14,16,12,13,14,15,15,14,14,15,16,17,15,15,15,17,17,12,13,12,15,15,13,14,14,16,15,13,14,13,16,15,15,16,15,17,17,15,16,15,17,16,13,12,15,14,16,14,13,15,14,17,14,13,15,15,17,15,14,17,15,18,16,15,17,17,18,14,15,15,17,16,15,16,16,17,17,15,16,15,17,16,16,17,17,18,18,16,17,16,18,17,10,11,11,14,14,11,12,12,14,15,11,13,12,15,14,13,14,14,16,16,14,15,14,16,16,11,12,12,14,14,12,12,13,15,15,12,13,13,15,15,14,14,15,16,16,14,15,15,17,16,11,12,12,15,15,13,13,13,15,15,12,13,13,15,15,15,15,15,17,17,14,15,15,17,16,13,14,13,16,15,14,14,14,16,16,14,15,14,17,16,15,15,16,16,17,16,17,16,18,17,14,15,15,16,16,15,15,15,17,17,14,15,15,17,16,16,17,17,18,18,16,17,16,18,16,12,13,13,15,15,13,14,14,16,16,13,14,14,16,16,14,15,16,16,18,15,16,16,17,17,13,13,14,14,16,14,14,15,15,17,14,14,15,15,17,15,15,17,15,18,16,16,17,17,18,13,14,14,16,16,14,15,15,16,17,14,15,15,17,16,16,17,16,17,18,16,17,16,18,17,15,14,16,13,18,16,15,17,14,18,16,15,17,14,18,17,16,18,15,19,17,17,18,16,19,15,16,16,17,17,16,17,17,18,18,16,17,16,18,17,18,18,18,19,18,17,18,17,19,17,11,12,12,15,15,13,13,14,15,16,13,14,13,16,15,15,15,15,16,17,15,16,15,17,16,12,13,13,15,15,13,13,14,15,16,14,15,14,16,15,15,15,16,16,17,16,16,16,18,17,12,13,13,15,15,14,14,15,16,16,13,14,13,16,15,16,16,16,17,17,15,16,15,18,16,15,15,15,17,15,14,15,15,16,16,16,17,16,17,16,16,16,17,16,17,17,18,17,19,18,15,15,16,17,17,16,16,16,17,17,15,16,15,17,16,17,18,18,18,18,16,17,16,18,16,9,11,11,13,13,11,12,12,14,14,10,12,12,14,14,13,14,14,15,16,13,14,14,16,15,11,12,12,14,14,12,12,13,14,15,12,13,13,15,15,14,14,15,16,17,14,15,15,16,16,10,12,11,14,14,11,13,13,15,15,11,13,12,15,14,14,14,15,16,16,13,14,14,16,15,13,14,14,15,16,14,14,15,15,17,14,15,15,16,17,16,16,16,16,18,16,16,17,17,17,12,13,13,16,15,13,14,14,16,16,12,14,13,16,15,15,16,16,17,17,14,16,15,17,16,10,11,11,14,14,11,12,13,14,15,11,12,12,15,14,14,14,15,16,16,13,14,14,16,16,11,12,12,14,15,12,13,14,15,15,13,13,13,15,15,14,15,15,16,17,15,15,15,16,17,11,12,12,14,14,12,13,13,15,15,12,13,12,15,15,14,15,15,16,17,14,15,14,16,16,14,14,15,16,16,14,15,15,16,17,15,16,15,17,17,16,16,17,16,18,16,17,17,18,18,13,13,14,15,16,14,14,15,16,17,14,14,14,16,15,16,16,17,17,18,15,16,15,17,16,10,12,11,14,14,11,13,13,15,15,11,13,12,15,15,14,15,15,16,16,13,15,14,16,16,12,12,13,15,15,13,13,14,15,16,13,14,14,16,15,15,15,16,16,17,15,15,15,17,17,11,13,11,15,14,12,14,13,16,15,12,14,12,16,14,15,15,15,17,17,14,15,14,17,15,14,15,15,16,17,15,15,16,16,17,15,16,16,17,17,16,16,17,17,18,16,17,17,18,18,13,14,12,16,14,14,15,13,17,15,14,15,13,17,14,16,17,15,18,17,15,17,14,18,15,11,12,12,14,15,13,13,14,15,16,13,14,13,16,15,15,15,16,16,17,15,15,15,16,16,12,13,13,15,15,13,13,14,15,16,14,15,14,16,16,15,15,16,16,18,16,16,16,18,17,12,13,13,15,15,14,14,15,15,16,13,14,13,15,15,16,16,16,17,18,15,16,15,17,16,15,16,15,17,16,15,15,16,16,17,16,17,16,17,17,16,16,17,16,18,17,18,18,18,18,14,15,15,15,17,16,15,17,16,17,14,15,15,16,16,17,17,18,18,19,16,16,16,17,16,12,13,13,15,15,13,14,14,16,16,13,14,14,16,16,15,16,16,17,17,15,16,15,18,16,13,14,14,16,16,14,15,15,16,17,14,15,15,17,16,16,16,17,17,18,16,17,16,18,18,13,14,13,16,14,14,15,14,17,15,14,15,14,17,14,16,17,16,18,17,15,17,15,18,15,15,16,16,17,18,16,16,17,17,18,16,17,17,17,18,17,17,18,18,19,17,18,18,19,18,15,16,14,17,13,16,17,15,18,14,16,17,15,18,14,18,18,17,19,16,17,18,16,19,15,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,5,5,4,7,7,4,7,7,5,7,7,7,8,9,7,9,9,5,7,7,7,9,9,7,9,8,6,7,8,8,9,10,8,9,10,8,9,10,10,10,12,10,11,11,8,10,10,10,11,12,10,11,11,6,8,7,8,10,9,8,10,9,8,10,10,10,11,11,10,12,11,8,10,9,10,11,11,10,12,10,5,8,8,8,10,10,8,10,10,7,9,10,9,10,11,9,11,11,8,10,10,10,11,12,10,12,11,7,9,9,9,10,11,9,11,11,9,9,11,10,11,12,11,11,12,9,11,11,11,12,12,11,12,12,7,9,9,10,11,11,10,12,11,9,11,10,11,11,12,11,13,12,10,11,11,12,13,13,11,13,11,5,8,8,8,10,10,8,10,10,8,10,10,10,11,12,10,12,11,7,10,9,9,11,11,9,11,10,7,9,9,10,11,12,10,11,11,10,11,11,11,11,13,12,13,13,9,10,11,11,12,13,11,12,11,7,9,9,9,11,11,9,11,10,9,11,11,11,12,12,11,12,12,9,11,9,11,12,11,10,12,11,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,9,14,16,17,19,22,22,5,4,6,9,11,13,17,20,9,5,5,6,9,11,15,19,11,7,5,5,7,9,13,17,14,9,7,6,6,7,11,14,16,11,9,7,6,4,4,8,19,15,13,11,9,4,3,4,21,16,16,15,12,6,4,4,2,0,0,0,64,0,0,0,56,145,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,98,6,0,0,0,0,0,0,0,0,0,40,98,6,0,0,0,0,0,0,0,0,0,80,98,6,0,120,98,6,0,0,0,0,0,0,0,0,0,160,98,6,0,200,98,6,0,0,0,0,0,0,0,0,0,240,98,6,0,24,99,6,0,0,0,0,0,0,0,0,0,64,99,6,0,104,99,6,0,24,99,6,0,0,0,0,0,144,99,6,0,184,99,6,0,56,167,5,0,96,167,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,64,0,0,0,192,97,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,2,7,13,15,16,17,19,20,6,3,4,7,9,10,12,15,13,4,3,4,7,8,11,13,14,7,4,4,6,7,10,11,16,9,7,6,7,8,9,10,16,9,8,7,7,6,8,8,18,12,10,10,9,8,8,9,20,14,13,12,11,8,9,9,5,0,0,0,243,0,0,0,48,144,6,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,40,145,6,0,0,0,0,0,5,0,0,0,53,12,0,0,224,131,6,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,24,144,6,0,0,0,0,0,5,0,0,0,243,0,0,0,216,130,6,0,1,0,0,0,0,0,56,224,0,0,56,96,2,0,0,0,0,0,0,0,208,131,6,0,0,0,0,0,5,0,0,0,243,0,0,0,208,129,6,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,200,130,6,0,0,0,0,0,5,0,0,0,243,0,0,0,200,128,6,0,1,0,0,0,0,0,84,224,0,0,84,96,2,0,0,0,0,0,0,0,192,129,6,0,0,0,0,0,5,0,0,0,53,12,0,0,120,116,6,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,176,128,6,0,0,0,0,0,5,0,0,0,53,12,0,0,40,104,6,0,1,0,0,0,0,0,124,224,0,0,92,96,3,0,0,0,0,0,0,0,96,116,6,0,0,0,0,0,1,0,0,0,7,0,0,0,0,104,6,0,1,0,0,0,0,0,56,224,0,0,16,96,3,0,0,0,0,0,0,0,8,104,6,0,0,0,0,0,5,0,0,0,243,0,0,0,248,102,6,0,1,0,0,0,0,0,149,224,0,0,149,96,2,0,0,0,0,0,0,0,240,103,6,0,0,0,0,0,5,0,0,0,243,0,0,0,240,101,6,0,1,0,0,0,0,0,92,224,0,0,92,96,2,0,0,0,0,0,0,0,232,102,6,0,0,0,0,0,5,0,0,0,243,0,0,0,232,100,6,0,1,0,0,0,0,76,93,225,0,76,93,97,2,0,0,0,0,0,0,0,224,101,6,0,0,0,0,0,5,0,0,0,243,0,0,0,224,99,6,0,1,0,0,0,0,136,51,225,0,136,51,97,2,0,0,0,0,0,0,0,216,100,6,0,0,0,0,0,1,4,5,5,10,10,5,10,10,5,10,10,10,10,10,10,10,10,5,10,10,10,10,10,10,10,10,7,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,6,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,6,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,6,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,6,6,6,7,8,6,8,7,6,7,7,7,7,8,7,8,8,6,7,7,7,8,8,7,8,7,6,8,8,8,9,9,8,9,9,8,9,9,9,9,10,9,10,10,8,9,9,9,10,10,9,10,9,6,8,8,8,9,9,8,9,9,8,9,9,9,9,10,9,10,10,8,9,9,9,10,9,9,10,9,6,8,8,8,9,9,8,9,9,8,9,9,9,9,10,9,9,10,8,9,9,9,10,9,9,10,9,7,8,8,8,9,9,8,9,9,8,8,9,9,9,9,9,9,9,8,9,9,9,10,9,9,9,9,7,9,9,9,9,10,9,10,9,9,9,9,9,9,10,10,10,10,9,9,9,10,10,10,9,10,9,6,8,8,8,9,9,8,9,9,8,9,9,9,9,10,9,10,10,8,9,9,9,10,9,9,10,9,7,9,9,9,9,10,9,10,9,9,9,9,9,9,10,10,10,10,9,9,9,10,10,10,9,10,9,7,8,8,8,9,9,8,9,9,8,9,9,9,9,10,9,9,10,8,9,8,9,9,9,9,10,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,5,5,5,7,9,5,9,7,5,7,8,7,7,10,9,10,10,5,8,7,9,10,10,7,10,7,6,9,9,9,10,12,9,11,11,9,10,11,11,11,13,12,13,13,9,11,11,12,13,13,11,13,11,6,9,9,9,11,11,9,12,10,9,11,11,11,11,13,12,13,13,9,11,10,12,13,13,11,13,11,6,9,9,9,11,12,9,12,11,9,10,11,10,10,13,12,13,13,9,11,11,12,13,12,11,13,11,7,9,10,9,10,12,10,12,11,10,10,12,10,10,12,12,12,13,10,11,11,12,12,13,10,12,10,7,10,10,11,11,14,11,14,11,10,12,11,11,11,14,14,14,14,10,11,12,14,14,14,11,14,11,6,9,9,9,11,12,9,12,11,9,11,11,11,11,13,12,12,13,9,11,10,12,13,13,10,13,10,7,10,10,11,11,14,11,14,11,10,12,11,11,11,14,14,15,14,10,11,12,13,14,15,11,14,11,7,10,9,10,11,12,9,12,10,10,11,11,10,10,12,12,13,12,9,12,10,12,13,12,10,12,10,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,3,3,3,3,3,3,0,3,0,0,0,2,0,0,0,4,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,2,6,6,10,10,5,7,8,11,12,5,8,7,12,11,9,11,11,13,15,9,11,11,15,13,6,7,8,11,11,7,7,9,11,13,8,9,9,13,12,11,11,12,12,15,11,12,12,15,14,6,8,7,11,11,8,9,9,12,13,7,9,7,13,11,11,12,12,14,15,11,12,11,15,12,10,11,11,12,14,10,11,12,12,15,12,13,13,14,15,13,12,14,12,16,15,15,15,16,16,10,11,11,14,12,12,13,13,15,14,10,12,11,15,12,15,15,15,16,17,13,14,12,17,12,6,8,8,12,12,8,9,10,13,13,8,9,9,13,13,12,12,13,15,16,12,13,13,16,15,8,9,10,12,13,9,9,11,13,14,10,11,11,14,14,13,13,14,15,16,13,14,14,16,16,8,10,9,13,13,10,11,11,14,14,9,10,10,14,13,13,14,14,16,17,13,13,13,16,15,12,13,13,14,16,13,13,14,14,16,14,14,14,16,16,15,15,16,15,18,16,17,17,18,18,12,13,13,15,15,14,14,14,16,16,13,14,13,16,15,16,16,17,18,18,15,16,15,18,15,6,8,8,12,12,8,9,9,13,13,8,10,9,13,13,12,13,13,15,16,12,13,12,16,15,8,9,10,13,13,9,10,10,13,14,10,11,11,14,14,13,13,13,15,16,13,14,14,17,16,8,10,9,13,13,10,11,11,14,14,9,11,9,14,13,13,14,14,16,16,13,14,13,16,14,12,13,13,15,16,13,13,14,15,16,14,14,14,16,16,15,15,16,15,18,17,17,17,18,18,12,13,13,16,14,14,14,14,16,16,13,14,13,16,14,16,17,17,18,18,15,16,15,18,15,11,12,13,14,16,13,13,14,15,17,13,14,14,16,17,16,16,17,17,19,16,17,17,18,19,13,13,14,16,16,14,14,15,16,17,14,15,15,17,17,17,16,17,17,19,17,17,18,19,19,13,14,14,16,16,14,14,15,17,18,14,15,14,17,17,17,17,18,18,19,17,17,17,18,19,16,16,16,17,18,17,17,17,18,19,17,17,17,18,19,18,18,19,18,20,19,20,19,21,20,16,17,17,18,18,17,17,18,19,19,17,17,17,19,18,19,19,19,19,20,19,19,19,20,19,11,13,12,16,14,13,14,14,17,16,13,14,13,17,15,16,17,17,18,18,16,17,16,19,17,13,14,14,16,16,14,14,14,17,17,14,15,15,17,16,17,17,17,19,19,17,18,17,19,18,13,14,13,17,16,14,15,15,17,17,14,15,14,18,16,17,17,17,19,19,17,17,16,19,17,16,17,17,18,19,17,17,17,18,18,17,18,17,19,18,18,19,18,19,19,19,20,19,20,20,16,17,16,18,17,17,17,17,18,18,17,18,17,19,17,19,19,19,19,20,18,19,19,20,18,6,8,8,12,12,8,9,9,13,13,8,10,9,13,13,11,13,13,15,16,12,13,13,16,15,8,9,9,13,13,9,9,10,13,14,10,11,11,14,14,12,12,13,14,16,13,14,14,17,16,8,10,9,13,13,10,11,11,14,14,9,11,10,14,13,13,14,14,16,16,13,14,13,16,15,12,13,13,14,16,12,13,14,14,16,13,14,14,16,16,15,14,16,15,18,16,17,17,18,17,12,13,13,16,15,14,14,14,16,16,13,14,13,16,15,16,16,17,17,17,15,16,15,18,15,7,9,9,13,13,9,9,11,13,14,9,10,10,14,13,12,13,14,15,16,12,14,13,17,15,9,9,10,13,14,10,9,11,13,15,11,11,11,14,14,13,12,14,14,17,14,14,14,17,16,9,10,10,14,13,11,11,11,14,14,10,11,10,15,13,14,14,14,16,17,13,14,13,17,14,13,13,14,14,16,13,13,14,14,17,14,14,14,16,16,15,14,16,15,18,17,17,17,18,18,13,14,13,16,15,14,14,15,17,16,13,14,13,17,15,17,16,17,17,17,15,16,14,18,14,7,9,9,13,13,9,10,10,13,14,9,11,10,14,13,13,14,14,16,16,13,14,14,17,15,9,10,10,14,13,9,10,11,13,14,11,12,11,15,14,13,13,14,14,16,14,15,15,17,17,9,10,10,14,14,11,12,12,14,15,10,11,10,15,13,14,15,15,17,17], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+410577); +/* memory initializer */ allocate([14,15,13,17,14,13,14,13,16,16,13,13,14,15,16,14,15,15,17,17,15,14,16,15,18,17,18,17,20,18,13,14,14,16,16,15,15,15,17,17,13,14,13,17,15,17,17,18,18,18,15,16,14,19,14,12,13,13,15,16,13,13,15,16,17,13,14,14,16,16,15,15,17,17,19,16,17,17,19,18,13,13,14,15,17,14,13,15,15,17,14,15,15,16,17,16,15,18,16,19,17,17,17,18,19,13,14,14,17,16,14,15,15,17,17,14,15,14,17,16,17,17,17,18,19,16,17,16,19,17,16,16,17,16,18,16,16,17,16,19,17,17,18,18,19,18,17,18,17,21,19,19,19,20,19,16,17,17,18,18,17,17,18,18,19,16,17,16,18,18,19,19,19,19,20,18,18,17,20,18,11,13,13,16,15,13,14,14,16,17,13,15,14,17,16,16,17,17,18,18,17,17,17,19,18,13,14,13,17,16,14,13,14,16,17,15,16,15,18,16,17,16,17,17,19,18,18,18,20,18,13,14,14,16,17,15,15,15,17,18,14,15,14,18,16,18,18,18,19,20,17,18,16,20,17,16,17,16,18,18,16,16,17,18,18,17,18,18,19,18,18,17,19,17,20,19,20,19,22,20,16,16,17,18,18,18,17,17,19,19,16,17,16,18,17,19,20,19,22,21,18,19,18,21,17,6,8,8,12,12,8,9,10,13,13,8,9,9,13,13,12,13,13,15,16,11,13,13,16,15,8,9,10,13,13,9,10,11,13,14,10,11,11,14,14,13,13,14,15,16,13,14,14,16,16,8,9,9,13,13,10,11,11,14,14,9,10,9,14,13,13,14,14,16,17,12,14,12,16,14,12,13,13,15,16,13,13,14,15,16,13,14,14,15,17,15,15,16,15,18,16,16,17,17,17,12,13,13,16,14,13,14,14,16,16,12,14,13,16,14,16,17,17,18,18,15,15,14,18,14,7,9,9,13,13,9,10,11,13,14,9,10,10,14,13,13,14,14,15,17,13,14,14,16,15,9,10,10,14,14,10,10,11,13,15,11,12,12,15,14,14,13,15,14,17,14,15,15,17,17,9,10,10,13,14,11,11,12,14,15,9,11,10,14,13,14,15,15,16,18,13,14,13,16,14,13,14,14,16,16,13,13,14,15,17,15,15,15,16,17,15,14,16,15,18,17,17,18,19,18,13,14,14,16,16,14,15,15,17,17,13,14,13,16,15,17,17,18,18,18,15,16,14,18,15,7,9,9,13,13,9,10,10,13,14,9,11,10,14,13,12,13,14,15,16,12,14,13,16,15,9,10,10,13,14,10,10,11,13,14,11,11,11,15,14,13,13,14,14,16,14,14,14,17,16,9,10,9,14,13,11,11,11,14,14,10,11,9,15,13,14,14,14,16,16,13,14,12,17,14,13,13,14,15,16,13,13,14,15,16,14,15,14,16,17,15,14,16,14,18,16,17,17,18,18,13,14,13,16,14,14,14,14,16,16,13,14,13,17,14,17,17,17,18,18,15,16,14,18,15,11,13,13,16,16,13,14,15,16,17,13,14,14,17,16,16,17,17,18,19,17,17,17,19,18,13,14,14,17,17,13,13,15,16,18,15,15,15,17,17,17,16,18,17,20,18,17,18,19,19,13,14,14,16,17,15,15,16,16,18,14,15,14,16,16,17,17,18,18,20,17,18,16,18,17,16,17,16,19,18,16,16,17,18,19,18,18,18,19,19,18,17,18,17,21,20,19,19,21,21,16,16,17,18,18,17,17,18,19,19,16,17,16,19,18,20,20,20,19,21,18,18,17,20,18,12,13,13,16,15,13,14,14,16,16,13,14,13,17,16,16,17,17,18,18,15,17,15,19,17,13,14,14,16,17,14,14,15,16,17,14,15,15,17,17,16,16,17,17,18,17,17,17,19,19,13,14,13,17,15,14,15,15,17,16,14,15,13,17,15,17,18,17,19,18,16,17,15,20,16,16,17,17,18,18,16,16,17,18,18,17,18,17,19,18,17,17,18,18,20,19,20,19,20,19,16,16,16,19,16,17,17,17,19,18,16,17,16,19,16,19,19,19,19,19,18,19,17,19,17,11,13,13,16,16,13,14,14,17,17,13,14,14,17,17,15,17,17,19,19,16,18,17,20,19,12,14,14,17,17,13,14,15,17,18,14,15,15,17,18,16,16,17,18,20,17,18,18,20,18,13,14,14,17,17,14,15,15,17,18,14,15,15,17,17,17,18,17,19,19,17,18,17,19,19,15,16,16,18,18,15,16,17,18,19,16,17,17,19,19,17,17,18,18,21,18,19,19,21,19,16,17,17,18,18,17,17,18,19,19,17,18,17,19,19,19,19,19,20,20,18,19,18,21,19,12,13,13,16,16,13,14,14,16,17,13,15,14,17,16,15,16,17,17,19,16,17,17,19,18,13,13,14,16,17,14,13,15,16,17,14,15,15,17,17,15,15,17,17,20,17,17,18,19,18,13,14,14,17,16,15,15,15,17,18,14,15,14,17,16,17,17,17,18,18,16,17,16,19,17,16,15,17,17,19,16,15,17,16,19,17,16,17,18,19,17,16,19,16,20,19,18,19,19,19,16,17,17,18,18,17,17,17,18,19,16,17,16,19,18,20,19,19,20,19,18,18,17,20,17,11,13,13,16,16,13,14,15,16,17,14,15,14,18,16,17,17,17,18,21,17,18,17,20,19,13,14,14,17,16,13,14,15,16,18,15,16,15,18,17,17,16,17,17,19,17,18,18,20,19,13,14,14,16,17,15,15,16,17,18,14,15,14,18,17,17,18,18,19,20,17,18,16,19,17,16,17,15,19,18,16,16,16,18,18,17,18,17,20,19,18,17,18,17,20,20,20,19,22,20,16,17,17,18,19,18,18,18,19,20,16,17,16,19,18,20,19,19,20,20,18,19,17,20,17,13,14,14,16,17,14,14,16,16,18,14,16,15,17,16,16,16,17,17,18,17,17,16,19,18,14,14,15,16,17,14,14,16,16,18,16,16,16,17,17,16,15,17,16,19,18,18,18,19,19,14,15,15,17,17,15,16,16,17,18,14,16,14,18,16,17,17,18,18,19,16,17,16,19,17,16,16,17,16,18,16,16,17,16,19,18,18,18,17,18,17,16,18,16,20,19,19,19,19,19,16,17,17,18,18,17,17,18,19,19,16,17,16,19,17,18,19,19,19,20,17,18,16,20,16,11,14,13,17,17,14,14,16,16,18,14,16,14,19,16,18,18,19,18,19,18,19,18,21,18,13,15,14,18,16,14,14,16,16,18,16,17,16,19,17,18,16,19,17,20,19,19,19,21,19,13,14,15,17,18,17,16,17,17,19,14,16,14,18,16,20,19,19,20,21,18,19,16,21,17,17,18,16,19,17,16,16,17,18,18,19,19,18,21,18,17,17,18,17,20,20,20,20,22,20,17,17,18,18,20,19,19,19,18,20,16,17,17,19,19,21,21,21,20,21,17,19,17,23,17,11,13,13,16,16,13,14,14,17,17,13,14,14,17,17,16,17,17,19,20,15,16,16,19,19,13,14,14,16,17,14,15,15,17,18,14,15,15,17,17,17,17,18,19,19,17,17,18,19,19,13,14,14,17,16,14,15,15,17,17,13,15,14,18,17,17,18,18,19,20,16,17,16,19,18,16,16,17,18,18,17,17,17,18,19,17,18,17,19,19,19,19,19,19,20,19,20,19,20,20,15,16,16,18,17,16,17,17,20,18,15,16,16,19,17,19,19,19,20,20,17,18,17,21,17,11,13,13,16,16,13,14,15,16,17,13,15,14,17,16,17,17,18,18,20,17,17,17,19,19,13,14,14,17,17,14,14,15,17,18,15,15,15,18,17,17,17,18,17,20,18,18,17,20,18,13,14,14,16,17,15,15,16,17,18,14,15,13,17,17,17,18,18,19,20,17,17,16,19,17,16,17,17,18,18,16,16,17,18,18,18,18,18,19,19,18,17,19,18,21,19,20,20,20,20,16,15,17,18,18,17,17,18,18,20,16,16,16,18,17,20,19,20,21,22,17,18,17,20,17,12,13,13,16,16,13,14,15,16,17,13,14,14,17,16,16,17,18,18,19,15,16,16,19,18,13,14,14,16,17,14,14,15,16,17,14,15,15,17,17,16,16,17,17,19,17,17,17,19,18,13,14,13,17,16,14,15,15,17,17,13,15,13,17,16,17,17,17,19,19,15,17,15,19,17,16,17,17,18,18,16,16,17,17,19,17,18,17,19,19,18,17,19,17,19,19,19,19,20,19,15,17,15,19,16,17,17,16,19,18,16,17,15,18,16,19,19,19,20,19,17,19,16,19,16,11,14,14,17,17,15,14,16,16,18,15,16,14,18,16,18,18,19,18,21,18,19,18,20,18,13,15,14,18,17,14,14,16,16,18,16,17,16,19,17,17,17,19,17,22,19,19,19,21,19,13,14,15,17,18,17,16,17,17,19,14,16,14,18,16,19,19,19,20,21,18,18,16,20,17,17,18,16,19,18,15,17,17,19,19,19,19,18,21,19,18,17,20,17,21,22,21,20,21,21,17,16,19,18,20,19,18,19,18,20,16,17,16,19,18,21,20,21,19,23,18,19,16,20,17,13,14,14,17,16,14,14,15,16,18,14,16,14,17,16,16,16,17,17,19,16,17,16,19,17,14,15,15,17,17,14,14,16,16,17,15,16,16,18,17,16,16,17,17,19,17,18,17,19,18,14,15,14,17,16,16,16,16,17,17,14,16,14,17,16,18,18,18,18,19,16,17,15,19,16,17,17,17,18,18,16,15,17,17,18,18,18,18,19,19,17,16,18,16,19,19,19,19,19,19,16,17,16,19,16,18,18,17,19,18,16,17,16,19,16,19,19,20,19,19,17,18,16,20,16,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,6,8,8,10,10,8,9,9,10,11,8,10,9,11,10,9,10,10,11,11,9,10,10,11,11,8,9,9,10,10,9,9,10,11,11,10,10,10,11,11,10,11,11,11,11,10,11,11,11,11,8,9,9,11,10,10,10,10,11,11,9,10,9,11,11,10,11,11,11,11,10,11,10,11,11,10,10,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,10,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,9,10,11,11,10,10,11,11,11,10,10,10,11,11,10,11,11,12,12,10,11,11,12,12,10,10,11,11,11,10,10,11,11,12,11,11,11,12,12,11,11,12,12,12,11,11,12,12,12,10,10,10,11,11,11,11,11,12,12,10,11,11,12,12,11,12,12,12,12,11,12,11,12,12,11,11,11,11,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,11,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,8,10,9,11,11,10,10,10,11,11,10,11,10,11,11,10,11,11,12,12,10,11,11,12,12,10,10,10,11,11,10,11,11,12,12,11,11,11,12,12,11,11,12,12,12,11,12,12,12,12,10,11,10,11,11,11,11,11,12,12,10,11,10,12,11,11,12,11,12,12,11,12,11,12,12,11,11,11,12,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,11,11,12,12,12,12,11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,10,11,11,11,12,11,11,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,11,12,11,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,13,12,12,12,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,12,12,12,13,12,10,11,11,12,11,11,11,12,12,12,11,12,11,12,12,11,12,12,12,12,11,12,12,12,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,11,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,13,12,13,12,8,10,10,11,11,10,10,11,11,11,10,11,10,11,11,10,11,11,12,12,10,11,11,12,12,9,10,11,11,11,10,10,11,12,12,10,11,11,12,12,11,11,12,12,12,11,12,12,12,12,10,11,10,11,11,11,11,11,12,12,10,11,11,12,12,11,12,12,12,12,11,12,11,12,12,11,11,11,12,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,9,10,10,11,11,10,11,11,12,12,10,11,11,12,12,11,11,12,12,12,11,12,12,12,12,10,11,11,12,12,11,11,12,12,12,11,11,12,12,12,11,11,12,12,12,12,12,12,12,12,10,11,11,12,12,11,12,12,12,12,11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,9,10,10,11,11,10,11,11,12,12,10,11,11,12,11,11,12,12,12,12,11,12,12,12,12,10,11,11,12,12,11,11,11,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,10,11,11,12,12,11,12,12,12,12,11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,13,12,12,13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,12,12,13,13,12,13,12,13,13,12,12,12,12,12,12,12,12,12,13,12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,12,13,13,13,12,13,12,13,13,12,13,13,13,13,12,13,13,13,13,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,13,12,12,13,12,13,13,12,13,12,13,13,12,12,12,12,12,12,12,13,13,13,12,12,13,13,13,12,13,13,12,13,13,13,13,13,13,12,12,12,12,12,12,13,12,13,13,12,13,12,13,12,12,13,13,13,13,12,13,13,13,13,8,10,10,11,11,10,10,11,11,11,9,11,10,11,11,10,11,11,12,12,10,11,11,12,12,10,10,11,11,11,10,11,11,12,12,11,11,11,12,12,11,11,12,12,12,11,12,12,12,12,9,11,10,11,11,10,11,11,12,12,10,11,10,12,12,11,12,12,12,12,11,12,11,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,9,10,10,11,11,10,11,11,12,12,10,11,11,12,12,11,12,12,12,12,11,12,12,12,12,10,11,11,12,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,10,11,11,12,12,11,11,12,12,12,11,11,11,12,12,12,12,12,12,12,11,12,12,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,9,10,10,11,11,10,11,11,12,12,10,11,11,12,12,11,12,12,12,12,11,12,11,12,12,10,11,11,12,12,11,11,12,12,12,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,10,11,11,12,12,11,12,11,12,12,11,12,11,12,12,12,12,12,12,12,11,12,11,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,12,13,13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,13,13,12,12,12,13,12,12,12,12,12,12,12,12,13,13,13,12,12,13,13,13,12,13,13,12,13,12,13,13,13,13,12,12,12,12,12,12,12,13,13,13,12,12,12,13,12,12,13,13,13,13,12,13,13,13,13,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,13,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,13,12,13,13,12,13,12,13,12,12,12,12,12,12,12,12,13,13,13,12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,13,12,13,12,12,13,12,13,12,13,13,13,13,13,12,13,13,13,13,10,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,13,12,13,12,13,13,13,13,12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,13,13,13,13,12,13,12,13,13,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,13,12,12,12,13,12,11,12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,13,13,13,12,12,13,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,13,12,12,13,12,13,13,12,13,12,13,13,12,12,12,12,12,12,12,13,12,13,12,12,13,13,13,12,12,13,13,13,13,13,13,13,13,12,12,12,12,12,12,13,13,13,13,12,13,12,13,12,12,13,13,13,13,12,13,13,13,13,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,13,11,12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,12,13,13,13,12,12,13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,13,12,13,13,12,13,12,13,13,12,12,12,12,12,12,12,12,12,13,12,13,12,13,13,12,13,13,13,13,12,13,13,13,13,12,12,12,12,12,12,13,12,13,13,12,12,12,13,13,12,13,13,13,13,12,13,12,13,13,11,12,12,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,13,12,13,13,12,12,12,12,12,12,12,13,12,13,12,12,13,12,13,12,12,13,12,13,12,13,13,13,13,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,13,13,13,13,12,13,12,13,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,13,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,13,12,13,12,12,13,12,13,12,10,11,11,12,12,11,12,12,12,12,11,12,11,12,12,11,12,12,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,13,13,11,12,11,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,13,13,12,13,12,13,13,13,13,12,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,11,12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,12,13,13,13,12,12,13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,13,12,13,13,12,12,12,13,13,12,12,12,12,12,12,12,13,13,13,12,12,13,13,13,12,12,13,13,13,12,13,13,13,13,12,12,12,12,12,12,12,13,13,13,12,12,12,13,12,12,13,13,13,13,12,13,13,13,13,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,12,13,13,13,12,12,13,13,13,11,12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,13,12,13,13,12,13,12,13,13,12,12,12,12,12,12,12,12,13,13,12,13,12,13,13,12,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,13,12,13,13,12,13,12,13,12,12,13,13,13,13,12,13,12,13,13,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,12,12,13,12,12,13,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,13,12,12,12,11,12,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,13,12,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,13,13,12,12,12,13,12,12,12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,12,13,12,13,12,13,13,13,13,12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,12,13,12,13,13,12,13,12,13,12,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,5,5,5,7,8,5,8,7,5,7,7,7,7,9,7,9,9,5,7,7,8,9,9,7,9,7,6,8,8,8,9,10,8,9,9,8,9,10,9,9,11,10,11,11,8,9,9,10,11,11,9,11,10,6,8,8,8,9,9,8,10,9,8,9,9,9,10,11,10,11,10,8,10,9,10,11,11,9,11,9,6,8,8,7,9,9,8,10,9,7,9,9,9,9,10,9,10,10,8,9,9,9,10,10,9,11,10,7,9,9,8,10,10,9,10,10,9,9,10,10,10,11,10,11,11,9,10,10,10,11,11,10,11,10,7,9,9,9,9,10,9,10,9,8,10,9,9,9,11,10,11,11,9,10,10,10,11,11,9,11,9,6,8,8,8,9,10,7,9,9,8,9,9,9,10,10,9,10,10,7,9,9,9,10,10,9,10,9,7,9,9,9,9,10,9,10,9,9,10,10,9,9,11,10,11,11,8,9,10,10,11,11,9,11,9,7,9,9,9,10,10,8,10,10,9,10,10,10,10,11,10,11,11,9,10,9,10,11,11,10,11,10,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,5,7,7,6,7,7,6,7,7,6,7,7,7,8,8,7,8,8,6,7,7,7,8,8,7,8,8,7,7,8,7,8,8,7,8,8,8,8,8,8,8,9,8,9,9,8,8,8,8,9,9,8,9,8,7,8,7,7,8,8,7,8,8,8,8,8,8,8,9,8,9,9,8,8,8,8,9,9,8,9,8,6,8,8,7,8,8,7,8,8,7,8,8,8,8,9,8,9,9,8,8,8,8,9,9,8,9,8,7,8,8,8,8,9,8,9,9,8,8,9,8,9,9,9,9,9,8,9,9,9,9,9,9,9,9,7,8,8,8,9,9,8,9,8,8,8,8,8,9,9,9,9,9,8,9,8,9,9,9,9,9,9,6,8,8,7,8,8,7,8,8,8,8,8,8,8,9,8,9,9,7,8,8,8,9,9,8,9,8,7,8,8,8,8,9,8,9,8,8,8,9,9,9,9,9,9,9,8,8,8,9,9,9,8,9,9,7,8,8,8,9,9,8,9,8,8,9,9,9,9,9,9,9,9,8,9,8,9,9,9,9,9,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,5,5,5,7,8,5,8,7,5,7,8,8,8,10,8,10,10,5,8,7,8,10,10,8,10,8,6,8,9,8,10,12,9,11,11,9,10,11,11,11,13,12,13,13,9,11,11,11,13,13,11,13,12,6,9,8,9,11,11,8,12,10,9,11,11,11,12,13,11,13,13,9,11,10,11,13,13,11,13,11,5,9,9,8,11,11,9,12,11,8,10,11,10,11,13,11,13,13,9,11,11,11,13,13,11,13,12,8,10,11,10,12,13,10,13,12,10,10,13,11,11,14,12,13,14,11,13,12,13,14,14,12,14,12,8,11,10,11,12,13,11,14,12,10,13,12,12,12,13,13,15,14,11,12,13,13,14,15,12,14,12,5,9,9,9,11,12,8,11,11,9,11,11,11,12,13,11,13,13,8,11,10,11,13,13,10,13,11,8,10,11,11,12,14,11,13,12,11,13,12,12,12,14,13,15,14,10,12,13,13,14,15,12,13,12,8,11,10,10,12,13,10,13,12,11,12,13,12,12,14,13,14,14,10,13,10,12,14,13,11,14,11,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,6,6,9,9,6,7,8,10,10,6,8,7,10,10,8,10,10,12,13,8,10,10,13,12,6,8,8,10,10,7,8,9,10,11,8,9,9,11,11,10,10,11,12,13,10,11,11,14,13,6,8,8,10,10,8,9,9,11,11,7,9,8,11,10,10,11,11,13,14,10,11,10,13,12,9,10,10,12,12,10,10,11,12,13,10,11,11,13,13,12,12,13,12,15,13,14,13,15,14,9,10,10,13,12,10,11,11,13,13,10,11,10,13,12,13,13,14,14,15,12,13,12,15,12,6,8,8,10,11,8,9,10,11,12,8,9,9,11,11,10,11,12,13,14,10,11,11,14,13,8,9,9,11,12,9,10,11,12,13,9,10,11,12,13,11,11,13,13,15,11,12,12,14,14,8,9,9,12,12,9,10,11,12,13,9,10,10,13,12,11,12,13,14,15,11,12,12,14,14,11,11,12,13,14,11,12,13,13,15,12,13,13,14,15,13,13,14,14,16,14,15,15,16,16,11,12,11,14,13,12,13,13,14,14,11,13,12,14,13,14,15,15,16,16,13,14,14,16,14,6,8,8,11,10,8,9,9,12,11,8,10,9,12,11,10,11,11,13,13,10,12,11,14,13,8,9,9,12,12,9,10,10,12,13,9,11,10,13,12,11,12,12,14,14,11,13,12,15,14,8,9,9,12,11,9,10,10,13,12,9,11,10,13,12,12,12,12,14,14,11,13,12,15,13,11,11,12,13,14,11,12,13,13,14,12,13,13,14,15,13,13,14,14,16,14,15,15,16,16,11,12,11,14,13,12,13,13,15,14,11,13,12,15,13,14,15,15,16,16,13,15,13,16,14,9,10,11,12,13,11,11,12,13,14,11,12,12,13,14,13,13,14,14,16,13,14,14,15,16,11,11,12,13,14,12,12,13,14,15,12,13,13,14,15,14,14,15,15,17,14,15,15,16,17,11,12,12,14,14,12,13,13,14,15,12,13,12,15,15,14,15,15,16,17,14,15,15,16,16,13,14,14,15,16,14,14,15,15,17,15,15,15,16,17,16,16,17,16,18,16,17,17,18,18,13,14,14,16,15,14,15,15,17,16,14,15,15,16,16,16,17,17,18,18,16,16,16,17,16,9,11,10,13,12,11,12,12,14,13,11,12,11,15,13,13,14,14,16,15,13,14,13,17,14,11,12,12,14,14,12,12,13,15,15,12,13,13,15,14,14,14,15,16,16,14,15,15,17,16,11,12,11,14,13,12,13,13,15,14,12,13,12,15,13,14,15,15,16,16,14,15,14,17,15,13,14,14,15,16,14,15,15,16,17,14,15,15,16,17,16,16,16,17,17,16,17,17,18,18,13,15,14,16,15,15,15,15,17,16,14,15,14,17,15,16,17,17,18,18,16,17,16,18,16,6,8,8,11,11,8,9,9,11,12,8,9,9,12,11,10,11,11,13,14,10,12,11,14,13,7,9,9,11,12,9,10,10,12,13,9,10,10,13,12,11,11,12,13,15,11,12,12,15,14,8,9,9,12,11,9,10,10,13,13,9,11,10,13,12,12,12,12,14,15,11,13,12,15,13,10,11,11,13,14,11,12,12,13,15,11,12,12,14,14,13,13,14,14,16,14,15,14,16,16,11,12,11,14,13,12,13,13,15,14,11,13,12,15,13,14,15,15,16,16,13,14,14,16,14,8,9,9,11,12,9,10,11,12,13,9,10,10,13,12,11,12,13,14,15,11,12,12,15,14,9,9,11,11,13,10,10,12,12,14,10,10,11,13,14,12,12,13,14,16,12,13,13,15,15,9,11,10,13,12,10,11,11,13,14,10,12,11,14,13,12,13,13,15,16,12,13,13,15,15,11,11,13,13,15,12,12,14,13,15,13,13,14,14,15,14,14,15,14,17,15,15,15,16,16,12,13,12,15,14,13,14,14,15,15,12,14,13,15,14,15,15,15,17,17,14,15,14,17,15,7,9,9,12,11,9,10,10,12,12,9,11,10,13,12,11,12,12,14,14,11,13,12,15,14,9,10,10,12,12,10,10,11,12,13,10,11,11,14,13,12,12,13,14,15,12,13,13,16,15,9,10,10,13,12,10,11,11,13,13,10,11,10,14,12,13,13,13,15,15,12,13,12,15,14,11,12,12,14,14,12,12,13,14,15,13,14,13,15,15,14,13,15,14,16,15,16,15,17,16,12,12,12,14,14,13,13,14,15,15,12,13,12,15,14,15,15,16,16,17,14,15,14,17,14,10,11,12,13,14,11,12,13,14,15,11,12,13,14,15,13,14,15,15,17,14,15,15,16,16,11,12,13,12,15,12,12,14,13,16,13,13,14,13,16,14,14,16,14,18,15,15,16,16,17,12,13,12,15,15,13,14,14,15,16,13,14,13,16,15,15,15,16,17,18,15,15,15,17,16,14,14,15,14,17,15,14,16,14,17,15,15,16,15,18,16,16,17,16,19,17,17,17,17,18,14,15,15,17,16,15,16,16,17,17,15,16,15,18,16,17,17,18,18,18,16,17,16,18,17,10,11,11,14,13,11,12,12,15,14,11,13,12,15,14,14,15,15,16,16,14,15,15,17,16,11,12,12,15,14,12,13,13,15,14,13,14,13,16,14,14,15,15,16,16,15,16,15,18,16,11,13,12,15,15,13,14,14,15,15,12,14,13,16,15,15,16,16,17,17,15,16,15,17,16,14,15,14,16,16,14,15,15,16,16,15,16,15,17,16,16,16,17,16,17,17,18,17,19,18,14,15,15,17,16,15,16,16,17,17,15,15,15,18,16,17,18,18,18,18,16,17,16,19,16,6,8,8,11,11,8,9,9,11,12,8,9,9,12,11,10,11,12,13,14,10,11,11,14,13,8,9,9,11,12,9,10,11,12,13,9,10,10,13,13,11,12,13,13,15,11,12,12,15,14,7,9,9,12,11,9,10,10,12,13,9,10,10,13,12,11,12,12,14,15,11,12,11,14,13,11,11,12,13,14,11,12,13,13,15,12,13,13,14,15,13,14,14,14,16,14,15,15,16,16,10,11,11,14,13,11,12,12,14,14,11,12,12,15,13,14,14,14,16,16,13,14,13,16,14,7,9,9,11,12,9,10,10,12,13,9,10,10,12,12,11,12,13,14,15,11,12,12,14,14,9,10,10,12,13,10,10,11,12,14,10,11,11,13,13,12,12,13,14,15,13,13,13,15,15,9,10,10,12,12,10,11,11,13,14,10,11,10,13,12,12,13,13,15,16,12,13,12,15,14,11,12,13,14,14,12,12,13,14,15,13,14,13,15,15,14,14,15,14,17,15,16,15,17,16,11,12,12,14,14,13,13,13,15,15,12,13,12,15,14,15,15,15,16,17,14,15,14,16,14,8,9,9,12,11,9,10,10,12,13,9,11,10,13,12,11,12,12,14,15,11,12,12,15,14,9,10,11,13,13,10,11,12,13,14,10,11,11,14,13,12,13,13,15,15,12,13,13,16,15,9,11,9,13,11,10,11,10,14,13,10,12,10,14,12,12,13,13,15,15,12,13,12,16,14,12,12,13,14,15,12,13,14,14,16,13,14,14,15,15,14,14,15,15,17,15,16,15,17,16,11,13,11,15,13,13,14,13,15,14,12,14,12,16,13,15,15,15,16,16,14,15,14,17,14,10,11,11,13,14,11,12,13,14,15,11,12,12,14,15,14,14,15,16,17,14,15,15,16,16,11,12,13,14,15,12,13,14,15,16,13,14,14,15,16,15,15,16,16,18,15,16,16,17,17,11,12,12,14,15,13,13,14,14,16,12,13,13,15,15,15,15,16,16,18,14,15,15,16,16,14,15,15,16,17,15,15,16,16,17,15,16,16,17,17,16,16,17,16,19,17,18,17,18,18,14,14,15,16,16,15,15,16,16,17,14,15,15,16,16,17,17,18,18,19,16,17,16,17,16,10,12,11,14,13,11,13,12,15,14,11,13,12,15,14,14,15,15,16,16,13,15,14,17,15,12,13,13,15,15,13,13,14,15,16,13,14,14,16,16,14,15,15,17,17,15,16,16,17,17,11,13,12,15,12,13,14,13,16,13,12,14,12,16,13,15,16,15,17,16,14,16,14,18,14,14,15,15,16,17,15,15,16,16,17,15,16,16,17,17,16,16,17,17,18,17,18,17,18,18,14,15,14,17,14,15,16,15,18,15,15,16,15,18,14,17,17,17,18,17,16,17,16,19,16,9,11,11,13,13,10,12,12,14,14,11,12,12,15,14,13,14,14,16,16,13,14,14,16,16,10,11,12,14,14,11,12,13,14,15,12,13,13,15,15,13,14,15,16,16,14,15,15,17,16,11,12,12,15,14,12,13,13,15,15,12,13,12,15,15,14,15,15,16,17,14,15,14,17,16,12,13,14,15,16,13,13,14,15,16,13,14,15,16,16,14,15,16,16,18,15,16,16,18,18,13,14,14,16,15,14,15,15,17,16,14,15,15,17,16,16,17,17,18,18,16,17,16,18,17,10,12,12,14,14,11,12,13,15,15,12,13,13,15,15,13,14,15,16,17,14,15,15,17,16,11,11,13,14,15,12,12,14,15,16,13,13,14,15,16,14,14,15,16,17,15,15,16,17,17,12,13,12,15,15,13,14,14,16,16,13,14,13,16,15,15,16,15,17,17,15,16,15,18,16,13,12,15,14,17,14,13,16,14,17,14,14,16,15,18,15,14,17,16,18,16,16,17,17,18,14,15,15,17,16,15,16,16,17,17,15,16,15,18,16,17,17,17,18,18,16,17,16,19,17,10,11,11,14,14,11,12,12,15,15,11,13,12,15,15,14,15,14,16,16,14,15,15,17,16,11,12,12,15,14,12,12,13,15,15,13,14,13,16,15,14,15,15,16,16,15,16,15,18,17,11,13,12,15,15,13,14,13,15,15,12,14,13,16,15,15,16,15,17,17,15,16,15,18,16,13,14,13,16,16,14,15,14,16,16,14,15,15,17,16,16,16,16,16,18,16,18,17,19,18,14,15,15,17,16,15,16,16,17,17,15,15,15,17,16,17,17,18,18,19,16,17,16,18,16,12,13,13,15,16,13,14,14,16,17,13,14,14,16,16,15,15,16,17,18,15,16,16,18,17,13,13,14,14,17,14,14,15,15,17,14,14,15,16,17,15,15,17,16,18,16,17,17,18,18,13,14,14,17,16,14,15,15,17,17,14,15,14,17,16,16,17,17,18,18,16,17,16,18,17,15,14,16,13,18,16,15,17,14,19,16,16,17,15,18,17,16,18,15,19,18,18,18,17,19,15,16,16,18,17,16,17,17,18,18,16,17,16,19,17,18,19,18,19,19,17,18,17,20,18,11,12,12,15,15,13,13,14,15,16,13,14,13,16,15,15,16,16,17,17,15,16,16,18,17,12,14,13,16,15,13,13,14,15,16,14,15,14,17,16,16,16,16,16,17,16,17,17,19,17,12,13,14,16,16,14,15,15,16,17,13,15,13,17,15,16,17,17,18,18,16,17,16,18,16,15,16,15,17,16,15,15,15,17,17,16,17,16,18,17,17,16,17,16,18,18,19,18,20,18,15,16,16,17,17,16,17,17,18,18,15,16,15,18,17,18,18,19,19,19,17,18,16,19,16,9,11,11,13,13,11,12,12,14,15,10,12,12,14,14,13,14,14,16,16,13,14,14,16,16,11,12,12,14,14,12,12,13,15,15,12,13,13,15,15,14,15,15,16,17,14,15,15,16,16,10,12,11,14,14,12,13,13,15,15,11,13,12,15,14,14,15,15,16,17,13,15,14,17,16,13,14,14,15,16,14,15,15,16,17,14,15,15,16,17,16,16,17,17,18,16,17,17,18,18,12,14,13,16,15,13,15,14,17,16,13,14,13,17,15,15,16,16,18,18,15,16,15,18,16,10,11,11,14,14,11,12,13,14,15,11,12,12,15,15,14,15,15,16,17,14,15,15,16,16,11,12,13,15,15,12,13,14,15,16,13,14,14,15,16,15,15,16,16,18,15,15,16,17,17,11,12,12,14,15,13,13,14,15,16,12,13,13,15,15,15,15,16,17,18,14,15,15,17,16,14,15,15,16,17,15,15,16,16,17,15,16,16,17,17,16,16,17,16,19,17,17,18,19,18,13,13,14,16,16,14,15,16,17,17,14,14,15,16,16,16,16,17,18,18,16,16,16,18,16,10,12,12,14,14,12,13,13,15,15,11,13,12,15,15,14,15,15,16,17,13,15,14,17,16,12,13,13,15,15,13,13,14,15,16,13,14,14,16,16,15,15,16,17,18,15,15,16,17,17,11,13,12,15,14,13,14,13,16,15,12,14,12,16,14,15,16,15,17,17,14,16,14,17,16,14,15,15,16,17,15,15,16,16,18,15,16,16,17,17,16,17,17,17,19,17,17,17,18,18,13,15,12,17,14,14,16,14,17,15,14,15,13,17,14,16,17,16,18,17,15,17,14,19,15,11,12,12,15,15,13,13,14,15,16,13,14,13,16,15,15,16,16,17,18,15,16,16,17,17,12,14,13,16,16,13,13,15,15,17,14,15,15,17,16,16,16,17,16,19,16,17,17,18,18,12,13,14,15,16,14,14,15,16,17,13,14,13,16,15,16,17,17,18,19,15,16,16,17,16,15,16,16,18,17,15,15,16,17,18,16,17,17,18,18,16,16,18,16,19,18,19,19,20,19,15,15,16,16,17,16,16,17,17,18,15,15,15,17,16,18,18,19,18,20,17,17,16,18,16,12,13,13,16,15,13,14,14,16,16,13,14,14,16,16,15,16,16,17,18,15,16,15,18,17,13,14,14,16,16,14,15,15,16,17,14,15,15,17,17,16,17,17,18,18,16,17,17,18,18,13,14,13,17,14,14,15,14,17,16,14,15,14,17,15,16,17,17,18,18,15,17,15,19,15,16,16,16,17,18,16,16,17,17,19,16,17,17,18,19,17,17,18,18,20,18,18,18,19,19,15,16,14,18,13,16,17,16,19,15,16,17,15,19,14,18,18,18,19,17,17,18,16,20,15,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,5,5,5,7,7,5,7,7,5,7,7,7,8,9,7,9,9,5,7,7,7,9,9,7,9,8,5,7,8,8,9,10,8,9,9,8,9,10,9,10,12,10,11,11,8,9,10,10,11,11,9,11,11,5,8,7,8,9,9,8,10,9,8,10,9,9,11,11,10,11,11,8,10,9,10,11,11,9,12,10,5,8,8,7,9,10,8,10,9,7,9,9,9,10,11,9,11,11,8,10,10,10,11,11,10,12,11,7,9,9,9,10,11,9,11,11,9,9,11,10,10,13,11,11,12,9,11,11,11,12,13,11,13,12,7,9,9,9,11,11,9,12,10,9,11,10,10,11,12,11,13,12,9,11,11,11,13,13,11,13,11,5,8,8,8,9,10,7,10,9,8,10,10,10,11,11,10,11,11,7,9,9,9,11,11,9,11,10,7,9,9,9,10,12,9,11,11,9,11,11,11,11,13,11,13,13,9,10,11,11,12,13,10,12,11,7,9,9,9,11,11,9,11,10,9,11,11,11,12,13,11,13,12,9,11,9,11,12,11,10,13,10,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,8,13,15,16,18,21,22,5,4,6,8,10,12,17,21,9,5,5,6,8,11,15,19,11,6,5,5,6,7,12,14,14,8,7,5,4,4,9,11,16,11,9,7,4,3,7,10,22,15,14,12,8,7,9,11,21,16,15,12,9,5,6,8,2,0,0,0,64,0,0,0,8,198,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,208,150,6,0,0,0,0,0,0,0,0,0,248,150,6,0,0,0,0,0,0,0,0,0,32,151,6,0,72,151,6,0,0,0,0,0,0,0,0,0,112,151,6,0,152,151,6,0,0,0,0,0,0,0,0,0,192,151,6,0,232,151,6,0,0,0,0,0,0,0,0,0,16,152,6,0,56,152,6,0,232,151,6,0,0,0,0,0,96,152,6,0,136,152,6,0,232,147,6,0,16,148,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,0,0,0,0,0,0,0,0,0,0,2,0,0,0,64,0,0,0,144,150,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,2,0,0,0,4,0,0,0,136,150,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,112,147,6,0,152,147,6,0,0,0,0,0,0,0,0,0,192,147,6,0,232,147,6,0,16,148,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,169,0,0,0,160,149,6,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,80,150,6,0,0,0,0,0,2,0,0,0,25,0,0,0,104,149,6,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,136,149,6,0,0,0,0,0,2,0,0,0,9,0,0,0,72,149,6,0,1,0,0,0,0,136,51,225,0,136,51,97,2], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+420817); +/* memory initializer */ allocate([0,0,0,0,0,0,0,88,149,6,0,0,0,0,0,1,0,0,0,25,0,0,0,192,148,6,0,1,0,0,0,0,192,18,225,0,0,153,96,5,0,0,0,0,0,0,0,224,148,6,0,0,0,0,0,1,0,0,0,25,0,0,0,56,148,6,0,1,0,0,0,0,0,120,224,0,0,16,96,5,0,0,0,0,0,0,0,88,148,6,0,0,0,0,0,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,13,0,0,0,10,0,0,0,14,0,0,0,9,0,0,0,15,0,0,0,8,0,0,0,16,0,0,0,7,0,0,0,17,0,0,0,6,0,0,0,18,0,0,0,5,0,0,0,19,0,0,0,4,0,0,0,20,0,0,0,3,0,0,0,21,0,0,0,2,0,0,0,22,0,0,0,1,0,0,0,23,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,1,2,3,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,14,14,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,13,0,0,0,10,0,0,0,14,0,0,0,9,0,0,0,15,0,0,0,8,0,0,0,16,0,0,0,7,0,0,0,17,0,0,0,6,0,0,0,18,0,0,0,5,0,0,0,19,0,0,0,4,0,0,0,20,0,0,0,3,0,0,0,21,0,0,0,2,0,0,0,22,0,0,0,1,0,0,0,23,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,1,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,4,4,5,5,4,5,5,5,5,4,5,4,4,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,8,8,10,10,10,10,9,8,11,11,4,6,5,8,6,10,10,10,10,10,9,10,9,4,5,6,6,9,10,10,10,10,9,10,9,10,8,9,8,9,8,9,9,10,9,11,10,12,10,8,8,9,8,9,9,9,9,10,10,11,10,12,9,10,10,11,10,11,10,12,11,12,11,13,11,9,10,10,10,11,10,11,11,12,11,12,11,12,11,12,12,12,12,13,12,13,12,13,12,13,13,11,12,12,12,12,12,12,12,13,13,13,13,13,12,12,12,13,13,13,13,13,13,13,13,13,13,12,13,12,13,13,13,13,13,13,13,13,13,13,12,13,13,13,14,14,13,13,13,13,13,13,13,12,13,12,13,13,13,13,13,13,13,13,13,13,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,3,2,3,0,0,0,0,3,7,12,14,14,16,18,19,6,2,4,6,8,9,12,14,12,3,3,5,7,8,11,13,13,6,4,5,7,8,10,11,14,8,7,7,7,7,9,10,15,9,8,7,7,6,8,9,17,11,11,10,9,8,9,9,19,14,13,11,10,9,9,9,5,0,0,0,243,0,0,0,0,197,6,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,248,197,6,0,0,0,0,0,5,0,0,0,53,12,0,0,176,184,6,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,232,196,6,0,0,0,0,0,5,0,0,0,243,0,0,0,168,183,6,0,1,0,0,0,0,0,56,224,0,0,56,96,2,0,0,0,0,0,0,0,160,184,6,0,0,0,0,0,5,0,0,0,243,0,0,0,160,182,6,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,152,183,6,0,0,0,0,0,5,0,0,0,243,0,0,0,152,181,6,0,1,0,0,0,0,0,84,224,0,0,84,96,2,0,0,0,0,0,0,0,144,182,6,0,0,0,0,0,5,0,0,0,53,12,0,0,72,169,6,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,128,181,6,0,0,0,0,0,5,0,0,0,53,12,0,0,248,156,6,0,1,0,0,0,0,0,124,224,0,0,92,96,3,0,0,0,0,0,0,0,48,169,6,0,0,0,0,0,1,0,0,0,7,0,0,0,208,156,6,0,1,0,0,0,0,0,56,224,0,0,16,96,3,0,0,0,0,0,0,0,216,156,6,0,0,0,0,0,5,0,0,0,243,0,0,0,200,155,6,0,1,0,0,0,0,0,149,224,0,0,149,96,2,0,0,0,0,0,0,0,192,156,6,0,0,0,0,0,5,0,0,0,243,0,0,0,192,154,6,0,1,0,0,0,0,0,92,224,0,0,92,96,2,0,0,0,0,0,0,0,184,155,6,0,0,0,0,0,5,0,0,0,243,0,0,0,184,153,6,0,1,0,0,0,0,76,93,225,0,76,93,97,2,0,0,0,0,0,0,0,176,154,6,0,0,0,0,0,5,0,0,0,243,0,0,0,176,152,6,0,1,0,0,0,0,136,51,225,0,136,51,97,2,0,0,0,0,0,0,0,168,153,6,0,0,0,0,0,1,7,7,6,9,9,7,9,9,6,9,9,9,9,9,9,9,9,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,7,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,7,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,6,6,5,7,8,5,8,7,6,7,7,7,7,8,8,8,8,6,7,7,7,8,8,7,8,7,6,8,8,8,9,10,8,9,9,8,9,9,9,9,10,10,10,10,8,9,9,10,10,10,9,10,10,6,8,8,8,9,9,8,10,9,9,9,9,9,9,10,10,10,10,8,9,9,10,10,10,9,10,9,6,8,9,8,9,9,8,9,9,8,9,9,9,9,10,9,10,10,8,9,9,9,10,10,9,10,9,7,8,9,8,9,9,9,9,9,8,9,9,9,9,9,9,9,9,8,9,9,9,9,9,9,9,9,7,9,9,9,10,10,9,10,10,9,10,9,9,9,10,10,10,10,9,10,9,10,10,10,9,10,9,6,8,8,8,9,9,8,9,9,8,9,9,9,9,10,9,10,10,8,9,9,9,10,10,9,10,9,7,9,9,9,10,10,9,10,9,9,9,10,10,9,10,10,10,10,9,9,9,10,10,10,9,10,9,7,9,8,8,9,9,8,9,9,9,9,9,9,9,9,9,9,9,8,9,8,9,9,9,9,9,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,5,5,5,7,9,5,9,7,5,7,8,7,7,10,9,9,10,5,8,7,9,10,9,7,10,7,6,9,9,9,10,12,10,12,11,9,10,11,11,10,13,12,12,13,10,11,11,12,13,13,11,13,11,6,9,9,10,11,12,9,12,11,10,11,11,11,11,13,12,13,13,9,11,10,12,13,13,11,13,10,6,9,10,9,11,12,10,12,11,9,10,11,10,10,13,11,13,13,10,11,11,12,13,12,11,13,11,7,9,10,9,10,12,10,11,11,10,10,11,10,10,12,12,11,12,10,11,10,12,12,12,10,12,10,7,10,10,11,11,13,11,13,11,10,12,11,11,10,13,13,14,13,10,11,12,13,13,14,11,13,10,6,10,9,10,11,12,9,12,11,9,11,11,11,11,13,12,12,13,9,11,10,12,13,13,10,13,10,7,10,10,11,11,14,11,13,11,10,12,11,11,10,14,13,14,13,10,11,12,13,13,14,11,13,10,7,10,9,10,10,12,9,12,10,10,11,11,10,10,12,12,12,12,9,11,10,11,12,12,10,12,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,3,3,3,3,3,3,0,3,0,0,0,2,0,0,0,4,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,1,6,6,10,10,6,7,9,11,13,5,9,7,13,11,8,11,12,13,15,8,12,11,15,13,6,7,8,11,11,7,8,10,11,13,9,10,10,13,13,11,11,13,12,16,12,13,13,16,15,6,8,7,11,11,9,10,10,13,13,7,10,7,13,11,12,13,13,15,16,11,13,11,16,12,10,11,11,11,13,11,11,13,12,15,13,13,13,14,15,13,12,15,12,17,15,16,16,16,16,10,11,11,14,11,13,13,13,15,14,11,13,11,15,12,15,15,16,16,16,13,15,12,17,12,6,8,9,12,12,9,10,12,13,15,9,11,11,15,14,12,13,15,16,18,13,14,14,17,16,9,10,11,13,14,11,10,13,14,16,11,12,12,15,15,14,13,16,15,18,14,15,15,17,17,9,11,11,14,14,11,12,13,15,16,11,13,11,15,14,15,15,15,17,18,14,15,14,17,15,13,14,14,15,16,14,14,15,15,17,15,16,15,17,17,16,16,17,15,19,17,18,18,19,18,13,14,14,16,15,15,15,16,17,17,14,15,14,18,15,17,17,17,19,19,16,17,15,19,16,6,9,8,13,12,9,11,11,14,15,9,12,10,15,13,13,14,14,16,17,12,15,13,18,16,9,11,11,14,14,11,11,13,14,15,11,13,12,16,15,14,14,15,15,18,14,15,15,18,17,9,11,10,14,13,11,12,12,15,15,11,13,10,16,14,14,15,15,16,18,14,16,13,18,15,13,14,14,16,16,14,14,15,15,17,15,16,15,17,17,16,16,17,16,19,17,18,17,18,19,13,14,14,16,15,15,15,15,17,17,14,15,14,17,15,17,17,17,18,19,16,17,15,19,15,11,13,13,15,16,13,14,15,16,18,14,15,15,17,17,16,16,18,18,20,17,18,17,19,20,13,14,14,16,17,15,15,16,17,18,15,16,16,17,17,18,17,19,18,19,18,18,18,19,21,14,14,15,16,17,15,15,16,18,18,15,16,16,17,18,18,18,19,19,21,18,19,19,22,20,16,16,17,17,19,17,17,17,18,20,17,18,18,20,19,19,19,20,19,0,19,19,20,20,21,17,17,17,19,18,18,18,20,19,19,18,18,18,20,20,19,19,20,20,20,20,21,20,21,19,11,13,13,16,15,14,15,15,17,17,14,15,14,18,16,16,18,18,20,19,16,19,17,21,18,13,14,15,16,17,15,15,16,18,18,15,16,15,19,18,18,18,18,19,19,18,18,18,22,20,13,14,14,16,16,15,16,16,18,17,15,16,15,18,17,18,18,18,19,19,17,18,17,21,18,16,17,17,18,18,17,18,19,19,19,18,20,18,19,19,19,20,21,19,21,20,20,20,0,21,16,17,17,19,19,18,18,18,19,21,17,18,18,19,18,20,19,21,20,21,19,20,20,22,19,7,9,9,13,13,8,10,11,14,15,9,12,11,15,14,11,13,14,16,17,13,15,14,17,16,8,10,11,14,14,10,10,12,14,16,11,12,12,16,15,13,12,15,15,18,14,15,15,19,17,9,11,11,14,14,11,12,12,15,15,11,13,11,16,14,14,15,14,17,17,14,16,14,18,15,12,13,14,15,16,13,13,15,14,17,15,15,15,17,17,15,14,17,14,19,17,18,18,19,18,13,14,14,16,16,15,15,15,17,17,14,15,14,18,15,17,18,17,18,17,16,18,16,19,15,7,10,10,13,13,9,10,12,14,15,10,12,11,15,14,12,13,14,16,17,13,15,14,18,16,10,10,12,13,14,10,10,13,13,16,12,12,13,15,15,13,12,15,15,18,15,15,16,18,17,10,11,11,14,14,12,13,13,15,16,10,13,10,16,14,14,15,15,17,17,14,15,13,17,15,13,13,14,15,16,14,13,15,14,18,15,15,16,16,17,16,15,18,15,18,17,18,18,18,18,13,15,14,17,16,15,16,16,17,17,14,15,13,17,15,17,17,18,18,18,16,17,14,20,14,8,10,10,14,14,11,11,13,14,16,11,13,11,16,14,14,15,16,16,18,14,16,15,18,16,10,12,11,15,14,11,11,13,14,16,13,14,13,16,15,15,14,16,15,19,16,17,16,20,18,10,11,12,14,15,13,13,14,16,16,11,14,11,16,14,16,16,17,18,19,15,17,14,20,15,14,15,14,17,16,13,14,15,15,18,16,17,16,19,18,16,15,18,15,19,18,19,18,21,21,14,14,15,16,17,16,16,17,18,18,13,15,14,17,15,18,18,19,18,22,16,18,15,21,15,12,13,14,16,16,14,14,16,16,18,14,15,15,17,18,16,16,18,18,20,18,18,17,20,20,13,14,15,15,17,15,14,16,16,18,16,16,16,17,19,17,15,18,17,21,18,18,18,19,19,14,15,15,18,17,15,16,16,18,19,15,16,15,18,18,17,18,18,20,21,17,19,17,20,19,16,16,17,16,19,17,17,18,17,20,18,18,18,18,19,19,18,20,17,22,20,20,19,20,20,17,17,18,18,19,18,18,20,21,20,17,18,17,20,20,21,21,21,21,21,19,21,18,22,20,11,13,13,17,16,14,14,16,16,18,14,16,14,18,16,17,18,19,19,20,18,19,18,21,19,14,15,14,17,16,14,14,16,18,18,16,17,16,18,17,18,17,19,18,20,19,19,18,20,20,13,14,15,16,17,16,16,17,18,19,14,16,14,19,17,18,19,18,20,20,18,20,17,21,18,17,17,17,19,18,16,17,18,18,19,18,19,18,21,21,18,18,20,17,21,19,20,20,22,21,16,17,18,18,19,18,18,19,21,20,16,17,17,20,18,21,21,22,21,22,18,21,18,0,18,7,9,9,13,13,9,11,12,14,15,8,11,10,15,14,13,14,15,16,18,11,14,13,17,15,9,11,11,14,14,11,11,13,14,16,11,12,12,15,15,14,14,16,15,18,14,14,15,17,17,8,11,10,14,14,11,12,12,15,15,10,12,10,16,14,14,15,15,17,18,13,15,12,18,15,13,14,14,16,16,14,14,15,15,17,15,15,15,16,17,16,15,17,15,19,17,17,17,18,18,12,14,13,16,15,15,15,15,17,17,13,15,13,17,14,17,18,18,18,19,15,17,14,19,14,8,10,10,14,14,11,11,13,14,16,11,13,11,16,14,14,15,16,17,19,14,16,15,18,17,10,12,11,15,14,11,11,14,14,17,13,14,13,17,15,15,14,17,15,19,16,17,16,19,17,10,11,12,14,15,13,13,14,15,17,11,13,11,17,14,16,16,17,18,19,15,16,14,18,15,14,15,14,16,16,13,14,15,15,18,16,16,16,18,18,16,15,18,15,20,18,19,18,21,18,14,14,15,16,17,16,16,17,17,18,13,15,14,17,16,19,19,19,19,19,15,18,15,20,15,7,10,10,13,13,10,11,12,14,15,9,12,10,15,14,13,14,15,16,17,12,15,13,17,16,10,11,11,14,14,10,10,13,14,16,12,13,13,16,15,14,13,16,15,18,15,15,16,17,17,10,12,10,14,13,12,13,12,15,15,10,13,10,16,13,15,16,15,17,18,13,16,12,18,15,13,14,14,16,17,14,13,15,15,18,15,16,15,17,17,16,14,17,15,19,17,18,18,19,19,13,15,13,17,14,15,15,15,18,17,14,15,13,17,14,18,17,18,18,19,15,17,15,19,15,11,13,13,16,17,14,14,16,16,18,14,16,15,18,17,17,18,19,18,21,18,18,17,20,18,13,15,14,17,16,14,14,16,17,18,16,17,16,19,17,18,17,19,18,22,18,19,19,21,21,13,14,15,16,18,16,16,17,17,20,14,16,14,18,17,18,18,19,19,21,17,18,17,21,18,17,18,17,19,18,16,17,17,18,19,18,18,18,22,22,18,17,19,17,0,20,21,19,21,20,17,17,18,18,21,18,18,18,19,21,17,17,17,19,19,20,20,22,21,21,19,20,18,20,17,12,14,13,17,16,14,15,15,17,18,14,16,14,18,16,17,18,18,21,20,16,18,16,21,18,14,15,15,17,17,15,15,16,18,18,15,17,16,18,18,17,17,19,19,20,18,19,18,20,19,14,15,14,17,15,15,16,16,18,17,15,16,14,19,15,18,18,18,19,20,17,20,15,21,17,16,17,18,18,19,17,17,18,18,20,18,19,18,19,21,19,18,19,19,21,20,0,19,21,20,16,17,16,19,16,18,18,18,19,19,17,18,17,20,17,19,20,20,22,0,19,20,17,21,17,11,13,14,16,17,14,15,15,17,18,14,15,15,18,18,16,17,17,19,20,16,18,17,19,21,13,14,15,17,17,14,15,16,17,19,15,16,16,18,19,16,17,18,19,21,17,18,20,21,21,13,15,15,17,17,15,16,16,18,19,15,16,16,18,19,17,17,18,19,22,17,19,18,22,19,15,16,17,19,19,16,17,18,18,20,17,18,18,19,20,19,18,20,18,22,20,19,19,22,21,16,17,17,18,19,18,18,18,19,20,17,18,18,20,19,20,19,20,22,20,19,20,21,21,20,12,14,14,16,16,13,14,16,17,18,14,16,15,18,18,15,17,17,19,19,17,18,18,19,19,13,14,15,16,17,14,14,16,16,20,15,16,16,17,19,16,15,18,17,20,18,17,19,19,19,14,15,15,17,17,16,16,16,18,18,15,16,15,19,18,17,18,18,20,21,17,18,17,21,18,16,15,17,17,19,17,15,18,17,20,19,17,18,19,20,18,16,19,17,22,20,19,20,19,20,17,17,18,19,19,18,18,19,20,20,17,18,17,18,18,21,21,20,20,21,18,20,17,21,19,11,14,14,16,17,15,14,16,17,19,14,16,14,18,17,18,18,19,19,21,17,19,18,20,20,13,15,14,17,17,14,14,16,17,18,16,17,16,19,18,18,17,19,18,20,18,21,18,20,20,13,15,15,16,17,16,16,17,18,19,14,16,15,19,18,19,19,19,21,20,18,19,17,20,18,16,17,16,19,18,16,17,17,19,20,17,19,18,20,19,18,17,21,18,0,21,20,20,0,20,17,17,18,18,19,18,19,19,20,22,16,17,17,20,18,21,22,20,20,22,18,22,18,22,18,12,14,14,17,17,14,15,16,17,19,14,16,15,17,17,17,17,18,18,21,17,19,17,20,19,14,15,15,16,18,15,14,16,16,19,16,17,16,19,18,17,16,20,17,20,18,20,19,19,20,14,15,15,18,17,16,16,17,18,19,14,16,15,19,17,18,21,18,19,21,17,18,17,19,18,17,17,18,17,20,17,16,18,17,21,18,19,19,19,19,18,17,19,17,20,20,21,20,21,20,17,17,17,19,19,19,18,18,20,21,16,18,16,19,18,20,20,21,21,20,18,19,16,0,17,12,14,14,17,17,15,15,18,17,19,15,18,15,20,16,20,19,21,18,22,20,20,20,22,19,14,16,14,20,17,14,15,17,17,20,18,18,17,20,18,18,17,19,17,21,20,21,20,0,21,14,15,16,17,19,18,17,19,18,21,14,18,15,21,17,21,20,21,20,0,18,21,17,21,17,18,19,17,20,18,16,17,17,19,19,19,21,20,0,20,18,17,21,17,0,22,0,21,0,22,17,17,19,18,20,20,20,21,19,22,16,17,18,20,18,22,22,0,22,0,17,21,17,22,17,11,14,13,16,16,14,15,15,17,18,14,15,14,18,17,17,18,18,19,20,16,17,17,21,19,13,14,15,17,17,15,16,16,18,18,15,16,16,19,18,18,18,18,19,20,17,18,18,20,19,13,15,14,17,17,15,16,16,17,18,14,16,15,19,17,17,18,19,21,21,17,18,17,20,18,16,17,17,19,19,17,18,19,19,20,18,19,18,21,21,21,20,19,21,22,20,20,19,21,20,15,17,16,19,19,17,18,18,20,21,16,18,17,20,18,19,19,21,21,21,19,19,19,20,18,11,14,13,17,16,14,14,16,16,19,14,16,15,19,16,18,18,18,19,22,17,18,17,20,19,13,15,14,17,17,15,15,16,17,19,16,17,16,20,18,18,17,19,18,21,19,19,18,22,0,13,14,15,17,18,16,16,17,17,19,14,16,15,19,18,18,19,19,20,21,18,18,17,20,18,17,18,17,20,18,16,17,17,18,20,18,19,18,20,20,18,18,21,17,21,20,21,21,0,19,16,16,18,18,19,19,18,20,19,20,16,17,17,20,18,21,20,21,22,22,18,20,17,21,17,12,14,14,17,16,14,15,16,18,18,13,15,14,18,17,17,18,18,19,19,15,17,16,19,19,14,15,15,17,17,15,15,16,18,19,15,16,16,19,18,17,17,18,18,20,18,18,18,21,20,13,15,14,17,16,15,16,15,18,18,14,16,14,18,17,18,18,18,19,21,16,18,16,20,17,17,18,17,18,19,17,17,18,18,19,18,19,19,21,19,19,18,20,18,21,21,20,20,21,20,16,17,15,20,17,17,19,17,19,19,17,18,15,20,17,19,20,19,21,22,17,20,16,0,17,12,14,14,17,18,16,15,18,16,20,16,18,15,21,17,20,18,21,19,22,19,21,19,0,19,14,16,15,19,17,14,15,17,16,21,18,19,18,21,17,19,17,21,17,22,20,21,21,0,21,14,15,16,17,19,18,17,19,18,21,14,17,15,20,17,21,22,21,20,22,18,21,17,21,17,17,19,17,21,18,16,17,17,19,20,19,21,20,21,20,17,18,20,17,21,0,22,20,21,22,17,17,20,18,21,21,20,22,20,21,16,17,17,21,19,0,22,0,21,21,18,22,17,21,17,12,14,14,17,16,14,15,16,17,18,14,16,15,18,17,17,17,20,19,20,16,18,17,21,18,14,15,15,17,17,14,15,16,17,19,16,17,16,18,18,17,16,19,18,19,18,19,18,21,20,14,15,15,18,17,16,16,16,19,18,15,16,14,20,16,18,18,19,19,20,16,19,16,21,17,17,17,18,19,19,16,16,18,18,19,19,19,18,20,20,18,16,19,18,20,22,21,20,19,20,16,18,17,20,16,18,19,18,19,18,16,18,16,20,17,21,20,21,20,20,18,19,17,21,16,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,5,7,7,10,10,7,8,9,10,11,7,9,8,11,10,9,10,10,11,11,9,10,10,11,11,7,9,9,10,10,8,9,10,10,11,9,10,10,11,11,10,10,11,11,11,10,11,11,12,12,7,9,9,10,10,9,10,10,11,11,8,10,9,11,10,10,11,11,11,11,10,11,10,11,11,10,10,10,11,11,10,10,11,11,11,11,11,11,11,11,11,11,12,11,12,11,12,11,12,12,10,10,10,11,11,10,11,11,11,11,10,11,10,11,11,11,12,11,12,12,11,12,11,12,11,8,9,9,11,11,9,10,10,11,12,9,10,10,11,11,10,11,11,12,12,10,11,11,12,12,9,10,10,11,11,10,10,11,11,12,10,11,11,12,12,11,11,12,12,12,11,12,12,12,12,9,10,10,11,11,10,11,11,12,12,10,11,10,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,12,12,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,8,9,9,11,11,9,10,10,11,11,9,10,10,11,11,10,11,11,12,12,10,11,11,12,12,9,10,10,11,11,10,10,11,12,12,10,11,11,12,12,11,12,12,12,12,11,12,12,12,12,9,10,10,11,11,10,11,11,12,12,10,11,10,12,11,11,12,12,12,12,11,12,11,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,10,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,13,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,12,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,13,12,13,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,10,11,11,12,12,11,12,12,12,12,11,12,11,12,12,12,12,12,13,12,12,12,12,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,13,12,12,12,12,13,12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,13,12,13,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,8,9,9,11,11,9,10,10,11,11,9,10,10,12,11,10,11,11,12,12,10,11,11,12,12,9,10,10,11,11,10,10,11,11,12,10,11,11,12,12,11,11,12,12,12,11,12,12,12,12,9,10,10,11,11,10,11,11,12,12,10,11,10,12,12,11,12,12,12,12,11,12,12,12,12,11,11,11,12,12,11,11,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,9,10,10,11,11,10,10,11,12,12,10,11,11,12,12,11,11,12,12,12,11,12,12,12,12,10,10,11,11,12,11,11,12,12,12,11,11,12,12,12,11,11,12,12,13,12,12,12,12,12,10,11,11,12,12,11,12,11,12,12,11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,11,11,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,13,12,13,12,12,13,13,13,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,13,12,8,10,10,11,11,10,11,11,12,12,10,11,10,12,12,11,12,12,12,12,11,12,12,12,12,10,11,10,12,12,10,10,11,12,12,11,12,12,12,12,12,12,12,12,13,12,12,12,13,13,10,11,11,12,12,11,12,12,12,12,10,12,11,12,12,12,12,12,13,13,12,13,12,13,12,11,12,12,12,12,11,12,12,12,13,12,12,12,13,13,12,12,13,12,13,12,13,13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,12,11,11,11,12,12,11,12,12,12,13,11,12,12,12,12,12,12,12,13,13,12,12,13,13,13,11,12,12,12,12,12,12,12,12,13,12,12,13,13,13,12,12,13,13,13,13,13,13,13,13,11,12,12,12,12,12,13,12,13,13,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,12,12,12,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,10,11,11,12,12,11,12,12,12,13,11,12,12,13,12,12,13,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,13,13,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,11,12,12,13,12,12,13,12,13,13,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,8,9,9,11,11,9,10,10,11,12,9,10,10,11,11,10,11,11,12,12,10,11,11,12,12,9,10,10,11,11,10,10,11,12,12,10,11,11,12,12,11,11,12,12,12,11,12,12,12,12,9,10,10,11,11,10,11,11,12,12,10,11,10,12,12,11,12,12,12,12,11,12,11,12,12,11,11,11,12,12,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,12,12,11,12,12,12,12,11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,8,10,10,11,11,10,10,11,12,12,10,11,11,12,12,11,12,12,12,12,11,12,12,12,12,10,11,11,12,12,10,11,12,12,12,11,12,12,12,12,12,12,12,12,13,12,12,12,13,13,10,10,11,12,12,11,12,12,12,12,10,11,10,12,12,12,12,12,13,13,12,12,12,13,12,11,12,12,12,12,11,12,12,12,13,12,12,12,13,13,12,12,13,12,13,12,13,13,13,13,11,12,12,12,12,12,12,12,13,13,11,12,12,13,12,12,13,13,13,13,12,13,12,13,12,9,10,10,11,11,10,11,11,12,12,10,11,11,12,12,11,12,12,12,12,11,12,11,12,12,10,11,11,12,12,11,11,12,12,12,11,11,12,12,12,12,12,12,12,13,12,12,12,13,12,10,11,10,12,11,11,12,11,12,12,11,12,11,12,12,12,12,12,12,12,12,12,11,12,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,13,12,13,13,13,13,11,12,11,12,12,12,12,12,13,12,12,12,12,12,12,12,13,12,13,13,12,12,12,13,12,10,11,11,12,12,11,12,12,12,13,11,12,12,13,12,12,12,13,13,13,12,13,13,13,13,11,12,12,12,13,12,12,13,13,13,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,11,12,12,12,12,12,12,13,13,13,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,13,13,13,13,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,13,13,13,12,13,12,13,13,11,12,12,12,12,12,12,13,13,13,12,12,13,13,13,12,13,13,13,13,12,13,13,13,13,11,12,12,12,12,12,13,12,13,13,12,12,12,13,12,13,13,13,13,13,12,13,12,13,13,12,12,12,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,13,12,13,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,10,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,11,12,12,13,13,12,12,12,13,13,12,12,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,13,12,12,12,12,12,12,12,13,13,13,12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,10,11,11,12,12,11,12,12,12,13,11,12,12,13,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,13,13,13,12,12,12,13,13,12,12,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,12,12,12,12,13,12,12,13,13,13,12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,12,12,12,13,13,13,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,10,11,11,12,12,11,12,12,12,13,11,12,12,13,12,12,13,13,13,13,12,13,12,13,13,11,12,12,13,13,12,12,12,13,13,12,12,13,13,13,12,13,13,13,13,13,13,13,13,13,11,12,12,13,12,12,13,12,13,13,12,13,12,13,13,13,13,13,13,13,12,13,13,13,13,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,11,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,12,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,13,12,12,12,12,12,12,12,13,12,13,12,13,13,13,13,12,13,13,12,13,13,13,13,13,13,12,12,12,12,12,12,13,13,13,13,12,13,12,13,13,13,13,13,13,13,12,13,13,13,12,10,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,13,12,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,12,13,13,13,13,13,13,13,13,11,12,12,12,12,12,13,12,13,13,12,13,12,13,13,12,13,13,13,13,12,13,12,13,13,12,12,12,12,12,12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,13,13,13,13,13,13,13,13,13,13,13,10,11,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,12,12,13,13,13,12,12,13,13,13,11,12,11,12,12,12,12,12,13,13,11,12,12,13,13,12,13,13,13,13,12,13,12,13,13,12,12,12,12,12,12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,13,13,13,13,13,13,12,13,13,13,13,10,11,11,12,12,11,12,12,12,13,11,12,12,13,12,12,12,13,13,13,12,13,13,13,13,11,12,12,13,13,12,12,13,13,13,12,12,13,13,13,12,13,13,13,13,13,13,13,13,13,11,12,12,13,12,12,13,12,13,13,12,12,12,13,13,12,13,13,13,13,13,13,13,13,13,12,12,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,13,13,13,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,10,12,11,12,12,11,12,12,12,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,13,12,12,12,13,13,12,12,12,13,13,12,13,13,13,13,12,13,13,13,13,11,12,12,13,12,12,12,12,13,13,12,12,12,13,13,12,13,13,13,13,12,13,12,13,13,12,13,12,13,13,12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,12,12,12,13,12,13,13,13,13,13,12,13,12,13,13,13,13,13,13,13,12,13,13,13,13,10,11,11,12,12,11,12,12,12,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,13,11,12,12,12,12,12,12,13,13,13,12,13,13,13,13,12,12,13,13,13,13,13,13,13,13,11,12,12,12,12,12,13,12,13,13,12,12,12,13,13,12,13,13,13,13,12,13,12,13,13,12,12,12,12,13,12,13,13,13,13,12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,13,13,13,13,12,13,13,13,13,13,13,13,13,13,12,13,13,13,13,11,12,11,12,12,11,12,12,12,12,11,12,12,12,12,12,12,12,12,13,12,12,12,13,12,11,12,12,12,12,12,12,12,12,13,12,12,12,13,13,12,12,13,13,13,12,13,13,13,13,11,12,12,12,12,12,12,12,13,13,12,12,12,13,12,12,13,13,13,13,12,13,12,13,13,12,12,12,12,12,12,12,13,13,13,12,13,13,13,13,13,13,13,12,13,13,13,13,13,13,12,12,12,12,12,12,13,13,13,13,12,13,12,13,12,13,13,13,13,13,13,13,13,13,12,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,5,5,5,7,9,5,9,7,5,7,8,7,7,10,9,10,10,5,8,7,9,10,10,7,10,7,6,8,9,9,10,12,9,11,11,9,10,11,11,11,13,12,13,13,9,11,11,11,12,13,11,13,11,6,9,8,9,11,11,9,12,10,9,11,11,11,11,13,11,13,12,9,11,10,12,13,13,11,13,11,6,9,9,8,10,11,9,12,11,9,10,11,10,10,12,11,13,13,9,11,11,11,13,12,11,13,11,8,10,10,9,10,12,10,12,11,10,10,12,10,10,13,12,13,13,10,12,11,12,13,13,10,13,10,7,10,10,11,11,13,11,14,11,10,12,11,11,11,13,13,14,13,10,12,12,14,14,14,11,14,11,6,9,9,9,11,12,8,11,10,9,11,11,11,11,13,11,12,13,8,11,10,11,13,13,10,12,10,7,10,10,11,11,14,11,13,11,10,12,12,11,11,14,14,14,14,10,11,12,13,13,14,11,13,11,8,10,10,10,11,12,9,12,10,10,11,12,11,10,13,12,13,13,10,12,10,12,13,13,11,13,10,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,5,6,6,6,7,7,6,7,7,6,7,7,7,7,8,7,8,8,6,7,7,7,8,8,7,8,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,9,8,9,9,8,8,8,8,9,9,8,9,9,7,8,7,8,8,8,8,8,8,8,8,8,8,9,9,8,9,9,8,8,8,8,9,9,8,9,8,6,8,8,7,8,8,7,8,8,7,8,8,8,8,9,8,9,9,8,8,8,8,9,9,8,9,8,7,8,8,8,9,9,8,9,9,8,8,9,9,9,9,9,9,9,8,9,9,9,9,9,9,9,9,7,8,8,8,8,9,8,9,8,8,8,8,8,9,9,9,9,9,8,9,8,9,9,9,8,9,9,6,8,8,7,8,8,7,8,8,8,8,8,8,8,9,8,9,9,7,8,8,8,9,9,8,9,8,7,8,8,8,8,9,8,9,8,8,8,9,8,9,9,9,9,9,8,8,8,9,9,9,8,9,9,7,8,8,8,9,9,8,9,9,8,9,9,9,9,9,9,9,9,8,9,8,9,9,9,9,9,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,5,6,5,7,8,5,8,7,5,7,8,7,8,10,8,10,10,5,8,7,8,10,10,7,10,8,6,8,9,8,10,11,9,10,10,9,10,11,10,11,12,11,12,12,9,11,10,11,12,12,10,12,11,6,9,8,9,10,10,8,11,10,9,10,11,10,11,12,11,12,12,9,11,10,11,12,12,10,12,11,6,9,9,8,10,11,9,11,10,8,10,10,10,10,12,11,12,12,9,11,10,11,12,12,10,12,11,8,10,10,10,11,12,10,12,11,10,10,12,11,11,13,12,13,13,10,12,11,12,13,13,11,13,11,7,10,10,10,11,12,10,12,11,10,12,11,11,11,12,12,14,13,10,12,12,12,14,14,11,13,11,6,9,9,9,10,11,8,11,10,9,10,11,10,11,12,11,12,12,8,11,10,11,12,12,10,12,10,7,10,10,10,11,12,10,12,11,10,12,12,11,11,13,12,13,13,10,11,12,12,13,14,11,12,11,8,10,10,10,11,12,10,12,11,10,11,12,11,11,13,12,13,13,10,12,10,12,13,13,11,13,11,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,6,6,9,9,6,7,8,10,10,6,8,7,10,10,8,10,10,12,13,8,10,10,13,12,6,7,8,10,10,7,8,9,10,11,8,9,9,11,11,10,10,11,12,14,10,11,11,14,13,6,8,7,10,10,8,9,9,11,11,7,9,8,11,10,10,11,11,13,14,10,11,10,14,12,9,10,10,12,12,10,10,11,12,13,10,11,11,13,13,12,12,13,12,15,13,14,13,15,14,9,10,10,12,12,10,11,11,13,13,10,11,10,13,12,13,13,14,14,15,12,13,12,15,12,6,7,8,10,11,8,9,10,11,12,8,9,9,11,12,10,11,12,13,14,10,11,11,14,13,8,9,10,11,12,9,10,11,12,13,9,10,11,12,13,11,12,13,13,15,12,12,13,15,14,8,9,9,12,12,9,10,11,12,13,9,10,10,13,12,12,12,13,14,15,11,12,12,14,14,11,11,12,13,14,11,12,13,13,15,12,13,13,14,15,14,13,15,14,16,14,15,15,16,16,11,12,11,14,13,12,13,13,15,14,11,13,12,14,13,14,15,15,15,16,13,14,14,16,14,6,8,7,11,10,8,9,9,11,12,8,10,9,12,11,10,11,11,13,14,10,12,11,14,13,8,9,9,12,12,9,10,10,12,13,9,11,10,13,12,11,12,12,13,14,12,13,12,15,14,8,10,9,12,11,9,11,10,13,12,9,11,10,13,12,12,13,12,14,15,11,13,12,15,13,11,11,12,13,14,11,12,13,13,15,12,13,13,14,15,13,14,14,14,16,14,15,15,16,16,11,12,11,14,13,12,13,13,15,14,11,13,12,15,13,14,15,15,16,16,13,15,13,16,14,9,10,11,12,14,11,11,12,13,15,11,12,12,13,14,13,14,15,15,17,13,14,14,15,16,11,11,12,13,15,12,12,13,14,16,12,13,13,14,15,14,14,16,15,17,15,15,15,16,17,11,12,12,14,14,12,13,13,15,16,12,13,13,15,15,15,15,15,16,17,14,15,15,16,16,14,14,15,15,17,14,15,15,15,17,15,15,16,16,17,16,16,17,16,18,17,17,17,18,18,14,15,14,16,16,15,15,16,17,17,14,15,15,17,16,17,17,17,18,18,16,16,16,17,17,9,11,10,14,12,11,12,12,14,13,11,12,11,15,13,13,14,14,16,15,13,15,14,17,15,11,12,12,15,14,12,13,13,15,15,12,13,13,15,15,14,15,15,16,16,15,15,15,17,16,11,12,11,15,13,12,13,13,15,14,12,13,12,16,14,15,15,15,17,16,14,15,14,17,15,14,14,15,16,16,14,15,15,16,16,15,16,15,17,17,16,16,16,17,17,17,17,17,18,17,14,15,14,16,15,15,15,15,17,16,15,15,15,17,15,17,17,17,18,18,16,17,16,18,16,6,8,8,11,11,8,9,9,11,12,8,9,9,12,11,10,11,11,13,14,10,12,11,14,13,7,9,9,11,12,9,10,10,12,13,9,10,10,13,13,11,11,12,13,15,11,12,12,15,14,8,9,9,12,11,9,11,10,13,13,9,11,10,13,12,12,13,12,14,15,11,13,12,15,13,10,11,12,13,14,11,12,12,13,15,12,12,13,14,15,13,13,14,14,16,14,15,15,16,16,11,12,11,14,13,12,13,13,15,14,11,13,12,15,13,14,15,15,15,16,13,14,14,16,14,7,9,9,11,12,9,10,11,12,13,9,10,10,13,12,11,12,12,14,15,11,12,12,15,14,9,9,11,11,13,10,10,12,12,14,10,11,12,13,14,12,12,13,14,16,12,13,13,15,15,9,11,10,13,13,10,12,12,13], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+431057); +/* memory initializer */ allocate([14,10,12,11,14,13,12,13,13,15,16,12,13,13,15,14,11,11,13,13,15,12,12,14,13,16,13,13,13,14,15,14,14,15,14,17,15,15,15,16,16,12,13,12,15,14,13,14,14,15,15,12,14,13,16,14,15,15,16,16,17,14,15,14,17,15,7,9,9,12,11,9,10,10,12,13,9,11,10,13,12,11,12,12,14,14,11,13,12,15,14,9,10,10,13,12,10,10,11,12,13,10,12,11,14,13,12,12,13,13,15,12,14,13,16,15,9,10,10,13,12,11,11,12,13,13,10,12,10,14,12,13,13,13,15,15,12,13,12,15,13,11,12,12,14,14,12,12,13,14,15,13,14,13,15,15,14,13,15,13,16,15,16,15,17,16,12,13,12,14,14,13,14,14,15,15,12,13,12,15,14,15,15,16,16,17,14,15,13,16,13,10,11,12,13,14,11,12,13,14,15,12,13,13,15,15,14,14,15,15,17,14,15,15,16,16,12,12,13,12,15,12,12,14,13,16,13,13,14,14,16,14,14,16,15,17,15,15,16,16,17,12,13,13,15,15,13,14,14,16,16,13,14,13,16,15,15,16,16,17,17,14,15,15,17,16,14,14,15,14,17,15,15,16,15,17,15,15,16,15,17,16,16,17,16,18,17,17,17,17,18,14,15,15,17,16,15,16,16,17,17,15,16,15,17,16,17,17,17,18,18,16,17,16,18,17,10,12,11,14,14,12,13,13,15,15,12,13,12,15,14,14,15,15,16,16,14,15,15,17,16,11,13,12,15,14,12,13,13,15,15,13,14,13,16,14,15,15,15,16,16,15,16,15,17,16,12,13,13,15,15,13,14,14,16,16,12,14,13,16,15,15,16,16,17,17,15,16,15,17,16,14,15,15,16,16,14,15,15,16,16,15,16,16,17,16,16,16,16,16,17,17,18,17,18,17,14,15,15,17,16,15,16,16,17,17,15,16,15,17,16,17,17,18,18,18,16,17,16,18,16,6,8,8,11,11,8,9,9,11,12,8,9,9,12,11,10,11,12,13,14,10,11,11,14,13,8,9,9,11,12,9,10,11,12,13,9,10,11,13,13,11,12,13,13,15,12,12,12,15,14,7,9,9,12,11,9,10,10,13,13,9,10,10,13,12,11,12,12,14,15,11,12,11,15,13,11,11,12,13,14,11,12,13,13,15,12,13,13,14,15,13,14,14,14,16,14,15,15,16,16,10,12,11,14,13,12,13,12,14,14,11,12,12,15,13,14,15,15,16,16,13,14,13,16,14,7,9,9,11,12,9,10,11,12,13,9,10,10,13,12,11,12,13,14,15,11,12,12,14,14,9,10,10,12,13,10,10,12,12,14,11,12,11,13,13,12,12,14,13,15,13,13,13,15,15,9,10,10,12,13,10,11,12,13,14,10,11,10,13,12,13,13,14,15,16,12,13,12,15,13,12,13,13,14,14,12,12,13,14,15,13,14,14,15,15,14,13,15,13,16,15,16,15,17,16,11,12,12,14,14,13,13,14,15,15,12,13,12,15,14,15,15,16,16,17,14,14,13,16,13,7,9,9,12,11,9,10,10,12,13,9,11,10,13,12,11,12,12,14,15,11,12,12,15,14,9,10,11,13,13,10,11,12,13,14,10,12,12,14,13,12,13,13,14,16,12,13,13,16,15,9,11,9,13,11,10,12,11,13,13,10,12,10,14,12,12,13,13,15,15,12,13,12,16,14,12,12,13,14,15,12,13,14,14,15,13,14,14,15,15,14,14,15,15,17,15,16,15,17,16,11,13,11,15,13,13,14,13,15,14,12,14,12,16,13,15,15,15,16,16,14,15,14,17,14,10,11,12,14,14,12,12,13,14,15,12,13,13,15,15,14,15,15,16,17,14,15,15,16,16,12,12,13,15,15,13,13,14,15,16,13,14,14,16,16,15,15,16,16,17,15,16,16,17,17,11,12,13,14,15,13,13,14,15,16,12,13,13,15,15,15,15,16,16,17,15,15,15,16,16,14,15,15,16,17,15,15,16,16,17,15,16,16,17,17,16,16,17,16,18,17,17,17,18,18,14,15,15,16,16,15,16,16,16,17,15,15,15,16,16,17,17,17,18,18,16,16,16,17,16,10,12,11,14,13,12,13,13,15,15,11,13,12,15,14,14,15,15,16,16,14,15,14,17,15,12,13,13,15,15,13,13,14,16,16,13,14,14,16,16,15,15,15,16,17,15,16,16,17,17,12,13,12,15,12,13,14,13,16,14,12,14,12,16,13,15,16,15,17,16,14,16,14,17,15,14,15,15,16,17,15,15,16,17,17,15,16,16,17,17,16,16,17,17,18,17,18,17,18,18,14,15,14,17,14,15,16,15,17,15,15,16,15,17,15,17,17,17,18,17,16,17,16,18,16,9,11,11,14,14,11,12,12,14,14,11,12,12,15,14,13,14,14,16,16,13,15,14,16,16,10,11,12,14,14,11,12,13,15,15,12,13,13,15,15,13,14,15,16,17,14,15,15,17,16,11,12,12,15,14,12,13,13,15,15,12,13,13,15,15,14,15,15,16,16,14,15,15,17,16,12,13,14,15,16,13,14,14,15,16,13,14,15,16,16,15,15,16,16,18,16,16,16,18,17,14,14,14,16,15,15,15,15,17,16,14,15,15,17,16,16,17,17,18,17,16,16,16,18,16,10,12,12,14,14,11,12,13,15,15,12,13,13,15,15,13,14,15,16,17,14,15,15,17,16,11,12,13,14,15,12,12,14,15,16,13,13,14,15,16,14,14,15,16,17,15,15,16,17,17,12,13,13,15,15,13,14,14,16,16,13,14,13,16,15,15,16,15,17,17,15,16,15,17,16,13,13,15,14,17,14,13,16,15,17,15,14,16,15,17,15,15,17,16,18,16,16,17,17,18,14,15,15,17,16,15,16,16,17,17,15,16,15,17,16,17,17,17,18,18,16,17,16,18,17,10,12,11,14,14,11,12,13,15,15,12,13,12,15,15,14,15,15,16,16,14,15,15,17,16,11,12,12,15,15,12,13,13,15,15,13,14,13,16,15,14,15,15,16,16,15,16,15,17,16,11,13,13,15,15,13,14,14,15,15,12,14,13,16,15,15,16,15,17,17,15,16,15,17,16,13,15,14,16,16,14,15,14,16,16,15,16,15,17,16,15,16,16,16,17,16,17,16,18,17,14,15,15,16,16,15,16,16,17,17,15,15,15,17,16,17,17,17,18,18,16,16,16,18,16,12,13,13,15,16,13,14,14,15,16,13,14,14,16,16,15,15,16,16,18,15,16,16,17,17,13,13,14,15,16,14,14,15,15,17,14,15,15,16,17,15,15,17,16,18,16,16,17,17,17,13,14,14,16,16,14,15,15,17,17,14,15,14,17,16,16,17,16,17,18,16,17,16,18,17,15,15,16,14,17,16,15,17,14,18,16,16,16,15,18,16,16,18,15,19,18,18,18,17,19,15,16,16,18,17,16,17,17,18,17,16,17,16,18,17,18,18,18,19,19,17,18,16,18,17,11,12,12,15,15,13,13,14,15,16,13,14,13,16,15,15,16,16,16,17,15,16,16,17,16,12,14,13,16,15,13,13,14,15,16,14,15,14,17,15,15,15,16,16,17,16,17,16,18,17,12,13,14,15,16,14,15,15,16,16,13,14,13,16,15,16,16,16,17,17,15,16,15,17,15,15,16,15,17,16,15,15,15,16,16,16,17,16,18,16,16,15,16,15,17,17,18,17,18,17,15,15,16,17,17,16,16,17,17,17,15,16,15,17,16,18,18,18,18,18,16,17,16,18,15,9,11,11,14,14,11,12,12,14,15,10,12,12,15,14,13,14,15,16,16,13,14,14,16,16,11,12,12,14,15,12,12,13,15,15,12,13,13,15,15,14,15,15,16,17,14,15,15,16,16,10,12,12,14,14,12,13,13,15,15,11,13,12,15,15,14,15,15,16,17,13,15,14,16,16,14,14,14,15,16,14,15,15,16,17,14,15,15,16,17,16,16,17,16,18,16,17,17,17,17,12,14,13,16,15,13,15,14,16,16,13,14,14,16,15,16,16,16,17,17,15,16,15,17,16,10,11,11,14,14,12,12,13,14,15,11,13,12,15,14,14,15,15,16,17,14,15,15,16,16,12,13,13,15,15,12,13,14,15,16,13,14,14,15,15,15,15,16,16,17,15,15,16,17,17,11,12,12,15,15,13,13,14,15,16,12,13,13,15,15,15,15,16,16,17,14,15,15,16,16,14,15,15,16,16,15,15,15,16,17,15,16,16,17,17,16,16,17,16,18,17,17,17,17,18,13,14,15,16,16,15,15,16,16,17,14,14,14,16,16,16,16,17,17,18,16,16,16,17,16,10,12,12,14,14,12,13,13,15,15,11,13,12,15,15,14,15,15,16,17,13,15,14,17,16,12,13,13,15,15,13,13,14,15,16,13,14,14,16,16,15,15,16,16,17,15,15,16,17,17,11,13,12,15,14,13,14,13,16,15,12,14,12,16,15,15,16,15,17,17,14,15,14,17,16,14,15,15,16,17,15,15,16,16,17,15,16,16,17,17,16,16,17,17,18,17,17,17,18,18,13,15,13,17,14,14,16,14,17,16,14,15,13,17,15,16,17,16,18,17,15,17,15,18,16,11,12,12,15,15,13,13,14,15,16,13,14,13,16,15,15,16,16,16,17,15,16,16,17,16,12,14,13,16,15,13,13,14,15,16,14,15,15,16,16,16,15,16,16,17,16,16,16,17,17,12,13,14,15,16,14,14,15,15,17,13,14,13,16,15,16,16,17,17,18,15,16,15,17,15,15,16,15,17,17,15,15,16,16,17,16,17,16,17,17,16,15,17,15,18,17,18,17,18,18,15,15,16,16,17,16,16,17,16,18,15,15,15,16,16,17,17,18,17,18,16,16,15,17,15,12,13,13,15,15,13,14,14,16,16,13,14,14,16,16,15,16,16,17,18,15,16,15,18,16,13,14,14,16,16,14,14,15,16,17,14,15,15,17,17,16,16,17,17,18,16,16,17,18,17,13,14,13,16,14,14,15,15,17,16,14,15,14,17,15,16,17,17,18,17,15,17,15,18,16,15,16,16,17,17,16,16,17,17,18,16,17,17,18,18,17,16,18,17,19,18,18,18,18,18,15,16,15,17,14,16,16,16,18,15,16,17,15,18,14,18,18,18,18,17,17,18,16,19,15,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,5,5,5,7,7,5,7,7,5,7,7,7,8,9,7,9,9,5,7,7,7,9,9,7,9,8,5,7,8,8,9,10,8,9,10,8,9,10,9,10,12,10,11,11,8,10,10,10,11,11,9,11,11,5,8,7,8,9,9,8,10,9,8,10,10,9,11,11,10,11,11,8,10,9,10,11,11,9,12,10,5,8,8,7,9,10,8,10,9,7,9,9,9,10,11,9,11,11,8,10,9,10,11,11,10,11,11,7,9,9,9,10,11,9,11,11,9,9,11,10,10,13,11,11,12,9,11,11,11,12,13,11,13,12,7,9,9,9,11,11,9,11,10,9,11,10,10,11,12,11,13,12,9,11,11,11,12,13,11,13,11,5,8,8,8,9,10,7,10,9,8,9,10,10,11,11,10,11,11,7,9,9,9,11,11,9,11,10,7,9,9,9,10,11,9,11,11,9,11,11,11,11,13,11,13,12,9,10,11,11,12,13,10,12,11,7,9,9,9,11,11,9,11,10,9,11,11,11,12,13,11,13,12,9,11,9,11,12,11,10,13,10,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,7,12,14,15,18,20,20,5,3,4,6,9,11,15,19,9,4,3,4,7,9,13,18,11,6,3,3,5,8,13,19,14,9,6,5,7,10,16,20,16,11,9,8,10,10,14,16,21,14,13,11,8,7,11,14,21,14,13,9,6,5,10,12,0,0,0,0,255,255,255,255,255,255,255,255,8,0,0,0,255,255,255,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+441297); +/* memory initializer */ allocate([1,0,0,0,1,0,0,0,2,0,0,0,7,0,0,0,17,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,99,0,0,0,7,0,0,0,17,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,64,0,0,0,240,5,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,214,6,0,0,0,0,0,0,0,0,0,224,214,6,0,0,0,0,0,0,0,0,0,8,215,6,0,48,215,6,0,0,0,0,0,0,0,0,0,88,215,6,0,128,215,6,0,0,0,0,0,0,0,0,0,168,215,6,0,208,215,6,0,0,0,0,0,0,0,0,0,248,215,6,0,32,216,6,0,208,215,6,0,0,0,0,0,72,216,6,0,112,216,6,0,208,211,6,0,248,211,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,0,0,0,0,0,0,0,0,0,0,2,0,0,0,64,0,0,0,120,214,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,2,0,0,0,4,0,0,0,112,214,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,88,211,6,0,128,211,6,0,0,0,0,0,0,0,0,0,168,211,6,0,208,211,6,0,248,211,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,169,0,0,0,136,213,6,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,56,214,6,0,0,0,0,0,2,0,0,0,25,0,0,0,80,213,6,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,112,213,6,0,0,0,0,0,2,0,0,0,9,0,0,0,48,213,6,0,1,0,0,0,0,136,51,225,0,136,51,97,2,0,0,0,0,0,0,0,64,213,6,0,0,0,0,0,1,0,0,0,25,0,0,0,168,212,6,0,1,0,0,0,0,192,18,225,0,0,153,96,5,0,0,0,0,0,0,0,200,212,6,0,0,0,0,0,1,0,0,0,25,0,0,0,32,212,6,0,1,0,0,0,0,0,120,224,0,0,16,96,5,0,0,0,0,0,0,0,64,212,6,0,0,0,0,0,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,13,0,0,0,10,0,0,0,14,0,0,0,9,0,0,0,15,0,0,0,8,0,0,0,16,0,0,0,7,0,0,0,17,0,0,0,6,0,0,0,18,0,0,0,5,0,0,0,19,0,0,0,4,0,0,0,20,0,0,0,3,0,0,0,21,0,0,0,2,0,0,0,22,0,0,0,1,0,0,0,23,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,1,3,2,5,4,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,15,15,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,13,0,0,0,10,0,0,0,14,0,0,0,9,0,0,0,15,0,0,0,8,0,0,0,16,0,0,0,7,0,0,0,17,0,0,0,6,0,0,0,18,0,0,0,5,0,0,0,19,0,0,0,4,0,0,0,20,0,0,0,3,0,0,0,21,0,0,0,2,0,0,0,22,0,0,0,1,0,0,0,23,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,1,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,4,4,5,5,4,4,5,5,5,4,5,4,5,5,5,5,6,5,6,5,6,5,6,5,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,8,8,9,8,9,9,10,10,10,10,4,6,5,8,7,9,9,9,9,10,9,10,10,4,5,6,7,8,9,9,9,9,9,10,9,10,8,9,8,9,8,10,9,11,9,12,10,11,10,8,8,9,8,9,9,10,9,11,10,11,10,12,9,10,10,11,10,11,11,12,11,12,12,12,12,9,10,10,11,11,11,11,11,12,12,12,12,12,10,11,11,12,12,12,12,12,12,12,12,12,12,10,11,11,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,12,12,12,12,13,12,12,11,12,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,12,12,11,13,12,12,12,13,12,12,12,12,12,12,12,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,3,2,3,0,0,0,0,3,5,13,9,9,12,16,18,4,2,20,6,7,10,15,20,10,7,5,5,6,8,10,13,8,5,5,3,5,7,10,11,9,7,6,5,5,7,9,9,11,10,8,7,6,6,8,8,15,15,10,10,9,7,8,9,17,19,13,12,10,8,9,9,5,0,0,0,243,0,0,0,232,4,7,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,224,5,7,0,0,0,0,0,5,0,0,0,53,12,0,0,152,248,6,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,208,4,7,0,0,0,0,0,5,0,0,0,243,0,0,0,144,247,6,0,1,0,0,0,0,0,56,224,0,0,56,96,2,0,0,0,0,0,0,0,136,248,6,0,0,0,0,0,5,0,0,0,243,0,0,0,136,246,6,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,128,247,6,0,0,0,0,0,5,0,0,0,243,0,0,0,128,245,6,0,1,0,0,0,0,0,84,224,0,0,84,96,2,0,0,0,0,0,0,0,120,246,6,0,0,0,0,0,5,0,0,0,53,12,0,0,48,233,6,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,104,245,6,0,0,0,0,0,5,0,0,0,53,12,0,0,224,220,6,0,1,0,0,0,0,0,124,224,0,0,92,96,3,0,0,0,0,0,0,0,24,233,6,0,0,0,0,0,1,0,0,0,7,0,0,0,184,220,6,0,1,0,0,0,0,0,56,224,0,0,16,96,3,0,0,0,0,0,0,0,192,220,6,0,0,0,0,0,5,0,0,0,243,0,0,0,176,219,6,0,1,0,0,0,0,0,149,224,0,0,149,96,2,0,0,0,0,0,0,0,168,220,6,0,0,0,0,0,5,0,0,0,243,0,0,0,168,218,6,0,1,0,0,0,0,0,92,224,0,0,92,96,2,0,0,0,0,0,0,0,160,219,6,0,0,0,0,0,5,0,0,0,243,0,0,0,160,217,6,0,1,0,0,0,0,76,93,225,0,76,93,97,2,0,0,0,0,0,0,0,152,218,6,0,0,0,0,0,5,0,0,0,243,0,0,0,152,216,6,0,1,0,0,0,0,136,51,225,0,136,51,97,2,0,0,0,0,0,0,0,144,217,6,0,0,0,0,0,1,9,9,7,9,9,8,8,9,9,9,9,9,9,9,8,9,9,7,9,9,9,9,9,9,9,9,7,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,6,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,5,9,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,9,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,5,10,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,8,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,6,6,6,7,7,7,7,7,7,8,8,9,9,9,9,7,7,8,8,8,9,9,9,9,8,8,6,7,7,8,8,8,8,8,8,9,8,8,9,8,9,9,8,8,10,8,8,10,9,9,10,8,8,6,6,6,8,6,6,8,7,7,8,7,7,10,8,8,9,7,7,9,7,7,10,8,8,9,7,7,7,7,7,10,8,8,11,9,9,10,9,9,11,9,9,11,8,8,11,9,9,12,9,9,12,8,8,7,7,7,10,9,9,10,9,9,10,9,9,11,10,10,10,9,9,11,9,10,11,10,11,10,9,9,9,8,8,10,9,9,10,9,9,11,9,9,11,10,10,11,9,9,11,9,9,11,10,10,11,9,9,8,8,8,11,9,9,11,9,9,11,9,9,12,9,9,12,8,8,11,9,9,12,9,9,12,8,8,8,7,7,10,9,9,10,9,9,10,9,9,11,11,11,11,9,9,11,10,10,11,11,11,11,9,9,10,9,9,11,9,9,11,9,10,11,10,10,11,10,10,11,9,9,11,10,10,11,10,10,11,9,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,7,7,7,8,8,7,8,8,7,9,9,11,11,11,9,8,8,8,9,9,12,11,12,9,8,8,6,7,7,10,11,11,10,10,10,11,11,11,14,14,14,12,11,12,11,11,11,15,15,14,13,12,12,5,6,6,8,5,5,8,7,7,8,7,7,12,10,10,10,7,6,9,8,8,12,10,10,10,6,6,7,8,8,12,10,10,12,10,10,11,10,10,16,14,14,13,10,10,12,10,10,15,14,14,14,10,10,7,7,7,13,11,11,13,11,11,12,11,11,16,14,14,14,12,12,12,11,11,18,15,15,14,12,12,10,9,10,14,11,11,13,11,11,12,11,11,17,14,14,14,11,11,13,11,11,16,15,15,14,11,11,7,8,8,13,11,11,12,10,10,12,10,10,16,14,13,13,10,10,12,10,10,17,14,14,14,10,10,8,7,7,12,11,11,13,11,11,12,11,11,16,15,14,14,12,12,12,11,11,16,15,15,14,12,12,11,10,10,14,11,11,13,11,11,13,11,11,17,14,14,14,11,11,13,11,11,18,14,15,15,11,10,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,3,3,3,3,3,3,0,3,0,0,0,2,0,0,0,4,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,1,7,6,15,15,7,8,8,15,15,8,8,8,15,15,0,13,13,16,16,0,14,14,16,16,7,9,9,16,16,10,11,11,17,17,10,8,8,15,16,0,14,14,18,18,0,14,14,16,16,9,9,9,16,16,12,11,11,17,17,10,9,9,15,15,0,14,14,19,19,0,14,14,16,16,0,15,15,18,17,0,0,0,20,20,0,13,13,16,16,0,17,17,22,20,0,15,15,17,17,0,15,15,18,18,0,22,21,20,21,0,13,13,16,16,0,18,18,0,22,0,15,15,17,17,6,7,7,13,13,9,10,10,15,15,11,10,10,15,15,0,21,22,18,18,0,0,0,18,18,10,10,10,15,15,12,13,13,17,17,12,11,11,15,15,0,22,22,18,18,0,0,21,18,18,12,11,11,15,15,15,14,14,18,18,13,11,11,15,15,0,0,21,18,19,0,21,22,18,19,0,22,0,18,19,0,0,0,0,0,0,21,21,18,18,0,22,0,0,21,0,0,0,19,18,0,0,0,18,19,0,0,0,0,0,0,20,20,18,17,0,0,22,0,21,0,0,0,19,19,6,6,6,13,13,8,6,6,11,11,9,7,7,13,13,0,10,10,11,11,0,12,12,14,14,9,8,8,14,14,12,10,10,13,13,10,7,7,13,13,0,11,11,15,15,0,11,11,13,13,9,8,8,14,14,13,10,10,13,14,11,7,7,13,13,0,11,11,15,15,0,11,11,13,13,0,12,12,15,15,0,21,21,17,17,0,10,10,13,13,0,14,14,20,20,0,12,12,13,13,0,12,12,15,15,0,21,22,17,18,0,10,10,13,13,0,16,16,20,21,0,12,12,13,13,0,11,11,13,13,0,12,12,16,16,0,12,12,16,16,0,16,16,0,21,0,17,18,0,0,0,12,12,15,15,0,15,15,18,18,0,12,12,16,16,0,16,16,21,22,0,17,17,22,21,0,12,12,16,16,0,15,15,19,19,0,12,12,16,16,0,16,16,22,22,0,17,16,22,0,0,17,18,0,0,0,0,0,0,0,0,15,15,21,20,0,19,20,0,22,0,18,18,0,0,0,18,17,0,0,0,0,0,0,0,0,16,16,22,21,0,20,20,0,22,0,20,19,0,0,0,11,11,12,12,0,10,10,11,11,0,11,11,12,12,0,12,12,10,10,0,13,13,12,12,0,11,11,13,13,0,13,13,12,12,0,10,10,12,12,0,13,13,14,13,0,12,12,12,12,0,12,12,13,13,0,14,14,13,13,0,10,10,12,12,0,13,13,14,14,0,13,12,12,12,0,14,14,14,14,0,21,21,16,16,0,12,12,12,12,0,16,16,20,21,0,13,13,11,11,0,14,14,14,14,0,20,20,16,15,0,12,12,12,12,0,17,17,20,20,0,13,13,11,11,7,8,8,16,16,11,10,10,15,15,12,10,10,17,17,0,14,14,16,15,0,15,15,17,17,11,9,9,16,16,14,12,12,17,17,13,9,9,16,15,0,14,14,19,18,0,14,14,16,16,12,10,10,17,18,16,13,13,17,18,14,10,10,16,16,0,14,14,19,19,0,14,15,17,17,0,15,15,18,19,0,0,0,20,20,0,13,13,17,17,0,17,18,0,22,0,15,15,16,17,0,15,15,18,18,0,0,0,20,21,0,14,14,17,17,0,19,18,0,0,0,16,16,17,17,8,7,7,14,14,12,11,11,15,15,13,11,11,15,15,0,0,0,18,19,0,21,20,18,18,12,10,11,15,16,14,13,13,18,18,14,11,11,15,15,0,20,20,19,18,0,20,0,18,18,13,11,11,16,16,17,15,15,19,19,14,12,12,15,15,0,21,0,18,20,0,22,22,18,19,0,22,22,19,19,0,0,0,0,0,0,21,22,19,18,0,0,0,0,21,0,0,0,19,19,0,0,22,20,20,0,0,0,0,0,0,22,0,18,18,0,0,0,0,22,0,0,0,19,20,11,10,10,14,14,14,11,11,13,13,14,11,11,15,15,0,14,13,12,12,0,15,15,16,16,13,11,11,15,15,16,13,13,15,15,15,10,10,14,15,0,14,14,16,16,0,14,14,15,15,13,11,11,15,15,18,14,14,15,15,15,10,10,15,14,0,14,14,16,16,0,14,14,15,15,0,15,15,17,16,0,21,22,18,18,0,13,13,14,14,0,18,17,20,21,0,15,15,14,14,0,15,16,16,17,0,0,0,19,18,0,13,13,15,14,0,19,19,0,0,0,15,15,14,14,0,12,12,14,13,0,13,13,16,16,0,12,12,16,16,0,16,16,22,0,0,17,18,0,22,0,13,13,16,16,0,15,15,18,18,0,12,12,16,16,0,16,16,22,22,0,17,17,0,0,0,13,13,17,17,0,16,16,19,20,0,12,12,17,17,0,17,17,22,0,0,17,17,22,21,0,18,18,0,0,0,0,0,0,0,0,16,16,21,21,0,19,19,0,0,0,18,18,0,22,0,18,18,0,22,0,0,0,0,0,0,16,16,22,0,0,20,20,0,0,0,19,18,0,0,0,12,12,15,15,0,12,12,15,14,0,13,13,15,15,0,14,14,14,14,0,15,15,16,16,0,13,13,15,16,0,15,15,16,16,0,12,12,15,15,0,14,14,16,16,0,14,14,15,15,0,13,13,15,16,0,15,15,16,16,0,12,12,15,15,0,15,15,17,17,0,14,14,15,15,0,15,15,17,17,0,21,21,19,19,0,13,13,14,14,0,17,17,22,0,0,14,14,15,15,0,15,15,17,17,0,22,0,18,20,0,13,13,15,15,0,18,18,0,22,0,15,15,14,15,8,8,8,17,16,12,10,10,16,16,13,10,10,17,16,0,15,15,17,17,0,15,15,17,17,12,11,11,18,18,15,12,12,18,18,15,10,10,16,17,0,14,14,18,18,0,14,14,17,17,13,10,10,16,16,17,14,14,17,17,15,10,10,16,15,0,15,15,19,20,0,14,14,15,16,0,16,16,19,19,0,0,0,21,22,0,13,13,17,17,0,18,17,0,21,0,15,15,17,17,0,15,15,18,19,0,0,22,0,21,0,13,13,16,17,0,19,19,0,22,0,16,15,16,16,9,8,8,14,14,12,11,11,15,15,13,11,11,15,15,0,21,20,19,18,0,0,0,19,18,12,11,11,16,15,15,13,13,17,18,14,11,11,15,15,0,22,22,19,18,0,22,21,18,18,14,11,11,15,15,17,14,14,18,18,15,12,12,15,15,0,22,22,20,19,0,0,21,18,18,0,0,22,20,20,0,0,0,0,0,0,20,21,18,18,0,0,0,21,21,0,0,0,20,19,0,22,21,19,19,0,0,0,0,0,0,0,22,17,18,0,0,22,0,22,0,22,0,19,19,0,11,11,15,15,0,11,11,14,14,0,12,12,15,15,0,15,15,14,14,0,16,16,16,16,0,12,12,16,16,0,14,14,16,16,0,11,11,15,15,0,15,15,17,17,0,15,15,15,15,0,12,12,16,16,0,14,14,15,15,0,11,11,15,15,0,15,15,17,17,0,15,15,14,15,0,16,16,17,17,0,0,0,19,19,0,14,14,15,15,0,18,18,21,0,0,15,15,14,15,0,16,16,17,17,0,21,0,19,19,0,14,14,15,15,0,20,20,22,0,0,16,15,14,14,0,12,12,13,13,0,12,12,16,16,0,12,12,16,16,0,16,16,22,21,0,18,17,21,0,0,13,13,16,16,0,15,15,18,19,0,12,12,16,16,0,16,17,22,0,0,17,17,0,22,0,13,13,17,16,0,15,15,19,19,0,12,12,16,16,0,16,16,21,20,0,17,16,22,0,0,18,18,22,21,0,0,0,0,0,0,15,16,21,21,0,19,19,0,0,0,18,17,0,0,0,18,18,21,0,0,0,0,0,0,0,16,16,22,22,0,20,21,0,0,0,18,19,0,22,0,13,13,16,16,0,12,12,15,15,0,13,13,16,16,0,14,14,15,15,0,15,15,17,17,0,13,13,17,16,0,15,15,17,17,0,12,12,16,16,0,15,15,17,17,0,14,14,16,16,0,13,13,16,17,0,15,15,17,17,0,12,12,16,16,0,14,14,17,17,0,14,14,16,16,0,16,16,17,17,0,21,0,21,19,0,13,13,16,16,0,17,17,0,0,0,15,15,16,16,0,16,15,18,18,0,22,0,20,20,0,13,13,15,15,0,18,18,0,0,0,15,15,15,15,0,12,12,17,17,0,14,14,17,17,0,14,14,17,17,0,17,17,18,17,0,17,17,19,18,0,13,13,17,17,0,16,16,18,18,0,13,13,16,16,0,17,17,19,19,0,16,16,17,17,0,13,13,18,18,0,17,17,18,18,0,13,13,17,17,0,17,17,19,19,0,16,17,17,17,0,17,17,19,19,0,21,0,21,19,0,14,14,16,16,0,20,19,0,21,0,16,16,16,16,0,17,18,19,19,0,0,0,0,21,0,15,15,16,17,0,21,20,0,0,0,17,18,16,17,0,9,9,14,14,0,14,14,15,16,0,14,14,15,15,0,0,0,18,18,0,21,0,18,19,0,12,12,15,15,0,16,16,17,17,0,14,14,14,14,0,22,0,19,18,0,22,0,17,18,0,14,14,16,15,0,18,18,19,18,0,14,15,15,15,0,0,21,20,20,0,0,0,18,18,0,21,21,19,19,0,0,0,0,0,0,21,21,18,18,0,22,0,20,20,0,22,0,19,19,0,22,0,19,20,0,0,0,0,0,0,0,21,17,18,0,0,0,22,22,0,0,0,19,18,0,18,20,16,16,0,21,20,17,17,0,0,21,18,18,0,22,21,18,18,0,0,22,19,19,0,20,20,17,17,0,0,0,18,18,0,19,20,17,17,0,22,0,19,21,0,22,21,18,18,0,20,19,17,18,0,0,0,19,19,0,20,20,17,17,0,22,22,21,21,0,20,0,18,18,0,22,22,18,18,0,0,0,20,22,0,20,20,16,16,0,0,0,21,0,0,21,20,16,17,0,22,0,19,20,0,0,0,21,20,0,19,21,17,17,0,0,0,0,0,0,21,21,17,17,0,12,12,13,13,0,14,14,16,16,0,14,14,16,16,0,18,18,0,0,0,19,18,22,0,0,13,13,16,16,0,16,16,18,18,0,13,13,16,16,0,17,18,21,0,0,18,18,21,0,0,13,13,16,16,0,17,17,19,20,0,13,13,16,17,0,18,18,21,0,0,18,18,21,0,0,18,19,0,21,0,0,0,0,0,0,16,16,21,20,0,20,20,0,0,0,18,19,0,0,0,18,18,0,0,0,0,0,0,0,0,16,16,0,21,0,22,22,0,0,0,19,19,0,0,0,16,16,19,20,0,17,16,22,21,0,17,17,21,20,0,19,18,0,22,0,19,19,22,22,0,16,15,22,22,0,19,19,0,21,0,15,15,20,20,0,18,19,0,21,0,18,18,22,22,0,16,16,21,20,0,20,19,21,22,0,16,15,20,20,0,19,19,0,22,0,18,18,21,0,0,19,18,21,22,0,0,0,0,0,0,16,16,19,21,0,20,22,0,22,0,18,18,20,21,0,19,18,0,22,0,0,0,22,0,0,16,16,20,20,0,21,21,0,0,0,18,18,21,0,0,12,12,17,17,0,15,14,17,17,0,14,14,18,18,0,17,17,17,18,0,18,18,18,18,0,13,13,18,18,0,16,17,19,18,0,13,13,16,17,0,17,17,18,19,0,17,17,17,17,0,13,13,17,17,0,17,18,18,18,0,13,13,16,16,0,18,18,19,20,0,16,17,17,16,0,17,18,19,18,0,0,0,22,21,0,15,15,16,16,0,20,20,21,22,0,17,17,16,16,0,16,17,18,18,0,0,0,21,21,0,15,15,16,16,0,21,20,0,0,0,17,17,16,16,0,10,10,14,14,0,14,14,15,15,0,14,14,15,15,0,22,0,18,18,0,0,0,19,19,0,13,13,15,16,0,17,16,18,18,0,14,14,15,15,0,21,21,19,18,0,22,21,18,17,0,14,14,15,15,0,18,18,19,18,0,15,15,14,14,0,22,21,19,19,0,22,21,17,18,0,0,0,19,19,0,0,0,0,0,0,20,22,17,17,0,0,22,22,20,0,0,0,19,18,0,21,22,19,18,0,0,0,0,0,0,22,22,17,18,0,0,0,21,22,0,0,0,19,18,0,20,20,17,17,0,21,21,17,18,0,21,22,18,18,0,21,0,18,18,0,22,0,19,19,0,19,21,18,18,0,0,22,18,18,0,22,21,17,17,0,22,0,20,20,0,0,0,18,18,0,22,21,18,18,0,21,0,19,19,0,20,21,17,17,0,0,22,22,20,0,21,22,17,17,0,0,21,19,18,0,0,0,21,21,0,21,20,16,17,0,0,0,0,0,0,21,0,17,17,0,21,0,19,20,0,0,0,20,22,0,20,20,17,17,0,0,0,0,0,0,21,21,17,17,0,12,12,13,13,0,14,14,16,16,0,14,14,16,16,0,18,18,21,0,0,19,19,22,0,0,13,13,16,16,0,16,16,18,18,0,13,13,16,16,0,18,18,21,22,0,18,18,0,22,0,13,13,16,16,0,17,17,20,18,0,13,13,16,16,0,19,18,0,22,0,18,18,22,21,0,18,19,0,0,0,0,0,0,0,0,16,16,21,21,0,21,21,0,0,0,18,19,0,0,0,19,19,21,0,0,0,0,0,0,0,16,16,0,21,0,20,20,0,0,0,20,20,0,0,0,16,16,21,20,0,18,17,21,22,0,17,18,0,21,0,18,19,22,22,0,19,19,0,22,0,16,17,21,22,0,20,19,0,0,0,16,16,20,21,0,19,19,0,0,0,19,19,0,22,0,17,17,21,21,0,19,20,0,0,0,16,16,0,20,0,19,20,0,21,0,18,18,0,22,0,19,20,22,22,0,0,0,0,22,0,17,17,0,21,0,21,21,0,0,0,18,19,23,21,0,20,19,0,0,0,0,0,0,0,0,17,17,0,20,0,0,0,0,0,0,19,19,23,22,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,4,5,5,9,9,12,9,9,12,12,12,10,10,13,13,13,11,11,12,12,13,13,13,12,12,13,10,10,13,13,13,13,13,13,13,13,10,10,13,12,13,11,11,13,13,13,14,14,13,12,13,10,10,13,13,12,13,13,13,13,13,10,10,12,12,13,11,11,13,13,13,14,14,12,12,13,12,12,13,13,13,13,13,13,13,13,11,11,12,12,13,11,11,13,13,13,14,14,12,12,13,14,14,13,13,14,13,13,14,14,14,14,14,12,12,13,14,14,13,13,14,14,14,12,12,12,8,8,12,12,13,12,12,11,11,13,11,11,11,11,14,12,12,11,11,14,12,12,10,11,14,12,12,12,12,14,12,12,12,12,13,13,13,11,11,14,12,12,11,11,14,12,12,12,12,14,12,12,12,12,14,12,12,12,12,14,13,13,11,11,14,12,12,11,11,14,12,12,12,12,14,13,13,12,12,14,12,12,12,12,14,13,13,11,11,14,12,12,11,11,14,13,13,11,11,15,13,13,12,12,14,12,12,12,12,15,13,13,12,12,14,12,12,11,11,15,13,13,11,11,12,9,9,11,11,13,7,7,11,11,13,8,8,12,12,14,10,10,10,10,14,14,14,11,11,14,8,8,12,12,14,14,14,12,12,14,7,7,11,11,14,9,9,12,12,14,14,14,11,11,14,8,8,12,12,14,14,14,12,12,14,7,7,11,11,14,9,9,12,12,14,14,14,11,11,14,10,10,12,12,14,14,14,13,13,14,9,9,11,11,14,10,10,12,11,15,14,14,11,11,14,15,15,12,12,15,14,14,14,14,15,14,14,11,11,15,14,14,12,12,15,14,14,11,11,14,11,11,10,10,15,10,10,10,10,15,10,10,10,10,15,11,11,9,9,15,12,13,9,9,15,11,11,11,11,15,13,13,11,11,15,10,10,10,10,15,11,11,10,10,15,13,13,11,11,15,11,11,11,11,15,13,13,11,11,15,10,10,10,10,15,11,11,10,10,15,13,13,10,11,15,12,12,11,11,15,13,13,11,10,15,11,11,10,10,15,11,12,10,9,15,13,13,10,10,15,14,14,11,11,15,13,13,11,11,15,14,14,10,10,15,13,13,10,10,15,14,14,10,10,14,13,13,10,10,15,13,13,10,10,15,13,13,10,10,14,14,14,8,9,15,14,14,9,9,15,14,14,11,11,15,14,14,10,10,15,14,14,10,10,15,14,14,11,11,15,14,14,10,10,15,14,14,11,11,15,14,14,10,10,15,14,14,10,10,15,14,14,10,10,15,14,14,9,9,15,14,14,11,11,15,14,14,11,11,15,14,14,10,10,15,14,14,10,10,14,14,14,9,9,15,15,15,11,11,15,14,14,12,12,15,15,15,10,10,15,14,15,10,10,15,15,15,9,9,15,10,10,13,13,17,8,8,12,12,17,10,9,13,13,18,11,11,12,12,18,14,14,12,12,17,9,9,13,13,17,13,13,12,12,18,8,8,12,12,18,10,10,12,12,18,14,14,12,12,18,10,10,13,13,18,13,13,13,13,18,9,9,12,12,18,10,10,13,13,18,14,14,12,12,18,11,11,13,13,18,14,14,13,13,18,10,10,12,12,17,11,11,12,12,18,14,14,12,12,18,14,14,13,13,18,14,14,13,13,19,14,15,12,12,18,14,14,12,12,18,15,15,12,12,13,7,7,11,11,14,15,15,11,11,14,16,15,11,11,14,15,15,11,11,14,15,15,11,11,14,15,15,11,12,14,15,15,12,12,13,15,15,11,11,14,15,15,11,11,15,15,15,12,12,14,15,15,12,12,14,16,16,12,12,14,15,15,11,11,14,15,15,11,11,15,15,15,12,12,15,15,15,12,12,14,15,15,12,12,14,15,15,11,11,14,15,15,11,11,15,14,15,12,12,15,15,15,12,12,15,16,16,12,12,15,15,15,12,12,14,15,15,12,12,15,15,15,12,12,13,13,13,11,11,14,14,15,11,11,14,14,14,12,12,14,15,15,10,10,15,15,15,11,11,14,15,15,12,12,14,14,14,11,11,14,15,15,11,11,14,15,15,12,12,15,15,15,11,11,14,15,15,12,12,14,14,15,11,11,14,15,15,11,11,14,15,15,12,12,15,15,15,11,11,15,15,15,12,12,14,15,15,12,12,14,15,15,10,10,14,15,15,11,11,15,15,15,10,10,15,15,15,12,12,15,15,15,14,14,15,15,15,11,11,15,15,15,11,11,15,15,15,11,11,14,10,10,10,10,15,9,9,12,11,15,10,10,12,12,15,11,11,11,11,15,13,13,12,12,16,10,10,12,12,15,13,13,12,12,15,9,9,11,11,15,10,10,13,12,15,13,13,11,11,15,10,10,12,12,15,13,13,12,12,15,9,9,11,11,15,10,10,12,12,15,13,13,11,11,15,11,11,12,12,15,13,13,13,13,15,10,10,11,11,15,11,11,12,12,15,13,14,11,11,15,14,14,13,13,16,14,14,20,19,15,14,14,11,11,15,13,14,12,12,15,14,14,11,11,14,13,13,10,10,14,14,13,11,11,15,13,14,12,12,15,14,14,12,12,15,14,14,11,11,15,14,14,12,12,15,15,14,13,13,15,14,14,11,11,15,14,14,11,11,15,14,14,13,13,15,14,14,12,12,15,14,14,13,13,15,14,14,11,11,15,14,14,11,11,15,14,14,13,13,15,14,14,12,12,15,14,14,12,12,15,14,14,12,12,15,14,14,11,11,15,15,15,12,12,15,15,15,13,13,16,14,14,12,12,15,15,15,13,13,15,15,15,12,12,15,15,15,12,12,14,10,10,13,13,17,9,9,12,12,17,9,9,13,13,17,11,11,12,12,18,14,14,12,12,18,10,10,13,13,18,14,13,12,12,18,9,9,12,12,18,10,10,12,13,18,14,14,12,12,17,9,9,12,12,17,13,14,12,12,17,9,9,12,12,17,10,10,12,12,17,14,14,11,11,18,11,11,12,12,18,14,14,12,13,18,10,10,12,12,18,11,11,12,12,18,14,14,11,11,18,15,15,12,12,18,14,14,13,13,18,14,15,12,12,17,14,14,12,12,17,15,15,12,12,13,7,7,11,11,14,15,15,11,11,14,15,15,11,11,14,15,15,11,11,14,15,15,11,11,14,15,15,11,11,14,15,15,12,12,14,15,15,11,11,14,15,15,11,11,15,15,15,12,12,14,15,15,11,11,14,15,15,12,12,14,15,15,11,11,15,15,15,11,11,15,15,15,12,12,14,15,15,12,12,14,15,16,12,12,14,15,15,11,11,14,15,15,11,11,15,15,15,12,12,15,15,15,12,12,15,16,16,12,12,15,15,15,12,12,15,15,15,12,12,15,15,15,12,12,13,13,13,12,12,14,14,14,11,11,14,14,14,12,12,14,14,14,10,10,15,15,15,11,11,14,15,15,12,12,14,14,14,11,11,14,15,15,11,11,14,14,14,12,12,15,15,14,11,11,14,15,15,12,12,14,14,14,11,11,14,15,15,11,11,14,14,14,11,11,15,14,14,10,10,14,15,15,12,12,14,14,14,12,12,14,15,15,10,10,14,15,15,11,11,15,15,15,10,10,15,15,15,12,12,15,14,14,13,13,15,15,15,10,10,15,14,14,11,11,15,15,15,10,10,14,10,10,10,10,14,9,9,12,12,15,10,10,12,12,14,11,11,11,11,15,13,14,12,12,15,10,10,13,13,15,13,13,12,12,15,9,9,12,12,15,10,10,13,13,15,13,14,11,11,15,10,10,12,12,15,13,13,12,12,15,9,9,11,11,15,10,10,12,12,15,13,13,11,11,15,11,11,12,12,15,13,13,13,13,15,10,10,11,11,15,11,11,12,12,15,14,14,11,11,15,14,14,13,13,15,14,14,20,19,15,14,14,11,11,15,14,14,12,12,15,14,14,11,11,14,13,13,11,11,15,13,13,11,11,15,14,13,12,12,15,14,14,11,12,15,14,14,11,11,15,14,14,12,12,14,14,14,13,13,15,14,14,11,11,15,14,14,11,11,15,14,14,13,13,15,14,14,12,12,15,14,14,13,13,14,14,14,11,11,15,14,14,11,11,15,14,14,13,13,15,14,14,12,12,15,14,14,12,12,15,14,14,12,12,15,14,14,11,11,14,14,14,12,12,15,15,15,13,13,16,14,14,12,12,15,15,15,13,13,15,14,14,12,12,15,15,15,12,12,15,11,11,13,13,18,10,10,12,12,17,11,11,12,12,18,12,12,11,11,18,14,14,12,12,18,10,10,13,13,18,14,14,12,12,18,10,10,12,12,18,11,11,12,12,18,14,14,12,12,18,11,11,12,13,18,14,14,12,12,18,10,10,12,12,18,11,11,12,12,18,14,14,11,11,18,11,11,12,12,18,14,14,12,12,17,10,10,11,11,17,12,12,11,11,17,14,14,11,11,18,15,15,12,12,18,14,14,13,13,18,15,15,11,11,18,15,14,12,12,18,15,15,11,11,14,8,8,11,11,14,15,15,10,10,14,15,15,11,11,14,15,15,11,11,15,15,15,12,12,15,15,15,11,11,15,15,15,12,12,14,15,15,10,10,15,15,15,11,11,15,15,15,12,12,15,15,15,11,11,15,15,15,13,13,14,15,15,10,10,15,15,15,11,11,15,15,15,12,12,15,15,15,12,12,15,16,16,12,12,15,14,14,11,11,15,15,15,11,11,15,15,15,12,12,16,15,15,13,13,15,16,16,13,13,16,15,15,12,12,15,15,15,12,12,15,15,15,12,12,14,13,13,11,11,14,14,14,11,11,14,14,14,12,12,15,14,14,11,11,15,15,14,11,11,15,14,14,12,12,15,14,14,12,12,14,15,15,11,11,15,14,14,12,12,15,14,14,11,11,15,14,15,12,12,15,14,14,12,12,14,15,15,11,11,15,14,14,11,11,15,14,14,11,11,15,15,14,12,12,15,14,14,12,12,15,15,15,10,11,15,14,14,11,11,15,15,15,10,10,15,15,15,12,12,16,14,14,13,13,15,15,15,11,11,15,14,14,11,11,15,15,15,11,11,14,11,11,9,9,14,10,10,12,12,15,11,11,12,12,15,12,12,12,12,15,14,14,13,13,15,11,11,12,12,15,14,14,13,13,14,10,10,12,12,15,11,11,13,13,15,14,14,12,12,15,10,10,12,12,14,14,14,13,13,14,10,10,11,11,15,11,11,12,12,15,14,14,12,12,15,12,12,13,13,15,14,14,14,14,15,11,11,11,11,15,12,11,12,12,15,14,14,11,11,15,15,15,13,14,15,14,14,20,19,15,14,14,12,12,15,14,14,13,13,15,14,14,12,12,14,13,13,10,10,14,13,13,11,11,14,13,13,11,11,15,14,14,12,12,15,14,14,12,12,15,14,14,12,11,14,14,14,13,13,15,14,14,11,11,15,14,14,11,11,15,14,14,14,14,15,14,14,11,12,15,14,14,13,13,14,14,14,11,11,15,14,14,11,11,15,14,14,14,14,15,14,14,12,12,15,14,14,13,13,15,14,14,11,11,14,14,14,12,12,15,14,14,13,13,15,15,15,13,13,15,14,14,13,13,15,15,15,13,13,15,14,14,13,13,15,15,15,13,13,15,14,14,13,13,18,15,15,12,12,18,15,15,12,12,18,16,16,11,11,18,17,17,12,12,18,15,15,13,13,18,17,17,12,12,18,15,15,12,12,18,15,16,12,12,18,17,17,12,12,18,15,15,13,12,17,16,17,12,12,17,15,15,11,12,18,15,15,12,12,18,17,17,11,11,18,16,16,12,12,18,17,16,12,12,18,15,15,11,11,18,15,15,12,12,18,17,17,11,11,18,17,17,12,12,18,16,16,13,13,18,17,17,11,11,17,16,16,11,11,18,17,17,11,11,15,15,15,11,11,16,15,15,11,11,16,15,15,11,11,16,15,15,12,12,17,15,15,14,14,16,15,15,11,11,17,15,15,14,14,16,15,15,11,11,16,15,15,12,12,18,15,15,13,13,16,15,15,11,11,17,15,15,14,14,16,15,15,11,11,16,15,15,12,12,17,15,15,13,13,16,15,15,12,12,17,16,15,14,14,16,15,15,11,11,16,15,15,12,12,18,15,15,13,13,17,15,15,14,14,17,16,16,15,15,18,14,15,13,13,18,15,15,14,14,18,15,15,13,13,15,13,13,12,12,15,14,14,12,12,16,14,14,12,12,16,14,14,12,12,17,14,15,12,12,16,14,14,12,12,17,14,14,13,13,16,15,15,12,12,16,14,14,12,12,17,14,14,12,12,16,14,14,12,12,17,14,14,13,13,15,15,15,11,11,16,14,14,12,12,17,14,14,12,12,16,15,15,12,12,17,14,14,13,12,16,15,15,11,11,16,14,14,12,12,17,15,15,11,11,17,15,15,13,13,17,14,14,13,13,18,15,15,12,12,17,14,14,12,12,17,15,15,12,12,14,15,15,9,9,14,15,15,12,12,15,16,15,13,13,15,15,15,14,14,15,15,15,21,19,15,15,15,13,13,15,15,15,19,19,15,15,15,12,12,15,16,16,14,14,15,15,15,19,19,15,16,15,13,13,15,16,16,19,20,15,15,15,12,13,15,16,16,14,14,15,15,15,20,19,15,15,15,14,14,15,16,16,19,19,15,15,15,14,13,15,15,15,14,14,15,15,15,19,19,15,16,16,20,19,15,17,16,21,20,15,15,15,20,19,15,16,16,20,20,15,15,15,19,20,14,13,13,10,10,14,14,14,11,11,14,14,14,12,12,15,14,14,13,13,15,15,14,20,20,15,14,14,12,12,14,14,14,19,19,15,14,14,11,11,15,14,14,12,12,15,14,14,20,19,15,14,14,12,12,14,14,14,20,20,14,14,14,11,11,15,14,14,12,12,15,14,14,20,21,15,14,14,13,13,15,14,14,20,20,15,14,14,12,12,15,14,14,13,13,14,15,15,20,20,15,15,15,20,19,15,14,14,20,19,15,15,15,20,20,15,14,14,21,20,15,15,15,20,20,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,6,6,6,7,7,7,8,8,7,8,8,10,11,11,9,8,8,8,8,8,11,11,12,9,8,8,5,7,7,9,11,11,10,11,11,10,11,11,12,14,14,11,12,12,10,12,12,13,14,14,12,12,12,5,6,6,7,6,6,8,7,7,8,7,7,11,10,10,10,7,7,9,8,8,12,11,11,10,7,7,7,7,7,11,10,10,12,10,10,11,10,10,15,13,13,13,10,10,12,11,11,15,13,13,14,11,11,7,7,7,11,11,11,12,11,11,12,11,11,14,14,14,13,12,12,12,12,12,16,15,15,14,12,12,0,10,10,0,11,11,0,12,12,0,11,11,0,14,14,0,11,11,0,12,12,0,15,15,0,11,11,7,8,8,12,11,10,12,10,10,12,11,11,15,13,13,14,11,11,12,10,10,16,14,14,14,10,10,8,7,7,12,11,11,12,11,11,12,11,11,15,14,14,14,12,12,13,12,12,15,14,14,15,13,13,0,11,11,0,12,12,0,12,12,0,12,12,0,15,15,0,12,12,0,13,13,0,15,14,0,12,12,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,5,5,0,8,8,0,8,8,0,9,9,0,10,10,0,8,8,0,8,8,0,10,10,0,8,8,0,7,7,0,8,8,0,7,7,0,8,8,0,8,8,0,8,8,0,8,8,0,8,8,0,8,8,0,7,7,0,6,6,0,7,7,0,7,7,0,10,10,0,6,6,0,7,7,0,10,10,0,5,5,0,8,8,0,7,7,0,8,8,0,8,8,0,9,9,0,7,7,0,8,8,0,9,9,0,7,7,0,6,6,0,9,10,0,10,10,0,10,10,0,11,11,0,9,9,0,10,10,0,11,11,0,9,9,0,8,8,0,8,8,0,8,8,0,9,9,0,9,9,0,7,7,0,8,8,0,9,9,0,7,7,0,8,8,0,7,7,0,7,7,0,8,8,0,9,9,0,7,7,0,7,7,0,8,8,0,6,6,0,6,6,0,10,10,0,10,10,0,10,10,0,12,12,0,9,9,0,10,10,0,12,12,0,9,9,0,8,8], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+446300); +/* memory initializer */ allocate([7,7,0,7,7,0,8,8,0,9,9,0,7,7,0,8,8,0,9,9,0,6,6,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,6,6,5,7,8,0,8,8,6,9,9,7,10,10,0,8,8,0,9,9,0,12,12,0,8,8,4,7,7,6,10,10,0,12,12,7,11,11,8,12,12,0,12,12,0,13,12,0,15,15,0,12,12,0,7,7,0,7,7,0,7,7,0,8,8,0,10,10,0,7,7,0,8,8,0,11,11,0,7,7,5,7,7,8,9,9,0,10,10,8,9,9,11,11,11,0,10,9,0,11,11,0,13,13,0,10,10,6,7,7,8,10,10,0,12,12,9,10,10,10,12,12,0,12,12,0,12,12,0,15,15,0,12,12,0,10,10,0,11,11,0,11,11,0,11,11,0,13,13,0,11,11,0,11,11,0,15,15,0,10,10,0,8,8,0,10,10,0,12,12,0,11,11,0,12,12,0,12,12,0,12,12,0,15,15,0,11,11,0,7,7,0,10,10,0,12,12,0,10,10,0,12,12,0,12,12,0,13,13,0,14,14,0,12,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,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,9,9,0,0,0,8,8,0,0,0,9,9,0,0,0,12,12,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,11,11,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,11,11,0,0,0,0,0,0,0,0,12,12,0,0,0,0,0,0,0,0,11,11,0,0,0,12,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,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,5,5,0,0,0,7,7,0,0,0,9,9,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,5,5,0,0,0,7,7,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,5,5,0,0,0,7,7,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,7,7,0,0,0,9,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,11,11,0,0,0,9,9,0,0,0,10,10,0,0,0,10,10,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,10,10,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,10,10,0,0,0,0,0,0,0,0,12,12,0,0,0,0,0,0,0,0,11,11,0,0,0,12,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,9,0,0,0,7,7,0,0,0,8,8,0,0,0,10,10,0,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,0,7,7,0,0,0,9,9,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,8,8,0,0,0,9,9,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,11,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,0,0,0,0,0,0,0,0,5,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,10,0,0,0,7,7,0,0,0,9,9,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,8,8,0,0,0,9,9,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,8,8,0,0,0,9,9,0,0,0,0,0,0,0,0,11,11,0,0,0,0,0,0,0,0,9,9,0,0,0,10,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,9,9,0,0,0,7,7,0,0,0,8,8,0,0,0,10,11,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,8,8,0,0,0,9,9,0,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,0,7,7,0,0,0,9,9,0,0,0,0,0,0,0,0,11,11,0,0,0,0,0,0,0,0,9,9,0,0,0,10,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,5,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,10,0,0,0,7,7,0,0,0,9,9,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,7,8,0,0,0,9,9,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,8,8,0,0,0,9,9,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,11,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,10,0,0,0,9,9,0,0,0,10,10,0,0,0,11,11,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,8,8,0,0,0,10,10,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,10,10,0,0,0,0,0,0,0,0,11,11,0,0,0,0,0,0,0,0,9,9,0,0,0,12,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,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,10,0,0,0,9,9,0,0,0,10,10,0,0,0,12,12,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,10,10,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,8,8,0,0,0,10,10,0,0,0,0,0,0,0,0,11,11,0,0,0,0,0,0,0,0,10,10,0,0,0,11,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,2,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,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,5,16,9,9,13,18,21,4,2,21,6,6,10,15,21,16,19,6,5,7,10,13,16,8,6,5,4,4,8,13,16,8,5,6,4,4,7,12,15,13,10,9,7,7,9,13,16,18,15,13,12,9,7,10,14,21,18,13,13,7,5,8,12,2,0,0,0,64,0,0,0,192,58,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,11,7,0,0,0,0,0,0,0,0,0,176,11,7,0,0,0,0,0,0,0,0,0,216,11,7,0,0,12,7,0,0,0,0,0,0,0,0,0,40,12,7,0,80,12,7,0,0,0,0,0,0,0,0,0,120,12,7,0,160,12,7,0,0,0,0,0,0,0,0,0,200,12,7,0,240,12,7,0,160,12,7,0,0,0,0,0,24,13,7,0,64,13,7,0,160,8,7,0,200,8,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,64,0,0,0,72,11,7,0,0,0,0,0,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,0,4,0,0,0,64,11,7,0,0,0,0,0,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,8,7,0,80,8,7,0,0,0,0,0,0,0,0,0,120,8,7,0,160,8,7,0,200,8,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,169,0,0,0,88,10,7,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,8,11,7,0,0,0,0,0,2,0,0,0,25,0,0,0,32,10,7,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,64,10,7,0,0,0,0,0,2,0,0,0,9,0,0,0,0,10,7,0,1,0,0,0,0,136,51,225,0,136,51,97,2,0,0,0,0,0,0,0,16,10,7,0,0,0,0,0,1,0,0,0,25,0,0,0,120,9,7,0,1,0,0,0,0,192,18,225,0,0,153,96,5,0,0,0,0,0,0,0,152,9,7,0,0,0,0,0,1,0,0,0,25,0,0,0,240,8,7,0,1,0,0,0,0,0,120,224,0,0,16,96,5,0,0,0,0,0,0,0,16,9,7,0,0,0,0,0,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,13,0,0,0,10,0,0,0,14,0,0,0,9,0,0,0,15,0,0,0,8,0,0,0,16,0,0,0,7,0,0,0,17,0,0,0,6,0,0,0,18,0,0,0,5,0,0,0,19,0,0,0,4,0,0,0,20,0,0,0,3,0,0,0,21,0,0,0,2,0,0,0,22,0,0,0,1,0,0,0,23,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,1,3,2,5,4,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,15,15,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,13,0,0,0,10,0,0,0,14,0,0,0,9,0,0,0,15,0,0,0,8,0,0,0,16,0,0,0,7,0,0,0,17,0,0,0,6,0,0,0,18,0,0,0,5,0,0,0,19,0,0,0,4,0,0,0,20,0,0,0,3,0,0,0,21,0,0,0,2,0,0,0,22,0,0,0,1,0,0,0,23,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,1,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,4,4,5,5,4,4,5,5,5,4,5,4,5,5,5,5,6,5,6,5,6,5,6,5,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,8,8,8,8,9,9,10,10,10,10,4,6,5,8,7,9,9,9,9,10,9,11,9,4,5,6,7,8,9,9,9,9,9,10,9,10,8,9,8,9,8,10,9,11,9,12,10,12,10,8,8,9,8,9,9,10,9,11,10,12,10,12,9,10,10,11,10,12,11,12,11,12,12,12,12,9,10,10,11,11,11,11,11,12,12,12,12,12,10,11,11,12,12,12,12,12,12,12,12,12,12,10,11,11,12,12,12,12,12,12,12,12,12,12,11,12,12,12,12,12,13,12,13,12,13,12,12,11,12,12,12,12,12,12,13,12,12,12,12,12,12,12,12,13,13,12,13,12,13,12,13,12,12,12,13,12,13,12,13,12,13,12,13,12,12,12,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,3,2,3,0,0,0,0,3,4,13,9,9,12,15,17,4,2,18,5,7,10,14,18,11,8,6,5,6,8,11,14,8,5,5,3,5,8,11,13,9,6,7,5,5,7,9,10,11,10,9,8,6,6,8,10,14,14,11,11,9,8,9,10,17,17,14,13,10,9,10,10,5,0,0,0,243,0,0,0,184,57,7,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,176,58,7,0,0,0,0,0,5,0,0,0,53,12,0,0,104,45,7,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,160,57,7,0,0,0,0,0,5,0,0,0,243,0,0,0,96,44,7,0,1,0,0,0,0,0,56,224,0,0,56,96,2,0,0,0,0,0,0,0,88,45,7,0,0,0,0,0,5,0,0,0,243,0,0,0,88,43,7,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,80,44,7,0,0,0,0,0,5,0,0,0,243,0,0,0,80,42,7,0,1,0,0,0,0,0,84,224,0,0,84,96,2,0,0,0,0,0,0,0,72,43,7,0,0,0,0,0,5,0,0,0,53,12,0,0,0,30,7,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,56,42,7,0,0,0,0,0,5,0,0,0,53,12,0,0,176,17,7,0,1,0,0,0,0,0,124,224,0,0,92,96,3,0,0,0,0,0,0,0,232,29,7,0,0,0,0,0,1,0,0,0,7,0,0,0,136,17,7,0,1,0,0,0,0,0,56,224,0,0,16,96,3,0,0,0,0,0,0,0,144,17,7,0,0,0,0,0,5,0,0,0,243,0,0,0,128,16,7,0,1,0,0,0,0,0,149,224,0,0,149,96,2,0,0,0,0,0,0,0,120,17,7,0,0,0,0,0,5,0,0,0,243,0,0,0,120,15,7,0,1,0,0,0,0,0,92,224,0,0,92,96,2,0,0,0,0,0,0,0,112,16,7,0,0,0,0,0,5,0,0,0,243,0,0,0,112,14,7,0,1,0,0,0,0,76,93,225,0,76,93,97,2,0,0,0,0,0,0,0,104,15,7,0,0,0,0,0,5,0,0,0,243,0,0,0,104,13,7,0,1,0,0,0,0,136,51,225,0,136,51,97,2,0,0,0,0,0,0,0,96,14,7,0,0,0,0,0,1,9,9,6,9,9,5,9,9,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,7,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,6,6,7,7,7,7,7,7,7,8,8,9,9,9,9,7,7,8,8,8,9,9,9,9,7,8,6,7,7,8,8,8,8,8,8,9,8,8,10,9,9,10,8,8,10,8,8,10,9,9,10,8,8,6,6,6,8,6,6,8,7,7,8,7,7,10,8,8,9,7,7,9,7,7,10,8,9,9,7,7,7,7,7,10,8,8,11,8,8,10,8,8,12,9,9,12,8,8,11,9,9,12,9,9,11,8,8,7,7,7,10,9,9,10,9,9,10,9,9,11,10,10,10,9,9,11,9,9,11,10,10,11,9,9,9,8,8,10,9,9,10,9,9,11,9,9,11,10,10,11,9,9,11,9,9,11,10,10,11,9,9,8,8,8,11,9,9,11,9,9,11,9,9,12,9,9,12,8,8,12,9,9,12,9,9,12,8,8,8,7,7,10,9,9,10,9,9,11,9,9,11,11,11,11,9,9,11,10,10,11,11,11,11,9,9,10,9,9,11,9,9,11,9,10,11,10,9,11,10,10,11,9,9,11,9,10,11,10,10,11,9,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,6,6,7,7,7,7,8,8,7,9,9,11,11,11,9,8,8,8,9,9,12,11,11,9,8,8,6,7,7,10,11,10,10,10,10,11,11,10,14,13,14,12,11,11,11,11,11,15,14,14,13,12,12,5,6,6,8,5,5,8,7,7,8,8,8,12,10,10,9,7,7,9,7,8,12,10,10,10,7,7,7,8,8,12,10,10,12,10,10,11,10,10,15,13,13,13,10,10,11,10,10,16,13,14,14,10,10,7,7,7,12,11,11,12,11,11,11,11,11,16,15,15,14,12,12,12,11,11,16,15,16,14,12,12,10,9,9,14,11,11,13,11,11,12,11,11,16,14,14,14,11,11,12,11,11,17,15,15,14,11,11,7,8,8,12,11,11,12,10,10,12,10,10,16,14,13,14,10,10,12,10,10,17,14,14,14,10,10,8,7,7,13,11,11,12,11,11,12,11,11,16,15,14,14,12,12,12,11,11,16,15,14,15,12,12,11,10,10,13,11,11,13,12,11,13,11,11,17,14,14,14,11,11,13,11,11,17,14,15,14,11,11,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,3,3,3,3,3,3,0,3,0,0,0,2,0,0,0,4,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,2,6,6,14,14,6,7,7,14,14,7,7,7,15,15,0,12,12,15,15,0,13,13,15,15,7,8,8,15,15,10,10,10,16,16,9,8,8,15,15,0,13,13,18,17,0,13,13,16,16,8,8,8,15,15,12,11,11,16,16,9,8,8,15,15,0,13,13,18,18,0,13,13,16,16,0,14,14,17,17,0,20,0,19,20,0,12,12,16,16,0,16,16,20,22,0,14,14,16,16,0,14,14,17,17,0,20,22,20,19,0,13,13,15,16,0,17,18,0,21,0,15,15,16,16,5,7,7,13,13,8,9,9,14,14,10,10,10,14,14,0,20,22,18,18,0,22,21,18,17,9,10,10,14,14,12,12,12,17,17,12,10,10,14,14,0,0,20,17,17,0,22,21,17,18,11,10,10,14,14,14,13,13,18,18,12,11,11,14,14,0,22,21,18,19,0,20,0,17,17,0,22,0,18,18,0,0,0,0,0,0,20,20,17,17,0,22,0,22,21,0,21,0,19,18,0,22,22,18,18,0,0,0,0,0,0,21,0,17,17,0,22,0,20,20,0,0,0,19,18,6,6,6,12,12,8,6,6,10,10,8,6,6,13,12,0,10,10,11,11,0,11,11,13,13,8,7,7,13,13,11,9,9,13,13,10,6,6,12,12,0,10,10,14,14,0,10,10,13,13,9,7,7,13,13,12,10,10,13,13,10,6,6,12,12,0,11,11,15,15,0,10,10,13,13,0,12,12,15,14,0,19,20,16,17,0,9,9,13,13,0,14,14,20,21,0,12,11,13,12,0,12,12,15,14,0,20,19,17,17,0,10,10,12,13,0,15,15,22,21,0,12,12,12,13,0,10,10,12,12,0,11,11,15,15,0,11,11,15,15,0,15,15,22,22,0,16,17,0,0,0,11,11,15,15,0,14,14,18,18,0,11,11,16,16,0,16,15,0,21,0,16,16,0,0,0,12,12,15,15,0,14,14,19,19,0,11,11,15,15,0,15,15,22,0,0,16,16,22,0,0,16,16,0,21,0,0,0,0,0,0,15,15,19,20,0,18,18,0,0,0,17,17,0,0,0,17,17,0,0,0,0,0,0,0,0,16,15,22,21,0,20,20,0,0,0,18,18,0,0,0,10,10,12,12,0,10,10,11,11,0,11,11,12,12,0,11,11,9,9,0,13,12,12,12,0,11,11,13,13,0,13,13,12,12,0,10,10,12,12,0,13,12,13,13,0,12,12,12,12,0,11,11,13,13,0,13,13,12,12,0,10,10,12,12,0,13,13,14,13,0,12,12,12,12,0,14,13,13,14,0,20,21,15,15,0,11,11,12,12,0,15,16,20,20,0,12,13,10,10,0,13,13,14,13,0,20,20,15,15,0,11,11,12,12,0,16,17,21,21,0,13,13,11,11,6,7,7,16,15,11,9,9,14,15,12,9,9,16,16,0,13,13,15,15,0,14,14,17,17,10,9,9,16,16,14,12,12,16,16,12,9,9,15,15,0,13,13,17,18,0,13,13,15,15,12,10,10,17,17,15,12,12,17,17,13,9,9,16,16,0,13,13,18,19,0,14,14,16,16,0,15,15,18,18,0,0,0,20,19,0,12,12,17,16,0,16,17,0,21,0,14,15,16,16,0,15,15,18,18,0,0,22,19,21,0,13,13,16,16,0,18,17,22,22,0,15,15,16,16,7,7,7,13,13,11,10,10,15,15,12,10,10,14,14,0,21,0,18,17,0,21,22,18,18,11,10,10,15,15,14,12,12,17,17,14,11,11,14,14,0,21,20,18,18,0,22,21,18,17,12,11,10,16,16,16,14,14,17,19,14,11,11,15,15,0,0,22,19,19,0,21,22,18,18,0,21,0,18,19,0,0,0,22,0,0,22,21,17,17,0,0,0,20,22,0,0,21,18,18,0,0,0,19,20,0,0,0,0,0,0,0,21,17,17,0,0,0,22,21,0,0,0,19,19,10,9,9,14,13,13,10,10,12,12,13,10,10,14,14,0,13,13,12,12,0,15,14,16,15,13,10,10,14,14,15,12,12,14,14,15,10,10,14,14,0,14,14,15,15,0,14,13,14,14,13,10,10,15,15,17,13,13,15,15,14,10,10,14,14,0,14,14,15,16,0,14,14,15,15,0,15,15,16,16,0,21,22,17,18,0,12,12,14,14,0,17,17,20,21,0,14,14,14,14,0,15,15,16,16,0,21,22,18,18,0,13,13,14,14,0,18,18,22,0,0,15,15,14,14,0,11,11,13,13,0,12,12,16,15,0,12,12,16,16,0,16,16,0,0,0,16,17,0,22,0,12,12,16,16,0,14,14,17,18,0,11,11,16,16,0,15,15,0,21,0,16,16,21,22,0,12,12,16,16,0,15,15,19,19,0,12,12,17,16,0,16,16,21,22,0,16,16,0,0,0,17,17,0,22,0,0,0,0,0,0,15,15,19,20,0,17,19,0,0,0,17,17,22,0,0,17,17,0,22,0,0,0,0,0,0,15,15,21,0,0,19,20,0,0,0,19,18,22,0,0,11,12,14,14,0,11,11,14,14,0,12,12,15,15,0,13,13,13,13,0,14,14,16,16,0,12,12,15,15,0,14,14,16,15,0,11,11,15,15,0,13,13,16,16,0,13,13,15,15,0,12,12,15,15,0,15,14,16,16,0,11,11,15,15,0,14,14,17,17,0,13,13,15,15,0,15,15,16,16,0,0,0,18,18,0,12,12,14,14,0,16,16,22,0,0,14,14,15,15,0,15,15,16,17,0,21,22,18,18,0,13,13,15,14,0,18,17,22,0,0,14,14,15,15,8,8,8,16,15,12,10,10,16,15,12,10,10,16,16,0,14,14,16,17,0,14,14,17,16,12,10,10,17,18,14,12,12,18,18,14,10,10,16,16,0,14,14,18,18,0,14,14,16,16,12,9,9,16,16,17,13,13,16,17,14,9,9,15,15,0,14,14,18,19,0,13,13,15,15,0,15,15,18,19,0,0,0,22,21,0,13,13,16,16,0,16,16,22,0,0,15,15,16,16,0,14,14,18,17,0,0,0,20,0,0,13,13,16,16,0,18,18,0,0,0,15,15,16,16,8,7,7,13,13,12,10,10,15,15,12,10,10,14,14,0,22,22,19,18,0,0,0,18,18,12,10,10,15,15,14,13,13,17,17,14,11,11,15,15,0,19,20,18,18,0,22,21,17,18,13,11,11,15,15,16,13,13,18,18,14,11,11,14,15,0,22,21,20,19,0,22,21,17,17,0,0,22,19,18,0,0,0,0,0,0,22,20,17,17,0,0,0,21,20,0,0,0,19,17,0,0,22,19,19,0,0,0,0,0,0,22,20,18,17,0,0,0,0,0,0,0,0,18,18,0,10,10,14,14,0,11,11,14,14,0,11,11,15,15,0,14,14,14,14,0,15,15,16,16,0,11,11,16,16,0,13,13,16,16,0,11,11,15,15,0,14,14,16,16,0,14,14,15,15,0,11,11,15,15,0,13,13,15,15,0,10,10,15,15,0,15,15,17,17,0,14,14,14,14,0,16,16,16,16,0,0,22,19,19,0,13,13,14,14,0,17,17,0,0,0,15,15,14,14,0,16,16,17,17,0,0,22,18,18,0,13,13,14,14,0,21,18,0,0,0,15,15,14,14,0,11,11,13,13,0,12,12,15,15,0,12,12,16,15,0,16,16,0,0,0,17,17,22,22,0,12,12,16,16,0,14,14,18,18,0,11,12,16,16,0,15,16,0,21,0,16,16,22,21,0,12,12,16,16,0,15,15,19,20,0,11,12,16,16,0,15,15,20,22,0,16,16,0,22,0,17,17,22,0,0,0,0,0,0,0,15,15,21,22,0,19,18,0,0,0,17,17,0,0,0,17,17,0,22,0,0,0,0,0,0,16,15,22,0,0,19,19,0,0,0,17,18,0,0,0,12,12,15,15,0,12,12,15,15,0,12,12,15,15,0,13,13,14,14,0,15,15,16,17,0,12,12,16,16,0,14,14,16,16,0,12,11,15,16,0,14,14,16,17,0,14,14,16,16,0,13,12,16,16,0,15,15,16,16,0,11,11,15,15,0,14,14,16,16,0,14,14,15,15,0,15,15,18,17,0,0,22,0,20,0,13,13,15,15,0,16,17,22,22,0,14,14,15,15,0,15,15,17,18,0,20,0,19,19,0,13,13,15,15,0,18,18,22,0,0,14,14,15,15,0,11,11,16,16,0,14,14,17,16,0,13,13,17,17,0,16,16,17,17,0,17,17,18,19,0,12,12,16,17,0,15,15,18,18,0,12,12,16,16,0,16,16,19,18,0,16,16,17,16,0,12,13,17,17,0,17,16,18,17,0,13,12,16,16,0,16,16,18,19,0,16,16,16,17,0,16,16,18,18,0,22,0,22,22,0,13,13,16,16,0,19,18,22,20,0,16,15,16,16,0,16,17,18,18,0,0,0,22,20,0,14,14,16,16,0,19,19,0,0,0,16,16,16,16,0,9,9,13,13,0,13,13,15,15,0,14,14,15,15,0,0,22,17,18,0,22,0,18,19,0,12,12,15,15,0,15,16,17,17,0,14,14,14,14,0,22,0,18,18,0,21,22,17,17,0,13,13,15,15,0,17,17,17,18,0,14,14,15,15,0,22,21,21,19,0,20,21,17,17,0,21,21,19,18,0,0,0,0,0,0,21,21,17,17,0,0,0,22,22,0,0,22,19,18,0,0,21,19,18,0,0,0,0,22,0,19,20,17,17,0,0,0,0,22,0,0,0,19,18,0,19,19,15,16,0,21,19,16,17,0,0,21,17,17,0,0,22,17,17,0,22,22,18,19,0,20,20,16,16,0,0,22,18,18,0,20,19,16,17,0,22,21,20,19,0,0,21,17,17,0,21,20,17,17,0,0,0,18,18,0,19,19,17,16,0,22,0,19,19,0,21,22,17,18,0,0,22,19,18,0,0,0,19,20,0,19,19,16,16,0,22,22,22,0,0,20,22,16,16,0,22,20,18,19,0,0,0,20,19,0,20,20,16,16,0,0,0,0,0,0,22,20,17,16,0,11,11,13,13,0,14,13,15,15,0,13,13,16,15,0,18,17,21,0,0,18,18,21,0,0,12,12,15,15,0,15,16,17,18,0,12,12,15,15,0,17,17,22,20,0,17,18,22,0,0,12,12,17,16,0,16,17,19,19,0,13,13,16,16,0,17,17,0,22,0,17,17,0,21,0,18,18,20,22,0,0,0,0,0,0,15,15,21,20,0,20,19,0,0,0,18,18,22,0,0,17,17,22,0,0,0,0,0,0,0,15,16,20,22,0,20,21,0,0,0,19,18,0,0,0,15,15,19,19,0,17,16,20,20,0,16,17,20,21,0,18,17,0,0,0,19,19,0,0,0,15,15,21,19,0,19,19,0,0,0,15,15,22,22,0,18,18,0,22,0,17,18,22,21,0,15,15,20,19,0,19,19,0,0,0,15,15,20,22,0,18,19,20,0,0,18,17,21,21,0,18,18,19,22,0,0,0,0,0,0,15,15,20,19,0,19,19,0,0,0,18,18,21,22,0,18,18,22,0,0,0,0,0,0,0,15,15,19,20,0,21,21,0,0,0,17,17,20,20,0,12,12,17,17,0,14,14,16,17,0,13,14,17,17,0,16,16,17,17,0,17,17,17,19,0,13,13,17,17,0,16,16,18,18,0,13,13,16,16,0,16,16,18,18,0,16,16,17,17,0,13,13,17,17,0,17,17,18,17,0,12,12,15,16,0,17,18,19,20,0,16,16,16,16,0,17,16,18,19,0,0,22,21,22,0,14,14,16,16,0,19,19,0,0,0,16,16,16,16,0,16,16,18,17,0,0,22,21,21,0,14,14,16,16,0,22,20,22,0,0,16,16,15,15,0,9,9,13,13,0,14,14,15,15,0,14,14,14,14,0,22,22,18,18,0,0,22,18,18,0,12,12,15,15,0,16,16,18,17,0,14,14,14,14,0,20,21,18,18,0,22,21,17,17,0,13,13,15,15,0,17,17,18,18,0,14,14,14,14,0,0,21,18,19,0,0,22,17,17,0,22,22,19,18,0,0,0,0,0,0,19,21,17,17,0,0,0,22,20,0,0,21,18,19,0,0,22,18,18,0,0,0,0,22,0,20,22,17,17,0,0,0,20,22,0,0,0,18,18,0,19,21,16,16,0,20,22,16,17,0,20,0,17,17,0,22,0,18,17,0,21,0,18,19,0,20,20,17,17,0,22,0,18,18,0,21,20,17,17,0,0,20,20,19,0,0,21,18,17,0,21,21,17,17,0,22,0,18,17,0,19,19,17,17,0,0,22,20,21,0,0,21,17,17,0,22,0,18,18,0,0,0,20,22,0,20,19,16,16,0,0,0,0,0,0,22,22,17,17,0,22,0,18,19,0,0,0,21,20,0,19,21,16,17,0,0,0,0,0,0,22,22,17,16,0,11,11,13,13,0,13,13,15,15,0,13,13,15,15,0,17,17,22,21,0,18,18,22,0,0,12,13,16,15,0,15,16,18,18,0,13,13,16,16,0,17,17,0,22,0,17,17,22,22,0,13,13,16,16,0,16,16,19,18,0,13,13,16,16,0,18,17,0,20,0,18,17,20,0,0,17,17,21,0,0,0,0,0,0,0,15,15,21,22,0,19,20,0,0,0,18,18,0,0,0,18,17,0,0,0,0,0,0,0,0,16,16,22,22,0,20,20,0,0,0,21,19,0,0,0,15,15,20,19,0,16,16,22,20,0,17,17,0,22,0,18,18,0,22,0,19,17,0,0,0,15,16,22,20,0,18,19,0,0,0,16,16,22,20,0,18,18,0,22,0,18,18,22,0,0,16,16,21,20,0,19,20,0,22,0,16,16,0,22,0,18,18,0,22,0,18,18,0,21,0,19,18,0,22,0,0,0,0,0,0,16,16,21,20,0,20,0,0,0,0,18,18,21,0,0,18,18,0,0,0,0,0,0,0,0,16,16,21,19,0,0,0,0,0,0,18,18,0,21,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,3,4,5,8,8,12,10,10,12,12,12,10,10,12,12,13,11,11,12,12,13,12,12,12,12,13,10,10,13,13,13,13,13,13,13,13,10,10,13,13,13,11,11,13,13,14,13,13,12,12,13,10,10,13,13,13,13,13,13,13,13,10,10,12,12,13,11,11,13,13,13,13,13,12,12,13,12,12,13,13,13,13,13,13,13,14,11,11,12,12,14,12,12,13,12,14,14,14,12,12,13,14,14,13,13,14,13,13,13,13,14,14,14,12,12,14,13,13,13,13,14,14,14,12,12,12,8,8,11,11,12,12,12,11,11,12,11,11,10,10,13,12,12,10,10,13,12,12,10,10,13,12,12,12,12,14,12,12,12,12,13,13,13,11,11,14,12,12,11,11,14,12,12,12,12,14,12,12,12,12,13,12,12,12,12,13,13,13,11,11,14,12,12,11,11,14,12,12,12,12,14,13,13,12,12,14,12,12,12,11,14,13,13,11,11,14,13,12,11,11,14,13,13,11,11,14,13,13,12,12,14,12,12,12,12,15,13,13,12,12,14,12,12,11,11,14,13,13,11,11,12,9,9,10,10,12,7,7,11,11,12,9,9,12,12,13,10,10,10,10,14,14,14,11,11,13,9,9,12,12,14,14,14,12,12,13,8,8,11,11,14,9,9,12,12,14,14,14,11,11,13,9,9,12,12,14,14,14,12,12,14,8,8,11,11,14,9,9,12,12,14,14,14,11,11,14,10,10,12,12,14,14,14,13,13,14,9,9,11,11,14,10,10,12,12,14,14,14,11,11,14,14,15,12,12,15], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+456540); +/* memory initializer */ allocate([14,14,14,14,15,14,14,11,11,14,14,14,12,12,14,14,14,11,11,14,11,11,10,10,14,10,10,10,10,14,10,10,10,10,15,11,11,9,9,14,12,12,9,9,15,11,11,11,11,15,13,13,11,11,15,10,10,10,10,15,11,11,10,10,15,13,13,11,11,15,11,11,11,11,15,13,13,11,11,15,10,10,10,10,15,11,11,10,10,15,13,13,11,11,15,12,12,11,11,15,13,13,11,11,15,11,11,10,10,15,12,12,10,10,15,13,13,10,10,15,14,14,11,11,15,13,13,11,11,15,14,14,10,11,15,13,13,10,10,15,13,14,10,10,14,13,13,10,10,14,13,13,10,10,14,13,13,10,10,14,13,13,9,9,14,14,14,9,9,15,14,14,11,11,15,14,14,10,10,15,14,14,10,10,15,14,14,11,11,15,14,14,10,10,15,14,14,11,11,15,14,14,10,10,14,14,14,10,10,15,14,14,10,10,14,14,14,10,10,15,14,14,11,11,15,14,14,11,11,14,14,14,10,10,15,14,14,10,10,14,14,14,9,9,15,15,15,11,11,15,14,14,12,12,15,15,14,10,10,15,14,14,10,10,14,15,15,9,9,14,10,10,12,12,17,9,9,12,12,17,10,10,13,13,17,11,11,12,12,18,14,14,12,12,17,10,10,13,13,17,14,14,12,12,17,9,9,12,12,17,11,11,12,12,17,14,14,12,12,18,10,10,13,13,18,14,14,13,13,18,9,9,12,12,18,10,10,13,13,18,14,14,12,12,18,11,11,13,13,18,14,14,13,13,18,10,10,12,12,17,11,11,12,12,17,14,14,12,12,18,15,15,13,13,18,14,14,14,14,18,15,15,12,12,18,14,14,12,12,18,15,15,12,12,13,7,7,11,11,14,15,15,11,11,14,15,15,12,12,14,15,15,11,11,15,15,15,11,11,14,15,15,12,12,14,15,15,12,12,14,15,15,11,11,14,15,15,11,11,15,15,15,12,12,14,15,15,12,12,14,15,15,12,12,14,15,15,11,11,14,15,15,11,11,15,15,15,12,12,15,15,15,12,12,14,15,15,12,12,14,15,14,12,12,14,15,15,11,11,15,14,14,12,12,15,15,15,12,12,15,16,16,12,12,15,15,15,12,12,15,15,15,12,12,15,15,15,12,12,13,13,13,11,10,14,14,15,11,11,14,14,14,12,12,15,14,14,10,10,15,15,15,11,11,14,15,15,12,12,14,14,14,11,11,14,15,15,11,11,14,15,15,12,12,15,15,15,11,11,14,15,15,12,12,14,14,14,12,12,14,15,15,11,11,14,15,15,12,12,15,15,15,11,11,15,15,15,12,12,15,14,14,12,12,14,15,15,11,11,14,15,15,11,11,15,15,15,10,10,15,15,16,12,12,15,15,15,14,14,15,15,15,11,11,15,15,15,12,12,15,15,15,11,11,14,11,11,10,10,15,9,9,12,12,15,10,10,12,12,15,11,11,11,11,15,14,14,12,12,15,10,10,13,13,15,14,14,12,12,15,9,9,12,12,15,10,10,13,13,15,13,13,12,11,15,10,10,12,12,15,14,14,12,12,15,9,9,11,11,15,11,11,12,12,15,13,13,11,11,15,11,11,13,13,15,13,14,13,14,15,11,11,11,11,15,11,11,12,12,15,14,14,11,11,15,14,14,13,13,15,14,14,20,20,15,14,14,12,12,15,14,14,12,12,15,14,14,11,11,14,13,13,10,10,14,13,13,12,12,14,14,13,12,12,15,14,14,12,12,15,14,14,11,11,15,14,14,12,12,15,14,14,13,13,15,14,14,12,11,15,14,14,11,11,15,14,14,13,13,15,14,14,12,12,15,14,14,13,13,15,14,14,12,11,15,14,14,12,12,15,14,14,13,13,15,14,14,13,13,15,14,14,12,12,15,14,14,12,12,15,14,14,12,12,15,15,15,13,13,15,15,15,13,13,15,14,14,13,13,15,15,15,13,13,15,14,15,12,12,15,15,15,13,13,14,10,10,12,13,17,9,9,12,12,17,10,10,13,13,17,11,11,12,12,18,14,14,12,12,18,10,10,13,13,18,14,14,12,12,17,9,9,12,12,18,10,11,13,13,18,14,14,12,12,17,10,10,12,12,17,14,14,12,12,17,9,9,12,12,17,11,11,12,12,17,14,14,12,12,18,11,11,12,12,18,14,14,13,13,18,11,11,12,12,18,11,11,12,12,18,14,14,12,12,18,15,15,12,12,18,14,14,13,13,18,15,15,12,12,17,14,14,12,12,17,15,15,12,12,13,7,7,11,11,14,15,15,11,11,14,15,15,11,11,14,15,14,12,12,15,15,15,12,11,14,15,15,12,12,14,15,15,12,12,14,15,15,11,11,14,15,15,11,11,15,15,15,13,13,14,15,15,11,11,14,15,15,13,12,14,15,15,11,11,14,15,15,11,11,15,15,15,13,13,14,15,15,12,12,15,15,15,12,12,15,15,15,11,11,15,15,15,11,11,15,15,15,12,12,15,15,15,13,13,15,16,16,12,12,15,15,15,12,13,15,15,15,12,12,15,15,15,12,12,13,13,13,11,11,14,14,14,11,11,14,14,14,12,12,14,14,14,10,10,15,14,14,11,11,14,15,15,12,12,14,14,14,12,12,14,15,15,11,11,14,15,14,12,12,15,14,14,11,11,14,15,15,12,12,14,14,14,11,11,14,15,15,11,11,14,14,14,12,12,15,15,14,11,11,15,15,15,12,12,15,14,14,12,12,14,15,15,11,11,14,15,14,11,11,15,15,15,10,10,15,15,15,12,12,15,14,14,14,13,15,15,15,11,11,15,15,15,11,11,15,15,15,10,10,14,11,11,10,10,15,9,9,12,12,15,10,10,12,12,15,11,11,11,11,15,14,14,12,12,15,10,10,13,13,15,13,13,12,12,15,9,9,12,12,15,11,11,13,13,15,14,14,12,12,15,10,10,13,13,15,13,14,12,12,15,9,9,12,12,15,10,10,13,13,15,13,13,11,11,15,11,11,13,13,15,14,14,13,13,15,10,10,11,11,15,11,11,12,12,15,14,14,11,11,15,14,14,13,13,15,14,14,21,20,15,14,14,11,11,15,14,14,12,12,15,14,14,11,11,14,13,13,10,10,14,13,13,11,11,15,14,14,12,12,15,14,14,12,12,14,14,14,12,12,15,14,14,12,12,15,14,14,13,13,14,14,14,11,11,15,14,14,11,11,15,14,14,13,13,15,14,14,12,12,15,14,14,13,13,14,14,14,11,11,15,14,14,11,11,14,14,14,13,13,15,14,14,12,12,15,14,14,12,12,15,14,14,12,12,15,14,14,12,12,14,14,14,13,13,15,15,15,13,13,16,14,14,12,13,15,15,15,13,13,15,14,14,12,12,15,15,15,13,13,15,11,11,13,12,18,10,10,12,12,17,11,11,12,12,18,12,12,11,11,18,14,14,12,12,18,11,11,13,13,17,14,14,12,12,18,10,10,12,12,18,12,12,12,12,18,14,15,12,12,18,11,11,13,13,18,14,14,12,12,17,10,10,12,12,18,11,11,12,12,18,15,14,12,12,17,12,12,12,12,17,14,14,12,12,17,11,11,11,11,17,12,12,12,11,17,15,15,11,11,18,15,15,12,12,18,14,15,13,13,18,15,15,11,11,17,15,15,12,12,18,15,15,11,11,14,9,9,11,11,14,15,15,11,11,15,15,15,11,11,15,15,15,12,11,15,15,15,12,12,15,15,15,11,11,15,15,15,13,13,14,15,15,11,11,15,15,15,11,11,15,15,15,13,13,15,15,15,11,11,15,15,15,13,13,15,15,15,11,11,15,15,15,11,11,15,15,15,13,13,15,15,15,12,12,15,15,15,13,13,15,15,14,11,11,15,15,15,12,12,15,15,15,12,12,16,15,15,13,13,15,16,16,13,13,16,15,15,12,12,15,15,15,13,12,15,15,15,12,12,13,12,12,11,11,14,14,14,11,11,14,14,14,12,12,15,14,14,11,11,15,14,14,12,12,15,14,14,12,12,15,14,14,12,12,14,15,15,11,11,15,14,14,12,12,15,14,14,11,11,15,14,14,12,12,15,14,14,12,12,14,15,15,11,11,15,14,14,12,12,15,14,14,11,11,15,15,15,12,12,15,14,14,12,12,15,15,15,11,11,15,14,14,11,11,15,14,15,11,11,15,15,15,12,12,15,14,14,13,13,16,15,15,11,11,15,14,14,12,12,15,15,15,11,11,14,11,11,9,9,15,10,10,12,12,14,11,11,12,12,15,12,12,12,12,15,14,14,13,13,15,11,11,13,13,15,14,14,13,13,15,10,10,12,12,15,12,12,13,13,15,14,14,13,13,15,11,11,12,12,15,14,14,13,13,14,10,10,12,12,15,12,12,13,13,15,14,14,12,12,15,12,12,13,13,15,14,14,15,15,15,11,11,12,12,15,12,12,12,13,15,14,14,12,12,15,15,15,14,14,15,14,14,20,20,15,14,14,12,12,15,14,14,13,13,15,14,14,12,12,14,13,13,10,10,14,13,13,11,11,14,13,13,12,12,14,14,14,12,12,15,14,14,13,13,15,14,14,12,12,14,14,14,14,14,14,14,14,11,11,15,14,14,12,12,15,14,14,14,14,15,14,14,12,12,14,14,14,14,14,14,14,14,11,11,15,14,14,12,12,14,14,14,14,14,15,14,14,12,12,15,14,14,13,13,15,14,14,12,12,15,14,14,12,12,14,14,14,14,13,15,15,15,14,14,15,14,14,13,13,15,15,15,14,14,15,14,14,13,13,15,15,15,13,13,14,13,13,13,13,18,15,15,12,12,18,15,15,13,12,18,15,16,11,11,18,16,17,12,12,18,15,15,13,13,18,17,17,12,12,18,15,15,12,12,17,15,15,12,12,18,17,17,12,12,18,15,15,13,13,18,16,17,12,12,17,15,15,12,12,18,15,15,12,12,18,16,17,11,12,18,16,16,12,12,17,16,17,12,12,18,15,15,11,11,18,15,15,12,12,18,17,17,11,11,17,17,17,12,12,18,16,16,13,13,18,17,17,11,11,18,16,16,12,12,18,17,17,11,11,15,14,14,11,11,16,15,15,11,11,16,15,15,12,12,16,15,15,12,12,17,15,15,14,13,16,15,15,12,12,17,15,15,14,14,16,15,15,11,11,16,15,15,12,12,18,15,15,13,13,16,15,15,11,11,17,15,15,14,14,16,15,15,11,11,16,15,15,12,12,17,15,15,13,13,16,15,15,12,12,17,16,15,14,14,16,14,15,12,12,16,15,15,12,12,18,15,15,13,13,17,15,15,14,14,17,16,16,15,15,17,15,15,13,13,17,15,15,14,14,18,15,15,13,13,15,12,13,11,11,15,14,14,12,12,16,14,14,12,12,16,14,14,12,12,16,14,14,12,12,16,14,14,13,12,17,14,14,13,13,16,15,15,12,12,16,14,14,12,12,17,14,14,12,12,16,14,14,12,12,17,14,14,13,13,15,15,15,12,12,16,14,14,12,12,17,14,14,12,12,17,15,15,12,12,17,14,14,13,13,16,15,15,12,12,16,14,14,12,12,17,15,15,12,12,18,15,15,13,13,17,14,14,13,13,17,15,15,12,12,17,14,14,12,12,17,15,15,12,12,14,15,15,9,9,15,15,15,12,12,15,15,15,13,13,15,15,15,14,14,15,15,15,19,19,15,15,16,13,13,15,15,16,19,20,15,15,15,13,12,15,16,16,14,14,15,15,15,19,19,15,15,15,13,13,15,16,15,20,19,14,15,15,13,13,15,15,15,14,14,15,15,15,19,19,15,15,15,14,14,15,16,16,19,20,15,15,15,14,14,15,15,15,14,14,15,15,15,19,19,15,15,15,20,19,15,16,16,20,19,15,15,15,19,19,15,16,16,20,20,15,15,15,19,20,14,13,13,10,10,14,14,14,11,11,14,14,14,12,12,15,14,14,13,13,15,14,14,19,20,15,14,14,12,12,14,14,14,20,19,14,14,14,11,11,15,14,14,12,12,15,14,14,20,20,15,14,14,12,12,14,14,14,20,19,14,14,14,11,11,15,14,14,12,12,15,14,14,19,20,15,14,14,13,13,15,14,14,22,19,15,15,14,12,12,15,14,14,13,13,14,15,15,22,20,15,15,15,20,20,15,14,14,21,20,15,15,15,20,21,15,14,14,20,20,14,15,15,20,20,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,6,6,7,7,7,7,7,7,7,8,8,10,11,11,9,8,8,8,8,8,11,11,11,10,8,8,5,7,7,9,11,11,10,11,11,10,11,11,12,13,14,11,12,12,10,11,11,13,14,14,12,12,12,5,6,6,8,6,6,8,7,7,8,7,7,11,10,10,10,7,7,9,7,7,12,11,11,11,7,7,7,7,7,11,10,10,12,10,10,11,10,10,15,13,13,13,10,10,12,11,11,15,13,13,14,11,11,7,7,7,11,11,11,12,11,11,12,11,11,14,14,14,14,12,12,12,12,12,16,15,15,14,12,12,0,10,10,0,11,11,0,11,12,0,11,11,0,14,14,0,11,11,0,12,12,0,15,15,0,11,11,8,8,8,12,10,10,12,10,10,13,11,11,15,13,13,14,11,11,12,10,10,16,14,14,14,10,10,8,7,7,12,11,11,13,11,11,12,11,11,15,14,14,14,12,12,13,12,12,15,14,14,15,12,12,0,11,11,0,12,12,0,12,12,0,12,12,0,15,15,0,12,12,0,13,13,0,14,15,0,12,12,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,4,4,0,8,8,0,8,8,0,9,9,0,10,10,0,8,8,0,9,9,0,10,10,0,8,8,0,7,7,0,8,8,0,8,8,0,8,8,0,8,8,0,8,8,0,8,8,0,8,8,0,8,8,0,7,7,0,6,6,0,7,7,0,7,7,0,10,10,0,6,6,0,7,7,0,10,10,0,6,5,0,8,8,0,7,7,0,8,8,0,8,8,0,9,9,0,7,7,0,8,8,0,9,9,0,7,7,0,6,6,0,9,10,0,10,10,0,10,10,0,11,11,0,9,9,0,10,10,0,11,11,0,9,9,0,8,8,0,8,8,0,8,8,0,9,9,0,9,9,0,8,8,0,8,8,0,9,9,0,7,7,0,8,8,0,7,7,0,7,7,0,8,8,0,9,9,0,7,7,0,7,7,0,9,9,0,6,6,0,6,6,0,10,10,0,10,10,0,10,10,0,12,12,0,9,9,0,10,10,0,12,12,0,9,9,0,8,8,0,7,7,0,8,8,0,8,8,0,9,9,0,7,7,0,8,8,0,9,9,0,7,7,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,5,5,5,8,8,0,8,8,6,9,9,8,10,10,0,8,8,0,9,9,0,12,12,0,8,8,4,7,7,6,10,10,0,12,12,7,11,11,9,12,12,0,12,12,0,13,13,0,15,15,0,12,12,0,7,7,0,7,7,0,8,8,0,8,8,0,10,10,0,7,7,0,8,8,0,11,11,0,7,7,5,7,7,9,9,9,0,11,10,9,9,9,11,12,12,0,10,10,0,11,11,0,13,13,0,11,11,6,7,7,9,10,10,0,12,12,10,11,11,11,12,12,0,12,12,0,13,13,0,15,15,0,12,12,0,10,10,0,11,11,0,11,11,0,12,12,0,13,13,0,11,11,0,12,12,0,15,15,0,11,11,0,8,8,0,10,10,0,12,12,0,11,11,0,12,12,0,12,12,0,12,12,0,15,15,0,11,11,0,7,7,0,10,10,0,12,12,0,10,10,0,12,13,0,12,12,0,13,13,0,14,14,0,12,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,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,7,7,0,0,0,8,8,0,0,0,8,8,0,0,0,11,11,0,0,0,0,0,0,0,0,10,9,0,0,0,0,0,0,0,0,9,9,0,0,0,10,11,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,9,9,0,0,0,10,10,0,0,0,0,0,0,0,0,12,12,0,0,0,0,0,0,0,0,11,11,0,0,0,12,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,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,5,5,0,0,0,7,7,0,0,0,9,9,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,5,5,0,0,0,8,8,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,5,6,0,0,0,7,7,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,8,8,0,0,0,9,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,11,11,0,0,0,9,9,0,0,0,10,10,0,0,0,10,10,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,10,10,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,10,10,0,0,0,0,0,0,0,0,11,12,0,0,0,0,0,0,0,0,11,11,0,0,0,12,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,9,0,0,0,7,7,0,0,0,8,8,0,0,0,10,10,0,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,0,7,7,0,0,0,9,9,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,8,8,0,0,0,9,9,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,11,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,0,0,0,0,0,0,0,0,5,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,9,0,0,0,7,7,0,0,0,9,9,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,8,8,0,0,0,9,9,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,7,7,0,0,0,9,9,0,0,0,0,0,0,0,0,11,11,0,0,0,0,0,0,0,0,9,9,0,0,0,10,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,9,9,0,0,0,7,7,0,0,0,8,8,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,8,7,0,0,0,9,9,0,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,0,7,7,0,0,0,9,9,0,0,0,0,0,0,0,0,11,11,0,0,0,0,0,0,0,0,9,9,0,0,0,10,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,5,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,9,0,0,0,7,7,0,0,0,9,9,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,7,7,0,0,0,9,9,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,8,8,0,0,0,9,9,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,11,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,10,0,0,0,9,9,0,0,0,10,10,0,0,0,11,12,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,8,8,0,0,0,11,11,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,10,10,0,0,0,0,0,0,0,0,11,11,0,0,0,0,0,0,0,0,9,9,0,0,0,12,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,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,10,0,0,0,9,9,0,0,0,10,10,0,0,0,12,12,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,11,11,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,11,11,0,0,0,0,0,0,0,0,12,12,0,0,0,0,0,0,0,0,10,10,0,0,0,11,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,2,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,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,5,16,9,9,12,17,18,4,2,18,6,5,9,13,15,10,7,7,6,7,9,13,13,8,5,6,5,5,7,11,12,8,4,7,4,3,6,10,12,11,8,9,7,6,8,11,12,15,13,13,11,9,7,10,12,16,12,16,12,6,5,8,11,2,0,0,0,64,0,0,0,144,111,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,64,7,0,0,0,0,0,0,0,0,0,128,64,7,0,0,0,0,0,0,0,0,0,168,64,7,0,208,64,7,0,0,0,0,0,0,0,0,0,248,64,7,0,32,65,7,0,0,0,0,0,0,0,0,0,72,65,7,0,112,65,7,0,0,0,0,0,0,0,0,0,152,65,7,0,192,65,7,0,112,65,7,0,0,0,0,0,232,65,7,0,16,66,7,0,112,61,7,0,152,61,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,64,0,0,0,24,64,7,0,0,0,0,0,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,0,4,0,0,0,16,64,7,0,0,0,0,0,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,60,7,0,32,61,7,0,0,0,0,0,0,0,0,0,72,61,7,0,112,61,7,0,152,61,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,169,0,0,0,40,63,7,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,216,63,7,0,0,0,0,0,2,0,0,0,25,0,0,0,240,62,7,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,16,63,7,0,0,0,0,0,2,0,0,0,9,0,0,0,208,62,7,0,1,0,0,0,0,136,51,225,0,136,51,97,2,0,0,0,0,0,0,0,224,62,7,0,0,0,0,0,1,0,0,0,25,0,0,0,72,62,7,0,1,0,0,0,0,192,18,225,0,0,153,96,5,0,0,0,0,0,0,0,104,62,7,0,0,0,0,0,1,0,0,0,25,0,0,0,192,61,7,0,1,0,0,0,0,0,120,224,0,0,16,96,5,0,0,0,0,0,0,0,224,61,7,0,0,0,0,0,3,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,13,0,0,0,10,0,0,0,14,0,0,0,9,0,0,0,15,0,0,0,8,0,0,0,16,0,0,0,7,0,0,0,17,0,0,0,6,0,0,0,18,0,0,0,5,0,0,0,19,0,0,0,4,0,0,0,20,0,0,0,3,0,0,0,21,0,0,0,2,0,0,0,22,0,0,0,1,0,0,0,23,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,1,3,2,5,4,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,15,15,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,13,0,0,0,10,0,0,0,14,0,0,0,9,0,0,0,15,0,0,0,8,0,0,0,16,0,0,0,7,0,0,0,17,0,0,0,6,0,0,0,18,0,0,0,5,0,0,0,19,0,0,0,4,0,0,0,20,0,0,0,3,0,0,0,21,0,0,0,2,0,0,0,22,0,0,0,1,0,0,0,23,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,1,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,4,4,5,5,4,5,5,6,5,4,5,5,5,6,5,5,6,6,6,5,6,5,6,6,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,7,7,8,8,9,9,10,10,11,11,4,6,5,8,7,9,8,10,9,11,10,11,11,4,5,6,7,8,8,9,9,10,10,10,10,11,8,9,8,10,8,10,9,11,10,11,11,11,11,8,8,9,8,10,9,10,10,11,11,11,11,11,9,10,10,11,11,11,11,11,11,12,11,12,11,9,10,10,10,11,11,11,11,11,11,12,11,12,10,11,11,12,11,12,12,12,12,12,12,12,12,10,11,11,11,11,12,12,12,13,12,12,12,12,11,12,12,12,12,13,13,12,12,12,12,12,12,11,12,12,12,12,13,13,12,13,12,12,12,12,12,13,13,13,13,13,13,12,13,12,13,12,12,12,13,13,13,13,13,13,13,12,13,12,12,12,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,3,2,3,0,0,0,0,3,4,9,8,8,10,13,16,4,2,9,5,7,10,14,18,9,7,6,5,7,9,12,16,7,5,5,3,5,8,11,13,8,7,7,5,5,7,9,11,10,10,9,8,6,6,8,10,13,14,13,11,9,8,9,10,17,18,16,14,11,10,10,10,5,0,0,0,243,0,0,0,136,110,7,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,128,111,7,0,0,0,0,0,5,0,0,0,53,12,0,0,56,98,7,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,112,110,7,0,0,0,0,0,5,0,0,0,243,0,0,0,48,97,7,0,1,0,0,0,0,0,56,224,0,0,56,96,2,0,0,0,0,0,0,0,40,98,7,0,0,0,0,0,5,0,0,0,243,0,0,0,40,96,7,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,32,97,7,0,0,0,0,0,5,0,0,0,243,0,0,0,32,95,7,0,1,0,0,0,0,0,84,224,0,0,84,96,2,0,0,0,0,0,0,0,24,96,7,0,0,0,0,0,5,0,0,0,53,12,0,0,208,82,7,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,8,95,7,0,0,0,0,0,5,0,0,0,53,12,0,0,128,70,7,0,1,0,0,0,0,0,124,224,0,0,92,96,3,0,0,0,0,0,0,0,184,82,7,0,0,0,0,0,1,0,0,0,7,0,0,0,88,70,7,0,1,0,0,0,0,0,56,224,0,0,16,96,3,0,0,0,0,0,0,0,96,70,7,0,0,0,0,0,5,0,0,0,243,0,0,0,80,69,7,0,1,0,0,0,0,0,149,224,0,0,149,96,2,0,0,0,0,0,0,0,72,70,7,0,0,0,0,0,5,0,0,0,243,0,0,0,72,68,7,0,1,0,0,0,0,0,92,224,0,0,92,96,2,0,0,0,0,0,0,0,64,69,7,0,0,0,0,0,5,0,0,0,243,0,0,0,64,67,7,0,1,0,0,0,0,76,93,225,0,76,93,97,2,0,0,0,0,0,0,0,56,68,7,0,0,0,0,0,5,0,0,0,243,0,0,0,56,66,7,0,1,0,0,0,0,136,51,225,0,136,51,97,2,0,0,0,0,0,0,0,48,67,7,0,0,0,0,0,1,9,9,6,9,9,5,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,6,6,7,7,7,7,7,7,7,8,8,9,9,9,8,7,7,8,8,8,9,9,9,9,8,8,6,7,7,9,8,8,9,7,7,9,8,8,10,8,8,10,8,8,10,8,8,10,8,9,10,8,8,7,6,6,8,6,6,9,6,6,9,7,7,10,8,8,9,6,6,9,7,7,10,9,8,9,7,7,7,7,7,11,8,8,11,9,9,10,9,9,12,9,9,12,8,8,11,9,9,12,9,9,12,8,8,8,7,7,10,9,9,10,9,9,10,9,9,11,10,11,11,9,9,11,9,9,11,11,11,11,9,9,10,8,8,11,9,9,10,9,9,11,9,9,11,10,10,11,9,9,11,9,9,12,10,10,11,9,9,8,8,8,11,9,9,12,9,9,11,9,9,12,9,9,12,8,8,12,9,9,12,9,10,12,8,8,9,7,7,11,9,9,11,10,10,11,9,9,11,11,11,11,9,9,11,10,10,12,11,11,11,9,10,10,9,9,11,9,9,11,10,10,11,10,10,11,11,11,11,9,9,11,9,10,11,11,11,11,9,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,7,7,7,8,8,7,8,8,7,9,9,10,11,11,9,8,8,7,8,9,11,11,11,9,8,8,6,7,7,10,10,10,10,10,10,10,10,10,14,14,14,12,11,11,10,11,11,15,14,14,13,11,11,6,6,6,8,5,5,8,7,7,8,7,7,11,10,10,9,7,7,9,7,7,12,10,10,10,7,7,6,8,7,12,10,10,12,10,10,11,10,10,15,14,13,13,10,10,11,10,10,16,14,14,14,10,10,7,7,7,12,11,11,12,11,11,11,11,11,16,14,14,13,12,12,11,11,11,17,15,15,14,12,12,10,9,9,13,11,11,13,11,11,12,11,11,16,14,13,14,11,11,12,11,11,17,15,14,14,11,11,7,8,8,12,11,11,12,10,10,12,10,10,16,13,14,13,10,10,11,10,10,17,14,14,14,10,10,7,7,7,12,11,11,12,11,11,12,11,11,15,14,15,14,12,12,12,11,11,17,15,15,14,12,12,10,10,9,13,11,11,13,11,11,13,11,11,16,14,14,14,11,11,13,11,11,16,15,15,15,11,11,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,3,3,3,3,3,3,0,3,0,0,0,2,0,0,0,4,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,2,6,6,14,14,6,7,7,14,14,7,7,7,15,15,0,13,13,16,16,0,13,13,15,15,7,8,8,15,15,9,10,10,17,16,9,8,8,15,15,0,13,13,18,17,0,13,13,16,16,8,8,8,15,15,12,11,11,16,17,9,8,8,14,14,0,13,13,18,17,0,13,13,16,15,0,14,14,18,17,0,20,22,18,20,0,12,12,16,16,0,16,16,22,20,0,14,14,16,16,0,14,14,17,17,0,22,22,22,19,0,12,13,16,16,0,17,17,0,0,0,15,15,16,16,5,7,7,13,13,9,9,9,15,14,10,10,10,14,14,0,21,21,18,17,0,21,22,18,17,9,10,10,14,14,12,12,12,17,17,12,10,10,14,14,0,19,21,18,17,0,20,22,18,18,11,10,10,14,14,14,13,13,18,17,12,11,11,14,14,0,22,19,17,18,0,20,0,18,17,0,22,21,17,17,0,0,0,0,0,0,20,22,17,17,0,22,0,21,19,0,22,0,18,18,0,0,22], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+466780); +/* memory initializer */ allocate([18,19,0,0,0,0,0,0,19,21,17,17,0,0,0,20,20,0,0,0,18,18,6,6,6,13,12,8,6,6,11,11,8,6,6,13,13,0,9,9,11,11,0,11,11,14,14,9,7,7,13,13,11,9,9,13,13,10,6,6,13,13,0,10,10,14,14,0,10,10,13,13,9,7,7,13,14,13,9,9,13,13,10,6,6,13,12,0,11,11,15,15,0,10,10,13,13,0,12,12,15,15,0,19,0,17,17,0,9,9,13,13,0,13,14,19,20,0,11,11,13,13,0,11,11,14,14,0,19,20,17,18,0,10,10,13,13,0,15,15,21,19,0,12,12,13,13,0,10,10,12,13,0,11,11,15,15,0,11,11,15,15,0,15,15,22,0,0,16,17,22,0,0,11,11,15,15,0,14,14,18,17,0,11,11,15,16,0,15,15,22,21,0,16,16,0,20,0,12,12,16,15,0,15,14,19,19,0,11,11,16,16,0,15,15,21,0,0,16,15,0,0,0,16,16,22,21,0,0,0,0,0,0,15,15,20,20,0,18,18,0,0,0,16,17,0,0,0,17,17,0,22,0,0,0,0,0,0,15,15,21,22,0,20,18,0,0,0,18,17,22,0,0,10,10,12,11,0,10,10,10,10,0,11,11,12,12,0,11,11,9,9,0,13,13,12,12,0,11,11,12,12,0,13,13,12,12,0,10,10,12,12,0,13,12,13,13,0,12,12,12,12,0,11,11,12,12,0,13,13,12,12,0,10,10,12,12,0,13,13,13,14,0,12,12,12,12,0,13,14,14,14,0,20,21,15,15,0,12,11,12,12,0,15,16,20,22,0,13,12,11,11,0,13,13,14,13,0,20,0,16,15,0,12,12,12,12,0,16,16,22,21,0,13,13,12,12,6,7,7,16,16,11,9,9,15,15,12,9,9,16,16,0,13,13,14,14,0,14,14,16,17,10,9,9,16,16,14,12,12,16,16,12,9,9,15,15,0,13,13,18,18,0,13,13,15,16,12,10,10,17,18,15,12,12,17,17,13,9,9,16,16,0,13,13,17,18,0,14,14,16,16,0,15,15,18,18,0,22,0,20,20,0,12,12,16,16,0,16,16,20,22,0,14,14,16,16,0,15,14,18,18,0,0,22,19,21,0,13,13,16,17,0,17,17,22,22,0,15,15,16,16,7,7,7,14,14,11,10,10,15,15,12,10,10,15,14,0,22,0,18,18,0,0,21,17,18,11,10,10,15,15,14,12,12,17,17,14,11,11,15,15,0,22,20,18,18,0,0,20,18,17,12,10,10,16,16,17,14,14,19,18,14,11,11,15,15,0,21,22,19,19,0,21,22,18,18,0,22,0,19,21,0,0,0,0,0,0,22,22,18,17,0,0,0,21,20,0,22,22,20,19,0,0,22,20,20,0,0,0,0,0,0,20,21,17,17,0,0,22,21,21,0,0,0,18,18,10,9,9,14,14,13,10,10,13,13,13,10,11,14,14,0,13,13,12,12,0,15,15,16,16,13,10,10,15,15,15,12,12,14,14,15,10,10,14,15,0,14,14,16,15,0,14,14,15,15,13,10,10,15,15,18,13,13,15,15,15,10,10,14,15,0,14,14,16,16,0,14,14,15,15,0,15,15,16,16,0,22,0,18,18,0,12,13,14,14,0,17,17,22,0,0,14,14,14,14,0,15,15,16,16,0,22,0,18,17,0,13,13,14,14,0,19,18,21,22,0,15,15,14,14,0,11,11,13,13,0,12,12,16,16,0,12,12,16,16,0,15,16,21,0,0,16,17,0,22,0,12,12,16,16,0,14,14,17,18,0,11,11,16,16,0,15,15,21,22,0,16,16,0,0,0,12,12,16,16,0,15,15,0,19,0,12,12,16,17,0,16,16,22,0,0,16,16,0,22,0,17,17,0,22,0,0,0,0,0,0,15,15,20,19,0,18,18,0,0,0,17,18,0,0,0,17,17,0,0,0,0,0,0,0,0,15,15,0,22,0,20,18,0,0,0,18,18,22,22,0,11,11,14,14,0,12,12,14,14,0,12,12,15,15,0,13,13,14,14,0,14,14,17,16,0,12,12,16,16,0,14,14,16,16,0,11,11,15,15,0,13,13,16,16,0,13,13,15,15,0,12,12,15,15,0,15,14,16,16,0,11,11,15,15,0,14,14,17,17,0,13,13,15,15,0,15,15,17,17,0,0,0,19,18,0,13,12,15,15,0,16,16,0,0,0,14,14,15,15,0,14,14,16,17,0,22,0,18,18,0,13,13,15,15,0,17,17,0,0,0,14,14,15,15,8,8,8,16,16,12,10,10,16,16,13,9,9,16,16,0,14,14,17,17,0,14,14,17,16,12,10,10,18,17,14,11,11,18,18,14,9,10,16,16,0,13,13,18,19,0,14,13,16,16,12,9,9,16,16,17,13,13,17,17,14,9,9,15,15,0,14,14,19,20,0,13,13,15,15,0,15,15,18,19,0,0,22,22,22,0,13,13,17,17,0,16,16,19,21,0,14,14,16,16,0,14,14,18,18,0,0,0,0,0,0,13,13,16,16,0,18,18,0,0,0,15,15,16,16,8,7,7,14,14,12,10,10,15,15,13,10,10,15,14,0,22,0,18,18,0,22,0,18,18,12,10,10,16,15,15,12,12,17,17,14,11,11,15,15,0,20,21,19,18,0,0,0,17,18,13,11,11,15,15,16,13,13,18,18,15,11,11,14,14,0,22,21,19,19,0,21,22,18,18,0,22,22,20,18,0,0,0,0,0,0,22,19,17,17,0,0,0,22,21,0,0,22,19,17,0,0,22,19,19,0,0,0,0,0,0,22,21,18,17,0,0,0,22,0,0,0,0,19,19,0,10,10,14,14,0,11,11,15,14,0,11,11,15,15,0,14,14,15,14,0,15,15,16,16,0,11,11,16,16,0,13,13,16,16,0,11,11,15,15,0,14,14,17,16,0,14,14,15,15,0,11,11,16,16,0,14,13,15,15,0,11,11,15,15,0,15,15,17,17,0,14,14,15,14,0,16,16,17,17,0,0,22,18,18,0,13,13,15,15,0,17,17,22,0,0,15,15,15,14,0,15,16,16,17,0,0,22,18,19,0,13,13,15,15,0,20,18,21,0,0,15,15,14,14,0,11,11,13,13,0,12,12,16,16,0,12,12,16,15,0,15,16,22,22,0,17,17,0,0,0,12,12,16,16,0,14,14,18,18,0,11,11,16,16,0,15,16,22,20,0,16,16,0,22,0,12,12,16,16,0,15,15,18,20,0,11,11,16,16,0,15,15,0,0,0,16,16,0,0,0,17,17,22,0,0,0,0,0,0,0,15,15,0,21,0,18,18,0,0,0,17,16,0,0,0,17,17,22,22,0,0,0,0,0,0,15,15,21,0,0,20,22,0,0,0,18,18,0,0,0,12,12,15,15,0,12,12,15,15,0,12,12,16,16,0,13,13,15,15,0,15,15,17,17,0,13,12,16,16,0,14,14,16,16,0,12,11,16,16,0,14,14,17,17,0,14,14,16,16,0,12,12,16,16,0,15,15,17,16,0,11,11,15,16,0,14,14,17,17,0,14,14,16,16,0,15,15,18,18,0,0,0,22,19,0,13,13,15,16,0,16,17,0,0,0,14,14,16,16,0,15,15,18,17,0,0,0,20,20,0,13,13,16,15,0,17,17,22,22,0,14,14,15,15,0,11,11,16,16,0,13,13,16,17,0,13,13,17,18,0,16,16,17,17,0,17,17,18,18,0,12,12,17,17,0,16,15,18,18,0,12,12,16,16,0,16,16,18,18,0,15,15,17,17,0,12,12,17,17,0,16,16,19,18,0,12,12,16,17,0,16,16,19,19,0,15,16,16,17,0,16,16,19,17,0,0,0,20,22,0,13,13,16,16,0,19,18,21,0,0,15,15,16,16,0,16,16,18,18,0,0,0,22,21,0,14,14,16,16,0,21,19,21,22,0,16,16,16,16,0,9,9,14,14,0,13,13,15,15,0,14,14,15,15,0,0,20,18,19,0,0,22,18,18,0,12,12,15,15,0,15,15,17,18,0,14,13,14,14,0,20,0,18,18,0,21,0,18,17,0,13,13,15,16,0,17,17,18,18,0,14,14,15,15,0,22,22,20,19,0,20,21,18,18,0,20,22,19,19,0,0,0,0,0,0,20,20,17,17,0,0,22,22,21,0,22,0,18,18,0,20,22,19,19,0,0,0,0,0,0,21,21,17,18,0,0,0,21,20,0,0,22,19,18,0,18,18,15,15,0,22,21,17,16,0,0,22,17,17,0,20,22,18,18,0,0,22,20,20,0,21,19,16,16,0,21,21,18,18,0,19,19,17,17,0,0,22,19,19,0,22,20,17,17,0,21,19,16,16,0,22,22,19,18,0,19,20,16,16,0,22,21,19,21,0,21,22,17,18,0,21,20,18,18,0,0,0,19,20,0,20,19,16,16,0,22,22,0,0,0,21,21,17,16,0,22,20,19,18,0,0,0,20,20,0,20,19,16,16,0,0,0,0,0,0,21,22,17,17,0,11,11,13,13,0,13,13,15,16,0,13,13,16,16,0,17,18,21,0,0,17,18,0,0,0,12,12,15,16,0,15,15,19,18,0,12,12,16,16,0,17,17,22,0,0,17,17,0,22,0,12,12,17,16,0,16,16,19,20,0,12,12,16,16,0,17,17,0,0,0,17,17,0,21,0,17,16,22,0,0,0,0,0,0,0,15,15,20,22,0,20,18,0,0,0,18,18,0,0,0,17,17,21,0,0,0,0,0,0,0,15,15,21,22,0,19,20,22,0,0,19,18,0,0,0,14,14,18,18,0,16,16,22,20,0,16,16,22,19,0,17,17,20,22,0,19,19,0,0,0,15,15,20,0,0,18,21,0,20,0,15,15,21,20,0,18,17,0,0,0,17,17,0,22,0,15,15,19,19,0,19,18,0,0,0,15,15,20,0,0,18,18,22,22,0,17,17,0,20,0,18,18,0,0,0,0,22,0,0,0,15,15,19,20,0,20,19,0,0,0,17,17,20,21,0,17,18,20,22,0,0,0,0,22,0,15,15,20,20,0,22,20,0,0,0,17,18,20,0,0,12,12,17,16,0,14,14,17,17,0,13,13,17,17,0,16,16,18,18,0,17,16,17,17,0,13,13,17,17,0,15,16,18,18,0,13,13,16,16,0,16,16,18,18,0,16,16,17,16,0,13,13,16,16,0,17,17,18,17,0,12,12,15,16,0,17,17,19,19,0,16,16,16,16,0,16,17,19,18,0,0,0,21,22,0,14,14,16,16,0,18,18,0,22,0,16,16,16,16,0,16,16,18,17,0,0,0,21,20,0,14,14,16,16,0,21,22,22,0,0,16,16,16,16,0,9,9,14,13,0,13,14,15,16,0,14,13,15,14,0,22,0,18,18,0,21,0,17,18,0,13,13,15,15,0,15,16,18,17,0,14,14,15,14,0,20,22,18,18,0,22,21,17,17,0,13,13,15,15,0,17,17,19,19,0,14,14,14,14,0,0,22,18,18,0,0,22,17,17,0,0,22,19,20,0,0,0,0,0,0,21,20,17,16,0,0,0,21,22,0,0,0,18,19,0,0,0,18,18,0,0,0,0,0,0,22,0,17,17,0,0,0,20,22,0,0,0,18,19,0,18,19,16,16,0,22,20,17,17,0,22,22,17,18,0,22,22,18,17,0,0,22,18,19,0,20,20,17,18,0,0,22,19,18,0,22,22,17,17,0,22,0,19,19,0,0,22,18,18,0,20,22,17,17,0,0,22,18,18,0,19,20,17,17,0,22,0,20,19,0,22,21,17,17,0,0,0,18,18,0,0,0,22,19,0,20,0,17,17,0,22,0,0,22,0,0,20,17,18,0,22,0,19,19,0,0,0,0,19,0,19,21,17,17,0,0,0,0,0,0,20,21,17,16,0,11,11,13,13,0,13,13,16,16,0,13,13,15,16,0,17,17,21,22,0,17,18,0,0,0,12,12,16,16,0,15,15,18,18,0,13,13,16,16,0,17,16,21,21,0,17,17,0,0,0,13,13,16,16,0,16,16,19,18,0,13,13,16,16,0,17,17,0,22,0,17,18,20,22,0,17,18,0,0,0,0,0,0,0,0,15,15,20,0,0,18,19,0,0,0,17,17,0,0,0,18,17,22,0,0,0,0,0,0,0,15,16,21,20,0,20,20,0,0,0,18,19,0,0,0,15,15,22,22,0,17,16,20,22,0,17,17,20,22,0,18,18,0,21,0,19,18,0,0,0,16,16,20,20,0,19,19,22,0,0,15,16,21,22,0,18,19,22,0,0,17,18,0,0,0,16,16,22,0,0,19,19,0,21,0,15,16,20,0,0,18,18,0,22,0,18,17,0,0,0,18,18,0,0,0,0,0,0,0,0,16,16,22,21,0,20,21,0,0,0,17,18,22,0,0,18,18,0,0,0,0,0,0,0,0,16,16,20,19,0,22,21,0,0,0,18,18,22,22,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,3,4,4,8,8,11,9,9,12,12,11,10,10,12,12,12,10,10,11,11,12,12,12,12,12,12,11,11,13,13,12,12,12,13,13,12,10,10,12,12,12,11,11,13,13,12,13,13,13,13,12,11,11,13,13,12,12,12,13,13,12,10,10,12,12,12,11,11,13,13,12,13,13,12,12,12,11,11,13,13,12,13,13,13,13,12,11,11,12,12,12,11,11,12,12,12,13,13,12,12,12,13,13,13,13,12,13,13,13,13,13,13,13,12,12,12,13,13,13,13,12,13,13,12,12,11,8,8,10,10,12,11,11,11,11,12,10,10,10,10,13,11,11,10,10,13,11,11,10,10,13,12,12,12,12,13,11,11,11,11,13,12,12,11,11,13,12,12,11,11,13,12,12,12,11,13,12,12,12,12,13,11,11,11,11,13,12,12,11,11,13,11,12,11,11,13,12,12,11,11,14,12,12,11,11,13,11,11,11,11,14,12,12,11,11,13,11,12,10,10,14,12,12,11,11,14,12,12,11,11,14,11,11,11,11,14,12,12,11,11,13,12,12,11,11,14,12,12,11,11,11,8,8,10,10,12,7,7,10,10,12,9,9,11,11,13,9,9,9,9,13,13,13,10,10,13,9,9,12,12,13,13,13,12,12,13,9,8,11,11,13,10,10,12,12,14,13,13,11,11,13,9,9,11,11,13,13,13,12,12,13,9,9,10,10,13,10,10,11,11,13,13,13,10,10,14,10,10,11,11,14,14,14,12,12,13,9,9,10,10,13,10,10,11,11,14,13,14,10,10,14,14,14,11,12,14,14,14,14,14,14,13,13,10,10,13,14,14,11,11,14,14,14,10,10,14,9,9,9,9,14,9,9,9,9,14,10,10,9,9,14,10,10,8,8,14,11,11,8,8,15,11,11,10,10,15,12,12,10,10,15,10,10,10,10,15,11,11,10,10,15,13,13,10,10,15,11,11,10,10,15,12,12,10,10,15,10,10,10,10,15,11,11,10,10,15,13,13,10,10,15,11,11,10,10,15,12,12,10,10,15,11,11,9,9,15,11,11,9,9,15,13,13,9,9,15,13,13,10,10,15,12,12,10,10,15,13,13,10,10,15,13,12,9,9,15,13,13,9,9,14,12,12,9,9,14,13,13,9,9,14,13,13,9,9,14,13,13,7,7,14,13,13,8,8,15,14,14,10,10,15,14,14,10,10,15,14,14,10,10,15,14,14,10,10,15,14,14,9,9,15,14,14,10,10,15,14,14,10,10,14,14,14,9,9,15,14,14,10,10,14,14,14,9,9,15,14,14,10,10,15,14,14,10,10,14,14,14,9,9,14,14,14,9,9,14,14,14,8,8,15,14,14,10,10,15,14,14,11,11,15,14,14,9,9,15,14,14,9,9,14,14,14,8,8,13,9,9,12,12,17,11,11,12,12,17,12,12,12,12,17,12,12,11,11,18,15,15,12,12,17,12,12,12,12,17,14,15,13,13,17,12,12,12,12,17,13,13,12,13,17,15,15,12,12,18,13,13,13,13,18,15,15,13,13,18,12,12,12,12,18,13,13,13,13,18,15,15,12,12,18,13,13,12,12,18,15,15,13,13,18,13,13,12,12,17,13,13,12,12,17,15,15,12,12,18,15,15,13,13,18,15,15,13,14,18,15,16,12,12,18,15,15,12,12,18,16,16,12,12,13,8,8,10,10,14,15,14,11,11,14,15,15,12,12,15,14,14,12,11,15,15,15,12,12,15,15,15,12,12,15,15,15,13,13,15,15,15,12,12,15,15,15,13,13,15,15,15,13,13,15,15,15,13,13,15,15,16,13,13,15,15,15,12,12,15,15,15,13,13,15,15,15,13,13,15,15,15,13,13,15,15,15,13,13,15,15,14,12,12,15,15,15,12,12,16,15,14,12,12,16,15,15,13,13,16,16,16,13,13,16,15,15,12,12,15,15,15,13,13,15,15,15,12,12,13,12,12,10,10,14,14,14,11,11,15,14,14,12,12,15,14,14,11,11,15,14,14,11,11,15,15,15,13,13,15,14,14,13,13,15,15,15,12,12,15,14,15,13,13,16,15,15,12,12,15,15,15,13,13,16,14,14,13,13,15,15,15,12,12,15,15,15,13,13,16,15,15,12,12,16,15,15,12,12,16,14,14,13,13,15,15,15,11,11,15,15,15,12,12,16,15,15,11,11,16,15,15,13,13,16,14,15,14,14,16,15,15,12,12,16,15,14,12,12,16,15,15,12,12,14,10,10,9,9,14,11,11,12,12,14,12,12,13,13,14,12,12,12,12,15,14,14,13,13,15,13,13,14,14,15,14,14,15,15,15,12,12,13,13,15,13,13,14,14,15,14,14,13,13,15,13,13,13,14,15,14,14,15,15,15,12,12,13,13,15,13,13,14,14,15,14,14,13,13,15,13,13,14,14,15,14,14,15,15,15,13,13,12,12,15,13,13,13,13,15,14,14,13,12,15,15,15,14,15,15,15,14,20,20,15,14,14,13,13,15,14,14,13,13,15,14,14,13,13,14,12,12,9,9,14,14,14,12,12,14,13,13,12,13,14,14,14,12,12,15,14,14,12,12,15,14,14,14,13,15,14,14,14,14,15,14,14,13,13,15,14,14,13,13,15,15,15,14,14,15,14,14,13,13,15,14,14,14,14,15,14,14,13,13,15,14,14,13,13,15,15,15,15,14,15,15,15,13,13,15,14,14,14,14,15,14,14,13,13,15,14,14,13,13,14,15,15,14,14,15,15,15,14,14,15,14,14,14,14,15,15,15,14,14,15,14,14,13,14,15,15,15,14,14,13,10,10,12,12,17,11,11,12,12,17,12,12,12,12,17,12,12,11,11,17,15,15,12,11,18,13,13,13,13,18,15,15,13,13,17,12,12,12,12,18,13,13,13,13,17,15,15,12,12,17,12,12,12,12,17,15,15,13,13,17,12,12,12,12,17,13,13,12,12,17,15,15,12,12,18,14,13,12,12,18,15,15,13,13,18,13,13,12,12,18,13,13,12,12,18,16,16,12,12,18,16,16,12,12,18,15,15,13,13,18,16,16,12,12,17,15,15,12,12,17,16,16,12,12,13,8,8,10,10,14,14,15,12,12,14,15,15,12,12,15,14,14,12,12,15,15,14,12,12,15,15,15,13,13,15,15,15,13,13,15,15,15,12,12,16,15,15,13,13,16,15,15,13,13,15,15,15,12,12,15,15,15,14,14,15,15,15,12,12,15,15,15,13,13,16,15,15,13,13,15,15,15,13,13,16,15,15,13,13,15,15,14,12,12,15,15,15,12,12,16,14,15,13,13,16,15,15,13,13,15,16,15,13,13,16,15,14,13,13,16,15,15,13,13,16,15,15,13,13,13,12,12,11,11,14,14,14,11,11,14,14,14,12,12,15,14,14,11,11,16,14,14,11,11,15,15,15,12,13,16,14,14,13,13,15,15,15,12,12,15,14,14,13,13,16,15,15,12,12,15,15,15,12,12,15,14,14,13,13,15,15,15,12,12,15,14,14,12,12,16,15,15,12,12,16,15,15,12,12,16,14,14,13,13,15,15,15,11,11,15,15,14,12,12,16,15,15,11,11,16,15,15,12,12,16,14,14,13,13,16,15,15,11,11,16,14,14,12,12,16,15,15,11,11,14,10,10,9,9,14,11,11,12,12,14,12,12,13,14,14,12,12,12,12,14,14,14,13,13,15,13,13,14,14,15,14,14,15,15,15,12,12,13,13,15,13,13,14,14,15,15,15,14,14,15,13,13,14,14,15,15,15,15,15,15,12,12,13,13,15,13,13,14,14,15,14,14,13,13,15,13,13,14,14,15,14,14,15,15,15,12,12,13,13,15,13,13,13,13,14,14,14,13,13,15,15,15,14,15,15,15,15,21,19,15,14,14,13,13,15,14,14,14,14,14,14,14,13,13,14,12,12,9,9,14,14,14,12,12,14,14,13,13,13,14,14,14,12,12,14,14,14,12,12,15,14,14,13,13,15,14,14,14,14,15,14,14,13,13,15,14,14,13,13,15,15,15,15,15,15,14,14,13,13,15,14,14,14,14,15,14,14,13,13,15,14,14,13,13,14,15,15,15,15,15,14,15,13,13,15,14,14,14,14,15,14,14,13,13,15,14,14,13,13,14,15,15,14,14,15,15,15,14,14,15,14,14,14,14,15,15,15,15,15,15,14,14,14,13,14,15,15,14,14,13,10,10,12,12,18,12,12,12,12,17,12,12,12,12,18,13,13,11,11,18,15,14,11,11,17,13,13,13,13,18,15,15,12,12,18,12,12,12,12,17,13,13,12,12,18,15,15,12,12,18,13,13,13,12,18,15,15,13,13,18,13,13,12,12,18,13,13,12,12,18,15,15,12,12,17,13,13,12,12,17,15,15,12,12,17,12,12,11,11,17,13,13,11,11,17,15,15,11,11,18,16,16,12,12,18,15,15,13,13,18,15,15,11,11,17,15,15,12,12,18,15,15,11,11,13,8,8,10,10,14,14,14,11,11,15,15,15,12,12,15,14,14,11,11,16,14,14,12,12,15,15,15,12,12,15,15,15,13,13,15,15,15,12,12,15,15,15,12,12,16,15,15,13,13,15,15,15,12,12,15,15,15,13,13,16,15,15,12,12,15,15,15,12,12,16,15,15,13,13,16,15,15,12,12,15,15,15,13,13,15,14,14,12,12,15,15,15,12,12,16,15,14,12,12,16,15,15,13,13,16,16,16,13,13,16,14,15,13,13,15,15,15,13,13,16,15,15,12,12,13,12,12,10,10,14,14,14,11,11,15,14,14,12,12,15,14,14,11,11,16,14,14,11,11,15,14,15,12,12,15,14,14,13,13,15,15,15,12,12,15,14,14,12,12,15,14,15,12,12,15,15,15,12,12,16,14,14,13,13,15,15,15,11,12,16,14,14,12,12,16,15,15,12,12,15,15,15,12,12,16,14,14,12,12,15,15,15,11,11,15,14,14,11,12,15,15,14,11,11,16,15,15,12,12,16,14,14,13,13,16,15,15,11,11,16,14,14,12,12,16,15,15,11,11,13,10,10,8,8,14,12,12,12,12,14,12,12,13,13,14,12,12,12,12,14,14,14,13,13,15,13,13,14,14,15,15,14,15,15,15,13,13,13,13,15,13,13,14,14,15,14,15,14,14,15,13,13,13,13,15,15,15,15,15,15,12,12,13,12,15,13,13,14,14,15,14,14,13,13,15,13,13,14,13,15,15,15,16,16,15,13,13,12,12,15,13,13,13,13,14,14,14,12,12,15,15,15,14,14,15,15,15,20,20,15,14,14,13,13,15,15,14,14,14,15,14,14,13,13,13,12,12,9,9,14,13,13,12,12,14,13,13,12,12,14,14,14,12,12,14,14,14,13,13,15,14,14,13,13,15,14,14,14,14,15,15,14,12,12,15,14,14,13,13,15,14,15,14,15,15,14,14,13,13,15,14,14,14,14,15,14,14,12,12,15,14,14,13,13,14,15,14,15,14,15,14,14,13,13,15,14,14,14,14,15,14,14,12,12,15,14,14,13,13,15,15,15,14,14,15,15,15,14,14,16,14,14,14,14,15,15,15,14,14,15,14,14,14,14,14,15,15,14,14,13,13,13,12,13,17,15,15,12,12,17,15,15,12,12,18,15,15,11,11,17,16,16,11,11,18,16,16,13,13,18,17,16,13,13,18,16,16,12,12,18,16,16,12,12,18,17,17,12,12,17,16,16,12,13,17,16,16,12,13,17,16,16,12,12,17,16,16,12,12,18,17,16,12,12,18,16,16,12,12,17,16,17,12,12,18,15,15,11,11,18,15,15,12,12,17,17,17,11,11,17,17,17,12,12,17,16,16,13,13,18,16,16,11,11,18,16,16,12,12,18,17,16,11,11,14,14,14,10,10,16,15,14,11,11,16,15,15,12,12,16,14,14,12,12,17,14,14,13,13,17,15,15,13,13,17,15,15,14,14,16,15,15,12,12,16,15,15,13,13,18,15,15,14,14,16,15,15,12,12,16,15,15,14,14,16,15,15,12,12,16,15,15,13,13,17,15,15,13,13,17,15,15,13,13,17,15,15,14,14,16,14,14,12,12,17,15,15,12,12,18,15,15,13,13,17,15,15,14,14,17,16,16,15,15,17,15,14,13,13,17,15,15,14,14,17,15,15,13,13,14,12,12,11,11,15,14,14,12,12,16,14,14,12,12,16,14,14,11,11,17,14,14,12,12,16,15,14,13,13,16,14,14,13,13,16,15,15,12,12,16,14,14,13,13,17,15,15,13,13,16,15,15,13,13,17,14,14,13,13,16,15,15,12,12,16,14,14,12,12,16,15,15,12,12,17,15,15,12,12,17,14,14,13,13,16,15,15,12,12,16,14,14,12,12,16,15,15,12,12,17,15,15,13,13,17,14,14,13,13,17,15,15,12,12,17,14,14,12,12,17,15,15,12,12,14,14,14,8,8,14,14,14,13,13,14,15,15,14,14,14,14,14,14,14,15,15,15,19,19,15,15,15,14,14,15,15,16,20,19,15,15,15,14,14,15,16,16,15,15,15,15,15,19,19,15,15,15,14,14,15,16,16,19,20,15,15,15,14,14,15,15,15,15,15,15,15,15,19,19,15,15,15,15,15,15,15,16,19,20,15,14,15,14,14,15,15,15,15,15,15,15,15,20,19,15,15,15,21,19,15,16,16,20,20,15,15,14,19,19,15,15,16,20,21,15,15,15,20,19,13,12,12,9,9,14,14,14,12,12,14,13,13,13,13,14,14,14,13,13,15,14,14,20,19,15,14,14,14,13,15,14,14,19,19,15,15,14,13,13,15,14,14,14,14,15,15,15,19,20,15,14,14,13,13,15,14,14,20,19,14,15,14,13,13,15,14,14,14,13,15,15,15,19,20,15,15,14,14,14,15,14,14,21,19,15,15,15,13,13,15,14,14,14,14,14,15,15,20,20,15,15,15,21,20,15,14,14,19,20,15,15,15,20,20,15,14,14,19,20,15,15,15,21,19,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,6,6,6,7,7,7,8,8,7,8,8,10,11,11,9,8,8,7,8,8,11,11,11,9,8,8,6,7,7,9,11,11,9,11,11,10,11,11,12,13,13,11,12,12,10,11,11,13,14,14,12,12,12,6,6,6,8,6,6,8,7,7,9,7,7,11,10,10,10,6,6,9,7,7,12,10,10,11,6,7,7,7,7,11,10,10,12,10,10,11,10,10,14,13,13,13,10,10,12,11,11,15,13,13,14,10,10,8,7,7,12,11,11,12,11,11,11,11,11,14,14,14,13,12,12,12,11,11,15,15,15,13,12,12,0,10,10,0,11,11,0,11,11,0,11,11,0,14,14,0,11,11,0,11,11,0,15,15,0,11,11,7,8,8,12,10,10,12,10,10,12,11,11,15,13,13,14,11,11,12,10,10,16,14,14,14,10,10,8,7,7,12,11,11,12,11,11,12,11,11,16,14,14,14,12,12,13,12,12,15,14,14,15,12,12,0,11,11,0,12,12,0,12,12,0,12,12,0,15,15,0,12,12,0,12,12,0,14,14,0,12,12,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,3,3,0,8,8,0,8,8,0,9,9,0,9,9,0,9,9,0,9,9,0,9,9,0,8,8,0,6,6,0,7,7,0,7,7,0,8,8,0,8,8,0,8,8,0,8,8,0,8,8,0,8,8,0,6,6,0,6,6,0,6,6,0,8,8,0,9,9,0,7,7,0,8,8,0,9,9,0,6,6,0,8,8,0,9,9,0,9,9,0,10,10,0,10,10,0,10,10,0,10,10,0,11,11,0,9,9,0,7,7,0,10,10,0,10,10,0,12,11,0,12,12,0,11,11,0,11,11,0,12,12,0,10,10,0,7,7,0,10,10,0,10,10,0,12,12,0,11,12,0,11,11,0,11,11,0,11,11,0,10,10,0,8,8,0,9,9,0,9,9,0,10,10,0,10,10,0,10,9,0,10,10,0,10,10,0,9,9,0,6,6,0,10,10,0,10,10,0,11,11,0,12,12,0,11,11,0,11,11,0,12,12,0,11,11,0,7,7,0,9,9,0,9,9,0,11,11,0,11,11,0,10,10,0,10,10,0,11,11,0,9,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,5,5,6,7,7,0,8,8,6,9,9,8,11,11,0,8,8,0,9,9,0,12,12,0,8,8,5,7,7,7,10,10,0,12,12,8,11,11,9,12,12,0,11,12,0,12,12,0,15,15,0,12,12,0,6,6,0,6,6,0,7,7,0,7,7,0,10,10,0,7,7,0,8,8,0,11,11,0,7,7,6,7,7,10,9,9,0,11,10,10,9,9,12,12,12,0,10,10,0,11,11,0,13,13,0,11,11,7,6,6,10,10,10,0,11,11,11,11,11,12,12,12,0,11,11,0,12,12,0,15,15,0,11,11,0,11,11,0,11,11,0,12,12,0,12,12,0,14,14,0,12,12,0,12,12,0,15,15,0,11,11,0,8,8,0,10,10,0,11,11,0,11,11,0,12,12,0,12,12,0,11,11,0,15,15,0,11,11,0,6,6,0,10,10,0,12,12,0,10,10,0,13,13,0,12,12,0,13,13,0,14,14,0,12,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,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,4,0,0,0,8,8,0,0,0,9,9,0,0,0,10,10,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,11,11,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,11,11,0,0,0,0,0,0,0,0,11,11,0,0,0,0,0,0,0,0,10,10,0,0,0,11,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,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,6,6,0,0,0,7,7,0,0,0,8,8,0,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,0,7,7,0,0,0,9,9,0,0,0,0,0,0,0,0,8,8,0,0,0,0,0,0,0,0,7,7,0,0,0,9,9,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,0,0,8,8,0,0,0,9,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,8,8,0,0,0,8,8,0,0,0,10,10,0,0,0,9,9,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,11,11,0,0,0,0,0,0,0,0,10,10,0,0,0,0,0,0,0,0,9,9,0,0,0,11,10,0,0,0,0,0,0,0,0,11,11,0,0,0,0,0,0,0,0,10,10,0,0,0,11,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,0,0,0,10,10,0,0,0,11,11,0,0,0,12,12,0,0,0,0,0,0,0,0,11,11,0,0,0,0,0,0,0,0,10,10,0,0,0,13,13,0,0,0,0,0,0,0,0,13,13,0,0,0,0,0,0,0,0,12,12,0,0,0,13,13,0,0,0,0,0,0,0,0,13,13,0,0,0,0,0,0,0,0,12,12,0,0,0,13,13,0,0,0,0,0,0,0,0,0,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,9,0,0,0,11,11,0,0,0,12,12,0,0,0,12,12,0,0,0,0,0,0,0,0,13,13,0,0,0,0,0,0,0,0,12,11,0,0,0,12,12,0,0,0,0,0,0,0,0,13,13,0,0,0,0,0,0,0,0,12,12,0,0,0,13,13,0,0,0,0,0,0,0,0,13,13,0,0,0,0,0,0,0,0,12,12,0,0,0,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,0,0,0,10,10,0,0,0,11,11,0,0,0,12,12,0,0,0,0,0,0,0,0,13,13,0,0,0,0,0,0,0,0,12,12,0,0,0,13,13,0,0,0,0,0,0,0,0,11,11,0,0,0,0,0,0,0,0,10,10,0,0,0,13,13,0,0,0,0,0,0,0,0,14,13,0,0,0,0,0,0,0,0,13,12,0,0,0,13,13,0,0,0,0,0,0,0,0,0,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,9,0,0,0,11,11,0,0,0,12,12,0,0,0,12,12,0,0,0,0,0,0,0,0,12,12,0,0,0,0,0,0,0,0,12,12,0,0,0,13,13,0,0,0,0,0,0,0,0,13,13,0,0,0,0,0,0,0,0,12,12,0,0,0,12,12,0,0,0,0,0,0,0,0,13,13,0,0,0,0,0,0,0,0,12,12,0,0,0,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,9,0,0,0,11,11,0,0,0,12,12,0,0,0,12,12,0,0,0,0,0,0,0,0,12,12,0,0,0,0,0,0,0,0,11,11,0,0,0,14,14,0,0,0,0,0,0,0,0,13,13,0,0,0,0,0,0,0,0,12,12,0,0,0,12,13,0,0,0,0,0,0,0,0,12,12,0,0,0,0,0,0,0,0,11,11,0,0,0,14,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,9,0,0,0,11,11,0,0,0,12,12,0,0,0,13,13,0,0,0,0,0,0,0,0,13,13,0,0,0,0,0,0,0,0,12,12,0,0,0,13,13,0,0,0,0,0,0,0,0,12,12,0,0,0,0,0,0,0,0,12,12,0,0,0,14,14,0,0,0,0,0,0,0,0,14,14,0,0,0,0,0,0,0,0,12,12,0,0,0,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,2,2], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+477020); +/* memory initializer */ allocate([1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,4,12,9,8,12,15,17,4,2,11,6,5,9,13,15,11,7,8,7,7,10,14,13,8,5,7,5,5,8,12,12,8,4,7,4,3,6,11,12,11,8,9,7,6,8,11,12,15,13,14,12,9,7,10,13,16,12,17,12,7,5,8,11,0,0,0,0,255,255,255,255,255,255,255,255,7,0,0,0,255,255,255,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+487288); +/* memory initializer */ allocate([1,0,0,0,2,0,0,0,7,0,0,0,17,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,7,0,0,0,17,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,49,0,0,0,200,161,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,128,7,0,0,0,0,0,0,0,0,0,96,128,7,0,136,128,7,0,0,0,0,0,0,0,0,0,176,128,7,0,216,128,7,0,0,0,0,0,0,0,0,0,0,129,7,0,40,129,7,0,0,0,0,0,0,0,0,0,80,129,7,0,120,129,7,0,40,129,7,0,0,0,0,0,160,129,7,0,88,125,7,0,128,125,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,49,0,0,0,0,128,7,0,0,0,0,0,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,0,4,0,0,0,248,127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,124,7,0,8,125,7,0,0,0,0,0,0,0,0,0,48,125,7,0,88,125,7,0,128,125,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,169,0,0,0,16,127,7,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,192,127,7,0,0,0,0,0,2,0,0,0,25,0,0,0,216,126,7,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,248,126,7,0,0,0,0,0,2,0,0,0,9,0,0,0,184,126,7,0,1,0,0,0,0,136,51,225,0,136,51,97,2,0,0,0,0,0,0,0,200,126,7,0,0,0,0,0,1,0,0,0,25,0,0,0,48,126,7,0,1,0,0,0,0,192,18,225,0,0,153,96,5,0,0,0,0,0,0,0,80,126,7,0,0,0,0,0,1,0,0,0,25,0,0,0,168,125,7,0,1,0,0,0,0,0,120,224,0,0,16,96,5,0,0,0,0,0,0,0,200,125,7,0,0,0,0,0,3,4,4,5,4,5,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,13,0,0,0,10,0,0,0,14,0,0,0,9,0,0,0,15,0,0,0,8,0,0,0,16,0,0,0,7,0,0,0,17,0,0,0,6,0,0,0,18,0,0,0,5,0,0,0,19,0,0,0,4,0,0,0,20,0,0,0,3,0,0,0,21,0,0,0,2,0,0,0,22,0,0,0,1,0,0,0,23,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,1,3,2,5,4,7,7,8,8,9,9,10,10,11,11,12,12,13,13,13,14,16,16,16,16,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,13,0,0,0,10,0,0,0,14,0,0,0,9,0,0,0,15,0,0,0,8,0,0,0,16,0,0,0,7,0,0,0,17,0,0,0,6,0,0,0,18,0,0,0,5,0,0,0,19,0,0,0,4,0,0,0,20,0,0,0,3,0,0,0,21,0,0,0,2,0,0,0,22,0,0,0,1,0,0,0,23,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,1,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,4,6,6,5,5,5,6,6,5,6,5,6,6,6,6,7,7,7,6,7,6,7,7,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,4,4,7,7,8,8,9,9,10,10,11,11,4,6,5,8,6,9,8,10,9,10,10,11,10,5,5,6,6,8,8,9,9,10,10,10,10,11,7,8,8,9,8,10,9,10,9,11,10,11,10,7,8,8,8,10,9,10,10,10,10,11,10,11,9,10,10,11,11,11,11,12,11,12,11,12,11,9,10,10,11,11,11,11,11,11,11,12,11,12,11,11,11,12,12,12,12,12,12,12,12,12,11,11,12,11,12,12,12,12,12,12,12,12,11,12,12,12,12,12,13,12,13,12,12,12,12,12,12,12,12,12,13,13,13,13,12,13,12,12,12,12,12,13,13,12,13,12,13,12,13,12,12,12,12,13,13,13,13,13,13,12,12,12,12,12,11,12,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,3,2,3,0,0,0,0,3,3,7,7,9,13,16,3,2,4,6,10,13,17,7,4,4,6,9,12,14,7,6,6,5,7,9,12,10,10,9,6,6,9,12,14,14,13,9,8,10,11,18,18,15,13,11,10,11,0,0,0,0,0,0,0,5,0,0,0,243,0,0,0,192,160,7,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,184,161,7,0,0,0,0,0,5,0,0,0,243,0,0,0,184,159,7,0,1,0,0,0,0,0,56,224,0,0,56,96,2,0,0,0,0,0,0,0,176,160,7,0,0,0,0,0,5,0,0,0,243,0,0,0,176,158,7,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,168,159,7,0,0,0,0,0,5,0,0,0,243,0,0,0,168,157,7,0,1,0,0,0,0,0,84,224,0,0,84,96,2,0,0,0,0,0,0,0,160,158,7,0,0,0,0,0,5,0,0,0,53,12,0,0,88,145,7,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,144,157,7,0,0,0,0,0,5,0,0,0,53,12,0,0,8,133,7,0,1,0,0,0,0,0,124,224,0,0,92,96,3,0,0,0,0,0,0,0,64,145,7,0,0,0,0,0,1,0,0,0,7,0,0,0,224,132,7,0,1,0,0,0,0,0,56,224,0,0,16,96,3,0,0,0,0,0,0,0,232,132,7,0,0,0,0,0,5,0,0,0,243,0,0,0,216,131,7,0,1,0,0,0,0,0,149,224,0,0,149,96,2,0,0,0,0,0,0,0,208,132,7,0,0,0,0,0,5,0,0,0,243,0,0,0,208,130,7,0,1,0,0,0,0,0,92,224,0,0,92,96,2,0,0,0,0,0,0,0,200,131,7,0,0,0,0,0,5,0,0,0,243,0,0,0,200,129,7,0,1,0,0,0,0,136,51,225,0,136,51,97,2,0,0,0,0,0,0,0,192,130,7,0,0,0,0,0,1,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,7,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,7,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,7,7,7,7,7,7,7,7,7,8,8,9,8,8,8,7,7,8,8,8,9,8,8,9,7,7,6,6,6,9,8,7,9,7,7,9,8,8,10,8,8,10,8,8,10,8,8,10,8,8,10,8,8,7,6,6,9,6,6,9,7,7,9,7,7,10,8,8,9,6,6,9,7,7,10,8,8,9,7,7,7,8,8,11,9,9,11,9,9,11,8,9,12,9,9,12,8,8,11,9,9,12,9,9,12,8,8,8,7,7,10,9,9,10,10,9,10,9,9,11,10,10,11,9,9,11,9,9,11,10,11,11,9,9,10,8,8,11,9,9,10,9,9,11,9,9,11,10,10,11,9,9,11,9,9,11,10,10,11,9,9,9,8,8,11,9,9,12,9,9,11,9,9,12,9,9,12,8,8,12,9,9,12,9,9,12,8,8,9,7,7,11,9,9,11,10,10,11,9,9,11,11,11,11,9,9,11,10,10,11,11,11,11,9,9,10,9,9,11,9,9,11,10,10,11,9,9,11,10,10,11,9,9,11,9,10,11,10,10,11,9,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,6,6,7,8,8,7,8,8,7,9,8,10,11,11,9,8,8,7,8,8,11,11,11,9,8,8,6,7,7,10,10,10,10,10,10,10,10,10,14,13,13,12,11,11,10,10,10,14,14,13,12,11,11,6,6,6,8,5,5,8,7,7,9,7,7,11,10,10,9,7,7,9,7,7,12,10,10,10,7,7,7,8,8,12,11,10,12,10,10,11,10,10,15,13,13,13,10,10,11,10,10,17,14,13,13,10,10,7,7,7,12,11,12,12,11,11,12,11,11,16,14,14,13,12,12,12,11,11,17,15,14,14,12,12,10,9,9,13,11,11,13,11,11,13,11,11,17,14,13,14,11,11,12,11,11,16,15,14,14,11,11,7,8,8,12,11,11,12,10,10,12,10,10,15,13,13,14,11,10,12,10,10,16,14,14,14,10,10,8,7,7,12,11,11,12,11,11,12,11,11,17,14,14,14,12,12,12,11,11,16,15,15,14,12,12,10,10,10,13,11,11,13,11,11,13,11,12,16,14,14,14,11,11,13,12,11,16,15,15,14,11,11,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,3,3,3,3,3,3,0,3,0,0,0,2,0,0,0,4,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,2,6,6,14,14,6,7,7,14,14,7,7,7,14,14,0,13,13,16,16,0,13,13,15,14,7,8,8,15,15,9,10,10,16,16,9,8,8,15,15,0,13,13,17,16,0,13,13,15,16,8,8,8,15,15,12,11,11,16,16,9,8,8,14,14,0,13,13,17,18,0,13,13,15,15,0,14,14,16,16,0,0,0,19,18,0,12,12,16,15,0,15,16,0,20,0,14,14,16,16,0,14,14,17,17,0,0,0,19,18,0,12,12,15,15,0,17,17,0,20,0,14,14,16,16,5,6,7,12,12,9,9,9,14,14,10,10,10,14,14,0,21,21,18,17,0,20,20,18,17,9,10,10,14,14,12,12,12,16,16,12,10,10,14,14,0,20,19,18,17,0,0,20,17,18,11,10,10,14,14,14,13,13,18,18,13,11,11,14,14,0,20,20,17,18,0,21,21,17,17,0,21,0,18,18,0,0,0,0,0,0,20,19,16,17,0,0,0,19,19,0,0,0,18,18,0,21,21,18,18,0,0,0,0,0,0,20,20,16,17,0,0,0,21,21,0,0,0,18,19,6,6,6,13,12,8,6,6,11,11,8,6,6,13,13,0,9,9,11,11,0,11,10,14,14,9,7,7,13,13,11,9,9,13,13,10,6,6,13,13,0,10,10,14,15,0,10,10,13,13,9,7,7,13,13,13,10,9,13,13,10,6,6,13,13,0,10,10,15,14,0,10,10,13,13,0,11,11,15,15,0,19,20,17,17,0,9,9,13,13,0,13,13,20,20,0,11,11,13,13,0,11,11,15,15,0,19,19,17,17,0,10,10,13,13,0,15,15,20,20,0,12,12,13,13,0,10,10,12,12,0,11,11,15,15,0,11,11,15,15,0,15,15,20,0,0,16,16,0,21,0,11,11,15,15,0,14,14,18,17,0,11,11,15,15,0,15,16,19,20,0,16,16,21,21,0,12,12,15,15,0,15,14,18,18,0,11,11,16,16,0,15,15,21,21,0,16,15,0,0,0,16,16,21,0,0,0,0,0,0,0,14,14,20,20,0,18,18,0,0,0,16,17,21,0,0,16,16,21,21,0,0,0,0,0,0,15,15,21,21,0,20,19,0,21,0,17,17,0,0,0,10,10,12,11,0,10,10,10,11,0,11,11,12,12,0,11,11,9,9,0,13,13,11,12,0,11,11,12,12,0,13,13,12,12,0,10,10,12,12,0,12,12,13,13,0,12,12,12,12,0,11,11,12,12,0,13,13,12,12,0,10,10,12,12,0,13,13,14,14,0,12,12,12,12,0,14,14,14,13,0,19,20,15,15,0,12,11,12,12,0,15,15,21,20,0,13,13,11,11,0,13,13,13,13,0,19,0,15,15,0,12,12,12,12,0,17,16,19,0,0,13,13,12,12,7,7,7,16,16,11,9,9,15,15,12,9,9,16,16,0,13,13,15,14,0,14,14,17,16,10,9,9,16,16,14,11,11,17,16,12,9,8,15,15,0,13,13,18,18,0,13,13,15,15,12,10,10,18,17,15,12,12,17,17,14,9,9,16,16,0,13,13,18,19,0,14,13,17,16,0,14,14,18,18,0,0,0,20,21,0,12,12,16,16,0,16,16,20,21,0,14,14,17,16,0,14,14,18,19,0,0,0,19,21,0,13,13,17,17,0,17,17,0,21,0,15,15,16,16,8,7,7,14,14,11,10,10,15,15,12,10,10,15,15,0,20,20,18,18,0,0,0,17,17,11,10,10,16,16,14,12,12,18,17,14,11,11,15,15,0,20,21,18,18,0,0,19,18,17,12,10,10,16,16,17,14,14,19,19,14,11,11,15,15,0,21,21,19,19,0,21,20,19,18,0,21,0,18,19,0,0,0,0,0,0,20,20,18,17,0,21,0,0,0,0,0,0,19,18,0,0,0,18,19,0,0,0,0,0,0,0,21,17,18,0,0,0,0,21,0,0,21,18,19,11,9,9,14,14,13,10,10,13,13,13,11,11,15,15,0,13,13,12,12,0,15,15,16,16,13,10,10,15,15,16,12,12,15,15,15,10,10,15,15,0,14,13,16,15,0,14,13,15,15,13,10,10,15,15,18,14,14,15,15,15,10,10,14,15,0,14,14,16,16,0,14,14,16,15,0,15,15,17,16,0,21,0,18,18,0,12,13,15,15,0,16,16,0,0,0,14,14,15,15,0,15,15,16,16,0,21,20,18,18,0,13,13,15,15,0,19,18,0,0,0,15,15,15,15,0,11,11,13,13,0,12,12,16,16,0,12,12,16,16,0,15,16,20,0,0,16,17,0,0,0,12,12,16,16,0,14,14,18,18,0,11,11,16,17,0,15,15,20,0,0,16,16,0,0,0,12,12,16,16,0,15,15,19,19,0,11,11,17,17,0,16,16,21,0,0,16,16,0,0,0,17,17,20,20,0,0,0,0,0,0,15,15,20,0,0,17,18,0,0,0,17,17,0,0,0,16,16,0,21,0,0,0,0,0,0,15,15,21,0,0,19,18,0,0,0,18,17,0,0,0,11,11,14,14,0,11,11,15,15,0,12,12,16,16,0,13,13,14,14,0,14,14,17,17,0,12,12,16,16,0,14,14,16,16,0,11,11,16,15,0,13,13,16,17,0,13,13,16,16,0,12,12,15,16,0,15,14,16,16,0,11,11,15,15,0,14,14,17,17,0,13,13,16,16,0,15,14,18,18,0,21,0,19,19,0,13,13,15,15,0,16,16,20,20,0,14,14,16,15,0,14,14,17,17,0,21,0,20,18,0,13,13,15,15,0,17,17,0,0,0,14,14,16,15,8,8,8,16,16,12,9,9,16,16,13,9,9,16,16,0,14,14,18,17,0,14,14,16,17,12,10,10,18,17,14,11,11,18,18,14,9,9,16,16,0,13,13,18,18,0,13,13,17,16,12,9,9,16,17,17,13,13,16,16,14,9,9,15,15,0,14,14,20,20,0,13,13,15,15,0,15,14,18,18,0,0,0,20,21,0,12,13,16,17,0,16,16,20,21,0,14,14,16,17,0,14,14,18,17,0,0,0,20,21,0,13,13,16,16,0,19,17,0,21,0,14,15,16,16,8,7,7,14,13,12,10,10,15,15,13,10,10,15,15,0,21,21,18,19,0,20,21,18,18,12,10,10,16,15,15,12,12,17,17,14,11,11,15,15,0,21,21,19,18,0,0,21,17,18,13,11,11,15,15,16,13,13,18,19,15,11,11,15,14,0,21,0,19,19,0,0,21,18,18,0,0,21,19,19,0,0,0,0,0,0,20,19,17,17,0,0,0,21,0,0,21,0,18,19,0,0,20,20,19,0,0,0,0,0,0,21,20,18,17,0,0,0,0,20,0,0,0,18,19,0,10,10,15,14,0,11,11,14,14,0,11,11,15,16,0,14,14,15,15,0,15,15,16,16,0,11,11,16,16,0,14,13,16,16,0,11,11,15,15,0,14,14,16,16,0,14,14,15,15,0,11,11,15,15,0,13,13,15,15,0,11,11,15,15,0,15,15,18,17,0,14,14,15,15,0,15,16,18,18,0,0,0,20,20,0,14,13,16,15,0,17,17,21,0,0,15,15,15,15,0,16,15,17,17,0,0,0,19,19,0,13,13,15,15,0,20,19,0,0,0,15,15,15,15,0,11,11,13,13,0,12,12,16,16,0,12,12,16,16,0,15,15,21,21,0,17,16,0,0,0,12,12,16,16,0,14,14,17,17,0,11,11,16,16,0,15,15,0,0,0,16,16,21,0,0,12,12,17,16,0,14,15,20,20,0,11,11,16,16,0,15,15,0,20,0,16,16,0,21,0,16,17,21,0,0,0,0,0,0,0,15,15,0,21,0,18,18,0,0,0,17,16,0,0,0,17,17,21,0,0,0,0,0,0,0,15,15,0,20,0,19,20,21,0,0,17,18,0,0,0,12,12,15,15,0,12,12,15,15,0,12,12,16,16,0,13,13,15,15,0,15,15,17,17,0,13,12,17,16,0,14,14,17,16,0,11,11,16,16,0,14,14,17,17,0,14,14,17,17,0,12,12,16,16,0,15,15,17,17,0,11,11,16,16,0,14,14,17,17,0,14,14,16,16,0,15,15,18,17,0,0,0,19,0,0,13,13,16,16,0,16,16,0,21,0,14,14,16,16,0,15,15,18,17,0,0,0,19,19,0,13,13,16,16,0,18,17,0,21,0,14,15,16,16,0,11,11,16,16,0,13,13,17,17,0,13,13,17,17,0,16,16,16,17,0,16,16,18,18,0,12,12,17,17,0,16,15,18,17,0,12,12,16,16,0,16,15,19,19,0,16,15,17,17,0,12,12,17,18,0,16,16,18,18,0,12,12,16,16,0,16,16,19,19,0,15,16,17,17,0,15,16,18,18,0,0,0,20,20,0,13,13,16,16,0,18,18,21,20,0,15,15,16,16,0,16,16,19,18,0,0,0,19,20,0,14,14,17,17,0,19,19,0,21,0,15,16,16,16,0,9,9,14,14,0,13,13,15,15,0,14,14,15,15,0,0,21,19,19,0,0,21,18,18,0,12,12,15,15,0,15,15,18,18,0,14,13,15,15,0,21,21,18,19,0,21,20,18,18,0,13,13,16,16,0,17,17,18,19,0,14,14,15,15,0,0,21,19,19,0,21,20,18,19,0,20,20,19,19,0,0,0,0,0,0,19,20,17,17,0,0,0,21,21,0,21,0,18,20,0,21,0,18,21,0,0,0,0,0,0,21,21,19,18,0,0,0,0,0,0,0,0,19,19,0,18,18,15,15,0,18,20,17,16,0,20,0,17,17,0,21,0,17,17,0,21,20,19,20,0,19,19,16,16,0,21,21,17,18,0,19,19,17,17,0,20,21,21,21,0,20,20,18,18,0,19,19,16,16,0,0,21,18,19,0,18,19,16,17,0,21,21,19,20,0,21,19,18,18,0,21,20,19,21,0,0,0,20,21,0,19,19,17,16,0,0,0,0,0,0,21,20,17,17,0,20,21,19,18,0,0,0,0,21,0,19,18,16,17,0,0,0,0,0,0,20,20,17,17,0,11,11,14,14,0,13,13,16,16,0,13,13,16,16,0,17,17,21,0,0,17,18,0,0,0,12,12,16,16,0,15,15,17,18,0,12,12,16,16,0,16,16,0,20,0,17,17,0,21,0,12,12,17,17,0,16,16,19,20,0,12,12,17,17,0,17,17,0,20,0,17,17,0,0,0,17,17,21,0,0,0,0,0,0,0,15,15,0,20,0,19,19,0,0,0,18,18,0,0,0,17,17,0,0,0,0,0,0,0,0,15,15,0,0,0,20,19,0,0,0,19,18,0,0,0,14,14,21,19,0,16,16,20,21,0,16,16,20,20,0,17,17,20,0,0,17,17,20,20,0,15,15,20,20,0,19,18,20,0,0,15,15,20,20,0,17,18,21,20,0,17,17,20,21,0,15,15,19,19,0,19,18,21,21,0,15,15,19,20,0,17,18,0,0,0,17,17,20,20,0,17,18,20,21,0,0,0,0,0,0,15,15,20,20,0,19,19,0,0,0,17,17,19,21,0,17,17,0,21,0,0,0,0,21,0,15,15,20,19,0,0,20,0,0,0,17,17,21,20,0,12,12,16,16,0,14,14,17,17,0,13,13,17,17,0,16,16,17,18,0,17,16,18,18,0,13,13,18,17,0,15,16,19,18,0,13,13,16,16,0,16,16,19,19,0,16,16,17,17,0,13,12,17,17,0,16,16,18,17,0,12,12,16,16,0,17,17,19,18,0,16,15,16,16,0,16,17,18,19,0,0,0,20,20,0,14,14,17,16,0,18,18,21,0,0,16,16,16,16,0,16,16,18,17,0,0,21,21,21,0,14,14,16,16,0,21,20,21,0,0,16,16,16,16,0,10,10,14,14,0,14,14,15,16,0,14,14,15,15,0,0,21,18,18,0,0,21,18,19,0,13,13,16,16,0,16,16,18,17,0,14,14,15,15,0,20,0,18,18,0,21,0,18,17,0,13,13,16,15,0,17,17,19,19,0,14,14,15,15,0,20,20,18,19,0,0,0,18,17,0,0,21,18,18,0,0,0,0,0,0,20,21,18,17,0,0,0,0,0,0,0,0,19,19,0,0,21,18,18,0,0,0,0,0,0,21,0,18,17,0,0,0,0,21,0,0,0,19,20,0,19,19,16,16,0,0,21,18,17,0,21,0,18,18,0,20,0,19,18,0,21,20,19,19,0,21,19,17,18,0,0,21,19,19,0,21,19,18,18,0,21,0,20,18,0,0,21,18,18,0,20,21,17,17,0,21,0,18,18,0,21,19,17,17,0,21,0,0,20,0,0,20,17,18,0,0,0,19,20,0,0,0,20,19,0,19,21,17,18,0,21,0,0,0,0,21,21,18,17,0,0,21,18,18,0,0,0,0,21,0,20,19,16,17,0,0,0,0,0,0,21,20,17,17,0,11,11,13,13,0,13,13,16,16,0,13,13,16,16,0,17,17,0,21,0,18,19,21,0,0,12,12,16,16,0,15,15,19,18,0,13,13,16,16,0,16,17,21,19,0,17,17,21,21,0,13,13,16,16,0,16,16,20,18,0,13,13,16,16,0,17,17,0,0,0,18,18,0,0,0,18,17,0,20,0,0,0,0,0,0,15,15,21,21,0,19,18,0,0,0,17,17,21,21,0,17,17,0,0,0,0,0,0,0,0,15,15,20,21,0,20,20,0,0,0,19,19,0,0,0,14,15,21,19,0,16,16,0,21,0,17,16,21,21,0,17,18,21,20,0,18,18,0,21,0,16,16,0,20,0,19,19,0,0,0,16,15,0,20,0,18,18,0,0,0,17,17,0,21,0,16,16,20,20,0,20,19,0,0,0,15,16,21,22,0,18,18,0,0,0,18,17,0,0,0,18,18,0,0,0,0,0,0,0,0,16,16,21,20,0,19,20,0,0,0,18,17,21,0,0,17,18,0,0,0,0,0,0,0,0,16,16,0,20,0,0,20,0,0,0,18,18,22,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,3,4,7,7,10,12,12,12,12,10,11,11,13,13,11,12,12,11,11,12,12,12,12,12,11,13,13,13,13,12,12,12,13,14,12,13,13,13,13,12,13,13,13,13,12,13,13,13,13,11,13,13,13,13,12,12,12,14,14,12,13,13,12,12,12,12,13,13,13,12,13,13,13,13,12,13,13,13,13,12,12,12,14,14,12,13,13,12,12,12,13,13,13,13,12,13,13,12,12,12,13,13,13,13,12,12,12,14,14,12,13,13,12,12,12,13,13,13,13,12,13,13,12,12,10,10,11,10,10,11,11,11,11,11,11,9,9,10,10,12,11,11,10,10,12,10,10,10,10,13,12,12,12,12,13,11,11,11,11,13,12,12,12,12,13,11,11,11,11,13,12,12,12,12,13,12,12,12,12,13,11,11,11,11,13,12,12,12,12,13,11,11,11,11,13,12,12,11,11,13,12,12,11,11,13,11,11,11,11,13,12,12,11,11,13,11,11,11,11,13,12,12,11,11,13,12,12,11,11,13,11,11,11,11,13,12,12,11,11,13,11,11,11,11,13,12,12,11,11,11,11,11,10,10,11,11,11,9,9,11,12,12,11,11,12,12,12,9,9,13,13,13,10,10,13,13,13,11,11,13,13,13,14,14,13,13,13,11,10,13,13,14,12,12,13,13,13,11,11,13,13,13,11,11,13,13,13,14,14,13,13,13,10,10,13,13,13,11,11,13,13,13,10,10,13,14,13,11,11,13,14,14,14,14,13,13,13,10,10,13,14,14,11,11,13,13,13,10,10,13,14,14,11,11,13,13,13,14,14,14,13,13,10,10,13,14,14,11,11,13,13,13,10,10,14,12,12,9,9,14,12,12,9,9,14,11,11,9,9,14,12,12,8,8,14,11,11,7,7,15,13,13,10,10,15,12,12,10,10,15,13,13,10,10,15,12,12,10,10,15,13,13,10,10,15,13,13,10,10,15,12,12,10,10,15,13,13,10,10,15,12,12,10,10,15,13,13,10,10,15,13,13,10,10,15,12,12,10,10,15,13,13,9,9,15,12,12,9,9,14,13,13,9,9,15,13,13,10,10,15,12,12,10,10,15,13,13,9,9,15,12,12,9,9,15,13,13,9,9,13,12,12,9,9,13,13,13,8,8,13,13,13,9,9,13,13,13,7,7,14,13,13,8,8,14,14,14,10,10,15,14,14,11,11,14,14,14,9,9,15,14,14,10,10,15,14,14,9,9,14,14,14,10,10,15,14,14,11,11,15,14,14,9,9,14,14,14,10,10,14,14,14,9,9,15,14,15,10,10,15,14,14,11,11,14,14,14,9,9,14,14,14,9,9,14,14,14,8,8,15,14,14,10,10,15,14,14,11,11,14,14,14,9,9,15,14,14,9,9,14,14,14,8,8,12,12,12,13,13,16,16,16,11,11,17,16,16,12,12,17,16,16,11,11,17,16,16,11,11,17,17,16,13,13,17,16,16,13,13,18,17,16,12,12,17,16,16,13,13,17,16,17,12,12,18,17,17,13,13,17,16,16,14,14,18,17,17,12,12,18,16,16,13,13,17,17,17,13,12,17,17,17,13,13,17,16,16,13,13,18,17,17,12,12,17,16,16,13,12,17,17,17,12,12,18,17,17,13,13,18,16,16,14,14,18,17,17,12,12,17,17,17,13,13,18,17,18,12,12,13,14,14,10,10,16,14,14,13,13,17,15,15,14,14,17,14,14,12,13,16,14,14,13,13,17,15,15,14,14,16,16,16,15,15,17,15,15,14,14,17,16,16,14,15,17,15,15,14,14,17,15,16,14,14,17,16,16,15,15,17,15,15,13,13,17,15,15,14,14,18,15,15,13,14,17,15,15,14,14,16,16,16,15,15,17,15,15,13,13,17,15,15,14,14,17,15,15,13,13,17,15,15,14,14,16,16,16,15,15,17,15,15,13,13,17,15,15,14,14,18,15,15,13,13,13,11,11,10,10,16,14,14,13,12,16,14,14,13,13,16,15,14,12,12,16,14,14,12,12,16,15,15,14,14,16,14,14,14,14,17,15,15,13,13,16,15,15,14,14,17,15,15,13,14,17,15,15,14,14,17,15,14,14,14,17,15,15,13,13,17,15,15,14,14,17,15,15,13,13,17,15,15,14,14,17,14,14,14,14,17,15,15,13,13,17,15,15,13,13,17,15,15,13,13,17,15,15,14,14,17,15,15,14,14,17,15,15,13,13,17,15,15,13,13,17,15,15,13,13,14,14,15,8,8,14,14,14,19,19,14,15,15,18,19,14,14,14,19,18,14,14,14,19,19,15,15,15,19,18,15,16,16,19,19,15,15,15,19,19,15,16,16,20,19,15,15,15,19,19,15,15,15,19,19,16,16,16,20,19,15,15,15,19,18,15,16,16,20,19,15,15,15,18,18,15,15,15,19,20,15,16,16,19,19,15,15,15,20,19,15,15,15,20,19,15,15,15,19,18,15,15,15,19,19,15,16,16,19,20,15,15,15,19,19,15,15,15,19,20,15,15,15,19,19,14,12,12,9,9,14,14,14,19,19,14,14,14,19,19,14,14,15,20,19,15,14,14,18,19,15,15,15,19,19,15,15,14,20,19,15,15,15,20,19,15,15,14,20,19,15,15,15,20,19,15,15,15,19,20,15,14,14,19,20,15,15,15,20,20,15,14,14,20,19,15,15,15,19,19,15,15,15,19,19,15,14,14,19,19,15,15,15,19,20,15,15,15,20,20,15,15,15,19,19,15,15,15,20,19,16,14,14,19,19,15,15,15,20,19,15,14,15,20,19,14,15,15,20,19,12,12,12,13,13,16,16,16,11,11,16,16,16,12,12,17,16,16,11,11,17,15,16,11,11,17,17,17,13,13,18,16,17,13,13,18,17,17,13,12,17,16,17,13,13,17,17,17,13,13,16,16,16,12,12,17,16,16,13,13,17,16,16,12,12,17,16,16,12,13,17,17,17,12,12,17,17,17,13,13,18,16,16,13,13,18,17,17,12,12,18,17,17,12,12,17,17,17,12,12,17,17,17,12,12,17,16,16,13,13,17,17,17,12,12,17,16,16,12,12,17,17,17,12,12,13,14,14,9,9,16,14,14,13,13,16,15,15,14,14,17,14,14,13,13,16,14,14,13,13,17,15,15,15,15,16,16,16,15,15,17,15,15,14,14,17,15,15,15,15,17,15,15,14,14,17,15,15,14,14,16,16,16,15,15,17,15,15,14,14,17,15,15,14,14,17,15,15,14,14,17,15,15,14,14,16,16,16,15,15,18,15,15,14,13,17,15,15,14,14,17,15,15,13,13,17,15,15,14,14,16,16,16,15,15,17,15,15,14,13,17,15,15,14,14,17,15,15,13,13,13,11,11,11,11,16,14,14,12,12,16,14,14,13,13,16,15,14,12,12,17,14,14,12,12,17,15,15,13,13,17,14,14,14,14,17,15,15,13,13,17,14,15,14,13,17,15,15,13,13,16,15,15,13,13,16,14,14,14,14,17,15,15,13,13,16,14,14,13,13,16,15,15,13,13,17,15,15,13,13,17,14,14,14,14,17,15,15,12,12,17,15,15,13,13,17,15,15,12,12,16,15,15,13,13,17,14,14,13,14,17,15,15,12,12,17,14,14,13,13,17,15,15,12,12,14,14,14,8,8,14,14,14,18,18,14,15,15,19,19,14,14,14,19,19,14,15,14,18,19,15,15,15,18,19,15,16,16,20,20,15,15,15,19,20,15,16,16,19,20,15,15,15,19,20,15,15,16,19,19,15,16,16,20,20,15,15,15,20,19,15,16,16,20,19,15,15,15,19,20,15,15,15,19,19,15,16,16,20,19,15,15,15,19,19,15,16,15,20,19,15,15,15,19,19,15,15,15,19,20,15,16,16,20,20,15,15,15,19,19,15,15,15,20,20,15,15,15,19,19,14,12,12,9,9,14,14,14,18,18,14,14,14,19,20,14,14,14,18,18,14,14,14,18,19,15,15,15,19,20,15,14,14,19,19,15,15,15,19,19,15,14,15,19,19,15,15,15,18,20,15,15,15,19,19,15,14,14,19,19,15,15,15,20,19,15,15,14,20,20,15,15,15,19,19,15,15,15,19,19,15,14,14,19,19,15,15,15,19,19,15,14,14,19,20,14,15,15,19,19,15,15,15,19,19,15,14,14,20,19,15,15,15,19,19,15,14,14,20,19,15,15,15,19,19,13,12,12,13,13,17,17,16,11,11,16,16,16,12,12,17,17,16,11,11,17,16,16,11,11,17,17,17,13,13,17,16,16,13,13,18,17,17,12,12,17,16,16,13,13,18,17,17,12,12,18,17,17,13,13,18,16,17,13,13,17,17,17,12,12,18,17,17,13,13,18,17,17,12,12,17,16,17,12,12,17,16,16,13,13,17,16,16,11,11,17,16,16,12,12,17,17,17,11,11,17,17,17,12,12,18,16,16,13,13,18,17,17,12,11,17,16,16,12,12,18,17,17,11,11,13,14,14,9,9,16,14,14,13,13,16,15,15,14,14,17,14,14,12,12,16,14,14,13,13,17,15,15,14,14,17,16,16,15,16,18,15,15,14,14,17,15,15,14,14,17,15,15,14,14,18,15,15,14,14,16,16,16,15,16,18,15,15,14,14,17,16,15,14,14,18,15,15,14,14,17,15,15,14,14,17,16,16,15,15,18,14,15,13,13,17,15,15,14,14,18,15,15,13,13,17,15,15,14,14,17,16,15,15,15,17,15,15,13,13,17,15,15,14,14,18,15,15,13,13,13,11,11,10,10,16,14,14,12,12,16,14,14,12,12,17,14,15,11,11,17,14,14,11,11,17,15,15,13,13,17,14,14,14,13,17,15,15,13,13,16,15,15,13,13,17,15,15,13,13,17,15,15,13,13,17,14,14,14,14,17,15,15,13,13,17,14,15,13,13,16,15,15,13,13,17,15,15,13,13,17,14,14,13,13,17,15,15,12,12,16,14,14,12,12,17,15,15,12,12,17,15,15,13,13,17,14,14,13,13,17,15,15,12,12,17,14,14,12,12,17,15,15,12,12,13,15,14,8,8,14,14,14,19,19,14,15,15,18,19,14,14,14,18,19,14,15,14,19,19,15,16,15,19,19,15,16,16,19,20,15,15,15,19,19,15,16,16,19,19,15,16,16,19,19,15,15,15,19,19,15,16,16,20,20,15,15,15,19,19,15,15,15,19,19,15,15,15,19,19,15,15,15,19,19,15,16,16,20,19,15,15,15,19,19,15,15,15,19,19,15,15,15,19,19,15,16,15,19,19,15,16,16,21,19,15,15,15,20,20,15,15,15,20,21,15,15,15,19,20,14,12,12,8,8,14,14,14,19,19,14,13,13,19,19,14,14,14,19,19,14,13,14,19,19,15,15,15,20,20,15,14,14,20,19,15,15,15,19,20,15,14,14,19,20,15,15,15,20,19,15,15,15,19,20,15,14,14,20,20,15,15,15,20,19,15,14,14,19,19,15,15,15,19,19,15,15,15,20,19,15,14,14,21,19,15,15,15,20,21,15,14,14,21,19,15,15,15,19,19,15,15,15,20,20,15,14,14,19,21,15,15,15,19,19,15,14,14,19,20,15,15,15,19,19,13,12,12,13,13,17,16,16,11,11,17,16,15,12,12,18,16,16,11,11,17,16,16,11,11,18,17,17,13,13,18,16,16,13,13,17,17,17,12,13,18,17,16,13,13,18,17,17,13,13,17,17,17,13,13,17,16,16,13,13,18,16,17,12,12,17,16,16,13,12,17,17,17,12,12,18,17,17,13,12,18,16,16,13,13,18,17,17,12,12,17,16,16,12,12,17,17,17,11,11,17,16,16,12,12,17,16,16,13,13,17,16,16,11,11,17,16,16,12,12,17,17,17,11,11,13,14,14,9,9,16,14,14,13,13,16,15,15,14,14,17,14,14,12,12,16,14,14,13,13,17,15,15,14,14,17,15,16,15,15,17,15,15,14,14,17,15,16,14,15,18,15,15,14,14,17,15,15,14,14,16,16,16,15,15,18,15,15,13,14,17,15,15,14,14,18,15,15,14,14,17,15,15,14,14,17,16,16,15,15,17,15,15,13,13,17,15,15,14,14,18,15,15,13,13,17,15,15,14,14,17,16,16,15,15,17,15,15,13,13,17,15,15,14,14,18,15,15,13,13,13,11,11,10,10,16,14,14,12,12,16,14,14,13,13,17,14,14,11,11,17,14,14,12,12,17,15,15,14,14,17,14,14,14,14,17,15,15,13,13,17,15,14,13,13,16,15,15,13,13,16,15,15,13,13,17,14,14,14,14,17,15,15,13,13,17,14,14,13,13,16,15,15,13,13,16,15,15,13,13,17,14,14,13,13,17,15,15,12,12,17,14,14,12,12,16,15,15,12,12,17,15,15,13,13,17,14,14,13,13,17,15,15,12,12,17,14,14,12,12,16,15,15,12,12,14,14,14,8,8,14,14,14,18,18,14,15,15,19,18,14,14,14,18,18,14,14,14,18,19,15,16,15,19,19,15,17,16,20,20,15,15,15,19,19,15,16,16,19,19,15,15,15,19,19,15,16,15,18,19,15,16,16,20,20,15,15,15,19,19,15,16,16,19,20,15,15,15,19,19,15,15,16,19,19,15,16,16,20,20,15,15,15,19,19,15,15,15,19,20,15,15,15,19,19,15,15,15,19,19,15,16,16,20,20,15,15,15,19,20,15,16,16,20,20,15,15,15,19,19,13,12,12,8,8,14,14,14,19,20,14,14,14,19,19,14,14,14,18,19,14,14,14,19,20,15,15,15,19,20,15,14,14,21,20,15,15,15,20,20,15,15,14,19,19,15,15,15,19,19,15,15,15,19,19,15,14,14,19,20,15,15,15,19,20,15,14,14,19,19,15,15,15,19,19,15,15,15,19,19,16,14,14,19,19,15,15,15,20,20,15,14,14,21,19,15,15,15,19,19,15,15,15,19,20,16,14,14,19,20,15,15,15,19,19,15,14,14,19,19,15,15,15,20,19,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,6,6,6,7,7,7,8,8,7,8,8,10,11,11,9,8,8,7,9,9,11,12,12,9,8,8,6,7,7,9,11,11,10,11,11,10,11,11,13,13,13,11,12,12,10,11,11,13,14,14,12,12,12,6,6,6,8,6,6,8,6,6,9,7,7,12,10,10,10,6,6,9,7,7,12,10,10,11,7,6,7,8,8,12,10,10,12,10,10,11,10,10,15,13,13,13,10,10,12,11,11,15,13,13,14,11,11,8,7,7,12,11,11,12,11,11,11,11,11,14,14,14,13,12,12,12,11,11,16,15,15,14,12,12,0,10,10,0,11,11,0,12,12,0,11,11,0,14,14,0,11,11,0,11,11,0,15,15,0,11,11,7,8,8,13,10,10,12,10,10,12,11,11,15,13,13,14,11,11,12,10,10,16,14,14,14,10,10,8,7,7,12,11,11,13,11,11,12,11,11,15,14,14,14,12,12,13,12,12,15,14,14,15,12,12,0,11,11,0,12,12,0,12,12,0,12,12,0,15,15,0,12,12,0,12,12,0,15,14,0,12,12,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,3,3,0,8,8,0,8,8,0,10,10,0,9,9,0,10,10,0,10,10,0,9,9,0,10,10,0,7,7,0,7,7,0,7,7,0,8,8,0,8,8,0,8,8,0,9,9,0,8,8,0,8,8,0,7,7,0,8,8,0,8,8,0,10,10,0,9,9,0,9,9,0,10,10,0,9,9,0,10,10,0,8,8,0,11,11,0,11,11,0,12,12,0,11,11,0,12,12,0,12,12,0,12,12,0,12,12,0,8,8,0,11,11,0,11,11,0,13,12,0,12,12,0,13,12,0,13,13,0,12,12,0,13,13,0,7,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,0,11,11,0,11,11,0,13,12,0,12,12,0,12,12,0,12,12,0,11,11,0,12,12,0,8,8,0,12,12,0,12,12,0,13,13,0,12,12,0,13,13,0,13,13,0,12,13,0,13,13,0,7,7,0,0,0,0,0,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,2,0,0,0,0,0,0,0,1,4,4,0,7,7,0,8,8,0,9,9,0,12,12,0,8,8,0,9,9,0,12,12,0,8,8,0,6,6,0,11,11,0,11,11,0,12,12,0,14,14,0,11,11,0,12,12,0,14,14,0,11,11,0,6,6,0,6,5,0,7,6,0,7,7,0,10,10,0,6,6,0,7,7,0,10,10,0,7,7,0,7,7,0,10,10,0,11,11,0,11,11,0,14,14,0,10,10,0,12,12,0,14,14,0,12,12,0,6,6,0,11,11,0,11,11,0,12,12,0,14,14,0,11,11,0,12,12,0,15,15,0,11,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,0,0,0,8,8,0,11,11,0,11,11,0,12,12,0,15,15,0,12,12,0,11,11,0,15,15,0,11,11,0,6,6,0,11,11,0,12,12,0,12,12,0,15,15,0,11,11,0,12,12,0,14,14,0,12,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,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,2,2], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+489700); +/* memory initializer */ allocate([1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,5,7,8,10,13,14,4,2,4,6,8,11,12,7,4,3,5,8,12,14,8,5,4,4,8,12,12,9,7,7,7,9,10,11,13,11,11,9,7,8,10,13,11,10,6,5,7,9,0,0,0,0,0,0,0,2,0,0,0,49,0,0,0,224,200,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,167,7,0,0,0,0,0,0,0,0,0,120,167,7,0,160,167,7,0,0,0,0,0,0,0,0,0,200,167,7,0,240,167,7,0,0,0,0,0,0,0,0,0,24,168,7,0,64,168,7,0,0,0,0,0,0,0,0,0,104,168,7,0,144,168,7,0,64,168,7,0,0,0,0,0,184,168,7,0,112,164,7,0,152,164,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,49,0,0,0,24,167,7,0,0,0,0,0,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,0,4,0,0,0,16,167,7,0,0,0,0,0,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,163,7,0,32,164,7,0,0,0,0,0,0,0,0,0,72,164,7,0,112,164,7,0,152,164,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,169,0,0,0,40,166,7,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,216,166,7,0,0,0,0,0,2,0,0,0,25,0,0,0,240,165,7,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,16,166,7,0,0,0,0,0,2,0,0,0,9,0,0,0,208,165,7,0,1,0,0,0,0,136,51,225,0,136,51,97,2,0,0,0,0,0,0,0,224,165,7,0,0,0,0,0,1,0,0,0,25,0,0,0,72,165,7,0,1,0,0,0,0,192,18,225,0,0,153,96,5,0,0,0,0,0,0,0,104,165,7,0,0,0,0,0,1,0,0,0,25,0,0,0,192,164,7,0,1,0,0,0,0,0,120,224,0,0,16,96,5,0,0,0,0,0,0,0,224,164,7,0,0,0,0,0,3,4,4,5,4,5,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,13,0,0,0,10,0,0,0,14,0,0,0,9,0,0,0,15,0,0,0,8,0,0,0,16,0,0,0,7,0,0,0,17,0,0,0,6,0,0,0,18,0,0,0,5,0,0,0,19,0,0,0,4,0,0,0,20,0,0,0,3,0,0,0,21,0,0,0,2,0,0,0,22,0,0,0,1,0,0,0,23,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,1,3,2,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,12,14,14,14,15,15,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,13,0,0,0,10,0,0,0,14,0,0,0,9,0,0,0,15,0,0,0,8,0,0,0,16,0,0,0,7,0,0,0,17,0,0,0,6,0,0,0,18,0,0,0,5,0,0,0,19,0,0,0,4,0,0,0,20,0,0,0,3,0,0,0,21,0,0,0,2,0,0,0,22,0,0,0,1,0,0,0,23,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,1,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,4,6,6,5,5,5,7,5,5,5,5,6,7,7,6,7,7,7,6,7,7,7,7,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,3,4,7,7,8,8,9,9,9,10,10,10,5,6,5,8,7,9,8,9,9,10,9,11,10,5,5,7,7,8,8,9,9,9,9,10,10,11,8,9,8,10,9,10,9,10,9,11,10,11,10,8,8,9,9,10,9,10,9,11,10,11,10,11,10,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,12,11,11,11,11,11,11,10,12,12,12,12,12,12,12,11,12,12,12,11,11,11,12,12,12,12,12,12,12,11,12,11,12,11,11,13,12,12,12,13,12,12,12,12,11,12,11,11,13,13,13,12,12,12,12,12,12,11,11,11,10,13,13,13,12,13,12,13,11,13,10,12,11,11,13,13,12,13,12,12,12,12,11,12,11,11,11,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,3,2,3,0,0,0,0,2,3,6,7,10,14,16,3,2,5,7,11,14,17,6,5,5,7,10,12,14,7,7,6,6,7,9,13,10,11,9,6,6,9,11,15,15,13,10,9,10,12,18,18,16,14,12,13,16,0,0,0,0,0,0,0,5,0,0,0,243,0,0,0,216,199,7,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,208,200,7,0,0,0,0,0,5,0,0,0,243,0,0,0,208,198,7,0,1,0,0,0,0,0,56,224,0,0,56,96,2,0,0,0,0,0,0,0,200,199,7,0,0,0,0,0,5,0,0,0,243,0,0,0,200,197,7,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,192,198,7,0,0,0,0,0,5,0,0,0,243,0,0,0,192,196,7,0,1,0,0,0,0,0,84,224,0,0,84,96,2,0,0,0,0,0,0,0,184,197,7,0,0,0,0,0,5,0,0,0,53,12,0,0,112,184,7,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,168,196,7,0,0,0,0,0,5,0,0,0,53,12,0,0,32,172,7,0,1,0,0,0,0,0,124,224,0,0,92,96,3,0,0,0,0,0,0,0,88,184,7,0,0,0,0,0,1,0,0,0,7,0,0,0,248,171,7,0,1,0,0,0,0,0,56,224,0,0,16,96,3,0,0,0,0,0,0,0,0,172,7,0,0,0,0,0,5,0,0,0,243,0,0,0,240,170,7,0,1,0,0,0,0,0,149,224,0,0,149,96,2,0,0,0,0,0,0,0,232,171,7,0,0,0,0,0,5,0,0,0,243,0,0,0,232,169,7,0,1,0,0,0,0,0,92,224,0,0,92,96,2,0,0,0,0,0,0,0,224,170,7,0,0,0,0,0,5,0,0,0,243,0,0,0,224,168,7,0,1,0,0,0,0,136,51,225,0,136,51,97,2,0,0,0,0,0,0,0,216,169,7,0,0,0,0,0,1,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,7,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,7,7,7,8,8,7,7,7,7,8,8,8,8,9,8,7,7,8,8,8,9,9,9,9,7,7,6,6,6,9,7,7,9,7,7,9,8,8,10,8,8,10,8,8,10,8,8,10,8,8,10,8,8,7,6,6,9,6,6,9,6,6,9,7,7,10,8,8,9,6,6,9,7,7,10,8,8,9,7,7,7,8,8,11,9,9,11,9,9,11,9,9,12,9,9,12,8,8,12,9,9,12,10,9,12,8,8,8,7,7,10,9,9,11,9,9,11,9,9,11,11,10,11,9,9,11,10,9,11,10,11,11,9,9,10,8,8,11,9,9,11,9,9,11,9,9,11,10,10,11,9,9,11,9,9,11,10,10,11,9,9,9,8,8,12,9,9,12,9,9,11,9,9,12,9,9,12,8,8,12,9,9,12,9,9,12,8,8,9,7,7,11,9,10,11,10,9,11,9,9,11,11,11,11,9,9,11,10,10,11,11,11,11,9,9,10,9,9,11,9,9,11,10,10,11,10,9,11,10,10,11,9,9,11,10,10,11,10,11,11,9,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,6,6,6,8,8,7,8,8,7,9,8,10,11,11,9,8,8,7,8,8,11,11,11,9,8,8,6,7,7,10,10,10,10,10,10,10,10,10,14,13,13,12,11,11,10,10,10,14,14,13,13,11,11,6,6,6,8,5,5,8,7,7,8,7,7,11,9,9,9,7,7,8,7,7,12,10,10,10,7,7,7,8,8,12,11,11,12,10,10,11,10,10,14,13,13,13,10,10,11,10,11,16,14,14,13,10,10,7,8,7,12,12,12,12,11,11,12,11,11,16,14,15,13,12,12,11,11,11,17,15,14,14,13,13,10,9,9,13,11,11,13,11,11,12,11,11,16,14,13,14,11,11,12,11,11,16,15,14,14,11,11,7,8,8,12,11,11,12,10,10,12,10,10,16,14,13,13,11,11,12,10,10,16,14,14,13,10,10,8,8,8,12,12,12,12,11,11,12,11,11,16,14,15,14,12,12,12,11,11,16,15,15,14,12,12,10,10,10,13,11,11,13,11,11,12,12,12,16,14,14,14,11,11,12,11,11,17,14,15,14,11,11,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,3,3,3,3,3,3,0,3,0,0,0,2,0,0,0,4,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,2,6,6,14,14,6,8,8,14,14,7,7,7,14,14,0,13,13,15,16,0,13,13,15,15,7,8,8,15,15,9,10,10,16,16,9,8,8,14,15,0,13,13,17,17,0,13,13,16,16,8,8,8,15,15,12,11,11,16,16,9,8,8,14,14,0,13,13,17,17,0,13,13,15,15,0,14,14,16,16,0,0,0,18,19,0,12,12,16,15,0,16,16,0,20,0,14,14,16,16,0,14,14,17,17,0,0,0,19,19,0,12,12,15,15,0,18,17,21,21,0,14,14,16,16,5,7,7,12,13,9,10,9,14,14,11,10,10,14,14,0,0,0,18,17,0,20,21,18,18,9,10,10,14,14,12,12,12,17,16,12,10,10,14,14,0,20,20,18,17,0,21,21,17,17,11,10,10,14,14,15,13,13,18,18,13,11,11,14,14,0,20,0,18,18,0,20,21,18,17,0,21,0,18,19,0,0,0,0,21,0,21,20,16,17,0,0,0,21,21,0,0,0,20,18,0,20,0,17,18,0,0,0,0,0,0,0,20,16,17,0,0,0,20,0,0,0,0,18,18,6,6,6,13,13,8,5,5,11,11,9,6,6,13,13,0,9,9,12,12,0,10,10,14,14,9,7,7,13,13,12,9,9,13,13,10,6,6,13,13,0,10,10,14,14,0,10,10,13,13,9,7,7,13,13,13,10,10,13,13,11,6,6,13,13,0,10,10,15,15,0,10,10,13,13,0,12,11,15,15,0,20,19,17,16,0,9,9,13,13,0,13,13,20,19,0,11,11,13,13,0,11,11,15,15,0,20,19,17,17,0,10,10,13,13,0,14,15,0,21,0,12,12,13,13,0,10,10,12,12,0,11,11,15,15,0,11,11,15,15,0,15,15,20,20,0,16,16,0,0,0,11,11,15,15,0,14,14,17,17,0,11,11,15,15,0,15,15,20,21,0,16,16,21,21,0,12,12,15,15,0,15,15,18,20,0,11,11,16,15,0,15,15,21,21,0,16,16,0,21,0,16,16,0,0,0,0,0,0,0,0,14,14,21,21,0,17,18,0,0,0,16,17,20,0,0,16,16,0,0,0,0,0,0,0,0,15,15,20,20,0,19,18,0,21,0,18,17,0,0,0,10,10,11,11,0,10,10,10,10,0,11,11,12,12,0,11,11,9,9,0,13,13,12,12,0,11,11,12,12,0,13,13,12,12,0,10,10,12,12,0,12,12,13,13,0,12,12,12,12,0,11,11,12,12,0,13,13,12,12,0,10,10,12,12,0,13,13,13,13,0,12,12,12,12,0,14,13,13,13,0,19,21,15,15,0,12,11,12,12,0,16,15,19,19,0,13,13,11,11,0,13,13,13,13,0,0,21,15,16,0,12,12,12,12,0,16,16,19,21,0,13,13,12,12,7,7,7,16,16,11,9,9,16,16,12,9,9,16,16,0,13,13,16,16,0,14,14,17,16,11,9,9,16,16,14,12,11,17,17,13,8,9,15,15,0,13,13,19,19,0,13,13,16,15,12,10,10,17,17,15,12,12,19,18,14,9,9,17,16,0,14,14,18,0,0,14,13,16,16,0,14,15,18,17,0,21,0,19,21,0,12,12,16,16,0,16,16,0,0,0,14,14,16,16,0,14,14,18,18,0,0,21,20,0,0,13,13,16,17,0,18,18,0,0,0,15,14,17,16,8,7,7,14,14,11,10,10,15,15,13,10,10,15,15,0,21,20,19,19,0,21,0,17,18,11,10,10,15,16,14,12,12,18,18,14,11,11,15,14,0,21,20,18,19,0,0,21,18,18,12,11,11,16,16,16,14,14,18,20,14,11,11,16,15,0,20,20,19,19,0,0,20,18,18,0,21,0,18,19,0,0,0,0,0,0,20,20,17,18,0,0,0,20,20,0,0,0,19,19,0,0,0,20,18,0,0,0,0,0,0,0,21,18,18,0,21,21,0,21,0,0,0,19,20,11,9,9,14,14,13,10,10,14,14,13,11,11,15,15,0,13,13,13,13,0,14,14,16,16,13,11,11,15,15,16,12,12,15,15,14,10,10,14,14,0,14,14,16,16,0,14,14,15,15,13,10,10,15,15,17,13,14,15,16,15,10,10,15,15,0,14,14,17,16,0,14,14,15,15,0,15,15,17,17,0,0,21,18,18,0,13,13,15,15,0,16,16,21,20,0,14,14,15,14,0,15,14,16,17,0,0,20,20,19,0,13,13,15,15,0,19,18,0,0,0,15,15,15,15,0,11,11,14,14,0,12,12,16,16,0,12,12,16,16,0,15,16,21,21,0,16,17,21,0,0,12,12,17,16,0,14,14,18,19,0,11,11,16,16,0,15,15,20,21,0,16,16,21,0,0,12,12,17,16,0,15,15,19,19,0,12,12,16,17,0,16,15,0,0,0,16,16,0,0,0,17,17,0,21,0,0,0,0,0,0,14,15,20,0,0,17,17,0,0,0,17,17,0,0,0,17,16,0,0,0,0,0,0,0,0,15,15,0,0,0,18,18,0,0,0,18,17,0,0,0,11,11,14,14,0,12,12,15,15,0,12,12,15,15,0,13,13,14,14,0,14,14,17,17,0,12,12,16,16,0,14,14,16,16,0,11,11,15,15,0,13,13,16,17,0,13,13,16,16,0,12,12,15,15,0,14,14,17,16,0,11,11,15,15,0,14,14,17,17,0,13,13,16,16,0,15,15,17,18,0,21,20,20,21,0,12,12,15,15,0,16,16,20,21,0,14,14,15,15,0,14,14,17,17,0,0,0,18,19,0,12,13,15,15,0,18,17,21,0,0,14,15,15,15,8,8,8,16,16,12,10,10,16,16,13,9,9,16,16,0,14,14,18,17,0,14,14,16,17,12,10,10,18,17,14,12,11,18,18,14,9,9,16,16,0,13,13,18,18,0,13,13,17,16,12,9,9,16,17,17,13,13,17,17,14,9,9,15,15,0,14,14,20,19,0,13,13,16,16,0,15,15,19,18,0,0,0,20,19,0,12,13,17,17,0,16,16,20,0,0,14,14,16,17,0,14,14,19,18,0,0,0,20,20,0,13,13,16,16,0,18,17,0,0,0,15,15,16,16,9,7,7,14,14,12,10,10,15,15,13,10,10,15,15,0,21,0,18,19,0,20,21,19,18,12,10,10,16,15,15,13,13,18,18,14,11,11,15,15,0,0,0,19,18,0,0,21,18,18,13,11,11,15,15,16,14,14,17,19,15,11,11,15,15,0,21,21,20,18,0,0,21,18,18,0,0,21,21,19,0,0,0,0,0,0,19,20,18,17,0,0,0,21,21,0,21,0,20,18,0,0,21,19,19,0,0,0,0,0,0,20,21,17,17,0,0,0,0,0,0,21,0,18,20,0,10,10,14,14,0,11,11,15,15,0,11,11,15,15,0,14,14,15,15,0,15,15,16,16,0,11,12,16,16,0,13,13,16,16,0,11,11,15,15,0,14,14,17,17,0,14,14,15,15,0,11,11,16,15,0,14,14,15,15,0,11,11,15,15,0,15,15,17,17,0,14,14,15,15,0,16,16,18,18,0,0,0,20,19,0,14,13,16,15,0,17,17,21,0,0,15,15,15,15,0,16,15,17,16,0,20,0,20,18,0,13,14,15,15,0,19,18,0,21,0,15,15,15,15,0,11,11,14,14,0,12,12,16,16,0,12,12,16,16,0,16,15,20,21,0,17,16,0,0,0,12,12,16,16,0,14,14,18,18,0,11,11,16,16,0,15,15,21,20,0,16,16,0,0,0,12,12,16,17,0,15,14,19,19,0,11,12,16,16,0,15,15,21,0,0,16,16,0,0,0,16,17,0,0,0,0,0,0,0,0,15,15,21,0,0,17,17,0,0,0,17,17,0,0,0,17,16,0,0,0,0,0,0,0,0,15,15,0,20,0,19,20,0,0,0,17,17,0,0,0,12,12,15,15,0,12,12,15,15,0,12,12,16,16,0,13,13,15,15,0,15,15,17,17,0,13,13,17,16,0,14,14,17,17,0,11,11,16,16,0,14,14,17,17,0,13,13,16,16,0,12,12,16,16,0,15,15,16,17,0,11,11,15,16,0,14,14,17,17,0,13,14,16,16,0,15,15,18,18,0,21,20,20,19,0,13,13,16,17,0,16,16,0,0,0,14,14,16,16,0,15,15,18,18,0,0,0,20,19,0,13,13,16,16,0,17,17,0,0,0,14,14,16,16,0,11,11,16,16,0,13,13,18,17,0,13,13,17,17,0,16,16,17,17,0,16,16,17,18,0,12,12,17,17,0,15,15,18,18,0,12,12,16,16,0,16,16,19,19,0,15,15,16,17,0,12,12,17,17,0,17,17,18,18,0,12,12,17,17,0,16,16,19,19,0,15,16,17,17,0,16,16,18,17,0,0,0,21,21,0,13,13,16,16,0,17,17,0,20,0,15,15,16,17,0,16,16,19,18,0,0,21,20,21,0,14,14,17,16,0,20,0,0,0,0,15,16,16,17,0,9,9,14,14,0,13,13,16,16,0,14,14,15,15,0,0,20,19,19,0,0,0,19,19,0,12,12,15,15,0,15,16,19,18,0,14,14,15,15,0,21,0,18,18,0,20,0,17,18,0,13,13,16,16,0,17,17,17,19,0,14,14,16,15,0,21,20,20,19,0,0,0,19,19,0,0,0,19,18,0,0,0,0,0,0,20,20,17,18,0,0,0,21,21,0,0,0,18,18,0,21,0,18,19,0,0,0,0,0,0,20,21,18,18,0,0,0,20,21,0,0,0,19,19,0,18,18,15,15,0,20,21,17,17,0,19,21,17,17,0,0,0,17,18,0,0,0,20,19,0,19,19,17,17,0,0,0,18,18,0,19,20,16,17,0,0,21,20,20,0,19,20,19,18,0,19,20,16,16,0,0,0,18,19,0,19,20,17,17,0,0,21,0,20,0,21,21,17,19,0,20,0,19,20,0,0,0,20,0,0,19,18,17,16,0,0,0,0,0,0,0,20,17,17,0,20,21,18,20,0,0,0,0,21,0,19,20,17,17,0,0,0,0,0,0,20,21,17,17,0,11,11,14,14,0,13,13,16,17,0,13,13,16,16,0,17,17,0,21,0,18,17,21,0,0,13,13,16,16,0,15,15,18,18,0,12,12,16,16,0,17,16,21,0,0,17,17,0,0,0,12,12,17,17,0,17,17,19,21,0,13,12,16,16,0,17,17,0,0,0,17,17,0,0,0,18,17,0,21,0,0,0,0,0,0,15,15,20,0,0,20,18,0,0,0,17,18,0,0,0,16,17,0,0,0,0,0,0,0,0,15,15,0,0,0,19,19,0,0,0,18,18,0,0,0,14,14,18,18,0,16,16,0,21,0,16,16,21,21,0,17,17,0,20,0,17,17,20,0,0,16,15,0,0,0,20,20,0,0,0,15,15,20,20,0,17,17,21,0,0,17,18,20,20,0,15,15,20,20,0,18,18,0,0,0,15,15,19,20,0,17,18,0,0,0,17,17,20,20,0,18,17,21,0,0,0,0,0,21,0,15,15,20,20,0,19,19,0,0,0,17,17,21,0,0,17,17,0,0,0,0,0,21,0,0,15,15,19,19,0,20,21,0,0,0,18,17,21,21,0,12,12,16,16,0,14,14,17,17,0,13,13,17,18,0,16,16,18,17,0,16,16,18,18,0,13,13,18,18,0,15,16,19,18,0,13,13,16,16,0,16,16,20,18,0,16,16,17,17,0,12,13,17,17,0,17,16,18,18,0,12,12,16,16,0,17,16,20,19,0,16,16,16,16,0,16,17,18,20,0,0,0,21,20,0,14,14,17,16,0,19,18,0,20,0,16,16,17,16,0,16,16,17,18,0,0,21,21,21,0,14,14,16,16,0,20,20,21,0,0,16,16,16,16,0,10,10,14,14,0,14,14,15,16,0,14,14,15,15,0,0,21,18,18,0,0,21,18,19,0,13,13,16,16,0,16,16,18,18,0,14,14,15,15,0,21,0,18,18,0,21,0,18,18,0,13,13,16,16,0,17,17,19,20,0,14,14,15,15,0,0,0,18,20,0,0,21,18,18,0,0,21,19,18,0,0,0,0,0,0,20,21,18,17,0,0,0,21,21,0,0,0,19,19,0,21,0,18,19,0,0,0,0,0,0,21,20,17,17,0,0,21,20,0,0,0,0,19,19,0,19,20,15,16,0,0,20,18,17,0,20,21,17,18,0,21,0,18,18,0,0,0,19,19,0,20,20,17,18,0,0,0,18,19,0,20,20,18,17,0,0,0,0,20,0,0,21,17,18,0,20,21,17,17,0,0,0,18,18,0,19,19,17,17,0,0,0,21,21,0,20,20,17,17,0,0,0,21,19,0,0,0,20,19,0,21,20,17,18,0,0,0,0,0,0,0,20,18,17,0,21,20,18,18,0,0,0,20,21,0,20,20,17,17,0,0,0,0,0,0,20,0,17,17,0,11,11,13,14,0,13,13,16,16,0,13,13,16,16,0,17,17,0,0,0,17,18,0,0,0,13,13,16,16,0,15,16,18,18,0,13,13,16,17,0,16,17,20,0,0,17,18,20,0,0,13,13,17,17,0,16,16,20,21,0,13,13,16,16,0,17,17,21,0,0,17,18,0,0,0,17,18,0,21,0,0,0,0,0,0,15,15,20,0,0,19,19,0,0,0,17,17,0,0,0,18,17,21,20,0,0,0,0,0,0,16,16,20,21,0,21,20,0,21,0,19,21,0,0,0,15,15,0,0,0,16,17,0,19,0,16,16,0,0,0,17,17,0,0,0,19,18,0,0,0,16,16,20,20,0,20,18,21,0,0,15,15,21,21,0,18,18,0,0,0,18,19,0,0,0,16,15,0,21,0,20,19,0,0,0,16,16,0,0,0,20,18,0,21,0,17,18,21,0,0,18,19,0,0,0,0,0,0,0,0,16,16,20,20,0,19,20,0,0,0,17,17,0,0,0,18,17,20,21,0,0,0,0,0,0,16,16,0,20,0,20,22,0,0,0,18,18,0,22,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,4,4,8,8,10,12,12,11,11,9,11,11,12,13,11,12,12,11,11,11,12,12,12,12,10,13,12,13,13,11,12,12,13,13,11,12,12,13,13,11,12,13,13,13,11,13,13,13,13,10,13,13,12,13,11,12,12,14,14,11,13,12,12,12,11,12,12,13,13,11,13,13,12,12,11,13,13,13,13,11,12,12,13,13,11,13,13,12,12,11,12,12,13,13,11,13,13,12,12,11,13,13,13,13,11,12,12,14,14,11,13,13,12,12,11,12,12,13,13,11,13,13,12,12,11,10,10,10,10,12,10,10,11,11,11,8,8,11,11,13,10,10,10,10,12,10,10,10,10,13,11,11,11,11,13,10,10,11,11,13,11,11,12,12,13,11,11,11,11,13,11,11,12,12,13,11,11,12,12,13,10,10,11,11,13,11,11,11,11,13,11,10,11,11,13,11,11,11,11,13,11,11,11,11,13,10,10,11,11,13,11,11,11,11,12,10,11,11,11,13,11,11,11,11,13,11,11,11,11,13,10,10,11,11,13,11,11,11,11,13,11,11,11,11,13,11,11,11,11,11,10,10,10,10,12,10,10,9,9,12,12,12,11,11,13,12,12,9,9,13,12,12,10,10,12,12,12,12,12,13,13,13,14,14,13,12,12,11,11,13,13,13,12,12,13,12,12,11,11,13,12,13,11,11,13,13,13,14,14,13,12,12,10,10,13,13,13,11,11,13,12,12,10,10,13,13,13,11,11,13,13,13,14,14,13,12,12,10,10,13,13,13,11,11,13,12,13,10,10,13,13,13,11,11,13,13,13,14,14,13,12,12,10,10,13,13,13,11,11,13,13,12,10,10,14,12,12,8,8,14,12,12,9,9,14,11,11,9,9,14,12,12,8,8,14,11,11,7,7,14,13,13,10,10,15,12,12,10,10,15,13,13,10,10,15,12,12,9,9,15,13,13,10,10,15,13,13,10,10,15,12,12,10,10,15,13,13,10,10,14,12,12,9,9,14,13,13,9,9,14,13,13,9,9,15,12,12,9,9,15,13,13,9,9,14,12,12,9,9,14,13,13,9,9,14,13,13,9,9,15,12,12,9,9,14,13,13,9,9,14,12,12,9,9,14,13,13,9,9,13,12,12,8,8,13,13,13,8,8,14,13,13,9,9,13,13,13,7,7,14,13,13,8,8,14,14,14,10,10,14,14,14,11,11,14,14,14,9,9,14,14,14,10,10,14,14,14,9,9,14,14,14,10,9,15,14,14,11,11,14,14,14,9,9,14,14,14,10,10,14,14,14,9,9,14,14,14,9,9,15,14,14,11,11,14,14,14,8,8,14,14,14,9,9,14,14,14,8,8,14,14,14,9,9,15,14,14,11,11,14,14,14,8,8,14,14,14,9,9,14,14,14,8,8,12,12,12,13,13,16,15,15,11,11,16,15,16,12,12,17,16,16,11,11,17,15,15,12,11,16,16,16,12,13,16,15,15,13,13,16,16,16,12,12,16,16,15,13,13,16,16,16,12,12,16,16,16,13,13,17,16,16,14,14,17,17,16,12,12,17,16,16,13,13,17,17,16,12,13,16,16,17,13,12,17,16,16,14,13,17,16,16,12,12,17,16,16,12,12,17,16,17,12,12,17,17,17,13,13,16,16,16,13,14,17,17,16,12,12,16,16,16,13,13,17,17,17,12,12,13,14,14,10,10,16,14,14,12,12,16,15,15,14,14,16,14,14,12,12,15,14,14,13,13,17,15,15,14,13,16,16,15,15,15,16,15,15,14,14,16,15,15,14,14,17,15,15,14,14,16,15,15,14,14,16,16,15,15,15,17,15,15,13,13,16,15,15,14,14,17,15,15,13,13,17,15,15,14,14,16,15,15,15,15,16,14,14,13,13,16,15,15,14,14,16,14,14,13,13,17,15,15,14,14,16,16,15,15,15,17,14,14,13,13,16,15,15,14,14,17,14,14,13,13,13,11,11,10,10,16,14,14,13,13,15,14,14,13,13,16,14,14,12,12,16,14,14,12,12,15,15,15,14,14,16,14,14,14,14,16,15,14,14,14,16,14,14,14,14,16,15,15,14,13,16,15,15,14,14,16,14,14,14,14,17,15,15,14,14,16,14,14,14,14,16,15,15,13,14,16,15,15,14,14,16,14,14,14,14,16,15,15,13,13,16,14,14,13,13,16,15,15,13,13,16,15,15,14,14,16,14,14,14,14,17,15,15,13,13,16,15,14,13,13,17,15,15,13,13,14,14,14,9,9,14,14,14,17,17,14,15,15,18,18,14,14,14,18,19,14,14,14,18,18,15,15,15,19,18,15,16,15,18,20,15,15,15,18,19,15,15,15,19,19,15,15,15,18,20,15,15,15,18,19,15,15,16,20,18,15,15,15,18,18,15,15,15,19,19,15,15,15,18,19,15,15,15,18,19,15,15,15,19,19,14,15,14,19,19,15,15,15,20,19,15,14,14,19,18,14,15,15,18,19,15,15,16,20,20,14,14,14,18,19,15,15,15,19,18,14,14,14,18,18,14,12,12,9,9,13,14,14,18,18,14,13,13,18,19,14,14,14,18,18,14,14,14,18,18,15,15,15,19,19,15,14,14,19,18,14,15,15,19,18,15,14,14,18,18,15,15,15,19,18,14,15,15,19,19,15,14,14,19,18,14,15,15,19,18,15,14,14,19,18,14,15,15,19,18,15,15,15,21,18,15,14,14,19,18,14,15,15,18,19,14,15,14,20,19,14,15,15,18,19,14,15,15,19,19,15,14,14,19,20,14,15,15,18,18,14,14,14,19,19,14,15,15,19,18,12,12,12,13,13,16,15,15,11,11,16,15,15,12,12,16,16,16,11,11,16,15,15,11,11,16,16,16,13,13,17,16,16,13,13,17,17,17,12,12,16,16,16,13,13,17,16,17,13,12,15,16,16,12,12,16,15,15,13,13,17,16,16,12,12,16,16,15,12,12,16,16,16,12,12,17,17,16,13,12,16,16,16,13,13,17,16,16,12,12,17,16,16,12,12,17,17,16,12,12,16,17,16,12,12,17,15,15,13,13,17,16,16,12,12,16,16,16,12,12,16,16,16,12,12,13,13,13,9,9,15,14,14,13,13,16,15,14,14,14,16,14,14,13,13,15,14,14,13,13,17,15,15,14,14,16,15,15,15,15,16,15,15,14,14,16,15,15,15,15,17,15,15,14,14,16,15,15,14,14,16,15,15,15,15,17,14,15,14,14,16,15,15,14,14,17,15,15,13,14,17,15,15,14,14,16,15,15,15,15,17,14,14,13,13,16,15,15,14,14,17,14,14,13,13,17,15,15,14,14,16,15,16,15,15,17,14,14,13,13,16,15,15,14,14,18,14,14,13,13,13,11,11,11,11,15,14,14,12,12,15,14,14,13,13,16,14,14,12,12,16,13,14,12,12,16,15,15,13,13,16,14,14,14,14,16,15,15,13,13,16,14,14,13,13,16,14,15,13,13,15,15,15,13,13,16,14,14,14,13,16,14,14,13,13,16,14,14,13,13,16,15,15,13,13,16,15,15,13,13,16,14,14,14,14,16,15,15,12,12,16,14,14,13,13,16,15,15,12,12,16,15,15,13,13,16,14,14,14,14,17,15,14,12,12,16,14,14,13,13,16,15,15,12,12,14,14,14,8,8,14,14,14,17,18,14,15,15,17,18,14,14,14,17,18,14,14,14,18,18,14,15,15,18,18,14,16,15,19,19,15,15,15,18,19,15,16,15,20,19,15,15,15,18,18,14,15,15,18,19,15,16,16,20,19,15,15,15,19,17,14,15,15,20,18,14,15,15,18,18,14,15,15,18,19,14,15,15,19,20,14,14,14,18,18,14,15,15,18,19,14,14,14,18,19,14,15,15,19,18,15,16,16,20,21,14,14,15,19,19,14,15,15,19,19,14,14,14,19,18,13,12,12,9,9,13,14,14,18,19,14,14,14,18,19,14,14,14,18,18,14,14,14,18,18,14,15,15,19,19,15,14,14,19,18,15,15,15,19,19,15,14,14,19,20,14,15,15,18,19,14,15,15,20,18,15,14,14,18,18,14,15,15,18,18,14,14,14,19,19,14,15,15,18,18,14,15,15,19,18,15,14,14,19,19,14,15,15,19,18,15,14,14,19,18,14,14,15,18,19,14,15,15,19,18,15,14,14,18,19,14,15,14,19,20,14,14,14,19,19,14,15,15,19,19,12,12,12,13,13,16,16,16,11,11,16,16,16,12,12,17,16,16,11,11,17,15,15,11,11,16,16,16,13,13,17,15,16,13,13,16,16,16,12,12,17,16,16,13,13,17,17,16,12,12,17,17,16,13,13,17,16,16,13,13,17,17,17,12,12,17,16,16,13,13,17,17,17,12,12,16,16,16,12,12,17,15,15,13,13,17,16,16,11,11,17,16,16,12,12,16,16,16,11,11,16,17,16,12,12,17,16,16,13,13,17,17,16,12,12,17,17,16,12,12,17,16,16,11,11,13,14,14,9,9,16,14,14,13,13,16,14,15,14,14,16,14,14,12,12,16,14,14,13,13,17,15,15,14,14,16,15,15,15,15,17,15,15,14,14,16,15,15,14,14,17,15,15,14,14,16,15,15,14,14,16,15,15,15,16,17,14,15,14,14,16,15,15,14,14,17,15,15,14,14,16,15,15,14,14,16,15,15,15,15,17,14,14,13,13,16,15,15,14,14,16,14,14,13,13,17,15,15,14,14,16,16,15,15,15,17,14,14,13,13,16,15,15,14,14,17,14,14,13,13,13,11,11,10,10,16,14,14,12,12,15,13,13,13,12,16,14,14,11,11,16,14,14,11,11,16,14,15,13,14,16,14,14,13,13,16,15,15,13,13,16,14,14,13,13,16,15,15,13,13,16,15,15,13,13,17,14,14,14,14,17,15,15,13,13,16,14,15,13,13,16,15,15,13,13,16,15,15,13,13,16,14,14,13,13,17,15,15,12,12,16,14,14,12,12,16,15,15,12,12,16,15,15,13,13,16,14,14,13,13,17,15,15,12,12,17,14,14,12,12,16,15,15,12,12,13,14,14,8,8,13,14,14,18,18,13,15,15,17,18,14,14,14,18,19,14,14,14,19,18,14,15,15,19,18,15,15,16,21,18,15,15,15,19,19,14,16,16,19,19,14,15,15,18,19,14,15,15,19,20,14,16,16,19,18,15,15,15,18,19,14,15,15,19,18,15,15,15,18,18,15,15,15,20,18,15,16,16,20,19,14,15,14,18,19,14,15,16,19,20,14,15,15,19,18,15,15,15,19,18,15,16,16,20,19,15,14,14,18,18,14,15,15,19,19,14,15,15,18,18,13,12,12,8,8,13,14,14,19,18,14,13,13,20,18,14,14,14,19,18,14,13,13,18,19,14,15,15,20,19,15,14,14,19,19,14,15,15,19,18,15,14,14,20,20,15,15,15,19,18,14,15,15,19,18,15,14,14,19,18,14,15,15,20,19,14,14,14,20,19,14,15,15,19,18,15,15,15,18,18,15,14,14,18,18,14,15,15,19,19,14,14,14,19,19,14,15,15,19,19,15,15,15,19,18,15,14,14,20,19,15,15,15,19,19,14,14,14,20,19,14,15,15,20,20,12,12,12,13,13,17,16,16,11,11,16,16,15,12,12,17,16,16,11,11,17,15,15,11,11,17,17,17,13,13,17,16,16,13,13,17,17,17,12,12,17,16,16,13,13,17,17,16,12,13,16,17,16,13,13,17,16,15,13,13,17,16,16,12,12,17,16,16,12,13,17,16,17,12,12,17,17,17,12,12,17,16,15,13,13,17,16,16,12,12,17,16,16,12,12,17,16,16,11,11,16,16,16,12,12,17,15,15,13,13,17,16,15,11,11,16,16,16,12,12,17,16,16,11,11,13,14,14,9,9,16,14,14,13,13,16,14,15,14,14,16,14,14,12,12,16,14,14,13,13,17,15,15,14,15,16,15,15,15,15,17,15,15,14,14,16,15,15,15,14,16,15,15,14,14,16,15,15,14,14,16,15,16,15,15,17,15,14,14,14,16,15,15,14,14,17,15,15,13,13,16,15,15,14,14,16,16,16,15,15,17,14,14,13,13,16,15,15,14,14,18,14,15,13,13,16,15,15,14,14,16,16,15,15,15,16,14,14,13,13,16,15,15,14,14,17,14,15,13,13,13,11,11,10,10,15,14,14,12,12,15,14,14,13,13,16,14,14,12,12,16,13,14,12,12,16,14,15,14,13,16,14,14,14,14,16,15,15,13,13,16,14,14,13,13,16,15,15,13,13,15,15,15,13,13,16,14,14,14,14,17,15,15,13,13,16,14,14,13,13,16,15,15,13,13,16,15,15,13,13,16,14,14,13,13,17,15,15,12,12,16,14,14,12,12,16,14,15,12,12,16,15,15,13,13,16,14,14,13,13,17,15,15,12,12,16,14,14,12,12,16,15,15,12,12,14,14,14,8,8,14,14,14,17,17,14,15,15,18,18,14,14,14,18,17,14,14,14,18,18,14,15,15,18,20,15,16,15,19,18,15,15,15,19,18,15,15,16,19,18,15,15,15,18,18,14,15,15,18,18,15,16,16,18,19,15,15,15,18,18,15,15,15,19,20,15,15,15,18,18,15,15,15,18,18,15,16,16,19,19,15,14,15,19,19,15,15,15,19,20,14,14,15,18,18,15,15,15,19,19,15,16,16,19,19,15,15,14,18,19,15,15,15,20,20,15,15,14,18,18,13,12,12,8,8,13,14,14,18,18,14,14,14,18,18,14,14,14,18,20,14,14,14,18,18,14,15,15,19,18,15,14,14,18,19,15,15,15,18,19,15,14,14,18,19,15,15,15,18,18,14,15,14,18,19,15,14,14,21,19,15,15,15,19,18,14,14,14,19,18,14,15,15,19,18,15,15,15,20,19,15,14,14,20,18,14,15,15,18,19,14,14,14,19,18,14,15,15,18,19,15,15,15,18,19,15,14,14,19,19,15,15,15,19,19,14,14,14,19,20,14,15,15,18,19,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,6,6,7,8,8,7,8,8,7,9,9,10,12,11,9,8,8,7,9,9,11,12,12,9,9,9,6,7,7,10,11,11,10,11,11,10,11,11,13,13,14,12,12,12,11,11,11,14,14,14,12,12,12,6,5,5,9,6,5,9,6,6,9,7,7,12,10,10,11,6,6,10,7,7,13,10,10,12,7,7,7,8,8,12,10,10,12,10,10,11,10,10,15,13,13,13,9,9,12,11,11,16,13,13,15,11,11,8,7,7,12,12,12,12,11,11,12,11,11,14,14,14,14,12,12,12,12,12,16,15,15,14,12,12,0,10,10,0,12,12,0,12,12,0,11,11,0,14,14,0,11,11,0,12,12,0,15,15,0,11,11,8,8,8,13,11,11,13,10,10,13,11,11,15,13,13,14,11,11,12,10,10,16,14,14,14,10,10,9,7,7,13,11,11,13,11,11,12,11,11,16,14,14,14,12,12,13,12,12,15,14,14,15,13,12,0,11,11,0,12,12,0,12,12,0,12,12,0,15,15,0,12,12,0,13,12,0,14,15,0,12,12,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,3,3,0,9,9,0,9,9,0,10,10,0,9,9,0,10,10,0,10,10,0,9,9,0,10,10,0,7,7,0,7,7,0,6,6,0,8,8,0,7,7,0,8,8,0,8,9,0,8,8,0,8,8,0,7,7,0,9,9,0,8,8,0,10,10,0,9,9,0,10,10,0,10,10,0,9,9,0,10,10,0,9,9,0,11,11,0,11,11,0,12,12,0,11,11,0,12,12,0,13,13,0,12,12,0,13,12,0,8,8,0,12,12,0,12,12,0,13,13,0,12,12,0,13,13,0,13,13,0,13,13,0,13,13,0,7,7,0,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,9,0,11,11,0,12,12,0,13,13,0,12,12,0,13,13,0,13,13,0,12,12,0,12,12,0,8,8,0,12,12,0,12,12,0,13,13,0,13,13,0,13,14,0,14,13,0,13,13,0,13,13,0,7,7,0,0,0,0,0,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,2,0,0,0,0,0,0,0,1,5,5,0,7,7,0,8,8,0,9,9,0,12,12,0,8,8,0,9,9,0,12,12,0,8,8,0,6,6,0,11,11,0,12,12,0,12,12,0,15,15,0,11,11,0,12,12,0,15,15,0,12,12,0,5,5,0,5,5,0,6,6,0,7,7,0,11,11,0,6,6,0,7,7,0,10,11,0,6,6,0,7,7,0,11,11,0,12,12,0,11,11,0,15,15,0,10,10,0,12,12,0,15,15,0,12,12,0,6,6,0,12,12,0,12,12,0,12,12,0,15,15,0,11,11,0,12,12,0,15,15,0,12,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,0,0,0,8,8,0,12,12,0,12,12,0,12,12,0,15,15,0,12,12,0,11,12,0,15,16,0,11,11,0,6,6,0,11,12,0,12,12,0,12,12,0,16,15,0,12,12,0,13,12,0,15,14,0,12,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,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,2,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,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,3,7,8,10,13,16,3,2,5,7,9,13,16,6,4,4,6,10,14,15,7,5,5,7,10,13,14,9,8,9,9,9,11,13,12,11,12,9,7,8,11,14,12,10,6,5,7,10,0,0,0,0,0,0,0,2,0,0,0,49,0,0,0,248,239,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,206,7,0,0,0,0,0,0,0,0,0,144,206,7,0,184,206,7,0,0,0,0,0,0,0,0,0,224,206,7,0,8,207,7,0,0,0,0,0,0,0,0,0,48,207,7,0,88,207,7,0,0,0,0,0,0,0,0,0,128,207,7,0,168,207,7,0,88,207,7,0,0,0,0,0,208,207,7,0,136,203,7,0,176,203,7], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+500144); +/* memory initializer */ allocate([2,0,0,0,49,0,0,0,48,206,7,0,0,0,0,0,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,0,4,0,0,0,40,206,7,0,0,0,0,0,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,203,7,0,56,203,7,0,0,0,0,0,0,0,0,0,96,203,7,0,136,203,7,0,176,203,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,169,0,0,0,64,205,7,0,1,0,0,0,0,0,158,224,0,0,84,96,4,0,0,0,0,0,0,0,240,205,7,0,0,0,0,0,2,0,0,0,25,0,0,0,8,205,7,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,40,205,7,0,0,0,0,0,2,0,0,0,9,0,0,0,232,204,7,0,1,0,0,0,0,136,51,225,0,136,51,97,2,0,0,0,0,0,0,0,248,204,7,0,0,0,0,0,1,0,0,0,25,0,0,0,96,204,7,0,1,0,0,0,0,192,18,225,0,0,153,96,5,0,0,0,0,0,0,0,128,204,7,0,0,0,0,0,1,0,0,0,25,0,0,0,216,203,7,0,1,0,0,0,0,0,120,224,0,0,16,96,5,0,0,0,0,0,0,0,248,203,7,0,0,0,0,0,3,5,4,5,4,5,4,5,5,5,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,13,0,0,0,10,0,0,0,14,0,0,0,9,0,0,0,15,0,0,0,8,0,0,0,16,0,0,0,7,0,0,0,17,0,0,0,6,0,0,0,18,0,0,0,5,0,0,0,19,0,0,0,4,0,0,0,20,0,0,0,3,0,0,0,21,0,0,0,2,0,0,0,22,0,0,0,1,0,0,0,23,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,1,3,2,5,4,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,15,15,0,0,0,0,0,0,0,12,0,0,0,11,0,0,0,13,0,0,0,10,0,0,0,14,0,0,0,9,0,0,0,15,0,0,0,8,0,0,0,16,0,0,0,7,0,0,0,17,0,0,0,6,0,0,0,18,0,0,0,5,0,0,0,19,0,0,0,4,0,0,0,20,0,0,0,3,0,0,0,21,0,0,0,2,0,0,0,22,0,0,0,1,0,0,0,23,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,1,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,4,4,7,7,4,5,6,7,7,4,6,5,7,7,7,6,7,6,7,7,7,6,7,6,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,3,3,8,8,10,10,10,10,10,10,10,10,5,7,5,9,8,10,10,10,10,11,10,11,10,5,5,7,8,9,10,10,11,10,10,11,10,11,10,10,10,11,11,11,11,11,11,11,10,11,11,10,10,10,10,11,11,11,11,11,10,11,11,11,11,11,11,11,11,12,11,10,11,11,11,11,11,11,11,11,11,11,11,11,10,10,11,11,12,11,11,11,11,11,11,12,11,11,11,10,11,11,11,11,11,11,11,11,10,11,11,10,11,10,11,11,11,11,11,11,11,11,11,11,12,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,12,11,10,11,11,11,11,11,11,11,12,11,13,11,11,11,11,11,11,11,11,11,11,11,12,11,13,0,0,0,0,0,0,0,6,0,0,0,5,0,0,0,7,0,0,0,4,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,2,0,0,0,10,0,0,0,1,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,1,3,2,3,0,0,0,0,2,3,6,7,9,13,17,3,2,5,7,9,13,17,6,5,5,6,9,12,16,7,7,6,6,7,10,13,10,10,9,7,6,10,13,13,13,12,10,10,11,15,17,17,17,14,14,15,17,0,0,0,0,0,0,0,5,0,0,0,243,0,0,0,240,238,7,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,232,239,7,0,0,0,0,0,5,0,0,0,243,0,0,0,232,237,7,0,1,0,0,0,0,0,56,224,0,0,56,96,2,0,0,0,0,0,0,0,224,238,7,0,0,0,0,0,5,0,0,0,243,0,0,0,224,236,7,0,1,0,0,0,0,0,16,224,0,0,16,96,2,0,0,0,0,0,0,0,216,237,7,0,0,0,0,0,5,0,0,0,243,0,0,0,216,235,7,0,1,0,0,0,0,0,84,224,0,0,84,96,2,0,0,0,0,0,0,0,208,236,7,0,0,0,0,0,5,0,0,0,53,12,0,0,136,223,7,0,1,0,0,0,0,0,48,224,0,0,16,96,3,0,0,0,0,0,0,0,192,235,7,0,0,0,0,0,5,0,0,0,53,12,0,0,56,211,7,0,1,0,0,0,0,0,124,224,0,0,92,96,3,0,0,0,0,0,0,0,112,223,7,0,0,0,0,0,1,0,0,0,7,0,0,0,16,211,7,0,1,0,0,0,0,0,56,224,0,0,16,96,3,0,0,0,0,0,0,0,24,211,7,0,0,0,0,0,5,0,0,0,243,0,0,0,8,210,7,0,1,0,0,0,0,0,149,224,0,0,149,96,2,0,0,0,0,0,0,0,0,211,7,0,0,0,0,0,5,0,0,0,243,0,0,0,0,209,7,0,1,0,0,0,0,0,92,224,0,0,92,96,2,0,0,0,0,0,0,0,248,209,7,0,0,0,0,0,5,0,0,0,243,0,0,0,248,207,7,0,1,0,0,0,0,136,51,225,0,136,51,97,2,0,0,0,0,0,0,0,240,208,7,0,0,0,0,0,1,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,6,7,6,8,8,7,7,8,7,8,8,9,9,9,8,7,7,8,8,8,9,9,9,9,8,8,6,6,6,9,7,7,9,7,7,9,8,8,10,8,8,10,8,8,10,8,8,10,9,8,10,8,8,7,6,6,9,6,6,9,6,6,9,7,7,10,8,8,10,6,6,9,7,7,10,8,8,10,6,6,7,7,7,11,9,9,11,9,9,10,9,9,12,10,10,12,8,8,11,9,9,13,9,10,12,8,8,8,7,7,11,9,10,11,10,10,10,9,9,11,11,11,11,9,9,11,10,9,12,11,11,11,9,10,10,8,8,11,9,10,11,9,9,11,9,9,12,10,10,11,9,9,11,9,9,12,10,11,11,9,9,8,8,8,12,9,9,12,9,9,11,9,9,13,9,9,13,8,8,12,9,9,13,10,10,12,8,8,9,7,7,11,10,10,11,10,10,11,10,10,12,11,11,11,10,9,11,10,10,11,11,11,11,9,9,11,9,9,12,10,10,11,10,10,12,10,10,11,11,11,11,9,9,11,10,10,12,11,11,11,9,9,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,7,7,6,8,8,7,8,8,7,9,9,11,11,11,9,8,8,7,9,9,11,12,11,9,9,9,6,7,7,10,11,11,10,10,10,10,11,11,15,14,14,12,12,12,11,11,11,14,14,14,12,12,12,5,6,6,8,5,5,8,7,7,8,8,8,12,10,10,10,7,7,8,7,7,12,10,10,10,7,7,6,7,7,12,11,11,12,10,10,11,10,10,14,14,13,13,10,10,11,10,10,16,14,14,14,11,10,7,7,7,13,12,12,12,12,11,11,11,11,15,14,17,13,12,12,12,11,11,15,15,15,14,13,13,10,9,9,14,12,11,13,11,11,12,11,11,16,15,14,14,11,11,12,11,11,17,14,14,15,11,11,7,8,8,12,11,11,13,10,10,11,10,10,17,14,13,14,10,10,12,10,10,18,15,15,14,10,10,8,7,7,13,12,12,13,11,11,12,11,11,16,14,15,14,12,12,12,11,11,18,16,16,14,12,12,11,10,10,13,12,11,13,11,11,13,12,12,0,15,14,14,11,11,13,11,11,16,15,15,15,11,11,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,3,3,3,3,3,3,0,3,0,0,0,2,0,0,0,4,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,1,7,7,14,14,6,8,8,15,16,7,8,8,16,15,0,14,14,17,17,0,14,14,16,16,7,9,9,16,16,10,11,11,17,18,9,8,8,16,16,0,14,14,19,19,0,14,14,17,16,8,9,9,16,16,12,12,12,17,17,10,9,9,16,16,0,15,14,18,20,0,14,14,17,17,0,15,15,18,17,0,21,0,0,21,0,13,13,17,17,0,17,17,0,0,0,15,15,17,17,0,15,15,17,18,0,0,0,0,21,0,13,13,17,17,0,18,18,0,21,0,16,15,17,18,6,7,7,14,14,9,10,10,16,16,11,10,10,15,15,0,21,0,20,21,0,0,0,18,20,10,10,10,15,16,12,13,13,18,18,12,11,11,15,15,0,0,0,20,20,0,0,21,19,19,12,11,11,15,15,15,14,14,18,18,13,11,11,15,16,0,0,0,20,19,0,0,0,20,21,0,0,20,19,19,0,0,0,0,0,0,20,0,17,18,0,0,21,0,0,0,0,0,21,0,0,21,0,20,19,0,0,0,0,0,0,21,0,18,18,0,0,0,21,0,0,0,0,0,20,7,6,6,13,13,9,6,6,12,12,9,7,7,14,14,0,10,10,12,12,0,11,11,15,15,9,7,7,14,14,12,9,9,14,14,10,7,7,14,13,0,11,11,16,15,0,11,11,14,14,9,7,7,14,14,13,10,10,14,14,11,7,7,14,13,0,11,11,16,16,0,11,11,14,14,0,12,12,16,16,0,19,0,17,18,0,10,10,14,14,0,15,14,0,0,0,12,12,14,14,0,12,12,15,15,0,20,0,18,19,0,10,10,14,14,0,16,15,0,20,0,13,13,14,14,0,11,11,13,13,0,12,13,16,16,0,12,12,16,16,0,16,16,0,21,0,17,18,0,0,0,12,12,16,16,0,15,15,18,0,0,12,12,16,16,0,17,16,21,21,0,16,17,0,0,0,13,13,17,16,0,16,16,20,21,0,12,12,17,16,0,17,17,0,21,0,17,17,21,21,0,17,18,0,0,0,0,0,0,0,0,15,15,0,0,0,18,21,0,0,0,18,19,0,0,0,18,17,21,21,0,0,0,0,0,0,16,16,0,0,0,0,0,0,0,0,19,19,0,0,0,11,11,12,12,0,11,11,10,10,0,12,12,13,13,0,12,12,9,9,0,14,14,13,13,0,12,12,13,13,0,14,14,12,13,0,11,11,12,12,0,13,13,13,13,0,13,13,13,13,0,12,12,13,13,0,14,14,12,12,0,11,11,12,12,0,14,13,14,14,0,13,13,13,13,0,15,15,14,15,0,0,0,16,16,0,12,12,13,13,0,16,17,20,21,0,14,13,12,12,0,14,14,14,14,0,21,0,16,16,0,12,12,13,13,0,18,17,21,0,0,14,14,13,13,7,8,8,17,17,11,10,10,18,18,12,10,10,17,17,0,15,15,20,18,0,15,15,17,17,11,9,9,17,17,14,12,12,19,19,13,9,9,16,16,0,15,14,0,19,0,14,14,16,16,12,10,10,20,18,16,13,13,21,20,14,10,10,17,17,0,15,15,21,20,0,15,14,17,17,0,15,15,21,21,0,0,21,0,0,0,13,13,18,18,0,19,16,0,0,0,15,15,17,16,0,16,16,0,21,0,0,0,0,21,0,13,14,18,17,0,20,19,0,0,0,15,15,18,18,8,7,7,15,15,12,11,11,17,16,13,11,11,16,16,0,0,0,21,20,0,0,0,0,20,11,10,10,17,17,14,13,13,19,18,14,11,11,16,16,0,20,0,21,19,0,0,21,0,20,12,11,11,17,17,16,15,15,0,19,14,11,11,17,16,0,21,0,0,19,0,0,0,21,20,0,0,21,20,0,0,0,0,0,0,0,0,0,19,21,0,0,0,0,0,0,0,0,19,20,0,0,0,20,21,0,0,0,0,0,0,20,0,19,21,0,0,0,0,0,0,0,0,21,20,11,10,9,15,15,14,11,11,15,15,14,11,11,16,16,0,14,14,14,14,0,16,15,17,16,13,11,11,16,16,16,13,13,16,16,15,10,10,15,15,0,14,15,17,17,0,14,14,16,15,13,11,11,16,16,17,15,14,16,16,15,10,10,15,15,0,15,15,17,18,0,15,15,16,16,0,16,16,17,17,0,21,0,21,20,0,13,13,15,15,0,18,18,0,21,0,15,15,15,15,0,16,16,17,17,0,0,0,0,18,0,13,13,15,15,0,19,18,0,0,0,15,15,16,16,0,12,12,15,15,0,13,13,17,17,0,13,13,17,18,0,16,17,21,0,0,20,18,0,0,0,13,13,17,17,0,15,15,0,18,0,12,12,17,18,0,16,16,0,0,0,17,17,21,0,0,13,13,18,18,0,16,16,21,21,0,12,12,17,18,0,16,17,21,0,0,17,17,0,21,0,17,18,0,0,0,0,0,0,0,0,16,15,0,21,0,21,19,0,0,0,18,18,0,0,0,18,19,0,0,0,0,0,0,0,0,16,16,21,21,0,20,19,0,0,0,19,21,0,21,0,12,12,15,15,0,12,12,15,16,0,13,13,16,16,0,14,14,15,15,0,16,15,17,17,0,13,13,17,17,0,15,15,16,18,0,12,12,16,16,0,14,14,17,17,0,15,14,16,16,0,13,13,16,16,0,16,15,17,17,0,12,12,16,16,0,15,15,18,18,0,14,14,17,16,0,16,16,17,18,0,0,0,20,21,0,13,13,16,17,0,17,17,0,0,0,15,15,16,16,0,15,16,17,17,0,0,0,19,0,0,13,13,15,16,0,19,18,0,0,0,16,15,16,17,8,8,8,17,17,13,11,10,17,18,13,10,10,17,17,0,15,15,20,19,0,15,15,17,17,12,10,10,19,18,15,12,12,20,18,14,10,10,17,16,0,15,15,20,20,0,14,15,16,16,13,10,10,17,17,17,14,14,0,18,15,10,10,17,17,0,16,15,20,20,0,14,14,17,17,0,15,16,20,20,0,0,21,0,0,0,13,13,17,17,0,18,17,0,0,0,15,16,17,18,0,15,15,18,21,0,0,0,21,0,0,13,13,18,18,0,19,19,0,0,0,16,16,18,17,9,8,8,15,15,12,11,11,16,16,13,11,11,16,15,0,0,0,0,21,0,21,0,19,19,12,11,11,17,18,15,13,13,18,19,14,11,11,16,16,0,0,21,21,19,0,0,0,21,20,13,11,11,18,17,17,14,15,20,21,15,11,12,16,16,0,0,0,20,0,0,0,21,0,19,0,0,0,0,19,0,0,0,0,0,0,21,21,19,19,0,0,0,21,0,0,0,0,19,21,0,0,0,19,20,0,0,0,21,0,0,0,21,19,19,0,0,0,0,0,0,0,0,21,20,0,11,11,15,15,0,12,12,15,16,0,12,12,16,16,0,15,15,16,15,0,16,16,17,17,0,12,12,17,17,0,14,14,17,17,0,11,11,16,16,0,15,15,19,18,0,15,15,16,16,0,12,12,17,16,0,14,15,16,16,0,11,11,15,15,0,16,16,18,19,0,15,15,15,16,0,17,17,18,20,0,21,0,21,19,0,14,14,16,16,0,18,18,0,0,0,16,16,15,15,0,16,16,18,17,0,0,0,19,20,0,14,14,16,16,0,19,19,0,0,0,16,17,15,15,0,12,12,14,15,0,13,13,16,17,0,12,12,17,17,0,17,16,0,0,0,18,17,21,0,0,13,13,19,17,0,15,15,20,21,0,12,12,17,17,0,17,17,0,0,0,17,17,0,0,0,13,13,17,18,0,16,16,21,0,0,12,12,17,17,0,17,17,0,0,0,17,17,0,0,0,18,21,0,0,0,0,0,0,0,0,15,15,21,0,0,20,21,0,0,0,18,19,0,0,0,18,17,0,0,0,0,0,0,0,0,16,16,21,0,0,21,21,0,0,0,18,19,0,0,0,12,12,16,16,0,13,13,16,17,0,13,13,17,16,0,14,14,16,16,0,16,15,19,18,0,13,13,17,17,0,15,15,18,18,0,12,12,16,16,0,15,15,18,19,0,15,15,17,16,0,13,13,17,17,0,16,16,18,17,0,12,12,17,16,0,15,15,18,18,0,15,15,17,17,0,16,16,0,19,0,0,0,0,0,0,14,14,16,17,0,18,18,0,0,0,15,15,17,17,0,16,16,21,19,0,21,0,21,21,0,13,14,16,16,0,19,19,0,0,0,15,16,16,16,0,11,11,17,16,0,15,14,19,18,0,14,14,19,19,0,18,17,18,20,0,17,17,18,19,0,13,13,17,17,0,16,17,21,18,0,13,13,17,16,0,18,17,19,0,0,16,17,18,18,0,12,12,19,18,0,18,18,20,20,0,13,13,17,17,0,17,17,21,0,0,16,17,17,18,0,18,17,19,18,0,0,0,0,0,0,14,14,17,17,0,19,19,21,0,0,16,16,16,17,0,17,17,19,20,0,0,0,0,21,0,15,15,17,18,0,21,21,0,0,0,17,17,17,18,0,10,10,15,15,0,15,14,17,18,0,14,14,16,16,0,0,0,18,0,0,21,0,19,0,0,13,13,17,16,0,17,17,18,0,0,14,14,16,15,0,0,0,21,0,0,21,0,19,18,0,13,13,17,17,0,18,18,20,20,0,15,15,16,16,0,0,0,21,21,0,0,0,20,20,0,0,0,19,0,0,0,0,0,0,0,21,20,18,18,0,0,0,0,0,0,0,0,0,20,0,0,0,0,20,0,0,0,0,0,0,0,0,19,18,0,0,0,0,21,0,0,0,18,20,0,18,19,16,17,0,21,19,17,17,0,0,21,18,18,0,0,21,20,19,0,0,0,20,20,0,0,21,17,17,0,0,0,19,19,0,20,20,17,17,0,0,0,0,20,0,0,20,18,18,0,21,20,17,17,0,0,0,20,21,0,19,0,17,17,0,0,21,0,0,0,20,0,18,19,0,0,0,21,21,0,0,0,0,21,0,20,20,17,17,0,0,0,0,0,0,21,0,18,17,0,0,0,20,19,0,0,0,0,21,0,20,20,17,17,0,0,0,0,0,0,21,21,18,18,0,12,12,15,14,0,14,14,17,17,0,14,14,17,16,0,18,18,21,0,0,19,20,0,0,0,13,13,18,17,0,16,16,19,18,0,13,13,17,17,0,17,17,0,0,0,17,17,21,0,0,13,13,17,17,0,17,17,21,20,0,13,13,18,17,0,18,19,21,21,0,19,18,0,0,0,18,17,0,0,0,0,0,0,0,0,15,16,0,0,0,21,21,0,0,0,20,18,21,0,0,17,18,0,0,0,0,0,0,0,0,15,16,0,0,0,0,20,0,0,0,0,19,0,0,0,15,15,18,19,0,18,17,21,0,0,16,18,0,20,0,17,18,21,0,0,18,20,0,0,0,16,16,21,21,0,19,20,21,0,0,16,15,0,21,0,18,20,0,0,0,18,19,0,0,0,16,15,21,21,0,21,0,0,0,0,16,15,21,0,0,20,19,0,0,0,18,21,21,0,0,20,18,0,0,0,0,0,0,0,0,16,16,0,20,0,21,0,0,0,0,17,18,20,21,0,18,18,21,21,0,0,0,0,0,0,16,16,20,0,0,0,21,0,0,0,21,18,0,0,0,12,12,20,17,0,15,15,19,18,0,14,14,19,18,0,18,17,21,19,0,17,17,21,17,0,13,13,21,19,0,16,17,20,19,0,13,13,16,16,0,17,17,20,21,0,16,16,19,17,0,13,13,18,18,0,17,19,19,19,0,13,13,17,17,0,18,18,0,19,0,16,17,18,18,0,16,17,19,21,0,0,0,0,0,0,15,15,16,17,0,20,19,21,0,0,17,17,17,17,0,17,17,21,19,0,0,0,0,0,0,15,15,17,17,0,21,0,0,0,0,18,18,17,17,0,10,10,15,15,0,15,15,17,17,0,15,14,16,16,0,0,0,21,19,0,21,21,19,21,0,13,13,17,16,0,17,17,18,19,0,14,15,16,15,0,0,0,21,19,0,21,21,18,19,0,14,14,16,17,0,18,18,18,19,0,15,15,15,16,0,0,21,0,21,0,0,0,19,20,0,0,0,21,19,0,0,0,0,0,0,21,21,19,17,0,0,0,0,0,0,0,0,21,21,0,21,0,0,21,0,0,0,0,0,0,21,21,19,18,0,0,0,0,0,0,0,0,0,19,0,21,18,18,17,0,21,0,20,20,0,0,0,18,20,0,0,21,18,21,0,0,0,21,18,0,0,0,0,19,0,0,0,21,21,0,20,21,17,19,0,21,0,21,0,0,21,0,18,18,0,20,21,17,18,0,0,0,21,19,0,20,21,17,18,0,0,0,21,21,0,0,0,20,19,0,0,0,21,21,0,0,0,0,0,0,21,21,19,18,0,0,0,0,0,0,0,21,19,18,0,21,21,19,0,0,0,0,21,0,0,21,21,18,17,0,0,0,0,0,0,21,0,21,18,0,12,12,14,14,0,15,14,17,17,0,14,14,17,16,0,19,17,0,0,0,19,19,0,0,0,13,13,17,17,0,17,17,20,20,0,13,13,18,18,0,18,17,0,0,0,18,21,0,0,0,13,13,17,17,0,18,18,21,20,0,14,14,18,19,0,19,18,21,0,0,19,19,0,0,0,20,18,20,0,0,0,0,0,0,0,15,16,0,0,0,21,21,0,0,0,19,19,0,0,0,18,18,0,0,0,0,0,0,0,0,16,16,0,21,0,0,0,0,0,0,19,20,0,0,0,15,15,20,21,0,17,17,21,21,0,17,17,0,0,0,19,18,0,0,0,18,19,0,0,0,17,16,0,21,0,0,20,0,0,0,16,16,0,20,0,19,19,0,21,0,19,18,0,21,0,16,16,0,0,0,21,21,0,0,0,16,16,0,0,0,21,21,0,0,0,19,19,0,0,0,20,0,0,0,0,0,0,0,0,0,17,17,0,21,0,0,20,0,0,0,20,18,21,21,0,19,18,0,20,0,0,0,0,0,0,16,17,21,0,0,0,21,0,0,0,19,20,21,20,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,3,4,9,9,10,12,12,12,11,10,12,12,13,12,11,13,12,11,11,11,12,12,12,11,11,13,13,13,13,11,12,12,14,14,12,13,13,13,13,11,13,13,13,13,11,13,13,13,13,11,13,13,13,13,11,12,12,14,14,12,13,13,12,12,11,13,13,13,13,11,13,13,12,12,11,13,13,13,13,12,12,13,14,14,12,13,13,12,12,11,13,13,13,13,11,13,13,12,12,11,13,13,13,13,12,13,13,14,14,12,13,13,12,12,11,13,13,13,13,11,13,13,12,12,11,10,10,10,10,12,10,10,11,11,12,9,9,11,11,13,11,11,10,10,13,10,10,10,10,13,11,11,12,12,13,10,10,12,12,14,12,11,12,12,13,11,11,11,12,13,12,12,12,12,13,11,11,12,12,13,10,10,12,12,14,11,11,12,12,13,11,11,12,12,13,11,11,12,12,14,12,12,12,12,14,10,10,11,11,14,12,11,11,11,13,11,11,11,11,13,12,12,11,11,14,12,12,12,11,14,10,10,11,11,14,12,11,11,11,13,11,11,11,11,13,12,12,11,11,11,11,11,10,10,12,10,11,9,9,12,12,12,11,11,13,12,12,9,9,13,13,13,10,10,13,13,13,12,12,13,13,13,14,14,13,12,12,11,11,14,13,13,12,12,14,13,13,11,11,13,13,13,12,11,13,13,13,14,14,13,12,12,10,10,14,13,13,11,11,13,13,13,10,10,13,13,13,11,11,14,13,13,14,14,14,12,12,10,10,13,13,13,11,11,13,13,13,10,10,13,13,13,11,11,14,13,13,14,14,14,13,13,10,10,13,13,13,11,11,13,13,13,10,10,14,12,12,8,8,14,12,12,9,9,14,11,11,9,9,14,12,12,8,8,14,12,12,7,7,15,13,13,10,10,15,12,12,10,10,15,13,13,10,10,15,12,13,9,9,15,13,13,10,10,15,13,13,10,10,15,12,12,10,10,15,13,13,10,10,15,13,13,9,9,15,13,13,10,10,15,13,13,10,10,15,12,12,10,10,15,13,13,9,9,14,13,12,9,9,14,13,13,9,9,15,13,13,10,10,15,12,12,10,10,15,13,13,9,9,15,13,13,9,9,14,13,13,9,9,14,12,12,8,8,13,13,13,8,8,14,14,13,9,9,14,14,13,7,7,14,14,14,8,8,14,14,14,10,10,15,14,14,12,12,14,14,14,9,9,15,14,14,10,10,14,14,14,9,9,14,14,14,10,9,15,14,14,12,12,14,14,14,9,9,15,14,14,10,10,14,14,14,9,9,15,14,15,9,9,15,14,14,11,11,14,14,14,8,8,14,14,14,9,9,14,14,14,8,8,14,15,14,10,10,15,14,14,11,11,14,14,14,8,8,15,14,14,9,9,14,14,14,8,8,12,12,12,13,13,16,16,15,12,12,17,16,16,13,13,17,16,16,11,11,17,16,16,12,12,17,16,17,13,13,17,16,16,14,14,17,17,16,12,12,18,16,16,13,13,17,16,17,12,12,17,17,17,13,13,18,16,16,14,14,18,17,17,12,12,17,17,17,13,13,18,17,17,13,13,17,17,17,13,13,17,16,16,14,14,17,17,17,12,12,16,16,17,13,13,17,17,16,12,12,18,17,17,13,13,18,16,16,14,14,18,17,17,12,12,19,16,17,13,13,17,16,17,12,12,13,14,14,10,10,16,14,14,13,13,17,15,15,14,14,17,14,14,13,13,16,14,14,13,13,17,16,15,14,14,16,16,16,15,15,17,15,15,14,14,17,15,15,14,14,17,15,15,14,14,17,16,15,14,14,16,16,16,15,15,18,15,15,13,13,16,16,15,14,14,17,15,15,14,13,17,15,15,14,14,16,16,16,15,15,18,15,14,13,13,17,15,15,14,14,18,14,15,13,13,18,15,15,14,14,16,16,16,15,15,17,15,15,13,13,17,15,15,14,14,17,15,15,13,13,13,11,11,10,10,16,14,14,13,13,17,14,15,14,14,17,15,15,12,12,17,14,14,12,12,16,15,15,14,14,16,14,14,14,14,16,15,15,14,14,16,15,15,14,14,16,15,15,14,14,16,15,15,14,14,16,15,14,15,15,17,15,15,14,14,17,15,15,14,14,17,15,15,14,14,17,15,16,14,14,16,14,14,14,14,17,15,15,13,13,17,15,15,13,13,16,15,15,13,13,17,16,16,14,14,17,15,14,15,14,17,15,15,13,13,17,15,15,13,13,17,15,15,13,13,14,14,14,9,9,14,14,14,18,19,14,15,15,19,18,14,14,14,19,19,15,14,14,19,19,15,16,16,19,19,15,16,16,19,19,15,15,15,19,19,15,16,16,19,20,15,15,15,19,19,15,15,15,19,19,15,16,16,20,20,15,15,15,18,19,15,15,16,19,20,15,15,15,19,18,15,15,15,18,18,15,16,16,21,20,15,15,15,19,19,15,15,15,19,19,15,15,14,19,20,15,15,15,20,19,15,16,16,19,20,15,15,15,19,19,15,15,15,20,21,15,14,15,19,19,14,12,12,9,9,14,14,15,21,19,14,14,14,18,19,14,15,15,19,20,14,14,14,19,19,15,15,15,19,20,15,15,14,21,19,15,15,15,20,19,15,14,15,20,21,15,15,15,18,18,15,15,15,20,21,16,14,14,18,19,15,15,15,20,19,15,15,15,18,21,15,15,15,19,19,15,15,15,19,20,16,15,14,20,19,15,16,15,19,19,15,15,15,19,0,14,15,15,19,19,15,15,15,19,19,15,15,14,20,19,15,15,15,20,19,15,15,15,19,19,15,15,15,20,19,12,12,12,13,13,16,15,16,11,11,16,16,16,12,12,17,16,16,11,11,17,16,16,12,11,17,17,17,13,13,18,16,16,14,14,18,18,17,13,13,17,16,16,13,13,17,17,17,13,13,17,16,17,12,12,17,15,16,13,13,17,16,17,12,12,17,16,16,13,12,17,16,16,12,12,18,17,17,13,13,18,16,16,13,14,18,17,17,12,12,17,16,16,12,12,17,17,17,12,12,18,17,17,13,13,17,16,16,14,14,17,17,17,12,12,17,16,16,12,12,18,17,17,12,12,13,14,14,9,9,16,14,14,13,13,16,15,15,14,14,16,14,14,13,13,16,14,14,13,13,17,16,15,15,15,16,15,16,16,15,17,15,15,14,14,17,15,15,15,15,17,15,15,14,14,17,15,15,14,14,16,15,16,16,16,17,15,15,14,14,16,15,15,14,15,16,15,15,14,14,17,15,15,15,15,16,16,16,15,16,18,15,14,13,14,17,15,15,14,14,17,14,14,13,13,17,15,15,14,14,16,15,15,15,15,17,15,14,14,14,17,15,15,14,14,17,14,14,13,13,13,11,11,11,11,16,14,14,12,12,16,14,14,13,13,16,14,14,12,12,16,14,14,12,12,16,15,15,13,13,17,14,14,14,14,17,15,15,13,13,16,15,15,14,13,16,15,15,13,13,16,15,15,13,13,16,14,14,14,14,16,15,15,13,13,16,14,15,13,13,17,15,15,13,13,17,15,15,13,13,16,14,14,14,14,17,15,15,12,12,17,14,15,13,13,17,15,15,12,12,16,15,15,13,13,17,14,14,14,14,17,15,15,12,12,17,15,15,13,13,16,15,15,12,12,14,15,15,8,8,14,14,14,19,18,14,15,15,19,20,14,14,14,19,19,14,14,15,19,20,15,16,15,19,21,15,16,16,21,19,15,15,15,20,19,15,16,16,19,20,15,15,15,19,18,15,16,15,20,19,15,16,16,19,20,15,15,15,19,19,15,16,15,20,20,14,15,15,19,19,15,15,15,21,19,15,17,16,19,20,15,14,15,0,21,15,15,15,19,20,14,14,14,19,19,15,15,15,20,19,15,16,16,19,19,15,15,15,19,18,15,15,15,20,19,14,14,15,18,18,14,12,12,9,9,14,14,14,18,18,14,14,14,18,18,14,15,14,19,18,14,14,14,19,18,15,15,15,19,20,15,14,14,18,18,15,15,15,20,19,15,15,15,18,20,15,15,15,19,18,15,15,15,19,19,15,14,14,19,21,15,15,15,20,20,15,15,15,18,19,14,15,15,19,20,15,15,15,20,19,15,14,14,19,21,15,15,15,18,19,15,14,15,20,19,14,15,15,21,21,14,15,15,19,20,15,14,14,19,20,15,15,15,19,20,15,15,14,20,20,14,15,15,20,19,13,12,12,13,13,17,16,16,11,11,17,16,16,12,12,18,17,16,11,11,18,16,16,11,11,17,17,17,13,13,18,16,16,13,13,18,17,17,12,12,18,16,16,13,13,18,17,17,12,12,18,17,17,13,13,18,16,16,14,14,18,16,17,12,12,18,17,17,13,13,17,17,17,12,12,17,17,17,12,12,17,16,15,13,13,18,16,16,11,11,17,16,16,12,12,17,16,17,11,11,18,17,17,13,12,17,16,16,13,13,17,17,17,12,12,17,16,17,12,12,18,17,17,11,11,14,14,14,9,9,16,14,14,13,13,17,15,15,14,14,17,14,14,13,13,16,14,14,13,13,17,15,15,14,14,16,16,16,16,15,18,15,15,14,14,17,16,15,15,15,17,15,15,14,14,17,15,15,14,15,16,16,16,15,16,18,15,15,14,14,17,15,15,14,15,17,15,15,14,14,17,15,15,14,14,16,16,16,15,16,17,14,14,13,13,17,15,15,14,14,18,15,15,13,13,17,15,15,14,14,16,16,16,15,15,17,14,14,13,13,17,15,15,14,14,17,14,14,13,13,13,11,11,11,11,16,14,14,12,12,16,14,14,12,13,17,15,14,11,11,17,14,14,11,11,17,15,15,13,14,17,14,14,14,14,17,15,15,13,13,17,14,14,13,13,17,15,15,13,13,17,15,15,13,13,17,14,14,14,14,17,15,15,13,13,18,14,15,13,13,17,15,15,13,13,16,15,15,13,13,17,14,14,13,13,17,15,15,12,12,16,14,14,12,12,16,15,15,12,12,17,16,15,13,13,17,14,14,13,13,17,15,15,12,12,16,15,15,12,12,16,15,15,12,12,13,15,15,8,8,14,14,14,18,19,14,15,15,19,20,14,14,14,18,18,14,15,15,18,18,15,16,16,19,19,15,16,17,20,20,15,15,15,19,19,15,16,16,18,20,15,15,15,19,19,15,15,16,18,18,15,17,16,19,19,15,15,15,18,21,15,16,16,21,20,15,15,15,19,21,15,16,15,20,19,15,16,17,20,20,15,15,15,19,19,15,16,16,21,20,15,15,15,19,20,15,15,15,19,19,15,16,16,20,19,15,15,15,19,19,15,16,15,20,21,15,15,15,21,19,14,12,12,8,8,14,14,14,20,18,14,13,13,19,19,14,14,14,19,18,15,14,14,19,20,14,15,15,20,20,15,14,14,21,20,15,15,15,20,20,15,15,14,21,19,15,15,15,19,19,15,15,15,19,20,15,14,14,20,20,15,15,15,19,20,15,14,14,19,20,15,15,15,20,20,15,15,15,20,19,15,14,14,20,21,15,15,15,20,21,15,14,14,20,0,15,16,15,20,21,15,15,15,19,20,15,14,14,19,19,15,15,15,19,20,15,15,15,19,19,15,15,15,18,20,13,12,12,13,13,18,16,17,12,12,17,16,16,12,12,17,17,16,11,11,18,16,16,11,11,17,17,18,13,13,18,16,16,14,14,18,17,17,13,13,18,16,16,13,13,18,17,17,12,12,17,17,16,13,13,17,16,16,13,14,18,17,17,12,12,18,16,16,12,13,17,16,17,12,12,17,18,17,13,13,18,16,16,13,13,18,17,17,12,12,17,16,16,12,12,17,17,17,11,11,17,16,17,12,12,17,16,16,13,13,17,16,16,11,11,17,16,16,12,12,18,16,17,11,11,14,14,14,9,9,16,14,15,13,13,17,15,15,14,14,17,14,14,12,12,16,14,14,13,13,18,15,15,15,15,17,15,16,15,16,18,15,15,14,14,17,15,16,15,15,17,15,15,14,14,18,15,15,14,14,16,16,16,16,15,17,15,15,14,14,16,15,15,14,14,17,15,15,14,14,17,15,15,14,14,17,16,16,15,15,17,15,14,13,13,17,15,15,14,14,17,15,15,13,13,17,15,15,14,14,16,16,16,15,15,18,15,14,14,14,17,15,15,14,14,18,15,15,13,13,13,12,12,11,11,16,14,14,12,12,16,14,14,13,13,17,15,15,12,12,17,14,14,12,12,17,15,15,14,14,17,14,14,14,14,17,15,15,13,13,17,15,14,13,13,17,15,15,13,13,17,15,15,13,13,16,14,14,14,14,17,15,15,13,13,16,14,14,13,13,16,15,15,13,13,17,15,16,13,13,17,14,14,14,13,17,15,15,12,12,16,15,14,12,12,17,15,15,12,12,16,15,16,13,13,16,14,14,14,13,17,15,15,12,12,16,14,14,12,12,17,15,15,12,12,14,15,15,8,8,14,14,14,18,18,14,15,15,19,18,14,14,14,18,18,14,15,15,19,20,15,16,15,21,18,15,16,16,18,0,15,15,15,19,20,15,16,16,20,0,15,16,15,19,18,15,15,15,19,19,15,16,16,21,19,15,15,15,19,19,15,16,16,20,20,15,15,15,19,19,15,15,15,19,18,15,16,16,20,20,15,14,15,20,19,15,15,15,19,20,15,15,15,19,19,15,16,15,19,20,15,16,16,19,20,15,15,15,19,19,15,16,15,20,20,15,15,15,20,18,13,12,12,8,8,14,14,14,19,20,14,14,14,19,19,14,15,15,20,20,14,14,14,18,19,15,15,15,20,0,15,14,14,18,20,15,15,15,19,19,15,15,15,21,19,15,15,15,19,20,15,15,15,20,21,15,14,14,20,19,15,15,15,20,19,15,15,14,21,19,15,15,15,19,18,15,15,15,20,19,15,14,14,19,19,15,15,16,20,19,15,15,15,20,0,15,15,15,19,21,15,15,15,22,20,15,14,14,22,19,15,15,15,19,20,15,14,14,20,19,14,15,15,19,21,0,0,0,2,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,1,6,6,6,8,8,6,8,8,7,9,9,10,11,11,8,8,8,7,9,9,11,12,12,9,9,9,6,7,7,10,11,11,10,11,11,10,11,11,13,13,13,12,12,12,10,12,11,14,14,14,12,12,12,6,5,5,9,6,6,9,6,6,9,7,7,12,10,10,11,7,6,9,7,7,13,11,11,12,7,7,7,8,8,12,10,10,12,10,10,11,10,10,15,13,13,13,9,9,12,11,11,15,14,14,15,11,11,8,7,7,12,11,11,12,11,11,11,11,11,14,13,14,14,12,12,12,11,11,16,15,15,14,12,12,0,10,10,0,12,12,0,12,12,0,11,11,0,14,14,0,11,11,0,11,11,0,15,15,0,11,11,7,8,8,13,11,11,12,10,10,12,11,11,15,13,13,14,11,11,12,10,10,16,14,14,15,10,10,9,7,7,13,11,12,13,12,11,12,11,11,15,14,14,14,12,12,13,12,12,16,15,15,15,12,12,0,11,11,0,12,12,0,12,13,0,12,12,0,15,15,0,12,12,0,12,12,0,16,15,0,12,12,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,3,3,0,9,9,0,9,9,0,10,10,0,9,9,0,10,10,0,10,10,0,10,10,0,10,10,0,7,7,0,7,7,0,6,6,0,8,8,0,7,7,0,8,8,0,8,8,0,7,7,0,8,8,0,7,7,0,9,9,0,8,9,0,10,10,0,9,9,0,10,10,0,10,11,0,9,9,0,10,10,0,9,9,0,11,11,0,12,12,0,12,12,0,11,11,0,12,12,0,13,13,0,12,12,0,13,13,0,8,8,0,12,12,0,12,12,0,13,13,0,13,13,0,13,13,0,13,13,0,13,13,0,13,13,0,7,7,0,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,9,0,11,11,0,12,12,0,13,13,0,12,12,0,13,13,0,13,13,0,12,12,0,12,12,0,9,9,0,12,12,0,13,13,0,14,14,0,13,13,0,14,14,0,14,14,0,13,13,0,14,14,0,7,7,0,0,0,0,0,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,2,0,0,0,0,0,0,0,1,5,5,0,7,7,0,8,8,0,9,9,0,12,12,0,8,8,0,9,9,0,13,13,0,8,8,0,6,6,0,11,11,0,12,12,0,12,12,0,14,14,0,11,12,0,12,12,0,15,15,0,12,12,0,5,5,0,5,5,0,6,6,0,7,7,0,10,10,0,6,6,0,7,7,0,11,11,0,6,6,0,7,7,0,11,11,0,12,11,0,11,11,0,14,14,0,10,10,0,12,12,0,15,15,0,12,12,0,6,6,0,12,12,0,12,12,0,12,12,0,14,14,0,11,11,0,12,12,0,16,16,0,12,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,0,0,0,8,8,0,12,12,0,12,12,0,12,12,0,15,15,0,12,12,0,11,11,0,16,16,0,11,11,0,6,6,0,12,12,0,12,12,0,13,13,0,15,15,0,12,12,0,13,13,0,15,15,0,12,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,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,2,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,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,4,3,7,9,12,16,16,3,2,5,7,11,14,15,7,4,5,6,9,12,15,8,5,5,5,8,10,14,9,7,6,6,8,10,12,12,10,10,7,6,8,10,15,12,10,6,4,7,9,0,0,0,0,0,0,0,0,0,0,0,0,249,213,64,0,0,0,0,0,64,223,64,0,0,0,0,0,136,227,64,0,0,0,0,0,112,231,64,0,0,0,0,0,88,235,64,0,0,0,0,0,64,239,64,0,0,0,0,0,136,243,64,0,0,0,0,0,112,247,64,0,0,0,0,0,88,251,64,0,0,0,0,0,64,255,64,0,0,0,0,0,136,3,65,0,0,0,0,136,132,14,65,176,240,7,0,48,241,7,0,48,242,7,0,48,244,7,0,48,248,7,0,48,0,8,0,48,16,8,0,48,48,8,0,24,0,120,58,76,70,11,60,242,204,192,60,116,252,59,61,86,73,154,61,241,93,228,61,248,163,29,62,180,231,78,62,54,157,130,62,78,220,159,62,193,174,190,62,65,132,222,62,173,194,254,62,186,101,15,63,248,0,31,63,29,233,45,63,249,219,59,63,45,162,72,63,160,17,84,63,38,15,94,63,46,143,102,63,112,149,109,63,174,51,115,63,159,135,119,63,66,184,122,63,196,242,124,63,75,103,126,63,196,69,127,63,241,186,127,63,217,237,127,63,162,253,127,63,248,255,127,63,168,9,120,57,17,119,11,59,135,139,193,59,74,113,61,60,148,82,156,60,94,8,233,60,42,83,34,61,74,118,87,61,138,227,137,61,7,140,171,61,34,154,208,61,108,239,248,61,164,52,18,62,100,112,41,62,65,21,66,62,67,11,92,62,47,56,119,62,197,191,137,62,92,97,152,62,135,112,167,62,4,220,182,62,188,145,198,62,231,126,214,62,48,144,230,62,227,177,246,62,13,104,3,63,121,107,11,63,98,89,19,63,42,40,27,63,137,206,34,63,166,67,42,63,49,127,49,63,126,121,56,63,153,43,63,63,92,143,69,63,127,159,75,63,165,87,81,63,104,180,86,63,89,179,91,63,8,83,96,63,252,146,100,63,177,115,104,63,138,246,107,63,198,29,111,63,109,236,113,63,62,102,116,63,154,143,118,63,104,109,120,63,3,5,122,63,26,92,123,63,153,120,124,63,143,96,125,63], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+510456); +/* memory initializer */ allocate([17,26,126,63,39,171,126,63,176,25,127,63,74,107,127,63,68,165,127,63,132,204,127,63,123,229,127,63,17,244,127,63,158,251,127,63,219,254,127,63,218,255,127,63,0,0,128,63,5,12,120,56,50,131,11,58,118,186,193,58,226,203,61,59,38,207,156,59,139,32,234,59,245,102,35,60,63,100,89,60,184,127,139,60,59,23,174,60,239,114,212,60,96,140,254,60,45,46,22,61,114,237,46,61,155,127,73,61,220,223,101,61,123,4,130,61,159,250,145,61,71,207,162,61,38,127,180,61,173,6,199,61,16,98,218,61,63,141,238,61,244,193,1,62,185,160,12,62,128,224,23,62,182,126,35,62,166,120,47,62,116,203,59,62,34,116,72,62,141,111,85,62,107,186,98,62,83,81,112,62,180,48,126,62,110,42,134,62,252,92,141,62,9,174,148,62,138,27,156,62,100,163,163,62,112,67,171,62,119,249,178,62,54,195,186,62,93,158,194,62,147,136,202,62,118,127,210,62,154,128,218,62,142,137,226,62,217,151,234,62,2,169,242,62,139,186,250,62,251,100,1,63,99,106,5,63,65,108,9,63,89,105,13,63,116,96,17,63,94,80,21,63,231,55,25,63,231,21,29,63,58,233,32,63,197,176,36,63,116,107,40,63,62,24,44,63,35,182,47,63,43,68,51,63,109,193,54,63,10,45,58,63,48,134,61,63,26,204,64,63,17,254,67,63,107,27,71,63,142,35,74,63,238,21,77,63,15,242,79,63,132,183,82,63,239,101,85,63,3,253,87,63,129,124,90,63,60,228,92,63,21,52,95,63,254,107,97,63,246,139,99,63,14,148,101,63,98,132,103,63,33,93,105,63,133,30,107,63,213,200,108,63,103,92,110,63,155,217,111,63,224,64,113,63,172,146,114,63,131,207,115,63,241,247,116,63,139,12,118,63,239,13,119,63,193,252,119,63,172,217,120,63,99,165,121,63,155,96,122,63,15,12,123,63,124,168,123,63,163,54,124,63,71,183,124,63,41,43,125,63,13,147,125,63,183,239,125,63,229,65,126,63,89,138,126,63,205,201,126,63,251,0,127,63,150,48,127,63,78,89,127,63,205,123,127,63,182,152,127,63,167,176,127,63,53,196,127,63,239,211,127,63,91,224,127,63,245,233,127,63,51,241,127,63,127,246,127,63,59,250,127,63,190,252,127,63,84,254,127,63,64,255,127,63,186,255,127,63,238,255,127,63,254,255,127,63,0,0,128,63,169,12,120,55,54,134,11,57,38,198,193,57,94,226,61,58,234,237,156,58,85,101,234,58,56,170,35,59,207,219,89,59,169,226,139,59,42,178,174,59,13,91,213,59,204,219,255,59,91,25,23,60,250,46,48,60,194,45,75,60,156,20,104,60,46,113,131,60,225,202,147,60,185,22,165,60,1,84,183,60,245,129,202,60,198,159,222,60,155,172,243,60,199,211,4,61,213,71,16,61,250,49,28,61,174,145,40,61,101,102,53,61,141,175,66,61,140,108,80,61,193,156,94,61,133,63,109,61,41,84,124,61,252,236,133,61,26,232,141,61,13,27,150,61,110,133,158,61,212,38,167,61,210,254,175,61,245,12,185,61,200,80,194,61,209,201,203,61,146,119,213,61,139,89,223,61,51,111,233,61,2,184,243,61,105,51,254,61,106,112,4,62,214,223,9,62,171,103,15,62,153,7,21,62,77,191,26,62,116,142,32,62,181,116,38,62,184,113,44,62,34,133,50,62,149,174,56,62,178,237,62,62,21,66,69,62,92,171,75,62,30,41,82,62,243,186,88,62,112,96,95,62,40,25,102,62,170,228,108,62,132,194,115,62,68,178,122,62,185,217,128,62,203,98,132,62,26,244,135,62,105,141,139,62,120,46,143,62,6,215,146,62,211,134,150,62,156,61,154,62,29,251,157,62,19,191,161,62,57,137,165,62,71,89,169,62,249,46,173,62,5,10,177,62,36,234,180,62,13,207,184,62,117,184,188,62,18,166,192,62,153,151,196,62,190,140,200,62,52,133,204,62,175,128,208,62,225,126,212,62,125,127,216,62,52,130,220,62,184,134,224,62,185,140,228,62,233,147,232,62,248,155,236,62,150,164,240,62,117,173,244,62,67,182,248,62,178,190,252,62,57,99,0,63,153,102,2,63,82,105,4,63,60,107,6,63,48,108,8,63,6,108,10,63,151,106,12,63,188,103,14,63,78,99,16,63,39,93,18,63,33,85,20,63,21,75,22,63,222,62,24,63,87,48,26,63,92,31,28,63,199,11,30,63,117,245,31,63,66,220,33,63,12,192,35,63,176,160,37,63,12,126,39,63,254,87,41,63,104,46,43,63,39,1,45,63,29,208,46,63,43,155,48,63,51,98,50,63,23,37,52,63,188,227,53,63,4,158,55,63,214,83,57,63,23,5,59,63,173,177,60,63,128,89,62,63,120,252,63,63,126,154,65,63,124,51,67,63,93,199,68,63,12,86,70,63,119,223,71,63,138,99,73,63,54,226,74,63,104,91,76,63,17,207,77,63,35,61,79,63,145,165,80,63,76,8,82,63,75,101,83,63,130,188,84,63,231,13,86,63,114,89,87,63,26,159,88,63,218,222,89,63,172,24,91,63,138,76,92,63,113,122,93,63,93,162,94,63,78,196,95,63,67,224,96,63,58,246,97,63,54,6,99,63,56,16,100,63,67,20,101,63,92,18,102,63,133,10,103,63,198,252,103,63,37,233,104,63,168,207,105,63,89,176,106,63,64,139,107,63,102,96,108,63,216,47,109,63,159,249,109,63,201,189,110,63,97,124,111,63,118,53,112,63,23,233,112,63,81,151,113,63,53,64,114,63,212,227,114,63,61,130,115,63,131,27,116,63,184,175,116,63,238,62,117,63,56,201,117,63,171,78,118,63,90,207,118,63,90,75,119,63,192,194,119,63,162,53,120,63,21,164,120,63,48,14,121,63,8,116,121,63,182,213,121,63,79,51,122,63,235,140,122,63,162,226,122,63,139,52,123,63,191,130,123,63,85,205,123,63,102,20,124,63,9,88,124,63,88,152,124,63,106,213,124,63,88,15,125,63,58,70,125,63,41,122,125,63,62,171,125,63,143,217,125,63,54,5,126,63,75,46,126,63,228,84,126,63,27,121,126,63,7,155,126,63,190,186,126,63,88,216,126,63,236,243,126,63,144,13,127,63,91,37,127,63,99,59,127,63,188,79,127,63,125,98,127,63,185,115,127,63,135,131,127,63,249,145,127,63,36,159,127,63,26,171,127,63,238,181,127,63,179,191,127,63,122,200,127,63,85,208,127,63,84,215,127,63,136,221,127,63,0,227,127,63,204,231,127,63,249,235,127,63,150,239,127,63,177,242,127,63,85,245,127,63,144,247,127,63,109,249,127,63,246,250,127,63,54,252,127,63,55,253,127,63,1,254,127,63,156,254,127,63,18,255,127,63,103,255,127,63,163,255,127,63,204,255,127,63,229,255,127,63,244,255,127,63,252,255,127,63,255,255,127,63,0,0,128,63,0,0,128,63,60,12,120,54,253,134,11,56,19,201,193,56,248,231,61,57,148,245,156,57,115,118,234,57,238,186,35,58,113,249,89,58,32,251,139,58,96,216,174,58,34,148,213,58,3,23,0,59,209,82,23,59,65,125,48,59,21,150,75,59,8,157,104,59,233,200,131,59,20,58,148,59,218,161,165,59,16,0,184,59,136,84,203,59,16,159,223,59,118,223,244,59,194,138,5,60,128,32,17,60,217,48,29,60,172,187,41,60,219,192,54,60,67,64,68,60,194,57,82,60,52,173,96,60,115,154,111,60,88,1,127,60,222,112,135,60,186,157,143,60,42,7,152,60,25,173,160,60,112,143,169,60,23,174,178,60,246,8,188,60,243,159,197,60,245,114,207,60,225,129,217,60,156,204,227,60,10,83,238,60,14,21,249,60,70,9,2,61,177,165,7,61,187,95,13,61,81,55,19,61,102,44,25,61,230,62,31,61,195,110,37,61,233,187,43,61,71,38,50,61,202,173,56,61,97,82,63,61,247,19,70,61,121,242,76,61,210,237,83,61,240,5,91,61,187,58,98,61,32,140,105,61,8,250,112,61,93,132,120,61,132,21,128,61,249,246,131,61,130,230,135,61,19,228,139,61,159,239,143,61,26,9,148,61,119,48,152,61,169,101,156,61,163,168,160,61,88,249,164,61,186,87,169,61,186,195,173,61,76,61,178,61,95,196,182,61,230,88,187,61,209,250,191,61,18,170,196,61,152,102,201,61,85,48,206,61,56,7,211,61,48,235,215,61,47,220,220,61,34,218,225,61,248,228,230,61,161,252,235,61,11,33,241,61,35,82,246,61,217,143,251,61,13,109,0,62,105,24,3,62,247,201,5,62,174,129,8,62,133,63,11,62,113,3,14,62,104,205,16,62,96,157,19,62,79,115,22,62,42,79,25,62,232,48,28,62,124,24,31,62,221,5,34,62,255,248,36,62,215,241,39,62,90,240,42,62,125,244,45,62,51,254,48,62,114,13,52,62,45,34,55,62,88,60,58,62,232,91,61,62,208,128,64,62,3,171,67,62,118,218,70,62,26,15,74,62,229,72,77,62,199,135,80,62,181,203,83,62,162,20,87,62,127,98,90,62,63,181,93,62,213,12,97,62,50,105,100,62,73,202,103,62,12,48,107,62,108,154,110,62,92,9,114,62,203,124,117,62,173,244,120,62,241,112,124,62,138,241,127,62,52,187,129,62,190,127,131,62,91,70,133,62,4,15,135,62,176,217,136,62,89,166,138,62,245,116,140,62,126,69,142,62,234,23,144,62,50,236,145,62,78,194,147,62,54,154,149,62,224,115,151,62,70,79,153,62,93,44,155,62,31,11,157,62,130,235,158,62,127,205,160,62,11,177,162,62,31,150,164,62,177,124,166,62,186,100,168,62,47,78,170,62,9,57,172,62,62,37,174,62,198,18,176,62,150,1,178,62,167,241,179,62,238,226,181,62,100,213,183,62,254,200,185,62,179,189,187,62,122,179,189,62,74,170,191,62,25,162,193,62,221,154,195,62,142,148,197,62,34,143,199,62,142,138,201,62,203,134,203,62,205,131,205,62,140,129,207,62,253,127,209,62,24,127,211,62,210,126,213,62,33,127,215,62,252,127,217,62,88,129,219,62,45,131,221,62,112,133,223,62,23,136,225,62,25,139,227,62,108,142,229,62,5,146,231,62,219,149,233,62,228,153,235,62,21,158,237,62,102,162,239,62,203,166,241,62,59,171,243,62,173,175,245,62,21,180,247,62,107,184,249,62,164,188,251,62,181,192,253,62,150,196,255,62,30,228,0,63,207,229,1,63,88,231,2,63,182,232,3,63,226,233,4,63,215,234,5,63,146,235,6,63,12,236,7,63,66,236,8,63,45,236,9,63,202,235,10,63,19,235,11,63,4,234,12,63,151,232,13,63,200,230,14,63,145,228,15,63,239,225,16,63,220,222,17,63,84,219,18,63,81,215,19,63,208,210,20,63,202,205,21,63,61,200,22,63,34,194,23,63,117,187,24,63,50,180,25,63,85,172,26,63,215,163,27,63,182,154,28,63,236,144,29,63,117,134,30,63,77,123,31,63,110,111,32,63,214,98,33,63,126,85,34,63,100,71,35,63,130,56,36,63,212,40,37,63,87,24,38,63,5,7,39,63,219,244,39,63,213,225,40,63,239,205,41,63,36,185,42,63,113,163,43,63,209,140,44,63,64,117,45,63,188,92,46,63,63,67,47,63,199,40,48,63,78,13,49,63,211,240,49,63,80,211,50,63,195,180,51,63,39,149,52,63,122,116,53,63,184,82,54,63,220,47,55,63,229,11,56,63,206,230,56,63,149,192,57,63,54,153,58,63,174,112,59,63,249,70,60,63,21,28,61,63,255,239,61,63,179,194,62,63,48,148,63,63,113,100,64,63,116,51,65,63,55,1,66,63,182,205,66,63,239,152,67,63,224,98,68,63,134,43,69,63,222,242,69,63,230,184,70,63,156,125,71,63,253,64,72,63,7,3,73,63,184,195,73,63,14,131,74,63,6,65,75,63,159,253,75,63,215,184,76,63,172,114,77,63,28,43,78,63,38,226,78,63,199,151,79,63,253,75,80,63,201,254,80,63,39,176,81,63,22,96,82,63,150,14,83,63,164,187,83,63,63,103,84,63,103,17,85,63,26,186,85,63,86,97,86,63,28,7,87,63,105,171,87,63,62,78,88,63,152,239,88,63,120,143,89,63,221,45,90,63,198,202,90,63,50,102,91,63,33,0,92,63,147,152,92,63,134,47,93,63,251,196,93,63,242,88,94,63,105,235,94,63,98,124,95,63,219,11,96,63,213,153,96,63,80,38,97,63,76,177,97,63,201,58,98,63,199,194,98,63,70,73,99,63,71,206,99,63,202,81,100,63,208,211,100,63,88,84,101,63,100,211,101,63,244,80,102,63,9,205,102,63,163,71,103,63,195,192,103,63,107,56,104,63,154,174,104,63,82,35,105,63,147,150,105,63,96,8,106,63,184,120,106,63,157,231,106,63,16,85,107,63,19,193,107,63,166,43,108,63,203,148,108,63,132,252,108,63,209,98,109,63,180,199,109,63,48,43,110,63,68,141,110,63,244,237,110,63,64,77,111,63,42,171,111,63,181,7,112,63,225,98,112,63,177,188,112,63,38,21,113,63,67,108,113,63,10,194,113,63,123,22,114,63,155,105,114,63,106,187,114,63,234,11,115,63,31,91,115,63,9,169,115,63,172,245,115,63,9,65,116,63,35,139,116,63,252,211,116,63,151,27,117,63,245,97,117,63,26,167,117,63,8,235,117,63,193,45,118,63,72,111,118,63,159,175,118,63,202,238,118,63,201,44,119,63,161,105,119,63,84,165,119,63,228,223,119,63,85,25,120,63,168,81,120,63,226,136,120,63,3,191,120,63,16,244,120,63,11,40,121,63,247,90,121,63,215,140,121,63,173,189,121,63,125,237,121,63,73,28,122,63,20,74,122,63,226,118,122,63,181,162,122,63,144,205,122,63,118,247,122,63,107,32,123,63,112,72,123,63,138,111,123,63,186,149,123,63,5,187,123,63,109,223,123,63,245,2,124,63,160,37,124,63,113,71,124,63,108,104,124,63,147,136,124,63,233,167,124,63,114,198,124,63,48,228,124,63,38,1,125,63,89,29,125,63,201,56,125,63,124,83,125,63,115,109,125,63,178,134,125,63,60,159,125,63,19,183,125,63,60,206,125,63,184,228,125,63,139,250,125,63,184,15,126,63,66,36,126,63,44,56,126,63,120,75,126,63,43,94,126,63,70,112,126,63,204,129,126,63,194,146,126,63,41,163,126,63,4,179,126,63,86,194,126,63,35,209,126,63,109,223,126,63,55,237,126,63,131,250,126,63,85,7,127,63,175,19,127,63,148,31,127,63,7,43,127,63,10,54,127,63,160,64,127,63,205,74,127,63,146,84,127,63,242,93,127,63,239,102,127,63,141,111,127,63,206,119,127,63,181,127,127,63,67,135,127,63,124,142,127,63,98,149,127,63,247,155,127,63,61,162,127,63,56,168,127,63,233,173,127,63,83,179,127,63,120,184,127,63,90,189,127,63,252,193,127,63,95,198,127,63,134,202,127,63,116,206,127,63,41,210,127,63,168,213,127,63,244,216,127,63,13,220,127,63,247,222,127,63,179,225,127,63,67,228,127,63,168,230,127,63,229,232,127,63,252,234,127,63,237,236,127,63,188,238,127,63,105,240,127,63,246,241,127,63,101,243,127,63,183,244,127,63,238,245,127,63,11,247,127,63,16,248,127,63,254,248,127,63,214,249,127,63,155,250,127,63,76,251,127,63,236,251,127,63,124,252,127,63,252,252,127,63,110,253,127,63,211,253,127,63,44,254,127,63,121,254,127,63,189,254,127,63,247,254,127,63,42,255,127,63,84,255,127,63,120,255,127,63,150,255,127,63,175,255,127,63,195,255,127,63,211,255,127,63,224,255,127,63,234,255,127,63,241,255,127,63,246,255,127,63,250,255,127,63,253,255,127,63,254,255,127,63,255,255,127,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,171,15,120,53,24,135,11,55,225,201,193,55,107,233,61,56,128,247,156,56,187,122,234,56,24,191,35,57,213,0,90,57,56,1,140,57,229,225,174,57,88,162,213,57,60,33,0,58,24,97,23,58,175,144,48,58,243,175,75,58,212,190,104,58,159,222,131,58,143,85,148,58,48,196,165,58,119,42,184,58,90,136,203,58,204,221,223,58,191,42,245,58,148,183,5,59,124,85,17,59,16,111,29,59,73,4,42,59,31,21,55,59,138,161,68,59,129,169,82,59,252,44,97,59,241,43,112,59,88,166,127,59,19,206,135,59,169,6,144,59,233,124,152,59,204,48,161,59,79,34,170,59,106,81,179,59,26,190,188,59,86,104,198,59,26,80,208,59,95,117,218,59,31,216,228,59,83,120,239,59,244,85,250,59,126,184,2,60,177,100,8,60,145,47,14,60,25,25,20,60,70,33,26,60,19,72,32,60,126,141,38,60,129,241,44,60,25,116,51,60,65,21,58,60,246,212,64,60,50,179,71,60,243,175,78,60,50,203,85,60,235,4,93,60,26,93,100,60,186,211,107,60,198,104,115,60,58,28,123,60,7,119,129,60,33,111,133,60,102,118,137,60,212,140,141,60,105,178,145,60,33,231,149,60,251,42,154,60,243,125,158,60,6,224,162,60,50,81,167,60,115,209,171,60,199,96,176,60,43,255,180,60,154,172,185,60,19,105,190,60,146,52,195,60,20,15,200,60,149,248,204,60,19,241,209,60,137,248,214,60,245,14,220,60,83,52,225,60,160,104,230,60,215,171,235,60,246,253,240,60,249,94,246,60,220,206,251,60,205,166,0,61,153,109,3,61,207,59,6,61,109,17,9,61,114,238,11,61,220,210,14,61,167,190,17,61,211,177,20,61,94,172,23,61,68,174,26,61,133,183,29,61,30,200,32,61,12,224,35,61,78,255,38,61,225,37,42,61,196,83,45,61,243,136,48,61,109,197,51,61,47,9,55,61,55,84,58,61,130,166,61,61,15,0,65,61,218,96,68,61,226,200,71,61,35,56,75,61,156,174,78,61,73,44,82,61,40,177,85,61,55,61,89,61,115,208,92,61,217,106,96,61,103,12,100,61,25,181,103,61,238,100,107,61,227,27,111,61,244,217,114,61,30,159,118,61,96,107,122,61,182,62,126,61,143,12,129,61,73,253,130,61,138,241,132,61,79,233,134,61,150,228,136,61,94,227,138,61,167,229,140,61,109,235,142,61,175,244,144,61,109,1,147,61,164,17,149,61,83,37,151,61,120,60,153,61,17,87,155,61,30,117,157,61,155,150,159,61,136,187,161,61,226,227,163,61,169,15,166,61,218,62,168,61,116,113,170,61,116,167,172,61,218,224,174,61,162,29,177,61,205,93,179,61,87,161,181,61,62,232,183,61,130,50,186,61,32,128,188,61,22,209,190,61,98,37,193,61,2,125,195,61,245,215,197,61,57,54,200,61,203,151,202,61,169,252,204,61,211,100,207,61,68,208,209,61,252,62,212,61,249,176,214,61,56,38,217,61,184,158,219,61,117,26,222,61,111,153,224,61,163,27,227,61,14,161,229,61,175,41,232,61,132,181,234,61,138,68,237,61,191,214,239,61,33,108,242,61,174,4,245,61,99,160,247,61,62,63,250,61,61,225,252,61,93,134,255,61,78,23,1,62,252,108,2,62,56,196,3,62,255,28,5,62,81,119,6,62,45,211,7,62,145,48,9,62,125,143,10,62,238,239,11,62,228,81,13,62,94,181,14,62,89,26,16,62,214,128,17,62,210,232,18,62,77,82,20,62,69,189,21,62,184,41,23,62,166,151,24,62,13,7,26,62,236,119,27,62,65,234,28,62,11,94,30,62,73,211,31,62,250,73,33,62,28,194,34,62,173,59,36,62,172,182,37,62,24,51,39,62,240,176,40,62,50,48,42,62,220,176,43,62,238,50,45,62,101,182,46,62,64,59,48,62,126,193,49,62,30,73,51,62,29,210,52,62,123,92,54,62,54,232,55,62,76,117,57,62,187,3,59,62,131,147,60,62,162,36,62,62,22,183,63,62,222,74,65,62,248,223,66,62,98,118,68,62,28,14,70,62,35,167,71,62,117,65,73,62,18,221,74,62,247,121,76,62,35,24,78,62,149,183,79,62,74,88,81,62,66,250,82,62,121,157,84,62,240,65,86,62,163,231,87,62,146,142,89,62,186,54,91,62,26,224,92,62,177,138,94,62,124,54,96,62,122,227,97,62,169,145,99,62,7,65,101,62,147,241,102,62,75,163,104,62,44,86,106,62,54,10,108,62,102,191,109,62,187,117,111,62,51,45,113,62,204,229,114,62,132,159,116,62,90,90,118,62,75,22,120,62,85,211,121,62,120,145,123,62,176,80,125,62,253,16,127,62,46,105,128,62,101,74,129,62,36,44,130,62,105,14,131,62,52,241,131,62,130,212,132,62,84,184,133,62,169,156,134,62,127,129,135,62,213,102,136,62,171,76,137,62,255,50,138,62,209,25,139,62,32,1,140,62,233,232,140,62,46,209,141,62,236,185,142,62,34,163,143,62,208,140,144,62,244,118,145,62,142,97,146,62,156,76,147,62,29,56,148,62,17,36,149,62,118,16,150,62,76,253,150,62,144,234,151,62,67,216,152,62,99,198,153,62,239,180,154,62,230,163,155,62,71,147,156,62,17,131,157,62,67,115,158,62,219,99,159,62,218,84,160,62,60,70,161,62,3,56,162,62,43,42,163,62,181,28,164,62,160,15,165,62,233,2,166,62,145,246,166,62,149,234,167,62,245,222,168,62,176,211,169,62,197,200,170,62,50,190,171,62,246,179,172,62,17,170,173,62,129,160,174,62,69,151,175,62,91,142,176,62,196,133,177,62,125,125,178,62,133,117,179,62,220,109,180,62,128,102,181,62,112,95,182,62,171,88,183,62,47,82,184,62,252,75,185,62,17,70,186,62,108,64,187,62,11,59,188,62,239,53,189,62,22,49,190,62,126,44,191,62,38,40,192,62,13,36,193,62,51,32,194,62,150,28,195,62,52,25,196,62,12,22,197,62,30,19,198,62,104,16,199,62,233,13,200,62,159,11,201,62,138,9,202,62,169,7,203,62,249,5,204,62,123,4,205,62,44,3,206,62,11,2,207,62,24,1,208,62,81,0,209,62,181,255,209,62,66,255,210,62,248,254,211,62,213,254,212,62,216,254,213,62,255,254,214,62,75,255,215,62,184,255,216,62,71,0,218,62,245,0,219,62,195,1,220,62,173,2,221,62,180,3,222,62,214,4,223,62,17,6,224,62,101,7,225,62,208,8,226,62,81,10,227,62,231,11,228,62,144,13,229,62,76,15,230,62,25,17,231,62,245,18,232,62,224,20,233,62,217,22,234,62,221,24,235,62,236,26,236,62,5,29,237,62,39,31,238,62,79,33,239,62,125,35,240,62,176,37,241,62,230,39,242,62,31,42,243,62,88,44,244,62,145,46,245,62,200,48,246,62,253,50,247,62,45,53,248,62,88,55,249,62,124,57,250,62,153,59,251,62,172,61,252,62,181,63,253,62,179,65,254,62,163,67,255,62,195,34,0,63,173,163,0,63,142,36,1,63,102,165,1,63,53,38,2,63,250,166,2,63,180,39,3,63,99,168,3,63,5,41,4,63,155,169,4,63,36,42,5,63,159,170,5,63,12,43,6,63,105,171,6,63,183,43,7,63,244,171,7,63,32,44,8,63,59,172,8,63,68,44,9,63,58,172,9,63,28,44,10,63,235,171,10,63,164,43,11,63,73,171,11,63,216,42,12,63,80,170,12,63,177,41,13,63,251,168,13,63,44,40,14,63,69,167,14,63,68,38,15,63,41,165,15,63,243,35,16,63,162,162,16,63,53,33,17,63,172,159,17,63,5,30,18,63,65,156,18,63,95,26,19,63,94,152,19,63,61,22,20,63,252,147,20,63,155,17,21,63,24,143,21,63,116,12,22,63,173,137,22,63,195,6,23,63,182,131,23,63,133,0,24,63,46,125,24,63,179,249,24,63,18,118,25,63,74,242,25,63,91,110,26,63,69,234,26,63,6,102,27,63,159,225,27,63,14,93,28,63,84,216,28,63,111,83,29,63,95,206,29,63,36,73,30,63,188,195,30,63,40,62,31,63,102,184,31,63,119,50,32,63,90,172,32,63,14,38,33,63,146,159,33,63,230,24,34,63,10,146,34,63,253,10,35,63,190,131,35,63,77,252,35,63,169,116,36,63,211,236,36,63,200,100,37,63,138,220,37,63,22,84,38,63,110,203,38,63,143,66,39,63,122,185,39,63,47,48,40,63,172,166,40,63,241,28,41,63,254,146,41,63,210,8,42,63,108,126,42,63,205,243,42,63,243,104,43,63,223,221,43,63,143,82,44,63,3,199,44,63,59,59,45,63,54,175,45,63,244,34,46,63,116,150,46,63,182,9,47,63,185,124,47,63,125,239,47,63,1,98,48,63,69,212,48,63,72,70,49,63,10,184,49,63,139,41,50,63,202,154,50,63,198,11,51,63,127,124,51,63,246,236,51,63,40,93,52,63,22,205,52,63,191,60,53,63,36,172,53,63,66,27,54,63,27,138,54,63,174,248,54,63,249,102,55,63,254,212,55,63,187,66,56,63,47,176,56,63,91,29,57,63,63,138,57,63,217,246,57,63,41,99,58,63,48,207,58,63,236,58,59,63,93,166,59,63,130,17,60,63,93,124,60,63,235,230,60,63,44,81,61,63,33,187,61,63,201,36,62,63,35,142,62,63,48,247,62,63,238,95,63,63,94,200,63,63,126,48,64,63,80,152,64,63,209,255,64,63,3,103,65,63,228,205,65,63,117,52,66,63,181,154,66,63,163,0,67,63,64,102,67,63,139,203,67,63,131,48,68,63,41,149,68,63,124,249,68,63,123,93,69,63,39,193,69,63,127,36,70,63,132,135,70,63,51,234,70,63,142,76,71,63,148,174,71,63,68,16,72,63,159,113,72,63,164,210,72,63,83,51,73,63,172,147,73,63,174,243,73,63,89,83,74,63,173,178,74,63,169,17,75,63,77,112,75,63,154,206,75,63,143,44,76,63,43,138,76,63,110,231,76,63,89,68,77,63,234,160,77,63,34,253,77,63,0,89,78,63,133,180,78,63,176,15,79,63,128,106,79,63,246,196,79,63,18,31,80,63,210,120,80,63,56,210,80,63,66,43,81,63,242,131,81,63,69,220,81,63,61,52,82,63,217,139,82,63,24,227,82,63,252,57,83,63,131,144,83,63,174,230,83,63,123,60,84,63,236,145,84,63,0,231,84,63,183,59,85,63,16,144,85,63,12,228,85,63,170,55,86,63,235,138,86,63,206,221,86,63,83,48,87,63,121,130,87,63,66,212,87,63,172,37,88,63,184,118,88,63,101,199,88,63,180,23,89,63,164,103,89,63,53,183,89,63,104,6,90,63,59,85,90,63,175,163,90,63,197,241,90,63,123,63,91,63,210,140,91,63,201,217,91,63,97,38,92,63,154,114,92,63,115,190,92,63,237,9,93,63,7,85,93,63,194,159,93,63,29,234,93,63,24,52,94,63,179,125,94,63,239,198,94,63,203,15,95,63,72,88,95,63,100,160,95,63,33,232,95,63,126,47,96,63,123,118,96,63,24,189,96,63,85,3,97,63,51,73,97,63,177,142,97,63,207,211,97,63,141,24,98,63,236,92,98,63,235,160,98,63,138,228,98,63,202,39,99,63,170,106,99,63,42,173,99,63,75,239,99,63,13,49,100,63,111,114,100,63,114,179,100,63,21,244,100,63,90,52,101,63,63,116,101,63,197,179,101,63,236,242,101,63,180,49,102,63,29,112,102,63,39,174,102,63,211,235,102,63,32,41,103,63,15,102,103,63,159,162,103,63,209,222,103,63,164,26,104,63,26,86,104,63,49,145,104,63,235,203,104,63,71,6,105,63,69,64,105,63,230,121,105,63,42,179,105,63,16,236,105,63,153,36,106,63,197,92,106,63,148,148,106,63,7,204,106,63,29,3,107,63,214,57,107,63,52,112,107,63,53,166,107,63,218,219,107,63,36,17,108,63,18,70,108,63,164,122,108,63,220,174,108,63,184,226,108,63,57,22,109,63,96,73,109,63,44,124,109,63,157,174,109,63,181,224,109,63,115,18,110,63,214,67,110,63,225,116,110,63,146,165,110,63,233,213,110,63,232,5,111,63,142,53,111,63,219,100,111,63,209,147,111,63,110,194,111,63,179,240,111,63,160,30,112,63,54,76,112,63,117,121,112,63,93,166,112,63,239,210,112,63,41,255,112,63,14,43,113,63,156,86,113,63,213,129,113,63,184,172,113,63,70,215,113,63,127,1,114,63,99,43,114,63,243,84,114,63,46,126,114,63,21,167,114,63,169,207,114,63,233,247,114,63,214,31,115,63,113,71,115,63,184,110,115,63,173,149,115,63,80,188,115,63,162,226,115,63,161,8,116,63,80,46,116,63,174,83,116,63,187,120,116,63,119,157,116,63,228,193,116,63,1,230,116,63,206,9,117,63,76,45,117,63,123,80,117,63,92,115,117,63,238,149,117,63,51,184,117,63,42,218,117,63,211,251,117,63,48,29,118,63,64,62,118,63,3,95,118,63,122,127,118,63,166,159,118,63,134,191,118,63,27,223,118,63,101,254,118,63,101,29,119,63,27,60,119,63,135,90,119,63,169,120,119,63,131,150,119,63,19,180,119,63,91,209,119,63,91,238,119,63,20,11,120,63,132,39,120,63,174,67,120,63,145,95,120,63,46,123,120,63,132,150,120,63,149,177,120,63,96,204,120,63,231,230,120,63,41,1,121,63,38,27,121,63,223,52,121,63,85,78,121,63,136,103,121,63,120,128,121,63,37,153,121,63,144,177,121,63,185,201,121,63,161,225,121,63,72,249,121,63,174,16,122,63,212,39,122,63,185,62,122,63,96,85,122,63,198,107,122,63,238,129,122,63,216,151,122,63,131,173,122,63,241,194,122,63,33,216,122,63,20,237,122,63,202,1,123,63,68,22,123,63,130,42,123,63,133,62,123,63,77,82,123,63,217,101,123,63,43,121,123,63,68,140,123,63,34,159,123,63,200,177,123,63,52,196,123,63,104,214,123,63,99,232,123,63,39,250,123,63,180,11,124,63,9,29,124,63,40,46,124,63,17,63,124,63,196,79,124,63,65,96,124,63,137,112,124,63,156,128,124,63,124,144,124,63,39,160,124,63,158,175,124,63,226,190,124,63,244,205,124,63,211,220,124,63,128,235,124,63,251,249,124,63,69,8,125,63,94,22,125,63,71,36,125,63,255,49,125,63,136,63,125,63,225,76,125,63,11,90,125,63,7,103,125,63,212,115,125,63,115,128,125,63,229,140,125,63,42,153,125,63,66,165,125,63,46,177,125,63,238,188,125,63,130,200,125,63,235,211,125,63,41,223,125,63,61,234,125,63,38,245,125,63,230,255,125,63,124,10,126,63,234,20,126,63,47,31,126,63,75,41,126,63,64,51,126,63,13,61,126,63,180,70,126,63,51,80,126,63,140,89,126,63,191,98,126,63,205,107,126,63,181,116,126,63,120,125,126,63,23,134,126,63,146,142,126,63,233,150,126,63,28,159,126,63,44,167,126,63,26,175,126,63,229,182,126,63,142,190,126,63,22,198,126,63,124,205,126,63,194,212,126,63,231,219,126,63,235,226,126,63,208,233,126,63,149,240,126,63,59,247,126,63,195,253,126,63,44,4,127,63,118,10,127,63,163,16,127,63,179,22,127,63,165,28,127,63,123,34,127,63,52,40,127,63,210,45,127,63,83,51,127,63,186,56,127,63,5,62,127,63,53,67,127,63,75,72,127,63,72,77,127,63,42,82,127,63,243,86,127,63,163,91,127,63,58,96,127,63,185,100,127,63,32,105,127,63,111,109,127,63,166,113,127,63,199,117,127,63,208,121,127,63,196,125,127,63,161,129,127,63,104,133,127,63,25,137,127,63,182,140,127,63,61,144,127,63,176,147,127,63,14,151,127,63,89,154,127,63,143,157,127,63,179,160,127,63,195,163,127,63,192,166,127,63,171,169,127,63,132,172,127,63,74,175,127,63,255,177,127,63,163,180,127,63,53,183,127,63,183,185,127,63,40,188,127,63,137,190,127,63,217,192,127,63,26,195,127,63,76,197,127,63,111,199,127,63,130,201,127,63,135,203,127,63,126,205,127,63,102,207,127,63,65,209,127,63,14,211,127,63,205,212,127,63,128,214,127,63,38,216,127,63,191,217,127,63,76,219,127,63,204,220,127,63,65,222,127,63,170,223,127,63,8,225,127,63,91,226,127,63,163,227,127,63,224,228,127,63,19,230,127,63,59,231,127,63,90,232,127,63,110,233,127,63,122,234,127,63,124,235,127,63,116,236,127,63,100,237,127,63,75,238,127,63,42,239,127,63,1,240,127,63,207,240,127,63,149,241,127,63,84,242,127,63,12,243,127,63,188,243,127,63,101,244,127,63,7,245,127,63,162,245,127,63,55,246,127,63,198,246,127,63,78,247,127,63,209,247,127,63,77,248,127,63,196,248,127,63,54,249,127,63,162,249,127,63,9,250,127,63,108,250,127,63,201,250,127,63,34,251,127,63,118,251,127,63,198,251,127,63,18,252,127,63,89,252,127,63,157,252,127,63,221,252,127,63,26,253,127,63,83,253,127,63,136,253,127,63,187,253,127,63,234,253,127,63,22,254,127,63,64,254,127,63,103,254,127,63,139,254,127,63,173,254,127,63,204,254,127,63,234,254,127,63,5,255,127,63,30,255,127,63,53,255,127,63,74,255,127,63,94,255,127,63,112,255,127,63,128,255,127,63,143,255,127,63,157,255,127,63,169,255,127,63,180,255,127,63,191,255,127,63,200,255,127,63,208,255,127,63,215,255,127,63,221,255,127,63,227,255,127,63,232,255,127,63,236,255,127,63,239,255,127,63,243,255,127,63,245,255,127,63,248,255,127,63,249,255,127,63,251,255,127,63,252,255,127,63,253,255,127,63,254,255,127,63,255,255,127,63,255,255,127,63,255,255,127,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,204,8,120,52,171,134,11,54,79,202,193,54,190,233,61,55,238,247,156,55,192,123,234,55,43,192,35,56,161,2,90,56,189,2,140,56,76,228,174,56,227,165,213,56,199,35,0,57,168,100,23,57,134,149,48,57,104,182,75,57,64,199,104,57,7,228,131,57,105,92,148,57,191,204,165,57,6,53,184,57,65,149,203,57,105,237,223,57,120,61,245,57,184,194,5,58,166,98,17,58,134,126,29,58,81,22,42,58,9,42,55,58,172,185,68,58,54,197,82,58,165,76,97,58,250,79,112,58,47,207,127,58,34,229,135,58,154,32,144,58,255,153,152,58,80,81,161,58,139,70,170,58,174,121,179,58,186,234,188,58,171,153,198,58,129,134,208,58,58,177,218,58,212,25,229,58,79,192,239,58,167,164,250,58,109,227,2,59,117,147,8,59,105,98,14,59,73,80,20,59,19,93,26,59,199,136,32,59,100,211,38,59,232,60,45,59,83,197,51,59,164,108,58,59,218,50,65,59,243,23,72,59,239,27,79,59,204,62,86,59,138,128,93,59,38,225,100,59,161,96,108,59,249,254,115,59,45,188,123,59,29,204,129,59,145,201,133,59,113,214,137,59,188,242,141,59,113,30,146,59,145,89,150,59,26,164,154,59,12,254,158,59,102,103,163,59,40,224,167,59,80,104,172,59,222,255,176,59,209,166,181,59,40,93,186,59,228,34,191,59,2,248,195,59,131,220,200,59,101,208,205,59,168,211,210,59,74,230,215,59,76,8,221,59,172,57,226,59,105,122,231,59,131,202,236,59,249,41,242,59,202,152,247,59,245,22,253,59,60,82,1,60,170,32,4,60,196,246,6,60,137,212,9,60,249,185,12,60,19,167,15,60,216,155,18,60,69,152,21,60,92,156,24,60,26,168,27,60,129,187,30,60,143,214,33,60,69,249,36,60,160,35,40,60,162,85,43,60,73,143,46,60,149,208,49,60,133,25,53,60,26,106,56,60,81,194,59,60,44,34,63,60,168,137,66,60,199,248,69,60,134,111,73,60,230,237,76,60,231,115,80,60,134,1,84,60,197,150,87,60,162,51,91,60,28,216,94,60,52,132,98,60,232,55,102,60,56,243,105,60,35,182,109,60,170,128,113,60,202,82,117,60,131,44,121,60,214,13,125,60,96,123,128,60,161,115,130,60,174,111,132,60,134,111,134,60,40,115,136,60,149,122,138,60,205,133,140,60,206,148,142,60,152,167,144,60,44,190,146,60,136,216,148,60,173,246,150,60,154,24,153,60,78,62,155,60,202,103,157,60,13,149,159,60,23,198,161,60,231,250,163,60,125,51,166,60,217,111,168,60,249,175,170,60,223,243,172,60,137,59,175,60,247,134,177,60,40,214,179,60,29,41,182,60,213,127,184,60,80,218,186,60,140,56,189,60,138,154,191,60,74,0,194,60,202,105,196,60,11,215,198,60,12,72,201,60,205,188,203,60,77,53,206,60,140,177,208,60,137,49,211,60,69,181,213,60,189,60,216,60,243,199,218,60,230,86,221,60,149,233,223,60,0,128,226,60,39,26,229,60,8,184,231,60,164,89,234,60,250,254,236,60,9,168,239,60,210,84,242,60,83,5,245,60,141,185,247,60,126,113,250,60,39,45,253,60,134,236,255,60,206,87,1,61,52,187,2,61,117,32,4,61,144,135,5,61,133,240,6,61,84,91,8,61,253,199,9,61,128,54,11,61,219,166,12,61,16,25,14,61,29,141,15,61,3,3,17,61,193,122,18,61,87,244,19,61,197,111,21,61,10,237,22,61,39,108,24,61,26,237,25,61,228,111,27,61,132,244,28,61,251,122,30,61,71,3,32,61,105,141,33,61,96,25,35,61,45,167,36,61,206,54,38,61,67,200,39,61,141,91,41,61,171,240,42,61,156,135,44,61,96,32,46,61,248,186,47,61,99,87,49,61,160,245,50,61,175,149,52,61,144,55,54,61,67,219,55,61,199,128,57,61,28,40,59,61,65,209,60,61,56,124,62,61,254,40,64,61,148,215,65,61,250,135,67,61,47,58,69,61,51,238,70,61,5,164,72,61,166,91,74,61,20,21,76,61,80,208,77,61,90,141,79,61,49,76,81,61,212,12,83,61,68,207,84,61,128,147,86,61,135,89,88,61,90,33,90,61,248,234,91,61,97,182,93,61,148,131,95,61,145,82,97,61,88,35,99,61,232,245,100,61,65,202,102,61,100,160,104,61,78,120,106,61,1,82,108,61,123,45,110,61,188,10,112,61,197,233,113,61,148,202,115,61,41,173,117,61,133,145,119,61,166,119,121,61,140,95,123,61,55,73,125,61,166,52,127,61,237,144,128,61,105,136,129,61,198,128,130,61,5,122,131,61,37,116,132,61,39,111,133,61,9,107,134,61,204,103,135,61,112,101,136,61,244,99,137,61,88,99,138,61,157,99,139,61,193,100,140,61,196,102,141,61,167,105,142,61,106,109,143,61,11,114,144,61,139,119,145,61,234,125,146,61,40,133,147,61,67,141,148,61,61,150,149,61,20,160,150,61,201,170,151,61,92,182,152,61,203,194,153,61,24,208,154,61,66,222,155,61,72,237,156,61,42,253,157,61,233,13,159,61,132,31,160,61,250,49,161,61,76,69,162,61,122,89,163,61,130,110,164,61,101,132,165,61,35,155,166,61,188,178,167,61,47,203,168,61,124,228,169,61,162,254,170,61,163,25,172,61,124,53,173,61,47,82,174,61,187,111,175,61,31,142,176,61,92,173,177,61,113,205,178,61,94,238,179,61,35,16,181,61,192,50,182,61,52,86,183,61,127,122,184,61,160,159,185,61,153,197,186,61,104,236,187,61,13,20,189,61,136,60,190,61,217,101,191,61,255,143,192,61,250,186,193,61,202,230,194,61,111,19,196,61,233,64,197,61,55,111,198,61,89,158,199,61,78,206,200,61,23,255,201,61,179,48,203,61,35,99,204,61,101,150,205,61,121,202,206,61,96,255,207,61,25,53,209,61,164,107,210,61,0,163,211,61,45,219,212,61,44,20,214,61,251,77,215,61,154,136,216,61,10,196,217,61,74,0,219,61,89,61,220,61,56,123,221,61,230,185,222,61,99,249,223,61,174,57,225,61,200,122,226,61,176,188,227,61,102,255,228,61,233,66,230,61,58,135,231,61,88,204,232,61,66,18,234,61,249,88,235,61,124,160,236,61,203,232,237,61,230,49,239,61,204,123,240,61,125,198,241,61,249,17,243,61,63,94,244,61,79,171,245,61,42,249,246,61,206,71,248,61,60,151,249,61,114,231,250,61,114,56,252,61,58,138,253,61,202,220,254,61,17,24,0,62,33,194,0,62,149,108,1,62,108,23,2,62,166,194,2,62,68,110,3,62,69,26,4,62,168,198,4,62,111,115,5,62,152,32,6,62,35,206,6,62,17,124,7,62,98,42,8,62,20,217,8,62,40,136,9,62,157,55,10,62,117,231,10,62,173,151,11,62,71,72,12,62,66,249,12,62,158,170,13,62,91,92,14,62,120,14,15,62,246,192,15,62,213,115,16,62,19,39,17,62,177,218,17,62,175,142,18,62,13,67,19,62,202,247,19,62,231,172,20,62,99,98,21,62,62,24,22,62,120,206,22,62,16,133,23,62,7,60,24,62,92,243,24,62,16,171,25,62,33,99,26,62,145,27,27,62,94,212,27,62,137,141,28,62,17,71,29,62,246,0,30,62,56,187,30,62,215,117,31,62,211,48,32,62,43,236,32,62,224,167,33,62,241,99,34,62,93,32,35,62,38,221,35,62,74,154,36,62,202,87,37,62,165,21,38,62,219,211,38,62,108,146,39,62,88,81,40,62,159,16,41,62,64,208,41,62,59,144,42,62,144,80,43,62,63,17,44,62,72,210,44,62,170,147,45,62,102,85,46,62,122,23,47,62,232,217,47,62,175,156,48,62,206,95,49,62,69,35,50,62,21,231,50,62,61,171,51,62,189,111,52,62,148,52,53,62,195,249,53,62,73,191,54,62,38,133,55,62,91,75,56,62,230,17,57,62,199,216,57,62,255,159,58,62,141,103,59,62,113,47,60,62,171,247,60,62,59,192,61,62,31,137,62,62,89,82,63,62,232,27,64,62,204,229,64,62,5,176,65,62,146,122,66,62,115,69,67,62,168,16,68,62,49,220,68,62,14,168,69,62,62,116,70,62,194,64,71,62,152,13,72,62,193,218,72,62,61,168,73,62,12,118,74,62,44,68,75,62,159,18,76,62,100,225,76,62,122,176,77,62,225,127,78,62,154,79,79,62,164,31,80,62,255,239,80,62,170,192,81,62,166,145,82,62,242,98,83,62,141,52,84,62,121,6,85,62,180,216,85,62,63,171,86,62,25,126,87,62,65,81,88,62,185,36,89,62,126,248,89,62,147,204,90,62,245,160,91,62,165,117,92,62,163,74,93,62,238,31,94,62,135,245,94,62,109,203,95,62,159,161,96,62,30,120,97,62,233,78,98,62,1,38,99,62,100,253,99,62,19,213,100,62,14,173,101,62,84,133,102,62,229,93,103,62,193,54,104,62,231,15,105,62,88,233,105,62,19,195,106,62,24,157,107,62,103,119,108,62,255,81,109,62,224,44,110,62,11,8,111,62,126,227,111,62,58,191,112,62,62,155,113,62,139,119,114,62,31,84,115,62,251,48,116,62,31,14,117,62,138,235,117,62,59,201,118,62,52,167,119,62,115,133,120,62,248,99,121,62,196,66,122,62,213,33,123,62,44,1,124,62,200,224,124,62,170,192,125,62,208,160,126,62,59,129,127,62,245,48,128,62,111,161,128,62,11,18,129,62,201,130,129,62,168,243,129,62,169,100,130,62,204,213,130,62,15,71,131,62,117,184,131,62,251,41,132,62,162,155,132,62,107,13,133,62,84,127,133,62,93,241,133,62,136,99,134,62,210,213,134,62,61,72,135,62,200,186,135,62,116,45,136,62,63,160,136,62,42,19,137,62,52,134,137,62,94,249,137,62,168,108,138,62,17,224,138,62,153,83,139,62,64,199,139,62,6,59,140,62,235,174,140,62,239,34,141,62,17,151,141,62,82,11,142,62,177,127,142,62,46,244,142,62,201,104,143,62,130,221,143,62,89,82,144,62,78,199,144,62,96,60,145,62,143,177,145,62,220,38,146,62,70,156,146,62,205,17,147,62,113,135,147,62,50,253,147,62,16,115,148,62,9,233,148,62,32,95,149,62,82,213,149,62,161,75,150,62,12,194,150,62,146,56,151,62,53,175,151,62,243,37,152,62,204,156,152,62,193,19,153,62,209,138,153,62,252,1,154,62,66,121,154,62,163,240,154,62,31,104,155,62,181,223,155,62,101,87,156,62,48,207,156,62,21,71,157,62,20,191,157,62,45,55,158,62,96,175,158,62,172,39,159,62,18,160,159,62,145,24,160,62,41,145,160,62,218,9,161,62,165,130,161,62,136,251,161,62,132,116,162,62,152,237,162,62,197,102,163,62,10,224,163,62,103,89,164,62,220,210,164,62,105,76,165,62,14,198,165,62,202,63,166,62,158,185,166,62,137,51,167,62,139,173,167,62,164,39,168,62,213,161,168,62,27,28,169,62], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+520696); +/* memory initializer */ allocate([121,150,169,62,237,16,170,62,119,139,170,62,24,6,171,62,206,128,171,62,155,251,171,62,125,118,172,62,117,241,172,62,130,108,173,62,165,231,173,62,221,98,174,62,42,222,174,62,140,89,175,62,2,213,175,62,142,80,176,62,46,204,176,62,226,71,177,62,170,195,177,62,135,63,178,62,119,187,178,62,124,55,179,62,148,179,179,62,191,47,180,62,254,171,180,62,80,40,181,62,181,164,181,62,45,33,182,62,184,157,182,62,85,26,183,62,5,151,183,62,199,19,184,62,156,144,184,62,130,13,185,62,123,138,185,62,133,7,186,62,161,132,186,62,206,1,187,62,13,127,187,62,93,252,187,62,190,121,188,62,48,247,188,62,178,116,189,62,70,242,189,62,233,111,190,62,157,237,190,62,98,107,191,62,54,233,191,62,26,103,192,62,14,229,192,62,17,99,193,62,36,225,193,62,70,95,194,62,119,221,194,62,184,91,195,62,7,218,195,62,100,88,196,62,209,214,196,62,75,85,197,62,212,211,197,62,107,82,198,62,16,209,198,62,195,79,199,62,132,206,199,62,82,77,200,62,45,204,200,62,21,75,201,62,11,202,201,62,13,73,202,62,29,200,202,62,56,71,203,62,97,198,203,62,149,69,204,62,214,196,204,62,34,68,205,62,123,195,205,62,223,66,206,62,79,194,206,62,202,65,207,62,81,193,207,62,226,64,208,62,127,192,208,62,38,64,209,62,216,191,209,62,148,63,210,62,91,191,210,62,44,63,211,62,7,191,211,62,235,62,212,62,218,190,212,62,210,62,213,62,211,190,213,62,222,62,214,62,242,190,214,62,15,63,215,62,53,191,215,62,99,63,216,62,154,191,216,62,217,63,217,62,32,192,217,62,112,64,218,62,199,192,218,62,38,65,219,62,140,193,219,62,250,65,220,62,112,194,220,62,236,66,221,62,112,195,221,62,250,67,222,62,139,196,222,62,34,69,223,62,192,197,223,62,100,70,224,62,14,199,224,62,189,71,225,62,115,200,225,62,46,73,226,62,239,201,226,62,181,74,227,62,127,203,227,62,79,76,228,62,36,205,228,62,253,77,229,62,219,206,229,62,190,79,230,62,164,208,230,62,142,81,231,62,125,210,231,62,111,83,232,62,100,212,232,62,93,85,233,62,89,214,233,62,89,87,234,62,91,216,234,62,96,89,235,62,104,218,235,62,114,91,236,62,126,220,236,62,141,93,237,62,158,222,237,62,176,95,238,62,196,224,238,62,218,97,239,62,241,226,239,62,10,100,240,62,35,229,240,62,62,102,241,62,89,231,241,62,116,104,242,62,145,233,242,62,173,106,243,62,202,235,243,62,230,108,244,62,3,238,244,62,31,111,245,62,59,240,245,62,86,113,246,62,112,242,246,62,137,115,247,62,161,244,247,62,184,117,248,62,206,246,248,62,226,119,249,62,244,248,249,62,4,122,250,62,18,251,250,62,30,124,251,62,40,253,251,62,47,126,252,62,52,255,252,62,54,128,253,62,52,1,254,62,48,130,254,62,40,3,255,62,29,132,255,62,135,2,0,63,254,66,0,63,115,131,0,63,230,195,0,63,86,4,1,63,197,68,1,63,49,133,1,63,155,197,1,63,3,6,2,63,103,70,2,63,202,134,2,63,42,199,2,63,135,7,3,63,225,71,3,63,56,136,3,63,141,200,3,63,222,8,4,63,44,73,4,63,119,137,4,63,191,201,4,63,3,10,5,63,68,74,5,63,130,138,5,63,188,202,5,63,242,10,6,63,36,75,6,63,83,139,6,63,126,203,6,63,165,11,7,63,199,75,7,63,230,139,7,63,1,204,7,63,23,12,8,63,41,76,8,63,54,140,8,63,63,204,8,63,67,12,9,63,67,76,9,63,62,140,9,63,52,204,9,63,37,12,10,63,18,76,10,63,249,139,10,63,219,203,10,63,184,11,11,63,144,75,11,63,98,139,11,63,47,203,11,63,246,10,12,63,184,74,12,63,116,138,12,63,43,202,12,63,219,9,13,63,134,73,13,63,43,137,13,63,202,200,13,63,98,8,14,63,245,71,14,63,129,135,14,63,7,199,14,63,135,6,15,63,0,70,15,63,114,133,15,63,222,196,15,63,67,4,16,63,161,67,16,63,249,130,16,63,73,194,16,63,147,1,17,63,213,64,17,63,17,128,17,63,69,191,17,63,114,254,17,63,151,61,18,63,181,124,18,63,203,187,18,63,218,250,18,63,225,57,19,63,225,120,19,63,216,183,19,63,200,246,19,63,176,53,20,63,143,116,20,63,103,179,20,63,54,242,20,63,253,48,21,63,188,111,21,63,114,174,21,63,32,237,21,63,197,43,22,63,98,106,22,63,246,168,22,63,129,231,22,63,3,38,23,63,125,100,23,63,237,162,23,63,84,225,23,63,178,31,24,63,7,94,24,63,83,156,24,63,149,218,24,63,206,24,25,63,253,86,25,63,35,149,25,63,63,211,25,63,82,17,26,63,90,79,26,63,89,141,26,63,78,203,26,63,57,9,27,63,25,71,27,63,240,132,27,63,188,194,27,63,126,0,28,63,54,62,28,63,227,123,28,63,134,185,28,63,30,247,28,63,172,52,29,63,47,114,29,63,167,175,29,63,20,237,29,63,118,42,30,63,206,103,30,63,26,165,30,63,91,226,30,63,145,31,31,63,188,92,31,63,219,153,31,63,239,214,31,63,247,19,32,63,244,80,32,63,230,141,32,63,203,202,32,63,165,7,33,63,115,68,33,63,53,129,33,63,235,189,33,63,150,250,33,63,52,55,34,63,198,115,34,63,75,176,34,63,197,236,34,63,50,41,35,63,146,101,35,63,230,161,35,63,46,222,35,63,105,26,36,63,151,86,36,63,185,146,36,63,205,206,36,63,213,10,37,63,208,70,37,63,190,130,37,63,158,190,37,63,114,250,37,63,56,54,38,63,241,113,38,63,157,173,38,63,59,233,38,63,204,36,39,63,79,96,39,63,197,155,39,63,45,215,39,63,135,18,40,63,211,77,40,63,18,137,40,63,66,196,40,63,101,255,40,63,121,58,41,63,128,117,41,63,120,176,41,63,98,235,41,63,62,38,42,63,11,97,42,63,202,155,42,63,122,214,42,63,28,17,43,63,175,75,43,63,52,134,43,63,170,192,43,63,16,251,43,63,105,53,44,63,178,111,44,63,236,169,44,63,23,228,44,63,51,30,45,63,64,88,45,63,61,146,45,63,43,204,45,63,10,6,46,63,218,63,46,63,154,121,46,63,74,179,46,63,235,236,46,63,124,38,47,63,254,95,47,63,112,153,47,63,210,210,47,63,36,12,48,63,102,69,48,63,152,126,48,63,186,183,48,63,204,240,48,63,205,41,49,63,191,98,49,63,160,155,49,63,113,212,49,63,49,13,50,63,225,69,50,63,128,126,50,63,15,183,50,63,141,239,50,63,251,39,51,63,87,96,51,63,163,152,51,63,222,208,51,63,8,9,52,63,34,65,52,63,42,121,52,63,33,177,52,63,7,233,52,63,219,32,53,63,159,88,53,63,81,144,53,63,242,199,53,63,129,255,53,63,255,54,54,63,108,110,54,63,198,165,54,63,16,221,54,63,71,20,55,63,109,75,55,63,129,130,55,63,131,185,55,63,116,240,55,63,82,39,56,63,30,94,56,63,217,148,56,63,129,203,56,63,23,2,57,63,155,56,57,63,13,111,57,63,108,165,57,63,185,219,57,63,244,17,58,63,28,72,58,63,50,126,58,63,53,180,58,63,38,234,58,63,4,32,59,63,207,85,59,63,135,139,59,63,45,193,59,63,192,246,59,63,64,44,60,63,173,97,60,63,7,151,60,63,78,204,60,63,130,1,61,63,163,54,61,63,177,107,61,63,171,160,61,63,146,213,61,63,102,10,62,63,39,63,62,63,212,115,62,63,110,168,62,63,244,220,62,63,103,17,63,63,198,69,63,63,17,122,63,63,73,174,63,63,109,226,63,63,126,22,64,63,122,74,64,63,99,126,64,63,56,178,64,63,248,229,64,63,165,25,65,63,62,77,65,63,195,128,65,63,52,180,65,63,144,231,65,63,216,26,66,63,13,78,66,63,44,129,66,63,56,180,66,63,47,231,66,63,18,26,67,63,224,76,67,63,154,127,67,63,64,178,67,63,208,228,67,63,77,23,68,63,180,73,68,63,7,124,68,63,69,174,68,63,111,224,68,63,131,18,69,63,131,68,69,63,110,118,69,63,68,168,69,63,5,218,69,63,177,11,70,63,72,61,70,63,202,110,70,63,55,160,70,63,143,209,70,63,210,2,71,63,255,51,71,63,23,101,71,63,26,150,71,63,8,199,71,63,224,247,71,63,163,40,72,63,81,89,72,63,233,137,72,63,107,186,72,63,216,234,72,63,48,27,73,63,114,75,73,63,158,123,73,63,181,171,73,63,181,219,73,63,161,11,74,63,118,59,74,63,54,107,74,63,224,154,74,63,116,202,74,63,242,249,74,63,90,41,75,63,173,88,75,63,233,135,75,63,15,183,75,63,32,230,75,63,26,21,76,63,254,67,76,63,204,114,76,63,132,161,76,63,38,208,76,63,177,254,76,63,38,45,77,63,133,91,77,63,206,137,77,63,0,184,77,63,28,230,77,63,34,20,78,63,17,66,78,63,234,111,78,63,172,157,78,63,88,203,78,63,238,248,78,63,108,38,79,63,213,83,79,63,38,129,79,63,97,174,79,63,134,219,79,63,147,8,80,63,138,53,80,63,107,98,80,63,52,143,80,63,231,187,80,63,131,232,80,63,8,21,81,63,119,65,81,63,206,109,81,63,15,154,81,63,57,198,81,63,76,242,81,63,71,30,82,63,44,74,82,63,250,117,82,63,177,161,82,63,81,205,82,63,218,248,82,63,76,36,83,63,166,79,83,63,234,122,83,63,22,166,83,63,44,209,83,63,42,252,83,63,17,39,84,63,224,81,84,63,153,124,84,63,58,167,84,63,196,209,84,63,54,252,84,63,146,38,85,63,214,80,85,63,2,123,85,63,24,165,85,63,22,207,85,63,252,248,85,63,204,34,86,63,131,76,86,63,36,118,86,63,172,159,86,63,30,201,86,63,120,242,86,63,186,27,87,63,229,68,87,63,248,109,87,63,244,150,87,63,216,191,87,63,165,232,87,63,90,17,88,63,248,57,88,63,126,98,88,63,236,138,88,63,67,179,88,63,130,219,88,63,169,3,89,63,185,43,89,63,177,83,89,63,145,123,89,63,90,163,89,63,11,203,89,63,164,242,89,63,37,26,90,63,143,65,90,63,225,104,90,63,27,144,90,63,62,183,90,63,72,222,90,63,59,5,91,63,22,44,91,63,217,82,91,63,133,121,91,63,24,160,91,63,148,198,91,63,248,236,91,63,68,19,92,63,120,57,92,63,149,95,92,63,153,133,92,63,134,171,92,63,91,209,92,63,24,247,92,63,189,28,93,63,74,66,93,63,191,103,93,63,28,141,93,63,98,178,93,63,143,215,93,63,165,252,93,63,162,33,94,63,136,70,94,63,86,107,94,63,11,144,94,63,169,180,94,63,47,217,94,63,157,253,94,63,243,33,95,63,49,70,95,63,88,106,95,63,102,142,95,63,92,178,95,63,59,214,95,63,1,250,95,63,175,29,96,63,70,65,96,63,196,100,96,63,43,136,96,63,122,171,96,63,176,206,96,63,207,241,96,63,214,20,97,63,197,55,97,63,155,90,97,63,90,125,97,63,1,160,97,63,144,194,97,63,8,229,97,63,103,7,98,63,174,41,98,63,221,75,98,63,245,109,98,63,244,143,98,63,220,177,98,63,171,211,98,63,99,245,98,63,3,23,99,63,139,56,99,63,251,89,99,63,83,123,99,63,147,156,99,63,188,189,99,63,204,222,99,63,197,255,99,63,166,32,100,63,110,65,100,63,32,98,100,63,185,130,100,63,58,163,100,63,164,195,100,63,245,227,100,63,47,4,101,63,82,36,101,63,92,68,101,63,78,100,101,63,41,132,101,63,236,163,101,63,151,195,101,63,43,227,101,63,167,2,102,63,11,34,102,63,87,65,102,63,139,96,102,63,168,127,102,63,174,158,102,63,155,189,102,63,113,220,102,63,47,251,102,63,214,25,103,63,101,56,103,63,220,86,103,63,59,117,103,63,132,147,103,63,180,177,103,63,205,207,103,63,206,237,103,63,184,11,104,63,138,41,104,63,69,71,104,63,233,100,104,63,116,130,104,63,233,159,104,63,69,189,104,63,139,218,104,63,185,247,104,63,207,20,105,63,207,49,105,63,182,78,105,63,135,107,105,63,64,136,105,63,225,164,105,63,108,193,105,63,223,221,105,63,59,250,105,63,127,22,106,63,172,50,106,63,195,78,106,63,193,106,106,63,169,134,106,63,121,162,106,63,51,190,106,63,213,217,106,63,96,245,106,63,212,16,107,63,48,44,107,63,118,71,107,63,165,98,107,63,188,125,107,63,189,152,107,63,167,179,107,63,121,206,107,63,53,233,107,63,218,3,108,63,104,30,108,63,223,56,108,63,63,83,108,63,136,109,108,63,187,135,108,63,214,161,108,63,219,187,108,63,201,213,108,63,161,239,108,63,97,9,109,63,11,35,109,63,159,60,109,63,27,86,109,63,129,111,109,63,209,136,109,63,9,162,109,63,44,187,109,63,56,212,109,63,45,237,109,63,12,6,110,63,212,30,110,63,134,55,110,63,33,80,110,63,166,104,110,63,21,129,110,63,110,153,110,63,176,177,110,63,220,201,110,63,241,225,110,63,241,249,110,63,218,17,111,63,173,41,111,63,106,65,111,63,16,89,111,63,161,112,111,63,28,136,111,63,128,159,111,63,207,182,111,63,7,206,111,63,42,229,111,63,54,252,111,63,45,19,112,63,14,42,112,63,217,64,112,63,142,87,112,63,46,110,112,63,184,132,112,63,43,155,112,63,138,177,112,63,210,199,112,63,5,222,112,63,35,244,112,63,42,10,113,63,29,32,113,63,249,53,113,63,193,75,113,63,114,97,113,63,15,119,113,63,150,140,113,63,7,162,113,63,99,183,113,63,170,204,113,63,220,225,113,63,249,246,113,63,0,12,114,63,242,32,114,63,207,53,114,63,151,74,114,63,73,95,114,63,231,115,114,63,112,136,114,63,227,156,114,63,66,177,114,63,140,197,114,63,193,217,114,63,225,237,114,63,236,1,115,63,227,21,115,63,197,41,115,63,146,61,115,63,74,81,115,63,238,100,115,63,125,120,115,63,248,139,115,63,94,159,115,63,175,178,115,63,236,197,115,63,21,217,115,63,41,236,115,63,41,255,115,63,21,18,116,63,236,36,116,63,175,55,116,63,94,74,116,63,248,92,116,63,127,111,116,63,241,129,116,63,80,148,116,63,154,166,116,63,208,184,116,63,242,202,116,63,1,221,116,63,251,238,116,63,226,0,117,63,181,18,117,63,116,36,117,63,31,54,117,63,183,71,117,63,59,89,117,63,171,106,117,63,8,124,117,63,81,141,117,63,135,158,117,63,169,175,117,63,184,192,117,63,179,209,117,63,155,226,117,63,112,243,117,63,50,4,118,63,224,20,118,63,123,37,118,63,3,54,118,63,120,70,118,63,217,86,118,63,40,103,118,63,100,119,118,63,140,135,118,63,162,151,118,63,165,167,118,63,149,183,118,63,114,199,118,63,61,215,118,63,245,230,118,63,154,246,118,63,44,6,119,63,172,21,119,63,26,37,119,63,117,52,119,63,189,67,119,63,243,82,119,63,22,98,119,63,40,113,119,63,39,128,119,63,19,143,119,63,238,157,119,63,182,172,119,63,108,187,119,63,16,202,119,63,162,216,119,63,34,231,119,63,144,245,119,63,236,3,120,63,55,18,120,63,111,32,120,63,150,46,120,63,170,60,120,63,174,74,120,63,159,88,120,63,127,102,120,63,77,116,120,63,10,130,120,63,181,143,120,63,79,157,120,63,215,170,120,63,78,184,120,63,180,197,120,63,8,211,120,63,76,224,120,63,126,237,120,63,158,250,120,63,174,7,121,63,173,20,121,63,155,33,121,63,119,46,121,63,67,59,121,63,254,71,121,63,168,84,121,63,66,97,121,63,202,109,121,63,66,122,121,63,169,134,121,63,0,147,121,63,70,159,121,63,124,171,121,63,161,183,121,63,181,195,121,63,186,207,121,63,173,219,121,63,145,231,121,63,100,243,121,63,40,255,121,63,219,10,122,63,126,22,122,63,16,34,122,63,147,45,122,63,6,57,122,63,105,68,122,63,188,79,122,63,255,90,122,63,51,102,122,63,86,113,122,63,106,124,122,63,111,135,122,63,99,146,122,63,72,157,122,63,30,168,122,63,228,178,122,63,155,189,122,63,66,200,122,63,218,210,122,63,99,221,122,63,221,231,122,63,71,242,122,63,162,252,122,63,238,6,123,63,43,17,123,63,89,27,123,63,120,37,123,63,137,47,123,63,138,57,123,63,124,67,123,63,96,77,123,63,53,87,123,63,252,96,123,63,179,106,123,63,92,116,123,63,247,125,123,63,131,135,123,63,1,145,123,63,112,154,123,63,209,163,123,63,36,173,123,63,104,182,123,63,158,191,123,63,198,200,123,63,224,209,123,63,236,218,123,63,234,227,123,63,218,236,123,63,188,245,123,63,144,254,123,63,86,7,124,63,14,16,124,63,185,24,124,63,86,33,124,63,230,41,124,63,104,50,124,63,220,58,124,63,67,67,124,63,156,75,124,63,232,83,124,63,39,92,124,63,88,100,124,63,124,108,124,63,147,116,124,63,157,124,124,63,153,132,124,63,137,140,124,63,107,148,124,63,65,156,124,63,9,164,124,63,197,171,124,63,116,179,124,63,22,187,124,63,172,194,124,63,52,202,124,63,176,209,124,63,32,217,124,63,131,224,124,63,217,231,124,63,35,239,124,63,97,246,124,63,146,253,124,63,183,4,125,63,208,11,125,63,221,18,125,63,221,25,125,63,209,32,125,63,185,39,125,63,150,46,125,63,102,53,125,63,42,60,125,63,227,66,125,63,143,73,125,63,48,80,125,63,197,86,125,63,78,93,125,63,204,99,125,63,62,106,125,63,165,112,125,63,0,119,125,63,80,125,125,63,148,131,125,63,205,137,125,63,251,143,125,63,29,150,125,63,52,156,125,63,64,162,125,63,65,168,125,63,55,174,125,63,34,180,125,63,2,186,125,63,215,191,125,63,161,197,125,63,96,203,125,63,21,209,125,63,190,214,125,63,93,220,125,63,242,225,125,63,124,231,125,63,251,236,125,63,112,242,125,63,218,247,125,63,58,253,125,63,143,2,126,63,219,7,126,63,28,13,126,63,82,18,126,63,127,23,126,63,161,28,126,63,186,33,126,63,200,38,126,63,204,43,126,63,199,48,126,63,183,53,126,63,158,58,126,63,123,63,126,63,78,68,126,63,23,73,126,63,215,77,126,63,141,82,126,63,58,87,126,63,221,91,126,63,118,96,126,63,6,101,126,63,141,105,126,63,10,110,126,63,126,114,126,63,233,118,126,63,75,123,126,63,164,127,126,63,243,131,126,63,57,136,126,63,119,140,126,63,171,144,126,63,214,148,126,63,249,152,126,63,18,157,126,63,35,161,126,63,44,165,126,63,43,169,126,63,34,173,126,63,16,177,126,63,246,180,126,63,211,184,126,63,167,188,126,63,115,192,126,63,55,196,126,63,243,199,126,63,166,203,126,63,81,207,126,63,243,210,126,63,142,214,126,63,32,218,126,63,171,221,126,63,45,225,126,63,167,228,126,63,26,232,126,63,132,235,126,63,231,238,126,63,66,242,126,63,149,245,126,63,224,248,126,63,36,252,126,63,96,255,126,63,148,2,127,63,193,5,127,63,230,8,127,63,4,12,127,63,27,15,127,63,42,18,127,63,50,21,127,63,50,24,127,63,43,27,127,63,29,30,127,63,8,33,127,63,236,35,127,63,201,38,127,63,158,41,127,63,109,44,127,63,53,47,127,63,246,49,127,63,175,52,127,63,99,55,127,63,15,58,127,63,181,60,127,63,83,63,127,63,236,65,127,63,125,68,127,63,8,71,127,63,141,73,127,63,11,76,127,63,131,78,127,63,244,80,127,63,95,83,127,63,195,85,127,63,33,88,127,63,121,90,127,63,203,92,127,63,23,95,127,63,92,97,127,63,155,99,127,63,213,101,127,63,8,104,127,63,54,106,127,63,93,108,127,63,127,110,127,63,155,112,127,63,177,114,127,63,193,116,127,63,203,118,127,63,208,120,127,63,207,122,127,63,201,124,127,63,189,126,127,63,171,128,127,63,148,130,127,63,120,132,127,63,86,134,127,63,47,136,127,63,2,138,127,63,209,139,127,63,153,141,127,63,93,143,127,63,28,145,127,63,213,146,127,63,137,148,127,63,57,150,127,63,227,151,127,63,136,153,127,63,40,155,127,63,196,156,127,63,90,158,127,63,236,159,127,63,121,161,127,63,1,163,127,63,132,164,127,63,3,166,127,63,125,167,127,63,242,168,127,63,99,170,127,63,207,171,127,63,55,173,127,63,154,174,127,63,249,175,127,63,84,177,127,63,170,178,127,63,251,179,127,63,73,181,127,63,146,182,127,63,215,183,127,63,24,185,127,63,85,186,127,63,141,187,127,63,193,188,127,63,242,189,127,63,30,191,127,63,71,192,127,63,107,193,127,63,140,194,127,63,168,195,127,63,193,196,127,63,214,197,127,63,231,198,127,63,245,199,127,63,255,200,127,63,5,202,127,63,7,203,127,63,6,204,127,63,1,205,127,63,249,205,127,63,237,206,127,63,222,207,127,63,203,208,127,63,181,209,127,63,156,210,127,63,127,211,127,63,95,212,127,63,59,213,127,63,20,214,127,63,234,214,127,63,189,215,127,63,141,216,127,63,90,217,127,63,35,218,127,63,233,218,127,63,173,219,127,63,109,220,127,63,43,221,127,63,229,221,127,63,156,222,127,63,81,223,127,63,3,224,127,63,178,224,127,63,94,225,127,63,7,226,127,63,174,226,127,63,82,227,127,63,243,227,127,63,146,228,127,63,46,229,127,63,199,229,127,63,94,230,127,63,242,230,127,63,132,231,127,63,19,232,127,63,160,232,127,63,42,233,127,63,178,233,127,63,56,234,127,63,187,234,127,63,60,235,127,63,187,235,127,63,55,236,127,63,177,236,127,63,41,237,127,63,159,237,127,63,18,238,127,63,132,238,127,63,243,238,127,63,96,239,127,63,204,239,127,63,53,240,127,63,156,240,127,63,1,241,127,63,101,241,127,63,198,241,127,63,37,242,127,63,131,242,127,63,222,242,127,63,56,243,127,63,144,243,127,63,231,243,127,63,59,244,127,63,142,244,127,63,223,244,127,63,46,245,127,63,124,245,127,63,200,245,127,63,19,246,127,63,91,246,127,63,163,246,127,63,233,246,127,63,45,247,127,63,111,247,127,63,177,247,127,63,240,247,127,63,47,248,127,63,108,248,127,63,167,248,127,63,225,248,127,63,26,249,127,63,82,249,127,63,136,249,127,63,188,249,127,63,240,249,127,63,34,250,127,63,83,250,127,63,131,250,127,63,178,250,127,63,224,250,127,63,12,251,127,63,55,251,127,63,97,251,127,63,138,251,127,63,178,251,127,63,217,251,127,63,255,251,127,63,36,252,127,63,72,252,127,63,107,252,127,63,141,252,127,63,173,252,127,63,205,252,127,63,237,252,127,63,11,253,127,63,40,253,127,63,69,253,127,63,96,253,127,63,123,253,127,63,149,253,127,63,174,253,127,63,199,253,127,63,222,253,127,63,245,253,127,63,12,254,127,63,33,254,127,63,54,254,127,63,74,254,127,63,93,254,127,63,112,254,127,63,130,254,127,63,148,254,127,63,165,254,127,63,181,254,127,63,197,254,127,63,212,254,127,63,227,254,127,63,241,254,127,63,254,254,127,63,11,255,127,63,24,255,127,63,36,255,127,63,47,255,127,63,59,255,127,63,69,255,127,63,79,255,127,63,89,255,127,63,99,255,127,63,108,255,127,63,116,255,127,63,124,255,127,63,132,255,127,63,140,255,127,63,147,255,127,63,154,255,127,63,160,255,127,63,166,255,127,63,172,255,127,63,178,255,127,63,183,255,127,63,188,255,127,63,193,255,127,63,197,255,127,63,202,255,127,63,206,255,127,63,209,255,127,63,213,255,127,63,216,255,127,63,220,255,127,63,223,255,127,63,225,255,127,63,228,255,127,63,230,255,127,63,233,255,127,63,235,255,127,63,237,255,127,63,239,255,127,63,240,255,127,63,242,255,127,63,243,255,127,63,245,255,127,63,246,255,127,63,247,255,127,63,248,255,127,63,249,255,127,63,250,255,127,63,251,255,127,63,251,255,127,63,252,255,127,63,252,255,127,63,253,255,127,63,253,255,127,63,254,255,127,63,254,255,127,63,254,255,127,63,255,255,127,63,255,255,127,63,255,255,127,63,255,255,127,63,255,255,127,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,198,63,120,51,98,136,11,53,151,200,193,53,80,233,61,54,183,247,156,54,46,124,234,54,153,192,35,55,244,2,90,55,56,3,140,55,227,228,174,55,177,166,213,55,108,36,0,56,146,101,23,56,201,150,48,56,18,184,75,56,81,201,104,56,94,229,131,56,29,94,148,56,229,206,165,56,167,55,184,56,128,152,203,56,85,241,223,56,36,66,245,56,126,197,5,57,238,101,17,57,99,130,29,57,207,26,42,57,63,47,55,57,179,191,68,57,30,204,82,57,141,84,97,57,243,88,112,57,94,217,127,57,227,234,135,57,18,39,144,57,64,161,152,57,105,89,161,57,146,79,170,57,181,131,179,57,215,245,188,57,245,165,198,57,14,148,208,57,34,192,218,57,46,42,229,57,57,210,239,57,60,184,250,57,27,238,2,58,22,159,8,58,13,111,14,58,0,94,20,58,239,107,26,58,218,152,32,58,192,228,38,58,161,79,45,58,124,217,51,58,83,130,58,58,37,74,65,58,240,48,72,58,182,54,79,58,116,91,86,58,45,159,93,58,222,1,101,58,136,131,108,58,42,36,116,58,196,227,123,58,44,225,129,58,241,223,133,58,49,238,137,58,238,11,142,58,37,57,146,58,215,117,150,58,5,194,154,58,174,29,159,58,209,136,163,58,110,3,168,58,134,141,172,58,24,39,177,58,36,208,181,58,169,136,186,58,169,80,191,58,33,40,196,58,19,15,201,58,126,5,206,58,98,11,211,58,191,32,216,58,148,69,221,58,225,121,226,58,166,189,231,58,227,16,237,58,152,115,242,58,196,229,247,58,103,103,253,58,65,124,1,59,137,76,4,59,141,36,7,59,76,4,10,59,198,235,12,59,251,218,15,59,235,209,18,59,149,208,21,59,251,214,24,59,26,229,27,59,244,250,30,59,136,24,34,59,215,61,37,59,223,106,40,59,161,159,43,59,29,220,46,59,83,32,50,59,66,108,53,59,234,191,56,59,76,27,60,59,103,126,63,59,59,233,66,59,199,91,70,59,12,214,73,59,10,88,77,59,193,225,80,59,48,115,84,59,86,12,88,59,53,173,91,59,204,85,95,59,26,6,99,59,32,190,102,59,222,125,106,59,82,69,110,59,127,20,114,59,97,235,117,59,251,201,121,59,76,176,125,59,41,207,128,59,8,202,130,59,194,200,132,59,87,203,134,59,198,209,136,59,17,220,138,59,55,234,140,59,55,252,142,59,18,18,145,59,199,43,147,59,87,73,149,59,194,106,151,59,6,144,153,59,37,185,155,59,30,230,157,59,241,22,160,59,158,75,162,59,37,132,164,59,134,192,166,59,192,0,169,59,212,68,171,59,193,140,173,59,137,216,175,59,41,40,178,59,163,123,180,59,245,210,182,59,33,46,185,59,38,141,187,59,4,240,189,59,186,86,192,59,73,193,194,59,177,47,197,59,242,161,199,59,10,24,202,59,251,145,204,59,196,15,207,59,102,145,209,59,223,22,212,59,49,160,214,59,90,45,217,59,91,190,219,59,51,83,222,59,227,235,224,59,107,136,227,59,201,40,230,59,255,204,232,59,12,117,235,59,240,32,238,59,171,208,240,59,61,132,243,59,165,59,246,59,228,246,248,59,250,181,251,59,229,120,254,59,212,159,0,60,32,5,2,60,87,108,3,60,121,213,4,60,134,64,6,60,126,173,7,60,96,28,9,60,45,141,10,60,229,255,11,60,136,116,13,60,21,235,14,60,141,99,16,60,239,221,17,60,59,90,19,60,114,216,20,60,147,88,22,60,158,218,23,60,147,94,25,60,115,228,26,60,60,108,28,60,240,245,29,60,141,129,31,60,20,15,33,60,133,158,34,60,224,47,36,60,36,195,37,60,82,88,39,60,105,239,40,60,106,136,42,60,84,35,44,60,40,192,45,60,229,94,47,60,139,255,48,60,26,162,50,60,146,70,52,60,243,236,53,60,61,149,55,60,112,63,57,60,140,235,58,60,145,153,60,60,126,73,62,60,84,251,63,60,18,175,65,60,185,100,67,60,72,28,69,60,192,213,70,60,31,145,72,60,103,78,74,60,151,13,76,60,175,206,77,60,176,145,79,60,152,86,81,60,103,29,83,60,31,230,84,60,190,176,86,60,69,125,88,60,179,75,90,60,9,28,92,60,71,238,93,60,107,194,95,60,119,152,97,60,106,112,99,60,68,74,101,60,5,38,103,60,173,3,105,60,60,227,106,60,178,196,108,60,14,168,110,60,81,141,112,60,123,116,114,60,139,93,116,60,130,72,118,60,95,53,120,60,34,36,122,60,203,20,124,60,90,7,126,60,208,251,127,60,22,249,128,60,54,245,129,60,74,242,130,60,80,240,131,60,73,239,132,60,53,239,133,60,19,240,134,60,229,241,135,60,169,244,136,60,95,248,137,60,8,253,138,60,164,2,140,60,50,9,141,60,178,16,142,60,37,25,143,60,139,34,144,60,226,44,145,60,44,56,146,60,104,68,147,60,150,81,148,60,182,95,149,60,201,110,150,60,205,126,151,60,196,143,152,60,172,161,153,60,135,180,154,60,83,200,155,60,17,221,156,60,193,242,157,60,98,9,159,60,245,32,160,60,122,57,161,60,241,82,162,60,89,109,163,60,178,136,164,60,253,164,165,60,57,194,166,60,103,224,167,60,134,255,168,60,151,31,170,60,152,64,171,60,139,98,172,60,111,133,173,60,68,169,174,60,10,206,175,60,193,243,176,60,105,26,178,60,2,66,179,60,139,106,180,60,6,148,181,60,113,190,182,60,205,233,183,60,26,22,185,60,87,67,186,60,133,113,187,60,163,160,188,60,177,208,189,60,177,1,191,60,160,51,192,60,128,102,193,60,80,154,194,60,16,207,195,60,193,4,197,60,97,59,198,60,242,114,199,60,114,171,200,60,227,228,201,60,67,31,203,60,147,90,204,60,211,150,205,60,3,212,206,60,34,18,208,60,49,81,209,60,48,145,210,60,30,210,211,60,252,19,213,60,201,86,214,60,133,154,215,60,49,223,216,60,204,36,218,60,86,107,219,60,208,178,220,60,56,251,221,60,144,68,223,60,214,142,224,60,12,218,225,60,48,38,227,60,67,115,228,60,69,193,229,60,54,16,231,60,21,96,232,60,227,176,233,60,160,2,235,60,75,85,236,60,228,168,237,60,108,253,238,60,226,82,240,60,70,169,241,60,153,0,243,60,218,88,244,60,8,178,245,60,37,12,247,60,48,103,248,60,41,195,249,60,15,32,251,60,228,125,252,60,166,220,253,60,85,60,255,60,121,78,0,61,63,255,0,61,123,176,1,61,46,98,2,61,88,20,3,61,248,198,3,61,15,122,4,61,156,45,5,61,161,225,5,61,27,150,6,61,12,75,7,61,116,0,8,61,82,182,8,61,167,108,9,61,113,35,10,61,179,218,10,61,106,146,11,61,152,74,12,61,60,3,13,61,87,188,13,61,231,117,14,61,238,47,15,61,107,234,15,61,94,165,16,61,199,96,17,61,166,28,18,61,251,216,18,61,198,149,19,61,7,83,20,61,190,16,21,61,234,206,21,61,141,141,22,61,165,76,23,61,52,12,24,61,56,204,24,61,177,140,25,61,161,77,26,61,6,15,27,61,224,208,27,61,48,147,28,61,246,85,29,61,49,25,30,61,226,220,30,61,8,161,31,61,164,101,32,61,181,42,33,61,59,240,33,61,55,182,34,61,168,124,35,61,142,67,36,61,233,10,37,61,186,210,37,61,255,154,38,61,186,99,39,61,234,44,40,61,143,246,40,61,168,192,41,61,55,139,42,61,59,86,43,61,180,33,44,61,161,237,44,61,4,186,45,61,219,134,46,61,38,84,47,61,231,33,48,61,28,240,48,61,198,190,49,61,229,141,50,61,120,93,51,61,127,45,52,61,251,253,52,61,236,206,53,61,81,160,54,61,42,114,55,61,120,68,56,61,58,23,57,61,112,234,57,61,27,190,58,61,58,146,59,61,204,102,60,61,211,59,61,61,79,17,62,61,62,231,62,61,161,189,63,61,120,148,64,61,195,107,65,61,130,67,66,61,181,27,67,61,92,244,67,61,118,205,68,61,4,167,69,61,6,129,70,61,124,91,71,61,101,54,72,61,194,17,73,61,146,237,73,61,214,201,74,61,141,166,75,61,184,131,76,61,86,97,77,61,104,63,78,61,236,29,79,61,229,252,79,61,80,220,80,61,46,188,81,61,128,156,82,61,69,125,83,61,125,94,84,61,40,64,85,61,69,34,86,61,214,4,87,61,218,231,87,61,81,203,88,61,58,175,89,61,150,147,90,61,101,120,91,61,167,93,92,61,91,67,93,61,130,41,94,61,28,16,95,61,40,247,95,61,167,222,96,61,152,198,97,61,251,174,98,61,209,151,99,61,25,129,100,61,212,106,101,61,0,85,102,61,159,63,103,61,176,42,104,61,51,22,105,61,41,2,106,61,144,238,106,61,105,219,107,61,180,200,108,61,113,182,109,61,160,164,110,61,65,147,111,61,84,130,112,61,216,113,113,61,206,97,114,61,54,82,115,61,15,67,116,61,89,52,117,61,22,38,118,61,67,24,119,61,226,10,120,61,243,253,120,61,117,241,121,61,104,229,122,61,204,217,123,61,162,206,124,61,232,195,125,61,160,185,126,61,201,175,127,61,49,83,128,61,183,206,128,61,117,74,129,61,107,198,129,61,154,66,130,61,1,191,130,61,160,59,131,61,120,184,131,61,136,53,132,61,209,178,132,61,81,48,133,61,10,174,133,61,251,43,134,61,37,170,134,61,134,40,135,61,32,167,135,61,242,37,136,61,252,164,136,61,62,36,137,61,184,163,137,61,106,35,138,61,84,163,138,61,118,35,139,61,209,163,139,61,99,36,140,61,45,165,140,61,46,38,141,61,104,167,141,61,218,40,142,61,131,170,142,61,100,44,143,61,125,174,143,61,206,48,144,61,86,179,144,61,23,54,145,61,14,185,145,61,62,60,146,61,165,191,146,61,67,67,147,61,26,199,147,61,39,75,148,61,109,207,148,61,234,83,149,61,158,216,149,61,138,93,150,61,173,226,150,61,7,104,151,61,153,237,151,61,98,115,152,61,99,249,152,61,155,127,153,61,10,6,154,61,176,140,154,61,142,19,155,61,163,154,155,61,239,33,156,61,114,169,156,61,44,49,157,61,29,185,157,61,69,65,158,61,165,201,158,61,59,82,159,61,8,219,159,61,13,100,160,61,72,237,160,61,186,118,161,61,99,0,162,61,67,138,162,61,90,20,163,61,167,158,163,61,43,41,164,61,230,179,164,61,216,62,165,61,0,202,165,61,95,85,166,61,245,224,166,61,193,108,167,61,196,248,167,61,254,132,168,61,110,17,169,61,20,158,169,61,241,42,170,61,4,184,170,61,78,69,171,61,206,210,171,61,133,96,172,61,113,238,172,61,149,124,173,61,238,10,174,61,126,153,174,61,67,40,175,61,63,183,175,61,114,70,176,61,218,213,176,61,120,101,177,61,77,245,177,61,88,133,178,61,152,21,179,61,15,166,179,61,187,54,180,61,158,199,180,61,182,88,181,61,4,234,181,61,137,123,182,61,67,13,183,61,50,159,183,61,88,49,184,61,179,195,184,61,68,86,185,61,11,233,185,61,7,124,186,61,57,15,187,61,160,162,187,61,61,54,188,61,16,202,188,61,24,94,189,61,85,242,189,61,200,134,190,61,112,27,191,61,78,176,191,61,97,69,192,61,170,218,192,61,39,112,193,61,218,5,194,61,194,155,194,61,224,49,195,61,50,200,195,61,186,94,196,61,119,245,196,61,104,140,197,61,143,35,198,61,235,186,198,61,124,82,199,61,66,234,199,61,61,130,200,61,108,26,201,61,209,178,201,61,106,75,202,61,57,228,202,61,59,125,203,61,115,22,204,61,224,175,204,61,129,73,205,61,86,227,205,61,97,125,206,61,159,23,207,61,19,178,207,61,187,76,208,61,151,231,208,61,168,130,209,61,237,29,210,61,103,185,210,61,21,85,211,61,248,240,211,61,14,141,212,61,89,41,213,61,216,197,213,61,140,98,214,61,115,255,214,61,143,156,215,61,223,57,216,61,99,215,216,61,27,117,217,61,7,19,218,61,38,177,218,61,122,79,219,61,2,238,219,61,189,140,220,61,173,43,221,61,208,202,221,61,39,106,222,61,178,9,223,61,112,169,223,61,98,73,224,61,136,233,224,61,226,137,225,61,111,42,226,61,47,203,226,61,35,108,227,61,74,13,228,61,165,174,228,61,52,80,229,61,245,241,229,61,234,147,230,61,19,54,231,61,110,216,231,61,253,122,232,61,191,29,233,61,180,192,233,61,221,99,234,61,56,7,235,61,199,170,235,61,136,78,236,61,125,242,236,61,164,150,237,61,255,58,238,61,140,223,238,61,76,132,239,61,63,41,240,61,101,206,240,61,189,115,241,61,73,25,242,61,7,191,242,61,247,100,243,61,26,11,244,61,112,177,244,61,248,87,245,61,179,254,245,61,160,165,246,61,192,76,247,61,18,244,247,61,151,155,248,61,77,67,249,61,55,235,249,61,82,147,250,61,159,59,251,61,31,228,251,61,209,140,252,61,181,53,253,61,203,222,253,61,19,136,254,61,141,49,255,61,57,219,255,61,140,66,0,62,148,151,0,62,181,236,0,62,238,65,1,62,65,151,1,62,173,236,1,62,49,66,2,62,206,151,2,62,132,237,2,62,83,67,3,62,59,153,3,62,59,239,3,62,84,69,4,62,134,155,4,62,209,241,4,62,52,72,5,62,176,158,5,62,68,245,5,62,242,75,6,62,183,162,6,62,150,249,6,62,141,80,7,62,156,167,7,62,196,254,7,62,5,86,8,62,94,173,8,62,207,4,9,62,89,92,9,62,252,179,9,62,183,11,10,62,138,99,10,62,118,187,10,62,122,19,11,62,150,107,11,62,203,195,11,62,24,28,12,62,125,116,12,62,250,204,12,62,144,37,13,62,62,126,13,62,4,215,13,62,227,47,14,62,217,136,14,62,232,225,14,62,15,59,15,62,78,148,15,62,165,237,15,62,20,71,16,62,155,160,16,62,58,250,16,62,241,83,17,62,193,173,17,62,168,7,18,62,167,97,18,62,190,187,18,62,237,21,19,62,51,112,19,62,146,202,19,62,9,37,20,62,151,127,20,62,61,218,20,62,251,52,21,62,209,143,21,62,190,234,21,62,195,69,22,62,224,160,22,62,21,252,22,62,97,87,23,62,197,178,23,62,64,14,24,62,211,105,24,62,126,197,24,62,64,33,25,62,26,125,25,62,11,217,25,62,20,53,26,62,52,145,26,62,108,237,26,62,187,73,27,62,34,166,27,62,160,2,28,62,53,95,28,62,226,187,28,62,166,24,29,62,129,117,29,62,116,210,29,62,126,47,30,62,159,140,30,62,215,233,30,62,39,71,31,62,141,164,31,62,11,2,32,62,160,95,32,62,76,189,32,62,16,27,33,62,234,120,33,62,219,214,33,62,228,52,34,62,3,147,34,62,58,241,34,62,135,79,35,62,235,173,35,62,103,12,36,62,249,106,36,62,162,201,36,62,98,40,37,62,56,135,37,62,38,230,37,62,42,69,38,62,69,164,38,62,119,3,39,62,192,98,39,62,31,194,39,62,149,33,40,62,33,129,40,62,197,224,40,62,126,64,41,62,79,160,41,62,54,0,42,62,51,96,42,62,72,192,42,62,114,32,43,62,179,128,43,62,11,225,43,62,121,65,44,62,253,161,44,62,152,2,45,62,73,99,45,62,16,196,45,62,238,36,46,62,226,133,46,62,237,230,46,62,13,72,47,62,68,169,47,62,145,10,48,62,245,107,48,62,110,205,48,62,254,46,49,62,163,144,49,62,95,242,49,62,49,84,50,62,25,182,50,62,23,24,51,62,43,122,51,62,85,220,51,62,148,62,52,62,234,160,52,62,86,3,53,62,216,101,53,62,111,200,53,62,28,43,54,62,223,141,54,62,184,240,54,62,167,83,55,62,171,182,55,62,197,25,56,62,245,124,56,62,59,224,56,62,150,67,57,62,7,167,57,62,141,10,58,62,41,110,58,62,219,209,58,62,162,53,59,62,126,153,59,62,112,253,59,62,120,97,60,62,149,197,60,62,199,41,61,62,15,142,61,62,108,242,61,62,222,86,62,62,102,187,62,62,3,32,63,62,181,132,63,62,125,233,63,62,90,78,64,62,75,179,64,62,83,24,65,62,111,125,65,62,160,226,65,62,231,71,66,62,66,173,66,62,179,18,67,62,57,120,67,62,211,221,67,62,131,67,68,62,71,169,68,62,33,15,69,62,15,117,69,62,18,219,69,62,42,65,70,62,87,167,70,62,153,13,71,62,240,115,71,62,91,218,71,62,219,64,72,62,111,167,72,62,25,14,73,62,215,116,73,62,169,219,73,62,144,66,74,62,140,169,74,62,157,16,75,62,193,119,75,62,251,222,75,62,73,70,76,62,171,173,76,62,34,21,77,62,173,124,77,62,76,228,77,62,0,76,78,62,200,179,78,62,164,27,79,62,149,131,79,62,154,235,79,62,179,83,80,62,225,187,80,62,34,36,81,62,120,140,81,62,225,244,81,62,95,93,82,62,241,197,82,62,151,46,83,62,81,151,83,62,31,0,84,62,1,105,84,62,247,209,84,62,0,59,85,62,30,164,85,62,79,13,86,62,149,118,86,62,238,223,86,62,91,73,87,62,219,178,87,62,112,28,88,62,24,134,88,62,211,239,88,62,163,89,89,62,134,195,89,62,124,45,90,62,134,151,90,62,164,1,91,62,213,107,91,62,26,214,91,62,114,64,92,62,221,170,92,62,92,21,93,62,239,127,93,62,148,234,93,62,77,85,94,62,26,192,94,62,249,42,95,62,236,149,95,62,242,0,96,62,11,108,96,62,55,215,96,62,119,66,97,62,202,173,97,62,47,25,98,62,168,132,98,62,52,240,98,62,210,91,99,62,132,199,99,62,73,51,100,62,32,159,100,62,11,11,101,62,8,119,101,62,24,227,101,62,59,79,102,62,113,187,102,62,186,39,103,62,21,148,103,62,131,0,104,62,3,109,104,62,151,217,104,62,60,70,105,62,245,178,105,62,192,31,106,62,157,140,106,62,141,249,106,62,144,102,107,62,165,211,107,62,204,64,108,62,6,174,108,62,82,27,109,62,176,136,109,62,33,246,109,62,164,99,110,62,57,209,110,62,225,62,111,62,154,172,111,62,102,26,112,62,68,136,112,62,52,246,112,62,55,100,113,62,75,210,113,62,113,64,114,62,169,174,114,62,243,28,115,62,80,139,115,62,190,249,115,62,61,104,116,62,207,214,116,62,115,69,117,62,40,180,117,62,239,34,118,62,200,145,118,62,179,0,119,62,175,111,119,62,189,222,119,62,221,77,120,62,14,189,120,62,80,44,121,62,165,155,121,62,10,11,122,62,130,122,122,62,10,234,122,62,164,89,123,62,80,201,123,62,13,57,124,62,219,168,124,62,186,24,125,62,171,136,125,62,173,248,125,62,192,104,126,62,228,216,126,62,26,73,127,62,96,185,127,62,220,20,128,62,16,77,128,62,77,133,128,62,147,189,128,62,225,245,128,62,55,46,129,62,150,102,129,62,253,158,129,62,109,215,129,62,229,15,130,62,102,72,130,62,238,128,130,62,128,185,130,62,25,242,130,62,187,42,131,62,102,99,131,62,24,156,131,62,211,212,131,62,150,13,132,62,98,70,132,62,53,127,132,62,17,184,132,62,245,240,132,62,226,41,133,62,214,98,133,62,211,155,133,62,216,212,133,62,229,13,134,62,250,70,134,62,23,128,134,62,61,185,134,62,106,242,134,62,160,43,135,62,221,100,135,62,35,158,135,62,112,215,135,62,198,16,136,62,35,74,136,62,137,131,136,62,247,188,136,62,108,246,136,62,233,47,137,62,111,105,137,62,252,162,137,62,145,220,137,62,46,22,138,62,211,79,138,62,127,137,138,62,52,195,138,62,240,252,138,62,180,54,139,62,128,112,139,62,84,170,139,62,47,228,139,62,18,30,140,62,253,87,140,62,239,145,140,62,233,203,140,62,235,5,141,62,245,63,141,62,6,122,141,62,31,180,141,62,63,238,141,62,103,40,142,62], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+530936); +/* memory initializer */ allocate([150,98,142,62,205,156,142,62,12,215,142,62,82,17,143,62,159,75,143,62,245,133,143,62,81,192,143,62,181,250,143,62,33,53,144,62,147,111,144,62,14,170,144,62,143,228,144,62,25,31,145,62,169,89,145,62,65,148,145,62,224,206,145,62,134,9,146,62,52,68,146,62,233,126,146,62,165,185,146,62,105,244,146,62,52,47,147,62,6,106,147,62,223,164,147,62,191,223,147,62,167,26,148,62,150,85,148,62,139,144,148,62,136,203,148,62,140,6,149,62,152,65,149,62,170,124,149,62,195,183,149,62,227,242,149,62,11,46,150,62,57,105,150,62,111,164,150,62,171,223,150,62,238,26,151,62,56,86,151,62,138,145,151,62,226,204,151,62,65,8,152,62,167,67,152,62,19,127,152,62,135,186,152,62,1,246,152,62,130,49,153,62,10,109,153,62,153,168,153,62,47,228,153,62,203,31,154,62,110,91,154,62,24,151,154,62,200,210,154,62,127,14,155,62,61,74,155,62,2,134,155,62,205,193,155,62,158,253,155,62,119,57,156,62,85,117,156,62,59,177,156,62,39,237,156,62,25,41,157,62,18,101,157,62,18,161,157,62,24,221,157,62,36,25,158,62,55,85,158,62,80,145,158,62,112,205,158,62,150,9,159,62,195,69,159,62,246,129,159,62,47,190,159,62,111,250,159,62,180,54,160,62,1,115,160,62,83,175,160,62,172,235,160,62,11,40,161,62,112,100,161,62,219,160,161,62,77,221,161,62,196,25,162,62,66,86,162,62,198,146,162,62,81,207,162,62,225,11,163,62,119,72,163,62,20,133,163,62,182,193,163,62,95,254,163,62,13,59,164,62,194,119,164,62,125,180,164,62,61,241,164,62,4,46,165,62,208,106,165,62,162,167,165,62,123,228,165,62,89,33,166,62,61,94,166,62,39,155,166,62,23,216,166,62,12,21,167,62,7,82,167,62,8,143,167,62,15,204,167,62,28,9,168,62,46,70,168,62,70,131,168,62,100,192,168,62,136,253,168,62,177,58,169,62,223,119,169,62,20,181,169,62,78,242,169,62,141,47,170,62,211,108,170,62,29,170,170,62,109,231,170,62,195,36,171,62,31,98,171,62,127,159,171,62,230,220,171,62,81,26,172,62,194,87,172,62,57,149,172,62,181,210,172,62,54,16,173,62,189,77,173,62,73,139,173,62,218,200,173,62,113,6,174,62,13,68,174,62,174,129,174,62,85,191,174,62,0,253,174,62,177,58,175,62,103,120,175,62,35,182,175,62,227,243,175,62,169,49,176,62,116,111,176,62,68,173,176,62,25,235,176,62,243,40,177,62,210,102,177,62,182,164,177,62,160,226,177,62,142,32,178,62,129,94,178,62,121,156,178,62,119,218,178,62,121,24,179,62,128,86,179,62,140,148,179,62,157,210,179,62,178,16,180,62,205,78,180,62,236,140,180,62,16,203,180,62,57,9,181,62,103,71,181,62,154,133,181,62,209,195,181,62,13,2,182,62,78,64,182,62,147,126,182,62,221,188,182,62,44,251,182,62,127,57,183,62,215,119,183,62,52,182,183,62,149,244,183,62,251,50,184,62,101,113,184,62,212,175,184,62,71,238,184,62,191,44,185,62,59,107,185,62,188,169,185,62,65,232,185,62,202,38,186,62,88,101,186,62,235,163,186,62,129,226,186,62,28,33,187,62,188,95,187,62,95,158,187,62,7,221,187,62,180,27,188,62,100,90,188,62,25,153,188,62,210,215,188,62,143,22,189,62,80,85,189,62,22,148,189,62,223,210,189,62,173,17,190,62,127,80,190,62,85,143,190,62,47,206,190,62,13,13,191,62,239,75,191,62,213,138,191,62,191,201,191,62,173,8,192,62,159,71,192,62,149,134,192,62,143,197,192,62,141,4,193,62,143,67,193,62,148,130,193,62,158,193,193,62,171,0,194,62,188,63,194,62,209,126,194,62,234,189,194,62,6,253,194,62,38,60,195,62,74,123,195,62,113,186,195,62,157,249,195,62,204,56,196,62,254,119,196,62,52,183,196,62,110,246,196,62,171,53,197,62,236,116,197,62,49,180,197,62,121,243,197,62,196,50,198,62,19,114,198,62,102,177,198,62,188,240,198,62,21,48,199,62,114,111,199,62,210,174,199,62,54,238,199,62,157,45,200,62,7,109,200,62,117,172,200,62,230,235,200,62,90,43,201,62,209,106,201,62,76,170,201,62,202,233,201,62,75,41,202,62,208,104,202,62,88,168,202,62,226,231,202,62,112,39,203,62,1,103,203,62,149,166,203,62,45,230,203,62,199,37,204,62,100,101,204,62,4,165,204,62,168,228,204,62,78,36,205,62,248,99,205,62,164,163,205,62,83,227,205,62,5,35,206,62,186,98,206,62,114,162,206,62,45,226,206,62,234,33,207,62,171,97,207,62,110,161,207,62,52,225,207,62,253,32,208,62,200,96,208,62,150,160,208,62,103,224,208,62,59,32,209,62,17,96,209,62,234,159,209,62,198,223,209,62,164,31,210,62,133,95,210,62,104,159,210,62,78,223,210,62,55,31,211,62,33,95,211,62,15,159,211,62,255,222,211,62,241,30,212,62,230,94,212,62,221,158,212,62,215,222,212,62,211,30,213,62,209,94,213,62,210,158,213,62,213,222,213,62,219,30,214,62,226,94,214,62,236,158,214,62,248,222,214,62,7,31,215,62,24,95,215,62,42,159,215,62,63,223,215,62,87,31,216,62,112,95,216,62,139,159,216,62,169,223,216,62,200,31,217,62,234,95,217,62,14,160,217,62,51,224,217,62,91,32,218,62,133,96,218,62,176,160,218,62,222,224,218,62,13,33,219,62,63,97,219,62,114,161,219,62,167,225,219,62,222,33,220,62,23,98,220,62,82,162,220,62,142,226,220,62,204,34,221,62,12,99,221,62,78,163,221,62,146,227,221,62,215,35,222,62,29,100,222,62,102,164,222,62,176,228,222,62,252,36,223,62,73,101,223,62,152,165,223,62,232,229,223,62,58,38,224,62,142,102,224,62,227,166,224,62,57,231,224,62,145,39,225,62,234,103,225,62,69,168,225,62,161,232,225,62,255,40,226,62,94,105,226,62,190,169,226,62,32,234,226,62,131,42,227,62,231,106,227,62,76,171,227,62,179,235,227,62,27,44,228,62,132,108,228,62,238,172,228,62,90,237,228,62,199,45,229,62,52,110,229,62,163,174,229,62,19,239,229,62,133,47,230,62,247,111,230,62,106,176,230,62,222,240,230,62,83,49,231,62,202,113,231,62,65,178,231,62,185,242,231,62,50,51,232,62,172,115,232,62,38,180,232,62,162,244,232,62,31,53,233,62,156,117,233,62,26,182,233,62,153,246,233,62,25,55,234,62,153,119,234,62,26,184,234,62,156,248,234,62,31,57,235,62,162,121,235,62,38,186,235,62,170,250,235,62,47,59,236,62,181,123,236,62,59,188,236,62,194,252,236,62,73,61,237,62,209,125,237,62,89,190,237,62,226,254,237,62,107,63,238,62,245,127,238,62,127,192,238,62,10,1,239,62,149,65,239,62,32,130,239,62,171,194,239,62,55,3,240,62,196,67,240,62,80,132,240,62,221,196,240,62,106,5,241,62,247,69,241,62,132,134,241,62,18,199,241,62,160,7,242,62,45,72,242,62,187,136,242,62,74,201,242,62,216,9,243,62,102,74,243,62,244,138,243,62,131,203,243,62,17,12,244,62,159,76,244,62,46,141,244,62,188,205,244,62,74,14,245,62,216,78,245,62,102,143,245,62,244,207,245,62,129,16,246,62,15,81,246,62,156,145,246,62,41,210,246,62,182,18,247,62,67,83,247,62,207,147,247,62,91,212,247,62,231,20,248,62,115,85,248,62,254,149,248,62,136,214,248,62,19,23,249,62,157,87,249,62,38,152,249,62,175,216,249,62,56,25,250,62,192,89,250,62,72,154,250,62,207,218,250,62,86,27,251,62,220,91,251,62,97,156,251,62,230,220,251,62,106,29,252,62,238,93,252,62,113,158,252,62,243,222,252,62,117,31,253,62,245,95,253,62,118,160,253,62,245,224,253,62,116,33,254,62,241,97,254,62,110,162,254,62,235,226,254,62,102,35,255,62,224,99,255,62,90,164,255,62,211,228,255,62,165,18,0,63,225,50,0,63,27,83,0,63,86,115,0,63,144,147,0,63,201,179,0,63,2,212,0,63,58,244,0,63,114,20,1,63,169,52,1,63,224,84,1,63,22,117,1,63,76,149,1,63,129,181,1,63,181,213,1,63,233,245,1,63,28,22,2,63,78,54,2,63,128,86,2,63,178,118,2,63,226,150,2,63,18,183,2,63,65,215,2,63,112,247,2,63,157,23,3,63,203,55,3,63,247,87,3,63,35,120,3,63,78,152,3,63,120,184,3,63,161,216,3,63,202,248,3,63,242,24,4,63,25,57,4,63,63,89,4,63,101,121,4,63,137,153,4,63,173,185,4,63,208,217,4,63,243,249,4,63,20,26,5,63,52,58,5,63,84,90,5,63,115,122,5,63,145,154,5,63,173,186,5,63,202,218,5,63,229,250,5,63,255,26,6,63,24,59,6,63,48,91,6,63,72,123,6,63,94,155,6,63,116,187,6,63,136,219,6,63,155,251,6,63,174,27,7,63,191,59,7,63,208,91,7,63,223,123,7,63,237,155,7,63,250,187,7,63,7,220,7,63,18,252,7,63,28,28,8,63,37,60,8,63,44,92,8,63,51,124,8,63,57,156,8,63,61,188,8,63,64,220,8,63,67,252,8,63,68,28,9,63,68,60,9,63,66,92,9,63,64,124,9,63,60,156,9,63,55,188,9,63,49,220,9,63,41,252,9,63,33,28,10,63,23,60,10,63,12,92,10,63,255,123,10,63,242,155,10,63,227,187,10,63,211,219,10,63,193,251,10,63,174,27,11,63,154,59,11,63,133,91,11,63,110,123,11,63,86,155,11,63,60,187,11,63,33,219,11,63,5,251,11,63,231,26,12,63,200,58,12,63,168,90,12,63,134,122,12,63,98,154,12,63,62,186,12,63,23,218,12,63,240,249,12,63,199,25,13,63,156,57,13,63,112,89,13,63,66,121,13,63,19,153,13,63,227,184,13,63,176,216,13,63,125,248,13,63,72,24,14,63,17,56,14,63,216,87,14,63,159,119,14,63,99,151,14,63,38,183,14,63,232,214,14,63,167,246,14,63,101,22,15,63,34,54,15,63,221,85,15,63,150,117,15,63,78,149,15,63,4,181,15,63,184,212,15,63,106,244,15,63,27,20,16,63,202,51,16,63,120,83,16,63,36,115,16,63,206,146,16,63,118,178,16,63,28,210,16,63,193,241,16,63,100,17,17,63,6,49,17,63,165,80,17,63,67,112,17,63,223,143,17,63,121,175,17,63,17,207,17,63,167,238,17,63,60,14,18,63,206,45,18,63,95,77,18,63,238,108,18,63,123,140,18,63,7,172,18,63,144,203,18,63,23,235,18,63,157,10,19,63,32,42,19,63,162,73,19,63,34,105,19,63,159,136,19,63,27,168,19,63,149,199,19,63,13,231,19,63,131,6,20,63,247,37,20,63,104,69,20,63,216,100,20,63,70,132,20,63,178,163,20,63,27,195,20,63,131,226,20,63,233,1,21,63,76,33,21,63,174,64,21,63,13,96,21,63,106,127,21,63,197,158,21,63,31,190,21,63,117,221,21,63,202,252,21,63,29,28,22,63,109,59,22,63,188,90,22,63,8,122,22,63,82,153,22,63,153,184,22,63,223,215,22,63,34,247,22,63,100,22,23,63,162,53,23,63,223,84,23,63,26,116,23,63,82,147,23,63,136,178,23,63,187,209,23,63,237,240,23,63,28,16,24,63,73,47,24,63,115,78,24,63,155,109,24,63,193,140,24,63,228,171,24,63,6,203,24,63,36,234,24,63,65,9,25,63,91,40,25,63,115,71,25,63,136,102,25,63,155,133,25,63,171,164,25,63,185,195,25,63,197,226,25,63,206,1,26,63,213,32,26,63,217,63,26,63,219,94,26,63,218,125,26,63,215,156,26,63,210,187,26,63,202,218,26,63,191,249,26,63,178,24,27,63,162,55,27,63,144,86,27,63,123,117,27,63,100,148,27,63,74,179,27,63,46,210,27,63,15,241,27,63,237,15,28,63,201,46,28,63,162,77,28,63,121,108,28,63,77,139,28,63,31,170,28,63,237,200,28,63,185,231,28,63,131,6,29,63,74,37,29,63,14,68,29,63,207,98,29,63,142,129,29,63,74,160,29,63,3,191,29,63,186,221,29,63,110,252,29,63,31,27,30,63,205,57,30,63,121,88,30,63,34,119,30,63,200,149,30,63,107,180,30,63,12,211,30,63,170,241,30,63,69,16,31,63,221,46,31,63,114,77,31,63,5,108,31,63,148,138,31,63,33,169,31,63,171,199,31,63,50,230,31,63,182,4,32,63,56,35,32,63,182,65,32,63,50,96,32,63,170,126,32,63,32,157,32,63,147,187,32,63,3,218,32,63,112,248,32,63,218,22,33,63,65,53,33,63,165,83,33,63,6,114,33,63,100,144,33,63,191,174,33,63,23,205,33,63,108,235,33,63,190,9,34,63,13,40,34,63,89,70,34,63,162,100,34,63,232,130,34,63,43,161,34,63,107,191,34,63,167,221,34,63,225,251,34,63,24,26,35,63,75,56,35,63,123,86,35,63,168,116,35,63,211,146,35,63,249,176,35,63,29,207,35,63,62,237,35,63,91,11,36,63,118,41,36,63,141,71,36,63,161,101,36,63,177,131,36,63,191,161,36,63,201,191,36,63,208,221,36,63,212,251,36,63,213,25,37,63,210,55,37,63,204,85,37,63,195,115,37,63,183,145,37,63,167,175,37,63,148,205,37,63,126,235,37,63,101,9,38,63,72,39,38,63,40,69,38,63,4,99,38,63,221,128,38,63,179,158,38,63,134,188,38,63,85,218,38,63,33,248,38,63,233,21,39,63,174,51,39,63,112,81,39,63,46,111,39,63,233,140,39,63,160,170,39,63,84,200,39,63,4,230,39,63,178,3,40,63,91,33,40,63,1,63,40,63,164,92,40,63,67,122,40,63,223,151,40,63,120,181,40,63,12,211,40,63,158,240,40,63,43,14,41,63,182,43,41,63,60,73,41,63,192,102,41,63,63,132,41,63,187,161,41,63,52,191,41,63,169,220,41,63,26,250,41,63,136,23,42,63,242,52,42,63,89,82,42,63,188,111,42,63,28,141,42,63,119,170,42,63,208,199,42,63,36,229,42,63,117,2,43,63,194,31,43,63,12,61,43,63,82,90,43,63,148,119,43,63,211,148,43,63,14,178,43,63,69,207,43,63,120,236,43,63,168,9,44,63,212,38,44,63,252,67,44,63,33,97,44,63,66,126,44,63,95,155,44,63,120,184,44,63,142,213,44,63,159,242,44,63,173,15,45,63,184,44,45,63,190,73,45,63,193,102,45,63,191,131,45,63,186,160,45,63,177,189,45,63,165,218,45,63,148,247,45,63,128,20,46,63,103,49,46,63,75,78,46,63,43,107,46,63,7,136,46,63,224,164,46,63,180,193,46,63,132,222,46,63,81,251,46,63,26,24,47,63,222,52,47,63,159,81,47,63,92,110,47,63,21,139,47,63,202,167,47,63,123,196,47,63,40,225,47,63,209,253,47,63,118,26,48,63,23,55,48,63,180,83,48,63,77,112,48,63,226,140,48,63,115,169,48,63,0,198,48,63,137,226,48,63,14,255,48,63,142,27,49,63,11,56,49,63,132,84,49,63,248,112,49,63,105,141,49,63,214,169,49,63,62,198,49,63,162,226,49,63,2,255,49,63,95,27,50,63,182,55,50,63,10,84,50,63,90,112,50,63,166,140,50,63,237,168,50,63,48,197,50,63,111,225,50,63,170,253,50,63,225,25,51,63,19,54,51,63,66,82,51,63,108,110,51,63,146,138,51,63,180,166,51,63,209,194,51,63,234,222,51,63,0,251,51,63,16,23,52,63,29,51,52,63,37,79,52,63,41,107,52,63,41,135,52,63,37,163,52,63,28,191,52,63,15,219,52,63,253,246,52,63,232,18,53,63,206,46,53,63,176,74,53,63,141,102,53,63,102,130,53,63,59,158,53,63,11,186,53,63,215,213,53,63,159,241,53,63,98,13,54,63,33,41,54,63,220,68,54,63,146,96,54,63,68,124,54,63,241,151,54,63,154,179,54,63,63,207,54,63,223,234,54,63,123,6,55,63,18,34,55,63,165,61,55,63,52,89,55,63,190,116,55,63,67,144,55,63,196,171,55,63,65,199,55,63,185,226,55,63,45,254,55,63,156,25,56,63,7,53,56,63,109,80,56,63,207,107,56,63,44,135,56,63,133,162,56,63,217,189,56,63,40,217,56,63,115,244,56,63,186,15,57,63,252,42,57,63,57,70,57,63,114,97,57,63,166,124,57,63,214,151,57,63,1,179,57,63,40,206,57,63,74,233,57,63,103,4,58,63,128,31,58,63,148,58,58,63,163,85,58,63,174,112,58,63,180,139,58,63,182,166,58,63,179,193,58,63,171,220,58,63,159,247,58,63,142,18,59,63,120,45,59,63,94,72,59,63,63,99,59,63,27,126,59,63,243,152,59,63,197,179,59,63,148,206,59,63,93,233,59,63,34,4,60,63,226,30,60,63,157,57,60,63,84,84,60,63,5,111,60,63,178,137,60,63,91,164,60,63,254,190,60,63,157,217,60,63,55,244,60,63,204,14,61,63,93,41,61,63,232,67,61,63,111,94,61,63,241,120,61,63,110,147,61,63,231,173,61,63,91,200,61,63,201,226,61,63,51,253,61,63,152,23,62,63,249,49,62,63,84,76,62,63,171,102,62,63,252,128,62,63,73,155,62,63,145,181,62,63,212,207,62,63,19,234,62,63,76,4,63,63,128,30,63,63,176,56,63,63,219,82,63,63,0,109,63,63,33,135,63,63,61,161,63,63,84,187,63,63,102,213,63,63,115,239,63,63,123,9,64,63,127,35,64,63,125,61,64,63,118,87,64,63,106,113,64,63,90,139,64,63,68,165,64,63,42,191,64,63,10,217,64,63,229,242,64,63,188,12,65,63,141,38,65,63,90,64,65,63,33,90,65,63,228,115,65,63,161,141,65,63,89,167,65,63,13,193,65,63,187,218,65,63,100,244,65,63,8,14,66,63,167,39,66,63,65,65,66,63,214,90,66,63,102,116,66,63,241,141,66,63,119,167,66,63,248,192,66,63,115,218,66,63,234,243,66,63,91,13,67,63,199,38,67,63,47,64,67,63,145,89,67,63,238,114,67,63,69,140,67,63,152,165,67,63,230,190,67,63,46,216,67,63,113,241,67,63,175,10,68,63,232,35,68,63,28,61,68,63,75,86,68,63,116,111,68,63,153,136,68,63,184,161,68,63,210,186,68,63,230,211,68,63,246,236,68,63,0,6,69,63,5,31,69,63,5,56,69,63,0,81,69,63,245,105,69,63,230,130,69,63,209,155,69,63,182,180,69,63,151,205,69,63,114,230,69,63,72,255,69,63,25,24,70,63,229,48,70,63,171,73,70,63,108,98,70,63,40,123,70,63,222,147,70,63,143,172,70,63,59,197,70,63,226,221,70,63,131,246,70,63,31,15,71,63,182,39,71,63,71,64,71,63,211,88,71,63,90,113,71,63,220,137,71,63,88,162,71,63,207,186,71,63,64,211,71,63,172,235,71,63,19,4,72,63,116,28,72,63,209,52,72,63,39,77,72,63,121,101,72,63,197,125,72,63,11,150,72,63,77,174,72,63,137,198,72,63,191,222,72,63,240,246,72,63,28,15,73,63,66,39,73,63,99,63,73,63,127,87,73,63,149,111,73,63,166,135,73,63,177,159,73,63,183,183,73,63,183,207,73,63,178,231,73,63,168,255,73,63,152,23,74,63,131,47,74,63,104,71,74,63,72,95,74,63,34,119,74,63,247,142,74,63,199,166,74,63,145,190,74,63,85,214,74,63,20,238,74,63,206,5,75,63,130,29,75,63,49,53,75,63,218,76,75,63,126,100,75,63,28,124,75,63,181,147,75,63,72,171,75,63,213,194,75,63,93,218,75,63,224,241,75,63,93,9,76,63,213,32,76,63,71,56,76,63,179,79,76,63,26,103,76,63,124,126,76,63,216,149,76,63,46,173,76,63,127,196,76,63,202,219,76,63,16,243,76,63,80,10,77,63,139,33,77,63,192,56,77,63,240,79,77,63,26,103,77,63,62,126,77,63,93,149,77,63,118,172,77,63,137,195,77,63,151,218,77,63,160,241,77,63,163,8,78,63,160,31,78,63,151,54,78,63,137,77,78,63,118,100,78,63,93,123,78,63,62,146,78,63,25,169,78,63,239,191,78,63,192,214,78,63,138,237,78,63,79,4,79,63,15,27,79,63,201,49,79,63,125,72,79,63,43,95,79,63,212,117,79,63,119,140,79,63,21,163,79,63,172,185,79,63,63,208,79,63,203,230,79,63,82,253,79,63,211,19,80,63,79,42,80,63,197,64,80,63,53,87,80,63,159,109,80,63,4,132,80,63,99,154,80,63,189,176,80,63,16,199,80,63,94,221,80,63,167,243,80,63,233,9,81,63,38,32,81,63,93,54,81,63,143,76,81,63,187,98,81,63,225,120,81,63,1,143,81,63,28,165,81,63,48,187,81,63,64,209,81,63,73,231,81,63,77,253,81,63,75,19,82,63,67,41,82,63,53,63,82,63,34,85,82,63,9,107,82,63,234,128,82,63,198,150,82,63,155,172,82,63,107,194,82,63,53,216,82,63,250,237,82,63,185,3,83,63,113,25,83,63,37,47,83,63,210,68,83,63,121,90,83,63,27,112,83,63,183,133,83,63,77,155,83,63,222,176,83,63,104,198,83,63,237,219,83,63,108,241,83,63,230,6,84,63,89,28,84,63,199,49,84,63,46,71,84,63,145,92,84,63,237,113,84,63,67,135,84,63,148,156,84,63,223,177,84,63,35,199,84,63,99,220,84,63,156,241,84,63,207,6,85,63,253,27,85,63,37,49,85,63,71,70,85,63,99,91,85,63,121,112,85,63,138,133,85,63,149,154,85,63,153,175,85,63,152,196,85,63,146,217,85,63,133,238,85,63,114,3,86,63,90,24,86,63,60,45,86,63,24,66,86,63,238,86,86,63,190,107,86,63,136,128,86,63,76,149,86,63,11,170,86,63,196,190,86,63,118,211,86,63,35,232,86,63,203,252,86,63,108,17,87,63,7,38,87,63,156,58,87,63,44,79,87,63,182,99,87,63,58,120,87,63,183,140,87,63,47,161,87,63,162,181,87,63,14,202,87,63,116,222,87,63,213,242,87,63,47,7,88,63,132,27,88,63,211,47,88,63,28,68,88,63,95,88,88,63,156,108,88,63,211,128,88,63,4,149,88,63,47,169,88,63,85,189,88,63,116,209,88,63,142,229,88,63,162,249,88,63,175,13,89,63,183,33,89,63,185,53,89,63,181,73,89,63,171,93,89,63,155,113,89,63,134,133,89,63,106,153,89,63,72,173,89,63,33,193,89,63,243,212,89,63,192,232,89,63,135,252,89,63,71,16,90,63,2,36,90,63,183,55,90,63,102,75,90,63,15,95,90,63,178,114,90,63,79,134,90,63,230,153,90,63,119,173,90,63,3,193,90,63,136,212,90,63,7,232,90,63,129,251,90,63,244,14,91,63,98,34,91,63,201,53,91,63,43,73,91,63,135,92,91,63,220,111,91,63,44,131,91,63,118,150,91,63,186,169,91,63,248,188,91,63,47,208,91,63,97,227,91,63,141,246,91,63,179,9,92,63,212,28,92,63,238,47,92,63,2,67,92,63,16,86,92,63,24,105,92,63,26,124,92,63,23,143,92,63,13,162,92,63,253,180,92,63,232,199,92,63,204,218,92,63,171,237,92,63,131,0,93,63,86,19,93,63,34,38,93,63,233,56,93,63,169,75,93,63,100,94,93,63,24,113,93,63,199,131,93,63,112,150,93,63,18,169,93,63,175,187,93,63,70,206,93,63,215,224,93,63,97,243,93,63,230,5,94,63,101,24,94,63,222,42,94,63,81,61,94,63,190,79,94,63,36,98,94,63,133,116,94,63,224,134,94,63,53,153,94,63,132,171,94,63,205,189,94,63,16,208,94,63,77,226,94,63,132,244,94,63,181,6,95,63,224,24,95,63,5,43,95,63,36,61,95,63,61,79,95,63,80,97,95,63,93,115,95,63,101,133,95,63,102,151,95,63,97,169,95,63,86,187,95,63,69,205,95,63,46,223,95,63,18,241,95,63,239,2,96,63,198,20,96,63,151,38,96,63,98,56,96,63,40,74,96,63,231,91,96,63,160,109,96,63,84,127,96,63,1,145,96,63,168,162,96,63,73,180,96,63,229,197,96,63,122,215,96,63,10,233,96,63,147,250,96,63,22,12,97,63,148,29,97,63,11,47,97,63,125,64,97,63,232,81,97,63,77,99,97,63,173,116,97,63,6,134,97,63,90,151,97,63,167,168,97,63,239,185,97,63,48,203,97,63,108,220,97,63,162,237,97,63,209,254,97,63,251,15,98,63,30,33,98,63,60,50,98,63,84,67,98,63,101,84,98,63,113,101,98,63,119,118,98,63,119,135,98,63,112,152,98,63,100,169,98,63,82,186,98,63,58,203,98,63,28,220,98,63,247,236,98,63,205,253,98,63,157,14,99,63,103,31,99,63,43,48,99,63,233,64,99,63,161,81,99,63,83,98,99,63,255,114,99,63,165,131,99,63,69,148,99,63,224,164,99,63,116,181,99,63,2,198,99,63,138,214,99,63,13,231,99,63,137,247,99,63,255,7,100,63,112,24,100,63,218,40,100,63,62,57,100,63,157,73,100,63,246,89,100,63,72,106,100,63,149,122,100,63,219,138,100,63,28,155,100,63,87,171,100,63,140,187,100,63,186,203,100,63,227,219,100,63,6,236,100,63,35,252,100,63,58,12,101,63,75,28,101,63,86,44,101,63,91,60,101,63,91,76,101,63,84,92,101,63,71,108,101,63,53,124,101,63,28,140,101,63,254,155,101,63,217,171,101,63,175,187,101,63,126,203,101,63,72,219,101,63,12,235,101,63,202,250,101,63,130,10,102,63,52,26,102,63,224,41,102,63,134,57,102,63,38,73,102,63,193,88,102,63,85,104,102,63,227,119,102,63,108,135,102,63,238,150,102,63,107,166,102,63,226,181,102,63,83,197,102,63,190,212,102,63,35,228,102,63,130,243,102,63,219,2,103,63,46,18,103,63,124,33,103,63,195,48,103,63,5,64,103,63,64,79,103,63,118,94,103,63,166,109,103,63,208,124,103,63,244,139,103,63,18,155,103,63,42,170,103,63,61,185,103,63,73,200,103,63,80,215,103,63,80,230,103,63,75,245,103,63,64,4,104,63,47,19,104,63,24,34,104,63,251,48,104,63,217,63,104,63,176,78,104,63,130,93,104,63,78,108,104,63,20,123,104,63,212,137,104,63,142,152,104,63,66,167,104,63,240,181,104,63,153,196,104,63,60,211,104,63,217,225,104,63,112,240,104,63,1,255,104,63,140,13,105,63,17,28,105,63,145,42,105,63,11,57,105,63,127,71,105,63,237,85,105,63,85,100,105,63,183,114,105,63,20,129,105,63,106,143,105,63,187,157,105,63,6,172,105,63,75,186,105,63,139,200,105,63,196,214,105,63,248,228,105,63,38,243,105,63,78,1,106,63,112,15,106,63,141,29,106,63,163,43,106,63,180,57,106,63,191,71,106,63,196,85,106,63,196,99,106,63,189,113,106,63,177,127,106,63,159,141,106,63,135,155,106,63,106,169,106,63,70,183,106,63,29,197,106,63,238,210,106,63,186,224,106,63,127,238,106,63,63,252,106,63,249,9,107,63,173,23,107,63,91,37,107,63,4,51,107,63,167,64,107,63,68,78,107,63,219,91,107,63,109,105,107,63,249,118,107,63,127,132,107,63,255,145,107,63,122,159,107,63,238,172,107,63,94,186,107,63,199,199,107,63,42,213,107,63,136,226,107,63,224,239,107,63,51,253,107,63,128,10,108,63,198,23,108,63,8,37,108,63,67,50,108,63,121,63,108,63,169,76,108,63,211,89,108,63,248,102,108,63,23,116,108,63,48,129,108,63,68,142,108,63,82,155,108,63,90,168,108,63,92,181,108,63,89,194,108,63,80,207,108,63,65,220,108,63,45,233,108,63,19,246,108,63,243,2,109,63,206,15,109,63,163,28,109,63,114,41,109,63,60,54,109,63,0,67,109,63,190,79,109,63,119,92,109,63,42,105,109,63,215,117,109,63,127,130,109,63,33,143,109,63,189,155,109,63,84,168,109,63,229,180,109,63,113,193,109,63,247,205,109,63,119,218,109,63,242,230,109,63,103,243,109,63,214,255,109,63,64,12,110,63,164,24,110,63,3,37,110,63,91,49,110,63,175,61,110,63,253,73,110,63,69,86,110,63,135,98,110,63,196,110,110,63,252,122,110,63,45,135,110,63,90,147,110,63,128,159,110,63,161,171,110,63,189,183,110,63,211,195,110,63,227,207,110,63,238,219,110,63,243,231,110,63,243,243,110,63,237,255,110,63,226,11,111,63,209,23,111,63,186,35,111,63,158,47,111,63,125,59,111,63,85,71,111,63,41,83,111,63,247,94,111,63,191,106,111,63,130,118,111,63,63,130,111,63,247,141,111,63,169,153,111,63,86,165,111,63,253,176,111,63,159,188,111,63,59,200,111,63,210,211,111,63,99,223,111,63,239,234,111,63,117,246,111,63,246,1,112,63,114,13,112,63,231,24,112,63,88,36,112,63,195,47,112,63,40,59,112,63,137,70,112,63,227,81,112,63,56,93,112,63,136,104,112,63,210,115,112,63,23,127,112,63,87,138,112,63,145,149,112,63,197,160,112,63,244,171,112,63,30,183,112,63,66,194,112,63,97,205,112,63,123,216,112,63,143,227,112,63,157,238,112,63,167,249,112,63,171,4,113,63,169,15,113,63,162,26,113,63,150,37,113,63,132,48,113,63,109,59,113,63,81,70,113,63,47,81,113,63,8,92,113,63,219,102,113,63,170,113,113,63,114,124,113,63,54,135,113,63,244,145,113,63,173,156,113,63,96,167,113,63,14,178,113,63,183,188,113,63,91,199,113,63,249,209,113,63,146,220,113,63,37,231,113,63,179,241,113,63,60,252,113,63,192,6,114,63,62,17,114,63,183,27,114,63,43,38,114,63,154,48,114,63,3,59,114,63,103,69,114,63,197,79,114,63,31,90,114,63,115,100,114,63,194,110,114,63,11,121,114,63,79,131,114,63,143,141,114,63,200,151,114,63,253,161,114,63,44,172,114,63,87,182,114,63,123,192,114,63,155,202,114,63,182,212,114,63,203,222,114,63,219,232,114,63,230,242,114,63,235,252,114,63,236,6,115,63,231,16,115,63,221,26,115,63,206,36,115,63,186,46,115,63,160,56,115,63,130,66,115,63,94,76,115,63,53,86,115,63,7,96,115,63,212,105,115,63,155,115,115,63,94,125,115,63,27,135,115,63,211,144,115,63,134,154,115,63,52,164,115,63,221,173,115,63,128,183,115,63,31,193,115,63,184,202,115,63,77,212,115,63,220,221,115,63,102,231,115,63,235,240,115,63,107,250,115,63,230,3,116,63,92,13,116,63,204,22,116,63,56,32,116,63,159,41,116,63,0,51,116,63,93,60,116,63,180,69,116,63,6,79,116,63,84,88,116,63,156,97,116,63,223,106,116,63,29,116,116,63,87,125,116,63,139,134,116,63,186,143,116,63,228,152,116,63,9,162,116,63,41,171,116,63,68,180,116,63,91,189,116,63,108,198,116,63,120,207,116,63,127,216,116,63,129,225,116,63,127,234,116,63,119,243,116,63,106,252,116,63,89,5,117,63,66,14,117,63,38,23,117,63,6,32,117,63,225,40,117,63,182,49,117,63,135,58,117,63,83,67,117,63,26,76,117,63,220,84,117,63,153,93,117,63,81,102,117,63,4,111,117,63,179,119,117,63,92,128,117,63,1,137,117,63,160,145,117,63,59,154,117,63,209,162,117,63,98,171,117,63,239,179,117,63,118,188,117,63,249,196,117,63,118,205,117,63,239,213,117,63,99,222,117,63,210,230,117,63,61,239,117,63,162,247,117,63,3,0,118,63,95,8,118,63,182,16,118,63,8,25,118,63,86,33,118,63,159,41,118,63,227,49,118,63,34,58,118,63,92,66,118,63,146,74,118,63,195,82,118,63,239,90,118,63,22,99,118,63,57,107,118,63,86,115,118,63,112,123,118,63,132,131,118,63,148,139,118,63,158,147,118,63,165,155,118,63,166,163,118,63,163,171,118,63,155,179,118,63,142,187,118,63,125,195,118,63,103,203,118,63,76,211,118,63,45,219,118,63,9,227,118,63,224,234,118,63,178,242,118,63,128,250,118,63,74,2,119,63,14,10,119,63,206,17,119,63,137,25,119,63,64,33,119,63,242,40,119,63,160,48,119,63,72,56,119,63,237,63,119,63,140,71,119,63,39,79,119,63,190,86,119,63,79,94,119,63,220,101,119,63,101,109,119,63,233,116,119,63,105,124,119,63,228,131,119,63,90,139,119,63,204,146,119,63,57,154,119,63,162,161,119,63,6,169,119,63,101,176,119,63,192,183,119,63,23,191,119,63,105,198,119,63,182,205,119,63,255,212,119,63,68,220,119,63,132,227,119,63,191,234,119,63,246,241,119,63,41,249,119,63,87,0,120,63,129,7,120,63,166,14,120,63,198,21,120,63,227,28,120,63,250,35,120,63,14,43,120,63,28,50,120,63,39,57,120,63,45,64,120,63,46,71,120,63,44,78,120,63,36,85,120,63,25,92,120,63,9,99,120,63,244,105,120,63,219,112,120,63,190,119,120,63,156,126,120,63,118,133,120,63,76,140,120,63,29,147,120,63,234,153,120,63,179,160,120,63,119,167,120,63,55,174,120,63,242,180,120,63,169,187,120,63,92,194,120,63,11,201,120,63,181,207,120,63,91,214,120,63,252,220,120,63,154,227,120,63,51,234,120,63,199,240,120,63,88,247,120,63,228,253,120,63,108,4,121,63,240,10,121,63,111,17,121,63,234,23,121,63,97,30,121,63,211,36,121,63,66,43,121,63,172,49,121,63,18,56,121,63,116,62,121,63,209,68,121,63,42,75,121,63,127,81,121,63,208,87,121,63,29,94,121,63,101,100,121,63,170,106,121,63,234,112,121,63,38,119,121,63,93,125,121,63,145,131,121,63,193,137,121,63,236,143,121,63,19,150,121,63,54,156,121,63,85,162,121,63,112,168,121,63,134,174,121,63,153,180,121,63,167,186,121,63,178,192,121,63,184,198,121,63,186,204,121,63,184,210,121,63,178,216,121,63,168,222,121,63,154,228,121,63,135,234,121,63,113,240,121,63,87,246,121,63,56,252,121,63,22,2,122,63,239,7,122,63,197,13,122,63,150,19,122,63,100,25,122,63,45,31,122,63,243,36,122,63,180,42,122,63,113,48,122,63,43,54,122,63,224,59,122,63,146,65,122,63,63,71,122,63,233,76,122,63,142,82,122,63,48,88,122,63,206,93,122,63,103,99,122,63,253,104,122,63,143,110,122,63,29,116,122,63,167,121,122,63,45,127,122,63,175,132,122,63,45,138,122,63,168,143,122,63,30,149,122,63,145,154,122,63,255,159,122,63,106,165,122,63,209,170,122,63,52,176,122,63,147,181,122,63,239,186,122,63,70,192,122,63,154,197,122,63,234,202,122,63,54,208,122,63,126,213,122,63,194,218,122,63,3,224,122,63,64,229,122,63,121,234,122,63,174,239,122,63,223,244,122,63,13,250,122,63,55,255,122,63,93,4,123,63,127,9,123,63,157,14,123,63,184,19,123,63,207,24,123,63,227,29,123,63,242,34,123,63,254,39,123,63,6,45,123,63,10,50,123,63,11,55,123,63,8,60,123,63,1,65,123,63,247,69,123,63,233,74,123,63,215,79,123,63,193,84,123,63,168,89,123,63,139,94,123,63,107,99,123,63,71,104,123,63,31,109,123,63,243,113,123,63,196,118,123,63,146,123,123,63,91,128,123,63,33,133,123,63,228,137,123,63,163,142,123,63,94,147,123,63,22,152,123,63,202,156,123,63,122,161,123,63,39,166,123,63,208,170,123,63,118,175,123,63,24,180,123,63,183,184,123,63,82,189,123,63,233,193,123,63,125,198,123,63,14,203,123,63,155,207,123,63,36,212,123,63,170,216,123,63,45,221,123,63,172,225,123,63,39,230,123,63,159,234,123,63,19,239,123,63,132,243,123,63,242,247,123,63,92,252,123,63,195,0,124,63,38,5,124,63,133,9,124,63,226,13,124,63,58,18,124,63,144,22,124,63,226,26,124,63,48,31,124,63,123,35,124,63,195,39,124,63,7,44,124,63,72,48,124,63,134,52,124,63,192,56,124,63,247,60,124,63,42,65,124,63,90,69,124,63,135,73,124,63,176,77,124,63,214,81,124,63,249,85,124,63,24,90,124,63,52,94,124,63,77,98,124,63,98,102,124,63,116,106,124,63,131,110,124,63,142,114,124,63,150,118,124,63,155,122,124,63,157,126,124,63,155,130,124,63,150,134,124,63,142,138,124,63,130,142,124,63,116,146,124,63,98,150,124,63,77,154,124,63,52,158,124,63,24,162,124,63,249,165,124,63,215,169,124,63,178,173,124,63,137,177,124,63,94,181,124,63,47,185,124,63,253,188,124,63,199,192,124,63,143,196,124,63,83,200,124,63,20,204,124,63,211,207,124,63,141,211,124,63,69,215,124,63,250,218,124,63,171,222,124,63,90,226,124,63,5,230,124,63,173,233,124,63,82,237,124,63,244,240,124,63,147,244,124,63,46,248,124,63,199,251,124,63,93,255,124,63,239,2,125,63,127,6,125,63,11,10,125,63,148,13,125,63,27,17,125,63,158,20,125,63,30,24,125,63,155,27,125,63,21,31,125,63,140,34,125,63,0,38,125,63,114,41,125,63,224,44,125,63,75,48,125,63,179,51,125,63,24,55,125,63,122,58,125,63,217,61,125,63,54,65,125,63,143,68,125,63,229,71,125,63,56,75,125,63,137,78,125,63,214,81,125,63,33,85,125,63,104,88,125,63,173,91,125,63,239,94,125,63,46,98,125,63,106,101,125,63,163,104,125,63,217,107,125,63,12,111,125,63,61,114,125,63,106,117,125,63,149,120,125,63,189,123,125,63,226,126,125,63,4,130,125,63,36,133,125,63,64,136,125,63,90,139,125,63,112,142,125,63,133,145,125,63,150,148,125,63,164,151,125,63,176,154,125,63,185,157,125,63,191,160,125,63,194,163,125,63,194,166,125,63,192,169,125,63,187,172,125,63,179,175,125,63,168,178,125,63,155,181,125,63,139,184,125,63,120,187,125,63,99,190,125,63,74,193,125,63,48,196,125,63,18,199,125,63,241,201,125,63,206,204,125,63,169,207,125,63,128,210,125,63,85,213,125,63,39,216,125,63,247,218,125,63,196,221,125,63,142,224,125,63,85,227,125,63,26,230,125,63,220,232,125,63,156,235,125,63,89,238,125,63,19,241,125,63,203,243,125,63,128,246,125,63,51,249,125,63,227,251,125,63,144,254,125,63,59,1,126,63,227,3,126,63,137,6,126,63,44,9,126,63,204,11,126,63,106,14,126,63,6,17,126,63,158,19,126,63,53,22,126,63,200,24,126,63,90,27,126,63,232,29,126,63,116,32,126,63,254,34,126,63,133,37,126,63,10,40,126,63,140,42,126,63,12,45,126,63,137,47,126,63,4,50,126,63,124,52,126,63,242,54,126,63,101,57,126,63,214,59,126,63,68,62,126,63,176,64,126,63,26,67,126,63,129,69,126,63,230,71,126,63,72,74,126,63,168,76,126,63,5,79,126,63,96,81,126,63,185,83,126,63,15,86,126,63,99,88,126,63,181,90,126,63,4,93,126,63,81,95,126,63,155,97,126,63,227,99,126,63,41,102,126,63,108,104,126,63,173,106,126,63,236,108,126,63,40,111,126,63,98,113,126,63,154,115,126,63,208,117,126,63,3,120,126,63,51,122,126,63,98,124,126,63,142,126,126,63,184,128,126,63,224,130,126,63,5,133,126,63,40,135,126,63,73,137,126,63,104,139,126,63,132,141,126,63,159,143,126,63,183,145,126,63,204,147,126,63,224,149,126,63,241,151,126,63,0,154,126,63,13,156,126,63,24,158,126,63,32,160,126,63,38,162,126,63,42,164,126,63,44,166,126,63,44,168,126,63,41,170,126,63,37,172,126,63,30,174,126,63,21,176,126,63,10,178,126,63,253,179,126,63,238,181,126,63,220,183,126,63,201,185,126,63,179,187,126,63,155,189,126,63,129,191,126,63,101,193,126,63,71,195,126,63,39,197,126,63,5,199,126,63,224,200,126,63,186,202,126,63,145,204,126,63,103,206,126,63,58,208,126,63,12,210,126,63,219,211,126,63,168,213,126,63,115,215,126,63,61,217,126,63,4,219,126,63,201,220,126,63,140,222,126,63,77,224,126,63,12,226,126,63,202,227,126,63,133,229,126,63,62,231,126,63,245,232,126,63,170,234,126,63,94,236,126,63,15,238,126,63,190,239,126,63,108,241,126,63,23,243,126,63,193,244,126,63,104,246,126,63,14,248,126,63,178,249,126,63,84,251,126,63,243,252,126,63,145,254,126,63,46,0,127,63,200,1,127,63,96,3,127,63,247,4,127,63,139,6,127,63,30,8,127,63,175,9,127,63,62,11,127,63,203,12,127,63,86,14,127,63,223,15,127,63,103,17,127,63,237,18,127,63,112,20,127,63,242,21,127,63,115,23,127,63,241,24,127,63,110,26,127,63,233,27,127,63,98,29,127,63,217,30,127,63,78,32,127,63,194,33,127,63,52,35,127,63,164,36,127,63,18,38,127,63,127,39,127,63,234,40,127,63,83,42,127,63,186,43,127,63,32,45,127,63,131,46,127,63,230,47,127,63,70,49,127,63,165,50,127,63,2,52,127,63,93,53,127,63,182,54,127,63,14,56,127,63,100,57,127,63,185,58,127,63,12,60,127,63,93,61,127,63,172,62,127,63,250,63,127,63,70,65,127,63,145,66,127,63,217,67,127,63,33,69,127,63,102,70,127,63,170,71,127,63,236,72,127,63,45,74,127,63,108,75,127,63,169,76,127,63,229,77,127,63,31,79,127,63,88,80,127,63,143,81,127,63,196,82,127,63,248,83,127,63,42,85,127,63,91,86,127,63,138,87,127,63,184,88,127,63,228,89,127,63,14,91,127,63,55,92,127,63,94,93,127,63,132,94,127,63,169,95,127,63,203,96,127,63,237,97,127,63,12,99,127,63,42,100,127,63,71,101,127,63,98,102,127,63,124,103,127,63,148,104,127,63,171,105,127,63,192,106,127,63,212,107,127,63,230,108,127,63,247,109,127,63,6,111,127,63,20,112,127,63,33,113,127,63,44,114,127,63,53,115,127,63,61,116,127,63,68,117,127,63,73,118,127,63,77,119,127,63,79,120,127,63,80,121,127,63,80,122,127,63,78,123,127,63,75,124,127,63,70,125,127,63,64,126,127,63,57,127,127,63,48,128,127,63,38,129,127,63,27,130,127,63,14,131,127,63,0,132,127,63,240,132,127,63,223,133,127,63,205,134,127,63,185,135,127,63,164,136,127,63,142,137,127,63,118,138,127,63,93,139,127,63,67,140,127,63,40,141,127,63,11,142,127,63,237,142,127,63,205,143,127,63,173,144,127,63,139,145,127,63,103,146,127,63,67,147,127,63,29,148,127,63,246,148,127,63,205,149,127,63,164,150,127,63,121,151,127,63,77,152,127,63,31,153,127,63,241,153,127,63,193,154,127,63,144,155,127,63,93,156,127,63,42,157,127,63,245,157,127,63,191,158,127,63,136,159,127,63,79,160,127,63,22,161,127,63,219,161,127,63,159,162,127,63,98,163,127,63,36,164,127,63,228,164,127,63,163,165,127,63,98,166,127,63,31,167,127,63,219,167,127,63,149,168,127,63,79,169,127,63,7,170,127,63,190,170,127,63,117,171,127,63,42,172,127,63,221,172,127,63,144,173,127,63,66,174,127,63,242,174,127,63,162,175,127,63,80,176,127,63,253,176,127,63,169,177,127,63,85,178,127,63,254,178,127,63,167,179,127,63,79,180,127,63,246,180,127,63,156,181,127,63,64,182,127,63,228,182,127,63,134,183,127,63,40,184,127,63,200,184,127,63,103,185,127,63,6,186,127,63,163,186,127,63,63,187,127,63,219,187,127,63,117,188,127,63,14,189,127,63,166,189,127,63,61,190,127,63,212,190,127,63,105,191,127,63,253,191,127,63,144,192,127,63,34,193,127,63,180,193,127,63,68,194,127,63,211,194,127,63,98,195,127,63,239,195,127,63,123,196,127,63,7,197,127,63,145,197,127,63,27,198,127,63,163,198,127,63,43,199,127,63,178,199,127,63,56,200,127,63,189,200,127,63,65,201,127,63,196,201,127,63,70,202,127,63,199,202,127,63,71,203,127,63,199,203,127,63,69,204,127,63,195,204,127,63,64,205,127,63,187,205,127,63,54,206,127,63,177,206,127,63,42,207,127,63,162,207,127,63,26,208,127,63,144,208,127,63,6,209,127,63,123,209,127,63,239,209,127,63,98,210,127,63,213,210,127,63,70,211,127,63,183,211,127,63,39,212,127,63,150,212,127,63,4,213,127,63,114,213,127,63], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+541176); +/* memory initializer */ allocate([222,213,127,63,74,214,127,63,181,214,127,63,32,215,127,63,137,215,127,63,242,215,127,63,89,216,127,63,192,216,127,63,39,217,127,63,140,217,127,63,241,217,127,63,85,218,127,63,184,218,127,63,27,219,127,63,124,219,127,63,221,219,127,63,61,220,127,63,157,220,127,63,251,220,127,63,89,221,127,63,183,221,127,63,19,222,127,63,111,222,127,63,202,222,127,63,36,223,127,63,126,223,127,63,215,223,127,63,47,224,127,63,134,224,127,63,221,224,127,63,51,225,127,63,137,225,127,63,221,225,127,63,49,226,127,63,133,226,127,63,215,226,127,63,41,227,127,63,122,227,127,63,203,227,127,63,27,228,127,63,106,228,127,63,185,228,127,63,7,229,127,63,84,229,127,63,161,229,127,63,237,229,127,63,56,230,127,63,131,230,127,63,205,230,127,63,23,231,127,63,96,231,127,63,168,231,127,63,239,231,127,63,54,232,127,63,125,232,127,63,195,232,127,63,8,233,127,63,76,233,127,63,144,233,127,63,212,233,127,63,23,234,127,63,89,234,127,63,154,234,127,63,219,234,127,63,28,235,127,63,92,235,127,63,155,235,127,63,218,235,127,63,24,236,127,63,86,236,127,63,147,236,127,63,207,236,127,63,11,237,127,63,71,237,127,63,130,237,127,63,188,237,127,63,246,237,127,63,47,238,127,63,104,238,127,63,160,238,127,63,216,238,127,63,15,239,127,63,69,239,127,63,123,239,127,63,177,239,127,63,230,239,127,63,27,240,127,63,79,240,127,63,130,240,127,63,182,240,127,63,232,240,127,63,26,241,127,63,76,241,127,63,125,241,127,63,174,241,127,63,222,241,127,63,14,242,127,63,61,242,127,63,108,242,127,63,154,242,127,63,200,242,127,63,245,242,127,63,34,243,127,63,79,243,127,63,123,243,127,63,166,243,127,63,209,243,127,63,252,243,127,63,38,244,127,63,80,244,127,63,121,244,127,63,162,244,127,63,203,244,127,63,243,244,127,63,27,245,127,63,66,245,127,63,105,245,127,63,143,245,127,63,181,245,127,63,219,245,127,63,0,246,127,63,37,246,127,63,73,246,127,63,109,246,127,63,145,246,127,63,180,246,127,63,215,246,127,63,250,246,127,63,28,247,127,63,62,247,127,63,95,247,127,63,128,247,127,63,160,247,127,63,193,247,127,63,225,247,127,63,0,248,127,63,31,248,127,63,62,248,127,63,93,248,127,63,123,248,127,63,152,248,127,63,182,248,127,63,211,248,127,63,240,248,127,63,12,249,127,63,40,249,127,63,68,249,127,63,95,249,127,63,122,249,127,63,149,249,127,63,175,249,127,63,202,249,127,63,227,249,127,63,253,249,127,63,22,250,127,63,47,250,127,63,71,250,127,63,96,250,127,63,120,250,127,63,143,250,127,63,166,250,127,63,190,250,127,63,212,250,127,63,235,250,127,63,1,251,127,63,23,251,127,63,44,251,127,63,66,251,127,63,87,251,127,63,108,251,127,63,128,251,127,63,148,251,127,63,168,251,127,63,188,251,127,63,208,251,127,63,227,251,127,63,246,251,127,63,8,252,127,63,27,252,127,63,45,252,127,63,63,252,127,63,81,252,127,63,98,252,127,63,115,252,127,63,132,252,127,63,149,252,127,63,165,252,127,63,182,252,127,63,198,252,127,63,213,252,127,63,229,252,127,63,244,252,127,63,3,253,127,63,18,253,127,63,33,253,127,63,47,253,127,63,62,253,127,63,76,253,127,63,89,253,127,63,103,253,127,63,116,253,127,63,130,253,127,63,143,253,127,63,155,253,127,63,168,253,127,63,181,253,127,63,193,253,127,63,205,253,127,63,217,253,127,63,228,253,127,63,240,253,127,63,251,253,127,63,6,254,127,63,17,254,127,63,28,254,127,63,38,254,127,63,49,254,127,63,59,254,127,63,69,254,127,63,79,254,127,63,89,254,127,63,98,254,127,63,108,254,127,63,117,254,127,63,126,254,127,63,135,254,127,63,144,254,127,63,152,254,127,63,161,254,127,63,169,254,127,63,177,254,127,63,185,254,127,63,193,254,127,63,201,254,127,63,208,254,127,63,216,254,127,63,223,254,127,63,230,254,127,63,237,254,127,63,244,254,127,63,251,254,127,63,2,255,127,63,8,255,127,63,14,255,127,63,21,255,127,63,27,255,127,63,33,255,127,63,39,255,127,63,45,255,127,63,50,255,127,63,56,255,127,63,61,255,127,63,67,255,127,63,72,255,127,63,77,255,127,63,82,255,127,63,87,255,127,63,92,255,127,63,96,255,127,63,101,255,127,63,105,255,127,63,110,255,127,63,114,255,127,63,118,255,127,63,122,255,127,63,126,255,127,63,130,255,127,63,134,255,127,63,138,255,127,63,142,255,127,63,145,255,127,63,149,255,127,63,152,255,127,63,155,255,127,63,159,255,127,63,162,255,127,63,165,255,127,63,168,255,127,63,171,255,127,63,174,255,127,63,176,255,127,63,179,255,127,63,182,255,127,63,184,255,127,63,187,255,127,63,189,255,127,63,192,255,127,63,194,255,127,63,196,255,127,63,198,255,127,63,201,255,127,63,203,255,127,63,205,255,127,63,207,255,127,63,209,255,127,63,210,255,127,63,212,255,127,63,214,255,127,63,216,255,127,63,217,255,127,63,219,255,127,63,220,255,127,63,222,255,127,63,223,255,127,63,225,255,127,63,226,255,127,63,227,255,127,63,229,255,127,63,230,255,127,63,231,255,127,63,232,255,127,63,233,255,127,63,234,255,127,63,235,255,127,63,236,255,127,63,237,255,127,63,238,255,127,63,239,255,127,63,240,255,127,63,241,255,127,63,241,255,127,63,242,255,127,63,243,255,127,63,244,255,127,63,244,255,127,63,245,255,127,63,246,255,127,63,246,255,127,63,247,255,127,63,247,255,127,63,248,255,127,63,248,255,127,63,249,255,127,63,249,255,127,63,250,255,127,63,250,255,127,63,250,255,127,63,251,255,127,63,251,255,127,63,251,255,127,63,252,255,127,63,252,255,127,63,252,255,127,63,253,255,127,63,253,255,127,63,253,255,127,63,253,255,127,63,254,255,127,63,254,255,127,63,254,255,127,63,254,255,127,63,254,255,127,63,254,255,127,63,255,255,127,63,255,255,127,63,255,255,127,63,255,255,127,63,255,255,127,63,255,255,127,63,255,255,127,63,255,255,127,63,255,255,127,63,255,255,127,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,0,0,128,63,69,78,67,79,68,69,82,0,79,103,103,86,111,114,98,105,115,69,110,99,111,100,101,114,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+551416); + + + + + +/* no memory initializer */ +var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8); + +assert(tempDoublePtr % 8 == 0); + +function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much + + 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]; + +} + +// {{PRE_LIBRARY}} + + + var _cosf=Math_cos; + + var _fabsf=Math_abs; + + + + var ___errno_state=0;function ___setErrNo(value) { + // For convenient setting and returning of errno. + HEAP32[((___errno_state)>>2)]=value; + return value; + } + + 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 _sysconf(name) { + // long sysconf(int name); + // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html + switch(name) { + case 30: return PAGE_SIZE; + case 85: return totalMemory / PAGE_SIZE; + case 132: + case 133: + case 12: + case 137: + case 138: + case 15: + case 235: + case 16: + case 17: + case 18: + case 19: + case 20: + case 149: + case 13: + case 10: + case 236: + case 153: + case 9: + case 21: + case 22: + case 159: + case 154: + case 14: + case 77: + case 78: + case 139: + case 80: + case 81: + case 82: + case 68: + case 67: + case 164: + case 11: + case 29: + case 47: + case 48: + case 95: + case 52: + case 51: + case 46: + return 200809; + case 79: + return 0; + case 27: + case 246: + case 127: + case 128: + case 23: + case 24: + case 160: + case 161: + case 181: + case 182: + case 242: + case 183: + case 184: + case 243: + case 244: + case 245: + case 165: + case 178: + case 179: + case 49: + case 50: + case 168: + case 169: + case 175: + case 170: + case 171: + case 172: + case 97: + case 76: + case 32: + case 173: + case 35: + return -1; + case 176: + case 177: + case 7: + case 155: + case 8: + case 157: + case 125: + case 126: + case 92: + case 93: + case 129: + case 130: + case 131: + case 94: + case 91: + return 1; + case 74: + case 60: + case 69: + case 70: + case 4: + return 1024; + case 31: + case 42: + case 72: + return 32; + case 87: + case 26: + case 33: + return 2147483647; + case 34: + case 1: + return 47839; + case 38: + case 36: + return 99; + case 43: + case 37: + return 2048; + case 0: return 2097152; + case 3: return 65536; + case 28: return 32768; + case 44: return 32767; + case 75: return 16384; + case 39: return 1000; + case 89: return 700; + case 71: return 256; + case 40: return 255; + case 2: return 100; + case 180: return 64; + case 25: return 20; + case 5: return 16; + case 6: return 6; + case 73: return 4; + case 84: { + if (typeof navigator === 'object') return navigator['hardwareConcurrency'] || 1; + return 1; + } + } + ___setErrNo(ERRNO_CODES.EINVAL); + return -1; + } + + + Module["_memset"] = _memset; + + var _BDtoILow=true; + + + + Module["_strlen"] = _strlen; + Module["_strcat"] = _strcat; + + + Module["_bitshift64Shl"] = _bitshift64Shl; + + function _abort() { + Module['abort'](); + } + + + + Module["_i64Add"] = _i64Add; + + var _floor=Math_floor; + + + + + 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 () { + // https://github.com/kripken/emscripten/pull/1555 + // if (ENVIRONMENT_IS_NODE) { + // // currently, FS.init does not distinguish if process.stdin is a file or TTY + // // device, it always assumes it's a TTY device. because of this, we're forcing + // // process.stdin to UTF8 encoding to at least make stdin reading compatible + // // with text files until FS.init can be refactored. + // process['stdin']['setEncoding']('utf8'); + // } + }, + shutdown:function () { + // https://github.com/kripken/emscripten/pull/1555 + // if (ENVIRONMENT_IS_NODE) { + // // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)? + // // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation + // // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists? + // // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle + // // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call + // process['stdin']['pause'](); + // } + }, + 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) { + // flush any pending line data + stream.tty.ops.flush(stream.tty); + }, + flush:function (stream) { + stream.tty.ops.flush(stream.tty); + }, + read:function (stream, buffer, offset, length, pos /* ignored */) { + 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) { + // we will read data by chunks of BUFSIZE + var BUFSIZE = 256; + var buf = new Buffer(BUFSIZE); + var bytesRead = 0; + + var fd = process.stdin.fd; + // Linux and Mac cannot use process.stdin.fd (which isn't set up as sync) + 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') { + // Browser. + result = window.prompt('Input: '); // returns null on cancel + if (result !== null) { + result += '\n'; + } + } else if (typeof readline == 'function') { + // Command line. + 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); // val == 0 would cut text output off in the middle. + } + },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 /* 0777 */, 0); + },createNode:function (parent, name, mode, dev) { + if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { + // no supported + 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; // The actual number of bytes used in the typed array, as opposed to contents.buffer.byteLength which gives the whole capacity. + // When the byte data of the file is populated, this will point to either a typed array, or a normal JS array. Typed arrays are preferred + // for performance, and used by default. However, typed arrays are not resizable like normal JS arrays are, so there is a small disk size + // penalty involved for appending file writes that continuously grow a file similar to std::vector capacity vs used -scheme. + 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(); + // add the new node to the parent + 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; // Returns a copy of the original data. + } + return node.contents; // No-op, the file contents are already in a JS array. Return as-is. + },getFileDataAsTypedArray:function (node) { + if (!node.contents) return new Uint8Array; + if (node.contents.subarray) return node.contents.subarray(0, node.usedBytes); // Make sure to not return excess unused bytes. + return new Uint8Array(node.contents); + },expandFileStorage:function (node, newCapacity) { + // If we are asked to expand the size of a file that already exists, revert to using a standard JS array to store the file + // instead of a typed array. This makes resizing the array more flexible because we can just .push() elements at the back to + // increase the size. + if (node.contents && node.contents.subarray && newCapacity > node.contents.length) { + node.contents = MEMFS.getFileDataAsRegularArray(node); + node.usedBytes = node.contents.length; // We might be writing to a lazy-loaded file which had overridden this property, so force-reset it. + } + + if (!node.contents || node.contents.subarray) { // Keep using a typed array if creating a new storage, or if old one was a typed array as well. + var prevCapacity = node.contents ? node.contents.buffer.byteLength : 0; + if (prevCapacity >= newCapacity) return; // No need to expand, the storage was already large enough. + // Don't expand strictly to the given requested limit if it's only a very small increase, but instead geometrically grow capacity. + // For small filesizes (<1MB), perform size*2 geometric increase, but for large sizes, do a much more conservative size*1.125 increase to + // avoid overshooting the allocation cap by a very large margin. + var CAPACITY_DOUBLING_MAX = 1024 * 1024; + newCapacity = Math.max(newCapacity, (prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2.0 : 1.125)) | 0); + if (prevCapacity != 0) newCapacity = Math.max(newCapacity, 256); // At minimum allocate 256b for each file when expanding. + var oldContents = node.contents; + node.contents = new Uint8Array(newCapacity); // Allocate new storage. + if (node.usedBytes > 0) node.contents.set(oldContents.subarray(0, node.usedBytes), 0); // Copy old data over to the new storage. + return; + } + // Not using a typed array to back the file storage. Use a standard JS array instead. + 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; // Fully decommit when requesting a resize to zero. + node.usedBytes = 0; + return; + } + if (!node.contents || node.contents.subarray) { // Resize a typed array if that is being used as the backing store. + var oldContents = node.contents; + node.contents = new Uint8Array(new ArrayBuffer(newSize)); // Allocate new storage. + if (oldContents) { + node.contents.set(oldContents.subarray(0, Math.min(newSize, node.usedBytes))); // Copy old data over to the new storage. + } + node.usedBytes = newSize; + return; + } + // Backing with a JS array. + 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 = {}; + // device numbers reuse inode numbers. + 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); + // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize), + // but this is not required by the standard. + 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 we're overwriting a directory at new_name, make sure it's empty. + 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); + } + } + } + // do the internal rewiring + 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 /* 0777 */ | 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) { // non-trivial, and typed array + 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)) { // This write is from a typed array to a typed array? + if (canOwn) { // Can we just reuse the buffer we are given? + node.contents = buffer.subarray(offset, offset + length); + node.usedBytes = length; + return length; + } else if (node.usedBytes === 0 && position === 0) { // If this is a simple first write to an empty file, do a fast set since we don't need to care about old data. + node.contents = new Uint8Array(buffer.subarray(offset, offset + length)); + node.usedBytes = length; + return length; + } else if (position + length <= node.usedBytes) { // Writing to an already allocated and used subrange of the file? + node.contents.set(buffer.subarray(offset, offset + length), position); + return length; + } + } + + // Appending to an existing file and we need to reallocate, or source data did not come as a typed array. + MEMFS.expandFileStorage(node, position+length); + if (node.contents.subarray && buffer.subarray) node.contents.set(buffer.subarray(offset, offset + length), position); // Use typed array write if available. + else { + for (var i = 0; i < length; i++) { + node.contents[position + i] = buffer[offset + i]; // Or fall back to manual write if not. + } + } + node.usedBytes = Math.max(node.usedBytes, position+length); + return length; + },llseek:function (stream, offset, whence) { + var position = offset; + if (whence === 1) { // SEEK_CUR. + position += stream.position; + } else if (whence === 2) { // SEEK_END. + 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; + // Only make a new copy when MAP_PRIVATE is specified. + if ( !(flags & 2) && + (contents.buffer === buffer || contents.buffer === buffer.buffer) ) { + // We can't emulate MAP_SHARED when the file is not backed by the buffer + // we're mapping to (e.g. the HEAP buffer). + allocated = false; + ptr = contents.byteOffset; + } else { + // Try to avoid unnecessary slices. + 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) { + // MAP_PRIVATE calls need not to be synced back to underlying fs + return 0; + } + + var bytesWritten = MEMFS.stream_ops.write(stream, buffer, 0, length, offset, false); + // should we check if bytesWritten and length are the same? + 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) { + // reuse all of the core MEMFS functionality + 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) { + // check the cache first + 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() { + db = req.result; + + // add to the cache + IDBFS.dbs[name] = db; + callback(null, db); + }; + req.onerror = function(e) { + callback(this.error); + e.preventDefault(); + }; + },getLocalSet:function (mount, callback) { + var entries = {}; + + function isRealDir(p) { + return p !== '.' && p !== '..'; + }; + function toAbsolute(root) { + return function(p) { + return PATH.join2(root, p); + } + }; + + var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint)); + + while (check.length) { + var path = check.pop(); + var stat; + + try { + stat = FS.stat(path); + } catch (e) { + return callback(e); + } + + if (FS.isDir(stat.mode)) { + check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path))); + } + + entries[path] = { timestamp: stat.mtime }; + } + + return callback(null, { type: 'local', entries: entries }); + },getRemoteSet:function (mount, callback) { + var entries = {}; + + IDBFS.getDB(mount.mountpoint, function(err, db) { + if (err) return callback(err); + + var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly'); + transaction.onerror = function(e) { + callback(this.error); + e.preventDefault(); + }; + + var store = transaction.objectStore(IDBFS.DB_STORE_NAME); + var index = store.index('timestamp'); + + index.openKeyCursor().onsuccess = function(event) { + var cursor = event.target.result; + + if (!cursor) { + return callback(null, { type: 'remote', db: db, entries: entries }); + } + + entries[cursor.primaryKey] = { timestamp: cursor.key }; + + cursor.continue(); + }; + }); + },loadLocalEntry:function (path, callback) { + var stat, node; + + try { + var lookup = FS.lookupPath(path); + node = lookup.node; + stat = FS.stat(path); + } catch (e) { + return callback(e); + } + + if (FS.isDir(stat.mode)) { + return callback(null, { timestamp: stat.mtime, mode: stat.mode }); + } else if (FS.isFile(stat.mode)) { + // Performance consideration: storing a normal JavaScript array to a IndexedDB is much slower than storing a typed array. + // Therefore always convert the file contents to a typed array first before writing the data to IndexedDB. + node.contents = MEMFS.getFileDataAsTypedArray(node); + return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents }); + } else { + return callback(new Error('node type not supported')); + } + },storeLocalEntry:function (path, entry, callback) { + try { + if (FS.isDir(entry.mode)) { + FS.mkdir(path, entry.mode); + } else if (FS.isFile(entry.mode)) { + FS.writeFile(path, entry.contents, { encoding: 'binary', canOwn: true }); + } else { + return callback(new Error('node type not supported')); + } + + FS.chmod(path, entry.mode); + FS.utime(path, entry.timestamp, entry.timestamp); + } catch (e) { + return callback(e); + } + + callback(null); + },removeLocalEntry:function (path, callback) { + try { + var lookup = FS.lookupPath(path); + var stat = FS.stat(path); + + if (FS.isDir(stat.mode)) { + FS.rmdir(path); + } else if (FS.isFile(stat.mode)) { + FS.unlink(path); + } + } catch (e) { + return callback(e); + } + + callback(null); + },loadRemoteEntry:function (store, path, callback) { + var req = store.get(path); + req.onsuccess = function(event) { callback(null, event.target.result); }; + req.onerror = function(e) { + callback(this.error); + e.preventDefault(); + }; + },storeRemoteEntry:function (store, path, entry, callback) { + var req = store.put(entry, path); + req.onsuccess = function() { callback(null); }; + req.onerror = function(e) { + callback(this.error); + e.preventDefault(); + }; + },removeRemoteEntry:function (store, path, callback) { + var req = store.delete(path); + req.onsuccess = function() { callback(null); }; + req.onerror = function(e) { + callback(this.error); + e.preventDefault(); + }; + },reconcile:function (src, dst, callback) { + var total = 0; + + var create = []; + Object.keys(src.entries).forEach(function (key) { + var e = src.entries[key]; + var e2 = dst.entries[key]; + if (!e2 || e.timestamp > e2.timestamp) { + create.push(key); + total++; + } + }); + + var remove = []; + Object.keys(dst.entries).forEach(function (key) { + var e = dst.entries[key]; + var e2 = src.entries[key]; + if (!e2) { + remove.push(key); + total++; + } + }); + + if (!total) { + return callback(null); + } + + var errored = false; + var completed = 0; + var db = src.type === 'remote' ? src.db : dst.db; + var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite'); + var store = transaction.objectStore(IDBFS.DB_STORE_NAME); + + function done(err) { + if (err) { + if (!done.errored) { + done.errored = true; + return callback(err); + } + return; + } + if (++completed >= total) { + return callback(null); + } + }; + + transaction.onerror = function(e) { + done(this.error); + e.preventDefault(); + }; + + // sort paths in ascending order so directory entries are created + // before the files inside them + create.sort().forEach(function (path) { + if (dst.type === 'local') { + IDBFS.loadRemoteEntry(store, path, function (err, entry) { + if (err) return done(err); + IDBFS.storeLocalEntry(path, entry, done); + }); + } else { + IDBFS.loadLocalEntry(path, function (err, entry) { + if (err) return done(err); + IDBFS.storeRemoteEntry(store, path, entry, done); + }); + } + }); + + // sort paths in descending order so files are deleted before their + // parent directories + remove.sort().reverse().forEach(function(path) { + if (dst.type === 'local') { + IDBFS.removeLocalEntry(path, done); + } else { + IDBFS.removeRemoteEntry(store, path, done); + } + }); + }}; + + var NODEFS={ + isWindows:false,staticInit:function () { + NODEFS.isWindows = !!process.platform.match(/^win/); + },mount:function (mount) { + assert(ENVIRONMENT_IS_NODE); + return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0); + },createNode:function (parent, name, mode, dev) { + if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + var node = FS.createNode(parent, name, mode); + node.node_ops = NODEFS.node_ops; + node.stream_ops = NODEFS.stream_ops; + return node; + },getMode:function (path) { + var stat; + try { + stat = fs.lstatSync(path); + if (NODEFS.isWindows) { + // On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so + // propagate write bits to execute bits. + stat.mode = stat.mode | ((stat.mode & 146) >> 1); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + return stat.mode; + },realPath:function (node) { + var parts = []; + while (node.parent !== node) { + parts.push(node.name); + node = node.parent; + } + parts.push(node.mount.opts.root); + parts.reverse(); + return PATH.join.apply(null, parts); + },flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function (flags) { + if (flags in NODEFS.flagsToPermissionStringMap) { + return NODEFS.flagsToPermissionStringMap[flags]; + } else { + return flags; + } + },node_ops:{getattr:function (node) { + var path = NODEFS.realPath(node); + var stat; + try { + stat = fs.lstatSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096. + // See http://support.microsoft.com/kb/140365 + if (NODEFS.isWindows && !stat.blksize) { + stat.blksize = 4096; + } + if (NODEFS.isWindows && !stat.blocks) { + stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0; + } + return { + dev: stat.dev, + ino: stat.ino, + mode: stat.mode, + nlink: stat.nlink, + uid: stat.uid, + gid: stat.gid, + rdev: stat.rdev, + size: stat.size, + atime: stat.atime, + mtime: stat.mtime, + ctime: stat.ctime, + blksize: stat.blksize, + blocks: stat.blocks + }; + },setattr:function (node, attr) { + var path = NODEFS.realPath(node); + try { + if (attr.mode !== undefined) { + fs.chmodSync(path, attr.mode); + // update the common node structure mode as well + node.mode = attr.mode; + } + if (attr.timestamp !== undefined) { + var date = new Date(attr.timestamp); + fs.utimesSync(path, date, date); + } + if (attr.size !== undefined) { + fs.truncateSync(path, attr.size); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },lookup:function (parent, name) { + var path = PATH.join2(NODEFS.realPath(parent), name); + var mode = NODEFS.getMode(path); + return NODEFS.createNode(parent, name, mode); + },mknod:function (parent, name, mode, dev) { + var node = NODEFS.createNode(parent, name, mode, dev); + // create the backing node for this in the fs root as well + var path = NODEFS.realPath(node); + try { + if (FS.isDir(node.mode)) { + fs.mkdirSync(path, node.mode); + } else { + fs.writeFileSync(path, '', { mode: node.mode }); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + return node; + },rename:function (oldNode, newDir, newName) { + var oldPath = NODEFS.realPath(oldNode); + var newPath = PATH.join2(NODEFS.realPath(newDir), newName); + try { + fs.renameSync(oldPath, newPath); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },unlink:function (parent, name) { + var path = PATH.join2(NODEFS.realPath(parent), name); + try { + fs.unlinkSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },rmdir:function (parent, name) { + var path = PATH.join2(NODEFS.realPath(parent), name); + try { + fs.rmdirSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },readdir:function (node) { + var path = NODEFS.realPath(node); + try { + return fs.readdirSync(path); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },symlink:function (parent, newName, oldPath) { + var newPath = PATH.join2(NODEFS.realPath(parent), newName); + try { + fs.symlinkSync(oldPath, newPath); + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },readlink:function (node) { + var path = NODEFS.realPath(node); + try { + path = fs.readlinkSync(path); + path = NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root), path); + return path; + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + }},stream_ops:{open:function (stream) { + var path = NODEFS.realPath(stream.node); + try { + if (FS.isFile(stream.node.mode)) { + stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags)); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },close:function (stream) { + try { + if (FS.isFile(stream.node.mode) && stream.nfd) { + fs.closeSync(stream.nfd); + } + } catch (e) { + if (!e.code) throw e; + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + },read:function (stream, buffer, offset, length, position) { + if (length === 0) return 0; // node errors on 0 length reads + // FIXME this is terrible. + var nbuffer = new Buffer(length); + var res; + try { + res = fs.readSync(stream.nfd, nbuffer, 0, length, position); + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + if (res > 0) { + for (var i = 0; i < res; i++) { + buffer[offset + i] = nbuffer[i]; + } + } + return res; + },write:function (stream, buffer, offset, length, position) { + // FIXME this is terrible. + var nbuffer = new Buffer(buffer.subarray(offset, offset + length)); + var res; + try { + res = fs.writeSync(stream.nfd, nbuffer, 0, length, position); + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + return res; + },llseek:function (stream, offset, whence) { + var position = offset; + if (whence === 1) { // SEEK_CUR. + position += stream.position; + } else if (whence === 2) { // SEEK_END. + if (FS.isFile(stream.node.mode)) { + try { + var stat = fs.fstatSync(stream.nfd); + position += stat.size; + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES[e.code]); + } + } + } + + if (position < 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + + return position; + }}}; + + var _stdin=allocate(1, "i32*", ALLOC_STATIC); + + var _stdout=allocate(1, "i32*", ALLOC_STATIC); + + var _stderr=allocate(1, "i32*", ALLOC_STATIC); + + function _fflush(stream) { + // int fflush(FILE *stream); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/fflush.html + + /* + // Disabled, see https://github.com/kripken/emscripten/issues/2770 + stream = FS.getStreamFromPtr(stream); + if (stream.stream_ops.flush) { + stream.stream_ops.flush(stream); + } + */ + } + var FS={ + root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},handleFSError:function (e) { + if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace(); + return ___setErrNo(e.errno); + },lookupPath:function (path, opts) { + path = PATH.resolve(FS.cwd(), path); + opts = opts || {}; + + if (!path) return { path: '', node: null }; + + var defaults = { + follow_mount: true, + recurse_count: 0 + }; + for (var key in defaults) { + if (opts[key] === undefined) { + opts[key] = defaults[key]; + } + } + + if (opts.recurse_count > 8) { // max recursive lookup of 8 + throw new FS.ErrnoError(ERRNO_CODES.ELOOP); + } + + // split the path + var parts = PATH.normalizeArray(path.split('/').filter(function(p) { + return !!p; + }), false); + + // start at the root + var current = FS.root; + var current_path = '/'; + + for (var i = 0; i < parts.length; i++) { + var islast = (i === parts.length-1); + if (islast && opts.parent) { + // stop resolving + break; + } + + current = FS.lookupNode(current, parts[i]); + current_path = PATH.join2(current_path, parts[i]); + + // jump to the mount's root node if this is a mountpoint + if (FS.isMountpoint(current)) { + if (!islast || (islast && opts.follow_mount)) { + current = current.mounted.root; + } + } + + // by default, lookupPath will not follow a symlink if it is the final path component. + // setting opts.follow = true will override this behavior. + if (!islast || opts.follow) { + var count = 0; + while (FS.isLink(current.mode)) { + var link = FS.readlink(current_path); + current_path = PATH.resolve(PATH.dirname(current_path), link); + + var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count }); + current = lookup.node; + + if (count++ > 40) { // limit max consecutive symlinks to 40 (SYMLOOP_MAX). + throw new FS.ErrnoError(ERRNO_CODES.ELOOP); + } + } + } + } + + return { path: current_path, node: current }; + },getPath:function (node) { + var path; + while (true) { + if (FS.isRoot(node)) { + var mount = node.mount.mountpoint; + if (!path) return mount; + return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path; + } + path = path ? node.name + '/' + path : node.name; + node = node.parent; + } + },hashName:function (parentid, name) { + var hash = 0; + + + for (var i = 0; i < name.length; i++) { + hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0; + } + return ((parentid + hash) >>> 0) % FS.nameTable.length; + },hashAddNode:function (node) { + var hash = FS.hashName(node.parent.id, node.name); + node.name_next = FS.nameTable[hash]; + FS.nameTable[hash] = node; + },hashRemoveNode:function (node) { + var hash = FS.hashName(node.parent.id, node.name); + if (FS.nameTable[hash] === node) { + FS.nameTable[hash] = node.name_next; + } else { + var current = FS.nameTable[hash]; + while (current) { + if (current.name_next === node) { + current.name_next = node.name_next; + break; + } + current = current.name_next; + } + } + },lookupNode:function (parent, name) { + var err = FS.mayLookup(parent); + if (err) { + throw new FS.ErrnoError(err, parent); + } + var hash = FS.hashName(parent.id, name); + for (var node = FS.nameTable[hash]; node; node = node.name_next) { + var nodeName = node.name; + if (node.parent.id === parent.id && nodeName === name) { + return node; + } + } + // if we failed to find it in the cache, call into the VFS + return FS.lookup(parent, name); + },createNode:function (parent, name, mode, rdev) { + if (!FS.FSNode) { + FS.FSNode = function(parent, name, mode, rdev) { + if (!parent) { + parent = this; // root node sets parent to itself + } + this.parent = parent; + this.mount = parent.mount; + this.mounted = null; + this.id = FS.nextInode++; + this.name = name; + this.mode = mode; + this.node_ops = {}; + this.stream_ops = {}; + this.rdev = rdev; + }; + + FS.FSNode.prototype = {}; + + // compatibility + var readMode = 292 | 73; + var writeMode = 146; + + // NOTE we must use Object.defineProperties instead of individual calls to + // Object.defineProperty in order to make closure compiler happy + Object.defineProperties(FS.FSNode.prototype, { + read: { + get: function() { return (this.mode & readMode) === readMode; }, + set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; } + }, + write: { + get: function() { return (this.mode & writeMode) === writeMode; }, + set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; } + }, + isFolder: { + get: function() { return FS.isDir(this.mode); } + }, + isDevice: { + get: function() { return FS.isChrdev(this.mode); } + } + }); + } + + var node = new FS.FSNode(parent, name, mode, rdev); + + FS.hashAddNode(node); + + return node; + },destroyNode:function (node) { + FS.hashRemoveNode(node); + },isRoot:function (node) { + return node === node.parent; + },isMountpoint:function (node) { + return !!node.mounted; + },isFile:function (mode) { + return (mode & 61440) === 32768; + },isDir:function (mode) { + return (mode & 61440) === 16384; + },isLink:function (mode) { + return (mode & 61440) === 40960; + },isChrdev:function (mode) { + return (mode & 61440) === 8192; + },isBlkdev:function (mode) { + return (mode & 61440) === 24576; + },isFIFO:function (mode) { + return (mode & 61440) === 4096; + },isSocket:function (mode) { + return (mode & 49152) === 49152; + },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) { + var flags = FS.flagModes[str]; + if (typeof flags === 'undefined') { + throw new Error('Unknown file open mode: ' + str); + } + return flags; + },flagsToPermissionString:function (flag) { + var accmode = flag & 2097155; + var perms = ['r', 'w', 'rw'][accmode]; + if ((flag & 512)) { + perms += 'w'; + } + return perms; + },nodePermissions:function (node, perms) { + if (FS.ignorePermissions) { + return 0; + } + // return 0 if any user, group or owner bits are set. + if (perms.indexOf('r') !== -1 && !(node.mode & 292)) { + return ERRNO_CODES.EACCES; + } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) { + return ERRNO_CODES.EACCES; + } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) { + return ERRNO_CODES.EACCES; + } + return 0; + },mayLookup:function (dir) { + var err = FS.nodePermissions(dir, 'x'); + if (err) return err; + if (!dir.node_ops.lookup) return ERRNO_CODES.EACCES; + return 0; + },mayCreate:function (dir, name) { + try { + var node = FS.lookupNode(dir, name); + return ERRNO_CODES.EEXIST; + } catch (e) { + } + return FS.nodePermissions(dir, 'wx'); + },mayDelete:function (dir, name, isdir) { + var node; + try { + node = FS.lookupNode(dir, name); + } catch (e) { + return e.errno; + } + var err = FS.nodePermissions(dir, 'wx'); + if (err) { + return err; + } + if (isdir) { + if (!FS.isDir(node.mode)) { + return ERRNO_CODES.ENOTDIR; + } + if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { + return ERRNO_CODES.EBUSY; + } + } else { + if (FS.isDir(node.mode)) { + return ERRNO_CODES.EISDIR; + } + } + return 0; + },mayOpen:function (node, flags) { + if (!node) { + return ERRNO_CODES.ENOENT; + } + if (FS.isLink(node.mode)) { + return ERRNO_CODES.ELOOP; + } else if (FS.isDir(node.mode)) { + if ((flags & 2097155) !== 0 || // opening for write + (flags & 512)) { + return ERRNO_CODES.EISDIR; + } + } + return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); + },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) { + fd_start = fd_start || 0; + fd_end = fd_end || FS.MAX_OPEN_FDS; + for (var fd = fd_start; fd <= fd_end; fd++) { + if (!FS.streams[fd]) { + return fd; + } + } + throw new FS.ErrnoError(ERRNO_CODES.EMFILE); + },getStream:function (fd) { + return FS.streams[fd]; + },createStream:function (stream, fd_start, fd_end) { + if (!FS.FSStream) { + FS.FSStream = function(){}; + FS.FSStream.prototype = {}; + // compatibility + Object.defineProperties(FS.FSStream.prototype, { + object: { + get: function() { return this.node; }, + set: function(val) { this.node = val; } + }, + isRead: { + get: function() { return (this.flags & 2097155) !== 1; } + }, + isWrite: { + get: function() { return (this.flags & 2097155) !== 0; } + }, + isAppend: { + get: function() { return (this.flags & 1024); } + } + }); + } + // clone it, so we can return an instance of FSStream + var newStream = new FS.FSStream(); + for (var p in stream) { + newStream[p] = stream[p]; + } + stream = newStream; + var fd = FS.nextfd(fd_start, fd_end); + stream.fd = fd; + FS.streams[fd] = stream; + return stream; + },closeStream:function (fd) { + FS.streams[fd] = null; + },getStreamFromPtr:function (ptr) { + return FS.streams[ptr - 1]; + },getPtrForStream:function (stream) { + return stream ? stream.fd + 1 : 0; + },chrdev_stream_ops:{open:function (stream) { + var device = FS.getDevice(stream.node.rdev); + // override node's stream ops with the device's + stream.stream_ops = device.stream_ops; + // forward the open call + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + },llseek:function () { + throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); + }},major:function (dev) { + return ((dev) >> 8); + },minor:function (dev) { + return ((dev) & 0xff); + },makedev:function (ma, mi) { + return ((ma) << 8 | (mi)); + },registerDevice:function (dev, ops) { + FS.devices[dev] = { stream_ops: ops }; + },getDevice:function (dev) { + return FS.devices[dev]; + },getMounts:function (mount) { + var mounts = []; + var check = [mount]; + + while (check.length) { + var m = check.pop(); + + mounts.push(m); + + check.push.apply(check, m.mounts); + } + + return mounts; + },syncfs:function (populate, callback) { + if (typeof(populate) === 'function') { + callback = populate; + populate = false; + } + + var mounts = FS.getMounts(FS.root.mount); + var completed = 0; + + function done(err) { + if (err) { + if (!done.errored) { + done.errored = true; + return callback(err); + } + return; + } + if (++completed >= mounts.length) { + callback(null); + } + }; + + // sync all mounts + mounts.forEach(function (mount) { + if (!mount.type.syncfs) { + return done(null); + } + mount.type.syncfs(mount, populate, done); + }); + },mount:function (type, opts, mountpoint) { + var root = mountpoint === '/'; + var pseudo = !mountpoint; + var node; + + if (root && FS.root) { + throw new FS.ErrnoError(ERRNO_CODES.EBUSY); + } else if (!root && !pseudo) { + var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); + + mountpoint = lookup.path; // use the absolute path + node = lookup.node; + + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(ERRNO_CODES.EBUSY); + } + + if (!FS.isDir(node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); + } + } + + var mount = { + type: type, + opts: opts, + mountpoint: mountpoint, + mounts: [] + }; + + // create a root node for the fs + var mountRoot = type.mount(mount); + mountRoot.mount = mount; + mount.root = mountRoot; + + if (root) { + FS.root = mountRoot; + } else if (node) { + // set as a mountpoint + node.mounted = mount; + + // add the new mount to the current mount's children + if (node.mount) { + node.mount.mounts.push(mount); + } + } + + return mountRoot; + },unmount:function (mountpoint) { + var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); + + if (!FS.isMountpoint(lookup.node)) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + + // destroy the nodes for this mount, and all its child mounts + var node = lookup.node; + var mount = node.mounted; + var mounts = FS.getMounts(mount); + + Object.keys(FS.nameTable).forEach(function (hash) { + var current = FS.nameTable[hash]; + + while (current) { + var next = current.name_next; + + if (mounts.indexOf(current.mount) !== -1) { + FS.destroyNode(current); + } + + current = next; + } + }); + + // no longer a mountpoint + node.mounted = null; + + // remove this mount from the child mounts + var idx = node.mount.mounts.indexOf(mount); + assert(idx !== -1); + node.mount.mounts.splice(idx, 1); + },lookup:function (parent, name) { + return parent.node_ops.lookup(parent, name); + },mknod:function (path, mode, dev) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + if (!name || name === '.' || name === '..') { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + var err = FS.mayCreate(parent, name); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.mknod) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + return parent.node_ops.mknod(parent, name, mode, dev); + },create:function (path, mode) { + mode = mode !== undefined ? mode : 438 /* 0666 */; + mode &= 4095; + mode |= 32768; + return FS.mknod(path, mode, 0); + },mkdir:function (path, mode) { + mode = mode !== undefined ? mode : 511 /* 0777 */; + mode &= 511 | 512; + mode |= 16384; + return FS.mknod(path, mode, 0); + },mkdev:function (path, mode, dev) { + if (typeof(dev) === 'undefined') { + dev = mode; + mode = 438 /* 0666 */; + } + mode |= 8192; + return FS.mknod(path, mode, dev); + },symlink:function (oldpath, newpath) { + if (!PATH.resolve(oldpath)) { + throw new FS.ErrnoError(ERRNO_CODES.ENOENT); + } + var lookup = FS.lookupPath(newpath, { parent: true }); + var parent = lookup.node; + if (!parent) { + throw new FS.ErrnoError(ERRNO_CODES.ENOENT); + } + var newname = PATH.basename(newpath); + var err = FS.mayCreate(parent, newname); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.symlink) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + return parent.node_ops.symlink(parent, newname, oldpath); + },rename:function (old_path, new_path) { + var old_dirname = PATH.dirname(old_path); + var new_dirname = PATH.dirname(new_path); + var old_name = PATH.basename(old_path); + var new_name = PATH.basename(new_path); + // parents must exist + var lookup, old_dir, new_dir; + try { + lookup = FS.lookupPath(old_path, { parent: true }); + old_dir = lookup.node; + lookup = FS.lookupPath(new_path, { parent: true }); + new_dir = lookup.node; + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES.EBUSY); + } + if (!old_dir || !new_dir) throw new FS.ErrnoError(ERRNO_CODES.ENOENT); + // need to be part of the same mount + if (old_dir.mount !== new_dir.mount) { + throw new FS.ErrnoError(ERRNO_CODES.EXDEV); + } + // source must exist + var old_node = FS.lookupNode(old_dir, old_name); + // old path should not be an ancestor of the new path + var relative = PATH.relative(old_path, new_dirname); + if (relative.charAt(0) !== '.') { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + // new path should not be an ancestor of the old path + relative = PATH.relative(new_path, old_dirname); + if (relative.charAt(0) !== '.') { + throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY); + } + // see if the new path already exists + var new_node; + try { + new_node = FS.lookupNode(new_dir, new_name); + } catch (e) { + // not fatal + } + // early out if nothing needs to change + if (old_node === new_node) { + return; + } + // we'll need to delete the old entry + var isdir = FS.isDir(old_node.mode); + var err = FS.mayDelete(old_dir, old_name, isdir); + if (err) { + throw new FS.ErrnoError(err); + } + // need delete permissions if we'll be overwriting. + // need create permissions if new doesn't already exist. + err = new_node ? + FS.mayDelete(new_dir, new_name, isdir) : + FS.mayCreate(new_dir, new_name); + if (err) { + throw new FS.ErrnoError(err); + } + if (!old_dir.node_ops.rename) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) { + throw new FS.ErrnoError(ERRNO_CODES.EBUSY); + } + // if we are going to change the parent, check write permissions + if (new_dir !== old_dir) { + err = FS.nodePermissions(old_dir, 'w'); + if (err) { + throw new FS.ErrnoError(err); + } + } + try { + if (FS.trackingDelegate['willMovePath']) { + FS.trackingDelegate['willMovePath'](old_path, new_path); + } + } catch(e) { + console.log("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message); + } + // remove the node from the lookup hash + FS.hashRemoveNode(old_node); + // do the underlying fs rename + try { + old_dir.node_ops.rename(old_node, new_dir, new_name); + } catch (e) { + throw e; + } finally { + // add the node back to the hash (in case node_ops.rename + // changed its name) + FS.hashAddNode(old_node); + } + try { + if (FS.trackingDelegate['onMovePath']) FS.trackingDelegate['onMovePath'](old_path, new_path); + } catch(e) { + console.log("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: " + e.message); + } + },rmdir:function (path) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var err = FS.mayDelete(parent, name, true); + if (err) { + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.rmdir) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(ERRNO_CODES.EBUSY); + } + try { + if (FS.trackingDelegate['willDeletePath']) { + FS.trackingDelegate['willDeletePath'](path); + } + } catch(e) { + console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message); + } + parent.node_ops.rmdir(parent, name); + FS.destroyNode(node); + try { + if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path); + } catch(e) { + console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message); + } + },readdir:function (path) { + var lookup = FS.lookupPath(path, { follow: true }); + var node = lookup.node; + if (!node.node_ops.readdir) { + throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); + } + return node.node_ops.readdir(node); + },unlink:function (path) { + var lookup = FS.lookupPath(path, { parent: true }); + var parent = lookup.node; + var name = PATH.basename(path); + var node = FS.lookupNode(parent, name); + var err = FS.mayDelete(parent, name, false); + if (err) { + // POSIX says unlink should set EPERM, not EISDIR + if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM; + throw new FS.ErrnoError(err); + } + if (!parent.node_ops.unlink) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + if (FS.isMountpoint(node)) { + throw new FS.ErrnoError(ERRNO_CODES.EBUSY); + } + try { + if (FS.trackingDelegate['willDeletePath']) { + FS.trackingDelegate['willDeletePath'](path); + } + } catch(e) { + console.log("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: " + e.message); + } + parent.node_ops.unlink(parent, name); + FS.destroyNode(node); + try { + if (FS.trackingDelegate['onDeletePath']) FS.trackingDelegate['onDeletePath'](path); + } catch(e) { + console.log("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: " + e.message); + } + },readlink:function (path) { + var lookup = FS.lookupPath(path); + var link = lookup.node; + if (!link) { + throw new FS.ErrnoError(ERRNO_CODES.ENOENT); + } + if (!link.node_ops.readlink) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + return PATH.resolve(FS.getPath(lookup.node.parent), link.node_ops.readlink(link)); + },stat:function (path, dontFollow) { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + var node = lookup.node; + if (!node) { + throw new FS.ErrnoError(ERRNO_CODES.ENOENT); + } + if (!node.node_ops.getattr) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + return node.node_ops.getattr(node); + },lstat:function (path) { + return FS.stat(path, true); + },chmod:function (path, mode, dontFollow) { + var node; + if (typeof path === 'string') { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + node.node_ops.setattr(node, { + mode: (mode & 4095) | (node.mode & ~4095), + timestamp: Date.now() + }); + },lchmod:function (path, mode) { + FS.chmod(path, mode, true); + },fchmod:function (fd, mode) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + FS.chmod(stream.node, mode); + },chown:function (path, uid, gid, dontFollow) { + var node; + if (typeof path === 'string') { + var lookup = FS.lookupPath(path, { follow: !dontFollow }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + node.node_ops.setattr(node, { + timestamp: Date.now() + // we ignore the uid / gid for now + }); + },lchown:function (path, uid, gid) { + FS.chown(path, uid, gid, true); + },fchown:function (fd, uid, gid) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + FS.chown(stream.node, uid, gid); + },truncate:function (path, len) { + if (len < 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + var node; + if (typeof path === 'string') { + var lookup = FS.lookupPath(path, { follow: true }); + node = lookup.node; + } else { + node = path; + } + if (!node.node_ops.setattr) { + throw new FS.ErrnoError(ERRNO_CODES.EPERM); + } + if (FS.isDir(node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.EISDIR); + } + if (!FS.isFile(node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + var err = FS.nodePermissions(node, 'w'); + if (err) { + throw new FS.ErrnoError(err); + } + node.node_ops.setattr(node, { + size: len, + timestamp: Date.now() + }); + },ftruncate:function (fd, len) { + var stream = FS.getStream(fd); + if (!stream) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + FS.truncate(stream.node, len); + },utime:function (path, atime, mtime) { + var lookup = FS.lookupPath(path, { follow: true }); + var node = lookup.node; + node.node_ops.setattr(node, { + timestamp: Math.max(atime, mtime) + }); + },open:function (path, flags, mode, fd_start, fd_end) { + if (path === "") { + throw new FS.ErrnoError(ERRNO_CODES.ENOENT); + } + flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags; + mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode; + if ((flags & 64)) { + mode = (mode & 4095) | 32768; + } else { + mode = 0; + } + var node; + if (typeof path === 'object') { + node = path; + } else { + path = PATH.normalize(path); + try { + var lookup = FS.lookupPath(path, { + follow: !(flags & 131072) + }); + node = lookup.node; + } catch (e) { + // ignore + } + } + // perhaps we need to create the node + var created = false; + if ((flags & 64)) { + if (node) { + // if O_CREAT and O_EXCL are set, error out if the node already exists + if ((flags & 128)) { + throw new FS.ErrnoError(ERRNO_CODES.EEXIST); + } + } else { + // node doesn't exist, try to create it + node = FS.mknod(path, mode, 0); + created = true; + } + } + if (!node) { + throw new FS.ErrnoError(ERRNO_CODES.ENOENT); + } + // can't truncate a device + if (FS.isChrdev(node.mode)) { + flags &= ~512; + } + // check permissions, if this is not a file we just created now (it is ok to + // create and write to a file with read-only permissions; it is read-only + // for later use) + if (!created) { + var err = FS.mayOpen(node, flags); + if (err) { + throw new FS.ErrnoError(err); + } + } + // do truncation if necessary + if ((flags & 512)) { + FS.truncate(node, 0); + } + // we've already handled these, don't pass down to the underlying vfs + flags &= ~(128 | 512); + + // register the stream with the filesystem + var stream = FS.createStream({ + node: node, + path: FS.getPath(node), // we want the absolute path to the node + flags: flags, + seekable: true, + position: 0, + stream_ops: node.stream_ops, + // used by the file family libc calls (fopen, fwrite, ferror, etc.) + ungotten: [], + error: false + }, fd_start, fd_end); + // call the new stream's open function + if (stream.stream_ops.open) { + stream.stream_ops.open(stream); + } + if (Module['logReadFiles'] && !(flags & 1)) { + if (!FS.readFiles) FS.readFiles = {}; + if (!(path in FS.readFiles)) { + FS.readFiles[path] = 1; + Module['printErr']('read file: ' + path); + } + } + try { + if (FS.trackingDelegate['onOpenFile']) { + var trackingFlags = 0; + if ((flags & 2097155) !== 1) { + trackingFlags |= FS.tracking.openFlags.READ; + } + if ((flags & 2097155) !== 0) { + trackingFlags |= FS.tracking.openFlags.WRITE; + } + FS.trackingDelegate['onOpenFile'](path, trackingFlags); + } + } catch(e) { + console.log("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: " + e.message); + } + return stream; + },close:function (stream) { + try { + if (stream.stream_ops.close) { + stream.stream_ops.close(stream); + } + } catch (e) { + throw e; + } finally { + FS.closeStream(stream.fd); + } + },llseek:function (stream, offset, whence) { + if (!stream.seekable || !stream.stream_ops.llseek) { + throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); + } + stream.position = stream.stream_ops.llseek(stream, offset, whence); + stream.ungotten = []; + return stream.position; + },read:function (stream, buffer, offset, length, position) { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.EISDIR); + } + if (!stream.stream_ops.read) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + var seeking = true; + if (typeof position === 'undefined') { + position = stream.position; + seeking = false; + } else if (!stream.seekable) { + throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); + } + var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position); + if (!seeking) stream.position += bytesRead; + return bytesRead; + },write:function (stream, buffer, offset, length, position, canOwn) { + if (length < 0 || position < 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + if (FS.isDir(stream.node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.EISDIR); + } + if (!stream.stream_ops.write) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + if (stream.flags & 1024) { + // seek to the end before writing in append mode + FS.llseek(stream, 0, 2); + } + var seeking = true; + if (typeof position === 'undefined') { + position = stream.position; + seeking = false; + } else if (!stream.seekable) { + throw new FS.ErrnoError(ERRNO_CODES.ESPIPE); + } + var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn); + if (!seeking) stream.position += bytesWritten; + try { + if (stream.path && FS.trackingDelegate['onWriteToFile']) FS.trackingDelegate['onWriteToFile'](stream.path); + } catch(e) { + console.log("FS.trackingDelegate['onWriteToFile']('"+path+"') threw an exception: " + e.message); + } + return bytesWritten; + },allocate:function (stream, offset, length) { + if (offset < 0 || length <= 0) { + throw new FS.ErrnoError(ERRNO_CODES.EINVAL); + } + if ((stream.flags & 2097155) === 0) { + throw new FS.ErrnoError(ERRNO_CODES.EBADF); + } + if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.ENODEV); + } + if (!stream.stream_ops.allocate) { + throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); + } + stream.stream_ops.allocate(stream, offset, length); + },mmap:function (stream, buffer, offset, length, position, prot, flags) { + // TODO if PROT is PROT_WRITE, make sure we have write access + if ((stream.flags & 2097155) === 1) { + throw new FS.ErrnoError(ERRNO_CODES.EACCES); + } + if (!stream.stream_ops.mmap) { + throw new FS.ErrnoError(ERRNO_CODES.ENODEV); + } + return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags); + },msync:function (stream, buffer, offset, length, mmapFlags) { + if (!stream || !stream.stream_ops.msync) { + return 0; + } + return stream.stream_ops.msync(stream, buffer, offset, length, mmapFlags); + },munmap:function (stream) { + return 0; + },ioctl:function (stream, cmd, arg) { + if (!stream.stream_ops.ioctl) { + throw new FS.ErrnoError(ERRNO_CODES.ENOTTY); + } + return stream.stream_ops.ioctl(stream, cmd, arg); + },readFile:function (path, opts) { + opts = opts || {}; + opts.flags = opts.flags || 'r'; + opts.encoding = opts.encoding || 'binary'; + if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { + throw new Error('Invalid encoding type "' + opts.encoding + '"'); + } + var ret; + var stream = FS.open(path, opts.flags); + var stat = FS.stat(path); + var length = stat.size; + var buf = new Uint8Array(length); + FS.read(stream, buf, 0, length, 0); + if (opts.encoding === 'utf8') { + ret = UTF8ArrayToString(buf, 0); + } else if (opts.encoding === 'binary') { + ret = buf; + } + FS.close(stream); + return ret; + },writeFile:function (path, data, opts) { + opts = opts || {}; + opts.flags = opts.flags || 'w'; + opts.encoding = opts.encoding || 'utf8'; + if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') { + throw new Error('Invalid encoding type "' + opts.encoding + '"'); + } + var stream = FS.open(path, opts.flags, opts.mode); + if (opts.encoding === 'utf8') { + var buf = new Uint8Array(lengthBytesUTF8(data)+1); + var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); + FS.write(stream, buf, 0, actualNumBytes, 0, opts.canOwn); + } else if (opts.encoding === 'binary') { + FS.write(stream, data, 0, data.length, 0, opts.canOwn); + } + FS.close(stream); + },cwd:function () { + return FS.currentPath; + },chdir:function (path) { + var lookup = FS.lookupPath(path, { follow: true }); + if (!FS.isDir(lookup.node.mode)) { + throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR); + } + var err = FS.nodePermissions(lookup.node, 'x'); + if (err) { + throw new FS.ErrnoError(err); + } + FS.currentPath = lookup.path; + },createDefaultDirectories:function () { + FS.mkdir('/tmp'); + FS.mkdir('/home'); + FS.mkdir('/home/web_user'); + },createDefaultDevices:function () { + // create /dev + FS.mkdir('/dev'); + // setup /dev/null + FS.registerDevice(FS.makedev(1, 3), { + read: function() { return 0; }, + write: function(stream, buffer, offset, length, pos) { return length; } + }); + FS.mkdev('/dev/null', FS.makedev(1, 3)); + // setup /dev/tty and /dev/tty1 + // stderr needs to print output using Module['printErr'] + // so we register a second tty just for it. + TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); + TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); + FS.mkdev('/dev/tty', FS.makedev(5, 0)); + FS.mkdev('/dev/tty1', FS.makedev(6, 0)); + // setup /dev/[u]random + var random_device; + if (typeof crypto !== 'undefined') { + // for modern web browsers + var randomBuffer = new Uint8Array(1); + random_device = function() { crypto.getRandomValues(randomBuffer); return randomBuffer[0]; }; + } else if (ENVIRONMENT_IS_NODE) { + // for nodejs + random_device = function() { return require('crypto').randomBytes(1)[0]; }; + } else { + // default for ES5 platforms + random_device = function() { return (Math.random()*256)|0; }; + } + FS.createDevice('/dev', 'random', random_device); + FS.createDevice('/dev', 'urandom', random_device); + // we're not going to emulate the actual shm device, + // just create the tmp dirs that reside in it commonly + FS.mkdir('/dev/shm'); + FS.mkdir('/dev/shm/tmp'); + },createStandardStreams:function () { + // TODO deprecate the old functionality of a single + // input / output callback and that utilizes FS.createDevice + // and instead require a unique set of stream ops + + // by default, we symlink the standard streams to the + // default tty devices. however, if the standard streams + // have been overwritten we create a unique device for + // them instead. + if (Module['stdin']) { + FS.createDevice('/dev', 'stdin', Module['stdin']); + } else { + FS.symlink('/dev/tty', '/dev/stdin'); + } + if (Module['stdout']) { + FS.createDevice('/dev', 'stdout', null, Module['stdout']); + } else { + FS.symlink('/dev/tty', '/dev/stdout'); + } + if (Module['stderr']) { + FS.createDevice('/dev', 'stderr', null, Module['stderr']); + } else { + FS.symlink('/dev/tty1', '/dev/stderr'); + } + + // open default streams for the stdin, stdout and stderr devices + var stdin = FS.open('/dev/stdin', 'r'); + HEAP32[((_stdin)>>2)]=FS.getPtrForStream(stdin); + assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')'); + + var stdout = FS.open('/dev/stdout', 'w'); + HEAP32[((_stdout)>>2)]=FS.getPtrForStream(stdout); + assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')'); + + var stderr = FS.open('/dev/stderr', 'w'); + HEAP32[((_stderr)>>2)]=FS.getPtrForStream(stderr); + assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')'); + },ensureErrnoError:function () { + if (FS.ErrnoError) return; + FS.ErrnoError = function ErrnoError(errno, node) { + this.node = node; + this.setErrno = function(errno) { + this.errno = errno; + for (var key in ERRNO_CODES) { + if (ERRNO_CODES[key] === errno) { + this.code = key; + break; + } + } + }; + this.setErrno(errno); + this.message = ERRNO_MESSAGES[errno]; + }; + FS.ErrnoError.prototype = new Error(); + FS.ErrnoError.prototype.constructor = FS.ErrnoError; + // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info) + [ERRNO_CODES.ENOENT].forEach(function(code) { + FS.genericErrors[code] = new FS.ErrnoError(code); + FS.genericErrors[code].stack = ''; + }); + },staticInit:function () { + FS.ensureErrnoError(); + + FS.nameTable = new Array(4096); + + FS.mount(MEMFS, {}, '/'); + + FS.createDefaultDirectories(); + FS.createDefaultDevices(); + },init:function (input, output, error) { + assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)'); + FS.init.initialized = true; + + FS.ensureErrnoError(); + + // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here + Module['stdin'] = input || Module['stdin']; + Module['stdout'] = output || Module['stdout']; + Module['stderr'] = error || Module['stderr']; + + FS.createStandardStreams(); + },quit:function () { + FS.init.initialized = false; + for (var i = 0; i < FS.streams.length; i++) { + var stream = FS.streams[i]; + if (!stream) { + continue; + } + FS.close(stream); + } + },getMode:function (canRead, canWrite) { + var mode = 0; + if (canRead) mode |= 292 | 73; + if (canWrite) mode |= 146; + return mode; + },joinPath:function (parts, forceRelative) { + var path = PATH.join.apply(null, parts); + if (forceRelative && path[0] == '/') path = path.substr(1); + return path; + },absolutePath:function (relative, base) { + return PATH.resolve(base, relative); + },standardizePath:function (path) { + return PATH.normalize(path); + },findObject:function (path, dontResolveLastLink) { + var ret = FS.analyzePath(path, dontResolveLastLink); + if (ret.exists) { + return ret.object; + } else { + ___setErrNo(ret.error); + return null; + } + },analyzePath:function (path, dontResolveLastLink) { + // operate from within the context of the symlink's target + try { + var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); + path = lookup.path; + } catch (e) { + } + var ret = { + isRoot: false, exists: false, error: 0, name: null, path: null, object: null, + parentExists: false, parentPath: null, parentObject: null + }; + try { + var lookup = FS.lookupPath(path, { parent: true }); + ret.parentExists = true; + ret.parentPath = lookup.path; + ret.parentObject = lookup.node; + ret.name = PATH.basename(path); + lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); + ret.exists = true; + ret.path = lookup.path; + ret.object = lookup.node; + ret.name = lookup.node.name; + ret.isRoot = lookup.path === '/'; + } catch (e) { + ret.error = e.errno; + }; + return ret; + },createFolder:function (parent, name, canRead, canWrite) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.mkdir(path, mode); + },createPath:function (parent, path, canRead, canWrite) { + parent = typeof parent === 'string' ? parent : FS.getPath(parent); + var parts = path.split('/').reverse(); + while (parts.length) { + var part = parts.pop(); + if (!part) continue; + var current = PATH.join2(parent, part); + try { + FS.mkdir(current); + } catch (e) { + // ignore EEXIST + } + parent = current; + } + return current; + },createFile:function (parent, name, properties, canRead, canWrite) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + var mode = FS.getMode(canRead, canWrite); + return FS.create(path, mode); + },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) { + var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent; + var mode = FS.getMode(canRead, canWrite); + var node = FS.create(path, mode); + if (data) { + if (typeof data === 'string') { + var arr = new Array(data.length); + for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i); + data = arr; + } + // make sure we can write to the file + FS.chmod(node, mode | 146); + var stream = FS.open(node, 'w'); + FS.write(stream, data, 0, data.length, 0, canOwn); + FS.close(stream); + FS.chmod(node, mode); + } + return node; + },createDevice:function (parent, name, input, output) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + var mode = FS.getMode(!!input, !!output); + if (!FS.createDevice.major) FS.createDevice.major = 64; + var dev = FS.makedev(FS.createDevice.major++, 0); + // Create a fake device that a set of stream ops to emulate + // the old behavior. + FS.registerDevice(dev, { + open: function(stream) { + stream.seekable = false; + }, + close: function(stream) { + // flush any pending line data + if (output && output.buffer && output.buffer.length) { + output(10); + } + }, + read: function(stream, buffer, offset, length, pos /* ignored */) { + var bytesRead = 0; + for (var i = 0; i < length; i++) { + var result; + try { + result = input(); + } 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) { + for (var i = 0; i < length; i++) { + try { + output(buffer[offset+i]); + } catch (e) { + throw new FS.ErrnoError(ERRNO_CODES.EIO); + } + } + if (length) { + stream.node.timestamp = Date.now(); + } + return i; + } + }); + return FS.mkdev(path, mode, dev); + },createLink:function (parent, name, target, canRead, canWrite) { + var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name); + return FS.symlink(target, path); + },forceLoadFile:function (obj) { + if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true; + var success = true; + if (typeof XMLHttpRequest !== 'undefined') { + throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread."); + } else if (Module['read']) { + // Command-line. + try { + // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as + // read() will try to parse UTF8. + obj.contents = intArrayFromString(Module['read'](obj.url), true); + obj.usedBytes = obj.contents.length; + } catch (e) { + success = false; + } + } else { + throw new Error('Cannot load without read() or XMLHttpRequest.'); + } + if (!success) ___setErrNo(ERRNO_CODES.EIO); + return success; + },createLazyFile:function (parent, name, url, canRead, canWrite) { + // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse. + function LazyUint8Array() { + this.lengthKnown = false; + this.chunks = []; // Loaded chunks. Index is the chunk number + } + LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) { + if (idx > this.length-1 || idx < 0) { + return undefined; + } + var chunkOffset = idx % this.chunkSize; + var chunkNum = (idx / this.chunkSize)|0; + return this.getter(chunkNum)[chunkOffset]; + } + LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) { + this.getter = getter; + } + LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() { + // Find length + var xhr = new XMLHttpRequest(); + xhr.open('HEAD', url, false); + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + var datalength = Number(xhr.getResponseHeader("Content-length")); + var header; + var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes"; + var chunkSize = 1024*1024; // Chunk size in bytes + + if (!hasByteServing) chunkSize = datalength; + + // Function to get a range from the remote URL. + var doXHR = (function(from, to) { + if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!"); + if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!"); + + // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available. + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to); + + // Some hints to the browser that we want binary data. + if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer'; + if (xhr.overrideMimeType) { + xhr.overrideMimeType('text/plain; charset=x-user-defined'); + } + + xhr.send(null); + if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status); + if (xhr.response !== undefined) { + return new Uint8Array(xhr.response || []); + } else { + return intArrayFromString(xhr.responseText || '', true); + } + }); + var lazyArray = this; + lazyArray.setDataGetter(function(chunkNum) { + var start = chunkNum * chunkSize; + var end = (chunkNum+1) * chunkSize - 1; // including this byte + end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block + if (typeof(lazyArray.chunks[chunkNum]) === "undefined") { + lazyArray.chunks[chunkNum] = doXHR(start, end); + } + if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!"); + return lazyArray.chunks[chunkNum]; + }); + + this._length = datalength; + this._chunkSize = chunkSize; + this.lengthKnown = true; + } + if (typeof XMLHttpRequest !== 'undefined') { + if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc'; + var lazyArray = new LazyUint8Array(); + Object.defineProperty(lazyArray, "length", { + get: function() { + if(!this.lengthKnown) { + this.cacheLength(); + } + return this._length; + } + }); + Object.defineProperty(lazyArray, "chunkSize", { + get: function() { + if(!this.lengthKnown) { + this.cacheLength(); + } + return this._chunkSize; + } + }); + + var properties = { isDevice: false, contents: lazyArray }; + } else { + var properties = { isDevice: false, url: url }; + } + + var node = FS.createFile(parent, name, properties, canRead, canWrite); + // This is a total hack, but I want to get this lazy file code out of the + // core of MEMFS. If we want to keep this lazy file concept I feel it should + // be its own thin LAZYFS proxying calls to MEMFS. + if (properties.contents) { + node.contents = properties.contents; + } else if (properties.url) { + node.contents = null; + node.url = properties.url; + } + // Add a function that defers querying the file size until it is asked the first time. + Object.defineProperty(node, "usedBytes", { + get: function() { return this.contents.length; } + }); + // override each stream op with one that tries to force load the lazy file first + var stream_ops = {}; + var keys = Object.keys(node.stream_ops); + keys.forEach(function(key) { + var fn = node.stream_ops[key]; + stream_ops[key] = function forceLoadLazyFile() { + if (!FS.forceLoadFile(node)) { + throw new FS.ErrnoError(ERRNO_CODES.EIO); + } + return fn.apply(null, arguments); + }; + }); + // use a custom read function + stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) { + if (!FS.forceLoadFile(node)) { + throw new FS.ErrnoError(ERRNO_CODES.EIO); + } + var contents = stream.node.contents; + if (position >= contents.length) + return 0; + var size = Math.min(contents.length - position, length); + assert(size >= 0); + if (contents.slice) { // normal array + for (var i = 0; i < size; i++) { + buffer[offset + i] = contents[position + i]; + } + } else { + for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR + buffer[offset + i] = contents.get(position + i); + } + } + return size; + }; + node.stream_ops = stream_ops; + return node; + },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) { + Browser.init(); + // TODO we should allow people to just pass in a complete filename instead + // of parent and name being that we just join them anyways + var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent; + var dep = getUniqueRunDependency('cp ' + fullname); // might have several active requests for the same fullname + function processData(byteArray) { + function finish(byteArray) { + if (preFinish) preFinish(); + if (!dontCreateFile) { + FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn); + } + if (onload) onload(); + removeRunDependency(dep); + } + var handled = false; + Module['preloadPlugins'].forEach(function(plugin) { + if (handled) return; + if (plugin['canHandle'](fullname)) { + plugin['handle'](byteArray, fullname, finish, function() { + if (onerror) onerror(); + removeRunDependency(dep); + }); + handled = true; + } + }); + if (!handled) finish(byteArray); + } + addRunDependency(dep); + if (typeof url == 'string') { + Browser.asyncLoad(url, function(byteArray) { + processData(byteArray); + }, onerror); + } else { + processData(url); + } + },indexedDB:function () { + return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; + },DB_NAME:function () { + return 'EM_FS_' + window.location.pathname; + },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) { + onload = onload || function(){}; + onerror = onerror || function(){}; + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { + console.log('creating db'); + var db = openRequest.result; + db.createObjectStore(FS.DB_STORE_NAME); + }; + openRequest.onsuccess = function openRequest_onsuccess() { + var db = openRequest.result; + var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite'); + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(function(path) { + var putRequest = files.put(FS.analyzePath(path).object.contents, path); + putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() }; + putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + },loadFilesFromDB:function (paths, onload, onerror) { + onload = onload || function(){}; + onerror = onerror || function(){}; + var indexedDB = FS.indexedDB(); + try { + var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); + } catch (e) { + return onerror(e); + } + openRequest.onupgradeneeded = onerror; // no database to load from + openRequest.onsuccess = function openRequest_onsuccess() { + var db = openRequest.result; + try { + var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly'); + } catch(e) { + onerror(e); + return; + } + var files = transaction.objectStore(FS.DB_STORE_NAME); + var ok = 0, fail = 0, total = paths.length; + function finish() { + if (fail == 0) onload(); else onerror(); + } + paths.forEach(function(path) { + var getRequest = files.get(path); + getRequest.onsuccess = function getRequest_onsuccess() { + if (FS.analyzePath(path).exists) { + FS.unlink(path); + } + FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true); + ok++; + if (ok + fail == total) finish(); + }; + getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() }; + }); + transaction.onerror = onerror; + }; + openRequest.onerror = onerror; + }}; + var PATH={ + splitPath:function (filename) { + var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; + return splitPathRe.exec(filename).slice(1); + },normalizeArray:function (parts, allowAboveRoot) { + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + // if the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up--; up) { + parts.unshift('..'); + } + } + return parts; + },normalize:function (path) { + var isAbsolute = path.charAt(0) === '/', + trailingSlash = path.substr(-1) === '/'; + // Normalize the path + path = PATH.normalizeArray(path.split('/').filter(function(p) { + return !!p; + }), !isAbsolute).join('/'); + if (!path && !isAbsolute) { + path = '.'; + } + if (path && trailingSlash) { + path += '/'; + } + return (isAbsolute ? '/' : '') + path; + },dirname:function (path) { + var result = PATH.splitPath(path), + root = result[0], + dir = result[1]; + if (!root && !dir) { + // No dirname whatsoever + return '.'; + } + if (dir) { + // It has a dirname, strip trailing slash + dir = dir.substr(0, dir.length - 1); + } + return root + dir; + },basename:function (path) { + // EMSCRIPTEN return '/'' for '/', not an empty string + if (path === '/') return '/'; + var lastSlash = path.lastIndexOf('/'); + if (lastSlash === -1) return path; + return path.substr(lastSlash+1); + },extname:function (path) { + return PATH.splitPath(path)[3]; + },join:function () { + var paths = Array.prototype.slice.call(arguments, 0); + return PATH.normalize(paths.join('/')); + },join2:function (l, r) { + return PATH.normalize(l + '/' + r); + },resolve:function () { + var resolvedPath = '', + resolvedAbsolute = false; + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = (i >= 0) ? arguments[i] : FS.cwd(); + // Skip empty and invalid entries + if (typeof path !== 'string') { + throw new TypeError('Arguments to path.resolve must be strings'); + } else if (!path) { + return ''; // an invalid portion invalidates the whole thing + } + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charAt(0) === '/'; + } + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) { + return !!p; + }), !resolvedAbsolute).join('/'); + return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; + },relative:function (from, to) { + from = PATH.resolve(from).substr(1); + to = PATH.resolve(to).substr(1); + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== '') break; + } + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== '') break; + } + if (start > end) return []; + return arr.slice(start, end - start + 1); + } + var fromParts = trim(from.split('/')); + var toParts = trim(to.split('/')); + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push('..'); + } + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + return outputParts.join('/'); + }}; + + + function _emscripten_set_main_loop_timing(mode, value) { + Browser.mainLoop.timingMode = mode; + Browser.mainLoop.timingValue = value; + + if (!Browser.mainLoop.func) { + return 1; // Return non-zero on failure, can't set timing mode when there is no main loop. + } + + if (mode == 0 /*EM_TIMING_SETTIMEOUT*/) { + Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler() { + setTimeout(Browser.mainLoop.runner, value); // doing this each time means that on exception, we stop + }; + Browser.mainLoop.method = 'timeout'; + } else if (mode == 1 /*EM_TIMING_RAF*/) { + Browser.mainLoop.scheduler = function Browser_mainLoop_scheduler() { + Browser.requestAnimationFrame(Browser.mainLoop.runner); + }; + Browser.mainLoop.method = 'rAF'; + } + return 0; + } + function _emscripten_set_main_loop(func, fps, simulateInfiniteLoop, arg, noSetTiming) { + Module['noExitRuntime'] = true; + + assert(!Browser.mainLoop.func, 'emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.'); + + Browser.mainLoop.func = func; + Browser.mainLoop.arg = arg; + + var thisMainLoopId = Browser.mainLoop.currentlyRunningMainloop; + + Browser.mainLoop.runner = function Browser_mainLoop_runner() { + if (ABORT) return; + if (Browser.mainLoop.queue.length > 0) { + var start = Date.now(); + var blocker = Browser.mainLoop.queue.shift(); + blocker.func(blocker.arg); + if (Browser.mainLoop.remainingBlockers) { + var remaining = Browser.mainLoop.remainingBlockers; + var next = remaining%1 == 0 ? remaining-1 : Math.floor(remaining); + if (blocker.counted) { + Browser.mainLoop.remainingBlockers = next; + } else { + // not counted, but move the progress along a tiny bit + next = next + 0.5; // do not steal all the next one's progress + Browser.mainLoop.remainingBlockers = (8*remaining + next)/9; + } + } + console.log('main loop blocker "' + blocker.name + '" took ' + (Date.now() - start) + ' ms'); //, left: ' + Browser.mainLoop.remainingBlockers); + Browser.mainLoop.updateStatus(); + setTimeout(Browser.mainLoop.runner, 0); + return; + } + + // catch pauses from non-main loop sources + if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return; + + // Implement very basic swap interval control + Browser.mainLoop.currentFrameNumber = Browser.mainLoop.currentFrameNumber + 1 | 0; + if (Browser.mainLoop.timingMode == 1/*EM_TIMING_RAF*/ && Browser.mainLoop.timingValue > 1 && Browser.mainLoop.currentFrameNumber % Browser.mainLoop.timingValue != 0) { + // Not the scheduled time to render this frame - skip. + Browser.mainLoop.scheduler(); + return; + } + + // Signal GL rendering layer that processing of a new frame is about to start. This helps it optimize + // VBO double-buffering and reduce GPU stalls. + + if (Browser.mainLoop.method === 'timeout' && Module.ctx) { + Module.printErr('Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!'); + Browser.mainLoop.method = ''; // just warn once per call to set main loop + } + + Browser.mainLoop.runIter(function() { + if (typeof arg !== 'undefined') { + Runtime.dynCall('vi', func, [arg]); + } else { + Runtime.dynCall('v', func); + } + }); + + // catch pauses from the main loop itself + if (thisMainLoopId < Browser.mainLoop.currentlyRunningMainloop) return; + + // Queue new audio data. This is important to be right after the main loop invocation, so that we will immediately be able + // to queue the newest produced audio samples. + // TODO: Consider adding pre- and post- rAF callbacks so that GL.newRenderingFrameStarted() and SDL.audio.queueNewAudioData() + // do not need to be hardcoded into this function, but can be more generic. + if (typeof SDL === 'object' && SDL.audio && SDL.audio.queueNewAudioData) SDL.audio.queueNewAudioData(); + + Browser.mainLoop.scheduler(); + } + + if (!noSetTiming) { + if (fps && fps > 0) _emscripten_set_main_loop_timing(0/*EM_TIMING_SETTIMEOUT*/, 1000.0 / fps); + else _emscripten_set_main_loop_timing(1/*EM_TIMING_RAF*/, 1); // Do rAF by rendering each frame (no decimating) + + Browser.mainLoop.scheduler(); + } + + if (simulateInfiniteLoop) { + throw 'SimulateInfiniteLoop'; + } + } + var Browser={ + mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function () { + Browser.mainLoop.scheduler = null; + Browser.mainLoop.currentlyRunningMainloop++; // Incrementing this signals the previous main loop that it's now become old, and it must return. + },resume:function () { + Browser.mainLoop.currentlyRunningMainloop++; + var timingMode = Browser.mainLoop.timingMode; + var timingValue = Browser.mainLoop.timingValue; + var func = Browser.mainLoop.func; + Browser.mainLoop.func = null; + _emscripten_set_main_loop(func, 0, false, Browser.mainLoop.arg, true /* do not set timing and call scheduler, we will do it on the next lines */); + _emscripten_set_main_loop_timing(timingMode, timingValue); + Browser.mainLoop.scheduler(); + },updateStatus:function () { + if (Module['setStatus']) { + var message = Module['statusMessage'] || 'Please wait...'; + var remaining = Browser.mainLoop.remainingBlockers; + var expected = Browser.mainLoop.expectedBlockers; + if (remaining) { + if (remaining < expected) { + Module['setStatus'](message + ' (' + (expected - remaining) + '/' + expected + ')'); + } else { + Module['setStatus'](message); + } + } else { + Module['setStatus'](''); + } + } + },runIter:function (func) { + if (ABORT) return; + if (Module['preMainLoop']) { + var preRet = Module['preMainLoop'](); + if (preRet === false) { + return; // |return false| skips a frame + } + } + try { + func(); + } catch (e) { + if (e instanceof ExitStatus) { + return; + } else { + if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]); + throw e; + } + } + if (Module['postMainLoop']) Module['postMainLoop'](); + }},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function () { + if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; // needs to exist even in workers + + if (Browser.initted) return; + Browser.initted = true; + + try { + new Blob(); + Browser.hasBlobConstructor = true; + } catch(e) { + Browser.hasBlobConstructor = false; + console.log("warning: no blob constructor, cannot create blobs with mimetypes"); + } + Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : (typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : (!Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null)); + Browser.URLObject = typeof window != "undefined" ? (window.URL ? window.URL : window.webkitURL) : undefined; + if (!Module.noImageDecoding && typeof Browser.URLObject === 'undefined') { + console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."); + Module.noImageDecoding = true; + } + + // Support for plugins that can process preloaded files. You can add more of these to + // your app by creating and appending to Module.preloadPlugins. + // + // Each plugin is asked if it can handle a file based on the file's name. If it can, + // it is given the file's raw data. When it is done, it calls a callback with the file's + // (possibly modified) data. For example, a plugin might decompress a file, or it + // might create some side data structure for use later (like an Image element, etc.). + + var imagePlugin = {}; + imagePlugin['canHandle'] = function imagePlugin_canHandle(name) { + return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name); + }; + imagePlugin['handle'] = function imagePlugin_handle(byteArray, name, onload, onerror) { + var b = null; + if (Browser.hasBlobConstructor) { + try { + b = new Blob([byteArray], { type: Browser.getMimetype(name) }); + if (b.size !== byteArray.length) { // Safari bug #118630 + // Safari's Blob can only take an ArrayBuffer + b = new Blob([(new Uint8Array(byteArray)).buffer], { type: Browser.getMimetype(name) }); + } + } catch(e) { + Runtime.warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder'); + } + } + if (!b) { + var bb = new Browser.BlobBuilder(); + bb.append((new Uint8Array(byteArray)).buffer); // we need to pass a buffer, and must copy the array to get the right data range + b = bb.getBlob(); + } + var url = Browser.URLObject.createObjectURL(b); + var img = new Image(); + img.onload = function img_onload() { + assert(img.complete, 'Image ' + name + ' could not be decoded'); + var canvas = document.createElement('canvas'); + canvas.width = img.width; + canvas.height = img.height; + var ctx = canvas.getContext('2d'); + ctx.drawImage(img, 0, 0); + Module["preloadedImages"][name] = canvas; + Browser.URLObject.revokeObjectURL(url); + if (onload) onload(byteArray); + }; + img.onerror = function img_onerror(event) { + console.log('Image ' + url + ' could not be decoded'); + if (onerror) onerror(); + }; + img.src = url; + }; + Module['preloadPlugins'].push(imagePlugin); + + var audioPlugin = {}; + audioPlugin['canHandle'] = function audioPlugin_canHandle(name) { + return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 }; + }; + audioPlugin['handle'] = function audioPlugin_handle(byteArray, name, onload, onerror) { + var done = false; + function finish(audio) { + if (done) return; + done = true; + Module["preloadedAudios"][name] = audio; + if (onload) onload(byteArray); + } + function fail() { + if (done) return; + done = true; + Module["preloadedAudios"][name] = new Audio(); // empty shim + if (onerror) onerror(); + } + if (Browser.hasBlobConstructor) { + try { + var b = new Blob([byteArray], { type: Browser.getMimetype(name) }); + } catch(e) { + return fail(); + } + var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this! + var audio = new Audio(); + audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926 + audio.onerror = function audio_onerror(event) { + if (done) return; + console.log('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach'); + function encode64(data) { + var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + var PAD = '='; + var ret = ''; + var leftchar = 0; + var leftbits = 0; + for (var i = 0; i < data.length; i++) { + leftchar = (leftchar << 8) | data[i]; + leftbits += 8; + while (leftbits >= 6) { + var curr = (leftchar >> (leftbits-6)) & 0x3f; + leftbits -= 6; + ret += BASE[curr]; + } + } + if (leftbits == 2) { + ret += BASE[(leftchar&3) << 4]; + ret += PAD + PAD; + } else if (leftbits == 4) { + ret += BASE[(leftchar&0xf) << 2]; + ret += PAD; + } + return ret; + } + audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray); + finish(audio); // we don't wait for confirmation this worked - but it's worth trying + }; + audio.src = url; + // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror + Browser.safeSetTimeout(function() { + finish(audio); // try to use it even though it is not necessarily ready to play + }, 10000); + } else { + return fail(); + } + }; + Module['preloadPlugins'].push(audioPlugin); + + // Canvas event setup + + var canvas = Module['canvas']; + function pointerLockChange() { + Browser.pointerLock = document['pointerLockElement'] === canvas || + document['mozPointerLockElement'] === canvas || + document['webkitPointerLockElement'] === canvas || + document['msPointerLockElement'] === canvas; + } + if (canvas) { + // forced aspect ratio can be enabled by defining 'forcedAspectRatio' on Module + // Module['forcedAspectRatio'] = 4 / 3; + + canvas.requestPointerLock = canvas['requestPointerLock'] || + canvas['mozRequestPointerLock'] || + canvas['webkitRequestPointerLock'] || + canvas['msRequestPointerLock'] || + function(){}; + canvas.exitPointerLock = document['exitPointerLock'] || + document['mozExitPointerLock'] || + document['webkitExitPointerLock'] || + document['msExitPointerLock'] || + function(){}; // no-op if function does not exist + canvas.exitPointerLock = canvas.exitPointerLock.bind(document); + + + document.addEventListener('pointerlockchange', pointerLockChange, false); + document.addEventListener('mozpointerlockchange', pointerLockChange, false); + document.addEventListener('webkitpointerlockchange', pointerLockChange, false); + document.addEventListener('mspointerlockchange', pointerLockChange, false); + + if (Module['elementPointerLock']) { + canvas.addEventListener("click", function(ev) { + if (!Browser.pointerLock && canvas.requestPointerLock) { + canvas.requestPointerLock(); + ev.preventDefault(); + } + }, false); + } + } + },createContext:function (canvas, useWebGL, setInModule, webGLContextAttributes) { + if (useWebGL && Module.ctx && canvas == Module.canvas) return Module.ctx; // no need to recreate GL context if it's already been created for this canvas. + + var ctx; + var contextHandle; + if (useWebGL) { + // For GLES2/desktop GL compatibility, adjust a few defaults to be different to WebGL defaults, so that they align better with the desktop defaults. + var contextAttributes = { + antialias: false, + alpha: false + }; + + if (webGLContextAttributes) { + for (var attribute in webGLContextAttributes) { + contextAttributes[attribute] = webGLContextAttributes[attribute]; + } + } + + contextHandle = GL.createContext(canvas, contextAttributes); + if (contextHandle) { + ctx = GL.getContext(contextHandle).GLctx; + } + // Set the background of the WebGL canvas to black + canvas.style.backgroundColor = "black"; + } else { + ctx = canvas.getContext('2d'); + } + + if (!ctx) return null; + + if (setInModule) { + if (!useWebGL) assert(typeof GLctx === 'undefined', 'cannot set in module if GLctx is used, but we are a non-GL context that would replace it'); + + Module.ctx = ctx; + if (useWebGL) GL.makeContextCurrent(contextHandle); + Module.useWebGL = useWebGL; + Browser.moduleContextCreatedCallbacks.forEach(function(callback) { callback() }); + Browser.init(); + } + return ctx; + },destroyContext:function (canvas, useWebGL, setInModule) {},fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:function (lockPointer, resizeCanvas, vrDevice) { + Browser.lockPointer = lockPointer; + Browser.resizeCanvas = resizeCanvas; + Browser.vrDevice = vrDevice; + if (typeof Browser.lockPointer === 'undefined') Browser.lockPointer = true; + if (typeof Browser.resizeCanvas === 'undefined') Browser.resizeCanvas = false; + if (typeof Browser.vrDevice === 'undefined') Browser.vrDevice = null; + + var canvas = Module['canvas']; + function fullScreenChange() { + Browser.isFullScreen = false; + var canvasContainer = canvas.parentNode; + if ((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] || + document['mozFullScreenElement'] || document['mozFullscreenElement'] || + document['fullScreenElement'] || document['fullscreenElement'] || + document['msFullScreenElement'] || document['msFullscreenElement'] || + document['webkitCurrentFullScreenElement']) === canvasContainer) { + canvas.cancelFullScreen = document['cancelFullScreen'] || + document['mozCancelFullScreen'] || + document['webkitCancelFullScreen'] || + document['msExitFullscreen'] || + document['exitFullscreen'] || + function() {}; + canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document); + if (Browser.lockPointer) canvas.requestPointerLock(); + Browser.isFullScreen = true; + if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize(); + } else { + + // remove the full screen specific parent of the canvas again to restore the HTML structure from before going full screen + canvasContainer.parentNode.insertBefore(canvas, canvasContainer); + canvasContainer.parentNode.removeChild(canvasContainer); + + if (Browser.resizeCanvas) Browser.setWindowedCanvasSize(); + } + if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullScreen); + Browser.updateCanvasDimensions(canvas); + } + + if (!Browser.fullScreenHandlersInstalled) { + Browser.fullScreenHandlersInstalled = true; + document.addEventListener('fullscreenchange', fullScreenChange, false); + document.addEventListener('mozfullscreenchange', fullScreenChange, false); + document.addEventListener('webkitfullscreenchange', fullScreenChange, false); + document.addEventListener('MSFullscreenChange', fullScreenChange, false); + } + + // create a new parent to ensure the canvas has no siblings. this allows browsers to optimize full screen performance when its parent is the full screen root + var canvasContainer = document.createElement("div"); + canvas.parentNode.insertBefore(canvasContainer, canvas); + canvasContainer.appendChild(canvas); + + // use parent of canvas as full screen root to allow aspect ratio correction (Firefox stretches the root to screen size) + canvasContainer.requestFullScreen = canvasContainer['requestFullScreen'] || + canvasContainer['mozRequestFullScreen'] || + canvasContainer['msRequestFullscreen'] || + (canvasContainer['webkitRequestFullScreen'] ? function() { canvasContainer['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null); + + if (vrDevice) { + canvasContainer.requestFullScreen({ vrDisplay: vrDevice }); + } else { + canvasContainer.requestFullScreen(); + } + },nextRAF:0,fakeRequestAnimationFrame:function (func) { + // try to keep 60fps between calls to here + var now = Date.now(); + if (Browser.nextRAF === 0) { + Browser.nextRAF = now + 1000/60; + } else { + while (now + 2 >= Browser.nextRAF) { // fudge a little, to avoid timer jitter causing us to do lots of delay:0 + Browser.nextRAF += 1000/60; + } + } + var delay = Math.max(Browser.nextRAF - now, 0); + setTimeout(func, delay); + },requestAnimationFrame:function requestAnimationFrame(func) { + if (typeof window === 'undefined') { // Provide fallback to setTimeout if window is undefined (e.g. in Node.js) + Browser.fakeRequestAnimationFrame(func); + } else { + if (!window.requestAnimationFrame) { + window.requestAnimationFrame = window['requestAnimationFrame'] || + window['mozRequestAnimationFrame'] || + window['webkitRequestAnimationFrame'] || + window['msRequestAnimationFrame'] || + window['oRequestAnimationFrame'] || + Browser.fakeRequestAnimationFrame; + } + window.requestAnimationFrame(func); + } + },safeCallback:function (func) { + return function() { + if (!ABORT) return func.apply(null, arguments); + }; + },allowAsyncCallbacks:true,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function () { + Browser.allowAsyncCallbacks = false; + },resumeAsyncCallbacks:function () { // marks future callbacks as ok to execute, and synchronously runs any remaining ones right now + Browser.allowAsyncCallbacks = true; + if (Browser.queuedAsyncCallbacks.length > 0) { + var callbacks = Browser.queuedAsyncCallbacks; + Browser.queuedAsyncCallbacks = []; + callbacks.forEach(function(func) { + func(); + }); + } + },safeRequestAnimationFrame:function (func) { + return Browser.requestAnimationFrame(function() { + if (ABORT) return; + if (Browser.allowAsyncCallbacks) { + func(); + } else { + Browser.queuedAsyncCallbacks.push(func); + } + }); + },safeSetTimeout:function (func, timeout) { + Module['noExitRuntime'] = true; + return setTimeout(function() { + if (ABORT) return; + if (Browser.allowAsyncCallbacks) { + func(); + } else { + Browser.queuedAsyncCallbacks.push(func); + } + }, timeout); + },safeSetInterval:function (func, timeout) { + Module['noExitRuntime'] = true; + return setInterval(function() { + if (ABORT) return; + if (Browser.allowAsyncCallbacks) { + func(); + } // drop it on the floor otherwise, next interval will kick in + }, timeout); + },getMimetype:function (name) { + return { + 'jpg': 'image/jpeg', + 'jpeg': 'image/jpeg', + 'png': 'image/png', + 'bmp': 'image/bmp', + 'ogg': 'audio/ogg', + 'wav': 'audio/wav', + 'mp3': 'audio/mpeg' + }[name.substr(name.lastIndexOf('.')+1)]; + },getUserMedia:function (func) { + if(!window.getUserMedia) { + window.getUserMedia = navigator['getUserMedia'] || + navigator['mozGetUserMedia']; + } + window.getUserMedia(func); + },getMovementX:function (event) { + return event['movementX'] || + event['mozMovementX'] || + event['webkitMovementX'] || + 0; + },getMovementY:function (event) { + return event['movementY'] || + event['mozMovementY'] || + event['webkitMovementY'] || + 0; + },getMouseWheelDelta:function (event) { + var delta = 0; + switch (event.type) { + case 'DOMMouseScroll': + delta = event.detail; + break; + case 'mousewheel': + delta = event.wheelDelta; + break; + case 'wheel': + delta = event['deltaY']; + break; + default: + throw 'unrecognized mouse wheel event: ' + event.type; + } + return delta; + },mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function (event) { // event should be mousemove, mousedown or mouseup + if (Browser.pointerLock) { + // When the pointer is locked, calculate the coordinates + // based on the movement of the mouse. + // Workaround for Firefox bug 764498 + if (event.type != 'mousemove' && + ('mozMovementX' in event)) { + Browser.mouseMovementX = Browser.mouseMovementY = 0; + } else { + Browser.mouseMovementX = Browser.getMovementX(event); + Browser.mouseMovementY = Browser.getMovementY(event); + } + + // check if SDL is available + if (typeof SDL != "undefined") { + Browser.mouseX = SDL.mouseX + Browser.mouseMovementX; + Browser.mouseY = SDL.mouseY + Browser.mouseMovementY; + } else { + // just add the mouse delta to the current absolut mouse position + // FIXME: ideally this should be clamped against the canvas size and zero + Browser.mouseX += Browser.mouseMovementX; + Browser.mouseY += Browser.mouseMovementY; + } + } else { + // Otherwise, calculate the movement based on the changes + // in the coordinates. + var rect = Module["canvas"].getBoundingClientRect(); + var cw = Module["canvas"].width; + var ch = Module["canvas"].height; + + // Neither .scrollX or .pageXOffset are defined in a spec, but + // we prefer .scrollX because it is currently in a spec draft. + // (see: http://www.w3.org/TR/2013/WD-cssom-view-20131217/) + var scrollX = ((typeof window.scrollX !== 'undefined') ? window.scrollX : window.pageXOffset); + var scrollY = ((typeof window.scrollY !== 'undefined') ? window.scrollY : window.pageYOffset); + + if (event.type === 'touchstart' || event.type === 'touchend' || event.type === 'touchmove') { + var touch = event.touch; + if (touch === undefined) { + return; // the "touch" property is only defined in SDL + + } + var adjustedX = touch.pageX - (scrollX + rect.left); + var adjustedY = touch.pageY - (scrollY + rect.top); + + adjustedX = adjustedX * (cw / rect.width); + adjustedY = adjustedY * (ch / rect.height); + + var coords = { x: adjustedX, y: adjustedY }; + + if (event.type === 'touchstart') { + Browser.lastTouches[touch.identifier] = coords; + Browser.touches[touch.identifier] = coords; + } else if (event.type === 'touchend' || event.type === 'touchmove') { + var last = Browser.touches[touch.identifier]; + if (!last) last = coords; + Browser.lastTouches[touch.identifier] = last; + Browser.touches[touch.identifier] = coords; + } + return; + } + + var x = event.pageX - (scrollX + rect.left); + var y = event.pageY - (scrollY + rect.top); + + // the canvas might be CSS-scaled compared to its backbuffer; + // SDL-using content will want mouse coordinates in terms + // of backbuffer units. + x = x * (cw / rect.width); + y = y * (ch / rect.height); + + Browser.mouseMovementX = x - Browser.mouseX; + Browser.mouseMovementY = y - Browser.mouseY; + Browser.mouseX = x; + Browser.mouseY = y; + } + },xhrLoad:function (url, onload, onerror) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.responseType = 'arraybuffer'; + xhr.onload = function xhr_onload() { + if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0 + onload(xhr.response); + } else { + onerror(); + } + }; + xhr.onerror = onerror; + xhr.send(null); + },asyncLoad:function (url, onload, onerror, noRunDep) { + Browser.xhrLoad(url, function(arrayBuffer) { + assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).'); + onload(new Uint8Array(arrayBuffer)); + if (!noRunDep) removeRunDependency('al ' + url); + }, function(event) { + if (onerror) { + onerror(); + } else { + throw 'Loading data file "' + url + '" failed.'; + } + }); + if (!noRunDep) addRunDependency('al ' + url); + },resizeListeners:[],updateResizeListeners:function () { + var canvas = Module['canvas']; + Browser.resizeListeners.forEach(function(listener) { + listener(canvas.width, canvas.height); + }); + },setCanvasSize:function (width, height, noUpdates) { + var canvas = Module['canvas']; + Browser.updateCanvasDimensions(canvas, width, height); + if (!noUpdates) Browser.updateResizeListeners(); + },windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:function () { + // check if SDL is available + if (typeof SDL != "undefined") { + var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; + flags = flags | 0x00800000; // set SDL_FULLSCREEN flag + HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags + } + Browser.updateResizeListeners(); + },setWindowedCanvasSize:function () { + // check if SDL is available + if (typeof SDL != "undefined") { + var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]; + flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag + HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags + } + Browser.updateResizeListeners(); + },updateCanvasDimensions:function (canvas, wNative, hNative) { + if (wNative && hNative) { + canvas.widthNative = wNative; + canvas.heightNative = hNative; + } else { + wNative = canvas.widthNative; + hNative = canvas.heightNative; + } + var w = wNative; + var h = hNative; + if (Module['forcedAspectRatio'] && Module['forcedAspectRatio'] > 0) { + if (w/h < Module['forcedAspectRatio']) { + w = Math.round(h * Module['forcedAspectRatio']); + } else { + h = Math.round(w / Module['forcedAspectRatio']); + } + } + if (((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] || + document['mozFullScreenElement'] || document['mozFullscreenElement'] || + document['fullScreenElement'] || document['fullscreenElement'] || + document['msFullScreenElement'] || document['msFullscreenElement'] || + document['webkitCurrentFullScreenElement']) === canvas.parentNode) && (typeof screen != 'undefined')) { + var factor = Math.min(screen.width / w, screen.height / h); + w = Math.round(w * factor); + h = Math.round(h * factor); + } + if (Browser.resizeCanvas) { + if (canvas.width != w) canvas.width = w; + if (canvas.height != h) canvas.height = h; + if (typeof canvas.style != 'undefined') { + canvas.style.removeProperty( "width"); + canvas.style.removeProperty("height"); + } + } else { + if (canvas.width != wNative) canvas.width = wNative; + if (canvas.height != hNative) canvas.height = hNative; + if (typeof canvas.style != 'undefined') { + if (w != wNative || h != hNative) { + canvas.style.setProperty( "width", w + "px", "important"); + canvas.style.setProperty("height", h + "px", "important"); + } else { + canvas.style.removeProperty( "width"); + canvas.style.removeProperty("height"); + } + } + } + },wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function () { + var handle = Browser.nextWgetRequestHandle; + Browser.nextWgetRequestHandle++; + return handle; + }}; + + var _llvm_sqrt_f64=Math_sqrt; + + + function __exit(status) { + // void _exit(int status); + // http://pubs.opengroup.org/onlinepubs/000095399/functions/exit.html + Module['exit'](status); + }function _exit(status) { + __exit(status); + } + + var _sin=Math_sin; + + + Module["_bitshift64Lshr"] = _bitshift64Lshr; + + var _atan=Math_atan; + + var _BDtoIHigh=true; + + var _ceil=Math_ceil; + + var _sinf=Math_sin; + + + function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.set(HEAPU8.subarray(src, src+num), dest); + return dest; + } + Module["_memcpy"] = _memcpy; + + var _log=Math_log; + + var _cos=Math_cos; + + var _llvm_pow_f64=Math_pow; + + function _sbrk(bytes) { + // Implement a Linux-like 'memory area' for our 'process'. + // Changes the size of the memory area by |bytes|; returns the + // address of the previous top ('break') of the memory area + // We control the "dynamic" memory - DYNAMIC_BASE to DYNAMICTOP + var self = _sbrk; + if (!self.called) { + DYNAMICTOP = alignMemoryPage(DYNAMICTOP); // make sure we start out aligned + self.called = true; + assert(Runtime.dynamicAlloc); + self.alloc = Runtime.dynamicAlloc; + Runtime.dynamicAlloc = function() { abort('cannot dynamically allocate, sbrk now has control') }; + } + var ret = DYNAMICTOP; + if (bytes != 0) { + var success = self.alloc(bytes); + if (!success) return -1 >>> 0; // sbrk failure code + } + return ret; // Previous break location. + } + + + Module["_memmove"] = _memmove; + + function ___errno_location() { + return ___errno_state; + } + + var _BItoD=true; + + + Module["_strcpy"] = _strcpy; + + var _exp=Math_exp; + + function _time(ptr) { + var ret = (Date.now()/1000)|0; + if (ptr) { + HEAP32[((ptr)>>2)]=ret; + } + return ret; + } + + function _floor0_exportbundle() { + Module['printErr']('missing function: floor0_exportbundle'); abort(-1); + } +___errno_state = Runtime.staticAlloc(4); HEAP32[((___errno_state)>>2)]=0; +Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, resizeCanvas, vrDevice) { Browser.requestFullScreen(lockPointer, resizeCanvas, vrDevice) }; + Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) { Browser.requestAnimationFrame(func) }; + Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) { Browser.setCanvasSize(width, height, noUpdates) }; + Module["pauseMainLoop"] = function Module_pauseMainLoop() { Browser.mainLoop.pause() }; + Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() }; + Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() } + Module["createContext"] = function Module_createContext(canvas, useWebGL, setInModule, webGLContextAttributes) { return Browser.createContext(canvas, useWebGL, setInModule, webGLContextAttributes) } +FS.staticInit();__ATINIT__.unshift(function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() });__ATMAIN__.push(function() { FS.ignorePermissions = false });__ATEXIT__.push(function() { FS.quit() });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice; +__ATINIT__.unshift(function() { TTY.init() });__ATEXIT__.push(function() { TTY.shutdown() }); +if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); var NODEJS_PATH = require("path"); NODEFS.staticInit(); } +STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP); + +staticSealed = true; // seal the static portion of memory + +STACK_MAX = STACK_BASE + TOTAL_STACK; + +DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX); + +assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack"); + + var cttz_i8 = allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0], "i8", ALLOC_DYNAMIC); + + +function invoke_iiiii(index,a1,a2,a3,a4) { + try { + return Module["dynCall_iiiii"](index,a1,a2,a3,a4); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +function invoke_vi(index,a1) { + try { + Module["dynCall_vi"](index,a1); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +function invoke_vii(index,a1,a2) { + try { + Module["dynCall_vii"](index,a1,a2); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +function invoke_ii(index,a1) { + try { + return Module["dynCall_ii"](index,a1); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +function invoke_viii(index,a1,a2,a3) { + try { + Module["dynCall_viii"](index,a1,a2,a3); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +function invoke_iiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8) { + try { + return Module["dynCall_iiiiiiiii"](index,a1,a2,a3,a4,a5,a6,a7,a8); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +function invoke_iii(index,a1,a2) { + try { + return Module["dynCall_iii"](index,a1,a2); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +function invoke_iiiiii(index,a1,a2,a3,a4,a5) { + try { + return Module["dynCall_iiiiii"](index,a1,a2,a3,a4,a5); + } catch(e) { + if (typeof e !== 'number' && e !== 'longjmp') throw e; + asm["setThrew"](1, 0); + } +} + +Module.asmGlobalArg = { "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array, "NaN": NaN, "Infinity": Infinity }; +Module.asmLibraryArg = { "abort": abort, "assert": assert, "invoke_iiiii": invoke_iiiii, "invoke_vi": invoke_vi, "invoke_vii": invoke_vii, "invoke_ii": invoke_ii, "invoke_viii": invoke_viii, "invoke_iiiiiiiii": invoke_iiiiiiiii, "invoke_iii": invoke_iii, "invoke_iiiiii": invoke_iiiiii, "_sin": _sin, "_exp": _exp, "_cosf": _cosf, "___setErrNo": ___setErrNo, "_floor": _floor, "_fflush": _fflush, "_llvm_sqrt_f64": _llvm_sqrt_f64, "_llvm_pow_f64": _llvm_pow_f64, "_emscripten_set_main_loop_timing": _emscripten_set_main_loop_timing, "_fabsf": _fabsf, "_sbrk": _sbrk, "_atan": _atan, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_sysconf": _sysconf, "_sinf": _sinf, "_cos": _cos, "_log": _log, "_emscripten_set_main_loop": _emscripten_set_main_loop, "___errno_location": ___errno_location, "__exit": __exit, "_abort": _abort, "_time": _time, "_ceil": _ceil, "_exit": _exit, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "cttz_i8": cttz_i8, "_floor0_exportbundle": _floor0_exportbundle }; +// EMSCRIPTEN_START_ASM +var asm = (function(global, env, buffer) { + 'use asm'; + + var HEAP8 = new global.Int8Array(buffer); + var HEAP16 = new global.Int16Array(buffer); + var HEAP32 = new global.Int32Array(buffer); + var HEAPU8 = new global.Uint8Array(buffer); + var HEAPU16 = new global.Uint16Array(buffer); + var HEAPU32 = new global.Uint32Array(buffer); + var HEAPF32 = new global.Float32Array(buffer); + var HEAPF64 = new global.Float64Array(buffer); + + + var STACKTOP=env.STACKTOP|0; + var STACK_MAX=env.STACK_MAX|0; + var tempDoublePtr=env.tempDoublePtr|0; + var ABORT=env.ABORT|0; + var cttz_i8=env.cttz_i8|0; + var _floor0_exportbundle=env._floor0_exportbundle|0; + + var __THREW__ = 0; + var threwValue = 0; + var setjmpId = 0; + var undef = 0; + var nan = global.NaN, inf = global.Infinity; + var tempInt = 0, tempBigInt = 0, tempBigIntP = 0, tempBigIntS = 0, tempBigIntR = 0.0, tempBigIntI = 0, tempBigIntD = 0, tempValue = 0, tempDouble = 0.0; + + var tempRet0 = 0; + var tempRet1 = 0; + var tempRet2 = 0; + var tempRet3 = 0; + var tempRet4 = 0; + var tempRet5 = 0; + var tempRet6 = 0; + var tempRet7 = 0; + var tempRet8 = 0; + var tempRet9 = 0; + var Math_floor=global.Math.floor; + var Math_abs=global.Math.abs; + var Math_sqrt=global.Math.sqrt; + var Math_pow=global.Math.pow; + var Math_cos=global.Math.cos; + var Math_sin=global.Math.sin; + var Math_tan=global.Math.tan; + var Math_acos=global.Math.acos; + var Math_asin=global.Math.asin; + var Math_atan=global.Math.atan; + var Math_atan2=global.Math.atan2; + var Math_exp=global.Math.exp; + var Math_log=global.Math.log; + var Math_ceil=global.Math.ceil; + var Math_imul=global.Math.imul; + var Math_min=global.Math.min; + var Math_clz32=global.Math.clz32; + var abort=env.abort; + var assert=env.assert; + var invoke_iiiii=env.invoke_iiiii; + var invoke_vi=env.invoke_vi; + var invoke_vii=env.invoke_vii; + var invoke_ii=env.invoke_ii; + var invoke_viii=env.invoke_viii; + var invoke_iiiiiiiii=env.invoke_iiiiiiiii; + var invoke_iii=env.invoke_iii; + var invoke_iiiiii=env.invoke_iiiiii; + var _sin=env._sin; + var _exp=env._exp; + var _cosf=env._cosf; + var ___setErrNo=env.___setErrNo; + var _floor=env._floor; + var _fflush=env._fflush; + var _llvm_sqrt_f64=env._llvm_sqrt_f64; + var _llvm_pow_f64=env._llvm_pow_f64; + var _emscripten_set_main_loop_timing=env._emscripten_set_main_loop_timing; + var _fabsf=env._fabsf; + var _sbrk=env._sbrk; + var _atan=env._atan; + var _emscripten_memcpy_big=env._emscripten_memcpy_big; + var _sysconf=env._sysconf; + var _sinf=env._sinf; + var _cos=env._cos; + var _log=env._log; + var _emscripten_set_main_loop=env._emscripten_set_main_loop; + var ___errno_location=env.___errno_location; + var __exit=env.__exit; + var _abort=env._abort; + var _time=env._time; + var _ceil=env._ceil; + var _exit=env._exit; + var tempFloat = 0.0; + +// EMSCRIPTEN_START_FUNCS +function stackAlloc(size) { + size = size|0; + var ret = 0; + ret = STACKTOP; + STACKTOP = (STACKTOP + size)|0; + STACKTOP = (STACKTOP + 15)&-16; + + return ret|0; +} +function stackSave() { + return STACKTOP|0; +} +function stackRestore(top) { + top = top|0; + STACKTOP = top; +} +function establishStackSpace(stackBase, stackMax) { + stackBase = stackBase|0; + stackMax = stackMax|0; + STACKTOP = stackBase; + STACK_MAX = stackMax; +} + +function setThrew(threw, value) { + threw = threw|0; + value = value|0; + if ((__THREW__|0) == 0) { + __THREW__ = threw; + threwValue = value; + } +} +function copyTempFloat(ptr) { + ptr = ptr|0; + HEAP8[tempDoublePtr>>0] = HEAP8[ptr>>0]; + HEAP8[tempDoublePtr+1>>0] = HEAP8[ptr+1>>0]; + HEAP8[tempDoublePtr+2>>0] = HEAP8[ptr+2>>0]; + HEAP8[tempDoublePtr+3>>0] = HEAP8[ptr+3>>0]; +} +function copyTempDouble(ptr) { + ptr = ptr|0; + HEAP8[tempDoublePtr>>0] = HEAP8[ptr>>0]; + HEAP8[tempDoublePtr+1>>0] = HEAP8[ptr+1>>0]; + HEAP8[tempDoublePtr+2>>0] = HEAP8[ptr+2>>0]; + HEAP8[tempDoublePtr+3>>0] = HEAP8[ptr+3>>0]; + HEAP8[tempDoublePtr+4>>0] = HEAP8[ptr+4>>0]; + HEAP8[tempDoublePtr+5>>0] = HEAP8[ptr+5>>0]; + HEAP8[tempDoublePtr+6>>0] = HEAP8[ptr+6>>0]; + HEAP8[tempDoublePtr+7>>0] = HEAP8[ptr+7>>0]; +} + +function setTempRet0(value) { + value = value|0; + tempRet0 = value; +} +function getTempRet0() { + return tempRet0|0; +} + +function _oggpack_writeinit($b) { + $b = $b|0; + var $0 = 0, $1 = 0, $2 = 0, $3 = 0, label = 0, sp = 0; + sp = STACKTOP; + ;HEAP32[$b>>2]=0|0;HEAP32[$b+4>>2]=0|0;HEAP32[$b+8>>2]=0|0;HEAP32[$b+12>>2]=0|0; + $0 = (_malloc(256)|0); + $1 = ((($b)) + 8|0); + HEAP32[$1>>2] = $0; + $2 = ((($b)) + 12|0); + HEAP32[$2>>2] = $0; + HEAP8[$0>>0] = 0; + $3 = ((($b)) + 16|0); + HEAP32[$3>>2] = 256; + return; +} +function _oggpack_writetrunc($b,$bits) { + $b = $b|0; + $bits = $bits|0; + var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = $bits >> 3; + $1 = ((($b)) + 12|0); + $2 = HEAP32[$1>>2]|0; + $3 = ($2|0)==(0|0); + if ($3) { + return; + } + $4 = $0 << 3; + $5 = (($bits) - ($4))|0; + $6 = ((($b)) + 8|0); + $7 = HEAP32[$6>>2]|0; + $8 = (($7) + ($0)|0); + HEAP32[$1>>2] = $8; + $9 = ((($b)) + 4|0); + HEAP32[$9>>2] = $5; + HEAP32[$b>>2] = $0; + $10 = (8 + ($5<<2)|0); + $11 = HEAP32[$10>>2]|0; + $12 = HEAP8[$8>>0]|0; + $13 = $12&255; + $14 = $13 & $11; + $15 = $14&255; + HEAP8[$8>>0] = $15; + return; +} +function _oggpack_write($b,$value,$bits) { + $b = $b|0; + $value = $value|0; + $bits = $bits|0; + var $$phi$trans$insert = 0, $$pre = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0; + var $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0; + var $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0; + var $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($bits>>>0)>(32); + do { + if (!($0)) { + $1 = HEAP32[$b>>2]|0; + $2 = ((($b)) + 16|0); + $3 = HEAP32[$2>>2]|0; + $4 = (($3) + -4)|0; + $5 = ($1|0)<($4|0); + $$phi$trans$insert = ((($b)) + 12|0); + $$pre = HEAP32[$$phi$trans$insert>>2]|0; + if ($5) { + $25 = $$pre; + } else { + $6 = ($$pre|0)==(0|0); + if ($6) { + return; + } + $7 = ($3|0)>(2147483391); + if ($7) { + break; + } + $8 = ((($b)) + 8|0); + $9 = HEAP32[$8>>2]|0; + $10 = (($3) + 256)|0; + $11 = (_realloc($9,$10)|0); + $12 = ($11|0)==(0|0); + if ($12) { + break; + } + HEAP32[$8>>2] = $11; + $13 = HEAP32[$2>>2]|0; + $14 = (($13) + 256)|0; + HEAP32[$2>>2] = $14; + $15 = HEAP32[$b>>2]|0; + $16 = (($11) + ($15)|0); + HEAP32[$$phi$trans$insert>>2] = $16; + $25 = $16; + } + $17 = (8 + ($bits<<2)|0); + $18 = HEAP32[$17>>2]|0; + $19 = $18 & $value; + $20 = ((($b)) + 4|0); + $21 = HEAP32[$20>>2]|0; + $22 = (($21) + ($bits))|0; + $23 = $19 << $21; + $24 = HEAP8[$25>>0]|0; + $26 = $24&255; + $27 = $26 | $23; + $28 = $27&255; + HEAP8[$25>>0] = $28; + $29 = ($22|0)>(7); + do { + if ($29) { + $30 = HEAP32[$20>>2]|0; + $31 = (8 - ($30))|0; + $32 = $19 >>> $31; + $33 = $32&255; + $34 = HEAP32[$$phi$trans$insert>>2]|0; + $35 = ((($34)) + 1|0); + HEAP8[$35>>0] = $33; + $36 = ($22|0)>(15); + if ($36) { + $37 = HEAP32[$20>>2]|0; + $38 = (16 - ($37))|0; + $39 = $19 >>> $38; + $40 = $39&255; + $41 = HEAP32[$$phi$trans$insert>>2]|0; + $42 = ((($41)) + 2|0); + HEAP8[$42>>0] = $40; + $43 = ($22|0)>(23); + if ($43) { + $44 = HEAP32[$20>>2]|0; + $45 = (24 - ($44))|0; + $46 = $19 >>> $45; + $47 = $46&255; + $48 = HEAP32[$$phi$trans$insert>>2]|0; + $49 = ((($48)) + 3|0); + HEAP8[$49>>0] = $47; + $50 = ($22|0)>(31); + if ($50) { + $51 = HEAP32[$20>>2]|0; + $52 = ($51|0)==(0); + if ($52) { + $58 = HEAP32[$$phi$trans$insert>>2]|0; + $59 = ((($58)) + 4|0); + HEAP8[$59>>0] = 0; + break; + } else { + $53 = (32 - ($51))|0; + $54 = $19 >>> $53; + $55 = $54&255; + $56 = HEAP32[$$phi$trans$insert>>2]|0; + $57 = ((($56)) + 4|0); + HEAP8[$57>>0] = $55; + break; + } + } + } + } + } + } while(0); + $60 = (($22|0) / 8)&-1; + $61 = HEAP32[$b>>2]|0; + $62 = (($61) + ($60))|0; + HEAP32[$b>>2] = $62; + $63 = HEAP32[$$phi$trans$insert>>2]|0; + $64 = (($63) + ($60)|0); + HEAP32[$$phi$trans$insert>>2] = $64; + $65 = $22 & 7; + HEAP32[$20>>2] = $65; + return; + } + } while(0); + $66 = ((($b)) + 8|0); + $67 = HEAP32[$66>>2]|0; + $68 = ($67|0)==(0|0); + if (!($68)) { + _free($67); + } + ;HEAP32[$b>>2]=0|0;HEAP32[$b+4>>2]=0|0;HEAP32[$b+8>>2]=0|0;HEAP32[$b+12>>2]=0|0;HEAP32[$b+16>>2]=0|0; + return; +} +function _oggpack_writeclear($b) { + $b = $b|0; + var $0 = 0, $1 = 0, $2 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($b)) + 8|0); + $1 = HEAP32[$0>>2]|0; + $2 = ($1|0)==(0|0); + if (!($2)) { + _free($1); + } + ;HEAP32[$b>>2]=0|0;HEAP32[$b+4>>2]=0|0;HEAP32[$b+8>>2]=0|0;HEAP32[$b+12>>2]=0|0;HEAP32[$b+16>>2]=0|0; + return; +} +function _oggpack_reset($b) { + $b = $b|0; + var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($b)) + 12|0); + $1 = HEAP32[$0>>2]|0; + $2 = ($1|0)==(0|0); + if ($2) { + return; + } + $3 = ((($b)) + 8|0); + $4 = HEAP32[$3>>2]|0; + HEAP32[$0>>2] = $4; + $5 = $4; + HEAP8[$5>>0] = 0; + HEAP32[$b>>2] = 0; + $6 = ((($b)) + 4|0); + HEAP32[$6>>2] = 0; + return; +} +function _oggpack_look($b,$bits) { + $b = $b|0; + $bits = $bits|0; + var $$0 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0; + var $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0; + var $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, $ret$0 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($bits>>>0)>(32); + if ($0) { + $$0 = -1; + return ($$0|0); + } + $1 = (8 + ($bits<<2)|0); + $2 = HEAP32[$1>>2]|0; + $3 = ((($b)) + 4|0); + $4 = HEAP32[$3>>2]|0; + $5 = (($4) + ($bits))|0; + $6 = HEAP32[$b>>2]|0; + $7 = ((($b)) + 16|0); + $8 = HEAP32[$7>>2]|0; + $9 = (($8) + -4)|0; + $10 = ($6|0)<($9|0); + if (!($10)) { + $11 = (($5) + 7)|0; + $12 = $11 >> 3; + $13 = (($8) - ($12))|0; + $14 = ($6|0)>($13|0); + if ($14) { + $$0 = -1; + return ($$0|0); + } + $15 = ($5|0)==(0); + if ($15) { + $$0 = 0; + return ($$0|0); + } + } + $16 = ((($b)) + 12|0); + $17 = HEAP32[$16>>2]|0; + $18 = HEAP8[$17>>0]|0; + $19 = $18&255; + $20 = $19 >>> $4; + $21 = ($5|0)>(8); + if ($21) { + $22 = ((($17)) + 1|0); + $23 = HEAP8[$22>>0]|0; + $24 = $23&255; + $25 = (8 - ($4))|0; + $26 = $24 << $25; + $27 = $26 | $20; + $28 = ($5|0)>(16); + if ($28) { + $29 = ((($17)) + 2|0); + $30 = HEAP8[$29>>0]|0; + $31 = $30&255; + $32 = (16 - ($4))|0; + $33 = $31 << $32; + $34 = $33 | $27; + $35 = ($5|0)>(24); + if ($35) { + $36 = ((($17)) + 3|0); + $37 = HEAP8[$36>>0]|0; + $38 = $37&255; + $39 = (24 - ($4))|0; + $40 = $38 << $39; + $41 = $40 | $34; + $42 = ($5|0)<(33); + $43 = ($4|0)==(0); + $or$cond = $42 | $43; + if ($or$cond) { + $ret$0 = $41; + } else { + $44 = ((($17)) + 4|0); + $45 = HEAP8[$44>>0]|0; + $46 = $45&255; + $47 = (32 - ($4))|0; + $48 = $46 << $47; + $49 = $48 | $41; + $ret$0 = $49; + } + } else { + $ret$0 = $34; + } + } else { + $ret$0 = $27; + } + } else { + $ret$0 = $20; + } + $50 = $ret$0 & $2; + $$0 = $50; + return ($$0|0); +} +function _oggpack_adv($b,$bits) { + $b = $b|0; + $bits = $bits|0; + var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $storemerge = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($b)) + 4|0); + $1 = HEAP32[$0>>2]|0; + $2 = (($1) + ($bits))|0; + $3 = HEAP32[$b>>2]|0; + $4 = ((($b)) + 16|0); + $5 = HEAP32[$4>>2]|0; + $6 = (($2) + 7)|0; + $7 = $6 >> 3; + $8 = (($5) - ($7))|0; + $9 = ($3|0)>($8|0); + if ($9) { + $16 = ((($b)) + 12|0); + HEAP32[$16>>2] = 0; + HEAP32[$b>>2] = $5; + $storemerge = 1; + HEAP32[$0>>2] = $storemerge; + return; + } else { + $10 = (($2|0) / 8)&-1; + $11 = ((($b)) + 12|0); + $12 = HEAP32[$11>>2]|0; + $13 = (($12) + ($10)|0); + HEAP32[$11>>2] = $13; + $14 = (($3) + ($10))|0; + HEAP32[$b>>2] = $14; + $15 = $2 & 7; + $storemerge = $15; + HEAP32[$0>>2] = $storemerge; + return; + } +} +function _oggpack_read($b,$bits) { + $b = $b|0; + $bits = $bits|0; + var $$0 = 0, $$phi$trans$insert = 0, $$pre = 0, $$pre$phi3Z2D = 0, $$pre$phi5Z2D = 0, $$pre4 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0; + var $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0; + var $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $6 = 0; + var $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, $ret$0 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($bits>>>0)>(32); + do { + if ($0) { + $$phi$trans$insert = ((($b)) + 16|0); + $$pre = HEAP32[$$phi$trans$insert>>2]|0; + $$pre4 = ((($b)) + 4|0); + $$pre$phi3Z2D = $b;$$pre$phi5Z2D = $$pre4;$56 = $$pre; + } else { + $1 = (8 + ($bits<<2)|0); + $2 = HEAP32[$1>>2]|0; + $3 = ((($b)) + 4|0); + $4 = HEAP32[$3>>2]|0; + $5 = (($4) + ($bits))|0; + $6 = HEAP32[$b>>2]|0; + $7 = ((($b)) + 16|0); + $8 = HEAP32[$7>>2]|0; + $9 = (($8) + -4)|0; + $10 = ($6|0)<($9|0); + if (!($10)) { + $11 = (($5) + 7)|0; + $12 = $11 >> 3; + $13 = (($8) - ($12))|0; + $14 = ($6|0)>($13|0); + if ($14) { + $$pre$phi3Z2D = $b;$$pre$phi5Z2D = $3;$56 = $8; + break; + } + $15 = ($5|0)==(0); + if ($15) { + $$0 = 0; + return ($$0|0); + } + } + $16 = ((($b)) + 12|0); + $17 = HEAP32[$16>>2]|0; + $18 = HEAP8[$17>>0]|0; + $19 = $18&255; + $20 = $19 >>> $4; + $21 = ($5|0)>(8); + if ($21) { + $22 = ((($17)) + 1|0); + $23 = HEAP8[$22>>0]|0; + $24 = $23&255; + $25 = (8 - ($4))|0; + $26 = $24 << $25; + $27 = $26 | $20; + $28 = ($5|0)>(16); + if ($28) { + $29 = ((($17)) + 2|0); + $30 = HEAP8[$29>>0]|0; + $31 = $30&255; + $32 = (16 - ($4))|0; + $33 = $31 << $32; + $34 = $33 | $27; + $35 = ($5|0)>(24); + if ($35) { + $36 = ((($17)) + 3|0); + $37 = HEAP8[$36>>0]|0; + $38 = $37&255; + $39 = (24 - ($4))|0; + $40 = $38 << $39; + $41 = $40 | $34; + $42 = ($5|0)<(33); + $43 = ($4|0)==(0); + $or$cond = $42 | $43; + if ($or$cond) { + $ret$0 = $41; + } else { + $44 = ((($17)) + 4|0); + $45 = HEAP8[$44>>0]|0; + $46 = $45&255; + $47 = (32 - ($4))|0; + $48 = $46 << $47; + $49 = $48 | $41; + $ret$0 = $49; + } + } else { + $ret$0 = $34; + } + } else { + $ret$0 = $27; + } + } else { + $ret$0 = $20; + } + $50 = $ret$0 & $2; + $51 = (($5|0) / 8)&-1; + $52 = (($17) + ($51)|0); + HEAP32[$16>>2] = $52; + $53 = (($6) + ($51))|0; + HEAP32[$b>>2] = $53; + $54 = $5 & 7; + HEAP32[$3>>2] = $54; + $$0 = $50; + return ($$0|0); + } + } while(0); + $55 = ((($b)) + 12|0); + HEAP32[$55>>2] = 0; + HEAP32[$$pre$phi3Z2D>>2] = $56; + HEAP32[$$pre$phi5Z2D>>2] = 1; + $$0 = -1; + return ($$0|0); +} +function _oggpack_bytes($b) { + $b = $b|0; + var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = HEAP32[$b>>2]|0; + $1 = ((($b)) + 4|0); + $2 = HEAP32[$1>>2]|0; + $3 = (($2) + 7)|0; + $4 = (($3|0) / 8)&-1; + $5 = (($4) + ($0))|0; + return ($5|0); +} +function _oggpack_get_buffer($b) { + $b = $b|0; + var $0 = 0, $1 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($b)) + 8|0); + $1 = HEAP32[$0>>2]|0; + return ($1|0); +} +function _ogg_stream_init($os,$serialno) { + $os = $os|0; + $serialno = $serialno|0; + var $$0 = 0, $$pre = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $or$cond = 0, label = 0; + var sp = 0; + sp = STACKTOP; + $0 = ($os|0)==(0|0); + if ($0) { + $$0 = -1; + return ($$0|0); + } + _memset(($os|0),0,360)|0; + $1 = ((($os)) + 4|0); + HEAP32[$1>>2] = 16384; + $2 = ((($os)) + 24|0); + HEAP32[$2>>2] = 1024; + $3 = (_malloc(16384)|0); + HEAP32[$os>>2] = $3; + $4 = (_malloc(4096)|0); + $5 = ((($os)) + 16|0); + HEAP32[$5>>2] = $4; + $6 = (_malloc(8192)|0); + $7 = ((($os)) + 20|0); + HEAP32[$7>>2] = $6; + $8 = ($3|0)==(0|0); + do { + if ($8) { + $11 = $4; + } else { + $9 = ($4|0)==(0|0); + $10 = ($6|0)==(0|0); + $or$cond = $10 | $9; + if ($or$cond) { + _free($3); + $$pre = HEAP32[$5>>2]|0; + $11 = $$pre; + break; + } + $15 = ((($os)) + 336|0); + HEAP32[$15>>2] = $serialno; + $$0 = 0; + return ($$0|0); + } + } while(0); + $12 = ($11|0)==(0|0); + if (!($12)) { + _free($11); + } + $13 = HEAP32[$7>>2]|0; + $14 = ($13|0)==(0|0); + if (!($14)) { + _free($13); + } + _memset(($os|0),0,360)|0; + $$0 = -1; + return ($$0|0); +} +function _ogg_stream_clear($os) { + $os = $os|0; + var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($os|0)==(0|0); + if ($0) { + return 0; + } + $1 = HEAP32[$os>>2]|0; + $2 = ($1|0)==(0|0); + if (!($2)) { + _free($1); + } + $3 = ((($os)) + 16|0); + $4 = HEAP32[$3>>2]|0; + $5 = ($4|0)==(0|0); + if (!($5)) { + _free($4); + } + $6 = ((($os)) + 20|0); + $7 = HEAP32[$6>>2]|0; + $8 = ($7|0)==(0|0); + if (!($8)) { + _free($7); + } + _memset(($os|0),0,360)|0; + return 0; +} +function _ogg_page_checksum_set($og) { + $og = $og|0; + var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0; + var $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0; + var $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $crc_reg$0$lcssa = 0, $crc_reg$03 = 0, $crc_reg$1$lcssa = 0, $crc_reg$11 = 0, $i$04 = 0; + var $i$12 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($og|0)==(0|0); + if ($0) { + return; + } + $1 = HEAP32[$og>>2]|0; + $2 = ((($1)) + 22|0); + HEAP8[$2>>0] = 0; + $3 = HEAP32[$og>>2]|0; + $4 = ((($3)) + 23|0); + HEAP8[$4>>0] = 0; + $5 = HEAP32[$og>>2]|0; + $6 = ((($5)) + 24|0); + HEAP8[$6>>0] = 0; + $7 = HEAP32[$og>>2]|0; + $8 = ((($7)) + 25|0); + HEAP8[$8>>0] = 0; + $9 = ((($og)) + 4|0); + $10 = HEAP32[$9>>2]|0; + $11 = ($10|0)>(0); + if ($11) { + $12 = HEAP32[$og>>2]|0; + $crc_reg$03 = 0;$i$04 = 0; + while(1) { + $18 = $crc_reg$03 << 8; + $19 = $crc_reg$03 >>> 24; + $20 = (($12) + ($i$04)|0); + $21 = HEAP8[$20>>0]|0; + $22 = $21&255; + $23 = $22 ^ $19; + $24 = (144 + ($23<<2)|0); + $25 = HEAP32[$24>>2]|0; + $26 = $25 ^ $18; + $27 = (($i$04) + 1)|0; + $28 = ($27|0)<($10|0); + if ($28) { + $crc_reg$03 = $26;$i$04 = $27; + } else { + $crc_reg$0$lcssa = $26; + break; + } + } + } else { + $crc_reg$0$lcssa = 0; + } + $13 = ((($og)) + 12|0); + $14 = HEAP32[$13>>2]|0; + $15 = ($14|0)>(0); + if ($15) { + $16 = ((($og)) + 8|0); + $17 = HEAP32[$16>>2]|0; + $crc_reg$11 = $crc_reg$0$lcssa;$i$12 = 0; + while(1) { + $29 = $crc_reg$11 << 8; + $30 = $crc_reg$11 >>> 24; + $31 = (($17) + ($i$12)|0); + $32 = HEAP8[$31>>0]|0; + $33 = $32&255; + $34 = $33 ^ $30; + $35 = (144 + ($34<<2)|0); + $36 = HEAP32[$35>>2]|0; + $37 = $36 ^ $29; + $38 = (($i$12) + 1)|0; + $39 = ($38|0)<($14|0); + if ($39) { + $crc_reg$11 = $37;$i$12 = $38; + } else { + $crc_reg$1$lcssa = $37; + break; + } + } + } else { + $crc_reg$1$lcssa = $crc_reg$0$lcssa; + } + $40 = $crc_reg$1$lcssa&255; + $41 = HEAP32[$og>>2]|0; + $42 = ((($41)) + 22|0); + HEAP8[$42>>0] = $40; + $43 = $crc_reg$1$lcssa >>> 8; + $44 = $43&255; + $45 = HEAP32[$og>>2]|0; + $46 = ((($45)) + 23|0); + HEAP8[$46>>0] = $44; + $47 = $crc_reg$1$lcssa >>> 16; + $48 = $47&255; + $49 = HEAP32[$og>>2]|0; + $50 = ((($49)) + 24|0); + HEAP8[$50>>0] = $48; + $51 = $crc_reg$1$lcssa >>> 24; + $52 = $51&255; + $53 = HEAP32[$og>>2]|0; + $54 = ((($53)) + 25|0); + HEAP8[$54>>0] = $52; + return; +} +function _ogg_stream_iovecin($os,$iov,$count,$e_o_s,$0,$1) { + $os = $os|0; + $iov = $iov|0; + $count = $count|0; + $e_o_s = $e_o_s|0; + $0 = $0|0; + $1 = $1|0; + var $$$i2 = 0, $$0 = 0, $$phi$trans$insert21 = 0, $$pre = 0, $$pre$phi28Z2D = 0, $$pre22 = 0, $$pre27 = 0, $$pre30 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0; + var $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0; + var $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0; + var $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0; + var $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0; + var $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0; + var $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $bytes$0$lcssa = 0, $bytes$012 = 0, $exitcond = 0, $i$013 = 0, $i$110 = 0, $i$2$lcssa = 0, $i$29 = 0, $or$cond = 0, $smax = 0, label = 0, sp = 0; + sp = STACKTOP; + $2 = ($os|0)==(0|0); + if ($2) { + $$0 = -1; + return ($$0|0); + } + $3 = HEAP32[$os>>2]|0; + $4 = ($3|0)==(0|0); + if ($4) { + $$0 = -1; + return ($$0|0); + } + $5 = ($iov|0)==(0|0); + if ($5) { + $$0 = 0; + return ($$0|0); + } + $6 = ($count|0)>(0); + L10: do { + if ($6) { + $bytes$012 = 0;$i$013 = 0; + while(1) { + $7 = (((($iov) + ($i$013<<3)|0)) + 4|0); + $8 = HEAP32[$7>>2]|0; + $9 = ($8|0)<(0); + $10 = (2147483647 - ($8))|0; + $11 = ($bytes$012|0)>($10|0); + $or$cond = $9 | $11; + if ($or$cond) { + $$0 = -1; + break; + } + $12 = (($8) + ($bytes$012))|0; + $13 = (($i$013) + 1)|0; + $14 = ($13|0)<($count|0); + if ($14) { + $bytes$012 = $12;$i$013 = $13; + } else { + $bytes$0$lcssa = $12; + break L10; + } + } + return ($$0|0); + } else { + $bytes$0$lcssa = 0; + } + } while(0); + $15 = (($bytes$0$lcssa|0) / 255)&-1; + $16 = (($15) + 1)|0; + $17 = ((($os)) + 12|0); + $18 = HEAP32[$17>>2]|0; + $19 = ($18|0)==(0); + $$pre30 = ((($os)) + 8|0); + if (!($19)) { + $20 = HEAP32[$$pre30>>2]|0; + $21 = (($20) - ($18))|0; + HEAP32[$$pre30>>2] = $21; + $22 = ($20|0)==($18|0); + if (!($22)) { + $23 = (($3) + ($18)|0); + _memmove(($3|0),($23|0),($21|0))|0; + } + HEAP32[$17>>2] = 0; + } + $24 = ((($os)) + 4|0); + $25 = HEAP32[$24>>2]|0; + $26 = (($25) - ($bytes$0$lcssa))|0; + $27 = HEAP32[$$pre30>>2]|0; + $28 = ($26|0)>($27|0); + do { + if (!($28)) { + $29 = (2147483647 - ($bytes$0$lcssa))|0; + $30 = ($25|0)>($29|0); + if ($30) { + $31 = HEAP32[$os>>2]|0; + $32 = ($31|0)==(0|0); + if (!($32)) { + _free($31); + } + $33 = ((($os)) + 16|0); + $34 = HEAP32[$33>>2]|0; + $35 = ($34|0)==(0|0); + if (!($35)) { + _free($34); + } + $36 = ((($os)) + 20|0); + $37 = HEAP32[$36>>2]|0; + $38 = ($37|0)==(0|0); + if (!($38)) { + _free($37); + } + _memset(($os|0),0,360)|0; + $$0 = -1; + return ($$0|0); + } + $39 = (($25) + ($bytes$0$lcssa))|0; + $40 = ($39|0)<(2147482623); + $41 = (($39) + 1024)|0; + $$$i2 = $40 ? $41 : $39; + $42 = HEAP32[$os>>2]|0; + $43 = (_realloc($42,$$$i2)|0); + $44 = ($43|0)==(0|0); + if (!($44)) { + HEAP32[$24>>2] = $$$i2; + HEAP32[$os>>2] = $43; + break; + } + $45 = HEAP32[$os>>2]|0; + $46 = ($45|0)==(0|0); + if (!($46)) { + _free($45); + } + $47 = ((($os)) + 16|0); + $48 = HEAP32[$47>>2]|0; + $49 = ($48|0)==(0|0); + if (!($49)) { + _free($48); + } + $50 = ((($os)) + 20|0); + $51 = HEAP32[$50>>2]|0; + $52 = ($51|0)==(0|0); + if (!($52)) { + _free($51); + } + _memset(($os|0),0,360)|0; + $$0 = -1; + return ($$0|0); + } + } while(0); + $53 = (__os_lacing_expand($os,$16)|0); + $54 = ($53|0)==(0); + if (!($54)) { + $$0 = -1; + return ($$0|0); + } + if ($6) { + $$pre = HEAP32[$$pre30>>2]|0; + $66 = $$pre;$i$110 = 0; + while(1) { + $64 = HEAP32[$os>>2]|0; + $65 = (($64) + ($66)|0); + $67 = (($iov) + ($i$110<<3)|0); + $68 = HEAP32[$67>>2]|0; + $69 = (((($iov) + ($i$110<<3)|0)) + 4|0); + $70 = HEAP32[$69>>2]|0; + _memcpy(($65|0),($68|0),($70|0))|0; + $71 = HEAP32[$69>>2]|0; + $72 = HEAP32[$$pre30>>2]|0; + $73 = (($72) + ($71))|0; + HEAP32[$$pre30>>2] = $73; + $74 = (($i$110) + 1)|0; + $exitcond = ($74|0)==($count|0); + if ($exitcond) { + break; + } else { + $66 = $73;$i$110 = $74; + } + } + } + $55 = ($bytes$0$lcssa|0)>(254); + $56 = ((($os)) + 28|0); + $57 = HEAP32[$56>>2]|0; + $58 = ((($os)) + 16|0); + $59 = HEAP32[$58>>2]|0; + if ($55) { + $60 = ((($os)) + 352|0); + $61 = ((($os)) + 20|0); + $62 = HEAP32[$61>>2]|0; + $63 = ($15|0)>(1); + $i$29 = 0; + while(1) { + $75 = (($57) + ($i$29))|0; + $76 = (($59) + ($75<<2)|0); + HEAP32[$76>>2] = 255; + $77 = $60; + $78 = $77; + $79 = HEAP32[$78>>2]|0; + $80 = (($77) + 4)|0; + $81 = $80; + $82 = HEAP32[$81>>2]|0; + $83 = (($62) + ($75<<3)|0); + $84 = $83; + $85 = $84; + HEAP32[$85>>2] = $79; + $86 = (($84) + 4)|0; + $87 = $86; + HEAP32[$87>>2] = $82; + $88 = (($i$29) + 1)|0; + $89 = ($88|0)<($15|0); + if ($89) { + $i$29 = $88; + } else { + break; + } + } + $smax = $63 ? $15 : 1; + $$pre$phi28Z2D = $60;$94 = $62;$i$2$lcssa = $smax; + } else { + $$phi$trans$insert21 = ((($os)) + 20|0); + $$pre22 = HEAP32[$$phi$trans$insert21>>2]|0; + $$pre27 = ((($os)) + 352|0); + $$pre$phi28Z2D = $$pre27;$94 = $$pre22;$i$2$lcssa = 0; + } + $90 = (($bytes$0$lcssa|0) % 255)&-1; + $91 = (($57) + ($i$2$lcssa))|0; + $92 = (($59) + ($91<<2)|0); + HEAP32[$92>>2] = $90; + $93 = (($94) + ($91<<3)|0); + $95 = $93; + $96 = $95; + HEAP32[$96>>2] = $0; + $97 = (($95) + 4)|0; + $98 = $97; + HEAP32[$98>>2] = $1; + $99 = $$pre$phi28Z2D; + $100 = $99; + HEAP32[$100>>2] = $0; + $101 = (($99) + 4)|0; + $102 = $101; + HEAP32[$102>>2] = $1; + $103 = (($59) + ($57<<2)|0); + $104 = HEAP32[$103>>2]|0; + $105 = $104 | 256; + HEAP32[$103>>2] = $105; + $106 = (($57) + ($16))|0; + HEAP32[$56>>2] = $106; + $107 = ((($os)) + 344|0); + $108 = $107; + $109 = $108; + $110 = HEAP32[$109>>2]|0; + $111 = (($108) + 4)|0; + $112 = $111; + $113 = HEAP32[$112>>2]|0; + $114 = (_i64Add(($110|0),($113|0),1,0)|0); + $115 = tempRet0; + $116 = $107; + $117 = $116; + HEAP32[$117>>2] = $114; + $118 = (($116) + 4)|0; + $119 = $118; + HEAP32[$119>>2] = $115; + $120 = ($e_o_s|0)==(0); + if ($120) { + $$0 = 0; + return ($$0|0); + } + $121 = ((($os)) + 328|0); + HEAP32[$121>>2] = 1; + $$0 = 0; + return ($$0|0); +} +function _ogg_stream_packetin($os,$op) { + $os = $os|0; + $op = $op|0; + var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $iov = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16|0; + $iov = sp; + $0 = HEAP32[$op>>2]|0; + HEAP32[$iov>>2] = $0; + $1 = ((($op)) + 4|0); + $2 = HEAP32[$1>>2]|0; + $3 = ((($iov)) + 4|0); + HEAP32[$3>>2] = $2; + $4 = ((($op)) + 12|0); + $5 = HEAP32[$4>>2]|0; + $6 = ((($op)) + 16|0); + $7 = $6; + $8 = $7; + $9 = HEAP32[$8>>2]|0; + $10 = (($7) + 4)|0; + $11 = $10; + $12 = HEAP32[$11>>2]|0; + $13 = (_ogg_stream_iovecin($os,$iov,1,$5,$9,$12)|0); + STACKTOP = sp;return ($13|0); +} +function _ogg_stream_flush($os,$og) { + $os = $os|0; + $og = $og|0; + var $0 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = (_ogg_stream_flush_i($os,$og,1,4096)|0); + return ($0|0); +} +function _ogg_stream_pageout($os,$og) { + $os = $os|0; + $og = $og|0; + var $$0 = 0, $$phi$trans$insert = 0, $$pre = 0, $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $force$0 = 0, $phitmp = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($os|0)==(0|0); + if ($0) { + $$0 = 0; + return ($$0|0); + } + $1 = HEAP32[$os>>2]|0; + $2 = ($1|0)==(0|0); + if ($2) { + $$0 = 0; + return ($$0|0); + } + $3 = ((($os)) + 328|0); + $4 = HEAP32[$3>>2]|0; + $5 = ($4|0)==(0); + $$phi$trans$insert = ((($os)) + 28|0); + $$pre = HEAP32[$$phi$trans$insert>>2]|0; + $phitmp = ($$pre|0)==(0); + if ($5) { + if ($phitmp) { + $force$0 = 0; + } else { + $6 = ((($os)) + 332|0); + $7 = HEAP32[$6>>2]|0; + $8 = ($7|0)==(0); + if ($8) { + label = 7; + } else { + $force$0 = 0; + } + } + } else { + if ($phitmp) { + $force$0 = 0; + } else { + label = 7; + } + } + if ((label|0) == 7) { + $force$0 = 1; + } + $9 = (_ogg_stream_flush_i($os,$og,$force$0,4096)|0); + $$0 = $9; + return ($$0|0); +} +function __os_lacing_expand($os,$needed) { + $os = $os|0; + $needed = $needed|0; + var $$ = 0, $$0 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0; + var $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $5 = 0; + var $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($os)) + 24|0); + $1 = HEAP32[$0>>2]|0; + $2 = (($1) - ($needed))|0; + $3 = ((($os)) + 28|0); + $4 = HEAP32[$3>>2]|0; + $5 = ($2|0)>($4|0); + if ($5) { + $$0 = 0; + return ($$0|0); + } + $6 = (2147483647 - ($needed))|0; + $7 = ($1|0)>($6|0); + if ($7) { + $8 = HEAP32[$os>>2]|0; + $9 = ($8|0)==(0|0); + if (!($9)) { + _free($8); + } + $10 = ((($os)) + 16|0); + $11 = HEAP32[$10>>2]|0; + $12 = ($11|0)==(0|0); + if (!($12)) { + _free($11); + } + $13 = ((($os)) + 20|0); + $14 = HEAP32[$13>>2]|0; + $15 = ($14|0)==(0|0); + if (!($15)) { + _free($14); + } + _memset(($os|0),0,360)|0; + $$0 = -1; + return ($$0|0); + } + $16 = (($1) + ($needed))|0; + $17 = ($16|0)<(2147483615); + $18 = (($16) + 32)|0; + $$ = $17 ? $18 : $16; + $19 = ((($os)) + 16|0); + $20 = HEAP32[$19>>2]|0; + $21 = $$ << 2; + $22 = (_realloc($20,$21)|0); + $23 = ($22|0)==(0|0); + if ($23) { + $24 = HEAP32[$os>>2]|0; + $25 = ($24|0)==(0|0); + if (!($25)) { + _free($24); + } + $26 = HEAP32[$19>>2]|0; + $27 = ($26|0)==(0|0); + if (!($27)) { + _free($26); + } + $28 = ((($os)) + 20|0); + $29 = HEAP32[$28>>2]|0; + $30 = ($29|0)==(0|0); + if (!($30)) { + _free($29); + } + _memset(($os|0),0,360)|0; + $$0 = -1; + return ($$0|0); + } + HEAP32[$19>>2] = $22; + $31 = ((($os)) + 20|0); + $32 = HEAP32[$31>>2]|0; + $33 = $$ << 3; + $34 = (_realloc($32,$33)|0); + $35 = ($34|0)==(0|0); + if (!($35)) { + HEAP32[$31>>2] = $34; + HEAP32[$0>>2] = $$; + $$0 = 0; + return ($$0|0); + } + $36 = HEAP32[$os>>2]|0; + $37 = ($36|0)==(0|0); + if (!($37)) { + _free($36); + } + $38 = HEAP32[$19>>2]|0; + $39 = ($38|0)==(0|0); + if (!($39)) { + _free($38); + } + $40 = HEAP32[$31>>2]|0; + $41 = ($40|0)==(0|0); + if (!($41)) { + _free($40); + } + _memset(($os|0),0,360)|0; + $$0 = -1; + return ($$0|0); +} +function _ogg_stream_flush_i($os,$og,$force,$nfill) { + $os = $os|0; + $og = $og|0; + $force = $force|0; + $nfill = $nfill|0; + var $$ = 0, $$0 = 0, $$02 = 0, $$1 = 0, $$157 = 0, $$158 = 0, $$lcssa = 0, $$lobit = 0, $$pre = 0, $$pre38 = 0, $$pre39 = 0, $$pre40 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0; + var $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0; + var $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0; + var $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0; + var $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0; + var $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0; + var $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0; + var $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0; + var $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $acc$018 = 0, $bytes$0$lcssa = 0, $exitcond = 0, $exitcond160 = 0, $granule_pos$0$lcssa$off0 = 0, $granule_pos$0$lcssa$off16 = 0, $granule_pos$0$lcssa$off24 = 0, $granule_pos$0$lcssa$off32 = 0, $granule_pos$0$lcssa$off40 = 0, $granule_pos$0$lcssa$off48 = 0, $granule_pos$0$lcssa$off56 = 0, $granule_pos$0$lcssa$off8 = 0, $granule_pos$019$off0 = 0, $granule_pos$019$off16 = 0, $granule_pos$019$off24 = 0; + var $granule_pos$019$off32 = 0, $granule_pos$019$off40 = 0, $granule_pos$019$off48 = 0, $granule_pos$019$off56 = 0, $granule_pos$019$off8 = 0, $granule_pos$1$off0 = 0, $granule_pos$1$off16 = 0, $granule_pos$1$off24 = 0, $granule_pos$1$off32 = 0, $granule_pos$1$off40 = 0, $granule_pos$1$off48 = 0, $granule_pos$1$off56 = 0, $granule_pos$1$off8 = 0, $granule_pos$2$off0 = 0, $granule_pos$2$off16 = 0, $granule_pos$2$off24 = 0, $granule_pos$2$off32 = 0, $granule_pos$2$off40 = 0, $granule_pos$2$off48 = 0, $granule_pos$2$off56 = 0; + var $granule_pos$2$off8 = 0, $granule_pos$27$off0 = 0, $granule_pos$27$off16 = 0, $granule_pos$27$off24 = 0, $granule_pos$27$off32 = 0, $granule_pos$27$off40 = 0, $granule_pos$27$off48 = 0, $granule_pos$27$off56 = 0, $granule_pos$27$off8 = 0, $or$cond = 0, $or$cond159 = 0, $or$cond4 = 0, $packet_just_done$021 = 0, $packet_just_done$1 = 0, $packets_done$020 = 0, $packets_done$1 = 0, $storemerge = 0, $vals$0 = 0, $vals$1$lcssa = 0, $vals$117 = 0; + var $vals$2 = 0, $vals$26 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($os)) + 28|0); + $1 = HEAP32[$0>>2]|0; + $2 = ($1|0)>(255); + $$ = $2 ? 255 : $1; + $3 = ($os|0)==(0|0); + if ($3) { + $$0 = 0; + return ($$0|0); + } + $4 = HEAP32[$os>>2]|0; + $5 = ($4|0)==(0|0); + $6 = ($$|0)==(0); + $or$cond4 = $6 | $5; + if ($or$cond4) { + $$0 = 0; + return ($$0|0); + } + $7 = ((($os)) + 332|0); + $8 = HEAP32[$7>>2]|0; + $9 = ($8|0)==(0); + L7: do { + if ($9) { + $13 = ((($os)) + 16|0); + $vals$0 = 0; + while(1) { + $14 = ($vals$0|0)<($$|0); + if (!($14)) { + $$1 = $force;$granule_pos$2$off0 = 0;$granule_pos$2$off16 = 0;$granule_pos$2$off24 = 0;$granule_pos$2$off32 = 0;$granule_pos$2$off40 = 0;$granule_pos$2$off48 = 0;$granule_pos$2$off56 = 0;$granule_pos$2$off8 = 0;$vals$2 = $vals$0; + label = 14; + break L7; + } + $15 = HEAP32[$13>>2]|0; + $16 = (($15) + ($vals$0<<2)|0); + $17 = HEAP32[$16>>2]|0; + $18 = $17 & 255; + $19 = ($18|0)==(255); + $20 = (($vals$0) + 1)|0; + if ($19) { + $vals$0 = $20; + } else { + $$1 = $force;$granule_pos$2$off0 = 0;$granule_pos$2$off16 = 0;$granule_pos$2$off24 = 0;$granule_pos$2$off32 = 0;$granule_pos$2$off40 = 0;$granule_pos$2$off48 = 0;$granule_pos$2$off56 = 0;$granule_pos$2$off8 = 0;$vals$2 = $20; + label = 14; + break; + } + } + } else { + $10 = ($$|0)>(0); + if ($10) { + $11 = ((($os)) + 16|0); + $12 = ((($os)) + 20|0); + $acc$018 = 0;$granule_pos$019$off0 = -1;$granule_pos$019$off16 = -1;$granule_pos$019$off24 = -1;$granule_pos$019$off32 = -1;$granule_pos$019$off40 = -1;$granule_pos$019$off48 = -1;$granule_pos$019$off56 = -1;$granule_pos$019$off8 = -1;$packet_just_done$021 = 0;$packets_done$020 = 0;$vals$117 = 0; + while(1) { + $21 = ($acc$018|0)>($nfill|0); + $22 = ($packet_just_done$021|0)>(3); + $or$cond = $21 & $22; + if ($or$cond) { + $$02 = 1;$granule_pos$0$lcssa$off0 = $granule_pos$019$off0;$granule_pos$0$lcssa$off16 = $granule_pos$019$off16;$granule_pos$0$lcssa$off24 = $granule_pos$019$off24;$granule_pos$0$lcssa$off32 = $granule_pos$019$off32;$granule_pos$0$lcssa$off40 = $granule_pos$019$off40;$granule_pos$0$lcssa$off48 = $granule_pos$019$off48;$granule_pos$0$lcssa$off56 = $granule_pos$019$off56;$granule_pos$0$lcssa$off8 = $granule_pos$019$off8;$vals$1$lcssa = $vals$117; + break; + } + $23 = HEAP32[$11>>2]|0; + $24 = (($23) + ($vals$117<<2)|0); + $25 = HEAP32[$24>>2]|0; + $26 = $25 & 255; + $27 = (($26) + ($acc$018))|0; + $28 = ($26|0)==(255); + if ($28) { + $granule_pos$1$off0 = $granule_pos$019$off0;$granule_pos$1$off16 = $granule_pos$019$off16;$granule_pos$1$off24 = $granule_pos$019$off24;$granule_pos$1$off32 = $granule_pos$019$off32;$granule_pos$1$off40 = $granule_pos$019$off40;$granule_pos$1$off48 = $granule_pos$019$off48;$granule_pos$1$off56 = $granule_pos$019$off56;$granule_pos$1$off8 = $granule_pos$019$off8;$packet_just_done$1 = 0;$packets_done$1 = $packets_done$020; + } else { + $29 = HEAP32[$12>>2]|0; + $30 = (($29) + ($vals$117<<3)|0); + $31 = $30; + $32 = $31; + $33 = HEAP32[$32>>2]|0; + $34 = (($31) + 4)|0; + $35 = $34; + $36 = HEAP32[$35>>2]|0; + $37 = (($packets_done$020) + 1)|0; + $38 = $33&255; + $39 = (_bitshift64Lshr(($33|0),($36|0),8)|0); + $40 = tempRet0; + $41 = $39&255; + $42 = (_bitshift64Lshr(($33|0),($36|0),16)|0); + $43 = tempRet0; + $44 = $42&255; + $45 = (_bitshift64Lshr(($33|0),($36|0),24)|0); + $46 = tempRet0; + $47 = $45&255; + $48 = $36&255; + $49 = (_bitshift64Lshr(($33|0),($36|0),40)|0); + $50 = tempRet0; + $51 = $49&255; + $52 = (_bitshift64Lshr(($33|0),($36|0),48)|0); + $53 = tempRet0; + $54 = $52&255; + $55 = (_bitshift64Lshr(($33|0),($36|0),56)|0); + $56 = tempRet0; + $57 = $55&255; + $granule_pos$1$off0 = $38;$granule_pos$1$off16 = $44;$granule_pos$1$off24 = $47;$granule_pos$1$off32 = $48;$granule_pos$1$off40 = $51;$granule_pos$1$off48 = $54;$granule_pos$1$off56 = $57;$granule_pos$1$off8 = $41;$packet_just_done$1 = $37;$packets_done$1 = $37; + } + $58 = (($vals$117) + 1)|0; + $59 = ($58|0)<($$|0); + if ($59) { + $acc$018 = $27;$granule_pos$019$off0 = $granule_pos$1$off0;$granule_pos$019$off16 = $granule_pos$1$off16;$granule_pos$019$off24 = $granule_pos$1$off24;$granule_pos$019$off32 = $granule_pos$1$off32;$granule_pos$019$off40 = $granule_pos$1$off40;$granule_pos$019$off48 = $granule_pos$1$off48;$granule_pos$019$off56 = $granule_pos$1$off56;$granule_pos$019$off8 = $granule_pos$1$off8;$packet_just_done$021 = $packet_just_done$1;$packets_done$020 = $packets_done$1;$vals$117 = $58; + } else { + $$02 = $force;$granule_pos$0$lcssa$off0 = $granule_pos$1$off0;$granule_pos$0$lcssa$off16 = $granule_pos$1$off16;$granule_pos$0$lcssa$off24 = $granule_pos$1$off24;$granule_pos$0$lcssa$off32 = $granule_pos$1$off32;$granule_pos$0$lcssa$off40 = $granule_pos$1$off40;$granule_pos$0$lcssa$off48 = $granule_pos$1$off48;$granule_pos$0$lcssa$off56 = $granule_pos$1$off56;$granule_pos$0$lcssa$off8 = $granule_pos$1$off8;$vals$1$lcssa = $58; + break; + } + } + $60 = ($vals$1$lcssa|0)==(255); + if ($60) { + $granule_pos$27$off0 = $granule_pos$0$lcssa$off0;$granule_pos$27$off16 = $granule_pos$0$lcssa$off16;$granule_pos$27$off24 = $granule_pos$0$lcssa$off24;$granule_pos$27$off32 = $granule_pos$0$lcssa$off32;$granule_pos$27$off40 = $granule_pos$0$lcssa$off40;$granule_pos$27$off48 = $granule_pos$0$lcssa$off48;$granule_pos$27$off56 = $granule_pos$0$lcssa$off56;$granule_pos$27$off8 = $granule_pos$0$lcssa$off8;$vals$26 = 255; + } else { + $$1 = $$02;$granule_pos$2$off0 = $granule_pos$0$lcssa$off0;$granule_pos$2$off16 = $granule_pos$0$lcssa$off16;$granule_pos$2$off24 = $granule_pos$0$lcssa$off24;$granule_pos$2$off32 = $granule_pos$0$lcssa$off32;$granule_pos$2$off40 = $granule_pos$0$lcssa$off40;$granule_pos$2$off48 = $granule_pos$0$lcssa$off48;$granule_pos$2$off56 = $granule_pos$0$lcssa$off56;$granule_pos$2$off8 = $granule_pos$0$lcssa$off8;$vals$2 = $vals$1$lcssa; + label = 14; + } + } else { + $$1 = $force;$granule_pos$2$off0 = -1;$granule_pos$2$off16 = -1;$granule_pos$2$off24 = -1;$granule_pos$2$off32 = -1;$granule_pos$2$off40 = -1;$granule_pos$2$off48 = -1;$granule_pos$2$off56 = -1;$granule_pos$2$off8 = -1;$vals$2 = 0; + label = 14; + } + } + } while(0); + if ((label|0) == 14) { + $61 = ($$1|0)==(0); + if ($61) { + $$0 = 0; + return ($$0|0); + } else { + $granule_pos$27$off0 = $granule_pos$2$off0;$granule_pos$27$off16 = $granule_pos$2$off16;$granule_pos$27$off24 = $granule_pos$2$off24;$granule_pos$27$off32 = $granule_pos$2$off32;$granule_pos$27$off40 = $granule_pos$2$off40;$granule_pos$27$off48 = $granule_pos$2$off48;$granule_pos$27$off56 = $granule_pos$2$off56;$granule_pos$27$off8 = $granule_pos$2$off8;$vals$26 = $vals$2; + } + } + $62 = ((($os)) + 40|0); + HEAP8[$62>>0]=1399285583&255;HEAP8[$62+1>>0]=(1399285583>>8)&255;HEAP8[$62+2>>0]=(1399285583>>16)&255;HEAP8[$62+3>>0]=1399285583>>24; + $63 = ((($os)) + 44|0); + HEAP8[$63>>0] = 0; + $64 = ((($os)) + 45|0); + HEAP8[$64>>0] = 0; + $65 = ((($os)) + 16|0); + $66 = HEAP32[$65>>2]|0; + $67 = HEAP32[$66>>2]|0; + $68 = $67 >>> 8; + $$lobit = $68 & 1; + $69 = $$lobit ^ 1; + $70 = $69 | 2; + $$157 = $9 ? $70 : $69; + $storemerge = $$157&255; + HEAP8[$64>>0] = $storemerge; + $71 = ((($os)) + 328|0); + $72 = HEAP32[$71>>2]|0; + $73 = ($72|0)!=(0); + $74 = ($1|0)==($vals$26|0); + $or$cond159 = $73 & $74; + if ($or$cond159) { + $$158 = $9 ? $70 : $69; + $75 = $$158 | 4; + $76 = $75&255; + HEAP8[$64>>0] = $76; + } + HEAP32[$7>>2] = 1; + $77 = ((($os)) + 46|0); + HEAP8[$77>>0] = $granule_pos$27$off0; + $78 = ((($os)) + 47|0); + HEAP8[$78>>0] = $granule_pos$27$off8; + $79 = ((($os)) + 48|0); + HEAP8[$79>>0] = $granule_pos$27$off16; + $80 = ((($os)) + 49|0); + HEAP8[$80>>0] = $granule_pos$27$off24; + $81 = ((($os)) + 50|0); + HEAP8[$81>>0] = $granule_pos$27$off32; + $82 = ((($os)) + 51|0); + HEAP8[$82>>0] = $granule_pos$27$off40; + $83 = ((($os)) + 52|0); + HEAP8[$83>>0] = $granule_pos$27$off48; + $84 = ((($os)) + 53|0); + HEAP8[$84>>0] = $granule_pos$27$off56; + $85 = ((($os)) + 336|0); + $86 = HEAP32[$85>>2]|0; + $87 = $86&255; + $88 = ((($os)) + 54|0); + HEAP8[$88>>0] = $87; + $89 = $86 >>> 8; + $90 = $89&255; + $91 = ((($os)) + 55|0); + HEAP8[$91>>0] = $90; + $92 = $86 >>> 16; + $93 = $92&255; + $94 = ((($os)) + 56|0); + HEAP8[$94>>0] = $93; + $95 = $86 >>> 24; + $96 = $95&255; + $97 = ((($os)) + 57|0); + HEAP8[$97>>0] = $96; + $98 = ((($os)) + 340|0); + $99 = HEAP32[$98>>2]|0; + $100 = ($99|0)==(-1); + if ($100) { + HEAP32[$98>>2] = 0; + $102 = 0; + } else { + $102 = $99; + } + $101 = (($102) + 1)|0; + HEAP32[$98>>2] = $101; + $103 = $102&255; + $104 = ((($os)) + 58|0); + HEAP8[$104>>0] = $103; + $105 = $102 >>> 8; + $106 = $105&255; + $107 = ((($os)) + 59|0); + HEAP8[$107>>0] = $106; + $108 = $102 >>> 16; + $109 = $108&255; + $110 = ((($os)) + 60|0); + HEAP8[$110>>0] = $109; + $111 = $102 >>> 24; + $112 = $111&255; + $113 = ((($os)) + 61|0); + HEAP8[$113>>0] = $112; + $114 = ((($os)) + 62|0); + $115 = $vals$26&255; + $116 = ((($os)) + 66|0); + HEAP8[$114>>0]=0&255;HEAP8[$114+1>>0]=(0>>8)&255;HEAP8[$114+2>>0]=(0>>16)&255;HEAP8[$114+3>>0]=0>>24; + HEAP8[$116>>0] = $115; + $117 = ($vals$26|0)>(0); + if ($117) { + $118 = HEAP32[$66>>2]|0; + $119 = $118&255; + $120 = ((($os)) + 67|0); + HEAP8[$120>>0] = $119; + $121 = $118 & 255; + $exitcond160 = ($vals$26|0)==(1); + if ($exitcond160) { + $$lcssa = $121; + } else { + $123 = 1;$130 = $121; + while(1) { + $$pre = HEAP32[$65>>2]|0; + $122 = (($$pre) + ($123<<2)|0); + $124 = HEAP32[$122>>2]|0; + $125 = $124&255; + $126 = (($123) + 27)|0; + $127 = (((($os)) + 40|0) + ($126)|0); + HEAP8[$127>>0] = $125; + $128 = $124 & 255; + $129 = (($128) + ($130))|0; + $131 = (($123) + 1)|0; + $exitcond = ($131|0)==($vals$26|0); + if ($exitcond) { + $$lcssa = $129; + break; + } else { + $123 = $131;$130 = $129; + } + } + } + $$pre38 = HEAP32[$os>>2]|0; + $$pre39 = HEAP32[$0>>2]|0; + $$pre40 = HEAP32[$65>>2]|0; + $138 = $$pre38;$142 = $$pre39;$144 = $$pre40;$bytes$0$lcssa = $$lcssa; + } else { + $138 = $4;$142 = $1;$144 = $66;$bytes$0$lcssa = 0; + } + HEAP32[$og>>2] = $62; + $132 = (($vals$26) + 27)|0; + $133 = ((($os)) + 324|0); + HEAP32[$133>>2] = $132; + $134 = ((($og)) + 4|0); + HEAP32[$134>>2] = $132; + $135 = ((($os)) + 12|0); + $136 = HEAP32[$135>>2]|0; + $137 = (($138) + ($136)|0); + $139 = ((($og)) + 8|0); + HEAP32[$139>>2] = $137; + $140 = ((($og)) + 12|0); + HEAP32[$140>>2] = $bytes$0$lcssa; + $141 = (($142) - ($vals$26))|0; + HEAP32[$0>>2] = $141; + $143 = (($144) + ($vals$26<<2)|0); + $145 = $141 << 2; + _memmove(($144|0),($143|0),($145|0))|0; + $146 = ((($os)) + 20|0); + $147 = HEAP32[$146>>2]|0; + $148 = (($147) + ($vals$26<<3)|0); + $149 = HEAP32[$0>>2]|0; + $150 = $149 << 3; + _memmove(($147|0),($148|0),($150|0))|0; + $151 = HEAP32[$135>>2]|0; + $152 = (($151) + ($bytes$0$lcssa))|0; + HEAP32[$135>>2] = $152; + _ogg_page_checksum_set($og); + $$0 = 1; + return ($$0|0); +} +function _vorbis_analysis($vb,$op) { + $vb = $vb|0; + $op = $op|0; + var $$0 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0; + var $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0; + var $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0; + var $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $8 = 0, $9 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($vb)) + 104|0); + $1 = HEAP32[$0>>2]|0; + $2 = ((($vb)) + 88|0); + $3 = ((($1)) + 12|0); + ;HEAP32[$2>>2]=0|0;HEAP32[$2+4>>2]=0|0;HEAP32[$2+8>>2]=0|0;HEAP32[$2+12>>2]=0|0; + $4 = HEAP32[$3>>2]|0; + _oggpack_reset($4); + $5 = ((($1)) + 16|0); + $6 = HEAP32[$5>>2]|0; + _oggpack_reset($6); + $7 = ((($1)) + 20|0); + $8 = HEAP32[$7>>2]|0; + _oggpack_reset($8); + $9 = ((($1)) + 24|0); + $10 = HEAP32[$9>>2]|0; + _oggpack_reset($10); + $11 = ((($1)) + 28|0); + $12 = HEAP32[$11>>2]|0; + _oggpack_reset($12); + $13 = ((($1)) + 32|0); + $14 = HEAP32[$13>>2]|0; + _oggpack_reset($14); + $15 = ((($1)) + 36|0); + $16 = HEAP32[$15>>2]|0; + _oggpack_reset($16); + $17 = ((($1)) + 40|0); + $18 = HEAP32[$17>>2]|0; + _oggpack_reset($18); + $19 = ((($1)) + 44|0); + $20 = HEAP32[$19>>2]|0; + _oggpack_reset($20); + $21 = ((($1)) + 48|0); + $22 = HEAP32[$21>>2]|0; + _oggpack_reset($22); + $23 = ((($1)) + 52|0); + $24 = HEAP32[$23>>2]|0; + _oggpack_reset($24); + $25 = ((($1)) + 56|0); + $26 = HEAP32[$25>>2]|0; + _oggpack_reset($26); + $27 = ((($1)) + 60|0); + $28 = HEAP32[$27>>2]|0; + _oggpack_reset($28); + $29 = ((($1)) + 64|0); + $30 = HEAP32[$29>>2]|0; + _oggpack_reset($30); + $31 = ((($1)) + 68|0); + $32 = HEAP32[$31>>2]|0; + _oggpack_reset($32); + $33 = HEAP32[25664>>2]|0; + $34 = ((($33)) + 12|0); + $35 = HEAP32[$34>>2]|0; + $36 = (FUNCTION_TABLE_ii[$35 & 1]($vb)|0); + $37 = ($36|0)==(0); + if (!($37)) { + $$0 = $36; + return ($$0|0); + } + $38 = ($op|0)==(0|0); + if ($38) { + $$0 = 0; + return ($$0|0); + } + $39 = (_vorbis_bitrate_managed($vb)|0); + $40 = ($39|0)==(0); + if (!($40)) { + $$0 = -131; + return ($$0|0); + } + $41 = ((($vb)) + 4|0); + $42 = (_oggpack_get_buffer($41)|0); + HEAP32[$op>>2] = $42; + $43 = (_oggpack_bytes($41)|0); + $44 = ((($op)) + 4|0); + HEAP32[$44>>2] = $43; + $45 = ((($op)) + 8|0); + HEAP32[$45>>2] = 0; + $46 = ((($vb)) + 44|0); + $47 = HEAP32[$46>>2]|0; + $48 = ((($op)) + 12|0); + HEAP32[$48>>2] = $47; + $49 = ((($vb)) + 48|0); + $50 = $49; + $51 = $50; + $52 = HEAP32[$51>>2]|0; + $53 = (($50) + 4)|0; + $54 = $53; + $55 = HEAP32[$54>>2]|0; + $56 = ((($op)) + 16|0); + $57 = $56; + $58 = $57; + HEAP32[$58>>2] = $52; + $59 = (($57) + 4)|0; + $60 = $59; + HEAP32[$60>>2] = $55; + $61 = ((($vb)) + 56|0); + $62 = $61; + $63 = $62; + $64 = HEAP32[$63>>2]|0; + $65 = (($62) + 4)|0; + $66 = $65; + $67 = HEAP32[$66>>2]|0; + $68 = ((($op)) + 24|0); + $69 = $68; + $70 = $69; + HEAP32[$70>>2] = $64; + $71 = (($69) + 4)|0; + $72 = $71; + HEAP32[$72>>2] = $67; + $$0 = 0; + return ($$0|0); +} +function _vorbis_bitrate_init($vi,$bm) { + $vi = $vi|0; + $bm = $bm|0; + var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0.0, $16 = 0.0, $17 = 0.0, $18 = 0.0, $19 = 0.0, $2 = 0, $20 = 0.0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0.0, $26 = 0.0; + var $27 = 0.0, $28 = 0.0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0.0, $34 = 0.0, $35 = 0.0, $36 = 0.0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0.0, $41 = 0, $42 = 0.0, $43 = 0.0, $44 = 0; + var $45 = 0, $46 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0; + sp = STACKTOP; + $0 = ((($vi)) + 28|0); + $1 = HEAP32[$0>>2]|0; + dest=$bm; stop=dest+48|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0)); + $2 = ((($1)) + 3372|0); + $3 = HEAP32[$2>>2]|0; + $4 = ($3|0)>(0); + if (!($4)) { + return; + } + $5 = ((($vi)) + 8|0); + $6 = HEAP32[$5>>2]|0; + $7 = HEAP32[$1>>2]|0; + $8 = $7 >> 1; + $9 = ((($1)) + 4|0); + $10 = HEAP32[$9>>2]|0; + $11 = (($10|0) / ($7|0))&-1; + $12 = ((($bm)) + 24|0); + HEAP32[$12>>2] = $11; + HEAP32[$bm>>2] = 1; + $13 = ((($1)) + 3360|0); + $14 = HEAP32[$13>>2]|0; + $15 = (+($14|0)); + $16 = (+($8|0)); + $17 = $15 * $16; + $18 = (+($6|0)); + $19 = $17 / $18; + $20 = (+_rint($19)); + $21 = (~~(($20))); + $22 = ((($bm)) + 12|0); + HEAP32[$22>>2] = $21; + $23 = ((($1)) + 3364|0); + $24 = HEAP32[$23>>2]|0; + $25 = (+($24|0)); + $26 = $25 * $16; + $27 = $26 / $18; + $28 = (+_rint($27)); + $29 = (~~(($28))); + $30 = ((($bm)) + 16|0); + HEAP32[$30>>2] = $29; + $31 = ((($1)) + 3368|0); + $32 = HEAP32[$31>>2]|0; + $33 = (+($32|0)); + $34 = $33 * $16; + $35 = $34 / $18; + $36 = (+_rint($35)); + $37 = (~~(($36))); + $38 = ((($bm)) + 20|0); + HEAP32[$38>>2] = $37; + $39 = ((($bm)) + 32|0); + HEAPF64[$39>>3] = 7.0; + $40 = (+($3|0)); + $41 = ((($1)) + 3376|0); + $42 = +HEAPF64[$41>>3]; + $43 = $40 * $42; + $44 = (~~(($43))); + $45 = ((($bm)) + 8|0); + HEAP32[$45>>2] = $44; + $46 = ((($bm)) + 4|0); + HEAP32[$46>>2] = $44; + return; +} +function _vorbis_bitrate_clear($bm) { + $bm = $bm|0; + var dest = 0, label = 0, sp = 0, stop = 0; + sp = STACKTOP; + dest=$bm; stop=dest+48|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0)); + return; +} +function _vorbis_bitrate_managed($vb) { + $vb = $vb|0; + var $$0 = 0, $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $not$ = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($vb)) + 64|0); + $1 = HEAP32[$0>>2]|0; + $2 = ((($1)) + 104|0); + $3 = HEAP32[$2>>2]|0; + $4 = ((($3)) + 80|0); + $5 = HEAP32[$4>>2]|0; + $not$ = ($5|0)!=(0); + $$0 = $not$&1; + return ($$0|0); +} +function _vorbis_bitrate_addblock($vb) { + $vb = $vb|0; + var $$ = 0, $$0 = 0, $$9 = 0, $$choice$7 = 0, $$lcssa = 0, $$pre = 0, $$pre68 = 0, $$pre69 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0.0, $101 = 0, $102 = 0, $103 = 0.0, $104 = 0.0, $105 = 0.0, $106 = 0, $107 = 0, $108 = 0.0; + var $109 = 0.0, $11 = 0.0, $110 = 0.0, $111 = 0.0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0.0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0; + var $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0; + var $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0; + var $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0; + var $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0; + var $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0; + var $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0; + var $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0.0, $37 = 0, $38 = 0.0, $39 = 0.0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0; + var $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0.0, $55 = 0.0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0; + var $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0; + var $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0.0, $96 = 0.0, $97 = 0.0, $98 = 0.0, $99 = 0.0, $choice$03980 = 0; + var $choice$2 = 0, $choice$3 = 0, $choice$430 = 0, $choice$5 = 0, $choice$622 = 0, $choice$7 = 0, $minsize$020 = 0, $or$cond = 0, $or$cond37 = 0, $or$cond4 = 0, $or$cond444 = 0, $or$cond5 = 0, $or$cond6 = 0, $or$cond7 = 0, $or$cond8 = 0, $slew$0 = 0.0, $slew$1 = 0.0, $this_bits$2 = 0, $this_bits$329 = 0, $this_bits$4 = 0; + var $this_bits$521 = 0, $this_bits$6 = 0, $this_bits$7 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($vb)) + 104|0); + $1 = HEAP32[$0>>2]|0; + $2 = ((($vb)) + 64|0); + $3 = HEAP32[$2>>2]|0; + $4 = ((($3)) + 104|0); + $5 = HEAP32[$4>>2]|0; + $6 = ((($3)) + 4|0); + $7 = HEAP32[$6>>2]|0; + $8 = ((($7)) + 28|0); + $9 = HEAP32[$8>>2]|0; + $10 = ((($5)) + 112|0); + $11 = +HEAPF64[$10>>3]; + $12 = (+_rint($11)); + $13 = (~~(($12))); + $14 = (((($1)) + 12|0) + ($13<<2)|0); + $15 = HEAP32[$14>>2]|0; + $16 = (_oggpack_bytes($15)|0); + $17 = $16 << 3; + $18 = ((($vb)) + 28|0); + $19 = HEAP32[$18>>2]|0; + $20 = ($19|0)==(0); + $21 = ((($5)) + 96|0); + $22 = HEAP32[$21>>2]|0; + if ($20) { + $23 = ((($5)) + 100|0); + $24 = HEAP32[$23>>2]|0; + $120 = $22;$137 = $23;$140 = $24; + } else { + $25 = ((($5)) + 104|0); + $26 = HEAP32[$25>>2]|0; + $27 = ((($5)) + 100|0); + $28 = HEAP32[$27>>2]|0; + $29 = Math_imul($26, $22)|0; + $30 = Math_imul($26, $28)|0; + $120 = $29;$137 = $27;$140 = $30; + } + $31 = (($9) + ($19<<2)|0); + $32 = HEAP32[$31>>2]|0; + $33 = $32 >> 1; + $34 = ((($9)) + 3372|0); + $35 = HEAP32[$34>>2]|0; + $36 = (+($35|0)); + $37 = ((($9)) + 3376|0); + $38 = +HEAPF64[$37>>3]; + $39 = $36 * $38; + $40 = (~~(($39))); + $41 = ((($5)) + 80|0); + $42 = HEAP32[$41>>2]|0; + $43 = ($42|0)==(0); + $44 = ((($5)) + 120|0); + if ($43) { + $45 = HEAP32[$44>>2]|0; + $46 = ($45|0)==(0|0); + if (!($46)) { + $$0 = -1; + return ($$0|0); + } + HEAP32[$44>>2] = $vb; + $$0 = 0; + return ($$0|0); + } + HEAP32[$44>>2] = $vb; + $47 = ((($5)) + 92|0); + $48 = HEAP32[$47>>2]|0; + $49 = ($48|0)>(0); + if ($49) { + if ($20) { + $59 = $48; + } else { + $50 = ((($5)) + 104|0); + $51 = HEAP32[$50>>2]|0; + $52 = Math_imul($51, $48)|0; + $59 = $52; + } + $53 = ((($9)) + 3384|0); + $54 = +HEAPF64[$53>>3]; + $55 = 15.0 / $54; + $56 = ((($5)) + 84|0); + $57 = HEAP32[$56>>2]|0; + $58 = (($17) - ($59))|0; + $60 = (($57) + ($58))|0; + $61 = ($60|0)>($40|0); + L17: do { + if ($61) { + $62 = ($13|0)>(0); + $63 = ($17|0)>($59|0); + $or$cond37 = $63 & $62; + if ($or$cond37) { + $64 = (($17) - ($59))|0; + $65 = (($64) + ($57))|0; + $66 = ($65|0)>($40|0); + if ($66) { + $choice$03980 = $13; + while(1) { + $67 = (($choice$03980) + -1)|0; + $68 = (((($1)) + 12|0) + ($67<<2)|0); + $69 = HEAP32[$68>>2]|0; + $70 = (_oggpack_bytes($69)|0); + $71 = $70 << 3; + $72 = ($choice$03980|0)>(1); + $73 = ($71|0)>($59|0); + $or$cond = $73 & $72; + if (!($or$cond)) { + $choice$2 = $67; + break L17; + } + $$pre68 = HEAP32[$56>>2]|0; + $74 = (($71) - ($59))|0; + $75 = (($74) + ($$pre68))|0; + $76 = ($75|0)>($40|0); + if ($76) { + $choice$03980 = $67; + } else { + $choice$2 = $67; + break; + } + } + } else { + $choice$2 = $13; + } + } else { + $choice$2 = $13; + } + } else { + $77 = ($60|0)<($40|0); + if ($77) { + $78 = (($13) + 1)|0; + $79 = ($78|0)<(15); + $80 = ($17|0)<($59|0); + $or$cond444 = $80 & $79; + if ($or$cond444) { + $81 = (($17) - ($59))|0; + $82 = (($81) + ($57))|0; + $83 = ($82|0)<($40|0); + if ($83) { + $85 = $78; + while(1) { + $84 = (((($1)) + 12|0) + ($85<<2)|0); + $86 = HEAP32[$84>>2]|0; + $87 = (_oggpack_bytes($86)|0); + $88 = $87 << 3; + $89 = (($85) + 1)|0; + $90 = ($89|0)<(15); + $91 = ($88|0)<($59|0); + $or$cond4 = $91 & $90; + if (!($or$cond4)) { + $choice$2 = $85; + break L17; + } + $$pre = HEAP32[$56>>2]|0; + $92 = (($88) - ($59))|0; + $93 = (($92) + ($$pre))|0; + $94 = ($93|0)<($40|0); + if ($94) { + $85 = $89; + } else { + $choice$2 = $85; + break; + } + } + } else { + $choice$2 = $13; + } + } else { + $choice$2 = $13; + } + } else { + $choice$2 = $13; + } + } + } while(0); + $95 = (+($choice$2|0)); + $96 = +HEAPF64[$10>>3]; + $97 = $95 - $96; + $98 = (+_rint($97)); + $99 = (+($33|0)); + $100 = $98 / $99; + $101 = ((($7)) + 8|0); + $102 = HEAP32[$101>>2]|0; + $103 = (+($102|0)); + $104 = $103 * $100; + $105 = -$55; + $106 = $104 < $105; + $slew$0 = $106 ? $105 : $104; + $107 = $slew$0 > $55; + $slew$1 = $107 ? $55 : $slew$0; + $108 = $slew$1 / $103; + $109 = $108 * $99; + $110 = $109 + $96; + HEAPF64[$10>>3] = $110; + $111 = (+_rint($110)); + $112 = (~~(($111))); + $113 = (((($1)) + 12|0) + ($112<<2)|0); + $114 = HEAP32[$113>>2]|0; + $115 = (_oggpack_bytes($114)|0); + $116 = $115 << 3; + $$pre69 = HEAP32[$21>>2]|0; + $117 = $$pre69;$choice$3 = $112;$this_bits$2 = $116; + } else { + $117 = $22;$choice$3 = $13;$this_bits$2 = $17; + } + $118 = ($117|0)>(0); + $119 = ($this_bits$2|0)<($120|0); + $or$cond5 = $119 & $118; + L31: do { + if ($or$cond5) { + $121 = ((($5)) + 88|0); + $122 = HEAP32[$121>>2]|0; + $123 = (($this_bits$2) - ($120))|0; + $124 = (($123) + ($122))|0; + $125 = ($124|0)<(0); + if ($125) { + $choice$430 = $choice$3;$this_bits$329 = $this_bits$2; + while(1) { + $126 = (($choice$430) + 1)|0; + $127 = ($choice$430|0)>(13); + if ($127) { + $choice$5 = $126;$this_bits$4 = $this_bits$329; + break L31; + } + $128 = (((($1)) + 12|0) + ($126<<2)|0); + $129 = HEAP32[$128>>2]|0; + $130 = (_oggpack_bytes($129)|0); + $131 = $130 << 3; + $132 = HEAP32[$121>>2]|0; + $133 = (($131) - ($120))|0; + $134 = (($133) + ($132))|0; + $135 = ($134|0)<(0); + if ($135) { + $choice$430 = $126;$this_bits$329 = $131; + } else { + $choice$5 = $126;$this_bits$4 = $131; + break; + } + } + } else { + $choice$5 = $choice$3;$this_bits$4 = $this_bits$2; + } + } else { + $choice$5 = $choice$3;$this_bits$4 = $this_bits$2; + } + } while(0); + $136 = HEAP32[$137>>2]|0; + $138 = ($136|0)>(0); + $139 = ($this_bits$4|0)>($140|0); + $or$cond6 = $139 & $138; + L37: do { + if ($or$cond6) { + $141 = ((($5)) + 88|0); + $142 = HEAP32[$141>>2]|0; + $143 = (($this_bits$4) - ($140))|0; + $144 = (($143) + ($142))|0; + $145 = HEAP32[$34>>2]|0; + $146 = ($144|0)>($145|0); + if ($146) { + $choice$622 = $choice$5;$this_bits$521 = $this_bits$4; + while(1) { + $147 = (($choice$622) + -1)|0; + $148 = ($choice$622|0)<(1); + if ($148) { + $choice$7 = $147;$this_bits$6 = $this_bits$521; + break L37; + } + $149 = (((($1)) + 12|0) + ($147<<2)|0); + $150 = HEAP32[$149>>2]|0; + $151 = (_oggpack_bytes($150)|0); + $152 = $151 << 3; + $153 = HEAP32[$141>>2]|0; + $154 = (($152) - ($140))|0; + $155 = (($154) + ($153))|0; + $156 = HEAP32[$34>>2]|0; + $157 = ($155|0)>($156|0); + if ($157) { + $choice$622 = $147;$this_bits$521 = $152; + } else { + $choice$7 = $147;$this_bits$6 = $152; + break; + } + } + } else { + $choice$7 = $choice$5;$this_bits$6 = $this_bits$4; + } + } else { + $choice$7 = $choice$5;$this_bits$6 = $this_bits$4; + } + } while(0); + $158 = ($choice$7|0)<(0); + if ($158) { + $159 = HEAP32[$34>>2]|0; + $160 = ((($5)) + 88|0); + $161 = HEAP32[$160>>2]|0; + $162 = (($159) + ($140))|0; + $163 = (($162) - ($161))|0; + $164 = (($163|0) / 8)&-1; + $165 = ((($5)) + 124|0); + HEAP32[$165>>2] = 0; + $166 = ((($1)) + 12|0); + $167 = HEAP32[$166>>2]|0; + $168 = (_oggpack_bytes($167)|0); + $169 = ($168|0)>($164|0); + if ($169) { + $170 = HEAP32[$166>>2]|0; + $171 = $164 << 3; + _oggpack_writetrunc($170,$171); + $172 = HEAP32[$166>>2]|0; + $173 = (_oggpack_bytes($172)|0); + $174 = $173 << 3; + $this_bits$7 = $174; + } else { + $this_bits$7 = $this_bits$6; + } + } else { + $175 = ((($5)) + 88|0); + $176 = HEAP32[$175>>2]|0; + $177 = (($120) + 7)|0; + $178 = (($177) - ($176))|0; + $179 = (($178|0) / 8)&-1; + $180 = ($choice$7|0)>(14); + $$choice$7 = $180 ? 14 : $choice$7; + $181 = ((($5)) + 124|0); + HEAP32[$181>>2] = $$choice$7; + $182 = (((($1)) + 12|0) + ($$choice$7<<2)|0); + $183 = HEAP32[$182>>2]|0; + $184 = (_oggpack_bytes($183)|0); + $185 = (($179) - ($184))|0; + $186 = ($185|0)>(0); + $187 = HEAP32[$182>>2]|0; + if ($186) { + $189 = $187;$minsize$020 = $185; + while(1) { + $188 = (($minsize$020) + -1)|0; + _oggpack_write($189,0,8); + $190 = ($minsize$020|0)>(1); + $191 = HEAP32[$182>>2]|0; + if ($190) { + $189 = $191;$minsize$020 = $188; + } else { + $$lcssa = $191; + break; + } + } + } else { + $$lcssa = $187; + } + $192 = (_oggpack_bytes($$lcssa)|0); + $193 = $192 << 3; + $this_bits$7 = $193; + } + $194 = HEAP32[$21>>2]|0; + $195 = ($194|0)>(0); + if ($195) { + label = 37; + } else { + $196 = HEAP32[$137>>2]|0; + $197 = ($196|0)>(0); + if ($197) { + label = 37; + } + } + do { + if ((label|0) == 37) { + $198 = ($140|0)>(0); + $199 = ($this_bits$7|0)>($140|0); + $or$cond7 = $198 & $199; + if ($or$cond7) { + $200 = (($this_bits$7) - ($140))|0; + $201 = ((($5)) + 88|0); + $202 = HEAP32[$201>>2]|0; + $203 = (($200) + ($202))|0; + HEAP32[$201>>2] = $203; + break; + } + $204 = ($120|0)>(0); + $205 = ($this_bits$7|0)<($120|0); + $or$cond8 = $204 & $205; + if ($or$cond8) { + $206 = (($this_bits$7) - ($120))|0; + $207 = ((($5)) + 88|0); + $208 = HEAP32[$207>>2]|0; + $209 = (($206) + ($208))|0; + HEAP32[$207>>2] = $209; + break; + } + $210 = ((($5)) + 88|0); + $211 = HEAP32[$210>>2]|0; + $212 = ($211|0)>($40|0); + if ($212) { + if ($198) { + $213 = (($this_bits$7) - ($140))|0; + $214 = (($211) + ($213))|0; + $215 = ($214|0)<($40|0); + $$ = $215 ? $40 : $214; + HEAP32[$210>>2] = $$; + break; + } else { + HEAP32[$210>>2] = $40; + break; + } + } else { + if ($204) { + $216 = (($this_bits$7) - ($120))|0; + $217 = (($211) + ($216))|0; + $218 = ($217|0)>($40|0); + $$9 = $218 ? $40 : $217; + HEAP32[$210>>2] = $$9; + break; + } else { + HEAP32[$210>>2] = $40; + break; + } + } + } + } while(0); + $219 = HEAP32[$47>>2]|0; + $220 = ($219|0)>(0); + if (!($220)) { + $$0 = 0; + return ($$0|0); + } + $221 = HEAP32[$18>>2]|0; + $222 = ($221|0)==(0); + if ($222) { + $227 = $219; + } else { + $223 = ((($5)) + 104|0); + $224 = HEAP32[$223>>2]|0; + $225 = Math_imul($224, $219)|0; + $227 = $225; + } + $226 = (($this_bits$7) - ($227))|0; + $228 = ((($5)) + 84|0); + $229 = HEAP32[$228>>2]|0; + $230 = (($226) + ($229))|0; + HEAP32[$228>>2] = $230; + $$0 = 0; + return ($$0|0); +} +function _vorbis_bitrate_flushpacket($vd,$op) { + $vd = $vd|0; + $op = $op|0; + var $$0 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0; + var $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0; + var $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $choice$0 = 0, $not$$i = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($vd)) + 104|0); + $1 = HEAP32[$0>>2]|0; + $2 = ((($1)) + 120|0); + $3 = HEAP32[$2>>2]|0; + $4 = ($3|0)==(0|0); + if ($4) { + $$0 = 0; + return ($$0|0); + } + $5 = ($op|0)==(0|0); + if (!($5)) { + $6 = ((($3)) + 104|0); + $7 = HEAP32[$6>>2]|0; + $8 = ((($3)) + 64|0); + $9 = HEAP32[$8>>2]|0; + $10 = ((($9)) + 104|0); + $11 = HEAP32[$10>>2]|0; + $12 = ((($11)) + 80|0); + $13 = HEAP32[$12>>2]|0; + $not$$i = ($13|0)==(0); + if ($not$$i) { + $choice$0 = 7; + } else { + $14 = ((($1)) + 124|0); + $15 = HEAP32[$14>>2]|0; + $choice$0 = $15; + } + $16 = (((($7)) + 12|0) + ($choice$0<<2)|0); + $17 = HEAP32[$16>>2]|0; + $18 = (_oggpack_get_buffer($17)|0); + HEAP32[$op>>2] = $18; + $19 = HEAP32[$16>>2]|0; + $20 = (_oggpack_bytes($19)|0); + $21 = ((($op)) + 4|0); + HEAP32[$21>>2] = $20; + $22 = ((($op)) + 8|0); + HEAP32[$22>>2] = 0; + $23 = ((($3)) + 44|0); + $24 = HEAP32[$23>>2]|0; + $25 = ((($op)) + 12|0); + HEAP32[$25>>2] = $24; + $26 = ((($3)) + 48|0); + $27 = $26; + $28 = $27; + $29 = HEAP32[$28>>2]|0; + $30 = (($27) + 4)|0; + $31 = $30; + $32 = HEAP32[$31>>2]|0; + $33 = ((($op)) + 16|0); + $34 = $33; + $35 = $34; + HEAP32[$35>>2] = $29; + $36 = (($34) + 4)|0; + $37 = $36; + HEAP32[$37>>2] = $32; + $38 = ((($3)) + 56|0); + $39 = $38; + $40 = $39; + $41 = HEAP32[$40>>2]|0; + $42 = (($39) + 4)|0; + $43 = $42; + $44 = HEAP32[$43>>2]|0; + $45 = ((($op)) + 24|0); + $46 = $45; + $47 = $46; + HEAP32[$47>>2] = $41; + $48 = (($46) + 4)|0; + $49 = $48; + HEAP32[$49>>2] = $44; + } + HEAP32[$2>>2] = 0; + $$0 = 1; + return ($$0|0); +} +function _vorbis_block_init($v,$vb) { + $v = $v|0; + $vb = $vb|0; + var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $exitcond = 0, $i$01 = 0, dest = 0, label = 0, sp = 0; + var stop = 0; + sp = STACKTOP; + dest=$vb; stop=dest+112|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0)); + $0 = ((($vb)) + 64|0); + HEAP32[$0>>2] = $v; + $1 = ((($vb)) + 76|0); + HEAP32[$1>>2] = 0; + $2 = ((($vb)) + 68|0); + HEAP32[$2>>2] = 0; + $3 = HEAP32[$v>>2]|0; + $4 = ($3|0)==(0); + if ($4) { + return 0; + } + $5 = (_calloc(1,72)|0); + $6 = ((($vb)) + 104|0); + HEAP32[$6>>2] = $5; + $7 = ((($5)) + 4|0); + HEAPF32[$7>>2] = -9999.0; + $8 = ((($vb)) + 4|0); + $9 = ((($5)) + 12|0); + $10 = ((($5)) + 40|0); + $i$01 = 0; + while(1) { + $11 = ($i$01|0)==(7); + if ($11) { + HEAP32[$10>>2] = $8; + _oggpack_writeinit($8); + $i$01 = 8; + continue; + } else { + $12 = (_calloc(1,20)|0); + $13 = (($9) + ($i$01<<2)|0); + HEAP32[$13>>2] = $12; + _oggpack_writeinit($12); + $14 = (($i$01) + 1)|0; + $exitcond = ($14|0)==(15); + if ($exitcond) { + break; + } else { + $i$01 = $14; + continue; + } + } + } + return 0; +} +function __vorbis_block_alloc($vb,$bytes) { + $vb = $vb|0; + $bytes = $bytes|0; + var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $3 = 0, $4 = 0, $5 = 0; + var $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = (($bytes) + 7)|0; + $1 = $0 & -8; + $2 = ((($vb)) + 72|0); + $3 = HEAP32[$2>>2]|0; + $4 = (($3) + ($1))|0; + $5 = ((($vb)) + 76|0); + $6 = HEAP32[$5>>2]|0; + $7 = ($4|0)>($6|0); + $8 = ((($vb)) + 68|0); + $9 = HEAP32[$8>>2]|0; + if (!($7)) { + $21 = $9;$22 = $3; + $20 = (($21) + ($22)|0); + $23 = (($22) + ($1))|0; + HEAP32[$2>>2] = $23; + return ($20|0); + } + $10 = ($9|0)==(0|0); + if (!($10)) { + $11 = $9; + $12 = (_malloc(8)|0); + $13 = ((($vb)) + 80|0); + $14 = HEAP32[$13>>2]|0; + $15 = (($14) + ($3))|0; + HEAP32[$13>>2] = $15; + $16 = ((($vb)) + 84|0); + $17 = HEAP32[$16>>2]|0; + $18 = ((($12)) + 4|0); + HEAP32[$18>>2] = $17; + HEAP32[$12>>2] = $11; + HEAP32[$16>>2] = $12; + } + HEAP32[$5>>2] = $1; + $19 = (_malloc($1)|0); + HEAP32[$8>>2] = $19; + HEAP32[$2>>2] = 0; + $21 = $19;$22 = 0; + $20 = (($21) + ($22)|0); + $23 = (($22) + ($1))|0; + HEAP32[$2>>2] = $23; + return ($20|0); +} +function _vorbis_block_clear($vb) { + $vb = $vb|0; + var $$phi$trans$insert = 0, $$pre = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0; + var $25 = 0, $26 = 0, $27 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $exitcond = 0, $i$01 = 0, $reap$01$i = 0, dest = 0, label = 0, sp = 0, stop = 0; + sp = STACKTOP; + $0 = ((($vb)) + 104|0); + $1 = HEAP32[$0>>2]|0; + $2 = ((($vb)) + 84|0); + $3 = HEAP32[$2>>2]|0; + $4 = ($3|0)==(0|0); + if (!($4)) { + $reap$01$i = $3; + while(1) { + $5 = ((($reap$01$i)) + 4|0); + $6 = HEAP32[$5>>2]|0; + $7 = HEAP32[$reap$01$i>>2]|0; + _free($7); + _free($reap$01$i); + $8 = ($6|0)==(0|0); + if ($8) { + break; + } else { + $reap$01$i = $6; + } + } + } + $9 = ((($vb)) + 80|0); + $10 = HEAP32[$9>>2]|0; + $11 = ($10|0)==(0); + $$phi$trans$insert = ((($vb)) + 68|0); + $$pre = HEAP32[$$phi$trans$insert>>2]|0; + if ($11) { + $20 = $$pre; + } else { + $12 = ((($vb)) + 76|0); + $13 = HEAP32[$12>>2]|0; + $14 = (($13) + ($10))|0; + $15 = (_realloc($$pre,$14)|0); + HEAP32[$$phi$trans$insert>>2] = $15; + $16 = HEAP32[$9>>2]|0; + $17 = HEAP32[$12>>2]|0; + $18 = (($17) + ($16))|0; + HEAP32[$12>>2] = $18; + HEAP32[$9>>2] = 0; + $20 = $15; + } + $19 = ((($vb)) + 72|0); + HEAP32[$19>>2] = 0; + HEAP32[$2>>2] = 0; + $21 = ($20|0)==(0|0); + if (!($21)) { + _free($20); + } + $22 = ($1|0)==(0|0); + if ($22) { + dest=$vb; stop=dest+112|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0)); + return 0; + } else { + $i$01 = 0; + } + while(1) { + $23 = (((($1)) + 12|0) + ($i$01<<2)|0); + $24 = HEAP32[$23>>2]|0; + _oggpack_writeclear($24); + $25 = ($i$01|0)==(7); + if ($25) { + $i$01 = 8; + continue; + } + $26 = HEAP32[$23>>2]|0; + _free($26); + $27 = (($i$01) + 1)|0; + $exitcond = ($27|0)==(15); + if ($exitcond) { + break; + } else { + $i$01 = $27; + } + } + _free($1); + dest=$vb; stop=dest+112|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0)); + return 0; +} +function _vorbis_analysis_init($v,$vi) { + $v = $v|0; + $vi = $vi|0; + var $$0 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = (__vds_shared_init($v,$vi,1)|0); + $1 = ($0|0)==(0); + if (!($1)) { + $$0 = 1; + return ($$0|0); + } + $2 = ((($v)) + 104|0); + $3 = HEAP32[$2>>2]|0; + $4 = (__vp_global_look($vi)|0); + $5 = ((($3)) + 60|0); + HEAP32[$5>>2] = $4; + $6 = (_calloc(1,180)|0); + HEAP32[$3>>2] = $6; + __ve_envelope_init($6,$vi); + $7 = ((($3)) + 80|0); + _vorbis_bitrate_init($vi,$7); + $8 = ((($v)) + 64|0); + $9 = $8; + $10 = $9; + HEAP32[$10>>2] = 3; + $11 = (($9) + 4)|0; + $12 = $11; + HEAP32[$12>>2] = 0; + $$0 = 0; + return ($$0|0); +} +function _vorbis_dsp_clear($v) { + $v = $v|0; + var $$pre = 0, $$pre14$pre = 0, $$pre16 = 0, $$pre18$pre = 0, $$pre20 = 0, $$pre22$pre = 0, $$pre24 = 0, $$pre25 = 0, $$pre27$pre = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0; + var $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0; + var $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0; + var $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0; + var $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0; + var $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0; + var $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0; + var $98 = 0, $99 = 0, $i$37 = 0, dest = 0, label = 0, sp = 0, stop = 0; + sp = STACKTOP; + $0 = ($v|0)==(0|0); + if ($0) { + return; + } + $1 = ((($v)) + 4|0); + $2 = HEAP32[$1>>2]|0; + $3 = ($2|0)!=(0|0); + if ($3) { + $4 = ((($2)) + 28|0); + $5 = HEAP32[$4>>2]|0; + $29 = $5; + } else { + $29 = 0; + } + $6 = ((($v)) + 104|0); + $7 = HEAP32[$6>>2]|0; + $8 = ($7|0)!=(0|0); + if ($8) { + $9 = HEAP32[$7>>2]|0; + $10 = ($9|0)==(0|0); + if (!($10)) { + __ve_envelope_clear($9); + $11 = HEAP32[$7>>2]|0; + _free($11); + } + $12 = ((($7)) + 12|0); + $13 = HEAP32[$12>>2]|0; + $14 = ($13|0)==(0|0); + if (!($14)) { + $15 = HEAP32[$13>>2]|0; + _mdct_clear($15); + $16 = HEAP32[$12>>2]|0; + $17 = HEAP32[$16>>2]|0; + _free($17); + $18 = HEAP32[$12>>2]|0; + _free($18); + } + $19 = ((($7)) + 16|0); + $20 = HEAP32[$19>>2]|0; + $21 = ($20|0)==(0|0); + if (!($21)) { + $22 = HEAP32[$20>>2]|0; + _mdct_clear($22); + $23 = HEAP32[$19>>2]|0; + $24 = HEAP32[$23>>2]|0; + _free($24); + $25 = HEAP32[$19>>2]|0; + _free($25); + } + $26 = ((($7)) + 48|0); + $27 = HEAP32[$26>>2]|0; + $28 = ($27|0)==(0|0); + if (!($28)) { + $30 = ($29|0)==(0|0); + if ($30) { + $55 = $27; + } else { + $31 = ((($29)) + 16|0); + $32 = HEAP32[$31>>2]|0; + $33 = ($32|0)>(0); + if ($33) { + $34 = ((($29)) + 800|0); + $35 = HEAP32[$34>>2]|0; + $36 = (25640 + ($35<<2)|0); + $37 = HEAP32[$36>>2]|0; + $38 = ((($37)) + 16|0); + $39 = HEAP32[$38>>2]|0; + $40 = HEAP32[$27>>2]|0; + FUNCTION_TABLE_vi[$39 & 7]($40); + $41 = HEAP32[$31>>2]|0; + $42 = ($41|0)>(1); + if ($42) { + $44 = 1; + while(1) { + $$pre = HEAP32[$26>>2]|0; + $43 = (($34) + ($44<<2)|0); + $45 = HEAP32[$43>>2]|0; + $46 = (25640 + ($45<<2)|0); + $47 = HEAP32[$46>>2]|0; + $48 = ((($47)) + 16|0); + $49 = HEAP32[$48>>2]|0; + $50 = (($$pre) + ($44<<2)|0); + $51 = HEAP32[$50>>2]|0; + FUNCTION_TABLE_vi[$49 & 7]($51); + $52 = (($44) + 1)|0; + $53 = HEAP32[$31>>2]|0; + $54 = ($52|0)<($53|0); + if ($54) { + $44 = $52; + } else { + break; + } + } + } + $$pre14$pre = HEAP32[$26>>2]|0; + $55 = $$pre14$pre; + } else { + $55 = $27; + } + } + _free($55); + } + $56 = ((($7)) + 52|0); + $57 = HEAP32[$56>>2]|0; + $58 = ($57|0)==(0|0); + if (!($58)) { + $59 = ($29|0)==(0|0); + if ($59) { + $84 = $57; + } else { + $60 = ((($29)) + 20|0); + $61 = HEAP32[$60>>2]|0; + $62 = ($61|0)>(0); + if ($62) { + $63 = ((($29)) + 1312|0); + $64 = HEAP32[$63>>2]|0; + $65 = (25648 + ($64<<2)|0); + $66 = HEAP32[$65>>2]|0; + $67 = ((($66)) + 16|0); + $68 = HEAP32[$67>>2]|0; + $69 = HEAP32[$57>>2]|0; + FUNCTION_TABLE_vi[$68 & 7]($69); + $70 = HEAP32[$60>>2]|0; + $71 = ($70|0)>(1); + if ($71) { + $73 = 1; + while(1) { + $$pre16 = HEAP32[$56>>2]|0; + $72 = (($63) + ($73<<2)|0); + $74 = HEAP32[$72>>2]|0; + $75 = (25648 + ($74<<2)|0); + $76 = HEAP32[$75>>2]|0; + $77 = ((($76)) + 16|0); + $78 = HEAP32[$77>>2]|0; + $79 = (($$pre16) + ($73<<2)|0); + $80 = HEAP32[$79>>2]|0; + FUNCTION_TABLE_vi[$78 & 7]($80); + $81 = (($73) + 1)|0; + $82 = HEAP32[$60>>2]|0; + $83 = ($81|0)<($82|0); + if ($83) { + $73 = $81; + } else { + break; + } + } + } + $$pre18$pre = HEAP32[$56>>2]|0; + $84 = $$pre18$pre; + } else { + $84 = $57; + } + } + _free($84); + } + $85 = ((($7)) + 56|0); + $86 = HEAP32[$85>>2]|0; + $87 = ($86|0)==(0|0); + if (!($87)) { + $88 = ($29|0)==(0|0); + if ($88) { + $99 = $86; + } else { + $89 = ((($29)) + 28|0); + $90 = HEAP32[$89>>2]|0; + $91 = ($90|0)>(0); + if ($91) { + __vp_psy_clear($86); + $92 = HEAP32[$89>>2]|0; + $93 = ($92|0)>(1); + if ($93) { + $95 = 1; + while(1) { + $$pre20 = HEAP32[$85>>2]|0; + $94 = (($$pre20) + (($95*52)|0)|0); + __vp_psy_clear($94); + $96 = (($95) + 1)|0; + $97 = HEAP32[$89>>2]|0; + $98 = ($96|0)<($97|0); + if ($98) { + $95 = $96; + } else { + break; + } + } + } + $$pre22$pre = HEAP32[$85>>2]|0; + $99 = $$pre22$pre; + } else { + $99 = $86; + } + } + _free($99); + } + $100 = ((($7)) + 60|0); + $101 = HEAP32[$100>>2]|0; + $102 = ($101|0)==(0|0); + if (!($102)) { + __vp_global_free($101); + } + $103 = ((($7)) + 80|0); + _vorbis_bitrate_clear($103); + $104 = ((($7)) + 20|0); + _drft_clear($104); + $105 = ((($7)) + 32|0); + _drft_clear($105); + } + $106 = ((($v)) + 8|0); + $107 = HEAP32[$106>>2]|0; + $108 = ($107|0)==(0|0); + if (!($108)) { + if ($3) { + $109 = ((($2)) + 4|0); + $110 = HEAP32[$109>>2]|0; + $111 = ($110|0)>(0); + if ($111) { + $113 = $107;$132 = $110;$i$37 = 0; + while(1) { + $112 = (($113) + ($i$37<<2)|0); + $114 = HEAP32[$112>>2]|0; + $115 = ($114|0)==(0|0); + if ($115) { + $118 = $132; + } else { + _free($114); + $$pre25 = HEAP32[$109>>2]|0; + $118 = $$pre25; + } + $116 = (($i$37) + 1)|0; + $117 = ($116|0)<($118|0); + if (!($117)) { + break; + } + $$pre24 = HEAP32[$106>>2]|0; + $113 = $$pre24;$132 = $118;$i$37 = $116; + } + $$pre27$pre = HEAP32[$106>>2]|0; + $119 = $$pre27$pre; + } else { + $119 = $107; + } + } else { + $119 = $107; + } + _free($119); + $120 = ((($v)) + 12|0); + $121 = HEAP32[$120>>2]|0; + $122 = ($121|0)==(0|0); + if (!($122)) { + _free($121); + } + } + if ($8) { + $123 = ((($7)) + 64|0); + $124 = HEAP32[$123>>2]|0; + $125 = ($124|0)==(0|0); + if (!($125)) { + _free($124); + } + $126 = ((($7)) + 68|0); + $127 = HEAP32[$126>>2]|0; + $128 = ($127|0)==(0|0); + if (!($128)) { + _free($127); + } + $129 = ((($7)) + 72|0); + $130 = HEAP32[$129>>2]|0; + $131 = ($130|0)==(0|0); + if (!($131)) { + _free($130); + } + _free($7); + } + dest=$v; stop=dest+112|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0)); + return; +} +function _vorbis_analysis_buffer($v,$vals) { + $v = $v|0; + $vals = $vals|0; + var $$phi$trans$insert = 0, $$pre = 0, $$pre$phi8Z2D = 0, $$pre6 = 0, $$pre7 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0; + var $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0; + var $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $6 = 0, $7 = 0; + var $8 = 0, $9 = 0, $i$11 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($v)) + 4|0); + $1 = HEAP32[$0>>2]|0; + $2 = ((($v)) + 104|0); + $3 = HEAP32[$2>>2]|0; + $4 = ((($3)) + 64|0); + $5 = HEAP32[$4>>2]|0; + $6 = ($5|0)==(0|0); + if (!($6)) { + _free($5); + } + HEAP32[$4>>2] = 0; + $7 = ((($3)) + 68|0); + $8 = HEAP32[$7>>2]|0; + $9 = ($8|0)==(0|0); + if (!($9)) { + _free($8); + } + HEAP32[$7>>2] = 0; + $10 = ((($3)) + 72|0); + $11 = HEAP32[$10>>2]|0; + $12 = ($11|0)==(0|0); + if (!($12)) { + _free($11); + } + HEAP32[$10>>2] = 0; + $13 = ((($v)) + 20|0); + $14 = HEAP32[$13>>2]|0; + $15 = (($14) + ($vals))|0; + $16 = ((($v)) + 16|0); + $17 = HEAP32[$16>>2]|0; + $18 = ($15|0)<($17|0); + if ($18) { + $$phi$trans$insert = ((($1)) + 4|0); + $$pre6 = HEAP32[$$phi$trans$insert>>2]|0; + $32 = $$pre6; + label = 11; + } else { + $19 = $vals << 1; + $20 = (($14) + ($19))|0; + HEAP32[$16>>2] = $20; + $21 = ((($1)) + 4|0); + $22 = HEAP32[$21>>2]|0; + $23 = ($22|0)>(0); + if ($23) { + $24 = ((($v)) + 8|0); + $25 = HEAP32[$24>>2]|0; + $26 = HEAP32[$25>>2]|0; + $27 = $20 << 2; + $28 = (_realloc($26,$27)|0); + $29 = HEAP32[$24>>2]|0; + HEAP32[$29>>2] = $28; + $30 = HEAP32[$21>>2]|0; + $31 = ($30|0)>(1); + if ($31) { + $39 = 1; + while(1) { + $$pre = HEAP32[$16>>2]|0; + $37 = HEAP32[$24>>2]|0; + $38 = (($37) + ($39<<2)|0); + $40 = HEAP32[$38>>2]|0; + $41 = $$pre << 2; + $42 = (_realloc($40,$41)|0); + $43 = HEAP32[$24>>2]|0; + $44 = (($43) + ($39<<2)|0); + HEAP32[$44>>2] = $42; + $45 = (($39) + 1)|0; + $46 = HEAP32[$21>>2]|0; + $47 = ($45|0)<($46|0); + if ($47) { + $39 = $45; + } else { + $32 = $46; + label = 11; + break; + } + } + } else { + $32 = $30; + label = 11; + } + } + } + if ((label|0) == 11) { + $33 = ($32|0)>(0); + if ($33) { + $34 = ((($v)) + 8|0); + $35 = HEAP32[$13>>2]|0; + $36 = ((($v)) + 12|0); + $i$11 = 0; + while(1) { + $48 = HEAP32[$34>>2]|0; + $49 = (($48) + ($i$11<<2)|0); + $50 = HEAP32[$49>>2]|0; + $51 = (($50) + ($35<<2)|0); + $52 = HEAP32[$36>>2]|0; + $53 = (($52) + ($i$11<<2)|0); + HEAP32[$53>>2] = $51; + $54 = (($i$11) + 1)|0; + $55 = ($54|0)<($32|0); + if ($55) { + $i$11 = $54; + } else { + $$pre$phi8Z2D = $36; + break; + } + } + $56 = HEAP32[$$pre$phi8Z2D>>2]|0; + return ($56|0); + } + } + $$pre7 = ((($v)) + 12|0); + $$pre$phi8Z2D = $$pre7; + $56 = HEAP32[$$pre$phi8Z2D>>2]|0; + return ($56|0); +} +function _vorbis_analysis_wrote($v,$vals) { + $v = $v|0; + $vals = $vals|0; + var $$ = 0, $$0 = 0, $$pre = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0; + var $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0; + var $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0; + var $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $7 = 0, $8 = 0, $9 = 0, $i$02 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($v)) + 4|0); + $1 = HEAP32[$0>>2]|0; + $2 = ((($1)) + 28|0); + $3 = HEAP32[$2>>2]|0; + $4 = ($vals|0)<(1); + if (!($4)) { + $48 = ((($v)) + 20|0); + $49 = HEAP32[$48>>2]|0; + $50 = (($49) + ($vals))|0; + $51 = ((($v)) + 16|0); + $52 = HEAP32[$51>>2]|0; + $53 = ($50|0)>($52|0); + if ($53) { + $$0 = -131; + STACKTOP = sp;return ($$0|0); + } + HEAP32[$48>>2] = $50; + $54 = ((($v)) + 28|0); + $55 = HEAP32[$54>>2]|0; + $56 = ($55|0)==(0); + if (!($56)) { + $$0 = 0; + STACKTOP = sp;return ($$0|0); + } + $57 = ((($v)) + 48|0); + $58 = HEAP32[$57>>2]|0; + $59 = (($50) - ($58))|0; + $60 = ((($3)) + 4|0); + $61 = HEAP32[$60>>2]|0; + $62 = ($59|0)>($61|0); + if (!($62)) { + $$0 = 0; + STACKTOP = sp;return ($$0|0); + } + __preextrapolate_helper($v); + $$0 = 0; + STACKTOP = sp;return ($$0|0); + } + $5 = STACKTOP; STACKTOP = STACKTOP + 128|0;; + $6 = ((($v)) + 28|0); + $7 = HEAP32[$6>>2]|0; + $8 = ($7|0)==(0); + if ($8) { + __preextrapolate_helper($v); + } + $9 = ((($3)) + 4|0); + $10 = HEAP32[$9>>2]|0; + $11 = ($10*3)|0; + (_vorbis_analysis_buffer($v,$11)|0); + $12 = ((($v)) + 20|0); + $13 = HEAP32[$12>>2]|0; + $14 = ((($v)) + 32|0); + HEAP32[$14>>2] = $13; + $15 = HEAP32[$9>>2]|0; + $16 = ($15*3)|0; + $17 = (($13) + ($16))|0; + HEAP32[$12>>2] = $17; + $18 = ((($1)) + 4|0); + $19 = HEAP32[$18>>2]|0; + $20 = ($19|0)>(0); + if (!($20)) { + $$0 = 0; + STACKTOP = sp;return ($$0|0); + } + $21 = ((($v)) + 8|0); + $22 = $13;$i$02 = 0; + while(1) { + $23 = ($22|0)>(64); + if ($23) { + $24 = HEAP32[$9>>2]|0; + $25 = ($22|0)>($24|0); + $$ = $25 ? $24 : $22; + $26 = HEAP32[$21>>2]|0; + $27 = (($26) + ($i$02<<2)|0); + $28 = HEAP32[$27>>2]|0; + $$sum = (($22) - ($$))|0; + $29 = (($28) + ($$sum<<2)|0); + (+_vorbis_lpc_from_data($29,$5,$$,32)); + $30 = HEAP32[$21>>2]|0; + $31 = (($30) + ($i$02<<2)|0); + $32 = HEAP32[$31>>2]|0; + $33 = HEAP32[$14>>2]|0; + $34 = (($32) + ($33<<2)|0); + $$sum1 = (($33) + -32)|0; + $35 = (($32) + ($$sum1<<2)|0); + $36 = HEAP32[$12>>2]|0; + $37 = (($36) - ($33))|0; + _vorbis_lpc_predict($5,$35,32,$34,$37); + } else { + $38 = HEAP32[$21>>2]|0; + $39 = (($38) + ($i$02<<2)|0); + $40 = HEAP32[$39>>2]|0; + $41 = (($40) + ($22<<2)|0); + $42 = HEAP32[$12>>2]|0; + $43 = (($42) - ($22))|0; + $44 = $43 << 2; + _memset(($41|0),0,($44|0))|0; + } + $45 = (($i$02) + 1)|0; + $46 = HEAP32[$18>>2]|0; + $47 = ($45|0)<($46|0); + if (!($47)) { + $$0 = 0; + break; + } + $$pre = HEAP32[$14>>2]|0; + $22 = $$pre;$i$02 = $45; + } + STACKTOP = sp;return ($$0|0); +} +function _vorbis_analysis_blockout($v,$vb) { + $v = $v|0; + $vb = $vb|0; + var $$ = 0, $$0 = 0, $$pre = 0, $$pre$phiZ2D = 0, $$pre10 = 0, $$pre11 = 0, $$pre12 = 0, $$pre13 = 0, $$pre15 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0; + var $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0.0, $121 = 0.0, $122 = 0, $123 = 0.0, $124 = 0.0, $125 = 0; + var $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0; + var $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0; + var $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0; + var $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0; + var $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0; + var $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0; + var $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0; + var $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0; + var $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0; + var $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0; + var $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0; + var $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0; + var $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0; + var $98 = 0, $99 = 0, $i$07 = 0, $or$cond = 0, $reap$01$i = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($v)) + 4|0); + $1 = HEAP32[$0>>2]|0; + $2 = ((($1)) + 28|0); + $3 = HEAP32[$2>>2]|0; + $4 = ((($v)) + 104|0); + $5 = HEAP32[$4>>2]|0; + $6 = ((($5)) + 60|0); + $7 = HEAP32[$6>>2]|0; + $8 = ((($v)) + 48|0); + $9 = HEAP32[$8>>2]|0; + $10 = ((($v)) + 40|0); + $11 = HEAP32[$10>>2]|0; + $12 = (($3) + ($11<<2)|0); + $13 = HEAP32[$12>>2]|0; + $14 = (($13|0) / 2)&-1; + $15 = (($9) - ($14))|0; + $16 = ((($vb)) + 104|0); + $17 = HEAP32[$16>>2]|0; + $18 = ((($v)) + 28|0); + $19 = HEAP32[$18>>2]|0; + $20 = ($19|0)==(0); + if ($20) { + $$0 = 0; + return ($$0|0); + } + $21 = ((($v)) + 32|0); + $22 = HEAP32[$21>>2]|0; + $23 = ($22|0)==(-1); + if ($23) { + $$0 = 0; + return ($$0|0); + } + $24 = (__ve_envelope_search($v)|0); + $25 = ($24|0)==(-1); + do { + if ($25) { + $26 = HEAP32[$21>>2]|0; + $27 = ($26|0)==(0); + if ($27) { + $$0 = 0; + return ($$0|0); + } else { + $28 = ((($v)) + 44|0); + HEAP32[$28>>2] = 0; + $$pre$phiZ2D = $28;$41 = 0; + break; + } + } else { + $29 = HEAP32[$3>>2]|0; + $30 = ((($3)) + 4|0); + $31 = HEAP32[$30>>2]|0; + $32 = ($29|0)==($31|0); + $33 = ((($v)) + 44|0); + if ($32) { + HEAP32[$33>>2] = 0; + $$pre$phiZ2D = $33;$41 = 0; + break; + } else { + HEAP32[$33>>2] = $24; + $$pre$phiZ2D = $33;$41 = $24; + break; + } + } + } while(0); + $34 = HEAP32[$8>>2]|0; + $35 = HEAP32[$10>>2]|0; + $36 = (($3) + ($35<<2)|0); + $37 = HEAP32[$36>>2]|0; + $38 = (($37|0) / 4)&-1; + $39 = (($38) + ($34))|0; + $40 = (($3) + ($41<<2)|0); + $42 = HEAP32[$40>>2]|0; + $43 = (($42|0) / 4)&-1; + $44 = (($39) + ($43))|0; + $45 = (($42|0) / 2)&-1; + $46 = (($44) + ($45))|0; + $47 = ((($v)) + 20|0); + $48 = HEAP32[$47>>2]|0; + $49 = ($48|0)<($46|0); + if ($49) { + $$0 = 0; + return ($$0|0); + } + $50 = ((($vb)) + 84|0); + $51 = HEAP32[$50>>2]|0; + $52 = ($51|0)==(0|0); + if (!($52)) { + $reap$01$i = $51; + while(1) { + $53 = ((($reap$01$i)) + 4|0); + $54 = HEAP32[$53>>2]|0; + $55 = HEAP32[$reap$01$i>>2]|0; + _free($55); + _free($reap$01$i); + $56 = ($54|0)==(0|0); + if ($56) { + break; + } else { + $reap$01$i = $54; + } + } + } + $57 = ((($vb)) + 80|0); + $58 = HEAP32[$57>>2]|0; + $59 = ($58|0)==(0); + if (!($59)) { + $60 = ((($vb)) + 68|0); + $61 = HEAP32[$60>>2]|0; + $62 = ((($vb)) + 76|0); + $63 = HEAP32[$62>>2]|0; + $64 = (($63) + ($58))|0; + $65 = (_realloc($61,$64)|0); + HEAP32[$60>>2] = $65; + $66 = HEAP32[$57>>2]|0; + $67 = HEAP32[$62>>2]|0; + $68 = (($67) + ($66))|0; + HEAP32[$62>>2] = $68; + HEAP32[$57>>2] = 0; + } + $69 = ((($vb)) + 72|0); + HEAP32[$69>>2] = 0; + HEAP32[$50>>2] = 0; + $70 = ((($v)) + 36|0); + $71 = HEAP32[$70>>2]|0; + $72 = ((($vb)) + 24|0); + HEAP32[$72>>2] = $71; + $73 = HEAP32[$10>>2]|0; + $74 = ((($vb)) + 28|0); + HEAP32[$74>>2] = $73; + $75 = HEAP32[$$pre$phiZ2D>>2]|0; + $76 = ((($vb)) + 32|0); + HEAP32[$76>>2] = $75; + $77 = ($73|0)==(0); + do { + if ($77) { + $81 = (__ve_envelope_mark($v)|0); + $82 = ($81|0)==(0); + $83 = ((($17)) + 8|0); + if ($82) { + HEAP32[$83>>2] = 1; + break; + } else { + HEAP32[$83>>2] = 0; + break; + } + } else { + $78 = ($71|0)==(0); + $79 = ($75|0)==(0); + $or$cond = $78 | $79; + $80 = ((($17)) + 8|0); + if ($or$cond) { + HEAP32[$80>>2] = 0; + break; + } else { + HEAP32[$80>>2] = 1; + break; + } + } + } while(0); + $84 = ((($vb)) + 64|0); + HEAP32[$84>>2] = $v; + $85 = ((($v)) + 64|0); + $86 = $85; + $87 = $86; + $88 = HEAP32[$87>>2]|0; + $89 = (($86) + 4)|0; + $90 = $89; + $91 = HEAP32[$90>>2]|0; + $92 = (_i64Add(($88|0),($91|0),1,0)|0); + $93 = tempRet0; + $94 = $85; + $95 = $94; + HEAP32[$95>>2] = $92; + $96 = (($94) + 4)|0; + $97 = $96; + HEAP32[$97>>2] = $93; + $98 = ((($vb)) + 56|0); + $99 = $98; + $100 = $99; + HEAP32[$100>>2] = $88; + $101 = (($99) + 4)|0; + $102 = $101; + HEAP32[$102>>2] = $91; + $103 = ((($v)) + 56|0); + $104 = $103; + $105 = $104; + $106 = HEAP32[$105>>2]|0; + $107 = (($104) + 4)|0; + $108 = $107; + $109 = HEAP32[$108>>2]|0; + $110 = ((($vb)) + 48|0); + $111 = $110; + $112 = $111; + HEAP32[$112>>2] = $106; + $113 = (($111) + 4)|0; + $114 = $113; + HEAP32[$114>>2] = $109; + $115 = HEAP32[$10>>2]|0; + $116 = (($3) + ($115<<2)|0); + $117 = HEAP32[$116>>2]|0; + $118 = ((($vb)) + 36|0); + HEAP32[$118>>2] = $117; + $119 = ((($17)) + 4|0); + $120 = +HEAPF32[$119>>2]; + $121 = +HEAPF32[$7>>2]; + $122 = $120 > $121; + if ($122) { + HEAPF32[$7>>2] = $120; + $123 = $120; + } else { + $123 = $121; + } + $124 = (+__vp_ampmax_decay($123,$v)); + HEAPF32[$7>>2] = $124; + HEAPF32[$119>>2] = $124; + $125 = ((($1)) + 4|0); + $126 = HEAP32[$125>>2]|0; + $127 = $126 << 2; + $128 = (($127) + 7)|0; + $129 = $128 & -8; + $130 = HEAP32[$69>>2]|0; + $131 = (($129) + ($130))|0; + $132 = ((($vb)) + 76|0); + $133 = HEAP32[$132>>2]|0; + $134 = ($131|0)>($133|0); + $135 = ((($vb)) + 68|0); + $136 = HEAP32[$135>>2]|0; + if ($134) { + $137 = ($136|0)==(0|0); + if (!($137)) { + $138 = $136; + $139 = (_malloc(8)|0); + $140 = HEAP32[$57>>2]|0; + $141 = (($140) + ($130))|0; + HEAP32[$57>>2] = $141; + $142 = HEAP32[$50>>2]|0; + $143 = ((($139)) + 4|0); + HEAP32[$143>>2] = $142; + HEAP32[$139>>2] = $138; + HEAP32[$50>>2] = $139; + } + HEAP32[$132>>2] = $129; + $144 = (_malloc($129)|0); + HEAP32[$135>>2] = $144; + HEAP32[$69>>2] = 0; + $$pre = HEAP32[$125>>2]|0; + $146 = $144;$147 = 0;$150 = $$pre;$155 = $129; + } else { + $146 = $136;$147 = $130;$150 = $126;$155 = $133; + } + $145 = (($146) + ($147)|0); + $148 = (($147) + ($129))|0; + HEAP32[$69>>2] = $148; + HEAP32[$vb>>2] = $145; + $149 = $150 << 2; + $151 = (($149) + 7)|0; + $152 = $151 & -8; + $153 = (($152) + ($148))|0; + $154 = ($153|0)>($155|0); + if ($154) { + $156 = ($146|0)==(0|0); + if (!($156)) { + $157 = $146; + $158 = (_malloc(8)|0); + $159 = HEAP32[$57>>2]|0; + $160 = (($159) + ($148))|0; + HEAP32[$57>>2] = $160; + $161 = HEAP32[$50>>2]|0; + $162 = ((($158)) + 4|0); + HEAP32[$162>>2] = $161; + HEAP32[$158>>2] = $157; + HEAP32[$50>>2] = $158; + } + HEAP32[$132>>2] = $152; + $163 = (_malloc($152)|0); + HEAP32[$135>>2] = $163; + HEAP32[$69>>2] = 0; + $$pre10 = HEAP32[$125>>2]|0; + $165 = $163;$166 = 0;$168 = $$pre10;$292 = $152; + } else { + $165 = $146;$166 = $148;$168 = $150;$292 = $155; + } + $164 = (($165) + ($166)|0); + $167 = (($166) + ($152))|0; + HEAP32[$69>>2] = $167; + HEAP32[$17>>2] = $164; + $169 = ($168|0)>(0); + L52: do { + if ($169) { + $170 = ((($v)) + 8|0); + $177 = $167;$179 = $292;$180 = $165;$i$07 = 0; + while(1) { + $171 = HEAP32[$118>>2]|0; + $172 = (($171) + ($15))|0; + $173 = $172 << 2; + $174 = (($173) + 7)|0; + $175 = $174 & -8; + $176 = (($175) + ($177))|0; + $178 = ($176|0)>($179|0); + if ($178) { + $181 = ($180|0)==(0|0); + if (!($181)) { + $182 = $180; + $183 = (_malloc(8)|0); + $184 = HEAP32[$57>>2]|0; + $185 = (($184) + ($177))|0; + HEAP32[$57>>2] = $185; + $186 = HEAP32[$50>>2]|0; + $187 = ((($183)) + 4|0); + HEAP32[$187>>2] = $186; + HEAP32[$183>>2] = $182; + HEAP32[$50>>2] = $183; + } + HEAP32[$132>>2] = $175; + $188 = (_malloc($175)|0); + HEAP32[$135>>2] = $188; + HEAP32[$69>>2] = 0; + $190 = $188;$191 = 0; + } else { + $190 = $180;$191 = $177; + } + $189 = (($190) + ($191)|0); + $192 = (($191) + ($175))|0; + HEAP32[$69>>2] = $192; + $193 = HEAP32[$17>>2]|0; + $194 = (($193) + ($i$07<<2)|0); + HEAP32[$194>>2] = $189; + $195 = HEAP32[$17>>2]|0; + $196 = (($195) + ($i$07<<2)|0); + $197 = HEAP32[$196>>2]|0; + $198 = HEAP32[$170>>2]|0; + $199 = (($198) + ($i$07<<2)|0); + $200 = HEAP32[$199>>2]|0; + _memcpy(($197|0),($200|0),($173|0))|0; + $201 = HEAP32[$17>>2]|0; + $202 = (($201) + ($i$07<<2)|0); + $203 = HEAP32[$202>>2]|0; + $204 = (($203) + ($15<<2)|0); + $205 = HEAP32[$vb>>2]|0; + $206 = (($205) + ($i$07<<2)|0); + HEAP32[$206>>2] = $204; + $207 = (($i$07) + 1)|0; + $208 = HEAP32[$125>>2]|0; + $209 = ($207|0)<($208|0); + if (!($209)) { + break L52; + } + $$pre11 = HEAP32[$69>>2]|0; + $$pre12 = HEAP32[$132>>2]|0; + $$pre13 = HEAP32[$135>>2]|0; + $177 = $$pre11;$179 = $$pre12;$180 = $$pre13;$i$07 = $207; + } + } + } while(0); + $210 = HEAP32[$21>>2]|0; + $211 = ($210|0)==(0); + if (!($211)) { + $212 = HEAP32[$8>>2]|0; + $213 = ($212|0)<($210|0); + if (!($213)) { + HEAP32[$21>>2] = -1; + $214 = ((($vb)) + 44|0); + HEAP32[$214>>2] = 1; + $$0 = 1; + return ($$0|0); + } + } + $215 = ((($3)) + 4|0); + $216 = HEAP32[$215>>2]|0; + $217 = (($216|0) / 2)&-1; + $218 = (($44) - ($217))|0; + $219 = ($218|0)>(0); + if (!($219)) { + $$0 = 1; + return ($$0|0); + } + $220 = HEAP32[$5>>2]|0; + __ve_envelope_shift($220,$218); + $221 = HEAP32[$47>>2]|0; + $222 = (($221) - ($218))|0; + HEAP32[$47>>2] = $222; + $223 = HEAP32[$125>>2]|0; + $224 = ($223|0)>(0); + if ($224) { + $225 = ((($v)) + 8|0); + $226 = HEAP32[$225>>2]|0; + $227 = HEAP32[$226>>2]|0; + $228 = (($227) + ($218<<2)|0); + $229 = $222 << 2; + _memmove(($227|0),($228|0),($229|0))|0; + $230 = HEAP32[$125>>2]|0; + $231 = ($230|0)>(1); + if ($231) { + $234 = 1; + while(1) { + $$pre15 = HEAP32[$47>>2]|0; + $232 = HEAP32[$225>>2]|0; + $233 = (($232) + ($234<<2)|0); + $235 = HEAP32[$233>>2]|0; + $236 = (($235) + ($218<<2)|0); + $237 = $$pre15 << 2; + _memmove(($235|0),($236|0),($237|0))|0; + $238 = (($234) + 1)|0; + $239 = HEAP32[$125>>2]|0; + $240 = ($238|0)<($239|0); + if ($240) { + $234 = $238; + } else { + break; + } + } + } + } + $241 = HEAP32[$10>>2]|0; + HEAP32[$70>>2] = $241; + $242 = HEAP32[$$pre$phiZ2D>>2]|0; + HEAP32[$10>>2] = $242; + HEAP32[$8>>2] = $217; + $243 = HEAP32[$21>>2]|0; + $244 = ($243|0)==(0); + if ($244) { + $278 = ($218|0)<(0); + $279 = $278 << 31 >> 31; + $280 = $103; + $281 = $280; + $282 = HEAP32[$281>>2]|0; + $283 = (($280) + 4)|0; + $284 = $283; + $285 = HEAP32[$284>>2]|0; + $286 = (_i64Add(($282|0),($285|0),($218|0),($279|0))|0); + $287 = tempRet0; + $288 = $103; + $289 = $288; + HEAP32[$289>>2] = $286; + $290 = (($288) + 4)|0; + $291 = $290; + HEAP32[$291>>2] = $287; + $$0 = 1; + return ($$0|0); + } + $245 = (($243) - ($218))|0; + $246 = ($245|0)<(1); + $$ = $246 ? -1 : $245; + HEAP32[$21>>2] = $$; + $247 = ($$|0)>($217|0); + if ($247) { + $264 = ($218|0)<(0); + $265 = $264 << 31 >> 31; + $266 = $103; + $267 = $266; + $268 = HEAP32[$267>>2]|0; + $269 = (($266) + 4)|0; + $270 = $269; + $271 = HEAP32[$270>>2]|0; + $272 = (_i64Add(($268|0),($271|0),($218|0),($265|0))|0); + $273 = tempRet0; + $274 = $103; + $275 = $274; + HEAP32[$275>>2] = $272; + $276 = (($274) + 4)|0; + $277 = $276; + HEAP32[$277>>2] = $273; + $$0 = 1; + return ($$0|0); + } else { + $248 = (($$) + ($218))|0; + $249 = (($248) - ($217))|0; + $250 = ($249|0)<(0); + $251 = $250 << 31 >> 31; + $252 = $103; + $253 = $252; + $254 = HEAP32[$253>>2]|0; + $255 = (($252) + 4)|0; + $256 = $255; + $257 = HEAP32[$256>>2]|0; + $258 = (_i64Add(($254|0),($257|0),($249|0),($251|0))|0); + $259 = tempRet0; + $260 = $103; + $261 = $260; + HEAP32[$261>>2] = $258; + $262 = (($260) + 4)|0; + $263 = $262; + HEAP32[$263>>2] = $259; + $$0 = 1; + return ($$0|0); + } + return (0)|0; +} +function __vds_shared_init($v,$vi,$encp) { + $v = $v|0; + $vi = $vi|0; + $encp = $encp|0; + var $$0 = 0, $$pre = 0, $$pre26 = 0, $$pre28 = 0, $$pre29 = 0, $$pre30 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0; + var $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0; + var $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0; + var $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0; + var $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0; + var $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0; + var $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0; + var $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0; + var $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0; + var $98 = 0, $99 = 0, $i$117 = 0, $i$214 = 0, $i$37 = 0, $i$45 = 0, $i$54 = 0, dest = 0, label = 0, sp = 0, stop = 0; + sp = STACKTOP; + $0 = ((($vi)) + 28|0); + $1 = HEAP32[$0>>2]|0; + $2 = ($1|0)==(0|0); + if ($2) { + $$0 = 1; + return ($$0|0); + } + $3 = ((($1)) + 8|0); + $4 = HEAP32[$3>>2]|0; + $5 = ($4|0)<(1); + if ($5) { + $$0 = 1; + return ($$0|0); + } + $6 = HEAP32[$1>>2]|0; + $7 = ($6|0)<(64); + if ($7) { + $$0 = 1; + return ($$0|0); + } + $8 = ((($1)) + 4|0); + $9 = HEAP32[$8>>2]|0; + $10 = ($9|0)<($6|0); + if ($10) { + $$0 = 1; + return ($$0|0); + } + $11 = ((($1)) + 3656|0); + $12 = HEAP32[$11>>2]|0; + dest=$v; stop=dest+112|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0)); + $13 = (_calloc(1,136)|0); + $14 = ((($v)) + 104|0); + HEAP32[$14>>2] = $13; + $15 = ((($v)) + 4|0); + HEAP32[$15>>2] = $vi; + $16 = HEAP32[$3>>2]|0; + $17 = (($16) + -1)|0; + $18 = (_ov_ilog($17)|0); + $19 = ((($13)) + 44|0); + HEAP32[$19>>2] = $18; + $20 = (_calloc(1,4)|0); + $21 = ((($13)) + 12|0); + HEAP32[$21>>2] = $20; + $22 = (_calloc(1,4)|0); + $23 = ((($13)) + 16|0); + HEAP32[$23>>2] = $22; + $24 = (_calloc(1,20)|0); + HEAP32[$20>>2] = $24; + $25 = (_calloc(1,20)|0); + HEAP32[$22>>2] = $25; + $26 = HEAP32[$1>>2]|0; + $27 = $26 >> $12; + _mdct_init($24,$27); + $28 = HEAP32[$23>>2]|0; + $29 = HEAP32[$28>>2]|0; + $30 = HEAP32[$8>>2]|0; + $31 = $30 >> $12; + _mdct_init($29,$31); + $32 = HEAP32[$1>>2]|0; + $33 = (_ov_ilog($32)|0); + $34 = (($33) + -7)|0; + $35 = ((($13)) + 4|0); + HEAP32[$35>>2] = $34; + $36 = HEAP32[$8>>2]|0; + $37 = (_ov_ilog($36)|0); + $38 = (($37) + -7)|0; + $39 = ((($13)) + 8|0); + HEAP32[$39>>2] = $38; + $40 = ($encp|0)==(0); + L13: do { + if ($40) { + $84 = ((($1)) + 2848|0); + $85 = HEAP32[$84>>2]|0; + $86 = ($85|0)==(0|0); + if ($86) { + $87 = ((($1)) + 24|0); + $88 = HEAP32[$87>>2]|0; + $89 = (_calloc($88,56)|0); + HEAP32[$84>>2] = $89; + $90 = HEAP32[$87>>2]|0; + $91 = ($90|0)>(0); + if ($91) { + $174 = $90;$i$214 = 0; + while(1) { + $92 = (((($1)) + 1824|0) + ($i$214<<2)|0); + $93 = HEAP32[$92>>2]|0; + $94 = ($93|0)==(0|0); + if ($94) { + $95 = $174; + break; + } + $97 = HEAP32[$84>>2]|0; + $98 = (($97) + (($i$214*56)|0)|0); + $99 = (_vorbis_book_init_decode($98,$93)|0); + $100 = ($99|0)==(0); + if (!($100)) { + label = 20; + break; + } + $101 = HEAP32[$92>>2]|0; + _vorbis_staticbook_destroy($101); + HEAP32[$92>>2] = 0; + $102 = (($i$214) + 1)|0; + $103 = HEAP32[$87>>2]|0; + $104 = ($102|0)<($103|0); + if ($104) { + $174 = $103;$i$214 = $102; + } else { + break L13; + } + } + if ((label|0) == 20) { + $$pre29 = HEAP32[$87>>2]|0; + $95 = $$pre29; + } + $96 = ($95|0)>(0); + if ($96) { + $175 = $95;$i$54 = 0; + while(1) { + $168 = (((($1)) + 1824|0) + ($i$54<<2)|0); + $169 = HEAP32[$168>>2]|0; + $170 = ($169|0)==(0|0); + if ($170) { + $173 = $175; + } else { + _vorbis_staticbook_destroy($169); + HEAP32[$168>>2] = 0; + $$pre30 = HEAP32[$87>>2]|0; + $173 = $$pre30; + } + $171 = (($i$54) + 1)|0; + $172 = ($171|0)<($173|0); + if ($172) { + $175 = $173;$i$54 = $171; + } else { + break; + } + } + } + _vorbis_dsp_clear($v); + $$0 = -1; + return ($$0|0); + } + } + } else { + $41 = ((($13)) + 20|0); + $42 = HEAP32[$1>>2]|0; + _drft_init($41,$42); + $43 = ((($13)) + 32|0); + $44 = HEAP32[$8>>2]|0; + _drft_init($43,$44); + $45 = ((($1)) + 2848|0); + $46 = HEAP32[$45>>2]|0; + $47 = ($46|0)==(0|0); + if ($47) { + $48 = ((($1)) + 24|0); + $49 = HEAP32[$48>>2]|0; + $50 = (_calloc($49,56)|0); + HEAP32[$45>>2] = $50; + $51 = HEAP32[$48>>2]|0; + $52 = ($51|0)>(0); + if ($52) { + $53 = ((($1)) + 1824|0); + $54 = HEAP32[$53>>2]|0; + (_vorbis_book_init_encode($50,$54)|0); + $55 = HEAP32[$48>>2]|0; + $56 = ($55|0)>(1); + if ($56) { + $58 = 1; + while(1) { + $$pre = HEAP32[$45>>2]|0; + $57 = (($$pre) + (($58*56)|0)|0); + $59 = (((($1)) + 1824|0) + ($58<<2)|0); + $60 = HEAP32[$59>>2]|0; + (_vorbis_book_init_encode($57,$60)|0); + $61 = (($58) + 1)|0; + $62 = HEAP32[$48>>2]|0; + $63 = ($61|0)<($62|0); + if ($63) { + $58 = $61; + } else { + break; + } + } + } + } + } + $64 = ((($1)) + 28|0); + $65 = HEAP32[$64>>2]|0; + $66 = (_calloc($65,52)|0); + $67 = ((($13)) + 56|0); + HEAP32[$67>>2] = $66; + $68 = HEAP32[$64>>2]|0; + $69 = ($68|0)>(0); + L38: do { + if ($69) { + $70 = ((($1)) + 2868|0); + $71 = ((($vi)) + 8|0); + $73 = $66;$i$117 = 0; + while(1) { + $72 = (($73) + (($i$117*52)|0)|0); + $74 = (((($1)) + 2852|0) + ($i$117<<2)|0); + $75 = HEAP32[$74>>2]|0; + $76 = HEAP32[$75>>2]|0; + $77 = (($1) + ($76<<2)|0); + $78 = HEAP32[$77>>2]|0; + $79 = (($78|0) / 2)&-1; + $80 = HEAP32[$71>>2]|0; + __vp_psy_init($72,$75,$70,$79,$80); + $81 = (($i$117) + 1)|0; + $82 = HEAP32[$64>>2]|0; + $83 = ($81|0)<($82|0); + if (!($83)) { + break L38; + } + $$pre26 = HEAP32[$67>>2]|0; + $73 = $$pre26;$i$117 = $81; + } + } + } while(0); + HEAP32[$v>>2] = 1; + } + } while(0); + $105 = HEAP32[$8>>2]|0; + $106 = ((($v)) + 16|0); + HEAP32[$106>>2] = $105; + $107 = ((($vi)) + 4|0); + $108 = HEAP32[$107>>2]|0; + $109 = $108 << 2; + $110 = (_malloc($109)|0); + $111 = ((($v)) + 8|0); + HEAP32[$111>>2] = $110; + $112 = (_malloc($109)|0); + $113 = ((($v)) + 12|0); + HEAP32[$113>>2] = $112; + $114 = ($108|0)>(0); + if ($114) { + $115 = (_calloc($105,4)|0); + HEAP32[$110>>2] = $115; + $116 = ($108|0)>(1); + if ($116) { + $119 = 1; + while(1) { + $$pre28 = HEAP32[$111>>2]|0; + $117 = (_calloc($105,4)|0); + $118 = (($$pre28) + ($119<<2)|0); + HEAP32[$118>>2] = $117; + $120 = (($119) + 1)|0; + $121 = ($120|0)<($108|0); + if ($121) { + $119 = $120; + } else { + break; + } + } + } + } + $122 = ((($v)) + 36|0); + HEAP32[$122>>2] = 0; + $123 = ((($v)) + 40|0); + HEAP32[$123>>2] = 0; + $124 = HEAP32[$8>>2]|0; + $125 = (($124|0) / 2)&-1; + $126 = ((($v)) + 48|0); + HEAP32[$126>>2] = $125; + $127 = ((($v)) + 20|0); + HEAP32[$127>>2] = $125; + $128 = ((($1)) + 16|0); + $129 = HEAP32[$128>>2]|0; + $130 = (_calloc($129,4)|0); + $131 = ((($13)) + 48|0); + HEAP32[$131>>2] = $130; + $132 = ((($1)) + 20|0); + $133 = HEAP32[$132>>2]|0; + $134 = (_calloc($133,4)|0); + $135 = ((($13)) + 52|0); + HEAP32[$135>>2] = $134; + $136 = HEAP32[$128>>2]|0; + $137 = ($136|0)>(0); + if ($137) { + $i$37 = 0; + while(1) { + $140 = (((($1)) + 800|0) + ($i$37<<2)|0); + $141 = HEAP32[$140>>2]|0; + $142 = (25640 + ($141<<2)|0); + $143 = HEAP32[$142>>2]|0; + $144 = ((($143)) + 8|0); + $145 = HEAP32[$144>>2]|0; + $146 = (((($1)) + 1056|0) + ($i$37<<2)|0); + $147 = HEAP32[$146>>2]|0; + $148 = (FUNCTION_TABLE_iii[$145 & 15]($v,$147)|0); + $149 = HEAP32[$131>>2]|0; + $150 = (($149) + ($i$37<<2)|0); + HEAP32[$150>>2] = $148; + $151 = (($i$37) + 1)|0; + $152 = HEAP32[$128>>2]|0; + $153 = ($151|0)<($152|0); + if ($153) { + $i$37 = $151; + } else { + break; + } + } + } + $138 = HEAP32[$132>>2]|0; + $139 = ($138|0)>(0); + if ($139) { + $i$45 = 0; + } else { + $$0 = 0; + return ($$0|0); + } + while(1) { + $154 = (((($1)) + 1312|0) + ($i$45<<2)|0); + $155 = HEAP32[$154>>2]|0; + $156 = (25648 + ($155<<2)|0); + $157 = HEAP32[$156>>2]|0; + $158 = ((($157)) + 8|0); + $159 = HEAP32[$158>>2]|0; + $160 = (((($1)) + 1568|0) + ($i$45<<2)|0); + $161 = HEAP32[$160>>2]|0; + $162 = (FUNCTION_TABLE_iii[$159 & 15]($v,$161)|0); + $163 = HEAP32[$135>>2]|0; + $164 = (($163) + ($i$45<<2)|0); + HEAP32[$164>>2] = $162; + $165 = (($i$45) + 1)|0; + $166 = HEAP32[$132>>2]|0; + $167 = ($165|0)<($166|0); + if ($167) { + $i$45 = $165; + } else { + $$0 = 0; + break; + } + } + return ($$0|0); +} +function __preextrapolate_helper($v) { + $v = $v|0; + var $$alloca_mul = 0, $$sum = 0, $$sum1 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0; + var $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0; + var $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $i$08 = 0, $j$03 = 0, $j$14 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 64|0; + $0 = sp; + $1 = ((($v)) + 20|0); + $2 = HEAP32[$1>>2]|0; + $3 = $2 << 2; + $$alloca_mul = $3; + $4 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul)|0)+15)&-16)|0;; + $5 = ((($v)) + 28|0); + HEAP32[$5>>2] = 1; + $6 = ((($v)) + 48|0); + $7 = HEAP32[$6>>2]|0; + $8 = (($2) - ($7))|0; + $9 = ($8|0)>(32); + if (!($9)) { + STACKTOP = sp;return; + } + $10 = ((($v)) + 4|0); + $11 = HEAP32[$10>>2]|0; + $12 = ((($11)) + 4|0); + $13 = HEAP32[$12>>2]|0; + $14 = ($13|0)>(0); + if (!($14)) { + STACKTOP = sp;return; + } + $15 = ((($v)) + 8|0); + $16 = $2;$i$08 = 0; + while(1) { + $17 = ($16|0)>(0); + if ($17) { + $18 = HEAP32[$15>>2]|0; + $19 = (($18) + ($i$08<<2)|0); + $20 = HEAP32[$19>>2]|0; + $j$03 = 0; + while(1) { + $21 = $j$03 ^ -1; + $22 = (($16) + ($21))|0; + $23 = (($20) + ($22<<2)|0); + $24 = HEAP32[$23>>2]|0; + $25 = (($4) + ($j$03<<2)|0); + HEAP32[$25>>2] = $24; + $26 = (($j$03) + 1)|0; + $27 = ($16|0)>($26|0); + if ($27) { + $j$03 = $26; + } else { + break; + } + } + } + $28 = HEAP32[$6>>2]|0; + $29 = (($16) - ($28))|0; + (+_vorbis_lpc_from_data($4,$0,$29,16)); + $30 = HEAP32[$1>>2]|0; + $31 = HEAP32[$6>>2]|0; + $$sum = (($30) - ($31))|0; + $32 = (($4) + ($$sum<<2)|0); + $$sum1 = (($$sum) + -16)|0; + $33 = (($4) + ($$sum1<<2)|0); + _vorbis_lpc_predict($0,$33,16,$32,$31); + $34 = HEAP32[$1>>2]|0; + $35 = ($34|0)>(0); + if ($35) { + $36 = HEAP32[$15>>2]|0; + $37 = (($36) + ($i$08<<2)|0); + $38 = HEAP32[$37>>2]|0; + $j$14 = 0; + while(1) { + $39 = (($4) + ($j$14<<2)|0); + $40 = HEAP32[$39>>2]|0; + $41 = $j$14 ^ -1; + $42 = (($34) + ($41))|0; + $43 = (($38) + ($42<<2)|0); + HEAP32[$43>>2] = $40; + $44 = (($j$14) + 1)|0; + $45 = ($34|0)>($44|0); + if ($45) { + $j$14 = $44; + } else { + break; + } + } + } + $46 = (($i$08) + 1)|0; + $47 = HEAP32[$10>>2]|0; + $48 = ((($47)) + 4|0); + $49 = HEAP32[$48>>2]|0; + $50 = ($46|0)<($49|0); + if ($50) { + $16 = $34;$i$08 = $46; + } else { + break; + } + } + STACKTOP = sp;return; +} +function _vorbis_staticbook_pack($c,$opb) { + $c = $c|0; + $opb = $opb|0; + var $$0 = 0, $$lcssa = 0, $$pre = 0, $$pre49$pre = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0; + var $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0; + var $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0; + var $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0; + var $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0; + var $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $count$0$lcssa = 0, $count$08 = 0, $count$16 = 0, $count$2 = 0, $exitcond = 0, $exitcond45 = 0, $i$0$lcssa = 0, $i$029 = 0, $i$1$lcssa = 0, $i$19 = 0; + var $i$2$lcssa = 0, $i$222 = 0, $i$316 = 0, $i$419 = 0, $i$54 = 0, $ispos = 0, $j$05 = 0, $neg = 0, $quantvals$0 = 0, label = 0, sp = 0; + sp = STACKTOP; + _oggpack_write($opb,5653314,24); + $0 = HEAP32[$c>>2]|0; + _oggpack_write($opb,$0,16); + $1 = ((($c)) + 4|0); + $2 = HEAP32[$1>>2]|0; + _oggpack_write($opb,$2,24); + $3 = HEAP32[$1>>2]|0; + $4 = ($3|0)>(1); + L1: do { + if ($4) { + $5 = ((($c)) + 8|0); + $6 = HEAP32[$5>>2]|0; + $$pre = HEAP8[$6>>0]|0; + $7 = $$pre;$i$029 = 1; + while(1) { + $8 = ($7<<24>>24)==(0); + if ($8) { + $i$0$lcssa = $i$029; + break L1; + } + $9 = (($6) + ($i$029)|0); + $10 = HEAP8[$9>>0]|0; + $11 = ($10<<24>>24)<($7<<24>>24); + if ($11) { + $i$0$lcssa = $i$029; + break L1; + } + $12 = (($i$029) + 1)|0; + $13 = ($12|0)<($3|0); + if ($13) { + $7 = $10;$i$029 = $12; + } else { + $i$0$lcssa = $12; + break; + } + } + } else { + $i$0$lcssa = 1; + } + } while(0); + $14 = ($i$0$lcssa|0)==($3|0); + L8: do { + if ($14) { + _oggpack_write($opb,1,1); + $15 = ((($c)) + 8|0); + $16 = HEAP32[$15>>2]|0; + $17 = HEAP8[$16>>0]|0; + $18 = $17 << 24 >> 24; + $19 = (($18) + -1)|0; + _oggpack_write($opb,$19,5); + $20 = HEAP32[$1>>2]|0; + $21 = ($20|0)>(1); + if ($21) { + $105 = $20;$count$08 = 0;$i$19 = 1; + while(1) { + $22 = HEAP32[$15>>2]|0; + $23 = (($22) + ($i$19)|0); + $24 = HEAP8[$23>>0]|0; + $25 = (($i$19) + -1)|0; + $26 = (($22) + ($25)|0); + $27 = HEAP8[$26>>0]|0; + $28 = ($24<<24>>24)>($27<<24>>24); + if ($28) { + $29 = $27 << 24 >> 24; + $30 = $24 << 24 >> 24; + $33 = $105;$count$16 = $count$08;$j$05 = $29; + while(1) { + $31 = (($i$19) - ($count$16))|0; + $32 = (($33) - ($count$16))|0; + $34 = (_ov_ilog($32)|0); + _oggpack_write($opb,$31,$34); + $35 = (($j$05) + 1)|0; + $exitcond45 = ($35|0)==($30|0); + $$pre49$pre = HEAP32[$1>>2]|0; + if ($exitcond45) { + $38 = $$pre49$pre;$count$2 = $i$19; + break; + } else { + $33 = $$pre49$pre;$count$16 = $i$19;$j$05 = $35; + } + } + } else { + $38 = $105;$count$2 = $count$08; + } + $36 = (($i$19) + 1)|0; + $37 = ($36|0)<($38|0); + if ($37) { + $105 = $38;$count$08 = $count$2;$i$19 = $36; + } else { + $$lcssa = $38;$count$0$lcssa = $count$2;$i$1$lcssa = $36; + break; + } + } + } else { + $$lcssa = $20;$count$0$lcssa = 0;$i$1$lcssa = 1; + } + $39 = (($i$1$lcssa) - ($count$0$lcssa))|0; + $40 = (($$lcssa) - ($count$0$lcssa))|0; + $41 = (_ov_ilog($40)|0); + _oggpack_write($opb,$39,$41); + } else { + _oggpack_write($opb,0,1); + $42 = HEAP32[$1>>2]|0; + $43 = ($42|0)>(0); + L20: do { + if ($43) { + $44 = ((($c)) + 8|0); + $45 = HEAP32[$44>>2]|0; + $i$222 = 0; + while(1) { + $46 = (($45) + ($i$222)|0); + $47 = HEAP8[$46>>0]|0; + $48 = ($47<<24>>24)==(0); + if ($48) { + $i$2$lcssa = $i$222; + break L20; + } + $49 = (($i$222) + 1)|0; + $50 = ($49|0)<($42|0); + if ($50) { + $i$222 = $49; + } else { + $i$2$lcssa = $49; + break; + } + } + } else { + $i$2$lcssa = 0; + } + } while(0); + $51 = ($i$2$lcssa|0)==($42|0); + if ($51) { + _oggpack_write($opb,0,1); + $52 = HEAP32[$1>>2]|0; + $53 = ($52|0)>(0); + if (!($53)) { + break; + } + $54 = ((($c)) + 8|0); + $i$316 = 0; + while(1) { + $55 = HEAP32[$54>>2]|0; + $56 = (($55) + ($i$316)|0); + $57 = HEAP8[$56>>0]|0; + $58 = $57 << 24 >> 24; + $59 = (($58) + -1)|0; + _oggpack_write($opb,$59,5); + $60 = (($i$316) + 1)|0; + $61 = HEAP32[$1>>2]|0; + $62 = ($60|0)<($61|0); + if ($62) { + $i$316 = $60; + } else { + break L8; + } + } + } + _oggpack_write($opb,1,1); + $63 = HEAP32[$1>>2]|0; + $64 = ($63|0)>(0); + if ($64) { + $65 = ((($c)) + 8|0); + $i$419 = 0; + while(1) { + $66 = HEAP32[$65>>2]|0; + $67 = (($66) + ($i$419)|0); + $68 = HEAP8[$67>>0]|0; + $69 = ($68<<24>>24)==(0); + if ($69) { + _oggpack_write($opb,0,1); + } else { + _oggpack_write($opb,1,1); + $70 = HEAP32[$65>>2]|0; + $71 = (($70) + ($i$419)|0); + $72 = HEAP8[$71>>0]|0; + $73 = $72 << 24 >> 24; + $74 = (($73) + -1)|0; + _oggpack_write($opb,$74,5); + } + $75 = (($i$419) + 1)|0; + $76 = HEAP32[$1>>2]|0; + $77 = ($75|0)<($76|0); + if ($77) { + $i$419 = $75; + } else { + break; + } + } + } + } + } while(0); + $78 = ((($c)) + 12|0); + $79 = HEAP32[$78>>2]|0; + _oggpack_write($opb,$79,4); + $80 = HEAP32[$78>>2]|0; + if ((($80|0) == 2) | (($80|0) == 1)) { + label = 28; + } else if (!((($80|0) == 0))) { + $$0 = -1; + return ($$0|0); + } + do { + if ((label|0) == 28) { + $81 = ((($c)) + 32|0); + $82 = HEAP32[$81>>2]|0; + $83 = ($82|0)==(0|0); + if ($83) { + $$0 = -1; + return ($$0|0); + } + $84 = ((($c)) + 16|0); + $85 = HEAP32[$84>>2]|0; + _oggpack_write($opb,$85,32); + $86 = ((($c)) + 20|0); + $87 = HEAP32[$86>>2]|0; + _oggpack_write($opb,$87,32); + $88 = ((($c)) + 24|0); + $89 = HEAP32[$88>>2]|0; + $90 = (($89) + -1)|0; + _oggpack_write($opb,$90,4); + $91 = ((($c)) + 28|0); + $92 = HEAP32[$91>>2]|0; + _oggpack_write($opb,$92,1); + $93 = HEAP32[$78>>2]|0; + if ((($93|0) == 1)) { + $94 = (__book_maptype1_quantvals($c)|0); + $quantvals$0 = $94; + } else if ((($93|0) == 2)) { + $95 = HEAP32[$1>>2]|0; + $96 = HEAP32[$c>>2]|0; + $97 = Math_imul($96, $95)|0; + $quantvals$0 = $97; + } else { + break; + } + $98 = ($quantvals$0|0)>(0); + if ($98) { + $i$54 = 0; + while(1) { + $99 = HEAP32[$81>>2]|0; + $100 = (($99) + ($i$54<<2)|0); + $101 = HEAP32[$100>>2]|0; + $ispos = ($101|0)>(-1); + $neg = (0 - ($101))|0; + $102 = $ispos ? $101 : $neg; + $103 = HEAP32[$88>>2]|0; + _oggpack_write($opb,$102,$103); + $104 = (($i$54) + 1)|0; + $exitcond = ($104|0)==($quantvals$0|0); + if ($exitcond) { + break; + } else { + $i$54 = $104; + } + } + } + } + } while(0); + $$0 = 0; + return ($$0|0); +} +function _vorbis_book_encode($book,$a,$b) { + $book = $book|0; + $a = $a|0; + $b = $b|0; + var $$0 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0; + var $8 = 0, $9 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($a|0)<(0); + if ($0) { + $$0 = 0; + return ($$0|0); + } + $1 = ((($book)) + 12|0); + $2 = HEAP32[$1>>2]|0; + $3 = ((($2)) + 4|0); + $4 = HEAP32[$3>>2]|0; + $5 = ($4|0)>($a|0); + if (!($5)) { + $$0 = 0; + return ($$0|0); + } + $6 = ((($book)) + 20|0); + $7 = HEAP32[$6>>2]|0; + $8 = (($7) + ($a<<2)|0); + $9 = HEAP32[$8>>2]|0; + $10 = ((($2)) + 8|0); + $11 = HEAP32[$10>>2]|0; + $12 = (($11) + ($a)|0); + $13 = HEAP8[$12>>0]|0; + $14 = $13 << 24 >> 24; + _oggpack_write($b,$9,$14); + $15 = HEAP32[$1>>2]|0; + $16 = ((($15)) + 8|0); + $17 = HEAP32[$16>>2]|0; + $18 = (($17) + ($a)|0); + $19 = HEAP8[$18>>0]|0; + $20 = $19 << 24 >> 24; + $$0 = $20; + return ($$0|0); +} +function _vorbis_book_decode($book,$b) { + $book = $book|0; + $b = $b|0; + var $$0 = 0, $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($book)) + 8|0); + $1 = HEAP32[$0>>2]|0; + $2 = ($1|0)>(0); + if (!($2)) { + $$0 = -1; + return ($$0|0); + } + $3 = (_decode_packed_entry_number($book,$b)|0); + $4 = ($3|0)>(-1); + if (!($4)) { + $$0 = -1; + return ($$0|0); + } + $5 = ((($book)) + 24|0); + $6 = HEAP32[$5>>2]|0; + $7 = (($6) + ($3<<2)|0); + $8 = HEAP32[$7>>2]|0; + $$0 = $8; + return ($$0|0); +} +function _vorbis_book_decodevs_add($book,$a,$b,$n) { + $book = $book|0; + $a = $a|0; + $b = $b|0; + $n = $n|0; + var $$0 = 0, $$alloca_mul = 0, $$not = 0, $$not10 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0.0, $17 = 0, $18 = 0, $19 = 0.0, $2 = 0, $20 = 0.0, $21 = 0, $22 = 0; + var $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $brmerge = 0, $exitcond = 0, $i$06 = 0, $i$14$us = 0, $j$03$us = 0; + var $o$05$us = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($book)) + 8|0); + $1 = HEAP32[$0>>2]|0; + $2 = ($1|0)>(0); + if (!($2)) { + $$0 = 0; + STACKTOP = sp;return ($$0|0); + } + $3 = HEAP32[$book>>2]|0; + $4 = (($n|0) / ($3|0))&-1; + $5 = $4 << 2; + $$alloca_mul = $5; + $6 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul)|0)+15)&-16)|0;; + $7 = ($4|0)>(0); + L4: do { + if ($7) { + $8 = ((($book)) + 16|0); + $i$06 = 0; + while(1) { + $22 = (_decode_packed_entry_number($book,$b)|0); + $23 = ($22|0)==(-1); + if ($23) { + $$0 = -1; + break; + } + $24 = HEAP32[$8>>2]|0; + $25 = HEAP32[$book>>2]|0; + $26 = Math_imul($25, $22)|0; + $27 = (($24) + ($26<<2)|0); + $28 = (($6) + ($i$06<<2)|0); + HEAP32[$28>>2] = $27; + $29 = (($i$06) + 1)|0; + $30 = ($29|0)<($4|0); + if ($30) { + $i$06 = $29; + } else { + $9 = $25; + break L4; + } + } + STACKTOP = sp;return ($$0|0); + } else { + $9 = $3; + } + } while(0); + $$not = ($9|0)<(1); + $$not10 = $7 ^ 1; + $brmerge = $$not | $$not10; + if ($brmerge) { + $$0 = 0; + STACKTOP = sp;return ($$0|0); + } else { + $i$14$us = 0;$o$05$us = 0; + } + while(1) { + $j$03$us = 0; + while(1) { + $13 = (($6) + ($j$03$us<<2)|0); + $14 = HEAP32[$13>>2]|0; + $15 = (($14) + ($i$14$us<<2)|0); + $16 = +HEAPF32[$15>>2]; + $17 = (($j$03$us) + ($o$05$us))|0; + $18 = (($a) + ($17<<2)|0); + $19 = +HEAPF32[$18>>2]; + $20 = $19 + $16; + HEAPF32[$18>>2] = $20; + $21 = (($j$03$us) + 1)|0; + $exitcond = ($21|0)==($4|0); + if ($exitcond) { + break; + } else { + $j$03$us = $21; + } + } + $10 = (($i$14$us) + 1)|0; + $11 = (($o$05$us) + ($4))|0; + $12 = ($10|0)<($9|0); + if ($12) { + $i$14$us = $10;$o$05$us = $11; + } else { + $$0 = 0; + break; + } + } + STACKTOP = sp;return ($$0|0); +} +function _vorbis_book_decodev_add($book,$a,$b,$n) { + $book = $book|0; + $a = $a|0; + $b = $b|0; + $n = $n|0; + var $$0 = 0, $$lcssa = 0, $$lcssa134 = 0, $$lcssa135 = 0, $$lcssa136 = 0, $$lcssa137 = 0, $$lcssa138 = 0, $$lcssa139 = 0, $$lcssa140 = 0, $$lcssa142 = 0, $$lcssa143 = 0, $$lcssa144 = 0, $$lcssa145 = 0, $$lcssa146 = 0, $$lcssa147 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $$sum3 = 0, $$sum4 = 0; + var $$sum5 = 0, $$sum6 = 0, $$sum7 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0.0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0; + var $19 = 0, $2 = 0, $20 = 0.0, $21 = 0, $22 = 0, $23 = 0.0, $24 = 0.0, $25 = 0, $26 = 0, $27 = 0, $28 = 0.0, $29 = 0, $3 = 0, $30 = 0, $31 = 0.0, $32 = 0.0, $33 = 0, $34 = 0, $35 = 0, $36 = 0; + var $37 = 0, $38 = 0.0, $39 = 0, $4 = 0, $40 = 0, $41 = 0.0, $42 = 0.0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0.0, $49 = 0, $5 = 0, $50 = 0, $51 = 0.0, $52 = 0.0, $53 = 0, $54 = 0; + var $55 = 0, $56 = 0, $57 = 0, $58 = 0.0, $59 = 0, $6 = 0, $60 = 0, $61 = 0.0, $62 = 0.0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0.0, $69 = 0, $7 = 0, $70 = 0, $71 = 0.0, $72 = 0.0; + var $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0.0, $79 = 0, $8 = 0, $80 = 0, $81 = 0.0, $82 = 0.0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0.0, $89 = 0, $9 = 0, $90 = 0; + var $91 = 0.0, $92 = 0.0, $93 = 0, $94 = 0, $95 = 0, $96 = 0.0, $97 = 0, $98 = 0, $99 = 0.0, $i$036 = 0, $i$1$lcssa = 0, $i$134 = 0, $i$2$ph116 = 0, $i$3 = 0, $i$4 = 0, $i$5 = 0, $i$6 = 0, $i$7 = 0, $i$8 = 0, $i$9 = 0; + var $j$035 = 0, $j$1 = 0, $j$2 = 0, $j$3 = 0, $j$4 = 0, $j$5 = 0, $j$6 = 0, $j$7 = 0, $smax = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($book)) + 8|0); + $1 = HEAP32[$0>>2]|0; + $2 = ($1|0)>(0); + if (!($2)) { + $$0 = 0; + return ($$0|0); + } + $3 = HEAP32[$book>>2]|0; + $4 = ($3|0)>(8); + if ($4) { + $7 = ($n|0)>(0); + if (!($7)) { + $$0 = 0; + return ($$0|0); + } + $8 = ((($book)) + 16|0); + $i$036 = 0; + while(1) { + $11 = (_decode_packed_entry_number($book,$b)|0); + $12 = ($11|0)==(-1); + if ($12) { + $$0 = -1; + label = 29; + break; + } + $13 = HEAP32[$8>>2]|0; + $14 = HEAP32[$book>>2]|0; + $15 = Math_imul($14, $11)|0; + $16 = ($14|0)>(0); + if ($16) { + $17 = ($14|0)>(1); + $smax = $17 ? $14 : 1; + $i$134 = $i$036;$j$035 = 0; + while(1) { + $18 = (($j$035) + 1)|0; + $$sum7 = (($j$035) + ($15))|0; + $19 = (($13) + ($$sum7<<2)|0); + $20 = +HEAPF32[$19>>2]; + $21 = (($i$134) + 1)|0; + $22 = (($a) + ($i$134<<2)|0); + $23 = +HEAPF32[$22>>2]; + $24 = $23 + $20; + HEAPF32[$22>>2] = $24; + $25 = ($18|0)<($14|0); + if ($25) { + $i$134 = $21;$j$035 = $18; + } else { + break; + } + } + $9 = (($i$036) + ($smax))|0; + $i$1$lcssa = $9; + } else { + $i$1$lcssa = $i$036; + } + $10 = ($i$1$lcssa|0)<($n|0); + if ($10) { + $i$036 = $i$1$lcssa; + } else { + $$0 = 0; + label = 29; + break; + } + } + if ((label|0) == 29) { + return ($$0|0); + } + } + $5 = ((($book)) + 16|0); + $6 = ($n|0)>(0); + if ($6) { + $i$2$ph116 = 0; + } else { + $$0 = 0; + return ($$0|0); + } + L24: while(1) { + L26: while(1) { + $102 = (_decode_packed_entry_number($book,$b)|0); + $103 = ($102|0)==(-1); + if ($103) { + $$0 = -1; + label = 29; + break L24; + } + $104 = HEAP32[$5>>2]|0; + $105 = HEAP32[$book>>2]|0; + switch ($105|0) { + case 4: { + $$lcssa138 = $102;$$lcssa145 = $104; + label = 19; + break L26; + break; + } + case 3: { + $$lcssa139 = $102;$$lcssa146 = $104; + label = 21; + break L26; + break; + } + case 7: { + $$lcssa135 = $102;$$lcssa142 = $104; + label = 13; + break L26; + break; + } + case 6: { + $$lcssa136 = $102;$$lcssa143 = $104; + label = 15; + break L26; + break; + } + case 8: { + $$lcssa = $104;$$lcssa134 = $102; + label = 12; + break L26; + break; + } + case 5: { + $$lcssa137 = $102;$$lcssa144 = $104; + label = 17; + break L26; + break; + } + case 1: { + $93 = $102;$95 = $104;$i$9 = $i$2$ph116;$j$7 = 0; + break L26; + break; + } + case 2: { + $$lcssa140 = $102;$$lcssa147 = $104; + label = 23; + break L26; + break; + } + default: { + } + } + } + if ((label|0) == 12) { + label = 0; + $26 = $$lcssa134 << 3; + $27 = (($$lcssa) + ($26<<2)|0); + $28 = +HEAPF32[$27>>2]; + $29 = (($i$2$ph116) + 1)|0; + $30 = (($a) + ($i$2$ph116<<2)|0); + $31 = +HEAPF32[$30>>2]; + $32 = $31 + $28; + HEAPF32[$30>>2] = $32; + $35 = $26;$37 = $$lcssa;$i$3 = $29;$j$1 = 1; + label = 14; + } + else if ((label|0) == 13) { + label = 0; + $33 = ($$lcssa135*7)|0; + $35 = $33;$37 = $$lcssa142;$i$3 = $i$2$ph116;$j$1 = 0; + label = 14; + } + else if ((label|0) == 15) { + label = 0; + $43 = ($$lcssa136*6)|0; + $45 = $43;$47 = $$lcssa143;$i$4 = $i$2$ph116;$j$2 = 0; + label = 16; + } + else if ((label|0) == 17) { + label = 0; + $53 = ($$lcssa137*5)|0; + $55 = $53;$57 = $$lcssa144;$i$5 = $i$2$ph116;$j$3 = 0; + label = 18; + } + else if ((label|0) == 19) { + label = 0; + $63 = $$lcssa138 << 2; + $65 = $63;$67 = $$lcssa145;$i$6 = $i$2$ph116;$j$4 = 0; + label = 20; + } + else if ((label|0) == 21) { + label = 0; + $73 = ($$lcssa139*3)|0; + $75 = $73;$77 = $$lcssa146;$i$7 = $i$2$ph116;$j$5 = 0; + label = 22; + } + else if ((label|0) == 23) { + label = 0; + $83 = $$lcssa140 << 1; + $85 = $83;$87 = $$lcssa147;$i$8 = $i$2$ph116;$j$6 = 0; + label = 24; + } + if ((label|0) == 14) { + label = 0; + $34 = (($j$1) + 1)|0; + $$sum6 = (($j$1) + ($35))|0; + $36 = (($37) + ($$sum6<<2)|0); + $38 = +HEAPF32[$36>>2]; + $39 = (($i$3) + 1)|0; + $40 = (($a) + ($i$3<<2)|0); + $41 = +HEAPF32[$40>>2]; + $42 = $41 + $38; + HEAPF32[$40>>2] = $42; + $45 = $35;$47 = $37;$i$4 = $39;$j$2 = $34; + label = 16; + } + if ((label|0) == 16) { + label = 0; + $44 = (($j$2) + 1)|0; + $$sum5 = (($j$2) + ($45))|0; + $46 = (($47) + ($$sum5<<2)|0); + $48 = +HEAPF32[$46>>2]; + $49 = (($i$4) + 1)|0; + $50 = (($a) + ($i$4<<2)|0); + $51 = +HEAPF32[$50>>2]; + $52 = $51 + $48; + HEAPF32[$50>>2] = $52; + $55 = $45;$57 = $47;$i$5 = $49;$j$3 = $44; + label = 18; + } + if ((label|0) == 18) { + label = 0; + $54 = (($j$3) + 1)|0; + $$sum4 = (($j$3) + ($55))|0; + $56 = (($57) + ($$sum4<<2)|0); + $58 = +HEAPF32[$56>>2]; + $59 = (($i$5) + 1)|0; + $60 = (($a) + ($i$5<<2)|0); + $61 = +HEAPF32[$60>>2]; + $62 = $61 + $58; + HEAPF32[$60>>2] = $62; + $65 = $55;$67 = $57;$i$6 = $59;$j$4 = $54; + label = 20; + } + if ((label|0) == 20) { + label = 0; + $64 = (($j$4) + 1)|0; + $$sum3 = (($j$4) + ($65))|0; + $66 = (($67) + ($$sum3<<2)|0); + $68 = +HEAPF32[$66>>2]; + $69 = (($i$6) + 1)|0; + $70 = (($a) + ($i$6<<2)|0); + $71 = +HEAPF32[$70>>2]; + $72 = $71 + $68; + HEAPF32[$70>>2] = $72; + $75 = $65;$77 = $67;$i$7 = $69;$j$5 = $64; + label = 22; + } + if ((label|0) == 22) { + label = 0; + $74 = (($j$5) + 1)|0; + $$sum2 = (($j$5) + ($75))|0; + $76 = (($77) + ($$sum2<<2)|0); + $78 = +HEAPF32[$76>>2]; + $79 = (($i$7) + 1)|0; + $80 = (($a) + ($i$7<<2)|0); + $81 = +HEAPF32[$80>>2]; + $82 = $81 + $78; + HEAPF32[$80>>2] = $82; + $85 = $75;$87 = $77;$i$8 = $79;$j$6 = $74; + label = 24; + } + if ((label|0) == 24) { + label = 0; + $84 = (($j$6) + 1)|0; + $$sum1 = (($j$6) + ($85))|0; + $86 = (($87) + ($$sum1<<2)|0); + $88 = +HEAPF32[$86>>2]; + $89 = (($i$8) + 1)|0; + $90 = (($a) + ($i$8<<2)|0); + $91 = +HEAPF32[$90>>2]; + $92 = $91 + $88; + HEAPF32[$90>>2] = $92; + $93 = $85;$95 = $87;$i$9 = $89;$j$7 = $84; + } + $$sum = (($j$7) + ($93))|0; + $94 = (($95) + ($$sum<<2)|0); + $96 = +HEAPF32[$94>>2]; + $97 = (($i$9) + 1)|0; + $98 = (($a) + ($i$9<<2)|0); + $99 = +HEAPF32[$98>>2]; + $100 = $99 + $96; + HEAPF32[$98>>2] = $100; + $101 = ($97|0)<($n|0); + if ($101) { + $i$2$ph116 = $97; + } else { + $$0 = 0; + label = 29; + break; + } + } + if ((label|0) == 29) { + return ($$0|0); + } + return (0)|0; +} +function _vorbis_book_decodevv_add($book,$a,$offset,$ch,$b,$n) { + $book = $book|0; + $a = $a|0; + $offset = $offset|0; + $ch = $ch|0; + $b = $b|0; + $n = $n|0; + var $$ = 0, $$0 = 0, $$i$1 = 0, $$sum = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0.0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0.0, $22 = 0.0; + var $23 = 0, $24 = 0, $25 = 0, $26 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $chptr$07 = 0, $chptr$1$lcssa = 0, $chptr$14 = 0, $i$06 = 0, $i$1$lcssa = 0, $i$13 = 0, $j$02 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($book)) + 8|0); + $1 = HEAP32[$0>>2]|0; + $2 = ($1|0)>(0); + if (!($2)) { + $$0 = 0; + return ($$0|0); + } + $3 = (($offset|0) / ($ch|0))&-1; + $4 = (($n) + ($offset))|0; + $5 = (($4|0) / ($ch|0))&-1; + $6 = ($3|0)<($5|0); + if (!($6)) { + $$0 = 0; + return ($$0|0); + } + $7 = ((($book)) + 16|0); + $chptr$07 = 0;$i$06 = $3; + while(1) { + $9 = (_decode_packed_entry_number($book,$b)|0); + $10 = ($9|0)==(-1); + if ($10) { + $$0 = -1; + label = 8; + break; + } + $11 = HEAP32[$7>>2]|0; + $12 = HEAP32[$book>>2]|0; + $13 = Math_imul($12, $9)|0; + $14 = ($12|0)>(0); + if ($14) { + $chptr$14 = $chptr$07;$i$13 = $i$06;$j$02 = 0; + while(1) { + $$sum = (($j$02) + ($13))|0; + $15 = (($11) + ($$sum<<2)|0); + $16 = +HEAPF32[$15>>2]; + $17 = (($chptr$14) + 1)|0; + $18 = (($a) + ($chptr$14<<2)|0); + $19 = HEAP32[$18>>2]|0; + $20 = (($19) + ($i$13<<2)|0); + $21 = +HEAPF32[$20>>2]; + $22 = $21 + $16; + HEAPF32[$20>>2] = $22; + $23 = ($17|0)==($ch|0); + $24 = $23&1; + $$i$1 = (($24) + ($i$13))|0; + $$ = $23 ? 0 : $17; + $25 = (($j$02) + 1)|0; + $26 = ($25|0)<($12|0); + if ($26) { + $chptr$14 = $$;$i$13 = $$i$1;$j$02 = $25; + } else { + $chptr$1$lcssa = $$;$i$1$lcssa = $$i$1; + break; + } + } + } else { + $chptr$1$lcssa = $chptr$07;$i$1$lcssa = $i$06; + } + $8 = ($i$1$lcssa|0)<($5|0); + if ($8) { + $chptr$07 = $chptr$1$lcssa;$i$06 = $i$1$lcssa; + } else { + $$0 = 0; + label = 8; + break; + } + } + if ((label|0) == 8) { + return ($$0|0); + } + return (0)|0; +} +function _decode_packed_entry_number($book,$b) { + $book = $book|0; + $b = $b|0; + var $$0 = 0, $$lcssa = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0; + var $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0; + var $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0; + var $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $8 = 0; + var $9 = 0, $hi$0 = 0, $hi$11 = 0, $lo$0 = 0, $lo$1$lcssa = 0, $lo$12 = 0, $lok$0$lcssa = 0, $read$0$lcssa = 0, $read$03 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($book)) + 40|0); + $1 = HEAP32[$0>>2]|0; + $2 = ((($book)) + 36|0); + $3 = HEAP32[$2>>2]|0; + $4 = (_oggpack_look($b,$3)|0); + $5 = ($4|0)>(-1); + do { + if ($5) { + $6 = ((($book)) + 32|0); + $7 = HEAP32[$6>>2]|0; + $8 = (($7) + ($4<<2)|0); + $9 = HEAP32[$8>>2]|0; + $10 = ($9|0)<(0); + if ($10) { + $11 = $9 >>> 15; + $12 = $11 & 32767; + $13 = ((($book)) + 8|0); + $14 = HEAP32[$13>>2]|0; + $15 = $9 & 32767; + $16 = (($14) - ($15))|0; + $hi$0 = $16;$lo$0 = $12; + break; + } + $17 = (($9) + -1)|0; + $18 = ((($book)) + 28|0); + $19 = HEAP32[$18>>2]|0; + $20 = (($19) + ($17)|0); + $21 = HEAP8[$20>>0]|0; + $22 = $21 << 24 >> 24; + _oggpack_adv($b,$22); + $$0 = $17; + return ($$0|0); + } else { + $23 = ((($book)) + 8|0); + $24 = HEAP32[$23>>2]|0; + $hi$0 = $24;$lo$0 = 0; + } + } while(0); + $25 = (_oggpack_look($b,$1)|0); + $26 = ($25|0)<(0); + $27 = ($1|0)>(1); + $28 = $26 & $27; + if ($28) { + $read$03 = $1; + while(1) { + $29 = (($read$03) + -1)|0; + $30 = (_oggpack_look($b,$29)|0); + $31 = ($30|0)<(0); + $32 = ($29|0)>(1); + $33 = $31 & $32; + if ($33) { + $read$03 = $29; + } else { + $$lcssa = $31;$lok$0$lcssa = $30;$read$0$lcssa = $29; + break; + } + } + } else { + $$lcssa = $26;$lok$0$lcssa = $25;$read$0$lcssa = $1; + } + if ($$lcssa) { + $$0 = -1; + return ($$0|0); + } + $34 = $lok$0$lcssa >>> 16; + $35 = $lok$0$lcssa << 16; + $36 = $34 | $35; + $37 = $36 >>> 8; + $38 = $37 & 16711935; + $39 = $36 << 8; + $40 = $39 & -16711936; + $41 = $38 | $40; + $42 = $41 >>> 4; + $43 = $42 & 252645135; + $44 = $41 << 4; + $45 = $44 & -252645136; + $46 = $43 | $45; + $47 = $46 >>> 2; + $48 = $47 & 858993459; + $49 = $46 << 2; + $50 = $49 & -858993460; + $51 = $48 | $50; + $52 = $51 >>> 1; + $53 = $52 & 1431655765; + $54 = $51 << 1; + $55 = $54 & -1431655766; + $56 = $53 | $55; + $57 = (($hi$0) - ($lo$0))|0; + $58 = ($57|0)>(1); + if ($58) { + $59 = ((($book)) + 20|0); + $60 = HEAP32[$59>>2]|0; + $62 = $57;$hi$11 = $hi$0;$lo$12 = $lo$0; + while(1) { + $61 = $62 >> 1; + $63 = (($61) + ($lo$12))|0; + $64 = (($60) + ($63<<2)|0); + $65 = HEAP32[$64>>2]|0; + $66 = ($65>>>0)>($56>>>0); + $67 = $66 ? 0 : $61; + $68 = (($67) + ($lo$12))|0; + $69 = $66 ? $61 : 0; + $70 = (($hi$11) - ($69))|0; + $71 = (($70) - ($68))|0; + $72 = ($71|0)>(1); + if ($72) { + $62 = $71;$hi$11 = $70;$lo$12 = $68; + } else { + $lo$1$lcssa = $68; + break; + } + } + } else { + $lo$1$lcssa = $lo$0; + } + $73 = ((($book)) + 28|0); + $74 = HEAP32[$73>>2]|0; + $75 = (($74) + ($lo$1$lcssa)|0); + $76 = HEAP8[$75>>0]|0; + $77 = $76 << 24 >> 24; + $78 = ($77|0)>($read$0$lcssa|0); + if ($78) { + _oggpack_adv($b,$read$0$lcssa); + $$0 = -1; + return ($$0|0); + } else { + _oggpack_adv($b,$77); + $$0 = $lo$1$lcssa; + return ($$0|0); + } + return (0)|0; +} +function __ve_envelope_init($e,$vi) { + $e = $e|0; + $vi = $vi|0; + var $$lcssa = 0.0, $$phi$trans$insert = 0, $$phi$trans$insert8 = 0, $$pre = 0, $$pre$phiZ2D = 0, $$pre9 = 0.0, $$promoted = 0.0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0.0, $19 = 0.0, $2 = 0; + var $20 = 0.0, $21 = 0.0, $22 = 0, $23 = 0.0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0; + var $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0.0, $45 = 0, $46 = 0.0, $47 = 0.0, $48 = 0.0, $49 = 0.0, $5 = 0, $50 = 0.0, $51 = 0.0, $52 = 0, $53 = 0.0, $54 = 0.0, $55 = 0, $56 = 0.0; + var $57 = 0.0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $7 = 0, $8 = 0, $9 = 0, $exitcond = 0, $exitcond4 = 0, $exitcond5 = 0, $i$03 = 0, $i$11 = 0, $j$02 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($vi)) + 28|0); + $1 = HEAP32[$0>>2]|0; + $2 = ((($vi)) + 4|0); + $3 = HEAP32[$2>>2]|0; + $4 = ((($e)) + 4|0); + HEAP32[$4>>2] = 128; + $5 = ((($e)) + 8|0); + HEAP32[$5>>2] = 64; + $6 = ((($1)) + 2932|0); + $7 = HEAP32[$6>>2]|0; + $8 = ((($e)) + 12|0); + HEAP32[$8>>2] = $7; + HEAP32[$e>>2] = $3; + $9 = ((($e)) + 164|0); + HEAP32[$9>>2] = 128; + $10 = ((($1)) + 4|0); + $11 = HEAP32[$10>>2]|0; + $12 = (($11|0) / 2)&-1; + $13 = ((($e)) + 176|0); + HEAP32[$13>>2] = $12; + $14 = (_calloc(128,4)|0); + $15 = ((($e)) + 36|0); + HEAP32[$15>>2] = $14; + $16 = ((($e)) + 16|0); + _mdct_init($16,128); + $17 = HEAP32[$15>>2]|0; + $i$03 = 0; + while(1) { + $18 = (+($i$03|0)); + $19 = $18 * 0.024736950028266088; + $20 = (+Math_sin((+$19))); + $21 = $20; + $22 = (($17) + ($i$03<<2)|0); + $23 = $21 * $21; + HEAPF32[$22>>2] = $23; + $24 = (($i$03) + 1)|0; + $exitcond5 = ($24|0)==(128); + if ($exitcond5) { + break; + } else { + $i$03 = $24; + } + } + $25 = ((($e)) + 40|0); + HEAP32[$25>>2] = 2; + $26 = ((($e)) + 44|0); + HEAP32[$26>>2] = 4; + $27 = ((($e)) + 56|0); + HEAP32[$27>>2] = 4; + $28 = ((($e)) + 60|0); + HEAP32[$28>>2] = 5; + $29 = ((($e)) + 72|0); + HEAP32[$29>>2] = 6; + $30 = ((($e)) + 76|0); + HEAP32[$30>>2] = 6; + $31 = ((($e)) + 88|0); + HEAP32[$31>>2] = 9; + $32 = ((($e)) + 92|0); + HEAP32[$32>>2] = 8; + $33 = ((($e)) + 104|0); + HEAP32[$33>>2] = 13; + $34 = ((($e)) + 108|0); + HEAP32[$34>>2] = 8; + $35 = ((($e)) + 120|0); + HEAP32[$35>>2] = 17; + $36 = ((($e)) + 124|0); + HEAP32[$36>>2] = 8; + $37 = ((($e)) + 136|0); + HEAP32[$37>>2] = 22; + $38 = ((($e)) + 140|0); + HEAP32[$38>>2] = 8; + $40 = 4;$j$02 = 0; + while(1) { + $39 = $40 << 2; + $41 = (_malloc($39)|0); + $42 = (((((($e)) + 40|0) + ($j$02<<4)|0)) + 8|0); + HEAP32[$42>>2] = $41; + $43 = ($40|0)>(0); + if ($43) { + $44 = (+($40|0)); + $45 = (((((($e)) + 40|0) + ($j$02<<4)|0)) + 12|0); + $$promoted = +HEAPF32[$45>>2]; + $54 = $$promoted;$i$11 = 0; + while(1) { + $46 = (+($i$11|0)); + $47 = $46 + 0.5; + $48 = $47 / $44; + $49 = $48 * 3.1415926535897931; + $50 = (+Math_sin((+$49))); + $51 = $50; + $52 = (($41) + ($i$11<<2)|0); + HEAPF32[$52>>2] = $51; + $53 = $54 + $51; + $55 = (($i$11) + 1)|0; + $exitcond = ($55|0)==($40|0); + if ($exitcond) { + $$lcssa = $53; + break; + } else { + $54 = $53;$i$11 = $55; + } + } + HEAPF32[$45>>2] = $$lcssa; + $$pre$phiZ2D = $45;$57 = $$lcssa; + } else { + $$phi$trans$insert8 = (((((($e)) + 40|0) + ($j$02<<4)|0)) + 12|0); + $$pre9 = +HEAPF32[$$phi$trans$insert8>>2]; + $$pre$phiZ2D = $$phi$trans$insert8;$57 = $$pre9; + } + $56 = 1.0 / $57; + HEAPF32[$$pre$phiZ2D>>2] = $56; + $58 = (($j$02) + 1)|0; + $exitcond4 = ($58|0)==(7); + if ($exitcond4) { + break; + } + $$phi$trans$insert = (((((($e)) + 40|0) + ($58<<4)|0)) + 4|0); + $$pre = HEAP32[$$phi$trans$insert>>2]|0; + $40 = $$pre;$j$02 = $58; + } + $59 = ($3*7)|0; + $60 = (_calloc($59,144)|0); + $61 = ((($e)) + 152|0); + HEAP32[$61>>2] = $60; + $62 = HEAP32[$9>>2]|0; + $63 = (_calloc($62,4)|0); + $64 = ((($e)) + 160|0); + HEAP32[$64>>2] = $63; + return; +} +function __ve_envelope_clear($e) { + $e = $e|0; + var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0; + var $9 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($e)) + 16|0); + _mdct_clear($0); + $1 = ((($e)) + 48|0); + $2 = HEAP32[$1>>2]|0; + _free($2); + $3 = ((($e)) + 64|0); + $4 = HEAP32[$3>>2]|0; + _free($4); + $5 = ((($e)) + 80|0); + $6 = HEAP32[$5>>2]|0; + _free($6); + $7 = ((($e)) + 96|0); + $8 = HEAP32[$7>>2]|0; + _free($8); + $9 = ((($e)) + 112|0); + $10 = HEAP32[$9>>2]|0; + _free($10); + $11 = ((($e)) + 128|0); + $12 = HEAP32[$11>>2]|0; + _free($12); + $13 = ((($e)) + 144|0); + $14 = HEAP32[$13>>2]|0; + _free($14); + $15 = ((($e)) + 36|0); + $16 = HEAP32[$15>>2]|0; + _free($16); + $17 = ((($e)) + 152|0); + $18 = HEAP32[$17>>2]|0; + _free($18); + $19 = ((($e)) + 160|0); + $20 = HEAP32[$19>>2]|0; + _free($20); + _memset(($e|0),0,180)|0; + return; +} +function __ve_envelope_search($v) { + $v = $v|0; + var $$ = 0, $$0 = 0, $$1 = 0, $$lcssa = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0; + var $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0; + var $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0; + var $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0; + var $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0; + var $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $exitcond = 0, $i$08 = 0, $j$011 = 0, $j$14 = 0, $j$14$lcssa23 = 0, $or$cond = 0, $ret$07 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($v)) + 4|0); + $1 = HEAP32[$0>>2]|0; + $2 = ((($1)) + 28|0); + $3 = HEAP32[$2>>2]|0; + $4 = ((($3)) + 2868|0); + $5 = ((($v)) + 104|0); + $6 = HEAP32[$5>>2]|0; + $7 = HEAP32[$6>>2]|0; + $8 = ((($7)) + 168|0); + $9 = HEAP32[$8>>2]|0; + $10 = ((($7)) + 8|0); + $11 = HEAP32[$10>>2]|0; + $12 = (($9|0) / ($11|0))&-1; + $13 = ((($v)) + 20|0); + $14 = HEAP32[$13>>2]|0; + $15 = (($14|0) / ($11|0))&-1; + $16 = (($15) + -4)|0; + $17 = ($12|0)<(0); + $$ = $17 ? 0 : $12; + $18 = (($15) + 2)|0; + $19 = ((($7)) + 164|0); + $20 = HEAP32[$19>>2]|0; + $21 = ($18|0)>($20|0); + if ($21) { + HEAP32[$19>>2] = $18; + $22 = ((($7)) + 160|0); + $23 = HEAP32[$22>>2]|0; + $24 = $18 << 2; + $25 = (_realloc($23,$24)|0); + HEAP32[$22>>2] = $25; + } + $26 = ($$|0)<($16|0); + if ($26) { + $27 = ((($7)) + 156|0); + $28 = ((($7)) + 160|0); + $29 = ((($v)) + 8|0); + $30 = ((($7)) + 40|0); + $31 = ((($7)) + 152|0); + $j$011 = $$; + while(1) { + $32 = HEAP32[$27>>2]|0; + $33 = (($32) + 1)|0; + $34 = ($32|0)>(23); + $$1 = $34 ? 24 : $33; + HEAP32[$27>>2] = $$1; + $35 = HEAP32[$7>>2]|0; + $36 = ($35|0)>(0); + if ($36) { + $i$08 = 0;$ret$07 = 0; + while(1) { + $40 = HEAP32[$29>>2]|0; + $41 = (($40) + ($i$08<<2)|0); + $42 = HEAP32[$41>>2]|0; + $43 = HEAP32[$10>>2]|0; + $44 = Math_imul($43, $j$011)|0; + $45 = (($42) + ($44<<2)|0); + $46 = HEAP32[$31>>2]|0; + $47 = ($i$08*7)|0; + $48 = (($46) + (($47*144)|0)|0); + $49 = (__ve_amp($7,$4,$45,$30,$48)|0); + $50 = $49 | $ret$07; + $51 = (($i$08) + 1)|0; + $52 = HEAP32[$7>>2]|0; + $53 = ($51|0)<($52|0); + if ($53) { + $i$08 = $51;$ret$07 = $50; + } else { + $$lcssa = $50; + break; + } + } + $54 = (($j$011) + 2)|0; + $55 = HEAP32[$28>>2]|0; + $56 = (($55) + ($54<<2)|0); + HEAP32[$56>>2] = 0; + $57 = $$lcssa & 1; + $58 = ($57|0)==(0); + if (!($58)) { + $59 = (($55) + ($j$011<<2)|0); + HEAP32[$59>>2] = 1; + $60 = (($j$011) + 1)|0; + $61 = (($55) + ($60<<2)|0); + HEAP32[$61>>2] = 1; + } + $62 = $$lcssa & 2; + $63 = ($62|0)==(0); + if (!($63)) { + $64 = (($55) + ($j$011<<2)|0); + HEAP32[$64>>2] = 1; + $65 = ($j$011|0)>(0); + if ($65) { + $66 = (($j$011) + -1)|0; + $67 = (($55) + ($66<<2)|0); + HEAP32[$67>>2] = 1; + } + } + $68 = $$lcssa & 4; + $69 = ($68|0)==(0); + if (!($69)) { + HEAP32[$27>>2] = -1; + } + } else { + $37 = (($j$011) + 2)|0; + $38 = HEAP32[$28>>2]|0; + $39 = (($38) + ($37<<2)|0); + HEAP32[$39>>2] = 0; + } + $70 = (($j$011) + 1)|0; + $exitcond = ($70|0)==($16|0); + if ($exitcond) { + break; + } else { + $j$011 = $70; + } + } + } + $71 = HEAP32[$10>>2]|0; + $72 = Math_imul($71, $16)|0; + HEAP32[$8>>2] = $72; + $73 = ((($v)) + 48|0); + $74 = HEAP32[$73>>2]|0; + $75 = ((($v)) + 40|0); + $76 = HEAP32[$75>>2]|0; + $77 = (($3) + ($76<<2)|0); + $78 = HEAP32[$77>>2]|0; + $79 = (($78|0) / 4)&-1; + $80 = (($79) + ($74))|0; + $81 = ((($3)) + 4|0); + $82 = HEAP32[$81>>2]|0; + $83 = (($82|0) / 2)&-1; + $84 = (($80) + ($83))|0; + $85 = HEAP32[$3>>2]|0; + $86 = (($85|0) / 4)&-1; + $87 = (($84) + ($86))|0; + $88 = ((($7)) + 176|0); + $89 = HEAP32[$88>>2]|0; + $90 = (($72) - ($71))|0; + $91 = ($89|0)<($90|0); + if (!($91)) { + $$0 = -1; + return ($$0|0); + } + $92 = ((($7)) + 160|0); + $j$14 = $89; + while(1) { + $95 = ($j$14|0)<($87|0); + if (!($95)) { + $$0 = 1; + label = 22; + break; + } + HEAP32[$88>>2] = $j$14; + $96 = (($j$14|0) / ($71|0))&-1; + $97 = HEAP32[$92>>2]|0; + $98 = (($97) + ($96<<2)|0); + $99 = HEAP32[$98>>2]|0; + $100 = ($99|0)!=(0); + $101 = ($j$14|0)>($74|0); + $or$cond = $101 & $100; + $93 = (($71) + ($j$14))|0; + if ($or$cond) { + $j$14$lcssa23 = $j$14; + label = 21; + break; + } + $94 = ($93|0)<($90|0); + if ($94) { + $j$14 = $93; + } else { + $$0 = -1; + label = 22; + break; + } + } + if ((label|0) == 21) { + $102 = ((($7)) + 172|0); + HEAP32[$102>>2] = $j$14$lcssa23; + $$0 = 0; + return ($$0|0); + } + else if ((label|0) == 22) { + return ($$0|0); + } + return (0)|0; +} +function __ve_envelope_mark($v) { + $v = $v|0; + var $$0 = 0, $$pn = 0, $$pn1 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0; + var $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0; + var $42 = 0, $43 = 0, $44 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $beginW$0 = 0, $endW$0 = 0, $i$02 = 0, $or$cond = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($v)) + 104|0); + $1 = HEAP32[$0>>2]|0; + $2 = HEAP32[$1>>2]|0; + $3 = ((($v)) + 4|0); + $4 = HEAP32[$3>>2]|0; + $5 = ((($4)) + 28|0); + $6 = HEAP32[$5>>2]|0; + $7 = ((($v)) + 48|0); + $8 = HEAP32[$7>>2]|0; + $9 = ((($v)) + 40|0); + $10 = HEAP32[$9>>2]|0; + $11 = (($6) + ($10<<2)|0); + $12 = HEAP32[$11>>2]|0; + $13 = (($12|0) / 4)&-1; + $14 = (($8) - ($13))|0; + $15 = (($13) + ($8))|0; + $16 = ($10|0)==(0); + if ($16) { + $27 = HEAP32[$6>>2]|0; + $28 = (($27|0) / 4)&-1; + $$pn = $28;$$pn1 = $28; + } else { + $17 = ((($v)) + 36|0); + $18 = HEAP32[$17>>2]|0; + $19 = (($6) + ($18<<2)|0); + $20 = HEAP32[$19>>2]|0; + $21 = (($20|0) / 4)&-1; + $22 = ((($v)) + 44|0); + $23 = HEAP32[$22>>2]|0; + $24 = (($6) + ($23<<2)|0); + $25 = HEAP32[$24>>2]|0; + $26 = (($25|0) / 4)&-1; + $$pn = $26;$$pn1 = $21; + } + $beginW$0 = (($14) - ($$pn1))|0; + $endW$0 = (($15) + ($$pn))|0; + $29 = ((($2)) + 172|0); + $30 = HEAP32[$29>>2]|0; + $31 = ($30|0)>=($beginW$0|0); + $32 = ($30|0)<($endW$0|0); + $or$cond = $31 & $32; + if ($or$cond) { + $$0 = 1; + return ($$0|0); + } + $33 = ((($2)) + 8|0); + $34 = HEAP32[$33>>2]|0; + $35 = (($beginW$0|0) / ($34|0))&-1; + $36 = (($endW$0|0) / ($34|0))&-1; + $37 = ($35|0)<($36|0); + if (!($37)) { + $$0 = 0; + return ($$0|0); + } + $38 = ((($2)) + 160|0); + $39 = HEAP32[$38>>2]|0; + $i$02 = $35; + while(1) { + $42 = (($39) + ($i$02<<2)|0); + $43 = HEAP32[$42>>2]|0; + $44 = ($43|0)==(0); + $40 = (($i$02) + 1)|0; + if (!($44)) { + $$0 = 1; + label = 9; + break; + } + $41 = ($40|0)<($36|0); + if ($41) { + $i$02 = $40; + } else { + $$0 = 0; + label = 9; + break; + } + } + if ((label|0) == 9) { + return ($$0|0); + } + return (0)|0; +} +function __ve_envelope_shift($e,$shift) { + $e = $e|0; + $shift = $shift|0; + var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0; + var $9 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($e)) + 168|0); + $1 = HEAP32[$0>>2]|0; + $2 = ((($e)) + 8|0); + $3 = HEAP32[$2>>2]|0; + $4 = (($1|0) / ($3|0))&-1; + $5 = (($4) + 2)|0; + $6 = (($shift|0) / ($3|0))&-1; + $7 = ((($e)) + 160|0); + $8 = HEAP32[$7>>2]|0; + $9 = (($8) + ($6<<2)|0); + $10 = (($5) - ($6))|0; + $11 = $10 << 2; + _memmove(($8|0),($9|0),($11|0))|0; + $12 = HEAP32[$0>>2]|0; + $13 = (($12) - ($shift))|0; + HEAP32[$0>>2] = $13; + $14 = ((($e)) + 172|0); + $15 = HEAP32[$14>>2]|0; + $16 = ($15|0)>(-1); + if (!($16)) { + $18 = ((($e)) + 176|0); + $19 = HEAP32[$18>>2]|0; + $20 = (($19) - ($shift))|0; + HEAP32[$18>>2] = $20; + return; + } + $17 = (($15) - ($shift))|0; + HEAP32[$14>>2] = $17; + $18 = ((($e)) + 176|0); + $19 = HEAP32[$18>>2]|0; + $20 = (($19) - ($shift))|0; + HEAP32[$18>>2] = $20; + return; +} +function __ve_amp($ve,$gi,$data,$bands,$filters) { + $ve = $ve|0; + $gi = $gi|0; + $data = $data|0; + $bands = $bands|0; + $filters = $filters|0; + var $$ = 0, $$2 = 0, $$3 = 0, $$3$us = 0, $$3$v = 0, $$3$v$us = 0, $$4 = 0.0, $$4$us = 0.0, $$5$us = 0, $$5$v$us = 0, $$6 = 0, $$6$us = 0, $$alloca_mul = 0, $$in724 = 0.0, $$lcssa48 = 0.0, $$phi$trans$insert = 0, $$pre = 0.0, $$pre$phiZ2D = 0, $$premin$0$us = 0.0, $$premin$0$us$lcssa = 0.0; + var $$v = 0.0, $$v8 = 0.0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0.0, $104 = 0, $105 = 0.0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0.0, $110 = 0, $111 = 0.0, $112 = 0, $113 = 0; + var $114 = 0.0, $115 = 0.0, $116 = 0.0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0.0, $123 = 0, $124 = 0, $125 = 0.0, $126 = 0, $127 = 0, $128 = 0.0, $129 = 0.0, $13 = 0.0, $130 = 0, $131 = 0; + var $132 = 0.0, $133 = 0.0, $134 = 0.0, $135 = 0, $136 = 0, $137 = 0.0, $138 = 0.0, $139 = 0.0, $14 = 0.0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0.0, $147 = 0, $148 = 0, $149 = 0, $15 = 0; + var $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0.0, $157 = 0, $158 = 0.0, $159 = 0.0, $16 = 0, $160 = 0.0, $161 = 0, $162 = 0, $163 = 0, $164 = 0.0, $165 = 0.0, $166 = 0, $167 = 0, $168 = 0; + var $169 = 0, $17 = 0, $170 = 0.0, $171 = 0, $172 = 0.0, $173 = 0, $174 = 0.0, $175 = 0.0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0.0, $182 = 0.0, $183 = 0, $184 = 0, $185 = 0, $186 = 0.0; + var $187 = 0.0, $188 = 0, $189 = 0, $19 = 0, $190 = 0, $2 = 0, $20 = 0, $21 = 0.0, $22 = 0, $23 = 0.0, $24 = 0.0, $25 = 0, $26 = 0, $27 = 0, $28 = 0.0, $29 = 0.0, $3 = 0.0, $30 = 0.0, $31 = 0, $32 = 0.0; + var $33 = 0.0, $34 = 0.0, $35 = 0.0, $36 = 0.0, $37 = 0, $38 = 0.0, $39 = 0.0, $4 = 0, $40 = 0.0, $41 = 0.0, $42 = 0.0, $43 = 0.0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0.0, $49 = 0.0, $5 = 0, $50 = 0; + var $51 = 0, $52 = 0.0, $53 = 0.0, $54 = 0, $55 = 0.0, $56 = 0.0, $57 = 0, $58 = 0.0, $59 = 0.0, $6 = 0, $60 = 0.0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0.0, $67 = 0, $68 = 0, $69 = 0.0; + var $7 = 0, $70 = 0.0, $71 = 0.0, $72 = 0.0, $73 = 0.0, $74 = 0.0, $75 = 0.0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0.0, $81 = 0.0, $82 = 0.0, $83 = 0, $84 = 0, $85 = 0.0, $86 = 0, $87 = 0; + var $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0.0, $92 = 0.0, $93 = 0, $94 = 0, $95 = 0, $96 = 0.0, $97 = 0.0, $98 = 0, $99 = 0, $acc$0$lcssa = 0.0, $acc$0$lcssa$us = 0.0, $acc$010 = 0.0, $acc$010$us = 0.0, $exitcond = 0, $exitcond34 = 0, $exitcond35 = 0; + var $exitcond36 = 0, $i$028 = 0, $i$125 = 0, $i$211 = 0, $i$211$us = 0, $i$313$us = 0, $j$021 = 0, $j$021$us = 0, $p$112$us = 0, $penalty$0 = 0.0, $penalty$1 = 0.0, $premax$014$us = 0.0, $premin$015$us = 0.0, $ret$0$lcssa = 0, $ret$023 = 0, $ret$023$us = 0, $ret$1 = 0, $ret$1$us = 0, $ret$2 = 0, $ret$2$us = 0; + var label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($ve)) + 4|0); + $1 = HEAP32[$0>>2]|0; + $2 = ((($ve)) + 12|0); + $3 = +HEAPF32[$2>>2]; + $4 = $1 << 2; + $$alloca_mul = $4; + $5 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul)|0)+15)&-16)|0;; + $6 = ((($ve)) + 156|0); + $7 = HEAP32[$6>>2]|0; + $8 = ($7|0)>(5); + $9 = (($7|0) / 2)&-1; + $$ = $8 ? $9 : 2; + $10 = ((($gi)) + 60|0); + $11 = +HEAPF32[$10>>2]; + $12 = (($9) + -2)|0; + $13 = (+($12|0)); + $14 = $11 - $13; + $15 = $14 < 0.0; + $penalty$0 = $15 ? 0.0 : $14; + $16 = $penalty$0 > $11; + $penalty$1 = $16 ? $11 : $penalty$0; + $17 = ($1|0)>(0); + if ($17) { + $18 = ((($ve)) + 36|0); + $19 = HEAP32[$18>>2]|0; + $i$028 = 0; + while(1) { + $20 = (($data) + ($i$028<<2)|0); + $21 = +HEAPF32[$20>>2]; + $22 = (($19) + ($i$028<<2)|0); + $23 = +HEAPF32[$22>>2]; + $24 = $23 * $21; + $25 = (($5) + ($i$028<<2)|0); + HEAPF32[$25>>2] = $24; + $26 = (($i$028) + 1)|0; + $exitcond34 = ($26|0)==($1|0); + if ($exitcond34) { + break; + } else { + $i$028 = $26; + } + } + } + $27 = ((($ve)) + 16|0); + _mdct_forward($27,$5,$5); + $28 = +HEAPF32[$5>>2]; + $29 = $28 * $28; + $30 = $29; + $31 = ((($5)) + 4|0); + $32 = +HEAPF32[$31>>2]; + $33 = $32; + $34 = $33 * $33; + $35 = $34 * 0.69999999999999996; + $36 = $35 + $30; + $37 = ((($5)) + 8|0); + $38 = +HEAPF32[$37>>2]; + $39 = $38; + $40 = $39 * $39; + $41 = $40 * 0.20000000000000001; + $42 = $36 + $41; + $43 = $42; + $44 = ((($filters)) + 140|0); + $45 = HEAP32[$44>>2]|0; + $46 = ($45|0)==(0); + if ($46) { + $47 = ((($filters)) + 136|0); + $48 = +HEAPF32[$47>>2]; + $49 = $48 + $43; + $50 = ((($filters)) + 132|0); + HEAPF32[$50>>2] = $49; + HEAPF32[$47>>2] = $43; + $$pre$phiZ2D = $50;$60 = $49; + } else { + $51 = ((($filters)) + 132|0); + $52 = +HEAPF32[$51>>2]; + $53 = $52 + $43; + HEAPF32[$51>>2] = $53; + $54 = ((($filters)) + 136|0); + $55 = +HEAPF32[$54>>2]; + $56 = $55 + $43; + HEAPF32[$54>>2] = $56; + $$pre$phiZ2D = $51;$60 = $53; + } + $57 = (((($filters)) + 72|0) + ($45<<2)|0); + $58 = +HEAPF32[$57>>2]; + $59 = $60 - $58; + HEAPF32[$$pre$phiZ2D>>2] = $59; + HEAPF32[$57>>2] = $43; + $61 = HEAP32[$44>>2]|0; + $62 = (($61) + 1)|0; + $63 = ($61|0)>(13); + $$2 = $63 ? 0 : $62; + HEAP32[$44>>2] = $$2; + $64 = (($1|0) / 2)&-1; + $65 = ($1|0)>(1); + L10: do { + if ($65) { + $66 = $60 * 0.0625; + $67 = (HEAPF32[tempDoublePtr>>2]=$66,HEAP32[tempDoublePtr>>2]|0); + $68 = $67 & 2147483647; + $69 = (+($68>>>0)); + $70 = $69 * 7.1771142984289327E-7; + $71 = $70 + -764.6162109375; + $72 = $71; + $73 = $72 * 0.5; + $74 = $73 + -15.0; + $75 = $74; + $$in724 = $75;$129 = $28;$i$125 = 0; + while(1) { + $128 = $129 * $129; + $130 = $i$125 | 1; + $131 = (($5) + ($130<<2)|0); + $132 = +HEAPF32[$131>>2]; + $133 = $132 * $132; + $134 = $133 + $128; + $135 = (HEAPF32[tempDoublePtr>>2]=$134,HEAP32[tempDoublePtr>>2]|0); + $136 = $135 & 2147483647; + $137 = (+($136>>>0)); + $138 = $137 * 3.5885571492144663E-7; + $139 = $138 + -382.30810546875; + $140 = $139 < $$in724; + $$v = $140 ? $$in724 : $139; + $141 = $$v < $3; + $$v8 = $141 ? $3 : $$v; + $142 = $i$125 >> 1; + $143 = (($5) + ($142<<2)|0); + HEAPF32[$143>>2] = $$v8; + $144 = (($i$125) + 2)|0; + $145 = ($144|0)<($64|0); + if (!($145)) { + break L10; + } + $146 = $$in724 + -8.0; + $$phi$trans$insert = (($5) + ($144<<2)|0); + $$pre = +HEAPF32[$$phi$trans$insert>>2]; + $$in724 = $146;$129 = $$pre;$i$125 = $144; + } + } + } while(0); + $76 = ($$|0)>(0); + if ($76) { + $j$021$us = 0;$ret$023$us = 0; + } else { + $j$021 = 0;$ret$023 = 0; + while(1) { + $147 = (((($bands) + ($j$021<<4)|0)) + 4|0); + $148 = HEAP32[$147>>2]|0; + $149 = ($148|0)>(0); + if ($149) { + $150 = (($bands) + ($j$021<<4)|0); + $151 = HEAP32[$150>>2]|0; + $152 = (((($bands) + ($j$021<<4)|0)) + 8|0); + $153 = HEAP32[$152>>2]|0; + $acc$010 = 0.0;$i$211 = 0; + while(1) { + $154 = (($151) + ($i$211))|0; + $155 = (($5) + ($154<<2)|0); + $156 = +HEAPF32[$155>>2]; + $157 = (($153) + ($i$211<<2)|0); + $158 = +HEAPF32[$157>>2]; + $159 = $158 * $156; + $160 = $159 + $acc$010; + $161 = (($i$211) + 1)|0; + $162 = ($161|0)<($148|0); + if ($162) { + $acc$010 = $160;$i$211 = $161; + } else { + $acc$0$lcssa = $160; + break; + } + } + } else { + $acc$0$lcssa = 0.0; + } + $163 = (((($bands) + ($j$021<<4)|0)) + 12|0); + $164 = +HEAPF32[$163>>2]; + $165 = $164 * $acc$0$lcssa; + $166 = (((($filters) + (($j$021*144)|0)|0)) + 68|0); + $167 = HEAP32[$166>>2]|0; + $168 = ($167|0)<(1); + $$3$v = $168 ? 16 : -1; + $$3 = (($$3$v) + ($167))|0; + $169 = ((($filters) + (($j$021*144)|0)|0) + ($$3<<2)|0); + $170 = +HEAPF32[$169>>2]; + $171 = $165 < $170; + $172 = $171 ? $170 : $165; + $173 = $165 > $170; + $$4 = $173 ? $170 : $165; + $174 = $$4 + -99999.0; + $175 = $172 + 99999.0; + $176 = ((($filters) + (($j$021*144)|0)|0) + ($167<<2)|0); + HEAPF32[$176>>2] = $165; + $177 = HEAP32[$166>>2]|0; + $178 = (($177) + 1)|0; + $179 = ($177|0)>(15); + $$6 = $179 ? 0 : $178; + HEAP32[$166>>2] = $$6; + $180 = (((($gi)) + 4|0) + ($j$021<<2)|0); + $181 = +HEAPF32[$180>>2]; + $182 = $181 + $penalty$1; + $183 = $175 > $182; + $184 = $ret$023 | 5; + $ret$1 = $183 ? $184 : $ret$023; + $185 = (((($gi)) + 32|0) + ($j$021<<2)|0); + $186 = +HEAPF32[$185>>2]; + $187 = $186 - $penalty$1; + $188 = $174 < $187; + $189 = $ret$1 | 2; + $ret$2 = $188 ? $189 : $ret$1; + $190 = (($j$021) + 1)|0; + $exitcond = ($190|0)==(7); + if ($exitcond) { + $ret$0$lcssa = $ret$2; + break; + } else { + $j$021 = $190;$ret$023 = $ret$2; + } + } + STACKTOP = sp;return ($ret$0$lcssa|0); + } + while(1) { + $77 = (((($bands) + ($j$021$us<<4)|0)) + 4|0); + $78 = HEAP32[$77>>2]|0; + $79 = ($78|0)>(0); + if ($79) { + $119 = (($bands) + ($j$021$us<<4)|0); + $109 = HEAP32[$119>>2]|0; + $120 = (((($bands) + ($j$021$us<<4)|0)) + 8|0); + $113 = HEAP32[$120>>2]|0; + $acc$010$us = 0.0;$i$211$us = 0; + while(1) { + $108 = (($109) + ($i$211$us))|0; + $110 = (($5) + ($108<<2)|0); + $111 = +HEAPF32[$110>>2]; + $112 = (($113) + ($i$211$us<<2)|0); + $114 = +HEAPF32[$112>>2]; + $115 = $114 * $111; + $116 = $115 + $acc$010$us; + $117 = (($i$211$us) + 1)|0; + $118 = ($117|0)<($78|0); + if ($118) { + $acc$010$us = $116;$i$211$us = $117; + } else { + $acc$0$lcssa$us = $116; + break; + } + } + } else { + $acc$0$lcssa$us = 0.0; + } + $121 = (((($bands) + ($j$021$us<<4)|0)) + 12|0); + $122 = +HEAPF32[$121>>2]; + $85 = $122 * $acc$0$lcssa$us; + $87 = (((($filters) + (($j$021$us*144)|0)|0)) + 68|0); + $84 = HEAP32[$87>>2]|0; + $123 = ($84|0)<(1); + $$3$v$us = $123 ? 16 : -1; + $$3$us = (($$3$v$us) + ($84))|0; + $124 = ((($filters) + (($j$021$us*144)|0)|0) + ($$3$us<<2)|0); + $125 = +HEAPF32[$124>>2]; + $126 = $85 < $125; + $82 = $126 ? $125 : $85; + $127 = $85 > $125; + $$4$us = $127 ? $125 : $85; + $i$313$us = 0;$p$112$us = $$3$us;$premax$014$us = -99999.0;$premin$015$us = 99999.0; + while(1) { + $101 = ($p$112$us|0)<(1); + $$5$v$us = $101 ? 16 : -1; + $$5$us = (($$5$v$us) + ($p$112$us))|0; + $102 = ((($filters) + (($j$021$us*144)|0)|0) + ($$5$us<<2)|0); + $103 = +HEAPF32[$102>>2]; + $104 = $premax$014$us < $103; + $105 = $104 ? $103 : $premax$014$us; + $106 = $premin$015$us > $103; + $$premin$0$us = $106 ? $103 : $premin$015$us; + $107 = (($i$313$us) + 1)|0; + $exitcond35 = ($107|0)==($$|0); + if ($exitcond35) { + $$lcssa48 = $105;$$premin$0$us$lcssa = $$premin$0$us; + break; + } else { + $i$313$us = $107;$p$112$us = $$5$us;$premax$014$us = $105;$premin$015$us = $$premin$0$us; + } + } + $80 = $$4$us - $$premin$0$us$lcssa; + $81 = $82 - $$lcssa48; + $83 = ((($filters) + (($j$021$us*144)|0)|0) + ($84<<2)|0); + HEAPF32[$83>>2] = $85; + $86 = HEAP32[$87>>2]|0; + $88 = (($86) + 1)|0; + $89 = ($86|0)>(15); + $$6$us = $89 ? 0 : $88; + HEAP32[$87>>2] = $$6$us; + $90 = (((($gi)) + 4|0) + ($j$021$us<<2)|0); + $91 = +HEAPF32[$90>>2]; + $92 = $91 + $penalty$1; + $93 = $81 > $92; + $94 = $ret$023$us | 5; + $ret$1$us = $93 ? $94 : $ret$023$us; + $95 = (((($gi)) + 32|0) + ($j$021$us<<2)|0); + $96 = +HEAPF32[$95>>2]; + $97 = $96 - $penalty$1; + $98 = $80 < $97; + $99 = $ret$1$us | 2; + $ret$2$us = $98 ? $99 : $ret$1$us; + $100 = (($j$021$us) + 1)|0; + $exitcond36 = ($100|0)==(7); + if ($exitcond36) { + $ret$0$lcssa = $ret$2$us; + break; + } else { + $j$021$us = $100;$ret$023$us = $ret$2$us; + } + } + STACKTOP = sp;return ($ret$0$lcssa|0); +} +function _floor1_fit($vb,$look,$logmdct,$logmask) { + $vb = $vb|0; + $look = $look|0; + $logmdct = $logmdct|0; + $logmask = $logmask|0; + var $$$0$i = 0, $$$i$i = 0, $$$i$i27 = 0, $$$i$i58 = 0, $$$i5$i = 0, $$0$i = 0, $$0$i$i = 0, $$0$i$i28 = 0, $$0$i$i59 = 0, $$0$i10 = 0, $$0$i54 = 0, $$0$i6$i = 0, $$0$i63 = 0, $$0$i7 = 0, $$0$i8 = 0, $$0$p$i = 0, $$pn$i = 0, $$pre = 0, $$pre116 = 0, $$pre117 = 0; + var $$val$i = 0.0, $$val$i26 = 0.0, $$val$i61 = 0.0, $$val4$i = 0.0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0; + var $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0; + var $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0; + var $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0; + var $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0, $172 = 0.0, $173 = 0.0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0.0, $184 = 0.0; + var $185 = 0.0, $186 = 0, $187 = 0.0, $188 = 0.0, $189 = 0.0, $19 = 0, $190 = 0.0, $191 = 0, $192 = 0.0, $193 = 0.0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0; + var $202 = 0, $203 = 0.0, $204 = 0.0, $205 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0.0, $214 = 0.0, $215 = 0, $216 = 0, $217 = 0.0, $218 = 0.0, $219 = 0.0, $22 = 0; + var $220 = 0.0, $221 = 0, $222 = 0.0, $223 = 0.0, $224 = 0, $225 = 0, $226 = 0, $227 = 0.0, $228 = 0.0, $229 = 0.0, $23 = 0, $230 = 0.0, $231 = 0.0, $232 = 0, $233 = 0.0, $234 = 0.0, $235 = 0.0, $236 = 0, $237 = 0, $238 = 0.0; + var $239 = 0, $24 = 0.0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0.0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0; + var $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0; + var $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0; + var $293 = 0, $294 = 0, $295 = 0, $296 = 0, $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0.0; + var $310 = 0, $311 = 0, $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0.0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $327 = 0, $328 = 0; + var $33 = 0.0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0; + var $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0; + var $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0.0, $76 = 0.0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0.0, $83 = 0.0, $84 = 0.0, $85 = 0, $86 = 0, $87 = 0; + var $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $err$010$i = 0, $err$1$i = 0, $exitcond = 0, $exitcond109 = 0, $exitcond110 = 0, $exitcond112 = 0, $exitcond114 = 0; + var $exitcond115 = 0, $fit_valueA = 0, $fit_valueB = 0, $fits = 0, $hineighbor = 0, $hy0 = 0, $hy1 = 0, $i$01$i = 0, $i$01$i25 = 0, $i$0104 = 0, $i$1102 = 0, $i$398 = 0, $i$593 = 0, $i$687 = 0, $i$778 = 0, $ispos$i = 0, $ispos$i56 = 0, $ispos2$i = 0, $j$080 = 0, $j$080$in = 0; + var $j$1 = 0, $j$183 = 0, $j$184 = 0, $loneighbor = 0, $ly0 = 0, $ly1 = 0, $memo = 0, $mse$0$lcssa$i = 0, $mse$011$i = 0, $n$0$lcssa$i = 0, $n$012$i = 0, $na$0$lcssa$i = 0, $na$0$lcssa$i47 = 0, $na$07$i = 0, $na$07$i19 = 0, $na$1$i = 0, $na$1$i34 = 0, $nb$0$lcssa$i = 0, $nb$0$lcssa$i41 = 0, $nb$013$i = 0; + var $nb$013$i13 = 0, $nb$1$i = 0, $nb$1$i40 = 0, $neg$i = 0, $neg$i57 = 0, $neg3$i = 0, $nonzero$092 = 0, $nonzero$1 = 0, $or$cond = 0, $or$cond$i = 0, $or$cond6 = 0, $output$0 = 0, $x1$$i = 0, $x2a$0$lcssa$i = 0, $x2a$0$lcssa$i50 = 0, $x2a$04$i = 0, $x2a$04$i22 = 0, $x2a$1$i = 0, $x2a$1$i31 = 0, $x2b$0$lcssa$i = 0; + var $x2b$0$lcssa$i44 = 0, $x2b$010$i = 0, $x2b$010$i16 = 0, $x2b$1$i = 0, $x2b$1$i37 = 0, $xa$0$lcssa$i = 0, $xa$0$lcssa$i52 = 0, $xa$02$i = 0, $xa$02$i24 = 0, $xa$1$i = 0, $xa$1$i29 = 0, $xb$0$lcssa$i = 0, $xb$0$lcssa$i46 = 0, $xb$08$i = 0, $xb$08$i18 = 0, $xb$1$i = 0, $xb$1$i35 = 0, $xya$0$lcssa$i = 0, $xya$0$lcssa$i48 = 0, $xya$06$i = 0; + var $xya$06$i20 = 0, $xya$1$i = 0, $xya$1$i33 = 0, $xyb$0$lcssa$i = 0, $xyb$0$lcssa$i42 = 0, $xyb$012$i = 0, $xyb$012$i14 = 0, $xyb$1$i = 0, $xyb$1$i39 = 0, $y$09$i = 0, $y$1$i = 0, $y0 = 0, $y1 = 0, $y2a$0$lcssa$i = 0, $y2a$0$lcssa$i49 = 0, $y2a$05$i = 0, $y2a$05$i21 = 0, $y2a$1$i = 0, $y2a$1$i32 = 0, $y2b$0$lcssa$i = 0; + var $y2b$0$lcssa$i43 = 0, $y2b$011$i = 0, $y2b$011$i15 = 0, $y2b$1$i = 0, $y2b$1$i38 = 0, $ya$0$lcssa$i = 0, $ya$0$lcssa$i51 = 0, $ya$03$i = 0, $ya$03$i23 = 0, $ya$1$i = 0, $ya$1$i30 = 0, $yb$0$lcssa$i = 0, $yb$0$lcssa$i45 = 0, $yb$09$i = 0, $yb$09$i17 = 0, $yb$1$i = 0, $yb$1$i36 = 0, dest = 0, label = 0, sp = 0; + var stop = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 4912|0; + $fits = sp + 1328|0; + $fit_valueA = sp + 1064|0; + $fit_valueB = sp + 804|0; + $loneighbor = sp + 544|0; + $hineighbor = sp + 284|0; + $memo = sp + 24|0; + $y0 = sp + 20|0; + $y1 = sp + 16|0; + $ly0 = sp + 12|0; + $ly1 = sp + 8|0; + $hy0 = sp + 4|0; + $hy1 = sp; + $0 = ((($look)) + 1296|0); + $1 = HEAP32[$0>>2]|0; + $2 = ((($look)) + 1288|0); + $3 = HEAP32[$2>>2]|0; + $4 = ((($look)) + 1284|0); + $5 = HEAP32[$4>>2]|0; + $6 = ($5|0)>(0); + if ($6) { + $i$0104 = 0; + while(1) { + $7 = (($fit_valueA) + ($i$0104<<2)|0); + HEAP32[$7>>2] = -200; + $8 = (($i$0104) + 1)|0; + $exitcond115 = ($8|0)==($5|0); + if ($exitcond115) { + break; + } else { + $i$0104 = $8; + } + } + if ($6) { + $i$1102 = 0; + while(1) { + $9 = (($fit_valueB) + ($i$1102<<2)|0); + HEAP32[$9>>2] = -200; + $10 = (($i$1102) + 1)|0; + $exitcond114 = ($10|0)==($5|0); + if ($exitcond114) { + break; + } else { + $i$1102 = $10; + } + } + if ($6) { + $11 = $5 << 2; + _memset(($loneighbor|0),0,($11|0))|0; + $i$398 = 0; + while(1) { + $12 = (($hineighbor) + ($i$398<<2)|0); + HEAP32[$12>>2] = 1; + $13 = (($i$398) + 1)|0; + $exitcond112 = ($13|0)==($5|0); + if ($exitcond112) { + break; + } else { + $i$398 = $13; + } + } + if ($6) { + $15 = $5 << 2; + _memset(($memo|0),-1,($15|0))|0; + $16 = ($5|0)>(1); + if (!($16)) { + $output$0 = 0; + STACKTOP = sp;return ($output$0|0); + } + $17 = (($3) + -1)|0; + $18 = ((($1)) + 1112|0); + $19 = (($5) + -1)|0; + $$pre = HEAP32[$look>>2]|0; + $70 = $$pre;$i$593 = 0;$nonzero$092 = 0; + while(1) { + $66 = (($i$593) + 1)|0; + $67 = (($look) + ($66<<2)|0); + $68 = HEAP32[$67>>2]|0; + $69 = (($fits) + (($i$593*56)|0)|0); + dest=$69; stop=dest+56|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0)); + HEAP32[$69>>2] = $70; + $71 = (((($fits) + (($i$593*56)|0)|0)) + 4|0); + HEAP32[$71>>2] = $68; + $72 = ($68|0)<($3|0); + $x1$$i = $72 ? $68 : $17; + $73 = ($x1$$i|0)<($70|0); + if ($73) { + $na$0$lcssa$i47 = 0;$nb$0$lcssa$i41 = 0;$x2a$0$lcssa$i50 = 0;$x2b$0$lcssa$i44 = 0;$xa$0$lcssa$i52 = 0;$xb$0$lcssa$i46 = 0;$xya$0$lcssa$i48 = 0;$xyb$0$lcssa$i42 = 0;$y2a$0$lcssa$i49 = 0;$y2b$0$lcssa$i43 = 0;$ya$0$lcssa$i51 = 0;$yb$0$lcssa$i45 = 0; + } else { + $i$01$i25 = $70;$na$07$i19 = 0;$nb$013$i13 = 0;$x2a$04$i22 = 0;$x2b$010$i16 = 0;$xa$02$i24 = 0;$xb$08$i18 = 0;$xya$06$i20 = 0;$xyb$012$i14 = 0;$y2a$05$i21 = 0;$y2b$011$i15 = 0;$ya$03$i23 = 0;$yb$09$i17 = 0; + while(1) { + $74 = (($logmask) + ($i$01$i25<<2)|0); + $$val$i26 = +HEAPF32[$74>>2]; + $75 = $$val$i26 * 7.3142857551574707; + $76 = $75 + 1023.5; + $77 = (~~(($76))); + $78 = ($77|0)>(1023); + $79 = ($77|0)<(0); + $$$i$i27 = $79 ? 0 : $77; + $$0$i$i28 = $78 ? 1023 : $$$i$i27; + $80 = ($$0$i$i28|0)==(0); + do { + if ($80) { + $na$1$i34 = $na$07$i19;$nb$1$i40 = $nb$013$i13;$x2a$1$i31 = $x2a$04$i22;$x2b$1$i37 = $x2b$010$i16;$xa$1$i29 = $xa$02$i24;$xb$1$i35 = $xb$08$i18;$xya$1$i33 = $xya$06$i20;$xyb$1$i39 = $xyb$012$i14;$y2a$1$i32 = $y2a$05$i21;$y2b$1$i38 = $y2b$011$i15;$ya$1$i30 = $ya$03$i23;$yb$1$i36 = $yb$09$i17; + } else { + $81 = (($logmdct) + ($i$01$i25<<2)|0); + $82 = +HEAPF32[$81>>2]; + $83 = +HEAPF32[$18>>2]; + $84 = $83 + $82; + $85 = !($84 >= $$val$i26); + if ($85) { + $95 = (($i$01$i25) + ($xb$08$i18))|0; + $96 = (($$0$i$i28) + ($yb$09$i17))|0; + $97 = Math_imul($i$01$i25, $i$01$i25)|0; + $98 = (($97) + ($x2b$010$i16))|0; + $99 = Math_imul($$0$i$i28, $$0$i$i28)|0; + $100 = (($99) + ($y2b$011$i15))|0; + $101 = Math_imul($$0$i$i28, $i$01$i25)|0; + $102 = (($101) + ($xyb$012$i14))|0; + $103 = (($nb$013$i13) + 1)|0; + $na$1$i34 = $na$07$i19;$nb$1$i40 = $103;$x2a$1$i31 = $x2a$04$i22;$x2b$1$i37 = $98;$xa$1$i29 = $xa$02$i24;$xb$1$i35 = $95;$xya$1$i33 = $xya$06$i20;$xyb$1$i39 = $102;$y2a$1$i32 = $y2a$05$i21;$y2b$1$i38 = $100;$ya$1$i30 = $ya$03$i23;$yb$1$i36 = $96; + break; + } else { + $86 = (($i$01$i25) + ($xa$02$i24))|0; + $87 = (($$0$i$i28) + ($ya$03$i23))|0; + $88 = Math_imul($i$01$i25, $i$01$i25)|0; + $89 = (($88) + ($x2a$04$i22))|0; + $90 = Math_imul($$0$i$i28, $$0$i$i28)|0; + $91 = (($90) + ($y2a$05$i21))|0; + $92 = Math_imul($$0$i$i28, $i$01$i25)|0; + $93 = (($92) + ($xya$06$i20))|0; + $94 = (($na$07$i19) + 1)|0; + $na$1$i34 = $94;$nb$1$i40 = $nb$013$i13;$x2a$1$i31 = $89;$x2b$1$i37 = $x2b$010$i16;$xa$1$i29 = $86;$xb$1$i35 = $xb$08$i18;$xya$1$i33 = $93;$xyb$1$i39 = $xyb$012$i14;$y2a$1$i32 = $91;$y2b$1$i38 = $y2b$011$i15;$ya$1$i30 = $87;$yb$1$i36 = $yb$09$i17; + break; + } + } + } while(0); + $104 = (($i$01$i25) + 1)|0; + $105 = ($i$01$i25|0)<($x1$$i|0); + if ($105) { + $i$01$i25 = $104;$na$07$i19 = $na$1$i34;$nb$013$i13 = $nb$1$i40;$x2a$04$i22 = $x2a$1$i31;$x2b$010$i16 = $x2b$1$i37;$xa$02$i24 = $xa$1$i29;$xb$08$i18 = $xb$1$i35;$xya$06$i20 = $xya$1$i33;$xyb$012$i14 = $xyb$1$i39;$y2a$05$i21 = $y2a$1$i32;$y2b$011$i15 = $y2b$1$i38;$ya$03$i23 = $ya$1$i30;$yb$09$i17 = $yb$1$i36; + } else { + $na$0$lcssa$i47 = $na$1$i34;$nb$0$lcssa$i41 = $nb$1$i40;$x2a$0$lcssa$i50 = $x2a$1$i31;$x2b$0$lcssa$i44 = $x2b$1$i37;$xa$0$lcssa$i52 = $xa$1$i29;$xb$0$lcssa$i46 = $xb$1$i35;$xya$0$lcssa$i48 = $xya$1$i33;$xyb$0$lcssa$i42 = $xyb$1$i39;$y2a$0$lcssa$i49 = $y2a$1$i32;$y2b$0$lcssa$i43 = $y2b$1$i38;$ya$0$lcssa$i51 = $ya$1$i30;$yb$0$lcssa$i45 = $yb$1$i36; + break; + } + } + } + $106 = (((($fits) + (($i$593*56)|0)|0)) + 8|0); + HEAP32[$106>>2] = $xa$0$lcssa$i52; + $107 = (((($fits) + (($i$593*56)|0)|0)) + 12|0); + HEAP32[$107>>2] = $ya$0$lcssa$i51; + $108 = (((($fits) + (($i$593*56)|0)|0)) + 16|0); + HEAP32[$108>>2] = $x2a$0$lcssa$i50; + $109 = (((($fits) + (($i$593*56)|0)|0)) + 20|0); + HEAP32[$109>>2] = $y2a$0$lcssa$i49; + $110 = (((($fits) + (($i$593*56)|0)|0)) + 24|0); + HEAP32[$110>>2] = $xya$0$lcssa$i48; + $111 = (((($fits) + (($i$593*56)|0)|0)) + 28|0); + HEAP32[$111>>2] = $na$0$lcssa$i47; + $112 = (((($fits) + (($i$593*56)|0)|0)) + 32|0); + HEAP32[$112>>2] = $xb$0$lcssa$i46; + $113 = (((($fits) + (($i$593*56)|0)|0)) + 36|0); + HEAP32[$113>>2] = $yb$0$lcssa$i45; + $114 = (((($fits) + (($i$593*56)|0)|0)) + 40|0); + HEAP32[$114>>2] = $x2b$0$lcssa$i44; + $115 = (((($fits) + (($i$593*56)|0)|0)) + 44|0); + HEAP32[$115>>2] = $y2b$0$lcssa$i43; + $116 = (((($fits) + (($i$593*56)|0)|0)) + 48|0); + HEAP32[$116>>2] = $xyb$0$lcssa$i42; + $117 = (((($fits) + (($i$593*56)|0)|0)) + 52|0); + HEAP32[$117>>2] = $nb$0$lcssa$i41; + $118 = (($na$0$lcssa$i47) + ($nonzero$092))|0; + $exitcond110 = ($66|0)==($19|0); + if ($exitcond110) { + $nonzero$1 = $118; + break; + } else { + $70 = $68;$i$593 = $66;$nonzero$092 = $118; + } + } + } else { + label = 9; + } + } else { + label = 9; + } + } else { + label = 9; + } + } else { + label = 9; + } + if ((label|0) == 9) { + $14 = ($5|0)==(0); + if (!($14)) { + $output$0 = 0; + STACKTOP = sp;return ($output$0|0); + } + $20 = ((($fits)) + 4|0); + dest=$fits; stop=dest+56|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0)); + HEAP32[$20>>2] = $3; + $21 = ($3|0)<(1); + if ($21) { + $na$0$lcssa$i = 0;$nb$0$lcssa$i = 0;$x2a$0$lcssa$i = 0;$x2b$0$lcssa$i = 0;$xa$0$lcssa$i = 0;$xb$0$lcssa$i = 0;$xya$0$lcssa$i = 0;$xyb$0$lcssa$i = 0;$y2a$0$lcssa$i = 0;$y2b$0$lcssa$i = 0;$ya$0$lcssa$i = 0;$yb$0$lcssa$i = 0; + } else { + $22 = ((($1)) + 1112|0); + $i$01$i = 0;$na$07$i = 0;$nb$013$i = 0;$x2a$04$i = 0;$x2b$010$i = 0;$xa$02$i = 0;$xb$08$i = 0;$xya$06$i = 0;$xyb$012$i = 0;$y2a$05$i = 0;$y2b$011$i = 0;$ya$03$i = 0;$yb$09$i = 0; + while(1) { + $23 = (($logmask) + ($i$01$i<<2)|0); + $$val$i = +HEAPF32[$23>>2]; + $24 = $$val$i * 7.3142857551574707; + $25 = $24 + 1023.5; + $26 = (~~(($25))); + $27 = ($26|0)>(1023); + $28 = ($26|0)<(0); + $$$i$i = $28 ? 0 : $26; + $$0$i$i = $27 ? 1023 : $$$i$i; + $29 = ($$0$i$i|0)==(0); + do { + if ($29) { + $na$1$i = $na$07$i;$nb$1$i = $nb$013$i;$x2a$1$i = $x2a$04$i;$x2b$1$i = $x2b$010$i;$xa$1$i = $xa$02$i;$xb$1$i = $xb$08$i;$xya$1$i = $xya$06$i;$xyb$1$i = $xyb$012$i;$y2a$1$i = $y2a$05$i;$y2b$1$i = $y2b$011$i;$ya$1$i = $ya$03$i;$yb$1$i = $yb$09$i; + } else { + $30 = (($logmdct) + ($i$01$i<<2)|0); + $31 = +HEAPF32[$30>>2]; + $32 = +HEAPF32[$22>>2]; + $33 = $32 + $31; + $34 = !($33 >= $$val$i); + if ($34) { + $44 = (($i$01$i) + ($xb$08$i))|0; + $45 = (($$0$i$i) + ($yb$09$i))|0; + $46 = Math_imul($i$01$i, $i$01$i)|0; + $47 = (($46) + ($x2b$010$i))|0; + $48 = Math_imul($$0$i$i, $$0$i$i)|0; + $49 = (($48) + ($y2b$011$i))|0; + $50 = Math_imul($$0$i$i, $i$01$i)|0; + $51 = (($50) + ($xyb$012$i))|0; + $52 = (($nb$013$i) + 1)|0; + $na$1$i = $na$07$i;$nb$1$i = $52;$x2a$1$i = $x2a$04$i;$x2b$1$i = $47;$xa$1$i = $xa$02$i;$xb$1$i = $44;$xya$1$i = $xya$06$i;$xyb$1$i = $51;$y2a$1$i = $y2a$05$i;$y2b$1$i = $49;$ya$1$i = $ya$03$i;$yb$1$i = $45; + break; + } else { + $35 = (($i$01$i) + ($xa$02$i))|0; + $36 = (($$0$i$i) + ($ya$03$i))|0; + $37 = Math_imul($i$01$i, $i$01$i)|0; + $38 = (($37) + ($x2a$04$i))|0; + $39 = Math_imul($$0$i$i, $$0$i$i)|0; + $40 = (($39) + ($y2a$05$i))|0; + $41 = Math_imul($$0$i$i, $i$01$i)|0; + $42 = (($41) + ($xya$06$i))|0; + $43 = (($na$07$i) + 1)|0; + $na$1$i = $43;$nb$1$i = $nb$013$i;$x2a$1$i = $38;$x2b$1$i = $x2b$010$i;$xa$1$i = $35;$xb$1$i = $xb$08$i;$xya$1$i = $42;$xyb$1$i = $xyb$012$i;$y2a$1$i = $40;$y2b$1$i = $y2b$011$i;$ya$1$i = $36;$yb$1$i = $yb$09$i; + break; + } + } + } while(0); + $53 = (($i$01$i) + 1)|0; + $exitcond109 = ($53|0)==($3|0); + if ($exitcond109) { + $na$0$lcssa$i = $na$1$i;$nb$0$lcssa$i = $nb$1$i;$x2a$0$lcssa$i = $x2a$1$i;$x2b$0$lcssa$i = $x2b$1$i;$xa$0$lcssa$i = $xa$1$i;$xb$0$lcssa$i = $xb$1$i;$xya$0$lcssa$i = $xya$1$i;$xyb$0$lcssa$i = $xyb$1$i;$y2a$0$lcssa$i = $y2a$1$i;$y2b$0$lcssa$i = $y2b$1$i;$ya$0$lcssa$i = $ya$1$i;$yb$0$lcssa$i = $yb$1$i; + break; + } else { + $i$01$i = $53;$na$07$i = $na$1$i;$nb$013$i = $nb$1$i;$x2a$04$i = $x2a$1$i;$x2b$010$i = $x2b$1$i;$xa$02$i = $xa$1$i;$xb$08$i = $xb$1$i;$xya$06$i = $xya$1$i;$xyb$012$i = $xyb$1$i;$y2a$05$i = $y2a$1$i;$y2b$011$i = $y2b$1$i;$ya$03$i = $ya$1$i;$yb$09$i = $yb$1$i; + } + } + } + $54 = ((($fits)) + 8|0); + HEAP32[$54>>2] = $xa$0$lcssa$i; + $55 = ((($fits)) + 12|0); + HEAP32[$55>>2] = $ya$0$lcssa$i; + $56 = ((($fits)) + 16|0); + HEAP32[$56>>2] = $x2a$0$lcssa$i; + $57 = ((($fits)) + 20|0); + HEAP32[$57>>2] = $y2a$0$lcssa$i; + $58 = ((($fits)) + 24|0); + HEAP32[$58>>2] = $xya$0$lcssa$i; + $59 = ((($fits)) + 28|0); + HEAP32[$59>>2] = $na$0$lcssa$i; + $60 = ((($fits)) + 32|0); + HEAP32[$60>>2] = $xb$0$lcssa$i; + $61 = ((($fits)) + 36|0); + HEAP32[$61>>2] = $yb$0$lcssa$i; + $62 = ((($fits)) + 40|0); + HEAP32[$62>>2] = $x2b$0$lcssa$i; + $63 = ((($fits)) + 44|0); + HEAP32[$63>>2] = $y2b$0$lcssa$i; + $64 = ((($fits)) + 48|0); + HEAP32[$64>>2] = $xyb$0$lcssa$i; + $65 = ((($fits)) + 52|0); + HEAP32[$65>>2] = $nb$0$lcssa$i; + $nonzero$1 = $na$0$lcssa$i; + } + $119 = ($nonzero$1|0)==(0); + if ($119) { + $output$0 = 0; + STACKTOP = sp;return ($output$0|0); + } + HEAP32[$y0>>2] = -200; + HEAP32[$y1>>2] = -200; + $120 = (($5) + -1)|0; + (_fit_line($fits,$120,$y0,$y1,$1)|0); + $121 = HEAP32[$y0>>2]|0; + HEAP32[$fit_valueA>>2] = $121; + HEAP32[$fit_valueB>>2] = $121; + $122 = HEAP32[$y1>>2]|0; + $123 = ((($fit_valueB)) + 4|0); + HEAP32[$123>>2] = $122; + $124 = ((($fit_valueA)) + 4|0); + HEAP32[$124>>2] = $122; + $125 = ($5|0)>(2); + do { + if ($125) { + $126 = ((($1)) + 1112|0); + $127 = ((($1)) + 1096|0); + $128 = ((($1)) + 1100|0); + $129 = ((($1)) + 1104|0); + $i$687 = 2; + L50: while(1) { + $130 = (((($look)) + 520|0) + ($i$687<<2)|0); + $131 = HEAP32[$130>>2]|0; + $132 = (($loneighbor) + ($131<<2)|0); + $133 = HEAP32[$132>>2]|0; + $134 = (($hineighbor) + ($131<<2)|0); + $135 = HEAP32[$134>>2]|0; + $136 = (($memo) + ($133<<2)|0); + $137 = HEAP32[$136>>2]|0; + $138 = ($137|0)==($135|0); + L52: do { + if (!($138)) { + $139 = (((($look)) + 520|0) + ($133<<2)|0); + $140 = HEAP32[$139>>2]|0; + $141 = (((($look)) + 520|0) + ($135<<2)|0); + $142 = HEAP32[$141>>2]|0; + HEAP32[$136>>2] = $135; + $143 = (((($1)) + 836|0) + ($133<<2)|0); + $144 = HEAP32[$143>>2]|0; + $145 = (((($1)) + 836|0) + ($135<<2)|0); + $146 = HEAP32[$145>>2]|0; + $147 = (($fit_valueA) + ($133<<2)|0); + $148 = HEAP32[$147>>2]|0; + $149 = ($148|0)<(0); + $150 = (($fit_valueB) + ($133<<2)|0); + $151 = HEAP32[$150>>2]|0; + if ($149) { + $$0$i54 = $151; + } else { + $152 = ($151|0)<(0); + if ($152) { + $$0$i54 = $148; + } else { + $153 = (($151) + ($148))|0; + $154 = $153 >> 1; + $$0$i54 = $154; + } + } + $155 = (($fit_valueA) + ($135<<2)|0); + $156 = HEAP32[$155>>2]|0; + $157 = ($156|0)<(0); + $158 = (($fit_valueB) + ($135<<2)|0); + $159 = HEAP32[$158>>2]|0; + if ($157) { + $$0$i63 = $159; + } else { + $160 = ($159|0)<(0); + if ($160) { + $$0$i63 = $156; + } else { + $161 = (($159) + ($156))|0; + $162 = $161 >> 1; + $$0$i63 = $162; + } + } + $163 = ($$0$i54|0)==(-1); + $164 = ($$0$i63|0)==(-1); + $or$cond = $163 | $164; + if ($or$cond) { + label = 38; + break L50; + } + $165 = (($$0$i63) - ($$0$i54))|0; + $166 = (($146) - ($144))|0; + $ispos$i56 = ($165|0)>(-1); + $neg$i57 = (0 - ($165))|0; + $167 = $ispos$i56 ? $165 : $neg$i57; + $168 = (($165|0) / ($166|0))&-1; + $169 = $165 >> 31; + $170 = $169 | 1; + $171 = (($logmask) + ($144<<2)|0); + $$val4$i = +HEAPF32[$171>>2]; + $172 = $$val4$i * 7.3142857551574707; + $173 = $172 + 1023.5; + $174 = (~~(($173))); + $175 = ($174|0)>(1023); + $176 = ($174|0)<(0); + $$$i$i58 = $176 ? 0 : $174; + $$0$i$i59 = $175 ? 1023 : $$$i$i58; + $177 = Math_imul($168, $166)|0; + $ispos2$i = ($177|0)>(-1); + $neg3$i = (0 - ($177))|0; + $178 = $ispos2$i ? $177 : $neg3$i; + $179 = (($167) - ($178))|0; + $180 = (($$0$i54) - ($$0$i$i59))|0; + $181 = Math_imul($180, $180)|0; + $182 = (($logmdct) + ($144<<2)|0); + $183 = +HEAPF32[$182>>2]; + $184 = +HEAPF32[$126>>2]; + $185 = $184 + $183; + $186 = !($185 >= $$val4$i); + if ($186) { + label = 42; + } else { + $187 = (+($$0$i54|0)); + $188 = +HEAPF32[$127>>2]; + $189 = $188 + $187; + $190 = (+($$0$i$i59|0)); + $191 = $189 < $190; + if (!($191)) { + $192 = +HEAPF32[$128>>2]; + $193 = $187 - $192; + $194 = $193 > $190; + if (!($194)) { + label = 42; + } + } + } + L66: do { + if ((label|0) == 42) { + label = 0; + $195 = (($144) + 1)|0; + $196 = ($195|0)<($146|0); + if ($196) { + $202 = $195;$err$010$i = 0;$mse$011$i = $181;$n$012$i = 1;$y$09$i = $$0$i54; + while(1) { + $197 = (($err$010$i) + ($179))|0; + $198 = ($197|0)<($166|0); + $199 = $198 ? 0 : $170; + $200 = $198 ? 0 : $166; + $err$1$i = (($197) - ($200))|0; + $$pn$i = (($y$09$i) + ($168))|0; + $y$1$i = (($$pn$i) + ($199))|0; + $201 = (($logmask) + ($202<<2)|0); + $$val$i61 = +HEAPF32[$201>>2]; + $203 = $$val$i61 * 7.3142857551574707; + $204 = $203 + 1023.5; + $205 = (~~(($204))); + $206 = ($205|0)>(1023); + $207 = ($205|0)<(0); + $$$i5$i = $207 ? 0 : $205; + $$0$i6$i = $206 ? 1023 : $$$i5$i; + $208 = (($y$1$i) - ($$0$i6$i))|0; + $209 = Math_imul($208, $208)|0; + $210 = (($209) + ($mse$011$i))|0; + $211 = (($n$012$i) + 1)|0; + $212 = (($logmdct) + ($202<<2)|0); + $213 = +HEAPF32[$212>>2]; + $214 = $213 + $184; + $215 = $214 >= $$val$i61; + $216 = ($$0$i6$i|0)!=(0); + $or$cond$i = $215 & $216; + if ($or$cond$i) { + $217 = (+($y$1$i|0)); + $218 = +HEAPF32[$127>>2]; + $219 = $218 + $217; + $220 = (+($$0$i6$i|0)); + $221 = $219 < $220; + if ($221) { + break L66; + } + $222 = +HEAPF32[$128>>2]; + $223 = $217 - $222; + $224 = $223 > $220; + if ($224) { + break L66; + } + } + $225 = (($202) + 1)|0; + $226 = ($225|0)<($146|0); + if ($226) { + $202 = $225;$err$010$i = $err$1$i;$mse$011$i = $210;$n$012$i = $211;$y$09$i = $y$1$i; + } else { + $mse$0$lcssa$i = $210;$n$0$lcssa$i = $211; + break; + } + } + } else { + $mse$0$lcssa$i = $181;$n$0$lcssa$i = 1; + } + $227 = +HEAPF32[$127>>2]; + $228 = $227 * $227; + $229 = (+($n$0$lcssa$i|0)); + $230 = $228 / $229; + $231 = +HEAPF32[$129>>2]; + $232 = $230 > $231; + if (!($232)) { + $233 = +HEAPF32[$128>>2]; + $234 = $233 * $233; + $235 = $234 / $229; + $236 = $235 > $231; + if (!($236)) { + $237 = (($mse$0$lcssa$i|0) / ($n$0$lcssa$i|0))&-1; + $238 = (+($237|0)); + $239 = $238 > $231; + if ($239) { + break; + } + } + } + $272 = (($fit_valueA) + ($i$687<<2)|0); + HEAP32[$272>>2] = -200; + $273 = (($fit_valueB) + ($i$687<<2)|0); + HEAP32[$273>>2] = -200; + break L52; + } + } while(0); + HEAP32[$ly0>>2] = -200; + HEAP32[$ly1>>2] = -200; + HEAP32[$hy0>>2] = -200; + HEAP32[$hy1>>2] = -200; + $240 = (($fits) + (($140*56)|0)|0); + $241 = (($131) - ($140))|0; + $242 = (_fit_line($240,$241,$ly0,$ly1,$1)|0); + $243 = (($fits) + (($131*56)|0)|0); + $244 = (($142) - ($131))|0; + $245 = (_fit_line($243,$244,$hy0,$hy1,$1)|0); + $246 = ($242|0)!=(0); + if ($246) { + HEAP32[$ly0>>2] = $$0$i54; + $247 = HEAP32[$hy0>>2]|0; + HEAP32[$ly1>>2] = $247; + } + $248 = ($245|0)==(0); + if (!($248)) { + $249 = HEAP32[$ly1>>2]|0; + HEAP32[$hy0>>2] = $249; + HEAP32[$hy1>>2] = $$0$i63; + if ($246) { + $250 = (($fit_valueA) + ($i$687<<2)|0); + HEAP32[$250>>2] = -200; + $251 = (($fit_valueB) + ($i$687<<2)|0); + HEAP32[$251>>2] = -200; + break; + } + } + $252 = HEAP32[$ly0>>2]|0; + HEAP32[$150>>2] = $252; + $253 = ($133|0)==(0); + if ($253) { + HEAP32[$fit_valueA>>2] = $252; + } + $254 = HEAP32[$ly1>>2]|0; + $255 = (($fit_valueA) + ($i$687<<2)|0); + HEAP32[$255>>2] = $254; + $256 = HEAP32[$hy0>>2]|0; + $257 = (($fit_valueB) + ($i$687<<2)|0); + HEAP32[$257>>2] = $256; + $258 = HEAP32[$hy1>>2]|0; + HEAP32[$155>>2] = $258; + $259 = ($135|0)==(1); + if ($259) { + HEAP32[$123>>2] = $258; + } + $260 = $256 & $254; + $261 = ($260|0)>(-1); + if ($261) { + $262 = ($131|0)>(0); + L95: do { + if ($262) { + $j$080$in = $131; + while(1) { + $j$080 = (($j$080$in) + -1)|0; + $264 = (($hineighbor) + ($j$080<<2)|0); + $265 = HEAP32[$264>>2]|0; + $266 = ($265|0)==($135|0); + if (!($266)) { + break L95; + } + HEAP32[$264>>2] = $i$687; + $267 = ($j$080$in|0)>(1); + if ($267) { + $j$080$in = $j$080; + } else { + break; + } + } + } + } while(0); + $j$183 = (($131) + 1)|0; + $263 = ($j$183|0)<($5|0); + if ($263) { + $j$184 = $j$183; + while(1) { + $268 = (($loneighbor) + ($j$184<<2)|0); + $269 = HEAP32[$268>>2]|0; + $270 = ($269|0)==($133|0); + if (!($270)) { + break L52; + } + HEAP32[$268>>2] = $i$687; + $j$1 = (($j$184) + 1)|0; + $271 = ($j$1|0)<($5|0); + if ($271) { + $j$184 = $j$1; + } else { + break; + } + } + } + } + } + } while(0); + $274 = (($i$687) + 1)|0; + $275 = ($274|0)<($5|0); + if ($275) { + $i$687 = $274; + } else { + label = 68; + break; + } + } + if ((label|0) == 38) { + _exit(1); + // unreachable; + } + else if ((label|0) == 68) { + $$pre116 = HEAP32[$fit_valueA>>2]|0; + $$pre117 = HEAP32[$fit_valueB>>2]|0; + $278 = $$pre116;$280 = $$pre117; + break; + } + } else { + $278 = $121;$280 = $121; + } + } while(0); + $276 = $5 << 2; + $277 = (__vorbis_block_alloc($vb,$276)|0); + $279 = ($278|0)<(0); + if ($279) { + $$0$i10 = $280; + } else { + $281 = ($280|0)<(0); + if ($281) { + $$0$i10 = $278; + } else { + $282 = (($280) + ($278))|0; + $283 = $282 >> 1; + $$0$i10 = $283; + } + } + HEAP32[$277>>2] = $$0$i10; + $284 = HEAP32[$124>>2]|0; + $285 = ($284|0)<(0); + $286 = HEAP32[$123>>2]|0; + if ($285) { + $$0$i8 = $286; + } else { + $287 = ($286|0)<(0); + if ($287) { + $$0$i8 = $284; + } else { + $288 = (($286) + ($284))|0; + $289 = $288 >> 1; + $$0$i8 = $289; + } + } + $290 = ((($277)) + 4|0); + HEAP32[$290>>2] = $$0$i8; + if ($125) { + $i$778 = 2; + } else { + $output$0 = $277; + STACKTOP = sp;return ($output$0|0); + } + while(1) { + $291 = (($i$778) + -2)|0; + $292 = (((($look)) + 1032|0) + ($291<<2)|0); + $293 = HEAP32[$292>>2]|0; + $294 = (((($look)) + 780|0) + ($291<<2)|0); + $295 = HEAP32[$294>>2]|0; + $296 = (((($1)) + 836|0) + ($293<<2)|0); + $297 = HEAP32[$296>>2]|0; + $298 = (((($1)) + 836|0) + ($295<<2)|0); + $299 = HEAP32[$298>>2]|0; + $300 = (($277) + ($293<<2)|0); + $301 = HEAP32[$300>>2]|0; + $302 = (($277) + ($295<<2)|0); + $303 = HEAP32[$302>>2]|0; + $304 = (((($1)) + 836|0) + ($i$778<<2)|0); + $305 = HEAP32[$304>>2]|0; + $306 = $301 & 32767; + $307 = $303 & 32767; + $308 = (($307) - ($306))|0; + $309 = (($299) - ($297))|0; + $ispos$i = ($308|0)>(-1); + $neg$i = (0 - ($308))|0; + $310 = $ispos$i ? $308 : $neg$i; + $311 = (($305) - ($297))|0; + $312 = Math_imul($310, $311)|0; + $313 = (($312|0) / ($309|0))&-1; + $314 = ($308|0)<(0); + $315 = (0 - ($313))|0; + $$0$p$i = $314 ? $315 : $313; + $$0$i7 = (($$0$p$i) + ($306))|0; + $316 = (($fit_valueA) + ($i$778<<2)|0); + $317 = HEAP32[$316>>2]|0; + $318 = ($317|0)<(0); + $319 = (($fit_valueB) + ($i$778<<2)|0); + $320 = HEAP32[$319>>2]|0; + if ($318) { + $$0$i = $320; + } else { + $321 = ($320|0)<(0); + if ($321) { + $$0$i = $317; + } else { + $322 = (($320) + ($317))|0; + $323 = $322 >> 1; + $$0$i = $323; + } + } + $324 = ($$0$i|0)<(0); + $325 = ($$0$i7|0)==($$0$i|0); + $or$cond6 = $324 | $325; + $326 = $$0$i7 | 32768; + $$$0$i = $or$cond6 ? $326 : $$0$i; + $327 = (($277) + ($i$778<<2)|0); + HEAP32[$327>>2] = $$$0$i; + $328 = (($i$778) + 1)|0; + $exitcond = ($328|0)==($5|0); + if ($exitcond) { + $output$0 = $277; + break; + } else { + $i$778 = $328; + } + } + STACKTOP = sp;return ($output$0|0); +} +function _floor1_interpolate_fit($vb,$look,$A,$B,$del) { + $vb = $vb|0; + $look = $look|0; + $A = $A|0; + $B = $B|0; + $del = $del|0; + var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0; + var $27 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $exitcond = 0, $i$02 = 0, $or$cond = 0, $output$0 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($look)) + 1284|0); + $1 = HEAP32[$0>>2]|0; + $2 = ($A|0)!=(0|0); + $3 = ($B|0)!=(0|0); + $or$cond = $2 & $3; + if (!($or$cond)) { + $output$0 = 0; + return ($output$0|0); + } + $4 = $1 << 2; + $5 = (__vorbis_block_alloc($vb,$4)|0); + $6 = ($1|0)>(0); + if (!($6)) { + $output$0 = $5; + return ($output$0|0); + } + $7 = (65536 - ($del))|0; + $i$02 = 0; + while(1) { + $8 = (($A) + ($i$02<<2)|0); + $9 = HEAP32[$8>>2]|0; + $10 = $9 & 32767; + $11 = Math_imul($10, $7)|0; + $12 = (($B) + ($i$02<<2)|0); + $13 = HEAP32[$12>>2]|0; + $14 = $13 & 32767; + $15 = Math_imul($14, $del)|0; + $16 = (($11) + 32768)|0; + $17 = (($16) + ($15))|0; + $18 = $17 >> 16; + $19 = (($5) + ($i$02<<2)|0); + HEAP32[$19>>2] = $18; + $20 = HEAP32[$8>>2]|0; + $21 = $20 & 32768; + $22 = ($21|0)==(0); + if (!($22)) { + $23 = HEAP32[$12>>2]|0; + $24 = $23 & 32768; + $25 = ($24|0)==(0); + if (!($25)) { + $26 = $18 | 32768; + HEAP32[$19>>2] = $26; + } + } + $27 = (($i$02) + 1)|0; + $exitcond = ($27|0)==($1|0); + if ($exitcond) { + $output$0 = $5; + break; + } else { + $i$02 = $27; + } + } + return ($output$0|0); +} +function _floor1_encode($opb,$vb,$look,$post,$ilogmask) { + $opb = $opb|0; + $vb = $vb|0; + $look = $look|0; + $post = $post|0; + $ilogmask = $ilogmask|0; + var $$ = 0, $$0 = 0, $$0$i = 0, $$0$p$i = 0, $$phi$trans$insert = 0, $$pn$i = 0, $$pre = 0, $$pre50 = 0, $$pre51 = 0, $$sink = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0; + var $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0; + var $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0; + var $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0; + var $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0; + var $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0; + var $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0; + var $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0; + var $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0; + var $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0; + var $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0; + var $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $bookas = 0, $cshift$021 = 0; + var $cshift$021$us = 0, $cval$0$lcssa = 0, $cval$020 = 0, $cval$020$us = 0, $err$04$i = 0, $err$1$i = 0, $exitcond = 0, $exitcond$i = 0, $exitcond46 = 0, $exitcond47 = 0, $exitcond48 = 0, $exitcond49 = 0, $hx$0$lcssa = 0, $hx$011 = 0, $hx$1 = 0, $i$040 = 0, $i$135 = 0, $i$231 = 0, $ispos$i = 0, $ispos$i1 = 0; + var $ispos1$i = 0, $j$027 = 0, $j$110 = 0, $j$29 = 0, $k$016 = 0, $k$122 = 0, $k$122$us = 0, $k$224 = 0, $l$018$us = 0, $l$018$us$lcssa = 0, $lx$012 = 0, $lx$1 = 0, $ly$0$lcssa = 0, $ly$013 = 0, $ly$1 = 0, $maxval = 0, $neg$i = 0, $neg$i2 = 0, $neg2$i = 0, $or$cond = 0; + var $out = 0, $val$0 = 0, $val1$0 = 0, $x1$n$i = 0, $y$03$i = 0, $y$1$i = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 336|0; + $out = sp + 64|0; + $bookas = sp + 32|0; + $maxval = sp; + $0 = ((($look)) + 1296|0); + $1 = HEAP32[$0>>2]|0; + $2 = ((($look)) + 1284|0); + $3 = HEAP32[$2>>2]|0; + $4 = ((($vb)) + 64|0); + $5 = HEAP32[$4>>2]|0; + $6 = ((($5)) + 4|0); + $7 = HEAP32[$6>>2]|0; + $8 = ((($7)) + 28|0); + $9 = HEAP32[$8>>2]|0; + $10 = ((($9)) + 2848|0); + $11 = HEAP32[$10>>2]|0; + $12 = ($post|0)==(0|0); + if ($12) { + _oggpack_write($opb,0,1); + $224 = ((($vb)) + 36|0); + $225 = HEAP32[$224>>2]|0; + $226 = (($225|0) / 2)&-1; + $227 = $226 << 2; + _memset(($ilogmask|0),0,($227|0))|0; + $$0 = 0; + STACKTOP = sp;return ($$0|0); + } + $13 = ($3|0)>(0); + if ($13) { + $14 = ((($1)) + 832|0); + $i$040 = 0; + while(1) { + $15 = (($post) + ($i$040<<2)|0); + $16 = HEAP32[$15>>2]|0; + $17 = $16 & 32767; + $18 = HEAP32[$14>>2]|0; + if ((($18|0) == 4)) { + $22 = $17 >>> 4; + $val$0 = $22; + } else if ((($18|0) == 1)) { + $19 = $17 >>> 2; + $val$0 = $19; + } else if ((($18|0) == 2)) { + $20 = $17 >>> 3; + $val$0 = $20; + } else if ((($18|0) == 3)) { + $21 = (($17>>>0) / 12)&-1; + $val$0 = $21; + } else { + $val$0 = $17; + } + $23 = $16 & 32768; + $24 = $23 | $val$0; + HEAP32[$15>>2] = $24; + $25 = (($i$040) + 1)|0; + $exitcond49 = ($25|0)==($3|0); + if ($exitcond49) { + break; + } else { + $i$040 = $25; + } + } + } + $26 = HEAP32[$post>>2]|0; + HEAP32[$out>>2] = $26; + $27 = ((($post)) + 4|0); + $28 = HEAP32[$27>>2]|0; + $29 = ((($out)) + 4|0); + HEAP32[$29>>2] = $28; + $30 = ($3|0)>(2); + $31 = ((($look)) + 1292|0); + if ($30) { + $i$135 = 2; + while(1) { + $32 = (($i$135) + -2)|0; + $33 = (((($look)) + 1032|0) + ($32<<2)|0); + $34 = HEAP32[$33>>2]|0; + $35 = (((($look)) + 780|0) + ($32<<2)|0); + $36 = HEAP32[$35>>2]|0; + $37 = (((($1)) + 836|0) + ($34<<2)|0); + $38 = HEAP32[$37>>2]|0; + $39 = (((($1)) + 836|0) + ($36<<2)|0); + $40 = HEAP32[$39>>2]|0; + $41 = (($post) + ($34<<2)|0); + $42 = HEAP32[$41>>2]|0; + $43 = (($post) + ($36<<2)|0); + $44 = HEAP32[$43>>2]|0; + $45 = (((($1)) + 836|0) + ($i$135<<2)|0); + $46 = HEAP32[$45>>2]|0; + $47 = $42 & 32767; + $48 = $44 & 32767; + $49 = (($48) - ($47))|0; + $50 = (($40) - ($38))|0; + $ispos$i = ($49|0)>(-1); + $neg$i = (0 - ($49))|0; + $51 = $ispos$i ? $49 : $neg$i; + $52 = (($46) - ($38))|0; + $53 = Math_imul($51, $52)|0; + $54 = (($53|0) / ($50|0))&-1; + $55 = ($49|0)<(0); + $56 = (0 - ($54))|0; + $$0$p$i = $55 ? $56 : $54; + $$0$i = (($$0$p$i) + ($47))|0; + $57 = (($post) + ($i$135<<2)|0); + $58 = HEAP32[$57>>2]|0; + $59 = $58 & 32768; + $60 = ($59|0)!=(0); + $61 = ($58|0)==($$0$i|0); + $or$cond = $60 | $61; + if ($or$cond) { + $62 = $$0$i | 32768; + HEAP32[$57>>2] = $62; + $63 = (($out) + ($i$135<<2)|0); + HEAP32[$63>>2] = 0; + } else { + $64 = HEAP32[$31>>2]|0; + $65 = (($64) - ($$0$i))|0; + $66 = ($65|0)<($$0$i|0); + $$ = $66 ? $65 : $$0$i; + $67 = (($58) - ($$0$i))|0; + $68 = ($67|0)<(0); + do { + if ($68) { + $69 = (0 - ($$))|0; + $70 = ($67|0)<($69|0); + if ($70) { + $71 = $67 ^ -1; + $72 = (($$) + ($71))|0; + $val1$0 = $72; + break; + } else { + $73 = $67 << 1; + $74 = $73 ^ -1; + $val1$0 = $74; + break; + } + } else { + $75 = ($$|0)>($67|0); + if ($75) { + $77 = $67 << 1; + $val1$0 = $77; + break; + } else { + $76 = (($$) + ($67))|0; + $val1$0 = $76; + break; + } + } + } while(0); + $78 = (($out) + ($i$135<<2)|0); + HEAP32[$78>>2] = $val1$0; + HEAP32[$41>>2] = $47; + $79 = HEAP32[$43>>2]|0; + $80 = $79 & 32767; + HEAP32[$43>>2] = $80; + } + $81 = (($i$135) + 1)|0; + $exitcond48 = ($81|0)==($3|0); + if ($exitcond48) { + break; + } else { + $i$135 = $81; + } + } + $$pre = HEAP32[$out>>2]|0; + $$pre50 = HEAP32[$29>>2]|0; + $95 = $$pre;$99 = $$pre50; + } else { + $95 = $26;$99 = $28; + } + _oggpack_write($opb,1,1); + $82 = ((($look)) + 1308|0); + $83 = HEAP32[$82>>2]|0; + $84 = (($83) + 1)|0; + HEAP32[$82>>2] = $84; + $85 = HEAP32[$31>>2]|0; + $86 = (($85) + -1)|0; + $87 = (_ov_ilog($86)|0); + $88 = $87 << 1; + $89 = ((($look)) + 1304|0); + $90 = HEAP32[$89>>2]|0; + $91 = (($90) + ($88))|0; + HEAP32[$89>>2] = $91; + $92 = HEAP32[$31>>2]|0; + $93 = (($92) + -1)|0; + $94 = (_ov_ilog($93)|0); + _oggpack_write($opb,$95,$94); + $96 = HEAP32[$31>>2]|0; + $97 = (($96) + -1)|0; + $98 = (_ov_ilog($97)|0); + _oggpack_write($opb,$99,$98); + $100 = HEAP32[$1>>2]|0; + $101 = ($100|0)>(0); + if ($101) { + $102 = ((($look)) + 1300|0); + $i$231 = 0;$j$027 = 2; + while(1) { + $103 = (((($1)) + 4|0) + ($i$231<<2)|0); + $104 = HEAP32[$103>>2]|0; + $105 = (((($1)) + 128|0) + ($104<<2)|0); + $106 = HEAP32[$105>>2]|0; + $107 = (((($1)) + 192|0) + ($104<<2)|0); + $108 = HEAP32[$107>>2]|0; + $109 = 1 << $108; + ;HEAP32[$bookas>>2]=0|0;HEAP32[$bookas+4>>2]=0|0;HEAP32[$bookas+8>>2]=0|0;HEAP32[$bookas+12>>2]=0|0;HEAP32[$bookas+16>>2]=0|0;HEAP32[$bookas+20>>2]=0|0;HEAP32[$bookas+24>>2]=0|0;HEAP32[$bookas+28>>2]=0|0; + $110 = ($108|0)==(0); + if (!($110)) { + ;HEAP32[$maxval>>2]=0|0;HEAP32[$maxval+4>>2]=0|0;HEAP32[$maxval+8>>2]=0|0;HEAP32[$maxval+12>>2]=0|0;HEAP32[$maxval+16>>2]=0|0;HEAP32[$maxval+20>>2]=0|0;HEAP32[$maxval+24>>2]=0|0;HEAP32[$maxval+28>>2]=0|0; + $111 = ($108|0)==(31); + if (!($111)) { + $k$016 = 0; + while(1) { + $127 = ((((($1)) + 320|0) + ($104<<5)|0) + ($k$016<<2)|0); + $128 = HEAP32[$127>>2]|0; + $129 = ($128|0)<(0); + if ($129) { + $$sink = 1; + } else { + $130 = (((($9)) + 1824|0) + ($128<<2)|0); + $131 = HEAP32[$130>>2]|0; + $132 = ((($131)) + 4|0); + $133 = HEAP32[$132>>2]|0; + $$sink = $133; + } + $134 = (($maxval) + ($k$016<<2)|0); + HEAP32[$134>>2] = $$sink; + $135 = (($k$016) + 1)|0; + $136 = ($135|0)<($109|0); + if ($136) { + $k$016 = $135; + } else { + break; + } + } + } + $112 = ($106|0)>(0); + L48: do { + if ($112) { + if ($111) { + $cshift$021 = 0;$cval$020 = 0;$k$122 = 0; + while(1) { + $137 = (($bookas) + ($k$122<<2)|0); + $138 = HEAP32[$137>>2]|0; + $139 = $138 << $cshift$021; + $140 = $139 | $cval$020; + $141 = (($cshift$021) + 31)|0; + $142 = (($k$122) + 1)|0; + $exitcond = ($142|0)==($106|0); + if ($exitcond) { + $cval$0$lcssa = $140; + break L48; + } else { + $cshift$021 = $141;$cval$020 = $140;$k$122 = $142; + } + } + } else { + $cshift$021$us = 0;$cval$020$us = 0;$k$122$us = 0; + } + while(1) { + $125 = (($k$122$us) + ($j$027))|0; + $126 = (($out) + ($125<<2)|0); + $115 = HEAP32[$126>>2]|0; + $l$018$us = 0; + while(1) { + $113 = (($maxval) + ($l$018$us<<2)|0); + $114 = HEAP32[$113>>2]|0; + $116 = ($115|0)<($114|0); + if ($116) { + $l$018$us$lcssa = $l$018$us; + label = 31; + break; + } + $117 = (($l$018$us) + 1)|0; + $118 = ($117|0)<($109|0); + if ($118) { + $l$018$us = $117; + } else { + label = 33; + break; + } + } + if ((label|0) == 31) { + label = 0; + $119 = (($bookas) + ($k$122$us<<2)|0); + HEAP32[$119>>2] = $l$018$us$lcssa; + $121 = $l$018$us$lcssa; + } + else if ((label|0) == 33) { + label = 0; + $$phi$trans$insert = (($bookas) + ($k$122$us<<2)|0); + $$pre51 = HEAP32[$$phi$trans$insert>>2]|0; + $121 = $$pre51; + } + $120 = $121 << $cshift$021$us; + $122 = $120 | $cval$020$us; + $123 = (($cshift$021$us) + ($108))|0; + $124 = (($k$122$us) + 1)|0; + $exitcond47 = ($124|0)==($106|0); + if ($exitcond47) { + $cval$0$lcssa = $122; + break; + } else { + $cshift$021$us = $123;$cval$020$us = $122;$k$122$us = $124; + } + } + } else { + $cval$0$lcssa = 0; + } + } while(0); + $143 = (((($1)) + 256|0) + ($104<<2)|0); + $144 = HEAP32[$143>>2]|0; + $145 = (($11) + (($144*56)|0)|0); + $146 = (_vorbis_book_encode($145,$cval$0$lcssa,$opb)|0); + $147 = HEAP32[$102>>2]|0; + $148 = (($147) + ($146))|0; + HEAP32[$102>>2] = $148; + } + $149 = ($106|0)>(0); + if ($149) { + $k$224 = 0; + while(1) { + $150 = (($bookas) + ($k$224<<2)|0); + $151 = HEAP32[$150>>2]|0; + $152 = ((((($1)) + 320|0) + ($104<<5)|0) + ($151<<2)|0); + $153 = HEAP32[$152>>2]|0; + $154 = ($153|0)>(-1); + if ($154) { + $155 = (($k$224) + ($j$027))|0; + $156 = (($out) + ($155<<2)|0); + $157 = HEAP32[$156>>2]|0; + $158 = (((($11) + (($153*56)|0)|0)) + 4|0); + $159 = HEAP32[$158>>2]|0; + $160 = ($157|0)<($159|0); + if ($160) { + $161 = (($11) + (($153*56)|0)|0); + $162 = (_vorbis_book_encode($161,$157,$opb)|0); + $163 = HEAP32[$89>>2]|0; + $164 = (($163) + ($162))|0; + HEAP32[$89>>2] = $164; + } + } + $165 = (($k$224) + 1)|0; + $exitcond46 = ($165|0)==($106|0); + if ($exitcond46) { + break; + } else { + $k$224 = $165; + } + } + } + $166 = (($106) + ($j$027))|0; + $167 = (($i$231) + 1)|0; + $168 = HEAP32[$1>>2]|0; + $169 = ($167|0)<($168|0); + if ($169) { + $i$231 = $167;$j$027 = $166; + } else { + break; + } + } + } + $170 = HEAP32[$post>>2]|0; + $171 = ((($1)) + 832|0); + $172 = HEAP32[$171>>2]|0; + $173 = Math_imul($172, $170)|0; + $174 = ((($vb)) + 28|0); + $175 = HEAP32[$174>>2]|0; + $176 = (($9) + ($175<<2)|0); + $177 = HEAP32[$176>>2]|0; + $178 = (($177|0) / 2)&-1; + $179 = HEAP32[$2>>2]|0; + $180 = ($179|0)>(1); + if ($180) { + $hx$011 = 0;$j$110 = 1;$lx$012 = 0;$ly$013 = $173; + while(1) { + $185 = (((($look)) + 260|0) + ($j$110<<2)|0); + $186 = HEAP32[$185>>2]|0; + $187 = (($post) + ($186<<2)|0); + $188 = HEAP32[$187>>2]|0; + $189 = $188 & 32767; + $190 = ($189|0)==($188|0); + if ($190) { + $191 = HEAP32[$171>>2]|0; + $192 = Math_imul($191, $188)|0; + $193 = (((($1)) + 836|0) + ($186<<2)|0); + $194 = HEAP32[$193>>2]|0; + $195 = (($192) - ($ly$013))|0; + $196 = (($194) - ($lx$012))|0; + $ispos$i1 = ($195|0)>(-1); + $neg$i2 = (0 - ($195))|0; + $197 = $ispos$i1 ? $195 : $neg$i2; + $198 = (($195|0) / ($196|0))&-1; + $199 = $195 >> 31; + $200 = $199 | 1; + $201 = Math_imul($198, $196)|0; + $ispos1$i = ($201|0)>(-1); + $neg2$i = (0 - ($201))|0; + $202 = $ispos1$i ? $201 : $neg2$i; + $203 = (($197) - ($202))|0; + $204 = ($178|0)>($194|0); + $x1$n$i = $204 ? $194 : $178; + $205 = ($x1$n$i|0)>($lx$012|0); + if ($205) { + $206 = (($ilogmask) + ($lx$012<<2)|0); + HEAP32[$206>>2] = $ly$013; + } + $207 = (($lx$012) + 1)|0; + $208 = ($207|0)<($x1$n$i|0); + if ($208) { + $214 = $207;$err$04$i = 0;$y$03$i = $ly$013; + while(1) { + $209 = (($err$04$i) + ($203))|0; + $210 = ($209|0)<($196|0); + $211 = $210 ? 0 : $200; + $212 = $210 ? 0 : $196; + $err$1$i = (($209) - ($212))|0; + $$pn$i = (($y$03$i) + ($198))|0; + $y$1$i = (($$pn$i) + ($211))|0; + $213 = (($ilogmask) + ($214<<2)|0); + HEAP32[$213>>2] = $y$1$i; + $215 = (($214) + 1)|0; + $exitcond$i = ($215|0)==($x1$n$i|0); + if ($exitcond$i) { + $hx$1 = $194;$lx$1 = $194;$ly$1 = $192; + break; + } else { + $214 = $215;$err$04$i = $err$1$i;$y$03$i = $y$1$i; + } + } + } else { + $hx$1 = $194;$lx$1 = $194;$ly$1 = $192; + } + } else { + $hx$1 = $hx$011;$lx$1 = $lx$012;$ly$1 = $ly$013; + } + $216 = (($j$110) + 1)|0; + $217 = HEAP32[$2>>2]|0; + $218 = ($216|0)<($217|0); + if ($218) { + $hx$011 = $hx$1;$j$110 = $216;$lx$012 = $lx$1;$ly$013 = $ly$1; + } else { + $hx$0$lcssa = $hx$1;$ly$0$lcssa = $ly$1; + break; + } + } + } else { + $hx$0$lcssa = 0;$ly$0$lcssa = $173; + } + $181 = ((($vb)) + 36|0); + $182 = HEAP32[$181>>2]|0; + $183 = (($182|0) / 2)&-1; + $184 = ($hx$0$lcssa|0)<($183|0); + if ($184) { + $j$29 = $hx$0$lcssa; + } else { + $$0 = 1; + STACKTOP = sp;return ($$0|0); + } + while(1) { + $219 = (($ilogmask) + ($j$29<<2)|0); + HEAP32[$219>>2] = $ly$0$lcssa; + $220 = (($j$29) + 1)|0; + $221 = HEAP32[$181>>2]|0; + $222 = (($221|0) / 2)&-1; + $223 = ($220|0)<($222|0); + if ($223) { + $j$29 = $220; + } else { + $$0 = 1; + break; + } + } + STACKTOP = sp;return ($$0|0); +} +function _fit_line($a,$fits,$y0,$y1,$info) { + $a = $a|0; + $fits = $fits|0; + $y0 = $y0|0; + $y1 = $y1|0; + $info = $info|0; + var $$0 = 0, $$pr = 0, $$pre = 0, $$pre15 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0.0, $101 = 0.0, $102 = 0.0, $103 = 0, $104 = 0.0, $105 = 0.0, $106 = 0.0, $107 = 0.0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0; + var $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $12 = 0.0, $13 = 0.0, $14 = 0, $15 = 0.0, $16 = 0.0, $17 = 0.0, $18 = 0.0, $19 = 0, $2 = 0, $20 = 0, $21 = 0.0, $22 = 0, $23 = 0; + var $24 = 0.0, $25 = 0.0, $26 = 0.0, $27 = 0.0, $28 = 0, $29 = 0, $3 = 0, $30 = 0.0, $31 = 0, $32 = 0, $33 = 0.0, $34 = 0.0, $35 = 0.0, $36 = 0.0, $37 = 0, $38 = 0, $39 = 0.0, $4 = 0, $40 = 0, $41 = 0; + var $42 = 0.0, $43 = 0.0, $44 = 0.0, $45 = 0.0, $46 = 0, $47 = 0, $48 = 0.0, $49 = 0, $5 = 0, $50 = 0, $51 = 0.0, $52 = 0.0, $53 = 0.0, $54 = 0.0, $55 = 0.0, $56 = 0.0, $57 = 0.0, $58 = 0.0, $59 = 0.0, $6 = 0.0; + var $60 = 0, $61 = 0, $62 = 0, $63 = 0.0, $64 = 0.0, $65 = 0.0, $66 = 0.0, $67 = 0, $68 = 0.0, $69 = 0.0, $7 = 0, $70 = 0, $71 = 0.0, $72 = 0.0, $73 = 0.0, $74 = 0, $75 = 0, $76 = 0.0, $77 = 0.0, $78 = 0.0; + var $79 = 0.0, $8 = 0, $80 = 0, $81 = 0.0, $82 = 0.0, $83 = 0, $84 = 0.0, $85 = 0.0, $86 = 0.0, $87 = 0.0, $88 = 0.0, $89 = 0.0, $9 = 0, $90 = 0, $91 = 0.0, $92 = 0.0, $93 = 0.0, $94 = 0.0, $95 = 0.0, $96 = 0.0; + var $97 = 0.0, $98 = 0.0, $99 = 0.0, $bn$0$lcssa = 0.0, $bn$01 = 0.0, $bn$1 = 0.0, $bn$2 = 0.0, $exitcond = 0, $i$02 = 0, $x2b$0$lcssa = 0.0, $x2b$04 = 0.0, $x2b$1 = 0.0, $x2b$2 = 0.0, $xb$0$lcssa = 0.0, $xb$06 = 0.0, $xb$1 = 0.0, $xb$2 = 0.0, $xyb$0$lcssa = 0.0, $xyb$03 = 0.0, $xyb$1 = 0.0; + var $xyb$2 = 0.0, $yb$0$lcssa = 0.0, $yb$05 = 0.0, $yb$1 = 0.0, $yb$2 = 0.0, label = 0, sp = 0; + sp = STACKTOP; + $0 = HEAP32[$a>>2]|0; + $1 = (($fits) + -1)|0; + $2 = (((($a) + (($1*56)|0)|0)) + 4|0); + $3 = HEAP32[$2>>2]|0; + $4 = ($fits|0)>(0); + if ($4) { + $5 = ((($info)) + 1108|0); + $6 = +HEAPF32[$5>>2]; + $bn$01 = 0.0;$i$02 = 0;$x2b$04 = 0.0;$xb$06 = 0.0;$xyb$03 = 0.0;$yb$05 = 0.0; + while(1) { + $7 = (((($a) + (($i$02*56)|0)|0)) + 52|0); + $8 = HEAP32[$7>>2]|0; + $9 = (((($a) + (($i$02*56)|0)|0)) + 28|0); + $10 = HEAP32[$9>>2]|0; + $11 = (($10) + ($8))|0; + $12 = (+($11|0)); + $13 = $12 * $6; + $14 = (($10) + 1)|0; + $15 = (+($14|0)); + $16 = $13 / $15; + $17 = $16; + $18 = $17 + 1.0; + $19 = (((($a) + (($i$02*56)|0)|0)) + 32|0); + $20 = HEAP32[$19>>2]|0; + $21 = (+($20|0)); + $22 = (((($a) + (($i$02*56)|0)|0)) + 8|0); + $23 = HEAP32[$22>>2]|0; + $24 = (+($23|0)); + $25 = $24 * $18; + $26 = $21 + $xb$06; + $27 = $26 + $25; + $28 = (((($a) + (($i$02*56)|0)|0)) + 36|0); + $29 = HEAP32[$28>>2]|0; + $30 = (+($29|0)); + $31 = (((($a) + (($i$02*56)|0)|0)) + 12|0); + $32 = HEAP32[$31>>2]|0; + $33 = (+($32|0)); + $34 = $33 * $18; + $35 = $30 + $yb$05; + $36 = $35 + $34; + $37 = (((($a) + (($i$02*56)|0)|0)) + 40|0); + $38 = HEAP32[$37>>2]|0; + $39 = (+($38|0)); + $40 = (((($a) + (($i$02*56)|0)|0)) + 16|0); + $41 = HEAP32[$40>>2]|0; + $42 = (+($41|0)); + $43 = $42 * $18; + $44 = $39 + $x2b$04; + $45 = $44 + $43; + $46 = (((($a) + (($i$02*56)|0)|0)) + 48|0); + $47 = HEAP32[$46>>2]|0; + $48 = (+($47|0)); + $49 = (((($a) + (($i$02*56)|0)|0)) + 24|0); + $50 = HEAP32[$49>>2]|0; + $51 = (+($50|0)); + $52 = $51 * $18; + $53 = $48 + $xyb$03; + $54 = $53 + $52; + $55 = (+($8|0)); + $56 = (+($10|0)); + $57 = $18 * $56; + $58 = $55 + $bn$01; + $59 = $58 + $57; + $60 = (($i$02) + 1)|0; + $exitcond = ($60|0)==($fits|0); + if ($exitcond) { + $bn$0$lcssa = $59;$x2b$0$lcssa = $45;$xb$0$lcssa = $27;$xyb$0$lcssa = $54;$yb$0$lcssa = $36; + break; + } else { + $bn$01 = $59;$i$02 = $60;$x2b$04 = $45;$xb$06 = $27;$xyb$03 = $54;$yb$05 = $36; + } + } + } else { + $bn$0$lcssa = 0.0;$x2b$0$lcssa = 0.0;$xb$0$lcssa = 0.0;$xyb$0$lcssa = 0.0;$yb$0$lcssa = 0.0; + } + $61 = HEAP32[$y0>>2]|0; + $62 = ($61|0)>(-1); + if ($62) { + $63 = (+($0|0)); + $64 = $xb$0$lcssa + $63; + $65 = (+($61|0)); + $66 = $65 + $yb$0$lcssa; + $67 = Math_imul($0, $0)|0; + $68 = (+($67|0)); + $69 = $x2b$0$lcssa + $68; + $70 = Math_imul($61, $0)|0; + $71 = (+($70|0)); + $72 = $71 + $xyb$0$lcssa; + $73 = $bn$0$lcssa + 1.0; + $bn$1 = $73;$x2b$1 = $69;$xb$1 = $64;$xyb$1 = $72;$yb$1 = $66; + } else { + $bn$1 = $bn$0$lcssa;$x2b$1 = $x2b$0$lcssa;$xb$1 = $xb$0$lcssa;$xyb$1 = $xyb$0$lcssa;$yb$1 = $yb$0$lcssa; + } + $74 = HEAP32[$y1>>2]|0; + $75 = ($74|0)>(-1); + if ($75) { + $76 = (+($3|0)); + $77 = $xb$1 + $76; + $78 = (+($74|0)); + $79 = $78 + $yb$1; + $80 = Math_imul($3, $3)|0; + $81 = (+($80|0)); + $82 = $x2b$1 + $81; + $83 = Math_imul($74, $3)|0; + $84 = (+($83|0)); + $85 = $84 + $xyb$1; + $86 = $bn$1 + 1.0; + $bn$2 = $86;$x2b$2 = $82;$xb$2 = $77;$xyb$2 = $85;$yb$2 = $79; + } else { + $bn$2 = $bn$1;$x2b$2 = $x2b$1;$xb$2 = $xb$1;$xyb$2 = $xyb$1;$yb$2 = $yb$1; + } + $87 = $x2b$2 * $bn$2; + $88 = $xb$2 * $xb$2; + $89 = $87 - $88; + $90 = $89 > 0.0; + if (!($90)) { + HEAP32[$y0>>2] = 0; + HEAP32[$y1>>2] = 0; + $$0 = 1; + return ($$0|0); + } + $91 = $yb$2 * $x2b$2; + $92 = $xb$2 * $xyb$2; + $93 = $91 - $92; + $94 = $93 / $89; + $95 = $xyb$2 * $bn$2; + $96 = $xb$2 * $yb$2; + $97 = $95 - $96; + $98 = $97 / $89; + $99 = (+($0|0)); + $100 = $98 * $99; + $101 = $100 + $94; + $102 = (+_rint($101)); + $103 = (~~(($102))); + HEAP32[$y0>>2] = $103; + $104 = (+($3|0)); + $105 = $98 * $104; + $106 = $105 + $94; + $107 = (+_rint($106)); + $108 = (~~(($107))); + HEAP32[$y1>>2] = $108; + $109 = HEAP32[$y0>>2]|0; + $110 = ($109|0)>(1023); + if ($110) { + HEAP32[$y0>>2] = 1023; + $$pr = HEAP32[$y1>>2]|0; + $111 = $$pr;$117 = 1023; + } else { + $111 = $108;$117 = $109; + } + $112 = ($111|0)>(1023); + if ($112) { + HEAP32[$y1>>2] = 1023; + $$pre = HEAP32[$y0>>2]|0; + $113 = $$pre;$118 = 1023; + } else { + $113 = $117;$118 = $111; + } + $114 = ($113|0)<(0); + if ($114) { + HEAP32[$y0>>2] = 0; + $$pre15 = HEAP32[$y1>>2]|0; + $115 = $$pre15; + } else { + $115 = $118; + } + $116 = ($115|0)<(0); + if (!($116)) { + $$0 = 0; + return ($$0|0); + } + HEAP32[$y1>>2] = 0; + $$0 = 0; + return ($$0|0); +} +function _floor1_pack($i,$opb) { + $i = $i|0; + $opb = $opb|0; + var $$maxclass$0 = 0, $$maxclass$0$lcssa = 0, $$pre = 0, $$pre22 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0; + var $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0; + var $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0; + var $6 = 0, $60 = 0, $7 = 0, $8 = 0, $9 = 0, $count$03 = 0, $exitcond = 0, $exitcond21 = 0, $j$016 = 0, $j$112 = 0, $j$25 = 0, $k$09 = 0, $k$14 = 0, $k$2$lcssa = 0, $k$22 = 0, $maxclass$017 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($i)) + 836|0); + $1 = ((($i)) + 840|0); + $2 = HEAP32[$1>>2]|0; + $3 = HEAP32[$i>>2]|0; + _oggpack_write($opb,$3,5); + $4 = HEAP32[$i>>2]|0; + $5 = ($4|0)>(0); + if ($5) { + $6 = ((($i)) + 4|0); + $j$016 = 0;$maxclass$017 = -1; + while(1) { + $12 = (($6) + ($j$016<<2)|0); + $13 = HEAP32[$12>>2]|0; + _oggpack_write($opb,$13,4); + $14 = HEAP32[$12>>2]|0; + $15 = ($maxclass$017|0)<($14|0); + $$maxclass$0 = $15 ? $14 : $maxclass$017; + $16 = (($j$016) + 1)|0; + $17 = HEAP32[$i>>2]|0; + $18 = ($16|0)<($17|0); + if ($18) { + $j$016 = $16;$maxclass$017 = $$maxclass$0; + } else { + $$maxclass$0$lcssa = $$maxclass$0; + break; + } + } + $7 = ($$maxclass$0$lcssa|0)>(-1); + if ($7) { + $8 = ((($i)) + 128|0); + $9 = ((($i)) + 192|0); + $10 = ((($i)) + 256|0); + $11 = ((($i)) + 320|0); + $j$112 = 0; + while(1) { + $19 = (($8) + ($j$112<<2)|0); + $20 = HEAP32[$19>>2]|0; + $21 = (($20) + -1)|0; + _oggpack_write($opb,$21,3); + $22 = (($9) + ($j$112<<2)|0); + $23 = HEAP32[$22>>2]|0; + _oggpack_write($opb,$23,2); + $24 = HEAP32[$22>>2]|0; + $25 = ($24|0)==(0); + if ($25) { + $k$09 = 0; + label = 8; + } else { + $26 = (($10) + ($j$112<<2)|0); + $27 = HEAP32[$26>>2]|0; + _oggpack_write($opb,$27,8); + $$pre = HEAP32[$22>>2]|0; + $28 = ($$pre|0)==(31); + if (!($28)) { + $k$09 = 0; + label = 8; + } + } + if ((label|0) == 8) { + while(1) { + label = 0; + $29 = ((($11) + ($j$112<<5)|0) + ($k$09<<2)|0); + $30 = HEAP32[$29>>2]|0; + $31 = (($30) + 1)|0; + _oggpack_write($opb,$31,8); + $32 = (($k$09) + 1)|0; + $33 = HEAP32[$22>>2]|0; + $34 = 1 << $33; + $35 = ($32|0)<($34|0); + if ($35) { + $k$09 = $32; + label = 8; + } else { + break; + } + } + } + $36 = (($j$112) + 1)|0; + $exitcond21 = ($j$112|0)==($$maxclass$0$lcssa|0); + if ($exitcond21) { + break; + } else { + $j$112 = $36; + } + } + } + } + $37 = ((($i)) + 832|0); + $38 = HEAP32[$37>>2]|0; + $39 = (($38) + -1)|0; + _oggpack_write($opb,$39,2); + $40 = (($2) + -1)|0; + $41 = (_ov_ilog($40)|0); + _oggpack_write($opb,$41,4); + $42 = (_ov_ilog($40)|0); + $43 = HEAP32[$i>>2]|0; + $44 = ($43|0)>(0); + if (!($44)) { + return; + } + $45 = ((($i)) + 4|0); + $46 = ((($i)) + 128|0); + $60 = $43;$count$03 = 0;$j$25 = 0;$k$14 = 0; + while(1) { + $47 = (($45) + ($j$25<<2)|0); + $48 = HEAP32[$47>>2]|0; + $49 = (($46) + ($48<<2)|0); + $50 = HEAP32[$49>>2]|0; + $51 = (($50) + ($count$03))|0; + $52 = ($k$14|0)<($51|0); + if ($52) { + $k$22 = $k$14; + while(1) { + $53 = (($k$22) + 2)|0; + $54 = (($0) + ($53<<2)|0); + $55 = HEAP32[$54>>2]|0; + _oggpack_write($opb,$55,$42); + $56 = (($k$22) + 1)|0; + $exitcond = ($56|0)==($51|0); + if ($exitcond) { + break; + } else { + $k$22 = $56; + } + } + $$pre22 = HEAP32[$i>>2]|0; + $59 = $$pre22;$k$2$lcssa = $51; + } else { + $59 = $60;$k$2$lcssa = $k$14; + } + $57 = (($j$25) + 1)|0; + $58 = ($57|0)<($59|0); + if ($58) { + $60 = $59;$count$03 = $51;$j$25 = $57;$k$14 = $k$2$lcssa; + } else { + break; + } + } + return; +} +function _floor1_unpack($vi,$opb) { + $vi = $vi|0; + $opb = $opb|0; + var $$01 = 0, $$lcssa = 0, $$maxclass$0 = 0, $$maxclass$0$lcssa = 0, $$phi$trans$insert = 0, $$pre = 0, $$pre$phi50Z2D = 0, $$pre$phi52Z2D = 0, $$pre45 = 0, $$pre47 = 0, $$pre48 = 0, $$pre49 = 0, $$pre51 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0; + var $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0; + var $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0; + var $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0; + var $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0; + var $88 = 0, $89 = 0, $9 = 0, $90 = 0, $count$0$lcssa = 0, $count$023 = 0, $j$037 = 0, $j$132 = 0, $j$225 = 0, $j$315 = 0, $j$414 = 0, $k$029 = 0, $k$124 = 0, $k$2$lcssa = 0, $k$219 = 0, $maxclass$036 = 0, $or$cond = 0, $sortpointer = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 272|0; + $sortpointer = sp; + $0 = ((($vi)) + 28|0); + $1 = HEAP32[$0>>2]|0; + $2 = (_calloc(1,1120)|0); + $3 = (_oggpack_read($opb,5)|0); + HEAP32[$2>>2] = $3; + $4 = ($3|0)>(0); + L1: do { + if ($4) { + $5 = ((($2)) + 4|0); + $j$037 = 0;$maxclass$036 = -1; + while(1) { + $12 = (_oggpack_read($opb,4)|0); + $13 = (($5) + ($j$037<<2)|0); + HEAP32[$13>>2] = $12; + $14 = ($12|0)<(0); + if ($14) { + break L1; + } + $15 = ($maxclass$036|0)<($12|0); + $$maxclass$0 = $15 ? $12 : $maxclass$036; + $16 = (($j$037) + 1)|0; + $17 = HEAP32[$2>>2]|0; + $18 = ($16|0)<($17|0); + if ($18) { + $j$037 = $16;$maxclass$036 = $$maxclass$0; + } else { + $$maxclass$0$lcssa = $$maxclass$0; + break; + } + } + $6 = ($$maxclass$0$lcssa|0)>(-1); + if ($6) { + $7 = ((($2)) + 128|0); + $8 = ((($2)) + 192|0); + $9 = ((($2)) + 256|0); + $10 = ((($1)) + 24|0); + $11 = ((($2)) + 320|0); + $j$132 = 0; + while(1) { + $19 = (_oggpack_read($opb,3)|0); + $20 = (($19) + 1)|0; + $21 = (($7) + ($j$132<<2)|0); + HEAP32[$21>>2] = $20; + $22 = (_oggpack_read($opb,2)|0); + $23 = (($8) + ($j$132<<2)|0); + HEAP32[$23>>2] = $22; + $24 = ($22|0)<(0); + if ($24) { + break L1; + } + $25 = ($22|0)==(0); + if ($25) { + $$phi$trans$insert = (($9) + ($j$132<<2)|0); + $$pre = HEAP32[$$phi$trans$insert>>2]|0; + $28 = $$pre; + } else { + $26 = (_oggpack_read($opb,8)|0); + $27 = (($9) + ($j$132<<2)|0); + HEAP32[$27>>2] = $26; + $28 = $26; + } + $29 = ($28|0)<(0); + if ($29) { + break L1; + } + $30 = HEAP32[$10>>2]|0; + $31 = ($28|0)<($30|0); + if (!($31)) { + break L1; + } + $32 = HEAP32[$23>>2]|0; + $33 = ($32|0)==(31); + if (!($33)) { + $k$029 = 0; + while(1) { + $38 = (_oggpack_read($opb,8)|0); + $39 = (($38) + -1)|0; + $40 = ((($11) + ($j$132<<5)|0) + ($k$029<<2)|0); + HEAP32[$40>>2] = $39; + $41 = ($38|0)<(0); + if ($41) { + break L1; + } + $42 = HEAP32[$10>>2]|0; + $43 = ($38|0)>($42|0); + $36 = (($k$029) + 1)|0; + if ($43) { + break L1; + } + $34 = HEAP32[$23>>2]|0; + $35 = 1 << $34; + $37 = ($36|0)<($35|0); + if ($37) { + $k$029 = $36; + } else { + break; + } + } + } + $44 = (($j$132) + 1)|0; + $45 = ($j$132|0)<($$maxclass$0$lcssa|0); + if ($45) { + $j$132 = $44; + } else { + label = 18; + break; + } + } + } else { + label = 18; + } + } else { + label = 18; + } + } while(0); + L23: do { + if ((label|0) == 18) { + $46 = (_oggpack_read($opb,2)|0); + $47 = (($46) + 1)|0; + $48 = ((($2)) + 832|0); + HEAP32[$48>>2] = $47; + $49 = (_oggpack_read($opb,4)|0); + $50 = ($49|0)<(0); + if (!($50)) { + $51 = HEAP32[$2>>2]|0; + $52 = ($51|0)>(0); + if ($52) { + $53 = ((($2)) + 4|0); + $54 = ((($2)) + 128|0); + $55 = ((($2)) + 836|0); + $56 = 1 << $49; + $90 = $51;$count$023 = 0;$j$225 = 0;$k$124 = 0; + while(1) { + $57 = (($53) + ($j$225<<2)|0); + $58 = HEAP32[$57>>2]|0; + $59 = (($54) + ($58<<2)|0); + $60 = HEAP32[$59>>2]|0; + $61 = (($60) + ($count$023))|0; + $62 = ($61|0)>(63); + if ($62) { + break L23; + } + $63 = ($k$124|0)<($61|0); + if ($63) { + $k$219 = $k$124; + while(1) { + $64 = (_oggpack_read($opb,$49)|0); + $65 = (($k$219) + 2)|0; + $66 = (($55) + ($65<<2)|0); + HEAP32[$66>>2] = $64; + $67 = ($64|0)>(-1); + $68 = ($64|0)<($56|0); + $or$cond = $67 & $68; + if (!($or$cond)) { + break L23; + } + $69 = (($k$219) + 1)|0; + $70 = ($69|0)<($61|0); + if ($70) { + $k$219 = $69; + } else { + $$lcssa = $69; + break; + } + } + $$pre45 = HEAP32[$2>>2]|0; + $73 = $$pre45;$k$2$lcssa = $$lcssa; + } else { + $73 = $90;$k$2$lcssa = $k$124; + } + $71 = (($j$225) + 1)|0; + $72 = ($71|0)<($73|0); + if ($72) { + $90 = $73;$count$023 = $61;$j$225 = $71;$k$124 = $k$2$lcssa; + } else { + $$pre$phi50Z2D = $55;$$pre$phi52Z2D = $56;$count$0$lcssa = $61; + break; + } + } + } else { + $$pre49 = ((($2)) + 836|0); + $$pre51 = 1 << $49; + $$pre$phi50Z2D = $$pre49;$$pre$phi52Z2D = $$pre51;$count$0$lcssa = 0; + } + HEAP32[$$pre$phi50Z2D>>2] = 0; + $74 = ((($2)) + 840|0); + HEAP32[$74>>2] = $$pre$phi52Z2D; + $75 = (($count$0$lcssa) + 2)|0; + $76 = ($count$0$lcssa|0)>(-2); + if ($76) { + $j$315 = 0; + while(1) { + $77 = (($$pre$phi50Z2D) + ($j$315<<2)|0); + $78 = (($sortpointer) + ($j$315<<2)|0); + HEAP32[$78>>2] = $77; + $79 = (($j$315) + 1)|0; + $80 = ($79|0)<($75|0); + if ($80) { + $j$315 = $79; + } else { + break; + } + } + } + _qsort($sortpointer,$75,4,8); + $81 = ($75|0)>(1); + L43: do { + if ($81) { + $$pre47 = HEAP32[$sortpointer>>2]|0; + $$pre48 = HEAP32[$$pre47>>2]|0; + $87 = $$pre48;$j$414 = 1; + while(1) { + $84 = (($sortpointer) + ($j$414<<2)|0); + $85 = HEAP32[$84>>2]|0; + $86 = HEAP32[$85>>2]|0; + $88 = ($87|0)==($86|0); + $82 = (($j$414) + 1)|0; + if ($88) { + break; + } + $83 = ($82|0)<($75|0); + if ($83) { + $87 = $86;$j$414 = $82; + } else { + break L43; + } + } + $89 = ($2|0)==(0|0); + if ($89) { + $$01 = 0; + } else { + break L23; + } + STACKTOP = sp;return ($$01|0); + } + } while(0); + $$01 = $2; + STACKTOP = sp;return ($$01|0); + } + } + } while(0); + _free($2); + $$01 = 0; + STACKTOP = sp;return ($$01|0); +} +function _floor1_look($vd,$in) { + $vd = $vd|0; + $in = $in|0; + var $$lcssa = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0; + var $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0; + var $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0; + var $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $8 = 0, $9 = 0, $exitcond = 0, $hi$05 = 0, $hi$1 = 0, $hi$1$lcssa = 0; + var $hx$07 = 0, $hx$1 = 0, $i$026 = 0, $i$121 = 0, $i$218 = 0, $i$316 = 0, $i$413 = 0, $i$510 = 0, $j$08 = 0, $lo$04 = 0, $lo$1 = 0, $lo$1$lcssa = 0, $lx$06 = 0, $lx$1 = 0, $n$0$lcssa32343639 = 0, $n$0$lcssa33 = 0, $n$025 = 0, $or$cond = 0, $or$cond1 = 0, $sortpointer = 0; + var label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 272|0; + $sortpointer = sp; + $0 = (_calloc(1,1312)|0); + $1 = ((($0)) + 1296|0); + HEAP32[$1>>2] = $in; + $2 = ((($in)) + 836|0); + $3 = ((($in)) + 840|0); + $4 = HEAP32[$3>>2]|0; + $5 = ((($0)) + 1288|0); + HEAP32[$5>>2] = $4; + $6 = HEAP32[$in>>2]|0; + $7 = ($6|0)>(0); + if ($7) { + $9 = ((($in)) + 4|0); + $10 = ((($in)) + 128|0); + $i$026 = 0;$n$025 = 0; + while(1) { + $11 = (($9) + ($i$026<<2)|0); + $12 = HEAP32[$11>>2]|0; + $13 = (($10) + ($12<<2)|0); + $14 = HEAP32[$13>>2]|0; + $15 = (($14) + ($n$025))|0; + $16 = (($i$026) + 1)|0; + $17 = ($16|0)<($6|0); + if ($17) { + $i$026 = $16;$n$025 = $15; + } else { + $$lcssa = $15; + break; + } + } + $18 = (($$lcssa) + 2)|0; + $19 = ((($0)) + 1284|0); + HEAP32[$19>>2] = $18; + $20 = ($$lcssa|0)>(-2); + if ($20) { + $25 = $18;$n$0$lcssa33 = $$lcssa; + label = 7; + } else { + _qsort($sortpointer,$18,4,8); + $n$0$lcssa32343639 = $$lcssa; + } + } else { + $8 = ((($0)) + 1284|0); + HEAP32[$8>>2] = 2; + $25 = 2;$n$0$lcssa33 = 0; + label = 7; + } + if ((label|0) == 7) { + $i$121 = 0; + while(1) { + $21 = (($2) + ($i$121<<2)|0); + $22 = (($sortpointer) + ($i$121<<2)|0); + HEAP32[$22>>2] = $21; + $23 = (($i$121) + 1)|0; + $24 = ($23|0)<($25|0); + if ($24) { + $i$121 = $23; + } else { + break; + } + } + _qsort($sortpointer,$25,4,8); + $26 = $2; + $27 = ((($0)) + 260|0); + $i$218 = 0; + while(1) { + $30 = (($sortpointer) + ($i$218<<2)|0); + $31 = HEAP32[$30>>2]|0; + $32 = $31; + $33 = (($32) - ($26))|0; + $34 = $33 >> 2; + $35 = (($27) + ($i$218<<2)|0); + HEAP32[$35>>2] = $34; + $36 = (($i$218) + 1)|0; + $37 = ($36|0)<($25|0); + if ($37) { + $i$218 = $36; + } else { + break; + } + } + $28 = ((($0)) + 260|0); + $29 = ((($0)) + 520|0); + $i$316 = 0; + while(1) { + $39 = (($28) + ($i$316<<2)|0); + $40 = HEAP32[$39>>2]|0; + $41 = (($29) + ($40<<2)|0); + HEAP32[$41>>2] = $i$316; + $42 = (($i$316) + 1)|0; + $43 = ($42|0)<($25|0); + if ($43) { + $i$316 = $42; + } else { + break; + } + } + $38 = ((($0)) + 260|0); + $i$413 = 0; + while(1) { + $44 = (($38) + ($i$413<<2)|0); + $45 = HEAP32[$44>>2]|0; + $46 = (($2) + ($45<<2)|0); + $47 = HEAP32[$46>>2]|0; + $48 = (($0) + ($i$413<<2)|0); + HEAP32[$48>>2] = $47; + $49 = (($i$413) + 1)|0; + $50 = ($49|0)<($25|0); + if ($50) { + $i$413 = $49; + } else { + $n$0$lcssa32343639 = $n$0$lcssa33; + break; + } + } + } + $51 = ((($in)) + 832|0); + $52 = HEAP32[$51>>2]|0; + if ((($52|0) == 4)) { + $56 = ((($0)) + 1292|0); + HEAP32[$56>>2] = 64; + } else if ((($52|0) == 2)) { + $54 = ((($0)) + 1292|0); + HEAP32[$54>>2] = 128; + } else if ((($52|0) == 1)) { + $53 = ((($0)) + 1292|0); + HEAP32[$53>>2] = 256; + } else if ((($52|0) == 3)) { + $55 = ((($0)) + 1292|0); + HEAP32[$55>>2] = 86; + } + $57 = ($n$0$lcssa32343639|0)>(0); + if (!($57)) { + STACKTOP = sp;return ($0|0); + } + $58 = ((($0)) + 1032|0); + $59 = ((($0)) + 780|0); + $i$510 = 0; + while(1) { + $60 = (($i$510) + 2)|0; + $61 = (($2) + ($60<<2)|0); + $62 = HEAP32[$61>>2]|0; + $63 = HEAP32[$5>>2]|0; + $hi$05 = 1;$hx$07 = $63;$j$08 = 0;$lo$04 = 0;$lx$06 = 0; + while(1) { + $64 = (($2) + ($j$08<<2)|0); + $65 = HEAP32[$64>>2]|0; + $66 = ($65|0)>($lx$06|0); + $67 = ($65|0)<($62|0); + $or$cond = $66 & $67; + $lo$1 = $or$cond ? $j$08 : $lo$04; + $lx$1 = $or$cond ? $65 : $lx$06; + $68 = ($65|0)<($hx$07|0); + $69 = ($65|0)>($62|0); + $or$cond1 = $68 & $69; + $hi$1 = $or$cond1 ? $j$08 : $hi$05; + $hx$1 = $or$cond1 ? $65 : $hx$07; + $70 = (($j$08) + 1)|0; + $71 = ($70|0)<($60|0); + if ($71) { + $hi$05 = $hi$1;$hx$07 = $hx$1;$j$08 = $70;$lo$04 = $lo$1;$lx$06 = $lx$1; + } else { + $hi$1$lcssa = $hi$1;$lo$1$lcssa = $lo$1; + break; + } + } + $72 = (($58) + ($i$510<<2)|0); + HEAP32[$72>>2] = $lo$1$lcssa; + $73 = (($59) + ($i$510<<2)|0); + HEAP32[$73>>2] = $hi$1$lcssa; + $74 = (($i$510) + 1)|0; + $exitcond = ($74|0)==($n$0$lcssa32343639|0); + if ($exitcond) { + break; + } else { + $i$510 = $74; + } + } + STACKTOP = sp;return ($0|0); +} +function _floor1_free_info($i) { + $i = $i|0; + var $0 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($i|0)==(0|0); + if (!($0)) { + _free($i); + } + return; +} +function _floor1_free_look($i) { + $i = $i|0; + var $0 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($i|0)==(0|0); + if (!($0)) { + _free($i); + } + return; +} +function _floor1_inverse1($vb,$in) { + $vb = $vb|0; + $in = $in|0; + var $$0 = 0, $$0$i = 0, $$0$p$i = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0; + var $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0; + var $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0; + var $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0; + var $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0; + var $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0; + var $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $cval$1$ph = 0, $cval$15 = 0, $i$09 = 0, $i$14 = 0, $ispos$i = 0, $j$08 = 0, $k$06 = 0, $neg$i = 0, $val$0 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($in)) + 1296|0); + $1 = HEAP32[$0>>2]|0; + $2 = ((($vb)) + 64|0); + $3 = HEAP32[$2>>2]|0; + $4 = ((($3)) + 4|0); + $5 = HEAP32[$4>>2]|0; + $6 = ((($5)) + 28|0); + $7 = HEAP32[$6>>2]|0; + $8 = ((($7)) + 2848|0); + $9 = HEAP32[$8>>2]|0; + $10 = ((($vb)) + 4|0); + $11 = (_oggpack_read($10,1)|0); + $12 = ($11|0)==(1); + if (!($12)) { + $$0 = 0; + return ($$0|0); + } + $13 = ((($in)) + 1284|0); + $14 = HEAP32[$13>>2]|0; + $15 = $14 << 2; + $16 = (__vorbis_block_alloc($vb,$15)|0); + $17 = ((($in)) + 1292|0); + $18 = HEAP32[$17>>2]|0; + $19 = (($18) + -1)|0; + $20 = (_ov_ilog($19)|0); + $21 = (_oggpack_read($10,$20)|0); + HEAP32[$16>>2] = $21; + $22 = HEAP32[$17>>2]|0; + $23 = (($22) + -1)|0; + $24 = (_ov_ilog($23)|0); + $25 = (_oggpack_read($10,$24)|0); + $26 = ((($16)) + 4|0); + HEAP32[$26>>2] = $25; + $27 = HEAP32[$1>>2]|0; + $28 = ($27|0)>(0); + L4: do { + if ($28) { + $i$09 = 0;$j$08 = 2; + L5: while(1) { + $33 = (((($1)) + 4|0) + ($i$09<<2)|0); + $34 = HEAP32[$33>>2]|0; + $35 = (((($1)) + 128|0) + ($34<<2)|0); + $36 = HEAP32[$35>>2]|0; + $37 = (((($1)) + 192|0) + ($34<<2)|0); + $38 = HEAP32[$37>>2]|0; + $39 = 1 << $38; + $40 = ($38|0)==(0); + if ($40) { + $cval$1$ph = 0; + } else { + $41 = (((($1)) + 256|0) + ($34<<2)|0); + $42 = HEAP32[$41>>2]|0; + $43 = (($9) + (($42*56)|0)|0); + $44 = (_vorbis_book_decode($43,$10)|0); + $45 = ($44|0)==(-1); + if ($45) { + $$0 = 0; + label = 25; + break; + } else { + $cval$1$ph = $44; + } + } + $46 = ($36|0)>(0); + if ($46) { + $47 = (($39) + -1)|0; + $cval$15 = $cval$1$ph;$k$06 = 0; + while(1) { + $48 = $cval$15 & $47; + $49 = ((((($1)) + 320|0) + ($34<<5)|0) + ($48<<2)|0); + $50 = HEAP32[$49>>2]|0; + $51 = $cval$15 >> $38; + $52 = ($50|0)>(-1); + if ($52) { + $53 = (($9) + (($50*56)|0)|0); + $54 = (_vorbis_book_decode($53,$10)|0); + $55 = (($k$06) + ($j$08))|0; + $56 = (($16) + ($55<<2)|0); + HEAP32[$56>>2] = $54; + $57 = ($54|0)==(-1); + if ($57) { + $$0 = 0; + label = 25; + break L5; + } + } else { + $58 = (($k$06) + ($j$08))|0; + $59 = (($16) + ($58<<2)|0); + HEAP32[$59>>2] = 0; + } + $60 = (($k$06) + 1)|0; + $61 = ($60|0)<($36|0); + if ($61) { + $cval$15 = $51;$k$06 = $60; + } else { + break; + } + } + } + $62 = (($36) + ($j$08))|0; + $63 = (($i$09) + 1)|0; + $64 = HEAP32[$1>>2]|0; + $65 = ($63|0)<($64|0); + if ($65) { + $i$09 = $63;$j$08 = $62; + } else { + break L4; + } + } + if ((label|0) == 25) { + return ($$0|0); + } + } + } while(0); + $29 = HEAP32[$13>>2]|0; + $30 = ($29|0)>(2); + if (!($30)) { + $$0 = $16; + return ($$0|0); + } + $31 = ((($in)) + 1032|0); + $32 = ((($in)) + 780|0); + $i$14 = 2; + while(1) { + $66 = (($i$14) + -2)|0; + $67 = (($31) + ($66<<2)|0); + $68 = HEAP32[$67>>2]|0; + $69 = (((($1)) + 836|0) + ($68<<2)|0); + $70 = HEAP32[$69>>2]|0; + $71 = (($32) + ($66<<2)|0); + $72 = HEAP32[$71>>2]|0; + $73 = (((($1)) + 836|0) + ($72<<2)|0); + $74 = HEAP32[$73>>2]|0; + $75 = (($16) + ($68<<2)|0); + $76 = HEAP32[$75>>2]|0; + $77 = (($16) + ($72<<2)|0); + $78 = HEAP32[$77>>2]|0; + $79 = (((($1)) + 836|0) + ($i$14<<2)|0); + $80 = HEAP32[$79>>2]|0; + $81 = $76 & 32767; + $82 = $78 & 32767; + $83 = (($82) - ($81))|0; + $84 = (($74) - ($70))|0; + $ispos$i = ($83|0)>(-1); + $neg$i = (0 - ($83))|0; + $85 = $ispos$i ? $83 : $neg$i; + $86 = (($80) - ($70))|0; + $87 = Math_imul($85, $86)|0; + $88 = (($87|0) / ($84|0))&-1; + $89 = ($83|0)<(0); + $90 = (0 - ($88))|0; + $$0$p$i = $89 ? $90 : $88; + $$0$i = (($$0$p$i) + ($81))|0; + $91 = HEAP32[$17>>2]|0; + $92 = (($91) - ($$0$i))|0; + $93 = (($16) + ($i$14<<2)|0); + $94 = HEAP32[$93>>2]|0; + $95 = ($94|0)==(0); + if ($95) { + $120 = $$0$i | 32768; + HEAP32[$93>>2] = $120; + } else { + $96 = ($92|0)<($$0$i|0); + $97 = $96 ? $92 : $$0$i; + $98 = $97 << 1; + $99 = ($94|0)<($98|0); + do { + if ($99) { + $104 = $94 & 1; + $105 = ($104|0)==(0); + if ($105) { + $109 = $94 >> 1; + $val$0 = $109; + break; + } else { + $106 = (($94) + 1)|0; + $107 = $106 >> 1; + $108 = (0 - ($107))|0; + $val$0 = $108; + break; + } + } else { + $100 = ($92|0)>($$0$i|0); + if ($100) { + $101 = (($94) - ($$0$i))|0; + $val$0 = $101; + break; + } else { + $102 = (($94) - ($92))|0; + $103 = $102 ^ -1; + $val$0 = $103; + break; + } + } + } while(0); + $110 = (($val$0) + ($$0$i))|0; + $111 = $110 & 32767; + HEAP32[$93>>2] = $111; + $112 = HEAP32[$67>>2]|0; + $113 = (($16) + ($112<<2)|0); + $114 = HEAP32[$113>>2]|0; + $115 = $114 & 32767; + HEAP32[$113>>2] = $115; + $116 = HEAP32[$71>>2]|0; + $117 = (($16) + ($116<<2)|0); + $118 = HEAP32[$117>>2]|0; + $119 = $118 & 32767; + HEAP32[$117>>2] = $119; + } + $121 = (($i$14) + 1)|0; + $122 = HEAP32[$13>>2]|0; + $123 = ($121|0)<($122|0); + if ($123) { + $i$14 = $121; + } else { + $$0 = $16; + break; + } + } + return ($$0|0); +} +function _floor1_inverse2($vb,$in,$memo,$out) { + $vb = $vb|0; + $in = $in|0; + $memo = $memo|0; + $out = $out|0; + var $$0 = 0, $$pn$i = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0; + var $25 = 0, $26 = 0, $27 = 0, $28 = 0.0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0; + var $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0.0, $55 = 0, $56 = 0.0, $57 = 0.0, $58 = 0, $59 = 0, $6 = 0, $60 = 0; + var $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0.0, $66 = 0, $67 = 0, $68 = 0.0, $69 = 0.0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0.0, $75 = 0.0, $76 = 0, $77 = 0, $8 = 0, $9 = 0; + var $err$04$i = 0, $err$1$i = 0, $exitcond = 0, $exitcond$i = 0, $hx$0$lcssa = 0, $hx$03 = 0, $hx$1 = 0, $ispos$i = 0, $ispos1$i = 0, $j$02 = 0, $j$11 = 0, $lx$04 = 0, $lx$1 = 0, $ly$0$lcssa = 0, $ly$05 = 0, $ly$1 = 0, $neg$i = 0, $neg2$i = 0, $x1$n$i = 0, $y$03$i = 0; + var $y$1$i = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($in)) + 1296|0); + $1 = HEAP32[$0>>2]|0; + $2 = ((($vb)) + 64|0); + $3 = HEAP32[$2>>2]|0; + $4 = ((($3)) + 4|0); + $5 = HEAP32[$4>>2]|0; + $6 = ((($5)) + 28|0); + $7 = HEAP32[$6>>2]|0; + $8 = ((($vb)) + 28|0); + $9 = HEAP32[$8>>2]|0; + $10 = (($7) + ($9<<2)|0); + $11 = HEAP32[$10>>2]|0; + $12 = (($11|0) / 2)&-1; + $13 = ($memo|0)==(0|0); + if ($13) { + $77 = $12 << 2; + _memset(($out|0),0,($77|0))|0; + $$0 = 0; + return ($$0|0); + } + $14 = HEAP32[$memo>>2]|0; + $15 = ((($1)) + 832|0); + $16 = HEAP32[$15>>2]|0; + $17 = Math_imul($16, $14)|0; + $18 = ($17|0)<(0); + $19 = ($17|0)>(255); + $20 = $19 ? 255 : $17; + $21 = $18 ? 0 : $20; + $22 = ((($in)) + 1284|0); + $23 = HEAP32[$22>>2]|0; + $24 = ($23|0)>(1); + if ($24) { + $25 = ((($in)) + 260|0); + $hx$03 = 0;$j$02 = 1;$lx$04 = 0;$ly$05 = $21; + while(1) { + $29 = (($25) + ($j$02<<2)|0); + $30 = HEAP32[$29>>2]|0; + $31 = (($memo) + ($30<<2)|0); + $32 = HEAP32[$31>>2]|0; + $33 = $32 & 32767; + $34 = ($33|0)==($32|0); + if ($34) { + $35 = (((($1)) + 836|0) + ($30<<2)|0); + $36 = HEAP32[$35>>2]|0; + $37 = Math_imul($16, $32)|0; + $38 = ($37|0)<(0); + $39 = ($37|0)>(255); + $40 = $39 ? 255 : $37; + $41 = $38 ? 0 : $40; + $42 = (($41) - ($ly$05))|0; + $43 = (($36) - ($lx$04))|0; + $ispos$i = ($42|0)>(-1); + $neg$i = (0 - ($42))|0; + $44 = $ispos$i ? $42 : $neg$i; + $45 = (($42|0) / ($43|0))&-1; + $46 = $42 >> 31; + $47 = $46 | 1; + $48 = Math_imul($45, $43)|0; + $ispos1$i = ($48|0)>(-1); + $neg2$i = (0 - ($48))|0; + $49 = $ispos1$i ? $48 : $neg2$i; + $50 = (($44) - ($49))|0; + $51 = ($12|0)>($36|0); + $x1$n$i = $51 ? $36 : $12; + $52 = ($x1$n$i|0)>($lx$04|0); + if ($52) { + $53 = (1768 + ($ly$05<<2)|0); + $54 = +HEAPF32[$53>>2]; + $55 = (($out) + ($lx$04<<2)|0); + $56 = +HEAPF32[$55>>2]; + $57 = $56 * $54; + HEAPF32[$55>>2] = $57; + } + $58 = (($lx$04) + 1)|0; + $59 = ($58|0)<($x1$n$i|0); + if ($59) { + $67 = $58;$err$04$i = 0;$y$03$i = $ly$05; + while(1) { + $60 = (($err$04$i) + ($50))|0; + $61 = ($60|0)<($43|0); + $62 = $61 ? 0 : $47; + $63 = $61 ? 0 : $43; + $err$1$i = (($60) - ($63))|0; + $$pn$i = (($y$03$i) + ($45))|0; + $y$1$i = (($$pn$i) + ($62))|0; + $64 = (1768 + ($y$1$i<<2)|0); + $65 = +HEAPF32[$64>>2]; + $66 = (($out) + ($67<<2)|0); + $68 = +HEAPF32[$66>>2]; + $69 = $68 * $65; + HEAPF32[$66>>2] = $69; + $70 = (($67) + 1)|0; + $exitcond$i = ($70|0)==($x1$n$i|0); + if ($exitcond$i) { + $hx$1 = $36;$lx$1 = $36;$ly$1 = $41; + break; + } else { + $67 = $70;$err$04$i = $err$1$i;$y$03$i = $y$1$i; + } + } + } else { + $hx$1 = $36;$lx$1 = $36;$ly$1 = $41; + } + } else { + $hx$1 = $hx$03;$lx$1 = $lx$04;$ly$1 = $ly$05; + } + $71 = (($j$02) + 1)|0; + $72 = ($71|0)<($23|0); + if ($72) { + $hx$03 = $hx$1;$j$02 = $71;$lx$04 = $lx$1;$ly$05 = $ly$1; + } else { + $hx$0$lcssa = $hx$1;$ly$0$lcssa = $ly$1; + break; + } + } + } else { + $hx$0$lcssa = 0;$ly$0$lcssa = $21; + } + $26 = ($hx$0$lcssa|0)<($12|0); + if (!($26)) { + $$0 = 1; + return ($$0|0); + } + $27 = (1768 + ($ly$0$lcssa<<2)|0); + $28 = +HEAPF32[$27>>2]; + $j$11 = $hx$0$lcssa; + while(1) { + $73 = (($out) + ($j$11<<2)|0); + $74 = +HEAPF32[$73>>2]; + $75 = $74 * $28; + HEAPF32[$73>>2] = $75; + $76 = (($j$11) + 1)|0; + $exitcond = ($76|0)==($12|0); + if ($exitcond) { + $$0 = 1; + break; + } else { + $j$11 = $76; + } + } + return ($$0|0); +} +function _icomp($a,$b) { + $a = $a|0; + $b = $b|0; + var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = HEAP32[$a>>2]|0; + $1 = HEAP32[$0>>2]|0; + $2 = HEAP32[$b>>2]|0; + $3 = HEAP32[$2>>2]|0; + $4 = (($1) - ($3))|0; + return ($4|0); +} +function _vorbis_comment_init($vc) { + $vc = $vc|0; + var label = 0, sp = 0; + sp = STACKTOP; + ;HEAP32[$vc>>2]=0|0;HEAP32[$vc+4>>2]=0|0;HEAP32[$vc+8>>2]=0|0;HEAP32[$vc+12>>2]=0|0; + return; +} +function _vorbis_comment_add_tag($vc,$tag,$contents) { + $vc = $vc|0; + $tag = $tag|0; + $contents = $contents|0; + var $$alloca_mul = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0; + var $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $endptr = 0, $strlen = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = (_strlen(($tag|0))|0); + $1 = (_strlen(($contents|0))|0); + $2 = (($0) + 2)|0; + $3 = (($2) + ($1))|0; + $$alloca_mul = $3; + $4 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul)|0)+15)&-16)|0;; + (_strcpy(($4|0),($tag|0))|0); + $strlen = (_strlen(($4|0))|0); + $endptr = (($4) + ($strlen)|0); + HEAP8[$endptr>>0]=61&255;HEAP8[$endptr+1>>0]=61>>8; + (_strcat(($4|0),($contents|0))|0); + $5 = HEAP32[$vc>>2]|0; + $6 = ((($vc)) + 8|0); + $7 = HEAP32[$6>>2]|0; + $8 = $7 << 2; + $9 = (($8) + 8)|0; + $10 = (_realloc($5,$9)|0); + HEAP32[$vc>>2] = $10; + $11 = ((($vc)) + 4|0); + $12 = HEAP32[$11>>2]|0; + $13 = HEAP32[$6>>2]|0; + $14 = $13 << 2; + $15 = (($14) + 8)|0; + $16 = (_realloc($12,$15)|0); + HEAP32[$11>>2] = $16; + $17 = (_strlen(($4|0))|0); + $18 = HEAP32[$6>>2]|0; + $19 = (($16) + ($18<<2)|0); + HEAP32[$19>>2] = $17; + $20 = (($17) + 1)|0; + $21 = (_malloc($20)|0); + $22 = HEAP32[$vc>>2]|0; + $23 = (($22) + ($18<<2)|0); + HEAP32[$23>>2] = $21; + $24 = HEAP32[$vc>>2]|0; + $25 = (($24) + ($18<<2)|0); + $26 = HEAP32[$25>>2]|0; + (_strcpy(($26|0),($4|0))|0); + $27 = HEAP32[$6>>2]|0; + $28 = (($27) + 1)|0; + HEAP32[$6>>2] = $28; + $29 = HEAP32[$vc>>2]|0; + $30 = (($29) + ($28<<2)|0); + HEAP32[$30>>2] = 0; + STACKTOP = sp;return; +} +function _vorbis_comment_clear($vc) { + $vc = $vc|0; + var $$pre = 0, $$pre3 = 0, $$pre4 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $3 = 0, $4 = 0, $5 = 0; + var $6 = 0, $7 = 0, $8 = 0, $9 = 0, $i$01 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($vc|0)==(0|0); + if ($0) { + return; + } + $1 = HEAP32[$vc>>2]|0; + $2 = ($1|0)==(0|0); + if (!($2)) { + $3 = ((($vc)) + 8|0); + $4 = HEAP32[$3>>2]|0; + $5 = ($4|0)>(0); + if ($5) { + $20 = $4;$7 = $1;$i$01 = 0; + while(1) { + $6 = (($7) + ($i$01<<2)|0); + $8 = HEAP32[$6>>2]|0; + $9 = ($8|0)==(0|0); + if ($9) { + $12 = $20; + } else { + _free($8); + $$pre3 = HEAP32[$3>>2]|0; + $12 = $$pre3; + } + $10 = (($i$01) + 1)|0; + $11 = ($10|0)<($12|0); + if (!($11)) { + break; + } + $$pre = HEAP32[$vc>>2]|0; + $20 = $12;$7 = $$pre;$i$01 = $10; + } + $$pre4 = HEAP32[$vc>>2]|0; + $13 = $$pre4; + } else { + $13 = $1; + } + _free($13); + } + $14 = ((($vc)) + 4|0); + $15 = HEAP32[$14>>2]|0; + $16 = ($15|0)==(0|0); + if (!($16)) { + _free($15); + } + $17 = ((($vc)) + 12|0); + $18 = HEAP32[$17>>2]|0; + $19 = ($18|0)==(0|0); + if (!($19)) { + _free($18); + } + ;HEAP32[$vc>>2]=0|0;HEAP32[$vc+4>>2]=0|0;HEAP32[$vc+8>>2]=0|0;HEAP32[$vc+12>>2]=0|0; + return; +} +function _vorbis_info_init($vi) { + $vi = $vi|0; + var $0 = 0, $1 = 0, label = 0, sp = 0; + sp = STACKTOP; + ;HEAP32[$vi>>2]=0|0;HEAP32[$vi+4>>2]=0|0;HEAP32[$vi+8>>2]=0|0;HEAP32[$vi+12>>2]=0|0;HEAP32[$vi+16>>2]=0|0;HEAP32[$vi+20>>2]=0|0;HEAP32[$vi+24>>2]=0|0; + $0 = (_calloc(1,3664)|0); + $1 = ((($vi)) + 28|0); + HEAP32[$1>>2] = $0; + return; +} +function _vorbis_info_clear($vi) { + $vi = $vi|0; + var $$pre = 0, $$pre18 = 0, $$pre19 = 0, $$pre20 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0; + var $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0; + var $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0; + var $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0; + var $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $9 = 0, $i$016 = 0, $i$114 = 0, $i$212 = 0, $i$310 = 0, $i$47 = 0, $i$56 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($vi)) + 28|0); + $1 = HEAP32[$0>>2]|0; + $2 = ($1|0)==(0|0); + if ($2) { + ;HEAP32[$vi>>2]=0|0;HEAP32[$vi+4>>2]=0|0;HEAP32[$vi+8>>2]=0|0;HEAP32[$vi+12>>2]=0|0;HEAP32[$vi+16>>2]=0|0;HEAP32[$vi+20>>2]=0|0;HEAP32[$vi+24>>2]=0|0;HEAP32[$vi+28>>2]=0|0; + return; + } + $3 = ((($1)) + 8|0); + $4 = HEAP32[$3>>2]|0; + $5 = ($4|0)>(0); + if ($5) { + $80 = $4;$i$016 = 0; + while(1) { + $9 = (((($1)) + 32|0) + ($i$016<<2)|0); + $10 = HEAP32[$9>>2]|0; + $11 = ($10|0)==(0|0); + if ($11) { + $14 = $80; + } else { + _free($10); + $$pre = HEAP32[$3>>2]|0; + $14 = $$pre; + } + $12 = (($i$016) + 1)|0; + $13 = ($12|0)<($14|0); + if ($13) { + $80 = $14;$i$016 = $12; + } else { + break; + } + } + } + $6 = ((($1)) + 12|0); + $7 = HEAP32[$6>>2]|0; + $8 = ($7|0)>(0); + if ($8) { + $81 = $7;$i$114 = 0; + while(1) { + $18 = (((($1)) + 544|0) + ($i$114<<2)|0); + $19 = HEAP32[$18>>2]|0; + $20 = ($19|0)==(0|0); + if ($20) { + $29 = $81; + } else { + $21 = (((($1)) + 288|0) + ($i$114<<2)|0); + $22 = HEAP32[$21>>2]|0; + $23 = (25664 + ($22<<2)|0); + $24 = HEAP32[$23>>2]|0; + $25 = ((($24)) + 8|0); + $26 = HEAP32[$25>>2]|0; + FUNCTION_TABLE_vi[$26 & 7]($19); + $$pre18 = HEAP32[$6>>2]|0; + $29 = $$pre18; + } + $27 = (($i$114) + 1)|0; + $28 = ($27|0)<($29|0); + if ($28) { + $81 = $29;$i$114 = $27; + } else { + break; + } + } + } + $15 = ((($1)) + 16|0); + $16 = HEAP32[$15>>2]|0; + $17 = ($16|0)>(0); + if ($17) { + $82 = $16;$i$212 = 0; + while(1) { + $33 = (((($1)) + 1056|0) + ($i$212<<2)|0); + $34 = HEAP32[$33>>2]|0; + $35 = ($34|0)==(0|0); + if ($35) { + $44 = $82; + } else { + $36 = (((($1)) + 800|0) + ($i$212<<2)|0); + $37 = HEAP32[$36>>2]|0; + $38 = (25640 + ($37<<2)|0); + $39 = HEAP32[$38>>2]|0; + $40 = ((($39)) + 12|0); + $41 = HEAP32[$40>>2]|0; + FUNCTION_TABLE_vi[$41 & 7]($34); + $$pre19 = HEAP32[$15>>2]|0; + $44 = $$pre19; + } + $42 = (($i$212) + 1)|0; + $43 = ($42|0)<($44|0); + if ($43) { + $82 = $44;$i$212 = $42; + } else { + break; + } + } + } + $30 = ((($1)) + 20|0); + $31 = HEAP32[$30>>2]|0; + $32 = ($31|0)>(0); + if ($32) { + $83 = $31;$i$310 = 0; + while(1) { + $49 = (((($1)) + 1568|0) + ($i$310<<2)|0); + $50 = HEAP32[$49>>2]|0; + $51 = ($50|0)==(0|0); + if ($51) { + $60 = $83; + } else { + $52 = (((($1)) + 1312|0) + ($i$310<<2)|0); + $53 = HEAP32[$52>>2]|0; + $54 = (25648 + ($53<<2)|0); + $55 = HEAP32[$54>>2]|0; + $56 = ((($55)) + 12|0); + $57 = HEAP32[$56>>2]|0; + FUNCTION_TABLE_vi[$57 & 7]($50); + $$pre20 = HEAP32[$30>>2]|0; + $60 = $$pre20; + } + $58 = (($i$310) + 1)|0; + $59 = ($58|0)<($60|0); + if ($59) { + $83 = $60;$i$310 = $58; + } else { + break; + } + } + } + $45 = ((($1)) + 24|0); + $46 = HEAP32[$45>>2]|0; + $47 = ($46|0)>(0); + $48 = ((($1)) + 2848|0); + if ($47) { + $i$47 = 0; + while(1) { + $61 = (((($1)) + 1824|0) + ($i$47<<2)|0); + $62 = HEAP32[$61>>2]|0; + $63 = ($62|0)==(0|0); + if (!($63)) { + _vorbis_staticbook_destroy($62); + } + $64 = HEAP32[$48>>2]|0; + $65 = ($64|0)==(0|0); + if (!($65)) { + $66 = (($64) + (($i$47*56)|0)|0); + _vorbis_book_clear($66); + } + $67 = (($i$47) + 1)|0; + $68 = HEAP32[$45>>2]|0; + $69 = ($67|0)<($68|0); + if ($69) { + $i$47 = $67; + } else { + break; + } + } + } + $70 = HEAP32[$48>>2]|0; + $71 = ($70|0)==(0|0); + if (!($71)) { + _free($70); + } + $72 = ((($1)) + 28|0); + $73 = HEAP32[$72>>2]|0; + $74 = ($73|0)>(0); + if ($74) { + $i$56 = 0; + while(1) { + $75 = (((($1)) + 2852|0) + ($i$56<<2)|0); + $76 = HEAP32[$75>>2]|0; + __vi_psy_free($76); + $77 = (($i$56) + 1)|0; + $78 = HEAP32[$72>>2]|0; + $79 = ($77|0)<($78|0); + if ($79) { + $i$56 = $77; + } else { + break; + } + } + } + _free($1); + ;HEAP32[$vi>>2]=0|0;HEAP32[$vi+4>>2]=0|0;HEAP32[$vi+8>>2]=0|0;HEAP32[$vi+12>>2]=0|0;HEAP32[$vi+16>>2]=0|0;HEAP32[$vi+20>>2]=0|0;HEAP32[$vi+24>>2]=0|0;HEAP32[$vi+28>>2]=0|0; + return; +} +function _vorbis_analysis_headerout($v,$vc,$op,$op_comm,$op_code) { + $v = $v|0; + $vc = $vc|0; + $op = $op|0; + $op_comm = $op_comm|0; + $op_code = $op_code|0; + var $$0 = 0, $$pre = 0, $$pre$phiZ2D = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0; + var $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0; + var $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0; + var $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $17 = 0; + var $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0; + var $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0; + var $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0; + var $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0; + var $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $i$015$i = 0, $i$111$i = 0, $i$27$i = 0, $i$33$i = 0, $i$42$i = 0, $opb = 0, $ret$0$ph = 0, $ret$03 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 32|0; + $opb = sp; + $0 = ((($v)) + 4|0); + $1 = HEAP32[$0>>2]|0; + $2 = ((($v)) + 104|0); + $3 = HEAP32[$2>>2]|0; + $4 = ($3|0)==(0|0); + if ($4) { + ;HEAP32[$op>>2]=0|0;HEAP32[$op+4>>2]=0|0;HEAP32[$op+8>>2]=0|0;HEAP32[$op+12>>2]=0|0;HEAP32[$op+16>>2]=0|0;HEAP32[$op+20>>2]=0|0;HEAP32[$op+24>>2]=0|0;HEAP32[$op+28>>2]=0|0; + ;HEAP32[$op_comm>>2]=0|0;HEAP32[$op_comm+4>>2]=0|0;HEAP32[$op_comm+8>>2]=0|0;HEAP32[$op_comm+12>>2]=0|0;HEAP32[$op_comm+16>>2]=0|0;HEAP32[$op_comm+20>>2]=0|0;HEAP32[$op_comm+24>>2]=0|0;HEAP32[$op_comm+28>>2]=0|0; + ;HEAP32[$op_code>>2]=0|0;HEAP32[$op_code+4>>2]=0|0;HEAP32[$op_code+8>>2]=0|0;HEAP32[$op_code+12>>2]=0|0;HEAP32[$op_code+16>>2]=0|0;HEAP32[$op_code+20>>2]=0|0;HEAP32[$op_code+24>>2]=0|0;HEAP32[$op_code+28>>2]=0|0; + $$0 = -129; + STACKTOP = sp;return ($$0|0); + } + $5 = ((($1)) + 4|0); + $6 = HEAP32[$5>>2]|0; + $7 = ($6|0)<(1); + if ($7) { + $ret$0$ph = -129; + label = 27; + } else { + _oggpack_writeinit($opb); + $8 = ((($1)) + 28|0); + $9 = HEAP32[$8>>2]|0; + $10 = ($9|0)==(0|0); + if ($10) { + $ret$0$ph = -130; + label = 27; + } else { + $11 = HEAP32[$9>>2]|0; + $12 = ($11|0)<(64); + if ($12) { + $ret$0$ph = -130; + label = 27; + } else { + $13 = ((($9)) + 4|0); + $14 = HEAP32[$13>>2]|0; + $15 = ($14|0)<($11|0); + if ($15) { + $ret$0$ph = -130; + label = 27; + } else { + _oggpack_write($opb,1,8); + _oggpack_write($opb,118,8); + _oggpack_write($opb,111,8); + _oggpack_write($opb,114,8); + _oggpack_write($opb,98,8); + _oggpack_write($opb,105,8); + _oggpack_write($opb,115,8); + _oggpack_write($opb,0,32); + $16 = HEAP32[$5>>2]|0; + _oggpack_write($opb,$16,8); + $17 = ((($1)) + 8|0); + $18 = HEAP32[$17>>2]|0; + _oggpack_write($opb,$18,32); + $19 = ((($1)) + 12|0); + $20 = HEAP32[$19>>2]|0; + _oggpack_write($opb,$20,32); + $21 = ((($1)) + 16|0); + $22 = HEAP32[$21>>2]|0; + _oggpack_write($opb,$22,32); + $23 = ((($1)) + 20|0); + $24 = HEAP32[$23>>2]|0; + _oggpack_write($opb,$24,32); + $25 = HEAP32[$9>>2]|0; + $26 = (($25) + -1)|0; + $27 = (_ov_ilog($26)|0); + _oggpack_write($opb,$27,4); + $28 = HEAP32[$13>>2]|0; + $29 = (($28) + -1)|0; + $30 = (_ov_ilog($29)|0); + _oggpack_write($opb,$30,4); + _oggpack_write($opb,1,1); + $31 = ((($3)) + 64|0); + $32 = HEAP32[$31>>2]|0; + $33 = ($32|0)==(0|0); + if (!($33)) { + _free($32); + } + $34 = (_oggpack_bytes($opb)|0); + $35 = (_malloc($34)|0); + HEAP32[$31>>2] = $35; + $36 = ((($opb)) + 8|0); + $37 = HEAP32[$36>>2]|0; + $38 = (_oggpack_bytes($opb)|0); + _memcpy(($35|0),($37|0),($38|0))|0; + $39 = HEAP32[$31>>2]|0; + HEAP32[$op>>2] = $39; + $40 = (_oggpack_bytes($opb)|0); + $41 = ((($op)) + 4|0); + HEAP32[$41>>2] = $40; + $42 = ((($op)) + 8|0); + HEAP32[$42>>2] = 1; + $43 = ((($op)) + 12|0); + ;HEAP32[$43>>2]=0|0;HEAP32[$43+4>>2]=0|0;HEAP32[$43+8>>2]=0|0;HEAP32[$43+12>>2]=0|0;HEAP32[$43+16>>2]=0|0; + _oggpack_reset($opb); + __vorbis_pack_comment($opb,$vc); + $44 = ((($3)) + 68|0); + $45 = HEAP32[$44>>2]|0; + $46 = ($45|0)==(0|0); + if (!($46)) { + _free($45); + } + $47 = (_oggpack_bytes($opb)|0); + $48 = (_malloc($47)|0); + HEAP32[$44>>2] = $48; + $49 = HEAP32[$36>>2]|0; + $50 = (_oggpack_bytes($opb)|0); + _memcpy(($48|0),($49|0),($50|0))|0; + $51 = HEAP32[$44>>2]|0; + HEAP32[$op_comm>>2] = $51; + $52 = (_oggpack_bytes($opb)|0); + $53 = ((($op_comm)) + 4|0); + HEAP32[$53>>2] = $52; + $54 = ((($op_comm)) + 8|0); + $55 = ((($op_comm)) + 24|0); + ;HEAP32[$54>>2]=0|0;HEAP32[$54+4>>2]=0|0;HEAP32[$54+8>>2]=0|0;HEAP32[$54+12>>2]=0|0; + $56 = $55; + $57 = $56; + HEAP32[$57>>2] = 1; + $58 = (($56) + 4)|0; + $59 = $58; + HEAP32[$59>>2] = 0; + _oggpack_reset($opb); + $60 = HEAP32[$8>>2]|0; + $61 = ($60|0)==(0|0); + L16: do { + if (!($61)) { + _oggpack_write($opb,5,8); + _oggpack_write($opb,118,8); + _oggpack_write($opb,111,8); + _oggpack_write($opb,114,8); + _oggpack_write($opb,98,8); + _oggpack_write($opb,105,8); + _oggpack_write($opb,115,8); + $62 = ((($60)) + 24|0); + $63 = HEAP32[$62>>2]|0; + $64 = (($63) + -1)|0; + _oggpack_write($opb,$64,8); + $65 = HEAP32[$62>>2]|0; + $66 = ($65|0)>(0); + if ($66) { + $i$015$i = 0; + while(1) { + $70 = (((($60)) + 1824|0) + ($i$015$i<<2)|0); + $71 = HEAP32[$70>>2]|0; + $72 = (_vorbis_staticbook_pack($71,$opb)|0); + $73 = ($72|0)==(0); + $68 = (($i$015$i) + 1)|0; + if (!($73)) { + break L16; + } + $67 = HEAP32[$62>>2]|0; + $69 = ($68|0)<($67|0); + if ($69) { + $i$015$i = $68; + } else { + break; + } + } + } + _oggpack_write($opb,0,6); + _oggpack_write($opb,0,16); + $74 = ((($60)) + 16|0); + $75 = HEAP32[$74>>2]|0; + $76 = (($75) + -1)|0; + _oggpack_write($opb,$76,6); + $77 = HEAP32[$74>>2]|0; + $78 = ($77|0)>(0); + if ($78) { + $i$111$i = 0; + while(1) { + $79 = (((($60)) + 800|0) + ($i$111$i<<2)|0); + $80 = HEAP32[$79>>2]|0; + _oggpack_write($opb,$80,16); + $81 = HEAP32[$79>>2]|0; + $82 = (25640 + ($81<<2)|0); + $83 = HEAP32[$82>>2]|0; + $84 = HEAP32[$83>>2]|0; + $85 = ($84|0)==(0|0); + if ($85) { + break L16; + } + $86 = (((($60)) + 1056|0) + ($i$111$i<<2)|0); + $87 = HEAP32[$86>>2]|0; + FUNCTION_TABLE_vii[$84 & 3]($87,$opb); + $88 = (($i$111$i) + 1)|0; + $89 = HEAP32[$74>>2]|0; + $90 = ($88|0)<($89|0); + if ($90) { + $i$111$i = $88; + } else { + break; + } + } + } + $91 = ((($60)) + 20|0); + $92 = HEAP32[$91>>2]|0; + $93 = (($92) + -1)|0; + _oggpack_write($opb,$93,6); + $94 = HEAP32[$91>>2]|0; + $95 = ($94|0)>(0); + if ($95) { + $i$27$i = 0; + while(1) { + $96 = (((($60)) + 1312|0) + ($i$27$i<<2)|0); + $97 = HEAP32[$96>>2]|0; + _oggpack_write($opb,$97,16); + $98 = HEAP32[$96>>2]|0; + $99 = (25648 + ($98<<2)|0); + $100 = HEAP32[$99>>2]|0; + $101 = HEAP32[$100>>2]|0; + $102 = (((($60)) + 1568|0) + ($i$27$i<<2)|0); + $103 = HEAP32[$102>>2]|0; + FUNCTION_TABLE_vii[$101 & 3]($103,$opb); + $104 = (($i$27$i) + 1)|0; + $105 = HEAP32[$91>>2]|0; + $106 = ($104|0)<($105|0); + if ($106) { + $i$27$i = $104; + } else { + break; + } + } + } + $107 = ((($60)) + 12|0); + $108 = HEAP32[$107>>2]|0; + $109 = (($108) + -1)|0; + _oggpack_write($opb,$109,6); + $110 = HEAP32[$107>>2]|0; + $111 = ($110|0)>(0); + if ($111) { + $i$33$i = 0; + while(1) { + $112 = (((($60)) + 288|0) + ($i$33$i<<2)|0); + $113 = HEAP32[$112>>2]|0; + _oggpack_write($opb,$113,16); + $114 = HEAP32[$112>>2]|0; + $115 = (25664 + ($114<<2)|0); + $116 = HEAP32[$115>>2]|0; + $117 = HEAP32[$116>>2]|0; + $118 = (((($60)) + 544|0) + ($i$33$i<<2)|0); + $119 = HEAP32[$118>>2]|0; + FUNCTION_TABLE_viii[$117 & 1]($1,$119,$opb); + $120 = (($i$33$i) + 1)|0; + $121 = HEAP32[$107>>2]|0; + $122 = ($120|0)<($121|0); + if ($122) { + $i$33$i = $120; + } else { + break; + } + } + } + $123 = ((($60)) + 8|0); + $124 = HEAP32[$123>>2]|0; + $125 = (($124) + -1)|0; + _oggpack_write($opb,$125,6); + $126 = HEAP32[$123>>2]|0; + $127 = ($126|0)>(0); + if ($127) { + $i$42$i = 0; + while(1) { + $128 = (((($60)) + 32|0) + ($i$42$i<<2)|0); + $129 = HEAP32[$128>>2]|0; + $130 = HEAP32[$129>>2]|0; + _oggpack_write($opb,$130,1); + $131 = HEAP32[$128>>2]|0; + $132 = ((($131)) + 4|0); + $133 = HEAP32[$132>>2]|0; + _oggpack_write($opb,$133,16); + $134 = HEAP32[$128>>2]|0; + $135 = ((($134)) + 8|0); + $136 = HEAP32[$135>>2]|0; + _oggpack_write($opb,$136,16); + $137 = HEAP32[$128>>2]|0; + $138 = ((($137)) + 12|0); + $139 = HEAP32[$138>>2]|0; + _oggpack_write($opb,$139,8); + $140 = (($i$42$i) + 1)|0; + $141 = HEAP32[$123>>2]|0; + $142 = ($140|0)<($141|0); + if ($142) { + $i$42$i = $140; + } else { + break; + } + } + } + _oggpack_write($opb,1,1); + $143 = ((($3)) + 72|0); + $144 = HEAP32[$143>>2]|0; + $145 = ($144|0)==(0|0); + if (!($145)) { + _free($144); + } + $146 = (_oggpack_bytes($opb)|0); + $147 = (_malloc($146)|0); + HEAP32[$143>>2] = $147; + $148 = HEAP32[$36>>2]|0; + $149 = (_oggpack_bytes($opb)|0); + _memcpy(($147|0),($148|0),($149|0))|0; + $150 = HEAP32[$143>>2]|0; + HEAP32[$op_code>>2] = $150; + $151 = (_oggpack_bytes($opb)|0); + $152 = ((($op_code)) + 4|0); + HEAP32[$152>>2] = $151; + $153 = ((($op_code)) + 8|0); + $154 = ((($op_code)) + 24|0); + ;HEAP32[$153>>2]=0|0;HEAP32[$153+4>>2]=0|0;HEAP32[$153+8>>2]=0|0;HEAP32[$153+12>>2]=0|0; + $155 = $154; + $156 = $155; + HEAP32[$156>>2] = 2; + $157 = (($155) + 4)|0; + $158 = $157; + HEAP32[$158>>2] = 0; + _oggpack_writeclear($opb); + $$0 = 0; + STACKTOP = sp;return ($$0|0); + } + } while(0); + ;HEAP32[$op>>2]=0|0;HEAP32[$op+4>>2]=0|0;HEAP32[$op+8>>2]=0|0;HEAP32[$op+12>>2]=0|0;HEAP32[$op+16>>2]=0|0;HEAP32[$op+20>>2]=0|0;HEAP32[$op+24>>2]=0|0;HEAP32[$op+28>>2]=0|0; + ;HEAP32[$op_comm>>2]=0|0;HEAP32[$op_comm+4>>2]=0|0;HEAP32[$op_comm+8>>2]=0|0;HEAP32[$op_comm+12>>2]=0|0;HEAP32[$op_comm+16>>2]=0|0;HEAP32[$op_comm+20>>2]=0|0;HEAP32[$op_comm+24>>2]=0|0;HEAP32[$op_comm+28>>2]=0|0; + ;HEAP32[$op_code>>2]=0|0;HEAP32[$op_code+4>>2]=0|0;HEAP32[$op_code+8>>2]=0|0;HEAP32[$op_code+12>>2]=0|0;HEAP32[$op_code+16>>2]=0|0;HEAP32[$op_code+20>>2]=0|0;HEAP32[$op_code+24>>2]=0|0;HEAP32[$op_code+28>>2]=0|0; + $$pre$phiZ2D = $31;$ret$03 = -130; + } + } + } + } + if ((label|0) == 27) { + ;HEAP32[$op>>2]=0|0;HEAP32[$op+4>>2]=0|0;HEAP32[$op+8>>2]=0|0;HEAP32[$op+12>>2]=0|0;HEAP32[$op+16>>2]=0|0;HEAP32[$op+20>>2]=0|0;HEAP32[$op+24>>2]=0|0;HEAP32[$op+28>>2]=0|0; + ;HEAP32[$op_comm>>2]=0|0;HEAP32[$op_comm+4>>2]=0|0;HEAP32[$op_comm+8>>2]=0|0;HEAP32[$op_comm+12>>2]=0|0;HEAP32[$op_comm+16>>2]=0|0;HEAP32[$op_comm+20>>2]=0|0;HEAP32[$op_comm+24>>2]=0|0;HEAP32[$op_comm+28>>2]=0|0; + ;HEAP32[$op_code>>2]=0|0;HEAP32[$op_code+4>>2]=0|0;HEAP32[$op_code+8>>2]=0|0;HEAP32[$op_code+12>>2]=0|0;HEAP32[$op_code+16>>2]=0|0;HEAP32[$op_code+20>>2]=0|0;HEAP32[$op_code+24>>2]=0|0;HEAP32[$op_code+28>>2]=0|0; + $$pre = ((($3)) + 64|0); + $$pre$phiZ2D = $$pre;$ret$03 = $ret$0$ph; + } + _oggpack_writeclear($opb); + $159 = HEAP32[$$pre$phiZ2D>>2]|0; + $160 = ($159|0)==(0|0); + if (!($160)) { + _free($159); + } + $161 = ((($3)) + 68|0); + $162 = HEAP32[$161>>2]|0; + $163 = ($162|0)==(0|0); + if (!($163)) { + _free($162); + } + $164 = ((($3)) + 72|0); + $165 = HEAP32[$164>>2]|0; + $166 = ($165|0)==(0|0); + if (!($166)) { + _free($165); + } + HEAP32[$$pre$phiZ2D>>2] = 0; + HEAP32[$161>>2] = 0; + HEAP32[$164>>2] = 0; + $$0 = $ret$03; + STACKTOP = sp;return ($$0|0); +} +function __vorbis_pack_comment($opb,$vc) { + $opb = $opb|0; + $vc = $vc|0; + var $$012$i2 = 0, $$012$i6 = 0, $$03$i1 = 0, $$03$i5 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0; + var $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $i$09 = 0, label = 0, sp = 0; + sp = STACKTOP; + _oggpack_write($opb,3,8); + _oggpack_write($opb,118,8); + _oggpack_write($opb,111,8); + _oggpack_write($opb,114,8); + _oggpack_write($opb,98,8); + _oggpack_write($opb,105,8); + _oggpack_write($opb,115,8); + _oggpack_write($opb,44,32); + $$012$i2 = 1200;$$03$i1 = 44; + while(1) { + $0 = (($$03$i1) + -1)|0; + $1 = ((($$012$i2)) + 1|0); + $2 = HEAP8[$$012$i2>>0]|0; + $3 = $2 << 24 >> 24; + _oggpack_write($opb,$3,8); + $4 = ($0|0)==(0); + if ($4) { + break; + } else { + $$012$i2 = $1;$$03$i1 = $0; + } + } + $5 = ((($vc)) + 8|0); + $6 = HEAP32[$5>>2]|0; + _oggpack_write($opb,$6,32); + $7 = HEAP32[$5>>2]|0; + $8 = ($7|0)>(0); + if (!($8)) { + _oggpack_write($opb,1,1); + return; + } + $9 = ((($vc)) + 4|0); + $i$09 = 0; + while(1) { + $10 = HEAP32[$vc>>2]|0; + $11 = (($10) + ($i$09<<2)|0); + $12 = HEAP32[$11>>2]|0; + $13 = ($12|0)==(0|0); + if ($13) { + _oggpack_write($opb,0,32); + } else { + $14 = HEAP32[$9>>2]|0; + $15 = (($14) + ($i$09<<2)|0); + $16 = HEAP32[$15>>2]|0; + _oggpack_write($opb,$16,32); + $17 = HEAP32[$9>>2]|0; + $18 = (($17) + ($i$09<<2)|0); + $19 = HEAP32[$18>>2]|0; + $20 = ($19|0)==(0); + if (!($20)) { + $21 = HEAP32[$vc>>2]|0; + $22 = (($21) + ($i$09<<2)|0); + $23 = HEAP32[$22>>2]|0; + $$012$i6 = $23;$$03$i5 = $19; + while(1) { + $24 = (($$03$i5) + -1)|0; + $25 = ((($$012$i6)) + 1|0); + $26 = HEAP8[$$012$i6>>0]|0; + $27 = $26 << 24 >> 24; + _oggpack_write($opb,$27,8); + $28 = ($24|0)==(0); + if ($28) { + break; + } else { + $$012$i6 = $25;$$03$i5 = $24; + } + } + } + } + $29 = (($i$09) + 1)|0; + $30 = HEAP32[$5>>2]|0; + $31 = ($29|0)<($30|0); + if ($31) { + $i$09 = $29; + } else { + break; + } + } + _oggpack_write($opb,1,1); + return; +} +function _vorbis_lpc_from_data($data,$lpci,$n,$m) { + $data = $data|0; + $lpci = $lpci|0; + $n = $n|0; + $m = $m|0; + var $$alloca_mul = 0, $$alloca_mul1 = 0, $$lcssa = 0.0, $$pre = 0.0, $0 = 0, $1 = 0, $10 = 0.0, $11 = 0, $12 = 0, $13 = 0.0, $14 = 0.0, $15 = 0.0, $16 = 0.0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0.0, $22 = 0.0; + var $23 = 0.0, $24 = 0.0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0.0, $32 = 0.0, $33 = 0, $34 = 0.0, $35 = 0, $36 = 0, $37 = 0.0, $38 = 0, $39 = 0, $4 = 0, $40 = 0.0; + var $41 = 0.0, $42 = 0.0, $43 = 0, $44 = 0.0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0.0, $52 = 0, $53 = 0, $54 = 0.0, $55 = 0.0, $56 = 0.0, $57 = 0.0, $58 = 0.0, $59 = 0.0; + var $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0.0, $66 = 0.0, $67 = 0.0, $68 = 0.0, $69 = 0.0, $7 = 0, $70 = 0.0, $71 = 0.0, $72 = 0, $73 = 0, $74 = 0.0, $75 = 0.0, $76 = 0.0, $77 = 0; + var $78 = 0, $79 = 0.0, $8 = 0, $80 = 0.0, $81 = 0, $82 = 0, $83 = 0.0, $9 = 0.0, $d$0$lcssa = 0.0, $d$025 = 0.0, $damp$08 = 0.0, $error$021 = 0.0, $error$021$lcssa = 0.0, $error$05 = 0.0, $error$053940 = 0.0, $exitcond = 0, $exitcond36 = 0, $exitcond37 = 0, $exitcond38 = 0, $i$026 = 0; + var $indvars$iv = 0, $indvars$iv$lcssa = 0, $indvars$iv$next = 0, $j$110 = 0, $j$2$lcssa = 0, $j$215 = 0, $j$37 = 0, $j$46 = 0, $r$011 = 0.0, $smax = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = (($m) + 1)|0; + $1 = $0 << 3; + $$alloca_mul = $1; + $2 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul)|0)+15)&-16)|0;; + $3 = $m << 3; + $$alloca_mul1 = $3; + $4 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul1)|0)+15)&-16)|0;; + $5 = ($0|0)==(0); + if ($5) { + $22 = 0.0; + } else { + $6 = $m; + while(1) { + $7 = ($6|0)<($n|0); + if ($7) { + $d$025 = 0.0;$i$026 = $6; + while(1) { + $8 = (($data) + ($i$026<<2)|0); + $9 = +HEAPF32[$8>>2]; + $10 = $9; + $11 = (($i$026) - ($6))|0; + $12 = (($data) + ($11<<2)|0); + $13 = +HEAPF32[$12>>2]; + $14 = $13; + $15 = $14 * $10; + $16 = $15 + $d$025; + $17 = (($i$026) + 1)|0; + $exitcond38 = ($17|0)==($n|0); + if ($exitcond38) { + $d$0$lcssa = $16; + break; + } else { + $d$025 = $16;$i$026 = $17; + } + } + } else { + $d$0$lcssa = 0.0; + } + $18 = (($2) + ($6<<3)|0); + HEAPF64[$18>>3] = $d$0$lcssa; + $19 = (($6) + -1)|0; + $20 = ($6|0)==(0); + if ($20) { + break; + } else { + $6 = $19; + } + } + $$pre = +HEAPF64[$2>>3]; + $22 = $$pre; + } + $21 = $22 * 1.0000000001; + $23 = $22 * 1.0000000000000001E-9; + $24 = $23 + 1.0E-10; + $25 = ($m|0)>(0); + if ($25) { + $error$021 = $21;$indvars$iv = 0; + } else { + $error$053940 = $21; + $83 = $error$053940; + STACKTOP = sp;return (+$83); + } + while(1) { + $indvars$iv$next = (($indvars$iv) + 1)|0; + $26 = $error$021 < $24; + if ($26) { + $error$021$lcssa = $error$021;$indvars$iv$lcssa = $indvars$iv; + label = 8; + break; + } + $30 = (($2) + ($indvars$iv$next<<3)|0); + $31 = +HEAPF64[$30>>3]; + $32 = -$31; + $33 = ($indvars$iv|0)>(0); + if ($33) { + $j$110 = 0;$r$011 = $32; + while(1) { + $36 = (($4) + ($j$110<<3)|0); + $37 = +HEAPF64[$36>>3]; + $38 = (($indvars$iv) - ($j$110))|0; + $39 = (($2) + ($38<<3)|0); + $40 = +HEAPF64[$39>>3]; + $41 = $40 * $37; + $42 = $r$011 - $41; + $43 = (($j$110) + 1)|0; + $exitcond37 = ($43|0)==($indvars$iv|0); + if ($exitcond37) { + $$lcssa = $42; + break; + } else { + $j$110 = $43;$r$011 = $42; + } + } + $44 = $$lcssa / $error$021; + $45 = (($4) + ($indvars$iv<<3)|0); + HEAPF64[$45>>3] = $44; + $46 = (($indvars$iv|0) / 2)&-1; + $47 = ($indvars$iv|0)>(1); + if ($47) { + $48 = (($indvars$iv) + -1)|0; + $49 = ($46|0)>(1); + $j$215 = 0; + while(1) { + $50 = (($4) + ($j$215<<3)|0); + $51 = +HEAPF64[$50>>3]; + $52 = (($48) - ($j$215))|0; + $53 = (($4) + ($52<<3)|0); + $54 = +HEAPF64[$53>>3]; + $55 = $54 * $44; + $56 = $55 + $51; + HEAPF64[$50>>3] = $56; + $57 = $51 * $44; + $58 = +HEAPF64[$53>>3]; + $59 = $58 + $57; + HEAPF64[$53>>3] = $59; + $60 = (($j$215) + 1)|0; + $61 = ($60|0)<($46|0); + if ($61) { + $j$215 = $60; + } else { + break; + } + } + $smax = $49 ? $46 : 1; + $67 = $44;$j$2$lcssa = $smax; + } else { + $67 = $44;$j$2$lcssa = 0; + } + } else { + $34 = $32 / $error$021; + $35 = (($4) + ($indvars$iv<<3)|0); + HEAPF64[$35>>3] = $34; + $67 = $34;$j$2$lcssa = 0; + } + $62 = $indvars$iv & 1; + $63 = ($62|0)==(0); + if (!($63)) { + $64 = (($4) + ($j$2$lcssa<<3)|0); + $65 = +HEAPF64[$64>>3]; + $66 = $65 * $67; + $68 = $66 + $65; + HEAPF64[$64>>3] = $68; + } + $69 = $67 * $67; + $70 = 1.0 - $69; + $71 = $70 * $error$021; + $72 = ($indvars$iv$next|0)<($m|0); + if ($72) { + $error$021 = $71;$indvars$iv = $indvars$iv$next; + } else { + $error$05 = $71; + break; + } + } + if ((label|0) == 8) { + $27 = (($4) + ($indvars$iv$lcssa<<3)|0); + $28 = (($m) - ($indvars$iv$lcssa))|0; + $29 = $28 << 3; + _memset(($27|0),0,($29|0))|0; + $error$05 = $error$021$lcssa; + } + if ($25) { + $damp$08 = 0.98999999999999999;$j$37 = 0; + } else { + $error$053940 = $error$05; + $83 = $error$053940; + STACKTOP = sp;return (+$83); + } + while(1) { + $73 = (($4) + ($j$37<<3)|0); + $74 = +HEAPF64[$73>>3]; + $75 = $74 * $damp$08; + HEAPF64[$73>>3] = $75; + $76 = $damp$08 * 0.98999999999999999; + $77 = (($j$37) + 1)|0; + $exitcond36 = ($77|0)==($m|0); + if ($exitcond36) { + break; + } else { + $damp$08 = $76;$j$37 = $77; + } + } + if ($25) { + $j$46 = 0; + } else { + $error$053940 = $error$05; + $83 = $error$053940; + STACKTOP = sp;return (+$83); + } + while(1) { + $78 = (($4) + ($j$46<<3)|0); + $79 = +HEAPF64[$78>>3]; + $80 = $79; + $81 = (($lpci) + ($j$46<<2)|0); + HEAPF32[$81>>2] = $80; + $82 = (($j$46) + 1)|0; + $exitcond = ($82|0)==($m|0); + if ($exitcond) { + $error$053940 = $error$05; + break; + } else { + $j$46 = $82; + } + } + $83 = $error$053940; + STACKTOP = sp;return (+$83); +} +function _vorbis_lpc_predict($coeff,$prime,$m,$data,$n) { + $coeff = $coeff|0; + $prime = $prime|0; + $m = $m|0; + $data = $data|0; + $n = $n|0; + var $$alloca_mul = 0, $$lcssa = 0.0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0.0, $16 = 0, $17 = 0, $18 = 0.0, $19 = 0.0, $2 = 0, $20 = 0.0, $3 = 0, $4 = 0, $5 = 0, $6 = 0; + var $7 = 0, $8 = 0, $9 = 0, $exitcond = 0, $exitcond19 = 0, $i$210$us = 0, $indvars$iv = 0, $indvars$iv$next = 0, $o$06$us = 0, $p$07$us = 0, $y$08$us = 0.0, label = 0, sp = 0; + sp = STACKTOP; + $0 = (($n) + ($m))|0; + $1 = $0 << 2; + $$alloca_mul = $1; + $2 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul)|0)+15)&-16)|0;; + $3 = ($prime|0)==(0|0); + $4 = ($m|0)>(0); + if ($3) { + if ($4) { + $6 = $m << 2; + _memset(($2|0),0,($6|0))|0; + } + } else { + if ($4) { + $5 = $m << 2; + _memcpy(($2|0),($prime|0),($5|0))|0; + } + } + $7 = ($n|0)>(0); + if (!($7)) { + STACKTOP = sp;return; + } + $8 = ($m|0)>(0); + if ($8) { + $i$210$us = 0;$indvars$iv = $m; + } else { + $9 = $n << 2; + _memset(($2|0),0,($9|0))|0; + _memset(($data|0),0,($9|0))|0; + STACKTOP = sp;return; + } + while(1) { + $o$06$us = $i$210$us;$p$07$us = $m;$y$08$us = 0.0; + while(1) { + $13 = (($o$06$us) + 1)|0; + $14 = (($2) + ($o$06$us<<2)|0); + $15 = +HEAPF32[$14>>2]; + $16 = (($p$07$us) + -1)|0; + $17 = (($coeff) + ($16<<2)|0); + $18 = +HEAPF32[$17>>2]; + $19 = $18 * $15; + $20 = $y$08$us - $19; + $exitcond = ($13|0)==($indvars$iv|0); + if ($exitcond) { + $$lcssa = $20; + break; + } else { + $o$06$us = $13;$p$07$us = $16;$y$08$us = $20; + } + } + $10 = (($2) + ($indvars$iv<<2)|0); + HEAPF32[$10>>2] = $$lcssa; + $11 = (($data) + ($i$210$us<<2)|0); + HEAPF32[$11>>2] = $$lcssa; + $12 = (($i$210$us) + 1)|0; + $indvars$iv$next = (($indvars$iv) + 1)|0; + $exitcond19 = ($12|0)==($n|0); + if ($exitcond19) { + break; + } else { + $i$210$us = $12;$indvars$iv = $indvars$iv$next; + } + } + STACKTOP = sp;return; +} +function _mapping0_pack($vi,$vm,$opb) { + $vi = $vi|0; + $vm = $vm|0; + $opb = $opb|0; + var $$pre$pre = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0; + var $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0; + var $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $i$05 = 0, $i$13 = 0, $i$22 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = HEAP32[$vm>>2]|0; + $1 = ($0|0)>(1); + if ($1) { + _oggpack_write($opb,1,1); + $2 = HEAP32[$vm>>2]|0; + $3 = (($2) + -1)|0; + _oggpack_write($opb,$3,4); + } else { + _oggpack_write($opb,0,1); + } + $4 = ((($vm)) + 1156|0); + $5 = HEAP32[$4>>2]|0; + $6 = ($5|0)>(0); + if ($6) { + _oggpack_write($opb,1,1); + $7 = HEAP32[$4>>2]|0; + $8 = (($7) + -1)|0; + _oggpack_write($opb,$8,8); + $9 = HEAP32[$4>>2]|0; + $10 = ($9|0)>(0); + if ($10) { + $11 = ((($vm)) + 1160|0); + $12 = ((($vi)) + 4|0); + $13 = ((($vm)) + 2184|0); + $i$05 = 0; + while(1) { + $14 = (($11) + ($i$05<<2)|0); + $15 = HEAP32[$14>>2]|0; + $16 = HEAP32[$12>>2]|0; + $17 = (($16) + -1)|0; + $18 = (_ov_ilog($17)|0); + _oggpack_write($opb,$15,$18); + $19 = (($13) + ($i$05<<2)|0); + $20 = HEAP32[$19>>2]|0; + $21 = HEAP32[$12>>2]|0; + $22 = (($21) + -1)|0; + $23 = (_ov_ilog($22)|0); + _oggpack_write($opb,$20,$23); + $24 = (($i$05) + 1)|0; + $25 = HEAP32[$4>>2]|0; + $26 = ($24|0)<($25|0); + if ($26) { + $i$05 = $24; + } else { + break; + } + } + } + } else { + _oggpack_write($opb,0,1); + } + _oggpack_write($opb,0,2); + $27 = HEAP32[$vm>>2]|0; + $28 = ($27|0)>(1); + if ($28) { + $29 = ((($vi)) + 4|0); + $30 = HEAP32[$29>>2]|0; + $31 = ($30|0)>(0); + if ($31) { + $32 = ((($vm)) + 4|0); + $i$13 = 0; + while(1) { + $37 = (($32) + ($i$13<<2)|0); + $38 = HEAP32[$37>>2]|0; + _oggpack_write($opb,$38,4); + $39 = (($i$13) + 1)|0; + $40 = HEAP32[$29>>2]|0; + $41 = ($39|0)<($40|0); + if ($41) { + $i$13 = $39; + } else { + break; + } + } + $$pre$pre = HEAP32[$vm>>2]|0; + $33 = $$pre$pre; + label = 13; + } + } else { + $33 = $27; + label = 13; + } + if ((label|0) == 13) { + $34 = ($33|0)>(0); + if (!($34)) { + return; + } + } + $35 = ((($vm)) + 1028|0); + $36 = ((($vm)) + 1092|0); + $i$22 = 0; + while(1) { + _oggpack_write($opb,0,8); + $42 = (($35) + ($i$22<<2)|0); + $43 = HEAP32[$42>>2]|0; + _oggpack_write($opb,$43,8); + $44 = (($36) + ($i$22<<2)|0); + $45 = HEAP32[$44>>2]|0; + _oggpack_write($opb,$45,8); + $46 = (($i$22) + 1)|0; + $47 = HEAP32[$vm>>2]|0; + $48 = ($46|0)<($47|0); + if ($48) { + $i$22 = $46; + } else { + break; + } + } + return; +} +function _mapping0_unpack($vi,$opb) { + $vi = $vi|0; + $opb = $opb|0; + var $$0 = 0, $$pre = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0; + var $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0; + var $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0; + var $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $8 = 0, $9 = 0, $i$013 = 0, $i$111 = 0, $i$210 = 0; + var $or$cond = 0, $or$cond2 = 0, $or$cond3 = 0, $or$cond4 = 0, $or$cond5 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = (_calloc(1,3208)|0); + $1 = ((($vi)) + 28|0); + $2 = HEAP32[$1>>2]|0; + _memset(($0|0),0,3208)|0; + $3 = ((($vi)) + 4|0); + $4 = HEAP32[$3>>2]|0; + $5 = ($4|0)<(1); + L1: do { + if ($5) { + label = 24; + } else { + $6 = (_oggpack_read($opb,1)|0); + $7 = ($6|0)<(0); + if ($7) { + label = 24; + } else { + $8 = ($6|0)==(0); + if ($8) { + HEAP32[$0>>2] = 1; + } else { + $9 = (_oggpack_read($opb,4)|0); + $10 = (($9) + 1)|0; + HEAP32[$0>>2] = $10; + $11 = ($9|0)<(0); + if ($11) { + break; + } + } + $12 = (_oggpack_read($opb,1)|0); + $13 = ($12|0)<(0); + if (!($13)) { + $14 = ($12|0)==(0); + if (!($14)) { + $15 = (_oggpack_read($opb,8)|0); + $16 = (($15) + 1)|0; + $17 = ((($0)) + 1156|0); + HEAP32[$17>>2] = $16; + $18 = ($15|0)<(0); + if ($18) { + break; + } + $19 = ((($0)) + 1160|0); + $20 = ((($0)) + 2184|0); + $$pre = HEAP32[$3>>2]|0; + $25 = $$pre;$i$013 = 0; + while(1) { + $24 = (($25) + -1)|0; + $26 = (_ov_ilog($24)|0); + $27 = (_oggpack_read($opb,$26)|0); + $28 = (($19) + ($i$013<<2)|0); + HEAP32[$28>>2] = $27; + $29 = HEAP32[$3>>2]|0; + $30 = (($29) + -1)|0; + $31 = (_ov_ilog($30)|0); + $32 = (_oggpack_read($opb,$31)|0); + $33 = (($20) + ($i$013<<2)|0); + HEAP32[$33>>2] = $32; + $34 = $32 | $27; + $35 = ($34|0)<(0); + $36 = ($27|0)==($32|0); + $or$cond = $36 | $35; + if ($or$cond) { + break L1; + } + $37 = HEAP32[$3>>2]|0; + $38 = ($27|0)<($37|0); + $39 = ($32|0)<($37|0); + $or$cond2 = $38 & $39; + $22 = (($i$013) + 1)|0; + if (!($or$cond2)) { + break L1; + } + $21 = HEAP32[$17>>2]|0; + $23 = ($22|0)<($21|0); + if ($23) { + $25 = $37;$i$013 = $22; + } else { + break; + } + } + } + $40 = (_oggpack_read($opb,2)|0); + $41 = ($40|0)==(0); + if ($41) { + $42 = HEAP32[$0>>2]|0; + $43 = ($42|0)>(1); + if ($43) { + $44 = HEAP32[$3>>2]|0; + $45 = ($44|0)>(0); + if ($45) { + $46 = ((($0)) + 4|0); + $i$111 = 0; + while(1) { + $56 = (_oggpack_read($opb,4)|0); + $57 = (($46) + ($i$111<<2)|0); + HEAP32[$57>>2] = $56; + $58 = HEAP32[$0>>2]|0; + $59 = ($56|0)>=($58|0); + $60 = ($56|0)<(0); + $or$cond3 = $60 | $59; + $54 = (($i$111) + 1)|0; + if ($or$cond3) { + break L1; + } + $53 = HEAP32[$3>>2]|0; + $55 = ($54|0)<($53|0); + if ($55) { + $i$111 = $54; + } else { + $47 = $58; + label = 17; + break; + } + } + } + } else { + $47 = $42; + label = 17; + } + if ((label|0) == 17) { + $48 = ($47|0)>(0); + if (!($48)) { + $$0 = $0; + return ($$0|0); + } + } + $49 = ((($0)) + 1028|0); + $50 = ((($2)) + 16|0); + $51 = ((($0)) + 1092|0); + $52 = ((($2)) + 20|0); + $i$210 = 0; + while(1) { + (_oggpack_read($opb,8)|0); + $64 = (_oggpack_read($opb,8)|0); + $65 = (($49) + ($i$210<<2)|0); + HEAP32[$65>>2] = $64; + $66 = HEAP32[$50>>2]|0; + $67 = ($64|0)>=($66|0); + $68 = ($64|0)<(0); + $or$cond4 = $68 | $67; + if ($or$cond4) { + break L1; + } + $69 = (_oggpack_read($opb,8)|0); + $70 = (($51) + ($i$210<<2)|0); + HEAP32[$70>>2] = $69; + $71 = HEAP32[$52>>2]|0; + $72 = ($69|0)>=($71|0); + $73 = ($69|0)<(0); + $or$cond5 = $73 | $72; + $62 = (($i$210) + 1)|0; + if ($or$cond5) { + break L1; + } + $61 = HEAP32[$0>>2]|0; + $63 = ($62|0)<($61|0); + if ($63) { + $i$210 = $62; + } else { + $$0 = $0; + break; + } + } + return ($$0|0); + } + } + } + } + } while(0); + if ((label|0) == 24) { + $74 = ($0|0)==(0|0); + if ($74) { + $$0 = 0; + return ($$0|0); + } + } + _free($0); + $$0 = 0; + return ($$0|0); +} +function _mapping0_free_info($i) { + $i = $i|0; + var $0 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($i|0)==(0|0); + if (!($0)) { + _free($i); + } + return; +} +function _mapping0_forward($vb) { + $vb = $vb|0; + var $$ = 0, $$0 = 0, $$alloca_mul = 0, $$alloca_mul1 = 0, $$alloca_mul3 = 0, $$alloca_mul5 = 0, $$lcssa = 0, $$pre = 0, $$pre$phi53Z2D = 0, $$pre$phi55Z2D = 0, $$pre$phiZ2D = 0, $$pre51 = 0, $$pre52 = 0, $$pre54 = 0, $$sum = 0, $$sum1$us = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0.0; + var $101 = 0.0, $102 = 0, $103 = 0, $104 = 0, $105 = 0.0, $106 = 0, $107 = 0, $108 = 0, $109 = 0.0, $11 = 0, $110 = 0, $111 = 0.0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0; + var $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0.0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0; + var $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0; + var $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0; + var $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0, $190 = 0, $191 = 0; + var $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0; + var $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0; + var $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0.0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0; + var $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0; + var $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0; + var $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0, $297 = 0, $298 = 0, $299 = 0, $3 = 0; + var $30 = 0, $300 = 0, $301 = 0, $302 = 0.0, $303 = 0.0, $304 = 0.0, $305 = 0.0, $306 = 0.0, $307 = 0.0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0; + var $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $327 = 0.0, $328 = 0, $329 = 0, $33 = 0, $330 = 0, $331 = 0, $332 = 0, $333 = 0, $334 = 0, $335 = 0; + var $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0, $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0, $350 = 0, $351 = 0, $352 = 0, $353 = 0; + var $354 = 0, $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0, $36 = 0, $360 = 0, $361 = 0, $362 = 0, $363 = 0, $364 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0, $369 = 0, $37 = 0, $370 = 0, $371 = 0; + var $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0, $382 = 0, $383 = 0, $384 = 0, $385 = 0, $386 = 0, $387 = 0, $388 = 0, $389 = 0, $39 = 0; + var $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $4 = 0, $40 = 0, $400 = 0, $401 = 0, $402 = 0, $403 = 0, $404 = 0, $405 = 0, $406 = 0, $407 = 0; + var $408 = 0, $409 = 0, $41 = 0.0, $410 = 0, $411 = 0, $412 = 0, $413 = 0, $414 = 0, $415 = 0, $416 = 0, $417 = 0, $418 = 0, $419 = 0, $42 = 0.0, $420 = 0, $421 = 0, $422 = 0, $423 = 0, $424 = 0, $425 = 0; + var $426 = 0, $427 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0, $432 = 0, $433 = 0, $434 = 0, $435 = 0, $436 = 0, $437 = 0, $438 = 0, $439 = 0, $44 = 0, $440 = 0, $441 = 0, $442 = 0, $443 = 0; + var $444 = 0, $445 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $45 = 0, $450 = 0, $451 = 0, $452 = 0, $453 = 0, $454 = 0, $455 = 0, $456 = 0, $457 = 0, $458 = 0, $459 = 0, $46 = 0, $460 = 0, $461 = 0; + var $462 = 0, $463 = 0, $464 = 0, $465 = 0, $466 = 0, $467 = 0, $468 = 0, $469 = 0, $47 = 0.0, $470 = 0, $471 = 0, $472 = 0, $473 = 0, $474 = 0, $475 = 0, $476 = 0, $477 = 0, $478 = 0, $479 = 0, $48 = 0.0; + var $480 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $485 = 0, $486 = 0, $487 = 0, $488 = 0, $489 = 0, $49 = 0.0, $490 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0, $495 = 0, $496 = 0, $497 = 0, $498 = 0; + var $499 = 0, $5 = 0, $50 = 0.0, $500 = 0, $501 = 0, $502 = 0, $503 = 0, $504 = 0, $505 = 0, $506 = 0, $507 = 0, $508 = 0, $509 = 0, $51 = 0.0, $510 = 0, $511 = 0, $512 = 0, $513 = 0, $514 = 0, $515 = 0; + var $516 = 0, $517 = 0, $518 = 0, $519 = 0, $52 = 0.0, $520 = 0, $521 = 0, $522 = 0, $523 = 0, $524 = 0, $525 = 0, $526 = 0, $527 = 0, $528 = 0, $529 = 0, $53 = 0, $530 = 0, $531 = 0, $532 = 0, $533 = 0; + var $534 = 0, $535 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0, $54 = 0, $540 = 0, $541 = 0, $542 = 0, $543 = 0, $544 = 0, $545 = 0, $546 = 0, $547 = 0, $548 = 0, $549 = 0, $55 = 0, $550 = 0, $551 = 0; + var $552 = 0, $553 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0, $558 = 0, $559 = 0, $56 = 0.0, $560 = 0, $561 = 0, $562 = 0, $563 = 0, $564 = 0, $565 = 0, $566 = 0, $567 = 0, $568 = 0, $569 = 0, $57 = 0; + var $570 = 0, $571 = 0, $572 = 0, $573 = 0, $574 = 0, $575 = 0, $576 = 0, $577 = 0, $578 = 0, $579 = 0, $58 = 0, $580 = 0, $581 = 0, $582 = 0, $583 = 0, $584 = 0, $585 = 0, $586 = 0, $587 = 0, $588 = 0; + var $589 = 0, $59 = 0.0, $590 = 0, $591 = 0, $592 = 0, $593 = 0, $594 = 0, $595 = 0, $596 = 0, $597 = 0.0, $598 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0; + var $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0.0, $8 = 0, $80 = 0.0, $81 = 0.0, $82 = 0.0, $83 = 0.0, $84 = 0.0, $85 = 0; + var $86 = 0, $87 = 0.0, $88 = 0.0, $89 = 0, $9 = 0, $90 = 0, $91 = 0.0, $92 = 0.0, $93 = 0.0, $94 = 0, $95 = 0, $96 = 0.0, $97 = 0.0, $98 = 0.0, $99 = 0.0, $ch_in_bundle$0$lcssa = 0, $ch_in_bundle$07 = 0, $ch_in_bundle$1 = 0, $ch_in_bundle$2$lcssa = 0, $ch_in_bundle$213 = 0; + var $ch_in_bundle$3 = 0, $global_ampmax$0$lcssa = 0.0, $global_ampmax$037 = 0.0, $global_ampmax$1 = 0.0, $i$038 = 0, $i$129 = 0, $i$129$us = 0, $i$25 = 0, $i$318 = 0, $j$033 = 0, $j$123$us = 0, $j$26 = 0, $j$312 = 0, $k$222 = 0, $not$ = 0, dest = 0, label = 0, sp = 0, stop = 0; + sp = STACKTOP; + $0 = ((($vb)) + 64|0); + $1 = HEAP32[$0>>2]|0; + $2 = ((($1)) + 4|0); + $3 = HEAP32[$2>>2]|0; + $4 = ((($3)) + 28|0); + $5 = HEAP32[$4>>2]|0; + $6 = ((($1)) + 104|0); + $7 = HEAP32[$6>>2]|0; + $8 = ((($vb)) + 104|0); + $9 = HEAP32[$8>>2]|0; + $10 = ((($vb)) + 36|0); + $11 = HEAP32[$10>>2]|0; + $12 = ((($3)) + 4|0); + $13 = HEAP32[$12>>2]|0; + $14 = $13 << 2; + $$alloca_mul = $14; + $15 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul)|0)+15)&-16)|0;; + $16 = (__vorbis_block_alloc($vb,$14)|0); + $17 = HEAP32[$12>>2]|0; + $18 = $17 << 2; + $19 = (__vorbis_block_alloc($vb,$18)|0); + $20 = HEAP32[$12>>2]|0; + $21 = $20 << 2; + $22 = (__vorbis_block_alloc($vb,$21)|0); + $23 = ((($9)) + 4|0); + $24 = +HEAPF32[$23>>2]; + $25 = HEAP32[$12>>2]|0; + $26 = $25 << 2; + $$alloca_mul1 = $26; + $27 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul1)|0)+15)&-16)|0;; + $28 = ((($9)) + 8|0); + $29 = HEAP32[$28>>2]|0; + $30 = ((($vb)) + 28|0); + $31 = HEAP32[$30>>2]|0; + $32 = (((($5)) + 544|0) + ($31<<2)|0); + $33 = HEAP32[$32>>2]|0; + $34 = ((($7)) + 56|0); + $35 = HEAP32[$34>>2]|0; + $36 = ($31|0)!=(0); + $37 = $36 ? 2 : 0; + $$sum = (($37) + ($29))|0; + $38 = (($35) + (($$sum*52)|0)|0); + $39 = ((($vb)) + 40|0); + HEAP32[$39>>2] = $31; + $40 = ($25|0)>(0); + if ($40) { + $41 = (+($11|0)); + $42 = 4.0 / $41; + $43 = (HEAPF32[tempDoublePtr>>2]=$42,HEAP32[tempDoublePtr>>2]|0); + $44 = (($11|0) / 2)&-1; + $45 = $44 << 2; + $46 = $43 & 2147483647; + $47 = (+($46>>>0)); + $48 = $47 * 7.1771142984289327E-7; + $49 = $48 + -764.6162109375; + $50 = $49; + $51 = $50 + 0.34499999999999997; + $52 = $51; + $53 = ((($7)) + 4|0); + $54 = ((($vb)) + 24|0); + $55 = ((($vb)) + 32|0); + $56 = $52 + -764.6162109375; + $57 = (($11) + -1)|0; + $58 = ($57|0)>(1); + $59 = $52 + -382.30810546875; + $global_ampmax$037 = $24;$i$038 = 0; + while(1) { + $60 = HEAP32[$vb>>2]|0; + $61 = (($60) + ($i$038<<2)|0); + $62 = HEAP32[$61>>2]|0; + $63 = (__vorbis_block_alloc($vb,$45)|0); + $64 = (($19) + ($i$038<<2)|0); + HEAP32[$64>>2] = $63; + $65 = (__vorbis_block_alloc($vb,$45)|0); + $66 = (($16) + ($i$038<<2)|0); + HEAP32[$66>>2] = $65; + $67 = HEAP32[$54>>2]|0; + $68 = HEAP32[$30>>2]|0; + $69 = HEAP32[$55>>2]|0; + __vorbis_apply_window($62,$53,$5,$67,$68,$69); + $70 = HEAP32[$30>>2]|0; + $71 = (((($7)) + 12|0) + ($70<<2)|0); + $72 = HEAP32[$71>>2]|0; + $73 = HEAP32[$72>>2]|0; + $74 = HEAP32[$66>>2]|0; + _mdct_forward($73,$62,$74); + $75 = HEAP32[$30>>2]|0; + $76 = (((($7)) + 20|0) + (($75*12)|0)|0); + _drft_forward($76,$62); + $77 = HEAP32[$62>>2]|0; + $78 = $77 & 2147483647; + $79 = (+($78>>>0)); + $80 = $79 * 7.1771142984289327E-7; + $81 = $56 + $80; + $82 = $81; + $83 = $82 + 0.34499999999999997; + $84 = $83; + HEAPF32[$62>>2] = $84; + $85 = (($27) + ($i$038<<2)|0); + HEAPF32[$85>>2] = $84; + if ($58) { + $105 = $84;$j$033 = 1; + while(1) { + $86 = (($62) + ($j$033<<2)|0); + $87 = +HEAPF32[$86>>2]; + $88 = $87 * $87; + $89 = (($j$033) + 1)|0; + $90 = (($62) + ($89<<2)|0); + $91 = +HEAPF32[$90>>2]; + $92 = $91 * $91; + $93 = $92 + $88; + $94 = (HEAPF32[tempDoublePtr>>2]=$93,HEAP32[tempDoublePtr>>2]|0); + $95 = $94 & 2147483647; + $96 = (+($95>>>0)); + $97 = $96 * 3.5885571492144663E-7; + $98 = $59 + $97; + $99 = $98; + $100 = $99 + 0.34499999999999997; + $101 = $100; + $102 = $89 >> 1; + $103 = (($62) + ($102<<2)|0); + HEAPF32[$103>>2] = $101; + $104 = $101 > $105; + if ($104) { + HEAPF32[$85>>2] = $101; + $597 = $101; + } else { + $597 = $105; + } + $106 = (($j$033) + 2)|0; + $107 = ($106|0)<($57|0); + if ($107) { + $105 = $597;$j$033 = $106; + } else { + $109 = $597; + break; + } + } + } else { + $109 = $84; + } + $108 = $109 > 0.0; + if ($108) { + HEAPF32[$85>>2] = 0.0; + $111 = 0.0; + } else { + $111 = $109; + } + $110 = $111 > $global_ampmax$037; + $global_ampmax$1 = $110 ? $111 : $global_ampmax$037; + $112 = (($i$038) + 1)|0; + $113 = HEAP32[$12>>2]|0; + $114 = ($112|0)<($113|0); + if ($114) { + $global_ampmax$037 = $global_ampmax$1;$i$038 = $112; + } else { + $$pre$phi53Z2D = $45;$$pre$phiZ2D = $44;$global_ampmax$0$lcssa = $global_ampmax$1; + break; + } + } + } else { + $$pre51 = (($11|0) / 2)&-1; + $$pre52 = $$pre51 << 2; + $$pre$phi53Z2D = $$pre52;$$pre$phiZ2D = $$pre51;$global_ampmax$0$lcssa = $24; + } + $115 = (__vorbis_block_alloc($vb,$$pre$phi53Z2D)|0); + $116 = (__vorbis_block_alloc($vb,$$pre$phi53Z2D)|0); + $117 = HEAP32[$12>>2]|0; + $118 = ($117|0)>(0); + L17: do { + if ($118) { + $119 = ($11|0)>(1); + $120 = ((($7)) + 48|0); + if ($119) { + $i$129$us = 0; + } else { + $i$129 = 0; + while(1) { + $316 = (((($33)) + 4|0) + ($i$129<<2)|0); + $317 = HEAP32[$316>>2]|0; + $318 = (($16) + ($i$129<<2)|0); + $319 = HEAP32[$318>>2]|0; + $320 = HEAP32[$vb>>2]|0; + $321 = (($320) + ($i$129<<2)|0); + $322 = HEAP32[$321>>2]|0; + $323 = (($322) + ($$pre$phiZ2D<<2)|0); + HEAP32[$39>>2] = $31; + $324 = (__vorbis_block_alloc($vb,60)|0); + $325 = (($22) + ($i$129<<2)|0); + HEAP32[$325>>2] = $324; + dest=$324; stop=dest+60|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0)); + __vp_noisemask($38,$323,$115); + $326 = (($27) + ($i$129<<2)|0); + $327 = +HEAPF32[$326>>2]; + __vp_tonemask($38,$322,$116,$global_ampmax$0$lcssa,$327); + __vp_offset_and_mix($38,$115,$116,1,$322,$319,$323); + $328 = (((($33)) + 1028|0) + ($317<<2)|0); + $329 = HEAP32[$328>>2]|0; + $330 = (((($5)) + 800|0) + ($329<<2)|0); + $331 = HEAP32[$330>>2]|0; + $332 = ($331|0)==(1); + if (!($332)) { + $$0 = -1; + break; + } + $333 = HEAP32[$120>>2]|0; + $334 = (($333) + ($329<<2)|0); + $335 = HEAP32[$334>>2]|0; + $336 = (_floor1_fit($vb,$335,$323,$322)|0); + $337 = HEAP32[$325>>2]|0; + $338 = ((($337)) + 28|0); + HEAP32[$338>>2] = $336; + $339 = (_vorbis_bitrate_managed($vb)|0); + $340 = ($339|0)==(0); + if (!($340)) { + $341 = HEAP32[$325>>2]|0; + $342 = ((($341)) + 28|0); + $343 = HEAP32[$342>>2]|0; + $344 = ($343|0)==(0|0); + if (!($344)) { + __vp_offset_and_mix($38,$115,$116,2,$322,$319,$323); + $345 = HEAP32[$328>>2]|0; + $346 = HEAP32[$120>>2]|0; + $347 = (($346) + ($345<<2)|0); + $348 = HEAP32[$347>>2]|0; + $349 = (_floor1_fit($vb,$348,$323,$322)|0); + $350 = HEAP32[$325>>2]|0; + $351 = ((($350)) + 56|0); + HEAP32[$351>>2] = $349; + __vp_offset_and_mix($38,$115,$116,0,$322,$319,$323); + $352 = HEAP32[$328>>2]|0; + $353 = HEAP32[$120>>2]|0; + $354 = (($353) + ($352<<2)|0); + $355 = HEAP32[$354>>2]|0; + $356 = (_floor1_fit($vb,$355,$323,$322)|0); + $357 = HEAP32[$325>>2]|0; + HEAP32[$357>>2] = $356; + $358 = HEAP32[$328>>2]|0; + $359 = HEAP32[$120>>2]|0; + $360 = (($359) + ($358<<2)|0); + $361 = HEAP32[$360>>2]|0; + $362 = HEAP32[$325>>2]|0; + $363 = HEAP32[$362>>2]|0; + $364 = ((($362)) + 28|0); + $365 = HEAP32[$364>>2]|0; + $366 = (_floor1_interpolate_fit($vb,$361,$363,$365,9362)|0); + $367 = HEAP32[$325>>2]|0; + $368 = ((($367)) + 4|0); + HEAP32[$368>>2] = $366; + $369 = HEAP32[$328>>2]|0; + $370 = HEAP32[$120>>2]|0; + $371 = (($370) + ($369<<2)|0); + $372 = HEAP32[$371>>2]|0; + $373 = HEAP32[$325>>2]|0; + $374 = HEAP32[$373>>2]|0; + $375 = ((($373)) + 28|0); + $376 = HEAP32[$375>>2]|0; + $377 = (_floor1_interpolate_fit($vb,$372,$374,$376,18724)|0); + $378 = HEAP32[$325>>2]|0; + $379 = ((($378)) + 8|0); + HEAP32[$379>>2] = $377; + $380 = HEAP32[$328>>2]|0; + $381 = HEAP32[$120>>2]|0; + $382 = (($381) + ($380<<2)|0); + $383 = HEAP32[$382>>2]|0; + $384 = HEAP32[$325>>2]|0; + $385 = HEAP32[$384>>2]|0; + $386 = ((($384)) + 28|0); + $387 = HEAP32[$386>>2]|0; + $388 = (_floor1_interpolate_fit($vb,$383,$385,$387,28086)|0); + $389 = HEAP32[$325>>2]|0; + $390 = ((($389)) + 12|0); + HEAP32[$390>>2] = $388; + $391 = HEAP32[$328>>2]|0; + $392 = HEAP32[$120>>2]|0; + $393 = (($392) + ($391<<2)|0); + $394 = HEAP32[$393>>2]|0; + $395 = HEAP32[$325>>2]|0; + $396 = HEAP32[$395>>2]|0; + $397 = ((($395)) + 28|0); + $398 = HEAP32[$397>>2]|0; + $399 = (_floor1_interpolate_fit($vb,$394,$396,$398,37449)|0); + $400 = HEAP32[$325>>2]|0; + $401 = ((($400)) + 16|0); + HEAP32[$401>>2] = $399; + $402 = HEAP32[$328>>2]|0; + $403 = HEAP32[$120>>2]|0; + $404 = (($403) + ($402<<2)|0); + $405 = HEAP32[$404>>2]|0; + $406 = HEAP32[$325>>2]|0; + $407 = HEAP32[$406>>2]|0; + $408 = ((($406)) + 28|0); + $409 = HEAP32[$408>>2]|0; + $410 = (_floor1_interpolate_fit($vb,$405,$407,$409,46811)|0); + $411 = HEAP32[$325>>2]|0; + $412 = ((($411)) + 20|0); + HEAP32[$412>>2] = $410; + $413 = HEAP32[$328>>2]|0; + $414 = HEAP32[$120>>2]|0; + $415 = (($414) + ($413<<2)|0); + $416 = HEAP32[$415>>2]|0; + $417 = HEAP32[$325>>2]|0; + $418 = HEAP32[$417>>2]|0; + $419 = ((($417)) + 28|0); + $420 = HEAP32[$419>>2]|0; + $421 = (_floor1_interpolate_fit($vb,$416,$418,$420,56173)|0); + $422 = HEAP32[$325>>2]|0; + $423 = ((($422)) + 24|0); + HEAP32[$423>>2] = $421; + $424 = HEAP32[$328>>2]|0; + $425 = HEAP32[$120>>2]|0; + $426 = (($425) + ($424<<2)|0); + $427 = HEAP32[$426>>2]|0; + $428 = HEAP32[$325>>2]|0; + $429 = ((($428)) + 28|0); + $430 = HEAP32[$429>>2]|0; + $431 = ((($428)) + 56|0); + $432 = HEAP32[$431>>2]|0; + $433 = (_floor1_interpolate_fit($vb,$427,$430,$432,9362)|0); + $434 = HEAP32[$325>>2]|0; + $435 = ((($434)) + 32|0); + HEAP32[$435>>2] = $433; + $436 = HEAP32[$328>>2]|0; + $437 = HEAP32[$120>>2]|0; + $438 = (($437) + ($436<<2)|0); + $439 = HEAP32[$438>>2]|0; + $440 = HEAP32[$325>>2]|0; + $441 = ((($440)) + 28|0); + $442 = HEAP32[$441>>2]|0; + $443 = ((($440)) + 56|0); + $444 = HEAP32[$443>>2]|0; + $445 = (_floor1_interpolate_fit($vb,$439,$442,$444,18724)|0); + $446 = HEAP32[$325>>2]|0; + $447 = ((($446)) + 36|0); + HEAP32[$447>>2] = $445; + $448 = HEAP32[$328>>2]|0; + $449 = HEAP32[$120>>2]|0; + $450 = (($449) + ($448<<2)|0); + $451 = HEAP32[$450>>2]|0; + $452 = HEAP32[$325>>2]|0; + $453 = ((($452)) + 28|0); + $454 = HEAP32[$453>>2]|0; + $455 = ((($452)) + 56|0); + $456 = HEAP32[$455>>2]|0; + $457 = (_floor1_interpolate_fit($vb,$451,$454,$456,28086)|0); + $458 = HEAP32[$325>>2]|0; + $459 = ((($458)) + 40|0); + HEAP32[$459>>2] = $457; + $460 = HEAP32[$328>>2]|0; + $461 = HEAP32[$120>>2]|0; + $462 = (($461) + ($460<<2)|0); + $463 = HEAP32[$462>>2]|0; + $464 = HEAP32[$325>>2]|0; + $465 = ((($464)) + 28|0); + $466 = HEAP32[$465>>2]|0; + $467 = ((($464)) + 56|0); + $468 = HEAP32[$467>>2]|0; + $469 = (_floor1_interpolate_fit($vb,$463,$466,$468,37449)|0); + $470 = HEAP32[$325>>2]|0; + $471 = ((($470)) + 44|0); + HEAP32[$471>>2] = $469; + $472 = HEAP32[$328>>2]|0; + $473 = HEAP32[$120>>2]|0; + $474 = (($473) + ($472<<2)|0); + $475 = HEAP32[$474>>2]|0; + $476 = HEAP32[$325>>2]|0; + $477 = ((($476)) + 28|0); + $478 = HEAP32[$477>>2]|0; + $479 = ((($476)) + 56|0); + $480 = HEAP32[$479>>2]|0; + $481 = (_floor1_interpolate_fit($vb,$475,$478,$480,46811)|0); + $482 = HEAP32[$325>>2]|0; + $483 = ((($482)) + 48|0); + HEAP32[$483>>2] = $481; + $484 = HEAP32[$328>>2]|0; + $485 = HEAP32[$120>>2]|0; + $486 = (($485) + ($484<<2)|0); + $487 = HEAP32[$486>>2]|0; + $488 = HEAP32[$325>>2]|0; + $489 = ((($488)) + 28|0); + $490 = HEAP32[$489>>2]|0; + $491 = ((($488)) + 56|0); + $492 = HEAP32[$491>>2]|0; + $493 = (_floor1_interpolate_fit($vb,$487,$490,$492,56173)|0); + $494 = HEAP32[$325>>2]|0; + $495 = ((($494)) + 52|0); + HEAP32[$495>>2] = $493; + } + } + $496 = (($i$129) + 1)|0; + $497 = HEAP32[$12>>2]|0; + $498 = ($496|0)<($497|0); + if ($498) { + $i$129 = $496; + } else { + $$pre$phi55Z2D = $120;$500 = $497; + break L17; + } + } + STACKTOP = sp;return ($$0|0); + } + while(1) { + $311 = (((($33)) + 4|0) + ($i$129$us<<2)|0); + $127 = HEAP32[$311>>2]|0; + $312 = (($16) + ($i$129$us<<2)|0); + $125 = HEAP32[$312>>2]|0; + $313 = HEAP32[$vb>>2]|0; + $314 = (($313) + ($i$129$us<<2)|0); + $124 = HEAP32[$314>>2]|0; + $121 = (($124) + ($$pre$phiZ2D<<2)|0); + HEAP32[$39>>2] = $31; + $315 = (__vorbis_block_alloc($vb,60)|0); + $137 = (($22) + ($i$129$us<<2)|0); + HEAP32[$137>>2] = $315; + dest=$315; stop=dest+60|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0)); + $j$123$us = 0; + while(1) { + $299 = (($125) + ($j$123$us<<2)|0); + $300 = HEAP32[$299>>2]|0; + $301 = $300 & 2147483647; + $302 = (+($301>>>0)); + $303 = $302 * 7.1771142984289327E-7; + $304 = $303 + -764.6162109375; + $305 = $304; + $306 = $305 + 0.34499999999999997; + $307 = $306; + $$sum1$us = (($j$123$us) + ($$pre$phiZ2D))|0; + $308 = (($124) + ($$sum1$us<<2)|0); + HEAPF32[$308>>2] = $307; + $309 = (($j$123$us) + 1)|0; + $310 = ($309|0)<($$pre$phiZ2D|0); + if ($310) { + $j$123$us = $309; + } else { + break; + } + } + __vp_noisemask($38,$121,$115); + $122 = (($27) + ($i$129$us<<2)|0); + $123 = +HEAPF32[$122>>2]; + __vp_tonemask($38,$124,$116,$global_ampmax$0$lcssa,$123); + __vp_offset_and_mix($38,$115,$116,1,$124,$125,$121); + $126 = (((($33)) + 1028|0) + ($127<<2)|0); + $128 = HEAP32[$126>>2]|0; + $129 = (((($5)) + 800|0) + ($128<<2)|0); + $130 = HEAP32[$129>>2]|0; + $131 = ($130|0)==(1); + if (!($131)) { + $$0 = -1; + break; + } + $132 = HEAP32[$120>>2]|0; + $133 = (($132) + ($128<<2)|0); + $134 = HEAP32[$133>>2]|0; + $135 = (_floor1_fit($vb,$134,$121,$124)|0); + $136 = HEAP32[$137>>2]|0; + $138 = ((($136)) + 28|0); + HEAP32[$138>>2] = $135; + $139 = (_vorbis_bitrate_managed($vb)|0); + $140 = ($139|0)==(0); + if (!($140)) { + $141 = HEAP32[$137>>2]|0; + $142 = ((($141)) + 28|0); + $143 = HEAP32[$142>>2]|0; + $144 = ($143|0)==(0|0); + if (!($144)) { + __vp_offset_and_mix($38,$115,$116,2,$124,$125,$121); + $145 = HEAP32[$126>>2]|0; + $146 = HEAP32[$120>>2]|0; + $147 = (($146) + ($145<<2)|0); + $148 = HEAP32[$147>>2]|0; + $149 = (_floor1_fit($vb,$148,$121,$124)|0); + $150 = HEAP32[$137>>2]|0; + $151 = ((($150)) + 56|0); + HEAP32[$151>>2] = $149; + __vp_offset_and_mix($38,$115,$116,0,$124,$125,$121); + $152 = HEAP32[$126>>2]|0; + $153 = HEAP32[$120>>2]|0; + $154 = (($153) + ($152<<2)|0); + $155 = HEAP32[$154>>2]|0; + $156 = (_floor1_fit($vb,$155,$121,$124)|0); + $157 = HEAP32[$137>>2]|0; + HEAP32[$157>>2] = $156; + $158 = HEAP32[$126>>2]|0; + $159 = HEAP32[$120>>2]|0; + $160 = (($159) + ($158<<2)|0); + $161 = HEAP32[$160>>2]|0; + $162 = HEAP32[$137>>2]|0; + $163 = HEAP32[$162>>2]|0; + $164 = ((($162)) + 28|0); + $165 = HEAP32[$164>>2]|0; + $166 = (_floor1_interpolate_fit($vb,$161,$163,$165,9362)|0); + $167 = HEAP32[$137>>2]|0; + $168 = ((($167)) + 4|0); + HEAP32[$168>>2] = $166; + $169 = HEAP32[$126>>2]|0; + $170 = HEAP32[$120>>2]|0; + $171 = (($170) + ($169<<2)|0); + $172 = HEAP32[$171>>2]|0; + $173 = HEAP32[$137>>2]|0; + $174 = HEAP32[$173>>2]|0; + $175 = ((($173)) + 28|0); + $176 = HEAP32[$175>>2]|0; + $177 = (_floor1_interpolate_fit($vb,$172,$174,$176,18724)|0); + $178 = HEAP32[$137>>2]|0; + $179 = ((($178)) + 8|0); + HEAP32[$179>>2] = $177; + $180 = HEAP32[$126>>2]|0; + $181 = HEAP32[$120>>2]|0; + $182 = (($181) + ($180<<2)|0); + $183 = HEAP32[$182>>2]|0; + $184 = HEAP32[$137>>2]|0; + $185 = HEAP32[$184>>2]|0; + $186 = ((($184)) + 28|0); + $187 = HEAP32[$186>>2]|0; + $188 = (_floor1_interpolate_fit($vb,$183,$185,$187,28086)|0); + $189 = HEAP32[$137>>2]|0; + $190 = ((($189)) + 12|0); + HEAP32[$190>>2] = $188; + $191 = HEAP32[$126>>2]|0; + $192 = HEAP32[$120>>2]|0; + $193 = (($192) + ($191<<2)|0); + $194 = HEAP32[$193>>2]|0; + $195 = HEAP32[$137>>2]|0; + $196 = HEAP32[$195>>2]|0; + $197 = ((($195)) + 28|0); + $198 = HEAP32[$197>>2]|0; + $199 = (_floor1_interpolate_fit($vb,$194,$196,$198,37449)|0); + $200 = HEAP32[$137>>2]|0; + $201 = ((($200)) + 16|0); + HEAP32[$201>>2] = $199; + $202 = HEAP32[$126>>2]|0; + $203 = HEAP32[$120>>2]|0; + $204 = (($203) + ($202<<2)|0); + $205 = HEAP32[$204>>2]|0; + $206 = HEAP32[$137>>2]|0; + $207 = HEAP32[$206>>2]|0; + $208 = ((($206)) + 28|0); + $209 = HEAP32[$208>>2]|0; + $210 = (_floor1_interpolate_fit($vb,$205,$207,$209,46811)|0); + $211 = HEAP32[$137>>2]|0; + $212 = ((($211)) + 20|0); + HEAP32[$212>>2] = $210; + $213 = HEAP32[$126>>2]|0; + $214 = HEAP32[$120>>2]|0; + $215 = (($214) + ($213<<2)|0); + $216 = HEAP32[$215>>2]|0; + $217 = HEAP32[$137>>2]|0; + $218 = HEAP32[$217>>2]|0; + $219 = ((($217)) + 28|0); + $220 = HEAP32[$219>>2]|0; + $221 = (_floor1_interpolate_fit($vb,$216,$218,$220,56173)|0); + $222 = HEAP32[$137>>2]|0; + $223 = ((($222)) + 24|0); + HEAP32[$223>>2] = $221; + $224 = HEAP32[$126>>2]|0; + $225 = HEAP32[$120>>2]|0; + $226 = (($225) + ($224<<2)|0); + $227 = HEAP32[$226>>2]|0; + $228 = HEAP32[$137>>2]|0; + $229 = ((($228)) + 28|0); + $230 = HEAP32[$229>>2]|0; + $231 = ((($228)) + 56|0); + $232 = HEAP32[$231>>2]|0; + $233 = (_floor1_interpolate_fit($vb,$227,$230,$232,9362)|0); + $234 = HEAP32[$137>>2]|0; + $235 = ((($234)) + 32|0); + HEAP32[$235>>2] = $233; + $236 = HEAP32[$126>>2]|0; + $237 = HEAP32[$120>>2]|0; + $238 = (($237) + ($236<<2)|0); + $239 = HEAP32[$238>>2]|0; + $240 = HEAP32[$137>>2]|0; + $241 = ((($240)) + 28|0); + $242 = HEAP32[$241>>2]|0; + $243 = ((($240)) + 56|0); + $244 = HEAP32[$243>>2]|0; + $245 = (_floor1_interpolate_fit($vb,$239,$242,$244,18724)|0); + $246 = HEAP32[$137>>2]|0; + $247 = ((($246)) + 36|0); + HEAP32[$247>>2] = $245; + $248 = HEAP32[$126>>2]|0; + $249 = HEAP32[$120>>2]|0; + $250 = (($249) + ($248<<2)|0); + $251 = HEAP32[$250>>2]|0; + $252 = HEAP32[$137>>2]|0; + $253 = ((($252)) + 28|0); + $254 = HEAP32[$253>>2]|0; + $255 = ((($252)) + 56|0); + $256 = HEAP32[$255>>2]|0; + $257 = (_floor1_interpolate_fit($vb,$251,$254,$256,28086)|0); + $258 = HEAP32[$137>>2]|0; + $259 = ((($258)) + 40|0); + HEAP32[$259>>2] = $257; + $260 = HEAP32[$126>>2]|0; + $261 = HEAP32[$120>>2]|0; + $262 = (($261) + ($260<<2)|0); + $263 = HEAP32[$262>>2]|0; + $264 = HEAP32[$137>>2]|0; + $265 = ((($264)) + 28|0); + $266 = HEAP32[$265>>2]|0; + $267 = ((($264)) + 56|0); + $268 = HEAP32[$267>>2]|0; + $269 = (_floor1_interpolate_fit($vb,$263,$266,$268,37449)|0); + $270 = HEAP32[$137>>2]|0; + $271 = ((($270)) + 44|0); + HEAP32[$271>>2] = $269; + $272 = HEAP32[$126>>2]|0; + $273 = HEAP32[$120>>2]|0; + $274 = (($273) + ($272<<2)|0); + $275 = HEAP32[$274>>2]|0; + $276 = HEAP32[$137>>2]|0; + $277 = ((($276)) + 28|0); + $278 = HEAP32[$277>>2]|0; + $279 = ((($276)) + 56|0); + $280 = HEAP32[$279>>2]|0; + $281 = (_floor1_interpolate_fit($vb,$275,$278,$280,46811)|0); + $282 = HEAP32[$137>>2]|0; + $283 = ((($282)) + 48|0); + HEAP32[$283>>2] = $281; + $284 = HEAP32[$126>>2]|0; + $285 = HEAP32[$120>>2]|0; + $286 = (($285) + ($284<<2)|0); + $287 = HEAP32[$286>>2]|0; + $288 = HEAP32[$137>>2]|0; + $289 = ((($288)) + 28|0); + $290 = HEAP32[$289>>2]|0; + $291 = ((($288)) + 56|0); + $292 = HEAP32[$291>>2]|0; + $293 = (_floor1_interpolate_fit($vb,$287,$290,$292,56173)|0); + $294 = HEAP32[$137>>2]|0; + $295 = ((($294)) + 52|0); + HEAP32[$295>>2] = $293; + } + } + $296 = (($i$129$us) + 1)|0; + $297 = HEAP32[$12>>2]|0; + $298 = ($296|0)<($297|0); + if ($298) { + $i$129$us = $296; + } else { + $$pre$phi55Z2D = $120;$500 = $297; + break L17; + } + } + STACKTOP = sp;return ($$0|0); + } else { + $$pre54 = ((($7)) + 48|0); + $$pre$phi55Z2D = $$pre54;$500 = $117; + } + } while(0); + HEAPF32[$23>>2] = $global_ampmax$0$lcssa; + $499 = $500 << 2; + $$alloca_mul3 = $499; + $501 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul3)|0)+15)&-16)|0;; + $$alloca_mul5 = $499; + $502 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul5)|0)+15)&-16)|0;; + $503 = (_vorbis_bitrate_managed($vb)|0); + $504 = ($503|0)!=(0); + $505 = $504 ? 0 : 7; + $506 = ((($7)) + 44|0); + $507 = ((($vb)) + 24|0); + $508 = ((($vb)) + 32|0); + $509 = ((($5)) + 2868|0); + $510 = ((($7)) + 52|0); + $k$222 = $505; + while(1) { + $511 = (((($9)) + 12|0) + ($k$222<<2)|0); + $512 = HEAP32[$511>>2]|0; + _oggpack_write($512,0,1); + $513 = HEAP32[$506>>2]|0; + _oggpack_write($512,$31,$513); + $514 = HEAP32[$30>>2]|0; + $515 = ($514|0)==(0); + if (!($515)) { + $516 = HEAP32[$507>>2]|0; + _oggpack_write($512,$516,1); + $517 = HEAP32[$508>>2]|0; + _oggpack_write($512,$517,1); + } + $518 = HEAP32[$12>>2]|0; + $519 = ($518|0)>(0); + if ($519) { + $i$25 = 0; + while(1) { + $520 = (((($33)) + 4|0) + ($i$25<<2)|0); + $521 = HEAP32[$520>>2]|0; + $522 = (($19) + ($i$25<<2)|0); + $523 = HEAP32[$522>>2]|0; + $524 = (((($33)) + 1028|0) + ($521<<2)|0); + $525 = HEAP32[$524>>2]|0; + $526 = HEAP32[$$pre$phi55Z2D>>2]|0; + $527 = (($526) + ($525<<2)|0); + $528 = HEAP32[$527>>2]|0; + $529 = (($22) + ($i$25<<2)|0); + $530 = HEAP32[$529>>2]|0; + $531 = (($530) + ($k$222<<2)|0); + $532 = HEAP32[$531>>2]|0; + $533 = (_floor1_encode($512,$vb,$528,$532,$523)|0); + $534 = (($15) + ($i$25<<2)|0); + HEAP32[$534>>2] = $533; + $535 = (($i$25) + 1)|0; + $536 = HEAP32[$12>>2]|0; + $537 = ($535|0)<($536|0); + if ($537) { + $i$25 = $535; + } else { + $$lcssa = $536; + break; + } + } + } else { + $$lcssa = $518; + } + $538 = HEAP32[$30>>2]|0; + $539 = ((((($5)) + 3240|0) + (($538*60)|0)|0) + ($k$222<<2)|0); + $540 = HEAP32[$539>>2]|0; + __vp_couple_quantize_normalize($k$222,$509,$38,$33,$16,$19,$15,$540,$$lcssa); + $541 = HEAP32[$33>>2]|0; + $542 = ($541|0)>(0); + if ($542) { + $i$318 = 0; + while(1) { + $543 = (((($33)) + 1092|0) + ($i$318<<2)|0); + $544 = HEAP32[$543>>2]|0; + $545 = HEAP32[$12>>2]|0; + $546 = ($545|0)>(0); + if ($546) { + $598 = $545;$ch_in_bundle$07 = 0;$j$26 = 0; + while(1) { + $547 = (((($33)) + 4|0) + ($j$26<<2)|0); + $548 = HEAP32[$547>>2]|0; + $549 = ($548|0)==($i$318|0); + if ($549) { + $550 = (($502) + ($ch_in_bundle$07<<2)|0); + $551 = (($15) + ($j$26<<2)|0); + $552 = HEAP32[$551>>2]|0; + $not$ = ($552|0)!=(0); + $$ = $not$&1; + HEAP32[$550>>2] = $$; + $553 = (($19) + ($j$26<<2)|0); + $554 = HEAP32[$553>>2]|0; + $555 = (($ch_in_bundle$07) + 1)|0; + $556 = (($501) + ($ch_in_bundle$07<<2)|0); + HEAP32[$556>>2] = $554; + $$pre = HEAP32[$12>>2]|0; + $559 = $$pre;$ch_in_bundle$1 = $555; + } else { + $559 = $598;$ch_in_bundle$1 = $ch_in_bundle$07; + } + $557 = (($j$26) + 1)|0; + $558 = ($557|0)<($559|0); + if ($558) { + $598 = $559;$ch_in_bundle$07 = $ch_in_bundle$1;$j$26 = $557; + } else { + $ch_in_bundle$0$lcssa = $ch_in_bundle$1; + break; + } + } + } else { + $ch_in_bundle$0$lcssa = 0; + } + $560 = (((($5)) + 1312|0) + ($544<<2)|0); + $561 = HEAP32[$560>>2]|0; + $562 = (25648 + ($561<<2)|0); + $563 = HEAP32[$562>>2]|0; + $564 = ((($563)) + 20|0); + $565 = HEAP32[$564>>2]|0; + $566 = HEAP32[$510>>2]|0; + $567 = (($566) + ($544<<2)|0); + $568 = HEAP32[$567>>2]|0; + $569 = (FUNCTION_TABLE_iiiiii[$565 & 7]($vb,$568,$501,$502,$ch_in_bundle$0$lcssa)|0); + $570 = HEAP32[$12>>2]|0; + $571 = ($570|0)>(0); + if ($571) { + $ch_in_bundle$213 = 0;$j$312 = 0; + while(1) { + $572 = (((($33)) + 4|0) + ($j$312<<2)|0); + $573 = HEAP32[$572>>2]|0; + $574 = ($573|0)==($i$318|0); + if ($574) { + $575 = (($19) + ($j$312<<2)|0); + $576 = HEAP32[$575>>2]|0; + $577 = (($ch_in_bundle$213) + 1)|0; + $578 = (($501) + ($ch_in_bundle$213<<2)|0); + HEAP32[$578>>2] = $576; + $ch_in_bundle$3 = $577; + } else { + $ch_in_bundle$3 = $ch_in_bundle$213; + } + $579 = (($j$312) + 1)|0; + $580 = ($579|0)<($570|0); + if ($580) { + $ch_in_bundle$213 = $ch_in_bundle$3;$j$312 = $579; + } else { + $ch_in_bundle$2$lcssa = $ch_in_bundle$3; + break; + } + } + } else { + $ch_in_bundle$2$lcssa = 0; + } + $581 = HEAP32[$560>>2]|0; + $582 = (25648 + ($581<<2)|0); + $583 = HEAP32[$582>>2]|0; + $584 = ((($583)) + 24|0); + $585 = HEAP32[$584>>2]|0; + $586 = HEAP32[$510>>2]|0; + $587 = (($586) + ($544<<2)|0); + $588 = HEAP32[$587>>2]|0; + (FUNCTION_TABLE_iiiiiiiii[$585 & 3]($512,$vb,$588,$501,$502,$ch_in_bundle$2$lcssa,$569,$i$318)|0); + $589 = (($i$318) + 1)|0; + $590 = HEAP32[$33>>2]|0; + $591 = ($589|0)<($590|0); + if ($591) { + $i$318 = $589; + } else { + break; + } + } + } + $592 = (($k$222) + 1)|0; + $593 = (_vorbis_bitrate_managed($vb)|0); + $594 = ($593|0)!=(0); + $595 = $594 ? 14 : 7; + $596 = ($k$222|0)<($595|0); + if ($596) { + $k$222 = $592; + } else { + $$0 = 0; + break; + } + } + STACKTOP = sp;return ($$0|0); +} +function _mapping0_inverse($vb,$l) { + $vb = $vb|0; + $l = $l|0; + var $$ = 0, $$2 = 0, $$alloca_mul = 0, $$alloca_mul1 = 0, $$alloca_mul3 = 0, $$alloca_mul5 = 0, $$lcssa = 0, $$pre31 = 0, $$pre32 = 0, $$pre33 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0; + var $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0.0; + var $125 = 0, $126 = 0.0, $127 = 0, $128 = 0, $129 = 0.0, $13 = 0, $130 = 0.0, $131 = 0.0, $132 = 0.0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0; + var $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0; + var $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0; + var $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0; + var $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0; + var $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0; + var $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $ch_in_bundle$0$lcssa = 0; + var $ch_in_bundle$018 = 0, $ch_in_bundle$1 = 0, $i$027 = 0, $i$124 = 0, $i$222 = 0, $i$315 = 0, $i$315$in = 0, $i$49 = 0, $i$58 = 0, $j$019 = 0, $j$111 = 0, $not$ = 0, $not$3 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($vb)) + 64|0); + $1 = HEAP32[$0>>2]|0; + $2 = ((($1)) + 4|0); + $3 = HEAP32[$2>>2]|0; + $4 = ((($3)) + 28|0); + $5 = HEAP32[$4>>2]|0; + $6 = ((($1)) + 104|0); + $7 = HEAP32[$6>>2]|0; + $8 = ((($vb)) + 28|0); + $9 = HEAP32[$8>>2]|0; + $10 = (($5) + ($9<<2)|0); + $11 = HEAP32[$10>>2]|0; + $12 = ((($vb)) + 36|0); + HEAP32[$12>>2] = $11; + $13 = ((($3)) + 4|0); + $14 = HEAP32[$13>>2]|0; + $15 = $14 << 2; + $$alloca_mul = $15; + $16 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul)|0)+15)&-16)|0;; + $$alloca_mul1 = $15; + $17 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul1)|0)+15)&-16)|0;; + $$alloca_mul3 = $15; + $18 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul3)|0)+15)&-16)|0;; + $$alloca_mul5 = $15; + $19 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul5)|0)+15)&-16)|0;; + $20 = HEAP32[$13>>2]|0; + $21 = ($20|0)>(0); + if ($21) { + $22 = ((($l)) + 4|0); + $23 = ((($l)) + 1028|0); + $24 = ((($7)) + 48|0); + $25 = $11 << 1; + $26 = $25 & 2147483646; + $i$027 = 0; + while(1) { + $32 = (($22) + ($i$027<<2)|0); + $33 = HEAP32[$32>>2]|0; + $34 = (($23) + ($33<<2)|0); + $35 = HEAP32[$34>>2]|0; + $36 = (((($5)) + 800|0) + ($35<<2)|0); + $37 = HEAP32[$36>>2]|0; + $38 = (25640 + ($37<<2)|0); + $39 = HEAP32[$38>>2]|0; + $40 = ((($39)) + 20|0); + $41 = HEAP32[$40>>2]|0; + $42 = HEAP32[$24>>2]|0; + $43 = (($42) + ($35<<2)|0); + $44 = HEAP32[$43>>2]|0; + $45 = (FUNCTION_TABLE_iii[$41 & 15]($vb,$44)|0); + $46 = (($19) + ($i$027<<2)|0); + HEAP32[$46>>2] = $45; + $47 = (($18) + ($i$027<<2)|0); + $not$3 = ($45|0)!=(0|0); + $$ = $not$3&1; + HEAP32[$47>>2] = $$; + $48 = HEAP32[$vb>>2]|0; + $49 = (($48) + ($i$027<<2)|0); + $50 = HEAP32[$49>>2]|0; + _memset(($50|0),0,($26|0))|0; + $51 = (($i$027) + 1)|0; + $52 = HEAP32[$13>>2]|0; + $53 = ($51|0)<($52|0); + if ($53) { + $i$027 = $51; + } else { + $167 = $52; + break; + } + } + } else { + $167 = $20; + } + $27 = ((($l)) + 1156|0); + $28 = HEAP32[$27>>2]|0; + $29 = ($28|0)>(0); + if ($29) { + $30 = ((($l)) + 1160|0); + $31 = ((($l)) + 2184|0); + $i$124 = 0; + while(1) { + $59 = (($30) + ($i$124<<2)|0); + $60 = HEAP32[$59>>2]|0; + $61 = (($18) + ($60<<2)|0); + $62 = HEAP32[$61>>2]|0; + $63 = ($62|0)==(0); + $64 = (($31) + ($i$124<<2)|0); + $65 = HEAP32[$64>>2]|0; + if ($63) { + $66 = (($18) + ($65<<2)|0); + $67 = HEAP32[$66>>2]|0; + $68 = ($67|0)==(0); + if (!($68)) { + label = 10; + } + } else { + label = 10; + } + if ((label|0) == 10) { + label = 0; + HEAP32[$61>>2] = 1; + $69 = (($18) + ($65<<2)|0); + HEAP32[$69>>2] = 1; + } + $70 = (($i$124) + 1)|0; + $71 = ($70|0)<($28|0); + if ($71) { + $i$124 = $70; + } else { + break; + } + } + } + $54 = HEAP32[$l>>2]|0; + $55 = ($54|0)>(0); + if ($55) { + $56 = ((($l)) + 1092|0); + $57 = ((($7)) + 52|0); + $58 = ((($l)) + 4|0); + $72 = $167;$i$222 = 0; + while(1) { + $73 = ($72|0)>(0); + if ($73) { + $168 = $72;$ch_in_bundle$018 = 0;$j$019 = 0; + while(1) { + $74 = (($58) + ($j$019<<2)|0); + $75 = HEAP32[$74>>2]|0; + $76 = ($75|0)==($i$222|0); + if ($76) { + $77 = (($18) + ($j$019<<2)|0); + $78 = HEAP32[$77>>2]|0; + $79 = (($17) + ($ch_in_bundle$018<<2)|0); + $not$ = ($78|0)!=(0); + $$2 = $not$&1; + HEAP32[$79>>2] = $$2; + $80 = HEAP32[$vb>>2]|0; + $81 = (($80) + ($j$019<<2)|0); + $82 = HEAP32[$81>>2]|0; + $83 = (($ch_in_bundle$018) + 1)|0; + $84 = (($16) + ($ch_in_bundle$018<<2)|0); + HEAP32[$84>>2] = $82; + $$pre32 = HEAP32[$13>>2]|0; + $87 = $$pre32;$ch_in_bundle$1 = $83; + } else { + $87 = $168;$ch_in_bundle$1 = $ch_in_bundle$018; + } + $85 = (($j$019) + 1)|0; + $86 = ($85|0)<($87|0); + if ($86) { + $168 = $87;$ch_in_bundle$018 = $ch_in_bundle$1;$j$019 = $85; + } else { + $ch_in_bundle$0$lcssa = $ch_in_bundle$1; + break; + } + } + } else { + $ch_in_bundle$0$lcssa = 0; + } + $88 = (($56) + ($i$222<<2)|0); + $89 = HEAP32[$88>>2]|0; + $90 = (((($5)) + 1312|0) + ($89<<2)|0); + $91 = HEAP32[$90>>2]|0; + $92 = (25648 + ($91<<2)|0); + $93 = HEAP32[$92>>2]|0; + $94 = ((($93)) + 28|0); + $95 = HEAP32[$94>>2]|0; + $96 = HEAP32[$57>>2]|0; + $97 = (($96) + ($89<<2)|0); + $98 = HEAP32[$97>>2]|0; + (FUNCTION_TABLE_iiiiii[$95 & 7]($vb,$98,$16,$17,$ch_in_bundle$0$lcssa)|0); + $99 = (($i$222) + 1)|0; + $100 = HEAP32[$l>>2]|0; + $101 = ($99|0)<($100|0); + if (!($101)) { + break; + } + $$pre31 = HEAP32[$13>>2]|0; + $72 = $$pre31;$i$222 = $99; + } + $$pre33 = HEAP32[$27>>2]|0; + $102 = $$pre33; + } else { + $102 = $28; + } + $103 = ($102|0)>(0); + if ($103) { + $104 = ((($l)) + 1160|0); + $105 = HEAP32[$vb>>2]|0; + $106 = ((($l)) + 2184|0); + $107 = (($11|0) / 2)&-1; + $108 = ($11|0)>(1); + $i$315$in = $102; + while(1) { + $i$315 = (($i$315$in) + -1)|0; + $115 = (($104) + ($i$315<<2)|0); + $116 = HEAP32[$115>>2]|0; + $117 = (($105) + ($116<<2)|0); + $118 = HEAP32[$117>>2]|0; + $119 = (($106) + ($i$315<<2)|0); + $120 = HEAP32[$119>>2]|0; + $121 = (($105) + ($120<<2)|0); + $122 = HEAP32[$121>>2]|0; + if ($108) { + $j$111 = 0; + while(1) { + $123 = (($118) + ($j$111<<2)|0); + $124 = +HEAPF32[$123>>2]; + $125 = (($122) + ($j$111<<2)|0); + $126 = +HEAPF32[$125>>2]; + $127 = $124 > 0.0; + $128 = $126 > 0.0; + do { + if ($127) { + if ($128) { + HEAPF32[$123>>2] = $124; + $129 = $124 - $126; + HEAPF32[$125>>2] = $129; + break; + } else { + HEAPF32[$125>>2] = $124; + $130 = $126 + $124; + HEAPF32[$123>>2] = $130; + break; + } + } else { + if ($128) { + HEAPF32[$123>>2] = $124; + $131 = $126 + $124; + HEAPF32[$125>>2] = $131; + break; + } else { + HEAPF32[$125>>2] = $124; + $132 = $124 - $126; + HEAPF32[$123>>2] = $132; + break; + } + } + } while(0); + $133 = (($j$111) + 1)|0; + $134 = ($133|0)<($107|0); + if ($134) { + $j$111 = $133; + } else { + break; + } + } + } + $109 = ($i$315$in|0)>(1); + if ($109) { + $i$315$in = $i$315; + } else { + break; + } + } + } + $110 = HEAP32[$13>>2]|0; + $111 = ($110|0)>(0); + if (!($111)) { + STACKTOP = sp;return 0; + } + $112 = ((($l)) + 4|0); + $113 = ((($l)) + 1028|0); + $114 = ((($7)) + 48|0); + $i$49 = 0; + while(1) { + $136 = HEAP32[$vb>>2]|0; + $137 = (($136) + ($i$49<<2)|0); + $138 = HEAP32[$137>>2]|0; + $139 = (($112) + ($i$49<<2)|0); + $140 = HEAP32[$139>>2]|0; + $141 = (($113) + ($140<<2)|0); + $142 = HEAP32[$141>>2]|0; + $143 = (((($5)) + 800|0) + ($142<<2)|0); + $144 = HEAP32[$143>>2]|0; + $145 = (25640 + ($144<<2)|0); + $146 = HEAP32[$145>>2]|0; + $147 = ((($146)) + 24|0); + $148 = HEAP32[$147>>2]|0; + $149 = HEAP32[$114>>2]|0; + $150 = (($149) + ($142<<2)|0); + $151 = HEAP32[$150>>2]|0; + $152 = (($19) + ($i$49<<2)|0); + $153 = HEAP32[$152>>2]|0; + (FUNCTION_TABLE_iiiii[$148 & 3]($vb,$151,$153,$138)|0); + $154 = (($i$49) + 1)|0; + $155 = HEAP32[$13>>2]|0; + $156 = ($154|0)<($155|0); + if ($156) { + $i$49 = $154; + } else { + $$lcssa = $155; + break; + } + } + $135 = ($$lcssa|0)>(0); + if (!($135)) { + STACKTOP = sp;return 0; + } + $i$58 = 0; + while(1) { + $157 = HEAP32[$vb>>2]|0; + $158 = (($157) + ($i$58<<2)|0); + $159 = HEAP32[$158>>2]|0; + $160 = HEAP32[$8>>2]|0; + $161 = (((($7)) + 12|0) + ($160<<2)|0); + $162 = HEAP32[$161>>2]|0; + $163 = HEAP32[$162>>2]|0; + _mdct_backward($163,$159,$159); + $164 = (($i$58) + 1)|0; + $165 = HEAP32[$13>>2]|0; + $166 = ($164|0)<($165|0); + if ($166) { + $i$58 = $164; + } else { + break; + } + } + STACKTOP = sp;return 0; +} +function _mdct_init($lookup,$n) { + $lookup = $lookup|0; + $n = $n|0; + var $0 = 0, $1 = 0, $10 = 0.0, $11 = 0.0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0.0, $18 = 0.0, $19 = 0, $2 = 0, $20 = 0.0, $21 = 0.0, $22 = 0, $23 = 0, $24 = 0.0, $25 = 0.0, $26 = 0; + var $27 = 0.0, $28 = 0.0, $29 = 0.0, $3 = 0, $30 = 0.0, $31 = 0, $32 = 0, $33 = 0.0, $34 = 0.0, $35 = 0.0, $36 = 0, $37 = 0, $38 = 0.0, $39 = 0.0, $4 = 0, $40 = 0.0, $41 = 0.0, $42 = 0, $43 = 0, $44 = 0.0; + var $45 = 0.0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0.0, $53 = 0.0, $54 = 0.0, $55 = 0.0, $56 = 0.0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0.0, $61 = 0.0, $62 = 0.0; + var $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0.0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0.0, $80 = 0; + var $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0.0, $9 = 0.0, $90 = 0, $acc$03 = 0, $acc$1 = 0, $acc$1$lcssa = 0, $i$07 = 0, $i$15 = 0, $i1$04 = 0, $j$02 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = (($n|0) / 4)&-1; + $1 = $0 << 2; + $2 = (_malloc($1)|0); + $3 = (($0) + ($n))|0; + $4 = $3 << 2; + $5 = (_malloc($4)|0); + $6 = $n >> 1; + $7 = (+($n|0)); + $8 = $7; + $9 = (+Math_log((+$8))); + $10 = $9 * 1.4426950408889634; + $11 = (+_rint($10)); + $12 = (~~(($11))); + $13 = ((($lookup)) + 4|0); + HEAP32[$13>>2] = $12; + HEAP32[$lookup>>2] = $n; + $14 = ((($lookup)) + 8|0); + HEAP32[$14>>2] = $5; + $15 = ((($lookup)) + 12|0); + HEAP32[$15>>2] = $2; + $16 = ($n|0)>(3); + if (!($16)) { + $89 = 4.0 / $7; + $90 = ((($lookup)) + 16|0); + HEAPF32[$90>>2] = $89; + return; + } + $17 = (+($n|0)); + $18 = 3.1415926535897931 / $17; + $19 = $n << 1; + $20 = (+($19|0)); + $21 = 3.1415926535897931 / $20; + $i$07 = 0; + while(1) { + $26 = $i$07 << 2; + $27 = (+($26|0)); + $28 = $18 * $27; + $29 = (+Math_cos((+$28))); + $30 = $29; + $31 = $i$07 << 1; + $32 = (($5) + ($31<<2)|0); + HEAPF32[$32>>2] = $30; + $33 = (+Math_sin((+$28))); + $34 = $33; + $35 = -$34; + $36 = $31 | 1; + $37 = (($5) + ($36<<2)|0); + HEAPF32[$37>>2] = $35; + $38 = (+($36|0)); + $39 = $21 * $38; + $40 = (+Math_cos((+$39))); + $41 = $40; + $42 = (($31) + ($6))|0; + $43 = (($5) + ($42<<2)|0); + HEAPF32[$43>>2] = $41; + $44 = (+Math_sin((+$39))); + $45 = $44; + $46 = (($42) + 1)|0; + $47 = (($5) + ($46<<2)|0); + HEAPF32[$47>>2] = $45; + $48 = (($i$07) + 1)|0; + $49 = ($48|0)<($0|0); + if ($49) { + $i$07 = $48; + } else { + break; + } + } + $22 = (($n|0) / 8)&-1; + $23 = ($n|0)>(7); + if (!($23)) { + $89 = 4.0 / $7; + $90 = ((($lookup)) + 16|0); + HEAPF32[$90>>2] = $89; + return; + } + $24 = (+($n|0)); + $25 = 3.1415926535897931 / $24; + $i$15 = 0; + while(1) { + $50 = $i$15 << 2; + $51 = $50 | 2; + $52 = (+($51|0)); + $53 = $25 * $52; + $54 = (+Math_cos((+$53))); + $55 = $54 * 0.5; + $56 = $55; + $57 = $i$15 << 1; + $58 = (($57) + ($n))|0; + $59 = (($5) + ($58<<2)|0); + HEAPF32[$59>>2] = $56; + $60 = (+Math_sin((+$53))); + $61 = $60 * -0.5; + $62 = $61; + $63 = (($58) + 1)|0; + $64 = (($5) + ($63<<2)|0); + HEAPF32[$64>>2] = $62; + $65 = (($i$15) + 1)|0; + $66 = ($65|0)<($22|0); + if ($66) { + $i$15 = $65; + } else { + break; + } + } + $67 = (($12) + -1)|0; + $68 = 1 << $67; + $69 = (($68) + -1)|0; + $70 = (($12) + -2)|0; + $71 = 1 << $70; + if ($23) { + $i1$04 = 0; + } else { + $89 = 4.0 / $7; + $90 = ((($lookup)) + 16|0); + HEAPF32[$90>>2] = $89; + return; + } + while(1) { + $73 = $71;$acc$03 = 0;$j$02 = 0; + while(1) { + $72 = $73 & $i1$04; + $74 = ($72|0)==(0); + $75 = 1 << $j$02; + $76 = $74 ? 0 : $75; + $acc$1 = $76 | $acc$03; + $77 = (($j$02) + 1)|0; + $78 = $71 >> $77; + $79 = ($78|0)==(0); + if ($79) { + $acc$1$lcssa = $acc$1; + break; + } else { + $73 = $78;$acc$03 = $acc$1;$j$02 = $77; + } + } + $80 = $acc$1$lcssa ^ -1; + $81 = $69 & $80; + $82 = (($81) + -1)|0; + $83 = $i1$04 << 1; + $84 = (($2) + ($83<<2)|0); + HEAP32[$84>>2] = $82; + $85 = $83 | 1; + $86 = (($2) + ($85<<2)|0); + HEAP32[$86>>2] = $acc$1$lcssa; + $87 = (($i1$04) + 1)|0; + $88 = ($87|0)<($22|0); + if ($88) { + $i1$04 = $87; + } else { + break; + } + } + $89 = 4.0 / $7; + $90 = ((($lookup)) + 16|0); + HEAPF32[$90>>2] = $89; + return; +} +function _mdct_clear($l) { + $l = $l|0; + var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($l|0)==(0|0); + if ($0) { + return; + } + $1 = ((($l)) + 8|0); + $2 = HEAP32[$1>>2]|0; + $3 = ($2|0)==(0|0); + if (!($3)) { + _free($2); + } + $4 = ((($l)) + 12|0); + $5 = HEAP32[$4>>2]|0; + $6 = ($5|0)==(0|0); + if (!($6)) { + _free($5); + } + ;HEAP32[$l>>2]=0|0;HEAP32[$l+4>>2]=0|0;HEAP32[$l+8>>2]=0|0;HEAP32[$l+12>>2]=0|0;HEAP32[$l+16>>2]=0|0; + return; +} +function _mdct_backward($init,$in,$out) { + $init = $init|0; + $in = $in|0; + $out = $out|0; + var $$sum = 0, $$sum1 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $10 = 0.0, $100 = 0.0, $101 = 0, $102 = 0.0, $103 = 0.0, $104 = 0.0, $105 = 0.0, $106 = 0, $107 = 0.0, $108 = 0.0, $109 = 0.0, $11 = 0, $110 = 0.0, $111 = 0.0, $112 = 0.0; + var $113 = 0.0, $114 = 0.0, $115 = 0, $116 = 0.0, $117 = 0, $118 = 0.0, $119 = 0.0, $12 = 0.0, $120 = 0, $121 = 0.0, $122 = 0, $123 = 0.0, $124 = 0.0, $125 = 0.0, $126 = 0, $127 = 0.0, $128 = 0.0, $129 = 0.0, $13 = 0.0, $130 = 0.0; + var $131 = 0.0, $132 = 0.0, $133 = 0.0, $134 = 0.0, $135 = 0, $136 = 0, $137 = 0.0, $138 = 0, $139 = 0.0, $14 = 0.0, $140 = 0.0, $141 = 0, $142 = 0.0, $143 = 0, $144 = 0.0, $145 = 0.0, $146 = 0.0, $147 = 0, $148 = 0.0, $149 = 0.0; + var $15 = 0.0, $150 = 0.0, $151 = 0.0, $152 = 0.0, $153 = 0.0, $154 = 0.0, $155 = 0.0, $156 = 0, $157 = 0, $158 = 0.0, $159 = 0, $16 = 0, $160 = 0.0, $161 = 0.0, $162 = 0, $163 = 0.0, $164 = 0, $165 = 0.0, $166 = 0.0, $167 = 0.0; + var $168 = 0.0, $169 = 0.0, $17 = 0.0, $170 = 0.0, $171 = 0.0, $172 = 0.0, $173 = 0.0, $174 = 0.0, $175 = 0.0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0.0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0.0; + var $186 = 0, $187 = 0.0, $188 = 0, $189 = 0.0, $19 = 0.0, $190 = 0, $191 = 0.0, $192 = 0, $193 = 0, $194 = 0.0, $195 = 0, $196 = 0.0, $197 = 0, $198 = 0.0, $199 = 0.0, $2 = 0, $20 = 0.0, $200 = 0, $201 = 0, $202 = 0; + var $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0.0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $22 = 0.0, $23 = 0.0, $24 = 0.0, $25 = 0.0, $26 = 0.0, $27 = 0; + var $28 = 0, $29 = 0.0, $3 = 0, $30 = 0, $31 = 0.0, $32 = 0.0, $33 = 0.0, $34 = 0, $35 = 0.0, $36 = 0.0, $37 = 0.0, $38 = 0.0, $39 = 0, $4 = 0, $40 = 0.0, $41 = 0.0, $42 = 0.0, $43 = 0.0, $44 = 0.0, $45 = 0.0; + var $46 = 0.0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0.0, $56 = 0, $57 = 0.0, $58 = 0.0, $59 = 0, $6 = 0, $60 = 0.0, $61 = 0, $62 = 0.0, $63 = 0.0; + var $64 = 0.0, $65 = 0.0, $66 = 0.0, $67 = 0.0, $68 = 0.0, $69 = 0.0, $7 = 0, $70 = 0.0, $71 = 0.0, $72 = 0, $73 = 0.0, $74 = 0, $75 = 0.0, $76 = 0.0, $77 = 0, $78 = 0.0, $79 = 0.0, $8 = 0, $80 = 0.0, $81 = 0.0; + var $82 = 0, $83 = 0.0, $84 = 0.0, $85 = 0.0, $86 = 0.0, $87 = 0.0, $88 = 0.0, $89 = 0.0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0.0, $98 = 0, $99 = 0.0, $T$0 = 0; + var $T$1 = 0, $T$2 = 0, $iX$0 = 0, $iX$1 = 0, $iX1$0 = 0, $iX1$1 = 0, $iX1$2 = 0, $init$idx = 0, $init$idx$val = 0, $init$idx4$val = 0, $init$idx5$val = 0, $init$idx6 = 0, $init$idx6$val = 0, $oX$0 = 0, $oX$1 = 0, $oX1$0 = 0, $oX1$1 = 0, $oX1$2 = 0, $oX2$0 = 0, $oX2$1 = 0; + var label = 0, sp = 0; + sp = STACKTOP; + $0 = HEAP32[$init>>2]|0; + $1 = $0 >> 1; + $2 = $0 >> 2; + $$sum = (($1) + -7)|0; + $3 = (($in) + ($$sum<<2)|0); + $$sum1 = (($1) + ($2))|0; + $4 = (($out) + ($$sum1<<2)|0); + $5 = ((($init)) + 8|0); + $6 = HEAP32[$5>>2]|0; + $7 = (($6) + ($2<<2)|0); + $T$0 = $7;$iX$0 = $3;$oX$0 = $4; + while(1) { + $8 = ((($oX$0)) + -16|0); + $9 = ((($iX$0)) + 8|0); + $10 = +HEAPF32[$9>>2]; + $11 = ((($T$0)) + 12|0); + $12 = +HEAPF32[$11>>2]; + $13 = $10 * $12; + $14 = -$13; + $15 = +HEAPF32[$iX$0>>2]; + $16 = ((($T$0)) + 8|0); + $17 = +HEAPF32[$16>>2]; + $18 = $17 * $15; + $19 = $14 - $18; + HEAPF32[$8>>2] = $19; + $20 = +HEAPF32[$iX$0>>2]; + $21 = +HEAPF32[$11>>2]; + $22 = $21 * $20; + $23 = +HEAPF32[$9>>2]; + $24 = +HEAPF32[$16>>2]; + $25 = $24 * $23; + $26 = $22 - $25; + $27 = ((($oX$0)) + -12|0); + HEAPF32[$27>>2] = $26; + $28 = ((($iX$0)) + 24|0); + $29 = +HEAPF32[$28>>2]; + $30 = ((($T$0)) + 4|0); + $31 = +HEAPF32[$30>>2]; + $32 = $29 * $31; + $33 = -$32; + $34 = ((($iX$0)) + 16|0); + $35 = +HEAPF32[$34>>2]; + $36 = +HEAPF32[$T$0>>2]; + $37 = $36 * $35; + $38 = $33 - $37; + $39 = ((($oX$0)) + -8|0); + HEAPF32[$39>>2] = $38; + $40 = +HEAPF32[$34>>2]; + $41 = +HEAPF32[$30>>2]; + $42 = $41 * $40; + $43 = +HEAPF32[$28>>2]; + $44 = +HEAPF32[$T$0>>2]; + $45 = $44 * $43; + $46 = $42 - $45; + $47 = ((($oX$0)) + -4|0); + HEAPF32[$47>>2] = $46; + $48 = ((($iX$0)) + -32|0); + $49 = ((($T$0)) + 16|0); + $50 = ($48>>>0)<($in>>>0); + if ($50) { + break; + } else { + $T$0 = $49;$iX$0 = $48;$oX$0 = $8; + } + } + $51 = (($out) + ($1<<2)|0); + $$sum2 = (($1) + -8)|0; + $52 = (($in) + ($$sum2<<2)|0); + $T$1 = $7;$iX$1 = $52;$oX$1 = $4; + while(1) { + $53 = ((($T$1)) + -16|0); + $54 = ((($iX$1)) + 16|0); + $55 = +HEAPF32[$54>>2]; + $56 = ((($T$1)) + -4|0); + $57 = +HEAPF32[$56>>2]; + $58 = $57 * $55; + $59 = ((($iX$1)) + 24|0); + $60 = +HEAPF32[$59>>2]; + $61 = ((($T$1)) + -8|0); + $62 = +HEAPF32[$61>>2]; + $63 = $62 * $60; + $64 = $63 + $58; + HEAPF32[$oX$1>>2] = $64; + $65 = +HEAPF32[$54>>2]; + $66 = +HEAPF32[$61>>2]; + $67 = $66 * $65; + $68 = +HEAPF32[$59>>2]; + $69 = +HEAPF32[$56>>2]; + $70 = $69 * $68; + $71 = $67 - $70; + $72 = ((($oX$1)) + 4|0); + HEAPF32[$72>>2] = $71; + $73 = +HEAPF32[$iX$1>>2]; + $74 = ((($T$1)) + -12|0); + $75 = +HEAPF32[$74>>2]; + $76 = $75 * $73; + $77 = ((($iX$1)) + 8|0); + $78 = +HEAPF32[$77>>2]; + $79 = +HEAPF32[$53>>2]; + $80 = $79 * $78; + $81 = $80 + $76; + $82 = ((($oX$1)) + 8|0); + HEAPF32[$82>>2] = $81; + $83 = +HEAPF32[$iX$1>>2]; + $84 = +HEAPF32[$53>>2]; + $85 = $84 * $83; + $86 = +HEAPF32[$77>>2]; + $87 = +HEAPF32[$74>>2]; + $88 = $87 * $86; + $89 = $85 - $88; + $90 = ((($oX$1)) + 12|0); + HEAPF32[$90>>2] = $89; + $91 = ((($iX$1)) + -32|0); + $92 = ((($oX$1)) + 16|0); + $93 = ($91>>>0)<($in>>>0); + if ($93) { + break; + } else { + $T$1 = $53;$iX$1 = $91;$oX$1 = $92; + } + } + $init$idx = ((($init)) + 4|0); + $init$idx$val = HEAP32[$init$idx>>2]|0; + _mdct_butterflies($init$idx$val,$6,$51,$1); + $init$idx4$val = HEAP32[$init>>2]|0; + $init$idx5$val = HEAP32[$5>>2]|0; + $init$idx6 = ((($init)) + 12|0); + $init$idx6$val = HEAP32[$init$idx6>>2]|0; + _mdct_bitreverse($init$idx4$val,$init$idx5$val,$init$idx6$val,$out); + $94 = HEAP32[$5>>2]|0; + $95 = (($94) + ($1<<2)|0); + $T$2 = $95;$iX1$0 = $out;$oX1$0 = $4;$oX2$0 = $4; + while(1) { + $96 = ((($oX1$0)) + -16|0); + $97 = +HEAPF32[$iX1$0>>2]; + $98 = ((($T$2)) + 4|0); + $99 = +HEAPF32[$98>>2]; + $100 = $99 * $97; + $101 = ((($iX1$0)) + 4|0); + $102 = +HEAPF32[$101>>2]; + $103 = +HEAPF32[$T$2>>2]; + $104 = $103 * $102; + $105 = $100 - $104; + $106 = ((($oX1$0)) + -4|0); + HEAPF32[$106>>2] = $105; + $107 = +HEAPF32[$iX1$0>>2]; + $108 = +HEAPF32[$T$2>>2]; + $109 = $108 * $107; + $110 = +HEAPF32[$101>>2]; + $111 = +HEAPF32[$98>>2]; + $112 = $111 * $110; + $113 = $109 + $112; + $114 = -$113; + HEAPF32[$oX2$0>>2] = $114; + $115 = ((($iX1$0)) + 8|0); + $116 = +HEAPF32[$115>>2]; + $117 = ((($T$2)) + 12|0); + $118 = +HEAPF32[$117>>2]; + $119 = $118 * $116; + $120 = ((($iX1$0)) + 12|0); + $121 = +HEAPF32[$120>>2]; + $122 = ((($T$2)) + 8|0); + $123 = +HEAPF32[$122>>2]; + $124 = $123 * $121; + $125 = $119 - $124; + $126 = ((($oX1$0)) + -8|0); + HEAPF32[$126>>2] = $125; + $127 = +HEAPF32[$115>>2]; + $128 = +HEAPF32[$122>>2]; + $129 = $128 * $127; + $130 = +HEAPF32[$120>>2]; + $131 = +HEAPF32[$117>>2]; + $132 = $131 * $130; + $133 = $129 + $132; + $134 = -$133; + $135 = ((($oX2$0)) + 4|0); + HEAPF32[$135>>2] = $134; + $136 = ((($iX1$0)) + 16|0); + $137 = +HEAPF32[$136>>2]; + $138 = ((($T$2)) + 20|0); + $139 = +HEAPF32[$138>>2]; + $140 = $139 * $137; + $141 = ((($iX1$0)) + 20|0); + $142 = +HEAPF32[$141>>2]; + $143 = ((($T$2)) + 16|0); + $144 = +HEAPF32[$143>>2]; + $145 = $144 * $142; + $146 = $140 - $145; + $147 = ((($oX1$0)) + -12|0); + HEAPF32[$147>>2] = $146; + $148 = +HEAPF32[$136>>2]; + $149 = +HEAPF32[$143>>2]; + $150 = $149 * $148; + $151 = +HEAPF32[$141>>2]; + $152 = +HEAPF32[$138>>2]; + $153 = $152 * $151; + $154 = $150 + $153; + $155 = -$154; + $156 = ((($oX2$0)) + 8|0); + HEAPF32[$156>>2] = $155; + $157 = ((($iX1$0)) + 24|0); + $158 = +HEAPF32[$157>>2]; + $159 = ((($T$2)) + 28|0); + $160 = +HEAPF32[$159>>2]; + $161 = $160 * $158; + $162 = ((($iX1$0)) + 28|0); + $163 = +HEAPF32[$162>>2]; + $164 = ((($T$2)) + 24|0); + $165 = +HEAPF32[$164>>2]; + $166 = $165 * $163; + $167 = $161 - $166; + HEAPF32[$96>>2] = $167; + $168 = +HEAPF32[$157>>2]; + $169 = +HEAPF32[$164>>2]; + $170 = $169 * $168; + $171 = +HEAPF32[$162>>2]; + $172 = +HEAPF32[$159>>2]; + $173 = $172 * $171; + $174 = $170 + $173; + $175 = -$174; + $176 = ((($oX2$0)) + 12|0); + HEAPF32[$176>>2] = $175; + $177 = ((($oX2$0)) + 16|0); + $178 = ((($iX1$0)) + 32|0); + $179 = ((($T$2)) + 32|0); + $180 = ($178>>>0)<($96>>>0); + if ($180) { + $T$2 = $179;$iX1$0 = $178;$oX1$0 = $96;$oX2$0 = $177; + } else { + break; + } + } + $181 = (($out) + ($2<<2)|0); + $iX1$1 = $4;$oX1$1 = $181;$oX2$1 = $181; + while(1) { + $182 = ((($oX1$1)) + -16|0); + $183 = ((($iX1$1)) + -16|0); + $184 = ((($iX1$1)) + -4|0); + $185 = +HEAPF32[$184>>2]; + $186 = ((($oX1$1)) + -4|0); + HEAPF32[$186>>2] = $185; + $187 = -$185; + HEAPF32[$oX2$1>>2] = $187; + $188 = ((($iX1$1)) + -8|0); + $189 = +HEAPF32[$188>>2]; + $190 = ((($oX1$1)) + -8|0); + HEAPF32[$190>>2] = $189; + $191 = -$189; + $192 = ((($oX2$1)) + 4|0); + HEAPF32[$192>>2] = $191; + $193 = ((($iX1$1)) + -12|0); + $194 = +HEAPF32[$193>>2]; + $195 = ((($oX1$1)) + -12|0); + HEAPF32[$195>>2] = $194; + $196 = -$194; + $197 = ((($oX2$1)) + 8|0); + HEAPF32[$197>>2] = $196; + $198 = +HEAPF32[$183>>2]; + HEAPF32[$182>>2] = $198; + $199 = -$198; + $200 = ((($oX2$1)) + 12|0); + HEAPF32[$200>>2] = $199; + $201 = ((($oX2$1)) + 16|0); + $202 = ($201>>>0)<($183>>>0); + if ($202) { + $iX1$1 = $183;$oX1$1 = $182;$oX2$1 = $201; + } else { + $iX1$2 = $4;$oX1$2 = $4; + break; + } + } + while(1) { + $203 = ((($oX1$2)) + -16|0); + $204 = ((($iX1$2)) + 12|0); + $205 = HEAP32[$204>>2]|0; + HEAP32[$203>>2] = $205; + $206 = ((($iX1$2)) + 8|0); + $207 = HEAP32[$206>>2]|0; + $208 = ((($oX1$2)) + -12|0); + HEAP32[$208>>2] = $207; + $209 = ((($iX1$2)) + 4|0); + $210 = HEAP32[$209>>2]|0; + $211 = ((($oX1$2)) + -8|0); + HEAP32[$211>>2] = $210; + $212 = HEAP32[$iX1$2>>2]|0; + $213 = ((($oX1$2)) + -4|0); + HEAP32[$213>>2] = $212; + $214 = ((($iX1$2)) + 16|0); + $215 = ($203>>>0)>($51>>>0); + if ($215) { + $iX1$2 = $214;$oX1$2 = $203; + } else { + break; + } + } + return; +} +function _mdct_forward($init,$in,$out) { + $init = $init|0; + $in = $in|0; + $out = $out|0; + var $$alloca_mul = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $$sum3 = 0, $$sum4 = 0, $$sum5 = 0, $$sum51 = 0, $$sum6 = 0, $$sum7 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0.0, $101 = 0, $102 = 0.0, $103 = 0.0, $104 = 0, $105 = 0.0, $106 = 0.0; + var $107 = 0.0, $108 = 0.0, $109 = 0.0, $11 = 0, $110 = 0, $111 = 0.0, $112 = 0.0, $113 = 0.0, $114 = 0.0, $115 = 0.0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0; + var $125 = 0, $126 = 0, $127 = 0.0, $128 = 0.0, $129 = 0.0, $13 = 0, $130 = 0, $131 = 0.0, $132 = 0, $133 = 0.0, $134 = 0.0, $135 = 0.0, $136 = 0.0, $137 = 0.0, $138 = 0, $139 = 0.0, $14 = 0, $140 = 0.0, $141 = 0.0, $142 = 0.0; + var $143 = 0.0, $144 = 0.0, $145 = 0.0, $146 = 0.0, $147 = 0.0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0.0, $25 = 0.0; + var $26 = 0.0, $27 = 0.0, $28 = 0, $29 = 0.0, $3 = 0, $30 = 0.0, $31 = 0, $32 = 0.0, $33 = 0.0, $34 = 0.0, $35 = 0.0, $36 = 0.0, $37 = 0, $38 = 0.0, $39 = 0.0, $4 = 0, $40 = 0.0, $41 = 0.0, $42 = 0.0, $43 = 0; + var $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0; + var $62 = 0, $63 = 0, $64 = 0.0, $65 = 0.0, $66 = 0.0, $67 = 0.0, $68 = 0, $69 = 0.0, $7 = 0, $70 = 0.0, $71 = 0, $72 = 0.0, $73 = 0.0, $74 = 0.0, $75 = 0.0, $76 = 0.0, $77 = 0, $78 = 0.0, $79 = 0.0, $8 = 0; + var $80 = 0.0, $81 = 0.0, $82 = 0.0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0.0, $96 = 0.0, $97 = 0.0, $98 = 0.0; + var $99 = 0.0, $T$0$lcssa = 0, $T$035 = 0, $T$1$lcssa = 0, $T$126 = 0, $T$219 = 0, $T$315 = 0, $exitcond = 0, $i$0$lcssa = 0, $i$036 = 0, $i$1$lcssa = 0, $i$127 = 0, $i$220 = 0, $i$316 = 0, $init$idx = 0, $init$idx$val = 0, $init$idx10$val = 0, $init$idx11 = 0, $init$idx11$val = 0, $init$idx9$val = 0; + var $scevgep = 0, $scevgep48 = 0, $scevgep49 = 0, $scevgep50 = 0, $w$013 = 0, $x0$0$lcssa = 0, $x0$033 = 0, $x0$124 = 0, $x0$217 = 0, $x0$314 = 0, $x1$034 = 0, $x1$1$lcssa = 0, $x1$125 = 0, $x1$218 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = HEAP32[$init>>2]|0; + $1 = $0 >> 1; + $2 = $0 >> 2; + $3 = $0 >> 3; + $4 = $0 << 2; + $$alloca_mul = $4; + $5 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul)|0)+15)&-16)|0;; + $6 = (($5) + ($1<<2)|0); + $$sum = (($1) + ($2))|0; + $7 = (($in) + ($$sum<<2)|0); + $8 = ((($init)) + 8|0); + $9 = HEAP32[$8>>2]|0; + $10 = (($9) + ($1<<2)|0); + $11 = ($3|0)>(0); + if ($11) { + $$sum1 = (($$sum) + 1)|0; + $12 = (($in) + ($$sum1<<2)|0); + $13 = (($3) + -1)|0; + $14 = $13 >>> 1; + $15 = $14 << 1; + $16 = (($1) + -2)|0; + $17 = (($16) - ($15))|0; + $18 = (($$sum) + -4)|0; + $19 = $14 << 2; + $20 = (($18) - ($19))|0; + $T$035 = $10;$i$036 = 0;$x0$033 = $7;$x1$034 = $12; + while(1) { + $21 = ((($x0$033)) + -16|0); + $22 = ((($T$035)) + -8|0); + $23 = ((($x0$033)) + -8|0); + $24 = +HEAPF32[$23>>2]; + $25 = +HEAPF32[$x1$034>>2]; + $26 = $25 + $24; + $27 = +HEAPF32[$21>>2]; + $28 = ((($x1$034)) + 8|0); + $29 = +HEAPF32[$28>>2]; + $30 = $29 + $27; + $31 = ((($T$035)) + -4|0); + $32 = +HEAPF32[$31>>2]; + $33 = $30 * $32; + $34 = +HEAPF32[$22>>2]; + $35 = $34 * $26; + $36 = $35 + $33; + $$sum6 = (($i$036) + ($1))|0; + $37 = (($5) + ($$sum6<<2)|0); + HEAPF32[$37>>2] = $36; + $38 = +HEAPF32[$22>>2]; + $39 = $38 * $30; + $40 = +HEAPF32[$31>>2]; + $41 = $40 * $26; + $42 = $39 - $41; + $43 = $i$036 | 1; + $$sum7 = (($43) + ($1))|0; + $44 = (($5) + ($$sum7<<2)|0); + HEAPF32[$44>>2] = $42; + $45 = ((($x1$034)) + 16|0); + $46 = (($i$036) + 2)|0; + $47 = ($46|0)<($3|0); + if ($47) { + $T$035 = $22;$i$036 = $46;$x0$033 = $21;$x1$034 = $45; + } else { + break; + } + } + $48 = (($15) + 2)|0; + $scevgep49 = (($9) + ($17<<2)|0); + $scevgep50 = (($in) + ($20<<2)|0); + $89 = $17;$T$0$lcssa = $scevgep49;$i$0$lcssa = $48;$x0$0$lcssa = $scevgep50; + } else { + $89 = $1;$T$0$lcssa = $10;$i$0$lcssa = 0;$x0$0$lcssa = $7; + } + $49 = ((($in)) + 4|0); + $50 = (($1) - ($3))|0; + $51 = ($i$0$lcssa|0)<($50|0); + if ($51) { + $52 = (($1) + -1)|0; + $53 = (($52) - ($i$0$lcssa))|0; + $54 = (($53) - ($3))|0; + $55 = $54 >>> 1; + $56 = $55 << 1; + $57 = (($i$0$lcssa) + ($56))|0; + $58 = $55 << 2; + $59 = (($58) + 5)|0; + $60 = (-2 - ($56))|0; + $T$126 = $T$0$lcssa;$i$127 = $i$0$lcssa;$x0$124 = $x0$0$lcssa;$x1$125 = $49; + while(1) { + $61 = ((($T$126)) + -8|0); + $62 = ((($x0$124)) + -16|0); + $63 = ((($x0$124)) + -8|0); + $64 = +HEAPF32[$63>>2]; + $65 = +HEAPF32[$x1$125>>2]; + $66 = $64 - $65; + $67 = +HEAPF32[$62>>2]; + $68 = ((($x1$125)) + 8|0); + $69 = +HEAPF32[$68>>2]; + $70 = $67 - $69; + $71 = ((($T$126)) + -4|0); + $72 = +HEAPF32[$71>>2]; + $73 = $70 * $72; + $74 = +HEAPF32[$61>>2]; + $75 = $74 * $66; + $76 = $75 + $73; + $$sum4 = (($i$127) + ($1))|0; + $77 = (($5) + ($$sum4<<2)|0); + HEAPF32[$77>>2] = $76; + $78 = +HEAPF32[$61>>2]; + $79 = $78 * $70; + $80 = +HEAPF32[$71>>2]; + $81 = $80 * $66; + $82 = $79 - $81; + $83 = $i$127 | 1; + $$sum5 = (($83) + ($1))|0; + $84 = (($5) + ($$sum5<<2)|0); + HEAPF32[$84>>2] = $82; + $85 = ((($x1$125)) + 16|0); + $86 = (($i$127) + 2)|0; + $87 = ($86|0)<($50|0); + if ($87) { + $T$126 = $61;$i$127 = $86;$x0$124 = $62;$x1$125 = $85; + } else { + break; + } + } + $88 = (($57) + 2)|0; + $scevgep = (($in) + ($59<<2)|0); + $$sum51 = (($89) + ($60))|0; + $scevgep48 = (($9) + ($$sum51<<2)|0); + $T$1$lcssa = $scevgep48;$i$1$lcssa = $88;$x1$1$lcssa = $scevgep; + } else { + $T$1$lcssa = $T$0$lcssa;$i$1$lcssa = $i$0$lcssa;$x1$1$lcssa = $49; + } + $90 = ($i$1$lcssa|0)<($1|0); + if ($90) { + $91 = (($in) + ($0<<2)|0); + $T$219 = $T$1$lcssa;$i$220 = $i$1$lcssa;$x0$217 = $91;$x1$218 = $x1$1$lcssa; + while(1) { + $92 = ((($T$219)) + -8|0); + $93 = ((($x0$217)) + -16|0); + $94 = ((($x0$217)) + -8|0); + $95 = +HEAPF32[$94>>2]; + $96 = -$95; + $97 = +HEAPF32[$x1$218>>2]; + $98 = $96 - $97; + $99 = +HEAPF32[$93>>2]; + $100 = -$99; + $101 = ((($x1$218)) + 8|0); + $102 = +HEAPF32[$101>>2]; + $103 = $100 - $102; + $104 = ((($T$219)) + -4|0); + $105 = +HEAPF32[$104>>2]; + $106 = $103 * $105; + $107 = +HEAPF32[$92>>2]; + $108 = $107 * $98; + $109 = $108 + $106; + $$sum2 = (($i$220) + ($1))|0; + $110 = (($5) + ($$sum2<<2)|0); + HEAPF32[$110>>2] = $109; + $111 = +HEAPF32[$92>>2]; + $112 = $111 * $103; + $113 = +HEAPF32[$104>>2]; + $114 = $113 * $98; + $115 = $112 - $114; + $116 = $i$220 | 1; + $$sum3 = (($116) + ($1))|0; + $117 = (($5) + ($$sum3<<2)|0); + HEAPF32[$117>>2] = $115; + $118 = ((($x1$218)) + 16|0); + $119 = (($i$220) + 2)|0; + $120 = ($119|0)<($1|0); + if ($120) { + $T$219 = $92;$i$220 = $119;$x0$217 = $93;$x1$218 = $118; + } else { + break; + } + } + } + $init$idx = ((($init)) + 4|0); + $init$idx$val = HEAP32[$init$idx>>2]|0; + _mdct_butterflies($init$idx$val,$9,$6,$1); + $init$idx9$val = HEAP32[$init>>2]|0; + $init$idx10$val = HEAP32[$8>>2]|0; + $init$idx11 = ((($init)) + 12|0); + $init$idx11$val = HEAP32[$init$idx11>>2]|0; + _mdct_bitreverse($init$idx9$val,$init$idx10$val,$init$idx11$val,$5); + $121 = ($2|0)>(0); + if (!($121)) { + STACKTOP = sp;return; + } + $122 = (($out) + ($1<<2)|0); + $123 = HEAP32[$8>>2]|0; + $124 = (($123) + ($1<<2)|0); + $125 = ((($init)) + 16|0); + $T$315 = $124;$i$316 = 0;$w$013 = $5;$x0$314 = $122; + while(1) { + $126 = ((($x0$314)) + -4|0); + $127 = +HEAPF32[$w$013>>2]; + $128 = +HEAPF32[$T$315>>2]; + $129 = $128 * $127; + $130 = ((($w$013)) + 4|0); + $131 = +HEAPF32[$130>>2]; + $132 = ((($T$315)) + 4|0); + $133 = +HEAPF32[$132>>2]; + $134 = $133 * $131; + $135 = $134 + $129; + $136 = +HEAPF32[$125>>2]; + $137 = $135 * $136; + $138 = (($out) + ($i$316<<2)|0); + HEAPF32[$138>>2] = $137; + $139 = +HEAPF32[$w$013>>2]; + $140 = +HEAPF32[$132>>2]; + $141 = $140 * $139; + $142 = +HEAPF32[$130>>2]; + $143 = +HEAPF32[$T$315>>2]; + $144 = $143 * $142; + $145 = $141 - $144; + $146 = +HEAPF32[$125>>2]; + $147 = $145 * $146; + HEAPF32[$126>>2] = $147; + $148 = ((($w$013)) + 8|0); + $149 = ((($T$315)) + 8|0); + $150 = (($i$316) + 1)|0; + $exitcond = ($150|0)==($2|0); + if ($exitcond) { + break; + } else { + $T$315 = $149;$i$316 = $150;$w$013 = $148;$x0$314 = $126; + } + } + STACKTOP = sp;return; +} +function _mdct_butterflies($init$0$1$val,$init$0$2$val,$x,$points) { + $init$0$1$val = $init$0$1$val|0; + $init$0$2$val = $init$0$2$val|0; + $x = $x|0; + $points = $points|0; + var $$0$i = 0, $$0$i5 = 0, $$sum = 0, $$sum$i = 0, $$sum$i1 = 0, $$sum1 = 0, $$sum1$i = 0, $$sum1$i2 = 0, $$sum10 = 0, $$sum11 = 0, $$sum12 = 0, $$sum13 = 0, $$sum14 = 0, $$sum15 = 0, $$sum16 = 0, $$sum17 = 0, $$sum18 = 0, $$sum19 = 0, $$sum2 = 0, $$sum2$i = 0; + var $$sum20 = 0, $$sum21 = 0, $$sum22 = 0, $$sum23 = 0, $$sum24 = 0, $$sum25 = 0, $$sum26 = 0, $$sum27 = 0, $$sum28 = 0, $$sum29 = 0, $$sum3 = 0, $$sum3$i = 0, $$sum30 = 0, $$sum31 = 0, $$sum32 = 0, $$sum4 = 0, $$sum45$i = 0, $$sum5 = 0, $$sum6 = 0, $$sum6$i = 0; + var $$sum7 = 0, $$sum7$i = 0, $$sum8 = 0, $$sum8$i = 0, $$sum9 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0.0, $101 = 0.0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0.0, $110 = 0; + var $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0.0, $119 = 0, $12 = 0, $120 = 0.0, $121 = 0.0, $122 = 0, $123 = 0.0, $124 = 0, $125 = 0.0, $126 = 0.0, $127 = 0.0, $128 = 0.0, $129 = 0.0; + var $13 = 0.0, $130 = 0, $131 = 0.0, $132 = 0.0, $133 = 0.0, $134 = 0.0, $135 = 0.0, $136 = 0.0, $137 = 0.0, $138 = 0.0, $139 = 0.0, $14 = 0.0, $140 = 0.0, $141 = 0, $142 = 0, $143 = 0.0, $144 = 0, $145 = 0.0, $146 = 0.0, $147 = 0; + var $148 = 0.0, $149 = 0, $15 = 0.0, $150 = 0.0, $151 = 0.0, $152 = 0.0, $153 = 0.0, $154 = 0.0, $155 = 0, $156 = 0.0, $157 = 0.0, $158 = 0.0, $159 = 0.0, $16 = 0.0, $160 = 0.0, $161 = 0.0, $162 = 0.0, $163 = 0.0, $164 = 0.0, $165 = 0.0; + var $166 = 0, $167 = 0, $168 = 0.0, $169 = 0, $17 = 0.0, $170 = 0.0, $171 = 0.0, $172 = 0, $173 = 0.0, $174 = 0, $175 = 0.0, $176 = 0.0, $177 = 0.0, $178 = 0.0, $179 = 0.0, $18 = 0, $180 = 0, $181 = 0.0, $182 = 0.0, $183 = 0.0; + var $184 = 0.0, $185 = 0.0, $186 = 0.0, $187 = 0.0, $188 = 0.0, $189 = 0.0, $19 = 0.0, $190 = 0.0, $191 = 0, $192 = 0.0, $193 = 0.0, $194 = 0.0, $195 = 0, $196 = 0.0, $197 = 0, $198 = 0.0, $199 = 0.0, $2 = 0, $20 = 0.0, $200 = 0.0; + var $201 = 0.0, $202 = 0.0, $203 = 0, $204 = 0.0, $205 = 0.0, $206 = 0.0, $207 = 0.0, $208 = 0.0, $209 = 0.0, $21 = 0.0, $210 = 0.0, $211 = 0.0, $212 = 0.0, $213 = 0.0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0; + var $22 = 0.0, $220 = 0, $221 = 0, $222 = 0, $223 = 0.0, $224 = 0, $225 = 0.0, $226 = 0.0, $227 = 0, $228 = 0.0, $229 = 0, $23 = 0.0, $230 = 0.0, $231 = 0.0, $232 = 0.0, $233 = 0.0, $234 = 0, $235 = 0.0, $236 = 0, $237 = 0.0; + var $238 = 0.0, $239 = 0, $24 = 0.0, $240 = 0.0, $241 = 0, $242 = 0.0, $243 = 0.0, $244 = 0.0, $245 = 0.0, $246 = 0.0, $247 = 0.0, $248 = 0.0, $249 = 0.0, $25 = 0.0, $250 = 0.0, $251 = 0.0, $252 = 0, $253 = 0.0, $254 = 0, $255 = 0.0; + var $256 = 0.0, $257 = 0, $258 = 0.0, $259 = 0, $26 = 0.0, $260 = 0.0, $261 = 0.0, $262 = 0.0, $263 = 0.0, $264 = 0.0, $265 = 0.0, $266 = 0.0, $267 = 0.0, $268 = 0, $269 = 0.0, $27 = 0.0, $270 = 0, $271 = 0.0, $272 = 0.0, $273 = 0; + var $274 = 0.0, $275 = 0, $276 = 0.0, $277 = 0.0, $278 = 0.0, $279 = 0.0, $28 = 0.0, $280 = 0.0, $281 = 0.0, $282 = 0.0, $283 = 0.0, $284 = 0.0, $285 = 0.0, $286 = 0, $287 = 0.0, $288 = 0, $289 = 0.0, $29 = 0, $290 = 0.0, $291 = 0; + var $292 = 0.0, $293 = 0, $294 = 0.0, $295 = 0.0, $296 = 0.0, $297 = 0.0, $298 = 0, $299 = 0.0, $3 = 0, $30 = 0.0, $300 = 0, $301 = 0.0, $302 = 0.0, $303 = 0, $304 = 0.0, $305 = 0, $306 = 0.0, $307 = 0.0, $308 = 0.0, $309 = 0.0; + var $31 = 0, $310 = 0.0, $311 = 0.0, $312 = 0.0, $313 = 0.0, $314 = 0.0, $315 = 0.0, $316 = 0, $317 = 0.0, $318 = 0, $319 = 0.0, $32 = 0.0, $320 = 0.0, $321 = 0, $322 = 0.0, $323 = 0, $324 = 0.0, $325 = 0.0, $326 = 0.0, $327 = 0.0; + var $328 = 0.0, $329 = 0.0, $33 = 0.0, $330 = 0.0, $331 = 0.0, $332 = 0.0, $333 = 0, $334 = 0.0, $335 = 0.0, $336 = 0, $337 = 0.0, $338 = 0, $339 = 0.0, $34 = 0, $340 = 0.0, $341 = 0.0, $342 = 0.0, $343 = 0.0, $344 = 0.0, $345 = 0.0; + var $346 = 0.0, $347 = 0.0, $348 = 0.0, $349 = 0.0, $35 = 0.0, $350 = 0.0, $351 = 0.0, $352 = 0.0, $353 = 0.0, $354 = 0.0, $355 = 0.0, $356 = 0.0, $357 = 0.0, $358 = 0.0, $359 = 0.0, $36 = 0, $360 = 0.0, $361 = 0.0, $362 = 0.0, $363 = 0.0; + var $364 = 0.0, $365 = 0.0, $366 = 0.0, $367 = 0.0, $368 = 0.0, $369 = 0.0, $37 = 0.0, $370 = 0.0, $371 = 0.0, $372 = 0.0, $373 = 0.0, $374 = 0.0, $375 = 0.0, $376 = 0.0, $377 = 0.0, $378 = 0.0, $379 = 0.0, $38 = 0.0, $380 = 0.0, $381 = 0.0; + var $382 = 0.0, $383 = 0.0, $384 = 0.0, $385 = 0.0, $386 = 0.0, $387 = 0.0, $388 = 0.0, $389 = 0.0, $39 = 0.0, $390 = 0.0, $391 = 0.0, $392 = 0.0, $393 = 0.0, $394 = 0.0, $395 = 0.0, $396 = 0.0, $397 = 0.0, $398 = 0.0, $399 = 0.0, $4 = 0; + var $40 = 0.0, $400 = 0.0, $401 = 0.0, $402 = 0.0, $403 = 0.0, $404 = 0.0, $405 = 0.0, $406 = 0.0, $407 = 0.0, $408 = 0.0, $409 = 0.0, $41 = 0.0, $410 = 0.0, $411 = 0.0, $412 = 0.0, $413 = 0.0, $414 = 0.0, $415 = 0.0, $416 = 0.0, $417 = 0.0; + var $418 = 0.0, $419 = 0.0, $42 = 0, $420 = 0.0, $421 = 0.0, $422 = 0.0, $423 = 0.0, $424 = 0.0, $425 = 0.0, $426 = 0.0, $427 = 0.0, $428 = 0.0, $429 = 0.0, $43 = 0.0, $430 = 0.0, $431 = 0.0, $432 = 0.0, $433 = 0.0, $434 = 0.0, $435 = 0.0; + var $436 = 0.0, $437 = 0.0, $438 = 0.0, $439 = 0.0, $44 = 0.0, $440 = 0.0, $441 = 0.0, $442 = 0.0, $443 = 0.0, $444 = 0.0, $445 = 0.0, $446 = 0.0, $447 = 0.0, $448 = 0.0, $449 = 0.0, $45 = 0, $450 = 0.0, $451 = 0.0, $452 = 0.0, $453 = 0.0; + var $454 = 0.0, $455 = 0.0, $456 = 0.0, $457 = 0.0, $458 = 0.0, $459 = 0.0, $46 = 0.0, $460 = 0.0, $461 = 0.0, $462 = 0.0, $463 = 0.0, $464 = 0.0, $465 = 0.0, $466 = 0.0, $467 = 0.0, $468 = 0.0, $469 = 0.0, $47 = 0.0, $470 = 0.0, $471 = 0.0; + var $472 = 0.0, $473 = 0.0, $474 = 0.0, $475 = 0.0, $476 = 0.0, $477 = 0.0, $478 = 0.0, $479 = 0.0, $48 = 0.0, $480 = 0.0, $481 = 0, $482 = 0, $49 = 0.0, $5 = 0, $50 = 0.0, $51 = 0.0, $52 = 0.0, $53 = 0.0, $54 = 0, $55 = 0.0; + var $56 = 0, $57 = 0.0, $58 = 0.0, $59 = 0, $6 = 0.0, $60 = 0.0, $61 = 0, $62 = 0.0, $63 = 0.0, $64 = 0.0, $65 = 0.0, $66 = 0.0, $67 = 0, $68 = 0.0, $69 = 0.0, $7 = 0, $70 = 0, $71 = 0.0, $72 = 0.0, $73 = 0.0; + var $74 = 0.0, $75 = 0.0, $76 = 0.0, $77 = 0.0, $78 = 0.0, $79 = 0.0, $8 = 0.0, $80 = 0.0, $81 = 0.0, $82 = 0, $83 = 0.0, $84 = 0, $85 = 0.0, $86 = 0.0, $87 = 0.0, $88 = 0.0, $89 = 0.0, $9 = 0.0, $90 = 0, $91 = 0.0; + var $92 = 0.0, $93 = 0, $94 = 0.0, $95 = 0.0, $96 = 0.0, $97 = 0.0, $98 = 0.0, $99 = 0.0, $exitcond = 0, $i$038 = 0, $j$035 = 0, $j$134 = 0, $x1$0$i = 0, $x1$0$i4 = 0, $x2$0$i = 0, $x2$0$i3 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = (($init$0$1$val) + -6)|0; + $1 = ($init$0$1$val|0)>(6); + if ($1) { + $$sum$i = (($points) + -8)|0; + $2 = (($x) + ($$sum$i<<2)|0); + $3 = $points >> 1; + $$sum1$i = (($3) + -8)|0; + $4 = (($x) + ($$sum1$i<<2)|0); + $$0$i = $init$0$2$val;$x1$0$i = $2;$x2$0$i = $4; + while(1) { + $5 = ((($x1$0$i)) + 24|0); + $6 = +HEAPF32[$5>>2]; + $7 = ((($x2$0$i)) + 24|0); + $8 = +HEAPF32[$7>>2]; + $9 = $6 - $8; + $10 = ((($x1$0$i)) + 28|0); + $11 = +HEAPF32[$10>>2]; + $12 = ((($x2$0$i)) + 28|0); + $13 = +HEAPF32[$12>>2]; + $14 = $11 - $13; + $15 = $8 + $6; + HEAPF32[$5>>2] = $15; + $16 = +HEAPF32[$12>>2]; + $17 = $16 + $11; + HEAPF32[$10>>2] = $17; + $18 = ((($$0$i)) + 4|0); + $19 = +HEAPF32[$18>>2]; + $20 = $19 * $14; + $21 = +HEAPF32[$$0$i>>2]; + $22 = $21 * $9; + $23 = $22 + $20; + HEAPF32[$7>>2] = $23; + $24 = +HEAPF32[$$0$i>>2]; + $25 = $24 * $14; + $26 = +HEAPF32[$18>>2]; + $27 = $26 * $9; + $28 = $25 - $27; + HEAPF32[$12>>2] = $28; + $29 = ((($x1$0$i)) + 16|0); + $30 = +HEAPF32[$29>>2]; + $31 = ((($x2$0$i)) + 16|0); + $32 = +HEAPF32[$31>>2]; + $33 = $30 - $32; + $34 = ((($x1$0$i)) + 20|0); + $35 = +HEAPF32[$34>>2]; + $36 = ((($x2$0$i)) + 20|0); + $37 = +HEAPF32[$36>>2]; + $38 = $35 - $37; + $39 = $32 + $30; + HEAPF32[$29>>2] = $39; + $40 = +HEAPF32[$36>>2]; + $41 = $40 + $35; + HEAPF32[$34>>2] = $41; + $42 = ((($$0$i)) + 20|0); + $43 = +HEAPF32[$42>>2]; + $44 = $43 * $38; + $45 = ((($$0$i)) + 16|0); + $46 = +HEAPF32[$45>>2]; + $47 = $46 * $33; + $48 = $47 + $44; + HEAPF32[$31>>2] = $48; + $49 = +HEAPF32[$45>>2]; + $50 = $49 * $38; + $51 = +HEAPF32[$42>>2]; + $52 = $51 * $33; + $53 = $50 - $52; + HEAPF32[$36>>2] = $53; + $54 = ((($x1$0$i)) + 8|0); + $55 = +HEAPF32[$54>>2]; + $56 = ((($x2$0$i)) + 8|0); + $57 = +HEAPF32[$56>>2]; + $58 = $55 - $57; + $59 = ((($x1$0$i)) + 12|0); + $60 = +HEAPF32[$59>>2]; + $61 = ((($x2$0$i)) + 12|0); + $62 = +HEAPF32[$61>>2]; + $63 = $60 - $62; + $64 = $57 + $55; + HEAPF32[$54>>2] = $64; + $65 = +HEAPF32[$61>>2]; + $66 = $65 + $60; + HEAPF32[$59>>2] = $66; + $67 = ((($$0$i)) + 36|0); + $68 = +HEAPF32[$67>>2]; + $69 = $68 * $63; + $70 = ((($$0$i)) + 32|0); + $71 = +HEAPF32[$70>>2]; + $72 = $71 * $58; + $73 = $72 + $69; + HEAPF32[$56>>2] = $73; + $74 = +HEAPF32[$70>>2]; + $75 = $74 * $63; + $76 = +HEAPF32[$67>>2]; + $77 = $76 * $58; + $78 = $75 - $77; + HEAPF32[$61>>2] = $78; + $79 = +HEAPF32[$x1$0$i>>2]; + $80 = +HEAPF32[$x2$0$i>>2]; + $81 = $79 - $80; + $82 = ((($x1$0$i)) + 4|0); + $83 = +HEAPF32[$82>>2]; + $84 = ((($x2$0$i)) + 4|0); + $85 = +HEAPF32[$84>>2]; + $86 = $83 - $85; + $87 = $80 + $79; + HEAPF32[$x1$0$i>>2] = $87; + $88 = +HEAPF32[$84>>2]; + $89 = $88 + $83; + HEAPF32[$82>>2] = $89; + $90 = ((($$0$i)) + 52|0); + $91 = +HEAPF32[$90>>2]; + $92 = $91 * $86; + $93 = ((($$0$i)) + 48|0); + $94 = +HEAPF32[$93>>2]; + $95 = $94 * $81; + $96 = $95 + $92; + HEAPF32[$x2$0$i>>2] = $96; + $97 = +HEAPF32[$93>>2]; + $98 = $97 * $86; + $99 = +HEAPF32[$90>>2]; + $100 = $99 * $81; + $101 = $98 - $100; + HEAPF32[$84>>2] = $101; + $102 = ((($x1$0$i)) + -32|0); + $103 = ((($x2$0$i)) + -32|0); + $104 = ((($$0$i)) + 64|0); + $105 = ($103>>>0)<($x>>>0); + if ($105) { + break; + } else { + $$0$i = $104;$x1$0$i = $102;$x2$0$i = $103; + } + } + } + $106 = ($0|0)>(1); + if ($106) { + $i$038 = 1; + while(1) { + $107 = 1 << $i$038; + $108 = ($i$038|0)==(31); + if (!($108)) { + $109 = $points >> $i$038; + $110 = 4 << $i$038; + $$sum$i1 = (($109) + -8)|0; + $111 = $109 >> 1; + $$sum1$i2 = (($111) + -8)|0; + $$sum2$i = (($110) + 1)|0; + $$sum3$i = $110 << 1; + $$sum45$i = $$sum3$i | 1; + $$sum6$i = ($110*3)|0; + $$sum7$i = (($$sum6$i) + 1)|0; + $$sum8$i = $110 << 2; + $j$035 = 0; + while(1) { + $113 = Math_imul($j$035, $109)|0; + $114 = (($x) + ($113<<2)|0); + $$sum = (($$sum$i1) + ($113))|0; + $115 = (($x) + ($$sum<<2)|0); + $$sum32 = (($$sum1$i2) + ($113))|0; + $116 = (($x) + ($$sum32<<2)|0); + $$0$i5 = $init$0$2$val;$x1$0$i4 = $115;$x2$0$i3 = $116; + while(1) { + $117 = ((($x1$0$i4)) + 24|0); + $118 = +HEAPF32[$117>>2]; + $119 = ((($x2$0$i3)) + 24|0); + $120 = +HEAPF32[$119>>2]; + $121 = $118 - $120; + $122 = ((($x1$0$i4)) + 28|0); + $123 = +HEAPF32[$122>>2]; + $124 = ((($x2$0$i3)) + 28|0); + $125 = +HEAPF32[$124>>2]; + $126 = $123 - $125; + $127 = $120 + $118; + HEAPF32[$117>>2] = $127; + $128 = +HEAPF32[$124>>2]; + $129 = $128 + $123; + HEAPF32[$122>>2] = $129; + $130 = ((($$0$i5)) + 4|0); + $131 = +HEAPF32[$130>>2]; + $132 = $131 * $126; + $133 = +HEAPF32[$$0$i5>>2]; + $134 = $133 * $121; + $135 = $134 + $132; + HEAPF32[$119>>2] = $135; + $136 = +HEAPF32[$$0$i5>>2]; + $137 = $136 * $126; + $138 = +HEAPF32[$130>>2]; + $139 = $138 * $121; + $140 = $137 - $139; + HEAPF32[$124>>2] = $140; + $141 = (($$0$i5) + ($110<<2)|0); + $142 = ((($x1$0$i4)) + 16|0); + $143 = +HEAPF32[$142>>2]; + $144 = ((($x2$0$i3)) + 16|0); + $145 = +HEAPF32[$144>>2]; + $146 = $143 - $145; + $147 = ((($x1$0$i4)) + 20|0); + $148 = +HEAPF32[$147>>2]; + $149 = ((($x2$0$i3)) + 20|0); + $150 = +HEAPF32[$149>>2]; + $151 = $148 - $150; + $152 = $145 + $143; + HEAPF32[$142>>2] = $152; + $153 = +HEAPF32[$149>>2]; + $154 = $153 + $148; + HEAPF32[$147>>2] = $154; + $155 = (($$0$i5) + ($$sum2$i<<2)|0); + $156 = +HEAPF32[$155>>2]; + $157 = $156 * $151; + $158 = +HEAPF32[$141>>2]; + $159 = $158 * $146; + $160 = $159 + $157; + HEAPF32[$144>>2] = $160; + $161 = +HEAPF32[$141>>2]; + $162 = $161 * $151; + $163 = +HEAPF32[$155>>2]; + $164 = $163 * $146; + $165 = $162 - $164; + HEAPF32[$149>>2] = $165; + $166 = (($$0$i5) + ($$sum3$i<<2)|0); + $167 = ((($x1$0$i4)) + 8|0); + $168 = +HEAPF32[$167>>2]; + $169 = ((($x2$0$i3)) + 8|0); + $170 = +HEAPF32[$169>>2]; + $171 = $168 - $170; + $172 = ((($x1$0$i4)) + 12|0); + $173 = +HEAPF32[$172>>2]; + $174 = ((($x2$0$i3)) + 12|0); + $175 = +HEAPF32[$174>>2]; + $176 = $173 - $175; + $177 = $170 + $168; + HEAPF32[$167>>2] = $177; + $178 = +HEAPF32[$174>>2]; + $179 = $178 + $173; + HEAPF32[$172>>2] = $179; + $180 = (($$0$i5) + ($$sum45$i<<2)|0); + $181 = +HEAPF32[$180>>2]; + $182 = $181 * $176; + $183 = +HEAPF32[$166>>2]; + $184 = $183 * $171; + $185 = $184 + $182; + HEAPF32[$169>>2] = $185; + $186 = +HEAPF32[$166>>2]; + $187 = $186 * $176; + $188 = +HEAPF32[$180>>2]; + $189 = $188 * $171; + $190 = $187 - $189; + HEAPF32[$174>>2] = $190; + $191 = (($$0$i5) + ($$sum6$i<<2)|0); + $192 = +HEAPF32[$x1$0$i4>>2]; + $193 = +HEAPF32[$x2$0$i3>>2]; + $194 = $192 - $193; + $195 = ((($x1$0$i4)) + 4|0); + $196 = +HEAPF32[$195>>2]; + $197 = ((($x2$0$i3)) + 4|0); + $198 = +HEAPF32[$197>>2]; + $199 = $196 - $198; + $200 = $193 + $192; + HEAPF32[$x1$0$i4>>2] = $200; + $201 = +HEAPF32[$197>>2]; + $202 = $201 + $196; + HEAPF32[$195>>2] = $202; + $203 = (($$0$i5) + ($$sum7$i<<2)|0); + $204 = +HEAPF32[$203>>2]; + $205 = $204 * $199; + $206 = +HEAPF32[$191>>2]; + $207 = $206 * $194; + $208 = $207 + $205; + HEAPF32[$x2$0$i3>>2] = $208; + $209 = +HEAPF32[$191>>2]; + $210 = $209 * $199; + $211 = +HEAPF32[$203>>2]; + $212 = $211 * $194; + $213 = $210 - $212; + HEAPF32[$197>>2] = $213; + $214 = (($$0$i5) + ($$sum8$i<<2)|0); + $215 = ((($x1$0$i4)) + -32|0); + $216 = ((($x2$0$i3)) + -32|0); + $217 = ($216>>>0)<($114>>>0); + if ($217) { + break; + } else { + $$0$i5 = $214;$x1$0$i4 = $215;$x2$0$i3 = $216; + } + } + $218 = (($j$035) + 1)|0; + $219 = ($218|0)<($107|0); + if ($219) { + $j$035 = $218; + } else { + break; + } + } + } + $220 = (($i$038) + 1)|0; + $exitcond = ($220|0)==($0|0); + if ($exitcond) { + break; + } else { + $i$038 = $220; + } + } + } + $112 = ($points|0)>(0); + if ($112) { + $j$134 = 0; + } else { + return; + } + while(1) { + $221 = (($x) + ($j$134<<2)|0); + $$sum1 = $j$134 | 30; + $222 = (($x) + ($$sum1<<2)|0); + $223 = +HEAPF32[$222>>2]; + $$sum2 = $j$134 | 14; + $224 = (($x) + ($$sum2<<2)|0); + $225 = +HEAPF32[$224>>2]; + $226 = $223 - $225; + $$sum3 = $j$134 | 31; + $227 = (($x) + ($$sum3<<2)|0); + $228 = +HEAPF32[$227>>2]; + $$sum4 = $j$134 | 15; + $229 = (($x) + ($$sum4<<2)|0); + $230 = +HEAPF32[$229>>2]; + $231 = $228 - $230; + $232 = $225 + $223; + HEAPF32[$222>>2] = $232; + $233 = $230 + $228; + HEAPF32[$227>>2] = $233; + HEAPF32[$224>>2] = $226; + HEAPF32[$229>>2] = $231; + $$sum5 = $j$134 | 28; + $234 = (($x) + ($$sum5<<2)|0); + $235 = +HEAPF32[$234>>2]; + $$sum6 = $j$134 | 12; + $236 = (($x) + ($$sum6<<2)|0); + $237 = +HEAPF32[$236>>2]; + $238 = $235 - $237; + $$sum7 = $j$134 | 29; + $239 = (($x) + ($$sum7<<2)|0); + $240 = +HEAPF32[$239>>2]; + $$sum8 = $j$134 | 13; + $241 = (($x) + ($$sum8<<2)|0); + $242 = +HEAPF32[$241>>2]; + $243 = $240 - $242; + $244 = $237 + $235; + HEAPF32[$234>>2] = $244; + $245 = $242 + $240; + HEAPF32[$239>>2] = $245; + $246 = $238 * 0.92387950420379638; + $247 = $243 * 0.38268342614173889; + $248 = $246 - $247; + HEAPF32[$236>>2] = $248; + $249 = $238 * 0.38268342614173889; + $250 = $243 * 0.92387950420379638; + $251 = $250 + $249; + HEAPF32[$241>>2] = $251; + $$sum9 = $j$134 | 26; + $252 = (($x) + ($$sum9<<2)|0); + $253 = +HEAPF32[$252>>2]; + $$sum10 = $j$134 | 10; + $254 = (($x) + ($$sum10<<2)|0); + $255 = +HEAPF32[$254>>2]; + $256 = $253 - $255; + $$sum11 = $j$134 | 27; + $257 = (($x) + ($$sum11<<2)|0); + $258 = +HEAPF32[$257>>2]; + $$sum12 = $j$134 | 11; + $259 = (($x) + ($$sum12<<2)|0); + $260 = +HEAPF32[$259>>2]; + $261 = $258 - $260; + $262 = $255 + $253; + HEAPF32[$252>>2] = $262; + $263 = $260 + $258; + HEAPF32[$257>>2] = $263; + $264 = $256 - $261; + $265 = $264 * 0.70710676908493042; + HEAPF32[$254>>2] = $265; + $266 = $261 + $256; + $267 = $266 * 0.70710676908493042; + HEAPF32[$259>>2] = $267; + $$sum13 = $j$134 | 24; + $268 = (($x) + ($$sum13<<2)|0); + $269 = +HEAPF32[$268>>2]; + $$sum14 = $j$134 | 8; + $270 = (($x) + ($$sum14<<2)|0); + $271 = +HEAPF32[$270>>2]; + $272 = $269 - $271; + $$sum15 = $j$134 | 25; + $273 = (($x) + ($$sum15<<2)|0); + $274 = +HEAPF32[$273>>2]; + $$sum16 = $j$134 | 9; + $275 = (($x) + ($$sum16<<2)|0); + $276 = +HEAPF32[$275>>2]; + $277 = $274 - $276; + $278 = $271 + $269; + HEAPF32[$268>>2] = $278; + $279 = $276 + $274; + HEAPF32[$273>>2] = $279; + $280 = $272 * 0.38268342614173889; + $281 = $277 * 0.92387950420379638; + $282 = $280 - $281; + $283 = $277 * 0.38268342614173889; + $284 = $272 * 0.92387950420379638; + $285 = $283 + $284; + $$sum17 = $j$134 | 22; + $286 = (($x) + ($$sum17<<2)|0); + $287 = +HEAPF32[$286>>2]; + $$sum18 = $j$134 | 6; + $288 = (($x) + ($$sum18<<2)|0); + $289 = +HEAPF32[$288>>2]; + $290 = $287 - $289; + $$sum19 = $j$134 | 7; + $291 = (($x) + ($$sum19<<2)|0); + $292 = +HEAPF32[$291>>2]; + $$sum20 = $j$134 | 23; + $293 = (($x) + ($$sum20<<2)|0); + $294 = +HEAPF32[$293>>2]; + $295 = $292 - $294; + $296 = $289 + $287; + HEAPF32[$286>>2] = $296; + $297 = $294 + $292; + HEAPF32[$293>>2] = $297; + HEAPF32[$288>>2] = $295; + HEAPF32[$291>>2] = $290; + $$sum21 = $j$134 | 4; + $298 = (($x) + ($$sum21<<2)|0); + $299 = +HEAPF32[$298>>2]; + $$sum22 = $j$134 | 20; + $300 = (($x) + ($$sum22<<2)|0); + $301 = +HEAPF32[$300>>2]; + $302 = $299 - $301; + $$sum23 = $j$134 | 5; + $303 = (($x) + ($$sum23<<2)|0); + $304 = +HEAPF32[$303>>2]; + $$sum24 = $j$134 | 21; + $305 = (($x) + ($$sum24<<2)|0); + $306 = +HEAPF32[$305>>2]; + $307 = $304 - $306; + $308 = $301 + $299; + HEAPF32[$300>>2] = $308; + $309 = $306 + $304; + HEAPF32[$305>>2] = $309; + $310 = $307 * 0.92387950420379638; + $311 = $302 * 0.38268342614173889; + $312 = $310 + $311; + $313 = $307 * 0.38268342614173889; + $314 = $302 * 0.92387950420379638; + $315 = $313 - $314; + $$sum25 = $j$134 | 2; + $316 = (($x) + ($$sum25<<2)|0); + $317 = +HEAPF32[$316>>2]; + $$sum26 = $j$134 | 18; + $318 = (($x) + ($$sum26<<2)|0); + $319 = +HEAPF32[$318>>2]; + $320 = $317 - $319; + $$sum27 = $j$134 | 3; + $321 = (($x) + ($$sum27<<2)|0); + $322 = +HEAPF32[$321>>2]; + $$sum28 = $j$134 | 19; + $323 = (($x) + ($$sum28<<2)|0); + $324 = +HEAPF32[$323>>2]; + $325 = $322 - $324; + $326 = $319 + $317; + HEAPF32[$318>>2] = $326; + $327 = $324 + $322; + HEAPF32[$323>>2] = $327; + $328 = $325 + $320; + $329 = $328 * 0.70710676908493042; + $330 = $325 - $320; + $331 = $330 * 0.70710676908493042; + $332 = +HEAPF32[$221>>2]; + $$sum29 = $j$134 | 16; + $333 = (($x) + ($$sum29<<2)|0); + $334 = +HEAPF32[$333>>2]; + $335 = $332 - $334; + $$sum30 = $j$134 | 1; + $336 = (($x) + ($$sum30<<2)|0); + $337 = +HEAPF32[$336>>2]; + $$sum31 = $j$134 | 17; + $338 = (($x) + ($$sum31<<2)|0); + $339 = +HEAPF32[$338>>2]; + $340 = $337 - $339; + $341 = $334 + $332; + HEAPF32[$333>>2] = $341; + $342 = $339 + $337; + HEAPF32[$338>>2] = $342; + $343 = $340 * 0.38268342614173889; + $344 = $335 * 0.92387950420379638; + $345 = $343 + $344; + $346 = $340 * 0.92387950420379638; + $347 = $335 * 0.38268342614173889; + $348 = $346 - $347; + $349 = $348 - $285; + $350 = $345 - $282; + $351 = $345 + $282; + $352 = $348 + $285; + $353 = $350 + $349; + $354 = $349 - $350; + $355 = +HEAPF32[$259>>2]; + $356 = $331 - $355; + $357 = +HEAPF32[$254>>2]; + $358 = $357 - $329; + $359 = $357 + $329; + $360 = $355 + $331; + $361 = +HEAPF32[$236>>2]; + $362 = $361 - $312; + $363 = +HEAPF32[$241>>2]; + $364 = $363 - $315; + $365 = $361 + $312; + $366 = $363 + $315; + $367 = $362 - $364; + $368 = $364 + $362; + $369 = +HEAPF32[$224>>2]; + $370 = $369 - $295; + $371 = +HEAPF32[$229>>2]; + $372 = $371 - $290; + $373 = $295 + $369; + $374 = $290 + $371; + $375 = $370 + $356; + $376 = $370 - $356; + $377 = $367 + $353; + $378 = $377 * 0.70710676908493042; + $379 = $367 - $353; + $380 = $379 * 0.70710676908493042; + $381 = $378 + $375; + HEAPF32[$288>>2] = $381; + $382 = $375 - $378; + HEAPF32[$298>>2] = $382; + $383 = $368 - $354; + $384 = $383 * 0.70710676908493042; + $385 = $372 - $358; + $386 = $384 + $376; + HEAPF32[$221>>2] = $386; + $387 = $376 - $384; + HEAPF32[$316>>2] = $387; + $388 = $368 + $354; + $389 = $388 * 0.70710676908493042; + $390 = $372 + $358; + $391 = $385 + $380; + HEAPF32[$321>>2] = $391; + $392 = $385 - $380; + HEAPF32[$336>>2] = $392; + $393 = $390 + $389; + HEAPF32[$291>>2] = $393; + $394 = $390 - $389; + HEAPF32[$303>>2] = $394; + $395 = $373 + $359; + $396 = $373 - $359; + $397 = $351 + $365; + $398 = $365 - $351; + $399 = $395 + $397; + HEAPF32[$224>>2] = $399; + $400 = $395 - $397; + HEAPF32[$236>>2] = $400; + $401 = $366 - $352; + $402 = $374 - $360; + $403 = $396 + $401; + HEAPF32[$270>>2] = $403; + $404 = $396 - $401; + HEAPF32[$254>>2] = $404; + $405 = $366 + $352; + $406 = $374 + $360; + $407 = $402 + $398; + HEAPF32[$259>>2] = $407; + $408 = $402 - $398; + HEAPF32[$275>>2] = $408; + $409 = $406 + $405; + HEAPF32[$229>>2] = $409; + $410 = $406 - $405; + HEAPF32[$241>>2] = $410; + $411 = +HEAPF32[$273>>2]; + $412 = $342 - $411; + $413 = +HEAPF32[$268>>2]; + $414 = $341 - $413; + $415 = $413 + $341; + $416 = $411 + $342; + $417 = $414 + $412; + $418 = $412 - $414; + $419 = +HEAPF32[$323>>2]; + $420 = +HEAPF32[$257>>2]; + $421 = $419 - $420; + $422 = +HEAPF32[$252>>2]; + $423 = +HEAPF32[$318>>2]; + $424 = $422 - $423; + $425 = $423 + $422; + $426 = $420 + $419; + $427 = +HEAPF32[$234>>2]; + $428 = +HEAPF32[$300>>2]; + $429 = $427 - $428; + $430 = +HEAPF32[$239>>2]; + $431 = +HEAPF32[$305>>2]; + $432 = $430 - $431; + $433 = $428 + $427; + $434 = $431 + $430; + $435 = $429 - $432; + $436 = $432 + $429; + $437 = +HEAPF32[$222>>2]; + $438 = +HEAPF32[$286>>2]; + $439 = $437 - $438; + $440 = +HEAPF32[$227>>2]; + $441 = +HEAPF32[$293>>2]; + $442 = $440 - $441; + $443 = $438 + $437; + $444 = $441 + $440; + $445 = $439 + $421; + $446 = $439 - $421; + $447 = $435 + $417; + $448 = $447 * 0.70710676908493042; + $449 = $435 - $417; + $450 = $449 * 0.70710676908493042; + $451 = $448 + $445; + HEAPF32[$286>>2] = $451; + $452 = $445 - $448; + HEAPF32[$300>>2] = $452; + $453 = $436 - $418; + $454 = $453 * 0.70710676908493042; + $455 = $442 - $424; + $456 = $454 + $446; + HEAPF32[$333>>2] = $456; + $457 = $446 - $454; + HEAPF32[$318>>2] = $457; + $458 = $436 + $418; + $459 = $458 * 0.70710676908493042; + $460 = $442 + $424; + $461 = $455 + $450; + HEAPF32[$323>>2] = $461; + $462 = $455 - $450; + HEAPF32[$338>>2] = $462; + $463 = $460 + $459; + HEAPF32[$293>>2] = $463; + $464 = $460 - $459; + HEAPF32[$305>>2] = $464; + $465 = $443 + $425; + $466 = $443 - $425; + $467 = $433 + $415; + $468 = $433 - $415; + $469 = $465 + $467; + HEAPF32[$222>>2] = $469; + $470 = $465 - $467; + HEAPF32[$234>>2] = $470; + $471 = $434 - $416; + $472 = $444 - $426; + $473 = $466 + $471; + HEAPF32[$268>>2] = $473; + $474 = $466 - $471; + HEAPF32[$252>>2] = $474; + $475 = $434 + $416; + $476 = $444 + $426; + $477 = $472 + $468; + HEAPF32[$257>>2] = $477; + $478 = $472 - $468; + HEAPF32[$273>>2] = $478; + $479 = $476 + $475; + HEAPF32[$227>>2] = $479; + $480 = $476 - $475; + HEAPF32[$239>>2] = $480; + $481 = (($j$134) + 32)|0; + $482 = ($481|0)<($points|0); + if ($482) { + $j$134 = $481; + } else { + break; + } + } + return; +} +function _mdct_bitreverse($init$0$0$val,$init$0$2$val,$init$0$3$val,$x) { + $init$0$0$val = $init$0$0$val|0; + $init$0$2$val = $init$0$2$val|0; + $init$0$3$val = $init$0$3$val|0; + $x = $x|0; + var $$sum = 0, $$sum1 = 0, $$sum2 = 0, $$sum3 = 0, $$sum4 = 0, $$sum5 = 0, $$sum6 = 0, $$sum7 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0.0, $12 = 0.0, $13 = 0.0, $14 = 0.0, $15 = 0.0, $16 = 0.0, $17 = 0.0, $18 = 0, $19 = 0.0; + var $2 = 0, $20 = 0.0, $21 = 0.0, $22 = 0.0, $23 = 0.0, $24 = 0.0, $25 = 0, $26 = 0.0, $27 = 0.0, $28 = 0.0, $29 = 0.0, $3 = 0, $30 = 0.0, $31 = 0.0, $32 = 0, $33 = 0.0, $34 = 0, $35 = 0.0, $36 = 0, $37 = 0; + var $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0.0, $45 = 0, $46 = 0.0, $47 = 0.0, $48 = 0.0, $49 = 0.0, $5 = 0, $50 = 0.0, $51 = 0, $52 = 0.0, $53 = 0.0, $54 = 0, $55 = 0.0; + var $56 = 0.0, $57 = 0.0, $58 = 0.0, $59 = 0.0, $6 = 0, $60 = 0.0, $61 = 0.0, $62 = 0.0, $63 = 0.0, $64 = 0.0, $65 = 0.0, $66 = 0, $67 = 0.0, $68 = 0.0, $69 = 0, $7 = 0, $70 = 0.0, $71 = 0, $72 = 0, $73 = 0; + var $74 = 0, $75 = 0, $8 = 0, $9 = 0.0, $T$0 = 0, $bit$0 = 0, $w0$0 = 0, $w1$0 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = $init$0$0$val >> 1; + $1 = (($x) + ($0<<2)|0); + $2 = (($init$0$2$val) + ($init$0$0$val<<2)|0); + $T$0 = $2;$bit$0 = $init$0$3$val;$w0$0 = $x;$w1$0 = $1; + while(1) { + $3 = HEAP32[$bit$0>>2]|0; + $$sum = (($3) + ($0))|0; + $4 = (($x) + ($$sum<<2)|0); + $5 = ((($bit$0)) + 4|0); + $6 = HEAP32[$5>>2]|0; + $$sum1 = (($6) + ($0))|0; + $7 = (($x) + ($$sum1<<2)|0); + $$sum2 = (($$sum) + 1)|0; + $8 = (($x) + ($$sum2<<2)|0); + $9 = +HEAPF32[$8>>2]; + $$sum3 = (($$sum1) + 1)|0; + $10 = (($x) + ($$sum3<<2)|0); + $11 = +HEAPF32[$10>>2]; + $12 = $9 - $11; + $13 = +HEAPF32[$4>>2]; + $14 = +HEAPF32[$7>>2]; + $15 = $14 + $13; + $16 = +HEAPF32[$T$0>>2]; + $17 = $15 * $16; + $18 = ((($T$0)) + 4|0); + $19 = +HEAPF32[$18>>2]; + $20 = $19 * $12; + $21 = $20 + $17; + $22 = $19 * $15; + $23 = $16 * $12; + $24 = $22 - $23; + $25 = ((($w1$0)) + -16|0); + $26 = $11 + $9; + $27 = $26 * 0.5; + $28 = $13 - $14; + $29 = $28 * 0.5; + $30 = $21 + $27; + HEAPF32[$w0$0>>2] = $30; + $31 = $27 - $21; + $32 = ((($w1$0)) + -8|0); + HEAPF32[$32>>2] = $31; + $33 = $24 + $29; + $34 = ((($w0$0)) + 4|0); + HEAPF32[$34>>2] = $33; + $35 = $24 - $29; + $36 = ((($w1$0)) + -4|0); + HEAPF32[$36>>2] = $35; + $37 = ((($bit$0)) + 8|0); + $38 = HEAP32[$37>>2]|0; + $$sum4 = (($38) + ($0))|0; + $39 = (($x) + ($$sum4<<2)|0); + $40 = ((($bit$0)) + 12|0); + $41 = HEAP32[$40>>2]|0; + $$sum5 = (($41) + ($0))|0; + $42 = (($x) + ($$sum5<<2)|0); + $$sum6 = (($$sum4) + 1)|0; + $43 = (($x) + ($$sum6<<2)|0); + $44 = +HEAPF32[$43>>2]; + $$sum7 = (($$sum5) + 1)|0; + $45 = (($x) + ($$sum7<<2)|0); + $46 = +HEAPF32[$45>>2]; + $47 = $44 - $46; + $48 = +HEAPF32[$39>>2]; + $49 = +HEAPF32[$42>>2]; + $50 = $49 + $48; + $51 = ((($T$0)) + 8|0); + $52 = +HEAPF32[$51>>2]; + $53 = $50 * $52; + $54 = ((($T$0)) + 12|0); + $55 = +HEAPF32[$54>>2]; + $56 = $55 * $47; + $57 = $56 + $53; + $58 = $55 * $50; + $59 = $52 * $47; + $60 = $58 - $59; + $61 = $46 + $44; + $62 = $61 * 0.5; + $63 = $48 - $49; + $64 = $63 * 0.5; + $65 = $57 + $62; + $66 = ((($w0$0)) + 8|0); + HEAPF32[$66>>2] = $65; + $67 = $62 - $57; + HEAPF32[$25>>2] = $67; + $68 = $60 + $64; + $69 = ((($w0$0)) + 12|0); + HEAPF32[$69>>2] = $68; + $70 = $60 - $64; + $71 = ((($w1$0)) + -12|0); + HEAPF32[$71>>2] = $70; + $72 = ((($T$0)) + 16|0); + $73 = ((($bit$0)) + 16|0); + $74 = ((($w0$0)) + 16|0); + $75 = ($74>>>0)<($25>>>0); + if ($75) { + $T$0 = $72;$bit$0 = $73;$w0$0 = $74;$w1$0 = $25; + } else { + break; + } + } + return; +} +function __vp_global_look($vi) { + $vi = $vi|0; + var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($vi)) + 28|0); + $1 = HEAP32[$0>>2]|0; + $2 = ((($1)) + 2868|0); + $3 = (_calloc(1,36)|0); + $4 = ((($vi)) + 4|0); + $5 = HEAP32[$4>>2]|0; + $6 = ((($3)) + 4|0); + HEAP32[$6>>2] = $5; + HEAPF32[$3>>2] = -9999.0; + $7 = ((($3)) + 8|0); + HEAP32[$7>>2] = $2; + return ($3|0); +} +function __vp_global_free($look) { + $look = $look|0; + var $0 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($look|0)==(0|0); + if ($0) { + return; + } + _free($look); + return; +} +function __vi_psy_free($i) { + $i = $i|0; + var $0 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($i|0)==(0|0); + if (!($0)) { + _free($i); + } + return; +} +function __vp_psy_init($p,$vi,$gi,$n,$rate) { + $p = $p|0; + $vi = $vi|0; + $gi = $gi|0; + $n = $n|0; + $rate = $rate|0; + var $$inv = 0, $$lcssa = 0, $$lcssa85 = 0, $$not = 0, $$not75 = 0, $$phi$trans$insert = 0, $$phi$trans$insert52 = 0, $$pre = 0, $$pre$phiZ2D = 0.0, $$pre51 = 0, $$pre53 = 0, $$pre54 = 0.0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0.0, $103 = 0, $104 = 0; + var $105 = 0, $106 = 0.0, $107 = 0, $108 = 0.0, $109 = 0.0, $11 = 0.0, $110 = 0.0, $111 = 0.0, $112 = 0.0, $113 = 0, $114 = 0.0, $115 = 0.0, $116 = 0.0, $117 = 0.0, $118 = 0.0, $119 = 0.0, $12 = 0.0, $120 = 0.0, $121 = 0.0, $122 = 0.0; + var $123 = 0.0, $124 = 0, $125 = 0, $126 = 0.0, $127 = 0.0, $128 = 0.0, $129 = 0, $13 = 0.0, $130 = 0.0, $131 = 0.0, $132 = 0.0, $133 = 0.0, $134 = 0.0, $135 = 0, $136 = 0.0, $137 = 0.0, $138 = 0.0, $139 = 0.0, $14 = 0.0, $140 = 0.0; + var $141 = 0.0, $142 = 0.0, $143 = 0.0, $144 = 0.0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0.0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0.0, $155 = 0.0, $156 = 0.0, $157 = 0.0, $158 = 0.0, $159 = 0; + var $16 = 0.0, $160 = 0.0, $161 = 0.0, $162 = 0.0, $163 = 0.0, $164 = 0.0, $165 = 0.0, $166 = 0.0, $167 = 0.0, $168 = 0.0, $169 = 0.0, $17 = 0.0, $170 = 0.0, $171 = 0.0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0; + var $178 = 0, $179 = 0, $18 = 0.0, $180 = 0.0, $181 = 0.0, $182 = 0.0, $183 = 0.0, $184 = 0.0, $185 = 0.0, $186 = 0.0, $187 = 0.0, $188 = 0.0, $189 = 0.0, $19 = 0.0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0.0, $195 = 0.0; + var $196 = 0, $197 = 0.0, $198 = 0, $199 = 0.0, $2 = 0.0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0.0, $211 = 0.0, $212 = 0.0; + var $213 = 0.0, $214 = 0.0, $215 = 0.0, $216 = 0.0, $217 = 0.0, $218 = 0, $219 = 0, $22 = 0.0, $220 = 0.0, $221 = 0.0, $222 = 0.0, $223 = 0.0, $224 = 0, $225 = 0, $226 = 0.0, $227 = 0.0, $228 = 0.0, $229 = 0, $23 = 0.0, $230 = 0.0; + var $231 = 0.0, $232 = 0.0, $233 = 0.0, $234 = 0.0, $235 = 0, $236 = 0, $237 = 0.0, $238 = 0.0, $239 = 0.0, $24 = 0.0, $240 = 0, $241 = 0.0, $242 = 0.0, $243 = 0.0, $244 = 0.0, $245 = 0.0, $246 = 0, $247 = 0, $248 = 0.0, $249 = 0.0; + var $25 = 0.0, $250 = 0.0, $251 = 0, $252 = 0.0, $253 = 0.0, $254 = 0.0, $255 = 0.0, $256 = 0.0, $257 = 0, $258 = 0, $26 = 0, $27 = 0, $28 = 0.0, $29 = 0.0, $3 = 0.0, $30 = 0.0, $31 = 0.0, $32 = 0.0, $33 = 0.0, $34 = 0.0; + var $35 = 0.0, $36 = 0.0, $37 = 0.0, $38 = 0.0, $39 = 0, $4 = 0.0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0.0, $50 = 0, $51 = 0, $52 = 0; + var $53 = 0, $54 = 0, $55 = 0, $56 = 0.0, $57 = 0.0, $58 = 0, $59 = 0, $6 = 0.0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0.0, $66 = 0.0, $67 = 0.0, $68 = 0.0, $69 = 0.0, $7 = 0.0, $70 = 0.0; + var $71 = 0.0, $72 = 0, $73 = 0, $74 = 0, $75 = 0.0, $76 = 0, $77 = 0.0, $78 = 0.0, $79 = 0, $8 = 0.0, $80 = 0.0, $81 = 0.0, $82 = 0, $83 = 0, $84 = 0, $85 = 0.0, $86 = 0, $87 = 0.0, $88 = 0, $89 = 0; + var $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $base$032 = 0.0, $brmerge = 0, $exitcond = 0, $exitcond46 = 0, $exitcond47 = 0, $exitcond48 = 0, $exitcond50 = 0, $halfoc$0 = 0.0, $halfoc$1 = 0.0; + var $hi$024 = 0, $hi$1$lcssa = 0, $hi$120 = 0, $i$0$ph$ph74 = 0, $i$070 = 0, $i$070$lcssa = 0, $i$126 = 0, $i$212 = 0, $i$410 = 0, $j$0$ph$ph$lcssa = 0, $j$0$ph$ph73 = 0, $j$133 = 0, $j$328 = 0, $lo$025 = 0, $lo$1$lcssa = 0, $lo$115 = 0, $umax = 0, dest = 0, label = 0, sp = 0; + var stop = 0; + sp = STACKTOP; + dest=$p; stop=dest+48|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0)); + $0 = HEAP32[$gi>>2]|0; + $1 = ((($p)) + 36|0); + HEAP32[$1>>2] = $0; + $2 = (+($0|0)); + $3 = $2 * 8.0; + $4 = $3; + $5 = (+Math_log((+$4))); + $6 = $5 * 1.4426950408889634; + $7 = (+_rint($6)); + $8 = $7 + -1.0; + $9 = (~~(($8))); + $10 = ((($p)) + 32|0); + HEAP32[$10>>2] = $9; + $11 = (+($rate|0)); + $12 = $11 * 0.25; + $13 = $12; + $14 = $13 * 0.5; + $15 = (+($n|0)); + $16 = $14 / $15; + $17 = (+Math_log((+$16))); + $18 = $17 * 1.4426950216293335; + $19 = $18 + -5.9657840728759766; + $20 = (($9) + 1)|0; + $21 = 1 << $20; + $22 = (+($21|0)); + $23 = $22 * $19; + $24 = (+($0|0)); + $25 = $23 - $24; + $26 = (~~(($25))); + $27 = ((($p)) + 28|0); + HEAP32[$27>>2] = $26; + $28 = (+($n|0)); + $29 = $28 + 0.25; + $30 = $29 * $11; + $31 = $30; + $32 = $31 * 0.5; + $33 = $32 / $15; + $34 = (+Math_log((+$33))); + $35 = $34 * 1.4426950216293335; + $36 = $35 + -5.9657840728759766; + $37 = $22 * $36; + $38 = $37 + 0.5; + $39 = (~~(($38))); + $40 = (1 - ($26))|0; + $41 = (($40) + ($39))|0; + $42 = ((($p)) + 40|0); + HEAP32[$42>>2] = $41; + $43 = $n << 2; + $44 = (_malloc($43)|0); + $45 = ((($p)) + 16|0); + HEAP32[$45>>2] = $44; + $46 = (_malloc($43)|0); + $47 = ((($p)) + 20|0); + HEAP32[$47>>2] = $46; + $48 = (_malloc($43)|0); + $49 = ((($p)) + 24|0); + HEAP32[$49>>2] = $48; + $50 = ((($p)) + 4|0); + HEAP32[$50>>2] = $vi; + HEAP32[$p>>2] = $n; + $51 = ((($p)) + 44|0); + HEAP32[$51>>2] = $rate; + $52 = ((($p)) + 48|0); + HEAPF32[$52>>2] = 1.0; + $53 = ($rate|0)<(26000); + do { + if ($53) { + HEAPF32[$52>>2] = 0.0; + } else { + $54 = ($rate|0)<(38000); + if ($54) { + HEAPF32[$52>>2] = 0.93999999761581421; + break; + } + $55 = ($rate|0)>(46000); + if ($55) { + HEAPF32[$52>>2] = 1.2749999761581421; + } + } + } while(0); + $56 = $15 * 2.0; + $57 = (+($rate|0)); + $58 = ($n|0)>(0); + $62 = $58;$i$0$ph$ph74 = 0;$j$0$ph$ph73 = 0; + L9: while(1) { + $$not75 = $62 ^ 1; + $i$070 = $i$0$ph$ph74; + while(1) { + $64 = (($i$070) + 1)|0; + $65 = (+($64|0)); + $66 = $65 * 0.08664337545633316; + $67 = $66 + 2.7488713472395148; + $68 = (+Math_exp((+$67))); + $69 = $56 * $68; + $70 = $69 / $57; + $71 = (+_rint($70)); + $72 = (~~(($71))); + $$not = ($72|0)<=($j$0$ph$ph73|0); + $brmerge = $$not | $$not75; + if (!($brmerge)) { + $$lcssa = $64;$$lcssa85 = $72;$i$070$lcssa = $i$070; + break; + } + $73 = ($64|0)<(87); + if ($73) { + $i$070 = $64; + } else { + $j$0$ph$ph$lcssa = $j$0$ph$ph73; + break L9; + } + } + $74 = (1272 + ($i$070$lcssa<<2)|0); + $75 = +HEAPF32[$74>>2]; + $76 = (1272 + ($$lcssa<<2)|0); + $77 = +HEAPF32[$76>>2]; + $78 = $77 - $75; + $79 = (($$lcssa85) - ($j$0$ph$ph73))|0; + $80 = (+($79|0)); + $81 = $78 / $80; + $82 = (($j$0$ph$ph73) - ($$lcssa85))|0; + $83 = (($j$0$ph$ph73) - ($n))|0; + $84 = ($82>>>0)>($83>>>0); + $umax = $84 ? $82 : $83; + $59 = (($j$0$ph$ph73) - ($umax))|0; + $base$032 = $75;$j$133 = $j$0$ph$ph73; + while(1) { + $85 = $base$032 + 100.0; + $86 = (($44) + ($j$133<<2)|0); + HEAPF32[$86>>2] = $85; + $87 = $base$032 + $81; + $88 = (($j$133) + 1)|0; + $exitcond50 = ($88|0)==($59|0); + if ($exitcond50) { + break; + } else { + $base$032 = $87;$j$133 = $88; + } + } + $60 = ($59|0)<($n|0); + $61 = ($$lcssa|0)<(87); + if ($61) { + $62 = $60;$i$0$ph$ph74 = $$lcssa;$j$0$ph$ph73 = $59; + } else { + $j$0$ph$ph$lcssa = $59; + break; + } + } + $63 = ($j$0$ph$ph$lcssa|0)<($n|0); + if ($63) { + $j$328 = $j$0$ph$ph$lcssa; + while(1) { + $97 = (($j$328) + -1)|0; + $98 = (($44) + ($97<<2)|0); + $99 = HEAP32[$98>>2]|0; + $100 = (($44) + ($j$328<<2)|0); + HEAP32[$100>>2] = $99; + $101 = (($j$328) + 1)|0; + $exitcond48 = ($101|0)==($n|0); + if ($exitcond48) { + break; + } else { + $j$328 = $101; + } + } + } + $89 = ($n|0)>(0); + if ($89) { + $90 = $n << 1; + $91 = (($rate|0) / ($90|0))&-1; + $92 = ((($vi)) + 120|0); + $93 = HEAP32[$92>>2]|0; + $94 = ((($vi)) + 124|0); + $95 = ((($vi)) + 116|0); + $96 = ((($vi)) + 112|0); + $hi$024 = 1;$i$126 = 0;$lo$025 = -99; + while(1) { + $107 = Math_imul($91, $i$126)|0; + $108 = (+($107|0)); + $109 = $108 * 7.3999998858198524E-4; + $110 = $109; + $111 = (+Math_atan((+$110))); + $112 = $111 * 13.100000381469727; + $113 = Math_imul($107, $107)|0; + $114 = (+($113|0)); + $115 = $114 * 1.8499999754340024E-8; + $116 = $115; + $117 = (+Math_atan((+$116))); + $118 = $117 * 2.2400000095367432; + $119 = $118 + $112; + $120 = $108 * 9.9999997473787516E-5; + $121 = $120; + $122 = $119 + $121; + $123 = $122; + $124 = (($93) + ($lo$025))|0; + $125 = ($124|0)<($i$126|0); + L27: do { + if ($125) { + $126 = +HEAPF32[$96>>2]; + $127 = $123 - $126; + $128 = $127; + $lo$115 = $lo$025; + while(1) { + $129 = Math_imul($lo$115, $91)|0; + $130 = (+($129|0)); + $131 = $130 * 7.3999998858198524E-4; + $132 = $131; + $133 = (+Math_atan((+$132))); + $134 = $133 * 13.100000381469727; + $135 = Math_imul($129, $129)|0; + $136 = (+($135|0)); + $137 = $136 * 1.8499999754340024E-8; + $138 = $137; + $139 = (+Math_atan((+$138))); + $140 = $139 * 2.2400000095367432; + $141 = $130 * 9.9999997473787516E-5; + $142 = $141; + $143 = $134 + $142; + $144 = $143 + $140; + $145 = $144 < $128; + if (!($145)) { + $lo$1$lcssa = $lo$115; + break L27; + } + $149 = (($lo$115) + 1)|0; + $150 = (($93) + ($149))|0; + $151 = ($150|0)<($i$126|0); + if ($151) { + $lo$115 = $149; + } else { + $lo$1$lcssa = $149; + break; + } + } + } else { + $lo$1$lcssa = $lo$025; + } + } while(0); + $146 = ($hi$024|0)>($n|0); + L33: do { + if ($146) { + $hi$1$lcssa = $hi$024; + } else { + $147 = HEAP32[$94>>2]|0; + $148 = (($147) + ($i$126))|0; + $hi$120 = $hi$024; + while(1) { + $152 = ($hi$120|0)<($148|0); + if (!($152)) { + $153 = Math_imul($hi$120, $91)|0; + $154 = (+($153|0)); + $155 = $154 * 7.3999998858198524E-4; + $156 = $155; + $157 = (+Math_atan((+$156))); + $158 = $157 * 13.100000381469727; + $159 = Math_imul($153, $153)|0; + $160 = (+($159|0)); + $161 = $160 * 1.8499999754340024E-8; + $162 = $161; + $163 = (+Math_atan((+$162))); + $164 = $163 * 2.2400000095367432; + $165 = $154 * 9.9999997473787516E-5; + $166 = $165; + $167 = $158 + $166; + $168 = $167 + $164; + $169 = +HEAPF32[$95>>2]; + $170 = $169 + $123; + $171 = $170; + $172 = $168 < $171; + if (!($172)) { + $hi$1$lcssa = $hi$120; + break L33; + } + } + $173 = (($hi$120) + 1)|0; + $174 = ($hi$120|0)<($n|0); + if ($174) { + $hi$120 = $173; + } else { + $hi$1$lcssa = $173; + break; + } + } + } + } while(0); + $175 = $lo$1$lcssa << 16; + $176 = (($175) + -65537)|0; + $177 = (($176) + ($hi$1$lcssa))|0; + $178 = (($48) + ($i$126<<2)|0); + HEAP32[$178>>2] = $177; + $179 = (($i$126) + 1)|0; + $exitcond47 = ($179|0)==($n|0); + if ($exitcond47) { + break; + } else { + $hi$024 = $hi$1$lcssa;$i$126 = $179;$lo$025 = $lo$1$lcssa; + } + } + if ($89) { + $102 = $57 * 0.5; + $103 = HEAP32[$10>>2]|0; + $104 = (($103) + 1)|0; + $105 = 1 << $104; + $106 = (+($105|0)); + $i$212 = 0; + while(1) { + $180 = (+($i$212|0)); + $181 = $180 + 0.25; + $182 = $181; + $183 = $102 * $182; + $184 = $183 / $15; + $185 = (+Math_log((+$184))); + $186 = $185 * 1.4426950216293335; + $187 = $186 + -5.9657840728759766; + $188 = $106 * $187; + $189 = $188 + 0.5; + $190 = (~~(($189))); + $191 = (($46) + ($i$212<<2)|0); + HEAP32[$191>>2] = $190; + $192 = (($i$212) + 1)|0; + $exitcond46 = ($192|0)==($n|0); + if ($exitcond46) { + $$pre$phiZ2D = $102; + break; + } else { + $i$212 = $192; + } + } + } else { + label = 19; + } + } else { + label = 19; + } + if ((label|0) == 19) { + $$pre54 = $57 * 0.5; + $$pre$phiZ2D = $$pre54; + } + $193 = ((($vi)) + 36|0); + $194 = $$pre$phiZ2D / $15; + $195 = $194; + $196 = ((($vi)) + 24|0); + $197 = +HEAPF32[$196>>2]; + $198 = ((($vi)) + 28|0); + $199 = +HEAPF32[$198>>2]; + $200 = (_setup_tone_curves($193,$195,$n,$197,$199)|0); + $201 = ((($p)) + 8|0); + HEAP32[$201>>2] = $200; + $202 = (_malloc(12)|0); + $203 = ((($p)) + 12|0); + HEAP32[$203>>2] = $202; + $204 = (_malloc($43)|0); + HEAP32[$202>>2] = $204; + $205 = (_malloc($43)|0); + $206 = ((($202)) + 4|0); + HEAP32[$206>>2] = $205; + $207 = (_malloc($43)|0); + $208 = ((($202)) + 8|0); + HEAP32[$208>>2] = $207; + if (!($89)) { + return; + } + $209 = HEAP32[$50>>2]|0; + $$pre = HEAP32[$202>>2]|0; + $$phi$trans$insert = ((($202)) + 4|0); + $$pre51 = HEAP32[$$phi$trans$insert>>2]|0; + $$phi$trans$insert52 = ((($202)) + 8|0); + $$pre53 = HEAP32[$$phi$trans$insert52>>2]|0; + $i$410 = 0; + while(1) { + $210 = (+($i$410|0)); + $211 = $210 + 0.5; + $212 = $211 * $57; + $213 = $212 / $56; + $214 = (+Math_log((+$213))); + $215 = $214 * 2.885390043258667; + $216 = $215 + -11.931568145751953; + $217 = $216; + $218 = $217 < 0.0; + $halfoc$0 = $218 ? 0.0 : $217; + $$inv = $halfoc$0 >= 16.0; + $halfoc$1 = $$inv ? 16.0 : $halfoc$0; + $219 = (~~(($halfoc$1))); + $220 = (+($219|0)); + $221 = $halfoc$1 - $220; + $222 = $221; + $223 = 1.0 - $222; + $224 = (($219) + 1)|0; + $225 = (((($209)) + 132|0) + ($219<<2)|0); + $226 = +HEAPF32[$225>>2]; + $227 = $226; + $228 = $227 * $223; + $229 = (((($209)) + 132|0) + ($224<<2)|0); + $230 = +HEAPF32[$229>>2]; + $231 = $230 * $221; + $232 = $231; + $233 = $232 + $228; + $234 = $233; + $235 = (($$pre) + ($i$410<<2)|0); + HEAPF32[$235>>2] = $234; + $236 = (((($209)) + 200|0) + ($219<<2)|0); + $237 = +HEAPF32[$236>>2]; + $238 = $237; + $239 = $238 * $223; + $240 = (((($209)) + 200|0) + ($224<<2)|0); + $241 = +HEAPF32[$240>>2]; + $242 = $241 * $221; + $243 = $242; + $244 = $243 + $239; + $245 = $244; + $246 = (($$pre51) + ($i$410<<2)|0); + HEAPF32[$246>>2] = $245; + $247 = (((($209)) + 268|0) + ($219<<2)|0); + $248 = +HEAPF32[$247>>2]; + $249 = $248; + $250 = $249 * $223; + $251 = (((($209)) + 268|0) + ($224<<2)|0); + $252 = +HEAPF32[$251>>2]; + $253 = $252 * $221; + $254 = $253; + $255 = $254 + $250; + $256 = $255; + $257 = (($$pre53) + ($i$410<<2)|0); + HEAPF32[$257>>2] = $256; + $258 = (($i$410) + 1)|0; + $exitcond = ($258|0)==($n|0); + if ($exitcond) { + break; + } else { + $i$410 = $258; + } + } + return; +} +function __vp_psy_clear($p) { + $p = $p|0; + var $$pre = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0; + var $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0; + var $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0; + var $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $7 = 0, $8 = 0, $9 = 0, $exitcond = 0, $i$05 = 0, dest = 0, label = 0, sp = 0, stop = 0; + sp = STACKTOP; + $0 = ($p|0)==(0|0); + if ($0) { + return; + } + $1 = ((($p)) + 16|0); + $2 = HEAP32[$1>>2]|0; + $3 = ($2|0)==(0|0); + if (!($3)) { + _free($2); + } + $4 = ((($p)) + 20|0); + $5 = HEAP32[$4>>2]|0; + $6 = ($5|0)==(0|0); + if (!($6)) { + _free($5); + } + $7 = ((($p)) + 24|0); + $8 = HEAP32[$7>>2]|0; + $9 = ($8|0)==(0|0); + if (!($9)) { + _free($8); + } + $10 = ((($p)) + 8|0); + $11 = HEAP32[$10>>2]|0; + $12 = ($11|0)==(0|0); + if (!($12)) { + $14 = $11;$i$05 = 0; + while(1) { + $13 = (($14) + ($i$05<<2)|0); + $15 = HEAP32[$13>>2]|0; + $16 = HEAP32[$15>>2]|0; + _free($16); + $17 = HEAP32[$10>>2]|0; + $18 = (($17) + ($i$05<<2)|0); + $19 = HEAP32[$18>>2]|0; + $20 = ((($19)) + 4|0); + $21 = HEAP32[$20>>2]|0; + _free($21); + $22 = HEAP32[$10>>2]|0; + $23 = (($22) + ($i$05<<2)|0); + $24 = HEAP32[$23>>2]|0; + $25 = ((($24)) + 8|0); + $26 = HEAP32[$25>>2]|0; + _free($26); + $27 = HEAP32[$10>>2]|0; + $28 = (($27) + ($i$05<<2)|0); + $29 = HEAP32[$28>>2]|0; + $30 = ((($29)) + 12|0); + $31 = HEAP32[$30>>2]|0; + _free($31); + $32 = HEAP32[$10>>2]|0; + $33 = (($32) + ($i$05<<2)|0); + $34 = HEAP32[$33>>2]|0; + $35 = ((($34)) + 16|0); + $36 = HEAP32[$35>>2]|0; + _free($36); + $37 = HEAP32[$10>>2]|0; + $38 = (($37) + ($i$05<<2)|0); + $39 = HEAP32[$38>>2]|0; + $40 = ((($39)) + 20|0); + $41 = HEAP32[$40>>2]|0; + _free($41); + $42 = HEAP32[$10>>2]|0; + $43 = (($42) + ($i$05<<2)|0); + $44 = HEAP32[$43>>2]|0; + $45 = ((($44)) + 24|0); + $46 = HEAP32[$45>>2]|0; + _free($46); + $47 = HEAP32[$10>>2]|0; + $48 = (($47) + ($i$05<<2)|0); + $49 = HEAP32[$48>>2]|0; + $50 = ((($49)) + 28|0); + $51 = HEAP32[$50>>2]|0; + _free($51); + $52 = HEAP32[$10>>2]|0; + $53 = (($52) + ($i$05<<2)|0); + $54 = HEAP32[$53>>2]|0; + _free($54); + $55 = (($i$05) + 1)|0; + $exitcond = ($55|0)==(17); + if ($exitcond) { + break; + } + $$pre = HEAP32[$10>>2]|0; + $14 = $$pre;$i$05 = $55; + } + $56 = HEAP32[$10>>2]|0; + _free($56); + } + $57 = ((($p)) + 12|0); + $58 = HEAP32[$57>>2]|0; + $59 = ($58|0)==(0|0); + if (!($59)) { + $60 = HEAP32[$58>>2]|0; + _free($60); + $61 = HEAP32[$57>>2]|0; + $62 = ((($61)) + 4|0); + $63 = HEAP32[$62>>2]|0; + _free($63); + $64 = HEAP32[$57>>2]|0; + $65 = ((($64)) + 8|0); + $66 = HEAP32[$65>>2]|0; + _free($66); + $67 = HEAP32[$57>>2]|0; + _free($67); + } + dest=$p; stop=dest+52|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0)); + return; +} +function __vp_noisemask($p,$logmdct,$logmask) { + $p = $p|0; + $logmdct = $logmdct|0; + $logmask = $logmask|0; + var $$ = 0, $$$ = 0, $$alloca_mul = 0, $0 = 0, $1 = 0, $10 = 0.0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0.0, $21 = 0, $22 = 0.0, $23 = 0.0; + var $24 = 0, $25 = 0, $26 = 0.0, $27 = 0.0, $28 = 0.0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0.0, $34 = 0, $35 = 0.0, $36 = 0.0, $37 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0.0, $8 = 0; + var $9 = 0.0, $exitcond = 0, $exitcond10 = 0, $exitcond9 = 0, $i$05 = 0, $i$12 = 0, $i$21 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = HEAP32[$p>>2]|0; + $1 = $0 << 2; + $$alloca_mul = $1; + $2 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul)|0)+15)&-16)|0;; + $3 = ((($p)) + 24|0); + $4 = HEAP32[$3>>2]|0; + _bark_noise_hybridmp($0,$4,$logmdct,$logmask,140.0,-1); + $5 = ($0|0)>(0); + if ($5) { + $i$05 = 0; + while(1) { + $6 = (($logmdct) + ($i$05<<2)|0); + $7 = +HEAPF32[$6>>2]; + $8 = (($logmask) + ($i$05<<2)|0); + $9 = +HEAPF32[$8>>2]; + $10 = $7 - $9; + $11 = (($2) + ($i$05<<2)|0); + HEAPF32[$11>>2] = $10; + $12 = (($i$05) + 1)|0; + $exitcond10 = ($12|0)==($0|0); + if ($exitcond10) { + break; + } else { + $i$05 = $12; + } + } + } + $13 = HEAP32[$3>>2]|0; + $14 = ((($p)) + 4|0); + $15 = HEAP32[$14>>2]|0; + $16 = ((($15)) + 128|0); + $17 = HEAP32[$16>>2]|0; + _bark_noise_hybridmp($0,$13,$2,$logmask,0.0,$17); + if ($5) { + $i$12 = 0; + } else { + STACKTOP = sp;return; + } + while(1) { + $19 = (($logmdct) + ($i$12<<2)|0); + $20 = +HEAPF32[$19>>2]; + $21 = (($2) + ($i$12<<2)|0); + $22 = +HEAPF32[$21>>2]; + $23 = $20 - $22; + HEAPF32[$21>>2] = $23; + $24 = (($i$12) + 1)|0; + $exitcond9 = ($24|0)==($0|0); + if ($exitcond9) { + break; + } else { + $i$12 = $24; + } + } + if (!($5)) { + STACKTOP = sp;return; + } + $18 = HEAP32[$14>>2]|0; + $i$21 = 0; + while(1) { + $25 = (($logmask) + ($i$21<<2)|0); + $26 = +HEAPF32[$25>>2]; + $27 = $26; + $28 = $27 + 0.5; + $29 = (~~(($28))); + $30 = ($29|0)>(39); + $$ = $30 ? 39 : $29; + $31 = ($$|0)<(0); + $$$ = $31 ? 0 : $$; + $32 = (($2) + ($i$21<<2)|0); + $33 = +HEAPF32[$32>>2]; + $34 = (((($18)) + 336|0) + ($$$<<2)|0); + $35 = +HEAPF32[$34>>2]; + $36 = $35 + $33; + HEAPF32[$25>>2] = $36; + $37 = (($i$21) + 1)|0; + $exitcond = ($37|0)==($0|0); + if ($exitcond) { + break; + } else { + $i$21 = $37; + } + } + STACKTOP = sp;return; +} +function __vp_tonemask($p,$logfft,$logmask,$global_specmax,$local_specmax) { + $p = $p|0; + $logfft = $logfft|0; + $logmask = $logmask|0; + $global_specmax = +$global_specmax; + $local_specmax = +$local_specmax; + var $$$$i = 0, $$$i = 0, $$alloca_mul = 0, $$in$i = 0, $$in28$i = 0, $$lcssa = 0, $$lcssa33 = 0, $$lcssa68 = 0.0, $$lcssa73 = 0, $$phi$trans$insert$i = 0, $$phi$trans$insert37$i = 0, $$pre = 0, $$pre$i = 0, $$pre$phiZ2D = 0, $$pre38$i = 0, $$sum$i$i = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0; + var $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0.0, $116 = 0, $117 = 0, $118 = 0, $119 = 0; + var $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0.0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0.0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0; + var $138 = 0.0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0.0, $147 = 0, $148 = 0, $149 = 0.0, $15 = 0.0, $150 = 0, $151 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0; + var $2 = 0, $20 = 0, $21 = 0.0, $22 = 0.0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0.0, $29 = 0.0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0.0, $37 = 0; + var $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0.0, $46 = 0, $47 = 0.0, $48 = 0, $49 = 0.0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0; + var $56 = 0, $57 = 0, $58 = 0.0, $59 = 0.0, $6 = 0, $60 = 0.0, $61 = 0.0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0.0, $71 = 0, $72 = 0.0, $73 = 0; + var $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0.0, $8 = 0.0, $80 = 0, $81 = 0.0, $82 = 0.0, $83 = 0.0, $84 = 0.0, $85 = 0.0, $86 = 0.0, $87 = 0, $88 = 0, $89 = 0, $9 = 0.0, $90 = 0.0, $91 = 0.0; + var $92 = 0, $93 = 0.0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $att$0 = 0.0, $exitcond = 0, $exitcond36 = 0, $i$02$i$i = 0, $i$020 = 0, $i$04$i = 0, $i$1$i = 0, $i$1$i$lcssa = 0, $i$1$ph$i = 0, $i$118 = 0, $linpos$0$lcssa$i = 0, $linpos$023$i = 0; + var $linpos$1$lcssa$i = 0, $linpos$116$i16 = 0, $linpos$27$i = 0, $max$0$ph$i = 0.0, $max$0$ph$i$lcssa = 0.0, $minV$0$ph$i = 0.0, $minV$0$ph3$lcssa$i = 0.0, $minV$0$ph313$i = 0.0, $or$cond = 0, $or$cond$i = 0, $or$cond$i$i = 0, $pos$022$i = 0, $pos$1$lcssa$i = 0, $seedptr$01$i$i = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = HEAP32[$p>>2]|0; + $1 = ((($p)) + 40|0); + $2 = HEAP32[$1>>2]|0; + $3 = $2 << 2; + $$alloca_mul = $3; + $4 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul)|0)+15)&-16)|0;; + $5 = ((($p)) + 4|0); + $6 = HEAP32[$5>>2]|0; + $7 = ((($6)) + 4|0); + $8 = +HEAPF32[$7>>2]; + $9 = $8 + $local_specmax; + $10 = ($2|0)>(0); + if ($10) { + $i$020 = 0; + while(1) { + $11 = (($4) + ($i$020<<2)|0); + HEAPF32[$11>>2] = -9999.0; + $12 = (($i$020) + 1)|0; + $13 = ($12|0)<($2|0); + if ($13) { + $i$020 = $12; + } else { + break; + } + } + } + $14 = ((($6)) + 8|0); + $15 = +HEAPF32[$14>>2]; + $16 = $9 < $15; + $att$0 = $16 ? $15 : $9; + $17 = ($0|0)>(0); + if ($17) { + $18 = ((($p)) + 16|0); + $19 = HEAP32[$18>>2]|0; + $i$118 = 0; + while(1) { + $20 = (($19) + ($i$118<<2)|0); + $21 = +HEAPF32[$20>>2]; + $22 = $21 + $att$0; + $23 = (($logmask) + ($i$118<<2)|0); + HEAPF32[$23>>2] = $22; + $24 = (($i$118) + 1)|0; + $exitcond36 = ($24|0)==($0|0); + if ($exitcond36) { + break; + } else { + $i$118 = $24; + } + } + $25 = ((($p)) + 8|0); + $26 = HEAP32[$25>>2]|0; + $27 = ((($6)) + 496|0); + $28 = +HEAPF32[$27>>2]; + $29 = $28 - $global_specmax; + if ($17) { + $30 = ((($p)) + 20|0); + $31 = HEAP32[$30>>2]|0; + $32 = ((($p)) + 32|0); + $33 = ((($p)) + 36|0); + $34 = ((($p)) + 28|0); + $i$04$i = 0; + while(1) { + $35 = (($logfft) + ($i$04$i<<2)|0); + $36 = +HEAPF32[$35>>2]; + $37 = (($31) + ($i$04$i<<2)|0); + $38 = HEAP32[$37>>2]|0; + $i$1$ph$i = $i$04$i;$max$0$ph$i = $36; + L13: while(1) { + $i$1$i = $i$1$ph$i; + while(1) { + $39 = (($i$1$i) + 1)|0; + $40 = ($39|0)<($0|0); + if (!($40)) { + $$lcssa33 = 0;$$lcssa73 = $39;$i$1$i$lcssa = $i$1$i;$max$0$ph$i$lcssa = $max$0$ph$i; + break L13; + } + $41 = (($31) + ($39<<2)|0); + $42 = HEAP32[$41>>2]|0; + $43 = ($42|0)==($38|0); + if (!($43)) { + $$lcssa33 = 1;$$lcssa73 = $39;$i$1$i$lcssa = $i$1$i;$max$0$ph$i$lcssa = $max$0$ph$i; + break L13; + } + $44 = (($logfft) + ($39<<2)|0); + $45 = +HEAPF32[$44>>2]; + $46 = $45 > $max$0$ph$i; + if ($46) { + $i$1$ph$i = $39;$max$0$ph$i = $45; + continue L13; + } else { + $i$1$i = $39; + } + } + } + $47 = $max$0$ph$i$lcssa + 6.0; + $48 = (($logmask) + ($i$1$i$lcssa<<2)|0); + $49 = +HEAPF32[$48>>2]; + $50 = $47 > $49; + if ($50) { + $51 = HEAP32[$32>>2]|0; + $52 = $38 >> $51; + $53 = ($52|0)>(16); + $$$i = $53 ? 16 : $52; + $54 = ($$$i|0)<(0); + $$$$i = $54 ? 0 : $$$i; + $55 = (($26) + ($$$$i<<2)|0); + $56 = HEAP32[$55>>2]|0; + $57 = HEAP32[$33>>2]|0; + $58 = $29 + $max$0$ph$i$lcssa; + $59 = $58; + $60 = $59 + -30.0; + $61 = $60 * 0.10000000149011612; + $62 = (~~(($61))); + $63 = ($62|0)<(0); + $64 = $63 ? 0 : $62; + $65 = ($64|0)>(7); + $66 = $65 ? 7 : $64; + $67 = (($56) + ($66<<2)|0); + $68 = HEAP32[$67>>2]|0; + $69 = ((($68)) + 4|0); + $70 = +HEAPF32[$69>>2]; + $71 = (~~(($70))); + $72 = +HEAPF32[$68>>2]; + $73 = (~~(($72))); + $74 = ($73|0)<($71|0); + if ($74) { + $75 = (($31) + ($i$1$i$lcssa<<2)|0); + $76 = HEAP32[$75>>2]|0; + $77 = HEAP32[$34>>2]|0; + $78 = (($76) - ($77))|0; + $79 = (+($78|0)); + $80 = $57 >> 1; + $81 = (+($80|0)); + $82 = $72 + -16.0; + $83 = (+($57|0)); + $84 = $82 * $83; + $85 = $84 - $81; + $86 = $85 + $79; + $87 = (~~(($86))); + $i$02$i$i = $73;$seedptr$01$i$i = $87; + while(1) { + $88 = ($seedptr$01$i$i|0)>(0); + if ($88) { + $$sum$i$i = (($i$02$i$i) + 2)|0; + $89 = (($68) + ($$sum$i$i<<2)|0); + $90 = +HEAPF32[$89>>2]; + $91 = $90 + $max$0$ph$i$lcssa; + $92 = (($4) + ($seedptr$01$i$i<<2)|0); + $93 = +HEAPF32[$92>>2]; + $94 = $93 < $91; + if ($94) { + HEAPF32[$92>>2] = $91; + } + } + $95 = (($seedptr$01$i$i) + ($57))|0; + $96 = ($95|0)<($2|0); + $97 = (($i$02$i$i) + 1)|0; + $98 = ($97|0)<($71|0); + $or$cond$i$i = $98 & $96; + if ($or$cond$i$i) { + $i$02$i$i = $97;$seedptr$01$i$i = $95; + } else { + break; + } + } + } + } + if ($$lcssa33) { + $i$04$i = $$lcssa73; + } else { + $$pre$phiZ2D = $33; + break; + } + } + } else { + label = 7; + } + } else { + label = 7; + } + if ((label|0) == 7) { + $$pre = ((($p)) + 36|0); + $$pre$phiZ2D = $$pre; + } + $99 = HEAP32[$$pre$phiZ2D>>2]|0; + _seed_chase($4,$99,$2); + $100 = HEAP32[$p>>2]|0; + $101 = ($100|0)>(1); + L33: do { + if ($101) { + $102 = ((($p)) + 20|0); + $103 = ((($p)) + 28|0); + $104 = HEAP32[$102>>2]|0; + $105 = HEAP32[$104>>2]|0; + $106 = $99 >> 1; + $107 = (($105) - ($106))|0; + $108 = HEAP32[$103>>2]|0; + $109 = (($107) - ($108))|0; + $110 = HEAP32[$5>>2]|0; + $111 = ((($110)) + 32|0); + $117 = 1;$120 = $105;$linpos$023$i = 0;$pos$022$i = $109; + while(1) { + $114 = (($4) + ($pos$022$i<<2)|0); + $115 = +HEAPF32[$114>>2]; + $116 = (($104) + ($117<<2)|0); + $118 = HEAP32[$116>>2]|0; + $119 = (($118) + ($120))|0; + $121 = $119 >> 1; + $122 = (($121) - ($108))|0; + $123 = +HEAPF32[$111>>2]; + $124 = $115 > $123; + $minV$0$ph$i = $124 ? $123 : $115; + $125 = ($pos$022$i|0)<($122|0); + L37: do { + if ($125) { + $$in$i = $pos$022$i;$minV$0$ph313$i = $minV$0$ph$i; + while(1) { + $126 = $minV$0$ph313$i == -9999.0; + $$in28$i = $$in$i; + while(1) { + $127 = (($$in28$i) + 1)|0; + $128 = (($4) + ($127<<2)|0); + $129 = +HEAPF32[$128>>2]; + $130 = $129 > -9999.0; + if ($130) { + $131 = $129 < $minV$0$ph313$i; + $or$cond$i = $126 | $131; + if ($or$cond$i) { + $$lcssa = $127;$$lcssa68 = $129; + break; + } + } else { + if ($126) { + $$lcssa = $127;$$lcssa68 = $129; + break; + } + } + $132 = ($127|0)<($122|0); + if ($132) { + $$in28$i = $127; + } else { + $minV$0$ph3$lcssa$i = $minV$0$ph313$i;$pos$1$lcssa$i = $127; + break L37; + } + } + $133 = ($$lcssa|0)<($122|0); + if ($133) { + $$in$i = $$lcssa;$minV$0$ph313$i = $$lcssa68; + } else { + $minV$0$ph3$lcssa$i = $$lcssa68;$pos$1$lcssa$i = $$lcssa; + break; + } + } + } else { + $minV$0$ph3$lcssa$i = $minV$0$ph$i;$pos$1$lcssa$i = $pos$022$i; + } + } while(0); + $134 = (($pos$1$lcssa$i) + ($108))|0; + $135 = ($linpos$023$i|0)>=($100|0); + $136 = ($120|0)>($134|0); + $or$cond = $135 | $136; + L48: do { + if ($or$cond) { + $linpos$1$lcssa$i = $linpos$023$i; + } else { + $linpos$116$i16 = $linpos$023$i; + while(1) { + $137 = (($logmask) + ($linpos$116$i16<<2)|0); + $138 = +HEAPF32[$137>>2]; + $139 = $138 < $minV$0$ph3$lcssa$i; + if ($139) { + HEAPF32[$137>>2] = $minV$0$ph3$lcssa$i; + } + $140 = (($linpos$116$i16) + 1)|0; + $141 = ($140|0)<($100|0); + if (!($141)) { + $linpos$1$lcssa$i = $140; + break L48; + } + $$phi$trans$insert37$i = (($104) + ($140<<2)|0); + $$pre38$i = HEAP32[$$phi$trans$insert37$i>>2]|0; + $142 = ($$pre38$i|0)>($134|0); + if ($142) { + $linpos$1$lcssa$i = $140; + break; + } else { + $linpos$116$i16 = $140; + } + } + } + } while(0); + $112 = (($linpos$1$lcssa$i) + 1)|0; + $113 = ($112|0)<($100|0); + if (!($113)) { + $linpos$0$lcssa$i = $linpos$1$lcssa$i; + break L33; + } + $$phi$trans$insert$i = (($104) + ($linpos$1$lcssa$i<<2)|0); + $$pre$i = HEAP32[$$phi$trans$insert$i>>2]|0; + $117 = $112;$120 = $$pre$i;$linpos$023$i = $linpos$1$lcssa$i;$pos$022$i = $pos$1$lcssa$i; + } + } else { + $linpos$0$lcssa$i = 0; + } + } while(0); + $143 = HEAP32[$1>>2]|0; + $144 = (($143) + -1)|0; + $145 = (($4) + ($144<<2)|0); + $146 = +HEAPF32[$145>>2]; + $147 = ($linpos$0$lcssa$i|0)<($100|0); + if ($147) { + $linpos$27$i = $linpos$0$lcssa$i; + } else { + STACKTOP = sp;return; + } + while(1) { + $148 = (($logmask) + ($linpos$27$i<<2)|0); + $149 = +HEAPF32[$148>>2]; + $150 = $149 < $146; + if ($150) { + HEAPF32[$148>>2] = $146; + } + $151 = (($linpos$27$i) + 1)|0; + $exitcond = ($151|0)==($100|0); + if ($exitcond) { + break; + } else { + $linpos$27$i = $151; + } + } + STACKTOP = sp;return; +} +function __vp_offset_and_mix($p,$noise,$tone,$offset_select,$logmask,$mdct,$logmdct) { + $p = $p|0; + $noise = $noise|0; + $tone = $tone|0; + $offset_select = $offset_select|0; + $logmask = $logmask|0; + $mdct = $mdct|0; + $logmdct = $logmdct|0; + var $$val$0 = 0.0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0.0, $15 = 0.0, $16 = 0.0, $17 = 0, $18 = 0.0, $19 = 0, $2 = 0, $20 = 0.0, $21 = 0.0, $22 = 0.0, $23 = 0, $24 = 0, $25 = 0.0; + var $26 = 0.0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0.0, $31 = 0.0, $32 = 0, $33 = 0.0, $34 = 0.0, $35 = 0.0, $36 = 0.0, $37 = 0.0, $38 = 0, $39 = 0.0, $4 = 0.0, $40 = 0.0, $41 = 0.0, $42 = 0, $43 = 0.0; + var $44 = 0.0, $45 = 0, $5 = 0, $6 = 0, $7 = 0.0, $8 = 0, $9 = 0, $de$0 = 0.0, $exitcond = 0, $i$01 = 0, $val$0 = 0.0, label = 0, sp = 0; + sp = STACKTOP; + $0 = HEAP32[$p>>2]|0; + $1 = ((($p)) + 4|0); + $2 = HEAP32[$1>>2]|0; + $3 = (((($2)) + 12|0) + ($offset_select<<2)|0); + $4 = +HEAPF32[$3>>2]; + $5 = ($0|0)>(0); + if (!($5)) { + return; + } + $6 = ((($p)) + 48|0); + $7 = +HEAPF32[$6>>2]; + $8 = ((($p)) + 12|0); + $9 = HEAP32[$8>>2]|0; + $10 = (($9) + ($offset_select<<2)|0); + $11 = HEAP32[$10>>2]|0; + $12 = ((($2)) + 108|0); + $13 = ($offset_select|0)==(1); + $14 = $7; + $15 = $14 * 0.0050000000000000001; + $16 = $14 * 2.9999999999999997E-4; + $i$01 = 0; + while(1) { + $17 = (($noise) + ($i$01<<2)|0); + $18 = +HEAPF32[$17>>2]; + $19 = (($11) + ($i$01<<2)|0); + $20 = +HEAPF32[$19>>2]; + $21 = $20 + $18; + $22 = +HEAPF32[$12>>2]; + $23 = $21 > $22; + $val$0 = $23 ? $22 : $21; + $24 = (($tone) + ($i$01<<2)|0); + $25 = +HEAPF32[$24>>2]; + $26 = $25 + $4; + $27 = $val$0 < $26; + $$val$0 = $27 ? $26 : $val$0; + $28 = (($logmask) + ($i$01<<2)|0); + HEAPF32[$28>>2] = $$val$0; + if ($13) { + $29 = (($logmdct) + ($i$01<<2)|0); + $30 = +HEAPF32[$29>>2]; + $31 = $val$0 - $30; + $32 = $31 > -17.200000762939453; + $33 = $31 + 17.200000762939453; + $34 = $33; + if ($32) { + $35 = $15 * $34; + $36 = 1.0 - $35; + $37 = $36; + $38 = $37 < 0.0; + if ($38) { + $de$0 = 9.9999997473787516E-5; + } else { + $de$0 = $37; + } + } else { + $39 = $16 * $34; + $40 = 1.0 - $39; + $41 = $40; + $de$0 = $41; + } + $42 = (($mdct) + ($i$01<<2)|0); + $43 = +HEAPF32[$42>>2]; + $44 = $43 * $de$0; + HEAPF32[$42>>2] = $44; + } + $45 = (($i$01) + 1)|0; + $exitcond = ($45|0)==($0|0); + if ($exitcond) { + break; + } else { + $i$01 = $45; + } + } + return; +} +function __vp_ampmax_decay($amp,$vd) { + $amp = +$amp; + $vd = $vd|0; + var $$0 = 0.0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0.0, $13 = 0.0, $14 = 0, $15 = 0.0, $16 = 0.0, $17 = 0.0, $18 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0.0; + var label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($vd)) + 4|0); + $1 = HEAP32[$0>>2]|0; + $2 = ((($1)) + 28|0); + $3 = HEAP32[$2>>2]|0; + $4 = ((($vd)) + 40|0); + $5 = HEAP32[$4>>2]|0; + $6 = (($3) + ($5<<2)|0); + $7 = HEAP32[$6>>2]|0; + $8 = (($7|0) / 2)&-1; + $9 = (+($8|0)); + $10 = ((($1)) + 8|0); + $11 = HEAP32[$10>>2]|0; + $12 = (+($11|0)); + $13 = $9 / $12; + $14 = ((($3)) + 2936|0); + $15 = +HEAPF32[$14>>2]; + $16 = $15 * $13; + $17 = $16 + $amp; + $18 = $17 < -9999.0; + $$0 = $18 ? -9999.0 : $17; + return (+$$0); +} +function __vp_couple_quantize_normalize($blobno,$g,$p,$vi,$mdct,$iwork,$nonzero,$sliding_lowpass,$ch) { + $blobno = $blobno|0; + $g = $g|0; + $p = $p|0; + $vi = $vi|0; + $mdct = $mdct|0; + $iwork = $iwork|0; + $nonzero = $nonzero|0; + $sliding_lowpass = $sliding_lowpass|0; + $ch = $ch|0; + var $$ = 0, $$$i = 0, $$alloca_mul = 0, $$alloca_mul1 = 0, $$alloca_mul11 = 0, $$alloca_mul13 = 0, $$alloca_mul15 = 0, $$alloca_mul3 = 0, $$alloca_mul5 = 0, $$alloca_mul7 = 0, $$alloca_mul9 = 0, $$phi$trans$insert67 = 0, $$pre = 0, $$pre$phi76Z2D = 0, $$pre$phiZ2D = 0, $$pre63 = 0, $$pre64 = 0, $$pre65 = 0, $$pre68 = 0, $$pre69 = 0; + var $$pre70 = 0, $$pre71 = 0, $$pre72 = 0, $$pre75 = 0, $$sum = 0, $$sum11 = 0, $$sum12 = 0, $$sum14 = 0, $$sum5 = 0, $$v = 0.0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0.0, $102 = 0.0, $103 = 0, $104 = 0, $105 = 0, $106 = 0; + var $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0.0, $112 = 0.0, $113 = 0, $114 = 0, $115 = 0.0, $116 = 0, $117 = 0.0, $118 = 0.0, $119 = 0, $12 = 0, $120 = 0.0, $121 = 0.0, $122 = 0, $123 = 0, $124 = 0; + var $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0.0, $140 = 0, $141 = 0, $142 = 0; + var $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0; + var $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0.0, $172 = 0, $173 = 0.0, $174 = 0.0, $175 = 0, $176 = 0.0, $177 = 0, $178 = 0.0, $179 = 0.0; + var $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0; + var $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0.0, $206 = 0, $207 = 0.0, $208 = 0.0, $209 = 0, $21 = 0, $210 = 0, $211 = 0.0, $212 = 0, $213 = 0.0, $214 = 0.0; + var $215 = 0, $216 = 0.0, $217 = 0, $218 = 0.0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0.0, $223 = 0, $224 = 0.0, $225 = 0.0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0; + var $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $26 = 0; + var $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0; + var $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0; + var $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0; + var $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0.0, $98 = 0, $99 = 0.0; + var $exitcond = 0, $exitcond$i = 0, $exitcond50 = 0, $exitcond54 = 0, $exitcond56 = 0, $exitcond60 = 0, $exitcond61 = 0, $exitcond6189 = 0, $fabsf = 0.0, $fabsf$i = 0.0, $fabsf1 = 0.0, $fabsf2 = 0.0, $fabsf3 = 0.0, $fabsf4 = 0.0, $i$242 = 0, $i$320 = 0, $indvars$iv$next58 = 0, $indvars$iv57 = 0, $ispos = 0, $ispos7 = 0; + var $ispos9 = 0, $j$01$i = 0, $j$022 = 0, $j$125 = 0, $j$227 = 0, $j$333 = 0, $k$030 = 0, $neg = 0, $neg10 = 0, $neg8 = 0, $not$$i = 0, $p$idx$val = 0, $p$idx13$val = 0, $postpoint$0$in = 0.0, $postpoint$0$in$in = 0, $smax59 = 0, $step$039 = 0, $stereo_threshholds_limited$stereo_threshholds = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = HEAP32[$p>>2]|0; + $1 = ((($p)) + 4|0); + $2 = HEAP32[$1>>2]|0; + $3 = ((($2)) + 500|0); + $4 = HEAP32[$3>>2]|0; + $5 = ($4|0)==(0); + if ($5) { + $26 = 16; + } else { + $6 = ((($2)) + 508|0); + $7 = HEAP32[$6>>2]|0; + $26 = $7; + } + $8 = HEAP32[$2>>2]|0; + $9 = ((((($g)) + 132|0) + (($8*60)|0)|0) + ($blobno<<2)|0); + $10 = HEAP32[$9>>2]|0; + $11 = (((($g)) + 252|0) + ($blobno<<2)|0); + $12 = HEAP32[$11>>2]|0; + $13 = (1624 + ($12<<3)|0); + $14 = +HEAPF64[$13>>3]; + $15 = (((($g)) + 312|0) + ($blobno<<2)|0); + $16 = HEAP32[$15>>2]|0; + $17 = $ch << 2; + $$alloca_mul = $17; + $18 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul)|0)+15)&-16)|0;; + $$alloca_mul1 = $17; + $19 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul1)|0)+15)&-16)|0;; + $$alloca_mul3 = $17; + $20 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul3)|0)+15)&-16)|0;; + $$alloca_mul5 = $17; + $21 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul5)|0)+15)&-16)|0;; + $$alloca_mul7 = $17; + $22 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul7)|0)+15)&-16)|0;; + $23 = ((($vi)) + 1156|0); + $24 = ($0|0)>(1000); + $stereo_threshholds_limited$stereo_threshholds = $24 ? 1696 : 1624; + $postpoint$0$in$in = (($stereo_threshholds_limited$stereo_threshholds) + ($16<<3)|0); + $postpoint$0$in = +HEAPF64[$postpoint$0$in$in>>3]; + $25 = Math_imul($17, $26)|0; + $$alloca_mul9 = $25; + $27 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul9)|0)+15)&-16)|0;; + HEAP32[$18>>2] = $27; + $$alloca_mul11 = $25; + $28 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul11)|0)+15)&-16)|0;; + HEAP32[$19>>2] = $28; + $$alloca_mul13 = $25; + $29 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul13)|0)+15)&-16)|0;; + HEAP32[$20>>2] = $29; + $$alloca_mul15 = $25; + $30 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul15)|0)+15)&-16)|0;; + HEAP32[$21>>2] = $30; + $31 = ($ch|0)>(1); + if ($31) { + $32 = (($27) + ($26<<2)|0); + $33 = ((($18)) + 4|0); + HEAP32[$33>>2] = $32; + $34 = (($28) + ($26<<2)|0); + $35 = ((($19)) + 4|0); + HEAP32[$35>>2] = $34; + $36 = (($29) + ($26<<2)|0); + $37 = ((($20)) + 4|0); + HEAP32[$37>>2] = $36; + $38 = (($30) + ($26<<2)|0); + $39 = ((($21)) + 4|0); + HEAP32[$39>>2] = $38; + $exitcond6189 = ($ch|0)==(2); + if (!($exitcond6189)) { + $43 = 2; + while(1) { + $$pre = HEAP32[$18>>2]|0; + $$pre63 = HEAP32[$19>>2]|0; + $$pre64 = HEAP32[$20>>2]|0; + $$pre65 = HEAP32[$21>>2]|0; + $42 = Math_imul($43, $26)|0; + $44 = (($$pre) + ($42<<2)|0); + $45 = (($18) + ($43<<2)|0); + HEAP32[$45>>2] = $44; + $46 = (($$pre63) + ($42<<2)|0); + $47 = (($19) + ($43<<2)|0); + HEAP32[$47>>2] = $46; + $48 = (($$pre64) + ($42<<2)|0); + $49 = (($20) + ($43<<2)|0); + HEAP32[$49>>2] = $48; + $50 = (($$pre65) + ($42<<2)|0); + $51 = (($21) + ($43<<2)|0); + HEAP32[$51>>2] = $50; + $52 = (($43) + 1)|0; + $exitcond61 = ($52|0)==($ch|0); + if ($exitcond61) { + break; + } else { + $43 = $52; + } + } + } + } + $40 = HEAP32[$23>>2]|0; + $41 = ($0|0)>(0); + if ($41) { + $53 = HEAP32[$21>>2]|0; + $54 = ($ch|0)>(0); + $55 = $0 ^ -1; + $56 = $26 ^ -1; + $i$242 = 0;$indvars$iv57 = $55; + while(1) { + $59 = ($indvars$iv57|0)>($56|0); + $smax59 = $59 ? $indvars$iv57 : $56; + $60 = $smax59 ^ -1; + $61 = (($0) - ($i$242))|0; + $62 = ($26|0)>($61|0); + $$ = $62 ? $61 : $26; + _memcpy(($22|0),($nonzero|0),($17|0))|0; + _memset(($53|0),0,($25|0))|0; + if ($54) { + $63 = ($$|0)>(0); + $64 = (($10) - ($i$242))|0; + $k$030 = 0; + while(1) { + $70 = (($iwork) + ($k$030<<2)|0); + $71 = HEAP32[$70>>2]|0; + $72 = (($71) + ($i$242<<2)|0); + $73 = (($22) + ($k$030<<2)|0); + $74 = HEAP32[$73>>2]|0; + $75 = ($74|0)==(0); + if ($75) { + if ($63) { + $78 = (($20) + ($k$030<<2)|0); + $79 = HEAP32[$78>>2]|0; + $80 = (($18) + ($k$030<<2)|0); + $81 = HEAP32[$80>>2]|0; + $82 = (($19) + ($k$030<<2)|0); + $83 = HEAP32[$82>>2]|0; + $84 = (($21) + ($k$030<<2)|0); + $85 = HEAP32[$84>>2]|0; + $j$227 = 0; + while(1) { + $125 = (($79) + ($j$227<<2)|0); + HEAPF32[$125>>2] = 1.000000013351432E-10; + $126 = (($81) + ($j$227<<2)|0); + HEAPF32[$126>>2] = 0.0; + $127 = (($83) + ($j$227<<2)|0); + HEAPF32[$127>>2] = 0.0; + $128 = (($85) + ($j$227<<2)|0); + HEAP32[$128>>2] = 0; + $$sum11 = (($j$227) + ($i$242))|0; + $129 = (($71) + ($$sum11<<2)|0); + HEAP32[$129>>2] = 0; + $130 = (($j$227) + 1)|0; + $exitcond54 = ($130|0)==($60|0); + if ($exitcond54) { + break; + } else { + $j$227 = $130; + } + } + } + } else { + $76 = (($20) + ($k$030<<2)|0); + $77 = HEAP32[$76>>2]|0; + if ($63) { + $j$022 = 0; + while(1) { + $$sum12 = (($j$022) + ($i$242))|0; + $86 = (($71) + ($$sum12<<2)|0); + $87 = HEAP32[$86>>2]|0; + $88 = (1768 + ($87<<2)|0); + $89 = HEAP32[$88>>2]|0; + $90 = (($77) + ($j$022<<2)|0); + HEAP32[$90>>2] = $89; + $91 = (($j$022) + 1)|0; + $exitcond = ($91|0)==($60|0); + if ($exitcond) { + break; + } else { + $j$022 = $91; + } + } + $92 = (($mdct) + ($k$030<<2)|0); + $93 = HEAP32[$92>>2]|0; + $94 = (($21) + ($k$030<<2)|0); + $95 = HEAP32[$94>>2]|0; + if ($63) { + $j$01$i = 0; + while(1) { + $96 = ($j$01$i|0)>=($64|0); + $$v = $96 ? $postpoint$0$in : $14; + $97 = $$v; + $$sum14 = (($j$01$i) + ($i$242))|0; + $98 = (($93) + ($$sum14<<2)|0); + $99 = +HEAPF32[$98>>2]; + $fabsf$i = (+Math_abs((+$99))); + $100 = (($77) + ($j$01$i<<2)|0); + $101 = +HEAPF32[$100>>2]; + $102 = $fabsf$i / $101; + $103 = (($95) + ($j$01$i<<2)|0); + $not$$i = !($102 < $97); + $$$i = $not$$i&1; + HEAP32[$103>>2] = $$$i; + $104 = (($j$01$i) + 1)|0; + $exitcond$i = ($104|0)==($$|0); + if ($exitcond$i) { + break; + } else { + $j$01$i = $104; + } + } + if ($63) { + $105 = (($18) + ($k$030<<2)|0); + $106 = HEAP32[$105>>2]|0; + $107 = (($19) + ($k$030<<2)|0); + $108 = HEAP32[$107>>2]|0; + $j$125 = 0; + while(1) { + $109 = (($j$125) + ($i$242))|0; + $110 = (($93) + ($109<<2)|0); + $111 = +HEAPF32[$110>>2]; + $112 = $111 * $111; + $113 = (($106) + ($j$125<<2)|0); + HEAPF32[$113>>2] = $112; + $114 = (($108) + ($j$125<<2)|0); + HEAPF32[$114>>2] = $112; + $115 = +HEAPF32[$110>>2]; + $116 = $115 < 0.0; + if ($116) { + $117 = +HEAPF32[$113>>2]; + $118 = -$117; + HEAPF32[$113>>2] = $118; + } + $119 = (($77) + ($j$125<<2)|0); + $120 = +HEAPF32[$119>>2]; + $121 = $120 * $120; + HEAPF32[$119>>2] = $121; + $122 = (($j$125) + 1)|0; + $exitcond50 = ($122|0)==($60|0); + if ($exitcond50) { + $$pre$phi76Z2D = $107;$124 = $106; + break; + } else { + $j$125 = $122; + } + } + } else { + label = 21; + } + } else { + label = 21; + } + } else { + label = 21; + } + if ((label|0) == 21) { + label = 0; + $$phi$trans$insert67 = (($18) + ($k$030<<2)|0); + $$pre68 = HEAP32[$$phi$trans$insert67>>2]|0; + $$pre75 = (($19) + ($k$030<<2)|0); + $$pre$phi76Z2D = $$pre75;$124 = $$pre68; + } + $123 = HEAP32[$$pre$phi76Z2D>>2]|0; + $p$idx$val = HEAP32[$1>>2]|0; + (+_noise_normalize($p$idx$val,$10,$124,$123,$77,0,$i$242,$$,$72)); + } + $131 = (($k$030) + 1)|0; + $exitcond56 = ($131|0)==($ch|0); + if ($exitcond56) { + break; + } else { + $k$030 = $131; + } + } + } + $65 = HEAP32[$23>>2]|0; + $66 = ($65|0)>(0); + if ($66) { + $67 = ($$|0)>(0); + $68 = (($sliding_lowpass) - ($i$242))|0; + $69 = (($10) - ($i$242))|0; + $249 = $65;$step$039 = 0; + while(1) { + $132 = (((($vi)) + 1160|0) + ($step$039<<2)|0); + $133 = HEAP32[$132>>2]|0; + $134 = (((($vi)) + 2184|0) + ($step$039<<2)|0); + $135 = HEAP32[$134>>2]|0; + $136 = (($iwork) + ($133<<2)|0); + $137 = HEAP32[$136>>2]|0; + $138 = (($137) + ($i$242<<2)|0); + $139 = (($iwork) + ($135<<2)|0); + $140 = HEAP32[$139>>2]|0; + $141 = (($18) + ($133<<2)|0); + $142 = HEAP32[$141>>2]|0; + $143 = (($18) + ($135<<2)|0); + $144 = HEAP32[$143>>2]|0; + $145 = (($19) + ($133<<2)|0); + $146 = HEAP32[$145>>2]|0; + $147 = (($19) + ($135<<2)|0); + $148 = HEAP32[$147>>2]|0; + $149 = (($20) + ($133<<2)|0); + $150 = HEAP32[$149>>2]|0; + $151 = (($20) + ($135<<2)|0); + $152 = HEAP32[$151>>2]|0; + $153 = (($21) + ($133<<2)|0); + $154 = HEAP32[$153>>2]|0; + $155 = (($21) + ($135<<2)|0); + $156 = HEAP32[$155>>2]|0; + $157 = (($22) + ($133<<2)|0); + $158 = HEAP32[$157>>2]|0; + $159 = ($158|0)==(0); + $160 = (($22) + ($135<<2)|0); + if ($159) { + $161 = HEAP32[$160>>2]|0; + $162 = ($161|0)==(0); + if ($162) { + $229 = $249; + } else { + label = 31; + } + } else { + label = 31; + } + if ((label|0) == 31) { + label = 0; + HEAP32[$160>>2] = 1; + HEAP32[$157>>2] = 1; + if ($67) { + $j$333 = 0; + while(1) { + $163 = ($j$333|0)<($68|0); + do { + if ($163) { + $164 = (($154) + ($j$333<<2)|0); + $165 = HEAP32[$164>>2]|0; + $166 = ($165|0)==(0); + $167 = (($156) + ($j$333<<2)|0); + if ($166) { + $168 = HEAP32[$167>>2]|0; + $169 = ($168|0)==(0); + if ($169) { + $203 = ($j$333|0)<($69|0); + do { + if ($203) { + $204 = (($144) + ($j$333<<2)|0); + $205 = +HEAPF32[$204>>2]; + $206 = (($142) + ($j$333<<2)|0); + $207 = +HEAPF32[$206>>2]; + $208 = $207 + $205; + HEAPF32[$206>>2] = $208; + $fabsf2 = (+Math_abs((+$208))); + $209 = (($146) + ($j$333<<2)|0); + HEAPF32[$209>>2] = $fabsf2; + $$pre$phiZ2D = $204; + } else { + $210 = (($142) + ($j$333<<2)|0); + $211 = +HEAPF32[$210>>2]; + $212 = (($144) + ($j$333<<2)|0); + $213 = +HEAPF32[$212>>2]; + $214 = $213 + $211; + $215 = $214 < 0.0; + $fabsf = (+Math_abs((+$211))); + $fabsf1 = (+Math_abs((+$213))); + $216 = $fabsf1 + $fabsf; + $217 = (($146) + ($j$333<<2)|0); + HEAPF32[$217>>2] = $216; + if ($215) { + $218 = -$216; + HEAPF32[$210>>2] = $218; + $$pre$phiZ2D = $212; + break; + } else { + HEAPF32[$210>>2] = $216; + $$pre$phiZ2D = $212; + break; + } + } + } while(0); + $219 = (($148) + ($j$333<<2)|0); + HEAPF32[$219>>2] = 0.0; + HEAPF32[$$pre$phiZ2D>>2] = 0.0; + HEAP32[$167>>2] = 1; + $$sum = (($j$333) + ($i$242))|0; + $220 = (($140) + ($$sum<<2)|0); + HEAP32[$220>>2] = 0; + break; + } + } + $170 = (($142) + ($j$333<<2)|0); + $171 = +HEAPF32[$170>>2]; + $fabsf3 = (+Math_abs((+$171))); + $172 = (($144) + ($j$333<<2)|0); + $173 = +HEAPF32[$172>>2]; + $fabsf4 = (+Math_abs((+$173))); + $174 = $fabsf4 + $fabsf3; + HEAPF32[$170>>2] = $174; + $175 = (($146) + ($j$333<<2)|0); + $176 = +HEAPF32[$175>>2]; + $177 = (($148) + ($j$333<<2)|0); + $178 = +HEAPF32[$177>>2]; + $179 = $178 + $176; + HEAPF32[$175>>2] = $179; + HEAP32[$167>>2] = 1; + HEAP32[$164>>2] = 1; + $$sum5 = (($j$333) + ($i$242))|0; + $180 = (($137) + ($$sum5<<2)|0); + $181 = HEAP32[$180>>2]|0; + $182 = (($140) + ($$sum5<<2)|0); + $183 = HEAP32[$182>>2]|0; + $ispos = ($181|0)>(-1); + $neg = (0 - ($181))|0; + $184 = $ispos ? $181 : $neg; + $ispos7 = ($183|0)>(-1); + $neg8 = (0 - ($183))|0; + $185 = $ispos7 ? $183 : $neg8; + $186 = ($184|0)>($185|0); + if ($186) { + $187 = ($181|0)>(0); + $188 = (($181) - ($183))|0; + $189 = (($183) - ($181))|0; + $190 = $187 ? $188 : $189; + HEAP32[$182>>2] = $190; + $$pre70 = HEAP32[$180>>2]|0; + $195 = $$pre70;$198 = $190; + } else { + $191 = ($183|0)>(0); + $192 = (($181) - ($183))|0; + $193 = (($183) - ($181))|0; + $194 = $191 ? $192 : $193; + HEAP32[$182>>2] = $194; + HEAP32[$180>>2] = $183; + $$pre69 = HEAP32[$182>>2]|0; + $195 = $183;$198 = $$pre69; + } + $ispos9 = ($195|0)>(-1); + $neg10 = (0 - ($195))|0; + $196 = $ispos9 ? $195 : $neg10; + $197 = $196 << 1; + $199 = ($198|0)<($197|0); + if (!($199)) { + $200 = (0 - ($198))|0; + HEAP32[$182>>2] = $200; + $201 = HEAP32[$180>>2]|0; + $202 = (0 - ($201))|0; + HEAP32[$180>>2] = $202; + } + } + } while(0); + $221 = (($150) + ($j$333<<2)|0); + $222 = +HEAPF32[$221>>2]; + $223 = (($152) + ($j$333<<2)|0); + $224 = +HEAPF32[$223>>2]; + $225 = $224 + $222; + HEAPF32[$223>>2] = $225; + HEAPF32[$221>>2] = $225; + $226 = (($j$333) + 1)|0; + $exitcond60 = ($226|0)==($60|0); + if ($exitcond60) { + break; + } else { + $j$333 = $226; + } + } + } + $p$idx13$val = HEAP32[$1>>2]|0; + (+_noise_normalize($p$idx13$val,$10,$142,$146,$150,$154,$i$242,$$,$138)); + $$pre71 = HEAP32[$23>>2]|0; + $229 = $$pre71; + } + $227 = (($step$039) + 1)|0; + $228 = ($227|0)<($229|0); + if ($228) { + $249 = $229;$step$039 = $227; + } else { + $248 = $229; + break; + } + } + } else { + $248 = $65; + } + $230 = (($i$242) + ($26))|0; + $231 = ($0|0)>($230|0); + $indvars$iv$next58 = (($indvars$iv57) + ($26))|0; + if ($231) { + $i$242 = $230;$indvars$iv57 = $indvars$iv$next58; + } else { + $57 = $248; + break; + } + } + } else { + $57 = $40; + } + $58 = ($57|0)>(0); + if ($58) { + $247 = $57;$i$320 = 0; + } else { + STACKTOP = sp;return; + } + while(1) { + $232 = (((($vi)) + 1160|0) + ($i$320<<2)|0); + $233 = HEAP32[$232>>2]|0; + $234 = (($nonzero) + ($233<<2)|0); + $235 = HEAP32[$234>>2]|0; + $236 = ($235|0)==(0); + $237 = (((($vi)) + 2184|0) + ($i$320<<2)|0); + if ($236) { + $238 = HEAP32[$237>>2]|0; + $239 = (($nonzero) + ($238<<2)|0); + $240 = HEAP32[$239>>2]|0; + $241 = ($240|0)==(0); + if ($241) { + $246 = $247; + } else { + label = 52; + } + } else { + label = 52; + } + if ((label|0) == 52) { + label = 0; + HEAP32[$234>>2] = 1; + $242 = HEAP32[$237>>2]|0; + $243 = (($nonzero) + ($242<<2)|0); + HEAP32[$243>>2] = 1; + $$pre72 = HEAP32[$23>>2]|0; + $246 = $$pre72; + } + $244 = (($i$320) + 1)|0; + $245 = ($244|0)<($246|0); + if ($245) { + $247 = $246;$i$320 = $244; + } else { + break; + } + } + STACKTOP = sp;return; +} +function _setup_tone_curves($curveatt_dB,$binHz,$n,$center_boost,$center_decay_rate) { + $curveatt_dB = $curveatt_dB|0; + $binHz = +$binHz; + $n = $n|0; + $center_boost = +$center_boost; + $center_decay_rate = +$center_decay_rate; + var $$$$us$us$us = 0.0, $$$$us68 = 0.0, $$$us$us$us = 0.0, $$$us$us81 = 0.0, $$5 = 0, $$6 = 0, $$8 = 0, $$alloca_mul = 0, $$op = 0.0, $$op$op$op = 0.0, $$op123 = 0, $$op124 = 0, $$op125 = 0, $$op126 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0.0, $101 = 0, $102 = 0.0; + var $103 = 0, $104 = 0, $105 = 0, $106 = 0.0, $107 = 0, $108 = 0.0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0.0, $116 = 0.0, $117 = 0.0, $118 = 0.0, $119 = 0.0, $12 = 0, $120 = 0.0; + var $121 = 0.0, $122 = 0, $123 = 0.0, $124 = 0.0, $125 = 0.0, $126 = 0.0, $127 = 0.0, $128 = 0.0, $129 = 0.0, $13 = 0, $130 = 0.0, $131 = 0, $132 = 0, $133 = 0.0, $134 = 0.0, $135 = 0.0, $136 = 0.0, $137 = 0.0, $138 = 0.0, $139 = 0.0; + var $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0.0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0.0, $153 = 0.0, $154 = 0, $155 = 0, $156 = 0.0, $157 = 0.0; + var $158 = 0.0, $159 = 0.0, $16 = 0, $160 = 0.0, $161 = 0.0, $162 = 0.0, $163 = 0.0, $164 = 0, $165 = 0.0, $166 = 0.0, $167 = 0.0, $168 = 0.0, $169 = 0.0, $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0; + var $176 = 0, $177 = 0, $178 = 0, $179 = 0.0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0; + var $194 = 0, $195 = 0, $196 = 0.0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0.0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0; + var $211 = 0.0, $212 = 0.0, $213 = 0.0, $214 = 0.0, $215 = 0.0, $216 = 0.0, $217 = 0.0, $218 = 0.0, $219 = 0, $22 = 0, $220 = 0.0, $221 = 0.0, $222 = 0.0, $223 = 0.0, $224 = 0.0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0; + var $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0.0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0; + var $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0.0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0.0, $257 = 0, $258 = 0, $259 = 0, $26 = 0.0, $260 = 0.0, $261 = 0, $262 = 0.0, $263 = 0.0, $264 = 0.0, $265 = 0.0; + var $266 = 0.0, $267 = 0.0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0; + var $284 = 0.0, $285 = 0, $286 = 0, $287 = 0, $288 = 0.0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0.0, $293 = 0, $294 = 0, $295 = 0, $296 = 0.0, $297 = 0, $298 = 0, $299 = 0.0, $3 = 0, $30 = 0, $300 = 0; + var $301 = 0, $302 = 0.0, $303 = 0, $304 = 0, $305 = 0.0, $306 = 0, $307 = 0, $308 = 0.0, $309 = 0, $31 = 0, $310 = 0, $311 = 0.0, $312 = 0, $313 = 0, $314 = 0.0, $315 = 0, $316 = 0, $317 = 0.0, $318 = 0, $319 = 0; + var $32 = 0.0, $320 = 0.0, $321 = 0, $322 = 0, $323 = 0.0, $324 = 0, $325 = 0, $326 = 0.0, $327 = 0, $328 = 0, $329 = 0.0, $33 = 0.0, $330 = 0, $331 = 0, $332 = 0.0, $333 = 0, $334 = 0, $335 = 0.0, $336 = 0, $337 = 0; + var $338 = 0, $339 = 0.0, $34 = 0.0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0.0, $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0, $350 = 0, $351 = 0.0, $352 = 0, $353 = 0, $354 = 0, $36 = 0; + var $37 = 0.0, $38 = 0.0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0.0, $43 = 0.0, $44 = 0.0, $45 = 0, $46 = 0, $47 = 0, $48 = 0.0, $49 = 0.0, $5 = 0.0, $50 = 0, $51 = 0, $52 = 0.0, $53 = 0.0, $54 = 0; + var $55 = 0, $56 = 0.0, $57 = 0.0, $58 = 0.0, $59 = 0, $6 = 0, $60 = 0, $61 = 0.0, $62 = 0.0, $63 = 0, $64 = 0, $65 = 0, $66 = 0.0, $67 = 0.0, $68 = 0.0, $69 = 0, $7 = 0, $70 = 0.0, $71 = 0.0, $72 = 0; + var $73 = 0, $74 = 0, $75 = 0.0, $76 = 0.0, $77 = 0.0, $78 = 0.0, $79 = 0, $8 = 0, $80 = 0.0, $81 = 0.0, $82 = 0, $83 = 0, $84 = 0.0, $85 = 0.0, $86 = 0.0, $87 = 0, $88 = 0.0, $89 = 0.0, $9 = 0, $90 = 0; + var $91 = 0, $92 = 0.0, $93 = 0, $94 = 0.0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $ath = 0, $athc = 0, $exitcond = 0, $exitcond$i = 0, $exitcond$i11 = 0, $exitcond$i13 = 0, $exitcond$i16 = 0, $exitcond$i18 = 0, $exitcond104 = 0, $exitcond105 = 0, $exitcond106 = 0; + var $exitcond107 = 0, $exitcond108 = 0, $exitcond109 = 0, $exitcond111 = 0, $exitcond113 = 0, $exitcond114 = 0, $exitcond115 = 0, $exitcond116 = 0, $exitcond117 = 0, $exitcond118 = 0, $exitcond119 = 0, $exitcond120 = 0, $exitcond121 = 0, $exitcond95 = 0, $exitcond96 = 0, $exitcond97 = 0, $hi_bin$0 = 0, $hi_bin3$0 = 0, $i$01$i = 0, $i$01$i10 = 0; + var $i$01$i12 = 0, $i$01$i15 = 0, $i$01$i17 = 0, $i$088 = 0, $i$1$ = 0, $i$158 = 0, $ispos = 0, $ispos$us$us$us = 0, $ispos$us$us79 = 0, $ispos$us65 = 0, $j$061 = 0, $j$10$lcssa = 0, $j$1054 = 0, $j$269 = 0, $j$269$us = 0, $j$386 = 0, $j$487 = 0, $j$533 = 0, $j$638 = 0, $j$749 = 0; + var $j$852 = 0, $j$9$lcssa = 0.0, $k$163 = 0, $k$163$us$us$us = 0, $k$163$us$us78 = 0, $k$163$us64 = 0, $k$241 = 0, $l$037 = 0, $l$2$lcssa = 0, $l$2$lcssa$lcssa = 0, $l$235 = 0, $l$339 = 0, $l1$048 = 0, $l1$2$lcssa = 0, $l1$2$lcssa$lcssa = 0, $l1$244 = 0, $l1$350 = 0, $lo_bin$1 = 0, $lo_bin$1$l$0 = 0, $lo_bin2$1 = 0; + var $lo_bin2$1$l1$0 = 0, $lo_curve$1 = 0, $m$055 = 0, $min$1 = 0.0, $min$1$1 = 0.0, $min$1$2 = 0.0, $min$1$3 = 0.0, $n$hi_bin$0 = 0, $n$hi_bin3$0 = 0, $neg = 0, $neg$us$us$us = 0, $neg$us$us80 = 0, $neg$us66 = 0, $or$cond734 = 0, $or$cond943 = 0, $smax100 = 0, $smax102 = 0, $smax92 = 0, $smax94 = 0, $umax = 0; + var $umax103 = 0, $workc = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 32480|0; + $ath = sp + 32256|0; + $workc = sp + 1792|0; + $athc = sp; + $0 = $n << 2; + $$alloca_mul = $0; + $1 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul)|0)+15)&-16)|0;; + $2 = (_malloc(68)|0); + _memset(($workc|0),0,30464)|0; + $3 = $center_boost > 0.0; + $4 = $center_boost < 0.0; + $i$088 = 0; + while(1) { + $8 = $i$088 << 2; + $j$061 = 0; + while(1) { + $23 = (($j$061) + ($8))|0; + $24 = ($23|0)<(88); + if ($24) { + $25 = (1272 + ($23<<2)|0); + $26 = +HEAPF32[$25>>2]; + $min$1 = $26; + } else { + $min$1 = -30.0; + } + $27 = (($23) + 1)|0; + $28 = ($27|0)<(88); + if ($28) { + $338 = (1272 + ($27<<2)|0); + $339 = +HEAPF32[$338>>2]; + $340 = $min$1 > $339; + if ($340) { + $min$1$1 = $339; + } else { + $min$1$1 = $min$1; + } + } else { + $337 = $min$1 > -30.0; + if ($337) { + $min$1$1 = -30.0; + } else { + $min$1$1 = $min$1; + } + } + $341 = (($23) + 2)|0; + $342 = ($341|0)<(88); + if ($342) { + $344 = (1272 + ($341<<2)|0); + $345 = +HEAPF32[$344>>2]; + $346 = $min$1$1 > $345; + if ($346) { + $min$1$2 = $345; + } else { + $min$1$2 = $min$1$1; + } + } else { + $343 = $min$1$1 > -30.0; + if ($343) { + $min$1$2 = -30.0; + } else { + $min$1$2 = $min$1$1; + } + } + $347 = (($23) + 3)|0; + $348 = ($347|0)<(88); + if ($348) { + $350 = (1272 + ($347<<2)|0); + $351 = +HEAPF32[$350>>2]; + $352 = $min$1$2 > $351; + if ($352) { + $min$1$3 = $351; + } else { + $min$1$3 = $min$1$2; + } + } else { + $349 = $min$1$2 > -30.0; + if ($349) { + $min$1$3 = -30.0; + } else { + $min$1$3 = $min$1$2; + } + } + $353 = (($ath) + ($j$061<<2)|0); + HEAPF32[$353>>2] = $min$1$3; + $354 = (($j$061) + 1)|0; + $exitcond111 = ($354|0)==(56); + if ($exitcond111) { + break; + } else { + $j$061 = $354; + } + } + $9 = (((($workc) + (($i$088*1792)|0)|0)) + 448|0); + $10 = (2792 + (($i$088*1344)|0)|0); + _memcpy(($9|0),($10|0),224)|0; + $11 = (((($workc) + (($i$088*1792)|0)|0)) + 672|0); + $12 = (((2792 + (($i$088*1344)|0)|0)) + 224|0); + _memcpy(($11|0),($12|0),224)|0; + $13 = (((($workc) + (($i$088*1792)|0)|0)) + 896|0); + $14 = (((2792 + (($i$088*1344)|0)|0)) + 448|0); + _memcpy(($13|0),($14|0),224)|0; + $15 = (((($workc) + (($i$088*1792)|0)|0)) + 1120|0); + $16 = (((2792 + (($i$088*1344)|0)|0)) + 672|0); + _memcpy(($15|0),($16|0),224)|0; + $17 = (((($workc) + (($i$088*1792)|0)|0)) + 1344|0); + $18 = (((2792 + (($i$088*1344)|0)|0)) + 896|0); + _memcpy(($17|0),($18|0),224)|0; + $19 = (((($workc) + (($i$088*1792)|0)|0)) + 1568|0); + $20 = (((2792 + (($i$088*1344)|0)|0)) + 1120|0); + _memcpy(($19|0),($20|0),224)|0; + $21 = (($workc) + (($i$088*1792)|0)|0); + _memcpy(($21|0),($10|0),224)|0; + $22 = (((($workc) + (($i$088*1792)|0)|0)) + 224|0); + _memcpy(($22|0),($10|0),224)|0; + if ($3) { + $j$269$us = 0; + while(1) { + if ($4) { + $k$163$us$us$us = 0; + while(1) { + $40 = (16 - ($k$163$us$us$us))|0; + $ispos$us$us$us = ($40|0)>(-1); + $neg$us$us$us = (0 - ($40))|0; + $41 = $ispos$us$us$us ? $40 : $neg$us$us$us; + $42 = (+($41|0)); + $43 = $42 * $center_decay_rate; + $44 = $43 + $center_boost; + $45 = $44 < 0.0; + $$$us$us$us = $45 ? 0.0 : $44; + $46 = $$$us$us$us > 0.0; + $$$$us$us$us = $46 ? 0.0 : $$$us$us$us; + $47 = (((($workc) + (($i$088*1792)|0)|0) + (($j$269$us*224)|0)|0) + ($k$163$us$us$us<<2)|0); + $48 = +HEAPF32[$47>>2]; + $49 = $48 + $$$$us$us$us; + HEAPF32[$47>>2] = $49; + $50 = (($k$163$us$us$us) + 1)|0; + $exitcond119 = ($50|0)==(56); + if ($exitcond119) { + break; + } else { + $k$163$us$us$us = $50; + } + } + } else { + $k$163$us$us78 = 0; + while(1) { + $30 = (16 - ($k$163$us$us78))|0; + $ispos$us$us79 = ($30|0)>(-1); + $neg$us$us80 = (0 - ($30))|0; + $31 = $ispos$us$us79 ? $30 : $neg$us$us80; + $32 = (+($31|0)); + $33 = $32 * $center_decay_rate; + $34 = $33 + $center_boost; + $35 = $34 < 0.0; + $$$us$us81 = $35 ? 0.0 : $34; + $36 = (((($workc) + (($i$088*1792)|0)|0) + (($j$269$us*224)|0)|0) + ($k$163$us$us78<<2)|0); + $37 = +HEAPF32[$36>>2]; + $38 = $37 + $$$us$us81; + HEAPF32[$36>>2] = $38; + $39 = (($k$163$us$us78) + 1)|0; + $exitcond118 = ($39|0)==(56); + if ($exitcond118) { + break; + } else { + $k$163$us$us78 = $39; + } + } + } + $29 = (($j$269$us) + 1)|0; + $exitcond120 = ($29|0)==(8); + if ($exitcond120) { + break; + } else { + $j$269$us = $29; + } + } + } else { + $j$269 = 0; + while(1) { + if ($4) { + $k$163$us64 = 0; + while(1) { + $54 = (16 - ($k$163$us64))|0; + $ispos$us65 = ($54|0)>(-1); + $neg$us66 = (0 - ($54))|0; + $55 = $ispos$us65 ? $54 : $neg$us66; + $56 = (+($55|0)); + $57 = $56 * $center_decay_rate; + $58 = $57 + $center_boost; + $59 = $58 > 0.0; + $$$$us68 = $59 ? 0.0 : $58; + $60 = (((($workc) + (($i$088*1792)|0)|0) + (($j$269*224)|0)|0) + ($k$163$us64<<2)|0); + $61 = +HEAPF32[$60>>2]; + $62 = $61 + $$$$us68; + HEAPF32[$60>>2] = $62; + $63 = (($k$163$us64) + 1)|0; + $exitcond114 = ($63|0)==(56); + if ($exitcond114) { + break; + } else { + $k$163$us64 = $63; + } + } + } else { + $k$163 = 0; + while(1) { + $64 = (16 - ($k$163))|0; + $ispos = ($64|0)>(-1); + $neg = (0 - ($64))|0; + $65 = $ispos ? $64 : $neg; + $66 = (+($65|0)); + $67 = $66 * $center_decay_rate; + $68 = $67 + $center_boost; + $69 = (((($workc) + (($i$088*1792)|0)|0) + (($j$269*224)|0)|0) + ($k$163<<2)|0); + $70 = +HEAPF32[$69>>2]; + $71 = $70 + $68; + HEAPF32[$69>>2] = $71; + $72 = (($k$163) + 1)|0; + $exitcond113 = ($72|0)==(56); + if ($exitcond113) { + break; + } else { + $k$163 = $72; + } + } + } + $73 = (($j$269) + 1)|0; + $exitcond115 = ($73|0)==(8); + if ($exitcond115) { + break; + } else { + $j$269 = $73; + } + } + } + $51 = (($curveatt_dB) + ($i$088<<2)|0); + $52 = +HEAPF32[$51>>2]; + $53 = $52; + $j$386 = 0; + while(1) { + $74 = ($j$386|0)<(2); + $75 = (+($j$386|0)); + $$op = $75 * 10.0; + $$op$op$op = 70.0 - $$op; + $76 = $74 ? 50.0 : $$op$op$op; + $77 = $76 + $53; + $78 = $77; + $i$01$i = 0; + while(1) { + $79 = (((($workc) + (($i$088*1792)|0)|0) + (($j$386*224)|0)|0) + ($i$01$i<<2)|0); + $80 = +HEAPF32[$79>>2]; + $81 = $80 + $78; + HEAPF32[$79>>2] = $81; + $82 = (($i$01$i) + 1)|0; + $exitcond$i = ($82|0)==(56); + if ($exitcond$i) { + break; + } else { + $i$01$i = $82; + } + } + $83 = (($athc) + (($j$386*224)|0)|0); + _memcpy(($83|0),($ath|0),224)|0; + $84 = (+($j$386|0)); + $85 = $84 * 10.0; + $86 = 70.0 - $85; + $i$01$i17 = 0; + while(1) { + $87 = ((($athc) + (($j$386*224)|0)|0) + ($i$01$i17<<2)|0); + $88 = +HEAPF32[$87>>2]; + $89 = $86 + $88; + HEAPF32[$87>>2] = $89; + $90 = (($i$01$i17) + 1)|0; + $exitcond$i18 = ($90|0)==(56); + if ($exitcond$i18) { + $i$01$i15 = 0; + break; + } else { + $i$01$i17 = $90; + } + } + while(1) { + $91 = (((($workc) + (($i$088*1792)|0)|0) + (($j$386*224)|0)|0) + ($i$01$i15<<2)|0); + $92 = +HEAPF32[$91>>2]; + $93 = ((($athc) + (($j$386*224)|0)|0) + ($i$01$i15<<2)|0); + $94 = +HEAPF32[$93>>2]; + $95 = $92 > $94; + if ($95) { + HEAPF32[$93>>2] = $92; + } + $96 = (($i$01$i15) + 1)|0; + $exitcond$i16 = ($96|0)==(56); + if ($exitcond$i16) { + break; + } else { + $i$01$i15 = $96; + } + } + $97 = (($j$386) + 1)|0; + $exitcond116 = ($97|0)==(8); + if ($exitcond116) { + $j$487 = 1; + break; + } else { + $j$386 = $97; + } + } + while(1) { + $98 = (($j$487) + -1)|0; + $i$01$i12 = 0; + while(1) { + $99 = ((($athc) + (($98*224)|0)|0) + ($i$01$i12<<2)|0); + $100 = +HEAPF32[$99>>2]; + $101 = ((($athc) + (($j$487*224)|0)|0) + ($i$01$i12<<2)|0); + $102 = +HEAPF32[$101>>2]; + $103 = $100 < $102; + if ($103) { + HEAPF32[$101>>2] = $100; + } + $104 = (($i$01$i12) + 1)|0; + $exitcond$i13 = ($104|0)==(56); + if ($exitcond$i13) { + $i$01$i10 = 0; + break; + } else { + $i$01$i12 = $104; + } + } + while(1) { + $105 = ((($athc) + (($j$487*224)|0)|0) + ($i$01$i10<<2)|0); + $106 = +HEAPF32[$105>>2]; + $107 = (((($workc) + (($i$088*1792)|0)|0) + (($j$487*224)|0)|0) + ($i$01$i10<<2)|0); + $108 = +HEAPF32[$107>>2]; + $109 = $106 < $108; + if ($109) { + HEAPF32[$107>>2] = $106; + } + $110 = (($i$01$i10) + 1)|0; + $exitcond$i11 = ($110|0)==(56); + if ($exitcond$i11) { + break; + } else { + $i$01$i10 = $110; + } + } + $111 = (($j$487) + 1)|0; + $exitcond117 = ($111|0)==(8); + if ($exitcond117) { + break; + } else { + $j$487 = $111; + } + } + $112 = (($i$088) + 1)|0; + $exitcond121 = ($112|0)==(17); + if ($exitcond121) { + break; + } else { + $i$088 = $112; + } + } + $5 = $binHz; + $6 = ($n|0)>(0); + $7 = $n ^ -1; + $i$158 = 0; + while(1) { + $113 = (_malloc(32)|0); + $114 = (($2) + ($i$158<<2)|0); + HEAP32[$114>>2] = $113; + $115 = (+($i$158|0)); + $116 = $115 * 0.5; + $117 = $115 * 0.34657350182533264; + $118 = $117 + 4.1351653545408453; + $119 = (+Math_exp((+$118))); + $120 = $119 / $5; + $121 = (+Math_floor((+$120))); + $122 = (~~(($121))); + $123 = (+($122|0)); + $124 = $123 * $binHz; + $125 = $124 + 1.0; + $126 = $125; + $127 = (+Math_log((+$126))); + $128 = $127 * 2.885390043258667; + $129 = $128 + -11.931568145751953; + $130 = (+Math_ceil((+$129))); + $131 = (~~(($130))); + $132 = (($122) + 1)|0; + $133 = (+($132|0)); + $134 = $133 * $binHz; + $135 = $134; + $136 = (+Math_log((+$135))); + $137 = $136 * 2.885390043258667; + $138 = $137 + -11.931568145751953; + $139 = (+Math_floor((+$138))); + $140 = (~~(($139))); + $141 = ($131|0)>($i$158|0); + $i$1$ = $141 ? $i$158 : $131; + $142 = ($i$1$|0)<(0); + $lo_curve$1 = $142 ? 0 : $i$1$; + $143 = ($140|0)>(16); + $$5 = $143 ? 16 : $140; + $144 = ($lo_curve$1|0)>($$5|0); + $145 = (($i$158) + 1)|0; + $146 = ($145|0)<(17); + $147 = $116 + 3.9657840728759766; + $m$055 = 0; + while(1) { + $148 = (_malloc(232)|0); + $149 = (($113) + ($m$055<<2)|0); + HEAP32[$149>>2] = $148; + if ($6) { + $j$533 = 0; + while(1) { + $150 = (($1) + ($j$533<<2)|0); + HEAPF32[$150>>2] = 999.0; + $151 = (($j$533) + 1)|0; + $exitcond = ($151|0)==($n|0); + if ($exitcond) { + break; + } else { + $j$533 = $151; + } + } + } + if (!($144)) { + $k$241 = $lo_curve$1; + while(1) { + $152 = (+($k$241|0)); + $153 = $152 * 0.5; + $j$638 = 0;$l$037 = 0; + while(1) { + $157 = (+($j$638|0)); + $158 = $157 * 0.125; + $159 = $158 + $153; + $160 = $159 + 3.9032840728759766; + $161 = $160 * 0.69314700365066528; + $162 = (+Math_exp((+$161))); + $163 = $162 / $5; + $164 = (~~(($163))); + $165 = $159 + 4.0282840728759766; + $166 = $165 * 0.69314700365066528; + $167 = (+Math_exp((+$166))); + $168 = $167 / $5; + $169 = $168 + 1.0; + $170 = (~~(($169))); + $171 = ($164|0)<(0); + $$6 = $171 ? 0 : $164; + $172 = ($$6|0)>($n|0); + $lo_bin$1 = $172 ? $n : $$6; + $173 = ($lo_bin$1|0)<($l$037|0); + $lo_bin$1$l$0 = $173 ? $lo_bin$1 : $l$037; + $174 = ($170|0)<(0); + $hi_bin$0 = $174 ? 0 : $170; + $175 = ($hi_bin$0|0)>($n|0); + $n$hi_bin$0 = $175 ? $n : $hi_bin$0; + $176 = ($lo_bin$1$l$0|0)<($n$hi_bin$0|0); + $177 = ($lo_bin$1$l$0|0)<($n|0); + $or$cond734 = $176 & $177; + if ($or$cond734) { + $178 = (((($workc) + (($k$241*1792)|0)|0) + (($m$055*224)|0)|0) + ($j$638<<2)|0); + $179 = +HEAPF32[$178>>2]; + $180 = ($l$037|0)<($n|0); + $181 = $180 ? $l$037 : $n; + $182 = $181 ^ -1; + $183 = ($164|0)>(0); + $$op125 = $164 ^ -1; + $184 = $183 ? $$op125 : -1; + $185 = ($184|0)<($182|0); + $smax92 = $185 ? $182 : $184; + $186 = $smax92 ^ -1; + $187 = ($170|0)>(0); + $$op126 = $170 ^ -1; + $188 = $187 ? $$op126 : -1; + $189 = ($188|0)<($7|0); + $smax94 = $189 ? $7 : $188; + $190 = (($smax94) - ($smax92))|0; + $191 = (($smax92) + ($n))|0; + $192 = $191 ^ -1; + $193 = ($190>>>0)>($192>>>0); + $umax = $193 ? $190 : $192; + $194 = (($186) - ($umax))|0; + $l$235 = $lo_bin$1$l$0; + while(1) { + $195 = (($1) + ($l$235<<2)|0); + $196 = +HEAPF32[$195>>2]; + $197 = $196 > $179; + if ($197) { + HEAPF32[$195>>2] = $179; + } + $198 = (($l$235) + 1)|0; + $exitcond95 = ($198|0)==($194|0); + if ($exitcond95) { + $l$2$lcssa = $194; + break; + } else { + $l$235 = $198; + } + } + } else { + $l$2$lcssa = $lo_bin$1$l$0; + } + $199 = (($j$638) + 1)|0; + $exitcond96 = ($199|0)==(56); + if ($exitcond96) { + $l$2$lcssa$lcssa = $l$2$lcssa; + break; + } else { + $j$638 = $199;$l$037 = $l$2$lcssa; + } + } + $154 = ($l$2$lcssa$lcssa|0)<($n|0); + if ($154) { + $155 = ((((($workc) + (($k$241*1792)|0)|0) + (($m$055*224)|0)|0)) + 220|0); + $156 = +HEAPF32[$155>>2]; + $l$339 = $l$2$lcssa$lcssa; + while(1) { + $200 = (($1) + ($l$339<<2)|0); + $201 = +HEAPF32[$200>>2]; + $202 = $201 > $156; + if ($202) { + HEAPF32[$200>>2] = $156; + } + $203 = (($l$339) + 1)|0; + $exitcond97 = ($203|0)==($n|0); + if ($exitcond97) { + break; + } else { + $l$339 = $203; + } + } + } + $204 = (($k$241) + 1)|0; + $205 = ($k$241|0)<($$5|0); + if ($205) { + $k$241 = $204; + } else { + break; + } + } + } + if ($146) { + $j$749 = 0;$l1$048 = 0; + while(1) { + $212 = (+($j$749|0)); + $213 = $212 * 0.125; + $214 = $213 + $116; + $215 = $214 + 3.9032840728759766; + $216 = $215 * 0.69314700365066528; + $217 = (+Math_exp((+$216))); + $218 = $217 / $5; + $219 = (~~(($218))); + $220 = $214 + 4.0282840728759766; + $221 = $220 * 0.69314700365066528; + $222 = (+Math_exp((+$221))); + $223 = $222 / $5; + $224 = $223 + 1.0; + $225 = (~~(($224))); + $226 = ($219|0)<(0); + $$8 = $226 ? 0 : $219; + $227 = ($$8|0)>($n|0); + $lo_bin2$1 = $227 ? $n : $$8; + $228 = ($lo_bin2$1|0)<($l1$048|0); + $lo_bin2$1$l1$0 = $228 ? $lo_bin2$1 : $l1$048; + $229 = ($225|0)<(0); + $hi_bin3$0 = $229 ? 0 : $225; + $230 = ($hi_bin3$0|0)>($n|0); + $n$hi_bin3$0 = $230 ? $n : $hi_bin3$0; + $231 = ($lo_bin2$1$l1$0|0)<($n$hi_bin3$0|0); + $232 = ($lo_bin2$1$l1$0|0)<($n|0); + $or$cond943 = $231 & $232; + if ($or$cond943) { + $233 = (((($workc) + (($145*1792)|0)|0) + (($m$055*224)|0)|0) + ($j$749<<2)|0); + $234 = +HEAPF32[$233>>2]; + $235 = ($l1$048|0)<($n|0); + $236 = $235 ? $l1$048 : $n; + $237 = $236 ^ -1; + $238 = ($219|0)>(0); + $$op123 = $219 ^ -1; + $239 = $238 ? $$op123 : -1; + $240 = ($239|0)<($237|0); + $smax100 = $240 ? $237 : $239; + $241 = $smax100 ^ -1; + $242 = ($225|0)>(0); + $$op124 = $225 ^ -1; + $243 = $242 ? $$op124 : -1; + $244 = ($243|0)<($7|0); + $smax102 = $244 ? $7 : $243; + $245 = (($smax102) - ($smax100))|0; + $246 = (($smax100) + ($n))|0; + $247 = $246 ^ -1; + $248 = ($245>>>0)>($247>>>0); + $umax103 = $248 ? $245 : $247; + $249 = (($241) - ($umax103))|0; + $l1$244 = $lo_bin2$1$l1$0; + while(1) { + $250 = (($1) + ($l1$244<<2)|0); + $251 = +HEAPF32[$250>>2]; + $252 = $251 > $234; + if ($252) { + HEAPF32[$250>>2] = $234; + } + $253 = (($l1$244) + 1)|0; + $exitcond104 = ($253|0)==($249|0); + if ($exitcond104) { + $l1$2$lcssa = $249; + break; + } else { + $l1$244 = $253; + } + } + } else { + $l1$2$lcssa = $lo_bin2$1$l1$0; + } + $254 = (($j$749) + 1)|0; + $exitcond105 = ($254|0)==(56); + if ($exitcond105) { + $l1$2$lcssa$lcssa = $l1$2$lcssa; + break; + } else { + $j$749 = $254;$l1$048 = $l1$2$lcssa; + } + } + $209 = ($l1$2$lcssa$lcssa|0)<($n|0); + if ($209) { + $210 = ((((($workc) + (($145*1792)|0)|0) + (($m$055*224)|0)|0)) + 220|0); + $211 = +HEAPF32[$210>>2]; + $l1$350 = $l1$2$lcssa$lcssa; + while(1) { + $255 = (($1) + ($l1$350<<2)|0); + $256 = +HEAPF32[$255>>2]; + $257 = $256 > $211; + if ($257) { + HEAPF32[$255>>2] = $211; + } + $258 = (($l1$350) + 1)|0; + $exitcond106 = ($258|0)==($n|0); + if ($exitcond106) { + break; + } else { + $l1$350 = $258; + } + } + } + } + $206 = (($113) + ($m$055<<2)|0); + $207 = (($113) + ($m$055<<2)|0); + $208 = (($113) + ($m$055<<2)|0); + $j$852 = 0; + while(1) { + $262 = (+($j$852|0)); + $263 = $262 * 0.125; + $264 = $147 + $263; + $265 = $264 * 0.69314700365066528; + $266 = (+Math_exp((+$265))); + $267 = $266 / $5; + $268 = (~~(($267))); + $269 = ($268|0)<(0); + do { + if ($269) { + $270 = (($j$852) + 2)|0; + $271 = HEAP32[$206>>2]|0; + $272 = (($271) + ($270<<2)|0); + HEAPF32[$272>>2] = -999.0; + } else { + $273 = ($268|0)<($n|0); + if ($273) { + $277 = (($1) + ($268<<2)|0); + $278 = HEAP32[$277>>2]|0; + $279 = (($j$852) + 2)|0; + $280 = HEAP32[$207>>2]|0; + $281 = (($280) + ($279<<2)|0); + HEAP32[$281>>2] = $278; + break; + } else { + $274 = (($j$852) + 2)|0; + $275 = HEAP32[$208>>2]|0; + $276 = (($275) + ($274<<2)|0); + HEAPF32[$276>>2] = -999.0; + break; + } + } + } while(0); + $282 = (($j$852) + 1)|0; + $exitcond107 = ($282|0)==(56); + if ($exitcond107) { + break; + } else { + $j$852 = $282; + } + } + $259 = ((($148)) + 8|0); + $260 = +HEAPF32[$259>>2]; + $261 = $260 > -200.0; + do { + if ($261) { + $j$9$lcssa = 0.0; + } else { + $283 = ((($148)) + 12|0); + $284 = +HEAPF32[$283>>2]; + $285 = $284 > -200.0; + if ($285) { + $j$9$lcssa = 1.0; + } else { + $295 = ((($148)) + 16|0); + $296 = +HEAPF32[$295>>2]; + $297 = $296 > -200.0; + if ($297) { + $j$9$lcssa = 2.0; + } else { + $298 = ((($148)) + 20|0); + $299 = +HEAPF32[$298>>2]; + $300 = $299 > -200.0; + if ($300) { + $j$9$lcssa = 3.0; + } else { + $301 = ((($148)) + 24|0); + $302 = +HEAPF32[$301>>2]; + $303 = $302 > -200.0; + if ($303) { + $j$9$lcssa = 4.0; + } else { + $304 = ((($148)) + 28|0); + $305 = +HEAPF32[$304>>2]; + $306 = $305 > -200.0; + if ($306) { + $j$9$lcssa = 5.0; + } else { + $307 = ((($148)) + 32|0); + $308 = +HEAPF32[$307>>2]; + $309 = $308 > -200.0; + if ($309) { + $j$9$lcssa = 6.0; + } else { + $310 = ((($148)) + 36|0); + $311 = +HEAPF32[$310>>2]; + $312 = $311 > -200.0; + if ($312) { + $j$9$lcssa = 7.0; + } else { + $313 = ((($148)) + 40|0); + $314 = +HEAPF32[$313>>2]; + $315 = $314 > -200.0; + if ($315) { + $j$9$lcssa = 8.0; + } else { + $316 = ((($148)) + 44|0); + $317 = +HEAPF32[$316>>2]; + $318 = $317 > -200.0; + if ($318) { + $j$9$lcssa = 9.0; + } else { + $319 = ((($148)) + 48|0); + $320 = +HEAPF32[$319>>2]; + $321 = $320 > -200.0; + if ($321) { + $j$9$lcssa = 10.0; + } else { + $322 = ((($148)) + 52|0); + $323 = +HEAPF32[$322>>2]; + $324 = $323 > -200.0; + if ($324) { + $j$9$lcssa = 11.0; + } else { + $325 = ((($148)) + 56|0); + $326 = +HEAPF32[$325>>2]; + $327 = $326 > -200.0; + if ($327) { + $j$9$lcssa = 12.0; + } else { + $328 = ((($148)) + 60|0); + $329 = +HEAPF32[$328>>2]; + $330 = $329 > -200.0; + if ($330) { + $j$9$lcssa = 13.0; + } else { + $331 = ((($148)) + 64|0); + $332 = +HEAPF32[$331>>2]; + $333 = $332 > -200.0; + if ($333) { + $j$9$lcssa = 14.0; + break; + } + $334 = ((($148)) + 68|0); + $335 = +HEAPF32[$334>>2]; + $336 = $335 > -200.0; + if ($336) { + $j$9$lcssa = 15.0; + break; + } + $j$9$lcssa = 16.0; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } while(0); + HEAPF32[$148>>2] = $j$9$lcssa; + $j$1054 = 55; + while(1) { + $286 = (($j$1054) + 2)|0; + $287 = (($148) + ($286<<2)|0); + $288 = +HEAPF32[$287>>2]; + $289 = $288 > -200.0; + if ($289) { + $j$10$lcssa = $j$1054; + break; + } + $290 = (($j$1054) + -1)|0; + $291 = ($290|0)>(17); + if ($291) { + $j$1054 = $290; + } else { + $j$10$lcssa = $290; + break; + } + } + $292 = (+($j$10$lcssa|0)); + $293 = ((($148)) + 4|0); + HEAPF32[$293>>2] = $292; + $294 = (($m$055) + 1)|0; + $exitcond108 = ($294|0)==(8); + if ($exitcond108) { + break; + } else { + $m$055 = $294; + } + } + $exitcond109 = ($145|0)==(17); + if ($exitcond109) { + break; + } else { + $i$158 = $145; + } + } + STACKTOP = sp;return ($2|0); +} +function _bark_noise_hybridmp($n,$b,$f,$noise,$offset,$fixed) { + $n = $n|0; + $b = $b|0; + $f = $f|0; + $noise = $noise|0; + $offset = +$offset; + $fixed = $fixed|0; + var $$alloca_mul = 0, $$alloca_mul1 = 0, $$alloca_mul3 = 0, $$alloca_mul5 = 0, $$alloca_mul7 = 0, $$in = 0, $$pn = 0, $0 = 0, $1 = 0, $10 = 0.0, $100 = 0, $101 = 0.0, $102 = 0.0, $103 = 0, $104 = 0.0, $105 = 0, $106 = 0.0, $107 = 0.0, $108 = 0, $109 = 0.0; + var $11 = 0.0, $110 = 0, $111 = 0.0, $112 = 0.0, $113 = 0, $114 = 0.0, $115 = 0, $116 = 0.0, $117 = 0.0, $118 = 0.0, $119 = 0.0, $12 = 0, $120 = 0.0, $121 = 0.0, $122 = 0.0, $123 = 0.0, $124 = 0.0, $125 = 0.0, $126 = 0.0, $127 = 0.0; + var $128 = 0.0, $129 = 0.0, $13 = 0, $130 = 0, $131 = 0.0, $132 = 0, $133 = 0, $134 = 0.0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0.0, $14 = 0, $140 = 0.0, $141 = 0.0, $142 = 0, $143 = 0.0, $144 = 0, $145 = 0; + var $146 = 0.0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0.0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0.0, $162 = 0.0, $163 = 0; + var $164 = 0.0, $165 = 0, $166 = 0.0, $167 = 0.0, $168 = 0, $169 = 0.0, $17 = 0.0, $170 = 0, $171 = 0.0, $172 = 0.0, $173 = 0, $174 = 0.0, $175 = 0, $176 = 0.0, $177 = 0.0, $178 = 0, $179 = 0.0, $18 = 0.0, $180 = 0, $181 = 0.0; + var $182 = 0.0, $183 = 0.0, $184 = 0.0, $185 = 0.0, $186 = 0.0, $187 = 0.0, $188 = 0.0, $189 = 0.0, $19 = 0, $190 = 0.0, $191 = 0.0, $192 = 0.0, $193 = 0.0, $194 = 0.0, $195 = 0.0, $196 = 0, $197 = 0.0, $198 = 0, $199 = 0, $2 = 0; + var $20 = 0.0, $200 = 0.0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0.0, $207 = 0, $208 = 0.0, $209 = 0.0, $21 = 0.0, $210 = 0, $211 = 0.0, $212 = 0, $213 = 0.0, $214 = 0.0, $215 = 0, $216 = 0.0, $217 = 0; + var $218 = 0.0, $219 = 0.0, $22 = 0.0, $220 = 0, $221 = 0.0, $222 = 0, $223 = 0.0, $224 = 0.0, $225 = 0, $226 = 0.0, $227 = 0, $228 = 0.0, $229 = 0.0, $23 = 0.0, $230 = 0.0, $231 = 0.0, $232 = 0.0, $233 = 0.0, $234 = 0.0, $235 = 0.0; + var $236 = 0.0, $237 = 0.0, $238 = 0.0, $239 = 0.0, $24 = 0.0, $240 = 0.0, $241 = 0.0, $242 = 0.0, $243 = 0, $244 = 0.0, $245 = 0, $246 = 0, $247 = 0.0, $248 = 0, $249 = 0.0, $25 = 0.0, $250 = 0.0, $251 = 0.0, $252 = 0.0, $253 = 0; + var $254 = 0.0, $255 = 0, $256 = 0, $257 = 0.0, $26 = 0.0, $27 = 0.0, $28 = 0.0, $29 = 0.0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0.0, $37 = 0, $38 = 0, $39 = 0, $4 = 0; + var $40 = 0, $41 = 0, $42 = 0, $43 = 0.0, $44 = 0, $45 = 0, $46 = 0, $47 = 0.0, $48 = 0.0, $49 = 0, $5 = 0, $50 = 0.0, $51 = 0, $52 = 0.0, $53 = 0.0, $54 = 0, $55 = 0.0, $56 = 0, $57 = 0.0, $58 = 0.0; + var $59 = 0, $6 = 0.0, $60 = 0.0, $61 = 0, $62 = 0.0, $63 = 0.0, $64 = 0, $65 = 0.0, $66 = 0, $67 = 0.0, $68 = 0.0, $69 = 0.0, $7 = 0.0, $70 = 0.0, $71 = 0.0, $72 = 0.0, $73 = 0.0, $74 = 0.0, $75 = 0.0, $76 = 0.0; + var $77 = 0.0, $78 = 0.0, $79 = 0.0, $8 = 0, $80 = 0.0, $81 = 0, $82 = 0.0, $83 = 0, $84 = 0, $85 = 0.0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0.0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0.0; + var $95 = 0, $96 = 0.0, $97 = 0.0, $98 = 0, $99 = 0.0, $A$0$lcssa = 0.0, $A$1$lcssa = 0.0, $A$2$lcssa = 0.0, $A$3$lcssa = 0.0, $B$0$lcssa = 0.0, $B$1$lcssa = 0.0, $B$2$lcssa = 0.0, $B$3$lcssa = 0.0, $D$0$lcssa = 0.0, $D$1$lcssa = 0.0, $D$2$lcssa = 0.0, $D$3$lcssa = 0.0, $R$0 = 0.0, $R$1 = 0.0, $R$2 = 0.0; + var $exitcond = 0, $exitcond71 = 0, $exitcond72 = 0, $exitcond73 = 0, $exitcond74 = 0, $i$048 = 0, $i$1$lcssa = 0, $i$135 = 0, $i$2$lcssa = 0, $i$227 = 0, $i$324 = 0, $i$4$lcssa = 0, $i$415 = 0, $i$5$lcssa = 0, $i$58 = 0, $i$66 = 0, $tN$043 = 0.0, $tX$044 = 0.0, $tXX$045 = 0.0, $tXY$047 = 0.0; + var $tY$046 = 0.0, $x$049 = 0.0, $x$1$lcssa = 0.0, $x$136 = 0.0, $x$2$lcssa = 0.0, $x$228 = 0.0, $x$325 = 0.0, $x$4$lcssa = 0.0, $x$416 = 0.0, $x$5$lcssa = 0.0, $x$59 = 0.0, $x$67 = 0.0, $y$0 = 0.0, $y$1 = 0.0, label = 0, sp = 0; + sp = STACKTOP; + $0 = $n << 2; + $$alloca_mul = $0; + $1 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul)|0)+15)&-16)|0;; + $$alloca_mul1 = $0; + $2 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul1)|0)+15)&-16)|0;; + $$alloca_mul3 = $0; + $3 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul3)|0)+15)&-16)|0;; + $$alloca_mul5 = $0; + $4 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul5)|0)+15)&-16)|0;; + $$alloca_mul7 = $0; + $5 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul7)|0)+15)&-16)|0;; + $6 = +HEAPF32[$f>>2]; + $7 = $6 + $offset; + $8 = $7 < 1.0; + $y$0 = $8 ? 1.0 : $7; + $9 = $y$0 * $y$0; + $10 = $9 * 0.5; + $11 = $10 * $y$0; + HEAPF32[$1>>2] = $10; + HEAPF32[$2>>2] = $10; + HEAPF32[$3>>2] = 0.0; + HEAPF32[$4>>2] = $11; + HEAPF32[$5>>2] = 0.0; + $12 = ($n|0)>(1); + if ($12) { + $i$048 = 1;$tN$043 = $10;$tX$044 = $10;$tXX$045 = 0.0;$tXY$047 = 0.0;$tY$046 = $11;$x$049 = 1.0; + while(1) { + $16 = (($f) + ($i$048<<2)|0); + $17 = +HEAPF32[$16>>2]; + $18 = $17 + $offset; + $19 = $18 < 1.0; + $y$1 = $19 ? 1.0 : $18; + $20 = $y$1 * $y$1; + $21 = $20 + $tN$043; + $22 = $20 * $x$049; + $23 = $22 + $tX$044; + $24 = $22 * $x$049; + $25 = $24 + $tXX$045; + $26 = $20 * $y$1; + $27 = $26 + $tY$046; + $28 = $22 * $y$1; + $29 = $28 + $tXY$047; + $30 = (($1) + ($i$048<<2)|0); + HEAPF32[$30>>2] = $21; + $31 = (($2) + ($i$048<<2)|0); + HEAPF32[$31>>2] = $23; + $32 = (($3) + ($i$048<<2)|0); + HEAPF32[$32>>2] = $25; + $33 = (($4) + ($i$048<<2)|0); + HEAPF32[$33>>2] = $27; + $34 = (($5) + ($i$048<<2)|0); + HEAPF32[$34>>2] = $29; + $35 = (($i$048) + 1)|0; + $36 = $x$049 + 1.0; + $exitcond74 = ($35|0)==($n|0); + if ($exitcond74) { + break; + } else { + $i$048 = $35;$tN$043 = $21;$tX$044 = $23;$tXX$045 = $25;$tXY$047 = $29;$tY$046 = $27;$x$049 = $36; + } + } + } + $13 = HEAP32[$b>>2]|0; + $14 = $13 >> 16; + $15 = ($14|0)>(-1); + if ($15) { + $38 = $13;$A$0$lcssa = 0.0;$B$0$lcssa = 0.0;$D$0$lcssa = 1.0;$i$1$lcssa = 0;$x$1$lcssa = 0.0; + } else { + $41 = $13;$45 = $14;$i$135 = 0;$x$136 = 0.0; + while(1) { + $40 = $41 & 65535; + $42 = (($1) + ($40<<2)|0); + $43 = +HEAPF32[$42>>2]; + $44 = (0 - ($45))|0; + $46 = (($1) + ($44<<2)|0); + $47 = +HEAPF32[$46>>2]; + $48 = $47 + $43; + $49 = (($2) + ($40<<2)|0); + $50 = +HEAPF32[$49>>2]; + $51 = (($2) + ($44<<2)|0); + $52 = +HEAPF32[$51>>2]; + $53 = $50 - $52; + $54 = (($3) + ($40<<2)|0); + $55 = +HEAPF32[$54>>2]; + $56 = (($3) + ($44<<2)|0); + $57 = +HEAPF32[$56>>2]; + $58 = $57 + $55; + $59 = (($4) + ($40<<2)|0); + $60 = +HEAPF32[$59>>2]; + $61 = (($4) + ($44<<2)|0); + $62 = +HEAPF32[$61>>2]; + $63 = $62 + $60; + $64 = (($5) + ($40<<2)|0); + $65 = +HEAPF32[$64>>2]; + $66 = (($5) + ($44<<2)|0); + $67 = +HEAPF32[$66>>2]; + $68 = $65 - $67; + $69 = $63 * $58; + $70 = $68 * $53; + $71 = $69 - $70; + $72 = $68 * $48; + $73 = $63 * $53; + $74 = $72 - $73; + $75 = $58 * $48; + $76 = $53 * $53; + $77 = $75 - $76; + $78 = $74 * $x$136; + $79 = $78 + $71; + $80 = $79 / $77; + $81 = $80 < 0.0; + $R$0 = $81 ? 0.0 : $80; + $82 = $R$0 - $offset; + $83 = (($noise) + ($i$135<<2)|0); + HEAPF32[$83>>2] = $82; + $84 = (($i$135) + 1)|0; + $85 = $x$136 + 1.0; + $86 = (($b) + ($84<<2)|0); + $87 = HEAP32[$86>>2]|0; + $88 = $87 >> 16; + $89 = ($88|0)>(-1); + if ($89) { + $38 = $87;$A$0$lcssa = $71;$B$0$lcssa = $74;$D$0$lcssa = $77;$i$1$lcssa = $84;$x$1$lcssa = $85; + break; + } else { + $41 = $87;$45 = $88;$i$135 = $84;$x$136 = $85; + } + } + } + $37 = $38 & 65535; + $39 = ($37|0)<($n|0); + if ($39) { + $$in = $38;$93 = $37;$i$227 = $i$1$lcssa;$x$228 = $x$1$lcssa; + while(1) { + $91 = $$in >> 16; + $92 = (($1) + ($93<<2)|0); + $94 = +HEAPF32[$92>>2]; + $95 = (($1) + ($91<<2)|0); + $96 = +HEAPF32[$95>>2]; + $97 = $94 - $96; + $98 = (($2) + ($93<<2)|0); + $99 = +HEAPF32[$98>>2]; + $100 = (($2) + ($91<<2)|0); + $101 = +HEAPF32[$100>>2]; + $102 = $99 - $101; + $103 = (($3) + ($93<<2)|0); + $104 = +HEAPF32[$103>>2]; + $105 = (($3) + ($91<<2)|0); + $106 = +HEAPF32[$105>>2]; + $107 = $104 - $106; + $108 = (($4) + ($93<<2)|0); + $109 = +HEAPF32[$108>>2]; + $110 = (($4) + ($91<<2)|0); + $111 = +HEAPF32[$110>>2]; + $112 = $109 - $111; + $113 = (($5) + ($93<<2)|0); + $114 = +HEAPF32[$113>>2]; + $115 = (($5) + ($91<<2)|0); + $116 = +HEAPF32[$115>>2]; + $117 = $114 - $116; + $118 = $112 * $107; + $119 = $117 * $102; + $120 = $118 - $119; + $121 = $117 * $97; + $122 = $112 * $102; + $123 = $121 - $122; + $124 = $107 * $97; + $125 = $102 * $102; + $126 = $124 - $125; + $127 = $123 * $x$228; + $128 = $127 + $120; + $129 = $128 / $126; + $130 = $129 < 0.0; + $R$1 = $130 ? 0.0 : $129; + $131 = $R$1 - $offset; + $132 = (($noise) + ($i$227<<2)|0); + HEAPF32[$132>>2] = $131; + $133 = (($i$227) + 1)|0; + $134 = $x$228 + 1.0; + $135 = (($b) + ($133<<2)|0); + $136 = HEAP32[$135>>2]|0; + $137 = $136 & 65535; + $138 = ($137|0)<($n|0); + if ($138) { + $$in = $136;$93 = $137;$i$227 = $133;$x$228 = $134; + } else { + $A$1$lcssa = $120;$B$1$lcssa = $123;$D$1$lcssa = $126;$i$2$lcssa = $133;$x$2$lcssa = $134; + break; + } + } + } else { + $A$1$lcssa = $A$0$lcssa;$B$1$lcssa = $B$0$lcssa;$D$1$lcssa = $D$0$lcssa;$i$2$lcssa = $i$1$lcssa;$x$2$lcssa = $x$1$lcssa; + } + $90 = ($i$2$lcssa|0)<($n|0); + if ($90) { + $i$324 = $i$2$lcssa;$x$325 = $x$2$lcssa; + while(1) { + $139 = $x$325 * $B$1$lcssa; + $140 = $139 + $A$1$lcssa; + $141 = $140 / $D$1$lcssa; + $142 = $141 < 0.0; + $R$2 = $142 ? 0.0 : $141; + $143 = $R$2 - $offset; + $144 = (($noise) + ($i$324<<2)|0); + HEAPF32[$144>>2] = $143; + $145 = (($i$324) + 1)|0; + $146 = $x$325 + 1.0; + $exitcond73 = ($145|0)==($n|0); + if ($exitcond73) { + break; + } else { + $i$324 = $145;$x$325 = $146; + } + } + } + $147 = ($fixed|0)<(1); + if ($147) { + STACKTOP = sp;return; + } + $148 = (($fixed|0) / 2)&-1; + $149 = (($148) - ($fixed))|0; + $150 = ($149|0)>(-1); + if ($150) { + $A$2$lcssa = $A$1$lcssa;$B$2$lcssa = $B$1$lcssa;$D$2$lcssa = $D$1$lcssa;$i$4$lcssa = 0;$x$4$lcssa = 0.0; + } else { + $151 = (($fixed) - ($148))|0; + $156 = $148;$159 = $149;$i$415 = 0;$x$416 = 0.0; + while(1) { + $155 = (($1) + ($156<<2)|0); + $157 = +HEAPF32[$155>>2]; + $158 = (0 - ($159))|0; + $160 = (($1) + ($158<<2)|0); + $161 = +HEAPF32[$160>>2]; + $162 = $161 + $157; + $163 = (($2) + ($156<<2)|0); + $164 = +HEAPF32[$163>>2]; + $165 = (($2) + ($158<<2)|0); + $166 = +HEAPF32[$165>>2]; + $167 = $164 - $166; + $168 = (($3) + ($156<<2)|0); + $169 = +HEAPF32[$168>>2]; + $170 = (($3) + ($158<<2)|0); + $171 = +HEAPF32[$170>>2]; + $172 = $171 + $169; + $173 = (($4) + ($156<<2)|0); + $174 = +HEAPF32[$173>>2]; + $175 = (($4) + ($158<<2)|0); + $176 = +HEAPF32[$175>>2]; + $177 = $176 + $174; + $178 = (($5) + ($156<<2)|0); + $179 = +HEAPF32[$178>>2]; + $180 = (($5) + ($158<<2)|0); + $181 = +HEAPF32[$180>>2]; + $182 = $179 - $181; + $183 = $177 * $172; + $184 = $182 * $167; + $185 = $183 - $184; + $186 = $182 * $162; + $187 = $177 * $167; + $188 = $186 - $187; + $189 = $172 * $162; + $190 = $167 * $167; + $191 = $189 - $190; + $192 = $188 * $x$416; + $193 = $192 + $185; + $194 = $193 / $191; + $195 = $194 - $offset; + $196 = (($noise) + ($i$415<<2)|0); + $197 = +HEAPF32[$196>>2]; + $198 = $195 < $197; + if ($198) { + HEAPF32[$196>>2] = $195; + } + $199 = (($i$415) + 1)|0; + $200 = $x$416 + 1.0; + $201 = (($148) + ($199))|0; + $202 = (($201) - ($fixed))|0; + $exitcond72 = ($199|0)==($151|0); + if ($exitcond72) { + $A$2$lcssa = $185;$B$2$lcssa = $188;$D$2$lcssa = $191;$i$4$lcssa = $151;$x$4$lcssa = $200; + break; + } else { + $156 = $201;$159 = $202;$i$415 = $199;$x$416 = $200; + } + } + } + $152 = (($i$4$lcssa) + ($148))|0; + $153 = ($152|0)<($n|0); + if ($153) { + $154 = (($n) - ($148))|0; + $$pn = $152;$i$58 = $i$4$lcssa;$x$59 = $x$4$lcssa; + while(1) { + $204 = (($$pn) - ($fixed))|0; + $205 = (($1) + ($$pn<<2)|0); + $206 = +HEAPF32[$205>>2]; + $207 = (($1) + ($204<<2)|0); + $208 = +HEAPF32[$207>>2]; + $209 = $206 - $208; + $210 = (($2) + ($$pn<<2)|0); + $211 = +HEAPF32[$210>>2]; + $212 = (($2) + ($204<<2)|0); + $213 = +HEAPF32[$212>>2]; + $214 = $211 - $213; + $215 = (($3) + ($$pn<<2)|0); + $216 = +HEAPF32[$215>>2]; + $217 = (($3) + ($204<<2)|0); + $218 = +HEAPF32[$217>>2]; + $219 = $216 - $218; + $220 = (($4) + ($$pn<<2)|0); + $221 = +HEAPF32[$220>>2]; + $222 = (($4) + ($204<<2)|0); + $223 = +HEAPF32[$222>>2]; + $224 = $221 - $223; + $225 = (($5) + ($$pn<<2)|0); + $226 = +HEAPF32[$225>>2]; + $227 = (($5) + ($204<<2)|0); + $228 = +HEAPF32[$227>>2]; + $229 = $226 - $228; + $230 = $224 * $219; + $231 = $229 * $214; + $232 = $230 - $231; + $233 = $229 * $209; + $234 = $224 * $214; + $235 = $233 - $234; + $236 = $219 * $209; + $237 = $214 * $214; + $238 = $236 - $237; + $239 = $235 * $x$59; + $240 = $239 + $232; + $241 = $240 / $238; + $242 = $241 - $offset; + $243 = (($noise) + ($i$58<<2)|0); + $244 = +HEAPF32[$243>>2]; + $245 = $242 < $244; + if ($245) { + HEAPF32[$243>>2] = $242; + } + $246 = (($i$58) + 1)|0; + $247 = $x$59 + 1.0; + $248 = (($246) + ($148))|0; + $exitcond71 = ($246|0)==($154|0); + if ($exitcond71) { + $A$3$lcssa = $232;$B$3$lcssa = $235;$D$3$lcssa = $238;$i$5$lcssa = $154;$x$5$lcssa = $247; + break; + } else { + $$pn = $248;$i$58 = $246;$x$59 = $247; + } + } + } else { + $A$3$lcssa = $A$2$lcssa;$B$3$lcssa = $B$2$lcssa;$D$3$lcssa = $D$2$lcssa;$i$5$lcssa = $i$4$lcssa;$x$5$lcssa = $x$4$lcssa; + } + $203 = ($i$5$lcssa|0)<($n|0); + if ($203) { + $i$66 = $i$5$lcssa;$x$67 = $x$5$lcssa; + } else { + STACKTOP = sp;return; + } + while(1) { + $249 = $x$67 * $B$3$lcssa; + $250 = $249 + $A$3$lcssa; + $251 = $250 / $D$3$lcssa; + $252 = $251 - $offset; + $253 = (($noise) + ($i$66<<2)|0); + $254 = +HEAPF32[$253>>2]; + $255 = $252 < $254; + if ($255) { + HEAPF32[$253>>2] = $252; + } + $256 = (($i$66) + 1)|0; + $257 = $x$67 + 1.0; + $exitcond = ($256|0)==($n|0); + if ($exitcond) { + break; + } else { + $i$66 = $256;$x$67 = $257; + } + } + STACKTOP = sp;return; +} +function _seed_chase($seeds,$linesper,$n) { + $seeds = $seeds|0; + $linesper = $linesper|0; + $n = $n|0; + var $$alloca_mul = 0, $$alloca_mul1 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0.0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0; + var $25 = 0, $26 = 0.0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0.0, $39 = 0, $4 = 0, $40 = 0.0, $41 = 0, $42 = 0; + var $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $6 = 0, $7 = 0, $8 = 0.0, $9 = 0, $endpos$0 = 0, $exitcond = 0; + var $exitcond18 = 0, $exitcond19 = 0, $i$012 = 0, $i$17 = 0, $n$endpos$0 = 0, $or$cond = 0, $pos$06 = 0, $pos$1$lcssa = 0, $pos$15 = 0, $stack$011 = 0, $stack$1 = 0, $stack$1$lcssa = 0, $stack$1$lcssa23 = 0, $stack$2 = 0, $stack$2$in = 0, $stack$2$in$lcssa = 0, $stack$2$lcssa = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = $n << 2; + $$alloca_mul = $0; + $1 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul)|0)+15)&-16)|0;; + $$alloca_mul1 = $0; + $2 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul1)|0)+15)&-16)|0;; + $3 = ($n|0)>(0); + if ($3) { + $i$012 = 0;$stack$011 = 0; + } else { + STACKTOP = sp;return; + } + while(1) { + $6 = ($stack$011|0)<(2); + do { + if ($6) { + $9 = (($1) + ($stack$011<<2)|0); + HEAP32[$9>>2] = $i$012; + $10 = (($seeds) + ($i$012<<2)|0); + $11 = HEAP32[$10>>2]|0; + $12 = (($2) + ($stack$011<<2)|0); + HEAP32[$12>>2] = $11; + $stack$2$in = $stack$011; + } else { + $7 = (($seeds) + ($i$012<<2)|0); + $8 = +HEAPF32[$7>>2]; + $stack$1 = $stack$011; + while(1) { + $13 = (($stack$1) + -1)|0; + $14 = (($2) + ($13<<2)|0); + $15 = +HEAPF32[$14>>2]; + $16 = $8 < $15; + if ($16) { + $stack$1$lcssa = $stack$1; + label = 8; + break; + } + $19 = (($1) + ($13<<2)|0); + $20 = HEAP32[$19>>2]|0; + $21 = (($20) + ($linesper))|0; + $22 = ($i$012|0)<($21|0); + $23 = ($stack$1|0)>(1); + $or$cond = $23 & $22; + if (!($or$cond)) { + $stack$1$lcssa23 = $stack$1; + label = 12; + break; + } + $24 = (($stack$1) + -2)|0; + $25 = (($2) + ($24<<2)|0); + $26 = +HEAPF32[$25>>2]; + $27 = !($15 <= $26); + if ($27) { + $stack$1$lcssa23 = $stack$1; + label = 12; + break; + } + $28 = (($1) + ($24<<2)|0); + $29 = HEAP32[$28>>2]|0; + $30 = (($29) + ($linesper))|0; + $31 = ($i$012|0)<($30|0); + if ($31) { + $stack$1 = $13; + } else { + $stack$1$lcssa23 = $stack$1; + label = 12; + break; + } + } + if ((label|0) == 8) { + label = 0; + $17 = (($1) + ($stack$1$lcssa<<2)|0); + HEAP32[$17>>2] = $i$012; + $18 = (($2) + ($stack$1$lcssa<<2)|0); + HEAPF32[$18>>2] = $8; + $stack$2$in = $stack$1$lcssa; + break; + } + else if ((label|0) == 12) { + label = 0; + $32 = (($1) + ($stack$1$lcssa23<<2)|0); + HEAP32[$32>>2] = $i$012; + $33 = (($2) + ($stack$1$lcssa23<<2)|0); + HEAPF32[$33>>2] = $8; + $stack$2$in = $stack$1$lcssa23; + break; + } + } + } while(0); + $stack$2 = (($stack$2$in) + 1)|0; + $34 = (($i$012) + 1)|0; + $exitcond19 = ($34|0)==($n|0); + if ($exitcond19) { + $stack$2$in$lcssa = $stack$2$in;$stack$2$lcssa = $stack$2; + break; + } else { + $i$012 = $34;$stack$011 = $stack$2; + } + } + $4 = ($stack$2$in$lcssa|0)>(-1); + if (!($4)) { + STACKTOP = sp;return; + } + $5 = (($linesper) + 1)|0; + $i$17 = 0;$pos$06 = 0; + while(1) { + $35 = ($i$17|0)<($stack$2$in$lcssa|0); + if ($35) { + $36 = (($i$17) + 1)|0; + $37 = (($2) + ($36<<2)|0); + $38 = +HEAPF32[$37>>2]; + $39 = (($2) + ($i$17<<2)|0); + $40 = +HEAPF32[$39>>2]; + $41 = $38 > $40; + if ($41) { + $42 = (($1) + ($36<<2)|0); + $43 = HEAP32[$42>>2]|0; + $endpos$0 = $43; + } else { + label = 17; + } + } else { + label = 17; + } + if ((label|0) == 17) { + label = 0; + $44 = (($1) + ($i$17<<2)|0); + $45 = HEAP32[$44>>2]|0; + $46 = (($5) + ($45))|0; + $endpos$0 = $46; + } + $47 = ($endpos$0|0)>($n|0); + $n$endpos$0 = $47 ? $n : $endpos$0; + $48 = ($pos$06|0)<($n$endpos$0|0); + if ($48) { + $49 = (($2) + ($i$17<<2)|0); + $50 = HEAP32[$49>>2]|0; + $51 = ($endpos$0|0)<($n|0); + $52 = $51 ? $endpos$0 : $n; + $pos$15 = $pos$06; + while(1) { + $53 = (($seeds) + ($pos$15<<2)|0); + HEAP32[$53>>2] = $50; + $54 = (($pos$15) + 1)|0; + $exitcond = ($54|0)==($52|0); + if ($exitcond) { + $pos$1$lcssa = $52; + break; + } else { + $pos$15 = $54; + } + } + } else { + $pos$1$lcssa = $pos$06; + } + $55 = (($i$17) + 1)|0; + $exitcond18 = ($55|0)==($stack$2$lcssa|0); + if ($exitcond18) { + break; + } else { + $i$17 = $55;$pos$06 = $pos$1$lcssa; + } + } + STACKTOP = sp;return; +} +function _noise_normalize($p$0$1$val,$limit,$r,$q,$f,$flags,$i,$n,$out) { + $p$0$1$val = $p$0$1$val|0; + $limit = $limit|0; + $r = $r|0; + $q = $q|0; + $f = $f|0; + $flags = $flags|0; + $i = $i|0; + $n = $n|0; + $out = $out|0; + var $$06 = 0.0, $$1 = 0.0, $$1$lcssa = 0.0, $$22 = 0.0, $$3 = 0.0, $$4 = 0.0, $$alloca_mul = 0, $$sink = 0, $$sink$in = 0.0, $$sink17 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0; + var $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0.0, $22 = 0, $23 = 0.0, $24 = 0.0, $25 = 0, $26 = 0.0, $27 = 0, $28 = 0.0, $29 = 0.0, $3 = 0, $30 = 0.0, $31 = 0.0, $32 = 0, $33 = 0, $34 = 0, $35 = 0; + var $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0.0, $42 = 0, $43 = 0.0, $44 = 0.0, $45 = 0, $46 = 0, $47 = 0.0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0.0, $52 = 0, $53 = 0.0; + var $54 = 0.0, $55 = 0.0, $56 = 0.0, $57 = 0, $58 = 0, $59 = 0.0, $6 = 0, $60 = 0.0, $61 = 0.0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0.0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0; + var $72 = 0, $73 = 0.0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0.0, $8 = 0, $80 = 0, $81 = 0.0, $82 = 0, $83 = 0.0, $84 = 0, $85 = 0, $9 = 0, $count$03 = 0, $count$1 = 0, $count$1$lcssa = 0, $exitcond = 0; + var $exitcond15 = 0, $exitcond16 = 0, $j$0$lcssa = 0, $j$010 = 0, $j$14 = 0, $j$21 = 0, $n$ = 0, $or$cond = 0, $or$cond18 = 0, $storemerge = 0.0, label = 0, sp = 0; + sp = STACKTOP; + $0 = $n << 2; + $$alloca_mul = $0; + $1 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul)|0)+15)&-16)|0;; + $2 = ((($p$0$1$val)) + 500|0); + $3 = HEAP32[$2>>2]|0; + $4 = ($3|0)==(0); + if ($4) { + $8 = $n; + } else { + $5 = ((($p$0$1$val)) + 504|0); + $6 = HEAP32[$5>>2]|0; + $7 = (($6) - ($i))|0; + $8 = $7; + } + $9 = ($8|0)>($n|0); + $n$ = $9 ? $n : $8; + $10 = ($n$|0)>(0); + if ($10) { + $11 = ($flags|0)==(0|0); + $12 = ($8|0)<($n|0); + $13 = $12 ? $8 : $n; + $j$010 = 0; + while(1) { + if ($11) { + label = 9; + } else { + $17 = (($flags) + ($j$010<<2)|0); + $18 = HEAP32[$17>>2]|0; + $19 = ($18|0)==(0); + if ($19) { + label = 9; + } + } + do { + if ((label|0) == 9) { + label = 0; + $20 = (($q) + ($j$010<<2)|0); + $21 = +HEAPF32[$20>>2]; + $22 = (($f) + ($j$010<<2)|0); + $23 = +HEAPF32[$22>>2]; + $24 = $21 / $23; + $25 = (($r) + ($j$010<<2)|0); + $26 = +HEAPF32[$25>>2]; + $27 = $26 < 0.0; + $28 = $24; + $29 = (+Math_sqrt((+$28))); + $30 = (+_rint($29)); + if ($27) { + $31 = -$30; + $32 = (~~(($31))); + $33 = (($out) + ($j$010<<2)|0); + HEAP32[$33>>2] = $32; + break; + } else { + $34 = (~~(($30))); + $35 = (($out) + ($j$010<<2)|0); + HEAP32[$35>>2] = $34; + break; + } + } + } while(0); + $36 = (($j$010) + 1)|0; + $exitcond16 = ($36|0)==($13|0); + if ($exitcond16) { + $j$0$lcssa = $13; + break; + } else { + $j$010 = $36; + } + } + } else { + $j$0$lcssa = 0; + } + $14 = ($j$0$lcssa|0)<($n|0); + if (!($14)) { + $$4 = 0.0; + STACKTOP = sp;return (+$$4); + } + $15 = ($flags|0)!=(0|0); + $16 = (($limit) - ($i))|0; + $$06 = 0.0;$count$03 = 0;$j$14 = $j$0$lcssa; + while(1) { + if ($15) { + $37 = (($flags) + ($j$14<<2)|0); + $38 = HEAP32[$37>>2]|0; + $39 = ($38|0)==(0); + if ($39) { + label = 15; + } else { + $$1 = $$06;$count$1 = $count$03; + } + } else { + label = 15; + } + do { + if ((label|0) == 15) { + label = 0; + $40 = (($q) + ($j$14<<2)|0); + $41 = +HEAPF32[$40>>2]; + $42 = (($f) + ($j$14<<2)|0); + $43 = +HEAPF32[$42>>2]; + $44 = $41 / $43; + $45 = !($44 < 0.25); + $46 = ($j$14|0)<($16|0); + $or$cond = $15 & $46; + $or$cond18 = $45 | $or$cond; + if ($or$cond18) { + $50 = (($r) + ($j$14<<2)|0); + $51 = +HEAPF32[$50>>2]; + $52 = $51 < 0.0; + $53 = $44; + $54 = (+Math_sqrt((+$53))); + $55 = (+_rint($54)); + $56 = -$55; + $$sink$in = $52 ? $56 : $55; + $$sink = (~~(($$sink$in))); + $57 = (($out) + ($j$14<<2)|0); + HEAP32[$57>>2] = $$sink; + $58 = Math_imul($$sink, $$sink)|0; + $59 = (+($58|0)); + $60 = +HEAPF32[$42>>2]; + $61 = $59 * $60; + HEAPF32[$40>>2] = $61; + $$1 = $$06;$count$1 = $count$03; + break; + } else { + $47 = $44 + $$06; + $48 = (($count$03) + 1)|0; + $49 = (($1) + ($count$03<<2)|0); + HEAP32[$49>>2] = $40; + $$1 = $47;$count$1 = $48; + break; + } + } + } while(0); + $62 = (($j$14) + 1)|0; + $exitcond15 = ($62|0)==($n|0); + if ($exitcond15) { + $$1$lcssa = $$1;$count$1$lcssa = $count$1; + break; + } else { + $$06 = $$1;$count$03 = $count$1;$j$14 = $62; + } + } + $63 = ($count$1$lcssa|0)==(0); + if ($63) { + $$4 = $$1$lcssa; + STACKTOP = sp;return (+$$4); + } + _qsort($1,$count$1$lcssa,4,9); + $64 = ($count$1$lcssa|0)>(0); + if (!($64)) { + $$4 = $$1$lcssa; + STACKTOP = sp;return (+$$4); + } + $65 = $q; + $66 = ((($p$0$1$val)) + 512|0); + $67 = +HEAPF64[$66>>3]; + $$22 = $$1$lcssa;$j$21 = 0; + while(1) { + $68 = (($1) + ($j$21<<2)|0); + $69 = HEAP32[$68>>2]|0; + $70 = $69; + $71 = (($70) - ($65))|0; + $72 = $71 >> 2; + $73 = $$22; + $74 = !($73 >= $67); + if ($74) { + $$3 = $$22;$$sink17 = 0;$storemerge = 0.0; + } else { + $75 = (($r) + ($72<<2)|0); + $76 = HEAP32[$75>>2]|0; + $77 = $76 & -2147483648; + $78 = $77 | 1065353216; + $79 = (HEAP32[tempDoublePtr>>2]=$78,+HEAPF32[tempDoublePtr>>2]); + $80 = (~~(($79))); + $81 = $$22 + -1.0; + $82 = (($f) + ($72<<2)|0); + $83 = +HEAPF32[$82>>2]; + $$3 = $81;$$sink17 = $80;$storemerge = $83; + } + $84 = (($out) + ($72<<2)|0); + HEAP32[$84>>2] = $$sink17; + HEAPF32[$69>>2] = $storemerge; + $85 = (($j$21) + 1)|0; + $exitcond = ($85|0)==($count$1$lcssa|0); + if ($exitcond) { + $$4 = $$3; + break; + } else { + $$22 = $$3;$j$21 = $85; + } + } + STACKTOP = sp;return (+$$4); +} +function _apsort($a,$b) { + $a = $a|0; + $b = $b|0; + var $0 = 0, $1 = 0.0, $2 = 0, $3 = 0.0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = HEAP32[$a>>2]|0; + $1 = +HEAPF32[$0>>2]; + $2 = HEAP32[$b>>2]|0; + $3 = +HEAPF32[$2>>2]; + $4 = $1 < $3; + $5 = $4&1; + $6 = $1 > $3; + $7 = $6&1; + $8 = (($5) - ($7))|0; + return ($8|0); +} +function _res0_free_info($i) { + $i = $i|0; + var $0 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($i|0)==(0|0); + if (!($0)) { + _free($i); + } + return; +} +function _res0_free_look($i) { + $i = $i|0; + var $$pre = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $3 = 0; + var $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $j$03 = 0, $j$12 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($i|0)==(0|0); + if ($0) { + return; + } + $1 = ((($i)) + 4|0); + $2 = HEAP32[$1>>2]|0; + $3 = ($2|0)>(0); + $4 = ((($i)) + 20|0); + if ($3) { + $24 = $2;$j$03 = 0; + while(1) { + $5 = HEAP32[$4>>2]|0; + $6 = (($5) + ($j$03<<2)|0); + $7 = HEAP32[$6>>2]|0; + $8 = ($7|0)==(0|0); + if ($8) { + $11 = $24; + } else { + _free($7); + $$pre = HEAP32[$1>>2]|0; + $11 = $$pre; + } + $9 = (($j$03) + 1)|0; + $10 = ($9|0)<($11|0); + if ($10) { + $24 = $11;$j$03 = $9; + } else { + break; + } + } + } + $12 = HEAP32[$4>>2]|0; + _free($12); + $13 = ((($i)) + 24|0); + $14 = HEAP32[$13>>2]|0; + $15 = ($14|0)>(0); + $16 = ((($i)) + 28|0); + if ($15) { + $j$12 = 0; + while(1) { + $17 = HEAP32[$16>>2]|0; + $18 = (($17) + ($j$12<<2)|0); + $19 = HEAP32[$18>>2]|0; + _free($19); + $20 = (($j$12) + 1)|0; + $21 = HEAP32[$13>>2]|0; + $22 = ($20|0)<($21|0); + if ($22) { + $j$12 = $20; + } else { + break; + } + } + } + $23 = HEAP32[$16>>2]|0; + _free($23); + _free($i); + return; +} +function _res0_pack($vr,$opb) { + $vr = $vr|0; + $opb = $opb|0; + var $$01$i = 0, $$lcssa10 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0; + var $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $acc$03 = 0, $exitcond = 0; + var $j$02 = 0, $j$11 = 0, $ret$0$lcssa$i = 0, $ret$02$i = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = HEAP32[$vr>>2]|0; + _oggpack_write($opb,$0,24); + $1 = ((($vr)) + 4|0); + $2 = HEAP32[$1>>2]|0; + _oggpack_write($opb,$2,24); + $3 = ((($vr)) + 8|0); + $4 = HEAP32[$3>>2]|0; + $5 = (($4) + -1)|0; + _oggpack_write($opb,$5,24); + $6 = ((($vr)) + 12|0); + $7 = HEAP32[$6>>2]|0; + $8 = (($7) + -1)|0; + _oggpack_write($opb,$8,6); + $9 = ((($vr)) + 20|0); + $10 = HEAP32[$9>>2]|0; + _oggpack_write($opb,$10,8); + $11 = HEAP32[$6>>2]|0; + $12 = ($11|0)>(0); + if (!($12)) { + return; + } + $13 = ((($vr)) + 24|0); + $acc$03 = 0;$j$02 = 0; + while(1) { + $16 = (($13) + ($j$02<<2)|0); + $17 = HEAP32[$16>>2]|0; + $18 = (_ov_ilog($17)|0); + $19 = ($18|0)>(3); + $20 = HEAP32[$16>>2]|0; + if ($19) { + _oggpack_write($opb,$20,3); + _oggpack_write($opb,1,1); + $21 = HEAP32[$16>>2]|0; + $22 = $21 >> 3; + _oggpack_write($opb,$22,5); + } else { + _oggpack_write($opb,$20,4); + } + $23 = HEAP32[$16>>2]|0; + $24 = ($23|0)==(0); + if ($24) { + $ret$0$lcssa$i = 0; + } else { + $$01$i = $23;$ret$02$i = 0; + while(1) { + $25 = $$01$i & 1; + $26 = (($25) + ($ret$02$i))|0; + $27 = $$01$i >>> 1; + $28 = ($27|0)==(0); + if ($28) { + $ret$0$lcssa$i = $26; + break; + } else { + $$01$i = $27;$ret$02$i = $26; + } + } + } + $29 = (($ret$0$lcssa$i) + ($acc$03))|0; + $30 = (($j$02) + 1)|0; + $31 = HEAP32[$6>>2]|0; + $32 = ($30|0)<($31|0); + if ($32) { + $acc$03 = $29;$j$02 = $30; + } else { + $$lcssa10 = $29; + break; + } + } + $14 = ($$lcssa10|0)>(0); + if (!($14)) { + return; + } + $15 = ((($vr)) + 280|0); + $j$11 = 0; + while(1) { + $33 = (($15) + ($j$11<<2)|0); + $34 = HEAP32[$33>>2]|0; + _oggpack_write($opb,$34,8); + $35 = (($j$11) + 1)|0; + $exitcond = ($35|0)==($$lcssa10|0); + if ($exitcond) { + break; + } else { + $j$11 = $35; + } + } + return; +} +function _res0_unpack($vi,$opb) { + $vi = $vi|0; + $opb = $opb|0; + var $$0 = 0, $$01$i = 0, $$lcssa36 = 0, $$lcssa37 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0; + var $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0; + var $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0; + var $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $8 = 0, $9 = 0, $acc$0$lcssa23 = 0, $acc$017 = 0, $cascade$0 = 0, $dim$09 = 0, $j$018 = 0; + var $j$114 = 0, $j$211 = 0, $partvals$010 = 0, $ret$0$lcssa$i = 0, $ret$02$i = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = (_calloc(1,2840)|0); + $1 = ((($vi)) + 28|0); + $2 = HEAP32[$1>>2]|0; + $3 = (_oggpack_read($opb,24)|0); + HEAP32[$0>>2] = $3; + $4 = (_oggpack_read($opb,24)|0); + $5 = ((($0)) + 4|0); + HEAP32[$5>>2] = $4; + $6 = (_oggpack_read($opb,24)|0); + $7 = (($6) + 1)|0; + $8 = ((($0)) + 8|0); + HEAP32[$8>>2] = $7; + $9 = (_oggpack_read($opb,6)|0); + $10 = (($9) + 1)|0; + $11 = ((($0)) + 12|0); + HEAP32[$11>>2] = $10; + $12 = (_oggpack_read($opb,8)|0); + $13 = ((($0)) + 20|0); + HEAP32[$13>>2] = $12; + $14 = ($12|0)<(0); + L1: do { + if ($14) { + label = 26; + } else { + $15 = ($9|0)>(-1); + if ($15) { + $16 = ((($0)) + 24|0); + $acc$017 = 0;$j$018 = 0; + while(1) { + $19 = (_oggpack_read($opb,3)|0); + $20 = (_oggpack_read($opb,1)|0); + $21 = ($20|0)<(0); + if ($21) { + label = 26; + break L1; + } + $22 = ($20|0)==(0); + if ($22) { + $cascade$0 = $19; + } else { + $23 = (_oggpack_read($opb,5)|0); + $24 = ($23|0)<(0); + if ($24) { + label = 26; + break L1; + } + $25 = $23 << 3; + $26 = $25 | $19; + $cascade$0 = $26; + } + $27 = (($16) + ($j$018<<2)|0); + HEAP32[$27>>2] = $cascade$0; + $28 = ($cascade$0|0)==(0); + if ($28) { + $ret$0$lcssa$i = 0; + } else { + $$01$i = $cascade$0;$ret$02$i = 0; + while(1) { + $29 = $$01$i & 1; + $30 = (($29) + ($ret$02$i))|0; + $31 = $$01$i >>> 1; + $32 = ($31|0)==(0); + if ($32) { + $ret$0$lcssa$i = $30; + break; + } else { + $$01$i = $31;$ret$02$i = $30; + } + } + } + $33 = (($ret$0$lcssa$i) + ($acc$017))|0; + $34 = (($j$018) + 1)|0; + $35 = HEAP32[$11>>2]|0; + $36 = ($34|0)<($35|0); + if ($36) { + $acc$017 = $33;$j$018 = $34; + } else { + $$lcssa37 = $33; + break; + } + } + $17 = ($$lcssa37|0)>(0); + if ($17) { + $18 = ((($0)) + 280|0); + $j$114 = 0; + while(1) { + $37 = (_oggpack_read($opb,8)|0); + $38 = ($37|0)<(0); + if ($38) { + break L1; + } + $39 = (($18) + ($j$114<<2)|0); + HEAP32[$39>>2] = $37; + $40 = (($j$114) + 1)|0; + $41 = ($40|0)<($$lcssa37|0); + if ($41) { + $j$114 = $40; + } else { + $70 = $17;$acc$0$lcssa23 = $$lcssa37; + break; + } + } + } else { + $70 = 0;$acc$0$lcssa23 = $$lcssa37; + } + } else { + $70 = 0;$acc$0$lcssa23 = 0; + } + $42 = HEAP32[$13>>2]|0; + $43 = ((($2)) + 24|0); + $44 = HEAP32[$43>>2]|0; + $45 = ($42|0)<($44|0); + if ($45) { + if ($70) { + $46 = ((($0)) + 280|0); + $j$211 = 0; + while(1) { + $49 = (($46) + ($j$211<<2)|0); + $50 = HEAP32[$49>>2]|0; + $51 = ($50|0)<($44|0); + if (!($51)) { + break L1; + } + $52 = (((($2)) + 1824|0) + ($50<<2)|0); + $53 = HEAP32[$52>>2]|0; + $54 = ((($53)) + 12|0); + $55 = HEAP32[$54>>2]|0; + $56 = ($55|0)==(0); + $47 = (($j$211) + 1)|0; + if ($56) { + break L1; + } + $48 = ($47|0)<($acc$0$lcssa23|0); + if ($48) { + $j$211 = $47; + } else { + break; + } + } + } + $57 = (((($2)) + 1824|0) + ($42<<2)|0); + $58 = HEAP32[$57>>2]|0; + $59 = ((($58)) + 4|0); + $60 = HEAP32[$59>>2]|0; + $61 = HEAP32[$58>>2]|0; + $62 = ($61|0)<(1); + if (!($62)) { + $63 = HEAP32[$11>>2]|0; + $dim$09 = $61;$partvals$010 = 1; + while(1) { + $66 = Math_imul($63, $partvals$010)|0; + $67 = ($66|0)>($60|0); + if ($67) { + break L1; + } + $64 = (($dim$09) + -1)|0; + $65 = ($dim$09|0)>(1); + if ($65) { + $dim$09 = $64;$partvals$010 = $66; + } else { + $$lcssa36 = $66; + break; + } + } + $68 = ((($0)) + 16|0); + HEAP32[$68>>2] = $$lcssa36; + $$0 = $0; + return ($$0|0); + } + } + } + } while(0); + if ((label|0) == 26) { + $69 = ($0|0)==(0|0); + if ($69) { + $$0 = 0; + return ($$0|0); + } + } + _free($0); + $$0 = 0; + return ($$0|0); +} +function _res0_look($vd,$vr) { + $vd = $vd|0; + $vr = $vr|0; + var $$lcssa = 0, $$maxstage$0 = 0, $$pn = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0; + var $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0; + var $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0; + var $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $8 = 0, $9 = 0, $acc$016 = 0, $acc$112 = 0, $acc$2 = 0, $acc$3 = 0; + var $exitcond = 0, $exitcond23 = 0, $exitcond24 = 0, $j$018 = 0, $j$18 = 0, $j$24 = 0, $j$24$us = 0, $k$013 = 0, $k$11$us = 0, $maxstage$0$lcssa = 0, $maxstage$017 = 0, $maxstage$2 = 0, $mult$03$us = 0, $val$02$us = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = (_calloc(1,44)|0); + $1 = ((($vd)) + 4|0); + $2 = HEAP32[$1>>2]|0; + $3 = ((($2)) + 28|0); + $4 = HEAP32[$3>>2]|0; + HEAP32[$0>>2] = $vr; + $5 = ((($vr)) + 12|0); + $6 = HEAP32[$5>>2]|0; + $7 = ((($0)) + 4|0); + HEAP32[$7>>2] = $6; + $8 = ((($4)) + 2848|0); + $9 = HEAP32[$8>>2]|0; + $10 = ((($0)) + 12|0); + HEAP32[$10>>2] = $9; + $11 = $9; + $12 = ((($vr)) + 20|0); + $13 = HEAP32[$12>>2]|0; + $14 = (($11) + (($13*56)|0)|0); + $15 = ((($0)) + 16|0); + HEAP32[$15>>2] = $14; + $16 = HEAP32[$14>>2]|0; + $17 = (_calloc($6,4)|0); + $18 = ((($0)) + 20|0); + HEAP32[$18>>2] = $17; + $19 = ($6|0)>(0); + if ($19) { + $20 = ((($vr)) + 24|0); + $21 = ((($vr)) + 280|0); + $acc$016 = 0;$j$018 = 0;$maxstage$017 = 0; + while(1) { + $22 = (($20) + ($j$018<<2)|0); + $23 = HEAP32[$22>>2]|0; + $24 = (_ov_ilog($23)|0); + $25 = ($24|0)==(0); + if ($25) { + $acc$3 = $acc$016;$maxstage$2 = $maxstage$017; + } else { + $26 = ($24|0)>($maxstage$017|0); + $$maxstage$0 = $26 ? $24 : $maxstage$017; + $27 = (_calloc($24,4)|0); + $28 = (($17) + ($j$018<<2)|0); + HEAP32[$28>>2] = $27; + $29 = ($24|0)>(0); + if ($29) { + $30 = HEAP32[$22>>2]|0; + $31 = (($17) + ($j$018<<2)|0); + $acc$112 = $acc$016;$k$013 = 0; + while(1) { + $32 = 1 << $k$013; + $33 = $30 & $32; + $34 = ($33|0)==(0); + if ($34) { + $acc$2 = $acc$112; + } else { + $35 = HEAP32[$8>>2]|0; + $36 = (($acc$112) + 1)|0; + $37 = (($21) + ($acc$112<<2)|0); + $38 = HEAP32[$37>>2]|0; + $39 = (($35) + (($38*56)|0)|0); + $40 = HEAP32[$31>>2]|0; + $41 = (($40) + ($k$013<<2)|0); + HEAP32[$41>>2] = $39; + $acc$2 = $36; + } + $42 = (($k$013) + 1)|0; + $exitcond23 = ($42|0)==($24|0); + if ($exitcond23) { + $acc$3 = $acc$2;$maxstage$2 = $$maxstage$0; + break; + } else { + $acc$112 = $acc$2;$k$013 = $42; + } + } + } else { + $acc$3 = $acc$016;$maxstage$2 = $$maxstage$0; + } + } + $43 = (($j$018) + 1)|0; + $44 = ($43|0)<($6|0); + if ($44) { + $acc$016 = $acc$3;$j$018 = $43;$maxstage$017 = $maxstage$2; + } else { + $maxstage$0$lcssa = $maxstage$2; + break; + } + } + } else { + $maxstage$0$lcssa = 0; + } + $45 = ((($0)) + 24|0); + HEAP32[$45>>2] = 1; + $46 = ($16|0)>(0); + if ($46) { + $48 = 1;$j$18 = 0; + while(1) { + $47 = Math_imul($48, $6)|0; + $49 = (($j$18) + 1)|0; + $exitcond = ($49|0)==($16|0); + if ($exitcond) { + $$lcssa = $47; + break; + } else { + $48 = $47;$j$18 = $49; + } + } + HEAP32[$45>>2] = $$lcssa; + $52 = $$lcssa; + } else { + $52 = 1; + } + $50 = ((($0)) + 8|0); + HEAP32[$50>>2] = $maxstage$0$lcssa; + $51 = $52 << 2; + $53 = (_malloc($51)|0); + $54 = ((($0)) + 28|0); + HEAP32[$54>>2] = $53; + $55 = ($52|0)>(0); + if (!($55)) { + return ($0|0); + } + $56 = $16 << 2; + if (!($46)) { + $j$24 = 0; + while(1) { + $69 = (_malloc($56)|0); + $70 = (($53) + ($j$24<<2)|0); + HEAP32[$70>>2] = $69; + $71 = (($j$24) + 1)|0; + $72 = ($71|0)<($52|0); + if ($72) { + $j$24 = $71; + } else { + break; + } + } + return ($0|0); + } + $57 = HEAP32[$54>>2]|0; + $j$24$us = 0; + while(1) { + $66 = (_malloc($56)|0); + $67 = (($53) + ($j$24$us<<2)|0); + HEAP32[$67>>2] = $66; + $68 = (($57) + ($j$24$us<<2)|0); + $64 = HEAP32[$68>>2]|0; + $$pn = $52;$k$11$us = 0;$val$02$us = $j$24$us; + while(1) { + $mult$03$us = (($$pn|0) / ($6|0))&-1; + $60 = (($val$02$us|0) / ($mult$03$us|0))&-1; + $61 = Math_imul($60, $mult$03$us)|0; + $62 = (($val$02$us) - ($61))|0; + $63 = (($64) + ($k$11$us<<2)|0); + HEAP32[$63>>2] = $60; + $65 = (($k$11$us) + 1)|0; + $exitcond24 = ($65|0)==($16|0); + if ($exitcond24) { + break; + } else { + $$pn = $mult$03$us;$k$11$us = $65;$val$02$us = $62; + } + } + $58 = (($j$24$us) + 1)|0; + $59 = ($58|0)<($52|0); + if ($59) { + $j$24$us = $58; + } else { + break; + } + } + return ($0|0); +} +function _res0_inverse($vb,$vl,$in,$nonzero,$ch) { + $vb = $vb|0; + $vl = $vl|0; + $in = $in|0; + $nonzero = $nonzero|0; + $ch = $ch|0; + var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $exitcond = 0, $i$01 = 0, $used$02 = 0, $used$1 = 0, $used$1$lcssa = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($ch|0)>(0); + if ($0) { + $i$01 = 0;$used$02 = 0; + } else { + return 0; + } + while(1) { + $1 = (($nonzero) + ($i$01<<2)|0); + $2 = HEAP32[$1>>2]|0; + $3 = ($2|0)==(0); + if ($3) { + $used$1 = $used$02; + } else { + $4 = (($in) + ($i$01<<2)|0); + $5 = HEAP32[$4>>2]|0; + $6 = (($used$02) + 1)|0; + $7 = (($in) + ($used$02<<2)|0); + HEAP32[$7>>2] = $5; + $used$1 = $6; + } + $8 = (($i$01) + 1)|0; + $exitcond = ($8|0)==($ch|0); + if ($exitcond) { + $used$1$lcssa = $used$1; + break; + } else { + $i$01 = $8;$used$02 = $used$1; + } + } + $9 = ($used$1$lcssa|0)==(0); + if ($9) { + return 0; + } + __01inverse($vb,$vl,$in,$used$1$lcssa,2); + return 0; +} +function _res1_forward($opb,$vb,$vl,$in,$nonzero,$ch,$partword,$submap) { + $opb = $opb|0; + $vb = $vb|0; + $vl = $vl|0; + $in = $in|0; + $nonzero = $nonzero|0; + $ch = $ch|0; + $partword = $partword|0; + $submap = $submap|0; + var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $exitcond = 0, $i$01 = 0, $used$02 = 0, $used$1 = 0, $used$1$lcssa = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($ch|0)>(0); + if ($0) { + $i$01 = 0;$used$02 = 0; + } else { + return 0; + } + while(1) { + $1 = (($nonzero) + ($i$01<<2)|0); + $2 = HEAP32[$1>>2]|0; + $3 = ($2|0)==(0); + if ($3) { + $used$1 = $used$02; + } else { + $4 = (($in) + ($i$01<<2)|0); + $5 = HEAP32[$4>>2]|0; + $6 = (($used$02) + 1)|0; + $7 = (($in) + ($used$02<<2)|0); + HEAP32[$7>>2] = $5; + $used$1 = $6; + } + $8 = (($i$01) + 1)|0; + $exitcond = ($8|0)==($ch|0); + if ($exitcond) { + $used$1$lcssa = $used$1; + break; + } else { + $i$01 = $8;$used$02 = $used$1; + } + } + $9 = ($used$1$lcssa|0)==(0); + if ($9) { + return 0; + } + __01forward($opb,$vl,$in,$used$1$lcssa,$partword); + return 0; +} +function _res1_class($vb,$vl,$in,$nonzero,$ch) { + $vb = $vb|0; + $vl = $vl|0; + $in = $in|0; + $nonzero = $nonzero|0; + $ch = $ch|0; + var $$0 = 0, $$max$0$i = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0.0, $23 = 0.0, $24 = 0.0; + var $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0; + var $43 = 0, $44 = 0, $45 = 0, $46 = 0.0, $47 = 0.0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0; + var $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $7 = 0, $8 = 0, $9 = 0, $ent$0$lcssa$i = 0, $ent$06$i = 0, $exitcond = 0, $exitcond$i = 0, $exitcond25$i = 0, $exitcond26$i = 0, $exitcond27$i = 0, $i$02 = 0, $i$020$i = 0, $i$117$i = 0, $ispos$i = 0, $j$015$i = 0; + var $k$04$i = 0, $k$1$lcssa$i = 0, $k$18$i = 0, $max$0$lcssa$i = 0, $max$05$i = 0, $neg$i = 0, $or$cond$i = 0, $used$03 = 0, $used$1 = 0, $used$1$lcssa = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($ch|0)>(0); + if ($0) { + $i$02 = 0;$used$03 = 0; + } else { + $$0 = 0; + return ($$0|0); + } + while(1) { + $1 = (($nonzero) + ($i$02<<2)|0); + $2 = HEAP32[$1>>2]|0; + $3 = ($2|0)==(0); + if ($3) { + $used$1 = $used$03; + } else { + $4 = (($in) + ($i$02<<2)|0); + $5 = HEAP32[$4>>2]|0; + $6 = (($used$03) + 1)|0; + $7 = (($in) + ($used$03<<2)|0); + HEAP32[$7>>2] = $5; + $used$1 = $6; + } + $8 = (($i$02) + 1)|0; + $exitcond = ($8|0)==($ch|0); + if ($exitcond) { + $used$1$lcssa = $used$1; + break; + } else { + $i$02 = $8;$used$03 = $used$1; + } + } + $9 = ($used$1$lcssa|0)==(0); + if ($9) { + $$0 = 0; + return ($$0|0); + } + $10 = HEAP32[$vl>>2]|0; + $11 = ((($10)) + 8|0); + $12 = HEAP32[$11>>2]|0; + $13 = ((($10)) + 12|0); + $14 = HEAP32[$13>>2]|0; + $15 = ((($10)) + 4|0); + $16 = HEAP32[$15>>2]|0; + $17 = HEAP32[$10>>2]|0; + $18 = (($16) - ($17))|0; + $19 = (($18|0) / ($12|0))&-1; + $20 = $used$1$lcssa << 2; + $21 = (__vorbis_block_alloc($vb,$20)|0); + $22 = (+($12|0)); + $23 = 100.0 / $22; + $24 = $23; + $25 = ($used$1$lcssa|0)>(0); + if ($25) { + $26 = $19 << 2; + $i$020$i = 0; + while(1) { + $31 = (__vorbis_block_alloc($vb,$26)|0); + $32 = (($21) + ($i$020$i<<2)|0); + HEAP32[$32>>2] = $31; + _memset(($31|0),0,($26|0))|0; + $33 = (($i$020$i) + 1)|0; + $exitcond27$i = ($33|0)==($used$1$lcssa|0); + if ($exitcond27$i) { + break; + } else { + $i$020$i = $33; + } + } + } + $27 = ($19|0)>(0); + if ($27) { + $28 = ($12|0)>(0); + $29 = (($14) + -1)|0; + $30 = ($14|0)>(1); + $i$117$i = 0; + while(1) { + $34 = Math_imul($i$117$i, $12)|0; + $35 = HEAP32[$10>>2]|0; + $36 = (($35) + ($34))|0; + if ($25) { + $j$015$i = 0; + while(1) { + if ($28) { + $37 = (($in) + ($j$015$i<<2)|0); + $38 = HEAP32[$37>>2]|0; + $ent$06$i = 0;$k$04$i = 0;$max$05$i = 0; + while(1) { + $39 = (($36) + ($k$04$i))|0; + $40 = (($38) + ($39<<2)|0); + $41 = HEAP32[$40>>2]|0; + $ispos$i = ($41|0)>(-1); + $neg$i = (0 - ($41))|0; + $42 = $ispos$i ? $41 : $neg$i; + $43 = ($42|0)>($max$05$i|0); + $$max$0$i = $43 ? $42 : $max$05$i; + $44 = (($42) + ($ent$06$i))|0; + $45 = (($k$04$i) + 1)|0; + $exitcond$i = ($45|0)==($12|0); + if ($exitcond$i) { + $ent$0$lcssa$i = $44;$max$0$lcssa$i = $$max$0$i; + break; + } else { + $ent$06$i = $44;$k$04$i = $45;$max$05$i = $$max$0$i; + } + } + } else { + $ent$0$lcssa$i = 0;$max$0$lcssa$i = 0; + } + $46 = (+($ent$0$lcssa$i|0)); + $47 = $46 * $24; + $48 = (~~(($47))); + L29: do { + if ($30) { + $k$18$i = 0; + while(1) { + $49 = (((($10)) + 2328|0) + ($k$18$i<<2)|0); + $50 = HEAP32[$49>>2]|0; + $51 = ($max$0$lcssa$i|0)>($50|0); + if (!($51)) { + $52 = (((($10)) + 2584|0) + ($k$18$i<<2)|0); + $53 = HEAP32[$52>>2]|0; + $54 = ($53|0)<(0); + $55 = ($48|0)<($53|0); + $or$cond$i = $54 | $55; + if ($or$cond$i) { + $k$1$lcssa$i = $k$18$i; + break L29; + } + } + $56 = (($k$18$i) + 1)|0; + $57 = ($56|0)<($29|0); + if ($57) { + $k$18$i = $56; + } else { + $k$1$lcssa$i = $56; + break; + } + } + } else { + $k$1$lcssa$i = 0; + } + } while(0); + $58 = (($21) + ($j$015$i<<2)|0); + $59 = HEAP32[$58>>2]|0; + $60 = (($59) + ($i$117$i<<2)|0); + HEAP32[$60>>2] = $k$1$lcssa$i; + $61 = (($j$015$i) + 1)|0; + $exitcond25$i = ($61|0)==($used$1$lcssa|0); + if ($exitcond25$i) { + break; + } else { + $j$015$i = $61; + } + } + } + $62 = (($i$117$i) + 1)|0; + $exitcond26$i = ($62|0)==($19|0); + if ($exitcond26$i) { + break; + } else { + $i$117$i = $62; + } + } + } + $63 = ((($vl)) + 40|0); + $64 = HEAP32[$63>>2]|0; + $65 = (($64) + 1)|0; + HEAP32[$63>>2] = $65; + $$0 = $21; + return ($$0|0); +} +function _res1_inverse($vb,$vl,$in,$nonzero,$ch) { + $vb = $vb|0; + $vl = $vl|0; + $in = $in|0; + $nonzero = $nonzero|0; + $ch = $ch|0; + var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $exitcond = 0, $i$01 = 0, $used$02 = 0, $used$1 = 0, $used$1$lcssa = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($ch|0)>(0); + if ($0) { + $i$01 = 0;$used$02 = 0; + } else { + return 0; + } + while(1) { + $1 = (($nonzero) + ($i$01<<2)|0); + $2 = HEAP32[$1>>2]|0; + $3 = ($2|0)==(0); + if ($3) { + $used$1 = $used$02; + } else { + $4 = (($in) + ($i$01<<2)|0); + $5 = HEAP32[$4>>2]|0; + $6 = (($used$02) + 1)|0; + $7 = (($in) + ($used$02<<2)|0); + HEAP32[$7>>2] = $5; + $used$1 = $6; + } + $8 = (($i$01) + 1)|0; + $exitcond = ($8|0)==($ch|0); + if ($exitcond) { + $used$1$lcssa = $used$1; + break; + } else { + $i$01 = $8;$used$02 = $used$1; + } + } + $9 = ($used$1$lcssa|0)==(0); + if ($9) { + return 0; + } + __01inverse($vb,$vl,$in,$used$1$lcssa,3); + return 0; +} +function _res2_class($vb,$vl,$in,$nonzero,$ch) { + $vb = $vb|0; + $vl = $vl|0; + $in = $in|0; + $nonzero = $nonzero|0; + $ch = $ch|0; + var $$0 = 0, $$angmax$1$i = 0, $$magmax$0$i = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0; + var $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0; + var $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $angmax$0$lcssa$i = 0, $angmax$09$i = 0, $angmax$1$lcssa$i = 0; + var $angmax$15$i = 0, $exitcond = 0, $exitcond$i = 0, $exitcond25$i = 0, $i$01 = 0, $i$021$i = 0, $ispos$i = 0, $ispos1$i = 0, $j$07$i = 0, $j$1$lcssa$i = 0, $j$114$i = 0, $k$04$i = 0, $l$020$i = 0, $l$1$lcssa$i = 0, $l$16$i = 0, $magmax$0$lcssa$i = 0, $magmax$08$i = 0, $neg$i = 0, $neg2$i = 0, $not$ = 0; + var $phitmp = 0, $used$0$ = 0, $used$0$$lcssa = 0, $used$02 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($ch|0)>(0); + if ($0) { + $i$01 = 0;$used$02 = 0; + } else { + $$0 = 0; + return ($$0|0); + } + while(1) { + $1 = (($nonzero) + ($i$01<<2)|0); + $2 = HEAP32[$1>>2]|0; + $not$ = ($2|0)!=(0); + $3 = $not$&1; + $used$0$ = (($3) + ($used$02))|0; + $4 = (($i$01) + 1)|0; + $exitcond = ($4|0)==($ch|0); + if ($exitcond) { + $used$0$$lcssa = $used$0$; + break; + } else { + $i$01 = $4;$used$02 = $used$0$; + } + } + $phitmp = ($used$0$$lcssa|0)==(0); + if ($phitmp) { + $$0 = 0; + return ($$0|0); + } + $5 = HEAP32[$vl>>2]|0; + $6 = ((($5)) + 8|0); + $7 = HEAP32[$6>>2]|0; + $8 = ((($5)) + 12|0); + $9 = HEAP32[$8>>2]|0; + $10 = ((($5)) + 4|0); + $11 = HEAP32[$10>>2]|0; + $12 = HEAP32[$5>>2]|0; + $13 = (($11) - ($12))|0; + $14 = (($13|0) / ($7|0))&-1; + $15 = (__vorbis_block_alloc($vb,4)|0); + $16 = $14 << 2; + $17 = (__vorbis_block_alloc($vb,$16)|0); + HEAP32[$15>>2] = $17; + _memset(($17|0),0,($16|0))|0; + $18 = ($14|0)>(0); + if ($18) { + $19 = HEAP32[$5>>2]|0; + $20 = (($19|0) / ($ch|0))&-1; + $21 = ($7|0)>(0); + $22 = (($9) + -1)|0; + $23 = ($9|0)>(1); + $24 = HEAP32[$15>>2]|0; + $25 = ($ch|0)>(1); + $i$021$i = 0;$l$020$i = $20; + while(1) { + if ($21) { + $26 = HEAP32[$in>>2]|0; + $angmax$09$i = 0;$j$07$i = 0;$l$16$i = $l$020$i;$magmax$08$i = 0; + while(1) { + $27 = (($26) + ($l$16$i<<2)|0); + $28 = HEAP32[$27>>2]|0; + $ispos$i = ($28|0)>(-1); + $neg$i = (0 - ($28))|0; + $29 = $ispos$i ? $28 : $neg$i; + $30 = ($29|0)>($magmax$08$i|0); + $$magmax$0$i = $30 ? $29 : $magmax$08$i; + if ($25) { + $angmax$15$i = $angmax$09$i;$k$04$i = 1; + while(1) { + $31 = (($in) + ($k$04$i<<2)|0); + $32 = HEAP32[$31>>2]|0; + $33 = (($32) + ($l$16$i<<2)|0); + $34 = HEAP32[$33>>2]|0; + $ispos1$i = ($34|0)>(-1); + $neg2$i = (0 - ($34))|0; + $35 = $ispos1$i ? $34 : $neg2$i; + $36 = ($35|0)>($angmax$15$i|0); + $$angmax$1$i = $36 ? $35 : $angmax$15$i; + $37 = (($k$04$i) + 1)|0; + $exitcond$i = ($37|0)==($ch|0); + if ($exitcond$i) { + $angmax$1$lcssa$i = $$angmax$1$i; + break; + } else { + $angmax$15$i = $$angmax$1$i;$k$04$i = $37; + } + } + } else { + $angmax$1$lcssa$i = $angmax$09$i; + } + $38 = (($l$16$i) + 1)|0; + $39 = (($j$07$i) + ($ch))|0; + $40 = ($39|0)<($7|0); + if ($40) { + $angmax$09$i = $angmax$1$lcssa$i;$j$07$i = $39;$l$16$i = $38;$magmax$08$i = $$magmax$0$i; + } else { + $angmax$0$lcssa$i = $angmax$1$lcssa$i;$l$1$lcssa$i = $38;$magmax$0$lcssa$i = $$magmax$0$i; + break; + } + } + } else { + $angmax$0$lcssa$i = 0;$l$1$lcssa$i = $l$020$i;$magmax$0$lcssa$i = 0; + } + L22: do { + if ($23) { + $j$114$i = 0; + while(1) { + $41 = (((($5)) + 2328|0) + ($j$114$i<<2)|0); + $42 = HEAP32[$41>>2]|0; + $43 = ($magmax$0$lcssa$i|0)>($42|0); + if (!($43)) { + $44 = (((($5)) + 2584|0) + ($j$114$i<<2)|0); + $45 = HEAP32[$44>>2]|0; + $46 = ($angmax$0$lcssa$i|0)>($45|0); + if (!($46)) { + $j$1$lcssa$i = $j$114$i; + break L22; + } + } + $47 = (($j$114$i) + 1)|0; + $48 = ($47|0)<($22|0); + if ($48) { + $j$114$i = $47; + } else { + $j$1$lcssa$i = $47; + break; + } + } + } else { + $j$1$lcssa$i = 0; + } + } while(0); + $49 = (($24) + ($i$021$i<<2)|0); + HEAP32[$49>>2] = $j$1$lcssa$i; + $50 = (($i$021$i) + 1)|0; + $exitcond25$i = ($50|0)==($14|0); + if ($exitcond25$i) { + break; + } else { + $i$021$i = $50;$l$020$i = $l$1$lcssa$i; + } + } + } + $51 = ((($vl)) + 40|0); + $52 = HEAP32[$51>>2]|0; + $53 = (($52) + 1)|0; + HEAP32[$51>>2] = $53; + $$0 = $15; + return ($$0|0); +} +function _res2_forward($opb,$vb,$vl,$in,$nonzero,$ch,$partword,$submap) { + $opb = $opb|0; + $vb = $vb|0; + $vl = $vl|0; + $in = $in|0; + $nonzero = $nonzero|0; + $ch = $ch|0; + $partword = $partword|0; + $submap = $submap|0; + var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0; + var $exitcond = 0, $i$03 = 0, $j$01 = 0, $k$02 = 0, $not$ = 0, $phitmp = 0, $used$0$ = 0, $used$0$$lcssa = 0, $used$04 = 0, $work = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 16|0; + $work = sp; + $0 = ((($vb)) + 36|0); + $1 = HEAP32[$0>>2]|0; + $2 = (($1|0) / 2)&-1; + $3 = $ch << 2; + $4 = Math_imul($3, $2)|0; + $5 = (__vorbis_block_alloc($vb,$4)|0); + HEAP32[$work>>2] = $5; + $6 = ($ch|0)>(0); + if (!($6)) { + STACKTOP = sp;return 0; + } + $7 = ($1|0)>(1); + $i$03 = 0;$used$04 = 0; + while(1) { + $8 = (($in) + ($i$03<<2)|0); + $9 = HEAP32[$8>>2]|0; + $10 = (($nonzero) + ($i$03<<2)|0); + $11 = HEAP32[$10>>2]|0; + $not$ = ($11|0)!=(0); + $12 = $not$&1; + $used$0$ = (($12) + ($used$04))|0; + if ($7) { + $j$01 = 0;$k$02 = $i$03; + while(1) { + $13 = (($9) + ($j$01<<2)|0); + $14 = HEAP32[$13>>2]|0; + $15 = (($5) + ($k$02<<2)|0); + HEAP32[$15>>2] = $14; + $16 = (($j$01) + 1)|0; + $17 = (($k$02) + ($ch))|0; + $18 = ($16|0)<($2|0); + if ($18) { + $j$01 = $16;$k$02 = $17; + } else { + break; + } + } + } + $19 = (($i$03) + 1)|0; + $exitcond = ($19|0)==($ch|0); + if ($exitcond) { + $used$0$$lcssa = $used$0$; + break; + } else { + $i$03 = $19;$used$04 = $used$0$; + } + } + $phitmp = ($used$0$$lcssa|0)==(0); + if ($phitmp) { + STACKTOP = sp;return 0; + } + __01forward($opb,$vl,$work,1,$partword); + STACKTOP = sp;return 0; +} +function _res2_inverse($vb,$vl,$in,$nonzero,$ch) { + $vb = $vb|0; + $vl = $vl|0; + $in = $in|0; + $nonzero = $nonzero|0; + $ch = $ch|0; + var $$ = 0, $$pre = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0; + var $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0; + var $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0; + var $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0; + var $8 = 0, $9 = 0, $i$0$lcssa = 0, $i$014 = 0, $i$110 = 0, $i$2$lcssa = 0, $i$28 = 0, $k$07 = 0, $l$09 = 0, $or$cond = 0, $or$cond6 = 0, $s$012 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = HEAP32[$vl>>2]|0; + $1 = ((($0)) + 8|0); + $2 = HEAP32[$1>>2]|0; + $3 = ((($vl)) + 16|0); + $4 = HEAP32[$3>>2]|0; + $5 = HEAP32[$4>>2]|0; + $6 = ((($vb)) + 36|0); + $7 = HEAP32[$6>>2]|0; + $8 = Math_imul($7, $ch)|0; + $9 = $8 >> 1; + $10 = ((($0)) + 4|0); + $11 = HEAP32[$10>>2]|0; + $12 = ($11|0)<($9|0); + $$ = $12 ? $11 : $9; + $13 = HEAP32[$0>>2]|0; + $14 = (($$) - ($13))|0; + $15 = ($14|0)>(0); + if (!($15)) { + return 0; + } + $16 = (($14|0) / ($2|0))&-1; + $17 = (($5) + -1)|0; + $18 = (($17) + ($16))|0; + $19 = (($18|0) / ($5|0))&-1; + $20 = $19 << 2; + $21 = (__vorbis_block_alloc($vb,$20)|0); + $22 = ($ch|0)>(0); + L4: do { + if ($22) { + $i$014 = 0; + while(1) { + $23 = (($nonzero) + ($i$014<<2)|0); + $24 = HEAP32[$23>>2]|0; + $25 = ($24|0)==(0); + if (!($25)) { + $i$0$lcssa = $i$014; + break L4; + } + $26 = (($i$014) + 1)|0; + $27 = ($26|0)<($ch|0); + if ($27) { + $i$014 = $26; + } else { + $i$0$lcssa = $26; + break; + } + } + } else { + $i$0$lcssa = 0; + } + } while(0); + $28 = ($i$0$lcssa|0)==($ch|0); + if ($28) { + return 0; + } + $29 = ((($vl)) + 8|0); + $30 = HEAP32[$29>>2]|0; + $31 = ($30|0)>(0); + if (!($31)) { + return 0; + } + $32 = ($16|0)>(0); + $33 = ((($vb)) + 4|0); + $34 = ((($0)) + 16|0); + $35 = ((($vl)) + 28|0); + $36 = ($5|0)>(0); + $37 = ((($vl)) + 20|0); + $79 = $30;$s$012 = 0; + L15: while(1) { + if ($32) { + $38 = ($s$012|0)==(0); + $39 = 1 << $s$012; + $i$110 = 0;$l$09 = 0; + while(1) { + if ($38) { + $40 = HEAP32[$3>>2]|0; + $41 = (_vorbis_book_decode($40,$33)|0); + $42 = ($41|0)==(-1); + if ($42) { + label = 23; + break L15; + } + $43 = HEAP32[$34>>2]|0; + $44 = ($41|0)<($43|0); + if (!($44)) { + label = 23; + break L15; + } + $45 = HEAP32[$35>>2]|0; + $46 = (($45) + ($41<<2)|0); + $47 = HEAP32[$46>>2]|0; + $48 = (($21) + ($l$09<<2)|0); + HEAP32[$48>>2] = $47; + $49 = ($47|0)==(0|0); + if ($49) { + label = 23; + break L15; + } + } + $50 = ($i$110|0)<($16|0); + $or$cond6 = $36 & $50; + if ($or$cond6) { + $51 = (($21) + ($l$09<<2)|0); + $i$28 = $i$110;$k$07 = 0; + while(1) { + $52 = HEAP32[$51>>2]|0; + $53 = (($52) + ($k$07<<2)|0); + $54 = HEAP32[$53>>2]|0; + $55 = (((($0)) + 24|0) + ($54<<2)|0); + $56 = HEAP32[$55>>2]|0; + $57 = $56 & $39; + $58 = ($57|0)==(0); + if (!($58)) { + $59 = HEAP32[$37>>2]|0; + $60 = (($59) + ($54<<2)|0); + $61 = HEAP32[$60>>2]|0; + $62 = (($61) + ($s$012<<2)|0); + $63 = HEAP32[$62>>2]|0; + $64 = ($63|0)==(0|0); + if (!($64)) { + $65 = Math_imul($i$28, $2)|0; + $66 = HEAP32[$0>>2]|0; + $67 = (($66) + ($65))|0; + $68 = (_vorbis_book_decodevv_add($63,$in,$67,$ch,$33,$2)|0); + $69 = ($68|0)==(-1); + if ($69) { + label = 23; + break L15; + } + } + } + $70 = (($k$07) + 1)|0; + $71 = (($i$28) + 1)|0; + $72 = ($70|0)<($5|0); + $73 = ($71|0)<($16|0); + $or$cond = $72 & $73; + if ($or$cond) { + $i$28 = $71;$k$07 = $70; + } else { + $i$2$lcssa = $71; + break; + } + } + } else { + $i$2$lcssa = $i$110; + } + $74 = (($l$09) + 1)|0; + $75 = ($i$2$lcssa|0)<($16|0); + if ($75) { + $i$110 = $i$2$lcssa;$l$09 = $74; + } else { + break; + } + } + $$pre = HEAP32[$29>>2]|0; + $78 = $$pre; + } else { + $78 = $79; + } + $76 = (($s$012) + 1)|0; + $77 = ($76|0)<($78|0); + if ($77) { + $79 = $78;$s$012 = $76; + } else { + label = 23; + break; + } + } + if ((label|0) == 23) { + return 0; + } + return (0)|0; +} +function __01inverse($vb,$vl,$in,$ch,$decodepart) { + $vb = $vb|0; + $vl = $vl|0; + $in = $in|0; + $ch = $ch|0; + $decodepart = $decodepart|0; + var $$ = 0, $$alloca_mul = 0, $$not = 0, $$not31 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0; + var $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0; + var $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0; + var $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0; + var $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $brmerge = 0, $exitcond = 0, $i$017 = 0, $i$1$lcssa = 0, $i$113 = 0, $i$113$us = 0; + var $j$022 = 0, $j$18 = 0, $j$29$us = 0, $k$012 = 0, $k$012$us = 0, $l$014 = 0, $or$cond = 0, $or$cond$us = 0, $or$cond11 = 0, $s$020 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = HEAP32[$vl>>2]|0; + $1 = ((($0)) + 8|0); + $2 = HEAP32[$1>>2]|0; + $3 = ((($vl)) + 16|0); + $4 = HEAP32[$3>>2]|0; + $5 = HEAP32[$4>>2]|0; + $6 = ((($vb)) + 36|0); + $7 = HEAP32[$6>>2]|0; + $8 = $7 >> 1; + $9 = ((($0)) + 4|0); + $10 = HEAP32[$9>>2]|0; + $11 = ($10|0)<($8|0); + $$ = $11 ? $10 : $8; + $12 = HEAP32[$0>>2]|0; + $13 = (($$) - ($12))|0; + $14 = ($13|0)>(0); + if (!($14)) { + STACKTOP = sp;return; + } + $15 = (($13|0) / ($2|0))&-1; + $16 = $ch << 2; + $$alloca_mul = $16; + $17 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul)|0)+15)&-16)|0;; + $18 = ($ch|0)>(0); + if ($18) { + $19 = (($5) + -1)|0; + $20 = (($19) + ($15))|0; + $21 = (($20|0) / ($5|0))&-1; + $22 = $21 << 2; + $j$022 = 0; + while(1) { + $32 = (__vorbis_block_alloc($vb,$22)|0); + $33 = (($17) + ($j$022<<2)|0); + HEAP32[$33>>2] = $32; + $34 = (($j$022) + 1)|0; + $exitcond = ($34|0)==($ch|0); + if ($exitcond) { + break; + } else { + $j$022 = $34; + } + } + } + $23 = ((($vl)) + 8|0); + $24 = HEAP32[$23>>2]|0; + $25 = ($24|0)>(0); + if (!($25)) { + STACKTOP = sp;return; + } + $26 = ($15|0)>(0); + $27 = ((($vb)) + 4|0); + $28 = ((($0)) + 16|0); + $29 = ((($vl)) + 28|0); + $30 = ($5|0)>(0); + $31 = ((($vl)) + 20|0); + $$not31 = $18 ^ 1; + $s$020 = 0; + L12: while(1) { + if ($26) { + $35 = 1 << $s$020; + $$not = ($s$020|0)!=(0); + $brmerge = $$not | $$not31; + $i$017 = 0;$l$014 = 0; + while(1) { + if (!($brmerge)) { + $j$18 = 0; + while(1) { + $69 = HEAP32[$3>>2]|0; + $70 = (_vorbis_book_decode($69,$27)|0); + $71 = ($70|0)==(-1); + if ($71) { + label = 25; + break L12; + } + $72 = HEAP32[$28>>2]|0; + $73 = ($70|0)<($72|0); + if (!($73)) { + label = 25; + break L12; + } + $74 = HEAP32[$29>>2]|0; + $75 = (($74) + ($70<<2)|0); + $76 = HEAP32[$75>>2]|0; + $77 = (($17) + ($j$18<<2)|0); + $78 = HEAP32[$77>>2]|0; + $79 = (($78) + ($l$014<<2)|0); + HEAP32[$79>>2] = $76; + $80 = ($76|0)==(0); + $67 = (($j$18) + 1)|0; + if ($80) { + label = 25; + break L12; + } + $68 = ($67|0)<($ch|0); + if ($68) { + $j$18 = $67; + } else { + break; + } + } + } + $36 = ($i$017|0)<($15|0); + $or$cond11 = $30 & $36; + L25: do { + if ($or$cond11) { + if ($18) { + $i$113$us = $i$017;$k$012$us = 0; + } else { + $i$113 = $i$017;$k$012 = 0; + while(1) { + $81 = (($k$012) + 1)|0; + $82 = (($i$113) + 1)|0; + $83 = ($81|0)<($5|0); + $84 = ($82|0)<($15|0); + $or$cond = $83 & $84; + if ($or$cond) { + $i$113 = $82;$k$012 = $81; + } else { + $i$1$lcssa = $82; + break L25; + } + } + } + while(1) { + $43 = Math_imul($i$113$us, $2)|0; + $j$29$us = 0; + while(1) { + $41 = HEAP32[$0>>2]|0; + $42 = (($41) + ($43))|0; + $44 = (($17) + ($j$29$us<<2)|0); + $45 = HEAP32[$44>>2]|0; + $46 = (($45) + ($l$014<<2)|0); + $47 = HEAP32[$46>>2]|0; + $48 = (($47) + ($k$012$us<<2)|0); + $49 = HEAP32[$48>>2]|0; + $50 = (((($0)) + 24|0) + ($49<<2)|0); + $51 = HEAP32[$50>>2]|0; + $52 = $51 & $35; + $53 = ($52|0)==(0); + if (!($53)) { + $54 = HEAP32[$31>>2]|0; + $55 = (($54) + ($49<<2)|0); + $56 = HEAP32[$55>>2]|0; + $57 = (($56) + ($s$020<<2)|0); + $58 = HEAP32[$57>>2]|0; + $59 = ($58|0)==(0|0); + if (!($59)) { + $60 = (($in) + ($j$29$us<<2)|0); + $61 = HEAP32[$60>>2]|0; + $62 = (($61) + ($42<<2)|0); + $63 = (FUNCTION_TABLE_iiiii[$decodepart & 3]($58,$62,$27,$2)|0); + $64 = ($63|0)==(-1); + if ($64) { + label = 25; + break L12; + } + } + } + $65 = (($j$29$us) + 1)|0; + $66 = ($65|0)<($ch|0); + if ($66) { + $j$29$us = $65; + } else { + break; + } + } + $37 = (($k$012$us) + 1)|0; + $38 = (($i$113$us) + 1)|0; + $39 = ($37|0)<($5|0); + $40 = ($38|0)<($15|0); + $or$cond$us = $39 & $40; + if ($or$cond$us) { + $i$113$us = $38;$k$012$us = $37; + } else { + $i$1$lcssa = $38; + break; + } + } + } else { + $i$1$lcssa = $i$017; + } + } while(0); + $85 = (($l$014) + 1)|0; + $86 = ($i$1$lcssa|0)<($15|0); + if ($86) { + $i$017 = $i$1$lcssa;$l$014 = $85; + } else { + break; + } + } + } + $87 = (($s$020) + 1)|0; + $88 = HEAP32[$23>>2]|0; + $89 = ($87|0)<($88|0); + if ($89) { + $s$020 = $87; + } else { + label = 25; + break; + } + } + if ((label|0) == 25) { + STACKTOP = sp;return; + } +} +function __01forward($opb,$vl,$in,$ch,$partword) { + $opb = $opb|0; + $vl = $vl|0; + $in = $in|0; + $ch = $ch|0; + $partword = $partword|0; + var $$09$i$i = 0, $$lcssa$i$i = 0, $$lcssa7$i$i = 0, $$lcssa72 = 0, $$pre$i = 0, $$pre43 = 0, $$pre44 = 0, $$sum = 0, $$sum1 = 0, $$sum2 = 0, $$sum3 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0; + var $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0; + var $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0; + var $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0; + var $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0; + var $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0; + var $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0; + var $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0; + var $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0; + var $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0; + var $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $best$020$i$i = 0; + var $best$1$i$i = 0, $bits$0$lcssa$i = 0, $bits$08$i = 0, $brmerge$demorgan = 0, $e$i$i = 0, $exitcond = 0, $exitcond$i = 0, $exitcond$i$i = 0, $exitcond15$i = 0, $exitcond35 = 0, $exitcond36 = 0, $exitcond37 = 0, $exitcond38 = 0, $exitcond41$i$i = 0, $exitcond42$i$i = 0, $exitcond43$i$i = 0, $i$024 = 0, $i$033$i$i = 0, $i$09$i = 0, $i$1$lcssa = 0; + var $i$121 = 0, $i$128$i$i = 0, $i$221$i$i = 0, $i$38$i$i = 0, $index$031$i$i = 0, $index$126$i$i = 0, $index$2$i$i = 0, $index$319$i$i = 0, $index$4$i$i = 0, $index$5$i$i = 0, $j$010$i$i = 0, $j$013 = 0, $j$013$us = 0, $j$113$i$i = 0, $j$115 = 0, $k$012$us = 0, $k$120 = 0, $o$032$i$i = 0, $o$127$i$i = 0, $or$cond$i$i = 0; + var $or$cond19 = 0, $or$cond50$i$i = 0, $p$i$i = 0, $resbits = 0, $resvals = 0, $s$026 = 0, $this$0$lcssa$i$i = 0, $this$011$i$i = 0, $umax = 0, $val$011$us = 0, $val$1$us = 0, $val$1$us$lcssa = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 1088|0; + $p$i$i = sp + 1056|0; + $e$i$i = sp + 1024|0; + $resbits = sp + 512|0; + $resvals = sp; + $0 = HEAP32[$vl>>2]|0; + $1 = ((($0)) + 8|0); + $2 = HEAP32[$1>>2]|0; + $3 = ((($0)) + 12|0); + $4 = HEAP32[$3>>2]|0; + $5 = ((($vl)) + 16|0); + $6 = HEAP32[$5>>2]|0; + $7 = HEAP32[$6>>2]|0; + $8 = ((($0)) + 4|0); + $9 = HEAP32[$8>>2]|0; + $10 = HEAP32[$0>>2]|0; + $11 = (($9) - ($10))|0; + $12 = (($11|0) / ($2|0))&-1; + _memset(($resbits|0),0,512)|0; + _memset(($resvals|0),0,512)|0; + $13 = ((($vl)) + 8|0); + $14 = HEAP32[$13>>2]|0; + $15 = ($14|0)>(0); + if (!($15)) { + STACKTOP = sp;return; + } + $16 = ($12|0)>(0); + $17 = ($ch|0)>(0); + $18 = ($7|0)>(1); + $19 = ((($vl)) + 36|0); + $20 = ($7|0)>(0); + $21 = ((($vl)) + 20|0); + $22 = ((($vl)) + 32|0); + $23 = (0 - ($7))|0; + $207 = $14;$s$026 = 0; + while(1) { + if ($16) { + $24 = ($s$026|0)==(0); + $25 = 1 << $s$026; + $brmerge$demorgan = $24 & $17; + $i$024 = 0; + while(1) { + L10: do { + if ($brmerge$demorgan) { + if ($18) { + $j$013$us = 0; + } else { + $j$013 = 0; + while(1) { + $51 = (($partword) + ($j$013<<2)|0); + $52 = HEAP32[$51>>2]|0; + $53 = (($52) + ($i$024<<2)|0); + $54 = HEAP32[$53>>2]|0; + $55 = HEAP32[$5>>2]|0; + $56 = ((($55)) + 4|0); + $57 = HEAP32[$56>>2]|0; + $58 = ($54|0)<($57|0); + if ($58) { + $59 = (_vorbis_book_encode($55,$54,$opb)|0); + $60 = HEAP32[$19>>2]|0; + $61 = (($60) + ($59))|0; + HEAP32[$19>>2] = $61; + } + $62 = (($j$013) + 1)|0; + $exitcond = ($62|0)==($ch|0); + if ($exitcond) { + break L10; + } else { + $j$013 = $62; + } + } + } + while(1) { + $44 = (($partword) + ($j$013$us<<2)|0); + $40 = HEAP32[$44>>2]|0; + $45 = (($40) + ($i$024<<2)|0); + $46 = HEAP32[$45>>2]|0; + $k$012$us = 1;$val$011$us = $46; + while(1) { + $36 = Math_imul($val$011$us, $4)|0; + $37 = (($k$012$us) + ($i$024))|0; + $38 = ($37|0)<($12|0); + if ($38) { + $39 = (($40) + ($37<<2)|0); + $41 = HEAP32[$39>>2]|0; + $42 = (($41) + ($36))|0; + $val$1$us = $42; + } else { + $val$1$us = $36; + } + $43 = (($k$012$us) + 1)|0; + $exitcond37 = ($43|0)==($7|0); + if ($exitcond37) { + $val$1$us$lcssa = $val$1$us; + break; + } else { + $k$012$us = $43;$val$011$us = $val$1$us; + } + } + $28 = HEAP32[$5>>2]|0; + $29 = ((($28)) + 4|0); + $30 = HEAP32[$29>>2]|0; + $31 = ($val$1$us$lcssa|0)<($30|0); + if ($31) { + $32 = (_vorbis_book_encode($28,$val$1$us$lcssa,$opb)|0); + $33 = HEAP32[$19>>2]|0; + $34 = (($33) + ($32))|0; + HEAP32[$19>>2] = $34; + } + $35 = (($j$013$us) + 1)|0; + $exitcond38 = ($35|0)==($ch|0); + if ($exitcond38) { + break; + } else { + $j$013$us = $35; + } + } + } + } while(0); + $47 = ($i$024|0)<($12|0); + $or$cond19 = $20 & $47; + if ($or$cond19) { + $48 = (($i$024) - ($12))|0; + $49 = ($48>>>0)<($23>>>0); + $umax = $49 ? $23 : $48; + $50 = (0 - ($umax))|0; + $i$121 = $i$024;$k$120 = 0; + while(1) { + $63 = Math_imul($i$121, $2)|0; + $64 = HEAP32[$0>>2]|0; + $65 = (($64) + ($63))|0; + if ($17) { + $j$115 = 0; + while(1) { + $66 = (($partword) + ($j$115<<2)|0); + $67 = HEAP32[$66>>2]|0; + $68 = (($67) + ($i$121<<2)|0); + $69 = HEAP32[$68>>2]|0; + if ($24) { + $70 = (($resvals) + ($69<<2)|0); + $71 = HEAP32[$70>>2]|0; + $72 = (($71) + ($2))|0; + HEAP32[$70>>2] = $72; + } + $73 = (((($0)) + 24|0) + ($69<<2)|0); + $74 = HEAP32[$73>>2]|0; + $75 = $74 & $25; + $76 = ($75|0)==(0); + if (!($76)) { + $77 = HEAP32[$21>>2]|0; + $78 = (($77) + ($69<<2)|0); + $79 = HEAP32[$78>>2]|0; + $80 = (($79) + ($s$026<<2)|0); + $81 = HEAP32[$80>>2]|0; + $82 = ($81|0)==(0|0); + if (!($82)) { + $83 = (($in) + ($j$115<<2)|0); + $84 = HEAP32[$83>>2]|0; + $85 = HEAP32[$81>>2]|0; + $86 = (($2|0) / ($85|0))&-1; + $87 = ($86|0)>(0); + if ($87) { + $88 = ((($81)) + 48|0); + $89 = ((($81)) + 52|0); + $90 = ((($81)) + 44|0); + $91 = ((($81)) + 12|0); + $92 = ((($81)) + 4|0); + $100 = $85;$bits$08$i = 0;$i$09$i = 0; + while(1) { + $93 = Math_imul($i$09$i, $85)|0; + $$sum = (($93) + ($65))|0; + $94 = (($84) + ($$sum<<2)|0); + $95 = HEAP32[$88>>2]|0; + $96 = HEAP32[$89>>2]|0; + $97 = HEAP32[$90>>2]|0; + $98 = $97 >> 1; + ;HEAP32[$p$i$i>>2]=0|0;HEAP32[$p$i$i+4>>2]=0|0;HEAP32[$p$i$i+8>>2]=0|0;HEAP32[$p$i$i+12>>2]=0|0;HEAP32[$p$i$i+16>>2]=0|0;HEAP32[$p$i$i+20>>2]=0|0;HEAP32[$p$i$i+24>>2]=0|0;HEAP32[$p$i$i+28>>2]=0|0; + $99 = ($96|0)==(1); + $101 = ($100|0)>(0); + do { + if ($99) { + if (!($101)) { + $index$2$i$i = 0; + break; + } + $105 = (($97) + -1)|0; + $i$128$i$i = 0;$index$126$i$i = 0;$o$127$i$i = $100; + while(1) { + $128 = (($o$127$i$i) + -1)|0; + $$sum3 = (($$sum) + ($128))|0; + $129 = (($84) + ($$sum3<<2)|0); + $130 = HEAP32[$129>>2]|0; + $131 = (($130) - ($95))|0; + $132 = ($131|0)<($98|0); + if ($132) { + $133 = (($98) - ($131))|0; + $134 = $133 << 1; + $135 = (($134) + -1)|0; + $139 = $135; + } else { + $136 = (($131) - ($98))|0; + $137 = $136 << 1; + $139 = $137; + } + $138 = Math_imul($index$126$i$i, $97)|0; + $140 = ($139|0)<(0); + $141 = ($139|0)>=($97|0); + $142 = $141 ? $105 : $139; + $143 = $140 ? 0 : $142; + $144 = (($143) + ($138))|0; + $145 = (($p$i$i) + ($128<<2)|0); + HEAP32[$145>>2] = $130; + $146 = (($i$128$i$i) + 1)|0; + $exitcond42$i$i = ($146|0)==($100|0); + if ($exitcond42$i$i) { + $index$2$i$i = $144; + break; + } else { + $i$128$i$i = $146;$index$126$i$i = $144;$o$127$i$i = $128; + } + } + } else { + if (!($101)) { + $index$2$i$i = 0; + break; + } + $102 = $96 >> 1; + $103 = (($102) - ($95))|0; + $104 = (($97) + -1)|0; + $i$033$i$i = 0;$index$031$i$i = 0;$o$032$i$i = $100; + while(1) { + $106 = (($o$032$i$i) + -1)|0; + $$sum2 = (($$sum) + ($106))|0; + $107 = (($84) + ($$sum2<<2)|0); + $108 = HEAP32[$107>>2]|0; + $109 = (($103) + ($108))|0; + $110 = (($109|0) / ($96|0))&-1; + $111 = ($110|0)<($98|0); + if ($111) { + $112 = (($98) - ($110))|0; + $113 = $112 << 1; + $114 = (($113) + -1)|0; + $118 = $114; + } else { + $115 = (($110) - ($98))|0; + $116 = $115 << 1; + $118 = $116; + } + $117 = Math_imul($index$031$i$i, $97)|0; + $119 = ($118|0)<(0); + $120 = ($118|0)>=($97|0); + $121 = $120 ? $104 : $118; + $122 = $119 ? 0 : $121; + $123 = (($122) + ($117))|0; + $124 = Math_imul($110, $96)|0; + $125 = (($124) + ($95))|0; + $126 = (($p$i$i) + ($106<<2)|0); + HEAP32[$126>>2] = $125; + $127 = (($i$033$i$i) + 1)|0; + $exitcond43$i$i = ($127|0)==($100|0); + if ($exitcond43$i$i) { + $index$2$i$i = $123; + break; + } else { + $i$033$i$i = $127;$index$031$i$i = $123;$o$032$i$i = $106; + } + } + } + } while(0); + $147 = HEAP32[$91>>2]|0; + $148 = ((($147)) + 8|0); + $149 = HEAP32[$148>>2]|0; + $150 = (($149) + ($index$2$i$i)|0); + $151 = HEAP8[$150>>0]|0; + $152 = ($151<<24>>24)<(1); + do { + if ($152) { + ;HEAP32[$e$i$i>>2]=0|0;HEAP32[$e$i$i+4>>2]=0|0;HEAP32[$e$i$i+8>>2]=0|0;HEAP32[$e$i$i+12>>2]=0|0;HEAP32[$e$i$i+16>>2]=0|0;HEAP32[$e$i$i+20>>2]=0|0;HEAP32[$e$i$i+24>>2]=0|0;HEAP32[$e$i$i+28>>2]=0|0; + $153 = (($97) + -1)|0; + $154 = Math_imul($153, $96)|0; + $155 = (($154) + ($95))|0; + $156 = HEAP32[$92>>2]|0; + $157 = ($156|0)>(0); + if ($157) { + $best$020$i$i = -1;$i$221$i$i = 0;$index$319$i$i = $index$2$i$i; + } else { + $index$5$i$i = $index$2$i$i; + break; + } + while(1) { + $158 = (($149) + ($i$221$i$i)|0); + $159 = HEAP8[$158>>0]|0; + $160 = ($159<<24>>24)>(0); + do { + if ($160) { + if ($101) { + $j$010$i$i = 0;$this$011$i$i = 0; + while(1) { + $161 = (($e$i$i) + ($j$010$i$i<<2)|0); + $162 = HEAP32[$161>>2]|0; + $$sum1 = (($$sum) + ($j$010$i$i))|0; + $163 = (($84) + ($$sum1<<2)|0); + $164 = HEAP32[$163>>2]|0; + $165 = (($162) - ($164))|0; + $166 = Math_imul($165, $165)|0; + $167 = (($166) + ($this$011$i$i))|0; + $168 = (($j$010$i$i) + 1)|0; + $exitcond41$i$i = ($168|0)==($100|0); + if ($exitcond41$i$i) { + $this$0$lcssa$i$i = $167; + break; + } else { + $j$010$i$i = $168;$this$011$i$i = $167; + } + } + } else { + $this$0$lcssa$i$i = 0; + } + $169 = ($best$020$i$i|0)==(-1); + $170 = ($this$0$lcssa$i$i|0)<($best$020$i$i|0); + $or$cond$i$i = $169 | $170; + if (!($or$cond$i$i)) { + $best$1$i$i = $best$020$i$i;$index$4$i$i = $index$319$i$i; + break; + } + ;HEAP32[$p$i$i>>2]=HEAP32[$e$i$i>>2]|0;HEAP32[$p$i$i+4>>2]=HEAP32[$e$i$i+4>>2]|0;HEAP32[$p$i$i+8>>2]=HEAP32[$e$i$i+8>>2]|0;HEAP32[$p$i$i+12>>2]=HEAP32[$e$i$i+12>>2]|0;HEAP32[$p$i$i+16>>2]=HEAP32[$e$i$i+16>>2]|0;HEAP32[$p$i$i+20>>2]=HEAP32[$e$i$i+20>>2]|0;HEAP32[$p$i$i+24>>2]=HEAP32[$e$i$i+24>>2]|0;HEAP32[$p$i$i+28>>2]=HEAP32[$e$i$i+28>>2]|0; + $best$1$i$i = $this$0$lcssa$i$i;$index$4$i$i = $i$221$i$i; + } else { + $best$1$i$i = $best$020$i$i;$index$4$i$i = $index$319$i$i; + } + } while(0); + $171 = HEAP32[$e$i$i>>2]|0; + $172 = ($171|0)<($155|0); + if ($172) { + $$lcssa$i$i = $e$i$i;$$lcssa7$i$i = $171; + } else { + $174 = $e$i$i;$j$113$i$i = 0; + while(1) { + $173 = (($j$113$i$i) + 1)|0; + HEAP32[$174>>2] = 0; + $175 = (($e$i$i) + ($173<<2)|0); + $176 = HEAP32[$175>>2]|0; + $177 = ($176|0)<($155|0); + if ($177) { + $$lcssa$i$i = $175;$$lcssa7$i$i = $176; + break; + } else { + $174 = $175;$j$113$i$i = $173; + } + } + } + $178 = ($$lcssa7$i$i|0)>(-1); + if ($178) { + $179 = (($$lcssa7$i$i) + ($96))|0; + HEAP32[$$lcssa$i$i>>2] = $179; + $181 = $179; + } else { + $181 = $$lcssa7$i$i; + } + $180 = (0 - ($181))|0; + HEAP32[$$lcssa$i$i>>2] = $180; + $182 = (($i$221$i$i) + 1)|0; + $exitcond$i = ($182|0)==($156|0); + if ($exitcond$i) { + $index$5$i$i = $index$4$i$i; + break; + } else { + $best$020$i$i = $best$1$i$i;$i$221$i$i = $182;$index$319$i$i = $index$4$i$i; + } + } + } else { + $index$5$i$i = $index$2$i$i; + } + } while(0); + $183 = ($index$5$i$i|0)>(-1); + $or$cond50$i$i = $101 & $183; + if ($or$cond50$i$i) { + $$09$i$i = $94;$i$38$i$i = 0; + while(1) { + $184 = (($p$i$i) + ($i$38$i$i<<2)|0); + $185 = HEAP32[$184>>2]|0; + $186 = ((($$09$i$i)) + 4|0); + $187 = HEAP32[$$09$i$i>>2]|0; + $188 = (($187) - ($185))|0; + HEAP32[$$09$i$i>>2] = $188; + $189 = (($i$38$i$i) + 1)|0; + $exitcond$i$i = ($189|0)==($100|0); + if ($exitcond$i$i) { + break; + } else { + $$09$i$i = $186;$i$38$i$i = $189; + } + } + } + $190 = (_vorbis_book_encode($81,$index$5$i$i,$opb)|0); + $191 = (($190) + ($bits$08$i))|0; + $192 = (($i$09$i) + 1)|0; + $exitcond15$i = ($192|0)==($86|0); + if ($exitcond15$i) { + $$lcssa72 = $191; + break; + } + $$pre$i = HEAP32[$81>>2]|0; + $100 = $$pre$i;$bits$08$i = $191;$i$09$i = $192; + } + $$pre43 = HEAP32[$66>>2]|0; + $196 = $$pre43;$bits$0$lcssa$i = $$lcssa72; + } else { + $196 = $67;$bits$0$lcssa$i = 0; + } + $193 = HEAP32[$22>>2]|0; + $194 = (($193) + ($bits$0$lcssa$i))|0; + HEAP32[$22>>2] = $194; + $195 = (($196) + ($i$121<<2)|0); + $197 = HEAP32[$195>>2]|0; + $198 = (($resbits) + ($197<<2)|0); + $199 = HEAP32[$198>>2]|0; + $200 = (($199) + ($bits$0$lcssa$i))|0; + HEAP32[$198>>2] = $200; + } + } + $201 = (($j$115) + 1)|0; + $exitcond35 = ($201|0)==($ch|0); + if ($exitcond35) { + break; + } else { + $j$115 = $201; + } + } + } + $202 = (($k$120) + 1)|0; + $203 = (($i$121) + 1)|0; + $exitcond36 = ($202|0)==($50|0); + if ($exitcond36) { + break; + } else { + $i$121 = $203;$k$120 = $202; + } + } + $26 = (($i$024) - ($umax))|0; + $i$1$lcssa = $26; + } else { + $i$1$lcssa = $i$024; + } + $27 = ($i$1$lcssa|0)<($12|0); + if ($27) { + $i$024 = $i$1$lcssa; + } else { + break; + } + } + $$pre44 = HEAP32[$13>>2]|0; + $206 = $$pre44; + } else { + $206 = $207; + } + $204 = (($s$026) + 1)|0; + $205 = ($204|0)<($206|0); + if ($205) { + $207 = $206;$s$026 = $204; + } else { + break; + } + } + STACKTOP = sp;return; +} +function _ov_ilog($v) { + $v = $v|0; + var $$01 = 0, $0 = 0, $1 = 0, $2 = 0, $3 = 0, $ret$0$lcssa = 0, $ret$02 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($v|0)==(0); + if ($0) { + $ret$0$lcssa = 0; + } else { + $$01 = $v;$ret$02 = 0; + while(1) { + $1 = $$01 >>> 1; + $2 = (($ret$02) + 1)|0; + $3 = ($1|0)==(0); + if ($3) { + $ret$0$lcssa = $2; + break; + } else { + $$01 = $1;$ret$02 = $2; + } + } + } + return ($ret$0$lcssa|0); +} +function __make_words($l,$n,$sparsecount) { + $l = $l|0; + $n = $n|0; + $sparsecount = $sparsecount|0; + var $$0 = 0, $$lcssa47 = 0, $$phi$trans$insert = 0, $$pn = 0, $$pre = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0; + var $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0; + var $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0; + var $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0; + var $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $9 = 0, $count$024 = 0, $count$1 = 0, $count$1$lcssa = 0, $count$212 = 0, $count$212$us = 0, $count$3$us = 0; + var $entry$020 = 0, $exitcond = 0, $exitcond34 = 0, $i$025 = 0, $i$114 = 0, $i$213 = 0, $i$213$us = 0, $j$015$lcssa = 0, $j$01549 = 0, $j$1 = 0, $j$1$in19 = 0, $j$1$in19$phi = 0, $j$118 = 0, $j$121 = 0, $j$29 = 0, $j$29$us = 0, $marker = 0, $or$cond = 0, $phitmp = 0, $temp$0$lcssa = 0; + var $temp$0$lcssa$us = 0, $temp$010 = 0, $temp$010$us = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 144|0; + $marker = sp; + $0 = ($sparsecount|0)!=(0); + $1 = $0 ? $sparsecount : $n; + $2 = $1 << 2; + $3 = (_malloc($2)|0); + _memset(($marker|0),0,132)|0; + $4 = ($n|0)>(0); + do { + if ($4) { + $5 = ((($marker)) + 4|0); + $6 = ($sparsecount|0)==(0); + $7 = $6&1; + $count$024 = 0;$i$025 = 0; + L3: while(1) { + $8 = (($l) + ($i$025)|0); + $9 = HEAP8[$8>>0]|0; + $10 = $9 << 24 >> 24; + $11 = ($9<<24>>24)>(0); + L5: do { + if ($11) { + $12 = (($marker) + ($10<<2)|0); + $13 = HEAP32[$12>>2]|0; + $14 = ($9<<24>>24)>(31); + $15 = $13 >>> $10; + $16 = ($15|0)==(0); + $or$cond = $14 | $16; + if (!($or$cond)) { + label = 5; + break L3; + } + $17 = (($3) + ($count$024<<2)|0); + HEAP32[$17>>2] = $13; + $18 = (($marker) + ($10<<2)|0); + $19 = $13 & 1; + $20 = ($19|0)==(0); + L8: do { + if ($20) { + $30 = $13;$31 = $18;$j$01549 = $10; + while(1) { + $29 = (($30) + 1)|0; + HEAP32[$31>>2] = $29; + $32 = (($j$01549) + -1)|0; + $33 = ($j$01549|0)>(1); + if (!($33)) { + break L8; + } + $$phi$trans$insert = (($marker) + ($32<<2)|0); + $$pre = HEAP32[$$phi$trans$insert>>2]|0; + $34 = (($marker) + ($32<<2)|0); + $35 = $$pre & 1; + $36 = ($35|0)==(0); + if ($36) { + $30 = $$pre;$31 = $34;$j$01549 = $32; + } else { + $$lcssa47 = $34;$j$015$lcssa = $32; + label = 8; + break; + } + } + } else { + $$lcssa47 = $18;$j$015$lcssa = $10; + label = 8; + } + } while(0); + do { + if ((label|0) == 8) { + label = 0; + $22 = ($j$015$lcssa|0)==(1); + if ($22) { + $23 = HEAP32[$5>>2]|0; + $24 = (($23) + 1)|0; + HEAP32[$5>>2] = $24; + break; + } else { + $25 = (($j$015$lcssa) + -1)|0; + $26 = (($marker) + ($25<<2)|0); + $27 = HEAP32[$26>>2]|0; + $28 = $27 << 1; + HEAP32[$$lcssa47>>2] = $28; + break; + } + } + } while(0); + $j$118 = (($10) + 1)|0; + $21 = ($j$118|0)<(33); + if ($21) { + $entry$020 = $13;$j$1$in19 = $10;$j$121 = $j$118; + while(1) { + $37 = (($marker) + ($j$121<<2)|0); + $38 = HEAP32[$37>>2]|0; + $39 = $38 >>> 1; + $40 = ($39|0)==($entry$020|0); + if (!($40)) { + $$pn = 1; + break L5; + } + $41 = (($marker) + ($j$1$in19<<2)|0); + $42 = HEAP32[$41>>2]|0; + $43 = $42 << 1; + HEAP32[$37>>2] = $43; + $j$1 = (($j$121) + 1)|0; + $44 = ($j$1|0)<(33); + if ($44) { + $j$1$in19$phi = $j$121;$entry$020 = $38;$j$121 = $j$1;$j$1$in19 = $j$1$in19$phi; + } else { + $$pn = 1; + break; + } + } + } else { + $$pn = 1; + } + } else { + $$pn = $7; + } + } while(0); + $count$1 = (($count$024) + ($$pn))|0; + $45 = (($i$025) + 1)|0; + $46 = ($45|0)<($n|0); + if ($46) { + $count$024 = $count$1;$i$025 = $45; + } else { + $count$1$lcssa = $count$1; + label = 16; + break; + } + } + if ((label|0) == 5) { + _free($3); + $$0 = 0; + STACKTOP = sp;return ($$0|0); + } + else if ((label|0) == 16) { + $phitmp = ($count$1$lcssa|0)==(1); + if (!($phitmp)) { + $i$114 = 1; + label = 27; + break; + } + $47 = ((($marker)) + 8|0); + $48 = HEAP32[$47>>2]|0; + $49 = ($48|0)==(2); + if ($49) { + break; + } else { + $i$114 = 1; + label = 27; + break; + } + } + } else { + $i$114 = 1; + label = 27; + } + } while(0); + L27: do { + if ((label|0) == 27) { + while(1) { + label = 0; + $68 = (($marker) + ($i$114<<2)|0); + $69 = HEAP32[$68>>2]|0; + $70 = (32 - ($i$114))|0; + $71 = -1 >>> $70; + $72 = $69 & $71; + $73 = ($72|0)==(0); + $66 = (($i$114) + 1)|0; + if (!($73)) { + break; + } + $67 = ($66|0)<(33); + if ($67) { + $i$114 = $66; + label = 27; + } else { + break L27; + } + } + _free($3); + $$0 = 0; + STACKTOP = sp;return ($$0|0); + } + } while(0); + if (!($4)) { + $$0 = $3; + STACKTOP = sp;return ($$0|0); + } + if ($0) { + $count$212$us = 0;$i$213$us = 0; + } else { + $count$212 = 0;$i$213 = 0; + while(1) { + $74 = (($l) + ($i$213)|0); + $75 = HEAP8[$74>>0]|0; + $76 = ($75<<24>>24)>(0); + if ($76) { + $77 = (($3) + ($count$212<<2)|0); + $78 = HEAP32[$77>>2]|0; + $79 = $75 << 24 >> 24; + $j$29 = 0;$temp$010 = 0; + while(1) { + $80 = $temp$010 << 1; + $81 = $78 >>> $j$29; + $82 = $81 & 1; + $83 = $82 | $80; + $84 = (($j$29) + 1)|0; + $85 = ($84|0)<($79|0); + if ($85) { + $j$29 = $84;$temp$010 = $83; + } else { + $temp$0$lcssa = $83; + break; + } + } + } else { + $temp$0$lcssa = 0; + } + $86 = (($count$212) + 1)|0; + $87 = (($3) + ($count$212<<2)|0); + HEAP32[$87>>2] = $temp$0$lcssa; + $88 = (($i$213) + 1)|0; + $exitcond = ($88|0)==($n|0); + if ($exitcond) { + $$0 = $3; + break; + } else { + $count$212 = $86;$i$213 = $88; + } + } + STACKTOP = sp;return ($$0|0); + } + while(1) { + $50 = (($l) + ($i$213$us)|0); + $51 = HEAP8[$50>>0]|0; + $52 = ($51<<24>>24)>(0); + if ($52) { + $65 = (($3) + ($count$212$us<<2)|0); + $59 = HEAP32[$65>>2]|0; + $64 = $51 << 24 >> 24; + $j$29$us = 0;$temp$010$us = 0; + while(1) { + $57 = $temp$010$us << 1; + $58 = $59 >>> $j$29$us; + $60 = $58 & 1; + $61 = $60 | $57; + $62 = (($j$29$us) + 1)|0; + $63 = ($62|0)<($64|0); + if ($63) { + $j$29$us = $62;$temp$010$us = $61; + } else { + $temp$0$lcssa$us = $61; + break; + } + } + } else { + $temp$0$lcssa$us = 0; + } + $53 = ($51<<24>>24)==(0); + if ($53) { + $count$3$us = $count$212$us; + } else { + $54 = (($count$212$us) + 1)|0; + $55 = (($3) + ($count$212$us<<2)|0); + HEAP32[$55>>2] = $temp$0$lcssa$us; + $count$3$us = $54; + } + $56 = (($i$213$us) + 1)|0; + $exitcond34 = ($56|0)==($n|0); + if ($exitcond34) { + $$0 = $3; + break; + } else { + $count$212$us = $count$3$us;$i$213$us = $56; + } + } + STACKTOP = sp;return ($$0|0); +} +function __book_maptype1_quantvals($b) { + $b = $b|0; + var $$lcssa = 0, $$lcssa10 = 0, $0 = 0, $1 = 0, $10 = 0.0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $3 = 0, $4 = 0.0, $5 = 0.0, $6 = 0.0, $7 = 0.0; + var $8 = 0.0, $9 = 0.0, $acc$01$us = 0, $acc1$02$us = 0, $i$03$us = 0, $or$cond$us = 0, $vals$0$us = 0, $vals$0$us$be = 0, $vals$0$us$be$v = 0, $vals$0$us$lcssa = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($b)) + 4|0); + $1 = HEAP32[$0>>2]|0; + $2 = HEAP32[$b>>2]|0; + $3 = ($2|0)>(0); + if (!($3)) { + while(1) { + } + } + $4 = (+($1|0)); + $5 = $4; + $6 = (+($2|0)); + $7 = 1.0 / $6; + $8 = $7; + $9 = (+Math_pow((+$5),(+$8))); + $10 = (+Math_floor((+$9))); + $11 = (~~(($10))); + $vals$0$us = $11; + while(1) { + $17 = (($vals$0$us) + 1)|0; + $acc$01$us = 1;$acc1$02$us = 1;$i$03$us = 0; + while(1) { + $15 = Math_imul($acc$01$us, $vals$0$us)|0; + $16 = Math_imul($acc1$02$us, $17)|0; + $18 = (($i$03$us) + 1)|0; + $19 = ($18|0)<($2|0); + if ($19) { + $acc$01$us = $15;$acc1$02$us = $16;$i$03$us = $18; + } else { + $$lcssa = $15;$$lcssa10 = $16; + break; + } + } + $12 = ($$lcssa|0)<=($1|0); + $13 = ($$lcssa10|0)>($1|0); + $or$cond$us = $12 & $13; + if ($or$cond$us) { + $vals$0$us$lcssa = $vals$0$us; + break; + } + $14 = ($$lcssa|0)>($1|0); + $vals$0$us$be$v = $14 ? -1 : 1; + $vals$0$us$be = (($vals$0$us) + ($vals$0$us$be$v))|0; + $vals$0$us = $vals$0$us$be; + } + return ($vals$0$us$lcssa|0); +} +function __book_unquantize($b,$n,$sparsemap) { + $b = $b|0; + $n = $n|0; + $sparsemap = $sparsemap|0; + var $$$i = 0.0, $$$i6 = 0.0, $$0 = 0, $$lcssa = 0, $$lcssa53 = 0, $$off = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0.0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0.0; + var $110 = 0.0, $111 = 0.0, $112 = 0.0, $113 = 0.0, $114 = 0.0, $115 = 0.0, $116 = 0.0, $117 = 0, $118 = 0, $119 = 0, $12 = 0.0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0; + var $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0.0, $139 = 0.0, $14 = 0, $140 = 0.0, $141 = 0.0, $142 = 0.0, $143 = 0.0, $144 = 0.0, $145 = 0, $146 = 0; + var $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $16 = 0.0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0.0, $21 = 0, $22 = 0.0, $23 = 0.0, $24 = 0; + var $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0.0, $34 = 0.0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0.0, $41 = 0.0, $42 = 0.0; + var $43 = 0.0, $44 = 0.0, $45 = 0.0, $46 = 0.0, $47 = 0, $48 = 0, $49 = 0, $5 = 0.0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0.0, $55 = 0.0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0; + var $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0; + var $8 = 0, $80 = 0.0, $81 = 0.0, $82 = 0.0, $83 = 0.0, $84 = 0.0, $85 = 0.0, $86 = 0.0, $87 = 0, $88 = 0, $89 = 0, $9 = 0.0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0.0, $97 = 0.0; + var $98 = 0.0, $99 = 0.0, $acc$01$us$i = 0, $acc1$02$us$i = 0, $count$019 = 0, $count$1 = 0, $count$233 = 0, $count$3 = 0, $exitcond = 0, $fabsf = 0.0, $fabsf5 = 0.0, $fabsf5$us = 0.0, $fabsf5$us17 = 0.0, $i$03$us$i = 0, $indexdiv$013 = 0, $indexdiv$013$us = 0, $indexdiv$013$us14 = 0, $j$023 = 0, $j$135 = 0, $k$011 = 0; + var $k$011$us = 0, $k$011$us16 = 0, $k$129 = 0, $last$0$$us = 0.0, $last$012 = 0.0, $last$012$us = 0.0, $last1$0$ = 0.0, $last1$030 = 0.0, $or$cond$us$i = 0, $switch = 0, $vals$0$us$be$i = 0, $vals$0$us$be$v$i = 0, $vals$0$us$i = 0, $vals$0$us$i$lcssa = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($b)) + 12|0); + $1 = HEAP32[$0>>2]|0; + $$off = (($1) + -1)|0; + $switch = ($$off>>>0)<(2); + if (!($switch)) { + $$0 = 0; + return ($$0|0); + } + $2 = ((($b)) + 16|0); + $3 = HEAP32[$2>>2]|0; + $4 = $3 & 2097151; + $5 = (+($4|0)); + $6 = $3 >>> 21; + $7 = $6 & 1023; + $8 = ($3|0)<(0); + $9 = -$5; + $$$i = $8 ? $9 : $5; + $10 = (($7) + -788)|0; + $11 = (+_ldexp($$$i,$10)); + $12 = $11; + $13 = ((($b)) + 20|0); + $14 = HEAP32[$13>>2]|0; + $15 = $14 & 2097151; + $16 = (+($15|0)); + $17 = $14 >>> 21; + $18 = $17 & 1023; + $19 = ($14|0)<(0); + $20 = -$16; + $$$i6 = $19 ? $20 : $16; + $21 = (($18) + -788)|0; + $22 = (+_ldexp($$$i6,$21)); + $23 = $22; + $24 = HEAP32[$b>>2]|0; + $25 = Math_imul($24, $n)|0; + $26 = (_calloc($25,4)|0); + if ((($1|0) == 1)) { + $37 = ((($b)) + 4|0); + $38 = HEAP32[$37>>2]|0; + $39 = ($24|0)>(0); + if (!($39)) { + while(1) { + } + } + $40 = (+($38|0)); + $41 = $40; + $42 = (+($24|0)); + $43 = 1.0 / $42; + $44 = $43; + $45 = (+Math_pow((+$41),(+$44))); + $46 = (+Math_floor((+$45))); + $47 = (~~(($46))); + $vals$0$us$i = $47; + while(1) { + $60 = (($vals$0$us$i) + 1)|0; + $acc$01$us$i = 1;$acc1$02$us$i = 1;$i$03$us$i = 0; + while(1) { + $58 = Math_imul($acc$01$us$i, $vals$0$us$i)|0; + $59 = Math_imul($acc1$02$us$i, $60)|0; + $61 = (($i$03$us$i) + 1)|0; + $exitcond = ($61|0)==($24|0); + if ($exitcond) { + $$lcssa = $58;$$lcssa53 = $59; + break; + } else { + $acc$01$us$i = $58;$acc1$02$us$i = $59;$i$03$us$i = $61; + } + } + $48 = ($$lcssa|0)<=($38|0); + $49 = ($$lcssa53|0)>($38|0); + $or$cond$us$i = $49 & $48; + if ($or$cond$us$i) { + $vals$0$us$i$lcssa = $vals$0$us$i; + break; + } + $57 = ($$lcssa|0)>($38|0); + $vals$0$us$be$v$i = $57 ? -1 : 1; + $vals$0$us$be$i = (($vals$0$us$be$v$i) + ($vals$0$us$i))|0; + $vals$0$us$i = $vals$0$us$be$i; + } + $50 = ($38|0)>(0); + if (!($50)) { + $$0 = $26; + return ($$0|0); + } + $51 = ($sparsemap|0)==(0|0); + $52 = ((($b)) + 8|0); + $53 = ((($b)) + 32|0); + $54 = $23; + $55 = $12; + $56 = ((($b)) + 28|0); + $count$019 = 0;$j$023 = 0; + while(1) { + if ($51) { + $66 = HEAP32[$53>>2]|0; + $67 = HEAP32[$56>>2]|0; + $68 = ($67|0)==(0); + $69 = Math_imul($24, $count$019)|0; + if ($68) { + $indexdiv$013$us14 = 1;$k$011$us16 = 0; + while(1) { + $92 = (($j$023|0) / ($indexdiv$013$us14|0))&-1; + $93 = (($92|0) % ($vals$0$us$i$lcssa|0))&-1; + $94 = (($66) + ($93<<2)|0); + $95 = HEAP32[$94>>2]|0; + $96 = (+($95|0)); + $fabsf5$us17 = (+Math_abs((+$96))); + $97 = $fabsf5$us17; + $98 = $97 * $54; + $99 = $55 + $98; + $100 = $99; + $101 = (($69) + ($k$011$us16))|0; + $102 = (($26) + ($101<<2)|0); + HEAPF32[$102>>2] = $100; + $103 = Math_imul($indexdiv$013$us14, $vals$0$us$i$lcssa)|0; + $104 = (($k$011$us16) + 1)|0; + $105 = ($104|0)<($24|0); + if ($105) { + $indexdiv$013$us14 = $103;$k$011$us16 = $104; + } else { + label = 21; + break; + } + } + } else { + $indexdiv$013 = 1;$k$011 = 0;$last$012 = 0.0; + while(1) { + $106 = (($j$023|0) / ($indexdiv$013|0))&-1; + $107 = (($106|0) % ($vals$0$us$i$lcssa|0))&-1; + $108 = (($66) + ($107<<2)|0); + $109 = HEAP32[$108>>2]|0; + $110 = (+($109|0)); + $fabsf5 = (+Math_abs((+$110))); + $111 = $fabsf5; + $112 = $111 * $54; + $113 = $last$012; + $114 = $113 + $55; + $115 = $114 + $112; + $116 = $115; + $117 = (($69) + ($k$011))|0; + $118 = (($26) + ($117<<2)|0); + HEAPF32[$118>>2] = $116; + $119 = Math_imul($indexdiv$013, $vals$0$us$i$lcssa)|0; + $120 = (($k$011) + 1)|0; + $121 = ($120|0)<($24|0); + if ($121) { + $indexdiv$013 = $119;$k$011 = $120;$last$012 = $116; + } else { + label = 21; + break; + } + } + } + } else { + $62 = HEAP32[$52>>2]|0; + $63 = (($62) + ($j$023)|0); + $64 = HEAP8[$63>>0]|0; + $65 = ($64<<24>>24)==(0); + if ($65) { + $count$1 = $count$019; + } else { + $70 = HEAP32[$53>>2]|0; + $71 = HEAP32[$56>>2]|0; + $72 = ($71|0)==(0); + $73 = (($sparsemap) + ($count$019<<2)|0); + $74 = HEAP32[$73>>2]|0; + $75 = Math_imul($74, $24)|0; + $indexdiv$013$us = 1;$k$011$us = 0;$last$012$us = 0.0; + while(1) { + $76 = (($j$023|0) / ($indexdiv$013$us|0))&-1; + $77 = (($76|0) % ($vals$0$us$i$lcssa|0))&-1; + $78 = (($70) + ($77<<2)|0); + $79 = HEAP32[$78>>2]|0; + $80 = (+($79|0)); + $fabsf5$us = (+Math_abs((+$80))); + $81 = $fabsf5$us; + $82 = $81 * $54; + $83 = $last$012$us; + $84 = $83 + $55; + $85 = $84 + $82; + $86 = $85; + $last$0$$us = $72 ? $last$012$us : $86; + $87 = (($75) + ($k$011$us))|0; + $88 = (($26) + ($87<<2)|0); + HEAPF32[$88>>2] = $86; + $89 = Math_imul($indexdiv$013$us, $vals$0$us$i$lcssa)|0; + $90 = (($k$011$us) + 1)|0; + $91 = ($90|0)<($24|0); + if ($91) { + $indexdiv$013$us = $89;$k$011$us = $90;$last$012$us = $last$0$$us; + } else { + label = 21; + break; + } + } + } + } + if ((label|0) == 21) { + label = 0; + $122 = (($count$019) + 1)|0; + $count$1 = $122; + } + $123 = (($j$023) + 1)|0; + $124 = ($123|0)<($38|0); + if ($124) { + $count$019 = $count$1;$j$023 = $123; + } else { + $$0 = $26; + break; + } + } + return ($$0|0); + } else if ((($1|0) == 2)) { + $27 = ((($b)) + 4|0); + $28 = HEAP32[$27>>2]|0; + $29 = ($28|0)>(0); + if (!($29)) { + $$0 = $26; + return ($$0|0); + } + $30 = ($sparsemap|0)!=(0|0); + $31 = ((($b)) + 8|0); + $32 = ((($b)) + 32|0); + $33 = $23; + $34 = $12; + $35 = ((($b)) + 28|0); + $36 = ($24|0)>(0); + $count$233 = 0;$j$135 = 0; + while(1) { + if ($30) { + $125 = HEAP32[$31>>2]|0; + $126 = (($125) + ($j$135)|0); + $127 = HEAP8[$126>>0]|0; + $128 = ($127<<24>>24)==(0); + if ($128) { + $count$3 = $count$233; + } else { + label = 25; + } + } else { + label = 25; + } + if ((label|0) == 25) { + label = 0; + if ($36) { + $129 = HEAP32[$32>>2]|0; + $130 = HEAP32[$35>>2]|0; + $131 = ($130|0)==(0); + $132 = (($sparsemap) + ($count$233<<2)|0); + $133 = Math_imul($24, $j$135)|0; + $134 = Math_imul($24, $count$233)|0; + $k$129 = 0;$last1$030 = 0.0; + while(1) { + $135 = (($133) + ($k$129))|0; + $136 = (($129) + ($135<<2)|0); + $137 = HEAP32[$136>>2]|0; + $138 = (+($137|0)); + $fabsf = (+Math_abs((+$138))); + $139 = $fabsf; + $140 = $139 * $33; + $141 = $last1$030; + $142 = $141 + $34; + $143 = $142 + $140; + $144 = $143; + $last1$0$ = $131 ? $last1$030 : $144; + if ($30) { + $145 = HEAP32[$132>>2]|0; + $146 = Math_imul($145, $24)|0; + $147 = (($146) + ($k$129))|0; + $148 = (($26) + ($147<<2)|0); + HEAPF32[$148>>2] = $144; + } else { + $149 = (($134) + ($k$129))|0; + $150 = (($26) + ($149<<2)|0); + HEAPF32[$150>>2] = $144; + } + $151 = (($k$129) + 1)|0; + $152 = ($151|0)<($24|0); + if ($152) { + $k$129 = $151;$last1$030 = $last1$0$; + } else { + break; + } + } + } + $153 = (($count$233) + 1)|0; + $count$3 = $153; + } + $154 = (($j$135) + 1)|0; + $155 = ($154|0)<($28|0); + if ($155) { + $count$233 = $count$3;$j$135 = $154; + } else { + $$0 = $26; + break; + } + } + return ($$0|0); + } else { + $$0 = $26; + return ($$0|0); + } + return (0)|0; +} +function _vorbis_staticbook_destroy($b) { + $b = $b|0; + var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($b)) + 36|0); + $1 = HEAP32[$0>>2]|0; + $2 = ($1|0)==(0); + if ($2) { + return; + } + $3 = ((($b)) + 32|0); + $4 = HEAP32[$3>>2]|0; + $5 = ($4|0)==(0|0); + if (!($5)) { + _free($4); + } + $6 = ((($b)) + 8|0); + $7 = HEAP32[$6>>2]|0; + $8 = ($7|0)==(0|0); + if (!($8)) { + _free($7); + } + _free($b); + return; +} +function _vorbis_book_clear($b) { + $b = $b|0; + var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, dest = 0, label = 0, sp = 0, stop = 0; + sp = STACKTOP; + $0 = ((($b)) + 16|0); + $1 = HEAP32[$0>>2]|0; + $2 = ($1|0)==(0|0); + if (!($2)) { + _free($1); + } + $3 = ((($b)) + 20|0); + $4 = HEAP32[$3>>2]|0; + $5 = ($4|0)==(0|0); + if (!($5)) { + _free($4); + } + $6 = ((($b)) + 24|0); + $7 = HEAP32[$6>>2]|0; + $8 = ($7|0)==(0|0); + if (!($8)) { + _free($7); + } + $9 = ((($b)) + 28|0); + $10 = HEAP32[$9>>2]|0; + $11 = ($10|0)==(0|0); + if (!($11)) { + _free($10); + } + $12 = ((($b)) + 32|0); + $13 = HEAP32[$12>>2]|0; + $14 = ($13|0)==(0|0); + if (!($14)) { + _free($13); + } + dest=$b; stop=dest+56|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0)); + return; +} +function _vorbis_book_init_encode($c,$s) { + $c = $c|0; + $s = $s|0; + var $$$i = 0.0, $$$i2 = 0.0, $$lcssa = 0, $$lcssa8 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0.0, $14 = 0.0, $15 = 0.0, $16 = 0.0, $17 = 0.0, $18 = 0.0, $19 = 0.0, $2 = 0, $20 = 0, $21 = 0, $22 = 0; + var $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0.0, $33 = 0, $34 = 0, $35 = 0, $36 = 0.0, $37 = 0, $38 = 0.0, $39 = 0.0, $4 = 0, $40 = 0; + var $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0.0, $46 = 0, $47 = 0, $48 = 0, $49 = 0.0, $5 = 0, $50 = 0, $51 = 0.0, $52 = 0.0, $53 = 0, $54 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $acc$01$us$i = 0; + var $acc1$02$us$i = 0, $exitcond = 0, $i$03$us$i = 0, $or$cond$us$i = 0, $rintf = 0.0, $rintf1 = 0.0, $vals$0$us$be$i = 0, $vals$0$us$be$v$i = 0, $vals$0$us$i = 0, $vals$0$us$i$lcssa = 0, dest = 0, label = 0, sp = 0, stop = 0; + sp = STACKTOP; + dest=$c; stop=dest+56|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0)); + $0 = ((($c)) + 12|0); + HEAP32[$0>>2] = $s; + $1 = ((($s)) + 4|0); + $2 = HEAP32[$1>>2]|0; + $3 = ((($c)) + 4|0); + HEAP32[$3>>2] = $2; + $4 = ((($c)) + 8|0); + HEAP32[$4>>2] = $2; + $5 = HEAP32[$s>>2]|0; + HEAP32[$c>>2] = $5; + $6 = ((($s)) + 8|0); + $7 = HEAP32[$6>>2]|0; + $8 = (__make_words($7,$2,0)|0); + $9 = ((($c)) + 20|0); + HEAP32[$9>>2] = $8; + $10 = HEAP32[$1>>2]|0; + $11 = HEAP32[$s>>2]|0; + $12 = ($11|0)>(0); + if (!($12)) { + while(1) { + } + } + $13 = (+($10|0)); + $14 = $13; + $15 = (+($11|0)); + $16 = 1.0 / $15; + $17 = $16; + $18 = (+Math_pow((+$14),(+$17))); + $19 = (+Math_floor((+$18))); + $20 = (~~(($19))); + $vals$0$us$i = $20; + while(1) { + $26 = (($vals$0$us$i) + 1)|0; + $acc$01$us$i = 1;$acc1$02$us$i = 1;$i$03$us$i = 0; + while(1) { + $24 = Math_imul($acc$01$us$i, $vals$0$us$i)|0; + $25 = Math_imul($acc1$02$us$i, $26)|0; + $27 = (($i$03$us$i) + 1)|0; + $exitcond = ($27|0)==($11|0); + if ($exitcond) { + $$lcssa = $24;$$lcssa8 = $25; + break; + } else { + $acc$01$us$i = $24;$acc1$02$us$i = $25;$i$03$us$i = $27; + } + } + $21 = ($$lcssa|0)<=($10|0); + $22 = ($$lcssa8|0)>($10|0); + $or$cond$us$i = $22 & $21; + if ($or$cond$us$i) { + $vals$0$us$i$lcssa = $vals$0$us$i; + break; + } + $23 = ($$lcssa|0)>($10|0); + $vals$0$us$be$v$i = $23 ? -1 : 1; + $vals$0$us$be$i = (($vals$0$us$be$v$i) + ($vals$0$us$i))|0; + $vals$0$us$i = $vals$0$us$be$i; + } + $28 = ((($c)) + 44|0); + HEAP32[$28>>2] = $vals$0$us$i$lcssa; + $29 = ((($s)) + 16|0); + $30 = HEAP32[$29>>2]|0; + $31 = $30 & 2097151; + $32 = (+($31|0)); + $33 = $30 >>> 21; + $34 = $33 & 1023; + $35 = ($30|0)<(0); + $36 = -$32; + $$$i = $35 ? $36 : $32; + $37 = (($34) + -788)|0; + $38 = (+_ldexp($$$i,$37)); + $39 = $38; + $rintf = (+_rintf($39)); + $40 = (~~(($rintf))); + $41 = ((($c)) + 48|0); + HEAP32[$41>>2] = $40; + $42 = ((($s)) + 20|0); + $43 = HEAP32[$42>>2]|0; + $44 = $43 & 2097151; + $45 = (+($44|0)); + $46 = $43 >>> 21; + $47 = $46 & 1023; + $48 = ($43|0)<(0); + $49 = -$45; + $$$i2 = $48 ? $49 : $45; + $50 = (($47) + -788)|0; + $51 = (+_ldexp($$$i2,$50)); + $52 = $51; + $rintf1 = (+_rintf($52)); + $53 = (~~(($rintf1))); + $54 = ((($c)) + 52|0); + HEAP32[$54>>2] = $53; + return 0; +} +function _vorbis_book_init_decode($c,$s) { + $c = $c|0; + $s = $s|0; + var $$ = 0, $$0 = 0, $$01$i = 0, $$alloca_mul = 0, $$alloca_mul1 = 0, $$lcssa63 = 0, $$n$0 = 0, $$pre = 0, $$pre52 = 0, $$pre54 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0; + var $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0; + var $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0; + var $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0; + var $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0; + var $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0; + var $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0; + var $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0; + var $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0; + var $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0; + var $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0; + var $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0; + var $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $exitcond = 0, $exitcond48 = 0, $exitcond49 = 0, $exitcond50 = 0, $hi$012 = 0, $hi$1$lcssa = 0, $hi$18 = 0, $hi$2 = 0, $hival$0 = 0, $i$040 = 0; + var $i$136 = 0, $i$233 = 0, $i$330 = 0, $i$425 = 0, $i$519 = 0, $i$616 = 0, $i$710 = 0, $j$014 = 0, $lo$011 = 0, $lo$1 = 0, $lo$1$lcssa = 0, $lo$1$op = 0, $lo$1$op$op = 0, $lo$2 = 0, $n$039 = 0, $n$2$lcssa = 0, $n$224 = 0, $n$3 = 0, $n$4$lcssa55 = 0, $n$418 = 0; + var $n$5 = 0, $n$5$lcssa = 0, $phitmp = 0, $ret$0$lcssa$i = 0, $ret$02$i = 0, $ret$02$i$lcssa = 0, $storemerge2 = 0, dest = 0, label = 0, sp = 0, stop = 0; + sp = STACKTOP; + dest=$c; stop=dest+56|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0)); + $0 = ((($s)) + 4|0); + $1 = HEAP32[$0>>2]|0; + $2 = ($1|0)>(0); + if ($2) { + $3 = ((($s)) + 8|0); + $4 = HEAP32[$3>>2]|0; + $i$040 = 0;$n$039 = 0; + while(1) { + $5 = (($4) + ($i$040)|0); + $6 = HEAP8[$5>>0]|0; + $7 = ($6<<24>>24)>(0); + $8 = $7&1; + $$n$0 = (($8) + ($n$039))|0; + $9 = (($i$040) + 1)|0; + $10 = ($9|0)<($1|0); + if ($10) { + $i$040 = $9;$n$039 = $$n$0; + } else { + $13 = $$n$0; + break; + } + } + } else { + $13 = 0; + } + $11 = ((($c)) + 4|0); + HEAP32[$11>>2] = $1; + $12 = ((($c)) + 8|0); + HEAP32[$12>>2] = $13; + $14 = HEAP32[$s>>2]|0; + HEAP32[$c>>2] = $14; + $15 = ($13|0)>(0); + if (!($15)) { + $$0 = 0; + STACKTOP = sp;return ($$0|0); + } + $16 = ((($s)) + 8|0); + $17 = HEAP32[$16>>2]|0; + $18 = (__make_words($17,$1,$13)|0); + $19 = $13 << 2; + $$alloca_mul = $19; + $20 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul)|0)+15)&-16)|0;; + $21 = ($18|0)==(0|0); + if ($21) { + $221 = ((($c)) + 16|0); + $222 = HEAP32[$221>>2]|0; + $223 = ($222|0)==(0|0); + if (!($223)) { + _free($222); + } + $224 = ((($c)) + 20|0); + $225 = HEAP32[$224>>2]|0; + $226 = ($225|0)==(0|0); + if (!($226)) { + _free($225); + } + $227 = ((($c)) + 24|0); + $228 = HEAP32[$227>>2]|0; + $229 = ($228|0)==(0|0); + if (!($229)) { + _free($228); + } + $230 = ((($c)) + 28|0); + $231 = HEAP32[$230>>2]|0; + $232 = ($231|0)==(0|0); + if (!($232)) { + _free($231); + } + $233 = ((($c)) + 32|0); + $234 = HEAP32[$233>>2]|0; + $235 = ($234|0)==(0|0); + if (!($235)) { + _free($234); + } + dest=$c; stop=dest+56|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0)); + $$0 = -1; + STACKTOP = sp;return ($$0|0); + } else { + $i$136 = 0; + } + while(1) { + $22 = (($18) + ($i$136<<2)|0); + $23 = HEAP32[$22>>2]|0; + $24 = $23 >>> 16; + $25 = $23 << 16; + $26 = $24 | $25; + $27 = $26 >>> 8; + $28 = $27 & 16711935; + $29 = $26 << 8; + $30 = $29 & -16711936; + $31 = $28 | $30; + $32 = $31 >>> 4; + $33 = $32 & 252645135; + $34 = $31 << 4; + $35 = $34 & -252645136; + $36 = $33 | $35; + $37 = $36 >>> 2; + $38 = $37 & 858993459; + $39 = $36 << 2; + $40 = $39 & -858993460; + $41 = $38 | $40; + $42 = $41 >>> 1; + $43 = $42 & 1431655765; + $44 = $41 << 1; + $45 = $44 & -1431655766; + $46 = $43 | $45; + HEAP32[$22>>2] = $46; + $47 = (($20) + ($i$136<<2)|0); + HEAP32[$47>>2] = $22; + $48 = (($i$136) + 1)|0; + $exitcond50 = ($48|0)==($13|0); + if ($exitcond50) { + break; + } else { + $i$136 = $48; + } + } + _qsort($20,$13,4,10); + $$alloca_mul1 = $19; + $49 = STACKTOP; STACKTOP = STACKTOP + ((((1*$$alloca_mul1)|0)+15)&-16)|0;; + $50 = (_malloc($19)|0); + $51 = ((($c)) + 20|0); + HEAP32[$51>>2] = $50; + $52 = $18; + $i$233 = 0; + while(1) { + $53 = (($20) + ($i$233<<2)|0); + $54 = HEAP32[$53>>2]|0; + $55 = $54; + $56 = (($55) - ($52))|0; + $57 = $56 >> 2; + $58 = (($49) + ($57<<2)|0); + HEAP32[$58>>2] = $i$233; + $59 = (($i$233) + 1)|0; + $exitcond49 = ($59|0)==($13|0); + if ($exitcond49) { + $i$330 = 0; + break; + } else { + $i$233 = $59; + } + } + while(1) { + $60 = (($18) + ($i$330<<2)|0); + $61 = HEAP32[$60>>2]|0; + $62 = (($49) + ($i$330<<2)|0); + $63 = HEAP32[$62>>2]|0; + $64 = (($50) + ($63<<2)|0); + HEAP32[$64>>2] = $61; + $65 = (($i$330) + 1)|0; + $exitcond48 = ($65|0)==($13|0); + if ($exitcond48) { + break; + } else { + $i$330 = $65; + } + } + _free($18); + $66 = (__book_unquantize($s,$13,$49)|0); + $67 = ((($c)) + 16|0); + HEAP32[$67>>2] = $66; + $68 = (_malloc($19)|0); + $69 = ((($c)) + 24|0); + HEAP32[$69>>2] = $68; + $70 = HEAP32[$0>>2]|0; + $71 = ($70|0)>(0); + if ($71) { + $$pre = HEAP32[$16>>2]|0; + $i$425 = 0;$n$224 = 0; + while(1) { + $72 = (($$pre) + ($i$425)|0); + $73 = HEAP8[$72>>0]|0; + $74 = ($73<<24>>24)>(0); + if ($74) { + $75 = (($n$224) + 1)|0; + $76 = (($49) + ($n$224<<2)|0); + $77 = HEAP32[$76>>2]|0; + $78 = (($68) + ($77<<2)|0); + HEAP32[$78>>2] = $i$425; + $n$3 = $75; + } else { + $n$3 = $n$224; + } + $79 = (($i$425) + 1)|0; + $80 = ($79|0)<($70|0); + if ($80) { + $i$425 = $79;$n$224 = $n$3; + } else { + $n$2$lcssa = $n$3; + break; + } + } + } else { + $n$2$lcssa = 0; + } + $81 = (_malloc($n$2$lcssa)|0); + $82 = ((($c)) + 28|0); + HEAP32[$82>>2] = $81; + $83 = ((($c)) + 40|0); + HEAP32[$83>>2] = 0; + if ($71) { + $$pre52 = HEAP32[$16>>2]|0; + $236 = 0;$85 = $$pre52;$i$519 = 0;$n$418 = 0; + while(1) { + $84 = (($85) + ($i$519)|0); + $86 = HEAP8[$84>>0]|0; + $87 = ($86<<24>>24)>(0); + if ($87) { + $88 = (($n$418) + 1)|0; + $89 = (($49) + ($n$418<<2)|0); + $90 = HEAP32[$89>>2]|0; + $91 = HEAP32[$82>>2]|0; + $92 = (($91) + ($90)|0); + HEAP8[$92>>0] = $86; + $93 = HEAP32[$16>>2]|0; + $94 = (($93) + ($i$519)|0); + $95 = HEAP8[$94>>0]|0; + $96 = $95 << 24 >> 24; + $97 = HEAP32[$83>>2]|0; + $98 = ($96|0)>($97|0); + if ($98) { + HEAP32[$83>>2] = $96; + $237 = $96;$238 = $93;$n$5 = $88; + } else { + $237 = $97;$238 = $93;$n$5 = $88; + } + } else { + $237 = $236;$238 = $85;$n$5 = $n$418; + } + $99 = (($i$519) + 1)|0; + $100 = HEAP32[$0>>2]|0; + $101 = ($99|0)<($100|0); + if ($101) { + $236 = $237;$85 = $238;$i$519 = $99;$n$418 = $n$5; + } else { + $$lcssa63 = $237;$n$5$lcssa = $n$5; + break; + } + } + $102 = ($n$5$lcssa|0)==(1); + if ($102) { + $103 = ($$lcssa63|0)==(1); + if ($103) { + $104 = ((($c)) + 36|0); + HEAP32[$104>>2] = 1; + $105 = (_calloc(2,4)|0); + $106 = ((($c)) + 32|0); + HEAP32[$106>>2] = $105; + $107 = ((($105)) + 4|0); + HEAP32[$107>>2] = 1; + HEAP32[$105>>2] = 1; + $$0 = 0; + STACKTOP = sp;return ($$0|0); + } else { + $n$4$lcssa55 = 1; + } + } else { + $n$4$lcssa55 = $n$5$lcssa; + } + } else { + $n$4$lcssa55 = 0; + } + $108 = HEAP32[$12>>2]|0; + $109 = ($108|0)==(0); + if ($109) { + $ret$0$lcssa$i = -4; + } else { + $$01$i = $108;$ret$02$i = 0; + while(1) { + $110 = $$01$i >>> 1; + $111 = (($ret$02$i) + 1)|0; + $112 = ($110|0)==(0); + if ($112) { + $ret$02$i$lcssa = $ret$02$i; + break; + } else { + $$01$i = $110;$ret$02$i = $111; + } + } + $phitmp = (($ret$02$i$lcssa) + -3)|0; + $ret$0$lcssa$i = $phitmp; + } + $113 = ((($c)) + 36|0); + $114 = ($ret$0$lcssa$i|0)<(5); + $$ = $114 ? 5 : $ret$0$lcssa$i; + $115 = ($$|0)>(8); + $storemerge2 = $115 ? 8 : $$; + HEAP32[$113>>2] = $storemerge2; + $116 = 1 << $storemerge2; + $117 = (_calloc($116,4)|0); + $118 = ((($c)) + 32|0); + HEAP32[$118>>2] = $117; + $119 = ($n$4$lcssa55|0)>(0); + if ($119) { + $124 = $storemerge2;$i$616 = 0; + while(1) { + $120 = HEAP32[$82>>2]|0; + $121 = (($120) + ($i$616)|0); + $122 = HEAP8[$121>>0]|0; + $123 = $122 << 24 >> 24; + $125 = ($124|0)<($123|0); + if ($125) { + $239 = $124; + } else { + $126 = HEAP32[$51>>2]|0; + $127 = (($126) + ($i$616<<2)|0); + $128 = HEAP32[$127>>2]|0; + $129 = $128 >>> 16; + $130 = $128 << 16; + $131 = $129 | $130; + $132 = $131 >>> 8; + $133 = $132 & 16711935; + $134 = $131 << 8; + $135 = $134 & -16711936; + $136 = $133 | $135; + $137 = $136 >>> 4; + $138 = $137 & 252645135; + $139 = $136 << 4; + $140 = $139 & -252645136; + $141 = $138 | $140; + $142 = $141 >>> 2; + $143 = $142 & 858993459; + $144 = $141 << 2; + $145 = $144 & -858993460; + $146 = $143 | $145; + $147 = $146 >>> 1; + $148 = $147 & 1431655765; + $149 = $146 << 1; + $150 = $149 & -1431655766; + $151 = $148 | $150; + $152 = (($124) - ($123))|0; + $153 = ($152|0)==(31); + if ($153) { + $239 = $124; + } else { + $154 = (($i$616) + 1)|0; + $156 = $123;$j$014 = 0; + while(1) { + $155 = $j$014 << $156; + $157 = $151 | $155; + $158 = (($117) + ($157<<2)|0); + HEAP32[$158>>2] = $154; + $159 = (($j$014) + 1)|0; + $160 = HEAP32[$113>>2]|0; + $161 = HEAP8[$121>>0]|0; + $162 = $161 << 24 >> 24; + $163 = (($160) - ($162))|0; + $164 = 1 << $163; + $165 = ($159|0)<($164|0); + if ($165) { + $156 = $162;$j$014 = $159; + } else { + $239 = $160; + break; + } + } + } + } + $166 = (($i$616) + 1)|0; + $exitcond = ($166|0)==($n$4$lcssa55|0); + if ($exitcond) { + $168 = $239; + break; + } else { + $124 = $239;$i$616 = $166; + } + } + } else { + $168 = $storemerge2; + } + $167 = (31 - ($168))|0; + $169 = -2 << $167; + $170 = ($storemerge2|0)==(31); + if ($170) { + $$0 = 0; + STACKTOP = sp;return ($$0|0); + } else { + $172 = $168;$hi$012 = 0;$i$710 = 0;$lo$011 = 0; + } + while(1) { + $171 = (32 - ($172))|0; + $173 = $i$710 << $171; + $174 = $173 >>> 16; + $175 = $173 << 16; + $176 = $174 | $175; + $177 = $176 >>> 8; + $178 = $177 & 16711935; + $179 = $176 << 8; + $180 = $179 & -16711936; + $181 = $178 | $180; + $182 = $181 >>> 4; + $183 = $182 & 252645135; + $184 = $181 << 4; + $185 = $184 & -252645136; + $186 = $183 | $185; + $187 = $186 >>> 2; + $188 = $187 & 858993459; + $189 = $186 << 2; + $190 = $189 & -858993460; + $191 = $188 | $190; + $192 = $191 >>> 1; + $193 = $192 & 1431655765; + $194 = $191 << 1; + $195 = $194 & -1431655766; + $196 = $193 | $195; + $197 = (($117) + ($196<<2)|0); + $198 = HEAP32[$197>>2]|0; + $199 = ($198|0)==(0); + if ($199) { + $lo$1 = $lo$011; + while(1) { + $200 = (($lo$1) + 1)|0; + $201 = ($200|0)<($n$4$lcssa55|0); + if (!($201)) { + $lo$1$lcssa = $lo$1; + break; + } + $202 = HEAP32[$51>>2]|0; + $203 = (($202) + ($200<<2)|0); + $204 = HEAP32[$203>>2]|0; + $205 = ($204>>>0)>($173>>>0); + if ($205) { + $lo$1$lcssa = $lo$1; + break; + } else { + $lo$1 = $200; + } + } + $206 = ($n$4$lcssa55|0)>($hi$012|0); + L80: do { + if ($206) { + $207 = HEAP32[$51>>2]|0; + $hi$18 = $hi$012; + while(1) { + $208 = (($207) + ($hi$18<<2)|0); + $209 = HEAP32[$208>>2]|0; + $210 = $209 & $169; + $211 = ($173>>>0)<($210>>>0); + if ($211) { + $hi$1$lcssa = $hi$18; + break L80; + } + $212 = (($hi$18) + 1)|0; + $213 = ($n$4$lcssa55|0)>($212|0); + if ($213) { + $hi$18 = $212; + } else { + $hi$1$lcssa = $212; + break; + } + } + } else { + $hi$1$lcssa = $hi$012; + } + } while(0); + $214 = (($n$4$lcssa55) - ($hi$1$lcssa))|0; + $215 = ($lo$1$lcssa>>>0)>(32767); + $216 = ($214>>>0)>(32767); + $hival$0 = $216 ? 32767 : $214; + $lo$1$op = $lo$1$lcssa << 15; + $lo$1$op$op = $lo$1$op | -2147483648; + $217 = $215 ? -1073774592 : $lo$1$op$op; + $218 = $217 | $hival$0; + HEAP32[$197>>2] = $218; + $hi$2 = $hi$1$lcssa;$lo$2 = $lo$1$lcssa; + } else { + $hi$2 = $hi$012;$lo$2 = $lo$011; + } + $219 = (($i$710) + 1)|0; + $220 = ($219|0)<($116|0); + if (!($220)) { + $$0 = 0; + break; + } + $$pre54 = HEAP32[$113>>2]|0; + $172 = $$pre54;$hi$012 = $hi$2;$i$710 = $219;$lo$011 = $lo$2; + } + STACKTOP = sp;return ($$0|0); +} +function _sort32a($a,$b) { + $a = $a|0; + $b = $b|0; + var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = HEAP32[$a>>2]|0; + $1 = HEAP32[$0>>2]|0; + $2 = HEAP32[$b>>2]|0; + $3 = HEAP32[$2>>2]|0; + $4 = ($1>>>0)>($3>>>0); + $5 = $4&1; + $6 = ($1>>>0)<($3>>>0); + $7 = $6&1; + $8 = (($5) - ($7))|0; + return ($8|0); +} +function _drft_forward($l,$data) { + $l = $l|0; + $data = $data|0; + var $$sum = 0, $$sum1 = 0, $$sum2 = 0, $$sum2$i = 0, $$sum3 = 0, $$sum4 = 0, $$sum8$i = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0; + var $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $4 = 0, $5 = 0; + var $6 = 0, $7 = 0, $8 = 0, $9 = 0, $exitcond$i = 0, $exitcond17$i = 0, $i$010$i = 0, $iw$011$i = 0, $k1$014$i = 0, $l2$013$i = 0, $na$0$$i = 0, $na$012$i = 0, $na$2$i = 0, $na$2$i$lcssa = 0, $or$cond$i = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = HEAP32[$l>>2]|0; + $1 = ($0|0)==(1); + if ($1) { + return; + } + $2 = ((($l)) + 4|0); + $3 = HEAP32[$2>>2]|0; + $4 = ((($l)) + 8|0); + $5 = HEAP32[$4>>2]|0; + $6 = ((($5)) + 4|0); + $7 = HEAP32[$6>>2]|0; + $8 = ($7|0)>(0); + if (!($8)) { + return; + } + $9 = (($7) + 1)|0; + $$sum8$i = (($0) + -1)|0; + $iw$011$i = $0;$k1$014$i = 0;$l2$013$i = $0;$na$012$i = 1; + while(1) { + $10 = (($9) - ($k1$014$i))|0; + $11 = (($5) + ($10<<2)|0); + $12 = HEAP32[$11>>2]|0; + $13 = (($l2$013$i|0) / ($12|0))&-1; + $14 = (($0|0) / ($l2$013$i|0))&-1; + $15 = Math_imul($14, $13)|0; + $16 = (($12) + -1)|0; + $17 = Math_imul($14, $16)|0; + $18 = (($iw$011$i) - ($17))|0; + $19 = (1 - ($na$012$i))|0; + do { + if ((($12|0) == 2)) { + $25 = ($19|0)==(0); + $$sum = (($$sum8$i) + ($18))|0; + $26 = (($3) + ($$sum<<2)|0); + if ($25) { + _dradf2($14,$13,$data,$3,$26); + $na$2$i = 0; + break; + } else { + _dradf2($14,$13,$3,$data,$26); + $na$2$i = $19; + break; + } + } else if ((($12|0) == 4)) { + $20 = (($18) + ($14))|0; + $21 = ($19|0)==(0); + $$sum1 = (($$sum8$i) + ($18))|0; + $22 = (($3) + ($$sum1<<2)|0); + $$sum2 = (($$sum8$i) + ($20))|0; + $23 = (($3) + ($$sum2<<2)|0); + $$sum2$i = (($$sum8$i) + ($14))|0; + $$sum3 = (($$sum2$i) + ($20))|0; + $24 = (($3) + ($$sum3<<2)|0); + if ($21) { + _dradf4($14,$13,$data,$3,$22,$23,$24); + $na$2$i = 0; + break; + } else { + _dradf4($14,$13,$3,$data,$22,$23,$24); + $na$2$i = $19; + break; + } + } else { + $27 = ($14|0)==(1); + $na$0$$i = $27 ? $na$012$i : $19; + $28 = ($na$0$$i|0)==(0); + $$sum4 = (($$sum8$i) + ($18))|0; + $29 = (($3) + ($$sum4<<2)|0); + if ($28) { + _dradfg($14,$12,$13,$15,$data,$data,$data,$3,$3,$29); + $na$2$i = 1; + break; + } else { + _dradfg($14,$12,$13,$15,$3,$3,$3,$data,$data,$29); + $na$2$i = 0; + break; + } + } + } while(0); + $30 = (($k1$014$i) + 1)|0; + $exitcond17$i = ($30|0)==($7|0); + if ($exitcond17$i) { + $na$2$i$lcssa = $na$2$i; + break; + } else { + $iw$011$i = $18;$k1$014$i = $30;$l2$013$i = $13;$na$012$i = $na$2$i; + } + } + $31 = ($na$2$i$lcssa|0)!=(1); + $32 = ($0|0)>(0); + $or$cond$i = $32 & $31; + if ($or$cond$i) { + $i$010$i = 0; + } else { + return; + } + while(1) { + $33 = (($3) + ($i$010$i<<2)|0); + $34 = HEAP32[$33>>2]|0; + $35 = (($data) + ($i$010$i<<2)|0); + HEAP32[$35>>2] = $34; + $36 = (($i$010$i) + 1)|0; + $exitcond$i = ($36|0)==($0|0); + if ($exitcond$i) { + break; + } else { + $i$010$i = $36; + } + } + return; +} +function _drft_init($l,$n) { + $l = $l|0; + $n = $n|0; + var $$lcssa = 0, $$not$i$i = 0, $$sum$i = 0, $$sum1$i = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0; + var $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0.0, $3 = 0, $30 = 0.0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0; + var $41 = 0, $42 = 0.0, $43 = 0.0, $44 = 0.0, $45 = 0.0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0; + var $cosf$i$i = 0.0, $exitcond$i$i = 0, $exitcond28$i$i = 0, $exitcond29$i$i = 0, $fi$010$i$i = 0.0, $i$021$i$i = 0, $i$19$i$i = 0, $ii$08$i$i = 0, $indvars$iv$i$i = 0, $indvars$iv$i$i$lcssa18 = 0, $indvars$iv$in$i$i = 0, $indvars$iv$in$i$i$lcssa16 = 0, $is$018$i$i = 0, $is$1$lcssa$i$i = 0, $is$112$i$i = 0, $j$0$i$i = 0, $j$113$i$i = 0, $k1$019$i$i = 0, $l1$017$i$i = 0, $ld$011$i$i = 0; + var $nf$0$i$i = 0, $nl$0$i$i = 0, $nl$1$i$i = 0, $ntry$0$i$i = 0, $ntry$1$ph$i$i = 0, $or$cond$i$i = 0, $or$cond33$i$i = 0, $sinf$i$i = 0.0, label = 0, sp = 0; + sp = STACKTOP; + HEAP32[$l>>2] = $n; + $0 = ($n*3)|0; + $1 = (_calloc($0,4)|0); + $2 = ((($l)) + 4|0); + HEAP32[$2>>2] = $1; + $3 = (_calloc(32,4)|0); + $4 = ((($l)) + 8|0); + HEAP32[$4>>2] = $3; + $5 = ($n|0)==(1); + if ($5) { + return; + } + $6 = ((($3)) + 8|0); + $j$0$i$i = -1;$nf$0$i$i = 0;$nl$0$i$i = $n;$ntry$0$i$i = 0; + L4: while(1) { + $7 = (($j$0$i$i) + 1)|0; + $8 = ($7|0)<(4); + if ($8) { + $9 = (25768 + ($7<<2)|0); + $10 = HEAP32[$9>>2]|0; + $ntry$1$ph$i$i = $10; + } else { + $11 = (($ntry$0$i$i) + 2)|0; + $ntry$1$ph$i$i = $11; + } + $12 = ($ntry$1$ph$i$i|0)!=(2); + $indvars$iv$in$i$i = $nf$0$i$i;$nl$1$i$i = $nl$0$i$i; + while(1) { + $indvars$iv$i$i = (($indvars$iv$in$i$i) + 1)|0; + $13 = (($nl$1$i$i|0) / ($ntry$1$ph$i$i|0))&-1; + $14 = Math_imul($13, $ntry$1$ph$i$i)|0; + $15 = ($nl$1$i$i|0)==($14|0); + if (!($15)) { + $j$0$i$i = $7;$nf$0$i$i = $indvars$iv$in$i$i;$nl$0$i$i = $nl$1$i$i;$ntry$0$i$i = $ntry$1$ph$i$i; + continue L4; + } + $16 = (($indvars$iv$in$i$i) + 2)|0; + $17 = (($3) + ($16<<2)|0); + HEAP32[$17>>2] = $ntry$1$ph$i$i; + $18 = ($indvars$iv$in$i$i|0)==(0); + $or$cond$i$i = $12 | $18; + if (!($or$cond$i$i)) { + $19 = ($indvars$iv$in$i$i|0)<(1); + if (!($19)) { + $i$021$i$i = 1; + while(1) { + $20 = (($indvars$iv$i$i) - ($i$021$i$i))|0; + $21 = (($20) + 1)|0; + $22 = (($3) + ($21<<2)|0); + $23 = HEAP32[$22>>2]|0; + $24 = (($20) + 2)|0; + $25 = (($3) + ($24<<2)|0); + HEAP32[$25>>2] = $23; + $26 = (($i$021$i$i) + 1)|0; + $exitcond29$i$i = ($26|0)==($indvars$iv$i$i|0); + if ($exitcond29$i$i) { + break; + } else { + $i$021$i$i = $26; + } + } + } + HEAP32[$6>>2] = 2; + } + $27 = ($13|0)==(1); + if ($27) { + $$lcssa = $18;$indvars$iv$i$i$lcssa18 = $indvars$iv$i$i;$indvars$iv$in$i$i$lcssa16 = $indvars$iv$in$i$i; + break L4; + } else { + $indvars$iv$in$i$i = $indvars$iv$i$i;$nl$1$i$i = $13; + } + } + } + HEAP32[$3>>2] = $n; + $28 = ((($3)) + 4|0); + HEAP32[$28>>2] = $indvars$iv$i$i$lcssa18; + $29 = (+($n|0)); + $30 = 6.2831854820251465 / $29; + $$not$i$i = $$lcssa ^ 1; + $31 = ($indvars$iv$in$i$i$lcssa16|0)>(0); + $or$cond33$i$i = $31 & $$not$i$i; + if (!($or$cond33$i$i)) { + return; + } + $32 = (($n) + 1)|0; + $is$018$i$i = 0;$k1$019$i$i = 0;$l1$017$i$i = 1; + while(1) { + $33 = (($k1$019$i$i) + 2)|0; + $34 = (($3) + ($33<<2)|0); + $35 = HEAP32[$34>>2]|0; + $36 = Math_imul($35, $l1$017$i$i)|0; + $37 = (($n|0) / ($36|0))&-1; + $38 = ($35|0)>(1); + if ($38) { + $39 = ($37|0)>(2); + $40 = (($35) + -1)|0; + $is$112$i$i = $is$018$i$i;$j$113$i$i = 0;$ld$011$i$i = 0; + while(1) { + $41 = (($ld$011$i$i) + ($l1$017$i$i))|0; + $42 = (+($41|0)); + $43 = $42 * $30; + if ($39) { + $fi$010$i$i = 0.0;$i$19$i$i = $is$112$i$i;$ii$08$i$i = 2; + while(1) { + $44 = $fi$010$i$i + 1.0; + $45 = $43 * $44; + $cosf$i$i = (+Math_cos((+$45))); + $$sum$i = (($i$19$i$i) + ($n))|0; + $46 = (($1) + ($$sum$i<<2)|0); + HEAPF32[$46>>2] = $cosf$i$i; + $sinf$i$i = (+Math_sin((+$45))); + $47 = (($i$19$i$i) + 2)|0; + $$sum1$i = (($32) + ($i$19$i$i))|0; + $48 = (($1) + ($$sum1$i<<2)|0); + HEAPF32[$48>>2] = $sinf$i$i; + $49 = (($ii$08$i$i) + 2)|0; + $50 = ($49|0)<($37|0); + if ($50) { + $fi$010$i$i = $44;$i$19$i$i = $47;$ii$08$i$i = $49; + } else { + break; + } + } + } + $51 = (($is$112$i$i) + ($37))|0; + $52 = (($j$113$i$i) + 1)|0; + $exitcond$i$i = ($52|0)==($40|0); + if ($exitcond$i$i) { + break; + } else { + $is$112$i$i = $51;$j$113$i$i = $52;$ld$011$i$i = $41; + } + } + $53 = Math_imul($37, $40)|0; + $54 = (($53) + ($is$018$i$i))|0; + $is$1$lcssa$i$i = $54; + } else { + $is$1$lcssa$i$i = $is$018$i$i; + } + $55 = (($k1$019$i$i) + 1)|0; + $exitcond28$i$i = ($55|0)==($indvars$iv$in$i$i$lcssa16|0); + if ($exitcond28$i$i) { + break; + } else { + $is$018$i$i = $is$1$lcssa$i$i;$k1$019$i$i = $55;$l1$017$i$i = $36; + } + } + return; +} +function _drft_clear($l) { + $l = $l|0; + var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($l|0)==(0|0); + if ($0) { + return; + } + $1 = ((($l)) + 4|0); + $2 = HEAP32[$1>>2]|0; + $3 = ($2|0)==(0|0); + if (!($3)) { + _free($2); + } + $4 = ((($l)) + 8|0); + $5 = HEAP32[$4>>2]|0; + $6 = ($5|0)==(0|0); + if (!($6)) { + _free($5); + } + ;HEAP32[$l>>2]=0|0;HEAP32[$l+4>>2]=0|0;HEAP32[$l+8>>2]=0|0; + return; +} +function _dradf4($ido,$l1,$cc,$ch,$wa1,$wa2,$wa3) { + $ido = $ido|0; + $l1 = $l1|0; + $cc = $cc|0; + $ch = $ch|0; + $wa1 = $wa1|0; + $wa2 = $wa2|0; + $wa3 = $wa3|0; + var $0 = 0, $1 = 0, $10 = 0.0, $100 = 0, $101 = 0.0, $102 = 0.0, $103 = 0.0, $104 = 0, $105 = 0, $106 = 0.0, $107 = 0.0, $108 = 0.0, $109 = 0.0, $11 = 0.0, $110 = 0, $111 = 0, $112 = 0.0, $113 = 0, $114 = 0.0, $115 = 0; + var $116 = 0, $117 = 0.0, $118 = 0, $119 = 0.0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0.0, $124 = 0, $125 = 0.0, $126 = 0, $127 = 0, $128 = 0, $129 = 0.0, $13 = 0.0, $130 = 0, $131 = 0, $132 = 0, $133 = 0; + var $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0.0, $144 = 0, $145 = 0.0, $146 = 0.0, $147 = 0.0, $148 = 0.0, $149 = 0.0, $15 = 0.0, $150 = 0, $151 = 0; + var $152 = 0.0, $153 = 0.0, $154 = 0, $155 = 0, $156 = 0.0, $157 = 0.0, $158 = 0, $159 = 0, $16 = 0.0, $160 = 0, $161 = 0, $162 = 0, $163 = 0.0, $164 = 0.0, $165 = 0, $166 = 0.0, $167 = 0.0, $168 = 0, $169 = 0, $17 = 0.0; + var $170 = 0, $171 = 0, $172 = 0, $173 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0.0, $21 = 0, $22 = 0, $23 = 0.0, $24 = 0.0, $25 = 0.0, $26 = 0, $27 = 0, $28 = 0, $29 = 0.0, $3 = 0, $30 = 0.0, $31 = 0.0; + var $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0.0, $5 = 0; + var $50 = 0, $51 = 0, $52 = 0.0, $53 = 0.0, $54 = 0, $55 = 0, $56 = 0.0, $57 = 0, $58 = 0.0, $59 = 0.0, $6 = 0, $60 = 0.0, $61 = 0.0, $62 = 0.0, $63 = 0.0, $64 = 0, $65 = 0, $66 = 0.0, $67 = 0, $68 = 0; + var $69 = 0.0, $7 = 0, $70 = 0.0, $71 = 0, $72 = 0.0, $73 = 0, $74 = 0.0, $75 = 0.0, $76 = 0.0, $77 = 0.0, $78 = 0.0, $79 = 0.0, $8 = 0.0, $80 = 0, $81 = 0, $82 = 0.0, $83 = 0, $84 = 0, $85 = 0.0, $86 = 0.0; + var $87 = 0, $88 = 0.0, $89 = 0, $9 = 0, $90 = 0.0, $91 = 0.0, $92 = 0.0, $93 = 0.0, $94 = 0.0, $95 = 0.0, $96 = 0.0, $97 = 0.0, $98 = 0.0, $99 = 0.0, $exitcond = 0, $exitcond24 = 0, $exitcond25 = 0, $i$09$us = 0, $k$019 = 0, $k$112$us = 0; + var $k$25 = 0, $t1$018 = 0, $t1$111$us = 0, $t1$24 = 0, $t2$017 = 0, $t2$18$us = 0, $t2$23 = 0, $t3$016 = 0, $t4$015 = 0, $t4$17$us = 0, $t4$22 = 0, $t5$06$us = 0, $t6$01 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = Math_imul($l1, $ido)|0; + $1 = $0 << 1; + $2 = ($l1|0)>(0); + if ($2) { + $3 = ($0*3)|0; + $4 = $ido << 2; + $5 = (($4) + -1)|0; + $6 = $ido << 1; + $k$019 = 0;$t1$018 = $0;$t2$017 = $3;$t3$016 = 0;$t4$015 = $1; + while(1) { + $7 = (($cc) + ($t1$018<<2)|0); + $8 = +HEAPF32[$7>>2]; + $9 = (($cc) + ($t2$017<<2)|0); + $10 = +HEAPF32[$9>>2]; + $11 = $10 + $8; + $12 = (($cc) + ($t3$016<<2)|0); + $13 = +HEAPF32[$12>>2]; + $14 = (($cc) + ($t4$015<<2)|0); + $15 = +HEAPF32[$14>>2]; + $16 = $15 + $13; + $17 = $16 + $11; + $18 = $t3$016 << 2; + $19 = (($ch) + ($18<<2)|0); + HEAPF32[$19>>2] = $17; + $20 = $16 - $11; + $21 = (($5) + ($18))|0; + $22 = (($ch) + ($21<<2)|0); + HEAPF32[$22>>2] = $20; + $23 = +HEAPF32[$12>>2]; + $24 = +HEAPF32[$14>>2]; + $25 = $23 - $24; + $26 = (($18) + ($6))|0; + $27 = (($26) + -1)|0; + $28 = (($ch) + ($27<<2)|0); + HEAPF32[$28>>2] = $25; + $29 = +HEAPF32[$9>>2]; + $30 = +HEAPF32[$7>>2]; + $31 = $29 - $30; + $32 = (($ch) + ($26<<2)|0); + HEAPF32[$32>>2] = $31; + $33 = (($t1$018) + ($ido))|0; + $34 = (($t2$017) + ($ido))|0; + $35 = (($t3$016) + ($ido))|0; + $36 = (($t4$015) + ($ido))|0; + $37 = (($k$019) + 1)|0; + $exitcond24 = ($37|0)==($l1|0); + if ($exitcond24) { + break; + } else { + $k$019 = $37;$t1$018 = $33;$t2$017 = $34;$t3$016 = $35;$t4$015 = $36; + } + } + } + $38 = ($ido|0)<(2); + if ($38) { + return; + } + $39 = ($ido|0)==(2); + if (!($39)) { + if ($2) { + $40 = $ido << 1; + $k$112$us = 0;$t1$111$us = 0; + while(1) { + $133 = $t1$111$us << 2; + $134 = (($133) + ($40))|0; + $i$09$us = 2;$t2$18$us = $t1$111$us;$t4$17$us = $133;$t5$06$us = $134; + while(1) { + $43 = (($t2$18$us) + 2)|0; + $44 = (($t4$17$us) + 2)|0; + $45 = (($t5$06$us) + -2)|0; + $46 = (($43) + ($0))|0; + $47 = (($i$09$us) + -2)|0; + $48 = (($wa1) + ($47<<2)|0); + $49 = +HEAPF32[$48>>2]; + $50 = (($46) + -1)|0; + $51 = (($cc) + ($50<<2)|0); + $52 = +HEAPF32[$51>>2]; + $53 = $52 * $49; + $54 = (($i$09$us) + -1)|0; + $55 = (($wa1) + ($54<<2)|0); + $56 = +HEAPF32[$55>>2]; + $57 = (($cc) + ($46<<2)|0); + $58 = +HEAPF32[$57>>2]; + $59 = $58 * $56; + $60 = $59 + $53; + $61 = $58 * $49; + $62 = $56 * $52; + $63 = $61 - $62; + $64 = (($46) + ($0))|0; + $65 = (($wa2) + ($47<<2)|0); + $66 = +HEAPF32[$65>>2]; + $67 = (($64) + -1)|0; + $68 = (($cc) + ($67<<2)|0); + $69 = +HEAPF32[$68>>2]; + $70 = $69 * $66; + $71 = (($wa2) + ($54<<2)|0); + $72 = +HEAPF32[$71>>2]; + $73 = (($cc) + ($64<<2)|0); + $74 = +HEAPF32[$73>>2]; + $75 = $74 * $72; + $76 = $75 + $70; + $77 = $74 * $66; + $78 = $72 * $69; + $79 = $77 - $78; + $80 = (($64) + ($0))|0; + $81 = (($wa3) + ($47<<2)|0); + $82 = +HEAPF32[$81>>2]; + $83 = (($80) + -1)|0; + $84 = (($cc) + ($83<<2)|0); + $85 = +HEAPF32[$84>>2]; + $86 = $85 * $82; + $87 = (($wa3) + ($54<<2)|0); + $88 = +HEAPF32[$87>>2]; + $89 = (($cc) + ($80<<2)|0); + $90 = +HEAPF32[$89>>2]; + $91 = $90 * $88; + $92 = $91 + $86; + $93 = $90 * $82; + $94 = $88 * $85; + $95 = $93 - $94; + $96 = $92 + $60; + $97 = $92 - $60; + $98 = $95 + $63; + $99 = $63 - $95; + $100 = (($cc) + ($43<<2)|0); + $101 = +HEAPF32[$100>>2]; + $102 = $101 + $79; + $103 = $101 - $79; + $104 = (($t2$18$us) + 1)|0; + $105 = (($cc) + ($104<<2)|0); + $106 = +HEAPF32[$105>>2]; + $107 = $106 + $76; + $108 = $106 - $76; + $109 = $96 + $107; + $110 = $t4$17$us | 1; + $111 = (($ch) + ($110<<2)|0); + HEAPF32[$111>>2] = $109; + $112 = $98 + $102; + $113 = (($ch) + ($44<<2)|0); + HEAPF32[$113>>2] = $112; + $114 = $108 - $99; + $115 = (($t5$06$us) + -3)|0; + $116 = (($ch) + ($115<<2)|0); + HEAPF32[$116>>2] = $114; + $117 = $97 - $103; + $118 = (($ch) + ($45<<2)|0); + HEAPF32[$118>>2] = $117; + $119 = $99 + $108; + $120 = (($44) + ($40))|0; + $121 = (($120) + -1)|0; + $122 = (($ch) + ($121<<2)|0); + HEAPF32[$122>>2] = $119; + $123 = $97 + $103; + $124 = (($ch) + ($120<<2)|0); + HEAPF32[$124>>2] = $123; + $125 = $107 - $96; + $126 = (($45) + ($40))|0; + $127 = (($126) + -1)|0; + $128 = (($ch) + ($127<<2)|0); + HEAPF32[$128>>2] = $125; + $129 = $98 - $102; + $130 = (($ch) + ($126<<2)|0); + HEAPF32[$130>>2] = $129; + $131 = (($i$09$us) + 2)|0; + $132 = ($131|0)<($ido|0); + if ($132) { + $i$09$us = $131;$t2$18$us = $43;$t4$17$us = $44;$t5$06$us = $45; + } else { + break; + } + } + $41 = (($t1$111$us) + ($ido))|0; + $42 = (($k$112$us) + 1)|0; + $exitcond25 = ($42|0)==($l1|0); + if ($exitcond25) { + break; + } else { + $k$112$us = $42;$t1$111$us = $41; + } + } + } + $135 = $ido & 1; + $136 = ($135|0)==(0); + if (!($136)) { + return; + } + } + $137 = (($ido) + -1)|0; + $138 = (($137) + ($0))|0; + $139 = $ido << 2; + $140 = $ido << 1; + if (!($2)) { + return; + } + $141 = (($138) + ($1))|0; + $k$25 = 0;$t1$24 = $138;$t2$23 = $141;$t4$22 = $ido;$t6$01 = $ido; + while(1) { + $142 = (($cc) + ($t1$24<<2)|0); + $143 = +HEAPF32[$142>>2]; + $144 = (($cc) + ($t2$23<<2)|0); + $145 = +HEAPF32[$144>>2]; + $146 = $145 + $143; + $147 = $146 * -0.70710676908493042; + $148 = $143 - $145; + $149 = $148 * 0.70710676908493042; + $150 = (($t6$01) + -1)|0; + $151 = (($cc) + ($150<<2)|0); + $152 = +HEAPF32[$151>>2]; + $153 = $149 + $152; + $154 = (($t4$22) + -1)|0; + $155 = (($ch) + ($154<<2)|0); + HEAPF32[$155>>2] = $153; + $156 = +HEAPF32[$151>>2]; + $157 = $156 - $149; + $158 = (($t4$22) + ($140))|0; + $159 = (($158) + -1)|0; + $160 = (($ch) + ($159<<2)|0); + HEAPF32[$160>>2] = $157; + $161 = (($t1$24) + ($0))|0; + $162 = (($cc) + ($161<<2)|0); + $163 = +HEAPF32[$162>>2]; + $164 = $147 - $163; + $165 = (($ch) + ($t4$22<<2)|0); + HEAPF32[$165>>2] = $164; + $166 = +HEAPF32[$162>>2]; + $167 = $166 + $147; + $168 = (($ch) + ($158<<2)|0); + HEAPF32[$168>>2] = $167; + $169 = (($t1$24) + ($ido))|0; + $170 = (($t2$23) + ($ido))|0; + $171 = (($t4$22) + ($139))|0; + $172 = (($t6$01) + ($ido))|0; + $173 = (($k$25) + 1)|0; + $exitcond = ($173|0)==($l1|0); + if ($exitcond) { + break; + } else { + $k$25 = $173;$t1$24 = $169;$t2$23 = $170;$t4$22 = $171;$t6$01 = $172; + } + } + return; +} +function _dradf2($ido,$l1,$cc,$ch,$wa1) { + $ido = $ido|0; + $l1 = $l1|0; + $cc = $cc|0; + $ch = $ch|0; + $wa1 = $wa1|0; + var $0 = 0, $1 = 0, $10 = 0, $11 = 0.0, $12 = 0.0, $13 = 0.0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0; + var $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0.0, $31 = 0, $32 = 0, $33 = 0.0, $34 = 0.0, $35 = 0, $36 = 0, $37 = 0.0, $38 = 0, $39 = 0.0, $4 = 0, $40 = 0.0, $41 = 0.0, $42 = 0.0, $43 = 0.0, $44 = 0.0; + var $45 = 0, $46 = 0.0, $47 = 0.0, $48 = 0, $49 = 0.0, $5 = 0.0, $50 = 0.0, $51 = 0, $52 = 0, $53 = 0, $54 = 0.0, $55 = 0.0, $56 = 0, $57 = 0, $58 = 0.0, $59 = 0.0, $6 = 0, $60 = 0, $61 = 0, $62 = 0; + var $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0.0, $70 = 0, $71 = 0.0, $72 = 0.0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0.0, $80 = 0; + var $81 = 0, $9 = 0, $exitcond = 0, $exitcond23 = 0, $exitcond24 = 0, $i$05$us = 0, $k$016 = 0, $k$111$us = 0, $k$21 = 0, $t1$017 = 0, $t1$112$us = 0, $t1$22 = 0, $t2$018 = 0, $t2$113$us = 0, $t2$23 = 0, $t3$06$us = 0, $t3$14 = 0, $t4$07$us = 0, $t5$08$us = 0, $t6$09$us = 0; + var label = 0, sp = 0; + sp = STACKTOP; + $0 = Math_imul($l1, $ido)|0; + $1 = $ido << 1; + $2 = ($l1|0)>(0); + if ($2) { + $3 = (($1) + -1)|0; + $k$016 = 0;$t1$017 = 0;$t2$018 = $0; + while(1) { + $4 = (($cc) + ($t1$017<<2)|0); + $5 = +HEAPF32[$4>>2]; + $6 = (($cc) + ($t2$018<<2)|0); + $7 = +HEAPF32[$6>>2]; + $8 = $7 + $5; + $9 = $t1$017 << 1; + $10 = (($ch) + ($9<<2)|0); + HEAPF32[$10>>2] = $8; + $11 = +HEAPF32[$4>>2]; + $12 = +HEAPF32[$6>>2]; + $13 = $11 - $12; + $14 = (($3) + ($9))|0; + $15 = (($ch) + ($14<<2)|0); + HEAPF32[$15>>2] = $13; + $16 = (($t1$017) + ($ido))|0; + $17 = (($t2$018) + ($ido))|0; + $18 = (($k$016) + 1)|0; + $exitcond23 = ($18|0)==($l1|0); + if ($exitcond23) { + break; + } else { + $k$016 = $18;$t1$017 = $16;$t2$018 = $17; + } + } + } + $19 = ($ido|0)<(2); + if ($19) { + return; + } + $20 = ($ido|0)==(2); + if (!($20)) { + if ($2) { + $k$111$us = 0;$t1$112$us = 0;$t2$113$us = $0; + while(1) { + $64 = $t1$112$us << 1; + $65 = (($64) + ($1))|0; + $i$05$us = 2;$t3$06$us = $t2$113$us;$t4$07$us = $65;$t5$08$us = $t1$112$us;$t6$09$us = $64; + while(1) { + $24 = (($t3$06$us) + 2)|0; + $25 = (($t4$07$us) + -2)|0; + $26 = (($t5$08$us) + 2)|0; + $27 = (($t6$09$us) + 2)|0; + $28 = (($i$05$us) + -2)|0; + $29 = (($wa1) + ($28<<2)|0); + $30 = +HEAPF32[$29>>2]; + $31 = (($t3$06$us) + 1)|0; + $32 = (($cc) + ($31<<2)|0); + $33 = +HEAPF32[$32>>2]; + $34 = $33 * $30; + $35 = (($i$05$us) + -1)|0; + $36 = (($wa1) + ($35<<2)|0); + $37 = +HEAPF32[$36>>2]; + $38 = (($cc) + ($24<<2)|0); + $39 = +HEAPF32[$38>>2]; + $40 = $39 * $37; + $41 = $40 + $34; + $42 = $39 * $30; + $43 = $37 * $33; + $44 = $42 - $43; + $45 = (($cc) + ($26<<2)|0); + $46 = +HEAPF32[$45>>2]; + $47 = $44 + $46; + $48 = (($ch) + ($27<<2)|0); + HEAPF32[$48>>2] = $47; + $49 = +HEAPF32[$45>>2]; + $50 = $44 - $49; + $51 = (($ch) + ($25<<2)|0); + HEAPF32[$51>>2] = $50; + $52 = (($t5$08$us) + 1)|0; + $53 = (($cc) + ($52<<2)|0); + $54 = +HEAPF32[$53>>2]; + $55 = $54 + $41; + $56 = $t6$09$us | 1; + $57 = (($ch) + ($56<<2)|0); + HEAPF32[$57>>2] = $55; + $58 = +HEAPF32[$53>>2]; + $59 = $58 - $41; + $60 = (($t4$07$us) + -3)|0; + $61 = (($ch) + ($60<<2)|0); + HEAPF32[$61>>2] = $59; + $62 = (($i$05$us) + 2)|0; + $63 = ($62|0)<($ido|0); + if ($63) { + $i$05$us = $62;$t3$06$us = $24;$t4$07$us = $25;$t5$08$us = $26;$t6$09$us = $27; + } else { + break; + } + } + $21 = (($t1$112$us) + ($ido))|0; + $22 = (($t2$113$us) + ($ido))|0; + $23 = (($k$111$us) + 1)|0; + $exitcond24 = ($23|0)==($l1|0); + if ($exitcond24) { + break; + } else { + $k$111$us = $23;$t1$112$us = $21;$t2$113$us = $22; + } + } + } + $66 = (($ido|0) % 2)&-1; + $67 = ($66|0)==(1); + if ($67) { + return; + } + } + $68 = (($ido) + -1)|0; + if (!($2)) { + return; + } + $69 = (($0) + ($68))|0; + $k$21 = 0;$t1$22 = $ido;$t2$23 = $69;$t3$14 = $68; + while(1) { + $70 = (($cc) + ($t2$23<<2)|0); + $71 = +HEAPF32[$70>>2]; + $72 = -$71; + $73 = (($ch) + ($t1$22<<2)|0); + HEAPF32[$73>>2] = $72; + $74 = (($cc) + ($t3$14<<2)|0); + $75 = HEAP32[$74>>2]|0; + $76 = (($t1$22) + -1)|0; + $77 = (($ch) + ($76<<2)|0); + HEAP32[$77>>2] = $75; + $78 = (($t1$22) + ($1))|0; + $79 = (($t2$23) + ($ido))|0; + $80 = (($t3$14) + ($ido))|0; + $81 = (($k$21) + 1)|0; + $exitcond = ($81|0)==($l1|0); + if ($exitcond) { + break; + } else { + $k$21 = $81;$t1$22 = $78;$t2$23 = $79;$t3$14 = $80; + } + } + return; +} +function _dradfg($ido,$ip,$l1,$idl1,$cc,$c1,$c2,$ch,$ch2,$wa) { + $ido = $ido|0; + $ip = $ip|0; + $l1 = $l1|0; + $idl1 = $idl1|0; + $cc = $cc|0; + $c1 = $c1|0; + $c2 = $c2|0; + $ch = $ch|0; + $ch2 = $ch2|0; + $wa = $wa|0; + var $$not = 0, $$not241 = 0, $0 = 0.0, $1 = 0.0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0.0, $113 = 0; + var $114 = 0, $115 = 0.0, $116 = 0.0, $117 = 0, $118 = 0, $119 = 0.0, $12 = 0, $120 = 0, $121 = 0.0, $122 = 0.0, $123 = 0, $124 = 0.0, $125 = 0.0, $126 = 0.0, $127 = 0, $128 = 0.0, $129 = 0.0, $13 = 0, $130 = 0.0, $131 = 0; + var $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0.0, $143 = 0, $144 = 0, $145 = 0.0, $146 = 0.0, $147 = 0, $148 = 0, $149 = 0.0, $15 = 0; + var $150 = 0, $151 = 0.0, $152 = 0.0, $153 = 0, $154 = 0.0, $155 = 0.0, $156 = 0.0, $157 = 0, $158 = 0.0, $159 = 0.0, $16 = 0, $160 = 0.0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0; + var $169 = 0, $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0.0, $183 = 0, $184 = 0.0, $185 = 0.0, $186 = 0; + var $187 = 0.0, $188 = 0.0, $189 = 0.0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0.0, $199 = 0.0, $2 = 0, $20 = 0, $200 = 0.0, $201 = 0.0, $202 = 0.0, $203 = 0.0; + var $204 = 0, $205 = 0.0, $206 = 0, $207 = 0, $208 = 0.0, $209 = 0.0, $21 = 0, $210 = 0.0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0.0, $216 = 0.0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0; + var $222 = 0.0, $223 = 0.0, $224 = 0.0, $225 = 0.0, $226 = 0.0, $227 = 0.0, $228 = 0, $229 = 0, $23 = 0, $230 = 0.0, $231 = 0.0, $232 = 0, $233 = 0, $234 = 0.0, $235 = 0.0, $236 = 0, $237 = 0, $238 = 0.0, $239 = 0.0, $24 = 0; + var $240 = 0, $241 = 0, $242 = 0.0, $243 = 0.0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0.0, $251 = 0, $252 = 0.0, $253 = 0.0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0; + var $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0; + var $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0; + var $295 = 0, $296 = 0, $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0; + var $312 = 0.0, $313 = 0, $314 = 0, $315 = 0, $316 = 0.0, $317 = 0.0, $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0.0, $322 = 0.0, $323 = 0.0, $324 = 0, $325 = 0, $326 = 0, $327 = 0, $328 = 0.0, $329 = 0, $33 = 0; + var $330 = 0.0, $331 = 0.0, $332 = 0, $333 = 0.0, $334 = 0.0, $335 = 0.0, $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0, $346 = 0, $347 = 0, $348 = 0; + var $349 = 0.0, $35 = 0, $350 = 0, $351 = 0, $352 = 0.0, $353 = 0.0, $354 = 0, $355 = 0, $356 = 0.0, $357 = 0.0, $358 = 0.0, $359 = 0, $36 = 0, $360 = 0, $361 = 0, $362 = 0.0, $363 = 0, $364 = 0.0, $365 = 0.0, $366 = 0; + var $367 = 0.0, $368 = 0.0, $369 = 0.0, $37 = 0, $370 = 0, $371 = 0, $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0, $38 = 0, $380 = 0, $39 = 0.0, $4 = 0, $40 = 0, $41 = 0; + var $42 = 0.0, $43 = 0.0, $44 = 0, $45 = 0.0, $46 = 0, $47 = 0.0, $48 = 0.0, $49 = 0.0, $5 = 0, $50 = 0, $51 = 0.0, $52 = 0.0, $53 = 0.0, $54 = 0.0, $55 = 0.0, $56 = 0.0, $57 = 0.0, $58 = 0, $59 = 0, $6 = 0; + var $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0.0, $72 = 0, $73 = 0, $74 = 0.0, $75 = 0.0, $76 = 0.0, $77 = 0, $78 = 0.0; + var $79 = 0.0, $8 = 0, $80 = 0.0, $81 = 0, $82 = 0.0, $83 = 0.0, $84 = 0.0, $85 = 0.0, $86 = 0.0, $87 = 0.0, $88 = 0.0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0; + var $97 = 0, $98 = 0, $99 = 0, $ai1$0112 = 0.0, $ai2$0107 = 0.0, $ar1$0113 = 0.0, $ar2$0108 = 0.0, $brmerge = 0, $cosf = 0.0, $exitcond = 0, $exitcond204 = 0, $exitcond206 = 0, $exitcond207 = 0, $exitcond208 = 0, $exitcond209 = 0, $exitcond210 = 0, $exitcond211 = 0, $exitcond212 = 0, $exitcond214 = 0, $exitcond215 = 0; + var $exitcond216 = 0, $exitcond217 = 0, $exitcond218 = 0, $exitcond219 = 0, $exitcond220 = 0, $exitcond221 = 0, $exitcond222 = 0, $exitcond223 = 0, $exitcond225 = 0, $exitcond226 = 0, $exitcond227 = 0, $exitcond228 = 0, $exitcond229 = 0, $exitcond230 = 0, $exitcond231 = 0, $exitcond232 = 0, $exitcond233 = 0, $exitcond234 = 0, $exitcond235 = 0, $i$0164 = 0; + var $i$1184 = 0, $i$2142 = 0, $i$3152 = 0, $i$475 = 0, $i$572 = 0, $i$638$us = 0, $i$728$us = 0, $idij$0165 = 0, $idij$1185 = 0, $ik$0202 = 0, $ik$1131 = 0, $ik$294 = 0, $ik$3101 = 0, $ik$482 = 0, $is$0175 = 0, $is$1190 = 0, $j$0199 = 0, $j$1036 = 0, $j$1176 = 0, $j$2191 = 0; + var $j$3148 = 0, $j$4161 = 0, $j$5127 = 0, $j$6109 = 0, $j$787 = 0, $j$863 = 0, $j$951 = 0, $k$0194 = 0, $k$1027$us = 0, $k$1170 = 0, $k$2179 = 0, $k$3136 = 0, $k$4157 = 0, $k$5121 = 0, $k$680 = 0, $k$769 = 0, $k$856 = 0, $k$945$us = 0, $l$0116 = 0, $sinf = 0.0; + var $t1$0198 = 0, $t1$1062 = 0, $t1$1150 = 0, $t1$1174 = 0, $t1$1235 = 0, $t1$2189 = 0, $t1$3147 = 0, $t1$4160 = 0, $t1$5126 = 0, $t1$6115 = 0, $t1$786 = 0, $t1$879 = 0, $t1$968 = 0, $t2$0193 = 0, $t2$1169 = 0, $t2$2183 = 0, $t2$3146 = 0, $t2$4159 = 0, $t2$5125 = 0, $t2$6114 = 0; + var $t2$781 = 0, $t2$878 = 0, $t2$967 = 0, $t3$0163 = 0, $t3$1178 = 0, $t3$2141 = 0, $t3$3156 = 0, $t3$4120 = 0, $t3$574 = 0, $t3$661 = 0, $t3$749 = 0, $t3$834 = 0, $t4$0140 = 0, $t4$1155 = 0, $t4$2119 = 0, $t4$393 = 0, $t4$4106 = 0, $t4$573 = 0, $t4$660 = 0, $t4$748 = 0; + var $t4$833 = 0, $t5$0134 = 0, $t5$1150 = 0, $t5$290 = 0, $t5$3105 = 0, $t5$453 = 0, $t5$547 = 0, $t5$632 = 0, $t6$0135 = 0, $t6$1151 = 0, $t6$291 = 0, $t6$397 = 0, $t6$454 = 0, $t6$541$us = 0, $t6$623$us = 0, $t7$092 = 0, $t7$198 = 0, $t7$255 = 0, $t7$342$us = 0, $t7$424$us = 0; + var $t8$099 = 0, $t8$143$us = 0, $t8$225$us = 0, $t9$0100 = 0, $t9$144$us = 0, $t9$226$us = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = (+($ip|0)); + $1 = 6.2831854820251465 / $0; + $cosf = (+Math_cos((+$1))); + $sinf = (+Math_sin((+$1))); + $2 = (($ip) + 1)|0; + $3 = $2 >> 1; + $4 = (($ido) + -1)|0; + $5 = $4 >> 1; + $6 = Math_imul($l1, $ido)|0; + $7 = Math_imul($ip, $ido)|0; + $8 = ($ido|0)==(1); + L1: do { + if (!($8)) { + $9 = ($idl1|0)>(0); + if ($9) { + $ik$0202 = 0; + while(1) { + $13 = (($c2) + ($ik$0202<<2)|0); + $14 = HEAP32[$13>>2]|0; + $15 = (($ch2) + ($ik$0202<<2)|0); + HEAP32[$15>>2] = $14; + $16 = (($ik$0202) + 1)|0; + $exitcond235 = ($16|0)==($idl1|0); + if ($exitcond235) { + break; + } else { + $ik$0202 = $16; + } + } + } + $11 = ($ip|0)>(1); + if ($11) { + $12 = ($l1|0)>(0); + $j$0199 = 1;$t1$0198 = 0; + while(1) { + $17 = (($t1$0198) + ($6))|0; + if ($12) { + $k$0194 = 0;$t2$0193 = $17; + while(1) { + $18 = (($c1) + ($t2$0193<<2)|0); + $19 = HEAP32[$18>>2]|0; + $20 = (($ch) + ($t2$0193<<2)|0); + HEAP32[$20>>2] = $19; + $21 = (($t2$0193) + ($ido))|0; + $22 = (($k$0194) + 1)|0; + $exitcond233 = ($22|0)==($l1|0); + if ($exitcond233) { + break; + } else { + $k$0194 = $22;$t2$0193 = $21; + } + } + } + $23 = (($j$0199) + 1)|0; + $exitcond234 = ($23|0)==($ip|0); + if ($exitcond234) { + break; + } else { + $j$0199 = $23;$t1$0198 = $17; + } + } + } + $24 = (0 - ($ido))|0; + $25 = ($5|0)>($l1|0); + if ($25) { + if ($11) { + $28 = ($l1|0)>(0); + $29 = ($ido|0)>(2); + $is$0175 = $24;$j$1176 = 1;$t1$1174 = 0; + while(1) { + $30 = (($t1$1174) + ($6))|0; + $31 = (($is$0175) + ($ido))|0; + if ($28) { + $32 = (($30) - ($ido))|0; + $33 = (($31) + -1)|0; + $k$1170 = 0;$t2$1169 = $32; + while(1) { + $34 = (($t2$1169) + ($ido))|0; + if ($29) { + $i$0164 = 2;$idij$0165 = $33;$t3$0163 = $34; + while(1) { + $35 = (($idij$0165) + 2)|0; + $36 = (($t3$0163) + 2)|0; + $37 = (($idij$0165) + 1)|0; + $38 = (($wa) + ($37<<2)|0); + $39 = +HEAPF32[$38>>2]; + $40 = (($t3$0163) + 1)|0; + $41 = (($c1) + ($40<<2)|0); + $42 = +HEAPF32[$41>>2]; + $43 = $42 * $39; + $44 = (($wa) + ($35<<2)|0); + $45 = +HEAPF32[$44>>2]; + $46 = (($c1) + ($36<<2)|0); + $47 = +HEAPF32[$46>>2]; + $48 = $47 * $45; + $49 = $48 + $43; + $50 = (($ch) + ($40<<2)|0); + HEAPF32[$50>>2] = $49; + $51 = +HEAPF32[$38>>2]; + $52 = +HEAPF32[$46>>2]; + $53 = $52 * $51; + $54 = +HEAPF32[$44>>2]; + $55 = +HEAPF32[$41>>2]; + $56 = $55 * $54; + $57 = $53 - $56; + $58 = (($ch) + ($36<<2)|0); + HEAPF32[$58>>2] = $57; + $59 = (($i$0164) + 2)|0; + $60 = ($59|0)<($ido|0); + if ($60) { + $i$0164 = $59;$idij$0165 = $35;$t3$0163 = $36; + } else { + break; + } + } + } + $61 = (($k$1170) + 1)|0; + $exitcond229 = ($61|0)==($l1|0); + if ($exitcond229) { + break; + } else { + $k$1170 = $61;$t2$1169 = $34; + } + } + } + $62 = (($j$1176) + 1)|0; + $exitcond230 = ($62|0)==($ip|0); + if ($exitcond230) { + break; + } else { + $is$0175 = $31;$j$1176 = $62;$t1$1174 = $30; + } + } + } + } else { + if ($11) { + $26 = ($ido|0)>(2); + $27 = ($l1|0)>(0); + $is$1190 = $24;$j$2191 = 1;$t1$2189 = 0; + while(1) { + $63 = (($is$1190) + ($ido))|0; + $64 = (($t1$2189) + ($6))|0; + if ($26) { + $65 = (($63) + -1)|0; + $i$1184 = 2;$idij$1185 = $65;$t2$2183 = $64; + while(1) { + $66 = (($idij$1185) + 2)|0; + $67 = (($t2$2183) + 2)|0; + if ($27) { + $68 = (($idij$1185) + 1)|0; + $69 = (($wa) + ($68<<2)|0); + $70 = (($wa) + ($66<<2)|0); + $k$2179 = 0;$t3$1178 = $67; + while(1) { + $71 = +HEAPF32[$69>>2]; + $72 = (($t3$1178) + -1)|0; + $73 = (($c1) + ($72<<2)|0); + $74 = +HEAPF32[$73>>2]; + $75 = $74 * $71; + $76 = +HEAPF32[$70>>2]; + $77 = (($c1) + ($t3$1178<<2)|0); + $78 = +HEAPF32[$77>>2]; + $79 = $78 * $76; + $80 = $79 + $75; + $81 = (($ch) + ($72<<2)|0); + HEAPF32[$81>>2] = $80; + $82 = +HEAPF32[$69>>2]; + $83 = +HEAPF32[$77>>2]; + $84 = $83 * $82; + $85 = +HEAPF32[$70>>2]; + $86 = +HEAPF32[$73>>2]; + $87 = $86 * $85; + $88 = $84 - $87; + $89 = (($ch) + ($t3$1178<<2)|0); + HEAPF32[$89>>2] = $88; + $90 = (($t3$1178) + ($ido))|0; + $91 = (($k$2179) + 1)|0; + $exitcond231 = ($91|0)==($l1|0); + if ($exitcond231) { + break; + } else { + $k$2179 = $91;$t3$1178 = $90; + } + } + } + $92 = (($i$1184) + 2)|0; + $93 = ($92|0)<($ido|0); + if ($93) { + $i$1184 = $92;$idij$1185 = $66;$t2$2183 = $67; + } else { + break; + } + } + } + $94 = (($j$2191) + 1)|0; + $exitcond232 = ($94|0)==($ip|0); + if ($exitcond232) { + break; + } else { + $is$1190 = $63;$j$2191 = $94;$t1$2189 = $64; + } + } + } + } + $95 = Math_imul($6, $ip)|0; + $96 = ($5|0)<($l1|0); + $97 = ($3|0)>(1); + if (!($96)) { + if (!($97)) { + break; + } + $98 = ($l1|0)>(0); + $99 = ($ido|0)>(2); + $j$4161 = 1;$t1$4160 = 0;$t2$4159 = $95; + while(1) { + $136 = (($t1$4160) + ($6))|0; + $137 = (($t2$4159) - ($6))|0; + if ($98) { + $k$4157 = 0;$t3$3156 = $136;$t4$1155 = $137; + while(1) { + if ($99) { + $i$3152 = 2;$t5$1150 = $t3$3156;$t6$1151 = $t4$1155; + while(1) { + $138 = (($t5$1150) + 2)|0; + $139 = (($t6$1151) + 2)|0; + $140 = (($t5$1150) + 1)|0; + $141 = (($ch) + ($140<<2)|0); + $142 = +HEAPF32[$141>>2]; + $143 = (($t6$1151) + 1)|0; + $144 = (($ch) + ($143<<2)|0); + $145 = +HEAPF32[$144>>2]; + $146 = $145 + $142; + $147 = (($c1) + ($140<<2)|0); + HEAPF32[$147>>2] = $146; + $148 = (($ch) + ($138<<2)|0); + $149 = +HEAPF32[$148>>2]; + $150 = (($ch) + ($139<<2)|0); + $151 = +HEAPF32[$150>>2]; + $152 = $149 - $151; + $153 = (($c1) + ($143<<2)|0); + HEAPF32[$153>>2] = $152; + $154 = +HEAPF32[$148>>2]; + $155 = +HEAPF32[$150>>2]; + $156 = $155 + $154; + $157 = (($c1) + ($138<<2)|0); + HEAPF32[$157>>2] = $156; + $158 = +HEAPF32[$144>>2]; + $159 = +HEAPF32[$141>>2]; + $160 = $158 - $159; + $161 = (($c1) + ($139<<2)|0); + HEAPF32[$161>>2] = $160; + $162 = (($i$3152) + 2)|0; + $163 = ($162|0)<($ido|0); + if ($163) { + $i$3152 = $162;$t5$1150 = $138;$t6$1151 = $139; + } else { + break; + } + } + } + $164 = (($t3$3156) + ($ido))|0; + $165 = (($t4$1155) + ($ido))|0; + $166 = (($k$4157) + 1)|0; + $exitcond227 = ($166|0)==($l1|0); + if ($exitcond227) { + break; + } else { + $k$4157 = $166;$t3$3156 = $164;$t4$1155 = $165; + } + } + } + $167 = (($j$4161) + 1)|0; + $exitcond228 = ($167|0)==($3|0); + if ($exitcond228) { + break L1; + } else { + $j$4161 = $167;$t1$4160 = $136;$t2$4159 = $137; + } + } + } + if ($97) { + $100 = ($ido|0)>(2); + $101 = ($l1|0)>(0); + $j$3148 = 1;$t1$3147 = 0;$t2$3146 = $95; + while(1) { + $102 = (($t1$3147) + ($6))|0; + $103 = (($t2$3146) - ($6))|0; + if ($100) { + $i$2142 = 2;$t3$2141 = $102;$t4$0140 = $103; + while(1) { + $104 = (($t3$2141) + 2)|0; + $105 = (($t4$0140) + 2)|0; + if ($101) { + $106 = (($105) - ($ido))|0; + $107 = (($104) - ($ido))|0; + $k$3136 = 0;$t5$0134 = $107;$t6$0135 = $106; + while(1) { + $108 = (($t5$0134) + ($ido))|0; + $109 = (($t6$0135) + ($ido))|0; + $110 = (($108) + -1)|0; + $111 = (($ch) + ($110<<2)|0); + $112 = +HEAPF32[$111>>2]; + $113 = (($109) + -1)|0; + $114 = (($ch) + ($113<<2)|0); + $115 = +HEAPF32[$114>>2]; + $116 = $115 + $112; + $117 = (($c1) + ($110<<2)|0); + HEAPF32[$117>>2] = $116; + $118 = (($ch) + ($108<<2)|0); + $119 = +HEAPF32[$118>>2]; + $120 = (($ch) + ($109<<2)|0); + $121 = +HEAPF32[$120>>2]; + $122 = $119 - $121; + $123 = (($c1) + ($113<<2)|0); + HEAPF32[$123>>2] = $122; + $124 = +HEAPF32[$118>>2]; + $125 = +HEAPF32[$120>>2]; + $126 = $125 + $124; + $127 = (($c1) + ($108<<2)|0); + HEAPF32[$127>>2] = $126; + $128 = +HEAPF32[$114>>2]; + $129 = +HEAPF32[$111>>2]; + $130 = $128 - $129; + $131 = (($c1) + ($109<<2)|0); + HEAPF32[$131>>2] = $130; + $132 = (($k$3136) + 1)|0; + $exitcond225 = ($132|0)==($l1|0); + if ($exitcond225) { + break; + } else { + $k$3136 = $132;$t5$0134 = $108;$t6$0135 = $109; + } + } + } + $133 = (($i$2142) + 2)|0; + $134 = ($133|0)<($ido|0); + if ($134) { + $i$2142 = $133;$t3$2141 = $104;$t4$0140 = $105; + } else { + break; + } + } + } + $135 = (($j$3148) + 1)|0; + $exitcond226 = ($135|0)==($3|0); + if ($exitcond226) { + break; + } else { + $j$3148 = $135;$t1$3147 = $102;$t2$3146 = $103; + } + } + } + } + } while(0); + $10 = ($idl1|0)>(0); + if ($10) { + $ik$1131 = 0; + while(1) { + $168 = (($ch2) + ($ik$1131<<2)|0); + $169 = HEAP32[$168>>2]|0; + $170 = (($c2) + ($ik$1131<<2)|0); + HEAP32[$170>>2] = $169; + $171 = (($ik$1131) + 1)|0; + $exitcond223 = ($171|0)==($idl1|0); + if ($exitcond223) { + break; + } else { + $ik$1131 = $171; + } + } + } + $172 = Math_imul($idl1, $ip)|0; + $173 = ($3|0)>(1); + if ($173) { + $174 = ($l1|0)>(0); + $j$5127 = 1;$t1$5126 = 0;$t2$5125 = $172; + while(1) { + $175 = (($t1$5126) + ($6))|0; + $176 = (($t2$5125) - ($6))|0; + if ($174) { + $177 = (($176) - ($ido))|0; + $178 = (($175) - ($ido))|0; + $k$5121 = 0;$t3$4120 = $178;$t4$2119 = $177; + while(1) { + $179 = (($t3$4120) + ($ido))|0; + $180 = (($t4$2119) + ($ido))|0; + $181 = (($ch) + ($179<<2)|0); + $182 = +HEAPF32[$181>>2]; + $183 = (($ch) + ($180<<2)|0); + $184 = +HEAPF32[$183>>2]; + $185 = $184 + $182; + $186 = (($c1) + ($179<<2)|0); + HEAPF32[$186>>2] = $185; + $187 = +HEAPF32[$183>>2]; + $188 = +HEAPF32[$181>>2]; + $189 = $187 - $188; + $190 = (($c1) + ($180<<2)|0); + HEAPF32[$190>>2] = $189; + $191 = (($k$5121) + 1)|0; + $exitcond221 = ($191|0)==($l1|0); + if ($exitcond221) { + break; + } else { + $k$5121 = $191;$t3$4120 = $179;$t4$2119 = $180; + } + } + } + $192 = (($j$5127) + 1)|0; + $exitcond222 = ($192|0)==($3|0); + if ($exitcond222) { + break; + } else { + $j$5127 = $192;$t1$5126 = $175;$t2$5125 = $176; + } + } + $193 = (($ip) + -1)|0; + $194 = Math_imul($193, $idl1)|0; + if ($173) { + $195 = ($3|0)>(2); + $ai1$0112 = 0.0;$ar1$0113 = 1.0;$l$0116 = 1;$t1$6115 = 0;$t2$6114 = $172; + while(1) { + $196 = (($t1$6115) + ($idl1))|0; + $197 = (($t2$6114) - ($idl1))|0; + $198 = $ar1$0113 * $cosf; + $199 = $ai1$0112 * $sinf; + $200 = $198 - $199; + $201 = $ai1$0112 * $cosf; + $202 = $ar1$0113 * $sinf; + $203 = $202 + $201; + if ($10) { + $ik$294 = 0;$t4$393 = $196;$t5$290 = $197;$t6$291 = $194;$t7$092 = $idl1; + while(1) { + $204 = (($c2) + ($ik$294<<2)|0); + $205 = +HEAPF32[$204>>2]; + $206 = (($t7$092) + 1)|0; + $207 = (($c2) + ($t7$092<<2)|0); + $208 = +HEAPF32[$207>>2]; + $209 = $208 * $200; + $210 = $209 + $205; + $211 = (($t4$393) + 1)|0; + $212 = (($ch2) + ($t4$393<<2)|0); + HEAPF32[$212>>2] = $210; + $213 = (($t6$291) + 1)|0; + $214 = (($c2) + ($t6$291<<2)|0); + $215 = +HEAPF32[$214>>2]; + $216 = $215 * $203; + $217 = (($t5$290) + 1)|0; + $218 = (($ch2) + ($t5$290<<2)|0); + HEAPF32[$218>>2] = $216; + $219 = (($ik$294) + 1)|0; + $exitcond217 = ($219|0)==($idl1|0); + if ($exitcond217) { + break; + } else { + $ik$294 = $219;$t4$393 = $211;$t5$290 = $217;$t6$291 = $213;$t7$092 = $206; + } + } + } + if ($195) { + $ai2$0107 = $203;$ar2$0108 = $200;$j$6109 = 2;$t4$4106 = $idl1;$t5$3105 = $194; + while(1) { + $220 = (($t4$4106) + ($idl1))|0; + $221 = (($t5$3105) - ($idl1))|0; + $222 = $ar2$0108 * $200; + $223 = $ai2$0107 * $203; + $224 = $222 - $223; + $225 = $ai2$0107 * $200; + $226 = $ar2$0108 * $203; + $227 = $226 + $225; + if ($10) { + $ik$3101 = 0;$t6$397 = $196;$t7$198 = $197;$t8$099 = $220;$t9$0100 = $221; + while(1) { + $228 = (($t8$099) + 1)|0; + $229 = (($c2) + ($t8$099<<2)|0); + $230 = +HEAPF32[$229>>2]; + $231 = $230 * $224; + $232 = (($t6$397) + 1)|0; + $233 = (($ch2) + ($t6$397<<2)|0); + $234 = +HEAPF32[$233>>2]; + $235 = $234 + $231; + HEAPF32[$233>>2] = $235; + $236 = (($t9$0100) + 1)|0; + $237 = (($c2) + ($t9$0100<<2)|0); + $238 = +HEAPF32[$237>>2]; + $239 = $238 * $227; + $240 = (($t7$198) + 1)|0; + $241 = (($ch2) + ($t7$198<<2)|0); + $242 = +HEAPF32[$241>>2]; + $243 = $242 + $239; + HEAPF32[$241>>2] = $243; + $244 = (($ik$3101) + 1)|0; + $exitcond218 = ($244|0)==($idl1|0); + if ($exitcond218) { + break; + } else { + $ik$3101 = $244;$t6$397 = $232;$t7$198 = $240;$t8$099 = $228;$t9$0100 = $236; + } + } + } + $245 = (($j$6109) + 1)|0; + $exitcond219 = ($245|0)==($3|0); + if ($exitcond219) { + break; + } else { + $ai2$0107 = $227;$ar2$0108 = $224;$j$6109 = $245;$t4$4106 = $220;$t5$3105 = $221; + } + } + } + $246 = (($l$0116) + 1)|0; + $exitcond220 = ($246|0)==($3|0); + if ($exitcond220) { + break; + } else { + $ai1$0112 = $203;$ar1$0113 = $200;$l$0116 = $246;$t1$6115 = $196;$t2$6114 = $197; + } + } + if ($173) { + $j$787 = 1;$t1$786 = 0; + while(1) { + $247 = (($t1$786) + ($idl1))|0; + if ($10) { + $ik$482 = 0;$t2$781 = $247; + while(1) { + $248 = (($t2$781) + 1)|0; + $249 = (($c2) + ($t2$781<<2)|0); + $250 = +HEAPF32[$249>>2]; + $251 = (($ch2) + ($ik$482<<2)|0); + $252 = +HEAPF32[$251>>2]; + $253 = $252 + $250; + HEAPF32[$251>>2] = $253; + $254 = (($ik$482) + 1)|0; + $exitcond215 = ($254|0)==($idl1|0); + if ($exitcond215) { + break; + } else { + $ik$482 = $254;$t2$781 = $248; + } + } + } + $255 = (($j$787) + 1)|0; + $exitcond216 = ($255|0)==($3|0); + if ($exitcond216) { + break; + } else { + $j$787 = $255;$t1$786 = $247; + } + } + } + } + } + $256 = ($ido|0)<($l1|0); + if ($256) { + $259 = ($ido|0)>(0); + if ($259) { + $260 = ($l1|0)>(0); + $i$572 = 0; + while(1) { + if ($260) { + $k$769 = 0;$t1$968 = $i$572;$t2$967 = $i$572; + while(1) { + $270 = (($ch) + ($t1$968<<2)|0); + $271 = HEAP32[$270>>2]|0; + $272 = (($cc) + ($t2$967<<2)|0); + HEAP32[$272>>2] = $271; + $273 = (($t1$968) + ($ido))|0; + $274 = (($t2$967) + ($7))|0; + $275 = (($k$769) + 1)|0; + $exitcond210 = ($275|0)==($l1|0); + if ($exitcond210) { + break; + } else { + $k$769 = $275;$t1$968 = $273;$t2$967 = $274; + } + } + } + $276 = (($i$572) + 1)|0; + $exitcond211 = ($276|0)==($ido|0); + if ($exitcond211) { + break; + } else { + $i$572 = $276; + } + } + } + } else { + $257 = ($l1|0)>(0); + if ($257) { + $258 = ($ido|0)>(0); + $k$680 = 0;$t1$879 = 0;$t2$878 = 0; + while(1) { + if ($258) { + $i$475 = 0;$t3$574 = $t1$879;$t4$573 = $t2$878; + while(1) { + $261 = (($t3$574) + 1)|0; + $262 = (($ch) + ($t3$574<<2)|0); + $263 = HEAP32[$262>>2]|0; + $264 = (($t4$573) + 1)|0; + $265 = (($cc) + ($t4$573<<2)|0); + HEAP32[$265>>2] = $263; + $266 = (($i$475) + 1)|0; + $exitcond212 = ($266|0)==($ido|0); + if ($exitcond212) { + break; + } else { + $i$475 = $266;$t3$574 = $261;$t4$573 = $264; + } + } + } + $267 = (($t1$879) + ($ido))|0; + $268 = (($t2$878) + ($7))|0; + $269 = (($k$680) + 1)|0; + $exitcond214 = ($269|0)==($l1|0); + if ($exitcond214) { + break; + } else { + $k$680 = $269;$t1$879 = $267;$t2$878 = $268; + } + } + } + } + $277 = $ido << 1; + $278 = Math_imul($6, $ip)|0; + if ($173) { + $279 = ($l1|0)>(0); + $j$863 = 1;$t1$1062 = 0;$t3$661 = 0;$t4$660 = $278; + while(1) { + $280 = (($t1$1062) + ($277))|0; + $281 = (($t3$661) + ($6))|0; + $282 = (($t4$660) - ($6))|0; + if ($279) { + $k$856 = 0;$t5$453 = $280;$t6$454 = $281;$t7$255 = $282; + while(1) { + $283 = (($ch) + ($t6$454<<2)|0); + $284 = HEAP32[$283>>2]|0; + $285 = (($t5$453) + -1)|0; + $286 = (($cc) + ($285<<2)|0); + HEAP32[$286>>2] = $284; + $287 = (($ch) + ($t7$255<<2)|0); + $288 = HEAP32[$287>>2]|0; + $289 = (($cc) + ($t5$453<<2)|0); + HEAP32[$289>>2] = $288; + $290 = (($t5$453) + ($7))|0; + $291 = (($t6$454) + ($ido))|0; + $292 = (($t7$255) + ($ido))|0; + $293 = (($k$856) + 1)|0; + $exitcond208 = ($293|0)==($l1|0); + if ($exitcond208) { + break; + } else { + $k$856 = $293;$t5$453 = $290;$t6$454 = $291;$t7$255 = $292; + } + } + } + $294 = (($j$863) + 1)|0; + $exitcond209 = ($294|0)==($3|0); + if ($exitcond209) { + break; + } else { + $j$863 = $294;$t1$1062 = $280;$t3$661 = $281;$t4$660 = $282; + } + } + } + if ($8) { + return; + } + $295 = ($5|0)<($l1|0); + $296 = (0 - ($ido))|0; + if (!($295)) { + if (!($173)) { + return; + } + $$not = ($l1|0)<(1); + $$not241 = ($ido|0)<(3); + $brmerge = $$not | $$not241; + $j$951 = 1;$t1$1150 = $296;$t3$749 = 0;$t4$748 = 0;$t5$547 = $278; + while(1) { + $299 = (($t1$1150) + ($277))|0; + $300 = (($t3$749) + ($277))|0; + $301 = (($t4$748) + ($6))|0; + $302 = (($t5$547) - ($6))|0; + if (!($brmerge)) { + $k$945$us = 0;$t6$541$us = $299;$t7$342$us = $300;$t8$143$us = $301;$t9$144$us = $302; + while(1) { + $i$638$us = 2; + while(1) { + $308 = (($ido) - ($i$638$us))|0; + $309 = (($i$638$us) + ($t8$143$us))|0; + $310 = (($309) + -1)|0; + $311 = (($ch) + ($310<<2)|0); + $312 = +HEAPF32[$311>>2]; + $313 = (($i$638$us) + ($t9$144$us))|0; + $314 = (($313) + -1)|0; + $315 = (($ch) + ($314<<2)|0); + $316 = +HEAPF32[$315>>2]; + $317 = $316 + $312; + $318 = (($i$638$us) + ($t7$342$us))|0; + $319 = (($318) + -1)|0; + $320 = (($cc) + ($319<<2)|0); + HEAPF32[$320>>2] = $317; + $321 = +HEAPF32[$311>>2]; + $322 = +HEAPF32[$315>>2]; + $323 = $321 - $322; + $324 = (($308) + ($t6$541$us))|0; + $325 = (($324) + -1)|0; + $326 = (($cc) + ($325<<2)|0); + HEAPF32[$326>>2] = $323; + $327 = (($ch) + ($309<<2)|0); + $328 = +HEAPF32[$327>>2]; + $329 = (($ch) + ($313<<2)|0); + $330 = +HEAPF32[$329>>2]; + $331 = $330 + $328; + $332 = (($cc) + ($318<<2)|0); + HEAPF32[$332>>2] = $331; + $333 = +HEAPF32[$329>>2]; + $334 = +HEAPF32[$327>>2]; + $335 = $333 - $334; + $336 = (($cc) + ($324<<2)|0); + HEAPF32[$336>>2] = $335; + $337 = (($i$638$us) + 2)|0; + $338 = ($337|0)<($ido|0); + if ($338) { + $i$638$us = $337; + } else { + break; + } + } + $303 = (($t6$541$us) + ($7))|0; + $304 = (($t7$342$us) + ($7))|0; + $305 = (($t8$143$us) + ($ido))|0; + $306 = (($t9$144$us) + ($ido))|0; + $307 = (($k$945$us) + 1)|0; + $exitcond206 = ($307|0)==($l1|0); + if ($exitcond206) { + break; + } else { + $k$945$us = $307;$t6$541$us = $303;$t7$342$us = $304;$t8$143$us = $305;$t9$144$us = $306; + } + } + } + $339 = (($j$951) + 1)|0; + $exitcond207 = ($339|0)==($3|0); + if ($exitcond207) { + break; + } else { + $j$951 = $339;$t1$1150 = $299;$t3$749 = $300;$t4$748 = $301;$t5$547 = $302; + } + } + return; + } + if (!($173)) { + return; + } + $297 = ($ido|0)>(2); + $298 = ($l1|0)>(0); + $j$1036 = 1;$t1$1235 = $296;$t3$834 = 0;$t4$833 = 0;$t5$632 = $278; + while(1) { + $340 = (($t1$1235) + ($277))|0; + $341 = (($t3$834) + ($277))|0; + $342 = (($t4$833) + ($6))|0; + $343 = (($t5$632) - ($6))|0; + if ($297) { + $344 = (($340) + ($ido))|0; + if ($298) { + $i$728$us = 2; + while(1) { + $376 = (($i$728$us) + ($343))|0; + $377 = (($i$728$us) + ($342))|0; + $378 = (($i$728$us) + ($341))|0; + $379 = (($344) - ($i$728$us))|0; + $k$1027$us = 0;$t6$623$us = $379;$t7$424$us = $378;$t8$225$us = $377;$t9$226$us = $376; + while(1) { + $347 = (($t8$225$us) + -1)|0; + $348 = (($ch) + ($347<<2)|0); + $349 = +HEAPF32[$348>>2]; + $350 = (($t9$226$us) + -1)|0; + $351 = (($ch) + ($350<<2)|0); + $352 = +HEAPF32[$351>>2]; + $353 = $352 + $349; + $354 = (($t7$424$us) + -1)|0; + $355 = (($cc) + ($354<<2)|0); + HEAPF32[$355>>2] = $353; + $356 = +HEAPF32[$348>>2]; + $357 = +HEAPF32[$351>>2]; + $358 = $356 - $357; + $359 = (($t6$623$us) + -1)|0; + $360 = (($cc) + ($359<<2)|0); + HEAPF32[$360>>2] = $358; + $361 = (($ch) + ($t8$225$us<<2)|0); + $362 = +HEAPF32[$361>>2]; + $363 = (($ch) + ($t9$226$us<<2)|0); + $364 = +HEAPF32[$363>>2]; + $365 = $364 + $362; + $366 = (($cc) + ($t7$424$us<<2)|0); + HEAPF32[$366>>2] = $365; + $367 = +HEAPF32[$363>>2]; + $368 = +HEAPF32[$361>>2]; + $369 = $367 - $368; + $370 = (($cc) + ($t6$623$us<<2)|0); + HEAPF32[$370>>2] = $369; + $371 = (($t6$623$us) + ($7))|0; + $372 = (($t7$424$us) + ($7))|0; + $373 = (($t8$225$us) + ($ido))|0; + $374 = (($t9$226$us) + ($ido))|0; + $375 = (($k$1027$us) + 1)|0; + $exitcond = ($375|0)==($l1|0); + if ($exitcond) { + break; + } else { + $k$1027$us = $375;$t6$623$us = $371;$t7$424$us = $372;$t8$225$us = $373;$t9$226$us = $374; + } + } + $345 = (($i$728$us) + 2)|0; + $346 = ($345|0)<($ido|0); + if ($346) { + $i$728$us = $345; + } else { + break; + } + } + } + } + $380 = (($j$1036) + 1)|0; + $exitcond204 = ($380|0)==($3|0); + if ($exitcond204) { + break; + } else { + $j$1036 = $380;$t1$1235 = $340;$t3$834 = $341;$t4$833 = $342;$t5$632 = $343; + } + } + return; +} +function _vorbis_encode_setup_init($vi) { + $vi = $vi|0; + var $$ = 0, $$$i = 0, $$$i17 = 0.0, $$$i21 = 0.0, $$$i27 = 0.0, $$$i33 = 0.0, $$$i6 = 0.0, $$0 = 0, $$0$i = 0, $$0$i$i$i = 0, $$0$i14$1$i$i = 0, $$0$i14$2$i$i = 0, $$0$i14$3$i$i = 0, $$0$i14$i$i = 0, $$0$i4$1$i$i = 0, $$0$i4$2$i$i = 0, $$0$i4$3$i$i = 0, $$0$i4$i$i = 0, $$0$i9$i$i = 0, $$2$i = 0; + var $$2$i18 = 0, $$2$i22 = 0, $$2$i28 = 0, $$2$i34 = 0, $$ch$2$i$i = 0, $$maxbook$0$i = 0, $$maxbook$2$i = 0, $$maxclass$0$i = 0, $$maxclass$0$i$lcssa = 0, $$pre = 0.0, $$pre$i = 0, $$pre$i$i = 0, $$pre$i8 = 0, $$pre$phi68$i$iZ2D = 0, $$pre11$i = 0, $$pre21$i = 0, $$pre63$i$i = 0, $$pre64$i$i = 0, $$pre65$i$i = 0, $$pre66$i$i = 0; + var $$pre67 = 0, $$pre67$i$i = 0, $$pre68 = 0, $$sink = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $1000 = 0, $1001 = 0, $1002 = 0, $1003 = 0, $1004 = 0, $1005 = 0, $1006 = 0, $1007 = 0, $1008 = 0, $1009 = 0, $101 = 0, $1010 = 0; + var $1011 = 0, $1012 = 0, $1013 = 0, $1014 = 0, $1015 = 0, $1016 = 0, $1017 = 0, $1018 = 0, $1019 = 0, $102 = 0, $1020 = 0, $1021 = 0, $1022 = 0, $1023 = 0, $1024 = 0, $1025 = 0, $1026 = 0, $1027 = 0.0, $1028 = 0.0, $1029 = 0.0; + var $103 = 0, $1030 = 0.0, $1031 = 0, $1032 = 0.0, $1033 = 0.0, $1034 = 0.0, $1035 = 0, $1036 = 0, $1037 = 0, $1038 = 0, $1039 = 0, $104 = 0, $1040 = 0, $1041 = 0, $1042 = 0.0, $1043 = 0.0, $1044 = 0, $1045 = 0.0, $1046 = 0.0, $1047 = 0.0; + var $1048 = 0, $1049 = 0, $105 = 0, $1050 = 0, $1051 = 0, $1052 = 0, $1053 = 0, $1054 = 0, $1055 = 0, $1056 = 0, $1057 = 0, $1058 = 0, $1059 = 0, $106 = 0.0, $1060 = 0, $1061 = 0, $1062 = 0, $1063 = 0, $1064 = 0, $1065 = 0; + var $1066 = 0, $1067 = 0, $1068 = 0, $1069 = 0, $107 = 0, $1070 = 0, $1071 = 0, $1072 = 0, $1073 = 0, $1074 = 0, $1075 = 0, $1076 = 0, $1077 = 0, $1078 = 0, $1079 = 0, $108 = 0, $1080 = 0, $1081 = 0, $1082 = 0, $1083 = 0; + var $1084 = 0, $1085 = 0, $1086 = 0, $1087 = 0, $1088 = 0, $1089 = 0, $109 = 0, $1090 = 0, $1091 = 0, $1092 = 0, $1093 = 0, $1094 = 0, $1095 = 0, $1096 = 0, $1097 = 0, $1098 = 0, $1099 = 0, $11 = 0.0, $110 = 0, $1100 = 0; + var $1101 = 0, $1102 = 0, $1103 = 0, $1104 = 0, $1105 = 0, $1106 = 0, $1107 = 0, $1108 = 0, $1109 = 0, $111 = 0, $1110 = 0, $1111 = 0, $1112 = 0, $1113 = 0, $1114 = 0, $1115 = 0, $1116 = 0, $1117 = 0, $1118 = 0, $1119 = 0; + var $112 = 0.0, $1120 = 0, $1121 = 0, $1122 = 0, $1123 = 0, $1124 = 0, $1125 = 0, $1126 = 0, $1127 = 0, $1128 = 0, $1129 = 0, $113 = 0.0, $1130 = 0, $1131 = 0, $1132 = 0, $1133 = 0, $1134 = 0, $1135 = 0, $1136 = 0, $1137 = 0; + var $1138 = 0, $1139 = 0, $114 = 0, $1140 = 0, $1141 = 0, $1142 = 0, $1143 = 0, $1144 = 0, $1145 = 0, $1146 = 0, $1147 = 0, $1148 = 0, $1149 = 0, $115 = 0, $1150 = 0, $1151 = 0, $1152 = 0, $1153 = 0, $1154 = 0, $1155 = 0; + var $1156 = 0, $1157 = 0, $1158 = 0, $1159 = 0, $116 = 0, $1160 = 0, $1161 = 0, $1162 = 0, $1163 = 0, $1164 = 0, $1165 = 0, $1166 = 0, $1167 = 0, $1168 = 0, $1169 = 0, $117 = 0.0, $1170 = 0, $1171 = 0, $1172 = 0, $1173 = 0; + var $1174 = 0, $1175 = 0, $1176 = 0, $1177 = 0, $1178 = 0, $1179 = 0, $118 = 0, $1180 = 0, $1181 = 0, $1182 = 0, $1183 = 0, $1184 = 0, $1185 = 0, $1186 = 0, $1187 = 0, $1188 = 0, $1189 = 0, $119 = 0, $1190 = 0, $1191 = 0; + var $1192 = 0.0, $1193 = 0, $1194 = 0.0, $1195 = 0.0, $1196 = 0, $1197 = 0, $1198 = 0, $1199 = 0, $12 = 0, $120 = 0.0, $1200 = 0, $1201 = 0.0, $1202 = 0.0, $1203 = 0.0, $1204 = 0, $1205 = 0, $1206 = 0.0, $1207 = 0.0, $1208 = 0.0, $1209 = 0.0; + var $121 = 0.0, $1210 = 0.0, $1211 = 0, $1212 = 0, $1213 = 0, $1214 = 0, $1215 = 0, $1216 = 0, $1217 = 0, $1218 = 0, $1219 = 0, $122 = 0.0, $1220 = 0, $1221 = 0.0, $1222 = 0.0, $1223 = 0.0, $1224 = 0, $1225 = 0, $1226 = 0, $1227 = 0; + var $1228 = 0, $1229 = 0, $123 = 0, $1230 = 0, $1231 = 0, $1232 = 0, $1233 = 0, $1234 = 0, $1235 = 0, $1236 = 0, $1237 = 0, $1238 = 0, $1239 = 0.0, $124 = 0, $1240 = 0, $1241 = 0, $1242 = 0.0, $1243 = 0, $1244 = 0, $125 = 0.0; + var $126 = 0.0, $127 = 0.0, $128 = 0, $129 = 0.0, $13 = 0, $130 = 0.0, $131 = 0, $132 = 0, $133 = 0, $134 = 0.0, $135 = 0, $136 = 0, $137 = 0.0, $138 = 0.0, $139 = 0.0, $14 = 0, $140 = 0, $141 = 0.0, $142 = 0.0, $143 = 0.0; + var $144 = 0.0, $145 = 0.0, $146 = 0, $147 = 0, $148 = 0.0, $149 = 0.0, $15 = 0, $150 = 0.0, $151 = 0, $152 = 0.0, $153 = 0.0, $154 = 0.0, $155 = 0.0, $156 = 0.0, $157 = 0, $158 = 0, $159 = 0.0, $16 = 0, $160 = 0.0, $161 = 0.0; + var $162 = 0, $163 = 0.0, $164 = 0.0, $165 = 0.0, $166 = 0.0, $167 = 0.0, $168 = 0, $169 = 0, $17 = 0, $170 = 0.0, $171 = 0.0, $172 = 0.0, $173 = 0, $174 = 0.0, $175 = 0.0, $176 = 0.0, $177 = 0.0, $178 = 0.0, $179 = 0, $18 = 0; + var $180 = 0, $181 = 0.0, $182 = 0.0, $183 = 0.0, $184 = 0, $185 = 0.0, $186 = 0.0, $187 = 0.0, $188 = 0.0, $189 = 0.0, $19 = 0.0, $190 = 0, $191 = 0, $192 = 0.0, $193 = 0.0, $194 = 0.0, $195 = 0, $196 = 0.0, $197 = 0.0, $198 = 0.0; + var $199 = 0.0, $2 = 0, $20 = 0, $200 = 0.0, $201 = 0, $202 = 0, $203 = 0.0, $204 = 0.0, $205 = 0.0, $206 = 0, $207 = 0.0, $208 = 0.0, $209 = 0.0, $21 = 0, $210 = 0.0, $211 = 0.0, $212 = 0, $213 = 0, $214 = 0.0, $215 = 0.0; + var $216 = 0.0, $217 = 0, $218 = 0.0, $219 = 0.0, $22 = 0, $220 = 0.0, $221 = 0.0, $222 = 0.0, $223 = 0, $224 = 0, $225 = 0.0, $226 = 0.0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0.0, $232 = 0.0, $233 = 0; + var $234 = 0.0, $235 = 0.0, $236 = 0.0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0; + var $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0; + var $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0.0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0.0, $284 = 0, $285 = 0.0, $286 = 0.0, $287 = 0.0, $288 = 0; + var $289 = 0.0, $29 = 0, $290 = 0.0, $291 = 0.0, $292 = 0.0, $293 = 0.0, $294 = 0.0, $295 = 0.0, $296 = 0.0, $297 = 0, $298 = 0.0, $299 = 0.0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0.0, $304 = 0.0, $305 = 0; + var $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0.0, $311 = 0.0, $312 = 0.0, $313 = 0, $314 = 0.0, $315 = 0.0, $316 = 0.0, $317 = 0.0, $318 = 0.0, $319 = 0.0, $32 = 0, $320 = 0.0, $321 = 0.0, $322 = 0, $323 = 0.0; + var $324 = 0.0, $325 = 0, $326 = 0, $327 = 0, $328 = 0.0, $329 = 0.0, $33 = 0, $330 = 0, $331 = 0, $332 = 0, $333 = 0, $334 = 0.0, $335 = 0.0, $336 = 0.0, $337 = 0.0, $338 = 0, $339 = 0, $34 = 0, $340 = 0.0, $341 = 0.0; + var $342 = 0.0, $343 = 0.0, $344 = 0.0, $345 = 0.0, $346 = 0.0, $347 = 0, $348 = 0, $349 = 0, $35 = 0, $350 = 0.0, $351 = 0.0, $352 = 0, $353 = 0.0, $354 = 0.0, $355 = 0, $356 = 0, $357 = 0, $358 = 0.0, $359 = 0.0, $36 = 0; + var $360 = 0, $361 = 0, $362 = 0, $363 = 0, $364 = 0, $365 = 0.0, $366 = 0.0, $367 = 0.0, $368 = 0, $369 = 0.0, $37 = 0, $370 = 0.0, $371 = 0.0, $372 = 0.0, $373 = 0.0, $374 = 0.0, $375 = 0.0, $376 = 0.0, $377 = 0, $378 = 0.0; + var $379 = 0.0, $38 = 0.0, $380 = 0, $381 = 0, $382 = 0, $383 = 0.0, $384 = 0.0, $385 = 0, $386 = 0, $387 = 0, $388 = 0.0, $389 = 0, $39 = 0, $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0; + var $397 = 0, $398 = 0, $399 = 0, $4 = 0, $40 = 0, $400 = 0, $401 = 0, $402 = 0, $403 = 0, $404 = 0, $405 = 0, $406 = 0, $407 = 0, $408 = 0, $409 = 0, $41 = 0, $410 = 0, $411 = 0, $412 = 0, $413 = 0; + var $414 = 0, $415 = 0.0, $416 = 0, $417 = 0.0, $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0, $422 = 0, $423 = 0, $424 = 0, $425 = 0, $426 = 0, $427 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0; + var $432 = 0, $433 = 0, $434 = 0, $435 = 0, $436 = 0, $437 = 0, $438 = 0, $439 = 0, $44 = 0, $440 = 0, $441 = 0.0, $442 = 0, $443 = 0.0, $444 = 0, $445 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $45 = 0; + var $450 = 0, $451 = 0, $452 = 0, $453 = 0, $454 = 0, $455 = 0, $456 = 0, $457 = 0, $458 = 0, $459 = 0, $46 = 0, $460 = 0, $461 = 0, $462 = 0, $463 = 0, $464 = 0, $465 = 0, $466 = 0, $467 = 0, $468 = 0; + var $469 = 0.0, $47 = 0, $470 = 0, $471 = 0.0, $472 = 0, $473 = 0, $474 = 0, $475 = 0, $476 = 0, $477 = 0, $478 = 0, $479 = 0, $48 = 0, $480 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $485 = 0, $486 = 0; + var $487 = 0, $488 = 0, $489 = 0, $49 = 0, $490 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0, $495 = 0.0, $496 = 0, $497 = 0, $498 = 0.0, $499 = 0, $5 = 0, $50 = 0, $500 = 0, $501 = 0, $502 = 0, $503 = 0; + var $504 = 0, $505 = 0, $506 = 0.0, $507 = 0, $508 = 0, $509 = 0, $51 = 0, $510 = 0, $511 = 0, $512 = 0.0, $513 = 0, $514 = 0, $515 = 0, $516 = 0, $517 = 0.0, $518 = 0, $519 = 0, $52 = 0, $520 = 0, $521 = 0; + var $522 = 0, $523 = 0.0, $524 = 0, $525 = 0, $526 = 0, $527 = 0, $528 = 0, $529 = 0.0, $53 = 0, $530 = 0.0, $531 = 0, $532 = 0, $533 = 0, $534 = 0, $535 = 0.0, $536 = 0.0, $537 = 0.0, $538 = 0, $539 = 0, $54 = 0; + var $540 = 0.0, $541 = 0.0, $542 = 0.0, $543 = 0, $544 = 0.0, $545 = 0.0, $546 = 0, $547 = 0, $548 = 0, $549 = 0.0, $55 = 0, $550 = 0, $551 = 0, $552 = 0, $553 = 0.0, $554 = 0.0, $555 = 0, $556 = 0, $557 = 0.0, $558 = 0.0; + var $559 = 0.0, $56 = 0, $560 = 0.0, $561 = 0, $562 = 0, $563 = 0, $564 = 0.0, $565 = 0, $566 = 0.0, $567 = 0.0, $568 = 0, $569 = 0, $57 = 0, $570 = 0, $571 = 0.0, $572 = 0.0, $573 = 0.0, $574 = 0, $575 = 0, $576 = 0.0; + var $577 = 0.0, $578 = 0.0, $579 = 0, $58 = 0, $580 = 0.0, $581 = 0.0, $582 = 0, $583 = 0, $584 = 0, $585 = 0.0, $586 = 0, $587 = 0, $588 = 0, $589 = 0.0, $59 = 0, $590 = 0.0, $591 = 0, $592 = 0, $593 = 0.0, $594 = 0.0; + var $595 = 0.0, $596 = 0.0, $597 = 0, $598 = 0, $599 = 0, $6 = 0, $60 = 0, $600 = 0.0, $601 = 0, $602 = 0, $603 = 0, $604 = 0.0, $605 = 0.0, $606 = 0, $607 = 0, $608 = 0, $609 = 0.0, $61 = 0, $610 = 0.0, $611 = 0.0; + var $612 = 0, $613 = 0, $614 = 0.0, $615 = 0.0, $616 = 0.0, $617 = 0, $618 = 0.0, $619 = 0.0, $62 = 0, $620 = 0, $621 = 0, $622 = 0, $623 = 0.0, $624 = 0, $625 = 0, $626 = 0, $627 = 0.0, $628 = 0.0, $629 = 0, $63 = 0; + var $630 = 0, $631 = 0.0, $632 = 0.0, $633 = 0.0, $634 = 0.0, $635 = 0, $636 = 0, $637 = 0, $638 = 0.0, $639 = 0, $64 = 0, $640 = 0.0, $641 = 0.0, $642 = 0, $643 = 0, $644 = 0, $645 = 0.0, $646 = 0.0, $647 = 0.0, $648 = 0; + var $649 = 0, $65 = 0, $650 = 0.0, $651 = 0.0, $652 = 0.0, $653 = 0, $654 = 0.0, $655 = 0.0, $656 = 0, $657 = 0, $658 = 0, $659 = 0.0, $66 = 0, $660 = 0, $661 = 0, $662 = 0, $663 = 0.0, $664 = 0.0, $665 = 0, $666 = 0; + var $667 = 0.0, $668 = 0.0, $669 = 0.0, $67 = 0, $670 = 0.0, $671 = 0, $672 = 0, $673 = 0, $674 = 0.0, $675 = 0, $676 = 0, $677 = 0, $678 = 0.0, $679 = 0.0, $68 = 0, $680 = 0, $681 = 0, $682 = 0.0, $683 = 0.0, $684 = 0.0; + var $685 = 0, $686 = 0, $687 = 0, $688 = 0.0, $689 = 0.0, $69 = 0, $690 = 0.0, $691 = 0.0, $692 = 0, $693 = 0, $694 = 0.0, $695 = 0, $696 = 0.0, $697 = 0.0, $698 = 0, $699 = 0, $7 = 0.0, $70 = 0, $700 = 0.0, $701 = 0.0; + var $702 = 0.0, $703 = 0, $704 = 0, $705 = 0, $706 = 0.0, $707 = 0.0, $708 = 0.0, $709 = 0.0, $71 = 0, $710 = 0, $711 = 0, $712 = 0.0, $713 = 0, $714 = 0.0, $715 = 0.0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $72 = 0; + var $720 = 0.0, $721 = 0.0, $722 = 0.0, $723 = 0, $724 = 0, $725 = 0, $726 = 0.0, $727 = 0.0, $728 = 0.0, $729 = 0.0, $73 = 0, $730 = 0, $731 = 0, $732 = 0.0, $733 = 0, $734 = 0.0, $735 = 0.0, $736 = 0, $737 = 0, $738 = 0; + var $739 = 0, $74 = 0, $740 = 0.0, $741 = 0.0, $742 = 0.0, $743 = 0, $744 = 0, $745 = 0, $746 = 0.0, $747 = 0.0, $748 = 0.0, $749 = 0.0, $75 = 0, $750 = 0, $751 = 0, $752 = 0.0, $753 = 0, $754 = 0, $755 = 0, $756 = 0; + var $757 = 0, $758 = 0, $759 = 0, $76 = 0, $760 = 0.0, $761 = 0.0, $762 = 0, $763 = 0.0, $764 = 0, $765 = 0, $766 = 0, $767 = 0, $768 = 0, $769 = 0.0, $77 = 0, $770 = 0, $771 = 0, $772 = 0, $773 = 0, $774 = 0; + var $775 = 0.0, $776 = 0, $777 = 0, $778 = 0, $779 = 0, $78 = 0, $780 = 0, $781 = 0, $782 = 0, $783 = 0, $784 = 0.0, $785 = 0.0, $786 = 0, $787 = 0, $788 = 0.0, $789 = 0.0, $79 = 0, $790 = 0, $791 = 0, $792 = 0; + var $793 = 0, $794 = 0, $795 = 0, $796 = 0, $797 = 0, $798 = 0, $799 = 0, $8 = 0, $80 = 0, $800 = 0, $801 = 0, $802 = 0, $803 = 0, $804 = 0, $805 = 0, $806 = 0, $807 = 0.0, $808 = 0.0, $809 = 0, $81 = 0; + var $810 = 0, $811 = 0.0, $812 = 0.0, $813 = 0, $814 = 0, $815 = 0, $816 = 0, $817 = 0, $818 = 0.0, $819 = 0, $82 = 0, $820 = 0, $821 = 0, $822 = 0, $823 = 0, $824 = 0, $825 = 0, $826 = 0, $827 = 0, $828 = 0; + var $829 = 0, $83 = 0, $830 = 0, $831 = 0, $832 = 0, $833 = 0, $834 = 0, $835 = 0, $836 = 0, $837 = 0, $838 = 0, $839 = 0, $84 = 0, $840 = 0, $841 = 0, $842 = 0, $843 = 0, $844 = 0, $845 = 0, $846 = 0; + var $847 = 0, $848 = 0, $849 = 0, $85 = 0, $850 = 0, $851 = 0, $852 = 0, $853 = 0, $854 = 0, $855 = 0, $856 = 0, $857 = 0, $858 = 0, $859 = 0, $86 = 0, $860 = 0, $861 = 0, $862 = 0, $863 = 0, $864 = 0; + var $865 = 0, $866 = 0, $867 = 0, $868 = 0, $869 = 0, $87 = 0, $870 = 0, $871 = 0, $872 = 0, $873 = 0, $874 = 0, $875 = 0, $876 = 0, $877 = 0, $878 = 0, $879 = 0, $88 = 0, $880 = 0, $881 = 0, $882 = 0; + var $883 = 0, $884 = 0, $885 = 0, $886 = 0, $887 = 0, $888 = 0, $889 = 0, $89 = 0, $890 = 0, $891 = 0, $892 = 0, $893 = 0, $894 = 0, $895 = 0, $896 = 0, $897 = 0, $898 = 0, $899 = 0, $9 = 0, $90 = 0; + var $900 = 0, $901 = 0, $902 = 0, $903 = 0, $904 = 0, $905 = 0, $906 = 0, $907 = 0, $908 = 0, $909 = 0, $91 = 0, $910 = 0, $911 = 0, $912 = 0, $913 = 0, $914 = 0, $915 = 0, $916 = 0, $917 = 0, $918 = 0; + var $919 = 0, $92 = 0, $920 = 0, $921 = 0, $922 = 0, $923 = 0, $924 = 0, $925 = 0, $926 = 0, $927 = 0, $928 = 0, $929 = 0, $93 = 0, $930 = 0, $931 = 0, $932 = 0, $933 = 0, $934 = 0, $935 = 0, $936 = 0; + var $937 = 0, $938 = 0, $939 = 0, $94 = 0, $940 = 0, $941 = 0, $942 = 0, $943 = 0, $944 = 0, $945 = 0, $946 = 0, $947 = 0, $948 = 0, $949 = 0, $95 = 0, $950 = 0, $951 = 0, $952 = 0, $953 = 0, $954 = 0; + var $955 = 0, $956 = 0, $957 = 0, $958 = 0, $959 = 0, $96 = 0, $960 = 0, $961 = 0, $962 = 0, $963 = 0, $964 = 0, $965 = 0, $966 = 0, $967 = 0, $968 = 0, $969 = 0, $97 = 0, $970 = 0, $971 = 0, $972 = 0; + var $973 = 0, $974 = 0, $975 = 0, $976 = 0, $977 = 0.0, $978 = 0.0, $979 = 0, $98 = 0, $980 = 0, $981 = 0, $982 = 0.0, $983 = 0.0, $984 = 0, $985 = 0, $986 = 0, $987 = 0, $988 = 0.0, $989 = 0.0, $99 = 0, $990 = 0.0; + var $991 = 0, $992 = 0, $993 = 0, $994 = 0, $995 = 0, $996 = 0, $997 = 0, $998 = 0, $999 = 0, $booklist$053$i$i = 0, $booklist$2$1$i$i = 0, $booklist$2$2$i$i = 0, $booklist$2$3$i$i = 0, $booklist$2$i$i = 0, $booklist$344$i$i = 0, $booklist$5$1$i$i = 0, $booklist$5$2$i$i = 0, $booklist$5$3$i$i = 0, $booklist$5$i$i = 0, $ch$0$lcssa$i$i = 0; + var $ch$1$lcssa$i$i = 0, $ch$231$i$i = 0, $ch$4$i$i = 0, $exitcond$i = 0, $exitcond$i19 = 0, $exitcond$i24 = 0, $exitcond$i30 = 0, $exitcond$i36 = 0, $exitcond$i4 = 0, $exitcond$i452 = 0, $exitcond$i9 = 0, $exitcond10$i = 0, $exitcond18$i = 0, $exitcond19$i = 0, $exitcond9$i = 0, $freq$0$i$i = 0.0, $freq$1$i$i = 0.0, $freq$1$in$i$i = 0.0, $freq$1$in$in$i$i = 0, $freq$1$in$in$in$i$i = 0; + var $freq$2$i$i = 0.0, $i$013$i = 0, $i$014$i = 0, $i$03$i = 0, $i$03$i23 = 0, $i$03$i29 = 0, $i$03$i35 = 0, $i$05$i$i$i = 0, $i$05$i1$1$i$i = 0, $i$05$i1$2$i$i = 0, $i$05$i1$3$i$i = 0, $i$05$i1$i$i = 0, $i$05$i11$1$i$i = 0, $i$05$i11$2$i$i = 0, $i$05$i11$3$i$i = 0, $i$05$i11$i$i = 0, $i$05$i6$i$i = 0, $i$054 = 0, $i$056$i$i = 0, $i$07$i = 0; + var $i$154$i$i = 0, $i$16$i = 0, $i$18$i = 0, $i$22$i53 = 0, $i$247$i$i = 0, $i$25$i = 0, $i$345$i$i = 0, $i$437$i$i = 0, $j$013$i = 0, $j$032$i$i = 0, $k$03$i = 0, $k2$030$i$i = 0, $maxbook$010$i = 0, $maxbook$2$lcssa$i = 0, $maxbook$2$lcssa$i$lcssa = 0, $maxbook$24$i = 0, $maxclass$014$i = 0, $or$cond$i = 0, $or$cond$i16 = 0, $or$cond$i20 = 0; + var $or$cond$i26 = 0, $or$cond$i32 = 0, $p$0$i = 0, $p$0$i10 = 0, $p$0$i12 = 0, $p$0$i14 = 0, $phitmp = 0, dest = 0, label = 0, sp = 0, src = 0, stop = 0; + sp = STACKTOP; + $0 = ((($vi)) + 28|0); + $1 = HEAP32[$0>>2]|0; + $2 = ($1|0)==(0|0); + if ($2) { + $$0 = -131; + return ($$0|0); + } + $3 = ((($1)) + 3456|0); + $4 = HEAP32[$3>>2]|0; + $5 = ($4|0)==(0); + $$ = $5&1; + $6 = ((($1)) + 3496|0); + $7 = +HEAPF64[$6>>3]; + $8 = $7 > -80.0; + if ($8) { + HEAPF64[$6>>3] = -80.0; + } else { + $9 = $7 < -200.0; + if ($9) { + HEAPF64[$6>>3] = -200.0; + } + } + $10 = ((($1)) + 3512|0); + $11 = +HEAPF64[$10>>3]; + $12 = $11 > 0.0; + if ($12) { + HEAPF64[$10>>3] = 0.0; + } else { + $13 = $11 < -99999.0; + if ($13) { + HEAPF64[$10>>3] = -99999.0; + } + } + $14 = ((($1)) + 3396|0); + $15 = HEAP32[$14>>2]|0; + $16 = ($15|0)==(0|0); + if ($16) { + $$0 = -131; + return ($$0|0); + } + $17 = ((($1)) + 3392|0); + HEAP32[$17>>2] = 1; + $18 = ((($1)) + 3400|0); + $19 = +HEAPF64[$18>>3]; + $20 = ((($15)) + 24|0); + $21 = HEAP32[$20>>2]|0; + $22 = ((($15)) + 28|0); + $23 = HEAP32[$22>>2]|0; + $24 = (~~(($19))); + $25 = (($21) + ($24<<2)|0); + $26 = HEAP32[$25>>2]|0; + $27 = (($23) + ($24<<2)|0); + $28 = HEAP32[$27>>2]|0; + HEAP32[$1>>2] = $26; + $29 = ((($1)) + 4|0); + HEAP32[$29>>2] = $28; + $30 = ($26|0)==($28|0); + $31 = ((($15)) + 144|0); + $32 = HEAP32[$31>>2]|0; + $33 = ($32|0)>(0); + if ($33) { + $34 = ((($15)) + 136|0); + $35 = ((($15)) + 140|0); + $36 = ((($15)) + 148|0); + $38 = $19;$54 = $1;$i$054 = 0; + while(1) { + $37 = (~~(($38))); + $39 = HEAP32[$34>>2]|0; + $40 = HEAP32[$35>>2]|0; + $41 = HEAP32[$36>>2]|0; + $42 = (($41) + ($i$054<<2)|0); + $43 = HEAP32[$42>>2]|0; + $44 = (_calloc(1,1120)|0); + $45 = (($43) + ($37<<2)|0); + $46 = HEAP32[$45>>2]|0; + $47 = (($40) + (($46*1120)|0)|0); + _memcpy(($44|0),($47|0),1120)|0; + $48 = HEAP32[$44>>2]|0; + $49 = ($48|0)>(0); + if ($49) { + $50 = ((($44)) + 4|0); + $i$013$i = 0;$maxclass$014$i = -1; + while(1) { + $57 = (($50) + ($i$013$i<<2)|0); + $58 = HEAP32[$57>>2]|0; + $59 = ($58|0)>($maxclass$014$i|0); + $$maxclass$0$i = $59 ? $58 : $maxclass$014$i; + $60 = (($i$013$i) + 1)|0; + $exitcond19$i = ($60|0)==($48|0); + if ($exitcond19$i) { + $$maxclass$0$i$lcssa = $$maxclass$0$i; + break; + } else { + $i$013$i = $60;$maxclass$014$i = $$maxclass$0$i; + } + } + $51 = ($$maxclass$0$i$lcssa|0)<(0); + if (!($51)) { + $52 = ((($44)) + 256|0); + $53 = ((($54)) + 24|0); + $55 = ((($44)) + 192|0); + $56 = ((($44)) + 320|0); + $i$18$i = 0;$maxbook$010$i = -1; + while(1) { + $68 = (($52) + ($i$18$i<<2)|0); + $69 = HEAP32[$68>>2]|0; + $70 = ($69|0)>($maxbook$010$i|0); + $$maxbook$0$i = $70 ? $69 : $maxbook$010$i; + $71 = HEAP32[$53>>2]|0; + $72 = (($71) + ($69))|0; + HEAP32[$68>>2] = $72; + $73 = (($55) + ($i$18$i<<2)|0); + $74 = HEAP32[$73>>2]|0; + $75 = ($74|0)==(31); + if ($75) { + $maxbook$2$lcssa$i = $$maxbook$0$i; + } else { + $1244 = $74;$k$03$i = 0;$maxbook$24$i = $$maxbook$0$i; + while(1) { + $76 = ((($56) + ($i$18$i<<5)|0) + ($k$03$i<<2)|0); + $77 = HEAP32[$76>>2]|0; + $78 = ($77|0)>($maxbook$24$i|0); + $$maxbook$2$i = $78 ? $77 : $maxbook$24$i; + $79 = ($77|0)>(-1); + if ($79) { + $80 = HEAP32[$53>>2]|0; + $81 = (($80) + ($77))|0; + HEAP32[$76>>2] = $81; + $$pre$i = HEAP32[$73>>2]|0; + $84 = $$pre$i; + } else { + $84 = $1244; + } + $82 = (($k$03$i) + 1)|0; + $83 = 1 << $84; + $85 = ($82|0)<($83|0); + if ($85) { + $1244 = $84;$k$03$i = $82;$maxbook$24$i = $$maxbook$2$i; + } else { + $maxbook$2$lcssa$i = $$maxbook$2$i; + break; + } + } + } + $86 = (($i$18$i) + 1)|0; + $exitcond18$i = ($i$18$i|0)==($$maxclass$0$i$lcssa|0); + if ($exitcond18$i) { + $maxbook$2$lcssa$i$lcssa = $maxbook$2$lcssa$i; + break; + } else { + $i$18$i = $86;$maxbook$010$i = $maxbook$2$lcssa$i; + } + } + $61 = ($maxbook$2$lcssa$i$lcssa|0)<(0); + if (!($61)) { + $62 = (($39) + ($46<<2)|0); + $63 = HEAP32[$62>>2]|0; + $64 = HEAP32[$63>>2]|0; + $65 = HEAP32[$53>>2]|0; + $66 = (($65) + 1)|0; + HEAP32[$53>>2] = $66; + $67 = (((($54)) + 1824|0) + ($65<<2)|0); + HEAP32[$67>>2] = $64; + $exitcond$i452 = ($maxbook$2$lcssa$i$lcssa|0)==(0); + if (!($exitcond$i452)) { + $i$22$i53 = 0; + while(1) { + $87 = (($i$22$i53) + 1)|0; + $$pre21$i = HEAP32[$45>>2]|0; + $88 = (($39) + ($$pre21$i<<2)|0); + $89 = HEAP32[$88>>2]|0; + $90 = (($89) + ($87<<2)|0); + $91 = HEAP32[$90>>2]|0; + $92 = HEAP32[$53>>2]|0; + $93 = (($92) + 1)|0; + HEAP32[$53>>2] = $93; + $94 = (((($54)) + 1824|0) + ($92<<2)|0); + HEAP32[$94>>2] = $91; + $exitcond$i4 = ($87|0)==($maxbook$2$lcssa$i$lcssa|0); + if ($exitcond$i4) { + break; + } else { + $i$22$i53 = $87; + } + } + } + } + } + } + $95 = ((($54)) + 16|0); + $96 = HEAP32[$95>>2]|0; + $97 = (((($54)) + 800|0) + ($96<<2)|0); + HEAP32[$97>>2] = 1; + $98 = HEAP32[$95>>2]|0; + $99 = (((($54)) + 1056|0) + ($98<<2)|0); + HEAP32[$99>>2] = $44; + $100 = HEAP32[$95>>2]|0; + $101 = (($100) + 1)|0; + HEAP32[$95>>2] = $101; + $102 = (($i$054) + 1)|0; + $103 = HEAP32[$31>>2]|0; + $104 = ($102|0)<($103|0); + if (!($104)) { + break; + } + $$pre = +HEAPF64[$18>>3]; + $$pre67 = HEAP32[$0>>2]|0; + $38 = $$pre;$54 = $$pre67;$i$054 = $102; + } + $$pre68 = HEAP32[$0>>2]|0; + $115 = $$pre68; + } else { + $115 = $1; + } + $105 = ((($1)) + 3520|0); + $106 = +HEAPF64[$105>>3]; + $107 = ((($15)) + 124|0); + $108 = HEAP32[$107>>2]|0; + $109 = ((($15)) + 128|0); + $110 = HEAP32[$109>>2]|0; + $111 = (~~(($106))); + $112 = (+($111|0)); + $113 = $106 - $112; + $114 = ((($115)) + 2868|0); + $116 = (($110) + ($111<<3)|0); + $117 = +HEAPF64[$116>>3]; + $118 = (~~(($117))); + $119 = (($108) + (($118*492)|0)|0); + _memcpy(($114|0),($119|0),492)|0; + $120 = +HEAPF64[$116>>3]; + $121 = 1.0 - $113; + $122 = $120 * $121; + $123 = (($111) + 1)|0; + $124 = (($110) + ($123<<3)|0); + $125 = +HEAPF64[$124>>3]; + $126 = $125 * $113; + $127 = $126 + $122; + $128 = (~~(($127))); + $129 = (+($128|0)); + $130 = $127 - $129; + $131 = $130 == 0.0; + $132 = ($128|0)>(0); + $or$cond$i = $132 & $131; + $$$i6 = $or$cond$i ? 1.0 : $130; + $133 = $or$cond$i << 31 >> 31; + $$2$i = (($133) + ($128))|0; + $134 = 1.0 - $$$i6; + $135 = (($$2$i) + 1)|0; + $136 = (((($108) + (($$2$i*492)|0)|0)) + 4|0); + $137 = +HEAPF32[$136>>2]; + $138 = $137; + $139 = $134 * $138; + $140 = (((($108) + (($135*492)|0)|0)) + 4|0); + $141 = +HEAPF32[$140>>2]; + $142 = $141; + $143 = $$$i6 * $142; + $144 = $139 + $143; + $145 = $144; + $146 = ((($115)) + 2872|0); + HEAPF32[$146>>2] = $145; + $147 = (((($108) + (($$2$i*492)|0)|0)) + 32|0); + $148 = +HEAPF32[$147>>2]; + $149 = $148; + $150 = $134 * $149; + $151 = (((($108) + (($135*492)|0)|0)) + 32|0); + $152 = +HEAPF32[$151>>2]; + $153 = $152; + $154 = $$$i6 * $153; + $155 = $150 + $154; + $156 = $155; + $157 = ((($115)) + 2900|0); + HEAPF32[$157>>2] = $156; + $158 = (((($108) + (($$2$i*492)|0)|0)) + 8|0); + $159 = +HEAPF32[$158>>2]; + $160 = $159; + $161 = $134 * $160; + $162 = (((($108) + (($135*492)|0)|0)) + 8|0); + $163 = +HEAPF32[$162>>2]; + $164 = $163; + $165 = $$$i6 * $164; + $166 = $161 + $165; + $167 = $166; + $168 = ((($115)) + 2876|0); + HEAPF32[$168>>2] = $167; + $169 = (((($108) + (($$2$i*492)|0)|0)) + 36|0); + $170 = +HEAPF32[$169>>2]; + $171 = $170; + $172 = $134 * $171; + $173 = (((($108) + (($135*492)|0)|0)) + 36|0); + $174 = +HEAPF32[$173>>2]; + $175 = $174; + $176 = $175 * $$$i6; + $177 = $176 + $172; + $178 = $177; + $179 = ((($115)) + 2904|0); + HEAPF32[$179>>2] = $178; + $180 = (((($108) + (($$2$i*492)|0)|0)) + 12|0); + $181 = +HEAPF32[$180>>2]; + $182 = $181; + $183 = $182 * $134; + $184 = (((($108) + (($135*492)|0)|0)) + 12|0); + $185 = +HEAPF32[$184>>2]; + $186 = $185; + $187 = $186 * $$$i6; + $188 = $187 + $183; + $189 = $188; + $190 = ((($115)) + 2880|0); + HEAPF32[$190>>2] = $189; + $191 = (((($108) + (($$2$i*492)|0)|0)) + 40|0); + $192 = +HEAPF32[$191>>2]; + $193 = $192; + $194 = $193 * $134; + $195 = (((($108) + (($135*492)|0)|0)) + 40|0); + $196 = +HEAPF32[$195>>2]; + $197 = $196; + $198 = $197 * $$$i6; + $199 = $198 + $194; + $200 = $199; + $201 = ((($115)) + 2908|0); + HEAPF32[$201>>2] = $200; + $202 = (((($108) + (($$2$i*492)|0)|0)) + 16|0); + $203 = +HEAPF32[$202>>2]; + $204 = $203; + $205 = $204 * $134; + $206 = (((($108) + (($135*492)|0)|0)) + 16|0); + $207 = +HEAPF32[$206>>2]; + $208 = $207; + $209 = $208 * $$$i6; + $210 = $209 + $205; + $211 = $210; + $212 = ((($115)) + 2884|0); + HEAPF32[$212>>2] = $211; + $213 = (((($108) + (($$2$i*492)|0)|0)) + 44|0); + $214 = +HEAPF32[$213>>2]; + $215 = $214; + $216 = $215 * $134; + $217 = (((($108) + (($135*492)|0)|0)) + 44|0); + $218 = +HEAPF32[$217>>2]; + $219 = $218; + $220 = $219 * $$$i6; + $221 = $220 + $216; + $222 = $221; + $223 = ((($115)) + 2912|0); + HEAPF32[$223>>2] = $222; + $224 = ((($115)) + 3512|0); + $225 = +HEAPF64[$224>>3]; + $226 = $225; + $227 = ((($115)) + 2936|0); + HEAPF32[$227>>2] = $226; + $228 = ((($15)) + 132|0); + $229 = HEAP32[$228>>2]|0; + $230 = ((($1)) + 3472|0); + $231 = +HEAPF64[$230>>3]; + $232 = $231; + $233 = (~~(($232))); + $234 = (+($233|0)); + $235 = $232 - $234; + $236 = $235; + $237 = HEAP32[$0>>2]|0; + $238 = ($229|0)==(0|0); + L44: do { + if ($238) { + $239 = ((($237)) + 4|0); + $240 = HEAP32[$237>>2]|0; + $241 = ((($237)) + 3240|0); + HEAP32[$241>>2] = $240; + $242 = HEAP32[$239>>2]|0; + $243 = ((($237)) + 3300|0); + HEAP32[$243>>2] = $242; + $244 = ((($237)) + 3244|0); + HEAP32[$244>>2] = $240; + $245 = ((($237)) + 3304|0); + HEAP32[$245>>2] = $242; + $246 = ((($237)) + 3248|0); + HEAP32[$246>>2] = $240; + $247 = ((($237)) + 3308|0); + HEAP32[$247>>2] = $242; + $248 = ((($237)) + 3252|0); + HEAP32[$248>>2] = $240; + $249 = ((($237)) + 3312|0); + HEAP32[$249>>2] = $242; + $250 = ((($237)) + 3256|0); + HEAP32[$250>>2] = $240; + $251 = ((($237)) + 3316|0); + HEAP32[$251>>2] = $242; + $252 = ((($237)) + 3260|0); + HEAP32[$252>>2] = $240; + $253 = ((($237)) + 3320|0); + HEAP32[$253>>2] = $242; + $254 = ((($237)) + 3264|0); + HEAP32[$254>>2] = $240; + $255 = ((($237)) + 3324|0); + HEAP32[$255>>2] = $242; + $256 = ((($237)) + 3268|0); + HEAP32[$256>>2] = $240; + $257 = ((($237)) + 3328|0); + HEAP32[$257>>2] = $242; + $258 = ((($237)) + 3272|0); + HEAP32[$258>>2] = $240; + $259 = ((($237)) + 3332|0); + HEAP32[$259>>2] = $242; + $260 = ((($237)) + 3276|0); + HEAP32[$260>>2] = $240; + $261 = ((($237)) + 3336|0); + HEAP32[$261>>2] = $242; + $262 = ((($237)) + 3280|0); + HEAP32[$262>>2] = $240; + $263 = ((($237)) + 3340|0); + HEAP32[$263>>2] = $242; + $264 = ((($237)) + 3284|0); + HEAP32[$264>>2] = $240; + $265 = ((($237)) + 3344|0); + HEAP32[$265>>2] = $242; + $266 = ((($237)) + 3288|0); + HEAP32[$266>>2] = $240; + $267 = ((($237)) + 3348|0); + HEAP32[$267>>2] = $242; + $268 = ((($237)) + 3292|0); + HEAP32[$268>>2] = $240; + $269 = ((($237)) + 3352|0); + HEAP32[$269>>2] = $242; + $270 = ((($237)) + 3296|0); + HEAP32[$270>>2] = $240; + $271 = ((($237)) + 3356|0); + HEAP32[$271>>2] = $242; + } else { + $272 = ((($237)) + 3120|0); + $273 = (($229) + (($233*240)|0)|0); + dest=$272; src=$273; stop=dest+60|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0)); + $274 = ((($237)) + 3180|0); + $275 = (((($229) + (($233*240)|0)|0)) + 60|0); + dest=$274; src=$275; stop=dest+60|0; do { HEAP32[dest>>2]=HEAP32[src>>2]|0; dest=dest+4|0; src=src+4|0; } while ((dest|0) < (stop|0)); + $276 = ((($1)) + 3420|0); + $277 = HEAP32[$276>>2]|0; + $278 = ($277|0)==(0); + if (!($278)) { + $279 = 1.0 - $236; + $280 = (($233) + 1)|0; + $281 = ((($vi)) + 8|0); + $282 = ((($237)) + 4|0); + $$pre$i8 = HEAP32[$281>>2]|0; + $283 = (+($$pre$i8|0)); + $i$07$i = 0; + while(1) { + $284 = ((((($229) + (($233*240)|0)|0)) + 120|0) + ($i$07$i<<2)|0); + $285 = +HEAPF32[$284>>2]; + $286 = $285; + $287 = $286 * $279; + $288 = ((((($229) + (($280*240)|0)|0)) + 120|0) + ($i$07$i<<2)|0); + $289 = +HEAPF32[$288>>2]; + $290 = $289; + $291 = $290 * $236; + $292 = $291 + $287; + $293 = $292; + $294 = $293; + $295 = $294 * 1000.0; + $296 = $295 / $283; + $297 = HEAP32[$237>>2]|0; + $298 = (+($297|0)); + $299 = $298 * $296; + $300 = (~~(($299))); + $301 = (((($237)) + 3000|0) + ($i$07$i<<2)|0); + HEAP32[$301>>2] = $300; + $302 = HEAP32[$282>>2]|0; + $303 = (+($302|0)); + $304 = $303 * $296; + $305 = (~~(($304))); + $306 = (((($237)) + 3060|0) + ($i$07$i<<2)|0); + HEAP32[$306>>2] = $305; + $307 = (~~(($293))); + $308 = (((($237)) + 2940|0) + ($i$07$i<<2)|0); + HEAP32[$308>>2] = $307; + $309 = ((((($229) + (($233*240)|0)|0)) + 180|0) + ($i$07$i<<2)|0); + $310 = +HEAPF32[$309>>2]; + $311 = $310; + $312 = $311 * $279; + $313 = ((((($229) + (($280*240)|0)|0)) + 180|0) + ($i$07$i<<2)|0); + $314 = +HEAPF32[$313>>2]; + $315 = $314; + $316 = $315 * $236; + $317 = $316 + $312; + $318 = $317; + $319 = $318; + $320 = $319 * 1000.0; + $321 = $320 / $283; + $322 = HEAP32[$237>>2]|0; + $323 = (+($322|0)); + $324 = $323 * $321; + $325 = (~~(($324))); + $326 = (((($237)) + 3240|0) + ($i$07$i<<2)|0); + HEAP32[$326>>2] = $325; + $327 = HEAP32[$282>>2]|0; + $328 = (+($327|0)); + $329 = $328 * $321; + $330 = (~~(($329))); + $331 = (((($237)) + 3300|0) + ($i$07$i<<2)|0); + HEAP32[$331>>2] = $330; + $332 = (($i$07$i) + 1)|0; + $exitcond10$i = ($332|0)==(15); + if ($exitcond10$i) { + break L44; + } else { + $i$07$i = $332; + } + } + } + $333 = (((($229) + (($233*240)|0)|0)) + 148|0); + $334 = +HEAPF32[$333>>2]; + $335 = $334; + $336 = 1.0 - $236; + $337 = $335 * $336; + $338 = (($233) + 1)|0; + $339 = (((($229) + (($338*240)|0)|0)) + 148|0); + $340 = +HEAPF32[$339>>2]; + $341 = $340; + $342 = $341 * $236; + $343 = $342 + $337; + $344 = $343; + $345 = $344; + $346 = $345 * 1000.0; + $347 = ((($vi)) + 8|0); + $348 = ((($237)) + 4|0); + $349 = (~~(($344))); + $$pre11$i = HEAP32[$347>>2]|0; + $350 = (+($$pre11$i|0)); + $351 = $346 / $350; + $i$16$i = 0; + while(1) { + $352 = HEAP32[$237>>2]|0; + $353 = (+($352|0)); + $354 = $353 * $351; + $355 = (~~(($354))); + $356 = (((($237)) + 3000|0) + ($i$16$i<<2)|0); + HEAP32[$356>>2] = $355; + $357 = HEAP32[$348>>2]|0; + $358 = (+($357|0)); + $359 = $358 * $351; + $360 = (~~(($359))); + $361 = (((($237)) + 3060|0) + ($i$16$i<<2)|0); + HEAP32[$361>>2] = $360; + $362 = (((($237)) + 2940|0) + ($i$16$i<<2)|0); + HEAP32[$362>>2] = $349; + $363 = (($i$16$i) + 1)|0; + $exitcond9$i = ($363|0)==(15); + if ($exitcond9$i) { + break; + } else { + $i$16$i = $363; + } + } + $364 = (((($229) + (($233*240)|0)|0)) + 208|0); + $365 = +HEAPF32[$364>>2]; + $366 = $365; + $367 = $366 * $336; + $368 = (((($229) + (($338*240)|0)|0)) + 208|0); + $369 = +HEAPF32[$368>>2]; + $370 = $369; + $371 = $370 * $236; + $372 = $371 + $367; + $373 = $372; + $374 = $373; + $375 = $374 * 1000.0; + $376 = $375 / $350; + $i$25$i = 0; + while(1) { + $377 = HEAP32[$237>>2]|0; + $378 = (+($377|0)); + $379 = $378 * $376; + $380 = (~~(($379))); + $381 = (((($237)) + 3240|0) + ($i$25$i<<2)|0); + HEAP32[$381>>2] = $380; + $382 = HEAP32[$348>>2]|0; + $383 = (+($382|0)); + $384 = $383 * $376; + $385 = (~~(($384))); + $386 = (((($237)) + 3300|0) + ($i$25$i<<2)|0); + HEAP32[$386>>2] = $385; + $387 = (($i$25$i) + 1)|0; + $exitcond$i9 = ($387|0)==(15); + if ($exitcond$i9) { + break; + } else { + $i$25$i = $387; + } + } + } + } while(0); + $388 = +HEAPF64[$18>>3]; + $389 = ((($15)) + 92|0); + $390 = HEAP32[$389>>2]|0; + $391 = ((($15)) + 100|0); + $392 = HEAP32[$391>>2]|0; + $393 = ((($15)) + 108|0); + $394 = HEAP32[$393>>2]|0; + $395 = HEAP32[$0>>2]|0; + $396 = ((($395)) + 2852|0); + $397 = HEAP32[$396>>2]|0; + $398 = (~~(($388))); + $399 = ((($395)) + 28|0); + $400 = HEAP32[$399>>2]|0; + $401 = ($400|0)>(0); + if (!($401)) { + HEAP32[$399>>2] = 1; + } + $402 = ($397|0)==(0|0); + if ($402) { + $403 = (_calloc(1,520)|0); + HEAP32[$396>>2] = $403; + $p$0$i = $403; + } else { + $p$0$i = $397; + } + _memcpy(($p$0$i|0),(25784|0),520)|0; + HEAP32[$p$0$i>>2] = 0; + $404 = ((($395)) + 3460|0); + $405 = HEAP32[$404>>2]|0; + $406 = ($405|0)==(0); + if (!($406)) { + $407 = ((($p$0$i)) + 500|0); + HEAP32[$407>>2] = 1; + $408 = (($390) + ($398<<2)|0); + $409 = HEAP32[$408>>2]|0; + $410 = ((($p$0$i)) + 504|0); + HEAP32[$410>>2] = $409; + $411 = (($392) + ($398<<2)|0); + $412 = HEAP32[$411>>2]|0; + $413 = ((($p$0$i)) + 508|0); + HEAP32[$413>>2] = $412; + $414 = (($394) + ($398<<3)|0); + $415 = +HEAPF64[$414>>3]; + $416 = ((($p$0$i)) + 512|0); + HEAPF64[$416>>3] = $415; + } + $417 = +HEAPF64[$18>>3]; + $418 = HEAP32[$389>>2]|0; + $419 = HEAP32[$391>>2]|0; + $420 = HEAP32[$393>>2]|0; + $421 = HEAP32[$0>>2]|0; + $422 = ((($421)) + 2856|0); + $423 = HEAP32[$422>>2]|0; + $424 = (~~(($417))); + $425 = ((($421)) + 28|0); + $426 = HEAP32[$425>>2]|0; + $427 = ($426|0)>(1); + if (!($427)) { + HEAP32[$425>>2] = 2; + } + $428 = ($423|0)==(0|0); + if ($428) { + $429 = (_calloc(1,520)|0); + HEAP32[$422>>2] = $429; + $p$0$i10 = $429; + } else { + $p$0$i10 = $423; + } + _memcpy(($p$0$i10|0),(25784|0),520)|0; + HEAP32[$p$0$i10>>2] = 0; + $430 = ((($421)) + 3460|0); + $431 = HEAP32[$430>>2]|0; + $432 = ($431|0)==(0); + if (!($432)) { + $433 = ((($p$0$i10)) + 500|0); + HEAP32[$433>>2] = 1; + $434 = (($418) + ($424<<2)|0); + $435 = HEAP32[$434>>2]|0; + $436 = ((($p$0$i10)) + 504|0); + HEAP32[$436>>2] = $435; + $437 = (($419) + ($424<<2)|0); + $438 = HEAP32[$437>>2]|0; + $439 = ((($p$0$i10)) + 508|0); + HEAP32[$439>>2] = $438; + $440 = (($420) + ($424<<3)|0); + $441 = +HEAPF64[$440>>3]; + $442 = ((($p$0$i10)) + 512|0); + HEAPF64[$442>>3] = $441; + } + if (!($30)) { + $443 = +HEAPF64[$18>>3]; + $444 = ((($15)) + 96|0); + $445 = HEAP32[$444>>2]|0; + $446 = ((($15)) + 104|0); + $447 = HEAP32[$446>>2]|0; + $448 = HEAP32[$393>>2]|0; + $449 = HEAP32[$0>>2]|0; + $450 = ((($449)) + 2860|0); + $451 = HEAP32[$450>>2]|0; + $452 = (~~(($443))); + $453 = ((($449)) + 28|0); + $454 = HEAP32[$453>>2]|0; + $455 = ($454|0)>(2); + if (!($455)) { + HEAP32[$453>>2] = 3; + } + $456 = ($451|0)==(0|0); + if ($456) { + $457 = (_calloc(1,520)|0); + HEAP32[$450>>2] = $457; + $p$0$i12 = $457; + } else { + $p$0$i12 = $451; + } + _memcpy(($p$0$i12|0),(25784|0),520)|0; + HEAP32[$p$0$i12>>2] = 1; + $458 = ((($449)) + 3460|0); + $459 = HEAP32[$458>>2]|0; + $460 = ($459|0)==(0); + if (!($460)) { + $461 = ((($p$0$i12)) + 500|0); + HEAP32[$461>>2] = 1; + $462 = (($445) + ($452<<2)|0); + $463 = HEAP32[$462>>2]|0; + $464 = ((($p$0$i12)) + 504|0); + HEAP32[$464>>2] = $463; + $465 = (($447) + ($452<<2)|0); + $466 = HEAP32[$465>>2]|0; + $467 = ((($p$0$i12)) + 508|0); + HEAP32[$467>>2] = $466; + $468 = (($448) + ($452<<3)|0); + $469 = +HEAPF64[$468>>3]; + $470 = ((($p$0$i12)) + 512|0); + HEAPF64[$470>>3] = $469; + } + $471 = +HEAPF64[$18>>3]; + $472 = HEAP32[$444>>2]|0; + $473 = HEAP32[$446>>2]|0; + $474 = HEAP32[$393>>2]|0; + $475 = HEAP32[$0>>2]|0; + $476 = ((($475)) + 2864|0); + $477 = HEAP32[$476>>2]|0; + $478 = (~~(($471))); + $479 = ((($475)) + 28|0); + $480 = HEAP32[$479>>2]|0; + $481 = ($480|0)>(3); + if (!($481)) { + HEAP32[$479>>2] = 4; + } + $482 = ($477|0)==(0|0); + if ($482) { + $483 = (_calloc(1,520)|0); + HEAP32[$476>>2] = $483; + $p$0$i14 = $483; + } else { + $p$0$i14 = $477; + } + _memcpy(($p$0$i14|0),(25784|0),520)|0; + HEAP32[$p$0$i14>>2] = 1; + $484 = ((($475)) + 3460|0); + $485 = HEAP32[$484>>2]|0; + $486 = ($485|0)==(0); + if (!($486)) { + $487 = ((($p$0$i14)) + 500|0); + HEAP32[$487>>2] = 1; + $488 = (($472) + ($478<<2)|0); + $489 = HEAP32[$488>>2]|0; + $490 = ((($p$0$i14)) + 504|0); + HEAP32[$490>>2] = $489; + $491 = (($473) + ($478<<2)|0); + $492 = HEAP32[$491>>2]|0; + $493 = ((($p$0$i14)) + 508|0); + HEAP32[$493>>2] = $492; + $494 = (($474) + ($478<<3)|0); + $495 = +HEAPF64[$494>>3]; + $496 = ((($p$0$i14)) + 512|0); + HEAPF64[$496>>3] = $495; + } + } + $497 = (((($1)) + 3528|0) + ($$<<5)|0); + $498 = +HEAPF64[$497>>3]; + $499 = ((($15)) + 32|0); + $500 = HEAP32[$499>>2]|0; + $501 = ((($15)) + 36|0); + $502 = HEAP32[$501>>2]|0; + $503 = ((($15)) + 44|0); + $504 = HEAP32[$503>>2]|0; + _vorbis_encode_tonemask_setup($vi,$498,0,$500,$502,$504); + $505 = ((($1)) + 3560|0); + $506 = +HEAPF64[$505>>3]; + $507 = HEAP32[$499>>2]|0; + $508 = HEAP32[$501>>2]|0; + $509 = ((($15)) + 52|0); + $510 = HEAP32[$509>>2]|0; + _vorbis_encode_tonemask_setup($vi,$506,1,$507,$508,$510); + if (!($30)) { + $511 = ((($1)) + 3592|0); + $512 = +HEAPF64[$511>>3]; + $513 = HEAP32[$499>>2]|0; + $514 = HEAP32[$501>>2]|0; + $515 = HEAP32[$509>>2]|0; + _vorbis_encode_tonemask_setup($vi,$512,2,$513,$514,$515); + $516 = ((($1)) + 3624|0); + $517 = +HEAPF64[$516>>3]; + $518 = HEAP32[$499>>2]|0; + $519 = HEAP32[$501>>2]|0; + $520 = ((($15)) + 48|0); + $521 = HEAP32[$520>>2]|0; + _vorbis_encode_tonemask_setup($vi,$517,3,$518,$519,$521); + } + $522 = (((((($1)) + 3528|0) + ($$<<5)|0)) + 24|0); + $523 = +HEAPF64[$522>>3]; + $524 = ((($15)) + 80|0); + $525 = HEAP32[$524>>2]|0; + $526 = ((($15)) + 84|0); + $527 = HEAP32[$526>>2]|0; + $528 = (~~(($523))); + $529 = (+($528|0)); + $530 = $523 - $529; + $531 = HEAP32[$0>>2]|0; + $532 = ((($531)) + 2852|0); + $533 = HEAP32[$532>>2]|0; + $534 = (($527) + ($528<<3)|0); + $535 = +HEAPF64[$534>>3]; + $536 = 1.0 - $530; + $537 = $535 * $536; + $538 = (($528) + 1)|0; + $539 = (($527) + ($538<<3)|0); + $540 = +HEAPF64[$539>>3]; + $541 = $540 * $530; + $542 = $541 + $537; + $543 = (~~(($542))); + $544 = (+($543|0)); + $545 = $542 - $544; + $546 = $545 == 0.0; + $547 = ($543|0)>(0); + $or$cond$i16 = $547 & $546; + $$$i17 = $or$cond$i16 ? 1.0 : $545; + $548 = $or$cond$i16 << 31 >> 31; + $$2$i18 = (($548) + ($543))|0; + $549 = 1.0 - $$$i17; + $550 = (($$2$i18) + 1)|0; + $i$03$i = 0; + while(1) { + $551 = ((($525) + (($$2$i18*160)|0)|0) + ($i$03$i<<2)|0); + $552 = HEAP32[$551>>2]|0; + $553 = (+($552|0)); + $554 = $553 * $549; + $555 = ((($525) + (($550*160)|0)|0) + ($i$03$i<<2)|0); + $556 = HEAP32[$555>>2]|0; + $557 = (+($556|0)); + $558 = $557 * $$$i17; + $559 = $558 + $554; + $560 = $559; + $561 = (((($533)) + 336|0) + ($i$03$i<<2)|0); + HEAPF32[$561>>2] = $560; + $562 = (($i$03$i) + 1)|0; + $exitcond$i19 = ($562|0)==(40); + if ($exitcond$i19) { + break; + } else { + $i$03$i = $562; + } + } + $563 = ((($1)) + 3584|0); + $564 = +HEAPF64[$563>>3]; + $565 = (~~(($564))); + $566 = (+($565|0)); + $567 = $564 - $566; + $568 = ((($531)) + 2856|0); + $569 = HEAP32[$568>>2]|0; + $570 = (($527) + ($565<<3)|0); + $571 = +HEAPF64[$570>>3]; + $572 = 1.0 - $567; + $573 = $571 * $572; + $574 = (($565) + 1)|0; + $575 = (($527) + ($574<<3)|0); + $576 = +HEAPF64[$575>>3]; + $577 = $576 * $567; + $578 = $577 + $573; + $579 = (~~(($578))); + $580 = (+($579|0)); + $581 = $578 - $580; + $582 = $581 == 0.0; + $583 = ($579|0)>(0); + $or$cond$i20 = $583 & $582; + $$$i21 = $or$cond$i20 ? 1.0 : $581; + $584 = $or$cond$i20 << 31 >> 31; + $$2$i22 = (($584) + ($579))|0; + $585 = 1.0 - $$$i21; + $586 = (($$2$i22) + 1)|0; + $i$03$i23 = 0; + while(1) { + $587 = ((($525) + (($$2$i22*160)|0)|0) + ($i$03$i23<<2)|0); + $588 = HEAP32[$587>>2]|0; + $589 = (+($588|0)); + $590 = $589 * $585; + $591 = ((($525) + (($586*160)|0)|0) + ($i$03$i23<<2)|0); + $592 = HEAP32[$591>>2]|0; + $593 = (+($592|0)); + $594 = $593 * $$$i21; + $595 = $594 + $590; + $596 = $595; + $597 = (((($569)) + 336|0) + ($i$03$i23<<2)|0); + HEAPF32[$597>>2] = $596; + $598 = (($i$03$i23) + 1)|0; + $exitcond$i24 = ($598|0)==(40); + if ($exitcond$i24) { + break; + } else { + $i$03$i23 = $598; + } + } + if (!($30)) { + $599 = ((($1)) + 3616|0); + $600 = +HEAPF64[$599>>3]; + $601 = ((($15)) + 88|0); + $602 = HEAP32[$601>>2]|0; + $603 = (~~(($600))); + $604 = (+($603|0)); + $605 = $600 - $604; + $606 = ((($531)) + 2860|0); + $607 = HEAP32[$606>>2]|0; + $608 = (($602) + ($603<<3)|0); + $609 = +HEAPF64[$608>>3]; + $610 = 1.0 - $605; + $611 = $609 * $610; + $612 = (($603) + 1)|0; + $613 = (($602) + ($612<<3)|0); + $614 = +HEAPF64[$613>>3]; + $615 = $614 * $605; + $616 = $615 + $611; + $617 = (~~(($616))); + $618 = (+($617|0)); + $619 = $616 - $618; + $620 = $619 == 0.0; + $621 = ($617|0)>(0); + $or$cond$i26 = $621 & $620; + $$$i27 = $or$cond$i26 ? 1.0 : $619; + $622 = $or$cond$i26 << 31 >> 31; + $$2$i28 = (($622) + ($617))|0; + $623 = 1.0 - $$$i27; + $624 = (($$2$i28) + 1)|0; + $i$03$i29 = 0; + while(1) { + $625 = ((($525) + (($$2$i28*160)|0)|0) + ($i$03$i29<<2)|0); + $626 = HEAP32[$625>>2]|0; + $627 = (+($626|0)); + $628 = $627 * $623; + $629 = ((($525) + (($624*160)|0)|0) + ($i$03$i29<<2)|0); + $630 = HEAP32[$629>>2]|0; + $631 = (+($630|0)); + $632 = $631 * $$$i27; + $633 = $632 + $628; + $634 = $633; + $635 = (((($607)) + 336|0) + ($i$03$i29<<2)|0); + HEAPF32[$635>>2] = $634; + $636 = (($i$03$i29) + 1)|0; + $exitcond$i30 = ($636|0)==(40); + if ($exitcond$i30) { + break; + } else { + $i$03$i29 = $636; + } + } + $637 = ((($1)) + 3648|0); + $638 = +HEAPF64[$637>>3]; + $639 = (~~(($638))); + $640 = (+($639|0)); + $641 = $638 - $640; + $642 = ((($531)) + 2864|0); + $643 = HEAP32[$642>>2]|0; + $644 = (($602) + ($639<<3)|0); + $645 = +HEAPF64[$644>>3]; + $646 = 1.0 - $641; + $647 = $645 * $646; + $648 = (($639) + 1)|0; + $649 = (($602) + ($648<<3)|0); + $650 = +HEAPF64[$649>>3]; + $651 = $650 * $641; + $652 = $651 + $647; + $653 = (~~(($652))); + $654 = (+($653|0)); + $655 = $652 - $654; + $656 = $655 == 0.0; + $657 = ($653|0)>(0); + $or$cond$i32 = $657 & $656; + $$$i33 = $or$cond$i32 ? 1.0 : $655; + $658 = $or$cond$i32 << 31 >> 31; + $$2$i34 = (($658) + ($653))|0; + $659 = 1.0 - $$$i33; + $660 = (($$2$i34) + 1)|0; + $i$03$i35 = 0; + while(1) { + $661 = ((($525) + (($$2$i34*160)|0)|0) + ($i$03$i35<<2)|0); + $662 = HEAP32[$661>>2]|0; + $663 = (+($662|0)); + $664 = $663 * $659; + $665 = ((($525) + (($660*160)|0)|0) + ($i$03$i35<<2)|0); + $666 = HEAP32[$665>>2]|0; + $667 = (+($666|0)); + $668 = $667 * $$$i33; + $669 = $668 + $664; + $670 = $669; + $671 = (((($643)) + 336|0) + ($i$03$i35<<2)|0); + HEAPF32[$671>>2] = $670; + $672 = (($i$03$i35) + 1)|0; + $exitcond$i36 = ($672|0)==(40); + if ($exitcond$i36) { + break; + } else { + $i$03$i35 = $672; + } + } + } + $673 = (((((($1)) + 3528|0) + ($$<<5)|0)) + 8|0); + $674 = +HEAPF64[$673>>3]; + $675 = ((($15)) + 40|0); + $676 = HEAP32[$675>>2]|0; + $677 = (~~(($674))); + $678 = (+($677|0)); + $679 = $674 - $678; + $680 = (($676) + ($677<<2)|0); + $681 = HEAP32[$680>>2]|0; + $682 = (+($681|0)); + $683 = 1.0 - $679; + $684 = $682 * $683; + $685 = (($677) + 1)|0; + $686 = (($676) + ($685<<2)|0); + $687 = HEAP32[$686>>2]|0; + $688 = (+($687|0)); + $689 = $688 * $679; + $690 = $689 + $684; + $691 = $690; + $692 = ((($533)) + 32|0); + HEAPF32[$692>>2] = $691; + $693 = ((($1)) + 3568|0); + $694 = +HEAPF64[$693>>3]; + $695 = (~~(($694))); + $696 = (+($695|0)); + $697 = $694 - $696; + $698 = (($676) + ($695<<2)|0); + $699 = HEAP32[$698>>2]|0; + $700 = (+($699|0)); + $701 = 1.0 - $697; + $702 = $700 * $701; + $703 = (($695) + 1)|0; + $704 = (($676) + ($703<<2)|0); + $705 = HEAP32[$704>>2]|0; + $706 = (+($705|0)); + $707 = $706 * $697; + $708 = $707 + $702; + $709 = $708; + $710 = ((($569)) + 32|0); + HEAPF32[$710>>2] = $709; + if (!($30)) { + $711 = ((($1)) + 3600|0); + $712 = +HEAPF64[$711>>3]; + $713 = (~~(($712))); + $714 = (+($713|0)); + $715 = $712 - $714; + $716 = ((($531)) + 2860|0); + $717 = HEAP32[$716>>2]|0; + $718 = (($676) + ($713<<2)|0); + $719 = HEAP32[$718>>2]|0; + $720 = (+($719|0)); + $721 = 1.0 - $715; + $722 = $720 * $721; + $723 = (($713) + 1)|0; + $724 = (($676) + ($723<<2)|0); + $725 = HEAP32[$724>>2]|0; + $726 = (+($725|0)); + $727 = $726 * $715; + $728 = $727 + $722; + $729 = $728; + $730 = ((($717)) + 32|0); + HEAPF32[$730>>2] = $729; + $731 = ((($1)) + 3632|0); + $732 = +HEAPF64[$731>>3]; + $733 = (~~(($732))); + $734 = (+($733|0)); + $735 = $732 - $734; + $736 = ((($531)) + 2864|0); + $737 = HEAP32[$736>>2]|0; + $738 = (($676) + ($733<<2)|0); + $739 = HEAP32[$738>>2]|0; + $740 = (+($739|0)); + $741 = 1.0 - $735; + $742 = $740 * $741; + $743 = (($733) + 1)|0; + $744 = (($676) + ($743<<2)|0); + $745 = HEAP32[$744>>2]|0; + $746 = (+($745|0)); + $747 = $746 * $735; + $748 = $747 + $742; + $749 = $748; + $750 = ((($737)) + 32|0); + HEAPF32[$750>>2] = $749; + } + $751 = (((((($1)) + 3528|0) + ($$<<5)|0)) + 16|0); + $752 = +HEAPF64[$751>>3]; + $753 = ((($15)) + 76|0); + $754 = HEAP32[$753>>2]|0; + $755 = ((($15)) + 60|0); + $756 = HEAP32[$755>>2]|0; + $757 = ((($15)) + 56|0); + $758 = HEAP32[$757>>2]|0; + if ($5) { + $761 = 0.0; + } else { + $759 = ((($1)) + 3408|0); + $760 = +HEAPF64[$759>>3]; + $761 = $760; + } + _vorbis_encode_noisebias_setup($vi,$752,0,$754,$756,$758,$761); + $762 = ((($1)) + 3576|0); + $763 = +HEAPF64[$762>>3]; + $764 = HEAP32[$753>>2]|0; + $765 = ((($15)) + 64|0); + $766 = HEAP32[$765>>2]|0; + $767 = HEAP32[$757>>2]|0; + _vorbis_encode_noisebias_setup($vi,$763,1,$764,$766,$767,0.0); + if ($30) { + $803 = HEAP32[$0>>2]|0; + $804 = ((($803)) + 2852|0); + $805 = HEAP32[$804>>2]|0; + $806 = ((($803)) + 3496|0); + $807 = +HEAPF64[$806>>3]; + $808 = $807; + $809 = ((($805)) + 4|0); + HEAPF32[$809>>2] = $808; + $810 = ((($803)) + 3504|0); + $811 = +HEAPF64[$810>>3]; + $812 = $811; + $813 = ((($805)) + 8|0); + HEAPF32[$813>>2] = $812; + $814 = ((($803)) + 2856|0); + $815 = HEAP32[$814>>2]|0; + $816 = ((($815)) + 4|0); + HEAPF32[$816>>2] = $808; + $817 = ((($815)) + 8|0); + HEAPF32[$817>>2] = $812; + $827 = $803; + } else { + $768 = ((($1)) + 3608|0); + $769 = +HEAPF64[$768>>3]; + $770 = HEAP32[$753>>2]|0; + $771 = ((($15)) + 68|0); + $772 = HEAP32[$771>>2]|0; + $773 = HEAP32[$757>>2]|0; + _vorbis_encode_noisebias_setup($vi,$769,2,$770,$772,$773,0.0); + $774 = ((($1)) + 3640|0); + $775 = +HEAPF64[$774>>3]; + $776 = HEAP32[$753>>2]|0; + $777 = ((($15)) + 72|0); + $778 = HEAP32[$777>>2]|0; + $779 = HEAP32[$757>>2]|0; + _vorbis_encode_noisebias_setup($vi,$775,3,$776,$778,$779,0.0); + $780 = HEAP32[$0>>2]|0; + $781 = ((($780)) + 2852|0); + $782 = HEAP32[$781>>2]|0; + $783 = ((($780)) + 3496|0); + $784 = +HEAPF64[$783>>3]; + $785 = $784; + $786 = ((($782)) + 4|0); + HEAPF32[$786>>2] = $785; + $787 = ((($780)) + 3504|0); + $788 = +HEAPF64[$787>>3]; + $789 = $788; + $790 = ((($782)) + 8|0); + HEAPF32[$790>>2] = $789; + $791 = ((($780)) + 2856|0); + $792 = HEAP32[$791>>2]|0; + $793 = ((($792)) + 4|0); + HEAPF32[$793>>2] = $785; + $794 = ((($792)) + 8|0); + HEAPF32[$794>>2] = $789; + $795 = ((($780)) + 2860|0); + $796 = HEAP32[$795>>2]|0; + $797 = ((($796)) + 4|0); + HEAPF32[$797>>2] = $785; + $798 = ((($796)) + 8|0); + HEAPF32[$798>>2] = $789; + $799 = ((($780)) + 2864|0); + $800 = HEAP32[$799>>2]|0; + $801 = ((($800)) + 4|0); + HEAPF32[$801>>2] = $785; + $802 = ((($800)) + 8|0); + HEAPF32[$802>>2] = $789; + $827 = $780; + } + $818 = +HEAPF64[$18>>3]; + $819 = ((($15)) + 152|0); + $820 = HEAP32[$819>>2]|0; + $821 = (~~(($818))); + $822 = (($820) + ($821<<3)|0); + $823 = HEAP32[$822>>2]|0; + $824 = (((($820) + ($821<<3)|0)) + 4|0); + $825 = HEAP32[$824>>2]|0; + $826 = HEAP32[$827>>2]|0; + $828 = ((($827)) + 4|0); + $829 = HEAP32[$828>>2]|0; + $830 = ($826|0)==($829|0); + $$$i = $830 ? 1 : 2; + $831 = ((($827)) + 8|0); + $832 = ((($827)) + 12|0); + $833 = ((($vi)) + 8|0); + $834 = ((($vi)) + 4|0); + $i$014$i = 0; + while(1) { + $835 = (_calloc(1,3208)|0); + $836 = (((($827)) + 544|0) + ($i$014$i<<2)|0); + HEAP32[$836>>2] = $835; + $837 = (_calloc(1,16)|0); + $838 = (((($827)) + 32|0) + ($i$014$i<<2)|0); + HEAP32[$838>>2] = $837; + $839 = (26304 + ($i$014$i<<4)|0); + ;HEAP32[$837>>2]=HEAP32[$839>>2]|0;HEAP32[$837+4>>2]=HEAP32[$839+4>>2]|0;HEAP32[$837+8>>2]=HEAP32[$839+8>>2]|0;HEAP32[$837+12>>2]=HEAP32[$839+12>>2]|0; + $840 = HEAP32[$831>>2]|0; + $841 = ($i$014$i|0)<($840|0); + if (!($841)) { + $842 = (($i$014$i) + 1)|0; + HEAP32[$831>>2] = $842; + } + $843 = (((($827)) + 288|0) + ($i$014$i<<2)|0); + HEAP32[$843>>2] = 0; + $844 = HEAP32[$836>>2]|0; + $845 = (($823) + (($i$014$i*3208)|0)|0); + _memcpy(($844|0),($845|0),3208)|0; + $846 = HEAP32[$832>>2]|0; + $847 = ($i$014$i|0)<($846|0); + if (!($847)) { + $848 = (($i$014$i) + 1)|0; + HEAP32[$832>>2] = $848; + } + $849 = HEAP32[$845>>2]|0; + $850 = ($849|0)>(0); + if ($850) { + $j$013$i = 0; + while(1) { + $851 = ((((($823) + (($i$014$i*3208)|0)|0)) + 1092|0) + ($j$013$i<<2)|0); + $852 = HEAP32[$851>>2]|0; + $853 = HEAP32[$0>>2]|0; + $854 = (_malloc(2840)|0); + $855 = (((($853)) + 1568|0) + ($852<<2)|0); + HEAP32[$855>>2] = $854; + $856 = (((($825) + ($852<<5)|0)) + 12|0); + $857 = HEAP32[$856>>2]|0; + _memcpy(($854|0),($857|0),2840)|0; + $858 = ((($853)) + 20|0); + $859 = HEAP32[$858>>2]|0; + $860 = ($859|0)>($852|0); + if (!($860)) { + $861 = (($852) + 1)|0; + HEAP32[$858>>2] = $861; + } + $862 = (((($825) + ($852<<5)|0)) + 8|0); + $863 = HEAP32[$862>>2]|0; + $864 = ((($854)) + 8|0); + HEAP32[$864>>2] = $863; + $865 = (($825) + ($852<<5)|0); + $866 = HEAP32[$865>>2]|0; + $867 = (((($853)) + 1312|0) + ($852<<2)|0); + HEAP32[$867>>2] = $866; + $868 = ((($853)) + 3420|0); + $869 = HEAP32[$868>>2]|0; + $870 = ($869|0)==(0); + $871 = ((($854)) + 12|0); + $872 = HEAP32[$871>>2]|0; + $873 = ($872|0)>(0); + do { + if ($870) { + if ($873) { + $877 = (((($825) + ($852<<5)|0)) + 24|0); + $878 = HEAP32[$877>>2]|0; + $879 = ((($854)) + 24|0); + $i$247$i$i = 0; + while(1) { + $928 = (($879) + ($i$247$i$i<<2)|0); + $929 = (($878) + ($i$247$i$i<<4)|0); + $930 = HEAP32[$929>>2]|0; + $931 = ($930|0)==(0|0); + if (!($931)) { + $932 = HEAP32[$928>>2]|0; + $933 = $932 | 1; + HEAP32[$928>>2] = $933; + } + $934 = (((($878) + ($i$247$i$i<<4)|0)) + 4|0); + $935 = HEAP32[$934>>2]|0; + $936 = ($935|0)==(0|0); + if (!($936)) { + $1103 = HEAP32[$928>>2]|0; + $1104 = $1103 | 2; + HEAP32[$928>>2] = $1104; + } + $1105 = (((($878) + ($i$247$i$i<<4)|0)) + 8|0); + $1106 = HEAP32[$1105>>2]|0; + $1107 = ($1106|0)==(0|0); + if (!($1107)) { + $1108 = HEAP32[$928>>2]|0; + $1109 = $1108 | 4; + HEAP32[$928>>2] = $1109; + } + $1110 = (((($878) + ($i$247$i$i<<4)|0)) + 12|0); + $1111 = HEAP32[$1110>>2]|0; + $1112 = ($1111|0)==(0|0); + if (!($1112)) { + $1113 = HEAP32[$928>>2]|0; + $1114 = $1113 | 8; + HEAP32[$928>>2] = $1114; + } + $1115 = (($i$247$i$i) + 1)|0; + $1116 = HEAP32[$871>>2]|0; + $1117 = ($1115|0)<($1116|0); + if ($1117) { + $i$247$i$i = $1115; + } else { + $951 = $1116; + break; + } + } + } else { + $951 = $872; + } + $937 = (((($825) + ($852<<5)|0)) + 16|0); + $938 = HEAP32[$937>>2]|0; + $939 = ((($853)) + 24|0); + $940 = HEAP32[$939>>2]|0; + $941 = ($940|0)>(0); + $942 = $938; + L223: do { + if ($941) { + $i$05$i6$i$i = 0; + while(1) { + $943 = (((($853)) + 1824|0) + ($i$05$i6$i$i<<2)|0); + $944 = HEAP32[$943>>2]|0; + $945 = ($944|0)==($938|0); + if ($945) { + $$0$i9$i$i = $i$05$i6$i$i; + break L223; + } + $946 = (($i$05$i6$i$i) + 1)|0; + $947 = ($946|0)<($940|0); + if ($947) { + $i$05$i6$i$i = $946; + } else { + label = 116; + break; + } + } + } else { + label = 116; + } + } while(0); + if ((label|0) == 116) { + label = 0; + $948 = (($940) + 1)|0; + HEAP32[$939>>2] = $948; + $$0$i9$i$i = $940; + } + $949 = ((($854)) + 20|0); + HEAP32[$949>>2] = $$0$i9$i$i; + $950 = (((($853)) + 1824|0) + ($$0$i9$i$i<<2)|0); + HEAP32[$950>>2] = $942; + $952 = ($951|0)>(0); + if (!($952)) { + break; + } + $953 = (((($825) + ($852<<5)|0)) + 24|0); + $954 = ((($854)) + 280|0); + $booklist$344$i$i = 0;$i$345$i$i = 0; + while(1) { + $955 = HEAP32[$953>>2]|0; + $956 = (($955) + ($i$345$i$i<<4)|0); + $957 = HEAP32[$956>>2]|0; + $958 = ($957|0)==(0|0); + $959 = $957; + if ($958) { + $972 = $955;$booklist$5$i$i = $booklist$344$i$i; + } else { + $960 = HEAP32[$939>>2]|0; + $961 = ($960|0)>(0); + L235: do { + if ($961) { + $i$05$i1$i$i = 0; + while(1) { + $962 = (((($853)) + 1824|0) + ($i$05$i1$i$i<<2)|0); + $963 = HEAP32[$962>>2]|0; + $964 = ($963|0)==($957|0); + if ($964) { + $$0$i4$i$i = $i$05$i1$i$i; + break L235; + } + $965 = (($i$05$i1$i$i) + 1)|0; + $966 = ($965|0)<($960|0); + if ($966) { + $i$05$i1$i$i = $965; + } else { + label = 123; + break; + } + } + } else { + label = 123; + } + } while(0); + if ((label|0) == 123) { + label = 0; + $967 = (($960) + 1)|0; + HEAP32[$939>>2] = $967; + $$0$i4$i$i = $960; + } + $968 = (($booklist$344$i$i) + 1)|0; + $969 = (($954) + ($booklist$344$i$i<<2)|0); + HEAP32[$969>>2] = $$0$i4$i$i; + $970 = (((($853)) + 1824|0) + ($$0$i4$i$i<<2)|0); + HEAP32[$970>>2] = $959; + $$pre65$i$i = HEAP32[$953>>2]|0; + $972 = $$pre65$i$i;$booklist$5$i$i = $968; + } + $971 = (((($972) + ($i$345$i$i<<4)|0)) + 4|0); + $973 = HEAP32[$971>>2]|0; + $974 = ($973|0)==(0|0); + $975 = $973; + if ($974) { + $1069 = $972;$booklist$5$1$i$i = $booklist$5$i$i; + } else { + $1057 = HEAP32[$939>>2]|0; + $1058 = ($1057|0)>(0); + L245: do { + if ($1058) { + $i$05$i1$1$i$i = 0; + while(1) { + $1059 = (((($853)) + 1824|0) + ($i$05$i1$1$i$i<<2)|0); + $1060 = HEAP32[$1059>>2]|0; + $1061 = ($1060|0)==($973|0); + if ($1061) { + $$0$i4$1$i$i = $i$05$i1$1$i$i; + break L245; + } + $1062 = (($i$05$i1$1$i$i) + 1)|0; + $1063 = ($1062|0)<($1057|0); + if ($1063) { + $i$05$i1$1$i$i = $1062; + } else { + label = 147; + break; + } + } + } else { + label = 147; + } + } while(0); + if ((label|0) == 147) { + label = 0; + $1064 = (($1057) + 1)|0; + HEAP32[$939>>2] = $1064; + $$0$i4$1$i$i = $1057; + } + $1065 = (($booklist$5$i$i) + 1)|0; + $1066 = (($954) + ($booklist$5$i$i<<2)|0); + HEAP32[$1066>>2] = $$0$i4$1$i$i; + $1067 = (((($853)) + 1824|0) + ($$0$i4$1$i$i<<2)|0); + HEAP32[$1067>>2] = $975; + $$pre66$i$i = HEAP32[$953>>2]|0; + $1069 = $$pre66$i$i;$booklist$5$1$i$i = $1065; + } + $1068 = (((($1069) + ($i$345$i$i<<4)|0)) + 8|0); + $1070 = HEAP32[$1068>>2]|0; + $1071 = ($1070|0)==(0|0); + $1072 = $1070; + if ($1071) { + $1085 = $1069;$booklist$5$2$i$i = $booklist$5$1$i$i; + } else { + $1073 = HEAP32[$939>>2]|0; + $1074 = ($1073|0)>(0); + L255: do { + if ($1074) { + $i$05$i1$2$i$i = 0; + while(1) { + $1075 = (((($853)) + 1824|0) + ($i$05$i1$2$i$i<<2)|0); + $1076 = HEAP32[$1075>>2]|0; + $1077 = ($1076|0)==($1070|0); + if ($1077) { + $$0$i4$2$i$i = $i$05$i1$2$i$i; + break L255; + } + $1078 = (($i$05$i1$2$i$i) + 1)|0; + $1079 = ($1078|0)<($1073|0); + if ($1079) { + $i$05$i1$2$i$i = $1078; + } else { + label = 153; + break; + } + } + } else { + label = 153; + } + } while(0); + if ((label|0) == 153) { + label = 0; + $1080 = (($1073) + 1)|0; + HEAP32[$939>>2] = $1080; + $$0$i4$2$i$i = $1073; + } + $1081 = (($booklist$5$1$i$i) + 1)|0; + $1082 = (($954) + ($booklist$5$1$i$i<<2)|0); + HEAP32[$1082>>2] = $$0$i4$2$i$i; + $1083 = (((($853)) + 1824|0) + ($$0$i4$2$i$i<<2)|0); + HEAP32[$1083>>2] = $1072; + $$pre67$i$i = HEAP32[$953>>2]|0; + $1085 = $$pre67$i$i;$booklist$5$2$i$i = $1081; + } + $1084 = (((($1085) + ($i$345$i$i<<4)|0)) + 12|0); + $1086 = HEAP32[$1084>>2]|0; + $1087 = ($1086|0)==(0|0); + $1088 = $1086; + if ($1087) { + $booklist$5$3$i$i = $booklist$5$2$i$i; + } else { + $1089 = HEAP32[$939>>2]|0; + $1090 = ($1089|0)>(0); + L265: do { + if ($1090) { + $i$05$i1$3$i$i = 0; + while(1) { + $1091 = (((($853)) + 1824|0) + ($i$05$i1$3$i$i<<2)|0); + $1092 = HEAP32[$1091>>2]|0; + $1093 = ($1092|0)==($1086|0); + if ($1093) { + $$0$i4$3$i$i = $i$05$i1$3$i$i; + break L265; + } + $1094 = (($i$05$i1$3$i$i) + 1)|0; + $1095 = ($1094|0)<($1089|0); + if ($1095) { + $i$05$i1$3$i$i = $1094; + } else { + label = 159; + break; + } + } + } else { + label = 159; + } + } while(0); + if ((label|0) == 159) { + label = 0; + $1096 = (($1089) + 1)|0; + HEAP32[$939>>2] = $1096; + $$0$i4$3$i$i = $1089; + } + $1097 = (($booklist$5$2$i$i) + 1)|0; + $1098 = (($954) + ($booklist$5$2$i$i<<2)|0); + HEAP32[$1098>>2] = $$0$i4$3$i$i; + $1099 = (((($853)) + 1824|0) + ($$0$i4$3$i$i<<2)|0); + HEAP32[$1099>>2] = $1088; + $booklist$5$3$i$i = $1097; + } + $1100 = (($i$345$i$i) + 1)|0; + $1101 = HEAP32[$871>>2]|0; + $1102 = ($1100|0)<($1101|0); + if ($1102) { + $booklist$344$i$i = $booklist$5$3$i$i;$i$345$i$i = $1100; + } else { + break; + } + } + } else { + if ($873) { + $874 = (((($825) + ($852<<5)|0)) + 28|0); + $875 = HEAP32[$874>>2]|0; + $876 = ((($854)) + 24|0); + $i$056$i$i = 0; + while(1) { + $880 = (($876) + ($i$056$i$i<<2)|0); + $881 = (($875) + ($i$056$i$i<<4)|0); + $882 = HEAP32[$881>>2]|0; + $883 = ($882|0)==(0|0); + if (!($883)) { + $884 = HEAP32[$880>>2]|0; + $885 = $884 | 1; + HEAP32[$880>>2] = $885; + } + $886 = (((($875) + ($i$056$i$i<<4)|0)) + 4|0); + $887 = HEAP32[$886>>2]|0; + $888 = ($887|0)==(0|0); + if (!($888)) { + $1164 = HEAP32[$880>>2]|0; + $1165 = $1164 | 2; + HEAP32[$880>>2] = $1165; + } + $1166 = (((($875) + ($i$056$i$i<<4)|0)) + 8|0); + $1167 = HEAP32[$1166>>2]|0; + $1168 = ($1167|0)==(0|0); + if (!($1168)) { + $1169 = HEAP32[$880>>2]|0; + $1170 = $1169 | 4; + HEAP32[$880>>2] = $1170; + } + $1171 = (((($875) + ($i$056$i$i<<4)|0)) + 12|0); + $1172 = HEAP32[$1171>>2]|0; + $1173 = ($1172|0)==(0|0); + if (!($1173)) { + $1174 = HEAP32[$880>>2]|0; + $1175 = $1174 | 8; + HEAP32[$880>>2] = $1175; + } + $1176 = (($i$056$i$i) + 1)|0; + $1177 = HEAP32[$871>>2]|0; + $1178 = ($1176|0)<($1177|0); + if ($1178) { + $i$056$i$i = $1176; + } else { + $903 = $1177; + break; + } + } + } else { + $903 = $872; + } + $889 = (((($825) + ($852<<5)|0)) + 20|0); + $890 = HEAP32[$889>>2]|0; + $891 = ((($853)) + 24|0); + $892 = HEAP32[$891>>2]|0; + $893 = ($892|0)>(0); + $894 = $890; + L155: do { + if ($893) { + $i$05$i$i$i = 0; + while(1) { + $895 = (((($853)) + 1824|0) + ($i$05$i$i$i<<2)|0); + $896 = HEAP32[$895>>2]|0; + $897 = ($896|0)==($890|0); + if ($897) { + $$0$i$i$i = $i$05$i$i$i; + break L155; + } + $898 = (($i$05$i$i$i) + 1)|0; + $899 = ($898|0)<($892|0); + if ($899) { + $i$05$i$i$i = $898; + } else { + label = 100; + break; + } + } + } else { + label = 100; + } + } while(0); + if ((label|0) == 100) { + label = 0; + $900 = (($892) + 1)|0; + HEAP32[$891>>2] = $900; + $$0$i$i$i = $892; + } + $901 = ((($854)) + 20|0); + HEAP32[$901>>2] = $$0$i$i$i; + $902 = (((($853)) + 1824|0) + ($$0$i$i$i<<2)|0); + HEAP32[$902>>2] = $894; + $904 = ($903|0)>(0); + if (!($904)) { + break; + } + $905 = (((($825) + ($852<<5)|0)) + 28|0); + $906 = ((($854)) + 280|0); + $booklist$053$i$i = 0;$i$154$i$i = 0; + while(1) { + $907 = HEAP32[$905>>2]|0; + $908 = (($907) + ($i$154$i$i<<4)|0); + $909 = HEAP32[$908>>2]|0; + $910 = ($909|0)==(0|0); + $911 = $909; + if ($910) { + $924 = $907;$booklist$2$i$i = $booklist$053$i$i; + } else { + $912 = HEAP32[$891>>2]|0; + $913 = ($912|0)>(0); + L167: do { + if ($913) { + $i$05$i11$i$i = 0; + while(1) { + $914 = (((($853)) + 1824|0) + ($i$05$i11$i$i<<2)|0); + $915 = HEAP32[$914>>2]|0; + $916 = ($915|0)==($909|0); + if ($916) { + $$0$i14$i$i = $i$05$i11$i$i; + break L167; + } + $917 = (($i$05$i11$i$i) + 1)|0; + $918 = ($917|0)<($912|0); + if ($918) { + $i$05$i11$i$i = $917; + } else { + label = 107; + break; + } + } + } else { + label = 107; + } + } while(0); + if ((label|0) == 107) { + label = 0; + $919 = (($912) + 1)|0; + HEAP32[$891>>2] = $919; + $$0$i14$i$i = $912; + } + $920 = (($booklist$053$i$i) + 1)|0; + $921 = (($906) + ($booklist$053$i$i<<2)|0); + HEAP32[$921>>2] = $$0$i14$i$i; + $922 = (((($853)) + 1824|0) + ($$0$i14$i$i<<2)|0); + HEAP32[$922>>2] = $911; + $$pre$i$i = HEAP32[$905>>2]|0; + $924 = $$pre$i$i;$booklist$2$i$i = $920; + } + $923 = (((($924) + ($i$154$i$i<<4)|0)) + 4|0); + $925 = HEAP32[$923>>2]|0; + $926 = ($925|0)==(0|0); + $927 = $925; + if ($926) { + $1130 = $924;$booklist$2$1$i$i = $booklist$2$i$i; + } else { + $1118 = HEAP32[$891>>2]|0; + $1119 = ($1118|0)>(0); + L177: do { + if ($1119) { + $i$05$i11$1$i$i = 0; + while(1) { + $1120 = (((($853)) + 1824|0) + ($i$05$i11$1$i$i<<2)|0); + $1121 = HEAP32[$1120>>2]|0; + $1122 = ($1121|0)==($925|0); + if ($1122) { + $$0$i14$1$i$i = $i$05$i11$1$i$i; + break L177; + } + $1123 = (($i$05$i11$1$i$i) + 1)|0; + $1124 = ($1123|0)<($1118|0); + if ($1124) { + $i$05$i11$1$i$i = $1123; + } else { + label = 171; + break; + } + } + } else { + label = 171; + } + } while(0); + if ((label|0) == 171) { + label = 0; + $1125 = (($1118) + 1)|0; + HEAP32[$891>>2] = $1125; + $$0$i14$1$i$i = $1118; + } + $1126 = (($booklist$2$i$i) + 1)|0; + $1127 = (($906) + ($booklist$2$i$i<<2)|0); + HEAP32[$1127>>2] = $$0$i14$1$i$i; + $1128 = (((($853)) + 1824|0) + ($$0$i14$1$i$i<<2)|0); + HEAP32[$1128>>2] = $927; + $$pre63$i$i = HEAP32[$905>>2]|0; + $1130 = $$pre63$i$i;$booklist$2$1$i$i = $1126; + } + $1129 = (((($1130) + ($i$154$i$i<<4)|0)) + 8|0); + $1131 = HEAP32[$1129>>2]|0; + $1132 = ($1131|0)==(0|0); + $1133 = $1131; + if ($1132) { + $1146 = $1130;$booklist$2$2$i$i = $booklist$2$1$i$i; + } else { + $1134 = HEAP32[$891>>2]|0; + $1135 = ($1134|0)>(0); + L187: do { + if ($1135) { + $i$05$i11$2$i$i = 0; + while(1) { + $1136 = (((($853)) + 1824|0) + ($i$05$i11$2$i$i<<2)|0); + $1137 = HEAP32[$1136>>2]|0; + $1138 = ($1137|0)==($1131|0); + if ($1138) { + $$0$i14$2$i$i = $i$05$i11$2$i$i; + break L187; + } + $1139 = (($i$05$i11$2$i$i) + 1)|0; + $1140 = ($1139|0)<($1134|0); + if ($1140) { + $i$05$i11$2$i$i = $1139; + } else { + label = 177; + break; + } + } + } else { + label = 177; + } + } while(0); + if ((label|0) == 177) { + label = 0; + $1141 = (($1134) + 1)|0; + HEAP32[$891>>2] = $1141; + $$0$i14$2$i$i = $1134; + } + $1142 = (($booklist$2$1$i$i) + 1)|0; + $1143 = (($906) + ($booklist$2$1$i$i<<2)|0); + HEAP32[$1143>>2] = $$0$i14$2$i$i; + $1144 = (((($853)) + 1824|0) + ($$0$i14$2$i$i<<2)|0); + HEAP32[$1144>>2] = $1133; + $$pre64$i$i = HEAP32[$905>>2]|0; + $1146 = $$pre64$i$i;$booklist$2$2$i$i = $1142; + } + $1145 = (((($1146) + ($i$154$i$i<<4)|0)) + 12|0); + $1147 = HEAP32[$1145>>2]|0; + $1148 = ($1147|0)==(0|0); + $1149 = $1147; + if ($1148) { + $booklist$2$3$i$i = $booklist$2$2$i$i; + } else { + $1150 = HEAP32[$891>>2]|0; + $1151 = ($1150|0)>(0); + L197: do { + if ($1151) { + $i$05$i11$3$i$i = 0; + while(1) { + $1152 = (((($853)) + 1824|0) + ($i$05$i11$3$i$i<<2)|0); + $1153 = HEAP32[$1152>>2]|0; + $1154 = ($1153|0)==($1147|0); + if ($1154) { + $$0$i14$3$i$i = $i$05$i11$3$i$i; + break L197; + } + $1155 = (($i$05$i11$3$i$i) + 1)|0; + $1156 = ($1155|0)<($1150|0); + if ($1156) { + $i$05$i11$3$i$i = $1155; + } else { + label = 183; + break; + } + } + } else { + label = 183; + } + } while(0); + if ((label|0) == 183) { + label = 0; + $1157 = (($1150) + 1)|0; + HEAP32[$891>>2] = $1157; + $$0$i14$3$i$i = $1150; + } + $1158 = (($booklist$2$2$i$i) + 1)|0; + $1159 = (($906) + ($booklist$2$2$i$i<<2)|0); + HEAP32[$1159>>2] = $$0$i14$3$i$i; + $1160 = (((($853)) + 1824|0) + ($$0$i14$3$i$i<<2)|0); + HEAP32[$1160>>2] = $1149; + $booklist$2$3$i$i = $1158; + } + $1161 = (($i$154$i$i) + 1)|0; + $1162 = HEAP32[$871>>2]|0; + $1163 = ($1161|0)<($1162|0); + if ($1163) { + $booklist$053$i$i = $booklist$2$3$i$i;$i$154$i$i = $1161; + } else { + break; + } + } + } + } while(0); + $976 = ((($853)) + 3480|0); + $977 = +HEAPF64[$976>>3]; + $978 = $977 * 1000.0; + $979 = (((($853)) + 1056|0) + ($i$014$i<<2)|0); + $980 = HEAP32[$979>>2]|0; + $981 = HEAP32[$833>>2]|0; + $982 = (+($981|0)); + $983 = $982 * 0.5; + $984 = (($853) + ($i$014$i<<2)|0); + $985 = HEAP32[$984>>2]|0; + $986 = $985 >> 1; + $987 = $978 > $983; + $freq$0$i$i = $987 ? $983 : $978; + $988 = $freq$0$i$i / $983; + $989 = (+($986|0)); + $990 = $989 * $988; + $991 = (~~(($990))); + $992 = ((($980)) + 1116|0); + HEAP32[$992>>2] = $991; + $993 = (((($825) + ($852<<5)|0)) + 4|0); + $994 = HEAP32[$993>>2]|0; + do { + if ((($994|0) == 2)) { + $freq$2$i$i = 250.0; + } else if ((($994|0) == 1)) { + $995 = HEAP32[$868>>2]|0; + $996 = ($995|0)==(0); + $997 = ((($853)) + 2996|0); + $998 = ((($853)) + 2968|0); + $freq$1$in$in$in$i$i = $996 ? $998 : $997; + $freq$1$in$in$i$i = HEAP32[$freq$1$in$in$in$i$i>>2]|0; + $freq$1$in$i$i = (+($freq$1$in$in$i$i|0)); + $freq$1$i$i = $freq$1$in$i$i * 1000.0; + $999 = $freq$1$i$i > $983; + if (!($999)) { + $freq$2$i$i = $freq$1$i$i; + break; + } + $freq$2$i$i = $983; + } else { + $freq$2$i$i = $freq$0$i$i; + } + } while(0); + $1000 = HEAP32[$867>>2]|0; + $1001 = ($1000|0)==(2); + do { + if ($1001) { + $1002 = ((($853)) + 12|0); + $1003 = HEAP32[$1002>>2]|0; + $1004 = ($1003|0)>(0); + if ($1004) { + $i$437$i$i = 0; + while(1) { + $1005 = (((($853)) + 544|0) + ($i$437$i$i<<2)|0); + $1006 = HEAP32[$1005>>2]|0; + $1007 = HEAP32[$1006>>2]|0; + $1008 = ($1007|0)>(0); + if ($1008) { + $j$032$i$i = 0; + while(1) { + $1009 = (((($1006)) + 1092|0) + ($j$032$i$i<<2)|0); + $1010 = HEAP32[$1009>>2]|0; + $1011 = ($1010|0)==($852|0); + do { + if ($1011) { + $1012 = HEAP32[$834>>2]|0; + $1013 = ($1012|0)>(0); + if ($1013) { + $ch$231$i$i = 0;$k2$030$i$i = 0; + } else { + $ch$4$i$i = 0; + break; + } + while(1) { + $1014 = (((($1006)) + 4|0) + ($k2$030$i$i<<2)|0); + $1015 = HEAP32[$1014>>2]|0; + $1016 = ($1015|0)==($j$032$i$i|0); + $1017 = $1016&1; + $$ch$2$i$i = (($1017) + ($ch$231$i$i))|0; + $1018 = (($k2$030$i$i) + 1)|0; + $exitcond$i = ($1018|0)==($1012|0); + if ($exitcond$i) { + $ch$4$i$i = $$ch$2$i$i; + break; + } else { + $ch$231$i$i = $$ch$2$i$i;$k2$030$i$i = $1018; + } + } + } else { + $ch$4$i$i = 0; + } + } while(0); + $1019 = (($j$032$i$i) + 1)|0; + $1020 = ($1019|0)<($1007|0); + $1021 = ($ch$4$i$i|0)==(0); + $1022 = $1020 & $1021; + if ($1022) { + $j$032$i$i = $1019; + } else { + $ch$1$lcssa$i$i = $ch$4$i$i; + break; + } + } + } else { + $ch$1$lcssa$i$i = 0; + } + $1023 = (($i$437$i$i) + 1)|0; + $1024 = ($1023|0)<($1003|0); + $1025 = ($ch$1$lcssa$i$i|0)==(0); + $1026 = $1024 & $1025; + if ($1026) { + $i$437$i$i = $1023; + } else { + $ch$0$lcssa$i$i = $ch$1$lcssa$i$i; + break; + } + } + } else { + $ch$0$lcssa$i$i = 0; + } + $1027 = $freq$2$i$i / $983; + $1028 = (+($ch$0$lcssa$i$i|0)); + $1029 = $1028 * $989; + $1030 = $1029 * $1027; + $1031 = HEAP32[$864>>2]|0; + $1032 = (+($1031|0)); + $1033 = $1030 / $1032; + $1034 = $1033 + 0.90000000000000002; + $1035 = (~~(($1034))); + $1036 = Math_imul($1035, $1031)|0; + $1037 = ((($854)) + 4|0); + HEAP32[$1037>>2] = $1036; + $1038 = Math_imul($ch$0$lcssa$i$i, $986)|0; + $1039 = ($1036|0)>($1038|0); + if (!($1039)) { + $$pre$phi68$i$iZ2D = $1037;$1054 = $1036;$1056 = $1031; + break; + } + $1040 = (($1038|0) % ($1031|0))&-1; + $1041 = (($1038) - ($1040))|0; + HEAP32[$1037>>2] = $1041; + $$pre$phi68$i$iZ2D = $1037;$1054 = $1041;$1056 = $1031; + } else { + $1042 = $freq$2$i$i / $983; + $1043 = $1042 * $989; + $1044 = HEAP32[$864>>2]|0; + $1045 = (+($1044|0)); + $1046 = $1043 / $1045; + $1047 = $1046 + 0.90000000000000002; + $1048 = (~~(($1047))); + $1049 = Math_imul($1048, $1044)|0; + $1050 = ((($854)) + 4|0); + HEAP32[$1050>>2] = $1049; + $1051 = ($1049|0)>($986|0); + if (!($1051)) { + $$pre$phi68$i$iZ2D = $1050;$1054 = $1049;$1056 = $1044; + break; + } + $1052 = (($986|0) % ($1044|0))&-1; + $1053 = (($986) - ($1052))|0; + HEAP32[$1050>>2] = $1053; + $$pre$phi68$i$iZ2D = $1050;$1054 = $1053;$1056 = $1044; + } + } while(0); + $1055 = ($1054|0)==(0); + if ($1055) { + HEAP32[$$pre$phi68$i$iZ2D>>2] = $1056; + } + $1179 = (($j$013$i) + 1)|0; + $1180 = HEAP32[$845>>2]|0; + $1181 = ($1179|0)<($1180|0); + if ($1181) { + $j$013$i = $1179; + } else { + break; + } + } + } + $1182 = (($i$014$i) + 1)|0; + $1183 = ($1182|0)<($$$i|0); + if ($1183) { + $i$014$i = $1182; + } else { + break; + } + } + $1184 = ((($1)) + 3428|0); + $1185 = HEAP32[$1184>>2]|0; + $1186 = ($1185|0)>(0); + if ($1186) { + $1187 = ((($vi)) + 16|0); + HEAP32[$1187>>2] = $1185; + } else { + $1188 = HEAP32[$0>>2]|0; + $1189 = ((($1188)) + 3396|0); + $1190 = HEAP32[$1189>>2]|0; + $1191 = ((($1188)) + 3400|0); + $1192 = +HEAPF64[$1191>>3]; + $1193 = (~~(($1192))); + $1194 = (+($1193|0)); + $1195 = $1192 - $1194; + $1196 = ((($1190)) + 4|0); + $1197 = HEAP32[$1196>>2]|0; + $1198 = ($1197|0)==(0|0); + if ($1198) { + $$0$i = -1; + } else { + $1199 = HEAP32[$834>>2]|0; + $1200 = (($1197) + ($1193<<3)|0); + $1201 = +HEAPF64[$1200>>3]; + $1202 = 1.0 - $1195; + $1203 = $1201 * $1202; + $1204 = (($1193) + 1)|0; + $1205 = (($1197) + ($1204<<3)|0); + $1206 = +HEAPF64[$1205>>3]; + $1207 = $1206 * $1195; + $1208 = $1207 + $1203; + $1209 = (+($1199|0)); + $1210 = $1208 * $1209; + $phitmp = (~~(($1210))); + $$0$i = $phitmp; + } + $1211 = ((($vi)) + 16|0); + HEAP32[$1211>>2] = $$0$i; + } + $1212 = ((($1)) + 3424|0); + $1213 = HEAP32[$1212>>2]|0; + $1214 = ((($vi)) + 20|0); + HEAP32[$1214>>2] = $1213; + $1215 = ((($1)) + 3440|0); + $1216 = HEAP32[$1215>>2]|0; + $1217 = ((($vi)) + 12|0); + HEAP32[$1217>>2] = $1216; + $1218 = ($1185|0)==(0); + if ($1218) { + $$sink = 0; + } else { + $1219 = ((($1)) + 3444|0); + $1220 = HEAP32[$1219>>2]|0; + $1221 = (+($1220|0)); + $1222 = (+($1185|0)); + $1223 = $1221 / $1222; + $1224 = (~~(($1223))); + $$sink = $1224; + } + $1225 = ((($vi)) + 24|0); + HEAP32[$1225>>2] = $$sink; + $1226 = ((($1)) + 3420|0); + $1227 = HEAP32[$1226>>2]|0; + $1228 = ($1227|0)==(0); + if ($1228) { + $$0 = 0; + return ($$0|0); + } + $1229 = HEAP32[$1184>>2]|0; + $1230 = ((($1)) + 3360|0); + HEAP32[$1230>>2] = $1229; + $1231 = HEAP32[$1212>>2]|0; + $1232 = ((($1)) + 3364|0); + HEAP32[$1232>>2] = $1231; + $1233 = HEAP32[$1215>>2]|0; + $1234 = ((($1)) + 3368|0); + HEAP32[$1234>>2] = $1233; + $1235 = ((($1)) + 3444|0); + $1236 = HEAP32[$1235>>2]|0; + $1237 = ((($1)) + 3372|0); + HEAP32[$1237>>2] = $1236; + $1238 = ((($1)) + 3448|0); + $1239 = +HEAPF64[$1238>>3]; + $1240 = ((($1)) + 3376|0); + HEAPF64[$1240>>3] = $1239; + $1241 = ((($1)) + 3432|0); + $1242 = +HEAPF64[$1241>>3]; + $1243 = ((($1)) + 3384|0); + HEAPF64[$1243>>3] = $1242; + $$0 = 0; + return ($$0|0); +} +function _vorbis_encode_init_vbr($vi,$channels,$rate,$base_quality) { + $vi = $vi|0; + $channels = $channels|0; + $rate = $rate|0; + $base_quality = +$base_quality; + var $$0 = 0, $$0$i$ph = 0, $$01$i = 0.0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $2 = 0, $3 = 0.0, $4 = 0.0, $5 = 0.0, $6 = 0, $7 = 0, $8 = 0.0, $9 = 0; + var label = 0, sp = 0; + sp = STACKTOP; + $0 = ($rate|0)<(1); + if ($0) { + $$0$i$ph = -131; + } else { + $1 = ((($vi)) + 28|0); + $2 = HEAP32[$1>>2]|0; + $3 = $base_quality; + $4 = $3 + 9.9999999999999995E-8; + $5 = $4; + $6 = !($5 >= 1.0); + $$01$i = $6 ? $5 : 0.99989998340606689; + $7 = ((($2)) + 3416|0); + HEAPF32[$7>>2] = $$01$i; + $8 = $$01$i; + $9 = ((($2)) + 3400|0); + $10 = (_get_setup_template($channels,$rate,$8,0,$9)|0); + $11 = ((($2)) + 3396|0); + HEAP32[$11>>2] = $10; + $12 = ($10|0)==(0|0); + if ($12) { + $$0$i$ph = -130; + } else { + _vorbis_encode_setup_setting($vi,$channels,$rate); + $13 = ((($2)) + 3420|0); + HEAP32[$13>>2] = 0; + $14 = ((($2)) + 3464|0); + HEAP32[$14>>2] = 1; + $15 = (_vorbis_encode_setup_init($vi)|0); + $16 = ($15|0)==(0); + if ($16) { + $$0 = 0; + return ($$0|0); + } + _vorbis_info_clear($vi); + $$0 = $15; + return ($$0|0); + } + } + _vorbis_info_clear($vi); + $$0 = $$0$i$ph; + return ($$0|0); +} +function _vorbis_encode_tonemask_setup($vi,$s,$block,$att,$max,$in) { + $vi = $vi|0; + $s = +$s; + $block = $block|0; + $att = $att|0; + $max = $max|0; + $in = $in|0; + var $0 = 0, $1 = 0.0, $10 = 0.0, $11 = 0.0, $12 = 0, $13 = 0, $14 = 0, $15 = 0.0, $16 = 0.0, $17 = 0.0, $18 = 0.0, $19 = 0, $2 = 0.0, $20 = 0, $21 = 0, $22 = 0.0, $23 = 0.0, $24 = 0, $25 = 0, $26 = 0.0; + var $27 = 0.0, $28 = 0.0, $29 = 0.0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0.0, $34 = 0.0, $35 = 0, $36 = 0, $37 = 0.0, $38 = 0.0, $39 = 0.0, $4 = 0, $40 = 0.0, $41 = 0, $42 = 0, $43 = 0.0, $44 = 0.0; + var $45 = 0.0, $46 = 0, $47 = 0.0, $48 = 0.0, $49 = 0.0, $5 = 0, $50 = 0.0, $51 = 0.0, $52 = 0, $53 = 0, $54 = 0.0, $55 = 0.0, $56 = 0.0, $57 = 0, $58 = 0.0, $59 = 0.0, $6 = 0, $60 = 0.0, $61 = 0.0, $62 = 0.0; + var $63 = 0, $64 = 0, $65 = 0, $66 = 0.0, $67 = 0.0, $68 = 0, $69 = 0, $7 = 0, $70 = 0.0, $71 = 0.0, $72 = 0.0, $73 = 0.0, $74 = 0, $75 = 0, $76 = 0, $77 = 0.0, $78 = 0.0, $79 = 0, $8 = 0, $80 = 0; + var $81 = 0.0, $82 = 0.0, $83 = 0.0, $84 = 0.0, $85 = 0, $86 = 0, $9 = 0.0, $exitcond = 0, $i$01 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = (~~(($s))); + $1 = (+($0|0)); + $2 = $s - $1; + $3 = ((($vi)) + 28|0); + $4 = HEAP32[$3>>2]|0; + $5 = (((($4)) + 2852|0) + ($block<<2)|0); + $6 = HEAP32[$5>>2]|0; + $7 = (($att) + (($0*20)|0)|0); + $8 = HEAP32[$7>>2]|0; + $9 = (+($8|0)); + $10 = 1.0 - $2; + $11 = $9 * $10; + $12 = (($0) + 1)|0; + $13 = (($att) + (($12*20)|0)|0); + $14 = HEAP32[$13>>2]|0; + $15 = (+($14|0)); + $16 = $15 * $2; + $17 = $16 + $11; + $18 = $17; + $19 = ((($6)) + 12|0); + HEAPF32[$19>>2] = $18; + $20 = (((($att) + (($0*20)|0)|0)) + 4|0); + $21 = HEAP32[$20>>2]|0; + $22 = (+($21|0)); + $23 = $22 * $10; + $24 = (((($att) + (($12*20)|0)|0)) + 4|0); + $25 = HEAP32[$24>>2]|0; + $26 = (+($25|0)); + $27 = $26 * $2; + $28 = $27 + $23; + $29 = $28; + $30 = ((($6)) + 16|0); + HEAPF32[$30>>2] = $29; + $31 = (((($att) + (($0*20)|0)|0)) + 8|0); + $32 = HEAP32[$31>>2]|0; + $33 = (+($32|0)); + $34 = $33 * $10; + $35 = (((($att) + (($12*20)|0)|0)) + 8|0); + $36 = HEAP32[$35>>2]|0; + $37 = (+($36|0)); + $38 = $37 * $2; + $39 = $38 + $34; + $40 = $39; + $41 = ((($6)) + 20|0); + HEAPF32[$41>>2] = $40; + $42 = (((($att) + (($0*20)|0)|0)) + 12|0); + $43 = +HEAPF32[$42>>2]; + $44 = $43; + $45 = $44 * $10; + $46 = (((($att) + (($12*20)|0)|0)) + 12|0); + $47 = +HEAPF32[$46>>2]; + $48 = $47; + $49 = $48 * $2; + $50 = $49 + $45; + $51 = $50; + $52 = ((($6)) + 24|0); + HEAPF32[$52>>2] = $51; + $53 = (((($att) + (($0*20)|0)|0)) + 16|0); + $54 = +HEAPF32[$53>>2]; + $55 = $54; + $56 = $55 * $10; + $57 = (((($att) + (($12*20)|0)|0)) + 16|0); + $58 = +HEAPF32[$57>>2]; + $59 = $58; + $60 = $59 * $2; + $61 = $60 + $56; + $62 = $61; + $63 = ((($6)) + 28|0); + HEAPF32[$63>>2] = $62; + $64 = (($max) + ($0<<2)|0); + $65 = HEAP32[$64>>2]|0; + $66 = (+($65|0)); + $67 = $66 * $10; + $68 = (($max) + ($12<<2)|0); + $69 = HEAP32[$68>>2]|0; + $70 = (+($69|0)); + $71 = $70 * $2; + $72 = $71 + $67; + $73 = $72; + $74 = ((($6)) + 496|0); + HEAPF32[$74>>2] = $73; + $i$01 = 0; + while(1) { + $75 = ((($in) + (($0*68)|0)|0) + ($i$01<<2)|0); + $76 = HEAP32[$75>>2]|0; + $77 = (+($76|0)); + $78 = $77 * $10; + $79 = ((($in) + (($12*68)|0)|0) + ($i$01<<2)|0); + $80 = HEAP32[$79>>2]|0; + $81 = (+($80|0)); + $82 = $81 * $2; + $83 = $82 + $78; + $84 = $83; + $85 = (((($6)) + 36|0) + ($i$01<<2)|0); + HEAPF32[$85>>2] = $84; + $86 = (($i$01) + 1)|0; + $exitcond = ($86|0)==(17); + if ($exitcond) { + break; + } else { + $i$01 = $86; + } + } + return; +} +function _vorbis_encode_noisebias_setup($vi,$s,$block,$suppress,$in,$guard,$userbias) { + $vi = $vi|0; + $s = +$s; + $block = $block|0; + $suppress = $suppress|0; + $in = $in|0; + $guard = $guard|0; + $userbias = +$userbias; + var $$phi$trans$insert = 0, $$phi$trans$insert13 = 0, $$phi$trans$insert16 = 0, $$pre = 0.0, $$pre14 = 0.0, $$pre17 = 0.0, $0 = 0, $1 = 0.0, $10 = 0.0, $100 = 0.0, $101 = 0, $102 = 0, $103 = 0, $104 = 0.0, $105 = 0, $106 = 0.0, $107 = 0.0, $108 = 0.0, $109 = 0, $11 = 0.0; + var $12 = 0, $13 = 0, $14 = 0, $15 = 0.0, $16 = 0.0, $17 = 0.0, $18 = 0.0, $19 = 0, $2 = 0.0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0; + var $30 = 0, $31 = 0.0, $32 = 0.0, $33 = 0, $34 = 0, $35 = 0.0, $36 = 0.0, $37 = 0.0, $38 = 0.0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0.0, $44 = 0.0, $45 = 0.0, $46 = 0, $47 = 0.0, $48 = 0; + var $49 = 0, $5 = 0, $50 = 0.0, $51 = 0.0, $52 = 0, $53 = 0.0, $54 = 0.0, $55 = 0.0, $56 = 0, $57 = 0, $58 = 0, $59 = 0.0, $6 = 0, $60 = 0.0, $61 = 0.0, $62 = 0, $63 = 0, $64 = 0, $65 = 0.0, $66 = 0.0; + var $67 = 0, $68 = 0.0, $69 = 0.0, $7 = 0, $70 = 0.0, $71 = 0, $72 = 0, $73 = 0, $74 = 0.0, $75 = 0.0, $76 = 0.0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0.0, $82 = 0.0, $83 = 0, $84 = 0; + var $85 = 0.0, $86 = 0.0, $87 = 0.0, $88 = 0.0, $89 = 0, $9 = 0.0, $90 = 0, $91 = 0, $92 = 0, $93 = 0.0, $94 = 0.0, $95 = 0, $96 = 0, $97 = 0.0, $98 = 0.0, $99 = 0.0, $exitcond = 0, $exitcond$1 = 0, $exitcond$2 = 0, $exitcond7 = 0; + var $exitcond7$1 = 0, $exitcond7$2 = 0, $i$04 = 0, $i$04$1 = 0, $i$04$2 = 0, $storemerge = 0.0, $storemerge$1 = 0.0, $storemerge$119 = 0.0, $storemerge$2 = 0.0, $storemerge$218 = 0.0, $storemerge20 = 0.0, label = 0, sp = 0; + sp = STACKTOP; + $0 = (~~(($s))); + $1 = (+($0|0)); + $2 = $s - $1; + $3 = ((($vi)) + 28|0); + $4 = HEAP32[$3>>2]|0; + $5 = (((($4)) + 2852|0) + ($block<<2)|0); + $6 = HEAP32[$5>>2]|0; + $7 = (($suppress) + ($0<<2)|0); + $8 = HEAP32[$7>>2]|0; + $9 = (+($8|0)); + $10 = 1.0 - $2; + $11 = $9 * $10; + $12 = (($0) + 1)|0; + $13 = (($suppress) + ($12<<2)|0); + $14 = HEAP32[$13>>2]|0; + $15 = (+($14|0)); + $16 = $15 * $2; + $17 = $16 + $11; + $18 = $17; + $19 = ((($6)) + 108|0); + HEAPF32[$19>>2] = $18; + $20 = (($guard) + (($block*12)|0)|0); + $21 = HEAP32[$20>>2]|0; + $22 = ((($6)) + 120|0); + HEAP32[$22>>2] = $21; + $23 = (((($guard) + (($block*12)|0)|0)) + 4|0); + $24 = HEAP32[$23>>2]|0; + $25 = ((($6)) + 124|0); + HEAP32[$25>>2] = $24; + $26 = (((($guard) + (($block*12)|0)|0)) + 8|0); + $27 = HEAP32[$26>>2]|0; + $28 = ((($6)) + 128|0); + HEAP32[$28>>2] = $27; + $i$04 = 0; + while(1) { + $29 = ((($in) + (($0*204)|0)|0) + ($i$04<<2)|0); + $30 = HEAP32[$29>>2]|0; + $31 = (+($30|0)); + $32 = $31 * $10; + $33 = ((($in) + (($12*204)|0)|0) + ($i$04<<2)|0); + $34 = HEAP32[$33>>2]|0; + $35 = (+($34|0)); + $36 = $35 * $2; + $37 = $36 + $32; + $38 = $37; + $39 = (((($6)) + 132|0) + ($i$04<<2)|0); + HEAPF32[$39>>2] = $38; + $40 = (($i$04) + 1)|0; + $exitcond7 = ($40|0)==(17); + if ($exitcond7) { + $i$04$1 = 0; + break; + } else { + $i$04 = $40; + } + } + while(1) { + $79 = ((((($in) + (($0*204)|0)|0)) + 68|0) + ($i$04$1<<2)|0); + $80 = HEAP32[$79>>2]|0; + $81 = (+($80|0)); + $82 = $81 * $10; + $83 = ((((($in) + (($12*204)|0)|0)) + 68|0) + ($i$04$1<<2)|0); + $84 = HEAP32[$83>>2]|0; + $85 = (+($84|0)); + $86 = $85 * $2; + $87 = $86 + $82; + $88 = $87; + $89 = (((($6)) + 200|0) + ($i$04$1<<2)|0); + HEAPF32[$89>>2] = $88; + $90 = (($i$04$1) + 1)|0; + $exitcond7$1 = ($90|0)==(17); + if ($exitcond7$1) { + $i$04$2 = 0; + break; + } else { + $i$04$1 = $90; + } + } + while(1) { + $91 = ((((($in) + (($0*204)|0)|0)) + 136|0) + ($i$04$2<<2)|0); + $92 = HEAP32[$91>>2]|0; + $93 = (+($92|0)); + $94 = $93 * $10; + $95 = ((((($in) + (($12*204)|0)|0)) + 136|0) + ($i$04$2<<2)|0); + $96 = HEAP32[$95>>2]|0; + $97 = (+($96|0)); + $98 = $97 * $2; + $99 = $98 + $94; + $100 = $99; + $101 = (((($6)) + 268|0) + ($i$04$2<<2)|0); + HEAPF32[$101>>2] = $100; + $102 = (($i$04$2) + 1)|0; + $exitcond7$2 = ($102|0)==(17); + if ($exitcond7$2) { + break; + } else { + $i$04$2 = $102; + } + } + $103 = ((($6)) + 132|0); + $104 = +HEAPF32[$103>>2]; + $47 = $104 + 6.0; + $105 = ((($6)) + 132|0); + $106 = $104; + $107 = $106 + $userbias; + $108 = $107; + $109 = $108 < $47; + $storemerge20 = $109 ? $47 : $108; + HEAPF32[$105>>2] = $storemerge20; + $41 = 1; + while(1) { + $$phi$trans$insert = (((($6)) + 132|0) + ($41<<2)|0); + $$pre = +HEAPF32[$$phi$trans$insert>>2]; + $42 = (((($6)) + 132|0) + ($41<<2)|0); + $43 = $$pre; + $44 = $43 + $userbias; + $45 = $44; + $46 = $45 < $47; + $storemerge = $46 ? $47 : $45; + HEAPF32[$42>>2] = $storemerge; + $48 = (($41) + 1)|0; + $exitcond = ($48|0)==(17); + if ($exitcond) { + break; + } else { + $41 = $48; + } + } + $49 = ((($6)) + 200|0); + $50 = +HEAPF32[$49>>2]; + $51 = $50 + 6.0; + $52 = ((($6)) + 200|0); + $53 = $50; + $54 = $53 + $userbias; + $55 = $54; + $56 = $55 < $51; + $storemerge$119 = $56 ? $51 : $55; + HEAPF32[$52>>2] = $storemerge$119; + $57 = 1; + while(1) { + $$phi$trans$insert13 = (((($6)) + 200|0) + ($57<<2)|0); + $$pre14 = +HEAPF32[$$phi$trans$insert13>>2]; + $58 = (((($6)) + 200|0) + ($57<<2)|0); + $59 = $$pre14; + $60 = $59 + $userbias; + $61 = $60; + $62 = $61 < $51; + $storemerge$1 = $62 ? $51 : $61; + HEAPF32[$58>>2] = $storemerge$1; + $63 = (($57) + 1)|0; + $exitcond$1 = ($63|0)==(17); + if ($exitcond$1) { + break; + } else { + $57 = $63; + } + } + $64 = ((($6)) + 268|0); + $65 = +HEAPF32[$64>>2]; + $66 = $65 + 6.0; + $67 = ((($6)) + 268|0); + $68 = $65; + $69 = $68 + $userbias; + $70 = $69; + $71 = $70 < $66; + $storemerge$218 = $71 ? $66 : $70; + HEAPF32[$67>>2] = $storemerge$218; + $72 = 1; + while(1) { + $$phi$trans$insert16 = (((($6)) + 268|0) + ($72<<2)|0); + $$pre17 = +HEAPF32[$$phi$trans$insert16>>2]; + $73 = (((($6)) + 268|0) + ($72<<2)|0); + $74 = $$pre17; + $75 = $74 + $userbias; + $76 = $75; + $77 = $76 < $66; + $storemerge$2 = $77 ? $66 : $76; + HEAPF32[$73>>2] = $storemerge$2; + $78 = (($72) + 1)|0; + $exitcond$2 = ($78|0)==(17); + if ($exitcond$2) { + break; + } else { + $72 = $78; + } + } + return; +} +function _get_setup_template($ch,$srate,$req,$q_or_bitrate,$base_setting) { + $ch = $ch|0; + $srate = $srate|0; + $req = +$req; + $q_or_bitrate = $q_or_bitrate|0; + $base_setting = $base_setting|0; + var $$0 = 0, $$01$ph22 = 0.0, $$lcssa = 0, $$lcssa3 = 0, $$lcssa4 = 0, $$phi$trans$insert = 0, $$pre = 0.0, $$pre21 = 0, $0 = 0, $1 = 0.0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0.0, $19 = 0; + var $2 = 0.0, $20 = 0, $21 = 0.0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0; + var $38 = 0, $39 = 0, $4 = 0, $40 = 0.0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0.0, $46 = 0, $47 = 0, $48 = 0, $49 = 0.0, $5 = 0, $50 = 0, $51 = 0.0, $52 = 0, $53 = 0, $54 = 0, $55 = 0.0; + var $56 = 0.0, $57 = 0, $58 = 0.0, $59 = 0.0, $6 = 0, $60 = 0, $61 = 0, $62 = 0.0, $63 = 0.0, $64 = 0.0, $65 = 0.0, $66 = 0.0, $67 = 0.0, $68 = 0.0, $69 = 0.0, $7 = 0, $70 = 0.0, $71 = 0.0, $72 = 0.0, $73 = 0; + var $74 = 0.0, $8 = 0, $9 = 0, $i$0$be = 0, $i$0$be$us = 0, $i$08 = 0, $i$08$us = 0, $j$0$lcssa = 0, $j$05 = 0, $or$cond = 0, $or$cond$us = 0, $storemerge = 0.0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($q_or_bitrate|0)==(0); + L1: do { + if ($0) { + $26 = 26336;$i$08 = 0; + while(1) { + $25 = HEAP32[$26>>2]|0; + $27 = ((($25)) + 12|0); + $28 = HEAP32[$27>>2]|0; + $29 = ($28|0)==(-1); + $30 = ($28|0)==($ch|0); + $or$cond = $29 | $30; + if ($or$cond) { + $31 = ((($25)) + 16|0); + $32 = HEAP32[$31>>2]|0; + $33 = ($32|0)>($srate|0); + if (!($33)) { + $34 = ((($25)) + 20|0); + $35 = HEAP32[$34>>2]|0; + $36 = ($35|0)<($srate|0); + if (!($36)) { + $37 = HEAP32[$25>>2]|0; + $38 = ((($25)) + 8|0); + $39 = HEAP32[$38>>2]|0; + $40 = +HEAPF64[$39>>3]; + $41 = $40 > $req; + if (!($41)) { + $44 = (($39) + ($37<<3)|0); + $45 = +HEAPF64[$44>>3]; + $46 = $45 < $req; + if (!($46)) { + $$01$ph22 = $req;$$lcssa = $37;$$lcssa3 = $26;$$lcssa4 = $39;$74 = $40; + break L1; + } + } + } + } + } + $i$0$be = (($i$08) + 1)|0; + $42 = (26336 + ($i$0$be<<2)|0); + $43 = ($i$0$be|0)==(17); + if ($43) { + $$0 = 0; + break; + } else { + $26 = $42;$i$08 = $i$0$be; + } + } + return ($$0|0); + } else { + $1 = (+($ch|0)); + $2 = $req / $1; + $4 = 26336;$i$08$us = 0; + while(1) { + $3 = HEAP32[$4>>2]|0; + $5 = ((($3)) + 12|0); + $6 = HEAP32[$5>>2]|0; + $7 = ($6|0)==(-1); + $8 = ($6|0)==($ch|0); + $or$cond$us = $7 | $8; + if ($or$cond$us) { + $9 = ((($3)) + 16|0); + $10 = HEAP32[$9>>2]|0; + $11 = ($10|0)>($srate|0); + if (!($11)) { + $12 = ((($3)) + 20|0); + $13 = HEAP32[$12>>2]|0; + $14 = ($13|0)<($srate|0); + if (!($14)) { + $15 = HEAP32[$3>>2]|0; + $16 = ((($3)) + 4|0); + $17 = HEAP32[$16>>2]|0; + $18 = +HEAPF64[$17>>3]; + $19 = $2 < $18; + if (!($19)) { + $20 = (($17) + ($15<<3)|0); + $21 = +HEAPF64[$20>>3]; + $22 = $2 > $21; + if (!($22)) { + $$01$ph22 = $2;$$lcssa = $15;$$lcssa3 = $4;$$lcssa4 = $17;$74 = $18; + break L1; + } + } + } + } + } + $i$0$be$us = (($i$08$us) + 1)|0; + $23 = (26336 + ($i$0$be$us<<2)|0); + $24 = ($i$0$be$us|0)==(17); + if ($24) { + $$0 = 0; + break; + } else { + $4 = $23;$i$08$us = $i$0$be$us; + } + } + return ($$0|0); + } + } while(0); + $47 = ($$lcssa|0)>(0); + L22: do { + if ($47) { + $49 = $74;$j$05 = 0; + while(1) { + $48 = !($$01$ph22 >= $49); + $$pre21 = (($j$05) + 1)|0; + if (!($48)) { + $50 = (($$lcssa4) + ($$pre21<<3)|0); + $51 = +HEAPF64[$50>>3]; + $52 = $$01$ph22 < $51; + if ($52) { + $j$0$lcssa = $j$05; + break L22; + } + } + $53 = ($$pre21|0)<($$lcssa|0); + if (!($53)) { + $j$0$lcssa = $$pre21; + break L22; + } + $$phi$trans$insert = (($$lcssa4) + ($$pre21<<3)|0); + $$pre = +HEAPF64[$$phi$trans$insert>>3]; + $49 = $$pre;$j$05 = $$pre21; + } + } else { + $j$0$lcssa = 0; + } + } while(0); + $54 = ($j$0$lcssa|0)==($$lcssa|0); + if ($54) { + $55 = (+($$lcssa|0)); + $56 = $55 + -0.001; + $storemerge = $56; + } else { + $57 = (($$lcssa4) + ($j$0$lcssa<<3)|0); + $58 = +HEAPF64[$57>>3]; + $59 = $58; + $60 = (($j$0$lcssa) + 1)|0; + $61 = (($$lcssa4) + ($60<<3)|0); + $62 = +HEAPF64[$61>>3]; + $63 = $62; + $64 = $59; + $65 = $$01$ph22 - $64; + $66 = $63 - $59; + $67 = $66; + $68 = $65 / $67; + $69 = $68; + $70 = (+($j$0$lcssa|0)); + $71 = $69 + $70; + $72 = $71; + $storemerge = $72; + } + HEAPF64[$base_setting>>3] = $storemerge; + $73 = HEAP32[$$lcssa3>>2]|0; + $$0 = $73; + return ($$0|0); +} +function _vorbis_encode_setup_setting($vi,$channels,$rate) { + $vi = $vi|0; + $channels = $channels|0; + $rate = $rate|0; + var $$pre = 0.0, $$pre$phi3Z2D = 0, $$pre$phiZ2D = 0.0, $$pre2 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0.0, $12 = 0.0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0.0, $21 = 0.0, $22 = 0.0; + var $23 = 0, $24 = 0, $25 = 0.0, $26 = 0.0, $27 = 0.0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0.0, $34 = 0.0, $35 = 0, $36 = 0, $37 = 0.0, $38 = 0.0, $39 = 0.0, $4 = 0, $40 = 0; + var $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0.0, $46 = 0.0, $47 = 0, $48 = 0, $49 = 0.0, $5 = 0, $50 = 0.0, $51 = 0.0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0; + var $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $8 = 0, $9 = 0.0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($vi)) + 28|0); + $1 = HEAP32[$0>>2]|0; + $2 = ((($1)) + 3396|0); + $3 = HEAP32[$2>>2]|0; + HEAP32[$vi>>2] = 0; + $4 = ((($vi)) + 4|0); + HEAP32[$4>>2] = $channels; + $5 = ((($vi)) + 8|0); + HEAP32[$5>>2] = $rate; + $6 = ((($1)) + 3456|0); + HEAP32[$6>>2] = 1; + $7 = ((($1)) + 3460|0); + HEAP32[$7>>2] = 1; + $8 = ((($1)) + 3400|0); + $9 = +HEAPF64[$8>>3]; + $10 = (~~(($9))); + $11 = (+($10|0)); + $12 = $9 - $11; + $13 = ((($1)) + 3472|0); + HEAPF64[$13>>3] = $9; + $14 = ((($1)) + 3488|0); + $15 = HEAP32[$14>>2]|0; + $16 = ($15|0)==(0); + if ($16) { + $17 = ((($3)) + 120|0); + $18 = HEAP32[$17>>2]|0; + $19 = (($18) + ($10<<3)|0); + $20 = +HEAPF64[$19>>3]; + $21 = 1.0 - $12; + $22 = $20 * $21; + $23 = (($10) + 1)|0; + $24 = (($18) + ($23<<3)|0); + $25 = +HEAPF64[$24>>3]; + $26 = $25 * $12; + $27 = $26 + $22; + $28 = ((($1)) + 3480|0); + HEAPF64[$28>>3] = $27; + $$pre$phi3Z2D = $23;$$pre$phiZ2D = $21; + } else { + $$pre = 1.0 - $12; + $$pre2 = (($10) + 1)|0; + $$pre$phi3Z2D = $$pre2;$$pre$phiZ2D = $$pre; + } + $29 = ((($3)) + 112|0); + $30 = HEAP32[$29>>2]|0; + $31 = (($30) + ($10<<2)|0); + $32 = HEAP32[$31>>2]|0; + $33 = (+($32|0)); + $34 = $33 * $$pre$phiZ2D; + $35 = (($30) + ($$pre$phi3Z2D<<2)|0); + $36 = HEAP32[$35>>2]|0; + $37 = (+($36|0)); + $38 = $37 * $12; + $39 = $38 + $34; + $40 = ((($1)) + 3496|0); + HEAPF64[$40>>3] = $39; + $41 = ((($3)) + 116|0); + $42 = HEAP32[$41>>2]|0; + $43 = (($42) + ($10<<2)|0); + $44 = HEAP32[$43>>2]|0; + $45 = (+($44|0)); + $46 = $45 * $$pre$phiZ2D; + $47 = (($42) + ($$pre$phi3Z2D<<2)|0); + $48 = HEAP32[$47>>2]|0; + $49 = (+($48|0)); + $50 = $49 * $12; + $51 = $50 + $46; + $52 = ((($1)) + 3504|0); + HEAPF64[$52>>3] = $51; + $53 = ((($1)) + 3512|0); + HEAPF64[$53>>3] = -6.0; + $54 = ((($1)) + 3520|0); + HEAPF64[$54>>3] = $9; + $55 = ((($1)) + 3528|0); + HEAPF64[$55>>3] = $9; + $56 = ((($1)) + 3536|0); + HEAPF64[$56>>3] = $9; + $57 = ((($1)) + 3544|0); + HEAPF64[$57>>3] = $9; + $58 = ((($1)) + 3552|0); + HEAPF64[$58>>3] = $9; + $59 = ((($1)) + 3560|0); + HEAPF64[$59>>3] = $9; + $60 = ((($1)) + 3568|0); + HEAPF64[$60>>3] = $9; + $61 = ((($1)) + 3576|0); + HEAPF64[$61>>3] = $9; + $62 = ((($1)) + 3584|0); + HEAPF64[$62>>3] = $9; + $63 = ((($1)) + 3592|0); + HEAPF64[$63>>3] = $9; + $64 = ((($1)) + 3600|0); + HEAPF64[$64>>3] = $9; + $65 = ((($1)) + 3608|0); + HEAPF64[$65>>3] = $9; + $66 = ((($1)) + 3616|0); + HEAPF64[$66>>3] = $9; + $67 = ((($1)) + 3624|0); + HEAPF64[$67>>3] = $9; + $68 = ((($1)) + 3632|0); + HEAPF64[$68>>3] = $9; + $69 = ((($1)) + 3640|0); + HEAPF64[$69>>3] = $9; + $70 = ((($1)) + 3648|0); + HEAPF64[$70>>3] = $9; + return; +} +function __vorbis_apply_window($d,$winno,$blocksizes,$lW,$W,$nW) { + $d = $d|0; + $winno = $winno|0; + $blocksizes = $blocksizes|0; + $lW = $lW|0; + $W = $W|0; + $nW = $nW|0; + var $$neg = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0; + var $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0.0, $39 = 0, $4 = 0, $40 = 0.0, $41 = 0.0, $42 = 0, $43 = 0; + var $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0.0, $49 = 0, $5 = 0, $50 = 0.0, $51 = 0.0, $52 = 0, $53 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $exitcond = 0, $i$0$lcssa = 0, $i$18 = 0, $i$2$lcssa = 0, $i$25 = 0; + var $p$09 = 0, $p$16 = 0, $p$16$in = 0, $scevgep = 0, $smax = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($W|0)!=(0); + $1 = $0 ? $lW : 0; + $2 = $0 ? $nW : 0; + $3 = (($winno) + ($1<<2)|0); + $4 = HEAP32[$3>>2]|0; + $5 = (520336 + ($4<<2)|0); + $6 = HEAP32[$5>>2]|0; + $7 = (($winno) + ($2<<2)|0); + $8 = HEAP32[$7>>2]|0; + $9 = (520336 + ($8<<2)|0); + $10 = HEAP32[$9>>2]|0; + $11 = (($blocksizes) + ($W<<2)|0); + $12 = HEAP32[$11>>2]|0; + $13 = (($blocksizes) + ($1<<2)|0); + $14 = HEAP32[$13>>2]|0; + $15 = (($blocksizes) + ($2<<2)|0); + $16 = HEAP32[$15>>2]|0; + $17 = (($12|0) / 4)&-1; + $18 = (($14|0) / 4)&-1; + $19 = (($17) - ($18))|0; + $20 = (($14|0) / 2)&-1; + $21 = (($19) + ($20))|0; + $22 = (($12|0) / 2)&-1; + $23 = (($22) + ($17))|0; + $$neg = (($16|0) / -4)&-1; + $24 = (($23) + ($$neg))|0; + $25 = (($16|0) / 2)&-1; + $26 = (($24) + ($25))|0; + $27 = ($19|0)>(0); + if ($27) { + $28 = (($17) - ($18))|0; + $29 = $28 << 2; + _memset(($d|0),0,($29|0))|0; + $i$0$lcssa = $19; + } else { + $i$0$lcssa = 0; + } + $30 = ($i$0$lcssa|0)<($21|0); + if ($30) { + $31 = (($17) + ($20))|0; + $32 = (($31) - ($i$0$lcssa))|0; + $33 = (($32) - ($18))|0; + $i$18 = $i$0$lcssa;$p$09 = 0; + while(1) { + $37 = (($6) + ($p$09<<2)|0); + $38 = +HEAPF32[$37>>2]; + $39 = (($d) + ($i$18<<2)|0); + $40 = +HEAPF32[$39>>2]; + $41 = $40 * $38; + HEAPF32[$39>>2] = $41; + $42 = (($i$18) + 1)|0; + $43 = (($p$09) + 1)|0; + $exitcond = ($43|0)==($33|0); + if ($exitcond) { + break; + } else { + $i$18 = $42;$p$09 = $43; + } + } + } + $34 = ($16|0)>(1); + if ($34) { + $35 = (($24) + 1)|0; + $36 = ($26|0)>($35|0); + $i$25 = $24;$p$16$in = $25; + while(1) { + $p$16 = (($p$16$in) + -1)|0; + $47 = (($10) + ($p$16<<2)|0); + $48 = +HEAPF32[$47>>2]; + $49 = (($d) + ($i$25<<2)|0); + $50 = +HEAPF32[$49>>2]; + $51 = $50 * $48; + HEAPF32[$49>>2] = $51; + $52 = (($i$25) + 1)|0; + $53 = ($52|0)<($26|0); + if ($53) { + $i$25 = $52;$p$16$in = $p$16; + } else { + break; + } + } + $smax = $36 ? $26 : $35; + $i$2$lcssa = $smax; + } else { + $i$2$lcssa = $24; + } + $44 = ($12|0)>($i$2$lcssa|0); + if (!($44)) { + return; + } + $scevgep = (($d) + ($i$2$lcssa<<2)|0); + $45 = (($12) - ($i$2$lcssa))|0; + $46 = $45 << 2; + _memset(($scevgep|0),0,($46|0))|0; + return; +} +function _encoder_init($num_ch,$sample_rate,$quality) { + $num_ch = $num_ch|0; + $sample_rate = +$sample_rate; + $quality = +$quality; + var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0; + var $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $h_code = 0, $h_comm = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 64|0; + $h_comm = sp + 32|0; + $h_code = sp; + $0 = (_malloc(688)|0); + $1 = ((($0)) + 408|0); + _vorbis_info_init($1); + $2 = (~~(($sample_rate))); + (_vorbis_encode_init_vbr($1,$num_ch,$2,$quality)|0); + $3 = ((($0)) + 440|0); + _vorbis_comment_init($3); + _vorbis_comment_add_tag($3,553008,553016); + $4 = ((($0)) + 456|0); + (_vorbis_analysis_init($4,$1)|0); + $5 = ((($0)) + 568|0); + (_vorbis_block_init($4,$5)|0); + $6 = (_time((0|0))|0); + _srand($6); + $7 = (_rand()|0); + (_ogg_stream_init($0,$7)|0); + $8 = ((($0)) + 680|0); + HEAP32[$8>>2] = 0; + $9 = ((($0)) + 684|0); + HEAP32[$9>>2] = 0; + $10 = ((($0)) + 360|0); + (_vorbis_analysis_headerout($4,$3,$10,$h_comm,$h_code)|0); + (_ogg_stream_packetin($0,$10)|0); + (_ogg_stream_packetin($0,$h_comm)|0); + (_ogg_stream_packetin($0,$h_code)|0); + $11 = ((($0)) + 392|0); + $12 = (_ogg_stream_flush($0,$11)|0); + $13 = ($12|0)==(0); + if ($13) { + STACKTOP = sp;return ($0|0); + } + $14 = ((($0)) + 396|0); + $15 = ((($0)) + 404|0); + $16 = ((($0)) + 400|0); + while(1) { + $17 = HEAP32[$9>>2]|0; + $18 = HEAP32[$14>>2]|0; + $19 = (($18) + ($17))|0; + $20 = HEAP32[$15>>2]|0; + $21 = (($19) + ($20))|0; + $22 = ($21|0)==(0); + if (!($22)) { + $25 = HEAP32[$8>>2]|0; + $26 = (_realloc($25,$21)|0); + HEAP32[$8>>2] = $26; + $27 = HEAP32[$9>>2]|0; + $28 = (($26) + ($27)|0); + $29 = HEAP32[$11>>2]|0; + $30 = HEAP32[$14>>2]|0; + _memcpy(($28|0),($29|0),($30|0))|0; + $31 = (($30) + ($27))|0; + HEAP32[$9>>2] = $31; + $32 = (($26) + ($31)|0); + $33 = HEAP32[$16>>2]|0; + $34 = HEAP32[$15>>2]|0; + _memcpy(($32|0),($33|0),($34|0))|0; + $35 = (($34) + ($31))|0; + HEAP32[$9>>2] = $35; + } + $23 = (_ogg_stream_flush($0,$11)|0); + $24 = ($23|0)==(0); + if ($24) { + break; + } + } + STACKTOP = sp;return ($0|0); +} +function _encoder_clear($enc) { + $enc = $enc|0; + var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, label = 0, sp = 0; + sp = STACKTOP; + (_ogg_stream_clear($enc)|0); + $0 = ((($enc)) + 568|0); + (_vorbis_block_clear($0)|0); + $1 = ((($enc)) + 456|0); + _vorbis_dsp_clear($1); + $2 = ((($enc)) + 440|0); + _vorbis_comment_clear($2); + $3 = ((($enc)) + 408|0); + _vorbis_info_clear($3); + $4 = ((($enc)) + 680|0); + $5 = HEAP32[$4>>2]|0; + _free($5); + _free($enc); + return; +} +function _encoder_analysis_buffer($enc,$length) { + $enc = $enc|0; + $length = $length|0; + var $0 = 0, $1 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($enc)) + 456|0); + $1 = (_vorbis_analysis_buffer($0,$length)|0); + return ($1|0); +} +function _encoder_process($enc,$length) { + $enc = $enc|0; + $length = $length|0; + var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0; + var $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0; + var sp = 0; + sp = STACKTOP; + $0 = ((($enc)) + 456|0); + (_vorbis_analysis_wrote($0,$length)|0); + $1 = ((($enc)) + 568|0); + $2 = (_vorbis_analysis_blockout($0,$1)|0); + $3 = ($2|0)==(1); + if (!($3)) { + return; + } + $4 = ((($enc)) + 360|0); + $5 = ((($enc)) + 392|0); + $6 = ((($enc)) + 684|0); + $7 = ((($enc)) + 396|0); + $8 = ((($enc)) + 404|0); + $9 = ((($enc)) + 680|0); + $10 = ((($enc)) + 392|0); + $11 = ((($enc)) + 400|0); + while(1) { + (_vorbis_analysis($1,0)|0); + (_vorbis_bitrate_addblock($1)|0); + $14 = (_vorbis_bitrate_flushpacket($0,$4)|0); + $15 = ($14|0)==(0); + if (!($15)) { + while(1) { + (_ogg_stream_packetin($enc,$4)|0); + $18 = (_ogg_stream_pageout($enc,$5)|0); + $19 = ($18|0)==(0); + if (!($19)) { + while(1) { + $20 = HEAP32[$6>>2]|0; + $21 = HEAP32[$7>>2]|0; + $22 = (($21) + ($20))|0; + $23 = HEAP32[$8>>2]|0; + $24 = (($22) + ($23))|0; + $25 = ($24|0)==(0); + if (!($25)) { + $28 = HEAP32[$9>>2]|0; + $29 = (_realloc($28,$24)|0); + HEAP32[$9>>2] = $29; + $30 = HEAP32[$6>>2]|0; + $31 = (($29) + ($30)|0); + $32 = HEAP32[$10>>2]|0; + $33 = HEAP32[$7>>2]|0; + _memcpy(($31|0),($32|0),($33|0))|0; + $34 = (($33) + ($30))|0; + HEAP32[$6>>2] = $34; + $35 = (($29) + ($34)|0); + $36 = HEAP32[$11>>2]|0; + $37 = HEAP32[$8>>2]|0; + _memcpy(($35|0),($36|0),($37|0))|0; + $38 = (($37) + ($34))|0; + HEAP32[$6>>2] = $38; + } + $26 = (_ogg_stream_pageout($enc,$5)|0); + $27 = ($26|0)==(0); + if ($27) { + break; + } + } + } + $16 = (_vorbis_bitrate_flushpacket($0,$4)|0); + $17 = ($16|0)==(0); + if ($17) { + break; + } + } + } + $12 = (_vorbis_analysis_blockout($0,$1)|0); + $13 = ($12|0)==(1); + if (!($13)) { + break; + } + } + return; +} +function _encoder_data_len($enc) { + $enc = $enc|0; + var $0 = 0, $1 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($enc)) + 684|0); + $1 = HEAP32[$0>>2]|0; + return ($1|0); +} +function _encoder_transfer_data($enc) { + $enc = $enc|0; + var $0 = 0, $1 = 0, $2 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($enc)) + 684|0); + HEAP32[$0>>2] = 0; + $1 = ((($enc)) + 680|0); + $2 = HEAP32[$1>>2]|0; + return ($2|0); +} +function _ldexp($x,$n) { + $x = +$x; + $n = $n|0; + var $0 = 0.0, label = 0, sp = 0; + sp = STACKTOP; + $0 = (+_scalbn($x,$n)); + return (+$0); +} +function _qsort($base,$nel,$width,$cmp) { + $base = $base|0; + $nel = $nel|0; + $width = $width|0; + $cmp = $cmp|0; + var $$ = 0, $$0$be$i = 0, $$0$be$i19 = 0, $$0$i44 = 0, $$01$be$i = 0, $$01$be$i18 = 0, $$012$i = 0, $$012$i15 = 0, $$02$i$i = 0, $$02$i3$i = 0, $$02$us$i = 0, $$02$us$i30 = 0, $$03$i = 0, $$03$i14 = 0, $$66 = 0, $$67 = 0, $$lcssa = 0, $$lcssa102 = 0, $$lcssa70 = 0, $$lcssa71 = 0; + var $$pre = 0, $$pre$i = 0, $$pre$i21 = 0, $$pre6$i = 0, $$pre6$i26 = 0, $$sum = 0, $$sum$i = 0, $$sum$i17 = 0, $$sum2 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0; + var $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0; + var $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0; + var $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0; + var $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0; + var $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $4$phi = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0; + var $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0; + var $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0; + var $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $ar$i = 0; + var $exitcond$i = 0, $exitcond$i29 = 0, $head$0$lcssa = 0, $head$076 = 0, $head$174 = 0, $i$0 = 0, $i$0$lcssa$i = 0, $i$0$lcssa$i23 = 0, $i$01$us$i = 0, $i$01$us$i28 = 0, $i$04$i = 0, $i$04$i13 = 0, $lp = 0, $nTrailingZeros$03$i$i = 0, $nTrailingZeros$03$i2$i = 0, $nTrailingZeros$03$i2$i$lcssa = 0, $or$cond = 0, $or$cond68 = 0, $or$cond6873 = 0, $or$cond72 = 0; + var $pshift$0$lcssa = 0, $pshift$077 = 0, $pshift$1 = 0, $pshift$275 = 0, $sum = 0, $sum$i = 0, $sum$i16 = 0, $tmp$i25 = 0, label = 0, sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 688|0; + $tmp$i25 = sp + 424|0; + $ar$i = sp + 192|0; + $lp = sp; + $0 = Math_imul($width, $nel)|0; + $1 = ($0|0)==(0); + if ($1) { + STACKTOP = sp;return; + } + $$sum = (($0) - ($width))|0; + $2 = ((($lp)) + 4|0); + HEAP32[$2>>2] = $width; + HEAP32[$lp>>2] = $width; + $4 = $width;$6 = $width;$i$0 = 2; + while(1) { + $3 = (($4) + ($width))|0; + $5 = (($3) + ($6))|0; + $7 = (($lp) + ($i$0<<2)|0); + HEAP32[$7>>2] = $5; + $8 = ($5>>>0)<($0>>>0); + $9 = (($i$0) + 1)|0; + if ($8) { + $4$phi = $6;$6 = $5;$i$0 = $9;$4 = $4$phi; + } else { + break; + } + } + $10 = (0 - ($width))|0; + $11 = (($base) + ($$sum)|0); + $12 = ($$sum|0)>(0); + if ($12) { + $13 = ($width|0)==(0); + $14 = $11; + $16 = 1;$51 = 0;$head$076 = $base;$pshift$077 = 1; + while(1) { + $15 = $16 & 3; + $17 = ($15|0)==(3); + do { + if ($17) { + HEAP32[$ar$i>>2] = $head$076; + $18 = ($pshift$077|0)>(1); + L13: do { + if ($18) { + $$012$i = $pshift$077;$$03$i = $head$076;$24 = $head$076;$i$04$i = 1; + while(1) { + $19 = (($$03$i) + ($10)|0); + $20 = (($$012$i) + -2)|0; + $21 = (($lp) + ($20<<2)|0); + $22 = HEAP32[$21>>2]|0; + $sum$i = (($22) + ($width))|0; + $$sum$i = (0 - ($sum$i))|0; + $23 = (($$03$i) + ($$sum$i)|0); + $25 = (FUNCTION_TABLE_iii[$cmp & 15]($24,$23)|0); + $26 = ($25|0)>(-1); + if ($26) { + $27 = (FUNCTION_TABLE_iii[$cmp & 15]($24,$19)|0); + $28 = ($27|0)>(-1); + if ($28) { + $i$0$lcssa$i = $i$04$i; + break; + } + } + $29 = (FUNCTION_TABLE_iii[$cmp & 15]($23,$19)|0); + $30 = ($29|0)>(-1); + $31 = (($i$04$i) + 1)|0; + $32 = (($ar$i) + ($i$04$i<<2)|0); + if ($30) { + HEAP32[$32>>2] = $23; + $33 = (($$012$i) + -1)|0; + $$0$be$i = $23;$$01$be$i = $33; + } else { + HEAP32[$32>>2] = $19; + $$0$be$i = $19;$$01$be$i = $20; + } + $34 = ($$01$be$i|0)>(1); + if (!($34)) { + $i$0$lcssa$i = $31; + break; + } + $$pre$i = HEAP32[$ar$i>>2]|0; + $$012$i = $$01$be$i;$$03$i = $$0$be$i;$24 = $$pre$i;$i$04$i = $31; + } + $35 = ($i$0$lcssa$i|0)<(2); + if (!($35)) { + $36 = (($ar$i) + ($i$0$lcssa$i<<2)|0); + HEAP32[$36>>2] = $tmp$i25; + if (!($13)) { + $$02$us$i = $width;$48 = $tmp$i25; + while(1) { + $46 = ($$02$us$i>>>0)>(256); + $38 = $46 ? 256 : $$02$us$i; + $47 = HEAP32[$ar$i>>2]|0; + _memcpy(($48|0),($47|0),($38|0))|0; + $44 = $47;$i$01$us$i = 0; + while(1) { + $40 = (($ar$i) + ($i$01$us$i<<2)|0); + $41 = (($i$01$us$i) + 1)|0; + $42 = (($ar$i) + ($41<<2)|0); + $43 = HEAP32[$42>>2]|0; + _memcpy(($44|0),($43|0),($38|0))|0; + $45 = (($44) + ($38)|0); + HEAP32[$40>>2] = $45; + $exitcond$i = ($41|0)==($i$0$lcssa$i|0); + if ($exitcond$i) { + break; + } else { + $44 = $43;$i$01$us$i = $41; + } + } + $37 = ($$02$us$i|0)==($38|0); + if ($37) { + break L13; + } + $39 = (($$02$us$i) - ($38))|0; + $$pre6$i = HEAP32[$36>>2]|0; + $$02$us$i = $39;$48 = $$pre6$i; + } + } + } + } else { + } + } while(0); + $49 = $16 >>> 2; + $50 = $51 << 30; + $52 = $49 | $50; + $53 = $51 >>> 2; + $54 = (($pshift$077) + 2)|0; + $105 = $52;$168 = $53;$pshift$1 = $54; + } else { + $55 = (($pshift$077) + -1)|0; + $56 = (($lp) + ($55<<2)|0); + $57 = HEAP32[$56>>2]|0; + $58 = $head$076; + $59 = (($14) - ($58))|0; + $60 = ($57>>>0)<($59>>>0); + if ($60) { + HEAP32[$ar$i>>2] = $head$076; + $61 = ($pshift$077|0)>(1); + L38: do { + if ($61) { + $$012$i15 = $pshift$077;$$03$i14 = $head$076;$67 = $head$076;$i$04$i13 = 1; + while(1) { + $62 = (($$03$i14) + ($10)|0); + $63 = (($$012$i15) + -2)|0; + $64 = (($lp) + ($63<<2)|0); + $65 = HEAP32[$64>>2]|0; + $sum$i16 = (($65) + ($width))|0; + $$sum$i17 = (0 - ($sum$i16))|0; + $66 = (($$03$i14) + ($$sum$i17)|0); + $68 = (FUNCTION_TABLE_iii[$cmp & 15]($67,$66)|0); + $69 = ($68|0)>(-1); + if ($69) { + $70 = (FUNCTION_TABLE_iii[$cmp & 15]($67,$62)|0); + $71 = ($70|0)>(-1); + if ($71) { + $i$0$lcssa$i23 = $i$04$i13; + break; + } + } + $72 = (FUNCTION_TABLE_iii[$cmp & 15]($66,$62)|0); + $73 = ($72|0)>(-1); + $74 = (($i$04$i13) + 1)|0; + $75 = (($ar$i) + ($i$04$i13<<2)|0); + if ($73) { + HEAP32[$75>>2] = $66; + $76 = (($$012$i15) + -1)|0; + $$0$be$i19 = $66;$$01$be$i18 = $76; + } else { + HEAP32[$75>>2] = $62; + $$0$be$i19 = $62;$$01$be$i18 = $63; + } + $77 = ($$01$be$i18|0)>(1); + if (!($77)) { + $i$0$lcssa$i23 = $74; + break; + } + $$pre$i21 = HEAP32[$ar$i>>2]|0; + $$012$i15 = $$01$be$i18;$$03$i14 = $$0$be$i19;$67 = $$pre$i21;$i$04$i13 = $74; + } + $78 = ($i$0$lcssa$i23|0)<(2); + if (!($78)) { + $79 = (($ar$i) + ($i$0$lcssa$i23<<2)|0); + HEAP32[$79>>2] = $tmp$i25; + if (!($13)) { + $$02$us$i30 = $width;$91 = $tmp$i25; + while(1) { + $89 = ($$02$us$i30>>>0)>(256); + $81 = $89 ? 256 : $$02$us$i30; + $90 = HEAP32[$ar$i>>2]|0; + _memcpy(($91|0),($90|0),($81|0))|0; + $87 = $90;$i$01$us$i28 = 0; + while(1) { + $83 = (($ar$i) + ($i$01$us$i28<<2)|0); + $84 = (($i$01$us$i28) + 1)|0; + $85 = (($ar$i) + ($84<<2)|0); + $86 = HEAP32[$85>>2]|0; + _memcpy(($87|0),($86|0),($81|0))|0; + $88 = (($87) + ($81)|0); + HEAP32[$83>>2] = $88; + $exitcond$i29 = ($84|0)==($i$0$lcssa$i23|0); + if ($exitcond$i29) { + break; + } else { + $87 = $86;$i$01$us$i28 = $84; + } + } + $80 = ($$02$us$i30|0)==($81|0); + if ($80) { + break L38; + } + $82 = (($$02$us$i30) - ($81))|0; + $$pre6$i26 = HEAP32[$79>>2]|0; + $$02$us$i30 = $82;$91 = $$pre6$i26; + } + } + } + } else { + } + } while(0); + } else { + _trinkle($head$076,$width,$cmp,$16,$51,$pshift$077,0,$lp); + } + $92 = ($pshift$077|0)==(1); + if ($92) { + $93 = $51 << 1; + $94 = $16 >>> 31; + $95 = $94 | $93; + $96 = $16 << 1; + $105 = $96;$168 = $95;$pshift$1 = 0; + break; + } else { + $97 = ($55>>>0)>(31); + $98 = (($pshift$077) + -33)|0; + $$ = $97 ? 0 : $16; + $$66 = $97 ? $16 : $51; + $$67 = $97 ? $98 : $55; + $99 = $$66 << $$67; + $100 = (32 - ($$67))|0; + $101 = $$ >>> $100; + $102 = $101 | $99; + $103 = $$ << $$67; + $105 = $103;$168 = $102;$pshift$1 = 1; + break; + } + } + } while(0); + $104 = $105 | 1; + $106 = (($head$076) + ($width)|0); + $107 = ($106>>>0)<($11>>>0); + if ($107) { + $16 = $104;$51 = $168;$head$076 = $106;$pshift$077 = $pshift$1; + } else { + $$lcssa70 = $168;$$lcssa71 = $104;$head$0$lcssa = $106;$pshift$0$lcssa = $pshift$1; + break; + } + } + } else { + $$lcssa70 = 0;$$lcssa71 = 1;$head$0$lcssa = $base;$pshift$0$lcssa = 1; + } + _trinkle($head$0$lcssa,$width,$cmp,$$lcssa71,$$lcssa70,$pshift$0$lcssa,0,$lp); + $108 = ($pshift$0$lcssa|0)==(1); + $109 = ($$lcssa71|0)==(1); + $or$cond72 = $109 & $108; + $110 = ($$lcssa70|0)==(0); + $or$cond6873 = $110 & $or$cond72; + if ($or$cond6873) { + STACKTOP = sp;return; + } else { + $113 = $$lcssa71;$122 = $$lcssa70;$head$174 = $head$0$lcssa;$pshift$275 = $pshift$0$lcssa; + } + while(1) { + $111 = ($pshift$275|0)<(2); + if (!($111)) { + $136 = $122 << 2; + $137 = $113 >>> 30; + $138 = $137 | $136; + $139 = (($pshift$275) + -2)|0; + $140 = $113 << 1; + $141 = $140 & 2147483646; + $142 = $137 << 31; + $143 = $141 | $142; + $144 = $143 ^ 3; + $145 = $138 >>> 1; + $146 = (($lp) + ($139<<2)|0); + $147 = HEAP32[$146>>2]|0; + $sum = (($147) + ($width))|0; + $$sum2 = (0 - ($sum))|0; + $148 = (($head$174) + ($$sum2)|0); + $149 = (($pshift$275) + -1)|0; + _trinkle($148,$width,$cmp,$144,$145,$149,1,$lp); + $150 = $145 << 1; + $151 = $137 & 1; + $152 = $150 | $151; + $153 = $144 << 1; + $154 = $153 | 1; + $155 = (($head$174) + ($10)|0); + _trinkle($155,$width,$cmp,$154,$152,$139,1,$lp); + $113 = $154;$122 = $152;$head$174 = $155;$pshift$275 = $139; + continue; + } + $112 = (($113) + -1)|0; + $114 = ($112|0)==(0); + do { + if ($114) { + $135 = 32; + label = 56; + } else { + $115 = $112 & 1; + $116 = ($115|0)==(0); + if ($116) { + $$02$i$i = $112;$nTrailingZeros$03$i$i = 0; + while(1) { + $117 = (($nTrailingZeros$03$i$i) + 1)|0; + $118 = $$02$i$i >>> 1; + $119 = $118 & 1; + $120 = ($119|0)==(0); + if ($120) { + $$02$i$i = $118;$nTrailingZeros$03$i$i = $117; + } else { + $$lcssa = $117; + break; + } + } + $121 = ($$lcssa|0)==(0); + if ($121) { + label = 51; + } else { + $132 = $$lcssa; + } + } else { + label = 51; + } + if ((label|0) == 51) { + label = 0; + $123 = ($122|0)==(0); + if ($123) { + $135 = 64; + label = 56; + break; + } + $124 = $122 & 1; + $125 = ($124|0)==(0); + if ($125) { + $$02$i3$i = $122;$nTrailingZeros$03$i2$i = 0; + } else { + $$0$i44 = 0;$157 = $113;$160 = $122;$164 = 0; + break; + } + while(1) { + $126 = (($nTrailingZeros$03$i2$i) + 1)|0; + $127 = $$02$i3$i >>> 1; + $128 = $127 & 1; + $129 = ($128|0)==(0); + if ($129) { + $$02$i3$i = $127;$nTrailingZeros$03$i2$i = $126; + } else { + $$lcssa102 = $126;$nTrailingZeros$03$i2$i$lcssa = $nTrailingZeros$03$i2$i; + break; + } + } + $130 = (($nTrailingZeros$03$i2$i$lcssa) + 33)|0; + $131 = ($$lcssa102|0)==(0); + if ($131) { + $$0$i44 = 0;$157 = $113;$160 = $122;$164 = 0; + break; + } else { + $132 = $130; + } + } + $133 = ($132>>>0)>(31); + if ($133) { + $135 = $132; + label = 56; + } else { + $$0$i44 = $132;$157 = $113;$160 = $122;$164 = $132; + } + } + } while(0); + if ((label|0) == 56) { + label = 0; + $134 = (($135) + -32)|0; + $$0$i44 = $134;$157 = $122;$160 = 0;$164 = $135; + } + $156 = $157 >>> $$0$i44; + $158 = (32 - ($$0$i44))|0; + $159 = $160 << $158; + $161 = $159 | $156; + $162 = $160 >>> $$0$i44; + $163 = (($164) + ($pshift$275))|0; + $$pre = (($head$174) + ($10)|0); + $165 = ($163|0)==(1); + $166 = ($161|0)==(1); + $or$cond = $166 & $165; + $167 = ($162|0)==(0); + $or$cond68 = $167 & $or$cond; + if ($or$cond68) { + break; + } else { + $113 = $161;$122 = $162;$head$174 = $$pre;$pshift$275 = $163; + } + } + STACKTOP = sp;return; +} +function _trinkle($head,$width,$cmp,$pp$val,$pp$1$val,$pshift,$trusty,$lp) { + $head = $head|0; + $width = $width|0; + $cmp = $cmp|0; + $pp$val = $pp$val|0; + $pp$1$val = $pp$1$val|0; + $pshift = $pshift|0; + $trusty = $trusty|0; + $lp = $lp|0; + var $$0$be$i = 0, $$0$i = 0, $$0$lcssa = 0, $$0$lcssa49 = 0, $$01$be$i = 0, $$01162 = 0, $$01162$phi = 0, $$012$i = 0, $$02$i$i = 0, $$02$i3$i = 0, $$02$lcssa = 0, $$02$lcssa51 = 0, $$02$us$i = 0, $$02$us$i10 = 0, $$02964 = 0, $$03$i = 0, $$03$lcssa = 0, $$03865 = 0, $$lcssa = 0, $$lcssa76 = 0; + var $$pre = 0, $$pre$i = 0, $$pre6$i = 0, $$pre6$i6 = 0, $$sum = 0, $$sum$i = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0; + var $110 = 0, $111 = 0, $112 = 0, $113 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0; + var $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0; + var $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0; + var $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0; + var $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0; + var $ar = 0, $ar$i = 0, $exitcond$i = 0, $exitcond$i9 = 0, $i$0$lcssa = 0, $i$0$lcssa$i = 0, $i$0$lcssa50 = 0, $i$01$us$i = 0, $i$01$us$i8 = 0, $i$01063 = 0, $i$04$i = 0, $nTrailingZeros$03$i$i = 0, $nTrailingZeros$03$i2$i = 0, $nTrailingZeros$03$i2$i$lcssa = 0, $or$cond = 0, $pp$val1666 = 0, $sum = 0, $sum$i = 0, $tmp$i5 = 0, label = 0; + var sp = 0; + sp = STACKTOP; + STACKTOP = STACKTOP + 720|0; + $tmp$i5 = sp + 456|0; + $ar$i = sp + 228|0; + $ar = sp; + HEAP32[$ar>>2] = $head; + $0 = (0 - ($width))|0; + $1 = ($pp$val|0)!=(1); + $2 = ($pp$1$val|0)!=(0); + $3 = $2 | $1; + L1: do { + if ($3) { + $4 = (($lp) + ($pshift<<2)|0); + $5 = HEAP32[$4>>2]|0; + $6 = (0 - ($5))|0; + $7 = (($head) + ($6)|0); + $8 = (FUNCTION_TABLE_iii[$cmp & 15]($7,$head)|0); + $9 = ($8|0)<(1); + if ($9) { + $$0$lcssa = $head;$$02$lcssa = $pshift;$$03$lcssa = $trusty;$i$0$lcssa = 1; + label = 18; + } else { + $$01162 = $head;$$02964 = $pshift;$$03865 = $trusty;$16 = $7;$33 = $pp$1$val;$i$01063 = 1;$pp$val1666 = $pp$val; + while(1) { + $10 = ($$03865|0)==(0); + $11 = ($$02964|0)>(1); + $or$cond = $10 & $11; + if ($or$cond) { + $12 = (($$01162) + ($0)|0); + $13 = (($$02964) + -2)|0; + $14 = (($lp) + ($13<<2)|0); + $15 = HEAP32[$14>>2]|0; + $17 = (FUNCTION_TABLE_iii[$cmp & 15]($12,$16)|0); + $18 = ($17|0)>(-1); + if ($18) { + $$0$lcssa49 = $$01162;$$02$lcssa51 = $$02964;$i$0$lcssa50 = $i$01063; + break L1; + } + $sum = (($15) + ($width))|0; + $$sum = (0 - ($sum))|0; + $19 = (($$01162) + ($$sum)|0); + $20 = (FUNCTION_TABLE_iii[$cmp & 15]($19,$16)|0); + $21 = ($20|0)>(-1); + if ($21) { + $$0$lcssa49 = $$01162;$$02$lcssa51 = $$02964;$i$0$lcssa50 = $i$01063; + break L1; + } + } + $22 = (($i$01063) + 1)|0; + $23 = (($ar) + ($i$01063<<2)|0); + HEAP32[$23>>2] = $16; + $24 = (($pp$val1666) + -1)|0; + $25 = ($24|0)==(0); + do { + if ($25) { + $46 = 32; + label = 15; + } else { + $26 = $24 & 1; + $27 = ($26|0)==(0); + if ($27) { + $$02$i$i = $24;$nTrailingZeros$03$i$i = 0; + while(1) { + $28 = (($nTrailingZeros$03$i$i) + 1)|0; + $29 = $$02$i$i >>> 1; + $30 = $29 & 1; + $31 = ($30|0)==(0); + if ($31) { + $$02$i$i = $29;$nTrailingZeros$03$i$i = $28; + } else { + $$lcssa = $28; + break; + } + } + $32 = ($$lcssa|0)==(0); + if ($32) { + label = 10; + } else { + $43 = $$lcssa; + } + } else { + label = 10; + } + if ((label|0) == 10) { + label = 0; + $34 = ($33|0)==(0); + if ($34) { + $46 = 64; + label = 15; + break; + } + $35 = $33 & 1; + $36 = ($35|0)==(0); + if ($36) { + $$02$i3$i = $33;$nTrailingZeros$03$i2$i = 0; + } else { + $$0$i = 0;$48 = $pp$val1666;$51 = $33;$55 = 0; + break; + } + while(1) { + $37 = (($nTrailingZeros$03$i2$i) + 1)|0; + $38 = $$02$i3$i >>> 1; + $39 = $38 & 1; + $40 = ($39|0)==(0); + if ($40) { + $$02$i3$i = $38;$nTrailingZeros$03$i2$i = $37; + } else { + $$lcssa76 = $37;$nTrailingZeros$03$i2$i$lcssa = $nTrailingZeros$03$i2$i; + break; + } + } + $41 = (($nTrailingZeros$03$i2$i$lcssa) + 33)|0; + $42 = ($$lcssa76|0)==(0); + if ($42) { + $$0$i = 0;$48 = $pp$val1666;$51 = $33;$55 = 0; + break; + } else { + $43 = $41; + } + } + $44 = ($43>>>0)>(31); + if ($44) { + $46 = $43; + label = 15; + } else { + $$0$i = $43;$48 = $pp$val1666;$51 = $33;$55 = $43; + } + } + } while(0); + if ((label|0) == 15) { + label = 0; + $45 = (($46) + -32)|0; + $$0$i = $45;$48 = $33;$51 = 0;$55 = $46; + } + $47 = $48 >>> $$0$i; + $49 = (32 - ($$0$i))|0; + $50 = $51 << $49; + $52 = $50 | $47; + $53 = $51 >>> $$0$i; + $54 = (($55) + ($$02964))|0; + $56 = ($52|0)!=(1); + $57 = ($53|0)!=(0); + $58 = $57 | $56; + if (!($58)) { + $$0$lcssa49 = $16;$$02$lcssa51 = $54;$i$0$lcssa50 = $22; + break L1; + } + $$pre = HEAP32[$ar>>2]|0; + $59 = (($lp) + ($54<<2)|0); + $60 = HEAP32[$59>>2]|0; + $61 = (0 - ($60))|0; + $62 = (($16) + ($61)|0); + $63 = (FUNCTION_TABLE_iii[$cmp & 15]($62,$$pre)|0); + $64 = ($63|0)<(1); + if ($64) { + $$0$lcssa = $16;$$02$lcssa = $54;$$03$lcssa = 0;$i$0$lcssa = $22; + label = 18; + break; + } else { + $$01162$phi = $16;$$02964 = $54;$$03865 = 0;$16 = $62;$33 = $53;$i$01063 = $22;$pp$val1666 = $52;$$01162 = $$01162$phi; + } + } + } + } else { + $$0$lcssa = $head;$$02$lcssa = $pshift;$$03$lcssa = $trusty;$i$0$lcssa = 1; + label = 18; + } + } while(0); + if ((label|0) == 18) { + $65 = ($$03$lcssa|0)==(0); + if ($65) { + $$0$lcssa49 = $$0$lcssa;$$02$lcssa51 = $$02$lcssa;$i$0$lcssa50 = $i$0$lcssa; + } else { + STACKTOP = sp;return; + } + } + $66 = ($i$0$lcssa50|0)<(2); + L30: do { + if (!($66)) { + $67 = (($ar) + ($i$0$lcssa50<<2)|0); + HEAP32[$67>>2] = $tmp$i5; + $68 = ($width|0)==(0); + if (!($68)) { + $$02$us$i10 = $width;$80 = $tmp$i5; + while(1) { + $78 = ($$02$us$i10>>>0)>(256); + $70 = $78 ? 256 : $$02$us$i10; + $79 = HEAP32[$ar>>2]|0; + _memcpy(($80|0),($79|0),($70|0))|0; + $76 = $79;$i$01$us$i8 = 0; + while(1) { + $72 = (($ar) + ($i$01$us$i8<<2)|0); + $73 = (($i$01$us$i8) + 1)|0; + $74 = (($ar) + ($73<<2)|0); + $75 = HEAP32[$74>>2]|0; + _memcpy(($76|0),($75|0),($70|0))|0; + $77 = (($76) + ($70)|0); + HEAP32[$72>>2] = $77; + $exitcond$i9 = ($73|0)==($i$0$lcssa50|0); + if ($exitcond$i9) { + break; + } else { + $76 = $75;$i$01$us$i8 = $73; + } + } + $69 = ($$02$us$i10|0)==($70|0); + if ($69) { + break L30; + } + $71 = (($$02$us$i10) - ($70))|0; + $$pre6$i6 = HEAP32[$67>>2]|0; + $$02$us$i10 = $71;$80 = $$pre6$i6; + } + } + } + } while(0); + HEAP32[$ar$i>>2] = $$0$lcssa49; + $81 = ($$02$lcssa51|0)>(1); + L39: do { + if ($81) { + $$012$i = $$02$lcssa51;$$03$i = $$0$lcssa49;$87 = $$0$lcssa49;$i$04$i = 1; + while(1) { + $82 = (($$03$i) + ($0)|0); + $83 = (($$012$i) + -2)|0; + $84 = (($lp) + ($83<<2)|0); + $85 = HEAP32[$84>>2]|0; + $sum$i = (($85) + ($width))|0; + $$sum$i = (0 - ($sum$i))|0; + $86 = (($$03$i) + ($$sum$i)|0); + $88 = (FUNCTION_TABLE_iii[$cmp & 15]($87,$86)|0); + $89 = ($88|0)>(-1); + if ($89) { + $90 = (FUNCTION_TABLE_iii[$cmp & 15]($87,$82)|0); + $91 = ($90|0)>(-1); + if ($91) { + $i$0$lcssa$i = $i$04$i; + break; + } + } + $92 = (FUNCTION_TABLE_iii[$cmp & 15]($86,$82)|0); + $93 = ($92|0)>(-1); + $94 = (($i$04$i) + 1)|0; + $95 = (($ar$i) + ($i$04$i<<2)|0); + if ($93) { + HEAP32[$95>>2] = $86; + $96 = (($$012$i) + -1)|0; + $$0$be$i = $86;$$01$be$i = $96; + } else { + HEAP32[$95>>2] = $82; + $$0$be$i = $82;$$01$be$i = $83; + } + $97 = ($$01$be$i|0)>(1); + if (!($97)) { + $i$0$lcssa$i = $94; + break; + } + $$pre$i = HEAP32[$ar$i>>2]|0; + $$012$i = $$01$be$i;$$03$i = $$0$be$i;$87 = $$pre$i;$i$04$i = $94; + } + $98 = ($i$0$lcssa$i|0)<(2); + if ($98) { + $113 = $tmp$i5; + } else { + $99 = (($ar$i) + ($i$0$lcssa$i<<2)|0); + HEAP32[$99>>2] = $tmp$i5; + $100 = ($width|0)==(0); + if ($100) { + $113 = $tmp$i5; + } else { + $$02$us$i = $width;$112 = $tmp$i5; + while(1) { + $110 = ($$02$us$i>>>0)>(256); + $102 = $110 ? 256 : $$02$us$i; + $111 = HEAP32[$ar$i>>2]|0; + _memcpy(($112|0),($111|0),($102|0))|0; + $108 = $111;$i$01$us$i = 0; + while(1) { + $104 = (($ar$i) + ($i$01$us$i<<2)|0); + $105 = (($i$01$us$i) + 1)|0; + $106 = (($ar$i) + ($105<<2)|0); + $107 = HEAP32[$106>>2]|0; + _memcpy(($108|0),($107|0),($102|0))|0; + $109 = (($108) + ($102)|0); + HEAP32[$104>>2] = $109; + $exitcond$i = ($105|0)==($i$0$lcssa$i|0); + if ($exitcond$i) { + break; + } else { + $108 = $107;$i$01$us$i = $105; + } + } + $101 = ($$02$us$i|0)==($102|0); + if ($101) { + $113 = $tmp$i5; + break L39; + } + $103 = (($$02$us$i) - ($102))|0; + $$pre6$i = HEAP32[$99>>2]|0; + $$02$us$i = $103;$112 = $$pre6$i; + } + } + } + } else { + $113 = $tmp$i5; + } + } while(0); + STACKTOP = sp;return; +} +function _rint($x) { + $x = +$x; + var $$0 = 0.0, $0 = 0, $1 = 0, $10 = 0.0, $11 = 0.0, $12 = 0.0, $13 = 0, $14 = 0.0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0.0, $y$0 = 0.0, label = 0, sp = 0; + sp = STACKTOP; + HEAPF64[tempDoublePtr>>3] = $x;$0 = HEAP32[tempDoublePtr>>2]|0; + $1 = HEAP32[tempDoublePtr+4>>2]|0; + $2 = $1 & 2146435072; + $3 = ($2>>>0)>(1126170624); + $4 = (0)>(0); + $5 = ($2|0)==(1126170624); + $6 = $5 & $4; + $7 = $3 | $6; + if ($7) { + $$0 = $x; + return (+$$0); + } + $8 = ($1|0)<(0); + $9 = $x + -4503599627370496.0; + $10 = $9 + 4503599627370496.0; + $11 = $x + 4503599627370496.0; + $12 = $11 + -4503599627370496.0; + $y$0 = $8 ? $10 : $12; + $13 = $y$0 == 0.0; + if (!($13)) { + $$0 = $y$0; + return (+$$0); + } + $14 = $8 ? -0.0 : 0.0; + $$0 = $14; + return (+$$0); +} +function _rintf($x) { + $x = +$x; + var $$0 = 0.0, $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0.0, $5 = 0.0, $6 = 0.0, $7 = 0.0, $8 = 0, $9 = 0.0, $y$0 = 0.0, label = 0, sp = 0; + sp = STACKTOP; + $0 = (HEAPF32[tempDoublePtr>>2]=$x,HEAP32[tempDoublePtr>>2]|0); + $1 = $0 & 2130706432; + $2 = ($1>>>0)>(1249902592); + if ($2) { + $$0 = $x; + return (+$$0); + } + $3 = ($0|0)<(0); + $4 = $x + -8388608.0; + $5 = $4 + 8388608.0; + $6 = $x + 8388608.0; + $7 = $6 + -8388608.0; + $y$0 = $3 ? $5 : $7; + $8 = $y$0 == 0.0; + if (!($8)) { + $$0 = $y$0; + return (+$$0); + } + $9 = $3 ? -0.0 : 0.0; + $$0 = $9; + return (+$$0); +} +function _scalbn($x,$n) { + $x = +$x; + $n = $n|0; + var $$ = 0, $$0 = 0, $$1 = 0, $0 = 0, $1 = 0.0, $10 = 0, $11 = 0.0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0.0, $18 = 0.0, $2 = 0, $3 = 0, $4 = 0.0, $5 = 0, $6 = 0, $7 = 0; + var $8 = 0.0, $9 = 0, $y$0 = 0.0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($n|0)>(1023); + if ($0) { + $1 = $x * 8.9884656743115795E+307; + $2 = (($n) + -1023)|0; + $3 = ($2|0)>(1023); + if ($3) { + $4 = $1 * 8.9884656743115795E+307; + $5 = (($n) + -2046)|0; + $6 = ($5|0)>(1023); + $$ = $6 ? 1023 : $5; + $$0 = $$;$y$0 = $4; + } else { + $$0 = $2;$y$0 = $1; + } + } else { + $7 = ($n|0)<(-1022); + if ($7) { + $8 = $x * 2.2250738585072014E-308; + $9 = (($n) + 1022)|0; + $10 = ($9|0)<(-1022); + if ($10) { + $11 = $8 * 2.2250738585072014E-308; + $12 = (($n) + 2044)|0; + $13 = ($12|0)<(-1022); + $$1 = $13 ? -1022 : $12; + $$0 = $$1;$y$0 = $11; + } else { + $$0 = $9;$y$0 = $8; + } + } else { + $$0 = $n;$y$0 = $x; + } + } + $14 = (($$0) + 1023)|0; + $15 = (_bitshift64Shl(($14|0),0,52)|0); + $16 = tempRet0; + HEAP32[tempDoublePtr>>2] = $15;HEAP32[tempDoublePtr+4>>2] = $16;$17 = +HEAPF64[tempDoublePtr>>3]; + $18 = $y$0 * $17; + return (+$18); +} +function _srand($s) { + $s = $s|0; + var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = (($s) + -1)|0; + $1 = 553040; + $2 = $1; + HEAP32[$2>>2] = $0; + $3 = (($1) + 4)|0; + $4 = $3; + HEAP32[$4>>2] = 0; + return; +} +function _rand() { + var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = 553040; + $1 = $0; + $2 = HEAP32[$1>>2]|0; + $3 = (($0) + 4)|0; + $4 = $3; + $5 = HEAP32[$4>>2]|0; + $6 = (___muldi3(($2|0),($5|0),1284865837,1481765933)|0); + $7 = tempRet0; + $8 = (_i64Add(($6|0),($7|0),1,0)|0); + $9 = tempRet0; + $10 = 553040; + $11 = $10; + HEAP32[$11>>2] = $8; + $12 = (($10) + 4)|0; + $13 = $12; + HEAP32[$13>>2] = $9; + $14 = (_bitshift64Lshr(($8|0),($9|0),33)|0); + $15 = tempRet0; + return ($14|0); +} +function _malloc($bytes) { + $bytes = $bytes|0; + var $$3$i = 0, $$lcssa = 0, $$lcssa211 = 0, $$lcssa215 = 0, $$lcssa216 = 0, $$lcssa217 = 0, $$lcssa219 = 0, $$lcssa222 = 0, $$lcssa224 = 0, $$lcssa226 = 0, $$lcssa228 = 0, $$lcssa230 = 0, $$lcssa232 = 0, $$pre = 0, $$pre$i = 0, $$pre$i$i = 0, $$pre$i22$i = 0, $$pre$i25 = 0, $$pre$phi$i$iZ2D = 0, $$pre$phi$i23$iZ2D = 0; + var $$pre$phi$i26Z2D = 0, $$pre$phi$iZ2D = 0, $$pre$phi58$i$iZ2D = 0, $$pre$phiZ2D = 0, $$pre105 = 0, $$pre106 = 0, $$pre14$i$i = 0, $$pre43$i = 0, $$pre56$i$i = 0, $$pre57$i$i = 0, $$pre8$i = 0, $$rsize$0$i = 0, $$rsize$3$i = 0, $$sum = 0, $$sum$i$i = 0, $$sum$i$i$i = 0, $$sum$i13$i = 0, $$sum$i14$i = 0, $$sum$i17$i = 0, $$sum$i19$i = 0; + var $$sum$i2334 = 0, $$sum$i32 = 0, $$sum$i35 = 0, $$sum1 = 0, $$sum1$i = 0, $$sum1$i$i = 0, $$sum1$i15$i = 0, $$sum1$i20$i = 0, $$sum1$i24 = 0, $$sum10 = 0, $$sum10$i = 0, $$sum10$i$i = 0, $$sum11$i = 0, $$sum11$i$i = 0, $$sum1112 = 0, $$sum112$i = 0, $$sum113$i = 0, $$sum114$i = 0, $$sum115$i = 0, $$sum116$i = 0; + var $$sum117$i = 0, $$sum118$i = 0, $$sum119$i = 0, $$sum12$i = 0, $$sum12$i$i = 0, $$sum120$i = 0, $$sum121$i = 0, $$sum122$i = 0, $$sum123$i = 0, $$sum124$i = 0, $$sum125$i = 0, $$sum13$i = 0, $$sum13$i$i = 0, $$sum14$i$i = 0, $$sum15$i = 0, $$sum15$i$i = 0, $$sum16$i = 0, $$sum16$i$i = 0, $$sum17$i = 0, $$sum17$i$i = 0; + var $$sum18$i = 0, $$sum1819$i$i = 0, $$sum2 = 0, $$sum2$i = 0, $$sum2$i$i = 0, $$sum2$i$i$i = 0, $$sum2$i16$i = 0, $$sum2$i18$i = 0, $$sum2$i21$i = 0, $$sum20$i$i = 0, $$sum21$i$i = 0, $$sum22$i$i = 0, $$sum23$i$i = 0, $$sum24$i$i = 0, $$sum25$i$i = 0, $$sum27$i$i = 0, $$sum28$i$i = 0, $$sum29$i$i = 0, $$sum3$i = 0, $$sum3$i27 = 0; + var $$sum30$i$i = 0, $$sum3132$i$i = 0, $$sum34$i$i = 0, $$sum3536$i$i = 0, $$sum3738$i$i = 0, $$sum39$i$i = 0, $$sum4 = 0, $$sum4$i = 0, $$sum4$i$i = 0, $$sum4$i28 = 0, $$sum40$i$i = 0, $$sum41$i$i = 0, $$sum42$i$i = 0, $$sum5$i = 0, $$sum5$i$i = 0, $$sum56 = 0, $$sum6$i = 0, $$sum67$i$i = 0, $$sum7$i = 0, $$sum8$i = 0; + var $$sum9 = 0, $$sum9$i = 0, $$sum9$i$i = 0, $$tsize$1$i = 0, $$v$0$i = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $1000 = 0, $1001 = 0, $1002 = 0, $1003 = 0, $1004 = 0, $1005 = 0, $1006 = 0, $1007 = 0, $1008 = 0, $1009 = 0, $101 = 0; + var $1010 = 0, $1011 = 0, $1012 = 0, $1013 = 0, $1014 = 0, $1015 = 0, $1016 = 0, $1017 = 0, $1018 = 0, $1019 = 0, $102 = 0, $1020 = 0, $1021 = 0, $1022 = 0, $1023 = 0, $1024 = 0, $1025 = 0, $1026 = 0, $1027 = 0, $1028 = 0; + var $1029 = 0, $103 = 0, $1030 = 0, $1031 = 0, $1032 = 0, $1033 = 0, $1034 = 0, $1035 = 0, $1036 = 0, $1037 = 0, $1038 = 0, $1039 = 0, $104 = 0, $1040 = 0, $1041 = 0, $1042 = 0, $1043 = 0, $1044 = 0, $1045 = 0, $1046 = 0; + var $1047 = 0, $1048 = 0, $1049 = 0, $105 = 0, $1050 = 0, $1051 = 0, $1052 = 0, $1053 = 0, $1054 = 0, $1055 = 0, $1056 = 0, $1057 = 0, $1058 = 0, $1059 = 0, $106 = 0, $1060 = 0, $1061 = 0, $1062 = 0, $1063 = 0, $1064 = 0; + var $1065 = 0, $1066 = 0, $1067 = 0, $1068 = 0, $1069 = 0, $107 = 0, $1070 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0; + var $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0; + var $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0; + var $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0; + var $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0, $190 = 0, $191 = 0; + var $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0; + var $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0; + var $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0; + var $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0; + var $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0; + var $282 = 0, $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0, $297 = 0, $298 = 0, $299 = 0, $3 = 0; + var $30 = 0, $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0; + var $318 = 0, $319 = 0, $32 = 0, $320 = 0, $321 = 0, $322 = 0, $323 = 0, $324 = 0, $325 = 0, $326 = 0, $327 = 0, $328 = 0, $329 = 0, $33 = 0, $330 = 0, $331 = 0, $332 = 0, $333 = 0, $334 = 0, $335 = 0; + var $336 = 0, $337 = 0, $338 = 0, $339 = 0, $34 = 0, $340 = 0, $341 = 0, $342 = 0, $343 = 0, $344 = 0, $345 = 0, $346 = 0, $347 = 0, $348 = 0, $349 = 0, $35 = 0, $350 = 0, $351 = 0, $352 = 0, $353 = 0; + var $354 = 0, $355 = 0, $356 = 0, $357 = 0, $358 = 0, $359 = 0, $36 = 0, $360 = 0, $361 = 0, $362 = 0, $363 = 0, $364 = 0, $365 = 0, $366 = 0, $367 = 0, $368 = 0, $369 = 0, $37 = 0, $370 = 0, $371 = 0; + var $372 = 0, $373 = 0, $374 = 0, $375 = 0, $376 = 0, $377 = 0, $378 = 0, $379 = 0, $38 = 0, $380 = 0, $381 = 0, $382 = 0, $383 = 0, $384 = 0, $385 = 0, $386 = 0, $387 = 0, $388 = 0, $389 = 0, $39 = 0; + var $390 = 0, $391 = 0, $392 = 0, $393 = 0, $394 = 0, $395 = 0, $396 = 0, $397 = 0, $398 = 0, $399 = 0, $4 = 0, $40 = 0, $400 = 0, $401 = 0, $402 = 0, $403 = 0, $404 = 0, $405 = 0, $406 = 0, $407 = 0; + var $408 = 0, $409 = 0, $41 = 0, $410 = 0, $411 = 0, $412 = 0, $413 = 0, $414 = 0, $415 = 0, $416 = 0, $417 = 0, $418 = 0, $419 = 0, $42 = 0, $420 = 0, $421 = 0, $422 = 0, $423 = 0, $424 = 0, $425 = 0; + var $426 = 0, $427 = 0, $428 = 0, $429 = 0, $43 = 0, $430 = 0, $431 = 0, $432 = 0, $433 = 0, $434 = 0, $435 = 0, $436 = 0, $437 = 0, $438 = 0, $439 = 0, $44 = 0, $440 = 0, $441 = 0, $442 = 0, $443 = 0; + var $444 = 0, $445 = 0, $446 = 0, $447 = 0, $448 = 0, $449 = 0, $45 = 0, $450 = 0, $451 = 0, $452 = 0, $453 = 0, $454 = 0, $455 = 0, $456 = 0, $457 = 0, $458 = 0, $459 = 0, $46 = 0, $460 = 0, $461 = 0; + var $462 = 0, $463 = 0, $464 = 0, $465 = 0, $466 = 0, $467 = 0, $468 = 0, $469 = 0, $47 = 0, $470 = 0, $471 = 0, $472 = 0, $473 = 0, $474 = 0, $475 = 0, $476 = 0, $477 = 0, $478 = 0, $479 = 0, $48 = 0; + var $480 = 0, $481 = 0, $482 = 0, $483 = 0, $484 = 0, $485 = 0, $486 = 0, $487 = 0, $488 = 0, $489 = 0, $49 = 0, $490 = 0, $491 = 0, $492 = 0, $493 = 0, $494 = 0, $495 = 0, $496 = 0, $497 = 0, $498 = 0; + var $499 = 0, $5 = 0, $50 = 0, $500 = 0, $501 = 0, $502 = 0, $503 = 0, $504 = 0, $505 = 0, $506 = 0, $507 = 0, $508 = 0, $509 = 0, $51 = 0, $510 = 0, $511 = 0, $512 = 0, $513 = 0, $514 = 0, $515 = 0; + var $516 = 0, $517 = 0, $518 = 0, $519 = 0, $52 = 0, $520 = 0, $521 = 0, $522 = 0, $523 = 0, $524 = 0, $525 = 0, $526 = 0, $527 = 0, $528 = 0, $529 = 0, $53 = 0, $530 = 0, $531 = 0, $532 = 0, $533 = 0; + var $534 = 0, $535 = 0, $536 = 0, $537 = 0, $538 = 0, $539 = 0, $54 = 0, $540 = 0, $541 = 0, $542 = 0, $543 = 0, $544 = 0, $545 = 0, $546 = 0, $547 = 0, $548 = 0, $549 = 0, $55 = 0, $550 = 0, $551 = 0; + var $552 = 0, $553 = 0, $554 = 0, $555 = 0, $556 = 0, $557 = 0, $558 = 0, $559 = 0, $56 = 0, $560 = 0, $561 = 0, $562 = 0, $563 = 0, $564 = 0, $565 = 0, $566 = 0, $567 = 0, $568 = 0, $569 = 0, $57 = 0; + var $570 = 0, $571 = 0, $572 = 0, $573 = 0, $574 = 0, $575 = 0, $576 = 0, $577 = 0, $578 = 0, $579 = 0, $58 = 0, $580 = 0, $581 = 0, $582 = 0, $583 = 0, $584 = 0, $585 = 0, $586 = 0, $587 = 0, $588 = 0; + var $589 = 0, $59 = 0, $590 = 0, $591 = 0, $592 = 0, $593 = 0, $594 = 0, $595 = 0, $596 = 0, $597 = 0, $598 = 0, $599 = 0, $6 = 0, $60 = 0, $600 = 0, $601 = 0, $602 = 0, $603 = 0, $604 = 0, $605 = 0; + var $606 = 0, $607 = 0, $608 = 0, $609 = 0, $61 = 0, $610 = 0, $611 = 0, $612 = 0, $613 = 0, $614 = 0, $615 = 0, $616 = 0, $617 = 0, $618 = 0, $619 = 0, $62 = 0, $620 = 0, $621 = 0, $622 = 0, $623 = 0; + var $624 = 0, $625 = 0, $626 = 0, $627 = 0, $628 = 0, $629 = 0, $63 = 0, $630 = 0, $631 = 0, $632 = 0, $633 = 0, $634 = 0, $635 = 0, $636 = 0, $637 = 0, $638 = 0, $639 = 0, $64 = 0, $640 = 0, $641 = 0; + var $642 = 0, $643 = 0, $644 = 0, $645 = 0, $646 = 0, $647 = 0, $648 = 0, $649 = 0, $65 = 0, $650 = 0, $651 = 0, $652 = 0, $653 = 0, $654 = 0, $655 = 0, $656 = 0, $657 = 0, $658 = 0, $659 = 0, $66 = 0; + var $660 = 0, $661 = 0, $662 = 0, $663 = 0, $664 = 0, $665 = 0, $666 = 0, $667 = 0, $668 = 0, $669 = 0, $67 = 0, $670 = 0, $671 = 0, $672 = 0, $673 = 0, $674 = 0, $675 = 0, $676 = 0, $677 = 0, $678 = 0; + var $679 = 0, $68 = 0, $680 = 0, $681 = 0, $682 = 0, $683 = 0, $684 = 0, $685 = 0, $686 = 0, $687 = 0, $688 = 0, $689 = 0, $69 = 0, $690 = 0, $691 = 0, $692 = 0, $693 = 0, $694 = 0, $695 = 0, $696 = 0; + var $697 = 0, $698 = 0, $699 = 0, $7 = 0, $70 = 0, $700 = 0, $701 = 0, $702 = 0, $703 = 0, $704 = 0, $705 = 0, $706 = 0, $707 = 0, $708 = 0, $709 = 0, $71 = 0, $710 = 0, $711 = 0, $712 = 0, $713 = 0; + var $714 = 0, $715 = 0, $716 = 0, $717 = 0, $718 = 0, $719 = 0, $72 = 0, $720 = 0, $721 = 0, $722 = 0, $723 = 0, $724 = 0, $725 = 0, $726 = 0, $727 = 0, $728 = 0, $729 = 0, $73 = 0, $730 = 0, $731 = 0; + var $732 = 0, $733 = 0, $734 = 0, $735 = 0, $736 = 0, $737 = 0, $738 = 0, $739 = 0, $74 = 0, $740 = 0, $741 = 0, $742 = 0, $743 = 0, $744 = 0, $745 = 0, $746 = 0, $747 = 0, $748 = 0, $749 = 0, $75 = 0; + var $750 = 0, $751 = 0, $752 = 0, $753 = 0, $754 = 0, $755 = 0, $756 = 0, $757 = 0, $758 = 0, $759 = 0, $76 = 0, $760 = 0, $761 = 0, $762 = 0, $763 = 0, $764 = 0, $765 = 0, $766 = 0, $767 = 0, $768 = 0; + var $769 = 0, $77 = 0, $770 = 0, $771 = 0, $772 = 0, $773 = 0, $774 = 0, $775 = 0, $776 = 0, $777 = 0, $778 = 0, $779 = 0, $78 = 0, $780 = 0, $781 = 0, $782 = 0, $783 = 0, $784 = 0, $785 = 0, $786 = 0; + var $787 = 0, $788 = 0, $789 = 0, $79 = 0, $790 = 0, $791 = 0, $792 = 0, $793 = 0, $794 = 0, $795 = 0, $796 = 0, $797 = 0, $798 = 0, $799 = 0, $8 = 0, $80 = 0, $800 = 0, $801 = 0, $802 = 0, $803 = 0; + var $804 = 0, $805 = 0, $806 = 0, $807 = 0, $808 = 0, $809 = 0, $81 = 0, $810 = 0, $811 = 0, $812 = 0, $813 = 0, $814 = 0, $815 = 0, $816 = 0, $817 = 0, $818 = 0, $819 = 0, $82 = 0, $820 = 0, $821 = 0; + var $822 = 0, $823 = 0, $824 = 0, $825 = 0, $826 = 0, $827 = 0, $828 = 0, $829 = 0, $83 = 0, $830 = 0, $831 = 0, $832 = 0, $833 = 0, $834 = 0, $835 = 0, $836 = 0, $837 = 0, $838 = 0, $839 = 0, $84 = 0; + var $840 = 0, $841 = 0, $842 = 0, $843 = 0, $844 = 0, $845 = 0, $846 = 0, $847 = 0, $848 = 0, $849 = 0, $85 = 0, $850 = 0, $851 = 0, $852 = 0, $853 = 0, $854 = 0, $855 = 0, $856 = 0, $857 = 0, $858 = 0; + var $859 = 0, $86 = 0, $860 = 0, $861 = 0, $862 = 0, $863 = 0, $864 = 0, $865 = 0, $866 = 0, $867 = 0, $868 = 0, $869 = 0, $87 = 0, $870 = 0, $871 = 0, $872 = 0, $873 = 0, $874 = 0, $875 = 0, $876 = 0; + var $877 = 0, $878 = 0, $879 = 0, $88 = 0, $880 = 0, $881 = 0, $882 = 0, $883 = 0, $884 = 0, $885 = 0, $886 = 0, $887 = 0, $888 = 0, $889 = 0, $89 = 0, $890 = 0, $891 = 0, $892 = 0, $893 = 0, $894 = 0; + var $895 = 0, $896 = 0, $897 = 0, $898 = 0, $899 = 0, $9 = 0, $90 = 0, $900 = 0, $901 = 0, $902 = 0, $903 = 0, $904 = 0, $905 = 0, $906 = 0, $907 = 0, $908 = 0, $909 = 0, $91 = 0, $910 = 0, $911 = 0; + var $912 = 0, $913 = 0, $914 = 0, $915 = 0, $916 = 0, $917 = 0, $918 = 0, $919 = 0, $92 = 0, $920 = 0, $921 = 0, $922 = 0, $923 = 0, $924 = 0, $925 = 0, $926 = 0, $927 = 0, $928 = 0, $929 = 0, $93 = 0; + var $930 = 0, $931 = 0, $932 = 0, $933 = 0, $934 = 0, $935 = 0, $936 = 0, $937 = 0, $938 = 0, $939 = 0, $94 = 0, $940 = 0, $941 = 0, $942 = 0, $943 = 0, $944 = 0, $945 = 0, $946 = 0, $947 = 0, $948 = 0; + var $949 = 0, $95 = 0, $950 = 0, $951 = 0, $952 = 0, $953 = 0, $954 = 0, $955 = 0, $956 = 0, $957 = 0, $958 = 0, $959 = 0, $96 = 0, $960 = 0, $961 = 0, $962 = 0, $963 = 0, $964 = 0, $965 = 0, $966 = 0; + var $967 = 0, $968 = 0, $969 = 0, $97 = 0, $970 = 0, $971 = 0, $972 = 0, $973 = 0, $974 = 0, $975 = 0, $976 = 0, $977 = 0, $978 = 0, $979 = 0, $98 = 0, $980 = 0, $981 = 0, $982 = 0, $983 = 0, $984 = 0; + var $985 = 0, $986 = 0, $987 = 0, $988 = 0, $989 = 0, $99 = 0, $990 = 0, $991 = 0, $992 = 0, $993 = 0, $994 = 0, $995 = 0, $996 = 0, $997 = 0, $998 = 0, $999 = 0, $F$0$i$i = 0, $F1$0$i = 0, $F4$0 = 0, $F4$0$i$i = 0; + var $F5$0$i = 0, $I1$0$i$i = 0, $I7$0$i = 0, $I7$0$i$i = 0, $K12$029$i = 0, $K2$07$i$i = 0, $K8$051$i$i = 0, $R$0$i = 0, $R$0$i$i = 0, $R$0$i$i$lcssa = 0, $R$0$i$lcssa = 0, $R$0$i18 = 0, $R$0$i18$lcssa = 0, $R$1$i = 0, $R$1$i$i = 0, $R$1$i20 = 0, $RP$0$i = 0, $RP$0$i$i = 0, $RP$0$i$i$lcssa = 0, $RP$0$i$lcssa = 0; + var $RP$0$i17 = 0, $RP$0$i17$lcssa = 0, $T$0$lcssa$i = 0, $T$0$lcssa$i$i = 0, $T$0$lcssa$i25$i = 0, $T$028$i = 0, $T$028$i$lcssa = 0, $T$050$i$i = 0, $T$050$i$i$lcssa = 0, $T$06$i$i = 0, $T$06$i$i$lcssa = 0, $br$0$ph$i = 0, $cond$i = 0, $cond$i$i = 0, $cond$i21 = 0, $exitcond$i$i = 0, $i$02$i$i = 0, $idx$0$i = 0, $mem$0 = 0, $nb$0 = 0; + var $not$$i = 0, $not$$i$i = 0, $not$$i26$i = 0, $oldfirst$0$i$i = 0, $or$cond$i = 0, $or$cond$i30 = 0, $or$cond1$i = 0, $or$cond19$i = 0, $or$cond2$i = 0, $or$cond3$i = 0, $or$cond5$i = 0, $or$cond57$i = 0, $or$cond6$i = 0, $or$cond8$i = 0, $or$cond9$i = 0, $qsize$0$i$i = 0, $rsize$0$i = 0, $rsize$0$i$lcssa = 0, $rsize$0$i15 = 0, $rsize$1$i = 0; + var $rsize$2$i = 0, $rsize$3$lcssa$i = 0, $rsize$331$i = 0, $rst$0$i = 0, $rst$1$i = 0, $sizebits$0$i = 0, $sp$0$i$i = 0, $sp$0$i$i$i = 0, $sp$084$i = 0, $sp$084$i$lcssa = 0, $sp$183$i = 0, $sp$183$i$lcssa = 0, $ssize$0$$i = 0, $ssize$0$i = 0, $ssize$1$ph$i = 0, $ssize$2$i = 0, $t$0$i = 0, $t$0$i14 = 0, $t$1$i = 0, $t$2$ph$i = 0; + var $t$2$v$3$i = 0, $t$230$i = 0, $tbase$255$i = 0, $tsize$0$ph$i = 0, $tsize$0323944$i = 0, $tsize$1$i = 0, $tsize$254$i = 0, $v$0$i = 0, $v$0$i$lcssa = 0, $v$0$i16 = 0, $v$1$i = 0, $v$2$i = 0, $v$3$lcssa$i = 0, $v$3$ph$i = 0, $v$332$i = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($bytes>>>0)<(245); + do { + if ($0) { + $1 = ($bytes>>>0)<(11); + $2 = (($bytes) + 11)|0; + $3 = $2 & -8; + $4 = $1 ? 16 : $3; + $5 = $4 >>> 3; + $6 = HEAP32[553048>>2]|0; + $7 = $6 >>> $5; + $8 = $7 & 3; + $9 = ($8|0)==(0); + if (!($9)) { + $10 = $7 & 1; + $11 = $10 ^ 1; + $12 = (($11) + ($5))|0; + $13 = $12 << 1; + $14 = (553088 + ($13<<2)|0); + $$sum10 = (($13) + 2)|0; + $15 = (553088 + ($$sum10<<2)|0); + $16 = HEAP32[$15>>2]|0; + $17 = ((($16)) + 8|0); + $18 = HEAP32[$17>>2]|0; + $19 = ($14|0)==($18|0); + do { + if ($19) { + $20 = 1 << $12; + $21 = $20 ^ -1; + $22 = $6 & $21; + HEAP32[553048>>2] = $22; + } else { + $23 = HEAP32[(553064)>>2]|0; + $24 = ($18>>>0)<($23>>>0); + if ($24) { + _abort(); + // unreachable; + } + $25 = ((($18)) + 12|0); + $26 = HEAP32[$25>>2]|0; + $27 = ($26|0)==($16|0); + if ($27) { + HEAP32[$25>>2] = $14; + HEAP32[$15>>2] = $18; + break; + } else { + _abort(); + // unreachable; + } + } + } while(0); + $28 = $12 << 3; + $29 = $28 | 3; + $30 = ((($16)) + 4|0); + HEAP32[$30>>2] = $29; + $$sum1112 = $28 | 4; + $31 = (($16) + ($$sum1112)|0); + $32 = HEAP32[$31>>2]|0; + $33 = $32 | 1; + HEAP32[$31>>2] = $33; + $mem$0 = $17; + return ($mem$0|0); + } + $34 = HEAP32[(553056)>>2]|0; + $35 = ($4>>>0)>($34>>>0); + if ($35) { + $36 = ($7|0)==(0); + if (!($36)) { + $37 = $7 << $5; + $38 = 2 << $5; + $39 = (0 - ($38))|0; + $40 = $38 | $39; + $41 = $37 & $40; + $42 = (0 - ($41))|0; + $43 = $41 & $42; + $44 = (($43) + -1)|0; + $45 = $44 >>> 12; + $46 = $45 & 16; + $47 = $44 >>> $46; + $48 = $47 >>> 5; + $49 = $48 & 8; + $50 = $49 | $46; + $51 = $47 >>> $49; + $52 = $51 >>> 2; + $53 = $52 & 4; + $54 = $50 | $53; + $55 = $51 >>> $53; + $56 = $55 >>> 1; + $57 = $56 & 2; + $58 = $54 | $57; + $59 = $55 >>> $57; + $60 = $59 >>> 1; + $61 = $60 & 1; + $62 = $58 | $61; + $63 = $59 >>> $61; + $64 = (($62) + ($63))|0; + $65 = $64 << 1; + $66 = (553088 + ($65<<2)|0); + $$sum4 = (($65) + 2)|0; + $67 = (553088 + ($$sum4<<2)|0); + $68 = HEAP32[$67>>2]|0; + $69 = ((($68)) + 8|0); + $70 = HEAP32[$69>>2]|0; + $71 = ($66|0)==($70|0); + do { + if ($71) { + $72 = 1 << $64; + $73 = $72 ^ -1; + $74 = $6 & $73; + HEAP32[553048>>2] = $74; + $88 = $34; + } else { + $75 = HEAP32[(553064)>>2]|0; + $76 = ($70>>>0)<($75>>>0); + if ($76) { + _abort(); + // unreachable; + } + $77 = ((($70)) + 12|0); + $78 = HEAP32[$77>>2]|0; + $79 = ($78|0)==($68|0); + if ($79) { + HEAP32[$77>>2] = $66; + HEAP32[$67>>2] = $70; + $$pre = HEAP32[(553056)>>2]|0; + $88 = $$pre; + break; + } else { + _abort(); + // unreachable; + } + } + } while(0); + $80 = $64 << 3; + $81 = (($80) - ($4))|0; + $82 = $4 | 3; + $83 = ((($68)) + 4|0); + HEAP32[$83>>2] = $82; + $84 = (($68) + ($4)|0); + $85 = $81 | 1; + $$sum56 = $4 | 4; + $86 = (($68) + ($$sum56)|0); + HEAP32[$86>>2] = $85; + $87 = (($68) + ($80)|0); + HEAP32[$87>>2] = $81; + $89 = ($88|0)==(0); + if (!($89)) { + $90 = HEAP32[(553068)>>2]|0; + $91 = $88 >>> 3; + $92 = $91 << 1; + $93 = (553088 + ($92<<2)|0); + $94 = HEAP32[553048>>2]|0; + $95 = 1 << $91; + $96 = $94 & $95; + $97 = ($96|0)==(0); + if ($97) { + $98 = $94 | $95; + HEAP32[553048>>2] = $98; + $$pre105 = (($92) + 2)|0; + $$pre106 = (553088 + ($$pre105<<2)|0); + $$pre$phiZ2D = $$pre106;$F4$0 = $93; + } else { + $$sum9 = (($92) + 2)|0; + $99 = (553088 + ($$sum9<<2)|0); + $100 = HEAP32[$99>>2]|0; + $101 = HEAP32[(553064)>>2]|0; + $102 = ($100>>>0)<($101>>>0); + if ($102) { + _abort(); + // unreachable; + } else { + $$pre$phiZ2D = $99;$F4$0 = $100; + } + } + HEAP32[$$pre$phiZ2D>>2] = $90; + $103 = ((($F4$0)) + 12|0); + HEAP32[$103>>2] = $90; + $104 = ((($90)) + 8|0); + HEAP32[$104>>2] = $F4$0; + $105 = ((($90)) + 12|0); + HEAP32[$105>>2] = $93; + } + HEAP32[(553056)>>2] = $81; + HEAP32[(553068)>>2] = $84; + $mem$0 = $69; + return ($mem$0|0); + } + $106 = HEAP32[(553052)>>2]|0; + $107 = ($106|0)==(0); + if ($107) { + $nb$0 = $4; + } else { + $108 = (0 - ($106))|0; + $109 = $106 & $108; + $110 = (($109) + -1)|0; + $111 = $110 >>> 12; + $112 = $111 & 16; + $113 = $110 >>> $112; + $114 = $113 >>> 5; + $115 = $114 & 8; + $116 = $115 | $112; + $117 = $113 >>> $115; + $118 = $117 >>> 2; + $119 = $118 & 4; + $120 = $116 | $119; + $121 = $117 >>> $119; + $122 = $121 >>> 1; + $123 = $122 & 2; + $124 = $120 | $123; + $125 = $121 >>> $123; + $126 = $125 >>> 1; + $127 = $126 & 1; + $128 = $124 | $127; + $129 = $125 >>> $127; + $130 = (($128) + ($129))|0; + $131 = (553352 + ($130<<2)|0); + $132 = HEAP32[$131>>2]|0; + $133 = ((($132)) + 4|0); + $134 = HEAP32[$133>>2]|0; + $135 = $134 & -8; + $136 = (($135) - ($4))|0; + $rsize$0$i = $136;$t$0$i = $132;$v$0$i = $132; + while(1) { + $137 = ((($t$0$i)) + 16|0); + $138 = HEAP32[$137>>2]|0; + $139 = ($138|0)==(0|0); + if ($139) { + $140 = ((($t$0$i)) + 20|0); + $141 = HEAP32[$140>>2]|0; + $142 = ($141|0)==(0|0); + if ($142) { + $rsize$0$i$lcssa = $rsize$0$i;$v$0$i$lcssa = $v$0$i; + break; + } else { + $144 = $141; + } + } else { + $144 = $138; + } + $143 = ((($144)) + 4|0); + $145 = HEAP32[$143>>2]|0; + $146 = $145 & -8; + $147 = (($146) - ($4))|0; + $148 = ($147>>>0)<($rsize$0$i>>>0); + $$rsize$0$i = $148 ? $147 : $rsize$0$i; + $$v$0$i = $148 ? $144 : $v$0$i; + $rsize$0$i = $$rsize$0$i;$t$0$i = $144;$v$0$i = $$v$0$i; + } + $149 = HEAP32[(553064)>>2]|0; + $150 = ($v$0$i$lcssa>>>0)<($149>>>0); + if ($150) { + _abort(); + // unreachable; + } + $151 = (($v$0$i$lcssa) + ($4)|0); + $152 = ($v$0$i$lcssa>>>0)<($151>>>0); + if (!($152)) { + _abort(); + // unreachable; + } + $153 = ((($v$0$i$lcssa)) + 24|0); + $154 = HEAP32[$153>>2]|0; + $155 = ((($v$0$i$lcssa)) + 12|0); + $156 = HEAP32[$155>>2]|0; + $157 = ($156|0)==($v$0$i$lcssa|0); + do { + if ($157) { + $167 = ((($v$0$i$lcssa)) + 20|0); + $168 = HEAP32[$167>>2]|0; + $169 = ($168|0)==(0|0); + if ($169) { + $170 = ((($v$0$i$lcssa)) + 16|0); + $171 = HEAP32[$170>>2]|0; + $172 = ($171|0)==(0|0); + if ($172) { + $R$1$i = 0; + break; + } else { + $R$0$i = $171;$RP$0$i = $170; + } + } else { + $R$0$i = $168;$RP$0$i = $167; + } + while(1) { + $173 = ((($R$0$i)) + 20|0); + $174 = HEAP32[$173>>2]|0; + $175 = ($174|0)==(0|0); + if (!($175)) { + $R$0$i = $174;$RP$0$i = $173; + continue; + } + $176 = ((($R$0$i)) + 16|0); + $177 = HEAP32[$176>>2]|0; + $178 = ($177|0)==(0|0); + if ($178) { + $R$0$i$lcssa = $R$0$i;$RP$0$i$lcssa = $RP$0$i; + break; + } else { + $R$0$i = $177;$RP$0$i = $176; + } + } + $179 = ($RP$0$i$lcssa>>>0)<($149>>>0); + if ($179) { + _abort(); + // unreachable; + } else { + HEAP32[$RP$0$i$lcssa>>2] = 0; + $R$1$i = $R$0$i$lcssa; + break; + } + } else { + $158 = ((($v$0$i$lcssa)) + 8|0); + $159 = HEAP32[$158>>2]|0; + $160 = ($159>>>0)<($149>>>0); + if ($160) { + _abort(); + // unreachable; + } + $161 = ((($159)) + 12|0); + $162 = HEAP32[$161>>2]|0; + $163 = ($162|0)==($v$0$i$lcssa|0); + if (!($163)) { + _abort(); + // unreachable; + } + $164 = ((($156)) + 8|0); + $165 = HEAP32[$164>>2]|0; + $166 = ($165|0)==($v$0$i$lcssa|0); + if ($166) { + HEAP32[$161>>2] = $156; + HEAP32[$164>>2] = $159; + $R$1$i = $156; + break; + } else { + _abort(); + // unreachable; + } + } + } while(0); + $180 = ($154|0)==(0|0); + do { + if (!($180)) { + $181 = ((($v$0$i$lcssa)) + 28|0); + $182 = HEAP32[$181>>2]|0; + $183 = (553352 + ($182<<2)|0); + $184 = HEAP32[$183>>2]|0; + $185 = ($v$0$i$lcssa|0)==($184|0); + if ($185) { + HEAP32[$183>>2] = $R$1$i; + $cond$i = ($R$1$i|0)==(0|0); + if ($cond$i) { + $186 = 1 << $182; + $187 = $186 ^ -1; + $188 = HEAP32[(553052)>>2]|0; + $189 = $188 & $187; + HEAP32[(553052)>>2] = $189; + break; + } + } else { + $190 = HEAP32[(553064)>>2]|0; + $191 = ($154>>>0)<($190>>>0); + if ($191) { + _abort(); + // unreachable; + } + $192 = ((($154)) + 16|0); + $193 = HEAP32[$192>>2]|0; + $194 = ($193|0)==($v$0$i$lcssa|0); + if ($194) { + HEAP32[$192>>2] = $R$1$i; + } else { + $195 = ((($154)) + 20|0); + HEAP32[$195>>2] = $R$1$i; + } + $196 = ($R$1$i|0)==(0|0); + if ($196) { + break; + } + } + $197 = HEAP32[(553064)>>2]|0; + $198 = ($R$1$i>>>0)<($197>>>0); + if ($198) { + _abort(); + // unreachable; + } + $199 = ((($R$1$i)) + 24|0); + HEAP32[$199>>2] = $154; + $200 = ((($v$0$i$lcssa)) + 16|0); + $201 = HEAP32[$200>>2]|0; + $202 = ($201|0)==(0|0); + do { + if (!($202)) { + $203 = ($201>>>0)<($197>>>0); + if ($203) { + _abort(); + // unreachable; + } else { + $204 = ((($R$1$i)) + 16|0); + HEAP32[$204>>2] = $201; + $205 = ((($201)) + 24|0); + HEAP32[$205>>2] = $R$1$i; + break; + } + } + } while(0); + $206 = ((($v$0$i$lcssa)) + 20|0); + $207 = HEAP32[$206>>2]|0; + $208 = ($207|0)==(0|0); + if (!($208)) { + $209 = HEAP32[(553064)>>2]|0; + $210 = ($207>>>0)<($209>>>0); + if ($210) { + _abort(); + // unreachable; + } else { + $211 = ((($R$1$i)) + 20|0); + HEAP32[$211>>2] = $207; + $212 = ((($207)) + 24|0); + HEAP32[$212>>2] = $R$1$i; + break; + } + } + } + } while(0); + $213 = ($rsize$0$i$lcssa>>>0)<(16); + if ($213) { + $214 = (($rsize$0$i$lcssa) + ($4))|0; + $215 = $214 | 3; + $216 = ((($v$0$i$lcssa)) + 4|0); + HEAP32[$216>>2] = $215; + $$sum4$i = (($214) + 4)|0; + $217 = (($v$0$i$lcssa) + ($$sum4$i)|0); + $218 = HEAP32[$217>>2]|0; + $219 = $218 | 1; + HEAP32[$217>>2] = $219; + } else { + $220 = $4 | 3; + $221 = ((($v$0$i$lcssa)) + 4|0); + HEAP32[$221>>2] = $220; + $222 = $rsize$0$i$lcssa | 1; + $$sum$i35 = $4 | 4; + $223 = (($v$0$i$lcssa) + ($$sum$i35)|0); + HEAP32[$223>>2] = $222; + $$sum1$i = (($rsize$0$i$lcssa) + ($4))|0; + $224 = (($v$0$i$lcssa) + ($$sum1$i)|0); + HEAP32[$224>>2] = $rsize$0$i$lcssa; + $225 = HEAP32[(553056)>>2]|0; + $226 = ($225|0)==(0); + if (!($226)) { + $227 = HEAP32[(553068)>>2]|0; + $228 = $225 >>> 3; + $229 = $228 << 1; + $230 = (553088 + ($229<<2)|0); + $231 = HEAP32[553048>>2]|0; + $232 = 1 << $228; + $233 = $231 & $232; + $234 = ($233|0)==(0); + if ($234) { + $235 = $231 | $232; + HEAP32[553048>>2] = $235; + $$pre$i = (($229) + 2)|0; + $$pre8$i = (553088 + ($$pre$i<<2)|0); + $$pre$phi$iZ2D = $$pre8$i;$F1$0$i = $230; + } else { + $$sum3$i = (($229) + 2)|0; + $236 = (553088 + ($$sum3$i<<2)|0); + $237 = HEAP32[$236>>2]|0; + $238 = HEAP32[(553064)>>2]|0; + $239 = ($237>>>0)<($238>>>0); + if ($239) { + _abort(); + // unreachable; + } else { + $$pre$phi$iZ2D = $236;$F1$0$i = $237; + } + } + HEAP32[$$pre$phi$iZ2D>>2] = $227; + $240 = ((($F1$0$i)) + 12|0); + HEAP32[$240>>2] = $227; + $241 = ((($227)) + 8|0); + HEAP32[$241>>2] = $F1$0$i; + $242 = ((($227)) + 12|0); + HEAP32[$242>>2] = $230; + } + HEAP32[(553056)>>2] = $rsize$0$i$lcssa; + HEAP32[(553068)>>2] = $151; + } + $243 = ((($v$0$i$lcssa)) + 8|0); + $mem$0 = $243; + return ($mem$0|0); + } + } else { + $nb$0 = $4; + } + } else { + $244 = ($bytes>>>0)>(4294967231); + if ($244) { + $nb$0 = -1; + } else { + $245 = (($bytes) + 11)|0; + $246 = $245 & -8; + $247 = HEAP32[(553052)>>2]|0; + $248 = ($247|0)==(0); + if ($248) { + $nb$0 = $246; + } else { + $249 = (0 - ($246))|0; + $250 = $245 >>> 8; + $251 = ($250|0)==(0); + if ($251) { + $idx$0$i = 0; + } else { + $252 = ($246>>>0)>(16777215); + if ($252) { + $idx$0$i = 31; + } else { + $253 = (($250) + 1048320)|0; + $254 = $253 >>> 16; + $255 = $254 & 8; + $256 = $250 << $255; + $257 = (($256) + 520192)|0; + $258 = $257 >>> 16; + $259 = $258 & 4; + $260 = $259 | $255; + $261 = $256 << $259; + $262 = (($261) + 245760)|0; + $263 = $262 >>> 16; + $264 = $263 & 2; + $265 = $260 | $264; + $266 = (14 - ($265))|0; + $267 = $261 << $264; + $268 = $267 >>> 15; + $269 = (($266) + ($268))|0; + $270 = $269 << 1; + $271 = (($269) + 7)|0; + $272 = $246 >>> $271; + $273 = $272 & 1; + $274 = $273 | $270; + $idx$0$i = $274; + } + } + $275 = (553352 + ($idx$0$i<<2)|0); + $276 = HEAP32[$275>>2]|0; + $277 = ($276|0)==(0|0); + L123: do { + if ($277) { + $rsize$2$i = $249;$t$1$i = 0;$v$2$i = 0; + label = 86; + } else { + $278 = ($idx$0$i|0)==(31); + $279 = $idx$0$i >>> 1; + $280 = (25 - ($279))|0; + $281 = $278 ? 0 : $280; + $282 = $246 << $281; + $rsize$0$i15 = $249;$rst$0$i = 0;$sizebits$0$i = $282;$t$0$i14 = $276;$v$0$i16 = 0; + while(1) { + $283 = ((($t$0$i14)) + 4|0); + $284 = HEAP32[$283>>2]|0; + $285 = $284 & -8; + $286 = (($285) - ($246))|0; + $287 = ($286>>>0)<($rsize$0$i15>>>0); + if ($287) { + $288 = ($285|0)==($246|0); + if ($288) { + $rsize$331$i = $286;$t$230$i = $t$0$i14;$v$332$i = $t$0$i14; + label = 90; + break L123; + } else { + $rsize$1$i = $286;$v$1$i = $t$0$i14; + } + } else { + $rsize$1$i = $rsize$0$i15;$v$1$i = $v$0$i16; + } + $289 = ((($t$0$i14)) + 20|0); + $290 = HEAP32[$289>>2]|0; + $291 = $sizebits$0$i >>> 31; + $292 = (((($t$0$i14)) + 16|0) + ($291<<2)|0); + $293 = HEAP32[$292>>2]|0; + $294 = ($290|0)==(0|0); + $295 = ($290|0)==($293|0); + $or$cond19$i = $294 | $295; + $rst$1$i = $or$cond19$i ? $rst$0$i : $290; + $296 = ($293|0)==(0|0); + $297 = $sizebits$0$i << 1; + if ($296) { + $rsize$2$i = $rsize$1$i;$t$1$i = $rst$1$i;$v$2$i = $v$1$i; + label = 86; + break; + } else { + $rsize$0$i15 = $rsize$1$i;$rst$0$i = $rst$1$i;$sizebits$0$i = $297;$t$0$i14 = $293;$v$0$i16 = $v$1$i; + } + } + } + } while(0); + if ((label|0) == 86) { + $298 = ($t$1$i|0)==(0|0); + $299 = ($v$2$i|0)==(0|0); + $or$cond$i = $298 & $299; + if ($or$cond$i) { + $300 = 2 << $idx$0$i; + $301 = (0 - ($300))|0; + $302 = $300 | $301; + $303 = $247 & $302; + $304 = ($303|0)==(0); + if ($304) { + $nb$0 = $246; + break; + } + $305 = (0 - ($303))|0; + $306 = $303 & $305; + $307 = (($306) + -1)|0; + $308 = $307 >>> 12; + $309 = $308 & 16; + $310 = $307 >>> $309; + $311 = $310 >>> 5; + $312 = $311 & 8; + $313 = $312 | $309; + $314 = $310 >>> $312; + $315 = $314 >>> 2; + $316 = $315 & 4; + $317 = $313 | $316; + $318 = $314 >>> $316; + $319 = $318 >>> 1; + $320 = $319 & 2; + $321 = $317 | $320; + $322 = $318 >>> $320; + $323 = $322 >>> 1; + $324 = $323 & 1; + $325 = $321 | $324; + $326 = $322 >>> $324; + $327 = (($325) + ($326))|0; + $328 = (553352 + ($327<<2)|0); + $329 = HEAP32[$328>>2]|0; + $t$2$ph$i = $329;$v$3$ph$i = 0; + } else { + $t$2$ph$i = $t$1$i;$v$3$ph$i = $v$2$i; + } + $330 = ($t$2$ph$i|0)==(0|0); + if ($330) { + $rsize$3$lcssa$i = $rsize$2$i;$v$3$lcssa$i = $v$3$ph$i; + } else { + $rsize$331$i = $rsize$2$i;$t$230$i = $t$2$ph$i;$v$332$i = $v$3$ph$i; + label = 90; + } + } + if ((label|0) == 90) { + while(1) { + label = 0; + $331 = ((($t$230$i)) + 4|0); + $332 = HEAP32[$331>>2]|0; + $333 = $332 & -8; + $334 = (($333) - ($246))|0; + $335 = ($334>>>0)<($rsize$331$i>>>0); + $$rsize$3$i = $335 ? $334 : $rsize$331$i; + $t$2$v$3$i = $335 ? $t$230$i : $v$332$i; + $336 = ((($t$230$i)) + 16|0); + $337 = HEAP32[$336>>2]|0; + $338 = ($337|0)==(0|0); + if (!($338)) { + $rsize$331$i = $$rsize$3$i;$t$230$i = $337;$v$332$i = $t$2$v$3$i; + label = 90; + continue; + } + $339 = ((($t$230$i)) + 20|0); + $340 = HEAP32[$339>>2]|0; + $341 = ($340|0)==(0|0); + if ($341) { + $rsize$3$lcssa$i = $$rsize$3$i;$v$3$lcssa$i = $t$2$v$3$i; + break; + } else { + $rsize$331$i = $$rsize$3$i;$t$230$i = $340;$v$332$i = $t$2$v$3$i; + label = 90; + } + } + } + $342 = ($v$3$lcssa$i|0)==(0|0); + if ($342) { + $nb$0 = $246; + } else { + $343 = HEAP32[(553056)>>2]|0; + $344 = (($343) - ($246))|0; + $345 = ($rsize$3$lcssa$i>>>0)<($344>>>0); + if ($345) { + $346 = HEAP32[(553064)>>2]|0; + $347 = ($v$3$lcssa$i>>>0)<($346>>>0); + if ($347) { + _abort(); + // unreachable; + } + $348 = (($v$3$lcssa$i) + ($246)|0); + $349 = ($v$3$lcssa$i>>>0)<($348>>>0); + if (!($349)) { + _abort(); + // unreachable; + } + $350 = ((($v$3$lcssa$i)) + 24|0); + $351 = HEAP32[$350>>2]|0; + $352 = ((($v$3$lcssa$i)) + 12|0); + $353 = HEAP32[$352>>2]|0; + $354 = ($353|0)==($v$3$lcssa$i|0); + do { + if ($354) { + $364 = ((($v$3$lcssa$i)) + 20|0); + $365 = HEAP32[$364>>2]|0; + $366 = ($365|0)==(0|0); + if ($366) { + $367 = ((($v$3$lcssa$i)) + 16|0); + $368 = HEAP32[$367>>2]|0; + $369 = ($368|0)==(0|0); + if ($369) { + $R$1$i20 = 0; + break; + } else { + $R$0$i18 = $368;$RP$0$i17 = $367; + } + } else { + $R$0$i18 = $365;$RP$0$i17 = $364; + } + while(1) { + $370 = ((($R$0$i18)) + 20|0); + $371 = HEAP32[$370>>2]|0; + $372 = ($371|0)==(0|0); + if (!($372)) { + $R$0$i18 = $371;$RP$0$i17 = $370; + continue; + } + $373 = ((($R$0$i18)) + 16|0); + $374 = HEAP32[$373>>2]|0; + $375 = ($374|0)==(0|0); + if ($375) { + $R$0$i18$lcssa = $R$0$i18;$RP$0$i17$lcssa = $RP$0$i17; + break; + } else { + $R$0$i18 = $374;$RP$0$i17 = $373; + } + } + $376 = ($RP$0$i17$lcssa>>>0)<($346>>>0); + if ($376) { + _abort(); + // unreachable; + } else { + HEAP32[$RP$0$i17$lcssa>>2] = 0; + $R$1$i20 = $R$0$i18$lcssa; + break; + } + } else { + $355 = ((($v$3$lcssa$i)) + 8|0); + $356 = HEAP32[$355>>2]|0; + $357 = ($356>>>0)<($346>>>0); + if ($357) { + _abort(); + // unreachable; + } + $358 = ((($356)) + 12|0); + $359 = HEAP32[$358>>2]|0; + $360 = ($359|0)==($v$3$lcssa$i|0); + if (!($360)) { + _abort(); + // unreachable; + } + $361 = ((($353)) + 8|0); + $362 = HEAP32[$361>>2]|0; + $363 = ($362|0)==($v$3$lcssa$i|0); + if ($363) { + HEAP32[$358>>2] = $353; + HEAP32[$361>>2] = $356; + $R$1$i20 = $353; + break; + } else { + _abort(); + // unreachable; + } + } + } while(0); + $377 = ($351|0)==(0|0); + do { + if (!($377)) { + $378 = ((($v$3$lcssa$i)) + 28|0); + $379 = HEAP32[$378>>2]|0; + $380 = (553352 + ($379<<2)|0); + $381 = HEAP32[$380>>2]|0; + $382 = ($v$3$lcssa$i|0)==($381|0); + if ($382) { + HEAP32[$380>>2] = $R$1$i20; + $cond$i21 = ($R$1$i20|0)==(0|0); + if ($cond$i21) { + $383 = 1 << $379; + $384 = $383 ^ -1; + $385 = HEAP32[(553052)>>2]|0; + $386 = $385 & $384; + HEAP32[(553052)>>2] = $386; + break; + } + } else { + $387 = HEAP32[(553064)>>2]|0; + $388 = ($351>>>0)<($387>>>0); + if ($388) { + _abort(); + // unreachable; + } + $389 = ((($351)) + 16|0); + $390 = HEAP32[$389>>2]|0; + $391 = ($390|0)==($v$3$lcssa$i|0); + if ($391) { + HEAP32[$389>>2] = $R$1$i20; + } else { + $392 = ((($351)) + 20|0); + HEAP32[$392>>2] = $R$1$i20; + } + $393 = ($R$1$i20|0)==(0|0); + if ($393) { + break; + } + } + $394 = HEAP32[(553064)>>2]|0; + $395 = ($R$1$i20>>>0)<($394>>>0); + if ($395) { + _abort(); + // unreachable; + } + $396 = ((($R$1$i20)) + 24|0); + HEAP32[$396>>2] = $351; + $397 = ((($v$3$lcssa$i)) + 16|0); + $398 = HEAP32[$397>>2]|0; + $399 = ($398|0)==(0|0); + do { + if (!($399)) { + $400 = ($398>>>0)<($394>>>0); + if ($400) { + _abort(); + // unreachable; + } else { + $401 = ((($R$1$i20)) + 16|0); + HEAP32[$401>>2] = $398; + $402 = ((($398)) + 24|0); + HEAP32[$402>>2] = $R$1$i20; + break; + } + } + } while(0); + $403 = ((($v$3$lcssa$i)) + 20|0); + $404 = HEAP32[$403>>2]|0; + $405 = ($404|0)==(0|0); + if (!($405)) { + $406 = HEAP32[(553064)>>2]|0; + $407 = ($404>>>0)<($406>>>0); + if ($407) { + _abort(); + // unreachable; + } else { + $408 = ((($R$1$i20)) + 20|0); + HEAP32[$408>>2] = $404; + $409 = ((($404)) + 24|0); + HEAP32[$409>>2] = $R$1$i20; + break; + } + } + } + } while(0); + $410 = ($rsize$3$lcssa$i>>>0)<(16); + L199: do { + if ($410) { + $411 = (($rsize$3$lcssa$i) + ($246))|0; + $412 = $411 | 3; + $413 = ((($v$3$lcssa$i)) + 4|0); + HEAP32[$413>>2] = $412; + $$sum18$i = (($411) + 4)|0; + $414 = (($v$3$lcssa$i) + ($$sum18$i)|0); + $415 = HEAP32[$414>>2]|0; + $416 = $415 | 1; + HEAP32[$414>>2] = $416; + } else { + $417 = $246 | 3; + $418 = ((($v$3$lcssa$i)) + 4|0); + HEAP32[$418>>2] = $417; + $419 = $rsize$3$lcssa$i | 1; + $$sum$i2334 = $246 | 4; + $420 = (($v$3$lcssa$i) + ($$sum$i2334)|0); + HEAP32[$420>>2] = $419; + $$sum1$i24 = (($rsize$3$lcssa$i) + ($246))|0; + $421 = (($v$3$lcssa$i) + ($$sum1$i24)|0); + HEAP32[$421>>2] = $rsize$3$lcssa$i; + $422 = $rsize$3$lcssa$i >>> 3; + $423 = ($rsize$3$lcssa$i>>>0)<(256); + if ($423) { + $424 = $422 << 1; + $425 = (553088 + ($424<<2)|0); + $426 = HEAP32[553048>>2]|0; + $427 = 1 << $422; + $428 = $426 & $427; + $429 = ($428|0)==(0); + if ($429) { + $430 = $426 | $427; + HEAP32[553048>>2] = $430; + $$pre$i25 = (($424) + 2)|0; + $$pre43$i = (553088 + ($$pre$i25<<2)|0); + $$pre$phi$i26Z2D = $$pre43$i;$F5$0$i = $425; + } else { + $$sum17$i = (($424) + 2)|0; + $431 = (553088 + ($$sum17$i<<2)|0); + $432 = HEAP32[$431>>2]|0; + $433 = HEAP32[(553064)>>2]|0; + $434 = ($432>>>0)<($433>>>0); + if ($434) { + _abort(); + // unreachable; + } else { + $$pre$phi$i26Z2D = $431;$F5$0$i = $432; + } + } + HEAP32[$$pre$phi$i26Z2D>>2] = $348; + $435 = ((($F5$0$i)) + 12|0); + HEAP32[$435>>2] = $348; + $$sum15$i = (($246) + 8)|0; + $436 = (($v$3$lcssa$i) + ($$sum15$i)|0); + HEAP32[$436>>2] = $F5$0$i; + $$sum16$i = (($246) + 12)|0; + $437 = (($v$3$lcssa$i) + ($$sum16$i)|0); + HEAP32[$437>>2] = $425; + break; + } + $438 = $rsize$3$lcssa$i >>> 8; + $439 = ($438|0)==(0); + if ($439) { + $I7$0$i = 0; + } else { + $440 = ($rsize$3$lcssa$i>>>0)>(16777215); + if ($440) { + $I7$0$i = 31; + } else { + $441 = (($438) + 1048320)|0; + $442 = $441 >>> 16; + $443 = $442 & 8; + $444 = $438 << $443; + $445 = (($444) + 520192)|0; + $446 = $445 >>> 16; + $447 = $446 & 4; + $448 = $447 | $443; + $449 = $444 << $447; + $450 = (($449) + 245760)|0; + $451 = $450 >>> 16; + $452 = $451 & 2; + $453 = $448 | $452; + $454 = (14 - ($453))|0; + $455 = $449 << $452; + $456 = $455 >>> 15; + $457 = (($454) + ($456))|0; + $458 = $457 << 1; + $459 = (($457) + 7)|0; + $460 = $rsize$3$lcssa$i >>> $459; + $461 = $460 & 1; + $462 = $461 | $458; + $I7$0$i = $462; + } + } + $463 = (553352 + ($I7$0$i<<2)|0); + $$sum2$i = (($246) + 28)|0; + $464 = (($v$3$lcssa$i) + ($$sum2$i)|0); + HEAP32[$464>>2] = $I7$0$i; + $$sum3$i27 = (($246) + 16)|0; + $465 = (($v$3$lcssa$i) + ($$sum3$i27)|0); + $$sum4$i28 = (($246) + 20)|0; + $466 = (($v$3$lcssa$i) + ($$sum4$i28)|0); + HEAP32[$466>>2] = 0; + HEAP32[$465>>2] = 0; + $467 = HEAP32[(553052)>>2]|0; + $468 = 1 << $I7$0$i; + $469 = $467 & $468; + $470 = ($469|0)==(0); + if ($470) { + $471 = $467 | $468; + HEAP32[(553052)>>2] = $471; + HEAP32[$463>>2] = $348; + $$sum5$i = (($246) + 24)|0; + $472 = (($v$3$lcssa$i) + ($$sum5$i)|0); + HEAP32[$472>>2] = $463; + $$sum6$i = (($246) + 12)|0; + $473 = (($v$3$lcssa$i) + ($$sum6$i)|0); + HEAP32[$473>>2] = $348; + $$sum7$i = (($246) + 8)|0; + $474 = (($v$3$lcssa$i) + ($$sum7$i)|0); + HEAP32[$474>>2] = $348; + break; + } + $475 = HEAP32[$463>>2]|0; + $476 = ((($475)) + 4|0); + $477 = HEAP32[$476>>2]|0; + $478 = $477 & -8; + $479 = ($478|0)==($rsize$3$lcssa$i|0); + L217: do { + if ($479) { + $T$0$lcssa$i = $475; + } else { + $480 = ($I7$0$i|0)==(31); + $481 = $I7$0$i >>> 1; + $482 = (25 - ($481))|0; + $483 = $480 ? 0 : $482; + $484 = $rsize$3$lcssa$i << $483; + $K12$029$i = $484;$T$028$i = $475; + while(1) { + $491 = $K12$029$i >>> 31; + $492 = (((($T$028$i)) + 16|0) + ($491<<2)|0); + $487 = HEAP32[$492>>2]|0; + $493 = ($487|0)==(0|0); + if ($493) { + $$lcssa232 = $492;$T$028$i$lcssa = $T$028$i; + break; + } + $485 = $K12$029$i << 1; + $486 = ((($487)) + 4|0); + $488 = HEAP32[$486>>2]|0; + $489 = $488 & -8; + $490 = ($489|0)==($rsize$3$lcssa$i|0); + if ($490) { + $T$0$lcssa$i = $487; + break L217; + } else { + $K12$029$i = $485;$T$028$i = $487; + } + } + $494 = HEAP32[(553064)>>2]|0; + $495 = ($$lcssa232>>>0)<($494>>>0); + if ($495) { + _abort(); + // unreachable; + } else { + HEAP32[$$lcssa232>>2] = $348; + $$sum11$i = (($246) + 24)|0; + $496 = (($v$3$lcssa$i) + ($$sum11$i)|0); + HEAP32[$496>>2] = $T$028$i$lcssa; + $$sum12$i = (($246) + 12)|0; + $497 = (($v$3$lcssa$i) + ($$sum12$i)|0); + HEAP32[$497>>2] = $348; + $$sum13$i = (($246) + 8)|0; + $498 = (($v$3$lcssa$i) + ($$sum13$i)|0); + HEAP32[$498>>2] = $348; + break L199; + } + } + } while(0); + $499 = ((($T$0$lcssa$i)) + 8|0); + $500 = HEAP32[$499>>2]|0; + $501 = HEAP32[(553064)>>2]|0; + $502 = ($500>>>0)>=($501>>>0); + $not$$i = ($T$0$lcssa$i>>>0)>=($501>>>0); + $503 = $502 & $not$$i; + if ($503) { + $504 = ((($500)) + 12|0); + HEAP32[$504>>2] = $348; + HEAP32[$499>>2] = $348; + $$sum8$i = (($246) + 8)|0; + $505 = (($v$3$lcssa$i) + ($$sum8$i)|0); + HEAP32[$505>>2] = $500; + $$sum9$i = (($246) + 12)|0; + $506 = (($v$3$lcssa$i) + ($$sum9$i)|0); + HEAP32[$506>>2] = $T$0$lcssa$i; + $$sum10$i = (($246) + 24)|0; + $507 = (($v$3$lcssa$i) + ($$sum10$i)|0); + HEAP32[$507>>2] = 0; + break; + } else { + _abort(); + // unreachable; + } + } + } while(0); + $508 = ((($v$3$lcssa$i)) + 8|0); + $mem$0 = $508; + return ($mem$0|0); + } else { + $nb$0 = $246; + } + } + } + } + } + } while(0); + $509 = HEAP32[(553056)>>2]|0; + $510 = ($509>>>0)<($nb$0>>>0); + if (!($510)) { + $511 = (($509) - ($nb$0))|0; + $512 = HEAP32[(553068)>>2]|0; + $513 = ($511>>>0)>(15); + if ($513) { + $514 = (($512) + ($nb$0)|0); + HEAP32[(553068)>>2] = $514; + HEAP32[(553056)>>2] = $511; + $515 = $511 | 1; + $$sum2 = (($nb$0) + 4)|0; + $516 = (($512) + ($$sum2)|0); + HEAP32[$516>>2] = $515; + $517 = (($512) + ($509)|0); + HEAP32[$517>>2] = $511; + $518 = $nb$0 | 3; + $519 = ((($512)) + 4|0); + HEAP32[$519>>2] = $518; + } else { + HEAP32[(553056)>>2] = 0; + HEAP32[(553068)>>2] = 0; + $520 = $509 | 3; + $521 = ((($512)) + 4|0); + HEAP32[$521>>2] = $520; + $$sum1 = (($509) + 4)|0; + $522 = (($512) + ($$sum1)|0); + $523 = HEAP32[$522>>2]|0; + $524 = $523 | 1; + HEAP32[$522>>2] = $524; + } + $525 = ((($512)) + 8|0); + $mem$0 = $525; + return ($mem$0|0); + } + $526 = HEAP32[(553060)>>2]|0; + $527 = ($526>>>0)>($nb$0>>>0); + if ($527) { + $528 = (($526) - ($nb$0))|0; + HEAP32[(553060)>>2] = $528; + $529 = HEAP32[(553072)>>2]|0; + $530 = (($529) + ($nb$0)|0); + HEAP32[(553072)>>2] = $530; + $531 = $528 | 1; + $$sum = (($nb$0) + 4)|0; + $532 = (($529) + ($$sum)|0); + HEAP32[$532>>2] = $531; + $533 = $nb$0 | 3; + $534 = ((($529)) + 4|0); + HEAP32[$534>>2] = $533; + $535 = ((($529)) + 8|0); + $mem$0 = $535; + return ($mem$0|0); + } + $536 = HEAP32[553520>>2]|0; + $537 = ($536|0)==(0); + do { + if ($537) { + $538 = (_sysconf(30)|0); + $539 = (($538) + -1)|0; + $540 = $539 & $538; + $541 = ($540|0)==(0); + if ($541) { + HEAP32[(553528)>>2] = $538; + HEAP32[(553524)>>2] = $538; + HEAP32[(553532)>>2] = -1; + HEAP32[(553536)>>2] = -1; + HEAP32[(553540)>>2] = 0; + HEAP32[(553492)>>2] = 0; + $542 = (_time((0|0))|0); + $543 = $542 & -16; + $544 = $543 ^ 1431655768; + HEAP32[553520>>2] = $544; + break; + } else { + _abort(); + // unreachable; + } + } + } while(0); + $545 = (($nb$0) + 48)|0; + $546 = HEAP32[(553528)>>2]|0; + $547 = (($nb$0) + 47)|0; + $548 = (($546) + ($547))|0; + $549 = (0 - ($546))|0; + $550 = $548 & $549; + $551 = ($550>>>0)>($nb$0>>>0); + if (!($551)) { + $mem$0 = 0; + return ($mem$0|0); + } + $552 = HEAP32[(553488)>>2]|0; + $553 = ($552|0)==(0); + if (!($553)) { + $554 = HEAP32[(553480)>>2]|0; + $555 = (($554) + ($550))|0; + $556 = ($555>>>0)<=($554>>>0); + $557 = ($555>>>0)>($552>>>0); + $or$cond1$i = $556 | $557; + if ($or$cond1$i) { + $mem$0 = 0; + return ($mem$0|0); + } + } + $558 = HEAP32[(553492)>>2]|0; + $559 = $558 & 4; + $560 = ($559|0)==(0); + L258: do { + if ($560) { + $561 = HEAP32[(553072)>>2]|0; + $562 = ($561|0)==(0|0); + L260: do { + if ($562) { + label = 174; + } else { + $sp$0$i$i = (553496); + while(1) { + $563 = HEAP32[$sp$0$i$i>>2]|0; + $564 = ($563>>>0)>($561>>>0); + if (!($564)) { + $565 = ((($sp$0$i$i)) + 4|0); + $566 = HEAP32[$565>>2]|0; + $567 = (($563) + ($566)|0); + $568 = ($567>>>0)>($561>>>0); + if ($568) { + $$lcssa228 = $sp$0$i$i;$$lcssa230 = $565; + break; + } + } + $569 = ((($sp$0$i$i)) + 8|0); + $570 = HEAP32[$569>>2]|0; + $571 = ($570|0)==(0|0); + if ($571) { + label = 174; + break L260; + } else { + $sp$0$i$i = $570; + } + } + $594 = HEAP32[(553060)>>2]|0; + $595 = (($548) - ($594))|0; + $596 = $595 & $549; + $597 = ($596>>>0)<(2147483647); + if ($597) { + $598 = (_sbrk(($596|0))|0); + $599 = HEAP32[$$lcssa228>>2]|0; + $600 = HEAP32[$$lcssa230>>2]|0; + $601 = (($599) + ($600)|0); + $602 = ($598|0)==($601|0); + $$3$i = $602 ? $596 : 0; + if ($602) { + $603 = ($598|0)==((-1)|0); + if ($603) { + $tsize$0323944$i = $$3$i; + } else { + $tbase$255$i = $598;$tsize$254$i = $$3$i; + label = 194; + break L258; + } + } else { + $br$0$ph$i = $598;$ssize$1$ph$i = $596;$tsize$0$ph$i = $$3$i; + label = 184; + } + } else { + $tsize$0323944$i = 0; + } + } + } while(0); + do { + if ((label|0) == 174) { + $572 = (_sbrk(0)|0); + $573 = ($572|0)==((-1)|0); + if ($573) { + $tsize$0323944$i = 0; + } else { + $574 = $572; + $575 = HEAP32[(553524)>>2]|0; + $576 = (($575) + -1)|0; + $577 = $576 & $574; + $578 = ($577|0)==(0); + if ($578) { + $ssize$0$i = $550; + } else { + $579 = (($576) + ($574))|0; + $580 = (0 - ($575))|0; + $581 = $579 & $580; + $582 = (($550) - ($574))|0; + $583 = (($582) + ($581))|0; + $ssize$0$i = $583; + } + $584 = HEAP32[(553480)>>2]|0; + $585 = (($584) + ($ssize$0$i))|0; + $586 = ($ssize$0$i>>>0)>($nb$0>>>0); + $587 = ($ssize$0$i>>>0)<(2147483647); + $or$cond$i30 = $586 & $587; + if ($or$cond$i30) { + $588 = HEAP32[(553488)>>2]|0; + $589 = ($588|0)==(0); + if (!($589)) { + $590 = ($585>>>0)<=($584>>>0); + $591 = ($585>>>0)>($588>>>0); + $or$cond2$i = $590 | $591; + if ($or$cond2$i) { + $tsize$0323944$i = 0; + break; + } + } + $592 = (_sbrk(($ssize$0$i|0))|0); + $593 = ($592|0)==($572|0); + $ssize$0$$i = $593 ? $ssize$0$i : 0; + if ($593) { + $tbase$255$i = $572;$tsize$254$i = $ssize$0$$i; + label = 194; + break L258; + } else { + $br$0$ph$i = $592;$ssize$1$ph$i = $ssize$0$i;$tsize$0$ph$i = $ssize$0$$i; + label = 184; + } + } else { + $tsize$0323944$i = 0; + } + } + } + } while(0); + L280: do { + if ((label|0) == 184) { + $604 = (0 - ($ssize$1$ph$i))|0; + $605 = ($br$0$ph$i|0)!=((-1)|0); + $606 = ($ssize$1$ph$i>>>0)<(2147483647); + $or$cond5$i = $606 & $605; + $607 = ($545>>>0)>($ssize$1$ph$i>>>0); + $or$cond6$i = $607 & $or$cond5$i; + do { + if ($or$cond6$i) { + $608 = HEAP32[(553528)>>2]|0; + $609 = (($547) - ($ssize$1$ph$i))|0; + $610 = (($609) + ($608))|0; + $611 = (0 - ($608))|0; + $612 = $610 & $611; + $613 = ($612>>>0)<(2147483647); + if ($613) { + $614 = (_sbrk(($612|0))|0); + $615 = ($614|0)==((-1)|0); + if ($615) { + (_sbrk(($604|0))|0); + $tsize$0323944$i = $tsize$0$ph$i; + break L280; + } else { + $616 = (($612) + ($ssize$1$ph$i))|0; + $ssize$2$i = $616; + break; + } + } else { + $ssize$2$i = $ssize$1$ph$i; + } + } else { + $ssize$2$i = $ssize$1$ph$i; + } + } while(0); + $617 = ($br$0$ph$i|0)==((-1)|0); + if ($617) { + $tsize$0323944$i = $tsize$0$ph$i; + } else { + $tbase$255$i = $br$0$ph$i;$tsize$254$i = $ssize$2$i; + label = 194; + break L258; + } + } + } while(0); + $618 = HEAP32[(553492)>>2]|0; + $619 = $618 | 4; + HEAP32[(553492)>>2] = $619; + $tsize$1$i = $tsize$0323944$i; + label = 191; + } else { + $tsize$1$i = 0; + label = 191; + } + } while(0); + if ((label|0) == 191) { + $620 = ($550>>>0)<(2147483647); + if ($620) { + $621 = (_sbrk(($550|0))|0); + $622 = (_sbrk(0)|0); + $623 = ($621|0)!=((-1)|0); + $624 = ($622|0)!=((-1)|0); + $or$cond3$i = $623 & $624; + $625 = ($621>>>0)<($622>>>0); + $or$cond8$i = $625 & $or$cond3$i; + if ($or$cond8$i) { + $626 = $622; + $627 = $621; + $628 = (($626) - ($627))|0; + $629 = (($nb$0) + 40)|0; + $630 = ($628>>>0)>($629>>>0); + $$tsize$1$i = $630 ? $628 : $tsize$1$i; + if ($630) { + $tbase$255$i = $621;$tsize$254$i = $$tsize$1$i; + label = 194; + } + } + } + } + if ((label|0) == 194) { + $631 = HEAP32[(553480)>>2]|0; + $632 = (($631) + ($tsize$254$i))|0; + HEAP32[(553480)>>2] = $632; + $633 = HEAP32[(553484)>>2]|0; + $634 = ($632>>>0)>($633>>>0); + if ($634) { + HEAP32[(553484)>>2] = $632; + } + $635 = HEAP32[(553072)>>2]|0; + $636 = ($635|0)==(0|0); + L299: do { + if ($636) { + $637 = HEAP32[(553064)>>2]|0; + $638 = ($637|0)==(0|0); + $639 = ($tbase$255$i>>>0)<($637>>>0); + $or$cond9$i = $638 | $639; + if ($or$cond9$i) { + HEAP32[(553064)>>2] = $tbase$255$i; + } + HEAP32[(553496)>>2] = $tbase$255$i; + HEAP32[(553500)>>2] = $tsize$254$i; + HEAP32[(553508)>>2] = 0; + $640 = HEAP32[553520>>2]|0; + HEAP32[(553084)>>2] = $640; + HEAP32[(553080)>>2] = -1; + $i$02$i$i = 0; + while(1) { + $641 = $i$02$i$i << 1; + $642 = (553088 + ($641<<2)|0); + $$sum$i$i = (($641) + 3)|0; + $643 = (553088 + ($$sum$i$i<<2)|0); + HEAP32[$643>>2] = $642; + $$sum1$i$i = (($641) + 2)|0; + $644 = (553088 + ($$sum1$i$i<<2)|0); + HEAP32[$644>>2] = $642; + $645 = (($i$02$i$i) + 1)|0; + $exitcond$i$i = ($645|0)==(32); + if ($exitcond$i$i) { + break; + } else { + $i$02$i$i = $645; + } + } + $646 = (($tsize$254$i) + -40)|0; + $647 = ((($tbase$255$i)) + 8|0); + $648 = $647; + $649 = $648 & 7; + $650 = ($649|0)==(0); + $651 = (0 - ($648))|0; + $652 = $651 & 7; + $653 = $650 ? 0 : $652; + $654 = (($tbase$255$i) + ($653)|0); + $655 = (($646) - ($653))|0; + HEAP32[(553072)>>2] = $654; + HEAP32[(553060)>>2] = $655; + $656 = $655 | 1; + $$sum$i13$i = (($653) + 4)|0; + $657 = (($tbase$255$i) + ($$sum$i13$i)|0); + HEAP32[$657>>2] = $656; + $$sum2$i$i = (($tsize$254$i) + -36)|0; + $658 = (($tbase$255$i) + ($$sum2$i$i)|0); + HEAP32[$658>>2] = 40; + $659 = HEAP32[(553536)>>2]|0; + HEAP32[(553076)>>2] = $659; + } else { + $sp$084$i = (553496); + while(1) { + $660 = HEAP32[$sp$084$i>>2]|0; + $661 = ((($sp$084$i)) + 4|0); + $662 = HEAP32[$661>>2]|0; + $663 = (($660) + ($662)|0); + $664 = ($tbase$255$i|0)==($663|0); + if ($664) { + $$lcssa222 = $660;$$lcssa224 = $661;$$lcssa226 = $662;$sp$084$i$lcssa = $sp$084$i; + label = 204; + break; + } + $665 = ((($sp$084$i)) + 8|0); + $666 = HEAP32[$665>>2]|0; + $667 = ($666|0)==(0|0); + if ($667) { + break; + } else { + $sp$084$i = $666; + } + } + if ((label|0) == 204) { + $668 = ((($sp$084$i$lcssa)) + 12|0); + $669 = HEAP32[$668>>2]|0; + $670 = $669 & 8; + $671 = ($670|0)==(0); + if ($671) { + $672 = ($635>>>0)>=($$lcssa222>>>0); + $673 = ($635>>>0)<($tbase$255$i>>>0); + $or$cond57$i = $673 & $672; + if ($or$cond57$i) { + $674 = (($$lcssa226) + ($tsize$254$i))|0; + HEAP32[$$lcssa224>>2] = $674; + $675 = HEAP32[(553060)>>2]|0; + $676 = (($675) + ($tsize$254$i))|0; + $677 = ((($635)) + 8|0); + $678 = $677; + $679 = $678 & 7; + $680 = ($679|0)==(0); + $681 = (0 - ($678))|0; + $682 = $681 & 7; + $683 = $680 ? 0 : $682; + $684 = (($635) + ($683)|0); + $685 = (($676) - ($683))|0; + HEAP32[(553072)>>2] = $684; + HEAP32[(553060)>>2] = $685; + $686 = $685 | 1; + $$sum$i17$i = (($683) + 4)|0; + $687 = (($635) + ($$sum$i17$i)|0); + HEAP32[$687>>2] = $686; + $$sum2$i18$i = (($676) + 4)|0; + $688 = (($635) + ($$sum2$i18$i)|0); + HEAP32[$688>>2] = 40; + $689 = HEAP32[(553536)>>2]|0; + HEAP32[(553076)>>2] = $689; + break; + } + } + } + $690 = HEAP32[(553064)>>2]|0; + $691 = ($tbase$255$i>>>0)<($690>>>0); + if ($691) { + HEAP32[(553064)>>2] = $tbase$255$i; + $755 = $tbase$255$i; + } else { + $755 = $690; + } + $692 = (($tbase$255$i) + ($tsize$254$i)|0); + $sp$183$i = (553496); + while(1) { + $693 = HEAP32[$sp$183$i>>2]|0; + $694 = ($693|0)==($692|0); + if ($694) { + $$lcssa219 = $sp$183$i;$sp$183$i$lcssa = $sp$183$i; + label = 212; + break; + } + $695 = ((($sp$183$i)) + 8|0); + $696 = HEAP32[$695>>2]|0; + $697 = ($696|0)==(0|0); + if ($697) { + $sp$0$i$i$i = (553496); + break; + } else { + $sp$183$i = $696; + } + } + if ((label|0) == 212) { + $698 = ((($sp$183$i$lcssa)) + 12|0); + $699 = HEAP32[$698>>2]|0; + $700 = $699 & 8; + $701 = ($700|0)==(0); + if ($701) { + HEAP32[$$lcssa219>>2] = $tbase$255$i; + $702 = ((($sp$183$i$lcssa)) + 4|0); + $703 = HEAP32[$702>>2]|0; + $704 = (($703) + ($tsize$254$i))|0; + HEAP32[$702>>2] = $704; + $705 = ((($tbase$255$i)) + 8|0); + $706 = $705; + $707 = $706 & 7; + $708 = ($707|0)==(0); + $709 = (0 - ($706))|0; + $710 = $709 & 7; + $711 = $708 ? 0 : $710; + $712 = (($tbase$255$i) + ($711)|0); + $$sum112$i = (($tsize$254$i) + 8)|0; + $713 = (($tbase$255$i) + ($$sum112$i)|0); + $714 = $713; + $715 = $714 & 7; + $716 = ($715|0)==(0); + $717 = (0 - ($714))|0; + $718 = $717 & 7; + $719 = $716 ? 0 : $718; + $$sum113$i = (($719) + ($tsize$254$i))|0; + $720 = (($tbase$255$i) + ($$sum113$i)|0); + $721 = $720; + $722 = $712; + $723 = (($721) - ($722))|0; + $$sum$i19$i = (($711) + ($nb$0))|0; + $724 = (($tbase$255$i) + ($$sum$i19$i)|0); + $725 = (($723) - ($nb$0))|0; + $726 = $nb$0 | 3; + $$sum1$i20$i = (($711) + 4)|0; + $727 = (($tbase$255$i) + ($$sum1$i20$i)|0); + HEAP32[$727>>2] = $726; + $728 = ($720|0)==($635|0); + L317: do { + if ($728) { + $729 = HEAP32[(553060)>>2]|0; + $730 = (($729) + ($725))|0; + HEAP32[(553060)>>2] = $730; + HEAP32[(553072)>>2] = $724; + $731 = $730 | 1; + $$sum42$i$i = (($$sum$i19$i) + 4)|0; + $732 = (($tbase$255$i) + ($$sum42$i$i)|0); + HEAP32[$732>>2] = $731; + } else { + $733 = HEAP32[(553068)>>2]|0; + $734 = ($720|0)==($733|0); + if ($734) { + $735 = HEAP32[(553056)>>2]|0; + $736 = (($735) + ($725))|0; + HEAP32[(553056)>>2] = $736; + HEAP32[(553068)>>2] = $724; + $737 = $736 | 1; + $$sum40$i$i = (($$sum$i19$i) + 4)|0; + $738 = (($tbase$255$i) + ($$sum40$i$i)|0); + HEAP32[$738>>2] = $737; + $$sum41$i$i = (($736) + ($$sum$i19$i))|0; + $739 = (($tbase$255$i) + ($$sum41$i$i)|0); + HEAP32[$739>>2] = $736; + break; + } + $$sum2$i21$i = (($tsize$254$i) + 4)|0; + $$sum114$i = (($$sum2$i21$i) + ($719))|0; + $740 = (($tbase$255$i) + ($$sum114$i)|0); + $741 = HEAP32[$740>>2]|0; + $742 = $741 & 3; + $743 = ($742|0)==(1); + if ($743) { + $744 = $741 & -8; + $745 = $741 >>> 3; + $746 = ($741>>>0)<(256); + L325: do { + if ($746) { + $$sum3738$i$i = $719 | 8; + $$sum124$i = (($$sum3738$i$i) + ($tsize$254$i))|0; + $747 = (($tbase$255$i) + ($$sum124$i)|0); + $748 = HEAP32[$747>>2]|0; + $$sum39$i$i = (($tsize$254$i) + 12)|0; + $$sum125$i = (($$sum39$i$i) + ($719))|0; + $749 = (($tbase$255$i) + ($$sum125$i)|0); + $750 = HEAP32[$749>>2]|0; + $751 = $745 << 1; + $752 = (553088 + ($751<<2)|0); + $753 = ($748|0)==($752|0); + do { + if (!($753)) { + $754 = ($748>>>0)<($755>>>0); + if ($754) { + _abort(); + // unreachable; + } + $756 = ((($748)) + 12|0); + $757 = HEAP32[$756>>2]|0; + $758 = ($757|0)==($720|0); + if ($758) { + break; + } + _abort(); + // unreachable; + } + } while(0); + $759 = ($750|0)==($748|0); + if ($759) { + $760 = 1 << $745; + $761 = $760 ^ -1; + $762 = HEAP32[553048>>2]|0; + $763 = $762 & $761; + HEAP32[553048>>2] = $763; + break; + } + $764 = ($750|0)==($752|0); + do { + if ($764) { + $$pre57$i$i = ((($750)) + 8|0); + $$pre$phi58$i$iZ2D = $$pre57$i$i; + } else { + $765 = ($750>>>0)<($755>>>0); + if ($765) { + _abort(); + // unreachable; + } + $766 = ((($750)) + 8|0); + $767 = HEAP32[$766>>2]|0; + $768 = ($767|0)==($720|0); + if ($768) { + $$pre$phi58$i$iZ2D = $766; + break; + } + _abort(); + // unreachable; + } + } while(0); + $769 = ((($748)) + 12|0); + HEAP32[$769>>2] = $750; + HEAP32[$$pre$phi58$i$iZ2D>>2] = $748; + } else { + $$sum34$i$i = $719 | 24; + $$sum115$i = (($$sum34$i$i) + ($tsize$254$i))|0; + $770 = (($tbase$255$i) + ($$sum115$i)|0); + $771 = HEAP32[$770>>2]|0; + $$sum5$i$i = (($tsize$254$i) + 12)|0; + $$sum116$i = (($$sum5$i$i) + ($719))|0; + $772 = (($tbase$255$i) + ($$sum116$i)|0); + $773 = HEAP32[$772>>2]|0; + $774 = ($773|0)==($720|0); + do { + if ($774) { + $$sum67$i$i = $719 | 16; + $$sum122$i = (($$sum2$i21$i) + ($$sum67$i$i))|0; + $784 = (($tbase$255$i) + ($$sum122$i)|0); + $785 = HEAP32[$784>>2]|0; + $786 = ($785|0)==(0|0); + if ($786) { + $$sum123$i = (($$sum67$i$i) + ($tsize$254$i))|0; + $787 = (($tbase$255$i) + ($$sum123$i)|0); + $788 = HEAP32[$787>>2]|0; + $789 = ($788|0)==(0|0); + if ($789) { + $R$1$i$i = 0; + break; + } else { + $R$0$i$i = $788;$RP$0$i$i = $787; + } + } else { + $R$0$i$i = $785;$RP$0$i$i = $784; + } + while(1) { + $790 = ((($R$0$i$i)) + 20|0); + $791 = HEAP32[$790>>2]|0; + $792 = ($791|0)==(0|0); + if (!($792)) { + $R$0$i$i = $791;$RP$0$i$i = $790; + continue; + } + $793 = ((($R$0$i$i)) + 16|0); + $794 = HEAP32[$793>>2]|0; + $795 = ($794|0)==(0|0); + if ($795) { + $R$0$i$i$lcssa = $R$0$i$i;$RP$0$i$i$lcssa = $RP$0$i$i; + break; + } else { + $R$0$i$i = $794;$RP$0$i$i = $793; + } + } + $796 = ($RP$0$i$i$lcssa>>>0)<($755>>>0); + if ($796) { + _abort(); + // unreachable; + } else { + HEAP32[$RP$0$i$i$lcssa>>2] = 0; + $R$1$i$i = $R$0$i$i$lcssa; + break; + } + } else { + $$sum3536$i$i = $719 | 8; + $$sum117$i = (($$sum3536$i$i) + ($tsize$254$i))|0; + $775 = (($tbase$255$i) + ($$sum117$i)|0); + $776 = HEAP32[$775>>2]|0; + $777 = ($776>>>0)<($755>>>0); + if ($777) { + _abort(); + // unreachable; + } + $778 = ((($776)) + 12|0); + $779 = HEAP32[$778>>2]|0; + $780 = ($779|0)==($720|0); + if (!($780)) { + _abort(); + // unreachable; + } + $781 = ((($773)) + 8|0); + $782 = HEAP32[$781>>2]|0; + $783 = ($782|0)==($720|0); + if ($783) { + HEAP32[$778>>2] = $773; + HEAP32[$781>>2] = $776; + $R$1$i$i = $773; + break; + } else { + _abort(); + // unreachable; + } + } + } while(0); + $797 = ($771|0)==(0|0); + if ($797) { + break; + } + $$sum30$i$i = (($tsize$254$i) + 28)|0; + $$sum118$i = (($$sum30$i$i) + ($719))|0; + $798 = (($tbase$255$i) + ($$sum118$i)|0); + $799 = HEAP32[$798>>2]|0; + $800 = (553352 + ($799<<2)|0); + $801 = HEAP32[$800>>2]|0; + $802 = ($720|0)==($801|0); + do { + if ($802) { + HEAP32[$800>>2] = $R$1$i$i; + $cond$i$i = ($R$1$i$i|0)==(0|0); + if (!($cond$i$i)) { + break; + } + $803 = 1 << $799; + $804 = $803 ^ -1; + $805 = HEAP32[(553052)>>2]|0; + $806 = $805 & $804; + HEAP32[(553052)>>2] = $806; + break L325; + } else { + $807 = HEAP32[(553064)>>2]|0; + $808 = ($771>>>0)<($807>>>0); + if ($808) { + _abort(); + // unreachable; + } + $809 = ((($771)) + 16|0); + $810 = HEAP32[$809>>2]|0; + $811 = ($810|0)==($720|0); + if ($811) { + HEAP32[$809>>2] = $R$1$i$i; + } else { + $812 = ((($771)) + 20|0); + HEAP32[$812>>2] = $R$1$i$i; + } + $813 = ($R$1$i$i|0)==(0|0); + if ($813) { + break L325; + } + } + } while(0); + $814 = HEAP32[(553064)>>2]|0; + $815 = ($R$1$i$i>>>0)<($814>>>0); + if ($815) { + _abort(); + // unreachable; + } + $816 = ((($R$1$i$i)) + 24|0); + HEAP32[$816>>2] = $771; + $$sum3132$i$i = $719 | 16; + $$sum119$i = (($$sum3132$i$i) + ($tsize$254$i))|0; + $817 = (($tbase$255$i) + ($$sum119$i)|0); + $818 = HEAP32[$817>>2]|0; + $819 = ($818|0)==(0|0); + do { + if (!($819)) { + $820 = ($818>>>0)<($814>>>0); + if ($820) { + _abort(); + // unreachable; + } else { + $821 = ((($R$1$i$i)) + 16|0); + HEAP32[$821>>2] = $818; + $822 = ((($818)) + 24|0); + HEAP32[$822>>2] = $R$1$i$i; + break; + } + } + } while(0); + $$sum120$i = (($$sum2$i21$i) + ($$sum3132$i$i))|0; + $823 = (($tbase$255$i) + ($$sum120$i)|0); + $824 = HEAP32[$823>>2]|0; + $825 = ($824|0)==(0|0); + if ($825) { + break; + } + $826 = HEAP32[(553064)>>2]|0; + $827 = ($824>>>0)<($826>>>0); + if ($827) { + _abort(); + // unreachable; + } else { + $828 = ((($R$1$i$i)) + 20|0); + HEAP32[$828>>2] = $824; + $829 = ((($824)) + 24|0); + HEAP32[$829>>2] = $R$1$i$i; + break; + } + } + } while(0); + $$sum9$i$i = $744 | $719; + $$sum121$i = (($$sum9$i$i) + ($tsize$254$i))|0; + $830 = (($tbase$255$i) + ($$sum121$i)|0); + $831 = (($744) + ($725))|0; + $oldfirst$0$i$i = $830;$qsize$0$i$i = $831; + } else { + $oldfirst$0$i$i = $720;$qsize$0$i$i = $725; + } + $832 = ((($oldfirst$0$i$i)) + 4|0); + $833 = HEAP32[$832>>2]|0; + $834 = $833 & -2; + HEAP32[$832>>2] = $834; + $835 = $qsize$0$i$i | 1; + $$sum10$i$i = (($$sum$i19$i) + 4)|0; + $836 = (($tbase$255$i) + ($$sum10$i$i)|0); + HEAP32[$836>>2] = $835; + $$sum11$i$i = (($qsize$0$i$i) + ($$sum$i19$i))|0; + $837 = (($tbase$255$i) + ($$sum11$i$i)|0); + HEAP32[$837>>2] = $qsize$0$i$i; + $838 = $qsize$0$i$i >>> 3; + $839 = ($qsize$0$i$i>>>0)<(256); + if ($839) { + $840 = $838 << 1; + $841 = (553088 + ($840<<2)|0); + $842 = HEAP32[553048>>2]|0; + $843 = 1 << $838; + $844 = $842 & $843; + $845 = ($844|0)==(0); + do { + if ($845) { + $846 = $842 | $843; + HEAP32[553048>>2] = $846; + $$pre$i22$i = (($840) + 2)|0; + $$pre56$i$i = (553088 + ($$pre$i22$i<<2)|0); + $$pre$phi$i23$iZ2D = $$pre56$i$i;$F4$0$i$i = $841; + } else { + $$sum29$i$i = (($840) + 2)|0; + $847 = (553088 + ($$sum29$i$i<<2)|0); + $848 = HEAP32[$847>>2]|0; + $849 = HEAP32[(553064)>>2]|0; + $850 = ($848>>>0)<($849>>>0); + if (!($850)) { + $$pre$phi$i23$iZ2D = $847;$F4$0$i$i = $848; + break; + } + _abort(); + // unreachable; + } + } while(0); + HEAP32[$$pre$phi$i23$iZ2D>>2] = $724; + $851 = ((($F4$0$i$i)) + 12|0); + HEAP32[$851>>2] = $724; + $$sum27$i$i = (($$sum$i19$i) + 8)|0; + $852 = (($tbase$255$i) + ($$sum27$i$i)|0); + HEAP32[$852>>2] = $F4$0$i$i; + $$sum28$i$i = (($$sum$i19$i) + 12)|0; + $853 = (($tbase$255$i) + ($$sum28$i$i)|0); + HEAP32[$853>>2] = $841; + break; + } + $854 = $qsize$0$i$i >>> 8; + $855 = ($854|0)==(0); + do { + if ($855) { + $I7$0$i$i = 0; + } else { + $856 = ($qsize$0$i$i>>>0)>(16777215); + if ($856) { + $I7$0$i$i = 31; + break; + } + $857 = (($854) + 1048320)|0; + $858 = $857 >>> 16; + $859 = $858 & 8; + $860 = $854 << $859; + $861 = (($860) + 520192)|0; + $862 = $861 >>> 16; + $863 = $862 & 4; + $864 = $863 | $859; + $865 = $860 << $863; + $866 = (($865) + 245760)|0; + $867 = $866 >>> 16; + $868 = $867 & 2; + $869 = $864 | $868; + $870 = (14 - ($869))|0; + $871 = $865 << $868; + $872 = $871 >>> 15; + $873 = (($870) + ($872))|0; + $874 = $873 << 1; + $875 = (($873) + 7)|0; + $876 = $qsize$0$i$i >>> $875; + $877 = $876 & 1; + $878 = $877 | $874; + $I7$0$i$i = $878; + } + } while(0); + $879 = (553352 + ($I7$0$i$i<<2)|0); + $$sum12$i$i = (($$sum$i19$i) + 28)|0; + $880 = (($tbase$255$i) + ($$sum12$i$i)|0); + HEAP32[$880>>2] = $I7$0$i$i; + $$sum13$i$i = (($$sum$i19$i) + 16)|0; + $881 = (($tbase$255$i) + ($$sum13$i$i)|0); + $$sum14$i$i = (($$sum$i19$i) + 20)|0; + $882 = (($tbase$255$i) + ($$sum14$i$i)|0); + HEAP32[$882>>2] = 0; + HEAP32[$881>>2] = 0; + $883 = HEAP32[(553052)>>2]|0; + $884 = 1 << $I7$0$i$i; + $885 = $883 & $884; + $886 = ($885|0)==(0); + if ($886) { + $887 = $883 | $884; + HEAP32[(553052)>>2] = $887; + HEAP32[$879>>2] = $724; + $$sum15$i$i = (($$sum$i19$i) + 24)|0; + $888 = (($tbase$255$i) + ($$sum15$i$i)|0); + HEAP32[$888>>2] = $879; + $$sum16$i$i = (($$sum$i19$i) + 12)|0; + $889 = (($tbase$255$i) + ($$sum16$i$i)|0); + HEAP32[$889>>2] = $724; + $$sum17$i$i = (($$sum$i19$i) + 8)|0; + $890 = (($tbase$255$i) + ($$sum17$i$i)|0); + HEAP32[$890>>2] = $724; + break; + } + $891 = HEAP32[$879>>2]|0; + $892 = ((($891)) + 4|0); + $893 = HEAP32[$892>>2]|0; + $894 = $893 & -8; + $895 = ($894|0)==($qsize$0$i$i|0); + L411: do { + if ($895) { + $T$0$lcssa$i25$i = $891; + } else { + $896 = ($I7$0$i$i|0)==(31); + $897 = $I7$0$i$i >>> 1; + $898 = (25 - ($897))|0; + $899 = $896 ? 0 : $898; + $900 = $qsize$0$i$i << $899; + $K8$051$i$i = $900;$T$050$i$i = $891; + while(1) { + $907 = $K8$051$i$i >>> 31; + $908 = (((($T$050$i$i)) + 16|0) + ($907<<2)|0); + $903 = HEAP32[$908>>2]|0; + $909 = ($903|0)==(0|0); + if ($909) { + $$lcssa = $908;$T$050$i$i$lcssa = $T$050$i$i; + break; + } + $901 = $K8$051$i$i << 1; + $902 = ((($903)) + 4|0); + $904 = HEAP32[$902>>2]|0; + $905 = $904 & -8; + $906 = ($905|0)==($qsize$0$i$i|0); + if ($906) { + $T$0$lcssa$i25$i = $903; + break L411; + } else { + $K8$051$i$i = $901;$T$050$i$i = $903; + } + } + $910 = HEAP32[(553064)>>2]|0; + $911 = ($$lcssa>>>0)<($910>>>0); + if ($911) { + _abort(); + // unreachable; + } else { + HEAP32[$$lcssa>>2] = $724; + $$sum23$i$i = (($$sum$i19$i) + 24)|0; + $912 = (($tbase$255$i) + ($$sum23$i$i)|0); + HEAP32[$912>>2] = $T$050$i$i$lcssa; + $$sum24$i$i = (($$sum$i19$i) + 12)|0; + $913 = (($tbase$255$i) + ($$sum24$i$i)|0); + HEAP32[$913>>2] = $724; + $$sum25$i$i = (($$sum$i19$i) + 8)|0; + $914 = (($tbase$255$i) + ($$sum25$i$i)|0); + HEAP32[$914>>2] = $724; + break L317; + } + } + } while(0); + $915 = ((($T$0$lcssa$i25$i)) + 8|0); + $916 = HEAP32[$915>>2]|0; + $917 = HEAP32[(553064)>>2]|0; + $918 = ($916>>>0)>=($917>>>0); + $not$$i26$i = ($T$0$lcssa$i25$i>>>0)>=($917>>>0); + $919 = $918 & $not$$i26$i; + if ($919) { + $920 = ((($916)) + 12|0); + HEAP32[$920>>2] = $724; + HEAP32[$915>>2] = $724; + $$sum20$i$i = (($$sum$i19$i) + 8)|0; + $921 = (($tbase$255$i) + ($$sum20$i$i)|0); + HEAP32[$921>>2] = $916; + $$sum21$i$i = (($$sum$i19$i) + 12)|0; + $922 = (($tbase$255$i) + ($$sum21$i$i)|0); + HEAP32[$922>>2] = $T$0$lcssa$i25$i; + $$sum22$i$i = (($$sum$i19$i) + 24)|0; + $923 = (($tbase$255$i) + ($$sum22$i$i)|0); + HEAP32[$923>>2] = 0; + break; + } else { + _abort(); + // unreachable; + } + } + } while(0); + $$sum1819$i$i = $711 | 8; + $924 = (($tbase$255$i) + ($$sum1819$i$i)|0); + $mem$0 = $924; + return ($mem$0|0); + } else { + $sp$0$i$i$i = (553496); + } + } + while(1) { + $925 = HEAP32[$sp$0$i$i$i>>2]|0; + $926 = ($925>>>0)>($635>>>0); + if (!($926)) { + $927 = ((($sp$0$i$i$i)) + 4|0); + $928 = HEAP32[$927>>2]|0; + $929 = (($925) + ($928)|0); + $930 = ($929>>>0)>($635>>>0); + if ($930) { + $$lcssa215 = $925;$$lcssa216 = $928;$$lcssa217 = $929; + break; + } + } + $931 = ((($sp$0$i$i$i)) + 8|0); + $932 = HEAP32[$931>>2]|0; + $sp$0$i$i$i = $932; + } + $$sum$i14$i = (($$lcssa216) + -47)|0; + $$sum1$i15$i = (($$lcssa216) + -39)|0; + $933 = (($$lcssa215) + ($$sum1$i15$i)|0); + $934 = $933; + $935 = $934 & 7; + $936 = ($935|0)==(0); + $937 = (0 - ($934))|0; + $938 = $937 & 7; + $939 = $936 ? 0 : $938; + $$sum2$i16$i = (($$sum$i14$i) + ($939))|0; + $940 = (($$lcssa215) + ($$sum2$i16$i)|0); + $941 = ((($635)) + 16|0); + $942 = ($940>>>0)<($941>>>0); + $943 = $942 ? $635 : $940; + $944 = ((($943)) + 8|0); + $945 = (($tsize$254$i) + -40)|0; + $946 = ((($tbase$255$i)) + 8|0); + $947 = $946; + $948 = $947 & 7; + $949 = ($948|0)==(0); + $950 = (0 - ($947))|0; + $951 = $950 & 7; + $952 = $949 ? 0 : $951; + $953 = (($tbase$255$i) + ($952)|0); + $954 = (($945) - ($952))|0; + HEAP32[(553072)>>2] = $953; + HEAP32[(553060)>>2] = $954; + $955 = $954 | 1; + $$sum$i$i$i = (($952) + 4)|0; + $956 = (($tbase$255$i) + ($$sum$i$i$i)|0); + HEAP32[$956>>2] = $955; + $$sum2$i$i$i = (($tsize$254$i) + -36)|0; + $957 = (($tbase$255$i) + ($$sum2$i$i$i)|0); + HEAP32[$957>>2] = 40; + $958 = HEAP32[(553536)>>2]|0; + HEAP32[(553076)>>2] = $958; + $959 = ((($943)) + 4|0); + HEAP32[$959>>2] = 27; + ;HEAP32[$944>>2]=HEAP32[(553496)>>2]|0;HEAP32[$944+4>>2]=HEAP32[(553496)+4>>2]|0;HEAP32[$944+8>>2]=HEAP32[(553496)+8>>2]|0;HEAP32[$944+12>>2]=HEAP32[(553496)+12>>2]|0; + HEAP32[(553496)>>2] = $tbase$255$i; + HEAP32[(553500)>>2] = $tsize$254$i; + HEAP32[(553508)>>2] = 0; + HEAP32[(553504)>>2] = $944; + $960 = ((($943)) + 28|0); + HEAP32[$960>>2] = 7; + $961 = ((($943)) + 32|0); + $962 = ($961>>>0)<($$lcssa217>>>0); + if ($962) { + $964 = $960; + while(1) { + $963 = ((($964)) + 4|0); + HEAP32[$963>>2] = 7; + $965 = ((($964)) + 8|0); + $966 = ($965>>>0)<($$lcssa217>>>0); + if ($966) { + $964 = $963; + } else { + break; + } + } + } + $967 = ($943|0)==($635|0); + if (!($967)) { + $968 = $943; + $969 = $635; + $970 = (($968) - ($969))|0; + $971 = HEAP32[$959>>2]|0; + $972 = $971 & -2; + HEAP32[$959>>2] = $972; + $973 = $970 | 1; + $974 = ((($635)) + 4|0); + HEAP32[$974>>2] = $973; + HEAP32[$943>>2] = $970; + $975 = $970 >>> 3; + $976 = ($970>>>0)<(256); + if ($976) { + $977 = $975 << 1; + $978 = (553088 + ($977<<2)|0); + $979 = HEAP32[553048>>2]|0; + $980 = 1 << $975; + $981 = $979 & $980; + $982 = ($981|0)==(0); + if ($982) { + $983 = $979 | $980; + HEAP32[553048>>2] = $983; + $$pre$i$i = (($977) + 2)|0; + $$pre14$i$i = (553088 + ($$pre$i$i<<2)|0); + $$pre$phi$i$iZ2D = $$pre14$i$i;$F$0$i$i = $978; + } else { + $$sum4$i$i = (($977) + 2)|0; + $984 = (553088 + ($$sum4$i$i<<2)|0); + $985 = HEAP32[$984>>2]|0; + $986 = HEAP32[(553064)>>2]|0; + $987 = ($985>>>0)<($986>>>0); + if ($987) { + _abort(); + // unreachable; + } else { + $$pre$phi$i$iZ2D = $984;$F$0$i$i = $985; + } + } + HEAP32[$$pre$phi$i$iZ2D>>2] = $635; + $988 = ((($F$0$i$i)) + 12|0); + HEAP32[$988>>2] = $635; + $989 = ((($635)) + 8|0); + HEAP32[$989>>2] = $F$0$i$i; + $990 = ((($635)) + 12|0); + HEAP32[$990>>2] = $978; + break; + } + $991 = $970 >>> 8; + $992 = ($991|0)==(0); + if ($992) { + $I1$0$i$i = 0; + } else { + $993 = ($970>>>0)>(16777215); + if ($993) { + $I1$0$i$i = 31; + } else { + $994 = (($991) + 1048320)|0; + $995 = $994 >>> 16; + $996 = $995 & 8; + $997 = $991 << $996; + $998 = (($997) + 520192)|0; + $999 = $998 >>> 16; + $1000 = $999 & 4; + $1001 = $1000 | $996; + $1002 = $997 << $1000; + $1003 = (($1002) + 245760)|0; + $1004 = $1003 >>> 16; + $1005 = $1004 & 2; + $1006 = $1001 | $1005; + $1007 = (14 - ($1006))|0; + $1008 = $1002 << $1005; + $1009 = $1008 >>> 15; + $1010 = (($1007) + ($1009))|0; + $1011 = $1010 << 1; + $1012 = (($1010) + 7)|0; + $1013 = $970 >>> $1012; + $1014 = $1013 & 1; + $1015 = $1014 | $1011; + $I1$0$i$i = $1015; + } + } + $1016 = (553352 + ($I1$0$i$i<<2)|0); + $1017 = ((($635)) + 28|0); + HEAP32[$1017>>2] = $I1$0$i$i; + $1018 = ((($635)) + 20|0); + HEAP32[$1018>>2] = 0; + HEAP32[$941>>2] = 0; + $1019 = HEAP32[(553052)>>2]|0; + $1020 = 1 << $I1$0$i$i; + $1021 = $1019 & $1020; + $1022 = ($1021|0)==(0); + if ($1022) { + $1023 = $1019 | $1020; + HEAP32[(553052)>>2] = $1023; + HEAP32[$1016>>2] = $635; + $1024 = ((($635)) + 24|0); + HEAP32[$1024>>2] = $1016; + $1025 = ((($635)) + 12|0); + HEAP32[$1025>>2] = $635; + $1026 = ((($635)) + 8|0); + HEAP32[$1026>>2] = $635; + break; + } + $1027 = HEAP32[$1016>>2]|0; + $1028 = ((($1027)) + 4|0); + $1029 = HEAP32[$1028>>2]|0; + $1030 = $1029 & -8; + $1031 = ($1030|0)==($970|0); + L452: do { + if ($1031) { + $T$0$lcssa$i$i = $1027; + } else { + $1032 = ($I1$0$i$i|0)==(31); + $1033 = $I1$0$i$i >>> 1; + $1034 = (25 - ($1033))|0; + $1035 = $1032 ? 0 : $1034; + $1036 = $970 << $1035; + $K2$07$i$i = $1036;$T$06$i$i = $1027; + while(1) { + $1043 = $K2$07$i$i >>> 31; + $1044 = (((($T$06$i$i)) + 16|0) + ($1043<<2)|0); + $1039 = HEAP32[$1044>>2]|0; + $1045 = ($1039|0)==(0|0); + if ($1045) { + $$lcssa211 = $1044;$T$06$i$i$lcssa = $T$06$i$i; + break; + } + $1037 = $K2$07$i$i << 1; + $1038 = ((($1039)) + 4|0); + $1040 = HEAP32[$1038>>2]|0; + $1041 = $1040 & -8; + $1042 = ($1041|0)==($970|0); + if ($1042) { + $T$0$lcssa$i$i = $1039; + break L452; + } else { + $K2$07$i$i = $1037;$T$06$i$i = $1039; + } + } + $1046 = HEAP32[(553064)>>2]|0; + $1047 = ($$lcssa211>>>0)<($1046>>>0); + if ($1047) { + _abort(); + // unreachable; + } else { + HEAP32[$$lcssa211>>2] = $635; + $1048 = ((($635)) + 24|0); + HEAP32[$1048>>2] = $T$06$i$i$lcssa; + $1049 = ((($635)) + 12|0); + HEAP32[$1049>>2] = $635; + $1050 = ((($635)) + 8|0); + HEAP32[$1050>>2] = $635; + break L299; + } + } + } while(0); + $1051 = ((($T$0$lcssa$i$i)) + 8|0); + $1052 = HEAP32[$1051>>2]|0; + $1053 = HEAP32[(553064)>>2]|0; + $1054 = ($1052>>>0)>=($1053>>>0); + $not$$i$i = ($T$0$lcssa$i$i>>>0)>=($1053>>>0); + $1055 = $1054 & $not$$i$i; + if ($1055) { + $1056 = ((($1052)) + 12|0); + HEAP32[$1056>>2] = $635; + HEAP32[$1051>>2] = $635; + $1057 = ((($635)) + 8|0); + HEAP32[$1057>>2] = $1052; + $1058 = ((($635)) + 12|0); + HEAP32[$1058>>2] = $T$0$lcssa$i$i; + $1059 = ((($635)) + 24|0); + HEAP32[$1059>>2] = 0; + break; + } else { + _abort(); + // unreachable; + } + } + } + } while(0); + $1060 = HEAP32[(553060)>>2]|0; + $1061 = ($1060>>>0)>($nb$0>>>0); + if ($1061) { + $1062 = (($1060) - ($nb$0))|0; + HEAP32[(553060)>>2] = $1062; + $1063 = HEAP32[(553072)>>2]|0; + $1064 = (($1063) + ($nb$0)|0); + HEAP32[(553072)>>2] = $1064; + $1065 = $1062 | 1; + $$sum$i32 = (($nb$0) + 4)|0; + $1066 = (($1063) + ($$sum$i32)|0); + HEAP32[$1066>>2] = $1065; + $1067 = $nb$0 | 3; + $1068 = ((($1063)) + 4|0); + HEAP32[$1068>>2] = $1067; + $1069 = ((($1063)) + 8|0); + $mem$0 = $1069; + return ($mem$0|0); + } + } + $1070 = (___errno_location()|0); + HEAP32[$1070>>2] = 12; + $mem$0 = 0; + return ($mem$0|0); +} +function _free($mem) { + $mem = $mem|0; + var $$lcssa = 0, $$pre = 0, $$pre$phi59Z2D = 0, $$pre$phi61Z2D = 0, $$pre$phiZ2D = 0, $$pre57 = 0, $$pre58 = 0, $$pre60 = 0, $$sum = 0, $$sum11 = 0, $$sum12 = 0, $$sum13 = 0, $$sum14 = 0, $$sum1718 = 0, $$sum19 = 0, $$sum2 = 0, $$sum20 = 0, $$sum22 = 0, $$sum23 = 0, $$sum24 = 0; + var $$sum25 = 0, $$sum26 = 0, $$sum27 = 0, $$sum28 = 0, $$sum29 = 0, $$sum3 = 0, $$sum30 = 0, $$sum31 = 0, $$sum5 = 0, $$sum67 = 0, $$sum8 = 0, $$sum9 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0; + var $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0; + var $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0; + var $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0; + var $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0; + var $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0; + var $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0; + var $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0; + var $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0; + var $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0; + var $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0, $283 = 0, $284 = 0, $285 = 0; + var $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0, $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0, $300 = 0, $301 = 0, $302 = 0; + var $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $308 = 0, $309 = 0, $31 = 0, $310 = 0, $311 = 0, $312 = 0, $313 = 0, $314 = 0, $315 = 0, $316 = 0, $317 = 0, $318 = 0, $319 = 0, $32 = 0, $320 = 0; + var $321 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0; + var $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0; + var $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0; + var $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $F16$0 = 0, $I18$0 = 0, $K19$052 = 0, $R$0 = 0, $R$0$lcssa = 0, $R$1 = 0; + var $R7$0 = 0, $R7$0$lcssa = 0, $R7$1 = 0, $RP$0 = 0, $RP$0$lcssa = 0, $RP9$0 = 0, $RP9$0$lcssa = 0, $T$0$lcssa = 0, $T$051 = 0, $T$051$lcssa = 0, $cond = 0, $cond47 = 0, $not$ = 0, $p$0 = 0, $psize$0 = 0, $psize$1 = 0, $sp$0$i = 0, $sp$0$in$i = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($mem|0)==(0|0); + if ($0) { + return; + } + $1 = ((($mem)) + -8|0); + $2 = HEAP32[(553064)>>2]|0; + $3 = ($1>>>0)<($2>>>0); + if ($3) { + _abort(); + // unreachable; + } + $4 = ((($mem)) + -4|0); + $5 = HEAP32[$4>>2]|0; + $6 = $5 & 3; + $7 = ($6|0)==(1); + if ($7) { + _abort(); + // unreachable; + } + $8 = $5 & -8; + $$sum = (($8) + -8)|0; + $9 = (($mem) + ($$sum)|0); + $10 = $5 & 1; + $11 = ($10|0)==(0); + do { + if ($11) { + $12 = HEAP32[$1>>2]|0; + $13 = ($6|0)==(0); + if ($13) { + return; + } + $$sum2 = (-8 - ($12))|0; + $14 = (($mem) + ($$sum2)|0); + $15 = (($12) + ($8))|0; + $16 = ($14>>>0)<($2>>>0); + if ($16) { + _abort(); + // unreachable; + } + $17 = HEAP32[(553068)>>2]|0; + $18 = ($14|0)==($17|0); + if ($18) { + $$sum3 = (($8) + -4)|0; + $103 = (($mem) + ($$sum3)|0); + $104 = HEAP32[$103>>2]|0; + $105 = $104 & 3; + $106 = ($105|0)==(3); + if (!($106)) { + $p$0 = $14;$psize$0 = $15; + break; + } + HEAP32[(553056)>>2] = $15; + $107 = $104 & -2; + HEAP32[$103>>2] = $107; + $108 = $15 | 1; + $$sum20 = (($$sum2) + 4)|0; + $109 = (($mem) + ($$sum20)|0); + HEAP32[$109>>2] = $108; + HEAP32[$9>>2] = $15; + return; + } + $19 = $12 >>> 3; + $20 = ($12>>>0)<(256); + if ($20) { + $$sum30 = (($$sum2) + 8)|0; + $21 = (($mem) + ($$sum30)|0); + $22 = HEAP32[$21>>2]|0; + $$sum31 = (($$sum2) + 12)|0; + $23 = (($mem) + ($$sum31)|0); + $24 = HEAP32[$23>>2]|0; + $25 = $19 << 1; + $26 = (553088 + ($25<<2)|0); + $27 = ($22|0)==($26|0); + if (!($27)) { + $28 = ($22>>>0)<($2>>>0); + if ($28) { + _abort(); + // unreachable; + } + $29 = ((($22)) + 12|0); + $30 = HEAP32[$29>>2]|0; + $31 = ($30|0)==($14|0); + if (!($31)) { + _abort(); + // unreachable; + } + } + $32 = ($24|0)==($22|0); + if ($32) { + $33 = 1 << $19; + $34 = $33 ^ -1; + $35 = HEAP32[553048>>2]|0; + $36 = $35 & $34; + HEAP32[553048>>2] = $36; + $p$0 = $14;$psize$0 = $15; + break; + } + $37 = ($24|0)==($26|0); + if ($37) { + $$pre60 = ((($24)) + 8|0); + $$pre$phi61Z2D = $$pre60; + } else { + $38 = ($24>>>0)<($2>>>0); + if ($38) { + _abort(); + // unreachable; + } + $39 = ((($24)) + 8|0); + $40 = HEAP32[$39>>2]|0; + $41 = ($40|0)==($14|0); + if ($41) { + $$pre$phi61Z2D = $39; + } else { + _abort(); + // unreachable; + } + } + $42 = ((($22)) + 12|0); + HEAP32[$42>>2] = $24; + HEAP32[$$pre$phi61Z2D>>2] = $22; + $p$0 = $14;$psize$0 = $15; + break; + } + $$sum22 = (($$sum2) + 24)|0; + $43 = (($mem) + ($$sum22)|0); + $44 = HEAP32[$43>>2]|0; + $$sum23 = (($$sum2) + 12)|0; + $45 = (($mem) + ($$sum23)|0); + $46 = HEAP32[$45>>2]|0; + $47 = ($46|0)==($14|0); + do { + if ($47) { + $$sum25 = (($$sum2) + 20)|0; + $57 = (($mem) + ($$sum25)|0); + $58 = HEAP32[$57>>2]|0; + $59 = ($58|0)==(0|0); + if ($59) { + $$sum24 = (($$sum2) + 16)|0; + $60 = (($mem) + ($$sum24)|0); + $61 = HEAP32[$60>>2]|0; + $62 = ($61|0)==(0|0); + if ($62) { + $R$1 = 0; + break; + } else { + $R$0 = $61;$RP$0 = $60; + } + } else { + $R$0 = $58;$RP$0 = $57; + } + while(1) { + $63 = ((($R$0)) + 20|0); + $64 = HEAP32[$63>>2]|0; + $65 = ($64|0)==(0|0); + if (!($65)) { + $R$0 = $64;$RP$0 = $63; + continue; + } + $66 = ((($R$0)) + 16|0); + $67 = HEAP32[$66>>2]|0; + $68 = ($67|0)==(0|0); + if ($68) { + $R$0$lcssa = $R$0;$RP$0$lcssa = $RP$0; + break; + } else { + $R$0 = $67;$RP$0 = $66; + } + } + $69 = ($RP$0$lcssa>>>0)<($2>>>0); + if ($69) { + _abort(); + // unreachable; + } else { + HEAP32[$RP$0$lcssa>>2] = 0; + $R$1 = $R$0$lcssa; + break; + } + } else { + $$sum29 = (($$sum2) + 8)|0; + $48 = (($mem) + ($$sum29)|0); + $49 = HEAP32[$48>>2]|0; + $50 = ($49>>>0)<($2>>>0); + if ($50) { + _abort(); + // unreachable; + } + $51 = ((($49)) + 12|0); + $52 = HEAP32[$51>>2]|0; + $53 = ($52|0)==($14|0); + if (!($53)) { + _abort(); + // unreachable; + } + $54 = ((($46)) + 8|0); + $55 = HEAP32[$54>>2]|0; + $56 = ($55|0)==($14|0); + if ($56) { + HEAP32[$51>>2] = $46; + HEAP32[$54>>2] = $49; + $R$1 = $46; + break; + } else { + _abort(); + // unreachable; + } + } + } while(0); + $70 = ($44|0)==(0|0); + if ($70) { + $p$0 = $14;$psize$0 = $15; + } else { + $$sum26 = (($$sum2) + 28)|0; + $71 = (($mem) + ($$sum26)|0); + $72 = HEAP32[$71>>2]|0; + $73 = (553352 + ($72<<2)|0); + $74 = HEAP32[$73>>2]|0; + $75 = ($14|0)==($74|0); + if ($75) { + HEAP32[$73>>2] = $R$1; + $cond = ($R$1|0)==(0|0); + if ($cond) { + $76 = 1 << $72; + $77 = $76 ^ -1; + $78 = HEAP32[(553052)>>2]|0; + $79 = $78 & $77; + HEAP32[(553052)>>2] = $79; + $p$0 = $14;$psize$0 = $15; + break; + } + } else { + $80 = HEAP32[(553064)>>2]|0; + $81 = ($44>>>0)<($80>>>0); + if ($81) { + _abort(); + // unreachable; + } + $82 = ((($44)) + 16|0); + $83 = HEAP32[$82>>2]|0; + $84 = ($83|0)==($14|0); + if ($84) { + HEAP32[$82>>2] = $R$1; + } else { + $85 = ((($44)) + 20|0); + HEAP32[$85>>2] = $R$1; + } + $86 = ($R$1|0)==(0|0); + if ($86) { + $p$0 = $14;$psize$0 = $15; + break; + } + } + $87 = HEAP32[(553064)>>2]|0; + $88 = ($R$1>>>0)<($87>>>0); + if ($88) { + _abort(); + // unreachable; + } + $89 = ((($R$1)) + 24|0); + HEAP32[$89>>2] = $44; + $$sum27 = (($$sum2) + 16)|0; + $90 = (($mem) + ($$sum27)|0); + $91 = HEAP32[$90>>2]|0; + $92 = ($91|0)==(0|0); + do { + if (!($92)) { + $93 = ($91>>>0)<($87>>>0); + if ($93) { + _abort(); + // unreachable; + } else { + $94 = ((($R$1)) + 16|0); + HEAP32[$94>>2] = $91; + $95 = ((($91)) + 24|0); + HEAP32[$95>>2] = $R$1; + break; + } + } + } while(0); + $$sum28 = (($$sum2) + 20)|0; + $96 = (($mem) + ($$sum28)|0); + $97 = HEAP32[$96>>2]|0; + $98 = ($97|0)==(0|0); + if ($98) { + $p$0 = $14;$psize$0 = $15; + } else { + $99 = HEAP32[(553064)>>2]|0; + $100 = ($97>>>0)<($99>>>0); + if ($100) { + _abort(); + // unreachable; + } else { + $101 = ((($R$1)) + 20|0); + HEAP32[$101>>2] = $97; + $102 = ((($97)) + 24|0); + HEAP32[$102>>2] = $R$1; + $p$0 = $14;$psize$0 = $15; + break; + } + } + } + } else { + $p$0 = $1;$psize$0 = $8; + } + } while(0); + $110 = ($p$0>>>0)<($9>>>0); + if (!($110)) { + _abort(); + // unreachable; + } + $$sum19 = (($8) + -4)|0; + $111 = (($mem) + ($$sum19)|0); + $112 = HEAP32[$111>>2]|0; + $113 = $112 & 1; + $114 = ($113|0)==(0); + if ($114) { + _abort(); + // unreachable; + } + $115 = $112 & 2; + $116 = ($115|0)==(0); + if ($116) { + $117 = HEAP32[(553072)>>2]|0; + $118 = ($9|0)==($117|0); + if ($118) { + $119 = HEAP32[(553060)>>2]|0; + $120 = (($119) + ($psize$0))|0; + HEAP32[(553060)>>2] = $120; + HEAP32[(553072)>>2] = $p$0; + $121 = $120 | 1; + $122 = ((($p$0)) + 4|0); + HEAP32[$122>>2] = $121; + $123 = HEAP32[(553068)>>2]|0; + $124 = ($p$0|0)==($123|0); + if (!($124)) { + return; + } + HEAP32[(553068)>>2] = 0; + HEAP32[(553056)>>2] = 0; + return; + } + $125 = HEAP32[(553068)>>2]|0; + $126 = ($9|0)==($125|0); + if ($126) { + $127 = HEAP32[(553056)>>2]|0; + $128 = (($127) + ($psize$0))|0; + HEAP32[(553056)>>2] = $128; + HEAP32[(553068)>>2] = $p$0; + $129 = $128 | 1; + $130 = ((($p$0)) + 4|0); + HEAP32[$130>>2] = $129; + $131 = (($p$0) + ($128)|0); + HEAP32[$131>>2] = $128; + return; + } + $132 = $112 & -8; + $133 = (($132) + ($psize$0))|0; + $134 = $112 >>> 3; + $135 = ($112>>>0)<(256); + do { + if ($135) { + $136 = (($mem) + ($8)|0); + $137 = HEAP32[$136>>2]|0; + $$sum1718 = $8 | 4; + $138 = (($mem) + ($$sum1718)|0); + $139 = HEAP32[$138>>2]|0; + $140 = $134 << 1; + $141 = (553088 + ($140<<2)|0); + $142 = ($137|0)==($141|0); + if (!($142)) { + $143 = HEAP32[(553064)>>2]|0; + $144 = ($137>>>0)<($143>>>0); + if ($144) { + _abort(); + // unreachable; + } + $145 = ((($137)) + 12|0); + $146 = HEAP32[$145>>2]|0; + $147 = ($146|0)==($9|0); + if (!($147)) { + _abort(); + // unreachable; + } + } + $148 = ($139|0)==($137|0); + if ($148) { + $149 = 1 << $134; + $150 = $149 ^ -1; + $151 = HEAP32[553048>>2]|0; + $152 = $151 & $150; + HEAP32[553048>>2] = $152; + break; + } + $153 = ($139|0)==($141|0); + if ($153) { + $$pre58 = ((($139)) + 8|0); + $$pre$phi59Z2D = $$pre58; + } else { + $154 = HEAP32[(553064)>>2]|0; + $155 = ($139>>>0)<($154>>>0); + if ($155) { + _abort(); + // unreachable; + } + $156 = ((($139)) + 8|0); + $157 = HEAP32[$156>>2]|0; + $158 = ($157|0)==($9|0); + if ($158) { + $$pre$phi59Z2D = $156; + } else { + _abort(); + // unreachable; + } + } + $159 = ((($137)) + 12|0); + HEAP32[$159>>2] = $139; + HEAP32[$$pre$phi59Z2D>>2] = $137; + } else { + $$sum5 = (($8) + 16)|0; + $160 = (($mem) + ($$sum5)|0); + $161 = HEAP32[$160>>2]|0; + $$sum67 = $8 | 4; + $162 = (($mem) + ($$sum67)|0); + $163 = HEAP32[$162>>2]|0; + $164 = ($163|0)==($9|0); + do { + if ($164) { + $$sum9 = (($8) + 12)|0; + $175 = (($mem) + ($$sum9)|0); + $176 = HEAP32[$175>>2]|0; + $177 = ($176|0)==(0|0); + if ($177) { + $$sum8 = (($8) + 8)|0; + $178 = (($mem) + ($$sum8)|0); + $179 = HEAP32[$178>>2]|0; + $180 = ($179|0)==(0|0); + if ($180) { + $R7$1 = 0; + break; + } else { + $R7$0 = $179;$RP9$0 = $178; + } + } else { + $R7$0 = $176;$RP9$0 = $175; + } + while(1) { + $181 = ((($R7$0)) + 20|0); + $182 = HEAP32[$181>>2]|0; + $183 = ($182|0)==(0|0); + if (!($183)) { + $R7$0 = $182;$RP9$0 = $181; + continue; + } + $184 = ((($R7$0)) + 16|0); + $185 = HEAP32[$184>>2]|0; + $186 = ($185|0)==(0|0); + if ($186) { + $R7$0$lcssa = $R7$0;$RP9$0$lcssa = $RP9$0; + break; + } else { + $R7$0 = $185;$RP9$0 = $184; + } + } + $187 = HEAP32[(553064)>>2]|0; + $188 = ($RP9$0$lcssa>>>0)<($187>>>0); + if ($188) { + _abort(); + // unreachable; + } else { + HEAP32[$RP9$0$lcssa>>2] = 0; + $R7$1 = $R7$0$lcssa; + break; + } + } else { + $165 = (($mem) + ($8)|0); + $166 = HEAP32[$165>>2]|0; + $167 = HEAP32[(553064)>>2]|0; + $168 = ($166>>>0)<($167>>>0); + if ($168) { + _abort(); + // unreachable; + } + $169 = ((($166)) + 12|0); + $170 = HEAP32[$169>>2]|0; + $171 = ($170|0)==($9|0); + if (!($171)) { + _abort(); + // unreachable; + } + $172 = ((($163)) + 8|0); + $173 = HEAP32[$172>>2]|0; + $174 = ($173|0)==($9|0); + if ($174) { + HEAP32[$169>>2] = $163; + HEAP32[$172>>2] = $166; + $R7$1 = $163; + break; + } else { + _abort(); + // unreachable; + } + } + } while(0); + $189 = ($161|0)==(0|0); + if (!($189)) { + $$sum12 = (($8) + 20)|0; + $190 = (($mem) + ($$sum12)|0); + $191 = HEAP32[$190>>2]|0; + $192 = (553352 + ($191<<2)|0); + $193 = HEAP32[$192>>2]|0; + $194 = ($9|0)==($193|0); + if ($194) { + HEAP32[$192>>2] = $R7$1; + $cond47 = ($R7$1|0)==(0|0); + if ($cond47) { + $195 = 1 << $191; + $196 = $195 ^ -1; + $197 = HEAP32[(553052)>>2]|0; + $198 = $197 & $196; + HEAP32[(553052)>>2] = $198; + break; + } + } else { + $199 = HEAP32[(553064)>>2]|0; + $200 = ($161>>>0)<($199>>>0); + if ($200) { + _abort(); + // unreachable; + } + $201 = ((($161)) + 16|0); + $202 = HEAP32[$201>>2]|0; + $203 = ($202|0)==($9|0); + if ($203) { + HEAP32[$201>>2] = $R7$1; + } else { + $204 = ((($161)) + 20|0); + HEAP32[$204>>2] = $R7$1; + } + $205 = ($R7$1|0)==(0|0); + if ($205) { + break; + } + } + $206 = HEAP32[(553064)>>2]|0; + $207 = ($R7$1>>>0)<($206>>>0); + if ($207) { + _abort(); + // unreachable; + } + $208 = ((($R7$1)) + 24|0); + HEAP32[$208>>2] = $161; + $$sum13 = (($8) + 8)|0; + $209 = (($mem) + ($$sum13)|0); + $210 = HEAP32[$209>>2]|0; + $211 = ($210|0)==(0|0); + do { + if (!($211)) { + $212 = ($210>>>0)<($206>>>0); + if ($212) { + _abort(); + // unreachable; + } else { + $213 = ((($R7$1)) + 16|0); + HEAP32[$213>>2] = $210; + $214 = ((($210)) + 24|0); + HEAP32[$214>>2] = $R7$1; + break; + } + } + } while(0); + $$sum14 = (($8) + 12)|0; + $215 = (($mem) + ($$sum14)|0); + $216 = HEAP32[$215>>2]|0; + $217 = ($216|0)==(0|0); + if (!($217)) { + $218 = HEAP32[(553064)>>2]|0; + $219 = ($216>>>0)<($218>>>0); + if ($219) { + _abort(); + // unreachable; + } else { + $220 = ((($R7$1)) + 20|0); + HEAP32[$220>>2] = $216; + $221 = ((($216)) + 24|0); + HEAP32[$221>>2] = $R7$1; + break; + } + } + } + } + } while(0); + $222 = $133 | 1; + $223 = ((($p$0)) + 4|0); + HEAP32[$223>>2] = $222; + $224 = (($p$0) + ($133)|0); + HEAP32[$224>>2] = $133; + $225 = HEAP32[(553068)>>2]|0; + $226 = ($p$0|0)==($225|0); + if ($226) { + HEAP32[(553056)>>2] = $133; + return; + } else { + $psize$1 = $133; + } + } else { + $227 = $112 & -2; + HEAP32[$111>>2] = $227; + $228 = $psize$0 | 1; + $229 = ((($p$0)) + 4|0); + HEAP32[$229>>2] = $228; + $230 = (($p$0) + ($psize$0)|0); + HEAP32[$230>>2] = $psize$0; + $psize$1 = $psize$0; + } + $231 = $psize$1 >>> 3; + $232 = ($psize$1>>>0)<(256); + if ($232) { + $233 = $231 << 1; + $234 = (553088 + ($233<<2)|0); + $235 = HEAP32[553048>>2]|0; + $236 = 1 << $231; + $237 = $235 & $236; + $238 = ($237|0)==(0); + if ($238) { + $239 = $235 | $236; + HEAP32[553048>>2] = $239; + $$pre = (($233) + 2)|0; + $$pre57 = (553088 + ($$pre<<2)|0); + $$pre$phiZ2D = $$pre57;$F16$0 = $234; + } else { + $$sum11 = (($233) + 2)|0; + $240 = (553088 + ($$sum11<<2)|0); + $241 = HEAP32[$240>>2]|0; + $242 = HEAP32[(553064)>>2]|0; + $243 = ($241>>>0)<($242>>>0); + if ($243) { + _abort(); + // unreachable; + } else { + $$pre$phiZ2D = $240;$F16$0 = $241; + } + } + HEAP32[$$pre$phiZ2D>>2] = $p$0; + $244 = ((($F16$0)) + 12|0); + HEAP32[$244>>2] = $p$0; + $245 = ((($p$0)) + 8|0); + HEAP32[$245>>2] = $F16$0; + $246 = ((($p$0)) + 12|0); + HEAP32[$246>>2] = $234; + return; + } + $247 = $psize$1 >>> 8; + $248 = ($247|0)==(0); + if ($248) { + $I18$0 = 0; + } else { + $249 = ($psize$1>>>0)>(16777215); + if ($249) { + $I18$0 = 31; + } else { + $250 = (($247) + 1048320)|0; + $251 = $250 >>> 16; + $252 = $251 & 8; + $253 = $247 << $252; + $254 = (($253) + 520192)|0; + $255 = $254 >>> 16; + $256 = $255 & 4; + $257 = $256 | $252; + $258 = $253 << $256; + $259 = (($258) + 245760)|0; + $260 = $259 >>> 16; + $261 = $260 & 2; + $262 = $257 | $261; + $263 = (14 - ($262))|0; + $264 = $258 << $261; + $265 = $264 >>> 15; + $266 = (($263) + ($265))|0; + $267 = $266 << 1; + $268 = (($266) + 7)|0; + $269 = $psize$1 >>> $268; + $270 = $269 & 1; + $271 = $270 | $267; + $I18$0 = $271; + } + } + $272 = (553352 + ($I18$0<<2)|0); + $273 = ((($p$0)) + 28|0); + HEAP32[$273>>2] = $I18$0; + $274 = ((($p$0)) + 16|0); + $275 = ((($p$0)) + 20|0); + HEAP32[$275>>2] = 0; + HEAP32[$274>>2] = 0; + $276 = HEAP32[(553052)>>2]|0; + $277 = 1 << $I18$0; + $278 = $276 & $277; + $279 = ($278|0)==(0); + L199: do { + if ($279) { + $280 = $276 | $277; + HEAP32[(553052)>>2] = $280; + HEAP32[$272>>2] = $p$0; + $281 = ((($p$0)) + 24|0); + HEAP32[$281>>2] = $272; + $282 = ((($p$0)) + 12|0); + HEAP32[$282>>2] = $p$0; + $283 = ((($p$0)) + 8|0); + HEAP32[$283>>2] = $p$0; + } else { + $284 = HEAP32[$272>>2]|0; + $285 = ((($284)) + 4|0); + $286 = HEAP32[$285>>2]|0; + $287 = $286 & -8; + $288 = ($287|0)==($psize$1|0); + L202: do { + if ($288) { + $T$0$lcssa = $284; + } else { + $289 = ($I18$0|0)==(31); + $290 = $I18$0 >>> 1; + $291 = (25 - ($290))|0; + $292 = $289 ? 0 : $291; + $293 = $psize$1 << $292; + $K19$052 = $293;$T$051 = $284; + while(1) { + $300 = $K19$052 >>> 31; + $301 = (((($T$051)) + 16|0) + ($300<<2)|0); + $296 = HEAP32[$301>>2]|0; + $302 = ($296|0)==(0|0); + if ($302) { + $$lcssa = $301;$T$051$lcssa = $T$051; + break; + } + $294 = $K19$052 << 1; + $295 = ((($296)) + 4|0); + $297 = HEAP32[$295>>2]|0; + $298 = $297 & -8; + $299 = ($298|0)==($psize$1|0); + if ($299) { + $T$0$lcssa = $296; + break L202; + } else { + $K19$052 = $294;$T$051 = $296; + } + } + $303 = HEAP32[(553064)>>2]|0; + $304 = ($$lcssa>>>0)<($303>>>0); + if ($304) { + _abort(); + // unreachable; + } else { + HEAP32[$$lcssa>>2] = $p$0; + $305 = ((($p$0)) + 24|0); + HEAP32[$305>>2] = $T$051$lcssa; + $306 = ((($p$0)) + 12|0); + HEAP32[$306>>2] = $p$0; + $307 = ((($p$0)) + 8|0); + HEAP32[$307>>2] = $p$0; + break L199; + } + } + } while(0); + $308 = ((($T$0$lcssa)) + 8|0); + $309 = HEAP32[$308>>2]|0; + $310 = HEAP32[(553064)>>2]|0; + $311 = ($309>>>0)>=($310>>>0); + $not$ = ($T$0$lcssa>>>0)>=($310>>>0); + $312 = $311 & $not$; + if ($312) { + $313 = ((($309)) + 12|0); + HEAP32[$313>>2] = $p$0; + HEAP32[$308>>2] = $p$0; + $314 = ((($p$0)) + 8|0); + HEAP32[$314>>2] = $309; + $315 = ((($p$0)) + 12|0); + HEAP32[$315>>2] = $T$0$lcssa; + $316 = ((($p$0)) + 24|0); + HEAP32[$316>>2] = 0; + break; + } else { + _abort(); + // unreachable; + } + } + } while(0); + $317 = HEAP32[(553080)>>2]|0; + $318 = (($317) + -1)|0; + HEAP32[(553080)>>2] = $318; + $319 = ($318|0)==(0); + if ($319) { + $sp$0$in$i = (553504); + } else { + return; + } + while(1) { + $sp$0$i = HEAP32[$sp$0$in$i>>2]|0; + $320 = ($sp$0$i|0)==(0|0); + $321 = ((($sp$0$i)) + 8|0); + if ($320) { + break; + } else { + $sp$0$in$i = $321; + } + } + HEAP32[(553080)>>2] = -1; + return; +} +function _calloc($n_elements,$elem_size) { + $n_elements = $n_elements|0; + $elem_size = $elem_size|0; + var $$ = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $req$0 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($n_elements|0)==(0); + if ($0) { + $req$0 = 0; + } else { + $1 = Math_imul($elem_size, $n_elements)|0; + $2 = $elem_size | $n_elements; + $3 = ($2>>>0)>(65535); + if ($3) { + $4 = (($1>>>0) / ($n_elements>>>0))&-1; + $5 = ($4|0)==($elem_size|0); + $$ = $5 ? $1 : -1; + $req$0 = $$; + } else { + $req$0 = $1; + } + } + $6 = (_malloc($req$0)|0); + $7 = ($6|0)==(0|0); + if ($7) { + return ($6|0); + } + $8 = ((($6)) + -4|0); + $9 = HEAP32[$8>>2]|0; + $10 = $9 & 3; + $11 = ($10|0)==(0); + if ($11) { + return ($6|0); + } + _memset(($6|0),0,($req$0|0))|0; + return ($6|0); +} +function _realloc($oldmem,$bytes) { + $oldmem = $oldmem|0; + $bytes = $bytes|0; + var $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0; + var $7 = 0, $8 = 0, $9 = 0, $mem$0 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ($oldmem|0)==(0|0); + if ($0) { + $1 = (_malloc($bytes)|0); + $mem$0 = $1; + return ($mem$0|0); + } + $2 = ($bytes>>>0)>(4294967231); + if ($2) { + $3 = (___errno_location()|0); + HEAP32[$3>>2] = 12; + $mem$0 = 0; + return ($mem$0|0); + } + $4 = ($bytes>>>0)<(11); + $5 = (($bytes) + 11)|0; + $6 = $5 & -8; + $7 = $4 ? 16 : $6; + $8 = ((($oldmem)) + -8|0); + $9 = (_try_realloc_chunk($8,$7)|0); + $10 = ($9|0)==(0|0); + if (!($10)) { + $11 = ((($9)) + 8|0); + $mem$0 = $11; + return ($mem$0|0); + } + $12 = (_malloc($bytes)|0); + $13 = ($12|0)==(0|0); + if ($13) { + $mem$0 = 0; + return ($mem$0|0); + } + $14 = ((($oldmem)) + -4|0); + $15 = HEAP32[$14>>2]|0; + $16 = $15 & -8; + $17 = $15 & 3; + $18 = ($17|0)==(0); + $19 = $18 ? 8 : 4; + $20 = (($16) - ($19))|0; + $21 = ($20>>>0)<($bytes>>>0); + $22 = $21 ? $20 : $bytes; + _memcpy(($12|0),($oldmem|0),($22|0))|0; + _free($oldmem); + $mem$0 = $12; + return ($mem$0|0); +} +function _try_realloc_chunk($p,$nb) { + $p = $p|0; + $nb = $nb|0; + var $$pre = 0, $$pre$phiZ2D = 0, $$sum = 0, $$sum11 = 0, $$sum12 = 0, $$sum13 = 0, $$sum14 = 0, $$sum15 = 0, $$sum16 = 0, $$sum17 = 0, $$sum19 = 0, $$sum2 = 0, $$sum20 = 0, $$sum22 = 0, $$sum23 = 0, $$sum2728 = 0, $$sum3 = 0, $$sum4 = 0, $$sum5 = 0, $$sum78 = 0; + var $$sum910 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0; + var $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0; + var $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0; + var $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0; + var $17 = 0, $170 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0; + var $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0; + var $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0; + var $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0; + var $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $R$0 = 0, $R$0$lcssa = 0, $R$1 = 0, $RP$0 = 0, $RP$0$lcssa = 0, $cond = 0, $newp$0 = 0, $notlhs = 0; + var $notrhs = 0, $or$cond$not = 0, $or$cond30 = 0, $storemerge = 0, $storemerge21 = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = ((($p)) + 4|0); + $1 = HEAP32[$0>>2]|0; + $2 = $1 & -8; + $3 = (($p) + ($2)|0); + $4 = HEAP32[(553064)>>2]|0; + $5 = $1 & 3; + $notlhs = ($p>>>0)>=($4>>>0); + $notrhs = ($5|0)!=(1); + $or$cond$not = $notrhs & $notlhs; + $6 = ($p>>>0)<($3>>>0); + $or$cond30 = $or$cond$not & $6; + if (!($or$cond30)) { + _abort(); + // unreachable; + } + $$sum2728 = $2 | 4; + $7 = (($p) + ($$sum2728)|0); + $8 = HEAP32[$7>>2]|0; + $9 = $8 & 1; + $10 = ($9|0)==(0); + if ($10) { + _abort(); + // unreachable; + } + $11 = ($5|0)==(0); + if ($11) { + $12 = ($nb>>>0)<(256); + if ($12) { + $newp$0 = 0; + return ($newp$0|0); + } + $13 = (($nb) + 4)|0; + $14 = ($2>>>0)<($13>>>0); + if (!($14)) { + $15 = (($2) - ($nb))|0; + $16 = HEAP32[(553528)>>2]|0; + $17 = $16 << 1; + $18 = ($15>>>0)>($17>>>0); + if (!($18)) { + $newp$0 = $p; + return ($newp$0|0); + } + } + $newp$0 = 0; + return ($newp$0|0); + } + $19 = ($2>>>0)<($nb>>>0); + if (!($19)) { + $20 = (($2) - ($nb))|0; + $21 = ($20>>>0)>(15); + if (!($21)) { + $newp$0 = $p; + return ($newp$0|0); + } + $22 = (($p) + ($nb)|0); + $23 = $1 & 1; + $24 = $23 | $nb; + $25 = $24 | 2; + HEAP32[$0>>2] = $25; + $$sum23 = (($nb) + 4)|0; + $26 = (($p) + ($$sum23)|0); + $27 = $20 | 3; + HEAP32[$26>>2] = $27; + $28 = HEAP32[$7>>2]|0; + $29 = $28 | 1; + HEAP32[$7>>2] = $29; + _dispose_chunk($22,$20); + $newp$0 = $p; + return ($newp$0|0); + } + $30 = HEAP32[(553072)>>2]|0; + $31 = ($3|0)==($30|0); + if ($31) { + $32 = HEAP32[(553060)>>2]|0; + $33 = (($32) + ($2))|0; + $34 = ($33>>>0)>($nb>>>0); + if (!($34)) { + $newp$0 = 0; + return ($newp$0|0); + } + $35 = (($33) - ($nb))|0; + $36 = (($p) + ($nb)|0); + $37 = $1 & 1; + $38 = $37 | $nb; + $39 = $38 | 2; + HEAP32[$0>>2] = $39; + $$sum22 = (($nb) + 4)|0; + $40 = (($p) + ($$sum22)|0); + $41 = $35 | 1; + HEAP32[$40>>2] = $41; + HEAP32[(553072)>>2] = $36; + HEAP32[(553060)>>2] = $35; + $newp$0 = $p; + return ($newp$0|0); + } + $42 = HEAP32[(553068)>>2]|0; + $43 = ($3|0)==($42|0); + if ($43) { + $44 = HEAP32[(553056)>>2]|0; + $45 = (($44) + ($2))|0; + $46 = ($45>>>0)<($nb>>>0); + if ($46) { + $newp$0 = 0; + return ($newp$0|0); + } + $47 = (($45) - ($nb))|0; + $48 = ($47>>>0)>(15); + if ($48) { + $49 = (($p) + ($nb)|0); + $50 = (($p) + ($45)|0); + $51 = $1 & 1; + $52 = $51 | $nb; + $53 = $52 | 2; + HEAP32[$0>>2] = $53; + $$sum19 = (($nb) + 4)|0; + $54 = (($p) + ($$sum19)|0); + $55 = $47 | 1; + HEAP32[$54>>2] = $55; + HEAP32[$50>>2] = $47; + $$sum20 = (($45) + 4)|0; + $56 = (($p) + ($$sum20)|0); + $57 = HEAP32[$56>>2]|0; + $58 = $57 & -2; + HEAP32[$56>>2] = $58; + $storemerge = $49;$storemerge21 = $47; + } else { + $59 = $1 & 1; + $60 = $59 | $45; + $61 = $60 | 2; + HEAP32[$0>>2] = $61; + $$sum17 = (($45) + 4)|0; + $62 = (($p) + ($$sum17)|0); + $63 = HEAP32[$62>>2]|0; + $64 = $63 | 1; + HEAP32[$62>>2] = $64; + $storemerge = 0;$storemerge21 = 0; + } + HEAP32[(553056)>>2] = $storemerge21; + HEAP32[(553068)>>2] = $storemerge; + $newp$0 = $p; + return ($newp$0|0); + } + $65 = $8 & 2; + $66 = ($65|0)==(0); + if (!($66)) { + $newp$0 = 0; + return ($newp$0|0); + } + $67 = $8 & -8; + $68 = (($67) + ($2))|0; + $69 = ($68>>>0)<($nb>>>0); + if ($69) { + $newp$0 = 0; + return ($newp$0|0); + } + $70 = (($68) - ($nb))|0; + $71 = $8 >>> 3; + $72 = ($8>>>0)<(256); + do { + if ($72) { + $$sum15 = (($2) + 8)|0; + $73 = (($p) + ($$sum15)|0); + $74 = HEAP32[$73>>2]|0; + $$sum16 = (($2) + 12)|0; + $75 = (($p) + ($$sum16)|0); + $76 = HEAP32[$75>>2]|0; + $77 = $71 << 1; + $78 = (553088 + ($77<<2)|0); + $79 = ($74|0)==($78|0); + if (!($79)) { + $80 = ($74>>>0)<($4>>>0); + if ($80) { + _abort(); + // unreachable; + } + $81 = ((($74)) + 12|0); + $82 = HEAP32[$81>>2]|0; + $83 = ($82|0)==($3|0); + if (!($83)) { + _abort(); + // unreachable; + } + } + $84 = ($76|0)==($74|0); + if ($84) { + $85 = 1 << $71; + $86 = $85 ^ -1; + $87 = HEAP32[553048>>2]|0; + $88 = $87 & $86; + HEAP32[553048>>2] = $88; + break; + } + $89 = ($76|0)==($78|0); + if ($89) { + $$pre = ((($76)) + 8|0); + $$pre$phiZ2D = $$pre; + } else { + $90 = ($76>>>0)<($4>>>0); + if ($90) { + _abort(); + // unreachable; + } + $91 = ((($76)) + 8|0); + $92 = HEAP32[$91>>2]|0; + $93 = ($92|0)==($3|0); + if ($93) { + $$pre$phiZ2D = $91; + } else { + _abort(); + // unreachable; + } + } + $94 = ((($74)) + 12|0); + HEAP32[$94>>2] = $76; + HEAP32[$$pre$phiZ2D>>2] = $74; + } else { + $$sum = (($2) + 24)|0; + $95 = (($p) + ($$sum)|0); + $96 = HEAP32[$95>>2]|0; + $$sum2 = (($2) + 12)|0; + $97 = (($p) + ($$sum2)|0); + $98 = HEAP32[$97>>2]|0; + $99 = ($98|0)==($3|0); + do { + if ($99) { + $$sum4 = (($2) + 20)|0; + $109 = (($p) + ($$sum4)|0); + $110 = HEAP32[$109>>2]|0; + $111 = ($110|0)==(0|0); + if ($111) { + $$sum3 = (($2) + 16)|0; + $112 = (($p) + ($$sum3)|0); + $113 = HEAP32[$112>>2]|0; + $114 = ($113|0)==(0|0); + if ($114) { + $R$1 = 0; + break; + } else { + $R$0 = $113;$RP$0 = $112; + } + } else { + $R$0 = $110;$RP$0 = $109; + } + while(1) { + $115 = ((($R$0)) + 20|0); + $116 = HEAP32[$115>>2]|0; + $117 = ($116|0)==(0|0); + if (!($117)) { + $R$0 = $116;$RP$0 = $115; + continue; + } + $118 = ((($R$0)) + 16|0); + $119 = HEAP32[$118>>2]|0; + $120 = ($119|0)==(0|0); + if ($120) { + $R$0$lcssa = $R$0;$RP$0$lcssa = $RP$0; + break; + } else { + $R$0 = $119;$RP$0 = $118; + } + } + $121 = ($RP$0$lcssa>>>0)<($4>>>0); + if ($121) { + _abort(); + // unreachable; + } else { + HEAP32[$RP$0$lcssa>>2] = 0; + $R$1 = $R$0$lcssa; + break; + } + } else { + $$sum14 = (($2) + 8)|0; + $100 = (($p) + ($$sum14)|0); + $101 = HEAP32[$100>>2]|0; + $102 = ($101>>>0)<($4>>>0); + if ($102) { + _abort(); + // unreachable; + } + $103 = ((($101)) + 12|0); + $104 = HEAP32[$103>>2]|0; + $105 = ($104|0)==($3|0); + if (!($105)) { + _abort(); + // unreachable; + } + $106 = ((($98)) + 8|0); + $107 = HEAP32[$106>>2]|0; + $108 = ($107|0)==($3|0); + if ($108) { + HEAP32[$103>>2] = $98; + HEAP32[$106>>2] = $101; + $R$1 = $98; + break; + } else { + _abort(); + // unreachable; + } + } + } while(0); + $122 = ($96|0)==(0|0); + if (!($122)) { + $$sum11 = (($2) + 28)|0; + $123 = (($p) + ($$sum11)|0); + $124 = HEAP32[$123>>2]|0; + $125 = (553352 + ($124<<2)|0); + $126 = HEAP32[$125>>2]|0; + $127 = ($3|0)==($126|0); + if ($127) { + HEAP32[$125>>2] = $R$1; + $cond = ($R$1|0)==(0|0); + if ($cond) { + $128 = 1 << $124; + $129 = $128 ^ -1; + $130 = HEAP32[(553052)>>2]|0; + $131 = $130 & $129; + HEAP32[(553052)>>2] = $131; + break; + } + } else { + $132 = HEAP32[(553064)>>2]|0; + $133 = ($96>>>0)<($132>>>0); + if ($133) { + _abort(); + // unreachable; + } + $134 = ((($96)) + 16|0); + $135 = HEAP32[$134>>2]|0; + $136 = ($135|0)==($3|0); + if ($136) { + HEAP32[$134>>2] = $R$1; + } else { + $137 = ((($96)) + 20|0); + HEAP32[$137>>2] = $R$1; + } + $138 = ($R$1|0)==(0|0); + if ($138) { + break; + } + } + $139 = HEAP32[(553064)>>2]|0; + $140 = ($R$1>>>0)<($139>>>0); + if ($140) { + _abort(); + // unreachable; + } + $141 = ((($R$1)) + 24|0); + HEAP32[$141>>2] = $96; + $$sum12 = (($2) + 16)|0; + $142 = (($p) + ($$sum12)|0); + $143 = HEAP32[$142>>2]|0; + $144 = ($143|0)==(0|0); + do { + if (!($144)) { + $145 = ($143>>>0)<($139>>>0); + if ($145) { + _abort(); + // unreachable; + } else { + $146 = ((($R$1)) + 16|0); + HEAP32[$146>>2] = $143; + $147 = ((($143)) + 24|0); + HEAP32[$147>>2] = $R$1; + break; + } + } + } while(0); + $$sum13 = (($2) + 20)|0; + $148 = (($p) + ($$sum13)|0); + $149 = HEAP32[$148>>2]|0; + $150 = ($149|0)==(0|0); + if (!($150)) { + $151 = HEAP32[(553064)>>2]|0; + $152 = ($149>>>0)<($151>>>0); + if ($152) { + _abort(); + // unreachable; + } else { + $153 = ((($R$1)) + 20|0); + HEAP32[$153>>2] = $149; + $154 = ((($149)) + 24|0); + HEAP32[$154>>2] = $R$1; + break; + } + } + } + } + } while(0); + $155 = ($70>>>0)<(16); + if ($155) { + $156 = $1 & 1; + $157 = $68 | $156; + $158 = $157 | 2; + HEAP32[$0>>2] = $158; + $$sum910 = $68 | 4; + $159 = (($p) + ($$sum910)|0); + $160 = HEAP32[$159>>2]|0; + $161 = $160 | 1; + HEAP32[$159>>2] = $161; + $newp$0 = $p; + return ($newp$0|0); + } else { + $162 = (($p) + ($nb)|0); + $163 = $1 & 1; + $164 = $163 | $nb; + $165 = $164 | 2; + HEAP32[$0>>2] = $165; + $$sum5 = (($nb) + 4)|0; + $166 = (($p) + ($$sum5)|0); + $167 = $70 | 3; + HEAP32[$166>>2] = $167; + $$sum78 = $68 | 4; + $168 = (($p) + ($$sum78)|0); + $169 = HEAP32[$168>>2]|0; + $170 = $169 | 1; + HEAP32[$168>>2] = $170; + _dispose_chunk($162,$70); + $newp$0 = $p; + return ($newp$0|0); + } + return (0)|0; +} +function _dispose_chunk($p,$psize) { + $p = $p|0; + $psize = $psize|0; + var $$0 = 0, $$02 = 0, $$1 = 0, $$lcssa = 0, $$pre = 0, $$pre$phi50Z2D = 0, $$pre$phi52Z2D = 0, $$pre$phiZ2D = 0, $$pre48 = 0, $$pre49 = 0, $$pre51 = 0, $$sum = 0, $$sum1 = 0, $$sum10 = 0, $$sum11 = 0, $$sum12 = 0, $$sum13 = 0, $$sum14 = 0, $$sum16 = 0, $$sum17 = 0; + var $$sum18 = 0, $$sum19 = 0, $$sum2 = 0, $$sum20 = 0, $$sum21 = 0, $$sum22 = 0, $$sum23 = 0, $$sum24 = 0, $$sum25 = 0, $$sum3 = 0, $$sum4 = 0, $$sum5 = 0, $$sum7 = 0, $$sum8 = 0, $$sum9 = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0; + var $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0; + var $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0; + var $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0; + var $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0; + var $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0; + var $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0, $208 = 0, $209 = 0, $21 = 0; + var $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0, $225 = 0, $226 = 0, $227 = 0, $228 = 0; + var $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0, $244 = 0, $245 = 0, $246 = 0; + var $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0, $261 = 0, $262 = 0, $263 = 0, $264 = 0; + var $265 = 0, $266 = 0, $267 = 0, $268 = 0, $269 = 0, $27 = 0, $270 = 0, $271 = 0, $272 = 0, $273 = 0, $274 = 0, $275 = 0, $276 = 0, $277 = 0, $278 = 0, $279 = 0, $28 = 0, $280 = 0, $281 = 0, $282 = 0; + var $283 = 0, $284 = 0, $285 = 0, $286 = 0, $287 = 0, $288 = 0, $289 = 0, $29 = 0, $290 = 0, $291 = 0, $292 = 0, $293 = 0, $294 = 0, $295 = 0, $296 = 0, $297 = 0, $298 = 0, $299 = 0, $3 = 0, $30 = 0; + var $300 = 0, $301 = 0, $302 = 0, $303 = 0, $304 = 0, $305 = 0, $306 = 0, $307 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0; + var $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0; + var $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0; + var $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0; + var $97 = 0, $98 = 0, $99 = 0, $F16$0 = 0, $I19$0 = 0, $K20$043 = 0, $R$0 = 0, $R$0$lcssa = 0, $R$1 = 0, $R7$0 = 0, $R7$0$lcssa = 0, $R7$1 = 0, $RP$0 = 0, $RP$0$lcssa = 0, $RP9$0 = 0, $RP9$0$lcssa = 0, $T$0$lcssa = 0, $T$042 = 0, $T$042$lcssa = 0, $cond = 0; + var $cond39 = 0, $not$ = 0, label = 0, sp = 0; + sp = STACKTOP; + $0 = (($p) + ($psize)|0); + $1 = ((($p)) + 4|0); + $2 = HEAP32[$1>>2]|0; + $3 = $2 & 1; + $4 = ($3|0)==(0); + do { + if ($4) { + $5 = HEAP32[$p>>2]|0; + $6 = $2 & 3; + $7 = ($6|0)==(0); + if ($7) { + return; + } + $8 = (0 - ($5))|0; + $9 = (($p) + ($8)|0); + $10 = (($5) + ($psize))|0; + $11 = HEAP32[(553064)>>2]|0; + $12 = ($9>>>0)<($11>>>0); + if ($12) { + _abort(); + // unreachable; + } + $13 = HEAP32[(553068)>>2]|0; + $14 = ($9|0)==($13|0); + if ($14) { + $$sum = (($psize) + 4)|0; + $99 = (($p) + ($$sum)|0); + $100 = HEAP32[$99>>2]|0; + $101 = $100 & 3; + $102 = ($101|0)==(3); + if (!($102)) { + $$0 = $9;$$02 = $10; + break; + } + HEAP32[(553056)>>2] = $10; + $103 = $100 & -2; + HEAP32[$99>>2] = $103; + $104 = $10 | 1; + $$sum14 = (4 - ($5))|0; + $105 = (($p) + ($$sum14)|0); + HEAP32[$105>>2] = $104; + HEAP32[$0>>2] = $10; + return; + } + $15 = $5 >>> 3; + $16 = ($5>>>0)<(256); + if ($16) { + $$sum24 = (8 - ($5))|0; + $17 = (($p) + ($$sum24)|0); + $18 = HEAP32[$17>>2]|0; + $$sum25 = (12 - ($5))|0; + $19 = (($p) + ($$sum25)|0); + $20 = HEAP32[$19>>2]|0; + $21 = $15 << 1; + $22 = (553088 + ($21<<2)|0); + $23 = ($18|0)==($22|0); + if (!($23)) { + $24 = ($18>>>0)<($11>>>0); + if ($24) { + _abort(); + // unreachable; + } + $25 = ((($18)) + 12|0); + $26 = HEAP32[$25>>2]|0; + $27 = ($26|0)==($9|0); + if (!($27)) { + _abort(); + // unreachable; + } + } + $28 = ($20|0)==($18|0); + if ($28) { + $29 = 1 << $15; + $30 = $29 ^ -1; + $31 = HEAP32[553048>>2]|0; + $32 = $31 & $30; + HEAP32[553048>>2] = $32; + $$0 = $9;$$02 = $10; + break; + } + $33 = ($20|0)==($22|0); + if ($33) { + $$pre51 = ((($20)) + 8|0); + $$pre$phi52Z2D = $$pre51; + } else { + $34 = ($20>>>0)<($11>>>0); + if ($34) { + _abort(); + // unreachable; + } + $35 = ((($20)) + 8|0); + $36 = HEAP32[$35>>2]|0; + $37 = ($36|0)==($9|0); + if ($37) { + $$pre$phi52Z2D = $35; + } else { + _abort(); + // unreachable; + } + } + $38 = ((($18)) + 12|0); + HEAP32[$38>>2] = $20; + HEAP32[$$pre$phi52Z2D>>2] = $18; + $$0 = $9;$$02 = $10; + break; + } + $$sum16 = (24 - ($5))|0; + $39 = (($p) + ($$sum16)|0); + $40 = HEAP32[$39>>2]|0; + $$sum17 = (12 - ($5))|0; + $41 = (($p) + ($$sum17)|0); + $42 = HEAP32[$41>>2]|0; + $43 = ($42|0)==($9|0); + do { + if ($43) { + $$sum18 = (16 - ($5))|0; + $$sum19 = (($$sum18) + 4)|0; + $53 = (($p) + ($$sum19)|0); + $54 = HEAP32[$53>>2]|0; + $55 = ($54|0)==(0|0); + if ($55) { + $56 = (($p) + ($$sum18)|0); + $57 = HEAP32[$56>>2]|0; + $58 = ($57|0)==(0|0); + if ($58) { + $R$1 = 0; + break; + } else { + $R$0 = $57;$RP$0 = $56; + } + } else { + $R$0 = $54;$RP$0 = $53; + } + while(1) { + $59 = ((($R$0)) + 20|0); + $60 = HEAP32[$59>>2]|0; + $61 = ($60|0)==(0|0); + if (!($61)) { + $R$0 = $60;$RP$0 = $59; + continue; + } + $62 = ((($R$0)) + 16|0); + $63 = HEAP32[$62>>2]|0; + $64 = ($63|0)==(0|0); + if ($64) { + $R$0$lcssa = $R$0;$RP$0$lcssa = $RP$0; + break; + } else { + $R$0 = $63;$RP$0 = $62; + } + } + $65 = ($RP$0$lcssa>>>0)<($11>>>0); + if ($65) { + _abort(); + // unreachable; + } else { + HEAP32[$RP$0$lcssa>>2] = 0; + $R$1 = $R$0$lcssa; + break; + } + } else { + $$sum23 = (8 - ($5))|0; + $44 = (($p) + ($$sum23)|0); + $45 = HEAP32[$44>>2]|0; + $46 = ($45>>>0)<($11>>>0); + if ($46) { + _abort(); + // unreachable; + } + $47 = ((($45)) + 12|0); + $48 = HEAP32[$47>>2]|0; + $49 = ($48|0)==($9|0); + if (!($49)) { + _abort(); + // unreachable; + } + $50 = ((($42)) + 8|0); + $51 = HEAP32[$50>>2]|0; + $52 = ($51|0)==($9|0); + if ($52) { + HEAP32[$47>>2] = $42; + HEAP32[$50>>2] = $45; + $R$1 = $42; + break; + } else { + _abort(); + // unreachable; + } + } + } while(0); + $66 = ($40|0)==(0|0); + if ($66) { + $$0 = $9;$$02 = $10; + } else { + $$sum20 = (28 - ($5))|0; + $67 = (($p) + ($$sum20)|0); + $68 = HEAP32[$67>>2]|0; + $69 = (553352 + ($68<<2)|0); + $70 = HEAP32[$69>>2]|0; + $71 = ($9|0)==($70|0); + if ($71) { + HEAP32[$69>>2] = $R$1; + $cond = ($R$1|0)==(0|0); + if ($cond) { + $72 = 1 << $68; + $73 = $72 ^ -1; + $74 = HEAP32[(553052)>>2]|0; + $75 = $74 & $73; + HEAP32[(553052)>>2] = $75; + $$0 = $9;$$02 = $10; + break; + } + } else { + $76 = HEAP32[(553064)>>2]|0; + $77 = ($40>>>0)<($76>>>0); + if ($77) { + _abort(); + // unreachable; + } + $78 = ((($40)) + 16|0); + $79 = HEAP32[$78>>2]|0; + $80 = ($79|0)==($9|0); + if ($80) { + HEAP32[$78>>2] = $R$1; + } else { + $81 = ((($40)) + 20|0); + HEAP32[$81>>2] = $R$1; + } + $82 = ($R$1|0)==(0|0); + if ($82) { + $$0 = $9;$$02 = $10; + break; + } + } + $83 = HEAP32[(553064)>>2]|0; + $84 = ($R$1>>>0)<($83>>>0); + if ($84) { + _abort(); + // unreachable; + } + $85 = ((($R$1)) + 24|0); + HEAP32[$85>>2] = $40; + $$sum21 = (16 - ($5))|0; + $86 = (($p) + ($$sum21)|0); + $87 = HEAP32[$86>>2]|0; + $88 = ($87|0)==(0|0); + do { + if (!($88)) { + $89 = ($87>>>0)<($83>>>0); + if ($89) { + _abort(); + // unreachable; + } else { + $90 = ((($R$1)) + 16|0); + HEAP32[$90>>2] = $87; + $91 = ((($87)) + 24|0); + HEAP32[$91>>2] = $R$1; + break; + } + } + } while(0); + $$sum22 = (($$sum21) + 4)|0; + $92 = (($p) + ($$sum22)|0); + $93 = HEAP32[$92>>2]|0; + $94 = ($93|0)==(0|0); + if ($94) { + $$0 = $9;$$02 = $10; + } else { + $95 = HEAP32[(553064)>>2]|0; + $96 = ($93>>>0)<($95>>>0); + if ($96) { + _abort(); + // unreachable; + } else { + $97 = ((($R$1)) + 20|0); + HEAP32[$97>>2] = $93; + $98 = ((($93)) + 24|0); + HEAP32[$98>>2] = $R$1; + $$0 = $9;$$02 = $10; + break; + } + } + } + } else { + $$0 = $p;$$02 = $psize; + } + } while(0); + $106 = HEAP32[(553064)>>2]|0; + $107 = ($0>>>0)<($106>>>0); + if ($107) { + _abort(); + // unreachable; + } + $$sum1 = (($psize) + 4)|0; + $108 = (($p) + ($$sum1)|0); + $109 = HEAP32[$108>>2]|0; + $110 = $109 & 2; + $111 = ($110|0)==(0); + if ($111) { + $112 = HEAP32[(553072)>>2]|0; + $113 = ($0|0)==($112|0); + if ($113) { + $114 = HEAP32[(553060)>>2]|0; + $115 = (($114) + ($$02))|0; + HEAP32[(553060)>>2] = $115; + HEAP32[(553072)>>2] = $$0; + $116 = $115 | 1; + $117 = ((($$0)) + 4|0); + HEAP32[$117>>2] = $116; + $118 = HEAP32[(553068)>>2]|0; + $119 = ($$0|0)==($118|0); + if (!($119)) { + return; + } + HEAP32[(553068)>>2] = 0; + HEAP32[(553056)>>2] = 0; + return; + } + $120 = HEAP32[(553068)>>2]|0; + $121 = ($0|0)==($120|0); + if ($121) { + $122 = HEAP32[(553056)>>2]|0; + $123 = (($122) + ($$02))|0; + HEAP32[(553056)>>2] = $123; + HEAP32[(553068)>>2] = $$0; + $124 = $123 | 1; + $125 = ((($$0)) + 4|0); + HEAP32[$125>>2] = $124; + $126 = (($$0) + ($123)|0); + HEAP32[$126>>2] = $123; + return; + } + $127 = $109 & -8; + $128 = (($127) + ($$02))|0; + $129 = $109 >>> 3; + $130 = ($109>>>0)<(256); + do { + if ($130) { + $$sum12 = (($psize) + 8)|0; + $131 = (($p) + ($$sum12)|0); + $132 = HEAP32[$131>>2]|0; + $$sum13 = (($psize) + 12)|0; + $133 = (($p) + ($$sum13)|0); + $134 = HEAP32[$133>>2]|0; + $135 = $129 << 1; + $136 = (553088 + ($135<<2)|0); + $137 = ($132|0)==($136|0); + if (!($137)) { + $138 = ($132>>>0)<($106>>>0); + if ($138) { + _abort(); + // unreachable; + } + $139 = ((($132)) + 12|0); + $140 = HEAP32[$139>>2]|0; + $141 = ($140|0)==($0|0); + if (!($141)) { + _abort(); + // unreachable; + } + } + $142 = ($134|0)==($132|0); + if ($142) { + $143 = 1 << $129; + $144 = $143 ^ -1; + $145 = HEAP32[553048>>2]|0; + $146 = $145 & $144; + HEAP32[553048>>2] = $146; + break; + } + $147 = ($134|0)==($136|0); + if ($147) { + $$pre49 = ((($134)) + 8|0); + $$pre$phi50Z2D = $$pre49; + } else { + $148 = ($134>>>0)<($106>>>0); + if ($148) { + _abort(); + // unreachable; + } + $149 = ((($134)) + 8|0); + $150 = HEAP32[$149>>2]|0; + $151 = ($150|0)==($0|0); + if ($151) { + $$pre$phi50Z2D = $149; + } else { + _abort(); + // unreachable; + } + } + $152 = ((($132)) + 12|0); + HEAP32[$152>>2] = $134; + HEAP32[$$pre$phi50Z2D>>2] = $132; + } else { + $$sum2 = (($psize) + 24)|0; + $153 = (($p) + ($$sum2)|0); + $154 = HEAP32[$153>>2]|0; + $$sum3 = (($psize) + 12)|0; + $155 = (($p) + ($$sum3)|0); + $156 = HEAP32[$155>>2]|0; + $157 = ($156|0)==($0|0); + do { + if ($157) { + $$sum5 = (($psize) + 20)|0; + $167 = (($p) + ($$sum5)|0); + $168 = HEAP32[$167>>2]|0; + $169 = ($168|0)==(0|0); + if ($169) { + $$sum4 = (($psize) + 16)|0; + $170 = (($p) + ($$sum4)|0); + $171 = HEAP32[$170>>2]|0; + $172 = ($171|0)==(0|0); + if ($172) { + $R7$1 = 0; + break; + } else { + $R7$0 = $171;$RP9$0 = $170; + } + } else { + $R7$0 = $168;$RP9$0 = $167; + } + while(1) { + $173 = ((($R7$0)) + 20|0); + $174 = HEAP32[$173>>2]|0; + $175 = ($174|0)==(0|0); + if (!($175)) { + $R7$0 = $174;$RP9$0 = $173; + continue; + } + $176 = ((($R7$0)) + 16|0); + $177 = HEAP32[$176>>2]|0; + $178 = ($177|0)==(0|0); + if ($178) { + $R7$0$lcssa = $R7$0;$RP9$0$lcssa = $RP9$0; + break; + } else { + $R7$0 = $177;$RP9$0 = $176; + } + } + $179 = ($RP9$0$lcssa>>>0)<($106>>>0); + if ($179) { + _abort(); + // unreachable; + } else { + HEAP32[$RP9$0$lcssa>>2] = 0; + $R7$1 = $R7$0$lcssa; + break; + } + } else { + $$sum11 = (($psize) + 8)|0; + $158 = (($p) + ($$sum11)|0); + $159 = HEAP32[$158>>2]|0; + $160 = ($159>>>0)<($106>>>0); + if ($160) { + _abort(); + // unreachable; + } + $161 = ((($159)) + 12|0); + $162 = HEAP32[$161>>2]|0; + $163 = ($162|0)==($0|0); + if (!($163)) { + _abort(); + // unreachable; + } + $164 = ((($156)) + 8|0); + $165 = HEAP32[$164>>2]|0; + $166 = ($165|0)==($0|0); + if ($166) { + HEAP32[$161>>2] = $156; + HEAP32[$164>>2] = $159; + $R7$1 = $156; + break; + } else { + _abort(); + // unreachable; + } + } + } while(0); + $180 = ($154|0)==(0|0); + if (!($180)) { + $$sum8 = (($psize) + 28)|0; + $181 = (($p) + ($$sum8)|0); + $182 = HEAP32[$181>>2]|0; + $183 = (553352 + ($182<<2)|0); + $184 = HEAP32[$183>>2]|0; + $185 = ($0|0)==($184|0); + if ($185) { + HEAP32[$183>>2] = $R7$1; + $cond39 = ($R7$1|0)==(0|0); + if ($cond39) { + $186 = 1 << $182; + $187 = $186 ^ -1; + $188 = HEAP32[(553052)>>2]|0; + $189 = $188 & $187; + HEAP32[(553052)>>2] = $189; + break; + } + } else { + $190 = HEAP32[(553064)>>2]|0; + $191 = ($154>>>0)<($190>>>0); + if ($191) { + _abort(); + // unreachable; + } + $192 = ((($154)) + 16|0); + $193 = HEAP32[$192>>2]|0; + $194 = ($193|0)==($0|0); + if ($194) { + HEAP32[$192>>2] = $R7$1; + } else { + $195 = ((($154)) + 20|0); + HEAP32[$195>>2] = $R7$1; + } + $196 = ($R7$1|0)==(0|0); + if ($196) { + break; + } + } + $197 = HEAP32[(553064)>>2]|0; + $198 = ($R7$1>>>0)<($197>>>0); + if ($198) { + _abort(); + // unreachable; + } + $199 = ((($R7$1)) + 24|0); + HEAP32[$199>>2] = $154; + $$sum9 = (($psize) + 16)|0; + $200 = (($p) + ($$sum9)|0); + $201 = HEAP32[$200>>2]|0; + $202 = ($201|0)==(0|0); + do { + if (!($202)) { + $203 = ($201>>>0)<($197>>>0); + if ($203) { + _abort(); + // unreachable; + } else { + $204 = ((($R7$1)) + 16|0); + HEAP32[$204>>2] = $201; + $205 = ((($201)) + 24|0); + HEAP32[$205>>2] = $R7$1; + break; + } + } + } while(0); + $$sum10 = (($psize) + 20)|0; + $206 = (($p) + ($$sum10)|0); + $207 = HEAP32[$206>>2]|0; + $208 = ($207|0)==(0|0); + if (!($208)) { + $209 = HEAP32[(553064)>>2]|0; + $210 = ($207>>>0)<($209>>>0); + if ($210) { + _abort(); + // unreachable; + } else { + $211 = ((($R7$1)) + 20|0); + HEAP32[$211>>2] = $207; + $212 = ((($207)) + 24|0); + HEAP32[$212>>2] = $R7$1; + break; + } + } + } + } + } while(0); + $213 = $128 | 1; + $214 = ((($$0)) + 4|0); + HEAP32[$214>>2] = $213; + $215 = (($$0) + ($128)|0); + HEAP32[$215>>2] = $128; + $216 = HEAP32[(553068)>>2]|0; + $217 = ($$0|0)==($216|0); + if ($217) { + HEAP32[(553056)>>2] = $128; + return; + } else { + $$1 = $128; + } + } else { + $218 = $109 & -2; + HEAP32[$108>>2] = $218; + $219 = $$02 | 1; + $220 = ((($$0)) + 4|0); + HEAP32[$220>>2] = $219; + $221 = (($$0) + ($$02)|0); + HEAP32[$221>>2] = $$02; + $$1 = $$02; + } + $222 = $$1 >>> 3; + $223 = ($$1>>>0)<(256); + if ($223) { + $224 = $222 << 1; + $225 = (553088 + ($224<<2)|0); + $226 = HEAP32[553048>>2]|0; + $227 = 1 << $222; + $228 = $226 & $227; + $229 = ($228|0)==(0); + if ($229) { + $230 = $226 | $227; + HEAP32[553048>>2] = $230; + $$pre = (($224) + 2)|0; + $$pre48 = (553088 + ($$pre<<2)|0); + $$pre$phiZ2D = $$pre48;$F16$0 = $225; + } else { + $$sum7 = (($224) + 2)|0; + $231 = (553088 + ($$sum7<<2)|0); + $232 = HEAP32[$231>>2]|0; + $233 = HEAP32[(553064)>>2]|0; + $234 = ($232>>>0)<($233>>>0); + if ($234) { + _abort(); + // unreachable; + } else { + $$pre$phiZ2D = $231;$F16$0 = $232; + } + } + HEAP32[$$pre$phiZ2D>>2] = $$0; + $235 = ((($F16$0)) + 12|0); + HEAP32[$235>>2] = $$0; + $236 = ((($$0)) + 8|0); + HEAP32[$236>>2] = $F16$0; + $237 = ((($$0)) + 12|0); + HEAP32[$237>>2] = $225; + return; + } + $238 = $$1 >>> 8; + $239 = ($238|0)==(0); + if ($239) { + $I19$0 = 0; + } else { + $240 = ($$1>>>0)>(16777215); + if ($240) { + $I19$0 = 31; + } else { + $241 = (($238) + 1048320)|0; + $242 = $241 >>> 16; + $243 = $242 & 8; + $244 = $238 << $243; + $245 = (($244) + 520192)|0; + $246 = $245 >>> 16; + $247 = $246 & 4; + $248 = $247 | $243; + $249 = $244 << $247; + $250 = (($249) + 245760)|0; + $251 = $250 >>> 16; + $252 = $251 & 2; + $253 = $248 | $252; + $254 = (14 - ($253))|0; + $255 = $249 << $252; + $256 = $255 >>> 15; + $257 = (($254) + ($256))|0; + $258 = $257 << 1; + $259 = (($257) + 7)|0; + $260 = $$1 >>> $259; + $261 = $260 & 1; + $262 = $261 | $258; + $I19$0 = $262; + } + } + $263 = (553352 + ($I19$0<<2)|0); + $264 = ((($$0)) + 28|0); + HEAP32[$264>>2] = $I19$0; + $265 = ((($$0)) + 16|0); + $266 = ((($$0)) + 20|0); + HEAP32[$266>>2] = 0; + HEAP32[$265>>2] = 0; + $267 = HEAP32[(553052)>>2]|0; + $268 = 1 << $I19$0; + $269 = $267 & $268; + $270 = ($269|0)==(0); + if ($270) { + $271 = $267 | $268; + HEAP32[(553052)>>2] = $271; + HEAP32[$263>>2] = $$0; + $272 = ((($$0)) + 24|0); + HEAP32[$272>>2] = $263; + $273 = ((($$0)) + 12|0); + HEAP32[$273>>2] = $$0; + $274 = ((($$0)) + 8|0); + HEAP32[$274>>2] = $$0; + return; + } + $275 = HEAP32[$263>>2]|0; + $276 = ((($275)) + 4|0); + $277 = HEAP32[$276>>2]|0; + $278 = $277 & -8; + $279 = ($278|0)==($$1|0); + L191: do { + if ($279) { + $T$0$lcssa = $275; + } else { + $280 = ($I19$0|0)==(31); + $281 = $I19$0 >>> 1; + $282 = (25 - ($281))|0; + $283 = $280 ? 0 : $282; + $284 = $$1 << $283; + $K20$043 = $284;$T$042 = $275; + while(1) { + $291 = $K20$043 >>> 31; + $292 = (((($T$042)) + 16|0) + ($291<<2)|0); + $287 = HEAP32[$292>>2]|0; + $293 = ($287|0)==(0|0); + if ($293) { + $$lcssa = $292;$T$042$lcssa = $T$042; + break; + } + $285 = $K20$043 << 1; + $286 = ((($287)) + 4|0); + $288 = HEAP32[$286>>2]|0; + $289 = $288 & -8; + $290 = ($289|0)==($$1|0); + if ($290) { + $T$0$lcssa = $287; + break L191; + } else { + $K20$043 = $285;$T$042 = $287; + } + } + $294 = HEAP32[(553064)>>2]|0; + $295 = ($$lcssa>>>0)<($294>>>0); + if ($295) { + _abort(); + // unreachable; + } + HEAP32[$$lcssa>>2] = $$0; + $296 = ((($$0)) + 24|0); + HEAP32[$296>>2] = $T$042$lcssa; + $297 = ((($$0)) + 12|0); + HEAP32[$297>>2] = $$0; + $298 = ((($$0)) + 8|0); + HEAP32[$298>>2] = $$0; + return; + } + } while(0); + $299 = ((($T$0$lcssa)) + 8|0); + $300 = HEAP32[$299>>2]|0; + $301 = HEAP32[(553064)>>2]|0; + $302 = ($300>>>0)>=($301>>>0); + $not$ = ($T$0$lcssa>>>0)>=($301>>>0); + $303 = $302 & $not$; + if (!($303)) { + _abort(); + // unreachable; + } + $304 = ((($300)) + 12|0); + HEAP32[$304>>2] = $$0; + HEAP32[$299>>2] = $$0; + $305 = ((($$0)) + 8|0); + HEAP32[$305>>2] = $300; + $306 = ((($$0)) + 12|0); + HEAP32[$306>>2] = $T$0$lcssa; + $307 = ((($$0)) + 24|0); + HEAP32[$307>>2] = 0; + return; +} +function runPostSets() { + + HEAP32[25640 >> 2] = _floor0_exportbundle; +} +function _memset(ptr, value, num) { + ptr = ptr|0; value = value|0; num = num|0; + var stop = 0, value4 = 0, stop4 = 0, unaligned = 0; + stop = (ptr + num)|0; + if ((num|0) >= 20) { + // This is unaligned, but quite large, so work hard to get to aligned settings + value = value & 0xff; + unaligned = ptr & 3; + value4 = value | (value << 8) | (value << 16) | (value << 24); + stop4 = stop & ~3; + if (unaligned) { + unaligned = (ptr + 4 - unaligned)|0; + while ((ptr|0) < (unaligned|0)) { // no need to check for stop, since we have large num + HEAP8[((ptr)>>0)]=value; + ptr = (ptr+1)|0; + } + } + while ((ptr|0) < (stop4|0)) { + HEAP32[((ptr)>>2)]=value4; + ptr = (ptr+4)|0; + } + } + while ((ptr|0) < (stop|0)) { + HEAP8[((ptr)>>0)]=value; + ptr = (ptr+1)|0; + } + return (ptr-num)|0; +} +function _strlen(ptr) { + ptr = ptr|0; + var curr = 0; + curr = ptr; + while (((HEAP8[((curr)>>0)])|0)) { + curr = (curr + 1)|0; + } + return (curr - ptr)|0; +} +function _strcat(pdest, psrc) { + pdest = pdest|0; psrc = psrc|0; + var i = 0; + var pdestEnd = 0; + pdestEnd = (pdest + (_strlen(pdest)|0))|0; + do { + HEAP8[((pdestEnd+i)>>0)]=HEAP8[((psrc+i)>>0)]; + i = (i+1)|0; + } while (((HEAP8[(((psrc)+(i-1))>>0)])|0)); + return pdest|0; +} +function _bitshift64Shl(low, high, bits) { + low = low|0; high = high|0; bits = bits|0; + var ander = 0; + if ((bits|0) < 32) { + ander = ((1 << bits) - 1)|0; + tempRet0 = (high << bits) | ((low&(ander << (32 - bits))) >>> (32 - bits)); + return low << bits; + } + tempRet0 = low << (bits - 32); + return 0; +} +function _i64Add(a, b, c, d) { + /* + x = a + b*2^32 + y = c + d*2^32 + result = l + h*2^32 + */ + a = a|0; b = b|0; c = c|0; d = d|0; + var l = 0, h = 0; + l = (a + c)>>>0; + h = (b + d + (((l>>>0) < (a>>>0))|0))>>>0; // Add carry from low word to high word on overflow. + return ((tempRet0 = h,l|0)|0); +} +function _bitshift64Lshr(low, high, bits) { + low = low|0; high = high|0; bits = bits|0; + var ander = 0; + if ((bits|0) < 32) { + ander = ((1 << bits) - 1)|0; + tempRet0 = high >>> bits; + return (low >>> bits) | ((high&ander) << (32 - bits)); + } + tempRet0 = 0; + return (high >>> (bits - 32))|0; +} +function _memcpy(dest, src, num) { + dest = dest|0; src = src|0; num = num|0; + var ret = 0; + if ((num|0) >= 4096) return _emscripten_memcpy_big(dest|0, src|0, num|0)|0; + ret = dest|0; + if ((dest&3) == (src&3)) { + while (dest & 3) { + if ((num|0) == 0) return ret|0; + HEAP8[((dest)>>0)]=((HEAP8[((src)>>0)])|0); + dest = (dest+1)|0; + src = (src+1)|0; + num = (num-1)|0; + } + while ((num|0) >= 4) { + HEAP32[((dest)>>2)]=((HEAP32[((src)>>2)])|0); + dest = (dest+4)|0; + src = (src+4)|0; + num = (num-4)|0; + } + } + while ((num|0) > 0) { + HEAP8[((dest)>>0)]=((HEAP8[((src)>>0)])|0); + dest = (dest+1)|0; + src = (src+1)|0; + num = (num-1)|0; + } + return ret|0; +} +function _memmove(dest, src, num) { + dest = dest|0; src = src|0; num = num|0; + var ret = 0; + if (((src|0) < (dest|0)) & ((dest|0) < ((src + num)|0))) { + // Unlikely case: Copy backwards in a safe manner + ret = dest; + src = (src + num)|0; + dest = (dest + num)|0; + while ((num|0) > 0) { + dest = (dest - 1)|0; + src = (src - 1)|0; + num = (num - 1)|0; + HEAP8[((dest)>>0)]=((HEAP8[((src)>>0)])|0); + } + dest = ret; + } else { + _memcpy(dest, src, num) | 0; + } + return dest | 0; +} +function _strcpy(pdest, psrc) { + pdest = pdest|0; psrc = psrc|0; + var i = 0; + do { + HEAP8[(((pdest+i)|0)>>0)]=HEAP8[(((psrc+i)|0)>>0)]; + i = (i+1)|0; + } while (((HEAP8[(((psrc)+(i-1))>>0)])|0)); + return pdest|0; +} +function _i64Subtract(a, b, c, d) { + a = a|0; b = b|0; c = c|0; d = d|0; + var l = 0, h = 0; + l = (a - c)>>>0; + h = (b - d)>>>0; + h = (b - d - (((c>>>0) > (a>>>0))|0))>>>0; // Borrow one from high word to low word on underflow. + return ((tempRet0 = h,l|0)|0); + } +function _bitshift64Ashr(low, high, bits) { + low = low|0; high = high|0; bits = bits|0; + var ander = 0; + if ((bits|0) < 32) { + ander = ((1 << bits) - 1)|0; + tempRet0 = high >> bits; + return (low >>> bits) | ((high&ander) << (32 - bits)); + } + tempRet0 = (high|0) < 0 ? -1 : 0; + return (high >> (bits - 32))|0; + } +function _llvm_cttz_i32(x) { + x = x|0; + var ret = 0; + ret = ((HEAP8[(((cttz_i8)+(x & 0xff))>>0)])|0); + if ((ret|0) < 8) return ret|0; + ret = ((HEAP8[(((cttz_i8)+((x >> 8)&0xff))>>0)])|0); + if ((ret|0) < 8) return (ret + 8)|0; + ret = ((HEAP8[(((cttz_i8)+((x >> 16)&0xff))>>0)])|0); + if ((ret|0) < 8) return (ret + 16)|0; + return (((HEAP8[(((cttz_i8)+(x >>> 24))>>0)])|0) + 24)|0; + } + +// ======== compiled code from system/lib/compiler-rt , see readme therein +function ___muldsi3($a, $b) { + $a = $a | 0; + $b = $b | 0; + var $1 = 0, $2 = 0, $3 = 0, $6 = 0, $8 = 0, $11 = 0, $12 = 0; + $1 = $a & 65535; + $2 = $b & 65535; + $3 = Math_imul($2, $1) | 0; + $6 = $a >>> 16; + $8 = ($3 >>> 16) + (Math_imul($2, $6) | 0) | 0; + $11 = $b >>> 16; + $12 = Math_imul($11, $1) | 0; + return (tempRet0 = (($8 >>> 16) + (Math_imul($11, $6) | 0) | 0) + ((($8 & 65535) + $12 | 0) >>> 16) | 0, 0 | ($8 + $12 << 16 | $3 & 65535)) | 0; +} +function ___divdi3($a$0, $a$1, $b$0, $b$1) { + $a$0 = $a$0 | 0; + $a$1 = $a$1 | 0; + $b$0 = $b$0 | 0; + $b$1 = $b$1 | 0; + var $1$0 = 0, $1$1 = 0, $2$0 = 0, $2$1 = 0, $4$0 = 0, $4$1 = 0, $6$0 = 0, $7$0 = 0, $7$1 = 0, $8$0 = 0, $10$0 = 0; + $1$0 = $a$1 >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1; + $1$1 = (($a$1 | 0) < 0 ? -1 : 0) >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1; + $2$0 = $b$1 >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1; + $2$1 = (($b$1 | 0) < 0 ? -1 : 0) >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1; + $4$0 = _i64Subtract($1$0 ^ $a$0, $1$1 ^ $a$1, $1$0, $1$1) | 0; + $4$1 = tempRet0; + $6$0 = _i64Subtract($2$0 ^ $b$0, $2$1 ^ $b$1, $2$0, $2$1) | 0; + $7$0 = $2$0 ^ $1$0; + $7$1 = $2$1 ^ $1$1; + $8$0 = ___udivmoddi4($4$0, $4$1, $6$0, tempRet0, 0) | 0; + $10$0 = _i64Subtract($8$0 ^ $7$0, tempRet0 ^ $7$1, $7$0, $7$1) | 0; + return $10$0 | 0; +} +function ___remdi3($a$0, $a$1, $b$0, $b$1) { + $a$0 = $a$0 | 0; + $a$1 = $a$1 | 0; + $b$0 = $b$0 | 0; + $b$1 = $b$1 | 0; + var $rem = 0, $1$0 = 0, $1$1 = 0, $2$0 = 0, $2$1 = 0, $4$0 = 0, $4$1 = 0, $6$0 = 0, $10$0 = 0, $10$1 = 0, __stackBase__ = 0; + __stackBase__ = STACKTOP; + STACKTOP = STACKTOP + 8 | 0; + $rem = __stackBase__ | 0; + $1$0 = $a$1 >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1; + $1$1 = (($a$1 | 0) < 0 ? -1 : 0) >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1; + $2$0 = $b$1 >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1; + $2$1 = (($b$1 | 0) < 0 ? -1 : 0) >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1; + $4$0 = _i64Subtract($1$0 ^ $a$0, $1$1 ^ $a$1, $1$0, $1$1) | 0; + $4$1 = tempRet0; + $6$0 = _i64Subtract($2$0 ^ $b$0, $2$1 ^ $b$1, $2$0, $2$1) | 0; + ___udivmoddi4($4$0, $4$1, $6$0, tempRet0, $rem) | 0; + $10$0 = _i64Subtract(HEAP32[$rem >> 2] ^ $1$0, HEAP32[$rem + 4 >> 2] ^ $1$1, $1$0, $1$1) | 0; + $10$1 = tempRet0; + STACKTOP = __stackBase__; + return (tempRet0 = $10$1, $10$0) | 0; +} +function ___muldi3($a$0, $a$1, $b$0, $b$1) { + $a$0 = $a$0 | 0; + $a$1 = $a$1 | 0; + $b$0 = $b$0 | 0; + $b$1 = $b$1 | 0; + var $x_sroa_0_0_extract_trunc = 0, $y_sroa_0_0_extract_trunc = 0, $1$0 = 0, $1$1 = 0, $2 = 0; + $x_sroa_0_0_extract_trunc = $a$0; + $y_sroa_0_0_extract_trunc = $b$0; + $1$0 = ___muldsi3($x_sroa_0_0_extract_trunc, $y_sroa_0_0_extract_trunc) | 0; + $1$1 = tempRet0; + $2 = Math_imul($a$1, $y_sroa_0_0_extract_trunc) | 0; + return (tempRet0 = ((Math_imul($b$1, $x_sroa_0_0_extract_trunc) | 0) + $2 | 0) + $1$1 | $1$1 & 0, 0 | $1$0 & -1) | 0; +} +function ___udivdi3($a$0, $a$1, $b$0, $b$1) { + $a$0 = $a$0 | 0; + $a$1 = $a$1 | 0; + $b$0 = $b$0 | 0; + $b$1 = $b$1 | 0; + var $1$0 = 0; + $1$0 = ___udivmoddi4($a$0, $a$1, $b$0, $b$1, 0) | 0; + return $1$0 | 0; +} +function ___uremdi3($a$0, $a$1, $b$0, $b$1) { + $a$0 = $a$0 | 0; + $a$1 = $a$1 | 0; + $b$0 = $b$0 | 0; + $b$1 = $b$1 | 0; + var $rem = 0, __stackBase__ = 0; + __stackBase__ = STACKTOP; + STACKTOP = STACKTOP + 8 | 0; + $rem = __stackBase__ | 0; + ___udivmoddi4($a$0, $a$1, $b$0, $b$1, $rem) | 0; + STACKTOP = __stackBase__; + return (tempRet0 = HEAP32[$rem + 4 >> 2] | 0, HEAP32[$rem >> 2] | 0) | 0; +} +function ___udivmoddi4($a$0, $a$1, $b$0, $b$1, $rem) { + $a$0 = $a$0 | 0; + $a$1 = $a$1 | 0; + $b$0 = $b$0 | 0; + $b$1 = $b$1 | 0; + $rem = $rem | 0; + var $n_sroa_0_0_extract_trunc = 0, $n_sroa_1_4_extract_shift$0 = 0, $n_sroa_1_4_extract_trunc = 0, $d_sroa_0_0_extract_trunc = 0, $d_sroa_1_4_extract_shift$0 = 0, $d_sroa_1_4_extract_trunc = 0, $4 = 0, $17 = 0, $37 = 0, $49 = 0, $51 = 0, $57 = 0, $58 = 0, $66 = 0, $78 = 0, $86 = 0, $88 = 0, $89 = 0, $91 = 0, $92 = 0, $95 = 0, $105 = 0, $117 = 0, $119 = 0, $125 = 0, $126 = 0, $130 = 0, $q_sroa_1_1_ph = 0, $q_sroa_0_1_ph = 0, $r_sroa_1_1_ph = 0, $r_sroa_0_1_ph = 0, $sr_1_ph = 0, $d_sroa_0_0_insert_insert99$0 = 0, $d_sroa_0_0_insert_insert99$1 = 0, $137$0 = 0, $137$1 = 0, $carry_0203 = 0, $sr_1202 = 0, $r_sroa_0_1201 = 0, $r_sroa_1_1200 = 0, $q_sroa_0_1199 = 0, $q_sroa_1_1198 = 0, $147 = 0, $149 = 0, $r_sroa_0_0_insert_insert42$0 = 0, $r_sroa_0_0_insert_insert42$1 = 0, $150$1 = 0, $151$0 = 0, $152 = 0, $154$0 = 0, $r_sroa_0_0_extract_trunc = 0, $r_sroa_1_4_extract_trunc = 0, $155 = 0, $carry_0_lcssa$0 = 0, $carry_0_lcssa$1 = 0, $r_sroa_0_1_lcssa = 0, $r_sroa_1_1_lcssa = 0, $q_sroa_0_1_lcssa = 0, $q_sroa_1_1_lcssa = 0, $q_sroa_0_0_insert_ext75$0 = 0, $q_sroa_0_0_insert_ext75$1 = 0, $q_sroa_0_0_insert_insert77$1 = 0, $_0$0 = 0, $_0$1 = 0; + $n_sroa_0_0_extract_trunc = $a$0; + $n_sroa_1_4_extract_shift$0 = $a$1; + $n_sroa_1_4_extract_trunc = $n_sroa_1_4_extract_shift$0; + $d_sroa_0_0_extract_trunc = $b$0; + $d_sroa_1_4_extract_shift$0 = $b$1; + $d_sroa_1_4_extract_trunc = $d_sroa_1_4_extract_shift$0; + if (($n_sroa_1_4_extract_trunc | 0) == 0) { + $4 = ($rem | 0) != 0; + if (($d_sroa_1_4_extract_trunc | 0) == 0) { + if ($4) { + HEAP32[$rem >> 2] = ($n_sroa_0_0_extract_trunc >>> 0) % ($d_sroa_0_0_extract_trunc >>> 0); + HEAP32[$rem + 4 >> 2] = 0; + } + $_0$1 = 0; + $_0$0 = ($n_sroa_0_0_extract_trunc >>> 0) / ($d_sroa_0_0_extract_trunc >>> 0) >>> 0; + return (tempRet0 = $_0$1, $_0$0) | 0; + } else { + if (!$4) { + $_0$1 = 0; + $_0$0 = 0; + return (tempRet0 = $_0$1, $_0$0) | 0; + } + HEAP32[$rem >> 2] = $a$0 & -1; + HEAP32[$rem + 4 >> 2] = $a$1 & 0; + $_0$1 = 0; + $_0$0 = 0; + return (tempRet0 = $_0$1, $_0$0) | 0; + } + } + $17 = ($d_sroa_1_4_extract_trunc | 0) == 0; + do { + if (($d_sroa_0_0_extract_trunc | 0) == 0) { + if ($17) { + if (($rem | 0) != 0) { + HEAP32[$rem >> 2] = ($n_sroa_1_4_extract_trunc >>> 0) % ($d_sroa_0_0_extract_trunc >>> 0); + HEAP32[$rem + 4 >> 2] = 0; + } + $_0$1 = 0; + $_0$0 = ($n_sroa_1_4_extract_trunc >>> 0) / ($d_sroa_0_0_extract_trunc >>> 0) >>> 0; + return (tempRet0 = $_0$1, $_0$0) | 0; + } + if (($n_sroa_0_0_extract_trunc | 0) == 0) { + if (($rem | 0) != 0) { + HEAP32[$rem >> 2] = 0; + HEAP32[$rem + 4 >> 2] = ($n_sroa_1_4_extract_trunc >>> 0) % ($d_sroa_1_4_extract_trunc >>> 0); + } + $_0$1 = 0; + $_0$0 = ($n_sroa_1_4_extract_trunc >>> 0) / ($d_sroa_1_4_extract_trunc >>> 0) >>> 0; + return (tempRet0 = $_0$1, $_0$0) | 0; + } + $37 = $d_sroa_1_4_extract_trunc - 1 | 0; + if (($37 & $d_sroa_1_4_extract_trunc | 0) == 0) { + if (($rem | 0) != 0) { + HEAP32[$rem >> 2] = 0 | $a$0 & -1; + HEAP32[$rem + 4 >> 2] = $37 & $n_sroa_1_4_extract_trunc | $a$1 & 0; + } + $_0$1 = 0; + $_0$0 = $n_sroa_1_4_extract_trunc >>> ((_llvm_cttz_i32($d_sroa_1_4_extract_trunc | 0) | 0) >>> 0); + return (tempRet0 = $_0$1, $_0$0) | 0; + } + $49 = Math_clz32($d_sroa_1_4_extract_trunc | 0) | 0; + $51 = $49 - (Math_clz32($n_sroa_1_4_extract_trunc | 0) | 0) | 0; + if ($51 >>> 0 <= 30) { + $57 = $51 + 1 | 0; + $58 = 31 - $51 | 0; + $sr_1_ph = $57; + $r_sroa_0_1_ph = $n_sroa_1_4_extract_trunc << $58 | $n_sroa_0_0_extract_trunc >>> ($57 >>> 0); + $r_sroa_1_1_ph = $n_sroa_1_4_extract_trunc >>> ($57 >>> 0); + $q_sroa_0_1_ph = 0; + $q_sroa_1_1_ph = $n_sroa_0_0_extract_trunc << $58; + break; + } + if (($rem | 0) == 0) { + $_0$1 = 0; + $_0$0 = 0; + return (tempRet0 = $_0$1, $_0$0) | 0; + } + HEAP32[$rem >> 2] = 0 | $a$0 & -1; + HEAP32[$rem + 4 >> 2] = $n_sroa_1_4_extract_shift$0 | $a$1 & 0; + $_0$1 = 0; + $_0$0 = 0; + return (tempRet0 = $_0$1, $_0$0) | 0; + } else { + if (!$17) { + $117 = Math_clz32($d_sroa_1_4_extract_trunc | 0) | 0; + $119 = $117 - (Math_clz32($n_sroa_1_4_extract_trunc | 0) | 0) | 0; + if ($119 >>> 0 <= 31) { + $125 = $119 + 1 | 0; + $126 = 31 - $119 | 0; + $130 = $119 - 31 >> 31; + $sr_1_ph = $125; + $r_sroa_0_1_ph = $n_sroa_0_0_extract_trunc >>> ($125 >>> 0) & $130 | $n_sroa_1_4_extract_trunc << $126; + $r_sroa_1_1_ph = $n_sroa_1_4_extract_trunc >>> ($125 >>> 0) & $130; + $q_sroa_0_1_ph = 0; + $q_sroa_1_1_ph = $n_sroa_0_0_extract_trunc << $126; + break; + } + if (($rem | 0) == 0) { + $_0$1 = 0; + $_0$0 = 0; + return (tempRet0 = $_0$1, $_0$0) | 0; + } + HEAP32[$rem >> 2] = 0 | $a$0 & -1; + HEAP32[$rem + 4 >> 2] = $n_sroa_1_4_extract_shift$0 | $a$1 & 0; + $_0$1 = 0; + $_0$0 = 0; + return (tempRet0 = $_0$1, $_0$0) | 0; + } + $66 = $d_sroa_0_0_extract_trunc - 1 | 0; + if (($66 & $d_sroa_0_0_extract_trunc | 0) != 0) { + $86 = (Math_clz32($d_sroa_0_0_extract_trunc | 0) | 0) + 33 | 0; + $88 = $86 - (Math_clz32($n_sroa_1_4_extract_trunc | 0) | 0) | 0; + $89 = 64 - $88 | 0; + $91 = 32 - $88 | 0; + $92 = $91 >> 31; + $95 = $88 - 32 | 0; + $105 = $95 >> 31; + $sr_1_ph = $88; + $r_sroa_0_1_ph = $91 - 1 >> 31 & $n_sroa_1_4_extract_trunc >>> ($95 >>> 0) | ($n_sroa_1_4_extract_trunc << $91 | $n_sroa_0_0_extract_trunc >>> ($88 >>> 0)) & $105; + $r_sroa_1_1_ph = $105 & $n_sroa_1_4_extract_trunc >>> ($88 >>> 0); + $q_sroa_0_1_ph = $n_sroa_0_0_extract_trunc << $89 & $92; + $q_sroa_1_1_ph = ($n_sroa_1_4_extract_trunc << $89 | $n_sroa_0_0_extract_trunc >>> ($95 >>> 0)) & $92 | $n_sroa_0_0_extract_trunc << $91 & $88 - 33 >> 31; + break; + } + if (($rem | 0) != 0) { + HEAP32[$rem >> 2] = $66 & $n_sroa_0_0_extract_trunc; + HEAP32[$rem + 4 >> 2] = 0; + } + if (($d_sroa_0_0_extract_trunc | 0) == 1) { + $_0$1 = $n_sroa_1_4_extract_shift$0 | $a$1 & 0; + $_0$0 = 0 | $a$0 & -1; + return (tempRet0 = $_0$1, $_0$0) | 0; + } else { + $78 = _llvm_cttz_i32($d_sroa_0_0_extract_trunc | 0) | 0; + $_0$1 = 0 | $n_sroa_1_4_extract_trunc >>> ($78 >>> 0); + $_0$0 = $n_sroa_1_4_extract_trunc << 32 - $78 | $n_sroa_0_0_extract_trunc >>> ($78 >>> 0) | 0; + return (tempRet0 = $_0$1, $_0$0) | 0; + } + } + } while (0); + if (($sr_1_ph | 0) == 0) { + $q_sroa_1_1_lcssa = $q_sroa_1_1_ph; + $q_sroa_0_1_lcssa = $q_sroa_0_1_ph; + $r_sroa_1_1_lcssa = $r_sroa_1_1_ph; + $r_sroa_0_1_lcssa = $r_sroa_0_1_ph; + $carry_0_lcssa$1 = 0; + $carry_0_lcssa$0 = 0; + } else { + $d_sroa_0_0_insert_insert99$0 = 0 | $b$0 & -1; + $d_sroa_0_0_insert_insert99$1 = $d_sroa_1_4_extract_shift$0 | $b$1 & 0; + $137$0 = _i64Add($d_sroa_0_0_insert_insert99$0 | 0, $d_sroa_0_0_insert_insert99$1 | 0, -1, -1) | 0; + $137$1 = tempRet0; + $q_sroa_1_1198 = $q_sroa_1_1_ph; + $q_sroa_0_1199 = $q_sroa_0_1_ph; + $r_sroa_1_1200 = $r_sroa_1_1_ph; + $r_sroa_0_1201 = $r_sroa_0_1_ph; + $sr_1202 = $sr_1_ph; + $carry_0203 = 0; + while (1) { + $147 = $q_sroa_0_1199 >>> 31 | $q_sroa_1_1198 << 1; + $149 = $carry_0203 | $q_sroa_0_1199 << 1; + $r_sroa_0_0_insert_insert42$0 = 0 | ($r_sroa_0_1201 << 1 | $q_sroa_1_1198 >>> 31); + $r_sroa_0_0_insert_insert42$1 = $r_sroa_0_1201 >>> 31 | $r_sroa_1_1200 << 1 | 0; + _i64Subtract($137$0, $137$1, $r_sroa_0_0_insert_insert42$0, $r_sroa_0_0_insert_insert42$1) | 0; + $150$1 = tempRet0; + $151$0 = $150$1 >> 31 | (($150$1 | 0) < 0 ? -1 : 0) << 1; + $152 = $151$0 & 1; + $154$0 = _i64Subtract($r_sroa_0_0_insert_insert42$0, $r_sroa_0_0_insert_insert42$1, $151$0 & $d_sroa_0_0_insert_insert99$0, ((($150$1 | 0) < 0 ? -1 : 0) >> 31 | (($150$1 | 0) < 0 ? -1 : 0) << 1) & $d_sroa_0_0_insert_insert99$1) | 0; + $r_sroa_0_0_extract_trunc = $154$0; + $r_sroa_1_4_extract_trunc = tempRet0; + $155 = $sr_1202 - 1 | 0; + if (($155 | 0) == 0) { + break; + } else { + $q_sroa_1_1198 = $147; + $q_sroa_0_1199 = $149; + $r_sroa_1_1200 = $r_sroa_1_4_extract_trunc; + $r_sroa_0_1201 = $r_sroa_0_0_extract_trunc; + $sr_1202 = $155; + $carry_0203 = $152; + } + } + $q_sroa_1_1_lcssa = $147; + $q_sroa_0_1_lcssa = $149; + $r_sroa_1_1_lcssa = $r_sroa_1_4_extract_trunc; + $r_sroa_0_1_lcssa = $r_sroa_0_0_extract_trunc; + $carry_0_lcssa$1 = 0; + $carry_0_lcssa$0 = $152; + } + $q_sroa_0_0_insert_ext75$0 = $q_sroa_0_1_lcssa; + $q_sroa_0_0_insert_ext75$1 = 0; + $q_sroa_0_0_insert_insert77$1 = $q_sroa_1_1_lcssa | $q_sroa_0_0_insert_ext75$1; + if (($rem | 0) != 0) { + HEAP32[$rem >> 2] = 0 | $r_sroa_0_1_lcssa; + HEAP32[$rem + 4 >> 2] = $r_sroa_1_1_lcssa | 0; + } + $_0$1 = (0 | $q_sroa_0_0_insert_ext75$0) >>> 31 | $q_sroa_0_0_insert_insert77$1 << 1 | ($q_sroa_0_0_insert_ext75$1 << 1 | $q_sroa_0_0_insert_ext75$0 >>> 31) & 0 | $carry_0_lcssa$1; + $_0$0 = ($q_sroa_0_0_insert_ext75$0 << 1 | 0 >>> 31) & -2 | $carry_0_lcssa$0; + return (tempRet0 = $_0$1, $_0$0) | 0; +} +// ======================================================================= + + + + +function dynCall_iiiii(index,a1,a2,a3,a4) { + index = index|0; + a1=a1|0; a2=a2|0; a3=a3|0; a4=a4|0; + return FUNCTION_TABLE_iiiii[index&3](a1|0,a2|0,a3|0,a4|0)|0; +} + + +function dynCall_vi(index,a1) { + index = index|0; + a1=a1|0; + FUNCTION_TABLE_vi[index&7](a1|0); +} + + +function dynCall_vii(index,a1,a2) { + index = index|0; + a1=a1|0; a2=a2|0; + FUNCTION_TABLE_vii[index&3](a1|0,a2|0); +} + + +function dynCall_ii(index,a1) { + index = index|0; + a1=a1|0; + return FUNCTION_TABLE_ii[index&1](a1|0)|0; +} + + +function dynCall_viii(index,a1,a2,a3) { + index = index|0; + a1=a1|0; a2=a2|0; a3=a3|0; + FUNCTION_TABLE_viii[index&1](a1|0,a2|0,a3|0); +} + + +function dynCall_iiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8) { + index = index|0; + a1=a1|0; a2=a2|0; a3=a3|0; a4=a4|0; a5=a5|0; a6=a6|0; a7=a7|0; a8=a8|0; + return FUNCTION_TABLE_iiiiiiiii[index&3](a1|0,a2|0,a3|0,a4|0,a5|0,a6|0,a7|0,a8|0)|0; +} + + +function dynCall_iii(index,a1,a2) { + index = index|0; + a1=a1|0; a2=a2|0; + return FUNCTION_TABLE_iii[index&15](a1|0,a2|0)|0; +} + + +function dynCall_iiiiii(index,a1,a2,a3,a4,a5) { + index = index|0; + a1=a1|0; a2=a2|0; a3=a3|0; a4=a4|0; a5=a5|0; + return FUNCTION_TABLE_iiiiii[index&7](a1|0,a2|0,a3|0,a4|0,a5|0)|0; +} + +function b0(p0,p1,p2,p3) { p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0; abort(0);return 0; } +function b1(p0) { p0 = p0|0; abort(1); } +function b2(p0,p1) { p0 = p0|0;p1 = p1|0; abort(2); } +function b3(p0) { p0 = p0|0; abort(3);return 0; } +function b4(p0,p1,p2) { p0 = p0|0;p1 = p1|0;p2 = p2|0; abort(4); } +function b5(p0,p1,p2,p3,p4,p5,p6,p7) { p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0;p4 = p4|0;p5 = p5|0;p6 = p6|0;p7 = p7|0; abort(5);return 0; } +function b6(p0,p1) { p0 = p0|0;p1 = p1|0; abort(6);return 0; } +function b7(p0,p1,p2,p3,p4) { p0 = p0|0;p1 = p1|0;p2 = p2|0;p3 = p3|0;p4 = p4|0; abort(7);return 0; } + +// EMSCRIPTEN_END_FUNCS +var FUNCTION_TABLE_iiiii = [b0,_floor1_inverse2,_vorbis_book_decodevs_add,_vorbis_book_decodev_add]; +var FUNCTION_TABLE_vi = [b1,_floor1_free_info,_floor1_free_look,_mapping0_free_info,_res0_free_info,_res0_free_look,b1,b1]; +var FUNCTION_TABLE_vii = [b2,_floor1_pack,_res0_pack,b2]; +var FUNCTION_TABLE_ii = [b3,_mapping0_forward]; +var FUNCTION_TABLE_viii = [b4,_mapping0_pack]; +var FUNCTION_TABLE_iiiiiiiii = [b5,_res1_forward,_res2_forward,b5]; +var FUNCTION_TABLE_iii = [b6,_floor1_unpack,_floor1_look,_floor1_inverse1,_mapping0_unpack,_mapping0_inverse,_res0_unpack,_res0_look,_icomp,_apsort,_sort32a,b6,b6,b6,b6,b6]; +var FUNCTION_TABLE_iiiiii = [b7,_res0_inverse,_res1_class,_res1_inverse,_res2_class,_res2_inverse,b7,b7]; + + return { _memmove: _memmove, _strlen: _strlen, _strcat: _strcat, _free: _free, _i64Add: _i64Add, _encoder_clear: _encoder_clear, _encoder_transfer_data: _encoder_transfer_data, _encoder_data_len: _encoder_data_len, _memset: _memset, _malloc: _malloc, _memcpy: _memcpy, _encoder_init: _encoder_init, _encoder_process: _encoder_process, _bitshift64Lshr: _bitshift64Lshr, _bitshift64Shl: _bitshift64Shl, _strcpy: _strcpy, _encoder_analysis_buffer: _encoder_analysis_buffer, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setThrew: setThrew, setTempRet0: setTempRet0, getTempRet0: getTempRet0, dynCall_iiiii: dynCall_iiiii, dynCall_vi: dynCall_vi, dynCall_vii: dynCall_vii, dynCall_ii: dynCall_ii, dynCall_viii: dynCall_viii, dynCall_iiiiiiiii: dynCall_iiiiiiiii, dynCall_iii: dynCall_iii, dynCall_iiiiii: dynCall_iiiiii }; +}) +// EMSCRIPTEN_END_ASM +(Module.asmGlobalArg, Module.asmLibraryArg, buffer); +var runPostSets = Module["runPostSets"] = asm["runPostSets"]; +var _strlen = Module["_strlen"] = asm["_strlen"]; +var _strcat = Module["_strcat"] = asm["_strcat"]; +var _free = Module["_free"] = asm["_free"]; +var _encoder_init = Module["_encoder_init"] = asm["_encoder_init"]; +var _i64Add = Module["_i64Add"] = asm["_i64Add"]; +var _memmove = Module["_memmove"] = asm["_memmove"]; +var _encoder_transfer_data = Module["_encoder_transfer_data"] = asm["_encoder_transfer_data"]; +var _encoder_process = Module["_encoder_process"] = asm["_encoder_process"]; +var _encoder_data_len = Module["_encoder_data_len"] = asm["_encoder_data_len"]; +var _memset = Module["_memset"] = asm["_memset"]; +var _malloc = Module["_malloc"] = asm["_malloc"]; +var _memcpy = Module["_memcpy"] = asm["_memcpy"]; +var _encoder_clear = Module["_encoder_clear"] = asm["_encoder_clear"]; +var _bitshift64Lshr = Module["_bitshift64Lshr"] = asm["_bitshift64Lshr"]; +var _encoder_analysis_buffer = Module["_encoder_analysis_buffer"] = asm["_encoder_analysis_buffer"]; +var _strcpy = Module["_strcpy"] = asm["_strcpy"]; +var _bitshift64Shl = Module["_bitshift64Shl"] = asm["_bitshift64Shl"]; +var dynCall_iiiii = Module["dynCall_iiiii"] = asm["dynCall_iiiii"]; +var dynCall_vi = Module["dynCall_vi"] = asm["dynCall_vi"]; +var dynCall_vii = Module["dynCall_vii"] = asm["dynCall_vii"]; +var dynCall_ii = Module["dynCall_ii"] = asm["dynCall_ii"]; +var dynCall_viii = Module["dynCall_viii"] = asm["dynCall_viii"]; +var dynCall_iiiiiiiii = Module["dynCall_iiiiiiiii"] = asm["dynCall_iiiiiiiii"]; +var dynCall_iii = Module["dynCall_iii"] = asm["dynCall_iii"]; +var dynCall_iiiiii = Module["dynCall_iiiiii"] = asm["dynCall_iiiiii"]; +; + +Runtime.stackAlloc = asm['stackAlloc']; +Runtime.stackSave = asm['stackSave']; +Runtime.stackRestore = asm['stackRestore']; +Runtime.establishStackSpace = asm['establishStackSpace']; + +Runtime.setTempRet0 = asm['setTempRet0']; +Runtime.getTempRet0 = asm['getTempRet0']; + + +// TODO: strip out parts of this we do not need + +//======= begin closure i64 code ======= + +// Copyright 2009 The Closure Library Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS-IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * @fileoverview Defines a Long class for representing a 64-bit two's-complement + * integer value, which faithfully simulates the behavior of a Java "long". This + * implementation is derived from LongLib in GWT. + * + */ + +var i64Math = (function() { // Emscripten wrapper + var goog = { math: {} }; + + + /** + * Constructs a 64-bit two's-complement integer, given its low and high 32-bit + * values as *signed* integers. See the from* functions below for more + * convenient ways of constructing Longs. + * + * The internal representation of a long is the two given signed, 32-bit values. + * We use 32-bit pieces because these are the size of integers on which + * Javascript performs bit-operations. For operations like addition and + * multiplication, we split each number into 16-bit pieces, which can easily be + * multiplied within Javascript's floating-point representation without overflow + * or change in sign. + * + * In the algorithms below, we frequently reduce the negative case to the + * positive case by negating the input(s) and then post-processing the result. + * Note that we must ALWAYS check specially whether those values are MIN_VALUE + * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as + * a positive number, it overflows back into a negative). Not handling this + * case would often result in infinite recursion. + * + * @param {number} low The low (signed) 32 bits of the long. + * @param {number} high The high (signed) 32 bits of the long. + * @constructor + */ + goog.math.Long = function(low, high) { + /** + * @type {number} + * @private + */ + this.low_ = low | 0; // force into 32 signed bits. + + /** + * @type {number} + * @private + */ + this.high_ = high | 0; // force into 32 signed bits. + }; + + + // NOTE: Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the + // from* methods on which they depend. + + + /** + * A cache of the Long representations of small integer values. + * @type {!Object} + * @private + */ + goog.math.Long.IntCache_ = {}; + + + /** + * Returns a Long representing the given (32-bit) integer value. + * @param {number} value The 32-bit integer in question. + * @return {!goog.math.Long} The corresponding Long value. + */ + goog.math.Long.fromInt = function(value) { + if (-128 <= value && value < 128) { + var cachedObj = goog.math.Long.IntCache_[value]; + if (cachedObj) { + return cachedObj; + } + } + + var obj = new goog.math.Long(value | 0, value < 0 ? -1 : 0); + if (-128 <= value && value < 128) { + goog.math.Long.IntCache_[value] = obj; + } + return obj; + }; + + + /** + * Returns a Long representing the given value, provided that it is a finite + * number. Otherwise, zero is returned. + * @param {number} value The number in question. + * @return {!goog.math.Long} The corresponding Long value. + */ + goog.math.Long.fromNumber = function(value) { + if (isNaN(value) || !isFinite(value)) { + return goog.math.Long.ZERO; + } else if (value <= -goog.math.Long.TWO_PWR_63_DBL_) { + return goog.math.Long.MIN_VALUE; + } else if (value + 1 >= goog.math.Long.TWO_PWR_63_DBL_) { + return goog.math.Long.MAX_VALUE; + } else if (value < 0) { + return goog.math.Long.fromNumber(-value).negate(); + } else { + return new goog.math.Long( + (value % goog.math.Long.TWO_PWR_32_DBL_) | 0, + (value / goog.math.Long.TWO_PWR_32_DBL_) | 0); + } + }; + + + /** + * Returns a Long representing the 64-bit integer that comes by concatenating + * the given high and low bits. Each is assumed to use 32 bits. + * @param {number} lowBits The low 32-bits. + * @param {number} highBits The high 32-bits. + * @return {!goog.math.Long} The corresponding Long value. + */ + goog.math.Long.fromBits = function(lowBits, highBits) { + return new goog.math.Long(lowBits, highBits); + }; + + + /** + * Returns a Long representation of the given string, written using the given + * radix. + * @param {string} str The textual representation of the Long. + * @param {number=} opt_radix The radix in which the text is written. + * @return {!goog.math.Long} The corresponding Long value. + */ + goog.math.Long.fromString = function(str, opt_radix) { + if (str.length == 0) { + throw Error('number format error: empty string'); + } + + var radix = opt_radix || 10; + if (radix < 2 || 36 < radix) { + throw Error('radix out of range: ' + radix); + } + + if (str.charAt(0) == '-') { + return goog.math.Long.fromString(str.substring(1), radix).negate(); + } else if (str.indexOf('-') >= 0) { + throw Error('number format error: interior "-" character: ' + str); + } + + // Do several (8) digits each time through the loop, so as to + // minimize the calls to the very expensive emulated div. + var radixToPower = goog.math.Long.fromNumber(Math.pow(radix, 8)); + + var result = goog.math.Long.ZERO; + for (var i = 0; i < str.length; i += 8) { + var size = Math.min(8, str.length - i); + var value = parseInt(str.substring(i, i + size), radix); + if (size < 8) { + var power = goog.math.Long.fromNumber(Math.pow(radix, size)); + result = result.multiply(power).add(goog.math.Long.fromNumber(value)); + } else { + result = result.multiply(radixToPower); + result = result.add(goog.math.Long.fromNumber(value)); + } + } + return result; + }; + + + // NOTE: the compiler should inline these constant values below and then remove + // these variables, so there should be no runtime penalty for these. + + + /** + * Number used repeated below in calculations. This must appear before the + * first call to any from* function below. + * @type {number} + * @private + */ + goog.math.Long.TWO_PWR_16_DBL_ = 1 << 16; + + + /** + * @type {number} + * @private + */ + goog.math.Long.TWO_PWR_24_DBL_ = 1 << 24; + + + /** + * @type {number} + * @private + */ + goog.math.Long.TWO_PWR_32_DBL_ = + goog.math.Long.TWO_PWR_16_DBL_ * goog.math.Long.TWO_PWR_16_DBL_; + + + /** + * @type {number} + * @private + */ + goog.math.Long.TWO_PWR_31_DBL_ = + goog.math.Long.TWO_PWR_32_DBL_ / 2; + + + /** + * @type {number} + * @private + */ + goog.math.Long.TWO_PWR_48_DBL_ = + goog.math.Long.TWO_PWR_32_DBL_ * goog.math.Long.TWO_PWR_16_DBL_; + + + /** + * @type {number} + * @private + */ + goog.math.Long.TWO_PWR_64_DBL_ = + goog.math.Long.TWO_PWR_32_DBL_ * goog.math.Long.TWO_PWR_32_DBL_; + + + /** + * @type {number} + * @private + */ + goog.math.Long.TWO_PWR_63_DBL_ = + goog.math.Long.TWO_PWR_64_DBL_ / 2; + + + /** @type {!goog.math.Long} */ + goog.math.Long.ZERO = goog.math.Long.fromInt(0); + + + /** @type {!goog.math.Long} */ + goog.math.Long.ONE = goog.math.Long.fromInt(1); + + + /** @type {!goog.math.Long} */ + goog.math.Long.NEG_ONE = goog.math.Long.fromInt(-1); + + + /** @type {!goog.math.Long} */ + goog.math.Long.MAX_VALUE = + goog.math.Long.fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0); + + + /** @type {!goog.math.Long} */ + goog.math.Long.MIN_VALUE = goog.math.Long.fromBits(0, 0x80000000 | 0); + + + /** + * @type {!goog.math.Long} + * @private + */ + goog.math.Long.TWO_PWR_24_ = goog.math.Long.fromInt(1 << 24); + + + /** @return {number} The value, assuming it is a 32-bit integer. */ + goog.math.Long.prototype.toInt = function() { + return this.low_; + }; + + + /** @return {number} The closest floating-point representation to this value. */ + goog.math.Long.prototype.toNumber = function() { + return this.high_ * goog.math.Long.TWO_PWR_32_DBL_ + + this.getLowBitsUnsigned(); + }; + + + /** + * @param {number=} opt_radix The radix in which the text should be written. + * @return {string} The textual representation of this value. + */ + goog.math.Long.prototype.toString = function(opt_radix) { + var radix = opt_radix || 10; + if (radix < 2 || 36 < radix) { + throw Error('radix out of range: ' + radix); + } + + if (this.isZero()) { + return '0'; + } + + if (this.isNegative()) { + if (this.equals(goog.math.Long.MIN_VALUE)) { + // We need to change the Long value before it can be negated, so we remove + // the bottom-most digit in this base and then recurse to do the rest. + var radixLong = goog.math.Long.fromNumber(radix); + var div = this.div(radixLong); + var rem = div.multiply(radixLong).subtract(this); + return div.toString(radix) + rem.toInt().toString(radix); + } else { + return '-' + this.negate().toString(radix); + } + } + + // Do several (6) digits each time through the loop, so as to + // minimize the calls to the very expensive emulated div. + var radixToPower = goog.math.Long.fromNumber(Math.pow(radix, 6)); + + var rem = this; + var result = ''; + while (true) { + var remDiv = rem.div(radixToPower); + var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt(); + var digits = intval.toString(radix); + + rem = remDiv; + if (rem.isZero()) { + return digits + result; + } else { + while (digits.length < 6) { + digits = '0' + digits; + } + result = '' + digits + result; + } + } + }; + + + /** @return {number} The high 32-bits as a signed value. */ + goog.math.Long.prototype.getHighBits = function() { + return this.high_; + }; + + + /** @return {number} The low 32-bits as a signed value. */ + goog.math.Long.prototype.getLowBits = function() { + return this.low_; + }; + + + /** @return {number} The low 32-bits as an unsigned value. */ + goog.math.Long.prototype.getLowBitsUnsigned = function() { + return (this.low_ >= 0) ? + this.low_ : goog.math.Long.TWO_PWR_32_DBL_ + this.low_; + }; + + + /** + * @return {number} Returns the number of bits needed to represent the absolute + * value of this Long. + */ + goog.math.Long.prototype.getNumBitsAbs = function() { + if (this.isNegative()) { + if (this.equals(goog.math.Long.MIN_VALUE)) { + return 64; + } else { + return this.negate().getNumBitsAbs(); + } + } else { + var val = this.high_ != 0 ? this.high_ : this.low_; + for (var bit = 31; bit > 0; bit--) { + if ((val & (1 << bit)) != 0) { + break; + } + } + return this.high_ != 0 ? bit + 33 : bit + 1; + } + }; + + + /** @return {boolean} Whether this value is zero. */ + goog.math.Long.prototype.isZero = function() { + return this.high_ == 0 && this.low_ == 0; + }; + + + /** @return {boolean} Whether this value is negative. */ + goog.math.Long.prototype.isNegative = function() { + return this.high_ < 0; + }; + + + /** @return {boolean} Whether this value is odd. */ + goog.math.Long.prototype.isOdd = function() { + return (this.low_ & 1) == 1; + }; + + + /** + * @param {goog.math.Long} other Long to compare against. + * @return {boolean} Whether this Long equals the other. + */ + goog.math.Long.prototype.equals = function(other) { + return (this.high_ == other.high_) && (this.low_ == other.low_); + }; + + + /** + * @param {goog.math.Long} other Long to compare against. + * @return {boolean} Whether this Long does not equal the other. + */ + goog.math.Long.prototype.notEquals = function(other) { + return (this.high_ != other.high_) || (this.low_ != other.low_); + }; + + + /** + * @param {goog.math.Long} other Long to compare against. + * @return {boolean} Whether this Long is less than the other. + */ + goog.math.Long.prototype.lessThan = function(other) { + return this.compare(other) < 0; + }; + + + /** + * @param {goog.math.Long} other Long to compare against. + * @return {boolean} Whether this Long is less than or equal to the other. + */ + goog.math.Long.prototype.lessThanOrEqual = function(other) { + return this.compare(other) <= 0; + }; + + + /** + * @param {goog.math.Long} other Long to compare against. + * @return {boolean} Whether this Long is greater than the other. + */ + goog.math.Long.prototype.greaterThan = function(other) { + return this.compare(other) > 0; + }; + + + /** + * @param {goog.math.Long} other Long to compare against. + * @return {boolean} Whether this Long is greater than or equal to the other. + */ + goog.math.Long.prototype.greaterThanOrEqual = function(other) { + return this.compare(other) >= 0; + }; + + + /** + * Compares this Long with the given one. + * @param {goog.math.Long} other Long to compare against. + * @return {number} 0 if they are the same, 1 if the this is greater, and -1 + * if the given one is greater. + */ + goog.math.Long.prototype.compare = function(other) { + if (this.equals(other)) { + return 0; + } + + var thisNeg = this.isNegative(); + var otherNeg = other.isNegative(); + if (thisNeg && !otherNeg) { + return -1; + } + if (!thisNeg && otherNeg) { + return 1; + } + + // at this point, the signs are the same, so subtraction will not overflow + if (this.subtract(other).isNegative()) { + return -1; + } else { + return 1; + } + }; + + + /** @return {!goog.math.Long} The negation of this value. */ + goog.math.Long.prototype.negate = function() { + if (this.equals(goog.math.Long.MIN_VALUE)) { + return goog.math.Long.MIN_VALUE; + } else { + return this.not().add(goog.math.Long.ONE); + } + }; + + + /** + * Returns the sum of this and the given Long. + * @param {goog.math.Long} other Long to add to this one. + * @return {!goog.math.Long} The sum of this and the given Long. + */ + goog.math.Long.prototype.add = function(other) { + // Divide each number into 4 chunks of 16 bits, and then sum the chunks. + + var a48 = this.high_ >>> 16; + var a32 = this.high_ & 0xFFFF; + var a16 = this.low_ >>> 16; + var a00 = this.low_ & 0xFFFF; + + var b48 = other.high_ >>> 16; + var b32 = other.high_ & 0xFFFF; + var b16 = other.low_ >>> 16; + var b00 = other.low_ & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 + b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 + b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 + b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 + b48; + c48 &= 0xFFFF; + return goog.math.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32); + }; + + + /** + * Returns the difference of this and the given Long. + * @param {goog.math.Long} other Long to subtract from this. + * @return {!goog.math.Long} The difference of this and the given Long. + */ + goog.math.Long.prototype.subtract = function(other) { + return this.add(other.negate()); + }; + + + /** + * Returns the product of this and the given long. + * @param {goog.math.Long} other Long to multiply with this. + * @return {!goog.math.Long} The product of this and the other. + */ + goog.math.Long.prototype.multiply = function(other) { + if (this.isZero()) { + return goog.math.Long.ZERO; + } else if (other.isZero()) { + return goog.math.Long.ZERO; + } + + if (this.equals(goog.math.Long.MIN_VALUE)) { + return other.isOdd() ? goog.math.Long.MIN_VALUE : goog.math.Long.ZERO; + } else if (other.equals(goog.math.Long.MIN_VALUE)) { + return this.isOdd() ? goog.math.Long.MIN_VALUE : goog.math.Long.ZERO; + } + + if (this.isNegative()) { + if (other.isNegative()) { + return this.negate().multiply(other.negate()); + } else { + return this.negate().multiply(other).negate(); + } + } else if (other.isNegative()) { + return this.multiply(other.negate()).negate(); + } + + // If both longs are small, use float multiplication + if (this.lessThan(goog.math.Long.TWO_PWR_24_) && + other.lessThan(goog.math.Long.TWO_PWR_24_)) { + return goog.math.Long.fromNumber(this.toNumber() * other.toNumber()); + } + + // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products. + // We can skip products that would overflow. + + var a48 = this.high_ >>> 16; + var a32 = this.high_ & 0xFFFF; + var a16 = this.low_ >>> 16; + var a00 = this.low_ & 0xFFFF; + + var b48 = other.high_ >>> 16; + var b32 = other.high_ & 0xFFFF; + var b16 = other.low_ >>> 16; + var b00 = other.low_ & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 * b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 * b00; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c16 += a00 * b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 * b00; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a16 * b16; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a00 * b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; + c48 &= 0xFFFF; + return goog.math.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32); + }; + + + /** + * Returns this Long divided by the given one. + * @param {goog.math.Long} other Long by which to divide. + * @return {!goog.math.Long} This Long divided by the given one. + */ + goog.math.Long.prototype.div = function(other) { + if (other.isZero()) { + throw Error('division by zero'); + } else if (this.isZero()) { + return goog.math.Long.ZERO; + } + + if (this.equals(goog.math.Long.MIN_VALUE)) { + if (other.equals(goog.math.Long.ONE) || + other.equals(goog.math.Long.NEG_ONE)) { + return goog.math.Long.MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE + } else if (other.equals(goog.math.Long.MIN_VALUE)) { + return goog.math.Long.ONE; + } else { + // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. + var halfThis = this.shiftRight(1); + var approx = halfThis.div(other).shiftLeft(1); + if (approx.equals(goog.math.Long.ZERO)) { + return other.isNegative() ? goog.math.Long.ONE : goog.math.Long.NEG_ONE; + } else { + var rem = this.subtract(other.multiply(approx)); + var result = approx.add(rem.div(other)); + return result; + } + } + } else if (other.equals(goog.math.Long.MIN_VALUE)) { + return goog.math.Long.ZERO; + } + + if (this.isNegative()) { + if (other.isNegative()) { + return this.negate().div(other.negate()); + } else { + return this.negate().div(other).negate(); + } + } else if (other.isNegative()) { + return this.div(other.negate()).negate(); + } + + // Repeat the following until the remainder is less than other: find a + // floating-point that approximates remainder / other *from below*, add this + // into the result, and subtract it from the remainder. It is critical that + // the approximate value is less than or equal to the real value so that the + // remainder never becomes negative. + var res = goog.math.Long.ZERO; + var rem = this; + while (rem.greaterThanOrEqual(other)) { + // Approximate the result of division. This may be a little greater or + // smaller than the actual value. + var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber())); + + // We will tweak the approximate result by changing it in the 48-th digit or + // the smallest non-fractional digit, whichever is larger. + var log2 = Math.ceil(Math.log(approx) / Math.LN2); + var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48); + + // Decrease the approximation until it is smaller than the remainder. Note + // that if it is too large, the product overflows and is negative. + var approxRes = goog.math.Long.fromNumber(approx); + var approxRem = approxRes.multiply(other); + while (approxRem.isNegative() || approxRem.greaterThan(rem)) { + approx -= delta; + approxRes = goog.math.Long.fromNumber(approx); + approxRem = approxRes.multiply(other); + } + + // We know the answer can't be zero... and actually, zero would cause + // infinite recursion since we would make no progress. + if (approxRes.isZero()) { + approxRes = goog.math.Long.ONE; + } + + res = res.add(approxRes); + rem = rem.subtract(approxRem); + } + return res; + }; + + + /** + * Returns this Long modulo the given one. + * @param {goog.math.Long} other Long by which to mod. + * @return {!goog.math.Long} This Long modulo the given one. + */ + goog.math.Long.prototype.modulo = function(other) { + return this.subtract(this.div(other).multiply(other)); + }; + + + /** @return {!goog.math.Long} The bitwise-NOT of this value. */ + goog.math.Long.prototype.not = function() { + return goog.math.Long.fromBits(~this.low_, ~this.high_); + }; + + + /** + * Returns the bitwise-AND of this Long and the given one. + * @param {goog.math.Long} other The Long with which to AND. + * @return {!goog.math.Long} The bitwise-AND of this and the other. + */ + goog.math.Long.prototype.and = function(other) { + return goog.math.Long.fromBits(this.low_ & other.low_, + this.high_ & other.high_); + }; + + + /** + * Returns the bitwise-OR of this Long and the given one. + * @param {goog.math.Long} other The Long with which to OR. + * @return {!goog.math.Long} The bitwise-OR of this and the other. + */ + goog.math.Long.prototype.or = function(other) { + return goog.math.Long.fromBits(this.low_ | other.low_, + this.high_ | other.high_); + }; + + + /** + * Returns the bitwise-XOR of this Long and the given one. + * @param {goog.math.Long} other The Long with which to XOR. + * @return {!goog.math.Long} The bitwise-XOR of this and the other. + */ + goog.math.Long.prototype.xor = function(other) { + return goog.math.Long.fromBits(this.low_ ^ other.low_, + this.high_ ^ other.high_); + }; + + + /** + * Returns this Long with bits shifted to the left by the given amount. + * @param {number} numBits The number of bits by which to shift. + * @return {!goog.math.Long} This shifted to the left by the given amount. + */ + goog.math.Long.prototype.shiftLeft = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var low = this.low_; + if (numBits < 32) { + var high = this.high_; + return goog.math.Long.fromBits( + low << numBits, + (high << numBits) | (low >>> (32 - numBits))); + } else { + return goog.math.Long.fromBits(0, low << (numBits - 32)); + } + } + }; + + + /** + * Returns this Long with bits shifted to the right by the given amount. + * @param {number} numBits The number of bits by which to shift. + * @return {!goog.math.Long} This shifted to the right by the given amount. + */ + goog.math.Long.prototype.shiftRight = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var high = this.high_; + if (numBits < 32) { + var low = this.low_; + return goog.math.Long.fromBits( + (low >>> numBits) | (high << (32 - numBits)), + high >> numBits); + } else { + return goog.math.Long.fromBits( + high >> (numBits - 32), + high >= 0 ? 0 : -1); + } + } + }; + + + /** + * Returns this Long with bits shifted to the right by the given amount, with + * the new top bits matching the current sign bit. + * @param {number} numBits The number of bits by which to shift. + * @return {!goog.math.Long} This shifted to the right by the given amount, with + * zeros placed into the new leading bits. + */ + goog.math.Long.prototype.shiftRightUnsigned = function(numBits) { + numBits &= 63; + if (numBits == 0) { + return this; + } else { + var high = this.high_; + if (numBits < 32) { + var low = this.low_; + return goog.math.Long.fromBits( + (low >>> numBits) | (high << (32 - numBits)), + high >>> numBits); + } else if (numBits == 32) { + return goog.math.Long.fromBits(high, 0); + } else { + return goog.math.Long.fromBits(high >>> (numBits - 32), 0); + } + } + }; + + //======= begin jsbn ======= + + var navigator = { appName: 'Modern Browser' }; // polyfill a little + + // Copyright (c) 2005 Tom Wu + // All Rights Reserved. + // http://www-cs-students.stanford.edu/~tjw/jsbn/ + + /* + * Copyright (c) 2003-2005 Tom Wu + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF + * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * In addition, the following condition applies: + * + * All redistributions must retain an intact copy of this copyright notice + * and disclaimer. + */ + + // Basic JavaScript BN library - subset useful for RSA encryption. + + // Bits per digit + var dbits; + + // JavaScript engine analysis + var canary = 0xdeadbeefcafe; + var j_lm = ((canary&0xffffff)==0xefcafe); + + // (public) Constructor + function BigInteger(a,b,c) { + if(a != null) + if("number" == typeof a) this.fromNumber(a,b,c); + else if(b == null && "string" != typeof a) this.fromString(a,256); + else this.fromString(a,b); + } + + // return new, unset BigInteger + function nbi() { return new BigInteger(null); } + + // am: Compute w_j += (x*this_i), propagate carries, + // c is initial carry, returns final carry. + // c < 3*dvalue, x < 2*dvalue, this_i < dvalue + // We need to select the fastest one that works in this environment. + + // am1: use a single mult and divide to get the high bits, + // max digit bits should be 26 because + // max internal value = 2*dvalue^2-2*dvalue (< 2^53) + function am1(i,x,w,j,c,n) { + while(--n >= 0) { + var v = x*this[i++]+w[j]+c; + c = Math.floor(v/0x4000000); + w[j++] = v&0x3ffffff; + } + return c; + } + // am2 avoids a big mult-and-extract completely. + // Max digit bits should be <= 30 because we do bitwise ops + // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31) + function am2(i,x,w,j,c,n) { + var xl = x&0x7fff, xh = x>>15; + while(--n >= 0) { + var l = this[i]&0x7fff; + var h = this[i++]>>15; + var m = xh*l+h*xl; + l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff); + c = (l>>>30)+(m>>>15)+xh*h+(c>>>30); + w[j++] = l&0x3fffffff; + } + return c; + } + // Alternately, set max digit bits to 28 since some + // browsers slow down when dealing with 32-bit numbers. + function am3(i,x,w,j,c,n) { + var xl = x&0x3fff, xh = x>>14; + while(--n >= 0) { + var l = this[i]&0x3fff; + var h = this[i++]>>14; + var m = xh*l+h*xl; + l = xl*l+((m&0x3fff)<<14)+w[j]+c; + c = (l>>28)+(m>>14)+xh*h; + w[j++] = l&0xfffffff; + } + return c; + } + if(j_lm && (navigator.appName == "Microsoft Internet Explorer")) { + BigInteger.prototype.am = am2; + dbits = 30; + } + else if(j_lm && (navigator.appName != "Netscape")) { + BigInteger.prototype.am = am1; + dbits = 26; + } + else { // Mozilla/Netscape seems to prefer am3 + BigInteger.prototype.am = am3; + dbits = 28; + } + + BigInteger.prototype.DB = dbits; + BigInteger.prototype.DM = ((1<= 0; --i) r[i] = this[i]; + r.t = this.t; + r.s = this.s; + } + + // (protected) set from integer value x, -DV <= x < DV + function bnpFromInt(x) { + this.t = 1; + this.s = (x<0)?-1:0; + if(x > 0) this[0] = x; + else if(x < -1) this[0] = x+DV; + else this.t = 0; + } + + // return bigint initialized to value + function nbv(i) { var r = nbi(); r.fromInt(i); return r; } + + // (protected) set from string and radix + function bnpFromString(s,b) { + var k; + if(b == 16) k = 4; + else if(b == 8) k = 3; + else if(b == 256) k = 8; // byte array + else if(b == 2) k = 1; + else if(b == 32) k = 5; + else if(b == 4) k = 2; + else { this.fromRadix(s,b); return; } + this.t = 0; + this.s = 0; + var i = s.length, mi = false, sh = 0; + while(--i >= 0) { + var x = (k==8)?s[i]&0xff:intAt(s,i); + if(x < 0) { + if(s.charAt(i) == "-") mi = true; + continue; + } + mi = false; + if(sh == 0) + this[this.t++] = x; + else if(sh+k > this.DB) { + this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<>(this.DB-sh)); + } + else + this[this.t-1] |= x<= this.DB) sh -= this.DB; + } + if(k == 8 && (s[0]&0x80) != 0) { + this.s = -1; + if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)< 0 && this[this.t-1] == c) --this.t; + } + + // (public) return string representation in given radix + function bnToString(b) { + if(this.s < 0) return "-"+this.negate().toString(b); + var k; + if(b == 16) k = 4; + else if(b == 8) k = 3; + else if(b == 2) k = 1; + else if(b == 32) k = 5; + else if(b == 4) k = 2; + else return this.toRadix(b); + var km = (1< 0) { + if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); } + while(i >= 0) { + if(p < k) { + d = (this[i]&((1<>(p+=this.DB-k); + } + else { + d = (this[i]>>(p-=k))&km; + if(p <= 0) { p += this.DB; --i; } + } + if(d > 0) m = true; + if(m) r += int2char(d); + } + } + return m?r:"0"; + } + + // (public) -this + function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; } + + // (public) |this| + function bnAbs() { return (this.s<0)?this.negate():this; } + + // (public) return + if this > a, - if this < a, 0 if equal + function bnCompareTo(a) { + var r = this.s-a.s; + if(r != 0) return r; + var i = this.t; + r = i-a.t; + if(r != 0) return (this.s<0)?-r:r; + while(--i >= 0) if((r=this[i]-a[i]) != 0) return r; + return 0; + } + + // returns bit length of the integer x + function nbits(x) { + var r = 1, t; + if((t=x>>>16) != 0) { x = t; r += 16; } + if((t=x>>8) != 0) { x = t; r += 8; } + if((t=x>>4) != 0) { x = t; r += 4; } + if((t=x>>2) != 0) { x = t; r += 2; } + if((t=x>>1) != 0) { x = t; r += 1; } + return r; + } + + // (public) return the number of bits in "this" + function bnBitLength() { + if(this.t <= 0) return 0; + return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM)); + } + + // (protected) r = this << n*DB + function bnpDLShiftTo(n,r) { + var i; + for(i = this.t-1; i >= 0; --i) r[i+n] = this[i]; + for(i = n-1; i >= 0; --i) r[i] = 0; + r.t = this.t+n; + r.s = this.s; + } + + // (protected) r = this >> n*DB + function bnpDRShiftTo(n,r) { + for(var i = n; i < this.t; ++i) r[i-n] = this[i]; + r.t = Math.max(this.t-n,0); + r.s = this.s; + } + + // (protected) r = this << n + function bnpLShiftTo(n,r) { + var bs = n%this.DB; + var cbs = this.DB-bs; + var bm = (1<= 0; --i) { + r[i+ds+1] = (this[i]>>cbs)|c; + c = (this[i]&bm)<= 0; --i) r[i] = 0; + r[ds] = c; + r.t = this.t+ds+1; + r.s = this.s; + r.clamp(); + } + + // (protected) r = this >> n + function bnpRShiftTo(n,r) { + r.s = this.s; + var ds = Math.floor(n/this.DB); + if(ds >= this.t) { r.t = 0; return; } + var bs = n%this.DB; + var cbs = this.DB-bs; + var bm = (1<>bs; + for(var i = ds+1; i < this.t; ++i) { + r[i-ds-1] |= (this[i]&bm)<>bs; + } + if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<>= this.DB; + } + if(a.t < this.t) { + c -= a.s; + while(i < this.t) { + c += this[i]; + r[i++] = c&this.DM; + c >>= this.DB; + } + c += this.s; + } + else { + c += this.s; + while(i < a.t) { + c -= a[i]; + r[i++] = c&this.DM; + c >>= this.DB; + } + c -= a.s; + } + r.s = (c<0)?-1:0; + if(c < -1) r[i++] = this.DV+c; + else if(c > 0) r[i++] = c; + r.t = i; + r.clamp(); + } + + // (protected) r = this * a, r != this,a (HAC 14.12) + // "this" should be the larger one if appropriate. + function bnpMultiplyTo(a,r) { + var x = this.abs(), y = a.abs(); + var i = x.t; + r.t = i+y.t; + while(--i >= 0) r[i] = 0; + for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t); + r.s = 0; + r.clamp(); + if(this.s != a.s) BigInteger.ZERO.subTo(r,r); + } + + // (protected) r = this^2, r != this (HAC 14.16) + function bnpSquareTo(r) { + var x = this.abs(); + var i = r.t = 2*x.t; + while(--i >= 0) r[i] = 0; + for(i = 0; i < x.t-1; ++i) { + var c = x.am(i,x[i],r,2*i,0,1); + if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) { + r[i+x.t] -= x.DV; + r[i+x.t+1] = 1; + } + } + if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1); + r.s = 0; + r.clamp(); + } + + // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20) + // r != q, this != m. q or r may be null. + function bnpDivRemTo(m,q,r) { + var pm = m.abs(); + if(pm.t <= 0) return; + var pt = this.abs(); + if(pt.t < pm.t) { + if(q != null) q.fromInt(0); + if(r != null) this.copyTo(r); + return; + } + if(r == null) r = nbi(); + var y = nbi(), ts = this.s, ms = m.s; + var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus + if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); } + else { pm.copyTo(y); pt.copyTo(r); } + var ys = y.t; + var y0 = y[ys-1]; + if(y0 == 0) return; + var yt = y0*(1<1)?y[ys-2]>>this.F2:0); + var d1 = this.FV/yt, d2 = (1<= 0) { + r[r.t++] = 1; + r.subTo(t,r); + } + BigInteger.ONE.dlShiftTo(ys,t); + t.subTo(y,y); // "negative" y so we can replace sub with am later + while(y.t < ys) y[y.t++] = 0; + while(--j >= 0) { + // Estimate quotient digit + var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2); + if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out + y.dlShiftTo(j,t); + r.subTo(t,r); + while(r[i] < --qd) r.subTo(t,r); + } + } + if(q != null) { + r.drShiftTo(ys,q); + if(ts != ms) BigInteger.ZERO.subTo(q,q); + } + r.t = ys; + r.clamp(); + if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder + if(ts < 0) BigInteger.ZERO.subTo(r,r); + } + + // (public) this mod a + function bnMod(a) { + var r = nbi(); + this.abs().divRemTo(a,null,r); + if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r); + return r; + } + + // Modular reduction using "classic" algorithm + function Classic(m) { this.m = m; } + function cConvert(x) { + if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m); + else return x; + } + function cRevert(x) { return x; } + function cReduce(x) { x.divRemTo(this.m,null,x); } + function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } + function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); } + + Classic.prototype.convert = cConvert; + Classic.prototype.revert = cRevert; + Classic.prototype.reduce = cReduce; + Classic.prototype.mulTo = cMulTo; + Classic.prototype.sqrTo = cSqrTo; + + // (protected) return "-1/this % 2^DB"; useful for Mont. reduction + // justification: + // xy == 1 (mod m) + // xy = 1+km + // xy(2-xy) = (1+km)(1-km) + // x[y(2-xy)] = 1-k^2m^2 + // x[y(2-xy)] == 1 (mod m^2) + // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2 + // should reduce x and y(2-xy) by m^2 at each step to keep size bounded. + // JS multiply "overflows" differently from C/C++, so care is needed here. + function bnpInvDigit() { + if(this.t < 1) return 0; + var x = this[0]; + if((x&1) == 0) return 0; + var y = x&3; // y == 1/x mod 2^2 + y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4 + y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8 + y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16 + // last step - calculate inverse mod DV directly; + // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints + y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits + // we really want the negative inverse, and -DV < y < DV + return (y>0)?this.DV-y:-y; + } + + // Montgomery reduction + function Montgomery(m) { + this.m = m; + this.mp = m.invDigit(); + this.mpl = this.mp&0x7fff; + this.mph = this.mp>>15; + this.um = (1<<(m.DB-15))-1; + this.mt2 = 2*m.t; + } + + // xR mod m + function montConvert(x) { + var r = nbi(); + x.abs().dlShiftTo(this.m.t,r); + r.divRemTo(this.m,null,r); + if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r); + return r; + } + + // x/R mod m + function montRevert(x) { + var r = nbi(); + x.copyTo(r); + this.reduce(r); + return r; + } + + // x = x/R mod m (HAC 14.32) + function montReduce(x) { + while(x.t <= this.mt2) // pad x so am has enough room later + x[x.t++] = 0; + for(var i = 0; i < this.m.t; ++i) { + // faster way of calculating u0 = x[i]*mp mod DV + var j = x[i]&0x7fff; + var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM; + // use am to combine the multiply-shift-add into one call + j = i+this.m.t; + x[j] += this.m.am(0,u0,x,i,0,this.m.t); + // propagate carry + while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; } + } + x.clamp(); + x.drShiftTo(this.m.t,x); + if(x.compareTo(this.m) >= 0) x.subTo(this.m,x); + } + + // r = "x^2/R mod m"; x != r + function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); } + + // r = "xy/R mod m"; x,y != r + function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); } + + Montgomery.prototype.convert = montConvert; + Montgomery.prototype.revert = montRevert; + Montgomery.prototype.reduce = montReduce; + Montgomery.prototype.mulTo = montMulTo; + Montgomery.prototype.sqrTo = montSqrTo; + + // (protected) true iff this is even + function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; } + + // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79) + function bnpExp(e,z) { + if(e > 0xffffffff || e < 1) return BigInteger.ONE; + var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1; + g.copyTo(r); + while(--i >= 0) { + z.sqrTo(r,r2); + if((e&(1< 0) z.mulTo(r2,g,r); + else { var t = r; r = r2; r2 = t; } + } + return z.revert(r); + } + + // (public) this^e % m, 0 <= e < 2^32 + function bnModPowInt(e,m) { + var z; + if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m); + return this.exp(e,z); + } + + // protected + BigInteger.prototype.copyTo = bnpCopyTo; + BigInteger.prototype.fromInt = bnpFromInt; + BigInteger.prototype.fromString = bnpFromString; + BigInteger.prototype.clamp = bnpClamp; + BigInteger.prototype.dlShiftTo = bnpDLShiftTo; + BigInteger.prototype.drShiftTo = bnpDRShiftTo; + BigInteger.prototype.lShiftTo = bnpLShiftTo; + BigInteger.prototype.rShiftTo = bnpRShiftTo; + BigInteger.prototype.subTo = bnpSubTo; + BigInteger.prototype.multiplyTo = bnpMultiplyTo; + BigInteger.prototype.squareTo = bnpSquareTo; + BigInteger.prototype.divRemTo = bnpDivRemTo; + BigInteger.prototype.invDigit = bnpInvDigit; + BigInteger.prototype.isEven = bnpIsEven; + BigInteger.prototype.exp = bnpExp; + + // public + BigInteger.prototype.toString = bnToString; + BigInteger.prototype.negate = bnNegate; + BigInteger.prototype.abs = bnAbs; + BigInteger.prototype.compareTo = bnCompareTo; + BigInteger.prototype.bitLength = bnBitLength; + BigInteger.prototype.mod = bnMod; + BigInteger.prototype.modPowInt = bnModPowInt; + + // "constants" + BigInteger.ZERO = nbv(0); + BigInteger.ONE = nbv(1); + + // jsbn2 stuff + + // (protected) convert from radix string + function bnpFromRadix(s,b) { + this.fromInt(0); + if(b == null) b = 10; + var cs = this.chunkSize(b); + var d = Math.pow(b,cs), mi = false, j = 0, w = 0; + for(var i = 0; i < s.length; ++i) { + var x = intAt(s,i); + if(x < 0) { + if(s.charAt(i) == "-" && this.signum() == 0) mi = true; + continue; + } + w = b*w+x; + if(++j >= cs) { + this.dMultiply(d); + this.dAddOffset(w,0); + j = 0; + w = 0; + } + } + if(j > 0) { + this.dMultiply(Math.pow(b,j)); + this.dAddOffset(w,0); + } + if(mi) BigInteger.ZERO.subTo(this,this); + } + + // (protected) return x s.t. r^x < DV + function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); } + + // (public) 0 if this == 0, 1 if this > 0 + function bnSigNum() { + if(this.s < 0) return -1; + else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0; + else return 1; + } + + // (protected) this *= n, this >= 0, 1 < n < DV + function bnpDMultiply(n) { + this[this.t] = this.am(0,n-1,this,0,0,this.t); + ++this.t; + this.clamp(); + } + + // (protected) this += n << w words, this >= 0 + function bnpDAddOffset(n,w) { + if(n == 0) return; + while(this.t <= w) this[this.t++] = 0; + this[w] += n; + while(this[w] >= this.DV) { + this[w] -= this.DV; + if(++w >= this.t) this[this.t++] = 0; + ++this[w]; + } + } + + // (protected) convert to radix string + function bnpToRadix(b) { + if(b == null) b = 10; + if(this.signum() == 0 || b < 2 || b > 36) return "0"; + var cs = this.chunkSize(b); + var a = Math.pow(b,cs); + var d = nbv(a), y = nbi(), z = nbi(), r = ""; + this.divRemTo(d,y,z); + while(y.signum() > 0) { + r = (a+z.intValue()).toString(b).substr(1) + r; + y.divRemTo(d,y,z); + } + return z.intValue().toString(b) + r; + } + + // (public) return value as integer + function bnIntValue() { + if(this.s < 0) { + if(this.t == 1) return this[0]-this.DV; + else if(this.t == 0) return -1; + } + else if(this.t == 1) return this[0]; + else if(this.t == 0) return 0; + // assumes 16 < DB < 32 + return ((this[1]&((1<<(32-this.DB))-1))<>= this.DB; + } + if(a.t < this.t) { + c += a.s; + while(i < this.t) { + c += this[i]; + r[i++] = c&this.DM; + c >>= this.DB; + } + c += this.s; + } + else { + c += this.s; + while(i < a.t) { + c += a[i]; + r[i++] = c&this.DM; + c >>= this.DB; + } + c += a.s; + } + r.s = (c<0)?-1:0; + if(c > 0) r[i++] = c; + else if(c < -1) r[i++] = this.DV+c; + r.t = i; + r.clamp(); + } + + BigInteger.prototype.fromRadix = bnpFromRadix; + BigInteger.prototype.chunkSize = bnpChunkSize; + BigInteger.prototype.signum = bnSigNum; + BigInteger.prototype.dMultiply = bnpDMultiply; + BigInteger.prototype.dAddOffset = bnpDAddOffset; + BigInteger.prototype.toRadix = bnpToRadix; + BigInteger.prototype.intValue = bnIntValue; + BigInteger.prototype.addTo = bnpAddTo; + + //======= end jsbn ======= + + // Emscripten wrapper + var Wrapper = { + abs: function(l, h) { + var x = new goog.math.Long(l, h); + var ret; + if (x.isNegative()) { + ret = x.negate(); + } else { + ret = x; + } + HEAP32[tempDoublePtr>>2] = ret.low_; + HEAP32[tempDoublePtr+4>>2] = ret.high_; + }, + ensureTemps: function() { + if (Wrapper.ensuredTemps) return; + Wrapper.ensuredTemps = true; + Wrapper.two32 = new BigInteger(); + Wrapper.two32.fromString('4294967296', 10); + Wrapper.two64 = new BigInteger(); + Wrapper.two64.fromString('18446744073709551616', 10); + Wrapper.temp1 = new BigInteger(); + Wrapper.temp2 = new BigInteger(); + }, + lh2bignum: function(l, h) { + var a = new BigInteger(); + a.fromString(h.toString(), 10); + var b = new BigInteger(); + a.multiplyTo(Wrapper.two32, b); + var c = new BigInteger(); + c.fromString(l.toString(), 10); + var d = new BigInteger(); + c.addTo(b, d); + return d; + }, + stringify: function(l, h, unsigned) { + var ret = new goog.math.Long(l, h).toString(); + if (unsigned && ret[0] == '-') { + // unsign slowly using jsbn bignums + Wrapper.ensureTemps(); + var bignum = new BigInteger(); + bignum.fromString(ret, 10); + ret = new BigInteger(); + Wrapper.two64.addTo(bignum, ret); + ret = ret.toString(10); + } + return ret; + }, + fromString: function(str, base, min, max, unsigned) { + Wrapper.ensureTemps(); + var bignum = new BigInteger(); + bignum.fromString(str, base); + var bigmin = new BigInteger(); + bigmin.fromString(min, 10); + var bigmax = new BigInteger(); + bigmax.fromString(max, 10); + if (unsigned && bignum.compareTo(BigInteger.ZERO) < 0) { + var temp = new BigInteger(); + bignum.addTo(Wrapper.two64, temp); + bignum = temp; + } + var error = false; + if (bignum.compareTo(bigmin) < 0) { + bignum = bigmin; + error = true; + } else if (bignum.compareTo(bigmax) > 0) { + bignum = bigmax; + error = true; + } + var ret = goog.math.Long.fromString(bignum.toString()); // min-max checks should have clamped this to a range goog.math.Long can handle well + HEAP32[tempDoublePtr>>2] = ret.low_; + HEAP32[tempDoublePtr+4>>2] = ret.high_; + if (error) throw 'range error'; + } + }; + return Wrapper; +})(); + +//======= end closure i64 code ======= + + + +// === Auto-generated postamble setup entry stuff === + + +function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; + this.status = status; +}; +ExitStatus.prototype = new Error(); +ExitStatus.prototype.constructor = ExitStatus; + +var initialStackTop; +var preloadStartTime = null; +var calledMain = false; + +dependenciesFulfilled = function runCaller() { + // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false) + if (!Module['calledRun']) run(); + if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled +} + +Module['callMain'] = Module.callMain = function callMain(args) { + assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)'); + assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called'); + + args = args || []; + + ensureInitRuntime(); + + var argc = args.length+1; + function pad() { + for (var i = 0; i < 4-1; i++) { + argv.push(0); + } + } + var argv = [allocate(intArrayFromString(Module['thisProgram']), 'i8', ALLOC_NORMAL) ]; + pad(); + for (var i = 0; i < argc-1; i = i + 1) { + argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL)); + pad(); + } + argv.push(0); + argv = allocate(argv, 'i32', ALLOC_NORMAL); + + initialStackTop = STACKTOP; + + try { + + var ret = Module['_main'](argc, argv, 0); + + + // if we're not running an evented main loop, it's time to exit + exit(ret, /* implicit = */ true); + } + catch(e) { + if (e instanceof ExitStatus) { + // exit() throws this once it's done to make sure execution + // has been stopped completely + return; + } else if (e == 'SimulateInfiniteLoop') { + // running an evented main loop, don't immediately exit + Module['noExitRuntime'] = true; + return; + } else { + if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]); + throw e; + } + } finally { + calledMain = true; + } +} + + + + +function run(args) { + args = args || Module['arguments']; + + if (preloadStartTime === null) preloadStartTime = Date.now(); + + if (runDependencies > 0) { + return; + } + + preRun(); + + if (runDependencies > 0) return; // a preRun added a dependency, run will be called later + if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame + + function doRun() { + if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening + Module['calledRun'] = true; + + if (ABORT) return; + + ensureInitRuntime(); + + preMain(); + + if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) { + Module.printErr('pre-main prep time: ' + (Date.now() - preloadStartTime) + ' ms'); + } + + if (Module['onRuntimeInitialized']) Module['onRuntimeInitialized'](); + + if (Module['_main'] && shouldRunNow) Module['callMain'](args); + + postRun(); + } + + if (Module['setStatus']) { + Module['setStatus']('Running...'); + setTimeout(function() { + setTimeout(function() { + Module['setStatus'](''); + }, 1); + doRun(); + }, 1); + } else { + doRun(); + } +} +Module['run'] = Module.run = run; + +function exit(status, implicit) { + if (implicit && Module['noExitRuntime']) { + return; + } + + if (Module['noExitRuntime']) { + } else { + + ABORT = true; + EXITSTATUS = status; + STACKTOP = initialStackTop; + + exitRuntime(); + + if (Module['onExit']) Module['onExit'](status); + } + + if (ENVIRONMENT_IS_NODE) { + // Work around a node.js bug where stdout buffer is not flushed at process exit: + // Instead of process.exit() directly, wait for stdout flush event. + // See https://github.com/joyent/node/issues/1669 and https://github.com/kripken/emscripten/issues/2582 + // Workaround is based on https://github.com/RReverser/acorn/commit/50ab143cecc9ed71a2d66f78b4aec3bb2e9844f6 + process['stdout']['once']('drain', function () { + process['exit'](status); + }); + console.log(' '); // Make sure to print something to force the drain event to occur, in case the stdout buffer was empty. + // Work around another node bug where sometimes 'drain' is never fired - make another effort + // to emit the exit status, after a significant delay (if node hasn't fired drain by then, give up) + setTimeout(function() { + process['exit'](status); + }, 500); + } else + if (ENVIRONMENT_IS_SHELL && typeof quit === 'function') { + quit(status); + } + // if we reach here, we must throw an exception to halt the current execution + throw new ExitStatus(status); +} +Module['exit'] = Module.exit = exit; + +var abortDecorators = []; + +function abort(what) { + if (what !== undefined) { + Module.print(what); + Module.printErr(what); + what = JSON.stringify(what) + } else { + what = ''; + } + + ABORT = true; + EXITSTATUS = 1; + + var extra = '\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.'; + + var output = 'abort(' + what + ') at ' + stackTrace() + extra; + if (abortDecorators) { + abortDecorators.forEach(function(decorator) { + output = decorator(output, what); + }); + } + throw output; +} +Module['abort'] = Module.abort = abort; + +// {{PRE_RUN_ADDITIONS}} + +if (Module['preInit']) { + if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']]; + while (Module['preInit'].length > 0) { + Module['preInit'].pop()(); + } +} + +// shouldRunNow refers to calling main(), not run(). +var shouldRunNow = true; +if (Module['noInitialRun']) { + shouldRunNow = false; +} + + +run(); + +// {{POST_RUN_ADDITIONS}} + + + + + + +// {{MODULE_ADDITIONS}} + + + + var encoder_init = Module._encoder_init, + encoder_clear = Module._encoder_clear, + encoder_analysis_buffer = Module._encoder_analysis_buffer, + encoder_process = Module._encoder_process, + encoder_data_len = Module._encoder_data_len, + encoder_transfer_data = Module._encoder_transfer_data, + HEAPU8 = Module.HEAPU8, + HEAPU32 = Module.HEAPU32, + HEAPF32 = Module.HEAPF32; + + var Encoder = function(sampleRate, numChannels, quality) { + this.numChannels = numChannels; + /** + * @type {Uint8Array[]} + */ + this.oggBuffers = []; + this.encoder = encoder_init(this.numChannels, sampleRate, quality); + }; + + Encoder.prototype.encode = function(buffers) { + var length = buffers[0].length; + var analysis_buffer = encoder_analysis_buffer(this.encoder, length) >> 2; + for (var ch = 0; ch < this.numChannels; ++ch) + HEAPF32.set(buffers[ch], HEAPU32[analysis_buffer + ch] >> 2); + this.process(length); + }; + + Encoder.prototype.finish = function() { + this.process(0); + const buff = this.oggBuffers.slice(); + this.cleanup(); + return buff; + }; + + Encoder.prototype.cancel = Encoder.prototype.cleanup = function() { + encoder_clear(this.encoder); + delete this.encoder; + delete this.oggBuffers; + }; + + Encoder.prototype.process = function(length) { + encoder_process(this.encoder, length); + var len = encoder_data_len(this.encoder); + if (len > 0) { + var data = encoder_transfer_data(this.encoder); + this.oggBuffers.push(new Uint8Array(HEAPU8.subarray(data, data + len))); + } + }; + + libvorbis.OggVorbisEncoder = Encoder; + }) +}; + +if (typeof window !== 'undefined' && window === self) +{ + libvorbis.init(); +} + +export { libvorbis } + diff --git a/src/spessasynth_lib/midi_parser/midi_editor.js b/src/spessasynth_lib/midi_parser/midi_editor.js index 92cdf2c6..1196a01b 100644 --- a/src/spessasynth_lib/midi_parser/midi_editor.js +++ b/src/spessasynth_lib/midi_parser/midi_editor.js @@ -8,7 +8,7 @@ import { DEFAULT_PERCUSSION } from '../synthetizer/synthetizer.js' * @param ticks {number} * @returns {MidiMessage} */ -function getGsOn(ticks) +export function getGsOn(ticks) { return new MidiMessage( ticks, @@ -324,8 +324,11 @@ export function modifyMIDI( }); if(!addedGs) { - // gs is not on, add it on the first track at index 0 - midi.tracks[0].splice(0, 0, getGsOn(0)); + // gs is not on, add it on the first track at index 0 (or 1 if track name is first) + let index = 0; + if(midi.tracks[0][0].messageStatusByte === messageTypes.trackName) + index++; + midi.tracks[0].splice(index, 0, getGsOn(0)); SpessaSynthInfo("%cGS on not detected. Adding it.", consoleColors.info); addedGs = true; } diff --git a/src/spessasynth_lib/midi_parser/rmidi_writer.js b/src/spessasynth_lib/midi_parser/rmidi_writer.js index ef0e9eb3..adab824a 100644 --- a/src/spessasynth_lib/midi_parser/rmidi_writer.js +++ b/src/spessasynth_lib/midi_parser/rmidi_writer.js @@ -4,6 +4,7 @@ import { RiffChunk, writeRIFFChunk } from '../soundfont/read/riff_chunk.js' import { getStringBytes } from '../utils/byte_functions/string.js' import { messageTypes, midiControllers, MidiMessage } from './midi_message.js' import { DEFAULT_PERCUSSION } from '../synthetizer/synthetizer.js' +import { getGsOn } from './midi_editor.js' /** * @@ -14,9 +15,14 @@ import { DEFAULT_PERCUSSION } from '../synthetizer/synthetizer.js' */ export function writeRMIDI(soundfontBinary, mid, soundfont) { - // add 1 to bank. See wiki About-RMIDI.md + // add 1 to bank. See wiki About-RMIDI // also fix presets that don't exists since midiplayer6 doesn't seem to default to 0 when nonextistent... - let system = "gs"; + let system = "gm"; + /** + * The unwanted system messages such as gm/gm2 on + * @type {{tNum: number, e: MidiMessage}[]} + */ + let unwantedSystems = []; mid.tracks.forEach((t, trackNum) => { let hasBankSelects = false; /** @@ -61,6 +67,27 @@ export function writeRMIDI(soundfontBinary, mid, soundfont) { system = "xg"; } + else + if( + e.messageData[0] === 0x41 // roland + && e.messageData[2] === 0x42 // GS + && e.messageData[6] === 0x7F // Mode set + ) + { + system = "gs"; + } + else + if( + e.messageData[0] === 0x7E // non realtime + && e.messageData[2] === 0x09 // gm system + ) + { + system = "gm"; + unwantedSystems.push({ + tNum: trackNum, + e: e + }); + } return; } const sysexChannel = [9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15][e.messageData[5] & 0x0F]; @@ -76,14 +103,14 @@ export function writeRMIDI(soundfontBinary, mid, soundfont) { if(soundfont.presets.findIndex(p => p.program === e.messageData[0] && p.bank === 128) === -1) { - e.messageData[0] = soundfont.presets.find(p => p.bank === 128).program; + e.messageData[0] = soundfont.presets.find(p => p.bank === 128)?.program || 0; } } else { if (soundfont.presets.findIndex(p => p.program === e.messageData[0] && p.bank !== 128) === -1) { - e.messageData[0] = soundfont.presets.find(p => p.bank !== 128).program; + e.messageData[0] = soundfont.presets.find(p => p.bank !== 128)?.program || 0; } } // check if this preset exists for program and bank @@ -144,7 +171,19 @@ export function writeRMIDI(soundfontBinary, mid, soundfont) )); } } - }) + }); + // make sure to put xg if gm + if(system !== "gs" && system !== "xg") + { + for(const m of unwantedSystems) + { + mid.tracks[m.tNum].splice(mid.tracks[m.tNum].indexOf(m.e), 1); + } + let index = 0; + if(mid.tracks[0][0].messageStatusByte === messageTypes.trackName) + index++; + mid.tracks[0].splice(index, 0, getGsOn(0)); + } const newMid = new IndexedByteArray(writeMIDIFile(mid).buffer); // infodata for MidiPlayer6 diff --git a/src/spessasynth_lib/sequencer/worklet_sequencer/play.js b/src/spessasynth_lib/sequencer/worklet_sequencer/play.js index f92b7715..467b0114 100644 --- a/src/spessasynth_lib/sequencer/worklet_sequencer/play.js +++ b/src/spessasynth_lib/sequencer/worklet_sequencer/play.js @@ -127,7 +127,7 @@ export function _playTo(time, ticks = undefined) let ccV = event.messageData[1]; if(this.midiData.embeddedSoundFont && controllerNumber === midiControllers.bankSelect) { - // special case if the RMID is embedded: subtract 1 from bank. See wiki About-RMIDI.md + // special case if the RMID is embedded: subtract 1 from bank. See wiki About-RMIDI ccV--; } this.synth.controllerChange(channel, controllerNumber, ccV); diff --git a/src/spessasynth_lib/sequencer/worklet_sequencer/process_event.js b/src/spessasynth_lib/sequencer/worklet_sequencer/process_event.js index 5c7bd6ce..c752d620 100644 --- a/src/spessasynth_lib/sequencer/worklet_sequencer/process_event.js +++ b/src/spessasynth_lib/sequencer/worklet_sequencer/process_event.js @@ -67,7 +67,7 @@ export function _processEvent(event, trackIndex) break; case messageTypes.controllerChange: - // special case if the RMID is embedded: subtract 1 from bank. See wiki About-RMIDI.md + // special case if the RMID is embedded: subtract 1 from bank. See wiki About-RMIDI let v = event.messageData[1]; if(this.midiData.embeddedSoundFont && event.messageData[0] === midiControllers.bankSelect) { diff --git a/src/spessasynth_lib/soundfont/read/samples.js b/src/spessasynth_lib/soundfont/read/samples.js index 1dad6bee..684e17c4 100644 --- a/src/spessasynth_lib/soundfont/read/samples.js +++ b/src/spessasynth_lib/soundfont/read/samples.js @@ -4,6 +4,7 @@ import { readBytesAsUintLittleEndian, signedInt8} from "../../utils/byte_functio import { stbvorbis } from '../../externals/stbvorbis_sync.min.js' import { SpessaSynthWarn } from '../../utils/loggin.js' import { readBytesAsString } from '../../utils/byte_functions/string.js' +import { encodeVorbis } from '../../utils/encode_vorbis.js' /** * samples.js @@ -11,95 +12,10 @@ import { readBytesAsString } from '../../utils/byte_functions/string.js' * loads sample data, handles async loading of sf3 compressed samples */ -/** - * Reads the generatorTranslator from the shdr read - * @param sampleHeadersChunk {RiffChunk} - * @param smplChunkData {IndexedByteArray} - * @returns {Sample[]} - */ -export function readSamples(sampleHeadersChunk, smplChunkData) -{ - /** - * @type {Sample[]} - */ - let samples = []; - let index = 0; - while(sampleHeadersChunk.chunkData.length > sampleHeadersChunk.chunkData.currentIndex) - { - const sample = readSample(index, sampleHeadersChunk.chunkData, smplChunkData); - samples.push(sample); - index++; - } - // remove EOS - if (samples.length > 1) - { - samples.pop(); - } - return samples; -} - -/** - * Reads it into a sample - * @param index {number} - * @param sampleHeaderData {IndexedByteArray} - * @param smplArrayData {IndexedByteArray} - * @returns {Sample} - */ -function readSample(index, sampleHeaderData, smplArrayData) { - - // read the sample name - let sampleName = readBytesAsString(sampleHeaderData, 20); - - // read the sample start index - let sampleStartIndex = readBytesAsUintLittleEndian(sampleHeaderData, 4) * 2; - - // read the sample end index - let sampleEndIndex = readBytesAsUintLittleEndian(sampleHeaderData, 4) * 2; - - // read the sample looping start index - let sampleLoopStartIndex = readBytesAsUintLittleEndian(sampleHeaderData, 4) * 2; - - // read the sample looping end index - let sampleLoopEndIndex = readBytesAsUintLittleEndian(sampleHeaderData, 4) * 2; - - // read the sample rate - let sampleRate = readBytesAsUintLittleEndian(sampleHeaderData, 4); - - // read the original sample pitch - let samplePitch = sampleHeaderData[sampleHeaderData.currentIndex++]; - if(samplePitch === 255) - { - // if it's 255, then default to 60 - samplePitch = 60; - } - - // readt the sample pitch correction - let samplePitchCorrection = signedInt8(sampleHeaderData[sampleHeaderData.currentIndex++]); - - - // read the link to the other channel - let sampleLink = readBytesAsUintLittleEndian(sampleHeaderData, 2); - let sampleType = readBytesAsUintLittleEndian(sampleHeaderData, 2); - - - - return new Sample(sampleName, - sampleStartIndex, - sampleEndIndex, - sampleLoopStartIndex, - sampleLoopEndIndex, - sampleRate, - samplePitch, - samplePitchCorrection, - sampleLink, - sampleType, - smplArrayData, - index); -} - export class BasicSample { /** + * The basic representation of a soundfont sample * @param sampleName {string} * @param sampleRate {number} * @param samplePitch {number} @@ -166,6 +82,12 @@ export class BasicSample * @type {boolean} */ this.isCompressed = (sampleType & 0x10) > 0; + + /** + * The compressed sample data if it was compressed by spessasynth + * @type {Uint8Array} + */ + this.compressedData = undefined; } /** @@ -177,6 +99,43 @@ export class BasicSample e.name = "NotImplementedError"; throw e; } + + /** + * @param quality {number} + */ + compressSample(quality) + { + // no need to compress + if(this.isCompressed) + { + return; + } + // compress, always mono! + try { + this.compressedData = encodeVorbis([this.getAudioData()], 1, this.sampleRate, quality); + // flag as compressed + this.sampleType |= 0x10; + this.isCompressed = true; + } + catch (e) + { + SpessaSynthWarn(`Failed to compress ${this.sampleName}. Leaving as uncompressed!`); + this.isCompressed = false; + this.compressedData = undefined; + this.sampleType &= -17; + } + + } + + /** + * @returns {Float32Array} + */ + getAudioData() + { + const e = new Error("Not implemented"); + e.name = "NotImplementedError"; + throw e; + } } export class Sample extends BasicSample @@ -251,6 +210,10 @@ export class Sample extends BasicSample const smplArr = this.sampleDataArray; if(this.isCompressed) { + if(this.compressedData) + { + return this.compressedData; + } const smplStart = smplArr.currentIndex; return smplArr.slice(this.sampleStartIndex / 2 + smplStart, this.sampleEndIndex / 2 + smplStart); } @@ -310,7 +273,7 @@ export class Sample extends BasicSample } // read the sample data - let audioData = new Float32Array(this.sampleLength / 2 + 1); + let audioData = new Float32Array(this.sampleLength / 2); const dataStartIndex = this.sampleDataArray.currentIndex; let convertedSigned16 = new Int16Array( this.sampleDataArray.slice(dataStartIndex + this.sampleStartIndex, dataStartIndex + this.sampleEndIndex) @@ -347,4 +310,90 @@ export class Sample extends BasicSample } return this.loadUncompressedData(); } +} + +/** + * Reads the generatorTranslator from the shdr read + * @param sampleHeadersChunk {RiffChunk} + * @param smplChunkData {IndexedByteArray} + * @returns {Sample[]} + */ +export function readSamples(sampleHeadersChunk, smplChunkData) +{ + /** + * @type {Sample[]} + */ + let samples = []; + let index = 0; + while(sampleHeadersChunk.chunkData.length > sampleHeadersChunk.chunkData.currentIndex) + { + const sample = readSample(index, sampleHeadersChunk.chunkData, smplChunkData); + samples.push(sample); + index++; + } + // remove EOS + if (samples.length > 1) + { + samples.pop(); + } + return samples; +} + +/** + * Reads it into a sample + * @param index {number} + * @param sampleHeaderData {IndexedByteArray} + * @param smplArrayData {IndexedByteArray} + * @returns {Sample} + */ +function readSample(index, sampleHeaderData, smplArrayData) { + + // read the sample name + let sampleName = readBytesAsString(sampleHeaderData, 20); + + // read the sample start index + let sampleStartIndex = readBytesAsUintLittleEndian(sampleHeaderData, 4) * 2; + + // read the sample end index + let sampleEndIndex = readBytesAsUintLittleEndian(sampleHeaderData, 4) * 2; + + // read the sample looping start index + let sampleLoopStartIndex = readBytesAsUintLittleEndian(sampleHeaderData, 4) * 2; + + // read the sample looping end index + let sampleLoopEndIndex = readBytesAsUintLittleEndian(sampleHeaderData, 4) * 2; + + // read the sample rate + let sampleRate = readBytesAsUintLittleEndian(sampleHeaderData, 4); + + // read the original sample pitch + let samplePitch = sampleHeaderData[sampleHeaderData.currentIndex++]; + if(samplePitch === 255) + { + // if it's 255, then default to 60 + samplePitch = 60; + } + + // readt the sample pitch correction + let samplePitchCorrection = signedInt8(sampleHeaderData[sampleHeaderData.currentIndex++]); + + + // read the link to the other channel + let sampleLink = readBytesAsUintLittleEndian(sampleHeaderData, 2); + let sampleType = readBytesAsUintLittleEndian(sampleHeaderData, 2); + + + + return new Sample(sampleName, + sampleStartIndex, + sampleEndIndex, + sampleLoopStartIndex, + sampleLoopEndIndex, + sampleRate, + samplePitch, + samplePitchCorrection, + sampleLink, + sampleType, + smplArrayData, + index); } \ No newline at end of file diff --git a/src/spessasynth_lib/soundfont/write/sdta.js b/src/spessasynth_lib/soundfont/write/sdta.js index 3309b103..9bd17446 100644 --- a/src/spessasynth_lib/soundfont/write/sdta.js +++ b/src/spessasynth_lib/soundfont/write/sdta.js @@ -7,13 +7,21 @@ import { consoleColors } from '../../utils/other.js' * @this {SoundFont2} * @param smplStartOffsets {number[]} * @param smplEndOffsets {number[]} + * @param compress {boolean} + * @param quality {number} * @returns {IndexedByteArray} */ -export function getSDTA(smplStartOffsets, smplEndOffsets) +export function getSDTA(smplStartOffsets, smplEndOffsets, compress, quality) { // write smpl: write int16 data of each sample linearly // get size (calling getAudioData twice doesn't matter since it gets cached) - const sampleDatas = this.samples.map(s => s.getRawData()); + const sampleDatas = this.samples.map(s => { + if(compress) + { + s.compressSample(quality); + } + return s.getRawData(); + }); const smplSize = this.samples.reduce((total, s, i) => { return total + sampleDatas[i].length + 46; }, 0); diff --git a/src/spessasynth_lib/soundfont/write/soundfont_trimmer.js b/src/spessasynth_lib/soundfont/write/soundfont_trimmer.js index 96ba622e..2f356f7e 100644 --- a/src/spessasynth_lib/soundfont/write/soundfont_trimmer.js +++ b/src/spessasynth_lib/soundfont/write/soundfont_trimmer.js @@ -13,7 +13,7 @@ import { messageTypes, midiControllers } from '../../midi_parser/midi_message.js * @param mid {MIDI} * @returns {Uint8Array} */ -export function getTrimmedSoundfont(soundfont, mid) +export function trimSoundfont(soundfont, mid) { /** * @param instrument {Instrument} @@ -317,5 +317,4 @@ export function getTrimmedSoundfont(soundfont, mid) consoleColors.recognized) SpessaSynthGroupEnd(); SpessaSynthGroupEnd(); - return soundfont.write(); } \ No newline at end of file diff --git a/src/spessasynth_lib/soundfont/write/write.js b/src/spessasynth_lib/soundfont/write/write.js index e7f0d61d..1255ab52 100644 --- a/src/spessasynth_lib/soundfont/write/write.js +++ b/src/spessasynth_lib/soundfont/write/write.js @@ -19,15 +19,35 @@ import { SpessaSynthInfo, } from '../../utils/loggin.js' +/** + * @typedef {Object} SoundFont2WriteOptions + * @property {boolean} compress - if the soundfont should be compressed with the ogg vorbis codec + * @property {number} compressionQuality - the vorbis compression quality, from -0.1 to 1 + */ + +/** + * @type {SoundFont2WriteOptions} + */ +const DEFAULT_WRITE_OPTIONS = { + compress: false, + compressionQuality: 0.5 +} + /** * Write the soundfont as an .sf2 file. This method is DESTRUCTIVE * @this {SoundFont2} + * @param {SoundFont2WriteOptions} options * @returns {Uint8Array} */ -export function write() +export function write(options = DEFAULT_WRITE_OPTIONS) { SpessaSynthGroupCollapsed("%cSaving soundfont...", consoleColors.info); + SpessaSynthInfo(`%cCompression: %c${options?.compress || "false"}%c quality: %c${options?.compressionQuality || "none"}`, + consoleColors.info, + consoleColors.recognized, + consoleColors.info, + consoleColors.recognized) SpessaSynthInfo("%cWriting INFO...", consoleColors.info); /** @@ -36,13 +56,16 @@ export function write() */ const infoArrays = []; this.soundFontInfo["ISFT"] = "SpessaSynth"; // ( ͡° ͜ʖ ͡°) - this.soundFontInfo["ifil"] = this.soundFontInfo["ifil"].split(".")[0] + ".4"; // always vesrion 4 + if(options?.compress) + { + this.soundFontInfo["ifil"] = "3.0"; // set version to 3 + } for (const [type, data] of Object.entries(this.soundFontInfo)) { if(type === "ifil" || type === "iver") { const major= parseInt(data.split(".")[0]); - const minor = parseInt(data.split(".")[1]); + const minor= parseInt(data.split(".")[1]); const ckdata = new IndexedByteArray(4); writeWord(ckdata, major); writeWord(ckdata, minor); @@ -74,7 +97,7 @@ export function write() // write sdata const smplStartOffsets = []; const smplEndOffsets = []; - const sdtaChunk = getSDTA.bind(this)(smplStartOffsets, smplEndOffsets); + const sdtaChunk = getSDTA.bind(this)(smplStartOffsets, smplEndOffsets, options?.compress, options?.compressionQuality || 0.5); SpessaSynthInfo("%cWriting PDTA...", consoleColors.info); diff --git a/src/spessasynth_lib/utils/encode_vorbis.js b/src/spessasynth_lib/utils/encode_vorbis.js new file mode 100644 index 00000000..8b5d219d --- /dev/null +++ b/src/spessasynth_lib/utils/encode_vorbis.js @@ -0,0 +1,29 @@ +import { libvorbis } from '../externals/OggVorbisEncoder.js' + +/** + * @param channelAudioData {Float32Array[]} + * @param sampleRate {number} + * @param channels {number} + * @param quality {number} -0.1 to 1 + * @returns {Uint8Array} + */ +export function encodeVorbis(channelAudioData, channels, sampleRate, quality) +{ + // https://github.com/higuma/ogg-vorbis-encoder-js + //libvorbis.init(); + const encoder = new libvorbis.OggVorbisEncoder(sampleRate, channels, quality); + encoder.encode(channelAudioData); + /** + * @type {Uint8Array[]} + */ + const arrs = encoder.finish(); + const outLen = arrs.reduce((l, c) => l + c.length, 0); + const out = new Uint8Array(outLen); + let offset = 0; + for(const a of arrs) + { + out.set(a, offset); + offset += a.length; + } + return out; +} \ No newline at end of file diff --git a/src/website/css/notification/buttons.css b/src/website/css/notification/buttons.css index 6e60b6de..25524b6a 100644 --- a/src/website/css/notification/buttons.css +++ b/src/website/css/notification/buttons.css @@ -5,7 +5,6 @@ margin: 0.5rem; cursor: pointer; border-radius: var(--notification-border-radius); - font-size: 1em; - width: 70%; + font-size: var(--notification-font-size); min-width: fit-content; } \ No newline at end of file diff --git a/src/website/css/notification/inputs.css b/src/website/css/notification/inputs.css index c1e5bea6..09111705 100644 --- a/src/website/css/notification/inputs.css +++ b/src/website/css/notification/inputs.css @@ -6,13 +6,13 @@ margin: 0.5rem; } -input:not([type='checkbox'])::-webkit-outer-spin-button, -input:not([type='checkbox'])::-webkit-inner-spin-button { +input[type='number']::-webkit-outer-spin-button, +input[type='number']::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; } -.notification input:not([type='checkbox']){ +.notification input[type='number']{ display: block; background: var(--top-buttons-color); border: solid 1px #333; @@ -21,4 +21,22 @@ input:not([type='checkbox'])::-webkit-inner-spin-button { border-radius: var(--notification-border-radius); width: 5rem; -moz-appearance: textfield; -} \ No newline at end of file +} + +.notification_slider_wrapper{ + display: flex; + justify-content: space-between; + margin: 0.5rem; +} + +.notification_slider_wrapper label{ + margin-right: 2rem; +} + +.notification_slider_wrapper .settings_visual_wrapper{ + margin: 0 !important; +} + +.notification_slider_wrapper .settings_slider_wrapper{ + width: auto !important; +} diff --git a/src/website/css/notification/notification.css b/src/website/css/notification/notification.css index 936abe98..2d315fe4 100644 --- a/src/website/css/notification/notification.css +++ b/src/website/css/notification/notification.css @@ -6,6 +6,8 @@ .notification { --notification-border-radius: var(--primary-border-radius); + --notification-font-size: 1.3rem; + background: var(--top-color); color: var(--font-color); position: fixed; @@ -44,14 +46,13 @@ .notification h2{ text-align: start; - font-size: 1.5rem; line-height: 2rem; margin: 1rem; } .notification_content{ margin: 1rem; - width: 90%; + min-width: 90%; } .notification .close_btn{ diff --git a/src/website/css/notification/texts.css b/src/website/css/notification/texts.css index 1f07aca7..32655048 100644 --- a/src/website/css/notification/texts.css +++ b/src/website/css/notification/texts.css @@ -1,3 +1,8 @@ .notification p{ margin: 1rem; + font-size: var(--notification-font-size); +} + +.notification label{ + font-size: var(--notification-font-size); } \ No newline at end of file diff --git a/src/website/js/notification/get_content.js b/src/website/js/notification/get_content.js index e7263147..ae936abf 100644 --- a/src/website/js/notification/get_content.js +++ b/src/website/js/notification/get_content.js @@ -1,3 +1,5 @@ +import { createSlider } from '../settings_ui/sliders.js' + /** * @param el {HTMLElement} * @param content {NotificationContent} @@ -66,6 +68,20 @@ export function getContent(content, locale) case "toggle": return getSwitch(content, locale); + + case "range": + const range = document.createElement("input"); + range.type = "range"; + const label = document.createElement("label"); + applyAttributes(content, [range, label]); + applyTextContent(label, content, locale); + const slider = createSlider(range, false); + const wrapper = document.createElement("div"); + wrapper.classList.add("notification_slider_wrapper"); + wrapper.appendChild(label); + wrapper.appendChild(slider); + return wrapper; + } } diff --git a/src/website/js/notification/notification.js b/src/website/js/notification/notification.js index bfef253d..63cad41f 100644 --- a/src/website/js/notification/notification.js +++ b/src/website/js/notification/notification.js @@ -17,7 +17,7 @@ const notifications = {}; /** * @typedef {Object} NotificationContent - * @property {"button"|"progress"|"text"|"input"|"toggle"} type + * @property {"button"|"progress"|"text"|"input"|"toggle"|"range"} type * @property {string|undefined} textContent * @property {string|undefined} translatePathTitle * @property {Object|undefined} attributes @@ -30,6 +30,7 @@ const notifications = {}; * @param time {number} seconds * @param allowClosing {boolean} * @param locale {LocaleManager} + * @param contentStyling {Object} * @returns {NotificationType} */ export function showNotification( @@ -37,7 +38,8 @@ export function showNotification( contents, time = NOTIFICATION_TIME, allowClosing = true, - locale = undefined) + locale = undefined, + contentStyling = undefined) { const notification = document.createElement("div"); const notificationID = notificationCounter++; @@ -50,6 +52,13 @@ export function showNotification( `; const contentWrapper = document.createElement("div"); contentWrapper.classList.add("notification_content"); + if(contentStyling) + { + for(const [key, value] of Object.entries(contentStyling)) + { + contentWrapper.style[key] = value; + } + } notification.appendChild(contentWrapper); for(const content of contents) { diff --git a/src/website/js/settings_ui/sliders.js b/src/website/js/settings_ui/sliders.js index a89099cf..afde32ca 100644 --- a/src/website/js/settings_ui/sliders.js +++ b/src/website/js/settings_ui/sliders.js @@ -18,63 +18,74 @@ export function handleSliders(div) const inputs = div.getElementsByTagName("spessarange"); for(const input of inputs) { - // main wrapper wraps the visual wrapper and span - const mainWrapper = document.createElement("div"); - mainWrapper.classList.add("settings_slider_wrapper"); - // copy over values to the actual input - const min = input.getAttribute("min"); - const max = input.getAttribute("max"); - const current = input.getAttribute("value"); - const units = input.getAttribute("units"); - const id = input.getAttribute("input_id"); - const htmlInput = document.createElement("input"); - htmlInput.classList.add("settings_slider"); - htmlInput.type = "range"; - htmlInput.id = id; - htmlInput.min = min; - htmlInput.max = max; - htmlInput.value = current; + input.parentElement.insertBefore(createSlider(input, true), input); + } + while(inputs.length > 0) + { + inputs[0].parentNode.removeChild(inputs[0]); + } +} + +export function createSlider(input, showSpan = true) +{ + // main wrapper wraps the visual wrapper and span + const mainWrapper = document.createElement("div"); + mainWrapper.classList.add("settings_slider_wrapper"); + // copy over values to the actual input + const min = input.getAttribute( "min"); + const max = input.getAttribute("max"); + const current = input.getAttribute("value"); + const units = input.getAttribute("units"); + const id = input.getAttribute("input_id"); + const htmlInput = document.createElement("input"); + htmlInput.classList.add("settings_slider"); + htmlInput.type = "range"; + htmlInput.id = id; + htmlInput.min = min; + htmlInput.max = max; + htmlInput.value = current; - const span = document.createElement("span"); + let span + if(showSpan) + { + span = document.createElement("span"); span.textContent = current + units; + } - // visual wrapper wraps the input, thumb and progress - const visualWrapper = document.createElement("div"); - visualWrapper.classList.add("settings_visual_wrapper"); + // visual wrapper wraps the input, thumb and progress + const visualWrapper = document.createElement("div"); + visualWrapper.classList.add("settings_visual_wrapper"); - const progressBar = document.createElement("div"); - progressBar.classList.add("settings_slider_progress"); - visualWrapper.appendChild(progressBar); + const progressBar = document.createElement("div"); + progressBar.classList.add("settings_slider_progress"); + visualWrapper.appendChild(progressBar); - const thumb = document.createElement("div"); - thumb.classList.add("settings_slider_thumb"); - visualWrapper.appendChild(thumb); - visualWrapper.appendChild(htmlInput); + const thumb = document.createElement("div"); + thumb.classList.add("settings_slider_thumb"); + visualWrapper.appendChild(thumb); + visualWrapper.appendChild(htmlInput); - htmlInput.addEventListener("input", () => { - // calculate the difference between values, if larger than 5%, enable transition - const val = parseInt(visualWrapper.style.getPropertyValue("--visual-width").replace("%", "")); - const newVal = Math.round((htmlInput.value - htmlInput.min) / (htmlInput.max - htmlInput.min) * 100); - if(Math.abs((val - newVal) / 100) > 0.05) - { - visualWrapper.classList.add("settings_slider_transition"); - } - else - { - visualWrapper.classList.remove("settings_slider_transition"); - } - // apply the width - visualWrapper.style.setProperty("--visual-width", `${newVal}%`); - }); - visualWrapper.style.setProperty("--visual-width", `${(htmlInput.value - htmlInput.min) / (htmlInput.max - htmlInput.min) * 100}%`); - const parent = input.parentElement; - mainWrapper.appendChild(visualWrapper); - mainWrapper.appendChild(span); - parent.insertBefore(mainWrapper, input); - } - while(inputs.length > 0) + htmlInput.addEventListener("input", () => { + // calculate the difference between values, if larger than 5%, enable transition + const val = parseInt(visualWrapper.style.getPropertyValue("--visual-width").replace("%", "")); + const newVal = Math.round((htmlInput.value - htmlInput.min) / (htmlInput.max - htmlInput.min) * 100); + if(Math.abs((val - newVal) / 100) > 0.05) + { + visualWrapper.classList.add("settings_slider_transition"); + } + else + { + visualWrapper.classList.remove("settings_slider_transition"); + } + // apply the width + visualWrapper.style.setProperty("--visual-width", `${newVal}%`); + }); + visualWrapper.style.setProperty("--visual-width", `${(htmlInput.value - htmlInput.min) / (htmlInput.max - htmlInput.min) * 100}%`); + mainWrapper.appendChild(visualWrapper); + if(showSpan) { - inputs[0].parentNode.removeChild(inputs[0]); + mainWrapper.appendChild(span); } + return mainWrapper; } \ No newline at end of file diff --git a/src/website/js/soundfont_mixer.js b/src/website/js/soundfont_mixer.js index 6fd83262..b7a50fd7 100644 --- a/src/website/js/soundfont_mixer.js +++ b/src/website/js/soundfont_mixer.js @@ -76,7 +76,7 @@ export class SoundFontMixer { // compile the soundfont from first to last let soundfont = SoundFont2.mergeSoundfonts(...this.soundfontList.map(s => s.soundFont)); - this.synth.reloadSoundFont(soundfont.write()).then(); + this.synth.reloadSoundFont(soundfont.write().buffer).then(); } /** diff --git a/src/website/locale/locale_files/locale_en/export_audio.js b/src/website/locale/locale_files/locale_en/export_audio.js index 630aed46..0d420e21 100644 --- a/src/website/locale/locale_files/locale_en/export_audio.js +++ b/src/website/locale/locale_files/locale_en/export_audio.js @@ -13,7 +13,7 @@ export const exportAudio = { description: "Export the song with modifications as a .wav audio file" }, options: { - title: "Audio export options", + title: "WAV export options", confirm: "Export", normalizeVolume: { title: "Normalize volume", @@ -25,7 +25,7 @@ export const exportAudio = { } }, exportMessage: { - message: "Exporting audio...", + message: "Exporting WAV audio...", estimated: "Remaining:" } }, @@ -41,6 +41,20 @@ export const exportAudio = { button: { title: "Trimmed soundfont", description: "Export the soundfont trimmed to only use instruments and samples that the MIDI file uses" + }, + + options: { + title: "SF export options", + confirm: "Export", + compress: { + title: "Compress", + description: "Compress samples with lossy Ogg Vorbis compression if uncompressed. Significantly reduces the file size." + + "If the soundfont was already compressed, it won't be uncompressed even if this option is disabled" + }, + quality: { + title: "Compression quality", + description: "The quality of compression. Higher is better" + } } }, @@ -58,6 +72,19 @@ export const exportAudio = { modifyingSoundfont: "Trimming Soundfont...", saving: "Saving RMIDI...", done: "Done!" + }, + + options: { + title: "RMIDI export options", + confirm: "Export", + compress: { + title: "Compress", + description: "Compress the Soundfont with lossy Ogg Vorbis compression. Significantly reduces the file size. Recommended." + }, + quality: { + title: "Compression quality", + description: "The quality of compression. Higher is better." + } } } } diff --git a/src/website/locale/locale_files/locale_ja/export_audio.js b/src/website/locale/locale_files/locale_ja/export_audio.js index 22703a4f..f78efe3d 100644 --- a/src/website/locale/locale_files/locale_ja/export_audio.js +++ b/src/website/locale/locale_files/locale_ja/export_audio.js @@ -41,6 +41,19 @@ export const exportAudio = { button: { title: "トリミングされたサウンドフォント", description: "MIDIファイルで使用されている楽器とサンプルだけにトリミングされたサウンドフォントをエクスポートします" + }, + options: { + title: "SFエクスポートオプション", + confirm: "エクスポート", + compress: { + title: "圧縮", + description: "未圧縮のサンプルをOgg Vorbisのロス圧縮で圧縮します。ファイルサイズが大幅に削減されます。" + + "サウンドフォントがすでに圧縮されている場合は、このオプションを無効にしても再圧縮されることはありません" + }, + quality: { + title: "圧縮品質", + description: "圧縮の品質です。高いほど良い" + } } }, @@ -50,7 +63,6 @@ export const exportAudio = { description: "変更されたMIDIとトリミングされたサウンドフォントを1つのファイルに埋め込んでエクスポートします。 " + "この形式は広くサポートされていないことに注意してください" }, - progress: { title: "埋め込まれたMIDIをエクスポート中...", loading: "サウンドフォントとMIDIを読み込み中...", @@ -58,6 +70,18 @@ export const exportAudio = { modifyingSoundfont: "サウンドフォントをトリミング中...", saving: "RMIDIを保存中...", done: "完了しました!" + }, + options: { + title: "RMIDIエクスポートオプション", + confirm: "エクスポート", + compress: { + title: "圧縮", + description: "サウンドフォントをOgg Vorbisのロス圧縮で圧縮します。ファイルサイズが大幅に削減されます。推奨設定です。" + }, + quality: { + title: "圧縮品質", + description: "圧縮の品質です。高いほど良い" + } } } } diff --git a/src/website/locale/locale_files/locale_pl/export_audio.js b/src/website/locale/locale_files/locale_pl/export_audio.js index e580429a..508e6458 100644 --- a/src/website/locale/locale_files/locale_pl/export_audio.js +++ b/src/website/locale/locale_files/locale_pl/export_audio.js @@ -41,6 +41,20 @@ export const exportAudio = { button: { title: "Zmniejszony soundfont", description: "Eksportuj soundfont zawierający tylko klawisze użyte w MIDI" + }, + + options: { + title: "Opcje eksportu soundfonta", + confirm: "Eksportuj", + compress: { + title: "Kompresuj", + description: "Zkompresuj próbki które nie są zkompresowane przy użyciu stratnego kodeka Ogg Vorbis. Znacznie zmniejsza rozmiar pliku." + + "Jeśli soundfont był już skompresowany, nie zostanie zdekompresowany nawet gdy ta opcja jest wyłączona" + }, + quality: { + title: "Jakość kompresji", + description: "Jakość skompresowanych próbek. Im wyższa tym lepsza" + } } }, @@ -58,6 +72,19 @@ export const exportAudio = { modifyingSoundfont: "Zmniejszanie Soundfonta...", saving: "Zapisywanie RMIDI...", done: "Gotowe!" + }, + + options: { + title: "Opcje eksportu RMIDI", + confirm: "Eksportuj", + compress: { + title: "Kompresuj", + description: "Skompresuj osadzonego soundfonta za pomocą stratnego kodeka Ogg Vorbis. Znacznie zmniejsza rozmiar pliku. Zalecane." + }, + quality: { + title: "Jakość kompresji", + description: "Jakość skompresowanych próbek. Im wyższa tym lepsza" + } } } } diff --git a/src/website/manager/export_wav.js b/src/website/manager/export_audio.js similarity index 71% rename from src/website/manager/export_wav.js rename to src/website/manager/export_audio.js index b6a33800..06b6aebb 100644 --- a/src/website/manager/export_wav.js +++ b/src/website/manager/export_audio.js @@ -12,7 +12,7 @@ const RENDER_AUDIO_TIME_INTERVAL = 1000; * @returns {Promise} * @private */ -export async function _doExporWav(normalizeAudio = true, additionalTime = 2) +export async function _doExportAudioData(normalizeAudio = true, additionalTime = 2) { this.isExporting = true; if(!this.seq) @@ -20,8 +20,8 @@ export async function _doExporWav(normalizeAudio = true, additionalTime = 2) throw new Error("No sequencer active"); } // get locales - const exportingMessage = manager.localeManager.getLocaleString("locale.exportAudio.formats.formats.wav.exportMessage.message"); - const estimatedMessage = manager.localeManager.getLocaleString("locale.exportAudio.formats.formats.wav.exportMessage.estimated"); + const exportingMessage = manager.localeManager.getLocaleString(`locale.exportAudio.formats.formats.wav.exportMessage.message`); + const estimatedMessage = manager.localeManager.getLocaleString(`locale.exportAudio.formats.formats.wav.exportMessage.estimated`); const notification = showNotification( exportingMessage, [ @@ -108,7 +108,7 @@ export async function _doExporWav(normalizeAudio = true, additionalTime = 2) // clear intervals and save file clearInterval(interval); closeNotification(notification.id); - this.saveBlob(audioBufferToWav(buf, normalizeAudio), `${window.manager.seq.midiData.midiName || 'unnamed_song'}.wav`) + this.saveBlob(audioBufferToWav(buf, normalizeAudio), `${this.seq.midiData.midiName || 'unnamed_song'}.wav`); this.isExporting = false; } @@ -117,43 +117,51 @@ export async function _doExporWav(normalizeAudio = true, additionalTime = 2) * @returns {Promise} * @private */ -export async function _exportWav() +export async function _exportAudioData() { if(this.isExporting) { return; } - const path = "locale.exportAudio.formats.formats.wav.options."; - showNotification( - this.localeManager.getLocaleString(path + "title"), - [ - { - type: "toggle", - translatePathTitle: path + "normalizeVolume", - attributes: { - "normalize-volume-toggle": "1", - "checked": "true" - } - }, - { - type: "input", - translatePathTitle: path + "additionalTime", - attributes: { - "value": "2", - "type": "number" - } - }, - { - type: "button", - textContent: this.localeManager.getLocaleString(path + "confirm"), - onClick: n => { - closeNotification(n.id); - const normalizeVolume = n.div.querySelector("input[normalize-volume-toggle='1']").checked; - const additionalTime = n.div.querySelector("input[type='number']").value; - this._doExportWav(normalizeVolume, parseInt(additionalTime)); - } + const wavPath = `locale.exportAudio.formats.formats.wav.options.`; + /** + * @type {NotificationContent[]} + */ + const WAV_OPTIONS = [ + { + type: "toggle", + translatePathTitle: wavPath + "normalizeVolume", + attributes: { + "normalize-volume-toggle": "1", + "checked": "true" } - ], + }, + { + type: "input", + translatePathTitle: wavPath + "additionalTime", + attributes: { + "value": "2", + "type": "number" + } + }, + { + type: "button", + textContent: this.localeManager.getLocaleString(wavPath + "confirm"), + onClick: n => { + closeNotification(n.id); + const normalizeVolume = n.div.querySelector("input[normalize-volume-toggle='1']").checked; + const additionalTime = n.div.querySelector("input[type='number']").value; + this._doExportAudioData(normalizeVolume, parseInt(additionalTime)); + } + } + ]; + + /** + * @type {NotificationContent[]} + */ + showNotification( + this.localeManager.getLocaleString(wavPath + "title"), + WAV_OPTIONS, 9999999, true, this.localeManager diff --git a/src/website/manager/export_rmidi.js b/src/website/manager/export_rmidi.js index 8004e6c6..6a011052 100644 --- a/src/website/manager/export_rmidi.js +++ b/src/website/manager/export_rmidi.js @@ -1,8 +1,8 @@ import { SoundFont2 } from '../../spessasynth_lib/soundfont/soundfont.js' -import { getTrimmedSoundfont } from '../../spessasynth_lib/soundfont/write/soundfont_trimmer.js' +import { trimSoundfont } from '../../spessasynth_lib/soundfont/write/soundfont_trimmer.js' import { applySnapshotToMIDI } from '../../spessasynth_lib/midi_parser/midi_editor.js' import { closeNotification, showNotification } from '../js/notification/notification.js' -import { SpessaSynthGroupCollapsed, SpessaSynthGroupEnd } from '../../spessasynth_lib/utils/loggin.js' +import { SpessaSynthGroup, SpessaSynthGroupCollapsed, SpessaSynthGroupEnd } from '../../spessasynth_lib/utils/loggin.js' import { consoleColors } from '../../spessasynth_lib/utils/other.js' import { writeRMIDI } from '../../spessasynth_lib/midi_parser/rmidi_writer.js' @@ -13,44 +13,81 @@ import { writeRMIDI } from '../../spessasynth_lib/midi_parser/rmidi_writer.js' */ export async function _exportRMIDI() { - SpessaSynthGroupCollapsed("%cExporting RMIDI...", - consoleColors.info); - const localePath = "locale.exportAudio.formats.formats.rmidi.progress."; - const notification = showNotification( - this.localeManager.getLocaleString(localePath + "title"), - [{ - type: "text", - textContent: this.localeManager.getLocaleString(localePath + "loading"), - attributes: { - "class": "export_rmidi_message" - } - }], - 9999999, - false - ); - // allow the notification to show - await new Promise(r => setTimeout(r, 500)); - const message = notification.div.getElementsByClassName("export_rmidi_message")[0]; - const mid = await this.seq.getMIDI(); - const font = new SoundFont2(mid.embeddedSoundFont || this.soundFont); + const path = "locale.exportAudio.formats.formats.rmidi.options."; + showNotification( + this.localeManager.getLocaleString(path + "title"), + [ + { + type: "toggle", + translatePathTitle: path + "compress", + attributes: { + "compress-toggle": "1", + "checked": "true" + } + }, + { + type: "range", + translatePathTitle: path + "quality", + attributes: { + "min": "0", + "max": "10", + "value": "5" + } + }, + { + type: "button", + textContent: this.localeManager.getLocaleString(path + "confirm"), + onClick: async n => { + const compressed = n.div.querySelector("input[compress-toggle='1']").checked; + const quality = parseInt(n.div.querySelector("input[type='range']").value) / 10; + closeNotification(n.id); + + SpessaSynthGroupCollapsed("%cExporting RMIDI...", + consoleColors.info); + const localePath = "locale.exportAudio.formats.formats.rmidi.progress."; + const notification = showNotification( + this.localeManager.getLocaleString(localePath + "title"), + [{ + type: "text", + textContent: this.localeManager.getLocaleString(localePath + "loading"), + attributes: { + "class": "export_rmidi_message" + } + }], + 9999999, + false + ); + // allow the notification to show + await new Promise(r => setTimeout(r, 500)); + const message = notification.div.getElementsByClassName("export_rmidi_message")[0]; + const mid = await this.seq.getMIDI(); + const font = new SoundFont2(mid.embeddedSoundFont || this.soundFont); - message.textContent = this.localeManager.getLocaleString(localePath + "modifyingMIDI"); - await new Promise(r => setTimeout(r, 10)); + message.textContent = this.localeManager.getLocaleString(localePath + "modifyingMIDI"); + await new Promise(r => setTimeout(r, 10)); - applySnapshotToMIDI(mid, await this.synth.getSynthesizerSnapshot()); + applySnapshotToMIDI(mid, await this.synth.getSynthesizerSnapshot()); - message.textContent = this.localeManager.getLocaleString(localePath + "modifyingSoundfont"); - await new Promise(r => setTimeout(r, 10)); + message.textContent = this.localeManager.getLocaleString(localePath + "modifyingSoundfont"); + await new Promise(r => setTimeout(r, 10)); - const newFont = getTrimmedSoundfont(font, mid); + trimSoundfont(font, mid); + const newFont = font.write({compress: compressed, compressionQuality: quality}); - message.textContent = this.localeManager.getLocaleString(localePath + "saving"); - await new Promise(r => setTimeout(r, 10)); + message.textContent = this.localeManager.getLocaleString(localePath + "saving"); + await new Promise(r => setTimeout(r, 10)); - const rmidBinary = writeRMIDI(newFont, mid, font); - const blob = new Blob([rmidBinary.buffer], {type: "audio/rmid"}) - this.saveBlob(blob, `${mid.midiName || "unnamed_song"}.rmi`); - message.textContent = this.localeManager.getLocaleString(localePath + "done"); - closeNotification(notification.id); - SpessaSynthGroupEnd(); + const rmidBinary = writeRMIDI(newFont, mid, font); + const blob = new Blob([rmidBinary.buffer], {type: "audio/rmid"}) + this.saveBlob(blob, `${mid.midiName || "unnamed_song"}.rmi`); + message.textContent = this.localeManager.getLocaleString(localePath + "done"); + closeNotification(notification.id); + SpessaSynthGroupEnd(); + } + } + ], + 9999999, + true, + this.localeManager + ) } \ No newline at end of file diff --git a/src/website/manager/export_song.js b/src/website/manager/export_song.js index 4408570f..b6233b60 100644 --- a/src/website/manager/export_song.js +++ b/src/website/manager/export_song.js @@ -15,7 +15,7 @@ export async function exportSong() translatePathTitle: path + "formats.wav.button", onClick: n => { closeNotification(n.id); - this._exportWav(); + this._exportAudioData(); } }, { @@ -71,6 +71,11 @@ export async function exportSong() ], 999999, true, - this.localeManager + this.localeManager, + { + display: "flex", + flexWrap: "wrap", + justifyContent: "center" + } ) } \ No newline at end of file diff --git a/src/website/manager/export_soundfont.js b/src/website/manager/export_soundfont.js index e4a311d0..5936bd0f 100644 --- a/src/website/manager/export_soundfont.js +++ b/src/website/manager/export_soundfont.js @@ -5,7 +5,8 @@ import { SpessaSynthGroupEnd, } from '../../spessasynth_lib/utils/loggin.js' import { consoleColors } from '../../spessasynth_lib/utils/other.js' -import { getTrimmedSoundfont } from '../../spessasynth_lib/soundfont/write/soundfont_trimmer.js' +import { trimSoundfont } from '../../spessasynth_lib/soundfont/write/soundfont_trimmer.js' +import { closeNotification, showNotification } from '../js/notification/notification.js' /** * @this {Manager} @@ -14,14 +15,49 @@ import { getTrimmedSoundfont } from '../../spessasynth_lib/soundfont/write/sound */ export async function _exportSoundfont() { - SpessaSynthGroup("%cExporting minified soundfont...", - consoleColors.info); - const mid = await this.seq.getMIDI(); - const soundfont = new SoundFont2(mid.embeddedSoundFont || this.soundFont); - applySnapshotToMIDI(mid, await this.synth.getSynthesizerSnapshot()); - const binary = getTrimmedSoundfont(soundfont, mid); - const blob = new Blob([binary.buffer], {type: "audio/soundfont"}); - let extension = soundfont.soundFontInfo["ifil"].split(".")[0] === "3" ? "sf3" : "sf2"; - this.saveBlob(blob, `${soundfont.soundFontInfo['INAM'] || "unnamed"}.${extension}`); - SpessaSynthGroupEnd(); + const path = "locale.exportAudio.formats.formats.soundfont.options."; + showNotification( + this.localeManager.getLocaleString(path + "title"), + [ + { + type: "toggle", + translatePathTitle: path + "compress", + attributes: { + "compress-toggle": "1", + } + }, + { + type: "range", + translatePathTitle: path + "quality", + attributes: { + "min": "0", + "max": "10", + "value": "5" + } + }, + { + type: "button", + textContent: this.localeManager.getLocaleString(path + "confirm"), + onClick: async n => { + const compressed = n.div.querySelector("input[compress-toggle='1']").checked; + const quality = parseInt(n.div.querySelector("input[type='range']").value) / 10; + closeNotification(n.id); + SpessaSynthGroup("%cExporting minified soundfont...", + consoleColors.info); + const mid = await this.seq.getMIDI(); + const soundfont = new SoundFont2(mid.embeddedSoundFont || this.soundFont); + applySnapshotToMIDI(mid, await this.synth.getSynthesizerSnapshot()); + trimSoundfont(soundfont, mid); + const binary = soundfont.write({compress: compressed, compressionQuality: quality}); + const blob = new Blob([binary.buffer], {type: "audio/soundfont"}); + let extension = soundfont.soundFontInfo["ifil"].split(".")[0] === "3" ? "sf3" : "sf2"; + this.saveBlob(blob, `${soundfont.soundFontInfo['INAM'] || "unnamed"}.${extension}`); + SpessaSynthGroupEnd(); + } + } + ], + 99999999, + true, + this.localeManager + ); } \ No newline at end of file diff --git a/src/website/manager/manager.js b/src/website/manager/manager.js index 5a1a70e2..5d48a413 100644 --- a/src/website/manager/manager.js +++ b/src/website/manager/manager.js @@ -14,7 +14,7 @@ import { LocaleManager } from '../locale/locale_manager.js' import { isMobile } from '../js/utils/is_mobile.js' import { SpessaSynthInfo } from '../../spessasynth_lib/utils/loggin.js' import { keybinds } from '../js/keybinds.js' -import { _doExporWav, _exportWav } from './export_wav.js' +import { _doExportAudioData, _exportAudioData } from './export_audio.js' import { exportMidi } from './export_midi.js' import { _exportSoundfont } from './export_soundfont.js' import { exportSong } from './export_song.js' @@ -51,7 +51,7 @@ class Manager /** * Creates a new midi user interface. - * @param context {BaseAudioContext} + * @param context {AudioContext} * @param soundFontBuffer {ArrayBuffer} * @param locale {LocaleManager} */ @@ -324,8 +324,8 @@ class Manager } } Manager.prototype.exportSong = exportSong; -Manager.prototype._exportWav = _exportWav; -Manager.prototype._doExportWav = _doExporWav; +Manager.prototype._exportAudioData = _exportAudioData; +Manager.prototype._doExportAudioData = _doExportAudioData; Manager.prototype.exportMidi = exportMidi; Manager.prototype._exportSoundfont = _exportSoundfont; Manager.prototype._exportRMIDI = _exportRMIDI;