/* Fresh Retro 12 version 0.0-1a KNOWN BUGS: debug 2 is broken Working on io! :/ */ #include #include using namespace std; string replaceAll(string str, const string &from, const string &to) { if(from.empty()) return str; size_t start_pos = 0; while((start_pos = str.find(from, start_pos)) != string::npos) { str.replace(start_pos, from.length(), to); start_pos += to.length(); } return str; } //Edited from https://stackoverflow.com/questions/3418231/replace-part-of-a-string-with-another-string int index(string a[30], string find) { for (int i=0; i<30; i++) { if (a[i] == find) { return i; } } return -1; } class stack { public: int sp = 0; int pop() { int a = data[sp]; data[sp]=0; sp--; return a; } void append(int i) { sp++; data[sp]=i; } string display() { cout << '['; for(int i=1; i<=sp; i++) { cout << data[i]; cout << ((i==sp)? "":", "); } cout << "]"; return ""; } private: int data[5112]; }; #define MEMORY_SIZE 3500000 int memory[MEMORY_SIZE]; int ip=0; stack data; stack address; class basic_io { public: /* reserved devices: 0:generic output 1:keyboard 2:floating point 3:block storage 4:unix files 5:gopher 6:http 7:sockets 8:unix 9:scripting hooks 10:random number */ int type = -1; int version = 0; void run() { } }; class general_output : basic_io { public: int type = 0; void run() { printf("run:%c", data.pop()); //cout << chr(data.pop()); } }; #define IO_DEVICES 2 basic_io IO[IO_DEVICES]; #define DEBUG_MODE 0 //1 for CRC style debuging, 2 for DUSK style debuging //unpacked vars(for speed/simplicity) int unpacked0; int unpacked1; int unpacked2; int unpacked3; void no(int a, int b) { } void li(int a, int b) { ip++; data.append(memory[ip]); if (DEBUG_MODE == 2) { cout << memory[ip]; } } void du(int a, int b) { data.append(a); data.append(a); if (DEBUG_MODE == 2) { cout << a; } } void dr(int a, int b) { if (DEBUG_MODE == 2) { cout << a; } } void sw(int a, int b) { data.append(a); data.append(b); if (DEBUG_MODE == 2) { cout << b << ' ' << a << " -> " << a << ' ' << b; } } void pu(int a, int b) { address.append(a); if (DEBUG_MODE == 2) { cout << a; } } void po(int a, int b) { data.append(address.pop()); if (DEBUG_MODE == 2) { cout << a; } } void ju(int a, int b) { ip=a-1; if (DEBUG_MODE == 2) { cout << ip; } } void ca(int a, int b) { address.append(ip); ip=a-1; if (DEBUG_MODE == 2) { cout << ip; } } void cc(int a, int b) { if (b != 0) { address.append(ip); ip = a-1; if (DEBUG_MODE == 2) { cout << ip; } } else if (DEBUG_MODE==2) { cout << "condition faied"; } } void re(int a, int b) { ip = address.pop(); if (DEBUG_MODE == 2) { cout << ip; } } void eq(int a, int b) { data.append((b==a) ? -1 : 0); if (DEBUG_MODE==2) { cout << b << "==" << a; } } void ne(int a, int b) { data.append((b!=a) ? -1 : 0); if (DEBUG_MODE==2) { cout << b << "!=" << a; } } void lt(int a, int b) { data.append((ba) ? -1 : 0); if (DEBUG_MODE==2) { cout << b << ">" << a; } } void fe(int a, int b) { if (a<0) { switch (a) { case -1: data.append(data.sp+1); break; case -2: data.append(address.sp+1); break; case -3: data.append(MEMORY_SIZE); break; case -4: data.append(2147483647); break; case -5: data.append(-2147483648); break; } return; } data.append(memory[a]); if (DEBUG_MODE==2) { cout << memory[a] << " from " << a; } } void st(int a, int b) { memory[a] = b; if (DEBUG_MODE == 2) { cout << b << " into " << a; } } void ad(int a, int b) { data.append(b+a); if (DEBUG_MODE==2) { cout << b << "+" << a << "=" << a+b; } } void su(int a, int b) { data.append(b-a); if (DEBUG_MODE==2) { cout << b << "-" << a << "=" << a-b; } } void mu(int a, int b) { data.append(b*a); if (DEBUG_MODE==2) { cout << b << "*" << a << "=" << a*b; } } void di(int a, int b) { data.append(b%a); data.append(b/a); if (DEBUG_MODE==2) { cout << b << "/%" << a << "=" << b/a << ' ' << b%a; } } void an(int a, int b) { data.append(b&a); if (DEBUG_MODE==2) { cout << b << "&" << a << "=" << (a&b); } } void Or(int a, int b) { data.append(b|a); if (DEBUG_MODE==2) { cout << b << "|" << a << "=" << (a|b); } } void xo(int a, int b) { data.append(b^a); if (DEBUG_MODE==2) { cout << b << "^" << a << "=" << (a^b); } } void sh(int a, int b) { if (a < 1) { data.append(b<<(0-a)); return; } data.append(b>>a); if (DEBUG_MODE==2) { cout << b << "by" << a; } } void zr(int a, int b) { if (a == 0) { ip = address.pop(); if (DEBUG_MODE==2) { cout << ip; } return; } data.append(a); if (DEBUG_MODE==2) { cout << "condition failed"; } } void ha(int a, int b) { ip = MEMORY_SIZE+5; } void ie(int a, int b) { data.append(IO_DEVICES); } void iq(int a, int b) { //As I have my IO devices in order, to get it to work with my hack I am cheating here data.append(0);//data.append(IO[a].version); data.append(a);//data.append(IO[a].type); } void ii(int a, int b) { switch (a) { case 0: cout << (char)data.pop(); break; case 1: char ch; ch = cin.get(); data.append((int)ch); default: break; } } typedef void (*Handler)(int, int); Handler op[30] = { no, li, du, dr, sw, pu, po, ju, ca, cc, re, eq, ne, lt, gt, fe, st, ad, su, mu, di, an, Or, xo, sh, zr, ha, ie, iq, ii }; string op_names[30] = { "no","li","du","dr","sw","pu","po", "ju","ca","cc","re","eq","ne","lt", "gt","fe","st","ad","su","mu","di","an", "Or","xo","sh","zr","ha","ie","iq","ii" }; int index(string s) { for (int i = 0; i<30; i++) { if (op_names[i] == s) { return i; } } return 0; } int pack(string l) { l=l.append("nononono"); l=replaceAll(l,"..","no"); int a=index(l.substr(0,2)); int b=index(l.substr(2,2)); int c=index(l.substr(4,2)); int d=index(l.substr(6,2)); return (a<<0)+(b<<8)+(c<<16)+(d<<24); } void unpack(int instr) { unpacked0=(instr&0x000000FF)>>0; unpacked1=(instr&0x0000FF00)>>8; unpacked2=(instr&0x00FF0000)>>16; unpacked3=(instr&0xFF000000)>>24; } bool contains(int instr, int *selection, int checkLength) { for (int i=0; i= 0)) { int instr = memory[ip]; unpack(instr); if (DEBUG_MODE) { cout << "===============\n"; } if (DEBUG_MODE==2) { cout << "ip:" << ip << ' ' << instr << '\n'; string fu = op_names[unpacked0]; fu=fu.append(op_names[unpacked1]).append(op_names[unpacked2]).append(op_names[unpacked3]); cout << "commands: " << replaceAll(fu, "no","..") << '\n'; } excecute(unpacked0); excecute(unpacked1); excecute(unpacked2); excecute(unpacked3); ip++; } } void patch(vector o, int start) { for (int i=0; i l = { 1793,9687,9677,9701,202107,377,349,1028,1535,0,10,1,10,2,10,3,10,4,10, 5,10,6,10,7,10,8,10,11,10,12,10,13,10,14,10,15,10,16,10, 17,10,18,10,19,10,20,10,21,10,22,10,23,10,24,10,25,68223234,1,2575, 85000450,1,656912,112,157,268505089,63,62,285281281,0,63,2063,10,101384453,0,9,10,2049,56,25, 459011,76,524546,76,302256641,1,10,16974595,0,50529798,10,25,524547,95,50529798,10,17108738,1,251790353,101777669, 1,17565186,86,524545,90,64,167838467,-1,134287105,3,59,659457,3,459023,107,2049,56,25,2049,107, 1793,114,2049,114,117506307,0,107,0,524545,26,112,168820993,0,126,1642241,126,134283523,11,112,1793, 107,524545,2049,107,1793,107,16846593,126,140,157,1793,64,16846593,126,112,157,1793,64,7,10, 659713,1,659713,2,659713,3,1793,167,17108737,3,2,524559,107,2049,107,2049,107,2049,121,168820998, 2,533,1028,167841793,180,9,17826049,0,180,2,15,25,524546,163,134287105,181,95,2305,182,459023, 190,134287361,181,185,659201,180,10,659969,7,2049,56,25,17694978,58,206,9,84152833,48,319750404,205, 117507601,208,184618754,45,25,16974851,-1,168886532,1,134284289,1,221,134284289,0,208,660227,32,0,0,115, 105,103,105,108,58,115,0,285278479,238,6,2576,524546,81,1641217,1,167838467,235,2049,250,2049, 246,524545,238,200,17826050,237,0,2572,2563,2049,228,1793,133,459023,133,17760513,145,3,165,8, 251727617,3,2,2049,159,16,168820993,-1,126,2049,159,2575,2049,200,17563906,0,288,9,1793,133, 285282049,3,2,134287105,126,285,524545,1793,107,16846593,3,0,107,8,659201,3,524545,26,112,17043201, 3,11,2049,112,2049,107,268505092,126,1642241,126,656131,659201,3,524545,11,112,2049,107,459009,23, 112,459009,55,112,459009,19,112,459009,21,112,1793,9,10,524546,159,134284303,161,1807,1028,1642241, 237,285282049,357,1,459012,352,117509889,180,352,134287105,357,200,16845825,0,365,349,1793,64,1793,379, 17826050,357,256,8,117506305,358,368,64,2116,11340,11700,11400,13685,13104,12432,12402,9603,9801,11514,11413, 11110,12528,11948,10302,13340,9700,13455,12753,10500,10670,12654,13320,11960,13908,10088,10605,11865,11025,0,2049, 200,987393,1,1793,107,524546,455,2049,453,2049,453,17891588,2,455,8,17045505,-24,-16,17043736,-8, 1118488,1793,107,17043202,1,169021201,2049,56,25,33883396,101450758,6404,459011,445,34668804,2,2049,442,524545,387, 445,302056196,387,659969,1,0,13,151,100,117,112,0,464,15,151,100,114,111,112,0, 471,17,151,115,119,97,112,0,479,25,151,99,97,108,108,0,487,27,151,101, 113,63,0,495,29,151,45,101,113,63,0,502,31,151,108,116,63,0,510,33, 151,103,116,63,0,517,35,151,102,101,116,99,104,0,524,37,151,115,116,111, 114,101,0,533,39,151,43,0,542,41,151,45,0,547,43,151,42,0,552,45, 151,47,109,111,100,0,557,47,151,97,110,100,0,565,49,151,111,114,0,572, 51,151,120,111,114,0,578,53,151,115,104,105,102,116,0,585,343,157,112,117, 115,104,0,594,346,157,112,111,112,0,602,340,157,48,59,0,609,56,145,102, 101,116,99,104,45,110,101,120,116,0,615,59,145,115,116,111,114,101,45,110, 101,120,116,0,629,228,145,115,58,116,111,45,110,117,109,98,101,114,0,643, 95,145,115,58,101,113,63,0,658,81,145,115,58,108,101,110,103,116,104,0, 667,64,145,99,104,111,111,115,101,0,679,74,151,105,102,0,689,72,145,45, 105,102,0,695,267,157,115,105,103,105,108,58,40,0,702,126,133,67,111,109, 112,105,108,101,114,0,713,3,133,72,101,97,112,0,725,107,145,44,0,733, 121,145,115,44,0,738,127,157,59,0,744,299,157,91,0,749,315,157,93,0, 754,2,133,68,105,99,116,105,111,110,97,114,121,0,759,158,145,100,58,108, 105,110,107,0,773,159,145,100,58,120,116,0,783,161,145,100,58,99,108,97, 115,115,0,791,163,145,100,58,110,97,109,101,0,802,145,145,99,108,97,115, 115,58,119,111,114,100,0,812,157,145,99,108,97,115,115,58,109,97,99,114, 111,0,826,133,145,99,108,97,115,115,58,100,97,116,97,0,841,165,145,100, 58,97,100,100,45,104,101,97,100,101,114,0,855,268,157,115,105,103,105,108, 58,35,0,871,274,157,115,105,103,105,108,58,58,0,882,291,157,115,105,103, 105,108,58,38,0,893,272,157,115,105,103,105,108,58,36,0,904,330,157,114, 101,112,101,97,116,0,915,332,157,97,103,97,105,110,0,925,377,145,105,110, 116,101,114,112,114,101,116,0,934,200,145,100,58,108,111,111,107,117,112,0, 947,151,145,99,108,97,115,115,58,112,114,105,109,105,116,105,118,101,0,959, 4,133,86,101,114,115,105,111,110,0,978,424,145,105,0,989,107,145,100,0, 994,418,145,114,0,999,205,133,66,97,115,101,0,1004,349,145,101,114,114,58, 110,111,116,102,111,117,110,100,0,115,116,111,114,101,0,110,0,101,116,0, 101,114,118,101,0,115,0,0,0,0,0,63,64,91,92,93,94,96,123,124, 125,126,0,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88, 89,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1012,1543,145, 69,79,77,0,1,-3,15,10,1536,1556,145,100,101,112,116,104,0,1,-1,15, 10,1547,1570,145,100,58,108,97,115,116,0,1,2,15,10,1560,1587,145,100,58, 108,97,115,116,46,120,116,0,2049,1570,2049,159,15,10,1574,1609,145,100,58,108, 97,115,116,46,99,108,97,115,115,0,2049,1570,2049,161,15,10,1593,1630,145,100, 58,108,97,115,116,46,110,97,109,101,0,2049,1570,2049,163,10,1615,1646,145,114, 101,99,108,97,115,115,0,2049,1570,2049,161,16,10,1635,1665,145,105,109,109,101, 100,105,97,116,101,0,1,157,2049,1646,10,1652,1678,145,100,97,116,97,0,1, 133,2049,1646,10,1670,1696,145,112,114,105,109,105,116,105,118,101,0,1,151,2049, 1646,10,1683,1706,157,40,0,10,1701,1712,157,41,0,10,1707,1728,145,99,111,109, 112,105,108,101,58,108,105,116,0,1,1,2049,107,2049,107,10,1713,1751,145,99, 111,109,112,105,108,101,58,106,117,109,112,0,1,1793,2049,107,2049,107,10,1735, 1774,145,99,111,109,112,105,108,101,58,99,97,108,108,0,1,2049,2049,107,2049, 107,10,1758,1796,145,99,111,109,112,105,108,101,58,114,101,116,0,1,10,2049, 107,10,1781,1815,145,99,111,109,112,105,108,105,110,103,63,0,1,126,15,10, 1801,1830,157,115,105,103,105,108,58,96,0,2049,228,2049,107,10,1819,1846,157,115, 105,103,105,108,58,92,0,2049,424,10,1835,1860,157,115,105,103,105,108,58,94, 0,2049,418,10,1849,1871,145,104,101,114,101,0,1,3,15,10,1863,1886,157,115, 105,103,105,108,58,64,0,2049,200,2049,159,15,2049,1815,1793,1902,1,3841,2049,107, 2049,107,10,1,1895,1793,1908,15,10,1,1906,2049,64,10,1875,1924,157,115,105,103, 105,108,58,33,0,2049,200,2049,159,15,2049,1815,1793,1940,1,4097,2049,107,2049,107, 10,1,1933,1793,1946,16,10,1,1944,2049,64,10,1913,1963,145,100,58,99,114,101, 97,116,101,0,1,133,1,0,2049,165,2049,1871,2049,1570,2049,159,16,10,1951,1986, 145,118,97,114,45,110,0,2049,1963,2049,107,10,1977,1998,145,118,97,114,0,134284289, 0,1986,10,1991,2011,145,99,111,110,115,116,0,2049,1963,2049,1570,2049,159,16,10, 2002,2027,151,116,117,99,107,0,100926722,10,2019,2037,151,111,118,101,114,0,67502597,10, 2029,2046,151,110,105,112,0,772,10,2039,2061,151,100,114,111,112,45,112,97,105, 114,0,771,10,2048,2071,151,63,100,117,112,0,6402,10,2063,2085,145,100,117,112, 45,112,97,105,114,0,67502597,67502597,10,2073,2095,145,100,105,112,0,525572,6,10,2088, 2105,145,115,105,112,0,67502597,1,25,2049,2095,10,2098,2117,145,98,105,0,1,2105, 2049,2095,8,10,2111,2130,145,98,105,42,0,1,2095,2049,2095,8,10,2123,2143,145, 98,105,64,0,2,2049,2130,10,2136,2154,145,116,114,105,0,1793,2163,1,2105,2049, 2095,2049,2105,10,1,2156,2049,2095,8,10,2147,2177,145,116,114,105,42,0,1793,2194, 1793,2187,4,1,2095,2049,2095,10,1,2181,2049,2095,2049,2095,10,1,2179,2049,2095,8, 10,2169,2208,145,116,114,105,64,0,2,2,2049,2177,10,2200,2222,145,119,104,105, 108,101,0,1793,2231,525570,1639430,3,1,2224,7,10,1,2224,8,3,10,2213,2245,145, 117,110,116,105,108,0,1793,2256,525570,385942534,-1,25,3,1,2247,7,10,1,2247,8, 3,10,2236,2270,145,116,105,109,101,115,0,1793,2282,4,25,33886721,1,2053,1542,1, 2273,7,10,1,2272,8,3,10,2261,2298,157,115,105,103,105,108,58,124,0,2049, 200,1793,2306,2049,159,15,10,1,2302,1793,2314,2049,161,15,10,1,2310,2049,2117,2049, 1815,1793,2329,1,133,2049,2095,2049,1774,10,1,2322,1,25,2049,64,10,2287,2344,145, 84,82,85,69,0,1,-1,10,2336,2356,145,70,65,76,83,69,0,1,0,10, 2347,2367,145,99,97,115,101,0,1793,2372,67502597,11,10,1,2369,2049,2095,4,1793,2384, 772,8,2049,2344,10,1,2379,1793,2392,3,2049,2356,10,1,2388,2049,64,25,6,3, 3,10,2359,2411,145,115,58,99,97,115,101,0,1793,2417,67502597,2049,95,10,1,2413, 2049,2095,4,1793,2429,772,8,2049,2344,10,1,2424,1793,2437,3,2049,2356,10,1,2433, 2049,64,25,6,3,3,10,2401,2453,145,110,111,116,0,1,-1,23,10,2446,2466, 145,108,116,101,113,63,0,2049,2085,101516555,22,10,2457,2480,145,103,116,101,113,63, 0,4,2049,2466,10,2471,2493,145,110,58,77,65,88,0,1,-5,15,10,2484,2506, 145,110,58,77,73,78,0,1,-4,15,10,2497,2521,145,110,58,122,101,114,111, 63,0,1,0,11,10,2510,2537,145,110,58,45,122,101,114,111,63,0,1,0, 12,10,2525,2556,145,110,58,110,101,103,97,116,105,118,101,63,0,1,0,13, 10,2541,2575,145,110,58,112,111,115,105,116,105,118,101,63,0,1,-1,14,10, 2560,2603,145,110,58,115,116,114,105,99,116,108,121,45,112,111,115,105,116,105, 118,101,63,0,1,0,14,10,2579,2618,145,110,58,101,118,101,110,63,0,1, 2,20,3,2049,2521,10,2607,2635,145,110,58,111,100,100,63,0,2049,2618,2049,2453, 10,2625,2647,145,105,102,59,0,67502597,1,74,2049,2095,25,6,771,10,2640,2664,145, 45,105,102,59,0,67502597,1,72,2049,2095,2049,2453,25,6,771,10,2656,2682,157,105, 102,58,0,1,25,2049,107,1,3,2049,107,10,2675,2699,157,45,105,102,58,0, 1,1644289,2049,107,1,-1,2049,107,1,3,2049,107,10,2691,2719,151,114,111,116,0, 67503109,10,2712,2726,151,47,0,197652,10,2721,2735,151,109,111,100,0,788,10,2728,2746, 145,110,58,112,111,119,0,1,1,4,1793,2754,67502597,19,10,1,2751,2049,2270,772, 10,2737,2772,145,110,58,110,101,103,97,116,101,0,1,-1,19,10,2760,2788,145, 110,58,115,113,117,97,114,101,0,4866,10,2776,2800,145,110,58,115,113,114,116, 0,1,1,1793,2818,2049,2085,197652,67502597,18,1,2,197652,25,17,1,2804,7,10,1, 2804,8,772,10,2790,2832,145,110,58,109,105,110,0,2049,2085,13,1793,2839,3,10, 1,2837,1793,2845,772,10,1,2843,2049,64,10,2823,2859,145,110,58,109,97,120,0, 2049,2085,14,1793,2866,3,10,1,2864,1793,2872,772,10,1,2870,2049,64,10,2850,2886, 145,110,58,97,98,115,0,2,2049,2556,1,2772,9,10,2877,2904,145,110,58,108, 105,109,105,116,0,4,5,2049,2832,6,2049,2859,10,2893,2921,145,110,58,105,110, 99,0,1,1,17,10,2912,2934,145,110,58,100,101,99,0,1,1,18,10,2925, 2952,145,110,58,98,101,116,119,101,101,110,63,0,67503109,1793,2960,67503109,67503109,2049,2904, 10,1,2955,2049,2105,11,10,2938,2978,145,118,58,105,110,99,45,98,121,0,1793, 2982,4367,10,1,2980,2049,2105,16,10,2966,3000,145,118,58,100,101,99,45,98,121, 0,1793,3004,1180687,10,1,3002,2049,2105,16,10,2988,3019,145,118,58,105,110,99,0, 1,1,4,2049,2978,10,3010,3034,145,118,58,100,101,99,0,1,1,4,2049,3000, 10,3025,3051,145,118,58,108,105,109,105,116,0,251790597,1542,2049,2904,4100,10,3040,3065, 145,118,58,111,110,0,2049,2344,4100,10,3057,3078,145,118,58,111,102,102,0,2049, 2356,4100,10,3069,3091,145,97,108,108,111,116,0,1,3,2049,2978,10,3082,3110,145, 118,58,112,114,101,115,101,114,118,101,0,983556,1793,3118,1,25,2049,2095,10,1, 3113,2049,2095,4100,10,3096,3136,145,118,58,117,112,100,97,116,101,0,4,1793,3143, 15,4,8,10,1,3139,2049,2105,16,10,3124,3157,145,99,111,112,121,0,1793,3166, 285278725,1,33951492,268767489,1,6,10,1,3159,2049,2270,771,10,3149,3185,145,83,99,111,112, 101,76,105,115,116,0,9493,9591,10,3172,3194,145,123,123,0,2049,1570,2,1,3185, 2049,59,16,10,3188,3219,145,45,45,45,114,101,118,101,97,108,45,45,45,0, 2049,1570,1,3185,2049,2921,16,10,3203,3233,145,125,125,0,1,3185,2049,56,4,15, 11,1793,3247,3841,3185,4097,2,10,1,3242,1793,3273,3841,3185,1793,3268,1,2,983567,1, 3185,2049,2921,1641487,3,1,3257,7,10,1,3255,8,16,10,1,3251,2049,64,10,3227, 3287,133,115,116,97,114,116,0,0,10,3278,3296,133,101,110,100,0,0,10,3289, 3311,145,116,101,114,109,105,110,97,116,101,0,1,0,3841,3296,16,10,3227,3333, 145,98,117,102,102,101,114,58,115,116,97,114,116,0,3841,3287,10,3317,3350,145, 98,117,102,102,101,114,58,101,110,100,0,3841,3296,10,3336,3367,145,98,117,102, 102,101,114,58,97,100,100,0,3841,3296,16,1,3296,2049,3019,2049,3311,10,3353,3391, 145,98,117,102,102,101,114,58,103,101,116,0,1,3296,2049,3034,3841,3296,15,2049, 3311,10,3377,3417,145,98,117,102,102,101,114,58,101,109,112,116,121,0,3841,3287, 4097,3296,2049,3311,10,3401,3439,145,98,117,102,102,101,114,58,115,105,122,101,0, 3841,3296,3841,3287,18,10,3424,3459,145,98,117,102,102,101,114,58,115,101,116,0, 4097,3287,2049,3417,10,3445,3483,145,98,117,102,102,101,114,58,112,114,101,115,101, 114,118,101,0,3841,3287,3841,3296,1793,3496,1,25,2049,2095,4097,3287,10,1,3489,2049, 2095,4097,3296,10,3464,3518,133,84,101,109,112,83,116,114,105,110,103,115,0,32, 3503,3536,133,84,101,109,112,83,116,114,105,110,103,77,97,120,0,512,3519,3548, 145,83,84,82,73,78,71,83,0,2049,1543,3841,3518,3841,3536,19,18,10,3537,3568, 133,67,117,114,114,101,110,116,0,0,10,3557,3583,145,115,58,112,111,105,110, 116,101,114,0,3841,3568,3841,3536,19,2049,3548,17,10,3570,3602,145,115,58,110,101, 120,116,0,1,3568,2049,3019,3841,3568,3841,3518,11,1793,3618,1,0,4097,3568,10,1, 3613,9,10,3537,3632,145,115,58,116,101,109,112,0,2,2049,81,2049,2921,2049,3583, 4,2049,3157,2049,3583,2049,3602,10,3622,3658,145,115,58,101,109,112,116,121,0,2049, 3583,2049,3602,1,0,67502597,16,10,3647,3677,145,115,58,115,107,105,112,0,6,1793, 3685,68223234,1,786703,0,10,1,3680,2049,2222,2049,2934,5,10,3667,3703,145,115,58,107, 101,101,112,0,2049,1815,1793,3712,1,3677,2049,1774,10,1,3707,9,2049,1871,1,121, 2049,2095,2049,133,10,3693,3735,157,115,105,103,105,108,58,39,0,2049,1815,1,3703, 1,3632,2049,64,10,3724,3754,145,115,58,99,104,111,112,0,2049,3632,2,2049,81, 67502597,17,2049,2934,1,0,4,16,10,3744,3781,145,115,58,114,101,118,101,114,115, 101,0,1793,3823,2,2049,3632,2049,3459,1,81,1793,3799,2,2049,81,17,2049,2934,10, 1,3792,2049,2117,4,1793,3813,2,15,2049,3367,2049,2934,10,1,3806,2049,2270,3,2049, 3333,2049,3632,10,1,3783,2049,3483,10,3768,3841,145,115,58,112,114,101,112,101,110, 100,0,2049,3632,1793,3865,2,2049,81,17,1793,3857,2,2049,81,2049,2921,10,1,3851, 2049,2095,4,2049,3157,10,1,3845,2049,2105,10,3828,3882,145,115,58,97,112,112,101, 110,100,0,4,2049,3841,10,3870,3900,145,115,58,102,111,114,45,101,97,99,104, 0,1793,3915,67502597,6415,3,67502597,67502597,251987205,2054,101777670,1,1,3902,7,10,1,3902,8,771, 10,3886,3934,145,115,58,105,110,100,101,120,45,111,102,0,4,1793,3948,68223234,1, 6415,33883396,101450758,6404,3,1,3937,7,10,1,3937,1793,3957,18,2049,2934,772,10,1,3952, 1793,3966,2049,81,67502597,11,10,1,3961,2049,2154,1793,3976,3,1,-1,10,1,3972,9, 10,3920,4000,145,115,58,99,111,110,116,97,105,110,115,45,99,104,97,114,63, 0,2049,3934,1,-1,12,10,3980,4016,145,115,58,104,97,115,104,0,1,5381,4, 1793,4024,286458116,33,10,1,4021,2049,3900,10,4006,4036,133,83,114,99,0,0,4029,4044, 133,84,97,114,0,0,4037,4052,133,80,97,100,0,0,4045,4058,133,73,0,0, 4053,4064,133,70,0,0,4059,4071,133,65,116,0,0,4065,4085,145,116,101,114,109, 105,110,97,116,101,0,1,0,3841,4052,3841,4044,2049,81,17,16,10,4072,4107,145, 101,120,116,114,97,99,116,0,3841,4036,3841,4058,17,3841,4052,3841,4044,2049,81,2049, 3157,10,4096,4132,145,99,111,109,112,97,114,101,0,3841,4052,3841,4044,2049,95,3841, 4064,22,4097,4064,3841,4064,1793,4152,3841,4058,4097,4071,10,1,4147,2049,72,10,4121,4165, 145,110,101,120,116,0,1,4058,2049,3019,10,4006,4192,145,115,58,99,111,110,116, 97,105,110,115,45,115,116,114,105,110,103,63,0,4097,4044,4097,4036,2049,3658,4097, 4052,1,0,4097,4058,1,0,4097,4064,3841,4036,2049,81,1793,4223,2049,4107,2049,4085,2049, 4132,2049,4165,10,1,4214,2049,2270,3841,4064,10,4170,4237,133,83,116,114,0,0,4230, 4249,145,101,120,116,114,97,99,116,0,2049,2085,3841,4237,4,2049,3157,3841,-1,67502597, 17,1,0,4,16,10,4238,4274,145,99,104,101,99,107,0,1,4249,2049,2095,1793, 4285,1,2921,2049,2095,10,1,4280,2049,2095,3841,4237,2049,4016,67502597,11,10,4265,4308,145, 108,111,99,97,116,105,111,110,0,67503109,67503109,1793,4341,1793,4336,4,1793,4322,67502597,2049, 2521,21,10,1,4317,2049,2095,4,1793,4332,772,2,10,1,4329,9,10,1,4314,2049, 2095,10,1,4312,2049,2095,10,4296,4355,145,115,101,116,117,112,0,2049,3658,4097,4237, 1,0,67503109,67503109,1,81,1,4016,2049,2117,2049,3658,2049,3459,1793,4379,67502597,2049,81,10, 1,4375,2049,2095,4,10,4170,4406,145,115,58,105,110,100,101,120,45,111,102,45, 115,116,114,105,110,103,0,67502597,1793,4432,1793,4425,2049,4355,1793,4420,2049,4274,2049,4308, 10,1,4415,2049,2270,10,1,4411,2049,3483,771,3,10,1,4409,2049,2095,18,1,2, 18,1,-1,2049,2859,10,4385,4457,145,115,58,102,105,108,116,101,114,0,1793,4485, 2049,3658,2049,3459,4,1793,4477,2049,2085,4,8,1,3367,1,15,2049,64,10,1,4466, 2049,3900,3,2049,3333,10,1,4459,2049,3483,10,4445,4499,145,115,58,109,97,112,0, 1793,4521,2049,3658,2049,3459,4,1793,4513,67502597,8,2049,3367,10,1,4508,2049,3900,3,2049, 3333,10,1,4501,2049,3483,10,4490,4538,145,115,58,115,117,98,115,116,114,0,1793, 4544,17,2049,3658,10,1,4540,2049,2095,1793,4556,67502597,1,3157,2049,2095,10,1,4550,2049, 2105,67502597,1793,4569,17,1,0,4,16,10,1,4563,2049,2095,10,4526,4585,145,115,58, 114,105,103,104,116,0,67502597,2049,81,67502597,18,4,2049,4538,10,4574,4604,145,115,58, 108,101,102,116,0,1,0,4,2049,4538,10,4594,4628,145,115,58,98,101,103,105, 110,115,45,119,105,116,104,63,0,2,2049,81,1,17,2049,2095,2049,4604,2049,95, 10,4610,4656,145,115,58,101,110,100,115,45,119,105,116,104,63,0,2,2049,81, 1,17,2049,2095,2049,4585,2049,95,10,4640,4678,145,115,58,99,111,112,121,0,67502597, 2049,81,2049,2921,2049,3157,10,4668,4698,145,115,58,68,73,71,73,84,83,0,2049, 3677,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,0,1,4700, 10,4686,4741,145,115,58,65,83,67,73,73,45,76,79,87,69,82,67,65,83, 69,0,2049,3677,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, 113,114,115,116,117,118,119,120,121,122,0,1,4743,10,4720,4794,145,115,58,65, 83,67,73,73,45,85,80,80,69,82,67,65,83,69,0,2049,3677,65,66,67, 68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87, 88,89,90,0,1,4796,10,4773,4845,145,115,58,65,83,67,73,73,45,76,69, 84,84,69,82,83,0,2049,3677,97,98,99,100,101,102,103,104,105,106,107,108, 109,110,111,112,113,114,115,116,117,118,119,120,121,122,65,66,67,68,69,70, 71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, 0,1,4847,10,4826,4920,145,115,58,80,85,78,67,84,85,65,84,73,79,78, 0,2049,3677,95,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,58, 59,60,61,62,63,64,91,92,93,94,96,123,124,125,126,0,1,4922,1,95, 67502597,16,10,4903,4978,133,115,58,87,72,73,84,69,83,80,65,67,69,0,32, 9,10,13,0,4962,4988,157,39,0,1,3658,2049,145,10,4983,4998,157,36,0,1, 0,2049,133,10,4993,0,133,65,83,67,73,73,58,78,85,76,0,5003,27,133, 65,83,67,73,73,58,69,83,67,0,5016,8,133,65,83,67,73,73,58,66, 83,0,5029,9,133,65,83,67,73,73,58,72,84,0,5041,10,133,65,83,67, 73,73,58,76,70,0,5053,11,133,65,83,67,73,73,58,86,84,0,5065,12, 133,65,83,67,73,73,58,70,70,0,5077,13,133,65,83,67,73,73,58,67, 82,0,5089,32,133,65,83,67,73,73,58,83,80,65,67,69,0,5101,127,133, 65,83,67,73,73,58,68,69,76,0,5116,1,133,65,83,67,73,73,58,83, 79,72,0,5129,2,133,65,83,67,73,73,58,83,84,88,0,5142,3,133,65, 83,67,73,73,58,69,84,88,0,5155,4,133,65,83,67,73,73,58,69,79, 84,0,5168,5,133,65,83,67,73,73,58,69,78,81,0,5181,6,133,65,83, 67,73,73,58,65,67,75,0,5194,7,133,65,83,67,73,73,58,66,69,76, 0,5207,14,133,65,83,67,73,73,58,83,79,0,5220,15,133,65,83,67,73, 73,58,83,73,0,5232,16,133,65,83,67,73,73,58,68,76,69,0,5244,17, 133,65,83,67,73,73,58,68,67,49,0,5257,18,133,65,83,67,73,73,58, 68,67,50,0,5270,19,133,65,83,67,73,73,58,68,67,51,0,5283,20,133, 65,83,67,73,73,58,68,67,52,0,5296,21,133,65,83,67,73,73,58,78, 65,75,0,5309,22,133,65,83,67,73,73,58,83,89,78,0,5322,23,133,65, 83,67,73,73,58,69,84,66,0,5335,24,133,65,83,67,73,73,58,67,65, 78,0,5348,25,133,65,83,67,73,73,58,69,77,0,5361,26,133,65,83,67, 73,73,58,83,85,66,0,5373,28,133,65,83,67,73,73,58,70,83,0,5386, 29,133,65,83,67,73,73,58,71,83,0,5398,30,133,65,83,67,73,73,58, 82,83,0,5410,31,133,65,83,67,73,73,58,85,83,0,5422,5450,145,99,58, 108,111,119,101,114,99,97,115,101,63,0,1,97,1,122,2049,2952,10,5434,5473, 145,99,58,117,112,112,101,114,99,97,115,101,63,0,1,65,1,90,2049,2952, 10,5457,5493,145,99,58,108,101,116,116,101,114,63,0,1,5450,1,5473,2049,2117, 22,10,5480,5513,145,99,58,100,105,103,105,116,63,0,1,48,1,57,2049,2952, 10,5501,5534,145,99,58,118,105,115,105,98,108,101,63,0,1,32,1,126,2049, 2952,10,5520,5553,145,99,58,118,111,119,101,108,63,0,2049,3677,97,101,105,111, 117,65,69,73,79,85,0,1,5555,4,2049,4000,10,5541,5588,145,99,58,99,111, 110,115,111,110,97,110,116,63,0,2,2049,5493,1793,5598,2049,5553,2049,2453,10,1, 5593,1793,5606,3,2049,2356,10,1,5602,2049,64,10,5572,5628,145,99,58,119,104,105, 116,101,115,112,97,99,101,63,0,1,4978,4,2049,4000,10,5611,5651,145,99,58, 45,108,111,119,101,114,99,97,115,101,63,0,2049,5450,2049,2453,10,5634,5673,145, 99,58,45,117,112,112,101,114,99,97,115,101,63,0,2049,5473,2049,2453,10,5656, 5691,145,99,58,45,100,105,103,105,116,63,0,2049,5513,2049,2453,10,5678,5714,145, 99,58,45,119,104,105,116,101,115,112,97,99,101,63,0,2049,5628,2049,2453,10, 5696,5734,145,99,58,45,118,105,115,105,98,108,101,63,0,2049,5534,2049,2453,10, 5719,5752,145,99,58,45,118,111,119,101,108,63,0,2049,5553,2049,2453,10,5739,5774, 145,99,58,45,99,111,110,115,111,110,97,110,116,63,0,2049,5588,2049,2453,10, 5757,5793,145,99,58,116,111,45,117,112,112,101,114,0,2,2049,5450,25,3,1, 32,18,10,5779,5816,145,99,58,116,111,45,108,111,119,101,114,0,2,2049,5473, 25,3,1,32,17,10,5802,5840,145,99,58,116,111,45,115,116,114,105,110,103, 0,2049,3677,46,0,1,5842,2049,3632,1,37,2049,2105,10,5825,5870,145,99,58,116, 111,103,103,108,101,45,99,97,115,101,0,2,2049,5450,1,5793,1,5816,2049,64, 10,5853,5895,145,99,58,116,111,45,110,117,109,98,101,114,0,2,2049,5513,1793, 5904,1,48,18,10,1,5900,1793,5912,3,1,0,10,1,5908,2049,64,10,5880,5931, 145,115,58,116,111,45,117,112,112,101,114,0,1,5793,2049,4499,10,5917,5950,145, 115,58,116,111,45,108,111,119,101,114,0,1,5816,2049,4499,10,5936,5970,145,115, 58,116,114,105,109,45,108,101,102,116,0,2049,3632,1793,5984,2049,56,1,5628,1, 2537,2049,2117,21,10,1,5974,2049,2222,2049,2934,10,5955,6007,145,115,58,116,114,105, 109,45,114,105,103,104,116,0,2049,3632,2049,3781,2049,5970,2049,3781,10,5991,6026,145, 115,58,116,114,105,109,0,2049,6007,2049,5970,10,6016,6053,133,82,101,119,114,105, 116,101,85,110,100,101,114,115,99,111,114,101,115,0,-1,6031,6061,145,115,117, 98,0,1,95,1793,6068,1,32,10,1,6065,2049,2367,10,6054,6084,145,114,101,119, 114,105,116,101,0,3841,6053,1793,6093,1,6061,2049,4499,10,1,6088,9,10,6073,6107, 145,104,97,110,100,108,101,0,1,3735,8,10,6031,6122,157,115,105,103,105,108, 58,39,0,2049,6084,2049,6107,10,6111,6143,145,115,58,115,112,108,105,116,47,99, 104,97,114,0,2049,2085,2049,3934,772,2049,2085,2049,4604,1,39,2049,2095,10,6127,6175, 145,115,58,115,112,108,105,116,47,115,116,114,105,110,103,0,2049,2085,2049,4406, 2049,2921,772,2049,2085,2049,4604,1,39,2049,2095,10,6157,6204,145,115,58,114,101,112, 108,97,99,101,0,67502597,2049,81,2049,1871,16,1793,6220,2049,6175,4,2049,1871,15,17, 10,1,6212,2049,2095,2049,3841,2049,3882,10,6191,6241,133,83,112,108,105,116,45,79, 110,0,0,6229,6252,145,109,97,116,99,104,63,0,3841,6241,11,10,6242,6269,145, 116,101,114,109,105,110,97,116,101,0,1,0,67502597,2049,2934,16,10,6256,6284,145, 115,116,101,112,0,1,2921,2049,2095,2049,6252,1793,6298,2,2049,107,2049,6269,10,1, 6292,9,10,6191,6316,145,115,58,116,111,107,101,110,105,122,101,0,4097,6241,2049, 3703,2049,1871,1,0,2049,107,1793,6338,2,2049,107,2,1,6284,2049,3900,3,10,1, 6328,2049,2095,2049,1871,67502597,18,2049,2934,67502597,16,10,6302,6361,133,78,101,101,100,108, 101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,6351,6496,133,76,101,110,0,0,6489,6507, 133,84,111,107,101,110,115,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6497,6641,133,84, 80,0,0,6635,6650,145,115,97,118,101,0,2049,3703,3841,6641,1,6507,17,2049,2921, 16,1,6641,2049,3019,10,6642,6673,145,110,101,120,116,0,1793,6679,3841,6496,17,10, 1,6675,2049,2105,10,6665,6693,145,100,111,110,101,63,0,2049,81,2049,2521,10,6302, 6722,145,115,58,116,111,107,101,110,105,122,101,45,111,110,45,115,116,114,105, 110,103,0,1,0,4097,6641,1793,6736,2,1,6361,2049,4678,2049,3882,10,1,6728,1793, 6745,2049,81,4097,6496,10,1,6740,2049,2117,1793,6762,1,6361,2049,6175,2049,6650,2049,6673, 2049,6693,10,1,6751,2049,2245,1,6507,3841,6641,2049,2934,4097,6507,10,6698,6787,145,102, 111,114,45,101,97,99,104,0,4,2049,56,1,17,2049,2095,1793,6803,5,2049,56, 84018692,525572,1542,10,1,6796,2049,2270,771,10,6775,6823,145,115,117,98,115,116,105,116, 117,116,101,0,2049,3548,1,129,18,10,6809,6840,145,101,120,116,114,97,99,116, 0,2049,6823,2049,4678,10,6829,6857,145,116,111,107,101,110,105,122,101,0,2049,6722, 2049,3658,10,6845,6873,145,99,111,109,98,105,110,101,0,2049,6823,2049,3882,2049,3882, 10,6862,6889,145,109,101,114,103,101,0,4,1,6873,2049,6787,772,10,6880,6908,145, 102,105,110,100,45,101,110,100,0,2,2049,81,2049,6823,2049,81,18,67502597,17,10, 6896,6928,145,99,108,101,97,110,0,2049,6908,1,0,4,16,10,6698,6952,145,115, 58,114,101,112,108,97,99,101,45,97,108,108,0,1,3,1793,6967,2049,6840,2049, 6857,2049,6889,2049,6928,2049,3632,10,1,6956,2049,3110,10,6935,6982,133,83,116,114,105, 110,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,6972,7062,145,99,104,101,99,107,45,115,105, 103,110,0,2049,2556,1793,7071,1,45,2049,3367,10,1,7066,9,10,7048,7087,145,110, 45,62,100,105,103,105,116,0,2049,4698,17,15,10,7075,7103,145,99,111,110,118, 101,114,116,0,1793,7117,3841,205,20,4,2049,7087,2049,3367,2,2049,2521,10,1,7105, 2049,2245,3,10,6935,7138,145,110,58,116,111,45,115,116,114,105,110,103,0,1793, 7152,1,6982,2049,3459,2,2049,2886,2049,7103,2049,7062,10,1,7140,2049,3483,1,6982,2049, 3781,10,7123,7169,145,99,104,97,114,0,1,32,1793,7178,1,95,2049,3367,10,1, 7173,2049,2367,1,114,1793,7191,1,13,2049,3367,10,1,7186,2049,2367,1,110,1793,7204, 1,10,2049,3367,10,1,7199,2049,2367,1,116,1793,7217,1,9,2049,3367,10,1,7212, 2049,2367,1,48,1793,7230,1,0,2049,3367,10,1,7225,2049,2367,1,94,1793,7243,1, 27,2049,3367,10,1,7238,2049,2367,2049,3367,10,7161,7258,145,116,121,112,101,0,1, 99,1793,7266,4,2049,3367,10,1,7262,2049,2367,1,115,1793,7280,4,1,3367,2049,3900, 10,1,7274,2049,2367,1,110,1793,7296,4,2049,7138,1,3367,2049,3900,10,1,7288,2049, 2367,3,10,7250,7312,145,104,97,110,100,108,101,0,1,92,1793,7321,2049,56,2049, 7169,10,1,7316,2049,2367,1,37,1793,7334,2049,56,2049,7258,10,1,7329,2049,2367,2049, 3367,10,7123,7353,145,115,58,102,111,114,109,97,116,0,1793,7382,2049,3658,1793,7377, 2049,3459,1793,7372,2049,56,25,2049,7312,1,7363,7,10,1,7363,8,3,10,1,7359, 2049,2105,10,1,7355,2049,3483,10,7341,7398,145,115,58,99,111,110,115,116,0,1, 3703,2049,2095,2049,2011,10,7387,7415,133,86,97,108,117,101,115,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,7405,7451,145,102,114,111,109,0,2049,81,2,1793,7469,1793,7462,1, 7415,4113,10,1,7458,2049,2105,2049,2934,10,1,7456,2049,2270,3,10,7443,7481,145,116, 111,0,2,2049,81,1793,7497,2049,56,1,97,18,2049,2921,1,7415,266001,10,1,7486, 2049,2270,3,10,7387,7514,145,114,101,111,114,100,101,114,0,1,7451,2049,2095,2049, 7481,10,7503,7530,145,99,117,114,114,121,0,2049,1871,1793,7540,4,2049,1728,2049,1751, 10,1,7534,2049,2095,10,7521,7553,145,100,111,101,115,0,2049,1587,4,2049,7530,2049, 1570,2049,159,16,1,145,2049,1646,10,7545,7582,145,100,58,102,111,114,45,101,97, 99,104,0,1,2,1793,7608,6415,2049,2085,1793,7600,1793,7595,2052,10,1,7593,2049,2095, 10,1,7591,2049,2095,1,7586,7,10,1,7586,8,3,10,7568,7628,145,100,58,108, 111,111,107,117,112,45,120,116,0,1,0,4,1793,7653,2049,2085,2049,159,2831,1793, 7646,4,1,2046,2049,2095,10,1,7640,1,15,2049,64,10,1,7633,2049,7582,3,10, 7613,7671,145,97,58,108,101,110,103,116,104,0,15,10,7659,7694,145,97,58,99, 111,117,110,116,101,100,45,114,101,115,117,108,116,115,0,8,2049,1871,1793,7707, 2,2049,107,1,107,2049,2270,10,1,7699,2049,2095,10,7673,7729,145,97,58,102,114, 111,109,45,115,116,114,105,110,103,0,2049,1871,1793,7743,2,2049,81,2049,107,1, 107,2049,3900,10,1,7733,2049,2095,10,7712,7762,145,97,58,102,111,114,45,101,97, 99,104,0,4,2049,56,1,17,2049,2095,1793,7778,5,2049,56,84018692,525572,1542,10,1, 7771,2049,2270,771,10,7748,7793,145,97,58,100,117,112,0,2049,1871,1793,7806,2,15, 2049,107,1,107,2049,7762,10,1,7797,2049,2095,10,7784,7821,145,97,58,99,111,112, 121,0,1,3,1793,7837,4097,3,2,2049,7671,2049,107,1,107,2049,7762,10,1,7825, 2049,3110,10,7811,7857,145,97,58,116,111,45,115,116,114,105,110,103,0,1,3, 1793,7870,2049,7793,1,0,2049,107,2049,2921,10,1,7861,2049,3110,2049,3632,10,7842,7889, 145,97,58,97,112,112,101,110,100,0,2049,2085,1,35,2049,2143,17,2049,1871,1793, 7914,2049,107,1793,7909,1,107,2049,7762,10,1,7904,2049,2143,10,1,7900,2049,2095,10, 7877,7932,145,97,58,112,114,101,112,101,110,100,0,4,2049,7889,10,7919,7946,145, 97,58,99,104,111,112,0,2049,7793,1,-1,2049,3091,2,2049,3034,10,7936,7968,145, 97,58,102,105,108,116,101,114,0,1793,7983,67502597,1,25,2049,2095,4,1,107,1, 15,2049,64,10,1,7970,2049,7530,2049,1871,1793,7998,67502597,15,2049,107,2049,7762,10,1, 7991,2049,2095,2049,1871,67502597,18,2049,2934,67502597,16,10,7956,8026,145,97,58,99,111,110, 116,97,105,110,115,63,0,1,0,4,1793,8038,4,5,67502597,11,6,22,10,1, 8031,2049,7762,772,10,8011,8066,145,97,58,99,111,110,116,97,105,110,115,45,115, 116,114,105,110,103,63,0,1,0,4,1793,8079,4,5,67502597,2049,95,6,22,10, 1,8071,2049,7762,772,10,8044,8094,145,97,58,109,97,112,0,1793,8100,8,2049,107, 10,1,8096,2049,7530,2049,1871,1793,8115,67502597,15,2049,107,2049,7762,10,1,8108,2049,2095, 10,8085,8133,145,97,58,114,101,118,101,114,115,101,0,2049,1871,1793,8167,2049,56, 1793,8145,17,2049,2934,10,1,8141,2049,2105,2,2049,107,1793,8161,2,15,2049,107,2049, 2934,10,1,8154,2049,2270,3,10,1,8137,2049,2095,10,8120,8180,145,97,58,116,104, 0,17,2049,2921,10,8172,8195,145,97,58,102,101,116,99,104,0,2049,8180,15,10, 8184,8210,145,97,58,115,116,111,114,101,0,2049,8180,16,10,8199,8226,145,97,58, 114,101,100,117,99,101,0,1,17,2049,2095,2049,7762,10,8214,8245,145,105,100,101, 110,116,105,102,121,0,1,-1,4,1,0,1793,8276,2049,2344,11,1793,8270,67502597,1, -1,11,1793,8266,772,2,10,1,8263,9,10,1,8257,9,2049,2921,10,1,8252,2049, 8226,3,10,8214,8296,145,97,58,105,110,100,101,120,45,111,102,0,1,3,1793, 8309,1,27,2049,7530,2049,8094,2049,8245,10,1,8300,2049,3110,10,8282,8335,145,97,58, 105,110,100,101,120,45,111,102,45,115,116,114,105,110,103,0,1,3,1793,8348, 1,95,2049,7530,2049,8094,2049,8245,10,1,8339,2049,3110,10,8314,8363,145,97,58,109, 97,107,101,0,2049,7694,2,2,1,3,1793,8374,2049,8133,10,1,8371,2049,3110,4, 2049,7821,10,8353,8387,157,123,0,1,299,2049,157,1,1556,2049,145,1,299,2049,157, 10,8382,8405,157,125,0,1,315,2049,157,1,2095,2049,145,1,1556,2049,145,1,17, 2049,151,1,41,2049,151,1,2934,2049,145,1,315,2049,157,1,8363,2049,145,10,8400, 8449,145,98,111,117,110,100,115,63,0,67502597,2049,7671,67502597,13,10,8438,8463,145,99, 111,112,121,0,2049,56,2049,107,10,8455,8478,145,116,111,45,101,110,100,0,2, 2049,7671,17,2049,2921,10,8400,8495,145,97,58,108,101,102,116,0,2049,8449,1793,8503, 771,1,-1,10,1,8499,2049,2647,2049,1871,67502597,2049,107,1793,8524,1,2921,2049,2095,1, 8463,2049,2270,3,10,1,8514,2049,2095,10,8485,8540,145,97,58,114,105,103,104,116, 0,2049,8449,1793,8548,771,1,-1,10,1,8544,2049,2647,2049,1871,67502597,2049,107,1793,8571, 4,2049,8478,67502597,18,4,1,8463,2049,2270,3,10,1,8559,2049,2095,10,8529,8588,145, 97,58,109,105,100,100,108,101,0,1,2037,2049,2095,4,67502597,2049,8449,1793,8603,771, 3,1,-1,10,1,8598,2049,2647,771,2049,2085,4,18,2049,2921,2049,1871,67502597,2049,107, 1793,8638,772,1793,8628,17,2049,2921,10,1,8624,2049,2095,1,8463,2049,2270,3,10,1, 8621,2049,2095,10,8576,8651,133,70,108,97,103,0,0,8643,8663,145,99,111,109,112, 97,114,101,0,67440386,184946434,10,8652,8676,145,108,101,110,103,116,104,0,659202,10,8666, 8686,145,110,101,120,116,0,17043713,1,1,2577,10,8678,8704,145,110,111,116,45,101, 113,117,97,108,0,50529030,2561,0,10,8691,8716,145,108,111,111,112,0,524549,8686,2049, 8663,18157313,8651,8651,16,420610310,1,1,8716,7,10,8576,8739,145,97,58,101,113,63,0, 1048833,-1,8651,2049,8663,151066369,-1,8704,2049,8676,2049,8716,251724547,8651,10,8730,8764,145,97,58, 45,101,113,63,0,2049,8739,2049,2453,10,8754,8787,145,97,58,98,101,103,105,110, 115,45,119,105,116,104,63,0,1,3,1793,8803,2,2049,7671,1,17,2049,2095,2049, 8495,2049,8739,10,1,8791,2049,3110,10,8769,8824,145,97,58,101,110,100,115,45,119, 105,116,104,63,0,1,3,1793,8840,2,2049,7671,1,17,2049,2095,2049,8540,2049,8739, 10,1,8828,2049,3110,10,8808,8861,145,99,117,114,114,101,110,116,45,108,105,110, 101,0,2049,3548,1,1025,18,10,8845,8883,145,99,111,117,110,116,45,116,111,107, 101,110,115,0,1793,8889,1,32,11,10,1,8885,2049,4457,2049,81,10,8867,8914,145, 112,114,111,99,101,115,115,45,116,111,107,101,110,115,0,1793,8942,1,32,2049, 6143,4,1793,8935,2,2049,81,2049,2537,1,377,1,15,2049,64,10,1,8923,2049,2095, 2049,2921,10,1,8916,2049,2270,2049,377,10,8808,8963,145,115,58,101,118,97,108,117, 97,116,101,0,2049,8861,2049,4678,2049,8861,2,2049,8883,2049,8914,10,8949,8981,133,76, 80,0,0,8975,8991,133,73,110,100,101,120,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,8982,9031,145,110,101,120,116,0,3841,8981,1,8991,17,2049,3019,10, 9023,9047,145,112,114,101,112,0,1,8981,2049,3019,1,0,3841,8981,1,8991,17,16, 10,9039,9068,145,100,111,110,101,0,1,8981,2049,3034,10,8949,9078,145,73,0,3841, 8981,1,8991,17,15,10,9073,9090,145,74,0,3841,8981,1,8991,17,2049,2934,15,10, 9085,9104,145,75,0,3841,8981,1,8991,17,1,2,18,15,10,9099,9131,145,105,110, 100,101,120,101,100,45,116,105,109,101,115,0,2049,9047,4,1793,9147,25,33886721,1, 2053,1542,2049,9031,1,9136,7,10,1,9136,8,3,2049,9068,10,9114,9162,157,104,111, 111,107,0,2049,3677,108,105,106,117,46,46,46,46,0,1,9164,2049,424,2049,1871, 2049,2921,2049,107,10,9154,9196,145,115,101,116,45,104,111,111,107,0,2049,2921,16, 10,9184,9210,145,117,110,104,111,111,107,0,2049,2921,2,2049,2921,4,16,10,9200, 9229,145,100,101,99,105,109,97,108,0,1,10,4097,205,10,9218,9244,145,98,105, 110,97,114,121,0,1,2,4097,205,10,9234,9258,145,111,99,116,97,108,0,1, 8,4097,205,10,9249,9270,145,104,101,120,0,1,16,4097,205,10,9263,9291,145,105, 111,58,101,110,117,109,101,114,97,116,101,0,27,10,9275,9305,145,105,111,58, 113,117,101,114,121,0,28,10,9293,9320,145,105,111,58,105,110,118,111,107,101, 0,29,10,9307,9337,145,105,111,58,115,99,97,110,45,102,111,114,0,1,-1, 4,2049,9291,1793,9368,2049,9078,2049,9305,772,67502597,11,1793,9364,1793,9359,3,2049,9078,10, 1,9355,2049,2095,10,1,9353,9,10,1,9344,2049,9131,3,10,9322,9383,145,99,58, 112,117,116,0,1793,9385,1,0,2049,9320,10,9374,9396,145,110,108,0,1,10,2049, 9383,10,9390,9407,145,115,112,0,1,32,2049,9383,10,9401,9419,145,116,97,98,0, 1,9,2049,9383,10,9412,9433,145,115,58,112,117,116,0,1,9383,2049,3900,10,9424, 9447,145,110,58,112,117,116,0,2049,7138,2049,9433,10,9438,9461,145,114,101,115,101, 116,0,2049,1556,25,771,1,9461,7,10,9452,9483,145,100,117,109,112,45,115,116, 97,99,107,0,2049,1556,25,134284547,9483,134283782,9447,2049,9407,10,9469,9501,145,70,82,69, 69,0,2049,3548,1,1025,18,2049,1871,18,10,9493,9518,145,101,111,108,63,0,1793, 9524,1,13,11,10,1,9520,1793,9532,1,10,11,10,1,9528,1793,9540,1,32,11, 10,1,9536,2049,2154,22,22,10,9510,9557,145,118,97,108,105,100,63,0,2,2049, 81,2049,2537,10,9547,9570,145,98,115,63,0,2,1793,9577,1,8,11,10,1,9573, 1793,9585,1,127,11,10,1,9581,2049,2117,22,10,9563,9603,145,99,104,101,99,107, 45,98,115,0,2049,9570,1793,9613,2049,3391,2049,3391,771,10,1,9607,9,10,9493,9626, 145,99,58,103,101,116,0,1793,9628,1,1,2049,9337,2049,9320,10,9617,9644,145,115, 58,103,101,116,0,1793,9672,1,7,15,2049,3459,1793,9663,2049,9626,2,2049,3367,2049, 9603,2049,9518,10,1,9653,2049,2245,2049,3333,2049,3754,10,1,9646,2049,3483,10,9635,9687, 145,108,105,115,116,101,110,0,2049,9644,2049,9557,1,377,1,15,2049,64,1,9687, 7,10,0 }; patch(l, 0); run(); data.display(); return 0; }