Last active
September 29, 2019 10:12
-
-
Save zwade/d63141544243eab5372a2d8c3023bd54 to your computer and use it in GitHub Desktop.
Disassembler for Dragon CTF 2019 Mysterious CPU Problem
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ts-node | |
import * as fs from "fs-extra"; | |
import { symlinkSync } from "fs-extra"; | |
let color = (num: number) => (data: any) => `\x1b[38;5;${num}m${data}\x1b[0m`; | |
let gray = color(0); | |
let red = color(1); | |
let green = color(2); | |
let yellow = color(3); | |
let blue = color(4); | |
async function getFile(file = "game.bin") { | |
let data = await fs.readFile(file); | |
return data; | |
} | |
function octToHec(buf: Buffer) { | |
let res: number[] = []; | |
let bits: (0 | 1)[] = Array.from(new Array(buf.length), (_, i) => buf[i] === 48 ? 0 : 1); | |
for (let i = 0; i < bits.length; i += 5) { | |
let num: number = 0; | |
for (let j = 0; j < 5; j++) { | |
num |= bits[i + j] << (4-j); | |
} | |
res.push(num); | |
} | |
return Buffer.from(res); | |
} | |
let alphabet = "0123456789abcdefghijklmnopqrstuv".split(""); | |
let debase32 = new Map<string, number>(); | |
for (let i = 0; i < alphabet.length; i++) { | |
debase32.set(alphabet[i], i); | |
} | |
function base32(buf: Buffer) { | |
let res: string[] = Array.from(buf, (v) => alphabet[v]); | |
return res.join(""); | |
} | |
function baudot(buf: Buffer) { | |
//let letters = ["\x00", "A", "E", "␍", "Y", "U", "I", "O", "␜", "J", "G", "H", "B", "C", "F", "D", " ", "␊", "X", "Z", "S", "T", "W", "V","␡","K","M","L","R","Q","N","P"] | |
//let symbols = ["\x00", "1", "2", "␍", "3", "4", "プ", "5", " ", "6", "7", "+", "8", "9", "プ", "0", "ʪ", "␊", ",", ":", ".", "プ", "?", "'", "␡", "(", ")", "=", "-", "/", "プ", "%"]; | |
let letters = ["\x00", "A", "E", "\x01", "Y", "U", "I", "O", "\x01", "J", "G", "H", "B", "C", "F", "D", " ", "\x01", "X", "Z", "S", "T", "W", "V","\x01","K","M","L","R","Q","N","P"] | |
let symbols = ["\x00", "1", "2", "\x01", "3", "4", "\x01", "5", " ", "6", "7", "+", "8", "9", "\x01", "0", "\x01", "\x01", ",", ":", ".", "\x01", "?", "'", "\x01", "(", ")", "=", "-", "/", "\x01", "%"]; | |
//let letters = '\x00AE\rYUIO\x0eJGHBCFD \nXZSTWV\x7fKMLRQNP'; | |
//let symbols = '\x0012\r34a5 67 + 89b0\x0f\n,:.c ?\'\x7f()=-/d%'; | |
let mode = 1; | |
let out: string[] = []; | |
for (let i = 0; i < buf.length; i++) { | |
if (mode === 0) { | |
out.push(letters[buf[i]]); | |
} else { | |
out.push(symbols[buf[i]]); | |
} | |
if (buf[i] === 0x08) { | |
mode = 1; | |
} | |
if (buf[i] === 0x10) { | |
mode = 0; | |
} | |
} | |
return out.join(""); | |
} | |
function getAddress(...hecs: string[]) { | |
let num = 0; | |
for (let i = 0; i < hecs.length; i++) { | |
num |= (debase32.get(hecs[i]) << (i * 5)); | |
} | |
return num; | |
} | |
function readData(data: string, addr: number) { | |
let outData: string[] = []; | |
let i = 0; | |
if (addr < 0) { | |
return ""; | |
} | |
while (addr + i < data.length && i < 64) { | |
if (data[addr + i] !== "\x01") { | |
outData.push(data[addr + i]); | |
} | |
if (data[addr+i] === "\x00") { | |
break; | |
} | |
i++; | |
} | |
return outData.join(""); | |
} | |
function getFnName(name: string) { | |
let altName: string | undefined = undefined | |
switch(name) { | |
case "3f5": { altName = "print" ; break; } | |
case "3fs": { altName = "print-newline"; break; } | |
case "00k": { altName = "select-input"; break; } | |
case "3h3": { altName = "object_prints"; break; } | |
case "2b7": { altName = "talk-to-varis"; break; } | |
case "36i": { altName = "rand"; break; } | |
case "37a": { altName = "stir"; break; } | |
case "38v": { altName = "srand"; break; } | |
case "07i": { altName = "initialize_board"; break; } | |
case "0a7": { altName = "main_loop"; break; } | |
case "3g3": { altName = "print_obj_3rk"; break; } | |
case "3gj": { altName = "print_obj_3t1"; break; } | |
case "01v": { altName = "opt_travel"; break; } | |
case "04k": { altName = "opt_talk"; break; } | |
case "06n": { altName = "opt_drink"; break; } | |
case "3iu": { altName = "show_health"; break; } | |
case "3k3": { altName = "print_int"; break } | |
case "3pl": { altName = "print_digit"; break } | |
} | |
if (altName === undefined) { | |
return name; | |
} else { | |
return `${altName}[${name}]`; | |
} | |
} | |
function getArg(data: string, regs: [string, string, string, string]) { | |
let addr = getAddress(regs[0], regs[1], regs[2]); | |
return readData(data, addr + (4240 - 8308)); | |
} | |
function getSelf(data: string, regs: [string, string, string, string]) { | |
let addr = getAddress(regs[0], regs[1], regs[2]); | |
return readData(data, addr); | |
} | |
function formatHecs(i: number) { | |
return base32(Buffer.from([Math.floor(i / 1024) % 32, Math.floor(i / 32) % 32 , Math.floor(i / 1) % 32 ])); | |
} | |
function getCode(str: string, data: string) { | |
let hecs = str.split(""); | |
let insts: string[] = []; | |
let i = 0; | |
let regs: [string, string, string, string] = ["0", "0", "0", "0"]; | |
let inst: string = ""; | |
while (i < hecs.length) { | |
if (getFnName(formatHecs(i)) !== formatHecs(i)) { | |
console.log(green(`; ${getFnName(formatHecs(i))}`)); | |
} | |
process.stdout.write(yellow(`${formatHecs(i)}: `)); | |
switch (hecs[i]) { | |
case "p": { | |
let name = getFnName(`${hecs[i + 3]}${hecs[i + 2]}${hecs[i + 1]}`); | |
if (name === "print[3f5]") { | |
inst = `call ${green(name)} ${gray(`(${getArg(data, regs)})`)}`; | |
} else if (name === "object_print[3h3]") { | |
inst = `call ${green(name)} ${gray(`(${getSelf(str, regs)})`)}`; | |
} else { | |
inst = `call ${green(name)} ${gray(`(${regs[3]}${regs[2]}${regs[1]}${regs[0]})`)}`; | |
} | |
i += 3; | |
break; | |
} | |
case "g": { | |
inst = `g [${hecs[i + 1]}, ${hecs[i+2]}, ${hecs[i+3]}]`; | |
i += 3; | |
break; | |
} | |
case "r": { | |
inst = "return"; | |
break; | |
} | |
case "s": { | |
inst = "halt"; | |
break; | |
} | |
case "t": { | |
inst = "flage" | |
break; | |
} | |
case "0": { | |
inst = "ZERO!"; | |
break; | |
} | |
case "c": | |
case "u": { | |
if (hecs[i+1] === "k") { | |
inst = `print_char ${hecs[i+2]}`; | |
i += 2; | |
} else if (hecs[i + 1] === "n") { | |
inst = `put_char ${ gray(`(${getArg(data, regs)})`) }` | |
} else { | |
inst = `${hecs[i]} ${hecs[i+1]}`; | |
i += 1; | |
} | |
break; | |
} | |
case ">>>": { | |
inst = `${hecs[i]} ${hecs[i + 2]}${hecs[i+1]}`; | |
i += 2; | |
break; | |
} | |
case "n": | |
case "e": | |
case "d": | |
case "k": | |
case ">>>": { | |
inst = `${hecs[i]} ${hecs[i+3]}${hecs[i+2]}${hecs[i+1]}`; | |
i += 3; | |
break; | |
} | |
case "o": { | |
let addr = `${hecs[i + 3]}${hecs[i + 2]}${hecs[i + 1]}`; | |
let name = getFnName(addr); | |
if (name === "unknown-function[3h3]") { | |
inst = `ja ${name} (${getSelf(str, regs)})`; | |
} else { | |
inst = `ja ${name}`; | |
} | |
i += 3; | |
break; | |
} | |
case "v": { | |
if (hecs[i+1] === "5") { | |
inst = `syscall ${hecs[i+1]} ${hecs[i+2]}`; | |
i += 2; | |
} else { | |
inst = `syscall ${hecs[i+1]}`; | |
i += 1; | |
} | |
break; | |
} | |
case "q": { | |
let mode = ""; | |
switch(hecs[i+1]) { | |
case "1": { mode = "lz"; break; } | |
case "a": { mode = "z"; break; } | |
case "c": { mode = "gz"; break; } | |
case "f": { mode = "mp"; break; } | |
case "5": { mode = "nz"; break; } | |
default: { mode = hecs[i+1]; break; } | |
} | |
let offset = getAddress(hecs[i+2], hecs[i+3]); | |
let addr = formatHecs(i + offset + 4); | |
let name = getFnName(addr); | |
if (name === "object_prints[3h3]") { | |
inst = `j${mode} ${name} (${getSelf(str, regs)})`; | |
} else { | |
inst = `j${mode} ${name}`; | |
} | |
i += 3; | |
break; | |
} | |
case "4": { | |
inst = `cmp <${hecs[i+1]}> ${hecs[i+2]} ${hecs[i+3]}`; | |
i += 3; | |
break; | |
} | |
case "1": | |
case "2": | |
case "3": | |
case "5": | |
case "6": | |
case "7": | |
case "8": | |
case "9": | |
case "a": | |
case "b": | |
case "c": | |
case "d": | |
case "e": | |
case "f": | |
{ | |
let first: string = ""; | |
let second: string = ""; | |
let op: string = ""; | |
switch (hecs[i]) { | |
case "1": | |
op = "add"; | |
break; | |
case "3": | |
op = "adc"; | |
break; | |
case "4": | |
op = "sub?"; | |
break; | |
case "5": | |
op = "sub"; | |
break; | |
case "7": | |
op = "sbb"; | |
break; | |
case "9": | |
op = "and"; | |
break; | |
case "b": | |
op = "or"; | |
break; | |
case "f": | |
op = "mov"; | |
break; | |
default: | |
op = `op${hecs[i]}`; | |
} | |
switch(hecs[i+1]) { | |
case "0": | |
case "1": | |
case "2": | |
case "3": { | |
first = `reg${hecs[i+1]}`; | |
second = hecs[i+2]; | |
if (hecs[i] === "f") { | |
regs[debase32.get(hecs[i+1])!] = hecs[i+2]; | |
} | |
if (hecs[i] === "1" || hecs[i] === "3") { | |
regs[debase32.get(hecs[i+1])!] += hecs[i+2]; | |
} | |
i += 2; | |
break; | |
} | |
case "4": | |
case "5": { | |
first = `[${hecs[i+2]}]`; | |
second = `${hecs[i+3]}`; | |
i += 3; | |
break; | |
} | |
case "6": | |
first = `[${regs[1]}${regs[0]}]`; | |
second = hecs[i+2]; | |
i += 2; | |
break; | |
case "7": | |
first = `[${hecs[i+2]}]`; | |
second = '???'; | |
i += 2; | |
break; | |
case "8": | |
case "9": | |
case "a": | |
case "b": | |
first = `reg${debase32.get(hecs[i+1]) - 8}`; | |
second = `[${hecs[i+2]}]`; | |
i += 2; | |
break; | |
case "c": | |
case "d": | |
case "e": | |
case "f": | |
first = `reg${debase32.get(hecs[i + 1]) - 12}`; | |
second = `[${hecs[i + 2]}], ${hecs[i + 3]}`; | |
i += 3; | |
break; | |
case "k": | |
case "l": | |
first = `${hecs[i+1]}<${hecs[i+2]}>`; | |
second; | |
i += 2; | |
break; | |
default: | |
first = red(`unknown mode (${hecs[i+1]})`); | |
i += 2; | |
} | |
inst = `${op} ${first}, ${second}`; | |
break; | |
} | |
default: | |
inst = red(`unk: ${hecs[i]}`); | |
} | |
console.log(inst); | |
i++; | |
} | |
} | |
async function main() { | |
let data = await getFile(); | |
let hec = octToHec(data); | |
let inst = hec.slice(0,4068); | |
let text = hec.slice(4068); | |
let textData = baudot(text); | |
getCode(base32(inst), textData); | |
} | |
main(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
11001111110100000011110011001000111000001100110100000000000011001001110101000000110100111110000111111100110011100000001101111000001010001111000010001101111000100100011001001010111100011110011111100001000001100110100001000000011001101110011000000011110000011100011110000111100011110001000100110010010101111000111101101001011000000100001110100101001101000000111100000111000111100001011010111100010001101100100101011110001101001011000001000001110100101001101000000111100000001010111100001011110111100010001101100100101011110001101001011000010000001110100101001101000000111100000010000111100001011010111100010001101100100101011110001101001011000100000001110100101001101000000111100000100010111100001011100111100010001101100100101011110001111011000010110000000000001101001010110100000100101011000001000000110100110010101000000111100000000010111100001110000111100010001111100100101011110001111001000111000000011110011110001111000110010101100000010000011010010101010100000011110000000010011110000110111011110001000111110010010101111000111100100011100000001111001111000111100011110110111100000100010111100001101110111100010001111100100101011110001101111000000010101111000010011001111000100011111001001010111100011110110111101000001000111101001001010000100000000010001100001000010111110101000000111100101000010000001111010000010001001000000011111010010100010000000010110010100001010000010000100001111101001010001000000001011001010000100100011110100000100011110100100101101000100110110000001010001001101100000010100010011011000000010010000000111110100101000100000000101100101000010000100100001000011111010010100010000000010110010100001000101101111110110001111010000011110000100000011110001000000100000000010010010011000000000100100100100001000000100100011000010101100011000100000011110000101111000001111100000011011110000100101111000001100001001011110000011000100111000100000110000100101111000001100001001011110000011000010010111100000110001010110011000001100001001011110000011000010010111100000110000100101111000001100001001011110000011000010010111100000110000100101111000001100001001011110000011000010011010000001110001011111001000001100001001011110000011000010010111100000110000100101111000001100001001011110000011000101110111100000110001110101000000101100001101100100000011000010010111100000110000100101111000001100001001011110000011000010010111100000110000100101111000001100001001011110000011000010010111100000110001010110000000001100001001011110000001111000001000001111000010110101111000100010011001001010111100011110110100101100000010000111010010100100000011001010010100100010000011100101001010000001111000001010001111000010100101111000100010011001001010111100011110110100101100000100000111010010100101000010000010010100100010000001100101001010000001111000001010101111000010101101111000100010011001001010111100011110110100101100001000000111010010100110000001000010010100100000010111100000101000111100001010000111100010001001100100101011110001111011010010110001000000011101001010100100000000101001010010000001011110000010101011110000101010011110001000100110010010101111000111101101111000001011101111000010010001111000100010011001001010111100011110110111100000101100111100001011000111100010001001100100101011110001101111000000000111110000000111100001000000000100000100100001100001000000000110100000001101001010001110001011110001100111100000001000111100001110110111100010001011100100101011110001111110010001111001011111100001111110000000111100000001110111100001110100111100010000111100100011100010001101111000000001101111000010001001111000100100011001001010111100011111100100001111000010000011001000111010000011011110000011110011110000111010011110001000101110010010101111000111111001000000010000000001001000010001111110100010111011111000111100000111110111100001000000111100010001001100100101011110001111001111101001000011000010110000000100101101001010001100000100101011000001010010110100110010001000000111100000001100111100001111100111100010001001100100101011110001111010011110110100000011110000011001011110000111110011110001000100110010010101111000110111100000111110111100001000000111100010001001100100101011110001111011011110000001011011110000101111011110001000100110010010101111000110000101100000001001111010010100110100000011110000010101011110000110001011110001000111110010010101111000110000101100000001010111010010100110100000011110000010100011110000111101011110001000110110010010101111000110000101100000001011011010010100110100000011110000011100011110000111010011110001000110110010010101111000110000101100000001011111010010100110100000011110000001000011110000110110011110001000110110010010101111000110000101100000001100011010010100110100000011110000000010011110000111001011110001000110110010010101111000110000101100000001100111010010100110100000011110000000101011110000110101011110001000110110010010101111000110000101100000001101011010010100110100000011110000000010011110000110111011110001000110110010010101111000110000101100000001101111010010100110100000011110000000000011110000111000011110001000110110010010101111000110000101100000001110011010010100110100000011110000000000011110000111010011110001000110110010010101111000110000101100000001110111010010100110100000011110000010110011110000111011011110001000110110010010101111000110000101100000001111011010010100110100000011110000011010011110000101111011110001000110110010010101111000110000101100000001111111010010100110100000011110000011001011110000111100011110001000110110010010101111000110111100000111000111100001111000111100010001001100100101011110001111110110001111010000110011110001111000111100111100011110001101111000010000001111000100000010000000001001001001100000000010010010010000100000101110001100001000110001100010000011111000010111100000111110000001101111000101110011100001110001011100111000011100010111001110000111000101110011100001110001011100111000011100000101010000000111000101110011100001110000000101110000011100010111001110000111000111000101000001110001111101001000011100010111001110000111000110010101100001110000111110000000011100010111001110000111000101110011100001110001011100111000011100010111001110000111000101110011100001110001011100111000011100001001100010000111000000100100100001110001011100111000011100000011100100000111000101110011100001110001011100111000011100011011011100000111000101110011100001110001100110010000011100010111001110000111000101010111100001110001011100111000010111100000101100111100001101110111100010001011100100101011110001111011000010110000000101101101001010010101111101111000000000001111000010110101111000100010111001001010111100011001010010110110000011100010110011000000100001011000000011000110100101001101111100111100000110100111100001010100111100010001011100100101011110001100101001011100000001110001011001100000010000101100000001011111010010101000011101011110000011011011110000100101011110001000101110010010101111000110010100101101110000111000101100110000001000010110000000110011101001010100111110001111000001001001111000010010001111000100010111001001010111100011001010010111001000011100010110011000000100001011000000011010110100101010110110110111100000011100111100001010000111100010001011100100101011110001100101001011101000001110001011001100000010000101100000001001011010001011000100000011110000011101011110000100001011110001000101110010010101111000111101001111011010000001111000001111001111000010000001111000100010111001001010111100011000010010110010000011101100001011000000011101110100101001110110010111100000111110111100001011010111100010001011100100101011110001100101001011110100001110110000101100000001111111010010101010011000011110000001001011110000101111011110001000101110010010101111000110010100101111110000111011000010110000000111001101001010110101011101111000001110101111000010101101111000100010111001001010111100011001010010111100000011101100001011000000011011110100101000000101110111100000100010111100001010010111100010001011100100101011110001100101001011101100001110110000101100000001111011010010100011010110011110000011010011110000100110011110001000101110010010101111000110010100101111100000111011000010110000000100111101001010011001010101111000000011001111000011001001111000100010111001001010111100011111000000101100000001010111010010101011010100011110000001011011110000110000011110001000101110010010101111000110010100101101010000100001001010011000100000110010100111000111101101111000000111001111000011000001111000100010011001001010111100011110110000101100000000000011010010100101011111011110000000111011110000100001011110001000100110010010101111000111100100011100000001100101011000111000000110100101011100000110111100000111100111100001110000111100010001011100100101011110001101111001010100000100011110010101001000110111100000101000111100001000110111100010010000111100000000010111100001101100111100010001111100100101011110001101111000001001101111000011111001111000100010111001001010111100011011110000010010011110000110110011110001000111110010010101111000110111100000111000111100001111000111100010001001100100101011110001111110110001111010000001000010000001110100101001101000100010000100011011101001010010010000100100001001010011010010101011001001011110000010000011110000101101011110001000100110010010101111000111101001111110011110001111000000110001111000011100101111000100010111001001010111100011110100111111101011000111100101001100100001111001010011111111011110010101010000010111100000010100111100001011100111100010001001100100101011110001111010011110101111011110011001000110000110010000100100001101000001000100000101111000000011101111000010000101111000100010011001001010111100011110010001110000000110111100000011000111100001110000111100010001011100100101011110001111010011111101000010000010000000001001000010101000001110010101001000001101001100110100011101111010000100001011010000100111010010101000000111011110000001010011110000100100011110001000100110010010101111000111100100011100000001101111000000011001111000011100101111000100010111001001010111100011011110000001110011110000100000011110001000100110010010101111000110111101000010000111101001010011100100011101000001101111000001001001111000011100001111000100011111001001010111100011110011001000110000110010000100100001101000001101010000011001000111000000011011110000000001011110000100001011110001001000110010010101111000111101001111001001011000001000000000100100001010011000111001010011100000110100110010000000010111101000001100101101000001111101001010001100000111001000111000000011011110000001000011110000100010011110001001000110010010101111000111100111110100100001101111000001111101111000010000001111000100010011001001010111100011110100111100110101001100100011100000001101111000001011101111000010001001111000100100011001001010111100011111000111100000000100111100001000010111100010001001100100101011110001111001000111000000011110011001000110000110010000100100001101000001100010000001111000000000101111000010000101111000100100011001001010111100011110100111100111100100111100000011100111100001111110111100010001111100100101011110001111010011111011010001011110000000110011110000101000011110001000100110010010101111000111100100011100000001101111000000011001111000011100101111000100010111001001010111100011001010110000001000001101000101011010000001111000001000101111000011111101111000100010011001001010111100011001010110000010000001101000101100000000000101011000001000011110100010101000000001100111100011110001111010011111100100001011110000010010011110000100000000010100000000000110000100000000010011000001011110000001110011110000111101011110001000100110010010101111000110111100000001110111100001110100111100010000110111101011000001100100011100010001101111000001111001111000011100001111000100010111001001010111100011011110100000100011110100100101000010000000001000110000100001011110011000000110110010101100000010000011010010100001000010001010110000010000001101001010011100000001111000000010001111000010011001111000100010011001001010111100011110110111100000101110111100001000010111100010001001100100101011110001101111010000001110000000001001100001000001000000000100100100101111000100000000001000001110100011000010000100011000100001111110000101111000001111100000011011011110000010111011110000100010011110001000100110010010101111000110111101000000101000000000100110000100000100000000010010010010111100010000000000100000100110001100001011000001100010000101111000010111100000111110000001101111000010110111000010110000001010001000101100001011011100001011000010110111000010110000011110011000101100001011011100001011000110011100100010110000101101110000101100001011011100001011000010101011000010110000101101110000101100011100111000001011000010110111000010110001111111111000100111100000101100111100001100000111100010001101100100101011110001101111000001100001111000010111101111000100011111001001010111100011000010110000000101011101001010101100000000101001011010100001000010010100010000010111100000111000111100001110100111100010001001100100101011110001111011011110000001010011110000111111011110001000101110010010101111000110111100000100000111100001100100111100010001111100100101011110001111001111000111100011110110000101100000001010011010010101101000000011110000010010011110000100010011110001000101110010010101111000111100111100011110001100101001011010000001000010010100010000011101101111000001111101111000010010001111000100011111001001010111100011011110000010100011110000100000011110001000111110010010101111000111100111100011110001101111001010001100001110110111100000101100111100001100000111100010001101100100101011110001101111000001000001111000010100101111000100011111001001010111100011000010110000000101111101001010000100000100001011000000011100110100101011010000000010100101101110000100101001011110000001000010010100010000010111100000010110111100001101000111100010001001100100101011110001111011011110000000001011110000100011011110001000110110010010101111000110111100000010000111100001101000111100010001111100100101011110001111001111000111100011110110111100000101100111100001100000111100010001101100100101011110001101111000001001101111000010110101111000100011111001001010111100011000010110000000110001101001010011100000100001011000000011101110100101000110000010000101100000001111011010010101111000000001010010111000000010010100101111010000100101001011111000001000010010100010000010111100000101000111100001110000111100010001001100100101011110001111011011110000000000011110000100111011110001000110110010010101111000110111100000010000111100001101000111100010001111100100101011110001111001111000111100011110110111100000101100111100001100000111100010001101100100101011110001101111000000000001111000010011101111000100011111001001010111100011000010110000000110011101001010000100000100001011000000010101110100101011010000000010100101110010000100101001011010100001000010010100010000010111100000110000111100001100010111100010001001100100101011110001111011011110000010011011110000100000011110001000110110010010101111000110111100000010000111100001101000111100010001111100100101011110001111001111000111100011110110111100000101100111100001100000111100010001101100100101011110001101111000001001101111000010101101111000100011111001001010111100011000010110000000101101101001010000100000100001011000000011011110100101011010000000010100101101100000100101001011101100001000010010100010000010111100000100010111100001101100111100010001001100100101011110001111011011110000000010011110000100101011110001000110110010010101111000110111100000010000111100001101000111100010001111100100101011110001111001111000111100011110110111100000011110111100001111100111100010001101100100101011110001100001011000000001010110100010111011000001100100101011110001101111000000100101111000011101101111000100010111001001010111100011111011100111100011110001111001111000111100011110110111100000011000111100001111000111100010001011100100101011110001111011110000100100010000111100001000000110001111000010010001000011011110000011001011110000110010011110001000110110010010101111000110111100000010000111100001100100111100010010011100100101011110001111001111000111100011110110111100000111000111100001100110111100010001101100100101011110001101111000001000101111000010010001111000100011111001001010111100011011110000000011011110000101001011110001000110110010010101111000110111100000110010111100001010100111100010001101100100101011110001100001011000000011010110100101001001000010000101100000001111111010010100000100001110011110001111000110111100000111110111100001101000111100010001011100100101011110001100101001011101000001001010010111111000010000100101101000000101111001010001100010110011110001111000111101101111010000101111001010100011100011110010101000111000111100101010001110001111001010100011100011110010101000111000111101101111010010101101111010100110001111010110110101001000011000101001000100110001001000111110101100100010110011001101000101001100100011010010010011001000110100100100110010001101001001001100100011010001001101110110101101011011011101101011000110010111011010101101011110110111100101001000000001111001010101000000011110010100010000000111100101000110000001111001010011000100011110010100111000110111100101100100000011111001010101111111001010110011111001010110101111010000101101011010000110001011010000110111010010100101011111011110000010010011110000100000011110001001111011110011000000000010000000001000110000100000001010001000001110100010110000111110111100000000010111100001000010111100010000000111100011000100111100110000000000100000000010001100001000000010100010000010011100011000001101000101011011111100000101000000011010001010011011111011110000000001011110000100001011110011000001011110000001110011110000111110011110001000011011111101100000111000000011010010101100100001000010000000001000110000100000000110001000000111100000011110000011111000010111100001111001100100011000011111100000011001100100011000011111100100101001000010000100001000000000100011000010000100001101000000011010001010010011111111100111011110010101111001001111100100011010011111111011101110110010111100000001101001010011110000011110101110000100000000010001100001000000001100010000001101001111010101111111011111101010000011111101010010001110110111100000101000111100001110110111100010000110111101011000001100000011100010001101111000000000101111000011110101111000100001101111010110000011000000111000100011111100001011110000010111011001100001101010011000110000000000010100001100011000001111001001000001000000010110011111001010000110001000000111100011100001000000000100011000010000000011000100000011110001110000100000000010001100001000000001100010000000111111010111100100111110010001100000101011110001101111000001101101111000011111001111000100011111001001010111100011011110100000110011110100100111110010001110100000110111100000100100111100001110000111100010001111100100101011110001111011011110010101110000000111100101011110000001111001011000000000011110010110001000000010001100111111101001100010110000011010000011010100000001000010001000110100000101110000000010100000010000011100001111110000100101100010000111010011110000011111001000110000011110100110001011000001101000001101010000000100001000010011010000010111000000001010000000100001110000100011000010010110000000011101001111000001111100100011000000011010011000101100000110100000110101000000010000100010101101000001011100000000101000000101000111000010000000001001010111100001110100111100000111110111000101011101111010100010000010101100000001000111010001011010000000001010110000000100001101000101100110000000101011000000001111110100010110010000001101001111101010000001111010001000111001101011100100011011110100010000110011010111001000110111101000011111100110101110010001101111010000111011001101011100100011111101010010000110110111100001000000111100010000000000100000001000001100001111110001100010000111111010111110110000000000000000101110001010011010010011010010110011110001111100011100001110000011010001111011011011001110100011001001110111011010001110000011011001110100011100001110011011101001111100011000001111110111101001110111011111000110000000000000001101010001010010000010010010011100001001010000110000100010001001100111010000001101000010000000000110010001000100110010000001000111010001000000101010001111000100010000010101010010000011101001010001011001000010000001010000010011100100000010010001101110010011011100101010011010001010010000111111000010000011111011010000010110000010001111010010010001011010101010000111001101010000011101011010011000101000010011111000010010010000111110010000001000011000110001100011000110001100011000110001100100001010011000111010000100101010010110110001101011100000001111000010001000100001010011101001010100110001101000101101011111101010010010000011000011110101101011101100010100000011101110100001010000111111111101100110011010000110000111110011001010101100011110110000010000000010111100001011010001001000001011000100000111011101010101101000100110100010000000000001110001000000001110001000111000100000000111000100011100010010000111001011000000001101011010100001011011100110000000000001110001000111000100100001110010110000000011111111111111000011100001011010101110000111000001001111011100011111100011110100010100000111000100011100011000000000000111000100011100010010000111001011000000010111101010100010111001000010101010110001010000101010000110111000101110011110100000000111110011111000000001111111111111100001110000101101010111000010111000011101100110101000100010100000111000100011100011000000000000111000100011100010010000111001011000001011001101010110000000000001110001000111000100100001110010110000011010000111110111100011110101100001101000111101110001010000001101111010000101010101100001101011000001111001101110000010011011010100110001111111001000101000001110001000111000110000000000001110001000111000100100001110010110000101010000111011110011000010101001111000000100001110010111100101000001011011011100100010100010000100010000001000011100101010001011110000111000001010000111100011110101100001011100010111000010010000001101111010101000101110000010101001010100110111100101001000101000001110001000111000110000000000001110001000111000100100001110010110000110010011011011110111000000000000111000100011100010010000111001011000011010001111011100010100001010100111100001010101011000101000000010000011010010101010001010000011100010001110001100000000000011100010001110001001000011100101100001101000111101110001010000101010011110000101010101100010100001010000111001011010101011010001010000011100010001110001100000000000011100010001110001001000011100101100001101000111101110001010000101010011110000101010101100010100001011000010101001010101000101000001110001000111000110000000000001110001000111000100100001110010110000110100011110111000101000010101001111000010101010110001010000111100011111100101010101101000101000001110001000111000110000000000001110001000111000100100001110010111100100000011011110101110001011110101010011111100001000100010011000111000100011100011000000000000111000100011100010011011110101110000111011001100111110000001111111110101001100011111110010001010000011100010001110001100000000000011100010001110001011010010111100111000001011110101011000001011000100000111011101010101101000100110100000001011110111101111111111010000011100010001110001100000000000011100010001110001011010101100111001111010000010100000000111110100000011010101000101101010000101010011110000011111110000110111101100101000100110001110001000111000110000000000001110001000111000110101010110001011100000101000000110101001000011110001111010101011001101111001010100000101100010111000001010000101010011110000011100011001010010111010101000101000001110001000111000110000000000001110001001000011100101100000101000110101110001010000101110000111011001101010010000000011000001001000010001001010000101110011010000100011010100101010001011100100001011000110101010101110000111000001001111011000010111011110110100010100010000100010000101110000111011001101010010000011111110000110111101100110100100000011010101100000011011110100000011111110000101000001010001110100010100000111000100011100011000000000000111000100100001110010110000010100011010111000101000010111000011101100110101001000000001100000101000110111101000000001111100111110000101010011111110001100110101000101000100001000100001011100001110110011010100100000111111100001101111011001101001000000110101011000000110111101000000111111100001010000010100011101000101000001110001000111000110000000000001110001001000011100101100000101000110101110001010000101110000111011001101010010000000011000001101001010110000001100001101100110011001110000010010001010001000010001000010111000011101100110101001000001111111000011011110110011010010000001101010110000001101111010000001111111000010100000101000111010001010000011100010001110001100000000000011100010010000111001011000001010001101011100010100001011100001110110011010100100000000110000101010001011101001010011011011000011000010100001011111011100001101010000010010001010001000010001000010111000011101100110101001000001111111000011011110110011010010000001101010110000001101111010000001111111000010100000101000111010001010000011100010001110001100000000000011100010010000111001011000001010001101011100010100001011100001110110011010100100000000110000111000001001111011000010111011110110100010100010000100010000101110000111011001101010010000011111110000110111101100110100100000011010101100000011011110100000011111110000101000001010001110100010100000111000100011100011000000000000111000100100001110010111100100000110101011001110011001101000100100010011010001000000000001000011100101100000000101101111010010100110111000001010000000011111010000001101010100010110100100010011010001000000000001000011100101100000000111100000101000001111111000010111110110010100010100000111000110000000000010000111001011000000001111000001010000101110001011100001001000001111111000010111110110010100010100000111000110000000000010000111001011000000110011110011000111101010100010100010000100010000111100011110110100001111000111011000011101111001001000011001111100011110110101001000010101010110001010000011101101100001010100100010100000111000110000000000010000111001011000001010000101010110000000101011100010111101000011010001111110000010100000111111100001011111011001010001010000011100010001110001100000000000100001110010110000010100001010101100000111111100001011111011001010001010000011100010001110001100000000000100001110010110000010100011010111000101000010111000011101100110101001000000001100001111100111101100001011100100001010010101111000011011111010001010001000010001000010111000011101100110101001000001101001111111011110000100110110101101001000001011001101010010000110110000111111101010011111111010001010000011100011000000000001000011100101100000111111100001101111011001100000000110000011000011110101101011101100010100000011101110100000100100001000100101000010111001101000010001101010010101000101110001000101000001110001100000000000100001110010110000011111110000110111101100110000000011000001100001111010110101110110001010000001110111010000010100011011110010001010000011100011000000000001000011100101100000111111100001101111011001100000000110000011000011110101101011101100010100000011101110100000101011100000101111000001011110011011110000101000010100001001110000101111110100010100010000100010000000101011001000101000001110001000111000110000000000010000111001011000001111111000011011110110011000000001100000110000111101011010111011000101000000111011101000001100000010011011011000100010010100010001010000011100011000000000001000011100101100000111111100001101111011001100000000110000011000011110101101011101100010100000011101110100000110100111011010000101000111001000001101001111101100001010001010000011100010001110001100000000000100001110010110000011111110000110111101100110000000011000001100001111010110101110110001010000001110111010000101010001011101001010011011011000010100010100000111000110000000000010000111001011000001111111000011011110110011000000001100000110000111101011010111011000101000000111011101000010101001111111000110011010100010100000111000100011100011000000000001000011100101100000111111100001101111011001100000000110000011000011110101101011101100010100000011101110100001110000101110100100010100000111000110000000000010000111001011000001111111000011011110110011000000001100000110100001111001010100111111101000000111011101000000111111000000111110010100001010000010010010100110011010001001000101000001110001000111000110000000000010000111001011000001111111000011011110110011000000001100000110100001111001010100111111101000000111011101000011010001101101111001010001010000011100010001110001100000000000100001110010110000011111110000110111101100110000000011000001101000011111010000001110111010000111000001001111011000010111011110110100010100010000100010000001000011100101100000111000010000101101110000110100010101101010111000001100000101010110101000101110001000101000001110001000111000110000000000010000111001011000001111111000011011110110011000000010101110001011100001001010101011001101111001010100000111000111001011111001111100000011011110101000011001111000101000010110000011101100110100111100100001100001011100001110110011010100000010100010100010000100010000001000011100101100000111100110000101000000111011101000000001110110110100111010110011111011100001111100111001101010000111111100011011110010100100010100101001010000011100011000000000001000011100101100001101000110100101000011100000100111101110001111110001111100000000110000011000000100110110110001000100101001000010110001101010101011100001101000110110111100101000101000100001000100001110000010011110111000111111000111110000010110000111111111110011011011001001000001010001101011100010101001000000100001110010110000010110011010100100001111100111101100001011100100001010010101111000011011111010001010000011100011000000000001101111010111000011101100110011111000001101010110011100110011010001001000101000001110001000111000110000000000100010010010001000001100001011010110000110100011010100101000100010100000111000110000000000100010100000111000100011100011000000000010001010000011100011000000000010001010001000010001000001011000101000010100000100001011010101001000010101001111000001100000101000010101001110011110000011111110000101111101100110000101010011110000000101011100010111101000011110001111010100110011010001001000101000001110001100000000001000110100001110001100000000001000111000100010000000000100011100010001000000010010110100010100010000100010000011100011011110000100100010100010000100010000010110001011100000101000000110101011000000110101000100010011010001000000000010001110001000100000010000010101000100010100010000100010000011000010110101100000010000111001011000001101010110001000001101010001001111010001010001000010001000000100001110010110000101100011011011110111000011110000101011100010111001000001010000101010110000101010101100010100000111011011000010101010000111100011110110010001010000011100010001110001100000000001000111000100010000001011010000010100000100011001100001010001000110101000001011001100001011011011110001110001000000100011100010001000000110010001010010100101000100010000001101000001111001111111001000101111000010101100000101100001101110001010000000011000011100000100111101100001011101111011010001010000011100011000000000010001110001000100000011001000101001010010100010001000000110100000111100111111100100010111100001010110000010110000110111000101000010101010110001010000001101111001010111000001001111001100001011110101011010010000011100011111100100000100100001000100101000010111001101000010001101010010101000101110010000101100011010101010111000011100000100111101100001011101111011010001010000011100011000000000010001110001000100000011001000101001010010100010001000000110100000111100111111100100010111100001010110000010110000110111000101000010101010110001010000001101111001010111000001001111001100001011110101011010010000011100011111100100000101000110111101000000001111100111110000101010011111110001100110101000101000001110001100000000001000111000100010000001100100010100101001010001000100000011010000011110011111110010001011110000101011000001011000011011100010100001010101011000101000000110111100101011100000100111100110000101111010101101001000001110001111110010000011010010101100000011000011011001100110011100000100100010100000111000110000000000100011100010001000000110010001010010100101000100010000001101000001111001111111001000101111000010101100000101100001101110001010000101010101100010100000011011110010101110000010011110011000010111101010110100100000111000111111001000010101000101110100101001101101100001100001010000101111101110000110101000001001000101000001110001100000000001000111000100010000001111100101000100100100010000011010000111110100000011010000010100001010101100000011010101010001011001000010001000010111000011101100110101001000011100000100000111011110110010010000111100001000010011111010010000001101010101000101000001110001100000000001000111000100010000001111111011011001001000000110011101000000110100000101000010101011000010100001111101000010101010101100110111100101010000001101111010000111000001010101001011110011110010001010001000010001000001100000010011011011000100010010100100001011000110101010101110000110100011011011110011000010110001110010111011011111000001100000101000001010001110011101111010001010000011100011000000000010001110001000100000101000111100000100011001100000001001000110101000000001101001010100011100010000001000111000100010000010100011110000010001100110000101000100011010100000011100101101010101100011100010000001000111000100010000010100011110000010001100110000101100100011010100000001010100101010001110001000000100011100010001000001010001111000001000110011000011110010001101010000001111110010101010110001110001000000100011100010001000001010111000001011110000010111100110111100001010000010001100110000101000100011010100000010011100001011111100011100010000001000111000100010000010110001000100010001001001000100000011010000101100000110100100001011000111111100111100010111000011011110010101000000110011101000000100001110010110000011010011100101110110111110000010110001011011111111000011010000101000001110001101111001111100001010101011000101000001110110110000101010010001011000011100011000000000010001110001000100000101100110010001010001000010001000001011001111011001000101111000010100100000011010101100000101000111001101111001010010001011000011100010001110001100000000001000111000100010000010110011001000101000100001000100000111100111100000010000111001011000001011000011011100010100000000110000111110011110110000101110010100101011110000110111110100010110000111000110000000000100011100010001000001100001111010110101110110001010000001110111010000010001100110000010010100011010100000000101010000101110011010000100011010100101010001011100000111000100000010001110001000100000110000111101011010111011000101000000111011101000001000110011000001010010001101010000001101111000011100010000001000111000100010000011000011110101101011101100010100000011101110100000100011001100000110001000110101000000001001101101100010001001010000011100010000001000111000100010000011000011110101101011101100010100000011101110100000100011001100000110101000110101000000111011010000101000111001000001101001111101100001000111000100000010001110001000100000110000111101011010111011000101000000111011101000001000110011000010101010001101010000000101110100101001101101100001000111000100000010001110001000100000110000111101011010111011000101000000111011101000010101001110100011001100001111001000110101000000110011010001110001000000100011100010001000001100001111010110101110110001010000001110111010000111000100011001100000010101000110101000011010000111000100000010001110001000100000110100001111001010100111111101000000111011101000001000110011000000111010001101010000111000000111110010100001010000010010010100110011010001000011100010000001000111000100010000011010000111100101010011111110100000011101110100000100011001100001101001000110101000000110110111100100011100010000001000111000100010000011010000111110100000011101110100000100011001100001110001000110101000000010011110110000101110111101100011100010000001000111000100010000011101101100001010001010010100101000100010000101010101100010100000111011011000010101001000101001010010100010001000000110010001011110000101110001010000011110011111110000101000000010101110001011100001001010101011001101111001010010001010010100101000100010000111111101100010000011010000010010001010010100101000001110001100000000001000111000100010000011101101100001010100100010110010000100010000001101000001101000011111011110001111010110000010100011010111000101000000100001110010110000000011111000100100000111011011000010101010100100001011000110101010101100111001011010110000111110011110110000101110010000011100011111100100001101000100100001101100001111111010100111111110100010100010000100010000010100011110000011100011011110011111000011100000100111101110001111110001111100000000111110011111000001010000101010110000000011000011111001111011000010111001000010100101011110000110111111000001110111000011111010100000101100110110100100010100000111000110000000000100011100010001000010100001011110000010010001010000011100011000000000010001110001000100001010000111010001001001000100000110100001111101000000110100000101000010101011000010101010110001010000011101101100001010101000011110001111011001000101100001110001100000000001000111000100010000101000101100111101101000001000110011000000110010001101010000111101011100010111101010100111111000010000011100010000001000111000100010000101010101100010100000111011011000010101001000101100100001000100001101000001001000110000010010001001001000100000110000101101011000001110001101110010100101010100010010010001000000110100001111000010000100111110000000011000001001000010001001010000101110011010000100011010100101010001011100100001011000110101010101110000111000001001111011000010111011110110100010100000111000110000000000100011100010001000010101010110001010000011101101100001010100100010110010000100010000110100000100100011000001001000100100100010000011000010110101100000111000110111001010010101010001001001000100000011010000111100001000010011111000000001100000101000110111101000000001111100111110000101010011111110001100110101000101000001110001100000000001000111000100010000101010101100010100000111011011000010101001000101100100001000100001101000001001000110000010010001001001000100000110000101101011000001110001101110010100101010100010010010001000000110100001111000010000100111110000000011000001101001010110000001100001101100110011001110000010010001010000011100011000000000010001110001000100001010101011000101000001110110110000101010010001011001000010001000011010000010010001100000100100010010010001000001100001011010110000011100011011100101001010101000100100100010000001101000011110000100001001111100000000110000101010001011101001010011011011000011000010100001011111011100001101010000010010001010000011100011000000000010001110001000100001010101011000101000001110110110000101010010001011001000010001000011010000010010001100000100100010010010001000001100001011010110000011100011011100101001010101000100100100010000001101000011110000100001001111100000000110000111000001001111011000010111011110110100010100000111000110000000000100011100010001000010110000011101100110100111100100001100000100011001100001011101000110101000000001110110011010100000010001110001000000100011100010001000010110000101101111011100001010101011000101111001000100100100010000110100000111001000101000000100001110010111100101000001011011011101000000101101000001001110001011101110000000011111001111100000111000110111100111110000001111111000010010001010000011100011000000000010001110001000100001011000010110111101110000101010101100010111100100010010010001000011010000011100100010100000010000111001011110010100000101101101110100000010110100000100111000101110111000000001111100111110000011100011011110011111000010101010110001011010010001010000011100011000000000010001110001000110011000000001010001101010000101011010100001011011100100011100010000001000111000100011001100000110101000110101000001011000100000110101000111000100000010001110001000110011000001110010001101010000001100101001011101011000000000010001110001000110011000001111010001101010000111000011011110110010001110001000000100011100010001100110000101010100011010100000000111011110011000010101001111000000000010001111100011100011000000000010101110000010111100000101111001101111000010100001010000100111000010111111000000110000111101011010111011000101000000111011101000001001000010001001010000101110011010000100011010100101010001011100000000110000111101011010111011000101000000111011101000001010001101111000000011000011110101101011101100010100000011101110100000110000001001101101100010001001010000000011000011110101101011101100010100000011101110100000110100111011010000101000111001000001101001111101100001000000110000111101011010111011000101000000111011101000010101000101110100101001101101100001000000110000111101011010111011000101000000111011101000010101001111111000110011010000001100001111010110101110110001010000001110111010000111000010111010000000110100001111001010100111111101000000111011101000000111111000000111110010100001010000010010010100110011010001000000011010000111100101010011111110100000011101110100001101000110110111100100000011010000111110100000011101110100001110000010011110110000101110111101100000011010010111100111000001011110101011000001011000100000111011101010101101000100110100010000000001000000001101011010100001011011100110100100000010000111001010100010010010001000001100001011010110000011000011100101111100110100010101001000000111011100111010000001000011100101111001000010100010110011000010110110111101000101000001110001000111000110000000001000000001101011010100001011011100110100100000010000111001010100010010010001000001100001011010110000110100011010100101000001010100010001010000011100010001110001100000000010000010001100110000000001000001011001101010110100100000010000111001010100010100000111000110000000001000001011001101010110100100000010000111001010100010100010000100010000001000011100101100000111100110000100100010100101001010000011100011000000000101000001011011000100110110101100000000111110100000011111111101010011000111111100100010011000111000100011100011000000000101010101100010100000010000010110111101100111101101000001111111000000101010001111111000000101010101100010100000011111100000011111001010000101000001111111000000101010001111111000000101010101100010100000101011100000010010010000011111110000001010100011111110000001010101011000101000001010111000001000010111101000001111111000000101010001111111000000101010101100010100000110000010001100101000010100000111111100000010101000111111100000010101010110001010000011001101100001011011100110000011111110000001010100011111110000001010101011000101000001100110110010100010100000111111100000010101000111111100000010101010110001010000011011110000100101001010100001110111000001111111000000101010001111111000000101010101100010100000111111100001011111011001100000111111100000010101000111111100000010101010110001010000101100101100110101010001010000011111110000001010100011111110000001010101011000101000011100000100111110000011000010111011110110000010101010110001010000111000001001111100000111111100000010101000111111100000010101010110001011100000101000000110101001000000001100000010000010110111101100111101101000001111111000000101010001111111010000010110001011100000100100010100010000100010000101000101100010100000000111111111110001000001111001010010000101010011110000011000001010000010100010100001111000111100110111100101010000101000011111010000101000011001001101111001111100000011101110100000000110000011000011110101101011101100010010001010000011100010001110001100000000010101010110001011100000101000000110101001000000001100000101011100000010010010000011111110000001010100011111110100000101100010111000001001000101000100001000100000101100010100000000111111111110001000001111001010010000101010011110000011000001010000010100010100001111000111100110111100101010000101000011111010000101000011001001101111001111100000011101110100000000110000011000011110101101011101100010010001010000011100010001110001100000000010101010110001011100000101000000110101001000000001100000101011100000100001011110100000111111100000010101000111111101000001011000101110000010010001010001000010001000010100010110001010000000011111111111000100000111100101001000010101001111000001100000101000001010001010000111100011110011011110010101000010100001111101000010100001100100110111100111110000001110111010000000011000001100001111010110101110110001001000101000001110001000111000110000000001010101011000101110000010100000011010100100000000110000011000001000110010100001010000011111110000001010100011111110100000101100010111000001001000101000100001000100000101100010100000000111111111110001000001111001010010000101010011110000011000001010000010100010100001111000111100110111100101010000101000011111010000101000011001001101111001111100000011101110100000000110000011000011110101101011101100010010001010000011100010001110001100000000010101010110001011100000101000000110101001000000001100000110011011000010110111001100000111111100000010101000111111101000001011000101110000010010001010001000010001000010100010110001010000000011111111111000100000111100101001000010101001111000001100000101000001010001010000111100011110011011110010101000010100001111101000010100001100100110111100111110000001110111010000000011000001100001111010110101110110001001000101000001110001000111000110000000001010101011000101110000010100000011010100100000000110000011001101100101000101000001111111000000101010001111111010000010110001011100000100100010100010000100010000101010101100010001001000000001111111111100010000011110010000101010011110000011000001010000010100010100001111000111100110111100101010000101000011111010000101000011001001101111001111100000011101110100000000110000011000011110101101011101100010010001010000011100010001110001100000000010101010110001011100000101000000110101001000000001100000110111100001001010010101000011101110000011111110000001010100011111110100000101100010111000001001000101000100001000100000101100010100000000111111111110001000001111001010010000101010011110000011000001010000010100010100001111000111100110111100101010000101000011111010000101000011001001101111001111100000011101110100000000110000011000011110101101011101100010010001010000011100010001110001100000000010101010110001011100000101000000110101001000000001100000111111100001011111011001100000111111100000010101000111111101000001011000101110000010010001010001000010001000001011000101000000001111111111100010000011110010100100001010100111100000110000010100000101000101000011110001111001101111001010100001010000111110100001010000110010011011110011111000000111011101000000001100000110000111101011010111011000100100010100000111000100011100011000000000101010101100010111000001010000001101010010000000011000010101000011011100010111001111010000010110001011100000100100010100010000100010000001101111010100001100111100010100001010101011000101000010101000011011100010111001111001000100100100010000001000011100101100001010000010000101000010111000011101100110101000100010100000111000100011100011000000000101010101100010111000001010000001101010010000000011000010110010110011010101000101000001111111000000101010001111111010000010110001011100000100100010100010000100010000101000101100010100000000111111111110001000001111001010010000101010011110000011000001010000010100010100001111000111100110111100101010000101000011111010000101000011001001101111001111100000011101110100000000110000011010000111100101010011111110010001010000011100010001110001100000000010101010110001011100000101000000110101001000000001100001110000010011111000001100001011101111011100000101100010111000001001000101000100001000100000011010101100000000111111111110001000001111001010010000101010011110000011000001010000010100010100001111000111100110111100101010000101000011111010000101000010100001111110010101100000011101110100000000110000110100001010101000011101110000001110110001001000100110110101010001010000011100010001110001100000000010101010110001011100000101000000110101001000000001100001110000010011111000001111111000000101010001111111010000010110001011100000100100010100010000100010000010110001010000000011111111111000100000111100101001000010101001111000001100000101000001010001010000111100011110011011110010101000010100001111101000010100001100100110111100111110000001110111010000000011000001100001111010110101110110001001000101000001110001000111000110000000001010101011000101110000010100000011010100100000000111110100000011111100000011111001010000101000001111111000000101010001111111010000010110001011100000100100010100010000100010000101000101100010100000000111111111110001000001111001010010000101010011110000011000001010000010100010100001111000111100110111100101010000101000011111010000101000011001001101111001111100000011101110100000000110000011010000111100101010011111110000100100010100000111000100011100011000000000101010101100010111000001010000001101010010000111000001001111011100011111100011111000001011000101110000010010001010001000010001000001011000101000000001111111111100010000011110010100100001010100111100000110000010100000110000101101000010010000010110000101101110010011011110010100100010100000111000100011100011000000000101010101100010111000001010000001101010010000111100011110101010110011011110010101000000110111101010100010111000001010100101010011011110010101000001011000101110000010010001010000011100010001110001100000000010110000011101100110100111100100001100001011100001110110011010100000010000010111000011101100110101000000011100000100111101110001111110001111000001110000010011110111000111111000111110000111000000111110101011010010000000010110000111001011010110000001011111010101000101010010101000100111110000011011010101110100001010100001101001100110100010001010000011100011000000000111110011110110000101110010000101001010111100001101111100000 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "dragon", | |
"version": "1.0.0", | |
"main": "index.js", | |
"license": "MIT", | |
"dependencies": { | |
"@types/fs-extra": "^8.0.0", | |
"fs-extra": "^8.1.0" | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment