diff --git a/.gitignore b/.gitignore
index e83b23c..a8f1add 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
.DS_Store
notes.txt
+metadata.csv
.gb
.gbc
.map
diff --git a/Archive.zip b/Archive.zip
deleted file mode 100644
index 900c353..0000000
Binary files a/Archive.zip and /dev/null differ
diff --git a/README.md b/README.md
index f02fe6b..c46f668 100644
--- a/README.md
+++ b/README.md
@@ -1,19 +1,25 @@
# GBNP: Game Boy Nintendo Power ROM Builder
+
+
This tool can build the data necessary to flash new games to a [Nintendo Power Game Boy cart](https://en.wikipedia.org/wiki/Nintendo_Power_(cartridge)). The cartridge can store up to seven roms, or a total of 896KB of game data. For flashing, I recommend the [GBxCart](https://www.gbxcart.com/).
+## Features
+- Original menu built in, no need to provide ROM
+- Add up to seven games depending on their sizes
+- Five different font options for menu entry, including a JP font similar to the original
+- Load data from a previously created rom
+- Built in romhack options, including an english translation patch
+- Generate single rom MAP files for 1MB games
+
## Credits
- GB Memory Maker: https://github.com/Infinest/GB-Memory-Binary-Maker
- Without this source, this project would have been much more difficult!
- NesDev Forum Thread: http://forums.nesdev.com/viewtopic.php?f=12&t=11453
-- Pixeltype Font: https://www.dafont.com/pixeltype.font
- Early GameBoy Font: https://www.dafont.com/early-gameboy.font
+- Pokemon GB Font: https://www.fontspace.com/pokemon-gb-font-f9621
- Nokia Cellphone FC Font: https://www.dafont.com/nokia-cellphone.font
-- Gamer Font: https://www.dafont.com/gamer-2.font
-
-## Ideas
-- Move more templating into components
-- Add ability to upload arbitrary 96x8 images for menu entries
-- Save settings to local storage
-- A setting to change scrolling ticker text
-- Other romhacks to the menu?
+- NP GBメモリ (DMG-MMSA) Font
+ - This is an attempt at reproducing the original font used on the GB Memory cartridge. Since the font is not stored in the rom, [Lesserkuma](https://github.com/lesserkuma) has been working to recreate the font by studying cartridge dumps. The font started life as the one used in the JP Game Boy game "Kaeru no Tame ni Kane wa Naru", and has been tweaked to closly resemble the original GB Memory font! Special thanks to Lesserkuma for their hard work!
+- TWL-IRAJ-1 Font
+ - A font with support for narrow alphanumeric characters as well as Japanese characters including most Kanji. Suitable for long game titles. Based on a font used in Pokémon Black and White, this font was also created by [Lesserkuma](https://github.com/lesserkuma).
diff --git a/data_scripts.rb b/data_scripts.rb
new file mode 100644
index 0000000..256dee4
--- /dev/null
+++ b/data_scripts.rb
@@ -0,0 +1,39 @@
+# hex to byte array JS syntax string
+# INPUT = "".gsub(" ", '')
+# output = "["
+# INPUT.chars.each_slice(2) do |pair|
+# output << "\"#{pair.join.to_i(16).to_s}\","
+# end
+# puts "#{output[0...-1]}]"
+
+# RLE encode byte array
+# INPUT = []
+# INPUT << "TERM" # terminate the algorithm cleanly
+# output = "["
+# current_val = INPUT.first
+# current_count = 0
+# INPUT.each do |val|
+# if current_val != val
+# if current_count == 1
+# output << "#{current_val},"
+# else
+# output << "[#{current_val},#{current_count}],"
+# end
+# current_val = val
+# current_count = 0
+# end
+# current_count += 1
+# end
+# puts "#{output[0...-1]}]"
+
+# convert metadata into title -> code map
+require 'csv'
+map = {}
+output = "TITLE_TO_CODE = {"
+CSV.foreach("metadata.csv", headers: true) do |row|
+ next if row['ROM Size'] =~ /M/
+ map[row['Internal Title']&.gsub(' ', '')&.upcase] = row['Code']
+end
+output += map.map { |k, v| "\"#{k}\":\"#{v}\"" }.join(',')
+output += '};'
+puts output
diff --git a/font/DMG-MMSA.woff b/font/DMG-MMSA.woff
new file mode 100644
index 0000000..d9c917a
Binary files /dev/null and b/font/DMG-MMSA.woff differ
diff --git a/font/Gamer.woff b/font/Gamer.woff
deleted file mode 100644
index 3666f02..0000000
Binary files a/font/Gamer.woff and /dev/null differ
diff --git a/font/Pixeltype.woff b/font/Pixeltype.woff
deleted file mode 100644
index 224c1a4..0000000
Binary files a/font/Pixeltype.woff and /dev/null differ
diff --git a/font/Pokemon.woff b/font/Pokemon.woff
new file mode 100644
index 0000000..2facaac
Binary files /dev/null and b/font/Pokemon.woff differ
diff --git a/font/TWL-IRAJ-1.woff b/font/TWL-IRAJ-1.woff
new file mode 100644
index 0000000..cb923fa
Binary files /dev/null and b/font/TWL-IRAJ-1.woff differ
diff --git a/games.html b/games.html
new file mode 100644
index 0000000..0a64340
--- /dev/null
+++ b/games.html
@@ -0,0 +1,79 @@
+
+
+
+
+ Game Boy Nintendo Power ROM Builder
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Back to ROM Builder
+ Here are some favorite/well-known games that fit nicely on the Nintendo Power Cart. Remember, you get 7 blocks total!
+
+
+
+
4 Blocks (512KB)
+
+
+ Donkey Kong
+ Donkey Kong Land 1, 2, & 3
+ Kirby's Dream Land 2
+ Mario Picross 2
+ Mega Man IV & V
+ Mole Mania
+ Pokemon Red/Green (JP Only)
+ Super Mario Land 2 & 3
+ Tetris DX
+ Zelda: Link's Awakening (Not DX)
+
+
+
+
+
2 Blocks (256KB)
+
+
+ Bionic Commando
+ Kid Dracula
+ Kirby's Dream Land
+ Mario's Picross
+ Mega Man I, II, & III
+ Metroid II: Return of Samus
+ Trip World
+
+
+
+
+
1 Block (128KB or less)
+
+
+ Cave Noire
+ Dr. Mario
+ F-1 Race
+ Gargoyle's Quest
+ Solar Striker
+ Super Mario Land
+ Tetris
+
+
+
+
+
+
+
+
diff --git a/img/english_patch_comparison.png b/img/english_patch_comparison.png
new file mode 100644
index 0000000..1a2a687
Binary files /dev/null and b/img/english_patch_comparison.png differ
diff --git a/img/favicon.png b/img/favicon.png
new file mode 100644
index 0000000..0dec74a
Binary files /dev/null and b/img/favicon.png differ
diff --git a/img/gbnp.png b/img/gbnp.png
new file mode 100644
index 0000000..f716825
Binary files /dev/null and b/img/gbnp.png differ
diff --git a/img/menu_comparison.png b/img/menu_comparison.png
index d8f6e9a..28d634a 100644
Binary files a/img/menu_comparison.png and b/img/menu_comparison.png differ
diff --git a/img/ticker_logo.png b/img/ticker_logo.png
new file mode 100644
index 0000000..2e11634
Binary files /dev/null and b/img/ticker_logo.png differ
diff --git a/index.html b/index.html
index daf4c1b..de3c187 100644
--- a/index.html
+++ b/index.html
@@ -3,55 +3,45 @@
Game Boy Nintendo Power ROM Builder
+
+
+
+
+
+
+
+
+
+
+
-
+
- GAME BOY Nintendo Power ROM Builder
+
- This tool can build the data necessary to flash new games to a
Nintendo Power Game Boy cart . The cartridge can store up to seven roms, or a total of 896KB of game data. For flashing, I recommend the
GBxCart .
+ This tool can build the data necessary to flash new games to a
Nintendo Power Game Boy cart , as well as the
insideGadgets Power Cart . The menu can have up to seven roms, or a total of 896KB of game data. You can also flash a single 1MB ROM, like
LSDJ , using the generated MAP file. For flashing, I recommend the
GBxCart .
+
+
+ Not sure what to flash? Check out
this list of favorite/well-known games that fit into the menu !
Looks like you have JS disabled. This tool needs javascript to function!
-
- 1. Upload Menu ROM
- ✓
- ✗
-
+
1. Add Game ROMs
-
-
Menu is not loaded. Please upload GB Memory Multi Menu (NP M-MENU) ROM.
-
-
-
Menu is not valid. Please upload GB Memory Multi Menu (NP M-MENU) ROM.
-
-
-
Menu loaded from storage! You're all set.
-
-
-
Menu loaded and cached! You're all set.
-
-
- Upload Menu
-
-
-
-
-
- 2. Add Game ROMs
- ✓
- ✗
-
-
-
+
+
+
+
Drag and drop one or more ROMs to get started!
+
- or -
+
+
+ Add Games
+
+
+
+
+ Load GBNP ROM
+
+
+
+
- 3. Tweak Settings
+ 2. Tweak Settings
- 4. Download Files
+ 3. Download Files
@@ -155,6 +198,8 @@
view this project on github
-
by orangeglo (orangeglo#6197 on Discord)
+ -
+ more tools @ orangeglo.github.io
diff --git a/script/app.js b/script/app.js
index 6c38f89..ca83f9e 100644
--- a/script/app.js
+++ b/script/app.js
@@ -1,3 +1,63 @@
+const parseBool = (boolString) => {
+ return boolString.toLowerCase() === 'true';
+};
+
+Vue.component('bitmap-preview', {
+ props: ['data'],
+ mounted: function() {
+ this.renderCanvas();
+ },
+ watch: {
+ data: function() {
+ this.renderCanvas();
+ }
+ },
+ methods: {
+ renderCanvas: function() {
+ let canvas = this.$refs.canvas;
+ const ctx = canvas.getContext('2d');
+ ctx.putImageData(new ImageData(this.data, 128, 8), 0, 0);
+ ctx.imageSmoothingEnabled = false;
+ ctx.scale(2, 2);
+ ctx.drawImage(ctx.canvas, 0, 0);
+ ctx.setTransform(1, 0, 0, 1, 0, 0);
+ }
+ },
+ template: ' '
+});
+
+Vue.component('ticker-settings', {
+ props: ['processor', 'fontsLoaded', 'fontIndex', 'show'],
+ data: function() {
+ return ({
+ text: "Created with GBNP on " + (new Date).toISOString().slice(0, 10)
+ });
+ },
+ methods: {
+ updateBitmap: function() {
+ const bitmap = (new TickerText(this.text, this.fontIndex, this.$refs.canvas)).generate()
+ this.processor.tickerBitmap = bitmap;
+ }
+ },
+ watch: {
+ fontIndex: function() { this.updateBitmap() },
+ fontsLoaded: function () { this.updateBitmap() },
+ text: function() { this.updateBitmap() }
+ },
+ template: `
+
+
+
+
+
+
+
+
+
+
+ `
+});
+
let app = new Vue({
el: '#app',
data: {
@@ -7,72 +67,125 @@ let app = new Vue({
filename: 'GBNP',
mapData: '',
romData: '',
+ singleRomMapData: '',
fontIndex: 0,
- disableCGB: false,
- forceDMG: false
+ forceDMG: false,
+ englishPatch: false,
+ cartType: 0,
+ tickerType: 1,
+ fontsLoaded: false,
},
created: function() {
+ this.loadSettingsFromStorage();
+
this.processor.menu = this.menu;
- this.processor.disableCGB = this.disableCGB;
+ this.processor.tickerText = this.tickerText;
this.processor.forceDMG = this.forceDMG;
+ this.processor.englishPatch = this.englishPatch;
+ this.processor.tickerType = this.tickerType;
+
+ if (window.location.search.substr(1).toLowerCase() == 'ig') {
+ this.cartType = 1;
+ }
+
+ window.addEventListener('error', (e) => {
+ alert("Whoops, some sort of exception occured! Open an issue in the GitHub repo to tell me what happened, or message me on Discord (info in footer).")
+ });
},
computed: {
downloadEnabled: function() {
- return (this.roms.length > 0) && this.menu.present() && this.menu.valid() && !this.romOverflow;
+ return this.menu.present() && !this.romOverflow;
},
- romOverflow: function() { return this.processor.romOverflow(); }
+ mapEnabled: function() {
+ return this.cartType == 0;
+ },
+ romOverflow: function() { return this.processor.romOverflow(); },
+ overflowClassMsg: function() {
+ if (this.processor.roms.length === 1 && this.processor.roms[0].paddedRomSizeKB() === 1024) {
+ return { class: 'single-rom', msg: "Game only (no menu)" };
+ } else if (this.romOverflow) {
+ return { class: 'overflow', msg: "Limit is 7 blocks" };
+ }
+ return { class: null, msg: null };
+ },
+ singleRomMapEnabled: function() {
+ return this.mapEnabled
+ && this.processor.roms.length === 1
+ && this.processor.roms[0].paddedRomSizeKB() <= 1024;
+ },
+ singleRomFilename: function() {
+ return this.processor.roms[0] ? this.processor.roms[0].title : '';
+ }
},
watch: {
- fontIndex: function() {
- for (let i = 0; i < this.roms.length; i++) { this.roms[i].updateBitmap(this.fontIndex); }
- },
- disableCGB: function() {
- this.processor.disableCGB = this.disableCGB;
- },
+ roms: function() { this.processor.roms = this.roms; },
forceDMG: function() {
this.processor.forceDMG = this.forceDMG;
- }
+ this.writeSettingsToStorage();
+ },
+ cartType: function() {
+ this.processor.cartType = this.cartType;
+ this.writeSettingsToStorage();
+ },
+ englishPatch: function() {
+ this.processor.englishPatch = this.englishPatch;
+ this.writeSettingsToStorage();
+ },
+ tickerType: function() {
+ this.processor.tickerType = this.tickerType;
+ this.writeSettingsToStorage();
+ },
+ fontIndex: function() {
+ for (let i = 0; i < this.roms.length; i++) { this.roms[i].updateBitmap(this.fontIndex); }
+ this.writeSettingsToStorage();
+ },
},
methods: {
addMenu: function(e) {
let fileReader = new FileReader()
- fileReader.onload = () => this.menu.setData(fileReader.result);
+ fileReader.onload = () => {
+ const parsedRoms = this.processor.parseMenuData(fileReader.result, this.fontIndex);
+ if (parsedRoms.length > 0) { this.roms = parsedRoms; }
+ }
fileReader.readAsArrayBuffer(e.target.files[0]);
e.target.value = '';
},
- addROM: function(e) {
- let fileReader = new FileReader()
- fileReader.onload = () => this.roms.push(new ROM(fileReader.result, this.fontIndex));
- for (let i = 0; i < e.target.files.length; i++){
- fileReader.readAsArrayBuffer(e.target.files[i]);
- }
- this.processor.roms = this.roms;
-
- e.target.value = '';
+ if (e) { e.target.value = ''; }
},
removeROM: function(index) {
this.roms.splice(index, 1);
- this.processor.roms = this.roms;
+ },
+ removeAllRoms: function() {
+ this.roms = [];
},
moveUp: function(index) {
let rom = this.roms[index];
this.roms.splice(index, 1);
this.roms.splice(index - 1, 0, rom);
- this.processor.roms = this.roms;
},
moveDown: function(index) {
let rom = this.roms[index];
this.roms.splice(index, 1);
this.roms.splice(index + 1, 0, rom);
- this.processor.roms = this.roms;
},
downloadMapFile: function(e) {
- if (this.mapData) { URL.revokeObjectURL(this.mapData) }
- this.mapData = URL.createObjectURL(new Blob([this.processor.mapData()]));
+ this.processor.roms = this.roms; // in case they got out of sync
+ if (this.cartType == 0) { // regular power cart only
+ if (this.mapData) { URL.revokeObjectURL(this.mapData) }
+ this.mapData = URL.createObjectURL(new Blob([this.processor.mapData()]));
+ }
+ },
+ downloadSingleRomMapFile: function(e) {
+ this.processor.roms = this.roms; // in case they got out of sync
+ if (this.cartType == 0) { // regular power cart only
+ if (this.singleRomMapData) { URL.revokeObjectURL(this.singleRomMapData) }
+ this.singleRomMapData = URL.createObjectURL(new Blob([this.processor.mapData(true)]));
+ }
},
downloadRomFile: function(e) {
+ this.processor.roms = this.roms; // in case they got out of sync
if (this.romData) { URL.revokeObjectURL(this.romData) }
this.romData = URL.createObjectURL(new Blob([this.processor.romData()]));
},
@@ -82,55 +195,34 @@ let app = new Vue({
rom.updateMenuText(val, this.fontIndex);
}, 500);
},
- stopPropagation: function(e) { e.stopImmediatePropagation(); },
+ dropFile: function(e) {
+ this.addROM(null, e.dataTransfer.files);
+ e.target.classList.remove('over')
+ e.preventDefault();
+ },
+ writeSettingsToStorage: function () {
+ window.localStorage.setItem('fontIndex', this.fontIndex);
+ window.localStorage.setItem('forceDMG', this.forceDMG);
+ window.localStorage.setItem('englishPatch', this.englishPatch);
+ window.localStorage.setItem('cartType', this.cartType);
+ window.localStorage.setItem('tickerType', this.tickerType);
+ },
+ loadSettingsFromStorage: function() {
+ const fontIndex = window.localStorage.getItem('fontIndex');
+ const forceDMG = window.localStorage.getItem('forceDMG');
+ const englishPatch = window.localStorage.getItem('englishPatch');
+ const cartType = window.localStorage.getItem('cartType');
+ const tickerType = window.localStorage.getItem('tickerType');
+
+ if (fontIndex) { this.fontIndex = parseInt(fontIndex); }
+ if (forceDMG) { this.forceDMG = parseBool(forceDMG); }
+ if (englishPatch) { this.englishPatch = parseBool(englishPatch); }
+ if (cartType) { this.cartType = parseInt(cartType); }
+ if (tickerType) { this.tickerType = parseInt(tickerType); }
+ },
triggerAddMenuLabel: function(e) { this.$refs.addMenuLabel.click(); },
- triggerAddRomLabel: function(e) { this.$refs.addRomLabel.click(); }
+ triggerAddRomLabel: function(e) { this.$refs.addRomLabel.click(); },
+ stopPropagation: function(e) { e.stopImmediatePropagation(); },
+ preventDefault: function(e) { e.preventDefault(); },
}
});
-
-Vue.component('bitmap-preview', {
- props: ['data', 'rom', 'index'],
- mounted: function() {
- this.renderCanvas();
- console.log(this.rom.title);
- },
- watch: {
- data: function() {
- this.renderCanvas();
- }
- },
- methods: {
- renderCanvas: function() {
- const canvas = this.$refs.canvas;
- const ctx = canvas.getContext('2d');
- ctx.putImageData(new ImageData(this.data, 96, 8), 0, 0);
- ctx.imageSmoothingEnabled = false;
- ctx.scale(2, 2);
- ctx.drawImage(ctx.canvas, 0, 0);
- ctx.setTransform(1, 0, 0, 1, 0, 0);
- },
- addImage: function(e) {
- const rom = this.rom;
- const imageReader = new FileReader();
- imageReader.onload = function(e) {
- const img = new Image();
- img.addEventListener("load", function(e) {
- rom.updateBitmap(null, e.target);
- });
- img.src = e.target.result;
- };
- imageReader.readAsDataURL(e.target.files[0]);
- },
- triggerAddImageLabel: function () { this.$refs.addImageLabel.click(); },
- stopPropagation: function(e) { app.stopPropagation(e); }
- },
- template: `
-
-
-
- Upload
-
-
-
`
-});
-
diff --git a/script/gbnp.js b/script/gbnp.js
index 29c41e4..1e33782 100644
--- a/script/gbnp.js
+++ b/script/gbnp.js
@@ -12,21 +12,25 @@ const BITMAP_PREVIEW_BYTES = [
[0xBB, 0xBB, 0xBB, 0xFF], // light grey
[0x66, 0x66, 0x66, 0xFF], // dark grey
[0x00, 0x00, 0x00, 0xFF] // black
-]
+];
const FONTS = [
- { style: 'normal 16px Pixeltype', y: 7 },
{ style: 'normal 8px Gameboy', y: 7 },
+ { style: 'normal 8px PokemonGB', y: 7 },
{ style: 'normal 8px Nokia', y: 7 },
- { style: 'normal 16px Gamer', y: 7 }
-]
+ { style: 'normal 8px DMG-MMSA', y: 7 },
+ { style: 'normal 8px TWL-IRAJ-1', y: 7 },
+];
+const MENU_TITLE_CHECK = 'NP M-MENU';
class Menu {
constructor() {
this.data = null;
const menuData = localStorage.getItem('menuData');
if (menuData) {
- this.loadedFromStorage = true;
this.data = JSON.parse(menuData).data;
+ console.log("Menu data loaded from storage")
+ } else {
+ this.loadMenuDataFromScript();
}
}
@@ -34,25 +38,18 @@ class Menu {
return !!this.data
}
- valid() {
- if (!this._valid && this.data) {
- let title = String.fromCharCode(...this.data.slice(308, 317));
- this._valid = (title == 'NP M-MENU');
- }
-
- return this._valid || false;
- }
-
- ready() {
- return this.present() && this.valid();
- }
-
setData(arrayBuffer) {
- this._valid = null;
this.data = new Uint8Array(arrayBuffer);
- if (this.valid()) {
- localStorage.setItem('menuData', JSON.stringify({ data: Array.from(this.data) }));
- }
+ localStorage.setItem('menuData', JSON.stringify({ data: Array.from(this.data) }));
+ console.log("Menu data loaded from script")
+ }
+
+ loadMenuDataFromScript() {
+ const head = document.getElementsByTagName('head')[0];
+ const menuScript = document.createElement('script');
+ menuScript.src = 'script/menu.js';
+
+ head.appendChild(menuScript);
}
}
@@ -61,29 +58,43 @@ class ROM {
let file = new FileSeeker(arrayBuffer);
file.seek(0x134);
- this.title = String.fromCharCode(...file.read(0xF)).replace(/\0/g, '');
+ this.title = String.fromCharCode(...file.read(0xF)).replace(/\0/g, '').trim();
this.menuText = this.title;
file.seek(0x143);
- let cgbByte = file.readByte();
+ const cgbByte = file.readByte();
this.cgb = cgbByte == 0x80 || cgbByte == 0xC0;
+ this.code = `${cgbByte == 0xC0 ? 'CGB' : 'DMG'} -??? - `; // default code
+ if (typeof TITLE_TO_CODE === 'object' && TITLE_TO_CODE[this.title.replace(/ /g, '')]) {
+ const code = TITLE_TO_CODE[this.title.replace(/ /g, '')];
+ this.code = `${code.slice(0, 3)} ${code.slice(3)} - `.slice(0, 12);
+ }
+
file.seek(0x147);
this.typeByte = file.readByte();
this.type = CARTRIDGE_TYPES[this.typeByte];
this.romByte = file.readByte();
this.ramByte = file.readByte();
+ this.updateBitmap(fontIndex);
+
file.rewind();
this.arrayBuffer = new ArrayBuffer(this.paddedRomSizeKB() * 1024);
let paddedFile = new FileSeeker(this.arrayBuffer);
- paddedFile.writeBytes(file.read(file.size()));
- this.updateBitmap(fontIndex);
+ if (file.size() > this.arrayBuffer.byteLength) {
+ if (!this.isMenu()) {
+ alert(`Error with ${this.title}!\nROM header size is smaller than the file size!`);
+ }
+ this.bad = true;
+ return;
+ } else {
+ paddedFile.writeBytes(file.read(file.size()));
+ }
- if (!this.valid()) { alert('File is not a valid Game Boy ROM!') }
- if (!this.type) { alert('Cartridge type could not be determined!') }
- if (this.ramSizeKB() > 32) { alert('Game requires more than 32 KB of RAM!') }
+ if (!this.valid()) { alert('File is not a valid Game Boy ROM!'); this.bad = true; }
+ else if (!this.type) { alert(`Error with ${this.title}!\nCartridge type could not be determined!`); this.bad = true; }
}
valid() {
@@ -111,6 +122,15 @@ class ROM {
return Math.trunc(Math.pow(4, this.ramByte - 1)) * 2;
}
+ paddedRamSizeKB() {
+ if (this.typeByte === 0x06) { return 8; }
+ return this.ramSizeKB();
+ }
+
+ isMenu() {
+ return this.title.includes(MENU_TITLE_CHECK);
+ }
+
updateMenuText(text, fontIndex) {
this.menuText = text;
this.updateBitmap(fontIndex);
@@ -122,7 +142,7 @@ class ROM {
// const canvas = document.createElement("canvas");
const canvas = document.getElementById("scratch-canvas");
canvas.height = 8;
- canvas.width = 96;
+ canvas.width = 128;
const ctx = canvas.getContext('2d');
ctx.imageSmoothingEnabled = false;
@@ -162,8 +182,8 @@ class ROM {
}
let outputBuffer = []
- for (let h = 0; h < 24; h+=2) {
- for (let i = h; i < 192; i+=24) {
+ for (let h = 0; h < 32; h+=2) {
+ for (let i = h; i < 256; i+=32) {
let a = buffer[i]
let b = buffer[i+1]
@@ -204,11 +224,14 @@ class ROM {
}
class Processor {
- constructor(roms) {
+ constructor(roms, tickerText) {
this.roms = roms;
this.menu = null;
- this.disableCGB = false;
this.forceDMG = false;
+ this.tickerBitmap = [];
+ this.cartType = 0;
+ this.englishPatch = false;
+ this.tickerType = 1;
}
romTotalKB() {
@@ -225,7 +248,7 @@ class Processor {
ramUsedKB() {
return this.roms.reduce((total, rom) => {
- return total += rom.ramSizeKB();
+ return total += rom.paddedRamSizeKB();
}, 0);
}
@@ -233,34 +256,37 @@ class Processor {
return (this.romUsedKB() > 896);
}
- mapData() {
+ mapData(singleRom = false) {
const mapBuffer = new ArrayBuffer(128);
const mapFile = new FileSeeker(mapBuffer);
- // write mbc type, rom size, and ram size for menu
- mapFile.writeBytes([0xA8, 0, 0]);
-
- // write mbc type, rom size, and ram size for each rom
- let romOffset = 128;
+ let romOffset = 0;
let ramOffset = 0;
+ if (!singleRom) {
+ // write mbc type, rom size, and ram size for menu
+ mapFile.writeBytes([0xA8, 0, 0]);
+ romOffset += 128;
+ }
+
+ // write mbc type, rom size, and ram size for each rom
for (let i = 0; i < this.roms.length; i++) {
let rom = this.roms[i];
let bits = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] // 16
- // set mbc bits
+ // set mbc bits (bits 0-2)
let tb = rom.typeByte
- if (tb >= 0x01 && tb <= 0x03) {
+ if (tb >= 0x01 && tb <= 0x03) { // MBC1
bits[15] = 0; bits[14] = 0; bits[13] = 1;
- } else if (tb >= 0x05 && tb <= 0x06) {
+ } else if (tb >= 0x05 && tb <= 0x06) { // MBC2
bits[15] = 0; bits[14] = 1; bits[13] = 0;
- } else if (tb >= 0x0F && tb <= 0x13 ) {
+ } else if (tb >= 0x0F && tb <= 0x13 ) { // MBC3
bits[15] = 0; bits[14] = 1; bits[13] = 1;
- } else if (tb >= 0x19 && tb <= 0x1E ) {
- bits[15] = 1; bits[14] = 0; bits[13] = 0;
+ } else if (tb >= 0x19 && tb <= 0x1E ) { // MBC5
+ bits[15] = 1; bits[14] = 0; bits[13] = 1;
}
- // set rom bits
+ // set rom bits (bits 3-5)
let rs = rom.paddedRomSizeKB();
if (rs == 64) { // 010
bits[12] = 0; bits[11] = 1; bits[10] = 0;
@@ -274,15 +300,20 @@ class Processor {
bits[12] = 1; bits[11] = 0; bits[10] = 1;
}
- // set ram bits
+ // set ram bits (bits 7-9) (bit 9 ORd with rom offset)
+ let rskb = rom.ramSizeKB();
if (rom.typeByte == 0x06) { // MBC2+BATTERY 001
bits[9] = 0; bits[8] = 0; bits[7] = 1;
- } else if (rom.ramSizeKB == 0) { // No RAM 000
+ } else if (rskb == 0) { // No RAM 000
bits[9] = 0; bits[8] = 0; bits[7] = 0;
- } else if (rom.ramSizeKB == 8) { // 8KB 010
+ } else if (rskb == 8) { // 8KB 010
bits[9] = 0; bits[8] = 1; bits[7] = 0;
- } else if (rom.ramSizeKB >= 32) { // 32KB+ 011
+ } else if (rskb == 32) { // 32KB 011
bits[9] = 0; bits[8] = 1; bits[7] = 1;
+ } else if (rskb == 64) { // 64KB 100
+ bits[9] = 1; bits[8] = 0; bits[7] = 0;
+ } else if (rskb == 128) { // 128KB 101
+ bits[9] = 1; bits[8] = 0; bits[7] = 1;
} else { // < 8KB 010
bits[9] = 0; bits[8] = 1; bits[7] = 0;
}
@@ -296,7 +327,8 @@ class Processor {
// ram offset
mapFile.writeByte(Math.trunc(ramOffset / 2));
- ramOffset += (rom.typeByte == 0x06 || rom.ramSizeKB() < 8) ? 8 : rom.ramSizeKB();
+ // this is the way it was in C# source, don't really understand why everything gets at least 8
+ ramOffset += (rom.typeByte === 0x06 || rom.ramSizeKB() < 8) ? 8 : rom.ramSizeKB();
}
// trailer
@@ -313,12 +345,9 @@ class Processor {
// copy menu data
romFile.writeBytes(this.menu.data);
- // apply cgb hack
- if (this.disableCGB) {
- romFile.seek(0x143);
- romFile.writeByte(0);
- romFile.seek(0x14D); // fix checksum
- romFile.writeByte(83);
+ // apply iG power cart hack
+ if (this.cartType == 1) {
+ this.patchRomHeaderForIG(romFile);
}
// apply dmg menu hack
@@ -329,18 +358,44 @@ class Processor {
romFile.writeBytes([0x3C, 0xE0, 0xFE, 0x3D]);
}
+ // apply english patch
+ if (this.englishPatch && typeof ENGLISH_PATCH_DATA === 'object') {
+ const englishRomPatcher = new Patcher(ENGLISH_PATCH_DATA);
+ englishRomPatcher.apply(romFile);
+ }
+
+ // ticker text
+ if (this.tickerType == 1) {
+ romFile.seek(0x18040);
+ romFile.writeByteUntil(0x00, 0x19140); // overwrite existing data
+ romFile.seek(0x18040);
+ romFile.writeBytes(Array.from(this.tickerBitmap));
+ }
+
+ // timestamp / writer id
+ const date = (new Date).toISOString().split('.')[0].replace('T', '').replace(/-/g, '/');
+ const timestampId = `${date} ORANGE `; // should be 26 bytes
+ romFile.seek(0x1C1BF);
+ romFile.writeBytes(stringToCharArray(timestampId));
+
let romBase = 0x01;
let romFileIndex = 0x1C200;
- // disable existing entries
+ // wipe existing entries
for (let i = 0; i < 7; i++) {
romFile.seek(romFileIndex + i * 512);
- romFile.writeByte(0xFF);
+ romFile.writeByteUntil(0xFF, romFileIndex + (i+1) * 512);
}
+
+ // used in loop for iG power cart hack
+ let iGOffsets = { rom: 8, ram: 0 };
+
for (let i = 0; i < this.roms.length; i++) {
const rom = this.roms[i];
romFile.seek(romFileIndex);
+ romFile.writeByteUntil(0, romFileIndex + 512);
+ romFile.seek(romFileIndex);
// rom index
romFile.writeByte(i + 1);
@@ -350,23 +405,35 @@ class Processor {
romBase += Math.trunc(rom.paddedRomSizeKB() / 128);
// sram base? (this is zero in the source)
- romFile.writeByte(0)
+ romFile.writeByte(0);
// rom size (in 128k units)
romFile.writeByte(Math.trunc(rom.paddedRomSizeKB() / 128));
romFile.writeByte(0);
- // sram size in 32b units (this is zero in the source)
- romFile.writeByte(0)
- romFile.writeByte(0)
+ // sram "block BBBBBB" flags
+ romFile.writeByte(rom.paddedRamSizeKB() > 0 ? 1 : 0); // true if 8 used
+ romFile.writeByte(rom.paddedRamSizeKB() > 8 ? 1 : 0); // true if 32 used
- romFile.seek(romFileIndex + 63);
+ // game identifier "DMG -TRA - "
+ romFile.writeBytes(stringToCharArray(rom.code)); // 12 characters
+
+ // Shift-JIS title (override with ascii)
+ romFile.seek(romFileIndex + 19);
+ romFile.writeByteUntil(0, 0x1C23F) // override with zeros
+ romFile.seek(romFileIndex + 20); // leave first byte emtpy to identify as ascii text
+ romFile.writeBytes(stringToCharArray(rom.title));
// title bitmap
+ romFile.seek(romFileIndex + 63); // 0x1C23F
romFile.writeBytes(rom.bitmapBuffer);
- console.log(romFile.position)
romFileIndex += 512
+
+ // apply iG power cart hack
+ if (this.cartType == 1) {
+ this.patchBankInfoForIG(rom, romFile, iGOffsets, i);
+ }
}
// write the roms
@@ -377,6 +444,207 @@ class Processor {
return new Uint8Array(romBuffer);
}
+
+ patchRomHeaderForIG(romFile) {
+ romFile.seek(0x130E); // For CGB+
+ romFile.writeBytes([0xC3, 0x00, 0x1F]); // Jump to 0x1F00
+
+ romFile.seek(0x140F); // For DMG/Pocket
+ romFile.writeBytes([0xC3, 0x00, 0x1F]); // Jump to 0x1F00
+
+ // Set rom bank, ram enabled/disabled, 8KB/32KB locked and ram bank
+ romFile.seek(0x1F00);
+ romFile.writeBytes([0x3e, 0x01, 0xea, 0x00, 0x20, // Set 0x2000, 1
+ 0xf0, 0xfd, 0x01, 0x00, 0x22, 0x4f, 0x0a, 0xea, 0x00, 0x40, 0x3e, 0x00, 0xea, 0x00, 0x40, // Ram bank set bit 1+. 8KB/32KB locking = bit 0
+ 0xf0, 0xfd, 0x01, 0x00, 0x21, 0x4f, 0x0a, 0xea, 0x00, 0x00, // Ram enable/disable
+ 0xf0, 0xfd, 0x01, 0x00, 0x20, 0x4f, 0x0a, 0xea, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]); // Rom bank and restart GB
+
+ // Patch out any writes to 0x0000-0x1000
+ romFile.seek(0x0DDF);
+ romFile.writeBytes([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);
+ romFile.seek(0x0E22);
+ romFile.writeBytes([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);
+ }
+
+ patchBankInfoForIG(rom, romFile, offsets, i) {
+ // Set rom bank start
+ romFile.seek(0x2001 + i);
+ if (rom.typeByte >= 1 && rom.typeByte <= 3) {// MBC1 enabled, setting bank 0 = bank 1
+ romFile.writeByte(offsets.rom | 0x01);
+ }
+ else {
+ romFile.writeByte(offsets.rom);
+ }
+ offsets.rom += Math.trunc(rom.paddedRomSizeKB() / 16);
+
+ // Set ram state
+ romFile.seek(0x2101 + i);
+ if (rom.ramByte > 0 || rom.typeByte == 0x06) { // has ram or MBC2
+ romFile.writeByte(1); // Ram enabled
+ }
+ else {
+ romFile.writeByte(0); // Ram disabled
+ }
+
+ // Set ram bank info
+ romFile.seek(0x2201 + i);
+
+ // Ram offset and if we are 8KB or 32KB locked
+ if (rom.ramByte == 2 || rom.typeByte == 0x06) { // 8KB or MBC2+RAM
+ romFile.writeByte(offsets.ram); // 8KB locked
+ }
+ else if (rom.ramByte == 3) { // 32KB
+ romFile.writeByte(offsets.ram | 0x01); // 32KB locked
+ }
+ else {
+ romFile.writeByte(0);
+ }
+
+ // Increment ram offset after
+ if (rom.ramByte == 2 || rom.typeByte == 0x06) { // 8KB or MBC2+RAM
+ offsets.ram += 2;
+ }
+ else if (rom.ramByte == 3) { // 32KB
+ offsets.ram += 4;
+ }
+ }
+
+ parseMenuData(menuBuffer, fontIndex) {
+ const roms = [];
+ const menuFile = new FileSeeker(menuBuffer);
+
+ menuFile.seek(0x134);
+ const title = String.fromCharCode(...menuFile.read(0xF)).replace(/\0/g, '');
+ if (!title.includes(MENU_TITLE_CHECK)) {
+ alert(`${title} does not appear to be a menu ROM!\nDid you select a regular ROM by mistake?`);
+ return [];
+ }
+
+ let romSizes = [];
+ for (let i = 0; i < 7; i++) {
+ const indexPosition = 0x1C200 + i * 512
+ menuFile.seek(indexPosition);
+ const byte = menuFile.readByte();
+ if (byte > 0 && byte < 8) {
+ menuFile.seek(indexPosition + 3)
+ romSizes.push(menuFile.readByte());
+ }
+ }
+
+ if (romSizes.length > 0) {
+ try {
+ menuFile.seek(0x20000)
+ for (let i = 0; i < romSizes.length; i++) {
+ const romData = menuFile.read(romSizes[i] * 128 * 1024);
+ const romBuffer = (new Uint8Array(romData)).buffer;
+ roms.push(new ROM(romBuffer, fontIndex))
+ }
+ } catch(e) {
+ console.log(e)
+ alert("Failed to parse roms from menu file!");
+ }
+ } else {
+ alert("No roms detected in menu file!")
+ }
+
+ return roms;
+ }
+}
+
+class TickerText {
+ constructor(text, fontIndex, canvas) {
+ this.text = text;
+ this.fontIndex = fontIndex;
+ this.canvas = canvas;
+ }
+
+ generate() {
+ let buffer = [];
+ const canvas = this.canvas;
+
+ let text = this.text;
+ // apply transforms for JP font
+ if (this.fontIndex == 3) {
+ text = text.toUpperCase();
+ text = textToFullWidthPunc(text);
+ }
+
+ const font = FONTS[this.fontIndex];
+
+ const ctx = canvas.getContext('2d');
+ ctx.font = font.style;
+ let width = Math.ceil(ctx.measureText(text).width) + 2
+ for (let i = 0; i < 16; i++) {
+ if ((width % 16) == 0) { break; }
+ width++
+ }
+ width = Math.min(1024, Math.max(64, width));
+
+ canvas.width = width;
+ ctx.font = font.style;
+ ctx.fillStyle = 'black';
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
+
+ ctx.fillStyle = 'white';
+ ctx.fillText(text,1,5 + font.y);
+
+ const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height).data;
+
+ for (let i = 0; i < imageData.length; i+=16){
+ let byte = 0;
+ for (let j = 0; j < 4; j++) {
+ let red = imageData[i+j*4];
+ if (red < 210) {
+ byte = byte | 0b11 << (6 - j*2);
+ }
+ }
+ buffer.push(byte)
+ }
+
+ let outputBuffer = []
+ for (let h = 0; h < Math.trunc(canvas.width/4); h+=2) {
+ for (let i = h; i < canvas.width * 4; i+=Math.trunc(canvas.width/4)) {
+ let a = buffer[i]
+ let b = buffer[i+1]
+
+ let outputA =
+ (a & 0b10000000) | ((a & 0b00100000) << 1) | ((a & 0b00001000) << 2) | ((a & 0b00000010) << 3) |
+ ((b & 0b10000000) >> 4) | ((b & 0b00100000) >> 3) | ((b & 0b00001000) >> 2) | ((b & 0b00000010) >> 1);
+ let outputB =
+ ((a & 0b01000000) << 1) | ((a & 0b00010000) << 2) | ((a & 0b00000100) << 3) | ((a & 0b00000001) << 4) |
+ ((b & 0b01000000) >> 3) | ((b & 0b00010000) >> 2) | ((b & 0b00000100) >> 1) | (b & 0b00000001);
+
+ outputBuffer.push(outputA, outputB);
+ }
+ }
+
+ return outputBuffer;
+ }
+}
+
+class Patcher {
+ constructor(patchData) {
+ this.patchData = patchData;
+ }
+
+ apply(file) {
+ const originalPosition = file.position;
+ this.patchData.forEach((patch) => {
+ file.seek(patch.address);
+ if (patch.rleData) {
+ patch.rleData.forEach((data) => {
+ if (Array.isArray(data)) {
+ for (let i = 0; i < data[1]; i++) { file.writeByte(data[0]); }
+ } else {
+ file.writeByte(data)
+ }
+ })
+ } else {
+ file.writeBytes(patch.data);
+ }
+ });
+ file.seek(originalPosition);
+ }
}
class FileSeeker {
@@ -428,3 +696,14 @@ class FileSeeker {
}
}
}
+
+const stringToCharArray = (str) => {
+ return str.split('').map(c => c.charCodeAt(0));
+}
+
+const FULL_WIDTH_PUNC = {
+ '!': '!', '?': '?', '&': '&', '(': '(', ')': ')', '~': '~',
+};
+const textToFullWidthPunc = (text) => {
+ return text.split('').map((char) => FULL_WIDTH_PUNC[char] || char).join('');
+};
diff --git a/script/menu.js b/script/menu.js
new file mode 100644
index 0000000..5a4565c
--- /dev/null
+++ b/script/menu.js
@@ -0,0 +1,12 @@
+const MENU_JSON = {"encoded":[0,[255,63],195,0,56,[255,5],195,0,57,[255,5],217,[255,7],217,[255,7],217,[255,159],0,195,80,1,206,237,[102,2],204,13,0,11,3,115,0,131,0,12,0,13,0,8,17,31,136,137,0,14,220,204,110,230,[221,2],217,153,[187,2],103,99,110,14,236,204,221,220,153,159,187,185,51,62,78,80,32,77,45,77,69,78,85,[32,2],77,69,78,85,128,48,49,3,25,2,[0,2],51,0,211,25,232,243,224,[254,2],1,32,4,62,1,24,18,254,255,32,4,62,1,24,10,254,17,32,4,62,4,24,2,62,1,224,252,49,255,223,205,125,24,205,29,24,250,57,194,254,255,32,10,250,0,192,254,85,40,3,195,191,20,62,228,224,71,62,228,224,72,62,16,224,66,62,88,224,67,175,224,74,62,7,224,75,62,0,224,69,62,64,224,65,175,224,255,33,0,192,1,253,31,22,0,205,220,23,33,128,255,1,122,0,22,255,205,220,23,205,85,24,205,75,15,205,55,14,205,223,13,205,209,14,205,209,10,205,40,11,240,252,203,71,40,12,1,48,0,205,12,24,205,168,25,220,152,24,62,12,234,237,193,33,192,132,125,234,238,193,124,234,239,193,33,0,128,125,234,240,193,124,234,241,193,33,9,56,125,234,64,194,33,9,57,125,234,68,194,62,2,234,130,210,33,112,52,17,128,192,1,24,0,205,228,23,205,238,5,17,100,49,240,252,203,87,40,3,17,178,50,205,29,6,62,255,234,1,199,250,226,193,167,40,62,17,160,51,205,29,6,17,4,52,205,29,6,250,226,193,61,79,6,0,33,105,52,9,126,234,4,199,234,13,199,198,8,234,6,199,234,15,199,62,16,234,5,199,234,7,199,198,136,234,14,199,234,16,199,62,1,234,9,199,234,18,199,205,0,62,240,252,203,79,204,114,16,62,171,224,64,175,224,15,62,3,224,255,251,205,24,12,250,226,193,167,40,11,205,29,24,205,237,23,205,178,2,24,245,1,2,0,205,12,24,205,128,3,24,254,250,57,194,230,192,71,33,60,194,203,120,32,4,175,119,24,5,52,203,86,32,16,33,61,194,203,112,32,4,175,119,24,14,52,203,86,40,9,250,58,194,176,234,58,194,203,158,250,59,194,87,250,130,210,95,250,58,194,71,203,120,40,23,250,226,193,254,1,40,16,203,194,203,202,203,219,175,234,60,194,203,114,40,2,203,210,203,112,40,23,250,226,193,254,1,40,16,203,194,203,202,203,219,175,234,61,194,203,114,40,2,203,210,250,57,194,203,79,40,10,203,114,32,14,203,210,203,235,24,8,203,114,40,4,203,218,203,235,203,64,40,7,203,251,203,227,205,236,3,203,88,40,0,203,80,40,0,122,234,59,194,123,234,130,210,205,128,3,203,66,196,159,6,203,74,196,199,6,205,173,10,203,82,196,41,12,203,90,196,24,12,203,98,196,9,4,203,122,200,205,138,16,205,214,18,201,213,1,3,0,250,130,210,203,95,196,12,62,1,4,0,250,130,210,203,103,196,12,62,1,5,0,250,130,210,203,111,196,12,62,1,6,0,250,130,210,203,119,196,12,62,250,130,210,203,87,40,19,250,129,210,60,254,4,32,2,62,1,234,129,210,79,6,0,205,24,62,250,130,210,203,127,1,2,0,196,36,62,1,2,0,240,252,203,87,32,3,[1,2],0,250,130,210,203,79,196,18,62,175,234,130,210,209,201,229,240,252,203,87,32,18,33,200,193,250,227,193,60,133,111,126,254,192,32,4,203,226,225,201,203,250,225,201,213,240,67,245,33,65,56,125,234,64,194,33,68,57,125,234,68,194,240,64,203,143,224,64,205,153,4,205,237,23,175,224,69,224,67,224,66,62,137,224,64,62,255,224,71,205,187,4,33,130,210,203,246,205,128,3,205,237,23,205,29,24,250,58,194,167,40,244,33,130,210,203,230,205,128,3,205,153,4,205,237,23,62,7,224,75,62,169,224,64,62,129,224,69,62,1,234,67,194,62,16,224,66,241,224,67,205,187,4,240,64,203,207,224,64,33,9,56,125,234,64,194,33,9,57,125,234,68,194,33,130,210,203,206,205,128,3,33,59,194,203,166,209,201,6,4,33,180,52,240,252,203,79,40,3,33,184,52,205,237,23,42,224,71,197,229,1,4,0,205,12,24,225,193,5,32,237,201,6,4,33,183,52,240,252,203,79,40,3,33,187,52,205,237,23,58,224,71,197,229,1,4,0,205,12,24,225,193,5,32,237,201,205,228,4,205,109,5,201,33,0,200,6,2,203,125,192,42,254,255,200,42,167,32,12,44,126,[135,2],128,71,62,5,133,111,24,233,53,32,241,44,78,44,229,94,44,86,26,19,167,40,48,254,1,40,58,[45,3],62,1,34,26,19,111,26,19,213,87,93,104,38,192,[45,2],126,131,34,126,130,34,[44,2],13,32,245,[44,2],69,209,225,115,44,114,62,3,133,111,24,170,197,26,19,79,26,87,89,193,26,19,254,1,32,198,26,19,[45,3],119,104,38,192,26,19,34,26,19,34,[44,2],13,32,245,69,225,115,44,114,62,3,133,111,195,233,4,33,128,200,6,0,203,125,200,42,254,255,200,42,254,2,40,16,167,32,66,[44,2],126,[135,2],128,71,62,4,133,111,24,228,53,32,240,44,58,34,44,78,44,94,44,86,44,229,26,19,111,26,87,93,104,38,192,126,131,34,126,130,34,[44,2],13,32,245,69,225,126,61,34,32,187,125,214,7,111,175,119,125,198,7,111,24,175,229,[44,2],78,44,94,44,86,104,38,192,26,19,34,26,19,34,[44,2],13,32,245,69,225,45,26,19,34,26,19,[34,2],44,26,19,34,26,19,34,26,34,24,132,33,0,200,125,234,243,193,124,234,244,193,17,8,0,6,16,62,255,119,25,5,32,251,33,128,200,125,234,245,193,124,234,246,193,17,8,0,6,16,62,255,119,25,5,32,251,201,1,243,193,10,111,3,10,103,6,8,26,19,34,5,32,250,1,245,193,10,111,3,10,103,6,8,26,19,34,5,32,250,205,112,6,201,33,248,199,17,8,0,71,25,126,184,32,251,175,34,119,1,243,193,125,2,3,124,2,33,120,200,17,8,0,71,25,126,184,32,251,175,34,119,1,245,193,125,2,3,124,2,201,33,248,199,17,8,0,25,126,254,255,40,3,167,32,247,1,243,193,125,2,3,124,2,33,120,200,17,8,0,25,126,254,255,40,3,167,32,247,1,245,193,125,2,3,124,2,201,250,58,194,71,250,226,193,79,250,227,193,234,228,193,203,120,40,7,60,185,32,9,175,24,6,214,1,48,2,121,61,234,227,193,33,59,194,203,134,201,213,250,58,194,203,127,32,34,250,226,193,61,71,250,227,193,184,32,10,33,4,199,17,13,199,62,1,24,40,33,2,199,17,2,199,62,255,119,62,2,24,27,250,227,193,167,32,10,33,251,51,17,95,52,62,1,24,11,33,2,199,17,2,199,62,1,119,62,2,234,137,200,234,145,200,125,234,141,200,124,234,142,200,123,234,149,200,122,234,150,200,62,8,234,143,200,234,151,200,205,72,7,205,237,23,6,8,250,58,194,79,203,121,196,248,8,204,168,7,5,32,245,33,59,194,203,142,209,201,250,228,193,60,79,65,33,0,200,124,198,1,5,32,251,234,236,193,65,33,0,135,124,198,1,5,32,251,[234,2],193,250,227,193,60,79,65,33,63,64,124,198,2,5,32,251,234,232,193,62,63,234,231,193,65,33,0,135,124,198,1,5,32,251,234,230,193,250,58,194,71,175,203,120,32,2,62,15,234,233,193,234,235,193,234,229,193,71,250,231,193,128,234,231,193,201,245,197,62,7,234,0,32,234,128,210,33,229,193,126,95,[61,2],34,42,87,126,79,[61,2],34,102,105,1,17,0,205,148,54,58,18,29,18,9,121,131,95,58,18,29,18,9,121,131,95,58,18,29,18,9,121,131,95,58,18,29,18,9,121,131,95,58,18,29,18,9,121,131,95,58,18,29,18,9,121,131,95,58,18,29,18,9,121,131,95,58,18,29,18,9,121,131,95,58,18,29,18,9,121,131,95,58,18,29,18,9,121,131,95,58,18,29,18,9,121,131,95,58,18,29,18,9,121,131,95,58,18,29,18,9,121,131,95,58,18,29,18,9,121,131,95,58,18,29,18,9,121,131,95,58,18,29,18,9,121,131,95,33,233,193,126,95,[61,2],34,42,87,126,79,[61,2],34,102,105,1,17,0,58,18,29,126,18,9,121,131,95,58,18,29,126,18,9,121,131,95,58,18,29,126,18,9,121,131,95,58,18,29,126,18,9,121,131,95,58,18,29,126,18,9,121,131,95,58,18,29,126,18,9,121,131,95,58,18,29,126,18,9,121,131,95,58,18,29,126,18,9,121,131,95,58,18,29,126,18,9,121,131,95,58,18,29,126,18,9,121,131,95,58,18,29,126,18,9,121,131,95,58,18,29,126,18,9,121,131,95,58,18,29,126,18,9,121,131,95,58,18,29,126,18,9,121,131,95,58,18,29,126,18,9,121,131,95,58,18,29,126,18,9,121,131,95,62,1,234,0,32,234,128,210,193,241,201,245,197,62,7,234,0,32,234,128,210,33,229,193,126,95,[60,2],34,42,87,126,79,[60,2],34,102,105,1,15,0,205,148,54,42,18,28,18,9,121,131,95,42,18,28,18,9,121,131,95,42,18,28,18,9,121,131,95,42,18,28,18,9,121,131,95,42,18,28,18,9,121,131,95,42,18,28,18,9,121,131,95,42,18,28,18,9,121,131,95,42,18,28,18,9,121,131,95,42,18,28,18,9,121,131,95,42,18,28,18,9,121,131,95,42,18,28,18,9,121,131,95,42,18,28,18,9,121,131,95,42,18,28,18,9,121,131,95,42,18,28,18,9,121,131,95,42,18,28,18,9,121,131,95,42,18,28,18,9,121,131,95,33,233,193,126,95,[60,2],34,42,87,126,79,[60,2],34,102,105,1,15,0,42,18,28,126,18,9,121,131,95,42,18,28,126,18,9,121,131,95,42,18,28,126,18,9,121,131,95,42,18,28,126,18,9,121,131,95,42,18,28,126,18,9,121,131,95,42,18,28,126,18,9,121,131,95,42,18,28,126,18,9,121,131,95,42,18,28,126,18,9,121,131,95,42,18,28,126,18,9,121,131,95,42,18,28,126,18,9,121,131,95,42,18,28,126,18,9,121,131,95,42,18,28,126,18,9,121,131,95,42,18,28,126,18,9,121,131,95,42,18,28,126,18,9,121,131,95,42,18,28,126,18,9,121,131,95,42,18,28,126,18,9,121,131,95,62,1,234,0,32,234,128,210,193,241,201,240,79,245,175,224,79,33,238,193,42,79,42,71,42,95,126,87,203,146,203,120,40,36,203,97,40,54,14,192,250,237,193,61,234,237,193,32,10,62,6,234,0,32,1,[64,2],24,33,254,8,32,29,62,2,234,129,200,24,22,62,6,234,0,32,123,230,63,32,12,10,167,32,8,62,48,234,237,193,1,192,132,10,18,3,19,10,18,3,19,122,50,123,50,120,50,121,119,241,224,79,201,213,250,59,194,203,119,32,14,33,112,52,17,128,192,1,24,0,205,228,23,209,201,33,136,52,17,128,192,1,24,0,205,228,23,209,201,33,96,193,205,227,11,250,224,193,71,62,8,144,40,35,56,33,71,79,33,112,193,17,96,193,62,80,34,60,34,62,7,18,19,18,19,5,32,242,33,128,193,62,82,34,60,34,13,32,248,250,225,193,71,62,16,144,200,216,71,79,33,160,193,17,144,193,62,88,34,62,6,18,19,5,32,246,33,176,193,62,89,34,13,32,252,201,213,33,0,193,205,227,11,250,226,193,167,32,2,209,201,95,250,227,193,60,79,22,0,33,208,193,25,250,226,193,145,234,70,194,167,40,8,71,175,78,129,43,5,32,250,78,203,39,71,250,224,193,95,62,8,147,203,39,128,71,197,88,22,0,33,16,193,25,229,33,0,193,25,93,84,225,62,80,34,60,34,62,7,18,19,18,19,13,32,242,193,88,22,0,33,32,193,25,62,82,34,60,34,13,32,248,250,226,193,95,22,0,33,216,193,25,250,70,194,167,40,8,71,175,78,129,43,5,32,250,71,250,225,193,95,62,16,147,128,71,78,121,167,[40,2],197,88,22,0,33,64,193,25,229,33,48,193,25,93,84,225,62,88,34,62,6,18,19,13,32,246,193,88,22,0,33,80,193,25,62,89,34,13,32,250,209,201,6,16,62,0,34,5,32,252,6,8,62,84,34,60,34,5,32,248,6,8,62,86,34,60,34,5,32,248,6,16,62,0,34,5,32,252,6,16,62,90,34,5,32,252,6,16,62,91,34,5,32,252,201,33,96,193,205,61,12,250,59,194,203,183,203,159,234,59,194,201,205,40,11,33,0,193,205,61,12,250,59,194,203,247,203,151,234,59,194,201,205,148,54,62,1,224,79,229,1,130,153,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,225,14,162,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,175,224,79,14,130,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,14,162,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,205,148,54,62,1,224,79,229,14,194,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,225,14,226,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,175,224,79,14,194,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,14,226,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,12,42,2,201,250,32,1,62,9,234,32,1,62,170,234,33,1,62,85,234,34,1,62,165,234,63,1,62,4,234,32,1,62,165,234,63,1,33,192,193,17,200,193,250,226,193,60,71,42,203,39,203,39,203,39,234,0,32,250,67,65,18,19,5,32,238,62,1,234,0,32,62,5,234,32,1,62,165,234,63,1,62,8,234,32,1,62,165,234,63,1,201,62,7,234,0,32,234,128,210,6,0,33,0,64,126,254,255,40,9,62,2,132,103,4,203,88,40,242,5,120,234,226,193,167,40,104,4,14,0,17,3,64,33,208,193,26,34,129,79,62,2,130,87,5,32,245,121,234,224,193,250,226,193,60,71,17,1,64,33,192,193,26,34,62,2,130,87,5,32,247,250,226,193,60,71,14,0,17,6,64,33,216,193,26,167,40,12,254,1,40,4,62,16,24,12,62,4,24,8,27,26,19,167,40,2,62,1,34,129,79,62,2,130,87,5,32,222,121,234,225,193,62,1,234,0,32,234,128,210,201,62,1,234,208,193,234,224,193,234,0,32,234,128,210,201,33,0,136,17,0,201,1,0,7,205,228,23,62,7,234,0,32,234,128,210,250,226,193,167,40,59,71,17,63,66,33,0,201,205,49,15,62,2,130,87,5,32,246,17,63,66,33,0,136,205,64,15,250,226,193,61,40,18,71,17,0,202,33,0,137,14,0,26,34,19,12,32,250,5,32,245,62,1,234,0,32,234,128,210,201,17,0,48,33,0,139,205,49,15,24,236,213,14,0,26,47,166,34,19,12,121,167,32,246,209,201,213,14,0,26,34,19,13,32,250,209,201,62,1,234,0,32,62,0,33,16,64,205,165,23,62,1,33,80,64,205,165,23,240,64,245,203,127,196,125,24,62,1,234,0,32,62,1,224,79,33,0,92,17,0,156,1,0,4,205,228,23,175,224,79,33,0,88,17,0,156,1,0,4,205,228,23,62,1,234,0,32,241,224,64,240,252,203,87,202,39,16,33,0,104,17,0,128,1,0,24,205,228,23,240,64,245,203,127,196,125,24,62,1,234,0,32,62,1,224,79,33,0,100,17,0,152,1,0,4,205,228,23,175,224,79,33,0,96,17,0,152,1,0,4,205,228,23,62,1,234,0,32,241,224,64,201,62,2,234,0,32,33,0,104,17,0,128,1,0,24,205,228,23,240,64,245,203,127,196,125,24,62,2,234,0,32,62,1,224,79,33,0,100,17,0,152,1,0,4,205,228,23,175,224,79,33,0,96,17,0,152,1,0,4,205,228,23,62,1,234,0,32,241,224,64,62,1,234,0,32,201,62,3,234,0,32,33,0,104,17,0,128,1,0,24,205,228,23,240,64,245,203,127,196,125,24,62,3,234,0,32,62,1,224,79,33,0,100,17,0,152,1,0,4,205,228,23,175,224,79,33,0,96,17,0,152,1,0,4,205,228,23,62,1,234,0,32,241,224,64,62,1,234,0,32,201,240,252,203,87,40,9,62,1,234,0,32,205,152,16,201,62,3,33,0,96,205,0,17,201,240,252,203,87,40,4,205,182,17,201,205,45,18,201,62,169,224,64,33,16,64,17,249,193,1,64,0,205,228,23,17,160,52,62,5,234,70,194,33,249,193,6,32,197,78,35,65,203,56,70,250,70,194,61,40,6,203,24,203,25,24,247,26,19,160,50,26,27,161,34,35,193,5,32,224,[19,2],205,237,23,175,33,249,193,197,213,229,205,165,23,1,4,0,205,12,24,33,16,64,17,249,193,1,64,0,205,228,23,193,209,225,250,70,194,61,32,174,201,234,0,32,234,128,210,229,33,0,152,1,0,4,22,127,205,220,23,225,17,42,1,25,17,42,153,126,18,62,169,224,64,6,0,62,1,234,248,193,205,237,23,203,64,32,65,250,248,193,71,14,1,125,145,111,124,222,0,103,123,145,95,122,222,0,87,126,18,5,32,237,250,248,193,71,14,32,125,145,111,124,222,0,103,123,145,95,122,222,0,254,152,56,79,87,126,18,5,32,233,250,248,193,60,234,248,193,6,1,24,184,250,248,193,71,14,1,125,129,111,124,206,0,103,123,129,95,122,206,0,87,126,18,5,32,237,250,248,193,71,14,32,125,129,111,124,206,0,103,123,129,95,122,206,0,87,126,18,5,32,237,250,248,193,60,234,248,193,6,0,195,39,17,62,1,234,0,32,234,128,210,201,213,205,237,23,33,53,56,125,234,64,194,33,68,57,125,234,68,194,175,224,69,224,67,224,66,62,129,224,64,62,2,224,255,33,16,64,17,249,193,1,64,0,205,228,23,17,170,52,62,5,245,33,249,193,62,32,245,78,35,70,203,24,203,25,26,19,160,50,26,27,161,34,35,241,61,32,235,[19,2],205,237,23,175,33,249,193,213,205,165,23,1,4,0,205,12,24,209,241,61,32,205,1,[0,2],205,30,62,205,237,23,175,224,255,243,205,125,24,209,201,213,205,237,23,33,53,56,125,234,64,194,33,68,57,125,234,68,194,175,224,69,224,67,224,66,62,129,224,64,62,2,224,255,17,255,151,6,1,62,20,234,248,193,205,237,23,203,64,32,51,250,248,193,71,14,1,123,145,95,122,222,0,87,62,127,18,5,32,243,250,248,193,71,14,32,123,145,95,122,222,0,87,62,127,18,5,32,243,250,248,193,61,234,248,193,40,54,6,1,24,198,250,248,193,71,14,1,123,129,95,122,206,0,87,62,127,18,5,32,243,250,248,193,71,14,32,123,129,95,122,206,0,87,62,127,18,5,32,243,250,248,193,61,234,248,193,6,0,195,88,18,1,[0,2],205,30,62,205,237,23,175,224,255,243,205,125,24,209,201,62,7,234,0,32,33,0,64,17,0,2,250,227,193,60,25,61,32,252,126,224,253,62,1,234,0,32,240,252,203,71,194,153,19,203,79,194,54,19,203,87,194,2,19,33,49,19,17,128,255,1,5,0,205,228,23,250,32,1,62,9,234,32,1,62,170,234,33,1,62,85,234,34,1,62,165,234,63,1,240,253,246,128,234,32,1,62,165,195,128,255,234,63,1,24,254,33,137,19,17,128,255,1,17,0,205,228,23,33,117,25,17,152,255,1,51,0,205,228,23,33,172,53,17,208,255,1,16,0,205,228,23,33,188,53,205,117,25,1,4,0,205,12,24,250,32,1,62,9,234,32,1,62,170,234,33,1,62,85,234,34,1,62,165,234,63,1,240,253,246,192,234,32,1,62,165,195,128,255,234,63,1,62,48,61,32,253,33,208,255,205,152,255,24,254,175,224,65,224,0,224,2,224,5,224,7,224,15,224,255,224,66,224,67,224,69,224,74,224,75,62,252,224,71,62,255,224,72,224,73,62,225,224,4,175,14,48,226,12,203,113,40,250,33,0,128,1,0,32,22,0,205,220,23,205,68,20,33,128,255,1,124,0,22,255,205,220,23,33,54,20,17,128,255,1,14,0,205,228,23,33,0,192,62,255,34,203,108,40,251,62,145,224,64,49,254,255,1,19,255,17,193,0,33,3,132,240,254,71,62,255,224,254,250,32,1,62,9,234,32,1,62,170,234,33,1,62,85,234,34,1,62,165,234,63,1,240,253,246,192,234,32,1,62,255,224,253,62,165,195,128,255,234,63,1,62,48,61,32,253,120,6,255,195,0,1,62,7,234,0,32,33,12,66,250,227,193,167,40,8,71,62,2,132,103,5,32,249,42,254,69,32,15,42,254,67,32,10,42,254,74,32,5,42,254,32,40,6,62,1,234,0,32,201,62,1,234,0,32,17,4,1,33,16,128,26,205,172,20,205,173,20,19,123,254,52,32,243,17,252,53,6,8,26,19,34,35,5,32,249,62,25,234,16,153,33,47,153,14,12,61,200,50,13,32,250,46,15,24,244,79,6,4,197,203,17,23,193,203,17,23,5,32,245,34,35,34,35,201,62,228,224,71,62,228,224,72,175,224,66,224,67,224,65,224,255,33,0,192,1,253,31,22,0,205,220,23,33,128,255,1,122,0,22,255,205,220,23,33,152,20,1,0,32,22,0,205,220,23,62,1,234,0,32,33,0,80,17,0,144,1,0,8,205,228,23,62,0,33,144,64,205,165,23,62,129,224,64,33,0,49,17,[0,2],205,63,23,205,45,21,205,108,21,205,189,21,205,5,22,62,85,234,0,192,205,201,22,24,254,33,21,49,17,96,0,205,63,23,250,32,1,62,9,234,32,1,62,170,234,33,1,62,85,234,34,1,62,165,234,63,1,250,63,1,254,165,32,10,33,94,49,17,112,0,205,63,23,201,33,97,49,17,112,0,203,250,205,63,23,195,43,21,33,36,49,17,192,0,205,63,23,250,34,1,33,226,0,205,248,22,250,35,1,33,229,0,205,248,22,250,36,1,33,232,0,205,248,22,250,34,1,254,168,32,24,250,35,1,254,0,32,17,250,36,1,254,0,32,10,33,94,49,17,208,0,205,63,23,201,33,97,49,17,208,0,203,250,205,63,23,195,43,21,33,[49,2],17,32,1,205,63,23,33,66,1,6,0,120,234,0,32,205,248,22,120,254,5,40,13,250,0,64,184,32,26,4,203,88,40,233,24,9,250,255,127,184,32,13,4,24,222,33,94,49,17,48,1,205,63,23,201,33,97,49,17,48,1,203,250,205,63,23,195,43,21,33,62,49,17,160,1,205,63,23,62,8,234,32,1,62,165,234,63,1,33,202,1,125,234,70,194,124,234,71,194,33,72,49,17,192,1,205,63,23,205,83,22,240,[254,2],17,192,175,224,77,62,48,224,0,62,1,224,77,16,0,62,[234,2],70,194,33,83,49,17,224,1,205,63,23,205,83,22,201,17,[0,2],6,0,120,234,0,32,33,0,64,42,131,95,122,206,0,87,203,124,40,245,4,203,88,40,233,250,78,1,71,123,144,95,122,222,0,87,250,79,1,71,123,144,95,122,222,0,87,250,70,194,111,250,71,194,103,122,205,248,22,[35,2],123,205,248,22,250,79,1,187,32,23,250,78,1,186,32,17,33,94,49,250,70,194,198,6,95,250,71,194,87,205,63,23,201,33,97,49,250,70,194,198,6,95,250,71,194,87,203,250,205,63,23,195,43,21,33,49,19,17,128,255,1,5,0,205,228,23,250,32,1,62,9,234,32,1,62,170,234,33,1,62,85,234,34,1,62,165,234,63,1,62,0,246,128,234,32,1,62,165,195,128,255,197,213,229,87,6,0,203,124,40,5,6,1,203,188,43,35,62,152,132,103,122,30,48,230,15,254,10,56,2,30,55,131,95,122,203,55,22,48,230,15,254,10,56,2,22,55,130,87,240,64,230,128,40,6,240,65,230,3,32,250,123,50,203,64,32,1,114,225,209,193,201,245,213,229,203,122,32,35,62,152,130,87,240,64,230,128,40,16,126,254,64,40,76,240,65,230,3,32,250,42,18,19,24,240,42,254,64,40,60,18,19,24,247,203,186,62,152,130,87,240,64,230,128,40,26,126,254,64,40,39,62,1,224,79,240,65,230,3,32,250,62,1,18,175,224,79,42,18,19,24,230,126,254,64,40,13,62,1,224,79,18,175,224,79,42,18,19,24,238,225,209,241,201,1,104,255,17,105,255,167,40,6,1,106,255,17,107,255,62,128,2,6,64,42,18,5,32,251,201,123,149,48,1,21,95,122,148,87,229,193,33,[0,2],213,10,95,3,10,87,3,25,209,27,123,178,32,242,201,122,34,11,121,176,32,249,201,42,18,19,11,120,177,32,248,201,240,64,203,127,200,240,255,203,71,40,13,118,0,250,62,194,167,40,250,175,234,62,194,201,240,68,254,145,32,250,201,17,214,6,[0,3],27,122,179,32,248,11,120,177,32,240,201,245,197,62,32,224,0,240,0,240,0,47,230,15,203,55,71,62,16,224,0,240,0,240,0,240,0,240,0,240,0,240,0,47,230,15,176,79,250,57,194,169,161,234,58,194,121,234,57,194,62,48,224,0,193,241,201,14,128,6,10,33,99,24,42,226,12,5,32,250,201,62,192,224,70,62,40,61,32,253,201,135,225,95,22,0,25,94,35,86,213,225,38,16,46,3,233,240,255,234,69,194,203,135,224,255,240,68,254,145,32,250,240,64,230,127,224,64,250,69,194,224,255,201,62,2,224,252,33,140,53,205,117,25,1,4,0,205,12,24,33,188,52,205,117,25,1,4,0,205,12,24,33,204,52,205,117,25,1,4,0,205,12,24,33,220,52,205,117,25,1,4,0,205,12,24,33,236,52,205,117,25,1,4,0,205,12,24,33,252,52,205,117,25,1,4,0,205,12,24,33,12,53,205,117,25,1,4,0,205,12,24,33,28,53,205,117,25,1,4,0,205,12,24,33,44,53,205,117,25,1,4,0,205,12,24,33,60,53,205,117,25,1,4,0,205,12,24,33,76,53,205,117,25,1,4,0,205,12,24,33,92,53,205,117,25,1,4,0,205,12,24,33,108,53,205,117,25,1,4,0,205,12,24,33,124,53,205,117,25,1,4,0,205,12,24,33,204,53,205,117,25,1,4,0,205,12,24,33,220,53,205,117,25,1,4,0,205,12,24,33,236,53,205,117,25,1,4,0,205,12,24,33,156,53,205,117,25,1,4,0,205,12,24,201,126,230,7,200,71,14,0,197,62,0,226,62,48,226,6,16,30,8,42,87,203,66,62,16,32,2,62,32,226,62,48,226,203,26,29,32,239,5,32,232,62,32,226,62,48,226,193,5,200,24,212,33,22,26,205,117,25,1,4,0,205,12,24,240,0,230,3,254,3,32,60,62,32,224,0,240,0,240,0,62,48,224,0,62,16,224,0,240,0,240,0,240,0,240,0,240,0,240,0,62,48,224,0,240,0,240,0,240,0,240,0,230,3,254,3,32,14,33,6,26,205,117,25,1,4,0,205,12,24,151,201,33,6,26,205,117,25,1,4,0,205,12,24,55,201,137,[0,15],137,1,[0,14],[255,5594],[0,48],[5,2],[64,2],[126,2],[68,2],[132,2],[8,4],[48,2],[0,8],[124,2],[0,8],[16,2],[32,2],[64,2],[68,2],[130,4],[254,2],[0,2],[4,2],[190,2],[132,4],[156,2],[166,2],[24,2],[32,2],[252,2],[32,2],[60,2],[102,2],[170,2],[146,2],[100,2],[0,2],[32,2],[68,4],[100,2],[4,2],[8,2],[48,2],[0,2],[124,2],[8,2],[124,2],[8,2],[120,2],[140,2],[112,2],[0,4],[72,2],[126,2],[200,2],[72,2],[66,2],[60,2],[16,4],[32,4],[112,2],[72,2],[138,2],[132,2],[0,10],[56,2],[40,2],[56,2],[0,48],71,66,77,67,32,67,104,101,99,107,[32,6],86,48,46,48,64,32,77,69,78,85,32,83,101,113,117,101,110,99,101,64,32,68,101,99,111,100,101,32,68,97,116,97,64,32,66,97,110,107,32,67,104,97,110,103,101,64,32,67,104,101,99,107,83,117,109,64,[32,2],88,49,99,108,107,32,61,32,64,[32,2],88,50,99,108,107,32,61,32,64,79,75,64,78,71,64,3,[1,2],8,116,49,[0,2],3,1,[0,2],8,139,51,0,1,12,111,6,127,6,111,6,127,6,96,6,112,6,100,6,116,6,1,10,96,6,112,6,100,6,116,6,111,6,127,6,111,6,127,6,1,8,96,6,112,6,100,6,116,6,111,6,127,6,101,6,117,6,1,6,96,6,112,6,100,6,116,6,101,6,117,6,111,6,127,6,1,4,96,6,112,6,97,6,113,6,102,6,118,6,111,6,127,6,1,4,96,6,112,6,97,6,113,6,103,6,119,6,104,6,120,6,1,4,96,6,112,6,97,6,113,6,98,6,114,6,99,6,115,6,2,1,255,2,[0,2],1,4,96,6,112,6,97,6,113,6,98,6,114,6,99,6,115,6,2,255,[1,2],16,96,6,112,6,97,6,113,6,98,6,114,6,105,6,121,6,1,8,96,6,112,6,97,6,113,6,98,6,114,6,99,6,115,6,1,8,96,6,112,6,97,6,113,6,98,6,114,6,105,6,121,6,1,8,96,6,112,6,97,6,113,6,98,6,114,6,99,6,115,6,1,8,96,6,112,6,97,6,113,6,98,6,114,6,105,6,121,6,1,8,96,6,112,6,97,6,113,6,98,6,114,6,99,6,115,6,1,8,96,6,112,6,97,6,113,6,98,6,114,6,105,6,121,6,1,8,96,6,112,6,97,6,113,6,98,6,114,6,99,6,115,6,1,60,96,6,112,6,97,6,113,6,98,6,114,6,105,6,121,6,0,116,49,3,[1,2],8,194,50,[0,2],3,1,[0,2],8,139,51,0,1,40,96,5,112,5,97,5,113,5,98,5,114,5,99,5,115,5,1,8,100,5,116,5,97,5,113,5,98,5,114,5,99,5,115,5,1,6,96,5,112,5,101,5,117,5,98,5,114,5,99,5,115,5,1,5,96,5,112,5,97,5,113,5,102,5,118,5,99,5,115,5,1,3,96,5,112,5,97,5,113,5,98,5,114,5,103,5,119,5,1,15,96,5,112,5,97,5,113,5,98,5,114,5,99,5,115,5,1,15,104,5,120,5,105,5,121,5,106,5,122,5,107,5,123,5,1,12,96,5,112,5,97,5,113,5,98,5,114,5,99,5,115,5,1,12,104,5,120,5,105,5,121,5,106,5,122,5,107,5,123,5,1,12,96,5,112,5,97,5,113,5,98,5,114,5,99,5,115,5,1,12,104,5,120,5,105,5,121,5,106,5,122,5,107,5,123,5,0,194,50,144,168,152,168,144,176,152,176,144,184,152,184,144,192,152,192,0,2,0,199,0,[1,3],2,176,51,[0,2],[1,2],[0,2],2,251,51,0,1,14,64,6,80,6,1,14,65,6,81,6,1,14,64,6,80,6,1,14,65,6,81,6,1,14,66,6,82,6,1,7,67,6,83,6,1,7,68,6,84,6,1,7,69,6,85,6,1,4,67,6,83,6,1,4,68,6,84,6,1,4,69,6,85,6,1,14,66,6,82,6,0,176,51,34,16,42,16,0,1,2,199,0,2,[1,2],2,20,52,[0,2],2,1,[0,2],2,95,52,0,1,14,64,38,80,38,1,14,65,38,81,38,1,14,64,38,80,38,1,14,65,38,81,38,1,14,66,38,82,38,1,7,67,38,83,38,1,7,68,38,84,38,1,7,69,38,85,38,1,4,67,38,83,38,1,4,68,38,84,38,1,4,69,38,85,38,1,14,66,38,82,38,0,20,52,34,152,42,152,0,1,2,199,[0,2],34,42,50,58,66,74,82,96,16,70,3,96,24,71,3,96,32,72,3,104,16,86,3,104,24,87,3,104,32,88,3,96,16,73,4,96,24,74,4,96,32,75,4,104,16,89,4,104,24,90,4,104,32,91,[4,2],33,12,99,28,231,61,239,127,255,61,239,28,231,12,99,4,33,[0,2],228,249,254,255,228,244,252,255,121,93,8,0,11,140,208,244,96,[0,7],121,82,8,0,11,169,231,159,1,192,126,[232,4],224,121,71,8,0,11,196,208,22,165,203,201,5,208,16,162,40,121,60,8,0,11,240,18,165,[201,2],200,208,28,165,202,201,121,49,8,0,11,12,165,202,201,126,208,6,165,203,201,126,121,38,8,0,11,57,205,72,12,208,52,165,[201,2],128,208,121,27,8,0,11,[234,5],169,1,205,79,12,208,121,16,8,0,11,76,32,8,[234,5],96,[234,2],121,0,9,0,11,173,194,2,201,9,208,26,169,1,141,0,121,11,9,0,11,66,175,219,255,0,240,5,32,115,197,128,121,22,9,0,11,3,32,118,197,169,49,141,0,66,[104,2],121,33,9,0,1,96,[0,10],121,0,8,0,3,76,0,9,[0,8],185,1,[0,14],185,[0,15],145,0,24,[0,13],65,[0,3],254,[0,11],121,0,24,0,11,234,24,251,226,32,194,16,169,0,72,171,121,11,24,0,11,169,15,143,0,33,0,169,1,143,3,96,121,22,24,0,11,0,108,252,255,[0,7],60,66,185,165,185,165,66,60,[0,2],[124,2],[66,10],[124,2],[0,2],[130,2],[198,2],[170,2],[146,2],[130,6],[0,2],[60,2],[66,2],[64,2],[70,2],[66,4],[62,2],[0,2],[60,2],[66,2],[64,2],[60,2],[2,2],[66,2],[60,2],[0,2],[60,2],[66,2],[64,2],[70,2],[66,4],[62,2],[0,2],[124,2],[66,4],[124,2],[66,4],[124,2],[0,2],[60,2],[66,2],[64,6],[66,2],[60,2],[0,2],[60,2],[66,2],[64,2],[70,2],[66,4],[62,2],[0,2],[124,2],[66,4],[124,2],[66,4],[124,2],118,0,250,62,194,167,40,250,175,234,62,194,240,68,254,145,56,238,254,148,48,234,201,[255,341],245,229,250,64,194,111,38,56,233,197,213,205,128,255,33,62,194,62,1,71,34,126,60,119,160,71,240,67,128,224,67,62,7,224,75,62,171,224,64,205,72,10,250,128,210,234,0,32,209,193,225,241,217,33,62,194,126,60,34,126,60,119,225,241,217,33,62,194,52,225,241,217,[255,184],245,229,250,68,194,111,38,57,233,250,67,194,167,194,45,57,197,213,251,62,129,224,69,62,1,234,67,194,205,6,62,205,221,4,250,128,210,234,0,32,209,193,225,241,217,240,65,230,3,32,250,62,255,224,75,62,187,224,64,175,224,69,234,67,194,225,241,217,197,213,205,6,62,250,128,210,234,0,32,209,193,225,241,217,[255,1196],205,78,62,195,0,64,205,117,62,195,122,64,205,98,62,195,184,65,205,98,62,195,127,66,205,98,62,195,184,66,205,98,62,195,201,67,205,98,62,195,22,68,205,98,62,195,228,66,205,98,62,195,56,68,205,98,62,195,158,68,205,98,62,195,25,69,205,98,62,195,73,68,205,98,62,195,206,66,250,128,210,234,1,208,62,5,234,128,210,234,0,32,201,250,1,208,24,244,33,0,208,203,126,32,8,203,254,245,205,78,62,241,201,225,62,255,201,33,0,208,203,126,40,237,203,118,32,241,203,246,225,124,234,4,208,125,234,3,208,175,201,33,0,208,203,118,32,7,205,93,62,203,190,175,201,250,4,208,103,250,3,208,111,229,33,0,208,203,182,201,250,38,208,205,86,62,26,79,195,84,62,250,38,208,205,86,62,26,79,19,26,71,195,84,62,[255,317],1,[255,16],127,181,86,107,45,[0,2],255,127,41,1,231,[0,3],255,127,12,0,10,16,[0,2],255,127,41,1,198,40,[0,2],255,127,10,16,198,40,[0,2],255,127,7,44,6,36,[0,2],255,127,63,2,92,20,[0,2],255,127,64,3,64,1,[0,2],32,70,239,61,74,41,[0,2],32,70,239,61,74,41,[0,2],32,70,239,61,74,41,[0,2],255,127,107,93,107,93,[0,2],255,127,191,53,191,53,[0,2],255,127,255,127,107,93,[0,2],255,127,255,2,219,[0,3],255,127,64,3,64,1,[0,4],107,45,107,45,255,127,31,0,10,0,10,0,255,127,[0,2],107,45,107,45,255,127,[0,2],107,45,107,45,255,127,[0,2],107,45,107,45,255,127,[0,2],107,45,107,45,255,127,[0,2],107,45,107,45,255,127,[0,2],107,45,107,45,255,127,[255,3904],[0,240],[255,2],[199,2],[187,2],[125,6],[187,2],[199,2],[255,2],[125,2],[187,2],[215,2],[239,2],[215,2],[187,2],[125,2],[255,2],159,191,147,183,145,179,128,129,241,[243,2],247,[255,10],[248,2],[255,14],[31,2],[255,6],[0,176],[255,20],243,247,241,243,0,1,241,[243,2],247,[255,4],135,143,135,175,135,143,[255,10],207,223,159,191,143,159,[255,8],231,239,129,131,0,41,7,47,129,131,224,233,0,41,129,131,[255,2],201,219,147,183,129,147,[255,10],135,143,135,175,207,223,129,171,51,119,33,107,140,157,[255,18],231,239,207,223,159,191,159,191,159,191,207,223,231,239,[255,2],243,247,249,251,252,253,252,253,252,253,249,251,243,247,[255,4],129,171,195,199,231,239,195,199,129,171,[255,6],231,239,231,239,129,131,231,239,231,239,[255,12],199,207,231,239,207,223,[255,8],129,131,[255,18],199,207,199,207,[255,2],252,253,249,251,243,247,231,239,207,223,159,191,63,127,[255,2],129,131,24,57,24,57,24,57,24,57,24,57,129,131,[255,2],227,231,195,199,227,231,227,231,227,231,227,231,193,195,[255,2],129,131,24,57,24,57,241,243,195,199,140,157,0,1,[255,2],129,131,24,57,248,249,193,195,248,249,24,57,129,131,[255,2],193,195,129,147,129,147,17,51,17,51,0,1,241,243,[255,2],1,3,31,63,31,63,1,3,248,249,24,57,1,3,[255,2],129,131,31,63,31,63,1,3,24,57,24,57,129,131,[255,2],0,1,24,57,24,57,241,243,227,231,227,231,227,231,[255,2],129,131,24,57,24,57,129,131,24,57,24,57,129,131,[255,2],129,131,24,57,24,57,128,129,248,249,24,57,129,131,[255,2],227,231,227,231,[255,4],227,231,227,231,[255,4],227,231,227,231,[255,2],227,231,227,231,243,247,231,239,[255,2],249,251,243,247,231,239,207,223,231,239,243,247,249,251,[255,6],193,195,[255,2],193,195,[255,6],207,223,231,239,243,247,249,251,243,247,231,239,207,223,[255,2],193,195,136,153,136,153,241,243,227,231,[255,2],227,231,[255,18],195,199,129,147,24,57,24,57,0,1,24,57,24,57,[255,2],1,3,136,153,136,153,129,131,136,153,136,153,1,3,[255,2],129,131,24,57,31,63,31,63,24,57,16,49,129,131,[255,2],1,3,136,153,136,153,136,153,136,153,128,145,1,3,[255,2],0,1,140,157,143,159,129,131,143,159,140,157,0,1,[255,2],0,1,140,157,[159,2],129,131,143,159,143,159,7,15,[255,2],129,131,24,57,31,63,0,33,24,57,16,49,129,131,[255,2],24,57,24,57,24,57,0,1,24,57,24,57,24,57,[255,2],193,195,227,231,227,231,227,231,227,231,227,231,193,195,[255,2],224,225,241,243,241,243,241,243,17,51,17,51,131,135,[255,2],24,57,17,51,3,39,7,15,3,7,1,35,16,49,[255,2],7,15,143,159,143,159,143,159,140,157,136,153,0,1,[255,2],24,57,0,17,0,1,0,41,24,57,24,57,24,57,[255,2],24,57,8,25,0,9,0,33,16,49,24,57,24,57,[255,2],129,131,8,25,24,57,24,57,24,57,16,49,129,131,[255,2],1,3,24,57,24,57,16,49,1,3,31,63,31,63,[255,2],129,131,24,57,24,57,24,57,0,33,17,51,128,129,[255,2],1,3,24,57,24,57,16,49,3,7,1,35,16,49,[255,2],129,131,24,57,31,63,129,131,248,249,16,49,129,131,[255,2],128,129,227,231,227,231,227,231,227,231,227,231,227,231,[255,2],24,57,24,57,24,57,24,57,24,57,16,49,129,131,[255,2],24,57,24,57,24,57,24,57,129,147,195,199,231,239,[255,2],24,57,24,57,24,57,0,41,0,1,129,147,153,187,[255,2],24,57,128,145,193,[195,2],199,129,131,0,17,24,57,[255,2],17,51,17,51,17,51,131,167,199,207,199,207,199,207,[255,2],0,1,248,249,241,243,195,199,135,143,15,31,0,1,[195,2],[207,12],[195,2],[255,16],[195,2],[243,12],[195,2],[239,2],[199,2],[147,2],[255,20],254,[255,3],[1,2],[255,20],131,135,49,115,129,131,17,51,17,51,128,129,[255,2],31,63,31,63,3,35,8,25,24,57,8,25,3,35,[255,4],129,131,8,25,31,63,31,63,8,25,129,131,[255,2],248,249,248,249,128,137,16,49,24,57,16,49,128,137,[255,4],129,131,24,57,24,57,3,7,28,61,129,131,[255,2],225,227,199,207,1,3,199,207,199,207,199,207,199,207,[255,2],128,137,16,49,24,57,16,49,128,137,248,249,129,131,[255,2],31,63,31,63,3,7,17,51,24,57,24,57,24,57,[255,2],199,207,[255,2],135,143,199,207,199,207,199,207,199,207,[255,2],248,249,[255,2],240,241,248,249,24,57,24,57,129,131,[255,2],31,63,17,51,3,39,7,15,3,7,1,35,16,49,[255,2],135,143,199,207,199,207,199,207,199,207,199,207,199,207,[255,4],25,59,0,17,0,41,0,41,24,57,24,57,[255,4],1,35,8,25,24,57,24,57,24,57,24,57,[255,4],129,131,16,49,24,57,24,57,8,25,129,131,[255,4],1,35,8,25,24,57,8,25,1,35,31,63,[255,4],128,137,16,49,24,57,16,49,128,137,248,249,[255,4],128,145,131,151,135,[143,2],159,143,159,143,159,[255,4],129,131,28,61,15,31,224,225,56,121,129,131,[255,2],199,207,199,207,1,3,199,207,199,207,199,207,225,227,[255,4],24,57,24,57,24,57,24,57,0,49,129,131,[255,4],24,57,24,57,24,57,129,147,195,199,231,239,[255,4],24,57,24,57,0,41,0,41,0,17,153,187,[255,4],24,57,129,147,195,199,195,199,129,147,24,57,[255,4],24,57,24,57,8,25,128,129,248,249,129,131,[255,4],0,1,241,243,227,231,199,207,143,159,0,1,[255,6],9,91,36,37,36,109,36,109,36,109,[255,6],193,195,159,191,193,195,252,253,129,131,[255,6],[0,3],[255,13],143,159,36,109,241,243,[255,4],207,223,207,223,207,223,207,223,207,223,207,223,207,223,207,223,[127,162],64,65,66,67,68,69,[127,58],32,33,34,35,36,37,38,39,40,70,71,72,73,74,75,[127,49],32,33,34,35,36,37,38,39,40,48,49,50,51,52,53,54,55,56,[127,268],0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59,61,63,[76,384],[0,1024],[127,24],[0,8],127,96,97,98,99,100,101,[127,4],25,26,27,28,29,30,31,[127,6],[0,8],127,112,113,114,115,116,117,[127,4],41,42,43,44,45,46,47,[127,6],[0,8],[127,2],128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,[127,6],[0,8],[127,2],144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,[127,6],[0,8],[127,2],160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,[127,6],[0,8],[127,2],176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,[127,6],[0,8],[127,2],192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,[127,6],[0,8],[127,2],208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,[127,6],[0,8],[127,2],224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,[127,6],[0,8],[127,2],240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,[127,6],[0,8],[127,2],0,1,118,119,120,5,6,7,8,9,10,11,12,13,14,15,[127,6],[0,8],[127,2],84,85,84,85,84,85,84,85,84,85,84,85,84,85,84,85,[127,6],[0,8],[127,2],86,87,86,87,86,87,86,87,86,87,86,87,86,87,86,87,[127,6],[0,8],[127,2],[90,16],[127,6],[0,8],[127,2],[91,16],[127,6],[0,8],[104,20],[127,4],[0,8],[127,24],[0,8],[127,24],[0,8],[127,24],[0,8],[127,24],[0,8],[127,24],[0,8],[127,24],[0,8],[127,24],[0,288],[16,8],0,[6,6],[0,4],[5,7],[0,6],[16,8],0,[6,6],[0,4],5,2,[7,4],5,[0,6],[16,8],[0,2],[2,4],[1,5],5,2,[7,4],5,[0,6],[16,8],[0,2],2,[7,2],2,[1,2],[7,2],1,5,[7,5],5,[0,6],[16,8],[0,2],2,[7,2],2,[1,2],[7,2],1,[5,2],[1,4],5,[0,6],[16,8],[0,2],[2,4],[1,5],[5,7],[0,6],[16,8],[0,2],[2,4],[1,5],[5,7],[0,6],[16,8],[0,2],[2,4],5,[1,4],[5,7],[0,6],[16,8],[0,2],[5,16],[0,6],[16,8],[0,2],2,[5,15],[0,6],[16,8],[0,4],[6,3],[0,4],[5,7],[0,6],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,264],[255,1024],[0,6],[63,3],33,43,53,67,124,229,154,[0,4],[63,3],33,43,53,55,61,75,126,229,154,[0,6],[63,3],33,43,53,67,124,229,154,[0,6],[63,3],33,43,53,195,252,205,54,[0,6],[63,3],33,43,53,67,124,253,142,[0,6],[63,3],33,43,53,67,124,253,134,[0,12],255,57,255,96,[0,12],[255,3],28,[0,12],255,156,255,2,[0,12],255,63,255,79,[0,12],[255,3],231,[0,12],255,132,255,134,[255,16],[0,48],253,130,253,130,101,90,67,124,63,32,43,52,63,41,[63,2],253,130,253,130,101,90,67,124,63,32,63,62,43,53,63,41,253,130,253,130,101,90,67,124,63,32,43,52,63,41,[63,2],253,6,253,6,205,182,67,124,63,32,43,52,63,41,[63,2],205,54,253,6,253,134,67,124,63,32,43,52,63,41,[63,2],253,14,205,54,253,6,195,252,63,32,43,52,63,41,[31,2],255,121,255,121,255,112,255,97,255,73,255,73,255,72,255,32,[255,3],62,255,15,255,38,255,36,255,36,255,102,255,207,255,206,255,2,255,230,255,2,255,254,255,254,255,6,255,4,255,79,255,79,255,79,255,76,255,76,255,76,255,76,255,33,255,225,255,231,255,231,255,135,255,131,255,161,255,165,255,199,255,254,255,134,255,50,255,242,255,242,255,242,255,242,255,132,[0,72],[1,2],2,3,4,7,8,15,[0,8],[254,2],2,254,7,255,63,255,[0,6],[31,2],32,63,64,127,128,255,248,255,[0,6],[248,2],16,240,32,224,64,192,[128,2],[0,8],[1,2],3,2,7,4,15,8,[0,8],[254,3],2,255,7,255,63,[0,6],[31,2],63,32,127,64,255,128,255,248,[0,6],[248,2],240,16,224,32,192,64,[128,2],[0,8],[1,2],2,3,4,7,8,15,[0,8],[254,2],2,254,7,255,63,255,[0,6],[31,2],32,63,64,127,128,255,248,255,[0,4],[3,2],255,252,31,248,47,232,79,200,159,153,[0,48],[255,16],[31,2],[0,2],[31,2],32,63,64,127,128,255,1,[255,3],226,255,34,63,250,255,27,255,119,255,129,255,1,[255,3],9,255,9,255,16,255,224,255,4,255,12,255,20,247,[231,2],[0,4],[128,2],64,192,32,224,32,224,32,[224,3],[31,2],[0,2],[31,2],63,32,127,64,255,128,255,1,[255,3],226,63,34,255,250,255,27,255,119,255,129,255,1,[255,3],9,255,9,255,16,255,224,255,4,255,12,247,20,[231,2],[0,4],[128,2],192,64,224,32,224,32,224,32,[224,2],[31,2],[0,2],[31,2],32,63,64,127,128,255,1,[255,3],226,255,34,63,250,255,27,255,119,255,129,255,1,[255,3],9,255,9,255,16,255,224,255,4,255,12,255,20,247,[231,2],31,17,30,18,[140,2],88,216,60,228,60,228,60,228,[248,2],[0,64],[255,6],252,195,252,131,255,159,255,159,255,159,[255,6],0,255,0,[255,13],0,255,0,[255,13],127,135,127,131,255,243,255,243,255,243,[255,22],252,195,252,131,255,159,255,159,255,159,[255,6],0,255,0,[255,13],0,255,0,[255,13],127,135,127,131,255,243,255,243,255,243,255,252,255,252,255,252,255,252,255,252,255,253,255,252,255,252,[255,3],163,[255,12],0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,15,255,15,255,15,255,15,255,15,255,15,255,15,255,15,[255,2],243,255,243,255,243,255,243,255,243,255,243,255,243,255,243,255,159,255,159,255,159,227,159,227,159,255,159,255,159,255,159,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,[255,2],243,255,243,255,243,255,243,255,243,255,243,255,243,255,243,[255,17],159,255,159,255,159,227,159,227,159,255,159,255,159,255,159,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,[255,2],243,255,243,255,243,255,243,255,243,255,243,255,243,255,243,255,252,255,252,255,252,255,252,255,252,255,252,255,252,255,252,[255,16],0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,15,255,15,255,15,255,15,255,15,255,15,255,15,255,15,[255,2],243,255,243,255,243,255,243,255,243,255,243,255,243,255,243,255,159,255,159,255,159,255,159,255,159,255,159,255,159,255,159,0,255,0,255,0,255,0,255,0,[255,7],1,255,1,255,1,255,1,255,1,[255,8],243,255,243,255,243,255,243,255,243,255,243,255,243,255,243,[255,17],159,255,159,255,159,255,159,255,159,255,159,255,159,255,159,0,255,0,255,0,255,0,255,0,[255,7],1,255,1,255,1,255,1,255,1,[255,8],243,255,243,255,243,255,243,255,243,255,243,255,243,255,243,255,252,255,252,255,252,255,252,255,252,255,252,255,252,255,252,[255,15],127,[255,7],212,255,160,255,136,[255,11],74,255,197,255,65,[255,11],203,255,178,255,128,[255,11],159,255,31,255,47,[255,5],243,255,243,255,243,255,243,255,243,255,243,255,243,255,227,255,159,255,143,252,131,252,131,252,131,252,131,252,131,255,131,10,[255,3],0,255,0,255,23,255,0,255,0,255,0,255,39,[255,3],0,255,0,255,224,255,0,255,0,255,0,[255,2],243,255,227,127,131,127,131,127,131,127,131,127,131,127,131,[255,17],159,255,143,252,131,252,131,252,131,252,131,252,131,255,131,10,[255,3],0,255,0,255,23,255,0,255,0,255,0,255,39,[255,3],0,255,0,255,224,255,0,255,0,255,0,[255,2],243,255,227,127,131,127,131,127,131,127,131,127,131,127,131,255,252,255,252,255,252,255,252,255,252,255,252,255,252,255,252,255,7,248,7,248,7,248,7,248,7,248,7,248,7,248,7,[255,2],0,255,0,255,0,255,1,255,1,255,1,255,0,[255,3],0,255,0,255,0,255,200,255,191,255,239,255,0,[255,3],0,255,0,255,0,255,17,255,252,255,124,255,0,[255,2],254,1,254,1,254,1,254,1,254,1,254,1,254,1,254,255,3,255,3,255,3,255,3,255,3,255,3,255,3,255,3,255,131,255,143,255,143,255,131,255,131,252,131,252,131,252,131,0,255,192,255,192,255,0,255,0,255,0,255,0,255,28,255,0,255,28,255,28,255,28,255,0,255,0,255,0,255,112,[255,2],227,255,227,255,227,127,131,127,131,127,131,127,131,127,131,[255,17],131,255,143,255,143,255,131,255,131,252,131,252,131,252,131,0,255,192,255,192,255,0,255,0,255,0,255,0,255,28,255,0,255,28,255,28,255,28,255,0,255,0,255,0,255,112,[255,2],227,255,227,255,227,127,131,127,131,127,131,127,131,127,131,255,252,255,252,255,252,255,252,255,252,255,252,255,252,255,252,255,7,255,7,255,7,255,7,255,127,255,124,255,124,255,127,192,255,192,255,192,255,192,255,252,255,252,255,252,255,252,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,7,255,15,255,15,255,1,254,1,254,3,255,7,255,7,255,135,255,199,127,195,[255,2],3,255,3,255,195,255,163,255,227,255,227,255,227,255,195,252,131,252,131,254,129,255,128,255,128,255,128,255,224,[255,2],28,255,0,255,0,[255,2],0,255,0,255,0,255,0,255,192,113,255,2,255,2,253,255,1,255,2,255,0,255,0,255,3,127,163,127,203,255,147,255,35,255,75,255,147,255,15,[255,18],252,131,252,131,254,129,255,128,255,128,255,128,255,224,[255,2],28,255,0,255,0,[255,2],0,255,0,255,0,255,0,255,192,113,255,2,255,2,253,255,1,255,2,255,0,255,0,255,3,127,163,127,203,255,147,255,35,255,75,255,147,255,15,[255,3],252,255,252,255,252,255,252,255,252,255,252,255,252,255,252,255,127,255,7,255,7,255,7,255,7,248,7,248,7,248,7,252,255,192,255,192,255,192,255,192,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,15,255,15,255,7,255,0,255,0,255,0,255,0,255,0,255,193,254,193,254,129,254,1,254,1,254,1,254,1,254,1,254,255,3,255,3,255,3,255,3,255,3,255,3,255,3,255,3,[255,22],254,255,252,255,248,255,241,255,243,[255,7],6,255,6,255,124,255,252,255,249,[255,7],60,255,60,255,56,255,56,255,24,[255,7],231,255,231,255,199,255,195,255,67,[255,7],3,255,3,255,3,255,63,255,7,[255,7],193,255,192,255,192,255,156,255,152,[255,7],241,255,192,255,132,255,158,255,30,[255,7],56,255,153,255,145,255,19,255,71,[255,2],252,255,252,255,252,255,252,255,252,255,252,255,252,255,252,248,7,248,7,248,7,248,7,248,7,248,7,248,7,248,7,0,255,0,255,0,255,1,255,1,255,0,255,0,255,1,255,0,255,0,255,96,255,249,255,249,255,0,255,40,255,137,255,0,255,0,255,96,255,248,255,248,255,0,255,40,255,168,255,1,254,1,254,1,254,1,254,3,254,37,254,73,255,19,254,255,3,255,3,255,3,255,3,255,67,255,147,255,35,255,67,[255,16],243,255,227,255,227,255,243,255,240,255,252,[255,5],249,255,8,255,128,255,131,255,3,255,39,[255,5],18,255,18,255,18,255,146,255,134,255,135,[255,5],18,255,18,255,18,255,48,255,48,255,112,[255,5],7,255,7,255,127,255,127,255,7,255,7,[255,5],129,255,128,255,156,255,28,255,1,255,3,[255,5],62,255,62,255,28,255,156,255,128,255,193,[255,5],71,255,79,255,79,255,207,255,207,255,207,[255,6],252,255,252,255,252,255,252,255,252,255,252,255,254,[255,2],252,3,255,0,255,0,255,0,255,0,255,0,255,0,255,128,0,255,128,127,255,0,255,0,255,0,255,0,255,0,255,[0,2],255,0,[255,2],0,255,0,255,0,255,0,255,0,255,[0,2],255,0,[255,2],0,255,0,255,0,255,0,255,0,255,0,39,252,95,233,255,18,255,36,255,73,255,18,255,36,255,64,255,147,255,35,255,67,255,147,255,35,255,67,255,135,255,31,[255,161],252,[255,15],0,255,224,[255,13],0,255,0,[255,13],0,255,0,[255,13],3,255,127,[255,28],[0,144],[255,3],254,255,252,255,252,255,252,255,252,255,252,255,252,[255,2],248,7,248,7,248,7,[255,10],0,255,221,255,0,[255,11],0,255,0,255,0,[255,11],0,255,0,255,0,[255,11],1,254,1,254,1,254,[255,11],7,255,3,255,3,255,243,255,247,255,243,255,247,[250,2],[191,2],[129,2],[187,2],[123,2],[247,4],[207,2],[255,8],[131,2],[255,8],[239,2],[223,2],[191,2],[187,2],[125,4],[1,2],[253,2],[234,2],[1,2],[239,2],[171,2],[173,2],[109,4],[255,8],[131,2],[255,8],[253,2],[251,2],[231,2],[151,2],[247,6],[255,2],[239,2],[129,2],[237,4],[221,4],[187,2],[255,2],[131,2],[255,2],[1,2],[253,4],[251,2],[135,2],[255,8],[131,2],[255,7],252,255,252,255,252,255,252,255,252,255,252,255,252,255,252,[255,15],131,[255,2],0,255,0,255,0,255,0,255,0,255,0,255,0,[255,3],0,255,0,255,0,255,0,255,0,255,0,255,0,[255,3],0,255,0,255,0,255,0,255,0,255,0,255,0,[255,3],15,255,15,255,15,255,15,255,15,255,15,255,15,[255,2],243,255,247,255,243,255,243,255,243,255,243,255,247,255,243,[245,2],[250,2],[193,2],[55,2],[239,4],[247,2],[249,2],[251,2],[160,2],[187,2],[32,2],[170,2],[160,2],[187,2],[164,2],[255,2],[129,2],[173,2],[129,2],[173,2],[129,2],[173,2],[105,2],[255,4],[191,8],[187,2],[199,2],[255,2],[249,2],[195,2],[55,2],[239,4],[247,2],[249,2],[255,2],[1,2],[239,2],[231,2],[235,2],[239,6],[255,2],[239,2],[131,2],[247,2],[251,4],[191,2],[195,2],[255,4],[251,2],[189,6],[175,2],[223,2],[255,10],[199,2],[215,2],[199,2],[0,96],[255,20],[195,2],[253,2],[251,2],[255,2],[191,2],[193,2],[255,2],[199,2],[171,2],[109,6],[93,2],[187,2],[245,2],[186,2],[129,2],[187,2],[123,2],[247,4],[207,2],[255,8],[131,2],[255,8],[239,2],[223,2],[191,2],[187,2],[125,4],[1,2],[255,2],[251,2],[65,2],[123,4],[99,2],[89,2],[231,2],[255,4],[183,2],[129,2],[55,2],[183,2],[189,2],[195,2],[239,4],[223,4],[143,2],[183,2],[117,2],[123,2],[255,2],[129,2],[173,2],[129,2],[173,2],[129,2],[173,2],[105,2],[245,2],[250,2],[193,2],[55,2],[239,4],[247,2],[249,2],[255,2],[247,2],[129,2],[247,2],[199,2],[215,2],[231,2],[143,2],[255,10],[199,2],[215,2],[199,2],[0,64],[255,2],[0,2],127,0,64,0,64,0,79,15,79,8,64,0,[255,2],1,3,249,7,25,23,25,23,249,247,249,7,57,39,64,0,79,15,79,8,79,8,79,8,127,56,0,127,0,255,57,39,249,231,249,7,249,7,249,7,249,7,5,251,3,253,[255,4],128,255,128,255,159,224,152,224,152,224,153,224,[255,4],1,255,1,[255,2],1,7,1,7,1,255,1,153,224,152,224,152,224,153,224,153,224,153,224,153,224,159,224,255,1,15,1,15,1,255,1,255,1,255,1,255,1,255,1,[255,2],15,255,55,255,55,237,54,237,14,249,54,253,54,237,54,237,54,237,54,237,14,253,254,249,254,1,252,131,193,[255,5],193,255,191,193,127,128,67,128,77,128,77,128,77,128,67,128,77,128,77,128,77,128,77,128,67,128,255,193,[0,64],248,255,128,253,128,205,128,207,128,192,128,192,128,201,0,153,63,255,63,127,63,[127,2],255,63,127,63,127,1,255,0,129,[255,4],135,255,135,207,135,207,135,207,8,159,0,153,[255,4],0,255,0,153,0,153,0,153,0,153,144,249,[255,4],0,255,0,3,0,3,0,243,194,231,194,231,[255,4],31,255,31,63,31,63,31,63,7,31,3,7,[0,32],[255,2],[0,2],[255,12],[0,112],22,249,230,249,221,227,219,231,195,[255,7],126,129,128,255,254,255,254,255,254,[255,7],198,57,222,33,251,4,195,[60,2],[255,7],230,249,205,243,58,199,54,207,6,[255,7],184,199,110,145,214,57,214,57,16,[255,7],219,39,195,63,223,63,223,63,31,[255,9],[254,2],[230,2],[242,2],[248,2],255,248,255,242,255,231,[255,2],[64,4],[115,2],[192,2],255,115,255,48,255,112,[255,2],[76,4],[204,2],[76,2],255,252,255,65,255,67,[0,96],[255,16],2,[255,8191],[127,24],[0,8],127,96,97,98,99,100,101,[127,17],[0,8],127,112,113,114,115,116,117,[127,6],27,28,29,30,31,[127,6],[0,8],[127,2],128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,[127,6],[0,8],[127,2],144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,[127,6],[0,8],[127,2],160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,[127,6],[0,8],[127,2],176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,[127,6],[0,8],[127,2],192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,[127,6],[0,8],[127,2],208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,[127,6],[0,8],[127,2],224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,[127,6],[0,8],[127,2],240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,[127,6],[0,8],[127,2],0,1,118,119,120,5,6,7,8,9,10,11,12,13,14,15,[127,6],[0,8],[127,2],84,85,84,85,84,85,84,85,84,85,84,85,84,85,84,85,[127,6],[0,8],[127,2],86,87,86,87,86,87,86,87,86,87,86,87,86,87,86,87,[127,6],[0,8],[127,2],[90,16],[127,6],[0,8],[127,2],[91,16],[127,6],[0,8],[127,24],[0,8],[127,24],[0,8],[127,24],[0,8],[127,24],[0,8],[127,24],[0,8],[127,24],[0,8],[127,24],[0,8],[127,24],[0,288],[16,8],0,[6,6],[0,17],[16,8],0,[6,6],[0,6],[4,5],[0,6],[16,8],[0,2],[3,10],0,[4,5],[0,6],[16,8],[0,2],[3,9],[0,2],[4,5],[0,6],[16,8],[0,2],[3,9],[0,2],[4,5],[0,6],[16,8],[0,2],[3,9],[0,2],4,[3,3],4,[0,6],[16,8],[0,2],[4,12],[3,3],4,[0,6],[16,8],[0,2],[4,16],[0,6],[16,8],[0,2],[4,16],[0,6],[16,8],[0,2],[4,16],[0,6],[16,8],[0,2],[4,2],[6,3],[4,11],[0,6],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,264],[255,1024],[0,6],[63,3],33,43,53,67,124,229,154,[0,4],[63,3],33,43,53,55,61,75,126,229,154,[0,6],[63,3],33,43,53,67,124,229,154,[0,6],[63,3],33,43,53,195,252,205,54,[0,6],[63,3],33,43,53,67,124,253,142,[0,6],[63,3],33,43,53,67,124,253,134,[0,12],57,255,96,255,[0,12],[255,2],28,255,[0,12],156,255,2,255,[0,12],63,255,79,255,[0,12],[255,2],231,255,[0,12],132,255,134,[255,17],[0,48],253,130,253,130,101,90,67,124,63,32,43,52,63,41,[63,2],253,130,253,130,101,90,67,124,63,32,63,62,43,53,63,41,253,130,253,130,101,90,67,124,63,32,43,52,63,41,[63,2],253,6,253,6,205,182,67,124,63,32,43,52,63,41,[63,2],205,54,253,6,253,134,67,124,63,32,43,52,63,41,[63,2],253,14,205,54,253,6,195,252,63,32,43,52,63,41,[31,2],121,255,121,255,112,255,97,255,73,255,73,255,72,255,32,[255,3],62,255,15,255,38,255,36,255,36,255,102,255,207,255,206,255,2,255,230,255,2,255,254,255,254,255,6,255,4,255,79,255,79,255,79,255,76,255,76,255,76,255,76,255,33,255,225,255,231,255,231,255,135,255,131,255,161,255,165,255,199,255,254,255,134,255,50,255,242,255,242,255,242,255,242,255,132,255,[0,72],[1,2],2,3,4,7,8,15,[0,8],[254,2],2,254,7,255,63,255,[0,6],[31,2],32,63,64,127,128,255,248,255,[0,6],[248,2],16,240,32,224,64,192,[128,2],[0,8],[1,2],3,2,7,4,15,8,[0,8],[254,3],2,255,7,255,63,[0,6],[31,2],63,32,127,64,255,128,255,248,[0,6],[248,2],240,16,224,32,192,64,[128,2],[0,8],[1,2],2,3,4,7,8,15,[0,8],[254,2],2,254,7,255,63,255,[0,6],[31,2],32,63,64,127,128,255,248,255,[0,4],[3,2],255,252,31,248,47,232,79,200,159,153,[0,64],[31,2],[0,2],[31,2],32,63,64,127,128,255,1,[255,3],226,255,34,63,250,255,27,255,119,255,129,255,1,[255,3],9,255,9,255,16,255,224,255,4,255,12,255,20,247,[231,2],[0,4],[128,2],64,192,32,224,32,224,32,[224,3],[31,2],[0,2],[31,2],63,32,127,64,255,128,255,1,[255,3],226,63,34,255,250,255,27,255,119,255,129,255,1,[255,3],9,255,9,255,16,255,224,255,4,255,12,247,20,[231,2],[0,4],[128,2],192,64,224,32,224,32,224,32,[224,2],[31,2],[0,2],[31,2],32,63,64,127,128,255,1,[255,3],226,255,34,63,250,255,27,255,119,255,129,255,1,[255,3],9,255,9,255,16,255,224,255,4,255,12,255,20,247,[231,2],31,17,30,18,[140,2],88,216,60,228,60,228,60,228,[248,2],[0,64],[255,4],252,255,225,255,192,255,129,255,131,255,131,[255,5],1,255,238,255,249,255,252,255,6,255,142,[255,7],63,255,159,255,79,255,15,255,15,[255,5],252,255,225,255,192,255,129,255,131,255,131,[255,5],1,255,238,255,249,255,252,255,6,255,142,[255,7],63,255,159,255,79,255,15,255,15,[255,5],252,255,225,255,192,255,129,255,131,255,131,[255,5],1,255,238,255,249,255,252,255,6,255,142,[255,7],63,255,159,255,79,255,15,255,15,[255,33],243,255,179,255,179,255,147,255,147,255,147,255,147,255,147,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,85,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,85,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,84,255,207,255,205,255,205,255,201,255,201,255,201,255,201,255,201,255,131,255,152,255,204,255,225,191,252,159,255,131,255,128,255,128,254,255,248,255,0,255,248,255,1,255,254,255,254,3,255,1,15,255,15,255,31,255,47,255,207,255,15,255,15,255,15,255,131,255,152,255,204,255,161,255,156,255,131,255,128,255,128,255,254,255,248,255,0,255,248,255,1,255,254,255,2,255,1,255,15,255,15,255,31,255,47,255,207,255,15,255,15,255,15,255,131,255,152,255,204,255,161,255,156,255,131,255,128,255,128,255,254,255,248,255,0,255,248,255,1,255,254,255,2,255,1,255,15,255,15,255,31,255,47,255,207,255,15,255,15,255,15,[255,33],147,255,147,255,147,255,147,255,145,255,145,255,153,255,156,255,127,255,127,255,127,255,127,255,127,255,0,[255,3],7,[255,11],0,[255,5],254,255,254,255,254,255,254,255,254,255,0,[255,3],224,255,201,255,201,255,201,255,201,255,137,255,137,255,153,255,57,[255,2],128,255,128,255,128,255,176,255,170,255,188,255,171,255,138,255,0,255,0,255,0,255,0,255,0,255,128,255,222,255,157,143,255,207,127,239,63,255,31,255,15,255,39,255,227,255,99,128,255,128,255,128,255,176,255,170,255,188,255,171,255,138,255,0,255,0,255,0,255,0,255,0,255,128,255,222,255,157,255,143,255,79,255,47,255,31,255,15,255,39,255,227,255,99,255,128,255,128,255,128,255,176,207,170,213,188,195,171,212,138,245,0,255,0,255,0,255,0,255,0,255,128,127,222,33,157,98,143,255,79,255,47,255,31,255,15,255,39,223,227,31,99,159,[255,32],156,255,158,255,159,255,159,255,159,255,159,255,159,255,159,255,7,255,7,[255,5],0,255,224,[255,13],0,255,0,[255,5],224,255,224,[255,5],0,255,7,[255,5],57,255,121,255,249,255,249,255,249,255,249,255,249,255,249,[255,2],128,255,128,255,128,255,160,255,144,255,206,255,225,255,252,255,223,255,0,255,0,255,0,255,0,255,0,255,92,255,1,255,231,255,15,255,31,239,63,207,127,223,127,[255,4],128,255,128,255,128,255,160,255,144,255,206,255,225,255,252,255,223,255,0,255,0,255,0,255,0,255,0,255,92,255,1,255,231,255,15,255,31,255,47,255,79,255,95,[255,5],128,255,128,255,128,255,160,255,144,255,206,255,225,255,252,255,223,32,0,255,0,255,0,255,0,255,0,255,92,255,1,255,231,31,15,255,31,255,47,255,79,255,95,[255,37],159,255,159,255,159,255,159,255,159,255,159,255,159,255,159,[255,4],249,255,250,255,248,[255,3],29,255,64,255,52,[255,3],4,255,13,255,164,[255,3],209,255,4,255,16,[255,3],47,255,95,255,95,[255,3],103,255,0,255,65,249,255,249,255,249,255,249,255,249,207,249,207,249,255,249,[255,37],248,255,240,255,231,255,231,255,207,255,200,[255,5],51,255,35,255,225,255,225,255,233,255,77,[255,5],206,255,206,255,206,255,140,255,132,255,145,[255,5],96,255,96,255,103,255,103,255,65,255,79,[255,5],225,255,224,255,236,255,236,255,224,255,236,[255,5],226,255,201,255,153,255,153,255,153,255,153,[255,5],51,255,39,255,15,255,15,255,159,255,159,[255,33],159,255,159,255,159,255,128,255,128,255,128,255,128,255,128,[255,2],33,[255,4],0,255,0,255,0,255,0,255,0,[255,2],98,[255,4],0,255,0,255,0,255,0,[255,4],69,[255,4],0,255,0,255,0,255,0,255,0,255,249,255,249,255,249,255,1,255,1,255,1,255,1,255,1,[255,9],192,255,223,255,191,224,63,224,[255,8],127,255,63,255,223,255,239,127,206,255,198,255,224,[255,7],252,255,253,255,65,255,93,255,189,[255,7],15,255,239,255,179,255,115,255,119,[255,9],248,255,79,255,79,255,65,[255,3],224,255,239,255,223,248,31,248,206,255,204,255,193,[255,3],31,255,231,255,243,63,251,31,153,255,155,255,199,[255,7],3,255,123,255,152,255,58,255,60,[255,7],224,255,231,[255,13],127,255,127,[255,17],128,255,128,255,128,255,128,255,128,255,128,255,128,255,128,255,1,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,128,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,127,224,127,255,63,227,63,227,63,226,63,224,63,224,63,227,239,63,224,63,255,63,255,48,255,48,255,102,255,230,191,230,253,255,1,255,191,[255,2],243,255,225,255,65,255,71,255,71,239,63,224,63,255,63,255,51,255,34,255,38,255,14,255,6,251,255,3,254,255,254,255,12,255,4,255,102,255,230,255,30,223,248,223,127,255,121,255,57,255,57,255,120,255,120,255,121,248,15,248,143,255,143,255,136,255,24,255,56,255,121,223,249,123,207,120,207,[255,3],76,255,76,255,77,255,205,127,205,239,255,31,249,255,249,255,48,255,16,255,153,255,153,255,153,127,255,0,[255,4],195,255,129,255,153,255,185,255,135,[255,2],1,255,253,255,253,15,253,15,253,15,253,63,241,63,128,255,131,255,135,252,142,249,141,250,141,250,143,248,143,248,0,255,240,255,248,15,124,135,252,7,252,7,252,7,252,7,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,63,255,64,255,95,255,64,255,64,255,78,255,81,255,1,255,129,255,65,255,65,255,65,255,65,255,65,255,65,255,63,227,62,227,62,227,188,255,193,[255,7],63,230,63,240,191,240,223,255,224,[255,8],103,191,241,159,249,15,255,112,[255,8],34,255,35,255,51,[255,2],0,[255,8],62,255,14,255,143,121,255,131,[255,8],121,255,57,255,57,239,255,0,[255,7],159,249,31,249,31,249,15,255,48,[255,7],127,205,127,205,127,205,127,255,0,[255,8],153,255,152,255,156,247,255,0,[255,8],143,255,195,255,227,159,255,96,[255,7],247,63,247,63,247,63,247,255,7,[255,7],143,248,143,248,135,252,131,255,128,255,224,255,248,[255,3],252,7,252,7,248,15,240,255,0,255,0,255,0,255,240,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,81,255,81,255,78,255,64,255,63,255,0,255,0,255,15,255,65,255,65,255,65,255,65,255,129,255,7,255,31,[255,259],[0,176],254,255,249,255,230,255,217,255,209,255,223,[255,3],243,255,3,255,252,255,4,[255,3],0,255,127,255,127,255,42,[255,3],0,255,0,[255,3],0,[255,5],170,255,224,255,31,255,16,[255,3],0,255,254,255,254,255,170,255,127,255,159,255,103,255,155,255,139,255,251,[255,3],207,255,[0,768],[255,2],[0,2],127,0,64,0,64,0,79,15,79,8,64,0,[255,2],1,3,249,7,25,23,25,23,249,247,249,7,57,39,64,0,79,15,79,8,79,8,79,8,127,56,0,127,0,255,57,39,249,231,249,7,249,7,249,7,249,7,5,251,3,253,[255,4],128,255,128,255,159,224,152,224,152,224,153,224,[255,4],1,255,1,[255,2],1,7,1,7,1,255,1,153,224,152,224,152,224,153,224,153,224,153,224,153,224,159,224,255,1,15,1,15,1,255,1,255,1,255,1,255,1,255,1,[255,2],15,255,55,255,55,237,54,237,14,249,54,253,54,237,54,237,54,237,54,237,14,253,254,249,254,1,252,131,193,[255,5],193,255,191,193,127,128,67,128,77,128,77,128,77,128,67,128,77,128,77,128,77,128,77,128,67,128,255,193,[0,64],248,255,128,253,128,205,128,207,128,192,128,192,128,201,0,153,63,255,63,127,63,[127,2],255,63,127,63,127,1,255,0,129,[255,4],135,255,135,207,135,207,135,207,8,159,0,153,[255,4],0,255,0,153,0,153,0,153,0,153,144,249,[255,4],0,255,0,3,0,3,0,243,194,231,194,231,[255,4],31,255,31,63,31,63,31,63,7,31,3,7,[0,32],[255,2],[0,2],[255,12],[0,112],22,249,230,249,221,227,219,231,195,[255,7],126,129,128,255,254,255,254,255,254,[255,7],198,57,222,33,251,4,195,[60,2],[255,7],230,249,205,243,58,199,54,207,6,[255,7],184,199,110,145,214,57,214,57,16,[255,7],219,39,195,63,223,63,223,63,31,[255,9],[254,2],[230,2],[242,2],[248,2],255,248,255,242,255,231,[255,2],[64,4],[115,2],[192,2],255,115,255,48,255,112,[255,2],[76,4],[204,2],[76,2],255,252,255,65,255,67,[0,96],[255,16],3,[255,8191],[127,24],[0,8],127,96,97,98,99,100,101,[127,17],[0,8],240,112,113,114,115,116,117,[241,12],242,[127,4],[0,8],3,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,127,2,[127,4],[0,8],19,127,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,127,2,[127,4],[0,9],127,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,127,4,[127,4],[0,8],3,127,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,127,20,[127,4],[0,8],19,127,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,127,2,[127,4],[0,9],127,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,127,4,[127,4],[0,9],127,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,127,20,[127,4],[0,8],16,[17,14],243,244,245,246,18,[127,4],[0,8],[127,4],118,119,120,[127,17],[0,8],[127,2],84,85,84,85,84,85,84,85,84,85,84,85,84,85,84,85,[127,6],[0,8],[127,2],86,87,86,87,86,87,86,87,86,87,86,87,86,87,86,87,[127,6],[0,8],[127,2],[90,16],[127,6],[0,8],[127,2],[91,16],[127,6],[0,8],[104,20],[127,4],[0,8],[127,24],[0,8],[127,24],[0,8],[127,24],[0,8],[127,24],[0,8],[127,24],[0,8],[127,24],[0,8],[127,24],[0,288],[16,8],0,[6,6],[0,17],[16,8],0,[6,6],[0,17],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,12],[1,3],[0,9],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,4],[6,3],[0,17],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,8],[0,24],[16,264],[255,1024],[0,6],[63,3],33,43,53,67,124,229,154,[0,4],[63,3],33,43,53,55,61,75,126,229,154,[0,6],[63,3],33,43,53,67,124,229,154,[0,6],[63,3],33,43,53,195,252,205,54,[0,6],[63,3],33,43,53,67,124,253,142,[0,6],[63,3],33,43,53,67,124,253,134,[0,12],255,57,255,96,[0,12],[255,3],28,[0,12],255,156,255,2,[0,12],255,63,255,79,[0,12],[255,3],231,[0,12],255,132,255,134,[255,16],[0,48],253,130,253,130,101,90,67,124,63,32,43,52,63,41,[63,2],253,130,253,130,101,90,67,124,63,32,63,62,43,53,63,41,253,130,253,130,101,90,67,124,63,32,43,52,63,41,[63,2],253,6,253,6,205,182,67,124,63,32,43,52,63,41,[63,2],205,54,253,6,253,134,67,124,63,32,43,52,63,41,[63,2],253,14,205,54,253,6,195,252,63,32,43,52,63,41,[31,2],255,121,255,121,255,112,255,97,255,73,255,73,255,72,255,32,[255,3],62,255,15,255,38,255,36,255,36,255,102,255,207,255,206,255,2,255,230,255,2,255,254,255,254,255,6,255,4,255,79,255,79,255,79,255,76,255,76,255,76,255,76,255,33,255,225,255,231,255,231,255,135,255,131,255,161,255,165,255,199,255,254,255,134,255,50,255,242,255,242,255,242,255,242,255,132,[0,72],[1,2],3,2,7,4,15,8,[0,8],[254,3],2,255,7,255,63,[0,6],[31,2],63,32,127,64,255,128,255,248,[0,6],[248,2],240,16,224,32,192,64,[128,2],[0,8],[255,2],254,2,252,4,254,62,[0,14],[31,2],[0,14],[252,2],[0,10],[1,2],3,2,[255,2],[0,6],[127,2],255,128,255,0,255,1,254,226,[0,4],[3,2],255,252,255,24,239,40,207,72,159,153,[0,96],[31,2],[0,2],[31,2],63,32,127,64,255,128,255,1,[255,3],226,63,34,255,250,255,27,255,119,255,129,255,1,[255,3],9,255,9,255,16,255,224,255,4,255,12,247,20,[231,2],[0,4],[128,2],192,64,224,32,224,32,224,32,[224,2],254,226,62,34,254,250,254,26,255,119,255,129,255,1,[255,2],63,32,127,64,255,128,[255,2],[0,8],252,4,248,8,240,16,[224,2],[0,8],252,4,248,8,240,16,[225,2],7,4,15,8,31,16,[31,2],60,36,60,36,126,66,255,129,255,16,255,48,223,80,[159,2],31,17,30,18,[140,2],216,88,252,36,252,36,252,36,[248,2],[0,96],[255,1796],[240,3],247,243,247,243,247,243,247,243,247,[255,4],[0,3],[255,13],15,[7,2],255,231,239,231,239,231,239,231,239,[255,3],252,244,203,68,59,95,160,188,[195,2],[255,5],127,255,187,68,186,69,171,84,171,84,8,[255,7],173,90,45,218,44,219,189,66,33,[255,7],251,7,144,104,208,47,215,47,7,[255,3],[0,32],[255,2],[252,2],192,203,128,187,128,160,128,[195,2],[255,5],127,255,0,68,0,69,0,84,0,84,16,[255,7],10,90,8,218,72,219,0,66,0,[255,7],3,7,0,108,4,47,7,47,7,[255,11],[240,3],247,243,247,243,247,[255,8],[0,3],[255,6],227,229,195,196,131,204,131,56,7,3,253,229,[195,2],223,243,247,243,247,243,247,243,247,243,247,243,247,243,247,243,247,[255,16],231,239,231,239,231,239,231,239,231,239,231,239,231,239,231,239,243,247,195,207,199,207,199,207,231,255,231,239,247,255,227,231,[239,2],[135,2],131,151,131,151,203,247,219,199,227,255,199,207,[195,2],[247,8],[227,2],[223,2],[199,2],243,247,193,195,193,203,193,203,229,251,237,227,241,255,227,231,[131,3],247,[195,3],247,[195,3],247,[227,3],247,243,247,163,151,49,11,241,11,97,155,131,231,195,199,227,255,[0,48],[195,2],[223,2],[211,2],[219,2],[227,2],[231,2],[219,2],[195,2],243,247,243,247,243,247,243,247,243,247,243,247,243,247,243,247,[255,16],207,223,207,223,207,223,207,223,207,223,207,223,207,223,207,223,243,247,243,247,243,247,240,244,248,247,[255,12],[0,3],[255,7],231,239,231,239,231,239,7,[15,2],247,[255,6],227,231,243,255,225,227,225,239,199,207,227,247,243,247,243,247,199,207,231,255,195,199,131,135,147,239,231,239,231,239,231,239,[251,2],[195,4],[239,6],[255,4],227,231,243,255,225,227,193,195,201,247,243,247,243,247,243,247,243,247,243,247,243,247,243,247,243,247,243,247,243,247,243,247,199,207,199,207,231,255,195,199,131,135,131,255,243,247,243,247,[0,48],[219,2],[195,4],[219,4],[223,6],243,247,243,247,243,247,240,244,240,247,[255,12],[0,3],[255,7],207,223,207,223,207,223,15,[31,2],239,[255,6],[250,2],[191,2],[129,2],[187,2],[123,2],[247,4],[207,2],[255,8],[131,2],[255,8],[239,2],[223,2],[191,2],[187,2],[125,4],[1,2],[253,2],[234,2],[1,2],[239,2],[171,2],[173,2],[109,4],[255,8],[131,2],[255,8],[253,2],[251,2],[231,2],[151,2],[247,6],[255,2],[239,2],[129,2],[237,4],[221,4],[187,2],[255,2],[131,2],[255,2],[1,2],[253,4],[251,2],[135,2],[255,8],[131,2],[255,6],[0,112],[245,2],[250,2],[193,2],[55,2],[239,4],[247,2],[249,2],[251,2],[160,2],[187,2],[32,2],[170,2],[160,2],[187,2],[164,2],[255,2],[129,2],[173,2],[129,2],[173,2],[129,2],[173,2],[105,2],[255,4],[191,8],[187,2],[199,2],[255,2],[249,2],[195,2],[55,2],[239,4],[247,2],[249,2],[255,2],[1,2],[239,2],[231,2],[235,2],[239,6],[255,2],[239,2],[131,2],[247,2],[251,4],[191,2],[195,2],[255,4],[251,2],[189,6],[175,2],[223,2],[255,10],[199,2],[215,2],[199,2],[0,96],[255,20],[195,2],[253,2],[251,2],[255,2],[191,2],[193,2],[255,2],[199,2],[171,2],[109,6],[93,2],[187,2],[245,2],[186,2],[129,2],[187,2],[123,2],[247,4],[207,2],[255,8],[131,2],[255,8],[239,2],[223,2],[191,2],[187,2],[125,4],[1,2],[255,2],[251,2],[65,2],[123,4],[99,2],[89,2],[231,2],[255,4],[183,2],[129,2],[55,2],[183,2],[189,2],[195,2],[239,4],[223,4],[143,2],[183,2],[117,2],[123,2],[255,2],[129,2],[173,2],[129,2],[173,2],[129,2],[173,2],[105,2],[245,2],[250,2],[193,2],[55,2],[239,4],[247,2],[249,2],[255,2],[247,2],[129,2],[247,2],[199,2],[215,2],[231,2],[143,2],[255,10],[199,2],[215,2],[199,2],[0,64],[255,2],[0,2],127,0,64,0,64,0,79,15,79,8,64,0,[255,2],1,3,249,7,25,23,25,23,249,247,249,7,57,39,64,0,79,15,79,8,79,8,79,8,127,56,0,127,0,255,57,39,249,231,249,7,249,7,249,7,249,7,5,251,3,253,[255,4],128,255,128,255,159,224,152,224,152,224,153,224,[255,4],1,255,1,[255,2],1,7,1,7,1,255,1,153,224,152,224,152,224,153,224,153,224,153,224,153,224,159,224,255,1,15,1,15,1,255,1,255,1,255,1,255,1,255,1,[255,2],15,255,55,255,55,237,54,237,14,249,54,253,54,237,54,237,54,237,54,237,14,253,254,249,254,1,252,131,193,[255,5],193,255,191,193,127,128,67,128,77,128,77,128,77,128,67,128,77,128,77,128,77,128,77,128,67,128,255,193,[0,64],[255,2],[254,2],[230,2],[231,2],[224,4],[228,2],[204,2],[255,2],[191,4],[255,2],[63,4],[255,2],[192,2],[255,6],[231,6],[207,2],[204,2],[255,6],[204,8],[252,2],[255,6],[129,4],[249,2],[243,4],[255,6],[159,6],[143,2],[131,2],[0,32],[255,2],[0,2],[255,12],[0,112],255,252,255,249,255,241,255,231,[255,9],192,[255,15],156,255,144,255,130,255,158,[255,9],249,255,249,255,99,255,103,[255,9],227,255,201,255,156,255,156,[255,9],147,255,159,255,159,255,159,[255,10],[254,2],[230,2],[242,2],[248,2],255,248,255,242,255,231,[255,2],[64,4],[115,2],[192,2],255,115,255,48,255,112,[255,2],[76,4],[204,2],[76,2],255,252,255,65,255,67,[0,96],[255,16],4,[255,16383],62,255,234,0,208,250,1,208,245,33,1,208,6,63,175,34,5,32,252,241,234,1,208,62,74,234,5,208,234,7,208,234,10,208,234,12,208,62,64,234,6,208,234,11,208,62,255,234,29,208,175,6,8,17,60,0,33,64,208,119,25,5,32,251,175,6,4,17,24,0,33,32,210,119,25,5,32,251,62,128,224,38,62,0,224,37,62,8,224,18,224,23,224,33,62,128,224,20,224,25,224,35,62,0,224,26,62,255,224,37,62,119,224,36,62,0,234,0,208,195,93,62,197,213,205,39,69,33,0,208,203,238,33,7,208,42,134,34,62,0,142,50,42,214,74,71,126,222,0,48,13,205,68,65,205,71,69,205,95,65,32,248,24,36,50,112,205,147,65,205,176,75,205,164,65,32,248,205,68,65,205,89,69,205,95,65,32,248,33,8,208,42,214,74,71,126,222,0,48,220,33,0,208,203,174,33,12,208,42,134,34,62,0,142,50,42,214,74,71,126,222,0,48,13,205,75,65,205,71,69,205,95,65,32,248,24,36,50,112,205,147,65,205,194,75,205,164,65,32,248,205,75,65,205,89,69,205,95,65,32,248,33,13,208,42,214,74,71,126,222,0,48,220,205,147,65,205,251,75,205,164,65,32,248,250,26,208,167,32,2,62,15,61,234,26,208,14,8,17,60,0,33,64,208,126,230,248,119,23,203,24,25,13,32,245,120,234,36,208,209,193,195,141,62,17,64,208,62,4,24,12,17,48,209,62,4,24,5,17,64,208,62,8,33,15,208,34,123,34,114,201,33,15,208,53,200,35,62,60,134,34,62,0,142,119,31,201,17,32,210,62,1,14,18,24,34,17,56,210,62,1,14,23,24,25,17,80,210,62,1,14,28,24,16,17,104,210,62,1,14,33,24,7,17,32,210,62,4,14,18,33,18,208,34,123,34,122,34,113,201,33,18,208,53,200,35,62,24,134,34,62,0,142,34,126,198,5,119,31,201,120,177,202,1,68,205,2,67,250,63,208,203,127,32,74,71,214,4,48,66,47,60,234,15,208,33,64,208,120,167,40,7,17,60,0,25,5,32,252,125,234,16,208,124,234,17,208,24,8,250,16,208,111,250,17,208,103,203,126,40,15,1,8,0,9,250,62,208,190,48,5,205,102,67,24,3,205,65,67,40,5,205,95,65,32,219,195,141,62,205,68,65,62,1,234,59,208,175,234,58,208,250,16,208,111,250,17,208,103,203,126,32,16,205,65,67,40,78,250,59,208,71,250,58,208,176,234,58,208,250,59,208,203,39,234,59,208,205,95,65,32,215,205,68,65,62,1,234,59,208,250,59,208,71,250,58,208,160,32,23,250,16,208,111,250,17,208,103,1,8,0,9,250,62,208,190,56,5,205,65,67,40,13,250,59,208,203,39,234,59,208,205,95,65,32,210,195,141,62,120,177,202,22,68,121,234,27,208,120,234,28,208,175,234,32,208,175,234,37,208,205,2,67,205,75,65,205,65,67,40,17,205,95,65,32,246,24,15,250,16,208,111,250,17,208,103,175,119,205,95,65,32,241,195,141,62,250,27,208,185,32,193,250,28,208,184,32,187,250,36,208,230,240,40,180,195,141,62,250,27,208,185,32,171,250,28,208,184,32,165,250,36,208,230,240,40,3,195,141,62,175,234,37,208,205,75,65,250,16,208,111,250,17,208,103,126,230,96,40,2,203,254,205,95,65,32,236,195,141,62,120,234,57,208,254,0,121,40,6,56,8,225,195,141,62,254,7,48,248,234,56,208,105,96,[41,3],1,26,83,9,42,95,42,87,42,234,38,208,35,42,234,62,208,42,234,63,208,126,234,60,208,[19,2],123,234,23,208,122,234,24,208,201,250,16,208,111,250,17,208,103,62,160,34,35,250,23,208,34,250,24,208,34,250,38,208,34,35,250,56,208,34,250,57,208,34,250,62,208,34,33,60,208,53,200,33,23,208,62,2,134,34,62,0,142,119,31,201,62,192,34,175,34,42,95,42,87,58,234,38,208,205,181,62,120,50,113,1,7,0,9,175,[34,6],62,255,[34,2],175,[34,4],62,255,34,62,64,34,175,[34,3],62,2,34,175,[34,4],62,23,34,175,[34,16],62,255,34,201,120,177,202,1,68,121,234,56,208,120,234,57,208,205,68,65,250,16,208,79,250,17,208,71,10,203,127,40,19,33,6,0,9,250,56,208,190,32,9,35,250,57,208,190,32,2,175,2,205,95,65,32,219,195,141,62,205,68,65,250,16,208,111,250,17,208,103,175,119,205,95,65,32,241,195,141,62,205,32,68,195,141,62,175,234,32,208,62,255,234,37,208,205,75,65,250,16,208,111,250,17,208,103,203,190,205,95,65,32,241,201,250,36,208,230,15,87,250,36,208,230,240,203,55,95,195,141,62,167,32,17,250,36,208,230,240,40,14,250,27,208,79,250,28,208,71,24,40,254,5,56,5,1,[0,2],24,31,1,134,68,203,39,129,79,62,0,136,71,10,111,3,10,103,1,[0,2],203,126,40,8,1,6,0,9,42,79,42,71,195,141,62,64,208,124,208,184,208,244,208,2,72,41,72,48,73,75,73,122,73,241,72,182,73,205,164,68,195,141,62,254,7,208,245,33,56,208,121,34,120,34,123,34,122,34,175,119,241,1,144,68,195,182,69,205,250,68,203,10,48,16,203,126,40,12,250,60,208,182,119,229,9,250,57,208,119,225,205,15,69,32,231,201,205,250,68,203,10,48,20,203,126,40,16,250,60,208,182,119,229,9,250,56,208,34,250,57,208,50,225,205,15,69,32,227,201,250,59,208,230,15,87,250,58,208,203,55,230,240,178,87,30,8,33,64,208,201,62,60,133,111,62,0,140,103,29,201,234,32,208,234,33,208,62,64,234,34,208,195,141,62,250,37,208,167,192,250,32,208,167,200,[33,2],208,53,192,34,126,214,4,218,28,68,119,71,62,2,17,255,0,195,164,68,250,16,208,111,250,17,208,103,126,254,192,216,234,25,208,195,81,70,250,16,208,111,250,17,208,103,126,203,127,200,203,119,32,6,229,205,120,67,225,126,234,25,208,35,126,167,40,4,53,35,24,84,35,42,95,42,87,42,234,38,208,250,16,208,111,250,17,208,103,1,17,0,9,205,181,62,203,121,32,8,121,234,31,208,27,126,24,10,120,234,31,208,121,254,190,56,1,119,254,208,210,20,74,214,177,218,63,71,1,209,70,203,39,129,79,62,0,136,71,10,111,3,10,103,233,250,16,208,111,250,17,208,103,175,34,201,1,41,0,9,126,167,40,9,53,1,245,255,9,62,64,24,6,1,244,255,9,42,134,119,203,39,48,1,47,234,30,208,[1,2],0,9,42,134,40,21,79,250,30,208,71,229,197,205,238,79,193,68,225,35,42,254,0,40,13,24,58,1,[0,2],35,42,254,0,40,20,24,47,120,203,57,145,79,62,0,159,203,33,23,203,33,23,203,33,23,71,121,190,40,9,250,25,208,203,215,234,25,208,113,35,120,190,40,9,250,25,208,203,215,234,25,208,112,24,0,250,16,208,111,250,17,208,103,250,25,208,203,87,40,60,1,29,0,9,94,62,0,203,35,159,87,1,254,255,9,42,131,95,58,138,87,1,248,255,9,42,131,95,58,138,87,1,16,0,9,42,254,0,32,6,42,131,95,58,138,87,1,8,0,9,123,34,114,1,211,255,9,250,25,208,203,71,40,19,1,23,0,9,42,134,95,1,22,0,9,115,1,210,255,9,250,25,208,203,79,40,35,1,21,0,9,42,71,78,205,18,80,198,15,230,240,254,64,56,2,62,255,[7,2],95,1,25,0,9,115,1,209,255,9,250,25,208,119,201,196,69,132,71,96,71,140,71,174,71,13,74,13,74,13,74,196,69,196,69,196,69,204,71,35,72,55,72,19,73,62,73,127,72,190,72,213,72,14,73,89,73,109,73,13,74,13,74,128,73,159,73,13,74,196,69,39,71,16,74,77,75,196,69,188,73,203,73,232,73,3,74,8,74,172,73,177,73,13,74,13,74,193,73,198,73,250,31,208,19,254,12,210,196,69,71,205,170,62,121,234,31,208,120,1,15,71,195,182,69,198,49,202,132,69,198,43,111,62,0,206,80,103,70,5,250,16,208,111,250,17,208,103,35,120,34,123,34,122,50,195,207,69,250,16,208,111,250,17,208,103,1,38,0,9,126,254,10,210,196,69,[60,2],119,79,6,0,9,1,10,0,9,[19,2],123,34,114,[27,2],205,181,62,89,80,195,132,69,250,16,208,111,250,17,208,103,1,38,0,9,126,167,202,132,69,[61,2],119,79,6,0,9,1,12,0,9,42,95,86,195,132,69,250,16,208,111,250,17,208,103,1,41,0,9,250,31,208,19,167,40,195,52,190,32,191,175,119,[19,2],195,132,69,33,0,208,203,110,33,10,208,40,3,33,5,208,250,31,208,19,119,205,228,71,195,132,69,42,71,42,79,229,205,238,79,124,254,64,56,4,62,63,46,255,203,37,23,203,37,23,167,32,1,60,225,119,201,250,59,208,167,40,10,33,6,208,250,57,208,50,205,228,71,250,58,208,167,40,10,33,11,208,250,57,208,50,205,228,71,201,1,18,0,195,92,73,250,60,208,203,215,234,60,208,1,19,0,195,217,68,250,31,208,19,254,127,[40,2],205,114,72,250,16,208,198,12,79,250,17,208,206,0,71,42,2,3,42,2,3,42,2,3,42,2,3,42,2,250,25,208,203,167,234,25,208,195,132,69,250,25,208,203,231,234,25,208,195,132,69,111,38,0,41,77,68,41,9,1,196,81,9,201,250,16,208,111,250,17,208,103,1,25,0,9,250,31,208,19,7,214,128,34,71,42,79,229,203,32,56,7,205,238,79,77,68,24,13,120,47,71,205,238,79,43,125,47,79,124,47,71,225,121,34,112,250,25,208,203,215,234,25,208,195,132,69,250,16,208,111,250,17,208,103,1,26,0,9,250,31,208,19,50,79,42,71,35,24,193,250,16,208,111,250,17,208,103,1,31,0,9,250,31,208,19,34,203,39,32,4,63,[31,2],119,195,132,69,250,57,208,203,39,40,6,1,31,0,195,188,68,31,234,56,208,31,238,64,234,57,208,1,31,0,195,217,68,1,42,0,24,73,250,25,208,203,207,234,25,208,1,21,0,250,16,208,111,250,17,208,103,9,250,31,208,19,7,119,195,132,69,250,60,208,203,207,234,60,208,1,22,0,195,188,68,250,25,208,203,199,234,25,208,1,23,0,24,64,250,60,208,203,199,234,60,208,1,24,0,195,188,68,1,33,0,250,16,208,111,250,17,208,103,9,250,31,208,19,119,195,132,69,250,25,208,246,7,234,25,208,1,35,0,24,226,1,34,0,195,188,68,250,25,208,203,215,234,25,208,1,29,0,250,16,208,111,250,17,208,103,9,250,31,208,19,7,214,128,119,195,132,69,250,25,208,203,215,234,25,208,1,30,0,24,176,1,39,0,24,171,1,40,0,24,166,1,39,0,195,217,68,1,12,0,24,155,1,13,0,24,150,1,14,0,24,145,1,15,0,250,16,208,111,250,17,208,103,9,250,31,208,19,203,55,230,240,71,126,230,15,176,119,195,132,69,1,15,0,250,16,208,111,250,17,208,103,9,250,31,208,19,230,15,71,126,230,240,176,119,195,132,69,1,16,0,24,198,1,16,0,24,222,195,196,69,6,0,24,11,214,207,198,43,111,62,0,206,80,103,70,250,16,208,111,250,17,208,103,120,1,11,0,9,50,6,0,250,31,208,24,5,19,205,170,62,121,203,127,32,43,254,36,48,15,254,32,56,21,203,104,32,31,203,232,35,134,50,24,228,203,120,32,20,203,248,43,34,24,218,203,112,32,10,203,240,[7,3],246,7,119,24,204,213,43,126,1,9,0,9,134,234,58,208,234,59,208,1,24,0,9,42,50,1,226,255,9,250,25,208,203,103,40,30,229,93,84,250,58,208,198,236,205,114,72,42,18,19,42,18,19,42,18,19,42,18,19,42,18,126,234,59,208,225,126,254,16,48,14,254,8,48,5,205,111,65,24,17,205,120,65,24,12,254,64,48,5,205,129,65,24,3,205,138,65,250,15,208,33,0,208,203,110,40,2,203,255,234,57,208,95,250,16,208,111,250,17,208,103,1,8,0,9,126,234,56,208,87,250,19,208,111,250,20,208,103,42,167,40,16,203,111,32,2,24,10,42,186,56,6,32,76,123,190,56,72,205,187,79,250,16,208,95,250,17,208,87,250,19,208,111,250,20,208,103,62,240,34,250,56,208,34,250,57,208,34,250,58,208,34,123,34,122,34,62,10,131,95,62,0,138,87,26,34,19,26,34,19,26,34,19,26,34,19,26,34,19,26,34,19,26,34,175,34,250,59,208,119,209,195,132,69,250,16,208,111,250,17,208,103,1,9,0,9,250,31,208,203,127,32,6,254,36,56,2,19,119,126,1,9,0,9,134,234,58,208,213,205,147,65,250,15,208,33,0,208,203,110,40,2,203,255,95,250,58,208,87,250,19,208,111,250,20,208,103,42,203,111,40,22,35,42,187,32,17,126,186,32,13,1,4,0,9,126,167,32,5,205,227,75,24,5,205,164,65,32,216,209,195,132,69,250,19,208,111,250,20,208,103,203,126,200,[35,2],203,126,200,24,16,250,19,208,111,250,20,208,103,203,126,200,[35,2],203,126,192,[35,2],42,95,42,87,26,254,192,56,21,35,126,167,200,53,192,1,249,255,9,126,203,119,32,10,246,80,230,223,119,201,1,250,255,9,175,119,195,187,79,250,19,208,111,250,20,208,103,126,203,127,200,71,229,17,4,0,25,42,234,16,208,95,42,234,17,208,87,26,254,192,48,3,225,24,215,234,25,208,203,112,[32,2],17,12,0,25,250,26,208,167,32,1,[52,2],225,203,104,40,7,203,96,32,90,195,233,76,203,96,194,34,77,195,112,77,225,203,182,203,110,40,41,229,205,50,78,225,250,25,208,246,7,234,25,208,205,198,77,1,11,0,9,126,1,6,0,9,203,55,47,15,230,7,40,76,246,8,34,175,34,195,157,77,1,12,0,9,70,17,5,0,25,126,230,240,202,59,77,79,120,47,15,230,7,202,59,77,177,34,175,34,195,149,77,250,25,208,203,79,196,198,77,1,17,0,9,42,230,7,61,190,48,11,175,50,126,198,16,56,11,205,27,78,34,43,58,190,218,132,77,35,1,250,255,9,70,17,5,0,25,78,197,1,240,255,9,203,166,205,235,77,87,1,17,0,9,193,120,47,15,230,7,32,7,205,186,77,40,91,122,74,177,34,175,34,195,149,77,250,25,208,203,79,196,235,77,1,17,0,9,42,230,7,40,33,61,190,48,11,175,50,126,214,16,56,12,205,27,78,34,[43,2],42,246,15,190,56,115,205,186,77,40,37,43,42,119,24,122,43,58,174,32,247,24,123,1,17,0,9,42,230,7,61,190,48,87,175,50,126,214,16,56,7,205,27,78,119,24,74,43,229,250,16,208,111,250,17,208,103,1,47,0,9,70,17,248,255,25,42,79,86,225,120,167,40,34,121,167,40,30,122,167,40,26,205,18,80,198,15,230,240,34,114,1,238,255,9,126,230,143,119,24,37,1,18,0,9,53,32,38,250,19,208,111,250,20,208,103,175,119,195,187,79,250,21,208,254,28,40,18,250,25,208,203,143,234,25,208,24,8,250,25,208,203,207,234,25,208,250,25,208,203,87,40,6,205,177,78,250,25,208,203,71,40,6,205,54,79,250,25,208,203,79,200,195,126,79,1,251,255,9,126,1,5,0,9,230,240,201,229,1,6,0,9,78,250,16,208,111,250,17,208,103,17,47,0,25,70,205,18,80,198,15,230,240,225,17,16,0,25,119,17,240,255,25,201,229,1,12,0,9,70,17,250,255,25,78,205,18,80,198,15,79,250,16,208,111,250,17,208,103,17,47,0,25,70,205,18,80,198,15,230,240,225,17,16,0,25,119,17,240,255,25,201,71,250,21,208,254,28,120,192,174,230,192,40,8,250,25,208,203,207,234,25,208,120,201,250,19,208,111,250,20,208,103,1,8,0,9,250,21,208,79,254,28,56,30,40,58,42,[7,3],230,8,71,12,242,230,247,176,226,126,167,40,6,47,60,224,32,62,64,246,128,224,35,201,42,[15,2],230,192,71,42,167,40,8,47,60,230,63,176,71,62,64,[12,2],226,[13,3],120,226,13,126,226,201,42,214,16,71,126,167,40,6,47,60,224,27,62,64,224,30,250,29,208,184,200,120,234,29,208,104,38,0,[41,4],1,114,82,9,14,48,6,16,42,226,12,5,32,250,201,250,16,208,111,250,17,208,103,1,44,0,9,42,79,70,250,19,208,111,250,20,208,103,17,14,0,25,126,128,71,250,21,208,254,28,56,6,32,60,120,198,12,71,229,120,205,209,79,71,205,238,79,1,255,0,9,108,38,0,25,250,21,208,79,12,125,226,12,242,230,64,40,4,180,226,24,13,180,226,71,250,21,208,79,13,242,230,192,226,120,225,1,5,0,9,246,128,119,201,79,12,120,214,13,47,71,230,3,87,120,254,192,56,8,230,60,[7,2],178,246,4,87,242,230,8,178,226,12,242,246,128,226,201,250,16,208,111,250,17,208,103,1,46,0,9,250,21,208,254,23,56,11,40,14,254,33,56,15,17,136,119,24,13,[17,2],238,24,8,17,34,221,24,3,17,68,187,203,126,32,8,203,118,40,14,62,15,24,8,203,118,32,6,62,240,24,0,163,95,14,37,242,162,179,226,201,250,19,208,111,250,20,208,103,1,17,0,9,42,71,250,21,208,79,254,28,56,11,40,17,120,226,240,35,246,128,224,35,201,120,226,[12,2],35,126,226,201,120,214,64,238,192,15,226,240,26,23,216,62,128,224,26,35,126,224,30,201,250,21,208,79,254,28,40,9,62,8,226,[12,2],62,128,226,201,62,0,224,26,201,214,36,48,1,175,254,120,56,2,62,119,22,0,95,[131,2],203,18,95,33,92,80,25,42,95,42,87,126,201,96,46,0,69,41,48,1,9,41,48,1,9,41,48,1,9,41,48,1,9,41,48,1,9,41,48,1,9,41,48,1,9,41,208,9,201,121,230,240,203,55,79,120,230,240,135,48,1,129,135,48,1,129,135,48,1,129,135,208,129,201,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,28,30,32,36,40,42,44,48,52,54,56,60,64,66,68,72,76,78,80,84,88,90,92,96,44,0,112,157,0,106,7,1,100,107,1,95,201,1,89,35,2,84,119,2,80,199,2,75,18,3,71,88,3,67,155,3,63,218,3,60,22,4,56,78,4,53,131,4,50,181,4,48,228,4,45,17,5,42,59,5,40,99,5,38,137,5,36,172,5,34,205,5,32,237,5,30,11,6,28,39,6,27,66,6,25,91,6,24,114,6,22,137,6,21,158,6,20,178,6,19,196,6,18,214,6,17,231,6,16,246,6,15,5,7,14,20,7,13,33,7,13,45,7,12,57,7,11,68,7,11,79,7,10,89,7,9,98,7,9,107,7,8,115,7,8,123,7,8,131,[7,2],138,[7,2],144,7,6,151,7,6,157,7,6,162,7,5,167,7,5,172,7,5,177,7,4,181,7,4,186,7,4,190,7,4,193,7,4,197,7,3,200,7,3,203,7,3,206,7,3,209,7,3,212,7,3,214,7,2,217,7,2,219,7,2,221,7,2,223,7,2,225,7,2,226,7,2,228,7,2,230,7,1,232,7,1,233,7,1,234,7,1,235,7,1,236,7,1,237,7,1,238,7,1,239,7,1,240,7,1,241,7,1,242,7,1,243,7,1,244,7,1,244,7,1,245,7,1,246,7,1,246,7,1,247,7,1,247,7,1,248,7,1,248,7,1,249,7,1,249,7,1,249,7,1,250,7,1,250,7,1,250,7,1,251,7,1,251,7,1,251,7,1,252,7,1,252,7,1,252,7,1,252,7,1,253,7,1,253,7,1,253,7,1,253,7,1,253,7,1,253,7,1,254,7,1,254,7,1,254,7,1,254,7,1,2,[0,2],[255,2],60,[0,3],[255,2],60,2,0,30,252,79,60,2,0,27,252,47,60,10,[0,2],[255,2],60,1,[0,2],[255,2],60,8,[0,2],[255,2],60,2,[0,2],172,170,60,20,[0,2],[255,2],60,18,[0,2],250,76,60,2,[0,2],175,48,60,2,[0,2],95,15,60,20,[0,2],255,207,60,21,[0,2],250,76,60,23,[0,2],[255,2],60,25,[0,2],[255,2],60,65,[0,2],252,79,47,23,[0,2],95,15,60,64,[0,2],252,15,67,64,[0,2],207,250,60,64,[0,2],207,250,60,65,[0,2],[255,2],60,64,[0,2],252,15,84,65,[0,2],252,12,60,65,[0,2],207,250,60,65,[0,2],207,250,60,64,[0,2],[255,2],84,1,[0,2],[255,2],60,9,[0,2],[255,2],60,0,17,35,86,137,172,222,239,255,238,220,169,134,83,33,16,1,35,69,103,137,171,205,239,254,220,186,152,118,84,50,16,255,238,221,204,187,170,153,136,119,102,85,68,51,34,17,0,254,220,186,153,[136,4],[119,4],102,84,50,16,[255,2],[0,14],[255,4],[0,12],[255,6],[0,10],[255,8],[0,8],13,55,42,132,193,91,38,148,240,116,145,198,229,24,195,107,17,18,34,51,52,68,85,86,102,119,120,136,153,154,170,187,18,70,138,206,[255,2],254,220,168,100,33,[17,5],89,100,5,0,200,255,4,0,121,104,5,0,200,255,4,0,190,104,5,0,240,255,2,0,238,104,5,0,240,255,2,0,29,105,5,0,230,255,2,0,92,105,5,0,230,255,2,0,189,0,188,72,190,2,191,120,192,64,211,78,24,134,211,134,211,134,211,134,211,74,134,211,134,211,71,22,134,67,19,134,190,3,211,60,29,152,211,152,211,60,29,152,211,152,211,152,211,152,180,179,122,83,179,122,83,179,122,83,179,122,83,179,122,83,211,60,29,152,211,152,190,1,191,120,192,14,209,99,31,132,92,132,209,87,30,132,95,29,132,88,27,132,84,26,132,87,25,132,80,24,132,75,23,132,83,22,132,76,21,132,72,20,132,68,19,132,75,21,132,80,23,132,72,25,132,76,27,132,83,28,132,80,30,132,87,31,132,92,132,84,132,88,132,95,132,190,3,191,120,211,60,31,152,211,134,190,5,210,76,19,134,88,134,86,134,190,3,211,60,31,134,190,5,210,81,19,134,83,134,86,134,190,3,211,60,31,152,211,152,211,134,190,5,210,88,19,134,100,134,98,134,180,190,3,211,60,31,134,190,5,210,93,19,134,95,134,98,134,190,3,211,60,31,152,190,3,191,94,211,152,211,134,190,5,210,76,19,134,88,134,86,134,180,179,249,83,190,3,211,60,31,134,190,5,210,93,19,134,95,134,98,134,190,3,211,60,31,152,190,0,213,62,23,134,219,69,140,213,62,134,219,69,140,213,62,134,219,69,[134,2],213,62,23,134,219,69,140,62,140,69,140,213,62,134,219,69,140,213,62,134,219,69,140,213,62,134,219,69,134,180,134,213,62,23,134,219,69,140,62,140,69,140,213,60,134,219,67,140,213,60,134,219,67,140,213,60,134,219,67,134,180,134,213,60,23,134,219,67,140,60,140,67,140,213,60,134,219,67,140,213,60,134,219,67,140,213,60,134,219,67,134,180,134,213,60,134,219,67,140,60,140,67,140,213,62,134,219,69,140,213,62,134,219,69,140,213,62,134,219,69,134,179,117,84,179,148,84,[179,2],84,134,213,60,23,134,219,67,140,60,140,67,140,209,74,30,152,190,3,211,60,31,134,190,5,210,76,19,134,88,134,86,134,179,249,83,179,30,84,179,249,83,190,3,211,60,31,134,190,5,210,93,19,134,95,134,98,134,190,3,211,60,31,152,211,134,190,5,209,81,24,134,74,134,88,134,190,3,211,60,31,134,190,5,209,81,22,134,74,134,88,134,190,3,211,60,31,134,190,5,209,81,19,134,74,134,88,134,190,3,211,60,31,134,190,5,209,81,17,134,74,134,88,134,190,3,211,60,31,134,190,5,209,81,24,134,74,134,88,134,190,3,211,60,31,134,190,5,209,81,22,134,74,134,88,134,180,190,3,211,60,31,134,190,5,209,81,19,134,74,134,88,134,190,3,211,60,31,134,190,5,209,81,17,134,74,134,88,134,190,3,211,60,31,134,190,5,209,79,24,134,74,134,88,134,190,3,211,60,31,134,190,5,209,79,22,134,74,134,88,134,180,190,3,211,60,31,134,190,5,209,79,19,134,74,134,88,134,190,3,211,60,31,134,190,5,209,79,17,134,74,134,88,134,190,3,211,60,31,134,190,5,209,79,24,134,74,134,88,134,190,3,211,60,31,134,190,5,209,79,22,134,74,134,88,134,180,190,3,211,60,31,134,190,5,209,79,19,134,74,134,88,134,190,3,211,60,31,134,190,5,209,79,17,134,74,134,88,134,190,3,211,60,31,134,190,5,209,81,24,134,74,134,88,134,190,3,211,60,31,134,190,5,209,81,22,134,74,134,88,134,179,83,85,179,148,85,179,213,85,190,3,211,60,31,134,190,5,209,79,19,134,74,134,88,134,190,3,211,60,31,134,190,5,209,79,17,134,74,134,88,134,190,3,211,60,31,134,190,5,213,54,27,134,56,134,58,134,190,3,211,60,31,134,190,5,213,66,27,134,68,134,70,134,190,3,211,60,31,134,190,5,213,54,22,134,56,134,58,134,190,3,211,60,31,134,190,5,213,66,19,134,68,134,70,134,190,3,211,60,31,134,190,5,213,54,27,134,56,134,58,134,190,3,211,60,31,134,190,5,213,66,24,134,68,134,70,134,190,3,211,60,31,134,190,5,213,54,22,134,56,134,58,134,190,3,211,60,31,134,190,5,213,66,19,134,68,134,70,134,190,3,211,60,31,134,190,5,213,57,27,134,59,134,61,134,190,3,211,60,31,134,190,5,213,69,27,134,71,134,73,134,190,3,211,60,31,134,190,5,213,57,22,134,59,134,61,134,190,3,211,60,31,134,190,5,213,69,22,134,71,134,73,134,190,3,211,60,31,134,190,5,213,57,17,134,59,134,61,134,190,3,211,60,31,134,190,5,213,69,17,134,71,134,73,134,190,3,211,60,31,134,190,5,213,57,12,134,59,134,61,134,190,3,211,60,31,134,190,5,213,69,12,134,71,134,73,134,190,3,211,60,31,134,190,5,213,56,27,134,58,134,61,134,190,3,211,60,31,134,190,5,213,68,27,134,70,134,73,134,190,3,213,51,22,211,60,31,134,190,5,213,56,22,134,58,134,61,134,190,3,211,60,31,134,190,5,213,68,22,134,70,134,73,134,190,3,211,60,31,134,190,5,213,56,17,134,58,134,61,134,190,3,211,60,31,134,190,5,213,68,17,134,70,134,73,134,190,3,211,60,31,134,190,5,213,56,12,134,58,134,61,134,190,3,211,60,31,134,190,5,213,68,12,134,70,134,73,134,190,3,211,60,31,134,190,5,213,57,27,134,59,134,62,134,190,3,211,60,31,134,190,5,213,69,27,134,71,134,74,134,190,3,211,60,31,134,190,5,213,57,22,134,59,134,62,134,190,3,211,60,31,134,190,5,213,69,22,134,71,134,74,134,190,3,211,60,31,134,190,5,213,57,17,134,59,134,62,134,190,3,211,60,31,134,190,5,213,69,17,134,71,134,74,134,190,3,211,60,31,134,190,5,213,57,12,134,59,134,62,134,190,3,211,60,31,134,190,5,213,69,12,134,71,134,74,134,190,3,211,60,31,134,190,5,213,58,27,134,61,134,63,134,190,3,211,60,31,134,190,5,213,70,27,134,73,134,75,134,190,3,211,60,31,134,190,5,213,58,22,134,61,134,63,134,190,3,211,60,31,134,190,5,213,70,22,134,73,134,75,134,190,3,211,60,31,134,190,5,213,58,17,134,61,134,63,134,190,3,211,60,31,134,190,5,213,70,17,134,73,134,75,134,180,190,3,211,60,31,134,190,5,213,58,12,134,61,134,63,134,190,3,211,60,31,134,190,5,213,70,12,134,73,134,75,134,190,3,211,60,31,134,190,5,213,59,27,134,62,134,64,134,190,3,211,60,31,134,190,5,213,71,27,134,74,134,76,134,190,3,211,60,31,134,190,5,213,59,22,134,62,134,64,134,190,3,211,60,31,134,190,5,213,71,22,134,74,134,76,134,190,3,211,60,31,134,190,5,213,59,17,134,62,134,64,134,190,3,211,60,31,134,190,5,213,71,17,134,74,134,76,134,190,3,211,60,31,134,190,5,213,59,12,134,62,134,64,134,190,3,211,60,31,134,190,5,213,71,12,134,74,134,76,134,190,3,211,60,31,134,190,5,213,58,27,134,61,134,63,134,190,3,211,60,31,134,190,5,213,70,27,134,73,134,75,134,179,162,88,190,3,211,60,31,134,190,5,213,58,12,134,61,134,63,134,190,3,211,60,31,134,190,5,213,70,12,134,73,134,75,134,190,3,211,60,31,134,190,5,213,59,27,134,211,60,134,213,64,134,190,3,211,60,31,134,190,5,213,71,24,134,72,134,76,134,190,3,211,60,31,134,190,5,213,59,22,134,211,60,134,213,64,134,190,3,211,60,31,134,190,5,213,71,19,134,72,134,76,134,209,99,31,132,92,132,87,132,95,132,209,88,30,132,84,29,132,87,28,132,80,27,132,75,25,132,83,24,132,76,23,132,72,22,132,68,132,209,75,24,132,80,25,132,72,27,132,76,29,132,83,31,132,80,132,87,132,92,132,84,132,88,132,95,132,178,229,83,177,189,0,190,6,191,113,192,114,213,66,19,134,72,21,134,76,22,134,81,23,134,83,24,134,87,26,134,91,27,134,98,29,134,192,114,209,68,16,131,192,111,209,73,131,192,108,209,75,131,192,105,209,80,131,192,102,209,131,192,99,209,85,131,192,96,209,87,131,192,93,209,92,131,192,90,209,131,192,86,209,87,131,192,83,209,85,131,192,80,209,80,131,192,77,209,131,192,74,209,75,131,192,71,209,73,131,192,68,209,68,131,192,65,209,68,16,131,192,61,209,73,131,192,58,209,75,131,192,55,209,80,131,192,52,209,131,192,49,209,85,131,192,46,209,87,131,192,43,209,92,131,192,40,209,131,192,36,209,87,131,192,33,209,85,131,192,30,209,80,131,192,27,209,131,192,24,209,75,131,192,21,209,73,131,192,18,209,68,131,192,14,209,69,131,192,17,209,74,131,192,20,209,76,131,192,23,209,81,131,192,26,209,131,192,29,209,86,131,192,32,209,88,131,192,35,209,93,131,192,38,209,131,192,42,209,88,131,192,45,209,86,131,192,48,209,81,131,192,51,209,131,192,54,209,76,131,192,57,209,74,131,192,60,209,69,131,180,192,63,209,69,16,131,192,67,209,74,131,192,70,209,76,131,192,73,209,81,131,192,76,209,131,192,79,209,86,131,192,82,209,88,131,192,85,209,93,131,192,88,209,131,192,92,209,88,131,192,95,209,86,131,192,98,209,81,131,192,101,209,131,192,104,209,76,131,192,107,209,74,131,192,110,209,69,131,192,114,209,71,131,192,111,209,73,131,192,108,209,78,131,192,105,209,83,131,192,102,209,131,192,99,209,85,131,192,96,209,90,131,192,93,209,95,131,192,90,209,131,192,86,209,90,131,192,83,209,85,131,192,80,209,83,131,192,77,209,131,192,74,209,78,131,192,71,209,73,131,192,68,209,71,131,180,192,65,209,131,192,61,209,73,131,192,58,209,78,131,192,55,209,83,131,192,52,209,131,192,49,209,85,131,192,46,209,90,131,192,43,209,95,131,192,40,209,131,192,36,209,90,131,192,33,209,85,131,192,30,209,83,131,192,27,209,131,192,24,209,78,131,192,21,209,73,131,192,18,209,71,131,192,14,209,72,131,192,17,209,74,131,192,20,209,79,131,192,23,209,83,131,192,26,209,84,131,192,29,209,86,131,192,32,209,91,131,192,35,209,96,131,192,38,209,131,192,42,209,91,131,192,45,209,86,131,192,48,209,84,131,192,51,209,131,192,54,209,79,131,192,57,209,74,131,192,60,209,72,131,192,63,209,131,192,67,209,74,131,192,70,209,79,131,192,73,209,84,131,192,76,209,131,192,79,209,86,131,192,82,209,91,131,192,85,209,96,131,192,88,209,131,192,92,209,91,131,192,95,209,86,131,192,98,209,84,131,192,101,209,131,192,104,209,79,131,192,107,209,74,131,192,110,209,72,131,192,114,209,68,131,192,111,209,73,131,192,108,209,75,131,192,105,209,80,131,192,102,209,131,192,99,209,85,131,192,96,209,87,131,192,93,209,92,131,192,90,209,131,192,86,209,87,131,192,83,209,85,131,192,80,209,80,131,192,77,209,131,192,74,209,75,131,192,71,209,73,131,192,68,209,68,131,179,190,90,179,90,91,192,65,209,71,16,131,192,61,209,73,131,192,58,209,78,131,192,55,209,83,131,192,52,209,131,192,49,209,85,131,192,46,209,90,131,192,43,209,95,131,192,40,209,131,192,36,209,90,131,192,33,209,85,131,192,30,209,83,131,192,27,209,131,192,24,209,78,131,192,21,209,73,131,192,18,209,71,131,192,15,140,191,120,192,114,209,92,24,132,84,23,132,80,22,132,83,21,132,76,20,132,72,18,132,80,17,132,72,16,132,68,15,132,64,132,209,71,16,132,76,18,132,68,20,132,72,22,132,80,23,132,76,25,132,83,27,132,88,29,132,80,31,132,84,132,92,132,191,120,209,74,30,134,210,76,134,88,134,86,134,81,134,210,134,210,83,134,86,134,160,210,86,30,134,88,134,100,134,98,134,93,134,210,134,210,95,134,98,134,180,160,210,74,30,134,76,134,88,134,86,134,81,134,210,134,210,83,134,86,134,180,179,216,93,160,190,4,191,85,192,64,219,40,24,140,213,50,134,52,134,219,45,140,213,47,134,50,134,180,219,40,24,140,213,50,134,52,134,219,45,140,213,47,134,50,134,219,40,140,213,50,134,52,134,219,45,140,213,47,134,50,134,180,179,30,94,179,30,94,179,30,94,179,30,94,179,30,94,179,30,94,219,40,24,140,213,50,134,52,134,219,45,140,213,47,134,50,134,190,6,191,120,192,114,210,74,134,210,76,30,134,88,134,86,134,81,134,210,134,210,83,134,86,134,179,216,93,179,237,93,179,216,93,179,5,94,179,30,94,179,30,94,179,30,94,179,30,94,179,30,94,179,30,94,179,30,94,219,40,24,140,213,50,134,52,134,219,45,140,213,47,134,50,134,190,6,191,94,192,114,213,56,30,134,58,134,61,134,63,134,68,134,70,134,73,134,75,134,213,56,25,134,58,134,61,134,63,134,68,134,70,134,73,134,75,134,213,56,20,134,58,134,61,134,63,134,68,134,70,134,73,134,75,134,213,56,15,134,58,134,61,134,63,134,68,134,70,134,73,134,75,134,213,57,30,134,61,134,62,134,64,134,69,134,73,134,74,134,76,134,213,57,25,134,61,134,62,134,64,134,69,134,73,134,74,134,76,134,213,57,20,134,61,134,62,134,64,134,69,134,73,134,74,134,76,134,213,57,15,134,61,134,62,134,64,134,69,134,73,134,74,134,76,134,213,56,30,134,61,134,63,134,65,134,68,134,73,134,75,134,77,134,213,56,25,134,61,134,63,134,65,134,68,134,73,134,75,134,77,134,213,56,20,134,61,134,63,134,65,134,68,134,73,134,75,134,77,134,213,56,15,134,61,134,63,134,65,134,68,134,73,134,75,134,77,134,213,57,30,134,62,134,64,134,67,134,69,134,74,134,76,134,79,134,213,57,25,134,62,134,64,134,67,134,69,134,74,134,76,134,79,134,213,57,20,134,62,134,64,134,67,134,69,134,74,134,76,134,79,134,213,57,15,134,62,134,64,134,67,134,69,134,74,134,76,134,79,134,213,61,30,134,63,134,65,134,68,134,73,134,75,134,77,134,80,134,213,61,25,134,63,134,65,134,68,134,73,134,75,134,77,134,80,134,213,61,20,134,63,134,65,134,68,134,73,134,75,134,77,134,80,134,180,213,61,15,134,63,134,65,134,68,134,73,134,75,134,77,134,80,134,213,62,30,134,64,134,66,134,69,134,74,134,76,134,78,134,81,134,213,62,25,134,64,134,66,134,69,134,74,134,76,134,78,134,81,134,213,62,20,134,64,134,66,134,69,134,74,134,76,134,78,134,81,134,213,62,15,134,64,134,66,134,69,134,74,134,76,134,78,134,81,134,213,61,30,134,63,134,65,134,68,134,73,134,75,134,77,134,80,134,179,231,95,213,61,15,134,63,134,65,134,68,134,73,134,75,134,77,134,80,134,213,60,19,134,64,20,134,66,21,134,71,134,213,72,22,134,76,134,213,78,23,134,83,24,134,60,134,213,64,25,134,66,26,134,71,134,213,72,27,134,76,134,213,78,31,134,83,134,190,6,191,113,140,209,92,27,132,84,26,132,80,25,132,83,23,132,76,22,132,72,21,132,80,20,132,72,18,132,68,17,132,64,132,209,71,19,132,76,20,132,68,22,132,72,24,132,80,26,132,76,28,132,83,29,132,88,31,132,80,132,84,132,92,132,178,194,93,177,189,0,190,14,197,30,191,103,194,13,195,30,198,0,196,70,213,60,19,134,64,134,69,134,72,134,79,134,83,134,87,134,91,134,193,35,231,40,31,129,193,9,129,0,136,15,129,37,129,64,152,243,140,149,193,59,129,47,129,25,129,15,129,0,136,4,129,31,129,50,129,64,160,239,40,31,140,180,150,193,44,129,20,129,0,138,15,129,35,129,57,129,64,137,54,129,37,129,0,231,40,31,135,193,13,129,37,129,61,129,64,152,130,243,140,180,150,193,49,129,23,129,0,136,15,129,31,129,54,129,64,160,129,241,140,150,193,62,129,37,129,16,129,1,129,0,138,22,129,50,129,64,138,35,231,129,193,9,129,0,136,15,129,37,129,64,152,243,140,179,56,97,179,81,97,150,193,49,129,23,129,0,136,15,129,31,129,54,129,64,164,129,160,190,14,191,85,192,64,219,40,24,140,213,50,134,52,134,219,45,140,213,47,134,50,134,219,40,24,140,213,50,134,52,134,219,45,140,213,47,134,50,134,219,40,140,213,50,134,52,134,219,45,140,213,47,134,50,134,180,179,219,97,179,219,97,219,40,24,140,213,50,134,52,134,219,45,140,213,47,134,50,134,190,14,191,120,192,114,206,73,160,180,176,160,207,73,206,71,24,160,180,176,160,207,71,206,73,24,160,180,176,160,207,73,206,74,24,160,180,176,152,207,152,190,14,191,85,192,64,219,40,140,213,50,134,52,134,219,45,140,213,47,134,50,134,179,219,97,179,219,97,179,219,97,179,3,98,176,179,31,98,176,179,40,98,176,179,49,98,176,152,207,74,152,190,14,191,94,192,64,210,40,31,134,52,134,45,134,47,134,40,134,52,134,45,134,47,134,210,40,31,134,52,134,45,134,47,134,40,134,52,134,45,134,47,134,40,134,52,134,45,134,47,134,40,134,52,134,45,134,47,134,180,179,136,98,179,136,98,179,136,98,179,136,98,179,136,98,179,136,98,179,136,98,179,136,98,179,136,98,179,136,98,179,136,98,179,136,98,179,136,98,176,160,178,196,97,177,189,0,190,127,191,120,160,211,36,25,152,211,152,211,36,25,152,211,152,211,152,211,152,180,179,229,98,179,229,98,211,36,25,152,211,152,211,140,208,42,28,134,208,134,211,36,25,140,208,42,28,134,208,134,211,36,25,140,208,42,28,134,208,134,211,36,25,140,208,42,28,134,208,134,211,36,25,140,208,42,28,134,208,134,211,36,25,140,208,42,28,134,208,134,180,179,14,99,211,36,25,140,208,42,28,134,208,134,211,36,25,140,208,42,28,134,208,162,160,140,219,46,19,140,208,42,25,140,219,46,19,[140,2],219,46,19,140,208,42,25,140,219,46,19,152,219,140,208,42,25,140,219,46,19,140,180,179,92,99,179,92,99,140,219,46,19,140,208,42,25,140,219,46,19,140,211,36,29,140,219,46,19,140,211,36,29,140,219,46,19,140,211,36,29,140,219,46,19,140,211,36,29,140,219,46,19,140,211,36,29,140,219,46,19,140,211,36,29,140,219,46,19,140,180,179,151,99,179,151,99,179,151,99,179,151,99,179,151,99,179,151,99,211,36,29,140,219,46,19,140,211,36,29,140,219,46,19,152,219,140,208,42,30,140,219,46,19,[140,2],219,46,19,140,208,42,30,140,219,46,19,152,219,140,208,42,30,140,219,46,19,140,180,179,228,99,179,228,99,179,228,99,179,228,99,179,228,99,179,228,99,179,228,99,179,228,99,179,228,99,179,228,99,179,228,99,179,228,99,179,228,99,179,228,99,179,228,99,179,228,99,179,228,99,179,228,99,179,228,99,179,228,99,179,228,99,179,228,99,179,228,99,179,228,99,179,228,99,140,219,46,19,140,208,42,30,140,219,46,19,164,160,178,79,99,177,4,2,82,83,79,90,3,97,216,98,229,83,194,93,196,97,79,99,78,90,2,97,215,98,88,100,189,0,188,48,190,4,197,40,191,94,194,2,195,50,198,0,196,10,148,211,76,15,132,219,81,140,211,83,136,232,80,156,211,78,132,215,76,136,211,78,132,148,211,74,15,132,219,81,140,211,83,136,81,140,80,140,78,140,223,76,144,180,148,211,74,15,132,219,79,140,211,81,136,232,78,156,211,76,132,215,74,136,211,76,132,180,148,74,132,219,79,140,211,81,136,79,140,78,140,76,140,215,144,148,211,132,219,81,140,211,83,136,232,80,156,211,78,132,215,76,136,211,78,132,179,156,100,179,177,100,148,211,74,15,132,219,79,140,211,81,136,79,140,78,140,76,140,223,74,144,197,0,230,64,155,210,60,132,215,64,136,211,67,132,74,140,72,140,71,140,67,140,232,69,155,211,67,132,215,69,136,211,70,132,69,140,67,140,64,140,62,140,227,64,148,211,67,140,60,132,215,64,136,211,67,132,74,140,72,140,71,140,67,140,223,69,152,71,150,209,75,130,211,76,140,74,140,71,140,69,140,223,67,148,211,140,211,60,132,215,64,136,211,67,132,74,140,215,72,140,211,71,140,67,140,231,69,155,211,67,132,215,69,136,211,70,132,215,69,140,211,67,140,64,140,62,140,227,64,148,211,67,140,60,132,215,64,136,211,67,132,74,140,72,140,71,140,232,76,140,148,209,77,130,76,130,242,74,166,129,191,113,133,178,117,100,177,189,0,190,0,197,40,191,85,194,2,195,50,198,0,196,10,148,211,71,12,132,219,78,140,211,80,136,232,76,156,211,74,132,215,71,136,211,74,132,148,211,71,12,132,219,78,140,211,80,136,78,140,76,140,74,140,227,71,144,180,148,211,69,12,132,219,76,140,211,78,136,232,74,156,211,71,132,215,69,136,211,71,132,180,148,69,132,219,76,140,211,78,136,76,140,74,140,215,71,140,211,70,132,215,69,136,211,67,132,64,148,71,132,219,78,140,211,80,136,232,76,156,211,74,132,215,71,136,211,74,132,179,215,101,179,236,101,148,211,69,12,132,219,76,140,211,78,136,76,140,74,140,215,71,140,211,70,132,215,69,140,190,5,197,0,191,37,239,59,160,63,160,62,160,231,60,152,59,152,239,59,12,160,235,63,160,180,231,62,152,61,152,60,152,65,152,179,99,102,239,62,12,160,231,60,152,219,59,152,239,160,235,63,156,72,140,152,243,70,168,[178,2],101,177,189,244,190,8,191,94,211,52,24,140,215,136,211,47,132,215,62,136,211,64,140,57,140,59,152,58,132,215,57,136,211,55,132,211,52,24,140,215,136,211,47,132,215,62,136,211,64,140,57,140,59,152,58,132,215,57,136,211,55,132,180,211,50,24,140,215,136,211,45,132,215,60,136,211,62,140,55,140,57,152,58,132,215,57,136,211,55,132,180,179,205,102,179,177,102,179,177,102,179,205,102,179,205,102,227,48,24,148,211,60,140,55,140,48,132,227,47,148,211,59,140,57,132,59,140,227,52,148,211,64,140,62,140,64,132,215,50,140,211,62,140,219,55,140,211,67,140,227,48,148,211,60,140,55,140,60,132,227,47,148,211,59,140,57,140,59,132,219,52,140,211,64,140,219,51,140,211,63,140,219,50,140,211,62,140,219,55,140,211,67,140,227,48,148,211,60,140,55,140,48,132,223,47,148,211,59,140,57,132,59,136,47,132,223,52,148,211,64,140,62,140,64,132,215,50,140,211,62,140,219,55,140,211,67,140,227,48,148,211,60,140,55,140,48,132,223,47,148,211,59,140,57,132,59,136,231,46,132,148,211,53,132,215,60,136,211,58,140,223,53,144,60,148,211,58,144,178,146,102,177,189,0,190,127,191,94,209,36,22,136,208,42,9,132,15,136,9,132,209,38,22,136,208,42,9,132,15,136,209,36,22,132,208,42,15,136,9,132,209,36,22,136,208,42,9,132,209,38,22,136,208,42,9,132,15,136,9,132,209,36,22,136,208,42,9,132,15,136,9,132,209,38,22,136,208,42,9,132,15,136,209,36,22,132,208,42,15,136,9,132,209,36,22,136,208,42,9,132,209,38,22,136,208,42,9,132,15,136,209,38,12,132,180,209,36,22,136,208,42,9,132,15,136,9,132,209,38,22,136,208,42,9,132,15,136,209,36,22,132,208,42,15,136,9,132,209,36,22,136,208,42,9,132,209,38,22,136,208,42,9,132,15,136,9,132,180,179,226,103,179,25,104,179,226,103,179,25,104,179,226,103,179,25,104,179,226,103,179,25,104,179,226,103,179,25,104,179,226,103,179,25,104,179,226,103,178,170,103,177,4,2,115,100,176,101,144,102,168,103,117,100,178,101,146,102,170,103,175,101,143,102,167,103,120,104,189,0,188,60,190,0,191,120,192,114,209,88,24,130,83,130,88,130,211,83,132,177,189,0,190,4,191,120,192,14,129,210,88,12,131,83,131,88,131,211,83,132,177,2,0,147,104,169,104,189,0,188,60,190,0,191,127,192,94,210,54,31,131,69,24,131,76,22,131,177,189,0,132,190,4,191,80,192,34,134,210,54,14,131,69,12,131,76,9,131,177,2,0,196,104,217,104,189,0,188,60,190,0,191,110,193,64,211,97,29,132,89,22,132,103,14,132,177,189,0,193,64,130,190,4,191,50,210,97,29,132,89,22,132,103,14,131,177,2,0,244,104,9,105,189,0,188,60,190,27,191,127,192,127,211,88,29,132,93,132,98,132,103,132,88,133,93,132,98,132,103,132,177,189,0,190,28,191,120,192,10,130,211,88,24,133,93,132,98,132,103,132,88,132,93,133,98,132,103,132,177,2,0,35,105,64,105,[255,5789],5,6,[255,73],[238,2],[241,2],[255,4],[239,2],[223,4],[224,2],[255,28],[127,2],[255,20],[240,2],[235,2],[219,2],[187,2],[183,4],[207,2],[252,2],[255,18],[127,2],[191,8],[127,2],[255,16],[247,4],[128,2],[247,4],[239,4],[223,2],[188,2],[255,18],[127,12],[255,22],[223,2],[224,2],[255,30],[127,2],[255,22],[247,6],[241,2],[246,2],[247,8],[255,46],[222,10],[254,2],[253,2],[251,2],[231,2],[255,52],[247,2],[219,2],[235,2],[239,2],[254,2],[253,2],[243,2],[255,20],[127,6],[255,18],[231,2],[251,2],[255,2],[159,2],[239,2],[255,2],[254,2],[249,2],[199,2],[255,12],[95,4],[255,2],[191,4],[127,4],[255,20],[223,2],[216,2],[191,4],[187,2],[183,4],[184,2],[223,2],[255,16],[127,2],[255,10],[127,2],[255,16],[222,4],[176,2],[190,4],[184,2],[182,2],[214,2],[217,2],[255,18],[63,2],[255,6],[127,2],[191,2],[255,32],[191,2],[223,2],[255,44],[239,4],[224,2],[221,2],[189,2],[253,4],[251,2],[231,2],[255,12],[95,4],[255,2],[63,2],[255,32],[223,2],[224,2],[255,30],[127,2],[255,22],[251,6],[247,2],[246,2],[231,2],[236,2],[131,2],[255,26],[127,4],[191,4],[255,12],[247,6],[131,2],[237,4],[221,4],[173,2],[179,2],[255,12],[95,4],[255,2],[127,2],[191,4],[223,4],[255,16],[251,2],[192,2],[251,2],[0,2],[251,2],[192,2],[251,2],[0,2],[223,4],[192,2],[255,12],[127,4],[31,2],[127,4],[255,2],[31,2],[127,6],[255,10],[251,4],[196,2],[253,2],[194,2],[254,2],[225,2],[222,2],[223,2],[224,2],[255,14],[127,2],[255,2],[191,2],[127,2],[255,2],[127,4],[255,16],[184,2],[222,2],[254,4],[29,2],[221,2],[219,2],[215,2],[223,2],[175,2],[112,2],[255,18],[127,4],[191,2],[223,2],[255,4],[31,2],[255,10],[251,4],[0,2],[251,2],[128,2],[251,2],[195,2],[184,2],[187,2],[199,2],[255,16],[63,2],[255,2],[127,2],[255,6],[127,2],[255,16],[239,2],[236,2],[139,2],[231,2],[239,2],[238,2],[206,2],[174,2],[239,2],[255,16],[127,8],[255,4],[191,2],[127,2],[255,16],[240,2],[141,2],[251,2],[247,6],[251,2],[252,2],[255,16],[127,2],[255,26],[239,2],[238,2],[131,2],[239,4],[224,2],[207,2],[175,2],[111,2],[140,2],[255,14],[127,2],[191,2],[255,6],[127,2],[191,4],[127,2],[255,14],[237,2],[238,2],[222,4],[214,2],[238,2],[254,2],[253,2],[243,2],[255,44],[251,4],[0,2],[251,2],[128,2],[251,2],[195,2],[184,2],[187,2],[199,2],[255,16],[63,2],[255,2],[127,2],[255,6],[127,2],[255,16],[238,4],[232,2],[134,2],[238,2],[236,2],[239,4],[240,2],[255,18],[63,2],[255,10],[127,2],[255,14],[251,4],[247,2],[239,2],[227,2],[221,4],[189,2],[190,2],[255,26],[191,4],[127,2],[255,26],[207,2],[183,4],[207,2],[255,50],[243,4],[255,60],[243,4],[255,60],[243,4],[255,60],[243,4],[255,54],[223,2],[207,2],[215,4],[219,2],[221,4],[222,2],[223,2],[255,14],[127,18],[255,14],[251,4],[255,2],[251,12],[255,50],[209,2],[206,2],[222,10],[255,46],[251,6],[224,2],[251,8],[252,2],[255,50],[243,2],[237,2],[222,2],[192,2],[223,2],[238,2],[241,2],[255,50],[209,2],[206,2],[222,10],[255,46],[254,4],[242,2],[236,2],[222,6],[236,2],[242,2],[255,50],[241,2],[238,2],[223,6],[238,2],[241,2],[255,22],[127,6],[255,20],[240,2],[235,2],[219,2],[187,2],[183,4],[207,2],[252,2],[255,18],[127,2],[191,8],[127,2],[255,14],[251,2],[192,2],[251,2],[0,2],[251,2],[192,2],[251,2],[0,2],[223,4],[192,2],[255,12],[127,4],[31,2],[127,4],[255,2],[31,2],[127,6],[255,10],[251,4],[196,2],[253,2],[194,2],[254,2],[225,2],[222,2],[223,2],[224,2],[255,14],[127,2],[255,2],[191,2],[127,2],[255,2],[127,4],[255,16],[184,2],[182,2],[32,2],[178,2],[182,2],[151,2],[61,2],[160,2],[187,2],[183,2],[47,2],[255,14],[63,2],[191,2],[63,2],[191,2],[255,2],[31,2],[127,2],[191,2],[223,2],[255,10],[239,2],[241,2],[255,2],[248,2],[198,2],[253,2],[251,2],[245,2],[205,2],[190,2],[255,30],[63,2],[255,14],[238,4],[128,2],[238,6],[254,2],[253,2],[243,2],[255,18],[63,2],[255,32],[223,2],[224,2],[255,30],[127,2],[255,22],[223,4],[222,2],[217,2],[199,2],[223,6],[224,2],[255,12],[95,4],[255,2],[127,2],[255,10],[127,2],[255,16],[192,2],[254,2],[253,4],[249,2],[246,2],[239,2],[159,2],[255,28],[127,4],[255,12],[251,4],[192,2],[247,2],[225,2],[236,2],[218,2],[246,2],[247,2],[248,2],[255,16],[127,2],[255,4],[63,2],[255,6],[127,2],[255,12],[223,2],[184,2],[111,2],[223,2],[176,2],[63,2],[191,8],[190,2],[255,12],[63,2],[255,4],[31,2],[127,12],[255,20],[241,2],[206,2],[254,4],[241,2],[255,48],[240,2],[141,2],[251,2],[247,6],[251,2],[252,2],[255,16],[127,2],[255,28],[223,2],[222,2],[191,8],[219,4],[231,2],[255,18],[127,4],[191,6],[255,18],[192,2],[251,2],[247,2],[225,2],[222,2],[191,2],[231,2],[218,2],[225,2],[255,24],[127,4],[255,16],[239,2],[238,2],[131,2],[239,4],[224,2],[207,2],[175,2],[111,2],[140,2],[255,14],[127,2],[191,2],[255,6],[127,2],[191,4],[127,2],[255,12],[253,2],[128,2],[191,2],[189,2],[188,2],[189,4],[160,2],[175,2],[111,2],[96,2],[255,12],[31,2],[255,4],[63,2],[255,4],[63,2],[191,4],[63,2],[255,14],[240,2],[141,2],[251,2],[247,6],[251,2],[252,2],[255,16],[127,2],[255,2],[95,4],[255,22],[239,4],[224,2],[221,2],[189,2],[253,4],[251,2],[231,2],[255,12],[95,4],[255,2],[63,2],[255,32],[223,2],[224,2],[255,30],[127,2],[255,22],[251,6],[247,2],[246,2],[231,2],[236,2],[131,2],[255,26],[127,4],[191,4],[255,12],[251,4],[192,2],[247,2],[225,2],[236,2],[218,2],[246,2],[247,2],[248,2],[255,16],[127,2],[255,4],[63,2],[255,6],[127,2],[255,12],[251,2],[192,2],[251,2],[0,2],[251,2],[192,2],[251,2],[0,2],[223,4],[192,2],[255,12],[127,4],[31,2],[127,4],[255,2],[31,2],[127,6],[255,10],[251,4],[196,2],[253,2],[194,2],[254,2],[225,2],[222,2],[223,2],[224,2],[255,14],[127,2],[255,2],[191,2],[127,2],[255,2],[127,4],[255,16],[184,2],[222,2],[254,4],[29,2],[221,2],[219,2],[215,2],[223,2],[175,2],[112,2],[255,18],[127,4],[191,2],[223,2],[255,4],[31,2],[255,12],[251,4],[247,2],[239,2],[227,2],[221,4],[189,2],[190,2],[255,26],[191,4],[127,2],[255,16],[240,2],[141,2],[251,2],[247,6],[251,2],[252,2],[255,16],[127,2],[255,2],[95,4],[255,20],[0,2],[251,6],[248,2],[251,12],[255,10],[31,2],[255,8],[63,2],[255,20],[251,4],[192,2],[253,2],[254,2],[225,2],[222,2],[223,2],[239,2],[240,2],[255,14],[191,2],[127,2],[255,4],[127,2],[255,22],[223,2],[222,2],[191,8],[219,4],[231,2],[255,18],[127,4],[191,6],[255,30],[207,2],[183,4],[207,2],[255,34],0,[255,11839],7,[0,2],1,[0,3],68,77,71,32,45,77,69,78,85,45,[32,2],131,125,131,139,131,96,131,129,131,106,131,133,129,91,[32,30],[0,2],[130,2],[198,2],[170,2],[146,2],[130,6],[0,2],[66,12],[60,2],[0,2],[64,12],[126,2],[0,2],[254,2],[16,12],[0,2],[56,2],[16,10],[56,2],[0,18],[130,2],[198,2],[170,2],[146,2],[130,6],[0,2],[126,2],[64,4],[124,2],[64,4],[126,2],[0,2],[66,2],[98,2],[82,2],[74,2],[70,2],[66,4],[0,2],[66,12],[60,2],[0,96],[255,128],[32,18],77,69,71,[48,4],49,[255,23],77,85,76,84,73,67,65,82,84,82,73,68,71,69,32,56,[255,15872]]};
+const decodedData = []
+for (let i = 0; i < MENU_JSON.encoded.length; i++) {
+ const val = MENU_JSON.encoded[i];
+ if (Array.isArray(val)){
+ for (let j = 0; j < val[1]; j++) { decodedData.push(val[0]); }
+ } else {
+ decodedData.push(val)
+ }
+}
+
+app.menu.setData(decodedData)
\ No newline at end of file
diff --git a/script/metadata.js b/script/metadata.js
new file mode 100644
index 0000000..53dba8e
--- /dev/null
+++ b/script/metadata.js
@@ -0,0 +1 @@
+TITLE_TO_CODE = {"GB3TAMA":"DMG-WQ","THRILLRIDE!VUPE":"CGB-VUPE","UMABANCLUB":"DMG-U4","FUNPAK4IN1":"DMG-F4","4IN1FUNPAK":"DMG-F4","FUNPAK4IN1-V":"DMG-F9","AMAZING-TATER":"DMG-P3","HARIMANADA":"DMG-A7","ADDAMSFAMILY2":"DMG-A8","ADDAMSFAMILY":"DMG-AF","ADVENTUREISLAN":"DMG-T3","ADVENTUREISLAND":"DMG-GQ","LOLO2":"DMG-LOX0","ROCKYBULLWINKL":"DMG-RY","STARSAVER":"DMG-KS","AEROSTAR":"DMG-AE","AFTERBURST":"DMG-AB","AGROSOAR":"DMG-A6","AKAZUKIN-CHACHA":"DMG-ACCJ","DRACULA3":"DMG-ADNJ","BOKUDRACURAKU":"DMG-DF","ALADDIN":"DMG-ALAE","ALFREDCHICKEN":"DMG-C3","ALIEN":"DMG-L3","ALIENOLYMPICS":"DMG-ALGP","ALIENVPREDATO":"DMG-A9","ALLSTARBB'99":"DMG-AB9P","ALLEYWAY":"DMG-AW","ALTEREDSPACE":"DMG-AL","AMAZINGPENGUIN":"DMG-PN","SPIDER-MAN":"DMG-SM","DMG-UQJ":"DMG-UQ","ULTRA2":"DMG-AU","ULTRA3":"DMG-U3","ULTRA-4":"DMG-UA","AMIDA":"DMG-AM","ANIMALBREEDER":"DMG-AJAJ","ANIMALBREEDER2":"DMG-AAJJ","ANIMANIACS":"DMG-ANCE","ANOTHERBIBLE":"DMG-AABJ","SHOOT":"DMG-ASHJ","ASTEROIDS/MISCM":"DMG-AMCP","MILLI/CENTI/PED":"DMG-ACPP","GALAGA&GALAXIAN":"DMG-AGCJ","DEFENDER/JOUST":"DMG-ADJE","BZONESBREAKOUT":"DMG-ABSE","ARETHA":"DMG-A1","ARETHA2":"DMG-A4","ARETHA3":"DMG-AZ","ASMIK2":"DMG-AT","ASTERIX":"DMG-XA","OBELIX":"DMG-AXOS","ASTEROIDS":"DMG-AN","ASTRORABBY":"DMG-AR","ATOMICPUNK":"DMG-HB","KILLERTOMATOES":"DMG-AK","AVENGINGSPIRIT":"DMG-P8","BUZZLIGHTBUZF":"CGB-BUZF","AYAKASINOSIRO":"DMG-AY","B.C.KID":"DMG-GK","B.C.KID2":"DMG-RJX0","BABYTREX":"DMG-A6","WOLFGBSTEIN":"","BAKENOHTV":"DMG-ATVJ","BAKENOHV3":"DMG-VV","RETRIEVE":"DMG-ABMJ","SHOUHYPERFISH":"DMG-ASYJ","WARRIOR":"DMG-WR","BALLISTICALIE":"DMG-ALIE","BALLOONGBBBKJ":"DMG-BBKJ","BALLOONKID":"DMG-BT","BAMSE":"DMG-A6","BANISHINGRACER":"DMG-BN","BARBIEGAMEGIR":"DMG-GU","SIMPSONESCAPE":"DMG-TS","BASEBALL":"DMG-BS","BASEBALLKIDS":"DMG-BK","BASESLOADEDGB":"DMG-BK","TATSUJINTECHO":"DMG-ATTJ","BATAILLENAVALE":"DMG-AB8F","BATMANROJ":"DMG-B5","BATMANANIMATED":"DMG-XM","BATMAN":"DMG-BA","BATMANFOREVER":"DMG-A3BP","BA.TOSHINDEN":"DMG-ATDE","BATTLEBULL":"DMG-BR","BATTLECRUSHER":"DMG-ABAJ","BATTLEDODGEBAL":"DMG-D6","BATTLEOFKINGDO":"DMG-B3","OLYMPUS":"DMG-OL","BATTLEPINGPONG":"DMG-BP","BATTLESPACE":"DMG-NX","ZEOTH":"DMG-BZ","BATTLEUNITZEOT":"DMG-BZ","BATTLECITY":"DMG-BC","BATTLESHIP":"DMG-NB","BATTLETOADS":"DMG-BV","BT2RAGNAROKWORL":"DMG-R7","B_TOADS/D_DRAGO":"DMG-VN","BEAVIS&BUTTHE":"DMG-AVIP","BEETHOVEN":"DMG-ABVP","BEETLEJUICE":"DMG-B4","BESTOFTHEBES":"DMG-LE","BIKKURINEKKETU":"DMG-NQ","BILLANDTED":"DMG-LB","NASCARFASTTRACK":"DMG-EL","BIONICBATTLER":"DMG-VS","BIONIC-COMMANDO":"DMG-BO","BISHOJYOSENSIS":"DMG-AQ","GBSAILORMOONR":"DMG-QA","HYPERBLACKBASS":"DMG-HP","BLADESOFSTEEL":"DMG-UB","BLASTERMASTER":"DMG-BI","BLOCKGB":"DMG-ABKJ","BLODIA":"DMG-BL","SUPERBLUES":"DMG-J6","BLUESBROTHERS":"DMG-BQ","BOJACKSON":"DMG-BJ","BOGGLEPLUS":"DMG-GL","BOKUJOUGB":"DMG-AYWJ","BOKUMONOGBBYWJ":"DMG-BYWJ","BOMBJACK":"DMG-B9","BOMBERBOY":"DMG-ABCJ","BOMBERKINGS2":"DMG-BI","BOMBERMANGB2":"DMG-AB2J","BOMBERMANGB":"DMG-AB2E","BOMBERMANGB3":"DMG-AB3J","BOMBERBOYB2CK":"CGB-B2CK","BOMBERMANB2CK":"CGB-B2CK","BONK'SADVENTUR":"DMG-GK","BONKSREVENGE":"DMG-RJ","BOOBYBOYS":"DMG-B8","DMG-ASE":"DMG-AS","PUZZLEROAD":"DMG-PU","BOULDERDASH":"DMG-BD","BOXING":"DMG-BX","BOXXLE":"DMG-SO","BOXXLE2":"DMG-SQ","BRAINBENDER":"DMG-BW","BRAINDRAIN":"DMG-ABRE","DRACULA":"DMG-D4","BREAKTHRU!":"DMG-ABXE","BUBBLEBOBBLE":"DMG-AVPJ","BUBBLEBOBBLEJR":"DMG-LX","BUBBLEBOBBLE2":"DMG-LX","BUBBLEGHOST":"DMG-BG","BUBSYII":"DMG-ABBE","BUGSCOLLECTION":"DMG-AWBJ","BUGSCRAZYCASTLE":"DMG-BY","BUGSBUNNY":"DMG-BB","BURAIFIGHTERD":"DMG-BU","BURGERTIME":"DMG-GM","BURNINGPAPER":"DMG-GV","BUSTAMOVE2":"DMG-AGPJ","BUSTAMOVE3":"DMG-A3VE","BUSTAMOVEAA4E":"DMG-AA4P","BUSTERBROTHERS":"DMG-AG","BUZZLIGHTBUZE":"CGB-BUZP","CADILLAC2":"DMG-CA","CAESARSPALACE":"DMG-CE","CAPCOMQUIZ":"DMG-HH","CAPTAINAMERICA":"DMG-VP","BUZZLIGHTBUZD":"CGB-BUZD","CAPTAINTUBASA":"DMG-ACTJ","TUBASAVS":"DMG-T5","CARDGAME":"DMG-CG","CC-SAKURA":"DMG-AM7J","CC-SAKURAAM7J":"DMG-AM7J","CASINOFUNPAK":"DMG-ACFE","CASPER":"DMG-ACEE","CASTELIAN":"DMG-CJ","CASTLEQUESTUS":"DMG-QH","CASTLEVANIAADV":"DMG-CV","CASTLEVANIA2BE":"DMG-CW","CASTLEVANIA":"DMG-ADNE","CATRAP":"DMG-PM","CAVENOIRE":"DMG-KN","CENTIPEDE":"DMG-AC4E","ABYSSNOTOU":"DMG-A3","CHACHAMARUPANIC":"DMG-CC","CHALVO55":"DMG-A2SJ","CHAMPIONSHIPPO":"DMG-H4","CHASEHQ":"DMG-AVPJ","THECHESSMASTER":"DMG-EM","NEWCHESSMASTER":"DMG-N5","MARUKODXSIATA":"DMG-ACMJ","CHIBIMARUKO":"DMG-CM","CHIBIMARUKO2":"DMG-C2","CHIBIMARUKO3":"DMG-M3","CHIBIMARUKO4":"DMG-C4","CHIKIRACEGB":"DMG-CX","CHIKI2TENGOKU":"DMG-AJCJ","ZAS":"DMG-ZA","CHOPLIFTER2":"DMG-V4","CHOPLIFTERIII":"DMG-AC3E","MAZEKKOMONSTER":"DMG-AWMJ","SSSPINNER":"DMG-AYYJ","CHUCKROCK":"DMG-QC","CLIFFHANGER":"DMG-Q5","COLLECTIONPOCK":"DMG-ACOJ","COLLEGESLAM":"DMG-ANYE","COLUMNSGBAOYJ":"DMG-AOYJ","CONTRAALIENWA":"DMG-ACSE","CONTRA":"DMG-CN","CONTRASPIRITS":"DMG-ACSJ","COOLBALL":"DMG-OP","COOLHAND":"DMG-ACWE","COOLSPOT":"DMG-QP","COOLWORLD":"DMG-WL","COSMOTANK":"DMG-CT","GBCREYON5":"DMG-AK5J","GBKUREYONSHIN":"DMG-H9","GBCRAYON2":"DMG-CO","CRYSTALQUEST":"DMG-CQ","GBCULTJUMP":"DMG-C7","GBCULTULTRAMA":"DMG-C5","CUTTHROATISLAN":"DMG-AC8P","CYRAID":"DMG-WR","DAEDALIANOPUS":"DMG-PU","DAFFYDUCK":"DMG-YS","SUPERROBOTWAR2":"DMG-AG2J","MIRACLEOFZONE":"DMG-AMZJ","GENSAN":"DMG-DI","GENSAN2":"DMG-D9","DAISENRYAKUHIR":"DMG-HD","DARKMAN":"DMG-DN","DARKWINGDUCK":"DMG-DC","BOYANDBLOBGB":"DMG-RP","DAYSOFTHUNDER":"DMG-TH","DEADHEATSCRAMBL":"DMG-DH","DENNIS":"DMG-YD","DESERTSTRIKE":"DMG-ADSE","DEXTERITY":"DMG-FU","DICKTRACY":"DMG-DK","DIGDUG":"DMG-DY","DINO":"DMG-AWDJ","DINO2":"DMG-A2DJ","DIRTYRACIN'":"DMG-RI","DODGEBOY":"DMG-DO","DONKEYKONG":"DMG-QD","DONKEYKONGLAND":"DMG-AD3E","DONKEYKONGLAND9":"DMG-YTE0","DORAEMON":"DMG-DE","DORAEMON2":"DMG-DM","DORAEMONKART":"DMG-ADRJ","DORAEMONDX10":"DMG-ADPJ","STUDYBOYKOKUGO":"DMG-ANJJ","STUDYBOYSANSU":"DMG-ANBJ","STUDYBOYKUKU1":"DMG-AKKJ","DOUBLEDRAGON":"DMG-DD","DOUBLEDRAGON3":"DMG-DX","DOUBLEDRAGON2":"DMG-D2","DOUBLEDRIBBLE":"DMG-DW","DOUBLEYAKUMAN":"DMG-YV","DOUBLEYAKUMAN2":"DMG-DV","DOUBLEYAKUMANJ":"DMG-XV","GBUNDOUKAI":"DMG-DU","GBJIDAIGEKI":"DMG-JX","DRFRANKEN":"DMG-FN","DRFRANKEN2":"DMG-DJ","DR.MARIO":"DMG-VU","DORAKYURADENSET":"DMG-CV","DRACURA2":"DMG-CW","GBDBZGOKOU2":"DMG-AZ2J","GBDBZGOKOU":"DMG-ADBJ","DRAGONDANCEBDAE":"DMG-BDAE","DORASUREGAIDEN":"DMG-DQ","DRAGONSLAYER1":"DMG-DS","DRAGONTAILBIT2":"DMG-DR","DLAIRLEGENDUK":"DMG-DL","DLAIRTHELEGEN":"DMG-DL","DRAGONSLAIR":"DMG-DL","DRAGONHEART":"DMG-ADHE","DROPZONE":"DMG-AD4P","GBDRUAGA1":"DMG-AD","DUCKTALES":"DMG-DT","DUCKTALES2":"DMG-D7","DUNGEONLAND":"DMG-DG","BAKENOUZ":"DMG-DZ","DYNABLASTER":"DMG-HB","EARTHWORMJIM":"DMG-AEJE","ELEVATORACTION":"DMG-AVPJ","ELITESOCCER":"DMG-YK","EXTRABASES!":"DMG-FS","F1RACE":"DMG-F1","F1SPIRIT":"DMG-FZ","F15STRIKEEAGL":"DMG-EG","F1BOY":"DMG-FB","F1POLEPOSITIO":"DMG-F5","FACEBALL2000":"DMG-FA","FAMILYJOCKEY":"DMG-FJ","FAMILYJOCKEY2":"DMG-FV","FAMISTA":"DMG-FS","FAMISTA2":"DMG-FD","FAMISTA3":"DMG-N3","FASTESTLAP":"DMG-F2","FELIXTHECAT":"DMG-C6","FERRARIG-PRIX":"DMG-XP","FERRARI":"DMG-XP","THEFIDGETTS":"DMG-F6","FIFA98":"DMG-A8SE","FIFASOCCER":"DMG-AFSE","FIFASOCCER96":"DMG-A6SE","FIFASOCCER97":"DMG-A7SP","FLYINGWARRIORS":"DMG-HR","SEIKENDENSETSU":"","SAGA2":"DMG-S2","SAGA3":"DMG-OS","SAGA":"DMG-SA","FINALREVERSE":"DMG-FI","FIREFIGHTER":"DMG-F8","FISHDUDE":"DMG-US","NORTHSTAR":"DMG-HK","FLAPPYSPECIAL":"DMG-V2","THEFLASH":"DMG-EF","FLEETCOMMANDERV":"DMG-FC","FLINTSTONES":"DMG-FE","THEFLINTSTONES":"DMG-AFNE","FLIPULL":"DMG-FP","FOOTBALLINT'L":"DMG-GS","FOREMANFORREA":"DMG-AFEE","FORTIFIEDZONE":"DMG-IY","FRANKTHOMASBB":"DMG-AFKP","ONTHETILES":"DMG-E5","FRISKYTOM":"DMG-AFTJ","FROGGER":"DMG-AFGE","GBSLAMDUNK":"DMG-AHXJ","GBSLAMDUNK2":"DMG-AS2J","FUNNYFIELD":"DMG-FU","FUSHIGINABULOB":"DMG-PS","FURAINOSIRENG":"DMG-AFDJ","GBGARMS1":"DMG-GA","G&WGALLERY":"DMG-AGAE","CGBDEMO":"CGB-ADME","DMGAGINGTEST":"","GAME&WATCH":"DMG-AGGA","GAMEBOYGALLERY":"DMG-AGIJ","GBWARS":"DMG-GW","GBWARST":"DMG-AGWJ","GBTAMAGOTCHI3":"DMG-AOMJ","GBTAMAGOTCH1":"DMG-BTAJ","GBTAMAGOTCH2":"DMG-AT3J","THEGAMEOFHARMON":"DMG-GH","GAMERADAIKAIJU":"DMG-AGMJ","GANBAREGOEMON":"DMG-GC","KIDNIKI":"DMG-YM","GARFIELD":"DMG-L4","GARGOYLE'SQUES":"DMG-RA","GARGOYLE'S":"DMG-RA","GAUNTLETII":"DMG-G2","GBBASKETBALL":"DMG-OF","GBGENJIN":"DMG-AG3J","GBGENJIN2":"DMG-AG3J","GBGENJINLAND":"DMG-AG3J","NPM-MENUMENU":"DMG-AMSJ","PACHISLOTJR01":"DMG-IP","GBKISSMINIGAME":"DMG-AKAJ","GEARWORKS":"DMG-G8","GBKITAROU":"DMG-AKTJ","POWERMODELLER":"DMG-APZJ","GEMGEM":"DMG-GE","GENJINCOTTU":"DMG-AGKJ","GANBARUGA":"DMG-G4","GEORGEF.BOXIN":"DMG-JK","THUNDERBIRDS":"DMG-T9","THEGETAWAY":"DMG-AGEE","GHOSTBUSTERS2":"DMG-GB","GHOSTBUSTERSII":"DMG-GB","G1KING":"DMG-GI","GINGA":"DMG-GG","GLCKSRAD":"DMG-WF","GOGOACKMAN":"DMG-ACKJ","GO!GO!HICHHIK":"DMG-AJHJ","GOGOTANK":"DMG-GT","GOAL!":"DMG-JV","GODMEDICINE":"DMG-GX","GODMEDICINEFB":"DMG-AGHJ","GODZILLA":"DMG-GZ","GOLF":"DMG-GO","GOLFCLASSIC":"DMG-AGFP","GOLFDEOHASUTA":"DMG-AOHJ","EITANGOSENTA":"DMG-AQ2J","EIZYUKUGO1000":"DMG-AJ5J","EIKEN2KYUEIKAIW":"DMG-AE2J","EITANGO1900":"DMG-AT2J","KANYOUKU":"DMG-AK7J","REKISIMASTER51":"DMG-AR3J","YOJIJUKUGO":"DMG-AY3J","YOJIJUKUGO288":"DMG-AY3J","HINSYUTUEIBUNP":"DMG-AG4J","CJYUKUGO350":"DMG-AD2J","CTANGO1700":"DMG-AB4J","TYUUGAKUKANJIG":"DMG-AG6J","REKISINENDAI24":"DMG-AH2J","RIKAANKI250":"DMG-AS3J","NIHONSHI201GB":"DMG-AN3J","SIKAKKOKUGOBF3J":"DMG-BF3J","SIKAKKOKUGOAJ6J":"DMG-AJ6J","SIKAKURIKABH4J":"DMG-BH4J","SIKAKURIKAAE8J":"DMG-AE8J","SIKAKUISBBB4J":"DMG-BB4J","SIKAKUISBAT":"DMG-AF3J","SIKAKSYAKAIBE3J":"DMG-BE3J","SIKAKSYAKAIAK8J":"DMG-AK8J","NITINOUSANSUU":"DMG-AM5J","YAMAKAWANIHON":"DMG-AN4J","YAKASEKAISHIG":"DMG-AW4J","ZKAIEIGOKOBUN28":"DMG-AK4J","ZKAIJUKUGO1017":"DMG-AZ3J","ZETAN1500":"DMG-AC2J","ZKAIKOBUN":"DMG-AP7J","ZCHUGAKUEITANGO":"DMG-AJ3J","GRADIUS":"DMG-NE","GURANDERMUSASHI":"DMG-ARVJ","GREATGREED":"DMG-B6","GREMLINS2":"DMG-GR","PROWRES":"DMG-PR","HARVEST-MOONGB":"DMG-AYWE","HATRIS":"DMG-HT","HAYAOSIKUIZU":"DMG-AQZJ","HEADON":"DMG-PQ","HEIANKYOALIEN":"DMG-HA","TENSAIBAKABON":"DMG-TF","HERCULESEIKOU":"DMG-HE","HERCULES":"DMG-AHCP","PINBALLPARTY":"DMG-PP","---CADA---":"DMG-CD","PUROSTADIUM'9":"DMG-EI","HIGHSTAKES":"DMG-HY","HIRYUGAIDEN":"DMG-HR","HITTHEICE":"DMG-HC","COOKINGDENSETU":"DMG-H7","HOIHOIDMGBAN":"DMG-HZ","HOKUTONOKEN":"DMG-HK","HOMEALONE":"DMG-HM","HOMEALONE2":"DMG-AH","HONSHOGI":"DMG-AHSJ","HONGKONG":"DMG-HG","HONMEIBOY":"DMG-IK","DODGEDANPEI":"DMG-DA","HOOK":"DMG-HS","HOSHINOKA-BI":"DMG-KY","KIRBY2":"DMG-AKBP","HUDSONHAWK":"DMG-HW","HUGO":"DMG-AGOP","HUGO2":"DMG-AO2P","THEHUMANS":"DMG-HU","HUNCHBACK":"DMG-ANDE","REDOCTOBER":"DMG-HF","HYPERBB95":"DMG-A95J","HYPERDUNK":"DMG-DW","HYPERLODERUNNER":"DMG-HL","IKARINOYOUSAI":"DMG-IY","FORTIFIEDZONE2":"DMG-I2","INYOURFACE":"DMG-YF","CRASHDUMMIES":"DMG-C8","INDIANAJONES":"DMG-J5","INDIANAJONES3":"DMG-J5","LITTLEINDIAN":"DMG-A65P","LANGTRNSLTRFR":"DMG-FH","LANGTRNSLTRSP":"DMG-NL","TRAVELGUIDE":"DMG-GD","PERSONALORGANI":"DMG-ZR","SPELLCHECKER":"DMG-SL","INITIALDGAIDE":"DMG-AIDJ","ISS":"DMG-AIGE","BAKENOU":"DMG-BH","IRONMANX-O":"DMG-AXIP","TSUMEGO01":"DMG-IG","ISHIDOJPNVER.":"DMG-ST","ISHIDOUSAVER.":"DMG-ST","NYANTOWONDERFUL":"DMG-ANWJ","BIGWAVESOCCER":"DMG-AJSJ","FIGHTINGSOCCER":"DMG-JL","J.LEAGUELIVE9":"DMG-AWGJ","WINNINGGOAL":"DMG-W7","FRENCHNICKGOL":"DMG-JN","NICKLAUSGOLF":"DMG-JN","J.CUPSOCCER":"DMG-JV","JAMESBOND00":"DMG-AW7P","JANKENMAN":"DMG-JA","JANSHIRO":"DMG-JF","JANSHIRO2":"DMG-J4","JANTAKUBOY":"DMG-GJ","JEEPJAMBOREE":"DMG-JJ","JELLYBOY":"DMG-AJBE","PLATJEOPARDY!":"DMG-AJPP","JEOPARDYSPORTS":"DMG-JE","TEENJEOPARDY!":"DMG-AJQP","JEOPARDY":"DMG-JP","THEJETSONS":"DMG-JS","JIKUUSENKI-MU":"DMG-H1","JCONNORSTENNI":"DMG-JC","THEGAMEOFLIF":"DMG-AZGJ","JINSEI":"DMG-JG","TUMEGO1BJTJ":"CGB-BJTJ","JOEANDMAC":"DMG-JM","JORDANONEONONE":"DMG-JB","JORDANVSBIRD":"DMG-JB","JUDGEDREDD":"DMG-AJDE","JUNGLEBOOK":"DMG-J7","GBTAACHIYAN":"DMG-J3","JUNGLESTRIKE":"DMG-AJGE","JUNGLEWARS":"DMG-JW","JURASSICPARK":"DMG-JQ","JURASSICPARKI":"DMG-A2JP","KEIBAKIZOKU":"DMG-K6","KEIBAKIZOKUEX9":"DMG-AQEJ","KAERUNOTAMENI":"DMG-OK","GBGODZILLA":"DMG-G7","NAVYBLUE":"DMG-NB","NAVYBLUE90":"DMG-N9","RADARMISSION":"DMG-RM","DMG-KMJ":"DMG-KM","GBMASKRIDERSD":"DMG-R6","KANDUMEMONSTER":"DMG-AKMJ","GBMUSASHIROAD":"DMG-MU","KARAMUCHOZIKEN":"DMG-AKDJ","KASEKIREBORN":"DMG-AKRJ","KATTOBIROAD":"DMG-K5","KAWANUSHI3":"DMG-A7KJ","KEITAIKEIBA8":"DMG-A8GJ","KENGRIFFEYJR":"DMG-AKGP","YAIBA":"DMG-YY","THEKICKBOXING":"DMG-LE","KIDDRACULA":"DMG-DF","KIDICARUS":"DMG-KA","GBPATLABOR1":"DMG-MO","METALJACK":"DMG-M5","KILLERINSTINCT9":"DMG-AKLE","NETTOUKOF95":"DMG-AKFJ","KOFHEATOFBATTL":"DMG-AK6P","KINGOFTHEZOO":"DMG-PW","KINGDOMCRUSADE":"DMG-KC","GBKINGYOTYUUI":"DMG-KT","KINGYOCHUIHOU":"DMG-KJ","ONI":"DMG-ON","GBKINNIKUMAND":"DMG-KW","KIRBYBLOCKBALL":"DMG-AKXP","KIRAKIRAKIDS":"DMG-AKCJ","KIRBY'SPINBALL":"DMG-K9","KIRBYDREAMLAN":"DMG-KY","STARSTACKER":"DMG-AKCP","KITCHINPANIC":"DMG-KP","KITERETUZYURAK":"DMG-VI","GENSANQ":"DMG-QG","KLAX":"DMG-KX","KLUSTAR":"DMG-AKUP","KLUSTARAKUE":"DMG-AKUE","KNIGHTQUEST":"DMG-FW","KOIWAKAKEHIKI":"DMG-KI","GBCOLLECTION1":"DMG-AJIJ","GBCOLLECTION2":"DMG-AJJJ","GBCOLLECTION3":"DMG-AJKJ","GBCOLLECTION4":"DMG-AJLJ","KONAMIGOLF":"DMG-KG","KONAMICBASKET":"DMG-DW","KONAMICGOLF":"DMG-KG","KONAMICICEHOCKE":"DMG-UB","KONAMICSPORTS":"DMG-KH","KONCHUHAKASE":"DMG-AKJJ","KORODICE":"DMG-KK","KOKIATSUBOY":"DMG-AKEJ","KRUSTY":"DMG-FK","KUMANOPUTARO":"DMG-AKPJ","SPARTANX":"DMG-SX","DMGGARIBA-BOUI":"DMG-AGBJ","KWIRK":"DMG-AP","KYORCHANLANDHIR":"DMG-CJ","LAMBORGHINI":"DMG-L7","LASTACTIONHER":"DMG-LR","LAWNMOWERMAN":"DMG-L5","LAZLOSLEAP":"DMG-S5","LEGEND":"DMG-LG","PRINCEVALIANT":"DMG-KC","THERIVERKING":"DMG-AFHP","ZELDA":"DMG-ZL","LEMMINGS":"DMG-L8","LEMMINGS2":"DMG-AL2E","LETHALWEAPON":"DMG-LT","LINGO":"DMG-LZ","THELIONKING":"DMG-ALNE","TRACKMEET":"DMG-TM","LITTLEMASTER":"DMG-LA","LITTLEMASTER2":"DMG-L2","LITTLEMERMAID":"DMG-LD","LOCK'NCHASE":"DMG-LC","LOLO":"DMG-LO","LOONEYTUNES":"DMG-LN","TAZ-MANIA":"DMG-ZT","LOOPZ":"DMG-LP","LOPPI-HIR2B52J":"DMG-B52J","LOPPI-HIR2PB52J":"DMG-B52J","LOPPI-HIR3B53J":"DMG-B53J","LOPPI-HIR3PB53J":"DMG-B53J","LOPPI-HIR1B5IJ":"DMG-B5IJ","LOPPI-HIR1PB5IJ":"DMG-B5IJ","LOPPI-KAN2B62J":"DMG-B62J","LOPPI-KAN2PB62J":"DMG-B62J","LOPPI-KAN3B63J":"DMG-B63J","LOPPI-KAN3PB63J":"DMG-B63J","LOPPI-KAN1B6IJ":"DMG-B6IJ","LOPPI-KAN1PB6IJ":"DMG-B6IJ","LOSTWORLD":"DMG-ALWF","NUMBERPLACEARCJ":"DMG-ARCJ","LUCKYLUKE":"DMG-ALLP","LUCKYMONKEY":"DMG-LM","LUCLE":"DMG-LU","LUNALANDER":"DMG-LL","MACHGO":"DMG-AGJJ","MADDEN95":"DMG-ANLP","MADDEN96":"DMG-A6MP","MADDEN'97":"DMG-A7MP","DMG-MQJ":"DMG-MQ","RAYEARTH1":"DMG-ARYJ","RAYEARTH2":"DMG-AR2J","GBTARURU-TO1":"DMG-MG","GBTARURU-TO2":"DMG-MF","MAGNETICSOCCER":"DMG-KQ","MAHOUJINGURUGUR":"DMG-AMGJ","MAKAIMURAGAIDEN":"DMG-RF","BEACH,VOLLEYBAL":"DMG-SV","SAGAIA":"DMG-AVPJ","BUBBLEBOBBLESE":"","ESPARKS":"DMG-ES","RAIJINOU":"DMG-RG","ZOIDSJ1":"DMG-ZO","GANBARUGASET":"","NINJASPIRIT":"DMG-UJ","RTYPE2":"DMG-RZ","RTYPE2SET":"","SHISENSYO":"DMG-MA","BOUKENJIMA2":"DMG-T3","MILONCASTLE":"DMG-M8","TETRISSET":"","TENNIS":"DMG-TN","TETRIS":"DMG-TR","YAKUMAN":"DMG-MJ","MARBLEMADNESS":"DMG-MB","MARIO&YOSHI":"DMG-YO","MARIO'SPICROSS":"DMG-APCP","GBMARMALADEBOY":"DMG-AMAJ","MARU'SMISSION":"DMG-OJ","KINTAROACG":"DMG-KO","KINTARORPG":"DMG-K2","MASTERKARATEKA":"DMG-KR","MATTHIASSAMMER":"DMG-AJSD","MAUIMALLARD":"DMG-AMIP","DIEMAUS":"DMG-ADMP","MAX":"DMG-KV","MCDONALDLAND":"DMG-CU","MEDAROTKABUTO":"DMG-AMXJ","MEDAROTKUWAGAT":"DMG-AMYJ","PARTSCOLLECTIO":"DMG-AMPJ","PARTSCOLLECTION":"DMG-A4MJ","MEGAMAN":"DMG-RW","MEGAMAN2":"DMG-W2","MEGAMAN3":"","MEGAMAN4":"DMG-R4","MEGAMAN5":"DMG-WM","MEGALIT":"DMG-MZ","LASTBIBLE":"DMG-M7","LASTBIBLE2":"DMG-M9","DETECTIVECONAN":"DMG-ADCJ","DETECTIVCONAN2":"DMG-ADKJ","MERCENARYFORCE":"DMG-TK","METALMASTERS":"DMG-E6","METROID2":"DMG-ME","MICKEYMOUSE":"DMG-MM","MICKEYMOUSE2":"DMG-M2","MICKEY4":"DMG-L4","MICKEY5":"DMG-I5","MICKEYSCHASE":"DMG-MC","MMULTCHALLENG":"DMG-UV","MICROMACHINES":"DMG-A2XP","MAKIBAO":"DMG-ANAJ","GBPOWERMOVIE":"DMG-A2RP","POWERRANGERS":"DMG-ZW","MIGRAINACCLAIM":"DMG-BW","MIKENEKOHOLMES":"DMG-MK","MINER2049ER":"DMG-MV","MINESWEEPER":"DMG-UM","MINI4BOY":"DMG-AJ4J","MINI4BOY2":"DMG-AJ2J","MINI4WDGB":"DMG-AM4J","MINIPUTT":"DMG-V3","":"","MISSILECOMMAND":"DMG-MW","DMGMOGUMOGUGOMB":"DMG-AMMJ","MOGURADEPON!":"DMG-EP","MOGURANYA":"DMG-AMOP","MOMOTARODENGEK":"DMG-G5","SUPERMOMOTETU":"DMG-AMDJ","MOMOTARODENGEKI":"DMG-AM2J","MOMOTAROUGAIDE":"DMG-AM3J","MOMOTETSUJR.":"DMG-AD8J","EXCHANGERGB":"DMG-AMEJ","EUROMONOPOLY":"DMG-ALYP","MONOPOLY":"DMG-LY","MONSTERMAKER":"DMG-QN","MONSTERMAKERJ":"DMG-M6","MONSTERMAX":"DMG-X8","MONSTERRACE":"DMG-AMRJ","MONRACEOTHER":"DMG-AMFJ","MONSTERTRUCK":"DMG-MT","MONSTERWARS":"DMG-ATWE","MONTEZUMA":"DMG-AZME","MORTALKOMBAT":"DMG-AK2J","MORTALKOMBATI":"DMG-AMKE","MORTALKOMBAT3":"DMG-A3ME","MOTOCROSSMANIAC":"DMG-MX","MOUSETRAPHOTE":"DMG-MH","GOURMETPARADIS":"DMG-GP","MR.DO!":"DMG-M4","MR.DRILLERBV3J":"CGB-BV3J","TEKICHUJUTSU":"DMG-UE","MRNUTZ":"DMG-AN8E","MSPACMANSCEAQCE":"DMG-AQCE","MS.PAC-MAN":"DMG-N4","MUHAMMADALI":"DMG-XB","DISNEYSMULAN":"DMG-AMLE","CLEMENSBASEBAL":"DMG-VM","MYSTERIUM":"DMG-MY","MYSTICQUEST":"","MYSTICALNINJA":"DMG-AGDE","MAHJONGKYOUSITU":"DMG-ABIJ","NADAASATAROUN":"DMG-AY2J","NAILNSCALE":"DMG-DR","F-1HEROGB":"DMG-F3","F-1HEROGB92":"DMG-F5","NAMCOCLASSIC":"DMG-NH","GALLERY1":"DMG-ANGJ","GALLERY2":"DMG-AN2J","GALLERY3":"DMG-AV3J","PAPUWAKUNN":"DMG-NR","NANONOTE":"DMG-NN","NAVYSEALS":"DMG-NV","NAVYBLUE98":"DMG-A98J","ALLSTARCHALLENG":"DMG-AC","ALSTARCHALLENGE":"DMG-H2","NBAJAMTE":"DMG-AJTP","NBAJAM":"DMG-A8NP","NBALIVE96":"DMG-A6BP","NECTARISGB":"DMG-AN5J","KUNIO":"DMG-KU","DODGEBALL":"DMG-ND","WORLDCUP":"DMG-NC","BEACH_VOLLEY":"DMG-VX","NEKOJARA":"DMG-NJ","NEMESIS":"DMG-NM","NEMESIS2HERO":"DMG-NE","NEMESIS2":"DMG-NE","NETTOUGAROU2":"DMG-X3","REALBOUTSPECIAL":"DMG-ARBJ","NETTOUSAMURAI":"DMG-X4","NETTOUKOF96":"DMG-AK6J","NETTOUTOSHINDE":"DMG-ATDJ","NETTOUWH2JET":"DMG-AWJJ","NFLBLITZ":"DMG-ABZE","NFLFOOTBALL":"DMG-FT","NFLQUARTERBACK":"DMG-AQ9E","NFLQBCLUB96":"DMG-AQBE","NHL96":"DMG-A6HP","NHLHOCKEY95":"DMG-ANHE","MAHJONGYOSHIMOT":"DMG-AMUJ","NIGELMANSELL":"DMG-WC","MANSELL":"DMG-WC","NIHONDAIHYOU":"DMG-ASKJ","JLEAGUE":"DMG-ASJJ","BERUTOMOKURABU":"DMG-ANTJ","NINJABOY":"DMG-CL","NINJABOY2":"DMG-CH","NINJAGAIDEN":"DMG-NG","NINJARYUKENDEN":"DMG-NG","NINJATARO":"DMG-UP","NINKU":"DMG-ANKJ","NINKU2":"DMG-ANSJ","NINTAMAEAWASE":"DMG-ACAJ","NINTAMARANTARO":"DMG-AGNJ","NOBUNAGA":"DMG-NY","NONTAN":"DMG-V5","NOOBOW":"DMG-NW","ODDWORLDADVENT":"DMG-AODE","OHASTAY&R":"DMG-AOSJ","OIRAJAJAMARU":"DMG-OJ","OLYMPICGAMES":"DMG-AO9E","WINTEROLYMPICS":"DMG-YC","ONI2":"DMG-O2","ONI3":"DMG-O3","ONI4":"DMG-O4","ONI5":"DMG-AO5J","ONI-PACHINKOTEN":"DMG-OG","OPERATIONC":"DMG-CN","PENGUINBOY":"DMG-PN","OTHELLO":"DMG-OT","OTHELLOWORLD":"DMG-ATOJ","OTOGIBANASITA":"DMG-AY7J","OTTIFANTEN":"DMG-AOBP","OUTOFGAS":"DMG-FX","OUTBURST":"DMG-OB","MOGUMOGUQ":"DMG-AMQJ","P-MAN":"DMG-UHJ0","PAC-ATTACK":"DMG-NO","PAC-IN-TIME":"DMG-APTE","PAC-MANSCEAACE":"DMG-AACE","PAC-MAN":"DMG-PC","PAC-PANIC":"DMG-NO","PACHISLOGB":"DMG-APGJ","PACHISLOTKIDS":"DMG-AK3J","PACHISUROWC'94":"DMG-ZP","PACHINKOGENSAN":"DMG-AKZJ","KAGUYAHIME":"DMG-P7","PACHINCOGAIDEN":"DMG-APKJ","SAIYUUKI":"DMG-PJ","PACHINKOTIME":"DMG-PT","CASTLE":"DMG-CK","PACHIOKUN":"DMG-K7","PACHIOKUN2":"DMG-P4","PACHIOKUN3":"DMG-AP3J","GAMEGALLERY":"DMG-AP4J","THEPAGEMASTER":"DMG-APME","PAINTERMOMOPIE":"DMG-PE","PALAMEDES":"DMG-PX","PABINGO":"DMG-YB","KESAMARU":"DMG-KB","PANG":"DMG-AG","PAPERBOY":"DMG-MP","PAPERBOY2":"DMG-Y2","PARASORUHEMBEI":"DMG-PH","PARASOLSTARS":"DMG-P6","PARODIUS":"DMG-PV","PARODIUSDA!":"DMG-PV","PEETAN":"DMG-PF","DARUMANBUSTERS":"DMG-DB","PENGUINLAND":"DMG-PL","PENGUINWARS":"DMG-PW","PENGUINKUNWARSV":"DMG-PW","PENTADRAGON":"DMG-P5","PGAEUROTOUR":"DMG-APRP","PGATOUR96":"DMG-A3GE","PHANTASM":"DMG-P8","PHANTOMAIRMIS":"DMG-UR","PICROSS2":"DMG-AP2J","OUTTOLUNCH":"DMG-Y5","PINBALL":"DMG-PB","PINBALLDELUXE":"DMG-APDP","PINBALLDREAMS":"DMG-D8","PINBALLFANTASI":"DMG-APFE","PINBALLMANIA":"DMG-APIP","GBPINGU1":"DMG-WO","PINOCCHIO":"DMG-ACGE","PIPEDREAM":"DMG-PD","PITFIGHTER":"DMG-QF","PITMAN":"DMG-PM","DMGFOOTBALL":"DMG-FL","POCAHONTAS":"DMG-AHQP","POCKETBASSFIS":"DMG-ABFJ","POCKETBATTLE":"DMG-CB","POKEBOM":"DMG-APOJ","PBOWLING":"DMG-AVBJ","POCKETBOWLAVBE":"DMG-AVBE","POCKETCLBLOCK":"DMG-AC6J","POCKETDENSYA":"DMG-ATNJ","POCKET_FAMILY":"DMG-HFAJ","POCKETGOLF":"DMG-AP6J","POCKETHANAA6PJ":"CGB-A6PJ","KANJIRO":"DMG-ASAJ","POCKETKYOROCHA":"DMG-AKYJ","POCKETLOVE":"DMG-APLJ","POCKETMAHJAN":"DMG-ABGJ","POKEMONRED":"DMG-APAJ","POKEMONBLUE":"DMG-APEJ","POKEMONGREEN":"DMG-APBJ","POCKETPUYO2APYJ":"DMG-APYJ","POCKETPUYOPUYO":"DMG-APYJ","POCKETSHOGI":"DMG-AP5J","POCKETSONAR":"DMG-AHWJ","POCKETSTADIUM":"DMG-PK","POKONYAN!":"DMG-N7","DMG-AAJ":"DMG-AA","POPUP":"DMG-OP","POP'NTWINBEE":"DMG-TD","POPEYE":"DMG-PY","POPEYE2":"DMG-PG","POPULOUS":"DMG-P9","POWERMISSION":"DMG-XC","PAWAPUROGB":"DMG-APWJ","POWERRACER":"DMG-PQ","PREHISTORIKMAN":"DMG-UH","PRIPRI":"DMG-P2","PRIMALRAGE":"DMG-AR9P","PRINCEOFPERSI":"DMG-NP","KIWAME-GB":"DMG-AZZJ","PROSOCCER":"DMG-KF","PROBOTECTOR":"DMG-CN","PROBOTECTOR2":"DMG-ACSP","PROJECTS11BPJE":"CGB-BPJE","VIKINGCHILD1":"DMG-VC","THEPUNISHER":"DMG-NS","PURIKURAPOCKET":"DMG-A2PJ","PUYOPUYO":"DMG-QQ","PUZZLE_B_4AA4J":"DMG-AA4J","PUZZLEBOY":"DMG-AP","PUZZLEBOY2":"DMG-P3","NINTAMAPUZZLEG":"DMG-APNJ","PUZZNIC":"DMG-PZ","PYRAMIDSOFRA":"DMG-YR","QBILLION":"DMG-QB","Q*BERTII":"DMG-QT","QIX":"DMG-QX","QUARTH":"DMG-QR","ATHENANOHATENA?":"DMG-AJ","SHOBAISHOBAI":"DMG-QS","RTYPE":"DMG-RE","RACEDAYS":"DMG-ARDE","RACEDRIVIN'":"DMG-RV","RACINGDAMASHII":"DMG-RD","RAGINGFIGHTER":"DMG-OB","RAMPAGEWT":"DMG-ARPP","RAMPART_GB(JPN":"DMG-R8","RAMPART_GB":"DMG-R8","RANMA1/2KAKUGEK":"DMG-RO","RANMA1/2PART2":"DMG-R3","RANMA1/2":"DMG-RN","RATS!":"DMG-AVTE","RAYTHUNDER":"DMG-RT","REALGHOSTBUSTE":"DMG-L4","REALBASEBALL(C)":"DMG-AECJ","REALBASEBALL(P)":"DMG-AEPJ","REDARREMER":"DMG-RA","RENANDSTIMPY":"DMG-RX","VEEDIOTS":"DMG-VD","RENJYUCLUB":"DMG-AHRJ","RENTAIOU":"DMG-AROJ","RESERVOIRRAT":"DMG-AVTP","RESIDENTEVIL":"","RIDDICKBOWE":"DMG-XW","RINGRAGE":"DMG-RU","ROADRASH":"DMG-H5","ROADSTER":"DMG-RS","ROBINHOOD":"DMG-RH","ROBOCOP":"DMG-CP","ROBOCOP2":"DMG-R2","RVT":"DMG-VR","ROCK'N!MONSTER":"DMG-HO","ROCKMANWORLD":"DMG-RW","ROCKMANWORLD2":"DMG-W2","ROCKMANWORLD3":"DMG-W3","ROCKMANWORLD4":"DMG-R4","ROCKMANWORLD5":"DMG-WM","RODLAND":"DMG-RL","ROLANSCURSE":"DMG-VE","ROLAN'SCURSE2":"DMG-VT","ROX":"DMG-ARXJ","ROXARXE":"DMG-ARXP","RUBBLESA":"DMG-KS","RUBBLESAVER2":"DMG-KV","RUGRATSMOVIE":"DMG-ARGE","RUMBLE":"","SDSEINTPARADA0":"DMG-S7","GBOTOKOJYUKU1":"DMG-OM","SAMEGAME":"DMG-AS5J","SAMURAISHODOWN":"DMG-X4","SANGOKUSHI":"DMG-IS","SANRIOCARNIVAL":"DMG-S6","SANRIOURANAIGB":"DMG-AG7J","SANRIOURANAI":"DMG-AG7J","SCHIFFE":"DMG-AB8D","SCOTLANDYARD":"DMG-SY","SDGUNDAMKUNITOR":"DMG-SD","GBLACROANHERO":"DMG-LH","SDHIRYUNOKEN":"DMG-AHGJ","SDLUPINTHE3R":"DMG-XR","SDSENGOKUDEN2":"DMG-G3","SDSENGOKUDEN3":"DMG-D3","SEABATTLE":"DMG-AB8P","SQDSVDMG":"DMG-ASQE","SEASIDEVOLLEY":"DMG-SV","SELECTION":"DMG-SE","SELECTION1&2":"DMG-ASLJ","SELECTION2":"DMG-SI","SENGOKUNINJAKUN":"DMG-UP","SENSIBLESOCCER":"DMG-VZ","SERPENT":"DMG-KM","ELMO123":"DMG-AE3E","ELMOABC":"DMG-AEAE","ELMOINGROAELE":"DMG-AELE","SHADOWWARRIORS":"DMG-NG","SHANGHAI":"DMG-SH","SHANGHAIPOCKET":"DMG-ASEJ","SHAQFU":"DMG-AQFE","SHIKINJYO":"DMG-SU","POCKETJOCKEY":"DMG-AQGJ","TOUKONSANJYUUSH":"","GBNEWSDGUNDA":"DMG-UO","THESHINRIGAME":"DMG-VK","CYBERFORMULA":"DMG-CF","SHIPPODEBUN":"DMG-TG","GBIRONLEAGUER":"DMG-IR","SHOUGI":"DMG-SG","SHOUGI2":"DMG-AS8J","SHOUGI3B9SJ":"DMG-B9SJ","GBSHOUGISAIKY":"DMG-AMSJ","SHONENASHIBE":"DMG-A2","HIGHWAYRACING":"DMG-ASUJ","IREMFIGHTER":"DMG-IF","SIDEPOCKET":"DMG-SW","ITCHY&SCRATCH":"DMG-YH","SIMPSONS3":"DMG-EK","SIMPSONS2":"DMG-JU","SKATEORDIEBA":"DMG-SK","TOURDETHRASH":"DMG-KD","SMALLSOLDIERS":"DMG-ASIE","THESMURFS3":"DMG-AU3P","SMURFS2":"DMG-AUFP","SMURFS":"DMG-UF","SNEAKYSNAKES":"DMG-NK","SNOOPY":"DMG-SN","SNOOPY2":"DMG-AFJJ","DMG-SJJ":"DMG-SJ","SNOWBROS.JR":"DMG-SJ","SOCCER":"DMG-GS","SOCCERBOY":"DMG-SB","SOCCERMANIA":"DMG-SB","SOLARSTRIKER":"DMG-SS","SOLDAMGB":"DMG-S9","SOLITAIRE":"DMG-S5","SOLITAIREFUNPA":"DMG-UX","SOLOMON'SCLUB":"DMG-SC","SPEEDYGONZALES":"DMG-G6","GO!GO!KID":"DMG-ABJJ","SOUKOBAN":"DMG-SO","SOUKOBAN2":"DMG-SQ","SPACEINVADERS":"DMG-SP","SPANKY'SQUEST":"DMG-LM","SPEEDBALL2":"DMG-E2","SPIDERMANXMEN":"DMG-XG","SPIDER-MAN2":"DMG-ZS","SPIDER-MAN3DM":"DMG-LQ","THESPIRITOFF":"DMG-FZ","SPIROU":"DMG-AUOP","SPLITZ":"DMG-R5","SPORTSCOLLECT":"DMG-ASCJ","SISPORTS":"DMG-QM","SIGOLFCLASSIC":"DMG-AGFE","SIKIDS":"DMG-U8","SPOTCOOLADV":"DMG-CU","SPOT":"DMG-S3","SPUDSADVENTURE":"DMG-TV","SPYVSSPY":"DMG-TO","SQUAREDEAL":"DMG-CA","STARSWEEP":"DMG-AXLJ","STARTREK":"DMG-NU","GENERATIONS":"DMG-ASTE","EMPIRESTRIKES":"DMG-EB","STARWARS":"DMG-WS","STARWARS-NOA":"DMG-WS","STARGATE":"DMG-AGTP","STARHAWK":"DMG-WK","STOPTHATROACH":"DMG-HZ","STREETFIGHTER":"DMG-ASFE","STREETRACER":"DMG-ASRE","SUMOFIGHTER":"DMG-SF","SUMOUFIGHTER":"DMG-SF","SUNSOFTGRANDP":"DMG-FB","SUPERBDAMAN":"DMG-ABDJ","SUPERBATTLETAN":"DMG-N6","GBSUPERBIKKURI":"DMG-CY","SUPERBLACKBAS":"DMG-A2BE","SUPERBOMBLISS":"DMG-ASBJ","SBOMBLISSDXA2OJ":"DMG-A2OJ","SUPERBREAKOUT":"DMG-AOTP","SUPERCHASEH.Q":"DMG-Q2","SUPERCHINESELAN":"DMG-ALDJ","SUPERCHINESE2":"DMG-CH","SUPERCHINESE3":"DMG-ACLJ","SUPERDONKEYKONG":"DMG-YTJ0","SUPERHUNCHBACK":"DMG-HN","JAMESPOND":"DMG-JD","SUPERKICKOFF":"DMG-KF","SUPERMARIOLAND":"DMG-ML","MARIOLAND2":"DMG-L6","MOMOTETU":"DMG-MD","SUPEROFFROAD":"DMG-OR","S-PACHINKOWARS":"DMG-AJRJ","SUPERRCPRO-AM":"DMG-RC","SUPERROBOTWAR":"DMG-SZ","SUPERSCRABBLE":"DMG-SR","SUPERSNAKEY":"DMG-AWSJ","SRJDMG":"DMG-ARJE","SSBASKETBALL":"DMG-VB","SUPERMAN":"DMG-ASMP","BOBETBOBBBBQP":"CGB-BBQP","F1SUPERDRIVIN":"","SUZUKIALSTAAXRP":"CGB-AXRP","SWAMPTHING":"DMG-WG","SWORDOFHOPE2":"DMG-SI","THESWORDOFHOP":"DMG-SE","TERMINATOR2TA":"DMG-AV","TAIKYOKURENJU":"DMG-TC","TAILGATOR":"DMG-TG","VARIETYPACK":"DMG-AVPJ","ANGELMARLOWE":"DMG-HV","FIGHBIRDGB":"DMG-TY","BOUKENJIMA3":"DMG-GQ","ACESTRIKER":"DMG-JR","TALESPIN":"DMG-LS","GBTAMAGOTCHI":"DMG-ATAP","TARZAN":"DMG-ZK","TASMANIASTORY":"DMG-TA","TAZMANIA":"DMG-ATZP","TECMOBOWL":"DMG-TL","TMHTFOOTCLAN":"DMG-NT","TMHTBACKFROM":"DMG-TT","TMHT3":"DMG-K8","TMNTFOOTCLAN":"DMG-NT","TMNT":"DMG-NT","TMNT2":"DMG-TT","TMNT3":"DMG-K8","TMNTBACKFROM":"DMG-TT","DMG-ASJ":"DMG-AS","TEKICHURUSH":"DMG-NZ","TEKKYUFIGHT!":"DMG-IB","TENCHIWOKURAU":"DMG-ET","TENJINKAISEN":"DMG-TK","TERMINATOR2":"DMG-TZ","TESSERAE":"DMG-ER","TETRIS2":"DMG-EH","TETRISATTACK":"DMG-AYLP","TETRISBLAST":"DMG-ASBE","TETRISDX":"DMG-ATEA","TETRISFLASH":"DMG-EH","TETRISPLUS":"DMG-ATRP","TINTINTEMPLESU":"DMG-ATSP","TINTINAUTIBET":"DMG-AT6P","TINYTOONADVEN":"DMG-TX","TINYTOONWACKY":"DMG-ED","TINYTOON2":"DMG-T8","TINYTOON2MMM":"DMG-T8","TINYTOON3":"DMG-ED","TIPOFF":"DMG-OF","TITUSTHEFOX":"DMG-FO","TOKIOSENKI":"DMG-TI","TOKOROJR":"DMG-ATMJ","TDLFANTASYTOUR":"DMG-ADFJ","TDLMICKEY":"DMG-ADLJ","TOMANDJERRY":"DMG-J8","TOPGUN2":"DMG-GN","TOPRANKTENNIS":"DMG-XT","TOPRANKINGTENNI":"DMG-XT","TORPEDORANGE":"DMG-TE","TOTALCARNAGE":"DMG-N8","VALATIONS":"DMG-TV","TOTSUGEKITANK":"DMG-TP","GBLUCKYMAN":"DMG-ALKJ","TOXICCRUSADERS":"DMG-XL","TOYSTORY":"DMG-AQHE","TRACK&FIELD":"DMG-KH","TRACKMEETHIRO":"DMG-TM","TRAPPERSTENGOK":"DMG-TO","TRAX":"DMG-TP","TRIPWORLD":"DMG-T4","TROUBALLSBBEE":"CGB-BBEE","TRUELIES":"DMG-ATLP","-TRUMPBOY-":"DMG-TB","-TRUMPBOY2-":"DMG-T2","TRUMPCOLLECTIO":"DMG-ATCJ","TSUMEGO_FUJISAW":"DMG-ATGJ","THUMESHOGI":"DMG-S4","KANKI-TUMESHOGI":"DMG-ATKJ","TSUMESHOUGI":"DMG-YN","TURISENSEIV1":"DMG-AFWJ","TUMBLEPOP":"DMG-T6","TURNANDBURN":"DMG-UR","TUROKBATTLEOF":"DMG-ATUE","TURRICAN":"DMG-TQ","TUTTI":"","TVCHAMPION":"DMG-A9YJ","TWIN":"DMG-TW","TWIN-BEEDA!!":"DMG-TD","KYOUDAIJINGI":"DMG-AWNJ","GBTEKKAMANBLAD":"DMG-T7","YAMATO":"DMG-YA","RUNESOFVIRTUE":"DMG-U2","ULTRAGOLF":"DMG-KG","ULTRAMAN":"DMG-UN","ULTRAMANBALL":"DMG-AUMJ","ULTRAMANGEKIDE":"DMG-QU","GBULTRAMANCLUB":"DMG-UL","UMINUSHI":"DMG-A8UJ","UNDERCOVERCOP":"DMG-UZ","UNIVERSALSOLDIE":"DMG-UD","UNO-SMALLWORLD":"DMG-UC","UNO2SMALLWORLD":"DMG-AUCJ","UOOZU":"DMG-US","URBANSTRIKE":"DMG-AUSE","URUSEIYATSURA":"DMG-UY","VRALLY":"DMG-AVLP","VATTLEGIUCE":"DMG-VG","VEGASSTAKES":"DMG-AVSE","VELIOUS":"DMG-VE","VELIOUS2":"DMG-VT","VERSUSHERO":"DMG-VH","VIRTUALWARS":"DMG-L5","VITAMINAKINGDO":"DMG-B6","VOLLEYFIRE":"DMG-VF","VSBATTLER":"DMG-VS","WARIOBLAST":"DMG-EE","SUPERMARIOLAND3":"DMG-WJ","WATERWORLD":"DMG-AWEE","WAVERACE":"DMG-WA","WAYNE'SWORLD":"DMG-WN","THEMAINEVENT":"DMG-W8","WEREBACKBC":"DMG-A6","WPGB":"DMG-AWPJ","GBNAKAYOSHI1":"DMG-NI","WHEELOFFORTUN":"DMG-WF","ROGERRABBIT":"DMG-RR","WILDSNAKE":"DMG-AWSE","WINNER'SHORSE":"DMG-WE","WINTERGOLD":"DMG-YC","WIZARDRYSOQ":"DMG-WI","WIZARDRYCAE":"DMG-W5","WIZARDRYSOD":"DMG-W6","WIZARDSWARRIOR":"DMG-WW","WORDTRIS":"DMG-WT","WORDZAP":"DMG-WZ","GBBEACHVOLLEY":"DMG-WV","WORLDBOWLING":"DMG-WB","WCIRCUITSERIE":"DMG-FZ","WORLDCUP98":"DMG-A8WP","WORLDSTRIKER":"DMG-YK","WORLDCUPUSA9":"DMG-W9","WH2JET":"DMG-AWJE","WORLDICEHOKKE":"DMG-WH","WORLDSOCCERGB":"DMG-AIGJ","WORMS":"DMG-AW3E","WWFKOR":"DMG-WP","WWFRAW":"DMG-AWFP","WWFSUPERSTARS":"DMG-LW","SUPERWWF":"DMG-WX","WWF:WARZONE":"DMG-AWWE","X":"DMG-EC","XENON2":"DMG-X2","YNOAHTENNIS":"DMG-AYNP","YOGISGOLDRUSH":"DMG-YG","TENJINKAISEN2":"DMG-TJ","YOSSYNOTAMAGO":"DMG-YO","YOSSYNOCOOKIE":"DMG-CI","YOSSYNOPANEPO":"DMG-AYLJ","YOSHI'SCOOKIE":"DMG-CI","YUUYUU-1":"DMG-UU","YUUYUU-2":"DMG-UK","YUUYUU-3":"DMG-UG","YUUYUU-4":"DMG-AUUJ","ZEN":"DMG-ZN","ZENNICHIJET":"DMG-JZ","LEGENDOFZERD":"DMG-ZE","XERD!!":"DMG-XD","ZOOL":"DMG-ZG","ZOOP":"DMG-AZPP"};
diff --git a/script/patches.js b/script/patches.js
new file mode 100644
index 0000000..ee50d8b
--- /dev/null
+++ b/script/patches.js
@@ -0,0 +1,50 @@
+ENGLISH_PATCH_DATA = [
+ {
+ address: 0x03030,
+ rleData: [[0,16],[6,2],[7,4],[6,8],[0,2],[103,2],[109,2],[237,4],[109,4],[103,2],[0,2],[7,2],[143,2],[140,2],[141,2],[140,2],[143,2],[7,2],[0,2],[142,2],[223,2],[27,2],[159,2],[219,4],[155,2],[0,2],[99,2],[119,2],[127,2],[107,2],[99,6],[0,2],[124,2],[125,2],[97,2],[121,2],[96,2],[125,4],[0,2],[249,2],[251,2],[131,2],[251,2],[25,2],[248,2],[241,2],[0,2],[128,2],[192,6],[128,2],[0,2],[128,2],[0,26]]
+ },
+ {
+ address: 0x06C6C,
+ rleData: [[255,4],[0,12],[255,4],[0,12],[255,4],[0,12],[255,4],[0,12],[255,4],[0,12],[255,20]],
+ },
+ {
+ address: 0x06D5C,
+ rleData: [63,41,[31,2],255,4,255,4,255,60,255,12,255,60,255,60,255,60,[255,3],24,255,8,255,201,255,24,255,57,255,152,255,200,[255,3],32,255,32,255,231,255,97,255,231,255,32,255,32,[255,3],38,255,36,255,36,255,36,255,39,255,4,255,140,[255,3],8,255,8,255,249,255,8,255,201,255,8,255,24,[255,3],33,255,36,255,228,255,100,255,228,255,36,255,33,[255,2]]
+ },
+ {
+ address: 0x07E00,
+ rleData: [[255,4],[224,2],[192,3],[199,2],207,196,204,196,204,[255,4],56,120,16,48,16,51,1,227,35,103,0,32,[255,4],49,115,16,49,16,48,0,16,0,146,0,19,[255,4],224,228,192,196,0,132,0,4,0,36,32,100,[255,4],2,6,0,[4,2],252,124,252,12,28,12,30,[255,4],3,7,3,[7,2],[127,2],255,7,15]
+ },
+ {
+ address: 0x07EFC,
+ rleData: [[0,4],244,207,255,198,255,192,223,[224,2],[255,7],223,32,216,39,219,39,187,[103,2],[255,7],237,19,109,147,237,147,237,[147,2],[255,7],123,228,251,228,251,228,251,[228,2],[255,7],30,255,127,255,251,4,251,[4,2],[255,7],59,199,219,231,251,7,247,[15,2],[255,7],[231,2],[226,2],[224,2],[229,2],255,231,255,231,255,231,[255,2],[32,4],[39,2],[33,2],255,39,255,32,255,32,[255,2],[156,2],[136,2],[128,2],[148,2],255,156,255,156,255,156,[255,2],[0,14],[255,2]]
+ },
+ {
+ address: 0x0EC64,
+ rleData: [[0,8],[255,4],[0,12],[255,4],[0,12],[255,4],[0,12],[255,4],[0,12],[255,4],[0,12],[255,4]]
+ },
+ {
+ address: 0x0ED60,
+ rleData: [255,4,255,4,255,60,255,12,255,60,255,60,255,60,[255,3],24,255,8,255,201,255,24,255,57,255,152,255,200,[255,3],32,255,32,255,231,255,97,255,231,255,32,255,32,[255,3],38,255,36,255,36,255,36,255,39,255,4,255,140,[255,3],8,255,8,255,249,255,8,255,201,255,8,255,24,[255,3],33,255,36,255,228,255,100,255,228,255,36,255,33,[255,2]]
+ },
+ {
+ address: 0x0F9FC,
+ rleData: [[255,68],[252,2],[248,2],[249,6],[248,2],[252,2],[255,2],[48,2],[19,2],[240,2],[51,2],[147,2],[16,2],[48,2],[255,2],[112,2],[32,2],[39,6],[32,2],[112,2],[255,2],[124,2],[120,2],[249,6],[120,2],[124,2],[255,2],[103,2],[35,2],[33,2],[37,2],[36,2],[38,2],[103,2]]
+ },
+ {
+ address: 0x0FAF8,
+ rleData: [[0,8],[39,10],[32,4],[255,2],[51,2],[50,4],[134,2],[207,6],[255,2],[63,2],[31,6],[63,2],[255,2],[63,2],[255,98]]
+ },
+ {
+ address: 0x0FBE8,
+ rleData: [[0,8],[255,112],[39,10],[32,4],[255,2],[51,2],[50,4],[134,2],[207,6],[255,2],[63,2],[31,6],[63,2],[255,2],[63,2],[255,50]]
+ },
+ {
+ address: 0x0FDF8,
+ rleData: [[0,8],[255,4],[224,2],[192,3],[199,2],207,196,204,196,204,[255,4],56,120,16,48,16,51,1,227,35,103,0,32,[255,4],49,115,16,49,16,48,0,16,0,146,0,19,[255,4],224,228,192,196,0,132,0,4,0,36,32,100,[255,4],2,6,0,[4,2],252,124,252,12,28,12,30,[255,4],3,7,3,[7,2],[127,2],255,7,15,3,7]
+ },
+ {
+ address: 0x0FF00,
+ rleData: [244,207,255,198,255,192,223,[224,2],[255,7],223,32,216,39,219,39,187,[103,2],[255,7],237,19,109,147,237,147,237,[147,2],[255,7],123,228,251,228,251,228,251,[228,2],[255,7],30,255,127,255,251,4,251,[4,2],[255,7],59,199,219,231,251,7,247,[15,2],[255,7],[231,2],[226,2],[224,2],[229,2],255,231,255,231,255,231,[255,2],[32,4],[39,2],[33,2],255,39,255,32,255,32,[255,2],[156,2],[136,2],[128,2],[148,2],255,156,255,156,255,156,[255,2],[0,14],[255,2]]
+ }
+];
diff --git a/style.css b/style/style.css
similarity index 51%
rename from style.css
rename to style/style.css
index de3b79c..9ab857e 100644
--- a/style.css
+++ b/style/style.css
@@ -1,27 +1,34 @@
@font-face {
font-family: "Gameboy";
- src: url("./font/Gameboy.woff") format("woff");
- font-weight: normal;
- font-style: normal;
-}
-
-@font-face {
- font-family: "Gamer";
- src: url("./font/Gamer.woff") format("woff");
- font-weight: normal;
- font-style: normal;
-}
-
-@font-face {
- font-family: "Pixeltype";
- src: url("./font/Pixeltype.woff") format("woff");
+ src: url("../font/Gameboy.woff") format("woff");
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "Nokia";
- src: url("./font/Nokia.woff") format("woff");
+ src: url("../font/Nokia.woff") format("woff");
+ font-weight: normal;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: "PokemonGB";
+ src: url("../font/Pokemon.woff") format("woff");
+ font-weight: normal;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: "DMG-MMSA";
+ src: url("../font/DMG-MMSA.woff") format("woff");
+ font-weight: normal;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: "TWL-IRAJ-1";
+ src: url("../font/TWL-IRAJ-1.woff") format("woff");
font-weight: normal;
font-style: normal;
}
@@ -45,19 +52,23 @@ h1, h2 {
h2 {
color: #444;
- border-top: 2px dotted grey;
+ border-top: 1px solid grey;
display: inline-block;
- border-bottom: 2px dotted grey;
+ border-bottom: 1px solid grey;
}
p {
margin-top: 0;
}
+ul {
+ margin: 0;
+ padding-left: 10px;
+}
+
footer {
margin-top: 40px;
font-size: 0.75em;
- color: #444;
}
button {
@@ -79,12 +90,16 @@ button#remove-rom {
color: red;
}
+button.remove-all{
+ color: red;
+}
+
button[disabled='disabled'] {
color: grey;
}
.text-container {
- width: 850px;
+ max-width: 850px;
margin-bottom:25px;
}
@@ -121,6 +136,10 @@ td.overflow {
background-color: red;
}
+td.single-rom {
+ background-color: orange;
+}
+
thead tr {
border-bottom: 1px solid #ddd;
}
@@ -136,36 +155,20 @@ tbody tr:nth-child(odd) {
.settings-label {
font-weight: bold;
margin-right: 20px;
- min-width: 190px;
+ min-width: 160px;
display: inline-block;
+ vertical-align: top;
}
.settings-row {
margin-bottom: 15px;
}
-.menu-hint {
- font-size: 0.75em;
- color: #444;
-}
-
-.tooltip {
- cursor: help;
-}
-
label.radio-label {
vertical-align: middle;
margin-right: 10px;
}
-label#pixeltype {
- font-family: 'Pixeltype';
- font-size: 32px;
- line-height: 0;
- position: relative;
- top: 3px;
-}
-
label#gameboy {
font-family: 'Gameboy';
}
@@ -174,15 +177,77 @@ label#nokia {
font-family: 'Nokia';
}
-label#gamer {
- font-family: Gamer;
- font-size: 32px;
- line-height: 0;
+label#pokemon {
+ font-family: 'PokemonGB';
position: relative;
- top: -2px;
+ top: 3px;
+}
+
+label#gbmem {
+ font-family: 'DMG-MMSA';
+ text-transform: uppercase;
+}
+
+label#twliraj1 {
+ font-family: 'TWL-IRAJ-1';
}
noscript {
font-weight: bold;
color: red;
}
+
+.drag-target {
+ height: 70px;
+ max-width: 945px;
+ padding: 20px;
+ border: 2px dashed grey;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: space-evenly;
+ transition: 0.5s all;
+}
+
+.drag-target.over {
+ border-color: #000079;
+ transform: scale(1.02, 1.05);
+ cursor: grabbing;
+}
+
+.drag-target div {
+ transition: 0.5s all;
+}
+.drag-target.over div {
+ opacity: 0.5;
+}
+
+.flex-row {
+ display: inline-flex;
+}
+
+.flex-item {
+ max-width: 400px;
+ margin-right: 20px;
+}
+
+.games-flex-item {
+ min-width: 250px;
+ margin-right: 20px;
+}
+
+.single-rom-download {
+ margin-top: 1.5rem;
+}
+
+.hide {
+ display: none;
+}
+
+.ticker-settings {
+ margin-top: 0.4rem;
+}
+
+.map-note { margin-left: 0.5rem; }
+.map-note span:first-child { font-size: 1.2rem; margin-right: 0.3rem; }
+.map-note span:last-child { vertical-align: sub; }