diff options
author | David Turner | 2012-10-13 07:56:27 -0700 |
---|---|---|
committer | David Turner | 2012-10-13 07:56:27 -0700 |
commit | 8d6a794f7e5d37d716dff4adcd39ca77e3ffc45f (patch) | |
tree | 642423dd9238239eaaaebc04bc2a1e8b63d9540b | |
parent | 64389c0643ee03f4ddda16d7bfe1a841bf0b2735 (diff) | |
parent | 151b7beb47ec4b964862d6779bd48e3a33482bbd (diff) | |
download | scummvm-rg350-8d6a794f7e5d37d716dff4adcd39ca77e3ffc45f.tar.gz scummvm-rg350-8d6a794f7e5d37d716dff4adcd39ca77e3ffc45f.tar.bz2 scummvm-rg350-8d6a794f7e5d37d716dff4adcd39ca77e3ffc45f.zip |
Merge pull request #284 from digitall/teenagentRefactor
Refactoring Work on Teenagent Engine
35 files changed, 21863 insertions, 3512 deletions
diff --git a/devtools/create_teenagent/create_teenagent.cpp b/devtools/create_teenagent/create_teenagent.cpp index fc2ba4da0e..79c61900f3 100644 --- a/devtools/create_teenagent/create_teenagent.cpp +++ b/devtools/create_teenagent/create_teenagent.cpp @@ -32,78 +32,110 @@ #include <stdio.h> #include <stdlib.h> #include <assert.h> -#include "md5.h" +#include "util.h" +#include "static_tables.h" -static void print_hex(FILE * f, const uint8 * data, size_t len) { - for (size_t i = 0; i < len; ++i) { - fprintf(f, "%02x", data[i]); - } -} - -static void extract(FILE * fout, FILE *fin, size_t pos, size_t size, const char *what) { - char buf[0x10000]; - assert(size < sizeof(buf)); +int main(int argc, char *argv[]) { + const char *dat_name = "teenagent.dat"; - if (fseek(fin, pos, SEEK_SET) != 0) { - perror(what); + FILE *fout = fopen(dat_name, "wb"); + if (fout == NULL) { + perror("opening output file"); exit(1); } - if (fread(buf, size, 1, fin) != 1) { - perror(what); + if (fwrite(cseg, CSEG_SIZE, 1, fout) != 1) { + perror("Writing code segment"); exit(1); } - if (fwrite(buf, size, 1, fout) != 1) { - perror(what); + if (fwrite(dsegStartBlock, DSEG_STARTBLK_SIZE, 1, fout) != 1) { + perror("Writing data segment start block"); exit(1); } -} -int main(int argc, char *argv[]) { - if (argc < 2) { - fprintf(stderr, "usage: %s: Teenagnt.exe (unpacked one)\n", argv[0]); - exit(1); + // Write out message string block + for (uint i = 0; i < (sizeof(messages)/sizeof(char*)); i++) { + if (i == 0) { + // Write out reject message pointer block + uint16 off = DSEG_STARTBLK_SIZE + (4 * 2); + writeUint16LE(fout, off); + off += strlen(messages[0]) + 2; + writeUint16LE(fout, off); + off += strlen(messages[1]) + 2; + writeUint16LE(fout, off); + off += strlen(messages[2]) + 2; + writeUint16LE(fout, off); + } + + if (i == 327) { + // Write out book color pointer block + uint16 off = DSEG_STARTBLK_SIZE + (4 * 2); + for (uint k = 0; k < 327; k++) + off += strlen(messages[k]) + 2; + off += (6 * 2); + writeUint16LE(fout, off); + off += strlen(messages[327]) + 2; + writeUint16LE(fout, off); + off += strlen(messages[328]) + 2; + writeUint16LE(fout, off); + off += strlen(messages[329]) + 2; + writeUint16LE(fout, off); + off += strlen(messages[330]) + 2; + writeUint16LE(fout, off); + off += strlen(messages[331]) + 2; + writeUint16LE(fout, off); + } + for (uint j = 0; j < strlen(messages[i]); j++) { + if (messages[i][j] == '\n') + writeByte(fout, '\0'); + else + writeByte(fout, messages[i][j]); + } + writeByte(fout, '\0'); + writeByte(fout, '\0'); } - const char * fname = argv[1]; - uint8 digest[16]; - if (!md5_file(fname, digest, 0)) { - fprintf(stderr, "cannot calculate md5 for %s", fname); + if (fwrite(dsegEndBlock, DSEG_ENDBLK_SIZE, 1, fout) != 1) { + perror("Writing data segment end block"); exit(1); } - const uint8 ethalon[16] = { - 0x51, 0xb6, 0xd6, 0x47, 0x21, 0xf7, 0xc4, 0xb4, - 0x98, 0xbf, 0xc0, 0xf3, 0x23, 0x01, 0x3e, 0x36, - }; - - if (memcmp(digest, ethalon, 16) != 0) { - fprintf(stderr, "cannot extract data, your md5: "); - print_hex(stderr, digest, 16); - fprintf(stderr, ", need md5: "); - print_hex(stderr, ethalon, 16); - fprintf(stderr, ", sorry\n"); - exit(1); - } - FILE *fin = fopen(fname, "rb"); - if (fin == NULL) { - perror("opening input file"); - exit(1); - } - - const char * dat_name = "teenagent.dat"; - FILE *fout = fopen(dat_name, "wb"); - if (fout == NULL) { - perror("opening output file"); - exit(1); + // Write out dialog string block + static const char nulls[6] = "\0\0\0\0\0"; + for (uint i = 0; i < (sizeof(dialogs)/sizeof(char**)); i++) { + //printf("Writing Dialog #%d\n", i); + bool dialogEnd = false; + uint j = 0; + while (!dialogEnd) { + uint nullCount = 0; + if (strcmp(dialogs[i][j], NEW_LINE) == 0) { + nullCount = 1; + } else if (strcmp(dialogs[i][j], DISPLAY_MESSAGE) == 0) { + nullCount = 2; + } else if (strcmp(dialogs[i][j], CHANGE_CHARACTER) == 0) { + nullCount = 3; + } else if (strcmp(dialogs[i][j], END_DIALOG) == 0) { + nullCount = 4; + dialogEnd = true; + } else { // Deals with normal dialogue and ANIM_WAIT cases + if (fwrite(dialogs[i][j], 1, strlen(dialogs[i][j]), fout) != strlen(dialogs[i][j])) { + perror("Writing dialog string"); + exit(1); + } + } + + if (nullCount != 0 && nullCount < 5) { + if (fwrite(nulls, 1, nullCount, fout) != nullCount) { + perror("Writing dialog string nulls"); + exit(1); + } + } + + j++; + } } - //0x0200, 0xb5b0, 0x1c890 - extract(fout, fin, 0x00200, 0xb3b0, "extracting code segment"); - extract(fout, fin, 0x0b5b0, 0xe790, "extracting data segment"); - extract(fout, fin, 0x1c890, 0x8be2, "extracting second data segment"); - fclose(fin); fclose(fout); return 0; diff --git a/devtools/create_teenagent/md5.cpp b/devtools/create_teenagent/md5.cpp deleted file mode 100644 index 9f90122981..0000000000 --- a/devtools/create_teenagent/md5.cpp +++ /dev/null @@ -1,264 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -// Disable symbol overrides so that we can use system headers. -#define FORBIDDEN_SYMBOL_ALLOW_ALL - -#include "md5.h" - -#define GET_UINT32(n, b, i) (n) = READ_LE_UINT32(b + i) -#define PUT_UINT32(n, b, i) WRITE_LE_UINT32(b + i, n) - -void md5_starts(md5_context *ctx) { - ctx->total[0] = 0; - ctx->total[1] = 0; - - ctx->state[0] = 0x67452301; - ctx->state[1] = 0xEFCDAB89; - ctx->state[2] = 0x98BADCFE; - ctx->state[3] = 0x10325476; -} - -static void md5_process(md5_context *ctx, const uint8 data[64]) { - uint32 X[16], A, B, C, D; - - GET_UINT32(X[0], data, 0); - GET_UINT32(X[1], data, 4); - GET_UINT32(X[2], data, 8); - GET_UINT32(X[3], data, 12); - GET_UINT32(X[4], data, 16); - GET_UINT32(X[5], data, 20); - GET_UINT32(X[6], data, 24); - GET_UINT32(X[7], data, 28); - GET_UINT32(X[8], data, 32); - GET_UINT32(X[9], data, 36); - GET_UINT32(X[10], data, 40); - GET_UINT32(X[11], data, 44); - GET_UINT32(X[12], data, 48); - GET_UINT32(X[13], data, 52); - GET_UINT32(X[14], data, 56); - GET_UINT32(X[15], data, 60); - -#define S(x, n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n))) - -#define P(a, b, c, d, k, s, t) \ -{ \ - a += F(b,c,d) + X[k] + t; a = S(a,s) + b; \ -} - - A = ctx->state[0]; - B = ctx->state[1]; - C = ctx->state[2]; - D = ctx->state[3]; - -#define F(x, y, z) (z ^ (x & (y ^ z))) - - P(A, B, C, D, 0, 7, 0xD76AA478); - P(D, A, B, C, 1, 12, 0xE8C7B756); - P(C, D, A, B, 2, 17, 0x242070DB); - P(B, C, D, A, 3, 22, 0xC1BDCEEE); - P(A, B, C, D, 4, 7, 0xF57C0FAF); - P(D, A, B, C, 5, 12, 0x4787C62A); - P(C, D, A, B, 6, 17, 0xA8304613); - P(B, C, D, A, 7, 22, 0xFD469501); - P(A, B, C, D, 8, 7, 0x698098D8); - P(D, A, B, C, 9, 12, 0x8B44F7AF); - P(C, D, A, B, 10, 17, 0xFFFF5BB1); - P(B, C, D, A, 11, 22, 0x895CD7BE); - P(A, B, C, D, 12, 7, 0x6B901122); - P(D, A, B, C, 13, 12, 0xFD987193); - P(C, D, A, B, 14, 17, 0xA679438E); - P(B, C, D, A, 15, 22, 0x49B40821); - -#undef F - -#define F(x, y, z) (y ^ (z & (x ^ y))) - - P(A, B, C, D, 1, 5, 0xF61E2562); - P(D, A, B, C, 6, 9, 0xC040B340); - P(C, D, A, B, 11, 14, 0x265E5A51); - P(B, C, D, A, 0, 20, 0xE9B6C7AA); - P(A, B, C, D, 5, 5, 0xD62F105D); - P(D, A, B, C, 10, 9, 0x02441453); - P(C, D, A, B, 15, 14, 0xD8A1E681); - P(B, C, D, A, 4, 20, 0xE7D3FBC8); - P(A, B, C, D, 9, 5, 0x21E1CDE6); - P(D, A, B, C, 14, 9, 0xC33707D6); - P(C, D, A, B, 3, 14, 0xF4D50D87); - P(B, C, D, A, 8, 20, 0x455A14ED); - P(A, B, C, D, 13, 5, 0xA9E3E905); - P(D, A, B, C, 2, 9, 0xFCEFA3F8); - P(C, D, A, B, 7, 14, 0x676F02D9); - P(B, C, D, A, 12, 20, 0x8D2A4C8A); - -#undef F - -#define F(x, y, z) (x ^ y ^ z) - - P(A, B, C, D, 5, 4, 0xFFFA3942); - P(D, A, B, C, 8, 11, 0x8771F681); - P(C, D, A, B, 11, 16, 0x6D9D6122); - P(B, C, D, A, 14, 23, 0xFDE5380C); - P(A, B, C, D, 1, 4, 0xA4BEEA44); - P(D, A, B, C, 4, 11, 0x4BDECFA9); - P(C, D, A, B, 7, 16, 0xF6BB4B60); - P(B, C, D, A, 10, 23, 0xBEBFBC70); - P(A, B, C, D, 13, 4, 0x289B7EC6); - P(D, A, B, C, 0, 11, 0xEAA127FA); - P(C, D, A, B, 3, 16, 0xD4EF3085); - P(B, C, D, A, 6, 23, 0x04881D05); - P(A, B, C, D, 9, 4, 0xD9D4D039); - P(D, A, B, C, 12, 11, 0xE6DB99E5); - P(C, D, A, B, 15, 16, 0x1FA27CF8); - P(B, C, D, A, 2, 23, 0xC4AC5665); - -#undef F - -#define F(x, y, z) (y ^ (x | ~z)) - - P(A, B, C, D, 0, 6, 0xF4292244); - P(D, A, B, C, 7, 10, 0x432AFF97); - P(C, D, A, B, 14, 15, 0xAB9423A7); - P(B, C, D, A, 5, 21, 0xFC93A039); - P(A, B, C, D, 12, 6, 0x655B59C3); - P(D, A, B, C, 3, 10, 0x8F0CCC92); - P(C, D, A, B, 10, 15, 0xFFEFF47D); - P(B, C, D, A, 1, 21, 0x85845DD1); - P(A, B, C, D, 8, 6, 0x6FA87E4F); - P(D, A, B, C, 15, 10, 0xFE2CE6E0); - P(C, D, A, B, 6, 15, 0xA3014314); - P(B, C, D, A, 13, 21, 0x4E0811A1); - P(A, B, C, D, 4, 6, 0xF7537E82); - P(D, A, B, C, 11, 10, 0xBD3AF235); - P(C, D, A, B, 2, 15, 0x2AD7D2BB); - P(B, C, D, A, 9, 21, 0xEB86D391); - -#undef F - - ctx->state[0] += A; - ctx->state[1] += B; - ctx->state[2] += C; - ctx->state[3] += D; -} - -void md5_update(md5_context *ctx, const uint8 *input, uint32 length) { - uint32 left, fill; - - if (!length) - return; - - left = ctx->total[0] & 0x3F; - fill = 64 - left; - - ctx->total[0] += length; - ctx->total[0] &= 0xFFFFFFFF; - - if (ctx->total[0] < length) - ctx->total[1]++; - - if (left && length >= fill) { - memcpy((void *)(ctx->buffer + left), (const void *)input, fill); - md5_process(ctx, ctx->buffer); - length -= fill; - input += fill; - left = 0; - } - - while (length >= 64) { - md5_process(ctx, input); - length -= 64; - input += 64; - } - - if (length) { - memcpy((void *)(ctx->buffer + left), (const void *)input, length); - } -} - -static const uint8 md5_padding[64] = { - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - -void md5_finish(md5_context *ctx, uint8 digest[16]) { - uint32 last, padn; - uint32 high, low; - uint8 msglen[8]; - - high = (ctx->total[0] >> 29) | (ctx->total[1] << 3); - low = (ctx->total[0] << 3); - - PUT_UINT32(low, msglen, 0); - PUT_UINT32(high, msglen, 4); - - last = ctx->total[0] & 0x3F; - padn = (last < 56) ? (56 - last) : (120 - last); - - md5_update(ctx, md5_padding, padn); - md5_update(ctx, msglen, 8); - - PUT_UINT32(ctx->state[0], digest, 0); - PUT_UINT32(ctx->state[1], digest, 4); - PUT_UINT32(ctx->state[2], digest, 8); - PUT_UINT32(ctx->state[3], digest, 12); -} - -bool md5_file(const char *name, uint8 digest[16], uint32 length) { - FILE *f; - - f = fopen(name, "rb"); - if (f == NULL) { - printf("md5_file couldn't open '%s'\n", name); - return false; - } - - md5_context ctx; - uint32 i; - unsigned char buf[1000]; - bool restricted = (length != 0); - int readlen; - - if (!restricted || sizeof(buf) <= length) - readlen = sizeof(buf); - else - readlen = length; - - md5_starts(&ctx); - - - while ((i = (uint32)fread(buf, 1, readlen, f)) > 0) { - md5_update(&ctx, buf, i); - - length -= i; - if (restricted && length == 0) - break; - - if (restricted && sizeof(buf) > length) - readlen = length; - } - - md5_finish(&ctx, digest); - fclose(f); - return true; -} diff --git a/devtools/create_teenagent/md5.h b/devtools/create_teenagent/md5.h deleted file mode 100644 index 3746521002..0000000000 --- a/devtools/create_teenagent/md5.h +++ /dev/null @@ -1,40 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ - -#ifndef COMMON_MD5_H -#define COMMON_MD5_H - -#include "util.h" - -typedef struct { - uint32 total[2]; - uint32 state[4]; - uint8 buffer[64]; -} md5_context; - -void md5_starts(md5_context *ctx); -void md5_update(md5_context *ctx, const uint8 *input, uint32 length); -void md5_finish(md5_context *ctx, uint8 digest[16]); - -bool md5_file(const char *name, uint8 digest[16], uint32 length = 0); - -#endif diff --git a/devtools/create_teenagent/module.mk b/devtools/create_teenagent/module.mk index a9d102addb..7d01a2ba85 100644 --- a/devtools/create_teenagent/module.mk +++ b/devtools/create_teenagent/module.mk @@ -3,7 +3,7 @@ MODULE := devtools/create_teenagent MODULE_OBJS := \ create_teenagent.o \ - md5.o + util.o # Set the name of the executable TOOL_EXECUTABLE := create_teenagent diff --git a/devtools/create_teenagent/static_tables.h b/devtools/create_teenagent/static_tables.h new file mode 100644 index 0000000000..6e7fdfe91c --- /dev/null +++ b/devtools/create_teenagent/static_tables.h @@ -0,0 +1,16317 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef STATIC_TABLES_H +#define STATIC_TABLES_H + +// Static data tables for Teenagent engine + +// Unpacked Executable MD5sum - 51b6d64721f7c4b498bfc0f323013e36 + +// Code Segment +// starts at offset 0x0200 in original executable +#define CSEG_SIZE 46000 // 0xb3b0 + +const static uint8 cseg[CSEG_SIZE] = { + 0xb8, 0x3b, 0x0b, 0x8e, 0xd8, 0x8e, 0xc0, 0xe9, + 0xd2, 0x00, 0x9c, 0xfa, 0x60, 0x1e, 0x06, 0xb8, + 0x3b, 0x0b, 0x8e, 0xd8, 0xeb, 0x0e, 0xa0, 0x48, + 0x32, 0xb4, 0x03, 0xff, 0x1e, 0x4a, 0x32, 0xb8, + 0x3b, 0x0b, 0x8e, 0xd8, 0x8e, 0xc0, 0xbb, 0x86, + 0x32, 0xff, 0x07, 0x75, 0x03, 0xff, 0x47, 0x02, + 0x33, 0xc0, 0xe8, 0xce, 0xa4, 0xff, 0x0e, 0x7f, + 0x32, 0x75, 0x14, 0xa1, 0x81, 0x32, 0xa3, 0x7f, + 0x32, 0x33, 0xc0, 0x8e, 0xd8, 0xbb, 0x6c, 0x04, + 0xff, 0x07, 0x75, 0x03, 0xff, 0x47, 0x02, 0xb0, + 0x20, 0xe6, 0x20, 0x07, 0x1f, 0x61, 0xfb, 0x9d, + 0xcf, 0x9c, 0xfa, 0x60, 0x1e, 0x06, 0xb8, 0x3b, + 0x0b, 0x8e, 0xd8, 0xeb, 0x15, 0x80, 0x3e, 0x47, + 0x32, 0x00, 0x74, 0x0e, 0xa0, 0x48, 0x32, 0xb4, + 0x03, 0xff, 0x1e, 0x4a, 0x32, 0xb8, 0x3b, 0x0b, + 0x8e, 0xd8, 0x8e, 0xc0, 0xfe, 0x0e, 0x83, 0x32, + 0x75, 0x14, 0xc6, 0x06, 0x83, 0x32, 0x6e, 0xbb, + 0x86, 0x32, 0xff, 0x07, 0x75, 0x03, 0xff, 0x47, + 0x02, 0x33, 0xc0, 0xe8, 0x6d, 0xa4, 0xff, 0x0e, + 0x7f, 0x32, 0x75, 0x14, 0xa1, 0x81, 0x32, 0xa3, + 0x7f, 0x32, 0x33, 0xc0, 0x8e, 0xd8, 0xbb, 0x6c, + 0x04, 0xff, 0x07, 0x75, 0x03, 0xff, 0x47, 0x02, + 0xb0, 0x20, 0xe6, 0x20, 0x07, 0x1f, 0x61, 0xfb, + 0x9d, 0xcf, 0x9c, 0x50, 0xe4, 0x60, 0x2e, 0xa2, + 0xd7, 0x00, 0xe4, 0x61, 0x8a, 0xe0, 0x0c, 0x80, + 0xe6, 0x61, 0x86, 0xe0, 0xe6, 0x61, 0xeb, 0x00, + 0xb0, 0x20, 0xe6, 0x20, 0x58, 0x9d, 0xcf, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb4, 0x2c, 0xcd, 0x21, + 0xbb, 0x5f, 0xb1, 0x2e, 0x89, 0x0f, 0x2e, 0x89, + 0x57, 0x02, 0xe8, 0xfc, 0xa3, 0xe8, 0xb1, 0xb0, + 0xe8, 0xce, 0xaf, 0xe8, 0xee, 0xb0, 0xe8, 0x18, + 0xa8, 0xe8, 0x4d, 0xb2, 0xe8, 0xde, 0xa4, 0xb9, + 0x01, 0x00, 0xe8, 0x46, 0xb0, 0xfa, 0xb8, 0x88, + 0xc0, 0xbb, 0x14, 0x00, 0x2e, 0x89, 0x07, 0xbb, + 0x63, 0x00, 0x2e, 0x89, 0x07, 0xfb, 0xe8, 0x38, + 0x0a, 0xe8, 0x49, 0x0a, 0xe8, 0x6f, 0x0a, 0xe8, + 0x79, 0x0a, 0xe8, 0x9a, 0x0a, 0xe8, 0xb5, 0x0a, + 0xb8, 0x3b, 0x0b, 0xa3, 0xac, 0x00, 0xb8, 0x3a, + 0x01, 0xa3, 0xaa, 0x00, 0xb9, 0x07, 0x00, 0xba, + 0x54, 0x00, 0xe8, 0x33, 0xae, 0xa1, 0xbf, 0x32, + 0xa3, 0xac, 0x00, 0x33, 0xc0, 0xa3, 0xaa, 0x00, + 0xb9, 0x01, 0x00, 0xba, 0x54, 0x00, 0xe8, 0x1f, + 0xae, 0xe8, 0x82, 0x05, 0xe8, 0xf5, 0x00, 0xb9, + 0x04, 0x00, 0xe8, 0xee, 0xaf, 0xb8, 0x88, 0x00, + 0xbb, 0x99, 0x00, 0xbf, 0x8b, 0x00, 0xbe, 0x9c, + 0x00, 0xb5, 0x03, 0xb1, 0x0b, 0xc7, 0x06, 0xf3, + 0xb4, 0x0a, 0x00, 0xe8, 0x6d, 0xaa, 0xe8, 0x86, + 0xa4, 0xe8, 0x04, 0x07, 0xe8, 0xa0, 0x1e, 0xe8, + 0x03, 0x2a, 0xe8, 0x94, 0x33, 0xe8, 0xc8, 0x34, + 0xe8, 0x22, 0x33, 0xe8, 0x57, 0x33, 0xe8, 0xe5, + 0x1d, 0xe8, 0x12, 0x27, 0xe8, 0x0d, 0xa5, 0xb3, + 0x01, 0x72, 0x07, 0xe8, 0x35, 0xa5, 0xb3, 0x00, + 0x73, 0xd7, 0xe8, 0xf6, 0xa1, 0xeb, 0xd2, 0xb8, + 0x03, 0x00, 0xcd, 0x10, 0xb4, 0x02, 0xff, 0x1e, + 0x4a, 0x32, 0xb8, 0x3b, 0x0b, 0x8e, 0xd8, 0x8e, + 0xc0, 0xe9, 0xd8, 0xb1, 0xe8, 0x86, 0x9a, 0xe8, + 0x77, 0x00, 0xe8, 0x8f, 0x9a, 0xbb, 0x88, 0xe4, + 0x33, 0xf6, 0x33, 0xff, 0x06, 0xa1, 0xb1, 0x32, + 0x8e, 0xc0, 0x53, 0xe8, 0x26, 0x00, 0xe8, 0x19, + 0x00, 0x5b, 0x53, 0xe8, 0xca, 0xa2, 0xbe, 0x40, + 0x01, 0x2b, 0xf0, 0xd1, 0xee, 0x5b, 0xe8, 0x6c, + 0xa2, 0x43, 0x8a, 0x07, 0x0a, 0xc0, 0x75, 0xe2, + 0x07, 0xc3, 0xa1, 0xb1, 0x32, 0xb9, 0xe0, 0x06, + 0xe8, 0x05, 0xab, 0xc3, 0x1e, 0x06, 0x8c, 0xc0, + 0x8e, 0xd8, 0xb8, 0x00, 0xa0, 0x8e, 0xc0, 0x33, + 0xf6, 0xbf, 0xbf, 0xf8, 0xb9, 0x0b, 0x00, 0x51, + 0xb9, 0xa0, 0x00, 0x57, 0xf3, 0xa5, 0x56, 0xe8, + 0x08, 0x00, 0x5e, 0x5f, 0x59, 0xe2, 0xf0, 0x07, + 0x1f, 0xc3, 0xe8, 0xeb, 0xa4, 0xe8, 0xe8, 0xa4, + 0x1e, 0x8c, 0xc0, 0x8e, 0xd8, 0x33, 0xff, 0xbe, + 0x40, 0x01, 0xb9, 0x00, 0x7d, 0xf3, 0xa5, 0x1f, + 0xc3, 0xb8, 0x00, 0xa0, 0xb9, 0x00, 0x7d, 0xe8, + 0xbe, 0xaa, 0xa1, 0xb1, 0x32, 0xb9, 0x00, 0x7d, + 0xe8, 0xb5, 0xaa, 0xc3, 0xe8, 0x7c, 0x03, 0xe8, + 0x6c, 0x03, 0xc7, 0x06, 0xf3, 0xb4, 0x29, 0x00, + 0xb8, 0x8b, 0x00, 0xbb, 0x9c, 0x00, 0x8b, 0xf8, + 0x8b, 0xf3, 0xb5, 0x03, 0xb1, 0x0b, 0xe8, 0x8c, + 0xa9, 0xe8, 0xfc, 0xa9, 0xe8, 0x5c, 0x03, 0xe8, + 0x4c, 0x03, 0xe8, 0x97, 0xaa, 0xe8, 0x46, 0x03, + 0xb8, 0xc8, 0x00, 0xe8, 0xbc, 0x1c, 0xe8, 0x3d, + 0x03, 0xb9, 0x29, 0x00, 0xb0, 0x0c, 0xb4, 0x04, + 0xe8, 0x72, 0xa7, 0xbb, 0x47, 0x33, 0xc7, 0x47, + 0x02, 0x90, 0x03, 0xb0, 0x02, 0xe8, 0xca, 0x17, + 0xe8, 0x23, 0x03, 0xe8, 0x4a, 0x3d, 0xc6, 0x07, + 0x6c, 0xe8, 0xfe, 0xab, 0xb9, 0x3e, 0x00, 0xb0, + 0x08, 0xb4, 0x04, 0xe8, 0x4f, 0xa7, 0xb9, 0x3a, + 0x00, 0xb0, 0x28, 0xb4, 0x0a, 0xe8, 0x4e, 0xa7, + 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x02, 0x91, 0x03, + 0xb0, 0x02, 0xe8, 0x9d, 0x17, 0xe8, 0xf6, 0x02, + 0xe8, 0x1d, 0x3d, 0xc6, 0x47, 0x01, 0x6d, 0xe8, + 0xd0, 0xab, 0xc6, 0x06, 0x45, 0x33, 0xe7, 0xc6, + 0x06, 0x46, 0x33, 0xd7, 0xb0, 0x02, 0xb4, 0x01, + 0xbe, 0x92, 0x03, 0xbf, 0x93, 0x03, 0xbb, 0x8e, + 0x74, 0xe8, 0x82, 0x11, 0xe8, 0xcf, 0x02, 0xbb, + 0xc2, 0xe3, 0xe8, 0xe9, 0x02, 0xbb, 0x47, 0x33, + 0xc7, 0x47, 0x02, 0x94, 0x03, 0xc7, 0x06, 0xf3, + 0xb4, 0x2a, 0x00, 0xe8, 0x06, 0xaa, 0xe8, 0xb5, + 0x02, 0xb9, 0x0f, 0x00, 0xb0, 0x14, 0xb4, 0x03, + 0xe8, 0xea, 0xa6, 0xbb, 0x47, 0x33, 0xc7, 0x47, + 0x02, 0x94, 0x03, 0xb0, 0x02, 0xe8, 0x42, 0x17, + 0xe8, 0x9b, 0x02, 0xb9, 0x28, 0x00, 0xb0, 0x12, + 0xb4, 0x0e, 0xe8, 0xd0, 0xa6, 0xb0, 0x16, 0xe8, + 0xd4, 0xa6, 0xb0, 0x1b, 0xe8, 0xd6, 0xa6, 0xb0, + 0x1d, 0xe8, 0xd8, 0xa6, 0xb0, 0x1f, 0xe8, 0xda, + 0xa6, 0xb0, 0x21, 0xe8, 0xe3, 0xa6, 0xb0, 0x23, + 0xe8, 0xe5, 0xa6, 0xb0, 0x25, 0xe8, 0xe7, 0xa6, + 0xb9, 0x1d, 0x00, 0xb0, 0x2c, 0xe8, 0xe6, 0xa6, + 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x96, 0x03, 0xc7, + 0x47, 0x02, 0x95, 0x03, 0xb0, 0x01, 0xe8, 0xf9, + 0x16, 0xe8, 0x52, 0x02, 0xbb, 0xe6, 0xe3, 0xe8, + 0x6c, 0x02, 0xb9, 0x03, 0x00, 0xe8, 0xd3, 0xad, + 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x98, 0x03, 0xc7, + 0x47, 0x02, 0x9c, 0x03, 0xc7, 0x06, 0xf3, 0xb4, + 0x28, 0x00, 0xe8, 0x7f, 0xa9, 0xe8, 0x2e, 0x02, + 0xc6, 0x06, 0x45, 0x33, 0xe7, 0xc6, 0x06, 0x46, + 0x33, 0xeb, 0xb0, 0x01, 0xb4, 0x02, 0xbe, 0x98, + 0x03, 0xbf, 0x9c, 0x03, 0xbb, 0x0d, 0x75, 0xe8, + 0xc4, 0x10, 0xe8, 0x11, 0x02, 0xb9, 0x1a, 0x00, + 0xb0, 0x32, 0xb4, 0x0a, 0xe8, 0x46, 0xa6, 0xbb, + 0x47, 0x33, 0xc7, 0x07, 0x9d, 0x03, 0xc7, 0x47, + 0x02, 0x9e, 0x03, 0xb0, 0x01, 0xe8, 0x9a, 0x16, + 0xe8, 0xf3, 0x01, 0xc6, 0x06, 0x45, 0x33, 0xeb, + 0xb0, 0x02, 0xb4, 0x01, 0xbe, 0x9f, 0x03, 0xbf, + 0x98, 0x03, 0xbb, 0xa6, 0x78, 0xe8, 0x8e, 0x10, + 0xe8, 0xdb, 0x01, 0xbb, 0xff, 0xe3, 0xe8, 0xf5, + 0x01, 0xb9, 0x0b, 0x00, 0xe8, 0x5c, 0xad, 0xc7, + 0x06, 0xf3, 0xb4, 0x27, 0x00, 0xe8, 0x14, 0xa9, + 0xe8, 0xc3, 0x01, 0xb8, 0xc8, 0x00, 0xe8, 0x39, + 0x1b, 0xe8, 0xba, 0x01, 0xb9, 0x51, 0x00, 0xb0, + 0x02, 0xb4, 0x0e, 0xe8, 0xef, 0xa5, 0xb0, 0x05, + 0xb4, 0x0b, 0xe8, 0xf1, 0xa5, 0xb0, 0x08, 0xb4, + 0x08, 0xe8, 0xf1, 0xa5, 0xb0, 0x0b, 0xb4, 0x06, + 0xe8, 0xf1, 0xa5, 0xb0, 0x0e, 0xb4, 0x05, 0xe8, + 0xf1, 0xa5, 0xb0, 0x10, 0xb4, 0x03, 0xe8, 0xf1, + 0xa5, 0xb0, 0x10, 0xe8, 0xf3, 0xa5, 0xb0, 0x12, + 0xe8, 0xf5, 0xa5, 0xb0, 0x14, 0xe8, 0xf7, 0xa5, + 0xb0, 0x15, 0xe8, 0xf9, 0xa5, 0xbb, 0x47, 0x33, + 0xc7, 0x47, 0x02, 0xa0, 0x03, 0xb0, 0x02, 0xe8, + 0x10, 0x16, 0xe8, 0x49, 0xa6, 0xe8, 0x66, 0x01, + 0xe8, 0x8d, 0x3b, 0xc6, 0x07, 0x70, 0xe8, 0x41, + 0xaa, 0xe8, 0xf1, 0x1a, 0xe8, 0x57, 0x01, 0xc6, + 0x06, 0x45, 0x33, 0xd1, 0xb0, 0x01, 0xbe, 0xa1, + 0x03, 0xbb, 0xe1, 0x78, 0xe8, 0x80, 0x11, 0xe8, + 0x44, 0x01, 0xe8, 0xd8, 0x1a, 0xe8, 0x3e, 0x01, + 0xc6, 0x06, 0xdc, 0x1c, 0x02, 0xc7, 0x06, 0xaf, + 0x64, 0x3f, 0x01, 0xc7, 0x06, 0xb1, 0x64, 0x96, + 0x00, 0xbe, 0x3f, 0x00, 0xbf, 0x96, 0x00, 0xc6, + 0x06, 0xc3, 0x64, 0x01, 0xe8, 0x8c, 0x31, 0xe8, + 0x1c, 0x01, 0xc6, 0x06, 0x35, 0x33, 0x12, 0xc6, + 0x06, 0x36, 0x33, 0x24, 0xb8, 0xa8, 0x5d, 0xa3, + 0x37, 0x33, 0xb8, 0x84, 0x4d, 0xa3, 0x39, 0x33, + 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x53, 0x03, 0xb9, + 0xa2, 0x03, 0xe8, 0xaa, 0x16, 0xe8, 0xf6, 0x00, + 0xb9, 0x18, 0x00, 0xb0, 0x0b, 0xb4, 0x02, 0xe8, + 0x2b, 0xa5, 0xb9, 0xa3, 0x03, 0xe8, 0x1a, 0x16, + 0xe8, 0xb8, 0xa6, 0xe8, 0xe0, 0x00, 0xbb, 0x2f, + 0xe4, 0xe8, 0xfa, 0x00, 0xb9, 0x03, 0x00, 0xe8, + 0x61, 0xac, 0xc7, 0x06, 0xaf, 0x64, 0x32, 0x00, + 0xc7, 0x06, 0xb1, 0x64, 0xba, 0x00, 0xc6, 0x06, + 0xcc, 0x64, 0x01, 0xc6, 0x06, 0xdc, 0x64, 0x00, + 0xc6, 0x06, 0xcb, 0x64, 0x00, 0xe8, 0x71, 0x39, + 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x97, 0x03, 0xc7, + 0x06, 0xf3, 0xb4, 0x28, 0x00, 0xe8, 0xd0, 0x3a, + 0xc6, 0x07, 0x71, 0xe8, 0xf7, 0xa7, 0xe8, 0x9d, + 0x00, 0xc6, 0x06, 0x45, 0x33, 0xe7, 0xb0, 0x01, + 0xbe, 0x97, 0x03, 0xbb, 0xf1, 0x78, 0xe8, 0xc6, + 0x10, 0xe8, 0x8a, 0x00, 0xbe, 0xc6, 0x00, 0xbf, + 0xba, 0x00, 0xc6, 0x06, 0xc3, 0x64, 0x01, 0xe8, + 0xe9, 0x30, 0xe8, 0x79, 0x00, 0xe8, 0x8f, 0x11, + 0xbb, 0x58, 0x79, 0xe8, 0x77, 0x0c, 0xb9, 0xa4, + 0x03, 0xe8, 0xc3, 0x15, 0xe8, 0x67, 0x00, 0xe8, + 0x7d, 0x11, 0xbb, 0x07, 0x7e, 0xe8, 0x65, 0x0c, + 0xb9, 0xa4, 0x03, 0xe8, 0xb1, 0x15, 0xe8, 0x55, + 0x00, 0xe8, 0x6b, 0x11, 0xbb, 0x1a, 0x7e, 0xe8, + 0x53, 0x0c, 0xb9, 0xa4, 0x03, 0xe8, 0x9f, 0x15, + 0xe8, 0x43, 0x00, 0xe8, 0x7c, 0x11, 0xbb, 0x2c, + 0x7e, 0xe8, 0x41, 0x0c, 0xb9, 0xa5, 0x03, 0xe8, + 0x8d, 0x15, 0xe8, 0x31, 0x00, 0xe8, 0x47, 0x11, + 0xbb, 0x70, 0x7e, 0xe8, 0x2f, 0x0c, 0xbe, 0xae, + 0x00, 0xbf, 0xba, 0x00, 0xc6, 0x06, 0xc3, 0x64, + 0x01, 0xe8, 0x87, 0x30, 0xbb, 0x47, 0x33, 0xc7, + 0x07, 0x53, 0x03, 0xb9, 0xa6, 0x03, 0xe8, 0x66, + 0x15, 0xe8, 0x91, 0x96, 0xe8, 0x14, 0x00, 0xb8, + 0x64, 0x00, 0xe8, 0x9f, 0x19, 0xc3, 0x2e, 0x80, + 0x3e, 0xd7, 0x00, 0x01, 0x75, 0x04, 0x58, 0xe8, + 0xd4, 0xa4, 0xc3, 0x06, 0xa1, 0xb3, 0x32, 0x8e, + 0xc0, 0xbf, 0x00, 0xfa, 0xb9, 0x80, 0x01, 0x33, + 0xc0, 0xfc, 0xf3, 0xab, 0x07, 0xc3, 0x53, 0xe8, + 0x63, 0x96, 0xe8, 0x54, 0xfc, 0xa1, 0xb5, 0x32, + 0xa3, 0xac, 0x00, 0x33, 0xc0, 0xa3, 0xaa, 0x00, + 0xb9, 0x08, 0x00, 0xba, 0x54, 0x00, 0xe8, 0x77, + 0xa9, 0x5b, 0x8b, 0x17, 0x83, 0xc3, 0x02, 0x52, + 0x8a, 0x07, 0x32, 0xe4, 0xf7, 0x26, 0xb6, 0x00, + 0x8b, 0xf0, 0x53, 0xe8, 0x9b, 0x00, 0x5b, 0x5a, + 0x2d, 0x40, 0x01, 0xf7, 0xd8, 0xd1, 0xe8, 0x03, + 0xf0, 0x43, 0xe8, 0x25, 0x00, 0x43, 0x80, 0x3f, + 0x00, 0x75, 0xdc, 0xe8, 0x2e, 0x96, 0xbb, 0x92, + 0x32, 0xb9, 0x90, 0x01, 0xe8, 0xb4, 0xa2, 0xbb, + 0x92, 0x32, 0xe8, 0xc1, 0xa2, 0x72, 0x0a, 0xe8, + 0x99, 0xa0, 0x72, 0x05, 0xe8, 0x65, 0xa0, 0x73, + 0xee, 0xc3, 0x1e, 0x06, 0xb8, 0x00, 0xa0, 0x8e, + 0xc0, 0xa1, 0xb5, 0x32, 0x8e, 0xd8, 0xe8, 0x03, + 0x00, 0x07, 0x1f, 0xc3, 0x1e, 0xb8, 0x3b, 0x0b, + 0x8e, 0xd8, 0x8a, 0x0f, 0x1f, 0x0a, 0xc9, 0x74, + 0x47, 0x80, 0xe9, 0x1f, 0xb5, 0x00, 0xbf, 0xfe, + 0xff, 0xd1, 0xe1, 0x03, 0xf9, 0x8b, 0x3d, 0x8b, + 0x0d, 0x83, 0xc7, 0x02, 0x51, 0x56, 0x51, 0x56, + 0x8a, 0x05, 0x0a, 0xc0, 0x74, 0x0d, 0xfe, 0xc8, + 0x0a, 0xc0, 0x8a, 0xc2, 0x74, 0x02, 0x8a, 0xc6, + 0x26, 0x88, 0x04, 0x47, 0x46, 0xfe, 0xcd, 0x75, + 0xe7, 0x5e, 0x59, 0x81, 0xc6, 0x40, 0x01, 0xfe, + 0xc9, 0x75, 0xdb, 0x5e, 0x59, 0x8a, 0xc5, 0xb4, + 0x00, 0x03, 0xf0, 0x46, 0x46, 0x43, 0xeb, 0xac, + 0xc3, 0x33, 0xc0, 0x8a, 0x0f, 0x0a, 0xc9, 0x74, + 0x24, 0x42, 0x80, 0xe9, 0x1f, 0xb5, 0x00, 0xbf, + 0xfe, 0xff, 0xd1, 0xe1, 0x03, 0xf9, 0x1e, 0x8b, + 0x16, 0xb5, 0x32, 0x8e, 0xda, 0x8b, 0x3d, 0x8b, + 0x0d, 0x1f, 0x8a, 0xcd, 0xb5, 0x00, 0x03, 0xc1, + 0x40, 0x40, 0x43, 0xeb, 0xd6, 0xc3, 0xe8, 0x60, + 0xfb, 0xa1, 0xb5, 0x32, 0xa3, 0xac, 0x00, 0x33, + 0xc0, 0xa3, 0xaa, 0x00, 0xb9, 0x06, 0x00, 0xba, + 0x54, 0x00, 0xe8, 0x83, 0xa8, 0xa1, 0xb3, 0x32, + 0xa3, 0xac, 0x00, 0xb8, 0x00, 0xfa, 0xa3, 0xaa, + 0x00, 0xb9, 0x05, 0x00, 0xba, 0x54, 0x00, 0xe8, + 0x6e, 0xa8, 0x8b, 0x16, 0xb3, 0x32, 0xbe, 0x00, + 0xfa, 0xb0, 0x40, 0xe8, 0x14, 0xa0, 0xa1, 0xb3, + 0x32, 0xa3, 0xac, 0x00, 0x2e, 0xa3, 0x53, 0x08, + 0xb8, 0x00, 0x1e, 0xa3, 0xaa, 0x00, 0xb9, 0x09, + 0x00, 0xba, 0x54, 0x00, 0xe8, 0x49, 0xa8, 0x1e, + 0x06, 0x8b, 0x2e, 0xb5, 0x32, 0xa1, 0xb1, 0x32, + 0x8e, 0xc0, 0x8e, 0xd8, 0xfc, 0xb9, 0x58, 0x02, + 0xe8, 0x0f, 0x00, 0x07, 0x1f, 0x8b, 0x16, 0xb3, + 0x32, 0xbe, 0x00, 0xfa, 0xb0, 0xc0, 0xe8, 0xd9, + 0x9f, 0xc3, 0x2e, 0x80, 0x3e, 0xd7, 0x00, 0x00, + 0x75, 0x07, 0x51, 0xe8, 0x04, 0x00, 0x59, 0xe2, + 0xf1, 0xc3, 0xb8, 0xa0, 0x00, 0xbf, 0x00, 0x00, + 0x03, 0xf8, 0x03, 0xf8, 0x8b, 0xf7, 0x03, 0xf0, + 0xb9, 0x90, 0x10, 0xf3, 0xa5, 0x83, 0xc7, 0x00, + 0xb9, 0x11, 0x00, 0x51, 0x57, 0xb8, 0x9f, 0x00, + 0xe8, 0xe8, 0xa9, 0x03, 0xf8, 0xb8, 0xb9, 0x00, + 0xe8, 0xe0, 0xa9, 0x04, 0x05, 0x8a, 0xe0, 0x89, + 0x05, 0x5f, 0x59, 0xe2, 0xe6, 0xb9, 0x01, 0x00, + 0xbe, 0x01, 0x00, 0x8b, 0xc6, 0xbb, 0xa0, 0x00, + 0xf7, 0xe3, 0x8b, 0xf8, 0x03, 0xf9, 0x33, 0xc0, + 0x33, 0xdb, 0x8a, 0x9d, 0x5f, 0xff, 0x8a, 0x85, + 0x60, 0xff, 0x03, 0xd8, 0x8a, 0x85, 0x61, 0xff, + 0x03, 0xd8, 0x8a, 0x45, 0xff, 0x03, 0xd8, 0x8a, + 0x45, 0x01, 0x03, 0xd8, 0x8a, 0x85, 0x9f, 0x00, + 0x03, 0xd8, 0x8a, 0x85, 0xa0, 0x00, 0x03, 0xd8, + 0x8a, 0x85, 0xa1, 0x00, 0x03, 0xd8, 0xc1, 0xeb, + 0x03, 0x88, 0x9d, 0x00, 0x23, 0x41, 0x81, 0xf9, + 0xa0, 0x00, 0x72, 0xb7, 0xb9, 0x01, 0x00, 0x46, + 0x83, 0xfe, 0x38, 0x72, 0xae, 0xbf, 0x00, 0x00, + 0xbe, 0x00, 0x23, 0xb9, 0x80, 0x11, 0xf3, 0xa5, + 0x06, 0xb8, 0x00, 0xa0, 0x8e, 0xc0, 0x33, 0xdb, + 0xbe, 0x00, 0x00, 0xbf, 0xc0, 0x6c, 0xb9, 0x2c, + 0x00, 0xb8, 0x40, 0x01, 0xf7, 0xe1, 0x03, 0xf8, + 0xd1, 0xe9, 0x8b, 0xd1, 0x83, 0xea, 0x04, 0xb8, + 0xa0, 0x00, 0xf7, 0xe2, 0x03, 0xf0, 0xb8, 0x38, + 0x00, 0x2b, 0xc1, 0x8b, 0xc8, 0xe8, 0xf0, 0x9e, + 0x56, 0xe8, 0x0b, 0x00, 0x5e, 0xe8, 0x07, 0x00, + 0xe2, 0xf6, 0xe8, 0x28, 0x00, 0x07, 0xc3, 0xba, + 0xa0, 0x00, 0x8a, 0x04, 0x1e, 0x8e, 0xdd, 0x80, + 0x3f, 0x01, 0x75, 0x03, 0x26, 0x88, 0x05, 0x43, + 0x47, 0x80, 0x3f, 0x01, 0x1f, 0x75, 0x03, 0x26, + 0x88, 0x05, 0x43, 0x47, 0x46, 0x4a, 0x75, 0xe2, + 0xc3, 0x80, 0x66, 0x00, 0x00, 0x2e, 0x81, 0x2e, + 0x51, 0x08, 0x80, 0x02, 0x73, 0x08, 0x2e, 0x81, + 0x06, 0x51, 0x08, 0x80, 0x02, 0xc3, 0x2e, 0x8b, + 0x36, 0x51, 0x08, 0x1e, 0x2e, 0xa1, 0x53, 0x08, + 0x8e, 0xd8, 0x33, 0xff, 0xfc, 0xb9, 0x80, 0x66, + 0x2b, 0xce, 0xd1, 0xe9, 0xf3, 0xa5, 0x1f, 0xc3, + 0x80, 0x3e, 0x95, 0x60, 0x01, 0x74, 0x0a, 0xe8, + 0x32, 0x00, 0x80, 0x3e, 0x95, 0x60, 0x01, 0x75, + 0x2a, 0xc6, 0x06, 0x95, 0x60, 0x00, 0xe8, 0xa1, + 0x18, 0xe8, 0xf8, 0x06, 0xe8, 0x35, 0x00, 0xe8, + 0x05, 0xa0, 0xc6, 0x06, 0xdc, 0x1c, 0x03, 0xc6, + 0x06, 0xda, 0x1c, 0x00, 0xe8, 0xc7, 0x1f, 0xe8, + 0x5e, 0x9e, 0xe8, 0x27, 0xa0, 0xc7, 0x06, 0x52, + 0x72, 0x00, 0x00, 0xc3, 0x2e, 0xa0, 0xd7, 0x00, + 0x3c, 0x3b, 0x72, 0x0a, 0x3c, 0x44, 0x77, 0x06, + 0xc6, 0x06, 0x95, 0x60, 0x01, 0xc3, 0xc6, 0x06, + 0x95, 0x60, 0x00, 0xc3, 0xc7, 0x06, 0x96, 0x60, + 0x00, 0x00, 0xc6, 0x06, 0x98, 0x60, 0x00, 0xbb, + 0x99, 0x60, 0xe8, 0x0e, 0x00, 0x72, 0x01, 0xc3, + 0xe8, 0x2d, 0x01, 0x80, 0x3e, 0x98, 0x60, 0x01, + 0x75, 0xe2, 0xc3, 0x83, 0xeb, 0x05, 0x89, 0x1e, + 0x93, 0x60, 0x2e, 0x80, 0x3e, 0xd7, 0x00, 0x01, + 0x75, 0x03, 0xe9, 0xb4, 0x00, 0x33, 0xc9, 0x8b, + 0x1e, 0x93, 0x60, 0x41, 0x83, 0xc3, 0x05, 0x8a, + 0x47, 0x04, 0x3c, 0x03, 0x74, 0xf5, 0x8b, 0x07, + 0x0a, 0xc0, 0x75, 0x28, 0x8b, 0x0e, 0x96, 0x60, + 0x0b, 0xc9, 0x74, 0xd6, 0x8b, 0x1e, 0x93, 0x60, + 0x83, 0xc3, 0x05, 0xe2, 0xfb, 0x8b, 0x07, 0xe8, + 0x8f, 0x00, 0x8a, 0x57, 0x02, 0xb6, 0x00, 0xb4, + 0xe0, 0xe8, 0x96, 0x00, 0xc7, 0x06, 0x96, 0x60, + 0x00, 0x00, 0xeb, 0xb6, 0x53, 0x51, 0xe8, 0x78, + 0x00, 0x8a, 0x4f, 0x02, 0xbb, 0x0e, 0x00, 0xe8, + 0x24, 0x1b, 0x59, 0x5b, 0x72, 0x02, 0xeb, 0xb3, + 0xa1, 0x96, 0x60, 0x3b, 0xc8, 0x74, 0x37, 0x0b, + 0xc0, 0x74, 0x1e, 0x53, 0x51, 0x8b, 0xc8, 0x8b, + 0x1e, 0x93, 0x60, 0x83, 0xc3, 0x05, 0xe2, 0xfb, + 0x8b, 0x07, 0xe8, 0x4c, 0x00, 0x8a, 0x57, 0x02, + 0xb6, 0x00, 0xb4, 0xe0, 0xe8, 0x53, 0x00, 0x59, + 0x5b, 0x89, 0x0e, 0x96, 0x60, 0x8b, 0x07, 0xe8, + 0x37, 0x00, 0x8a, 0x57, 0x02, 0xb6, 0x00, 0xb4, + 0xd1, 0x56, 0xe8, 0x3d, 0x00, 0x5e, 0xe8, 0x3a, + 0x9d, 0x72, 0x08, 0xe8, 0x06, 0x9d, 0x72, 0x03, + 0xe9, 0x57, 0xff, 0x8b, 0x0e, 0x96, 0x60, 0x8b, + 0x1e, 0x93, 0x60, 0x83, 0xc3, 0x05, 0xe2, 0xfb, + 0x8b, 0x47, 0x03, 0x3c, 0x0a, 0x74, 0x02, 0xf9, + 0xc3, 0xc7, 0x06, 0x96, 0x60, 0x00, 0x00, 0xf8, + 0xc3, 0x8a, 0xc8, 0xb5, 0x00, 0x8a, 0xc4, 0xb4, + 0x00, 0xf7, 0x26, 0xb6, 0x00, 0x03, 0xc1, 0x8b, + 0xf0, 0xc3, 0x06, 0x8b, 0x0e, 0xb1, 0x32, 0x8e, + 0xc1, 0x50, 0x56, 0xe8, 0x0f, 0x00, 0x5e, 0x58, + 0xb9, 0x00, 0xa0, 0x8e, 0xc1, 0xe8, 0x05, 0x00, + 0xe8, 0xec, 0x9b, 0x07, 0xc3, 0x8b, 0xca, 0x26, + 0x88, 0x24, 0x46, 0xe2, 0xfa, 0x81, 0xc6, 0x40, + 0x01, 0x2b, 0xf2, 0xb9, 0x0c, 0x00, 0x26, 0x88, + 0x24, 0x03, 0xf2, 0x26, 0x88, 0x64, 0xff, 0x2b, + 0xf2, 0x81, 0xc6, 0x40, 0x01, 0xe2, 0xef, 0x8b, + 0xca, 0x26, 0x88, 0x24, 0x46, 0xe2, 0xfa, 0xc3, + 0xbb, 0x94, 0x60, 0x83, 0xc3, 0x05, 0x3a, 0x47, + 0x03, 0x75, 0xf8, 0x80, 0x7f, 0x04, 0x03, 0x74, + 0x06, 0x80, 0x7f, 0x04, 0x00, 0x75, 0xec, 0x50, + 0x8b, 0x07, 0xe8, 0x8c, 0xff, 0x58, 0xb9, 0x0e, + 0x00, 0x8a, 0x57, 0x02, 0xb6, 0x00, 0x3c, 0x01, + 0x75, 0x04, 0xe8, 0xb9, 0x01, 0xc3, 0x3c, 0x02, + 0x75, 0x04, 0xe8, 0x8f, 0x02, 0xc3, 0x3c, 0x03, + 0x75, 0x24, 0x80, 0xfc, 0x01, 0x75, 0x0d, 0xa0, + 0xa8, 0x64, 0x3c, 0x0a, 0x74, 0x17, 0xfe, 0x06, + 0xa8, 0x64, 0xeb, 0x0b, 0xa0, 0xa8, 0x64, 0x0a, + 0xc0, 0x74, 0x0a, 0xfe, 0x0e, 0xa8, 0x64, 0xe8, + 0xa4, 0x05, 0xe8, 0xdc, 0x00, 0xc3, 0x3c, 0x04, + 0x75, 0x24, 0x80, 0xfc, 0x01, 0x75, 0x0d, 0xa0, + 0xa9, 0x64, 0x3c, 0x0a, 0x74, 0x17, 0xfe, 0x06, + 0xa9, 0x64, 0xeb, 0x0b, 0xa0, 0xa9, 0x64, 0x0a, + 0xc0, 0x74, 0x0a, 0xfe, 0x0e, 0xa9, 0x64, 0xe8, + 0x9e, 0x05, 0xe8, 0xc8, 0x00, 0xc3, 0x3c, 0x05, + 0x75, 0x24, 0x80, 0xfc, 0x01, 0x75, 0x0d, 0xa0, + 0xaa, 0x64, 0x3c, 0x03, 0x74, 0x17, 0xfe, 0x06, + 0xaa, 0x64, 0xeb, 0x0b, 0xa0, 0xaa, 0x64, 0x0a, + 0xc0, 0x74, 0x0a, 0xfe, 0x0e, 0xaa, 0x64, 0xe8, + 0x98, 0x05, 0xe8, 0xc9, 0x00, 0xc3, 0x3c, 0x06, + 0x75, 0x24, 0x80, 0xfc, 0x01, 0x75, 0x0d, 0xa0, + 0xab, 0x64, 0x3c, 0x03, 0x74, 0x17, 0xfe, 0x06, + 0xab, 0x64, 0xeb, 0x0b, 0xa0, 0xab, 0x64, 0x0a, + 0xc0, 0x74, 0x0a, 0xfe, 0x0e, 0xab, 0x64, 0xe8, + 0x92, 0x05, 0xe8, 0xd2, 0x00, 0xc3, 0x3c, 0x07, + 0x75, 0x24, 0x80, 0xfc, 0x01, 0x75, 0x0d, 0xa0, + 0xac, 0x64, 0x3c, 0x04, 0x74, 0x17, 0xfe, 0x06, + 0xac, 0x64, 0xeb, 0x0b, 0xa0, 0xac, 0x64, 0x0a, + 0xc0, 0x74, 0x0a, 0xfe, 0x0e, 0xac, 0x64, 0xe8, + 0x8c, 0x05, 0xe8, 0x86, 0x00, 0xc3, 0x3c, 0x08, + 0x75, 0x24, 0x80, 0xfc, 0x01, 0x75, 0x0d, 0xa0, + 0xad, 0x64, 0x3c, 0x01, 0x74, 0x17, 0xfe, 0x06, + 0xad, 0x64, 0xeb, 0x0b, 0xa0, 0xad, 0x64, 0x0a, + 0xc0, 0x74, 0x0a, 0xfe, 0x0e, 0xad, 0x64, 0xe8, + 0x86, 0x05, 0xe8, 0xa0, 0x00, 0xc3, 0x3c, 0x0b, + 0x75, 0x04, 0xe8, 0x9c, 0x03, 0xc3, 0x3c, 0x0d, + 0x75, 0x02, 0xc3, 0xc3, 0xb0, 0x3c, 0xe9, 0x17, + 0xa8, 0xa0, 0xa8, 0x64, 0x0a, 0xc0, 0x75, 0x06, + 0xc6, 0x06, 0x48, 0x32, 0x00, 0xc3, 0xe8, 0x22, + 0x00, 0xa2, 0x48, 0x32, 0xc3, 0xa0, 0xa9, 0x64, + 0x0a, 0xc0, 0x75, 0x0b, 0xc6, 0x06, 0x49, 0x32, + 0x00, 0xc6, 0x06, 0x47, 0x32, 0x00, 0xc3, 0xc6, + 0x06, 0x47, 0x32, 0x01, 0xe8, 0x04, 0x00, 0xa2, + 0x49, 0x32, 0xc3, 0x8a, 0xc8, 0xb5, 0x00, 0xb0, + 0x04, 0x04, 0x06, 0xe2, 0xfc, 0xc3, 0xb0, 0x03, + 0x2a, 0x06, 0xaa, 0x64, 0xc0, 0xe0, 0x02, 0xa2, + 0x8e, 0x32, 0xc3, 0xa0, 0xac, 0x64, 0x0a, 0xc0, + 0x74, 0x19, 0x8a, 0xe0, 0xb0, 0x64, 0x80, 0xfc, + 0x01, 0x74, 0x10, 0xb0, 0x32, 0x80, 0xfc, 0x02, + 0x74, 0x09, 0xb0, 0x14, 0x80, 0xfc, 0x03, 0x74, + 0x02, 0xb0, 0x01, 0xa2, 0x96, 0x32, 0xc3, 0x8a, + 0x26, 0xab, 0x64, 0xb0, 0x10, 0x0a, 0xe4, 0x74, + 0x10, 0xb0, 0x0b, 0x80, 0xfc, 0x01, 0x74, 0x09, + 0xb0, 0x05, 0x80, 0xfc, 0x02, 0x74, 0x02, 0xb0, + 0x01, 0xa2, 0x90, 0x32, 0xc3, 0x80, 0x3e, 0xad, + 0x64, 0x01, 0x75, 0x0e, 0x8b, 0x16, 0xb3, 0x32, + 0xbe, 0x00, 0xfa, 0xb0, 0x40, 0xe8, 0x32, 0x9b, + 0xeb, 0x03, 0xe8, 0xcc, 0xa0, 0xc6, 0x06, 0x08, + 0x66, 0x00, 0xe8, 0xdc, 0x9b, 0xc3, 0xc7, 0x06, + 0x96, 0x60, 0x00, 0x00, 0xe8, 0x23, 0x02, 0xbb, + 0x32, 0x64, 0xe8, 0xe6, 0xfc, 0x72, 0x0a, 0xc7, + 0x06, 0x96, 0x60, 0x00, 0x00, 0xe8, 0x7c, 0x03, + 0xc3, 0x8b, 0x0e, 0x96, 0x60, 0x49, 0xe8, 0xa5, + 0x02, 0x0b, 0xc9, 0x74, 0xd9, 0xb8, 0xa6, 0x64, + 0x8b, 0xd8, 0x8b, 0x1f, 0x3b, 0xc3, 0x75, 0x1e, + 0xbb, 0xa4, 0x64, 0x8b, 0x07, 0xbb, 0xaf, 0xb3, + 0x81, 0xeb, 0x00, 0x00, 0x3b, 0xc3, 0x75, 0x0e, + 0xb8, 0xf2, 0xdb, 0xbb, 0x78, 0x64, 0x2b, 0xc3, + 0x3b, 0xc1, 0x75, 0x02, 0xeb, 0x35, 0xb8, 0xa6, + 0x64, 0xa3, 0xa6, 0x64, 0xb8, 0xaf, 0xb3, 0xa3, + 0xa4, 0x64, 0x06, 0xa1, 0xb1, 0x32, 0x8e, 0xc0, + 0xbe, 0x79, 0x51, 0xb0, 0xdb, 0xb4, 0x00, 0xb9, + 0x46, 0x00, 0xba, 0xce, 0x00, 0xe8, 0x07, 0x05, + 0xbb, 0xc3, 0x62, 0xbe, 0xbb, 0x62, 0xe8, 0x9f, + 0x04, 0xe8, 0x60, 0x9c, 0x07, 0xe8, 0x82, 0x9a, + 0xe9, 0x7b, 0xff, 0x89, 0x1e, 0xaa, 0x00, 0x8c, + 0x1e, 0xac, 0x00, 0xba, 0x95, 0x00, 0xe8, 0x56, + 0xa3, 0x58, 0x81, 0xfc, 0x00, 0x02, 0x72, 0xf9, + 0xe8, 0xb6, 0xfe, 0xe8, 0xc7, 0xfe, 0xe8, 0xed, + 0xfe, 0xe8, 0xf7, 0xfe, 0xe8, 0x18, 0xff, 0xe8, + 0x33, 0xff, 0x8b, 0x0e, 0x90, 0xdb, 0xe8, 0x9a, + 0xa4, 0x83, 0x3e, 0xf3, 0xb4, 0x18, 0x75, 0x0b, + 0xe8, 0xe0, 0x4c, 0xc6, 0x06, 0xdc, 0x1c, 0x02, + 0xe9, 0xb6, 0xf4, 0xa1, 0xaf, 0x64, 0x8b, 0x1e, + 0xb1, 0x64, 0x8b, 0xf8, 0x8b, 0xf3, 0x8a, 0x0e, + 0x07, 0x66, 0x8a, 0x2e, 0xc3, 0x64, 0xe8, 0x0a, + 0x9f, 0xe9, 0x9d, 0xf4, 0xc7, 0x06, 0x96, 0x60, + 0x00, 0x00, 0xe8, 0x45, 0x01, 0xbb, 0x32, 0x64, + 0xe8, 0x08, 0xfc, 0x72, 0x0a, 0xc7, 0x06, 0x96, + 0x60, 0x00, 0x00, 0xe8, 0x9e, 0x02, 0xc3, 0x56, + 0xe8, 0xe2, 0x98, 0x5e, 0xe8, 0x38, 0x00, 0x73, + 0x29, 0xba, 0x95, 0x00, 0x8b, 0xda, 0xa1, 0x96, + 0x60, 0x48, 0x04, 0x30, 0x88, 0x47, 0x07, 0xb8, + 0x78, 0x64, 0xb9, 0xf2, 0xdb, 0x2b, 0xc8, 0xa3, + 0xaa, 0x00, 0x8c, 0x1e, 0xac, 0x00, 0xe8, 0x6d, + 0xa3, 0xc6, 0x06, 0x98, 0x60, 0x01, 0xe8, 0xd6, + 0x98, 0xc3, 0xc7, 0x06, 0x96, 0x60, 0x00, 0x00, + 0xe8, 0x61, 0x02, 0xe8, 0xc9, 0x98, 0xc3, 0x81, + 0xc6, 0x85, 0x02, 0x8b, 0x0e, 0x96, 0x60, 0x49, + 0x56, 0xc7, 0x06, 0xa6, 0x00, 0x18, 0x00, 0xe8, + 0x30, 0x01, 0x5e, 0xbb, 0x78, 0x64, 0x80, 0x3f, + 0x28, 0x74, 0x0b, 0x33, 0xc9, 0x41, 0x43, 0x80, + 0x3f, 0x00, 0x75, 0xf9, 0xeb, 0x08, 0xbb, 0x78, + 0x64, 0xc6, 0x07, 0x00, 0x33, 0xc9, 0xe8, 0x48, + 0x00, 0x33, 0xc0, 0x2e, 0xa0, 0xd7, 0x00, 0x3a, + 0xc4, 0x8a, 0xe0, 0x74, 0xf6, 0x3c, 0x80, 0x73, + 0xf2, 0x3c, 0x1c, 0x74, 0x1c, 0x3c, 0x01, 0x74, + 0x14, 0x3c, 0x0e, 0x74, 0x1a, 0x83, 0xf9, 0x16, + 0x73, 0xe1, 0xe8, 0x61, 0x00, 0x73, 0xdc, 0x41, + 0xe8, 0x1e, 0x00, 0xeb, 0xd6, 0x33, 0xc9, 0xf8, + 0xc3, 0x0b, 0xc9, 0x74, 0xce, 0xf9, 0xc3, 0x0b, + 0xc9, 0x74, 0xc8, 0x49, 0xbb, 0x78, 0x64, 0x03, + 0xd9, 0xc6, 0x07, 0x00, 0xe8, 0x02, 0x00, 0xeb, + 0xba, 0x50, 0x51, 0x06, 0xb8, 0x00, 0xa0, 0x8e, + 0xc0, 0x56, 0xe8, 0x13, 0x00, 0x5e, 0x56, 0xbb, + 0x78, 0x64, 0xe8, 0x90, 0x96, 0xbb, 0x90, 0x64, + 0xe8, 0x8a, 0x96, 0x5e, 0x07, 0x59, 0x58, 0xc3, + 0xbb, 0x78, 0x64, 0xe8, 0xd2, 0x96, 0x03, 0xf0, + 0xb9, 0x0b, 0x00, 0x51, 0xb9, 0x14, 0x00, 0x26, + 0xc6, 0x04, 0xe8, 0x46, 0xe2, 0xf9, 0x59, 0x81, + 0xc6, 0x2c, 0x01, 0xe2, 0xee, 0xc3, 0xbb, 0x3f, + 0x60, 0x3a, 0x07, 0x74, 0x0b, 0x83, 0xc3, 0x02, + 0x81, 0xfb, 0x93, 0x60, 0x72, 0xf3, 0xf8, 0xc3, + 0x50, 0x53, 0x51, 0x06, 0x56, 0xb8, 0x00, 0xa0, + 0x8e, 0xc0, 0xe8, 0xc3, 0xff, 0x5e, 0x56, 0xbb, + 0x78, 0x64, 0xe8, 0x40, 0x96, 0x5e, 0x07, 0x59, + 0x5b, 0x58, 0x8a, 0x5f, 0x01, 0xbf, 0x78, 0x64, + 0x03, 0xf9, 0x88, 0x1d, 0xc6, 0x45, 0x01, 0x00, + 0xf9, 0xc3, 0x06, 0xa1, 0xb1, 0x32, 0x8e, 0xc0, + 0xe8, 0xb7, 0x02, 0xbb, 0x70, 0x64, 0xbe, 0x6e, + 0x64, 0xe8, 0xdc, 0x02, 0xe8, 0x0b, 0x00, 0xbb, + 0x32, 0x64, 0xe8, 0xb6, 0x02, 0xe8, 0x94, 0x9a, + 0x07, 0xc3, 0x33, 0xc9, 0x51, 0xc7, 0x06, 0xa6, + 0x00, 0x18, 0x00, 0xe8, 0x24, 0x00, 0x59, 0x51, + 0xbe, 0x3b, 0x0f, 0x8b, 0xc1, 0xb9, 0x0f, 0x00, + 0xf7, 0xe1, 0xf7, 0x26, 0xb6, 0x00, 0x03, 0xf0, + 0x81, 0xc6, 0x85, 0x02, 0xbb, 0x78, 0x64, 0xe8, + 0xe3, 0x95, 0x59, 0x41, 0x83, 0xf9, 0x0a, 0x72, + 0xd3, 0xc3, 0xba, 0x95, 0x00, 0x8b, 0xda, 0x8a, + 0xc1, 0x04, 0x30, 0x88, 0x47, 0x07, 0xb8, 0x00, + 0x3d, 0xb1, 0x00, 0xcd, 0x21, 0x72, 0x1c, 0x8b, + 0xd8, 0xb4, 0x3e, 0xcd, 0x21, 0x72, 0x2c, 0x8c, + 0x1e, 0xac, 0x00, 0xb8, 0x78, 0x64, 0xa3, 0xaa, + 0x00, 0xc7, 0x06, 0xa8, 0x00, 0x00, 0x00, 0xe8, + 0x9d, 0xa1, 0xc3, 0x3d, 0x02, 0x00, 0x75, 0x13, + 0xbb, 0x78, 0x64, 0xc6, 0x07, 0x28, 0xc6, 0x47, + 0x01, 0x2d, 0xc6, 0x47, 0x02, 0x29, 0xc6, 0x47, + 0x03, 0x00, 0xc3, 0xe9, 0xa2, 0xa4, 0xb8, 0x2f, + 0x00, 0xa3, 0xa6, 0x00, 0xe8, 0xab, 0xff, 0xbb, + 0x78, 0x64, 0x80, 0x3f, 0x28, 0x75, 0x03, 0x33, + 0xc9, 0xc3, 0xba, 0x95, 0x00, 0xe8, 0x48, 0xa0, + 0xc3, 0xe8, 0xf9, 0x96, 0xe8, 0x1e, 0x12, 0xe8, + 0x15, 0x97, 0x06, 0xa1, 0xb1, 0x32, 0x8e, 0xc0, + 0xbe, 0x26, 0x54, 0xb0, 0xe8, 0xb4, 0x00, 0xb9, + 0x42, 0x00, 0xba, 0x74, 0x00, 0xe8, 0x77, 0x02, + 0xbb, 0x27, 0x62, 0xbe, 0x21, 0x62, 0xe8, 0x0f, + 0x02, 0xe8, 0xd0, 0x99, 0x07, 0x2e, 0x8a, 0x26, + 0xd7, 0x00, 0xe8, 0x8f, 0x97, 0x72, 0x1c, 0xe8, + 0xb9, 0x97, 0x72, 0x17, 0x2e, 0xa0, 0xd7, 0x00, + 0x3c, 0x80, 0x73, 0xee, 0x0a, 0xc0, 0x74, 0xea, + 0x3a, 0xc4, 0x74, 0xe6, 0x3c, 0x15, 0x75, 0x03, + 0xe9, 0x74, 0xf2, 0xc7, 0x06, 0x96, 0x60, 0x00, + 0x00, 0xe8, 0xa1, 0x96, 0xe8, 0xfb, 0x11, 0xe8, + 0xbd, 0x96, 0xe8, 0x4f, 0x00, 0xc3, 0xe8, 0x94, + 0x96, 0xe8, 0xb9, 0x11, 0xe8, 0xb0, 0x96, 0x06, + 0xa1, 0xb1, 0x32, 0x8e, 0xc0, 0xbe, 0x6d, 0x51, + 0xb0, 0xe8, 0xb4, 0x00, 0xb9, 0x46, 0x00, 0xba, + 0xe6, 0x00, 0xe8, 0x12, 0x02, 0xbb, 0x52, 0x62, + 0xbe, 0x4a, 0x62, 0xe8, 0xaa, 0x01, 0xe8, 0x6b, + 0x99, 0x07, 0x2e, 0x8a, 0x26, 0xd7, 0x00, 0xe8, + 0x2a, 0x97, 0x72, 0x05, 0xe8, 0x54, 0x97, 0x73, + 0xf6, 0xc7, 0x06, 0x96, 0x60, 0x00, 0x00, 0xe8, + 0x53, 0x96, 0xe8, 0xad, 0x11, 0xe8, 0x6f, 0x96, + 0xe8, 0x01, 0x00, 0xc3, 0xc6, 0x06, 0xe6, 0x1c, + 0xd1, 0x06, 0xa1, 0xb1, 0x32, 0x8e, 0xc0, 0xe8, + 0x48, 0x01, 0xbb, 0x29, 0x61, 0xbe, 0x11, 0x61, + 0xe8, 0x6d, 0x01, 0xbb, 0x99, 0x60, 0xe8, 0x4a, + 0x01, 0xe8, 0x14, 0x00, 0xe8, 0x1e, 0x00, 0xe8, + 0x28, 0x00, 0xe8, 0x32, 0x00, 0xe8, 0x3c, 0x00, + 0xe8, 0x46, 0x00, 0xe8, 0x16, 0x99, 0x07, 0xc3, + 0xb0, 0x06, 0xbb, 0x29, 0x63, 0x8a, 0x0e, 0xa8, + 0x64, 0xe8, 0x54, 0x01, 0xc3, 0xb0, 0x06, 0xbb, + 0x6b, 0x63, 0x8a, 0x0e, 0xa9, 0x64, 0xe8, 0x47, + 0x01, 0xc3, 0xb0, 0x09, 0xbb, 0xad, 0x63, 0x8a, + 0x0e, 0xaa, 0x64, 0xe8, 0x3a, 0x01, 0xc3, 0xb0, + 0x09, 0xbb, 0xd1, 0x63, 0x8a, 0x0e, 0xab, 0x64, + 0xe8, 0x2d, 0x01, 0xc3, 0xb0, 0x09, 0xbb, 0xf5, + 0x63, 0x8a, 0x0e, 0xac, 0x64, 0xe8, 0x20, 0x01, + 0xc3, 0xb0, 0x08, 0xbb, 0x22, 0x64, 0x8a, 0x0e, + 0xad, 0x64, 0xe8, 0x13, 0x01, 0xc3, 0x06, 0xa1, + 0xb1, 0x32, 0x8e, 0xc0, 0x51, 0x52, 0x56, 0xe8, + 0xc0, 0x00, 0xe8, 0xa3, 0xff, 0xb8, 0x00, 0xa0, + 0x8e, 0xc0, 0x5e, 0x5a, 0x59, 0xe8, 0xb2, 0x00, + 0xe8, 0x95, 0xff, 0x07, 0xe8, 0xa0, 0x95, 0xc3, + 0x06, 0xa1, 0xb1, 0x32, 0x8e, 0xc0, 0x51, 0x52, + 0x56, 0xe8, 0x9e, 0x00, 0xe8, 0x8e, 0xff, 0xb8, + 0x00, 0xa0, 0x8e, 0xc0, 0x5e, 0x5a, 0x59, 0xe8, + 0x90, 0x00, 0xe8, 0x80, 0xff, 0x07, 0xe8, 0x7e, + 0x95, 0xc3, 0x06, 0xa1, 0xb1, 0x32, 0x8e, 0xc0, + 0x51, 0x52, 0x56, 0xe8, 0x7c, 0x00, 0xe8, 0x79, + 0xff, 0xb8, 0x00, 0xa0, 0x8e, 0xc0, 0x5e, 0x5a, + 0x59, 0xe8, 0x6e, 0x00, 0xe8, 0x6b, 0xff, 0x07, + 0xe8, 0x5c, 0x95, 0xc3, 0x06, 0xa1, 0xb1, 0x32, + 0x8e, 0xc0, 0x51, 0x52, 0x56, 0xe8, 0x5a, 0x00, + 0xe8, 0x64, 0xff, 0xb8, 0x00, 0xa0, 0x8e, 0xc0, + 0x5e, 0x5a, 0x59, 0xe8, 0x4c, 0x00, 0xe8, 0x56, + 0xff, 0x07, 0xe8, 0x3a, 0x95, 0xc3, 0x06, 0xa1, + 0xb1, 0x32, 0x8e, 0xc0, 0x51, 0x52, 0x56, 0xe8, + 0x38, 0x00, 0xe8, 0x4f, 0xff, 0xb8, 0x00, 0xa0, + 0x8e, 0xc0, 0x5e, 0x5a, 0x59, 0xe8, 0x2a, 0x00, + 0xe8, 0x41, 0xff, 0x07, 0xe8, 0x18, 0x95, 0xc3, + 0x06, 0xa1, 0xb1, 0x32, 0x8e, 0xc0, 0x51, 0x52, + 0x56, 0xe8, 0x16, 0x00, 0xe8, 0x3a, 0xff, 0xb8, + 0x00, 0xa0, 0x8e, 0xc0, 0x5e, 0x5a, 0x59, 0xe8, + 0x08, 0x00, 0xe8, 0x2c, 0xff, 0x07, 0xe8, 0xf6, + 0x94, 0xc3, 0xb0, 0xe8, 0xb4, 0xe0, 0xe8, 0x8e, + 0x00, 0xc3, 0xbe, 0x32, 0x05, 0xb0, 0xe8, 0xb4, + 0x00, 0xb9, 0xc0, 0x00, 0xba, 0xdc, 0x00, 0xe8, + 0x7d, 0x00, 0xc3, 0x53, 0x8b, 0x07, 0xe8, 0xc0, + 0xf8, 0xb9, 0x0e, 0x00, 0x8a, 0x57, 0x02, 0xb6, + 0x00, 0xb4, 0xe0, 0xe8, 0x38, 0x00, 0x5b, 0x83, + 0xc3, 0x05, 0x80, 0x3f, 0x00, 0x75, 0xe4, 0xc3, + 0x56, 0x8b, 0x34, 0xe8, 0x37, 0x93, 0x5e, 0x43, + 0x46, 0x46, 0x80, 0x3f, 0x00, 0x75, 0xf1, 0xc3, + 0xb4, 0x00, 0xb5, 0x00, 0x2b, 0xd8, 0x41, 0x03, + 0xd8, 0xe2, 0xfc, 0x8a, 0x47, 0x01, 0xf7, 0x26, + 0xb6, 0x00, 0x8a, 0x0f, 0x03, 0xc1, 0x8b, 0xf0, + 0x43, 0x43, 0xe8, 0x10, 0x93, 0xc3, 0x8b, 0xda, + 0x26, 0x88, 0x24, 0x46, 0x4a, 0x75, 0xf9, 0x81, + 0xc6, 0x40, 0x01, 0x2b, 0xf3, 0x83, 0xe9, 0x02, + 0x8b, 0xd3, 0x26, 0x88, 0x24, 0x46, 0x83, 0xea, + 0x02, 0x03, 0xf2, 0x26, 0x88, 0x24, 0x46, 0x81, + 0xc6, 0x40, 0x01, 0x2b, 0xf3, 0xe2, 0xe9, 0x26, + 0x88, 0x24, 0x46, 0x4b, 0x75, 0xf9, 0xc3, 0x8b, + 0xda, 0x26, 0x88, 0x24, 0x46, 0x4a, 0x75, 0xf9, + 0x81, 0xc6, 0x40, 0x01, 0x2b, 0xf3, 0x83, 0xe9, + 0x02, 0x8b, 0xd3, 0x26, 0x88, 0x24, 0x46, 0x83, + 0xea, 0x02, 0x26, 0x88, 0x04, 0x46, 0x4a, 0x75, + 0xf9, 0x26, 0x88, 0x24, 0x46, 0x81, 0xc6, 0x40, + 0x01, 0x2b, 0xf3, 0xe2, 0xe4, 0x26, 0x88, 0x24, + 0x46, 0x4b, 0x75, 0xf9, 0xc3, 0x8b, 0x07, 0x0b, + 0xc0, 0x74, 0x0d, 0x83, 0x7f, 0x02, 0xff, 0x74, + 0x04, 0xc7, 0x07, 0x00, 0x00, 0x8b, 0xd8, 0xc3, + 0x83, 0xc3, 0x02, 0xeb, 0xe8, 0xe8, 0xed, 0x00, + 0xbb, 0xf2, 0xdb, 0x80, 0x3f, 0x00, 0x74, 0x2f, + 0x83, 0xeb, 0x02, 0x83, 0xc3, 0x02, 0x53, 0x80, + 0x3f, 0xff, 0x75, 0x05, 0x53, 0xe8, 0x75, 0x0d, + 0x5b, 0xe8, 0x71, 0x8e, 0x5b, 0x2e, 0x80, 0x3e, + 0xd7, 0x00, 0x01, 0x74, 0x09, 0xe8, 0xad, 0x00, + 0x80, 0x7f, 0x03, 0x00, 0x75, 0x03, 0xe9, 0xa0, + 0x00, 0x80, 0x7f, 0x02, 0x00, 0x75, 0xd4, 0x53, + 0x8a, 0x26, 0x96, 0xda, 0xa0, 0x97, 0xda, 0xe8, + 0x04, 0x0d, 0xe8, 0x4f, 0x98, 0xa0, 0x96, 0xda, + 0x8b, 0x0e, 0x98, 0xda, 0x8b, 0x16, 0x9a, 0xda, + 0xe8, 0xd3, 0x00, 0x5b, 0x43, 0xe8, 0x4d, 0x0d, + 0x83, 0xc3, 0x02, 0x53, 0xa0, 0x96, 0xda, 0x8b, + 0x0e, 0x9c, 0xda, 0x8b, 0x16, 0x9e, 0xda, 0x80, + 0x3f, 0xff, 0x75, 0x03, 0xe8, 0x74, 0x00, 0xe8, + 0xb7, 0x01, 0x5b, 0x2e, 0x80, 0x3e, 0xd7, 0x00, + 0x01, 0x74, 0x3b, 0xe8, 0x57, 0x00, 0x80, 0x7f, + 0x02, 0x00, 0x75, 0xd4, 0x80, 0x7f, 0x03, 0x00, + 0x74, 0x2c, 0xe8, 0x18, 0x0d, 0x43, 0x83, 0xc3, + 0x02, 0x53, 0x80, 0x3f, 0xff, 0x75, 0x03, 0xe8, + 0x49, 0x00, 0xe8, 0x16, 0x8f, 0x5b, 0x2e, 0x80, + 0x3e, 0xd7, 0x00, 0x01, 0x74, 0x10, 0xe8, 0x2c, + 0x00, 0x80, 0x7f, 0x02, 0x00, 0x75, 0xdf, 0x43, + 0x80, 0x7f, 0x02, 0x00, 0x75, 0x9f, 0xa0, 0x96, + 0xda, 0x8b, 0x0e, 0xa0, 0xda, 0x8b, 0x16, 0xa2, + 0xda, 0xe8, 0x62, 0x00, 0xe8, 0x0f, 0x98, 0xc6, + 0x06, 0x33, 0x33, 0x01, 0xc6, 0x06, 0xdd, 0x1c, + 0x02, 0xe8, 0x50, 0x98, 0xc3, 0x4b, 0x43, 0x80, + 0x3f, 0x00, 0x75, 0xfa, 0x80, 0x7f, 0x01, 0x00, + 0x75, 0xf4, 0xc3, 0x60, 0xb8, 0x5a, 0x00, 0xe8, + 0xaa, 0x0c, 0x61, 0x43, 0xc3, 0x06, 0xb8, 0x69, + 0x1c, 0x8e, 0xc0, 0xbe, 0xf2, 0xdb, 0x33, 0xc9, + 0x26, 0x8a, 0x07, 0x8a, 0xe0, 0x26, 0x0a, 0x67, + 0x01, 0x26, 0x0a, 0x67, 0x02, 0x26, 0x0a, 0x67, + 0x03, 0x74, 0x12, 0x88, 0x04, 0x41, 0x81, 0xf9, + 0xcc, 0x07, 0x72, 0x05, 0xb0, 0x39, 0xe9, 0x87, + 0xa0, 0x43, 0x46, 0xeb, 0xdb, 0x33, 0xc0, 0x89, + 0x04, 0x89, 0x44, 0x02, 0x07, 0xc3, 0xe8, 0x0e, + 0x00, 0xc6, 0x06, 0xdc, 0x1c, 0x02, 0xe8, 0x7d, + 0x15, 0xc6, 0x06, 0xdc, 0x1c, 0x03, 0xc3, 0xbf, + 0xc7, 0x32, 0xb3, 0x1b, 0x48, 0xf6, 0xe3, 0x03, + 0xf8, 0x89, 0x0d, 0xc6, 0x06, 0x34, 0x33, 0x00, + 0x52, 0x57, 0xe8, 0x9e, 0x96, 0x5f, 0x5a, 0x52, + 0x57, 0xe8, 0x69, 0x18, 0x5f, 0x57, 0xa1, 0x7a, + 0x32, 0x0b, 0xc0, 0x74, 0x1f, 0x40, 0x3b, 0x05, + 0x75, 0x1a, 0xe8, 0x48, 0x96, 0xa0, 0x49, 0x32, + 0xb4, 0x04, 0x8a, 0x2e, 0x7c, 0x32, 0x06, 0xff, + 0x1e, 0x4a, 0x32, 0x07, 0xb8, 0x3b, 0x0b, 0x8e, + 0xd8, 0xe8, 0x6f, 0x96, 0x5f, 0x5a, 0x39, 0x15, + 0x76, 0xcd, 0xc6, 0x06, 0x34, 0x33, 0x01, 0xc7, + 0x06, 0x7a, 0x32, 0x00, 0x00, 0xc3, 0x60, 0xe8, + 0xa5, 0x92, 0x61, 0xbf, 0xc7, 0x32, 0xb3, 0x1b, + 0x48, 0xf6, 0xe3, 0x03, 0xf8, 0x89, 0x0d, 0xc6, + 0x06, 0x34, 0x33, 0x00, 0x52, 0x57, 0xe8, 0x42, + 0x96, 0x5f, 0x5a, 0x52, 0x57, 0xe8, 0x08, 0xf5, + 0xe8, 0xa4, 0x0c, 0xe8, 0x07, 0x18, 0xe8, 0x25, + 0x15, 0x5f, 0x57, 0xa1, 0x7a, 0x32, 0x0b, 0xc0, + 0x74, 0x1f, 0x40, 0x3b, 0x05, 0x75, 0x1a, 0xe8, + 0xe3, 0x95, 0xa0, 0x49, 0x32, 0xb4, 0x04, 0x8a, + 0x2e, 0x7c, 0x32, 0x06, 0xff, 0x1e, 0x4a, 0x32, + 0x07, 0xb8, 0x3b, 0x0b, 0x8e, 0xd8, 0xe8, 0x0a, + 0x96, 0x5f, 0x5a, 0x33, 0xc0, 0x80, 0x3e, 0xe1, + 0xc3, 0x00, 0x75, 0x1f, 0x8b, 0x05, 0xe8, 0x1a, + 0x93, 0xc6, 0x06, 0xcf, 0x00, 0x04, 0x72, 0x13, + 0xe8, 0xe1, 0x92, 0xc6, 0x06, 0xcf, 0x00, 0x02, + 0x72, 0x09, 0x33, 0xc0, 0xa2, 0xcf, 0x00, 0x39, + 0x15, 0x76, 0xa0, 0x50, 0xc6, 0x06, 0x34, 0x33, + 0x01, 0xc7, 0x06, 0x7a, 0x32, 0x00, 0x00, 0xc6, + 0x06, 0xdc, 0x1c, 0x02, 0xe8, 0x8f, 0x14, 0xc6, + 0x06, 0xdc, 0x1c, 0x03, 0xe8, 0xee, 0x91, 0x58, + 0xc3, 0x53, 0xbf, 0xc7, 0x32, 0xb3, 0x1b, 0x48, + 0xf6, 0xe3, 0x03, 0xf8, 0x89, 0x0d, 0x5b, 0x51, + 0x52, 0x57, 0xe8, 0xc6, 0x8d, 0x5f, 0x5a, 0x59, + 0x51, 0x52, 0x57, 0xe8, 0x77, 0x17, 0x2e, 0x80, + 0x3e, 0xd7, 0x00, 0x01, 0x74, 0x24, 0x80, 0x3e, + 0x96, 0x32, 0x00, 0x74, 0x08, 0xbb, 0x92, 0x32, + 0xe8, 0xd3, 0x94, 0x72, 0x15, 0xe8, 0xab, 0x92, + 0x72, 0x10, 0xe8, 0x77, 0x92, 0x72, 0x0b, 0x5f, + 0x5a, 0x59, 0x39, 0x15, 0x76, 0xd2, 0x89, 0x0d, + 0xeb, 0xce, 0x5f, 0x5a, 0x59, 0xa1, 0xa4, 0xda, + 0x89, 0x05, 0xc6, 0x06, 0x33, 0x33, 0x01, 0xc6, + 0x06, 0xdd, 0x1c, 0x02, 0xc6, 0x06, 0xdb, 0x1c, + 0x01, 0xc6, 0x06, 0xdc, 0x1c, 0x02, 0xe8, 0x1d, + 0x14, 0xc6, 0x06, 0x33, 0x33, 0x00, 0xc6, 0x06, + 0xdc, 0x1c, 0x03, 0xc6, 0x06, 0xdd, 0x1c, 0x03, + 0xc6, 0x06, 0xdb, 0x1c, 0x00, 0xc3, 0x50, 0x57, + 0x56, 0xe8, 0x41, 0xfe, 0x5e, 0x5f, 0x58, 0x50, + 0x33, 0xd2, 0x8a, 0xd0, 0x4a, 0xd1, 0xe2, 0xbb, + 0x47, 0x33, 0x03, 0xda, 0x89, 0x37, 0x2b, 0xda, + 0x8a, 0xd4, 0x4a, 0xd1, 0xe2, 0x03, 0xda, 0x89, + 0x3f, 0xe8, 0xc8, 0x95, 0xc6, 0x06, 0x33, 0x33, + 0x01, 0xc6, 0x06, 0xdd, 0x1c, 0x02, 0xe8, 0xd5, + 0x13, 0xc6, 0x06, 0x33, 0x33, 0x00, 0xc6, 0x06, + 0xdd, 0x1c, 0x03, 0x58, 0x50, 0x98, 0xbf, 0xc7, + 0x32, 0xb3, 0x1b, 0x48, 0xf6, 0xe3, 0x03, 0xf8, + 0x89, 0x3e, 0x41, 0x33, 0xc7, 0x05, 0x01, 0x00, + 0x58, 0x8a, 0xc4, 0x98, 0xbf, 0xc7, 0x32, 0xb3, + 0x1b, 0x48, 0xf6, 0xe3, 0x03, 0xf8, 0x89, 0x3e, + 0x43, 0x33, 0xc7, 0x05, 0x01, 0x00, 0xbb, 0xf2, + 0xdb, 0x83, 0xeb, 0x02, 0x83, 0xc3, 0x02, 0x53, + 0xa0, 0x45, 0x33, 0xa2, 0xe7, 0x1c, 0xe8, 0x6e, + 0x06, 0x80, 0x3f, 0xff, 0x75, 0x03, 0xe8, 0xc5, + 0x00, 0x8b, 0x3e, 0x41, 0x33, 0xe8, 0xd3, 0x8c, + 0x5b, 0x53, 0xe8, 0x88, 0x16, 0x8b, 0x3e, 0x43, + 0x33, 0xc7, 0x05, 0x01, 0x00, 0x2e, 0x80, 0x3e, + 0xd7, 0x00, 0x01, 0x74, 0x19, 0x80, 0x3e, 0x96, + 0x32, 0x00, 0x74, 0x08, 0xbb, 0x92, 0x32, 0xe8, + 0xdc, 0x93, 0x72, 0x0a, 0xe8, 0xb4, 0x91, 0x72, + 0x05, 0xe8, 0x80, 0x91, 0x73, 0xd4, 0x5b, 0x2e, + 0x80, 0x3e, 0xd7, 0x00, 0x01, 0x74, 0x76, 0xe8, + 0x6b, 0xfd, 0x80, 0x7f, 0x02, 0x00, 0x75, 0xa4, + 0x80, 0x7f, 0x03, 0x00, 0x74, 0x67, 0x43, 0x83, + 0xc3, 0x02, 0x53, 0xa0, 0x46, 0x33, 0xa2, 0xe7, + 0x1c, 0xe8, 0x0b, 0x06, 0x80, 0x3f, 0xff, 0x75, + 0x03, 0xe8, 0x62, 0x00, 0x8b, 0x3e, 0x43, 0x33, + 0xe8, 0x70, 0x8c, 0x5b, 0x53, 0xe8, 0x25, 0x16, + 0x8b, 0x3e, 0x41, 0x33, 0xc7, 0x05, 0x01, 0x00, + 0x2e, 0x80, 0x3e, 0xd7, 0x00, 0x01, 0x74, 0x19, + 0x80, 0x3e, 0x96, 0x32, 0x00, 0x74, 0x08, 0xbb, + 0x92, 0x32, 0xe8, 0x79, 0x93, 0x72, 0x0a, 0xe8, + 0x51, 0x91, 0x72, 0x05, 0xe8, 0x1d, 0x91, 0x73, + 0xd4, 0x5b, 0x2e, 0x80, 0x3e, 0xd7, 0x00, 0x01, + 0x74, 0x13, 0xe8, 0x08, 0xfd, 0x80, 0x7f, 0x02, + 0x00, 0x75, 0xa4, 0x43, 0x80, 0x7f, 0x02, 0x00, + 0x74, 0x03, 0xe9, 0x37, 0xff, 0xe8, 0xaf, 0x05, + 0xe8, 0xf3, 0x94, 0xc6, 0x06, 0x33, 0x33, 0x01, + 0xc6, 0x06, 0xdd, 0x1c, 0x02, 0xc3, 0x60, 0x8b, + 0x3e, 0x41, 0x33, 0xc7, 0x05, 0x01, 0x00, 0x8b, + 0x3e, 0x43, 0x33, 0xc7, 0x05, 0x01, 0x00, 0xc6, + 0x06, 0x33, 0x33, 0x01, 0xc6, 0x06, 0xdd, 0x1c, + 0x02, 0xe8, 0xa2, 0x12, 0xc6, 0x06, 0x33, 0x33, + 0x00, 0xc6, 0x06, 0xdd, 0x1c, 0x03, 0xb8, 0x5a, + 0x00, 0xe8, 0x78, 0x09, 0x8b, 0x3e, 0x41, 0x33, + 0xc7, 0x05, 0x01, 0x00, 0x8b, 0x3e, 0x43, 0x33, + 0xc7, 0x05, 0x01, 0x00, 0x61, 0x43, 0xc3, 0x98, + 0x50, 0x56, 0xe8, 0xb8, 0xfc, 0x5e, 0x58, 0x50, + 0x48, 0xd1, 0xe0, 0xbb, 0x47, 0x33, 0x03, 0xd8, + 0x89, 0x37, 0xe8, 0x4f, 0x94, 0xc6, 0x06, 0x33, + 0x33, 0x01, 0xc6, 0x06, 0xdd, 0x1c, 0x02, 0xe8, + 0x5c, 0x12, 0xc6, 0x06, 0x33, 0x33, 0x00, 0xc6, + 0x06, 0xdd, 0x1c, 0x03, 0x58, 0xbf, 0xc7, 0x32, + 0xb3, 0x1b, 0x48, 0xf6, 0xe3, 0x03, 0xf8, 0x89, + 0x3e, 0x41, 0x33, 0xc7, 0x05, 0x01, 0x00, 0xbb, + 0xf0, 0xdb, 0x83, 0xc3, 0x02, 0x53, 0xa0, 0x45, + 0x33, 0xa2, 0xe7, 0x1c, 0xe8, 0x10, 0x05, 0x80, + 0x3f, 0xff, 0x75, 0x03, 0xe8, 0x53, 0x00, 0x8b, + 0x3e, 0x41, 0x33, 0xe8, 0x75, 0x8b, 0x5b, 0x53, + 0xe8, 0x2a, 0x15, 0x2e, 0x80, 0x3e, 0xd7, 0x00, + 0x01, 0x74, 0x19, 0x80, 0x3e, 0x96, 0x32, 0x00, + 0x74, 0x08, 0xbb, 0x92, 0x32, 0xe8, 0x86, 0x92, + 0x72, 0x0a, 0xe8, 0x5e, 0x90, 0x72, 0x05, 0xe8, + 0x2a, 0x90, 0x73, 0xdc, 0x5b, 0x2e, 0x80, 0x3e, + 0xd7, 0x00, 0x01, 0x74, 0x09, 0xe8, 0x15, 0xfc, + 0x80, 0x7f, 0x02, 0x00, 0x75, 0xac, 0xe8, 0x26, + 0x00, 0xe8, 0xc3, 0x04, 0xe8, 0x07, 0x94, 0xc6, + 0x06, 0x33, 0x33, 0x01, 0xc6, 0x06, 0xdd, 0x1c, + 0x02, 0xc3, 0x60, 0xe8, 0x11, 0x00, 0xb8, 0x5a, + 0x00, 0xe8, 0xb0, 0x08, 0x8b, 0x3e, 0x41, 0x33, + 0xc7, 0x05, 0x01, 0x00, 0x61, 0x43, 0xc3, 0x8b, + 0x3e, 0x41, 0x33, 0xc7, 0x05, 0x01, 0x00, 0xc6, + 0x06, 0x33, 0x33, 0x01, 0xc6, 0x06, 0xdd, 0x1c, + 0x02, 0xe8, 0xaa, 0x11, 0xc6, 0x06, 0x33, 0x33, + 0x00, 0xc6, 0x06, 0xdd, 0x1c, 0x03, 0xc3, 0xb0, + 0xe7, 0xb4, 0x00, 0xbf, 0x01, 0x00, 0xb3, 0x01, + 0xb7, 0x01, 0xb1, 0x01, 0xb5, 0x15, 0xb2, 0x01, + 0xb6, 0x01, 0xe8, 0x9b, 0x02, 0xbb, 0x47, 0x33, + 0xc7, 0x07, 0x98, 0x03, 0xc6, 0x06, 0x96, 0xda, + 0x01, 0xc3, 0xe8, 0xda, 0xff, 0xbb, 0x47, 0x33, + 0xc7, 0x07, 0x9a, 0x03, 0xc3, 0xe8, 0xcf, 0xff, + 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x99, 0x03, 0xc3, + 0xb0, 0xef, 0xb4, 0x00, 0xbf, 0x01, 0x00, 0xb3, + 0x01, 0xb7, 0x01, 0xb1, 0x01, 0xb5, 0x14, 0xb2, + 0x01, 0xb6, 0x01, 0xe8, 0x62, 0x02, 0xbb, 0x47, + 0x33, 0xc7, 0x07, 0x59, 0x03, 0xc6, 0x06, 0x96, + 0xda, 0x01, 0xc3, 0xb0, 0xec, 0xb4, 0x01, 0xbf, + 0x01, 0x00, 0xb3, 0x01, 0xb7, 0x01, 0xb1, 0x01, + 0xb5, 0x14, 0xb2, 0x01, 0xb6, 0x01, 0xe8, 0x3f, + 0x02, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x2d, 0x03, + 0xc6, 0x06, 0x96, 0xda, 0x01, 0xc3, 0xb0, 0xec, + 0xb4, 0x00, 0xbf, 0x01, 0x00, 0xb3, 0x01, 0xb7, + 0x01, 0xb1, 0x01, 0xb5, 0x14, 0xb2, 0x01, 0xb6, + 0x01, 0xe8, 0x1c, 0x02, 0xbb, 0x47, 0x33, 0xc7, + 0x07, 0x2e, 0x03, 0xc6, 0x06, 0x96, 0xda, 0x01, + 0xc3, 0xe8, 0xda, 0xff, 0xbb, 0x47, 0x33, 0xc7, + 0x07, 0x40, 0x03, 0xc3, 0xe8, 0xcf, 0xff, 0xbb, + 0x47, 0x33, 0xc7, 0x07, 0x58, 0x03, 0xc3, 0xe8, + 0xc4, 0xff, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0xaa, + 0x03, 0xc3, 0xb0, 0xd0, 0xb4, 0x02, 0xbf, 0x01, + 0x00, 0xb3, 0x01, 0xb7, 0x01, 0xb1, 0x01, 0xb5, + 0x22, 0xb2, 0x01, 0xb6, 0x01, 0xe8, 0xd8, 0x01, + 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x29, 0x03, 0xc6, + 0x06, 0x96, 0xda, 0x01, 0xc3, 0xb0, 0xe5, 0xb4, + 0x01, 0xb3, 0x01, 0xb7, 0x01, 0xb1, 0x02, 0xb5, + 0x13, 0xb2, 0x14, 0xb6, 0x14, 0xbf, 0x01, 0x00, + 0xe8, 0xb5, 0x01, 0xbb, 0x47, 0x33, 0xc7, 0x07, + 0x0b, 0x02, 0xc6, 0x06, 0x96, 0xda, 0x01, 0xc3, + 0xb0, 0xd8, 0xb4, 0x01, 0xb3, 0x01, 0xb7, 0x01, + 0xb1, 0x01, 0xb5, 0x18, 0xb2, 0x18, 0xb6, 0x18, + 0xbf, 0x01, 0x00, 0xe8, 0x92, 0x01, 0xbb, 0x47, + 0x33, 0xc7, 0x07, 0x0a, 0x02, 0xc6, 0x06, 0x96, + 0xda, 0x01, 0xc3, 0xb0, 0xe5, 0xb4, 0x07, 0xb3, + 0x01, 0xb7, 0x02, 0xb1, 0x03, 0xb5, 0x20, 0xb2, + 0x21, 0xb6, 0x22, 0xbf, 0x03, 0x00, 0xe8, 0x6f, + 0x01, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0xf6, 0x01, + 0xc6, 0x06, 0x96, 0xda, 0x01, 0xc3, 0xb0, 0xd9, + 0xb4, 0x01, 0xb3, 0x01, 0xb7, 0x01, 0xb1, 0x01, + 0xb5, 0x14, 0xb2, 0x15, 0xb6, 0x15, 0xbf, 0x01, + 0x00, 0xe8, 0x4c, 0x01, 0xbb, 0x47, 0x33, 0xc7, + 0x07, 0x11, 0x02, 0xc6, 0x06, 0x96, 0xda, 0x01, + 0xc3, 0xb0, 0xd9, 0xb4, 0x00, 0xb3, 0x01, 0xb7, + 0x01, 0xb1, 0x01, 0xb5, 0x09, 0xb2, 0x09, 0xb6, + 0x09, 0xbf, 0x01, 0x00, 0xe8, 0x29, 0x01, 0xbb, + 0x47, 0x33, 0xc7, 0x07, 0x22, 0x02, 0xc6, 0x06, + 0x96, 0xda, 0x01, 0xc3, 0xb0, 0xe5, 0xb4, 0x01, + 0xbf, 0x01, 0x00, 0xb3, 0x01, 0xb7, 0x01, 0xb1, + 0x01, 0xb5, 0x14, 0xb2, 0x15, 0xb6, 0x15, 0xe8, + 0x06, 0x01, 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x02, + 0x0c, 0x02, 0xc6, 0x06, 0x96, 0xda, 0x02, 0xc3, + 0xb0, 0xe5, 0xb4, 0x04, 0xbf, 0x01, 0x00, 0xb3, + 0x01, 0xb7, 0x01, 0xb1, 0x01, 0xb5, 0x1f, 0xb2, + 0x01, 0xb6, 0x01, 0xe8, 0xe2, 0x00, 0xbb, 0x47, + 0x33, 0xc7, 0x47, 0x02, 0xa0, 0x02, 0xc6, 0x06, + 0x96, 0xda, 0x02, 0xc3, 0xb0, 0xd0, 0xb4, 0x01, + 0xbf, 0x03, 0x00, 0xb3, 0x03, 0xb7, 0x03, 0xb1, + 0x01, 0xb5, 0x0d, 0xb2, 0x03, 0xb6, 0x03, 0xe8, + 0xbe, 0x00, 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x02, + 0x9a, 0x02, 0xc6, 0x06, 0x96, 0xda, 0x02, 0xc3, + 0xb0, 0xd0, 0xb4, 0x06, 0xbf, 0x01, 0x00, 0xb3, + 0x01, 0xb7, 0x01, 0xb1, 0x01, 0xb5, 0x12, 0xb2, + 0x01, 0xb6, 0x01, 0xe8, 0x9a, 0x00, 0xbb, 0x47, + 0x33, 0xc7, 0x07, 0x1d, 0x03, 0xc6, 0x06, 0x96, + 0xda, 0x01, 0xc3, 0xb0, 0xd0, 0xb4, 0x01, 0xbf, + 0x01, 0x00, 0xb3, 0x01, 0xb7, 0x01, 0xb1, 0x01, + 0xb5, 0x14, 0xb2, 0x01, 0xb6, 0x01, 0xe8, 0x77, + 0x00, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0xbe, 0x02, + 0xc6, 0x06, 0x96, 0xda, 0x01, 0xc3, 0xb0, 0xef, + 0xb4, 0x01, 0xbf, 0x01, 0x00, 0xb3, 0x01, 0xb7, + 0x01, 0xb1, 0x01, 0xb5, 0x14, 0xb2, 0x01, 0xb6, + 0x01, 0xe8, 0x54, 0x00, 0xbb, 0x47, 0x33, 0xc7, + 0x07, 0xc5, 0x02, 0xc6, 0x06, 0x96, 0xda, 0x01, + 0xc3, 0xb0, 0xef, 0xb4, 0x01, 0xbf, 0x01, 0x00, + 0xb3, 0x01, 0xb7, 0x01, 0xb1, 0x01, 0xb5, 0x03, + 0xb2, 0x01, 0xb6, 0x01, 0xe8, 0x31, 0x00, 0xbb, + 0x47, 0x33, 0xc7, 0x07, 0xd7, 0x02, 0xc6, 0x06, + 0x96, 0xda, 0x01, 0xc3, 0xb0, 0xd0, 0xb4, 0x00, + 0xb3, 0x01, 0xb7, 0x01, 0xb1, 0x01, 0xb5, 0x18, + 0xb2, 0x01, 0xb6, 0x01, 0xbf, 0x01, 0x00, 0xe8, + 0x0e, 0x00, 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x06, + 0x17, 0x03, 0xc6, 0x06, 0x96, 0xda, 0x04, 0xc3, + 0xa2, 0xe7, 0x1c, 0x88, 0x26, 0x97, 0xda, 0x89, + 0x3e, 0xa4, 0xda, 0x88, 0x1e, 0x98, 0xda, 0x88, + 0x3e, 0x9a, 0xda, 0x88, 0x0e, 0x9c, 0xda, 0x88, + 0x2e, 0x9e, 0xda, 0x88, 0x16, 0xa0, 0xda, 0x88, + 0x36, 0xa2, 0xda, 0xc3, 0x26, 0x8b, 0x0f, 0x26, + 0x8b, 0x57, 0x02, 0x26, 0x8b, 0x77, 0x04, 0x8b, + 0xf9, 0x83, 0xc3, 0x06, 0x1e, 0x8e, 0xd8, 0x8b, + 0xcf, 0x26, 0x8a, 0x07, 0x3c, 0xff, 0x74, 0x02, + 0x88, 0x04, 0x43, 0x46, 0xe2, 0xf3, 0x81, 0xc6, + 0x40, 0x01, 0x2b, 0xf7, 0x4a, 0x75, 0xe8, 0x1f, + 0xc3, 0x50, 0x32, 0xe4, 0xe8, 0x66, 0x8a, 0x58, + 0xc6, 0x47, 0x12, 0x01, 0xc3, 0x50, 0x32, 0xe4, + 0xe8, 0x5a, 0x8a, 0x58, 0xc6, 0x47, 0x12, 0x00, + 0xc3, 0xb4, 0x00, 0xe8, 0x4f, 0x8a, 0x83, 0xc3, + 0x13, 0xfc, 0xac, 0x3c, 0xff, 0x74, 0x05, 0x88, + 0x07, 0x43, 0xeb, 0xf6, 0xc3, 0x50, 0x51, 0x52, + 0xb4, 0x00, 0xe8, 0x38, 0x8a, 0x5a, 0x59, 0x58, + 0x89, 0x4f, 0x09, 0x89, 0x57, 0x0b, 0x89, 0x4f, + 0x0d, 0x89, 0x57, 0x0f, 0x88, 0x67, 0x11, 0xc3, + 0xe8, 0x04, 0x00, 0xe8, 0xc8, 0xf8, 0xc3, 0x32, + 0xe4, 0x50, 0xe8, 0x2f, 0x90, 0x58, 0x50, 0xbe, + 0xc7, 0x32, 0xbb, 0x47, 0x33, 0x48, 0xb1, 0x1b, + 0xf6, 0xe1, 0x03, 0xf0, 0x06, 0x8b, 0x44, 0x16, + 0x8e, 0xc0, 0xba, 0x02, 0x00, 0xbe, 0x00, 0x00, + 0x26, 0x8b, 0x34, 0x2b, 0xf2, 0x8b, 0xc6, 0xb1, + 0x03, 0xf6, 0xf1, 0x07, 0x8b, 0xd0, 0xb9, 0x01, + 0x00, 0x51, 0x52, 0xe8, 0x75, 0x8f, 0x5a, 0x59, + 0x58, 0xc3, 0xe8, 0xc2, 0xff, 0xe8, 0x97, 0xf8, + 0xc3, 0xe8, 0xeb, 0x00, 0xe8, 0xb1, 0xff, 0xe8, + 0x2c, 0x90, 0xc6, 0x06, 0x33, 0x33, 0x01, 0xc6, + 0x06, 0xdd, 0x1c, 0x02, 0xc3, 0xc6, 0x06, 0x27, + 0xc4, 0x00, 0xe8, 0xd2, 0x00, 0xe8, 0x9f, 0xff, + 0xe8, 0xcb, 0xf8, 0xa3, 0x3f, 0x33, 0x0b, 0xc0, + 0x74, 0x4d, 0xa1, 0x52, 0x72, 0xa3, 0x50, 0x72, + 0xa1, 0x50, 0x72, 0x3b, 0x06, 0x23, 0xc4, 0x75, + 0x3e, 0xa1, 0x1f, 0xc4, 0xe8, 0xbd, 0x0d, 0x3b, + 0x06, 0x25, 0xc4, 0x75, 0x32, 0xa0, 0xce, 0x00, + 0x0a, 0xc0, 0x74, 0x06, 0x3a, 0x06, 0xcf, 0x00, + 0x75, 0x25, 0xc6, 0x06, 0x27, 0xc4, 0x01, 0xa1, + 0x3f, 0x33, 0x3b, 0x06, 0x3b, 0x33, 0x72, 0x17, + 0x3b, 0x06, 0x3d, 0x33, 0x77, 0x11, 0xe8, 0x0e, + 0x00, 0xa3, 0x52, 0x72, 0xa3, 0x50, 0x72, 0xa3, + 0x1f, 0xc4, 0xa2, 0xcf, 0x00, 0xf9, 0xc3, 0x33, + 0xc0, 0xa3, 0x23, 0xc4, 0xa3, 0x25, 0xc4, 0xa3, + 0x3b, 0x33, 0xa3, 0x3d, 0x33, 0xf8, 0xc3, 0xe8, + 0x65, 0x00, 0xe8, 0x50, 0x8f, 0xe8, 0x64, 0x8f, + 0xe8, 0xd8, 0x8e, 0xe8, 0x38, 0x01, 0xc3, 0xe8, + 0x55, 0x00, 0xc6, 0x06, 0xdc, 0x64, 0x00, 0xe8, + 0xe8, 0xff, 0xc6, 0x06, 0xdc, 0x64, 0x01, 0xc3, + 0xe8, 0xdc, 0xff, 0xe8, 0x16, 0x00, 0xc3, 0xe8, + 0xd8, 0xff, 0xe8, 0x0f, 0x00, 0xc3, 0xe8, 0xde, + 0xff, 0xe8, 0x08, 0x00, 0xc3, 0xe8, 0xda, 0xff, + 0xe8, 0x01, 0x00, 0xc3, 0xe8, 0x64, 0x90, 0xe8, + 0x6c, 0x8f, 0xe8, 0x44, 0x23, 0xc6, 0x06, 0x33, + 0x33, 0x01, 0xc6, 0x06, 0xdd, 0x1c, 0x02, 0xc6, + 0x06, 0xdc, 0x1c, 0x02, 0xe8, 0x2f, 0x0d, 0xc6, + 0x06, 0x33, 0x33, 0x00, 0xc6, 0x06, 0xdd, 0x1c, + 0x03, 0xc6, 0x06, 0xdc, 0x1c, 0x03, 0xc3, 0xc6, + 0x06, 0xda, 0x1c, 0x01, 0xc6, 0x06, 0xdb, 0x1c, + 0x01, 0xe8, 0x12, 0x0d, 0xc6, 0x06, 0xda, 0x1c, + 0x00, 0xc6, 0x06, 0xdb, 0x1c, 0x00, 0xc3, 0xe8, + 0xd3, 0x8e, 0xe8, 0xe7, 0x8e, 0xe8, 0x5b, 0x8e, + 0xe8, 0x47, 0x24, 0xc6, 0x06, 0x07, 0x66, 0x01, + 0xa1, 0x7a, 0x32, 0x3a, 0x06, 0x07, 0x66, 0x75, + 0x03, 0xe8, 0xe9, 0x8d, 0xbb, 0xa4, 0x32, 0xe8, + 0x64, 0x8d, 0x73, 0xf8, 0x8b, 0x0e, 0x90, 0x32, + 0xe8, 0x48, 0x8d, 0xc6, 0x06, 0x33, 0x33, 0x01, + 0xc6, 0x06, 0xdd, 0x1c, 0x02, 0xc6, 0x06, 0xdc, + 0x1c, 0x02, 0xe8, 0x1f, 0x13, 0xe8, 0xfc, 0x0f, + 0xe8, 0x13, 0x0f, 0xe8, 0x4d, 0x13, 0x72, 0x77, + 0xe8, 0x40, 0x10, 0xe8, 0xa9, 0x11, 0xa0, 0x07, + 0x66, 0xfe, 0xc8, 0x3a, 0x06, 0x35, 0x33, 0x75, + 0x12, 0x8b, 0x1e, 0x37, 0x33, 0x8b, 0x36, 0x39, + 0x33, 0xe8, 0xfb, 0x86, 0xc6, 0x06, 0xdb, 0x1c, + 0x02, 0xeb, 0x0b, 0x3a, 0x06, 0x36, 0x33, 0x75, + 0x05, 0xc6, 0x06, 0xdb, 0x1c, 0x01, 0xe8, 0xf5, + 0x0e, 0xa1, 0x7a, 0x32, 0x0b, 0xc0, 0x74, 0x1e, + 0x40, 0x3a, 0x06, 0x07, 0x66, 0x75, 0x17, 0xa0, + 0x49, 0x32, 0xb4, 0x04, 0x8a, 0x2e, 0x7c, 0x32, + 0xff, 0x1e, 0x4a, 0x32, 0xb8, 0x3b, 0x0b, 0x8e, + 0xd8, 0x8e, 0xc0, 0xe8, 0xa5, 0x8d, 0xe8, 0xff, + 0x8a, 0xe8, 0x45, 0x18, 0xe8, 0xf8, 0x11, 0xe8, + 0x10, 0x0f, 0xe8, 0xba, 0x89, 0xc6, 0x06, 0x33, + 0x33, 0x00, 0xc6, 0x06, 0xdd, 0x1c, 0x03, 0xc6, + 0x06, 0xdc, 0x1c, 0x03, 0xe9, 0x51, 0xff, 0xc7, + 0x06, 0x7a, 0x32, 0x00, 0x00, 0xc3, 0xe8, 0x7d, + 0x90, 0xe8, 0x86, 0x23, 0xc6, 0x06, 0x07, 0x66, + 0x01, 0xa1, 0x7a, 0x32, 0x3a, 0x06, 0x07, 0x66, + 0x75, 0x03, 0xe8, 0x28, 0x8d, 0xbb, 0xa4, 0x32, + 0xe8, 0xa3, 0x8c, 0x73, 0xf8, 0x8b, 0x0e, 0x90, + 0x32, 0xe8, 0x87, 0x8c, 0xc6, 0x06, 0x33, 0x33, + 0x01, 0xc6, 0x06, 0xdd, 0x1c, 0x02, 0xc6, 0x06, + 0xdc, 0x1c, 0x02, 0xe8, 0x5e, 0x12, 0xe8, 0x3b, + 0x0f, 0xe8, 0x8f, 0x12, 0x72, 0x48, 0xe8, 0x82, + 0x0f, 0xe8, 0xeb, 0x10, 0xa1, 0x7a, 0x32, 0x0b, + 0xc0, 0x74, 0x1e, 0x40, 0x3a, 0x06, 0x07, 0x66, + 0x75, 0x17, 0xa0, 0x49, 0x32, 0xb4, 0x04, 0x8a, + 0x2e, 0x7c, 0x32, 0xff, 0x1e, 0x4a, 0x32, 0xb8, + 0x3b, 0x0b, 0x8e, 0xd8, 0x8e, 0xc0, 0xe8, 0x12, + 0x8d, 0xe8, 0x6c, 0x8a, 0xe8, 0xb2, 0x17, 0xe8, + 0x65, 0x11, 0xe8, 0x2a, 0x89, 0xc6, 0x06, 0x33, + 0x33, 0x00, 0xc6, 0x06, 0xdd, 0x1c, 0x03, 0xc6, + 0x06, 0xdc, 0x1c, 0x03, 0xeb, 0x83, 0xc7, 0x06, + 0x7a, 0x32, 0x00, 0x00, 0xc3, 0xc6, 0x06, 0x27, + 0xc4, 0x00, 0xe8, 0x32, 0x89, 0xe8, 0xf2, 0x22, + 0xc6, 0x06, 0x07, 0x66, 0x01, 0xa1, 0x7a, 0x32, + 0x3a, 0x06, 0x07, 0x66, 0x75, 0x03, 0xe8, 0x94, + 0x8c, 0xc6, 0x06, 0xdd, 0x1c, 0x03, 0xc6, 0x06, + 0xdc, 0x1c, 0x03, 0xc6, 0x06, 0xda, 0x1c, 0x01, + 0xe8, 0xe0, 0x0b, 0x3d, 0x01, 0x00, 0x76, 0x05, + 0xc6, 0x06, 0xda, 0x1c, 0x02, 0xe8, 0xcc, 0x11, + 0xe8, 0xa9, 0x0e, 0xe8, 0xff, 0x0c, 0xe8, 0x5e, + 0x10, 0xe8, 0x11, 0x0d, 0xe8, 0x01, 0x8a, 0xe8, + 0x47, 0x17, 0xe8, 0xfa, 0x10, 0xe8, 0x48, 0x0d, + 0xe8, 0xbc, 0x88, 0xa0, 0x07, 0x66, 0x32, 0xe4, + 0xe8, 0xb0, 0x89, 0xc6, 0x06, 0xcf, 0x00, 0x04, + 0x73, 0x03, 0xe9, 0x8f, 0x00, 0xe8, 0x74, 0x89, + 0xc6, 0x06, 0xcf, 0x00, 0x02, 0x73, 0x03, 0xe9, + 0x82, 0x00, 0x33, 0xc0, 0xa2, 0xcf, 0x00, 0xbb, + 0xa4, 0x32, 0xe8, 0xb1, 0x8b, 0x73, 0x9a, 0x50, + 0x8b, 0x0e, 0x90, 0x32, 0xe8, 0x94, 0x8b, 0xc6, + 0x06, 0x33, 0x33, 0x01, 0xc6, 0x06, 0xdd, 0x1c, + 0x02, 0xc6, 0x06, 0xdc, 0x1c, 0x02, 0xe8, 0x6b, + 0x11, 0xe8, 0x48, 0x0e, 0xe8, 0x9e, 0x0c, 0xe8, + 0x99, 0x11, 0x58, 0x72, 0x4f, 0xe8, 0x8b, 0x0e, + 0xe8, 0xf4, 0x0f, 0xe8, 0xa7, 0x0c, 0xa1, 0x7a, + 0x32, 0x0b, 0xc0, 0x74, 0x1e, 0x40, 0x3a, 0x06, + 0x07, 0x66, 0x75, 0x17, 0xa0, 0x49, 0x32, 0xb4, + 0x04, 0x8a, 0x2e, 0x7c, 0x32, 0xff, 0x1e, 0x4a, + 0x32, 0xb8, 0x3b, 0x0b, 0x8e, 0xd8, 0x8e, 0xc0, + 0xe8, 0x18, 0x8c, 0xe8, 0x72, 0x89, 0xe8, 0xb8, + 0x16, 0xe8, 0x6b, 0x10, 0xe8, 0xb9, 0x0c, 0xe8, + 0x2d, 0x88, 0xc6, 0x06, 0x33, 0x33, 0x00, 0xc6, + 0x06, 0xdd, 0x1c, 0x03, 0xc6, 0x06, 0xdc, 0x1c, + 0x03, 0xe9, 0x19, 0xff, 0x50, 0xc6, 0x06, 0xda, + 0x1c, 0x01, 0xe8, 0x40, 0x0c, 0xe8, 0x55, 0x0c, + 0xe8, 0x45, 0x89, 0xe8, 0x92, 0x0c, 0xe8, 0x06, + 0x88, 0xe8, 0x09, 0x88, 0x58, 0x8b, 0x0e, 0x52, + 0x72, 0x8b, 0x16, 0x3d, 0x33, 0x51, 0x52, 0xe8, + 0xa9, 0xfc, 0x72, 0x07, 0xe8, 0x5a, 0xfe, 0x5a, + 0x59, 0xf8, 0xc3, 0x89, 0x16, 0x3d, 0x33, 0xa1, + 0x7a, 0x32, 0x3a, 0x06, 0x07, 0x66, 0x75, 0x03, + 0xe8, 0x7a, 0x8b, 0xbb, 0xa4, 0x32, 0xe8, 0xf5, + 0x8a, 0x73, 0xf8, 0x8b, 0x0e, 0x90, 0x32, 0xe8, + 0xd9, 0x8a, 0xc6, 0x06, 0x33, 0x33, 0x01, 0xc6, + 0x06, 0xdd, 0x1c, 0x02, 0xc6, 0x06, 0xdc, 0x1c, + 0x02, 0xe8, 0xb0, 0x10, 0xe8, 0x8d, 0x0d, 0xe8, + 0xe1, 0x10, 0x72, 0x54, 0xa0, 0x07, 0x66, 0x32, + 0xe4, 0x3b, 0x06, 0x3d, 0x33, 0x73, 0x49, 0xe8, + 0xc9, 0x0d, 0xe8, 0x32, 0x0f, 0xa1, 0x7a, 0x32, + 0x0b, 0xc0, 0x74, 0x1e, 0x40, 0x3a, 0x06, 0x07, + 0x66, 0x75, 0x17, 0xa0, 0x49, 0x32, 0xb4, 0x04, + 0x8a, 0x2e, 0x7c, 0x32, 0xff, 0x1e, 0x4a, 0x32, + 0xb8, 0x3b, 0x0b, 0x8e, 0xd8, 0x8e, 0xc0, 0xe8, + 0x59, 0x8b, 0xe8, 0xb3, 0x88, 0xe8, 0xf9, 0x15, + 0xe8, 0xac, 0x0f, 0xe8, 0x71, 0x87, 0xc6, 0x06, + 0x33, 0x33, 0x00, 0xc6, 0x06, 0xdd, 0x1c, 0x03, + 0xc6, 0x06, 0xdc, 0x1c, 0x03, 0xe9, 0x77, 0xff, + 0x33, 0xc0, 0xa3, 0x7a, 0x32, 0xa3, 0x3d, 0x33, + 0x5a, 0x59, 0xf9, 0xc3, 0xb9, 0xe8, 0x03, 0xbb, + 0xac, 0x32, 0xe8, 0x56, 0x8a, 0xc7, 0x06, 0x52, + 0x72, 0x00, 0x00, 0xc7, 0x06, 0x50, 0x72, 0x00, + 0x00, 0xc7, 0x06, 0x1f, 0xc4, 0x00, 0x00, 0xe8, + 0x5d, 0x87, 0xe8, 0x7a, 0x01, 0x73, 0x09, 0xb9, + 0xe8, 0x03, 0xbb, 0xac, 0x32, 0xe8, 0x33, 0x8a, + 0xe8, 0xd2, 0x0c, 0xe8, 0xf0, 0x09, 0x33, 0xc0, + 0xa2, 0xcf, 0x00, 0xbb, 0xac, 0x32, 0xe8, 0x35, + 0x8a, 0x72, 0x1c, 0xe8, 0x0d, 0x88, 0xc6, 0x06, + 0xcf, 0x00, 0x04, 0x72, 0x0a, 0xe8, 0xd4, 0x87, + 0xc6, 0x06, 0xcf, 0x00, 0x02, 0x73, 0xcb, 0xe8, + 0x03, 0x87, 0xe8, 0x7a, 0xfc, 0xf9, 0xc3, 0xe8, + 0xfb, 0x86, 0xe8, 0x72, 0xfc, 0xf8, 0xc3, 0x0b, + 0xc0, 0x75, 0x01, 0xc3, 0x33, 0xdb, 0x8a, 0xd8, + 0x43, 0xbf, 0xc7, 0x32, 0xb0, 0x1b, 0xfe, 0xcc, + 0xf6, 0xe4, 0x03, 0xf8, 0x53, 0x57, 0x8b, 0x05, + 0x3b, 0xc3, 0x74, 0x07, 0xe8, 0x7e, 0x0c, 0x5f, + 0x5b, 0xeb, 0xf1, 0x5f, 0x5b, 0xc3, 0x0b, 0xc0, + 0x75, 0x01, 0xc3, 0x0a, 0xc0, 0x75, 0x01, 0xc3, + 0x33, 0xdb, 0x8a, 0xd8, 0xbf, 0xc7, 0x32, 0xb0, + 0x1b, 0xfe, 0xcc, 0xf6, 0xe4, 0x03, 0xf8, 0x53, + 0x57, 0x8a, 0x45, 0x1a, 0x3a, 0xc3, 0x74, 0x07, + 0xe8, 0x52, 0x0c, 0x5f, 0x5b, 0xeb, 0xf0, 0x5f, + 0x5b, 0xc3, 0xbb, 0xa8, 0x32, 0x8b, 0xc8, 0xe8, + 0xa1, 0x89, 0xe8, 0x40, 0x0c, 0xbb, 0xa8, 0x32, + 0xe8, 0xab, 0x89, 0x73, 0xf5, 0xc3, 0xb8, 0x32, + 0x00, 0xe8, 0xe6, 0xff, 0xc3, 0xb8, 0x64, 0x00, + 0xe8, 0xdf, 0xff, 0xc3, 0xbb, 0xa8, 0x32, 0x8b, + 0xc8, 0xe8, 0x7f, 0x89, 0xbb, 0xa8, 0x32, 0xe8, + 0x8c, 0x89, 0x73, 0xf8, 0xc3, 0x53, 0xb8, 0x10, + 0x00, 0xe8, 0xe8, 0xff, 0x5b, 0xc3, 0xa0, 0xe1, + 0xc3, 0x0a, 0xc0, 0x74, 0x14, 0xbb, 0x6f, 0xbb, + 0x83, 0xc3, 0x03, 0x8a, 0x27, 0x3a, 0xc4, 0x75, + 0xf7, 0x8b, 0x47, 0x01, 0xa3, 0xdc, 0xbb, 0xeb, + 0x1d, 0x80, 0x3e, 0x3d, 0x66, 0x06, 0x74, 0x01, + 0xc3, 0x80, 0x3e, 0xdb, 0xbb, 0x01, 0x74, 0x0e, + 0xbb, 0x57, 0x34, 0xe8, 0xaf, 0x80, 0xc7, 0x06, + 0x1f, 0xc4, 0x00, 0x00, 0xeb, 0x10, 0xe8, 0x2c, + 0x86, 0xc7, 0x06, 0x1f, 0xc4, 0x00, 0x00, 0xff, + 0x16, 0xdc, 0xbb, 0xe8, 0x41, 0x86, 0xc6, 0x06, + 0x3d, 0x66, 0x00, 0x33, 0xc0, 0xa3, 0x50, 0x72, + 0xa3, 0x52, 0x72, 0xa2, 0xe1, 0xc3, 0xe8, 0x7f, + 0x15, 0xc3, 0xc6, 0x06, 0xdb, 0xbb, 0x00, 0xbb, + 0x87, 0xbb, 0xe8, 0xfd, 0x1f, 0x8a, 0x07, 0x0a, + 0xc0, 0x74, 0x31, 0x8a, 0xc8, 0xa1, 0x1f, 0xc4, + 0xe8, 0x79, 0x08, 0x3a, 0xc1, 0x75, 0x26, 0x8a, + 0x67, 0x01, 0x3a, 0x26, 0x50, 0x72, 0x75, 0x1d, + 0xc6, 0x06, 0xdb, 0xbb, 0x01, 0x8b, 0x77, 0x03, + 0x8b, 0x7f, 0x05, 0x8a, 0x47, 0x02, 0xa2, 0xc3, + 0x64, 0x8b, 0x47, 0x07, 0xa3, 0xdc, 0xbb, 0xe8, + 0xc8, 0x1b, 0x72, 0x06, 0xc3, 0x83, 0xc3, 0x09, + 0xeb, 0xc3, 0xb0, 0x36, 0xe9, 0x49, 0x93, 0x83, + 0x3e, 0xc2, 0x00, 0x00, 0x74, 0x05, 0xe8, 0x21, + 0x00, 0xf8, 0xc3, 0xbb, 0x98, 0x32, 0x8b, 0x07, + 0x0b, 0x47, 0x02, 0x75, 0x06, 0xb9, 0x32, 0x00, + 0xe8, 0xa8, 0x88, 0xe8, 0xb8, 0x88, 0x72, 0x02, + 0xf8, 0xc3, 0xe8, 0x05, 0x00, 0xe8, 0x66, 0x00, + 0xf9, 0xc3, 0xbb, 0x98, 0x32, 0x33, 0xc0, 0x89, + 0x07, 0x89, 0x47, 0x02, 0xc3, 0xb8, 0x11, 0x00, + 0xba, 0x0c, 0x00, 0x8b, 0x1e, 0xc0, 0x00, 0x8b, + 0x0e, 0xc2, 0x00, 0x3b, 0xd8, 0x72, 0x1d, 0x3b, + 0xca, 0x72, 0x19, 0x05, 0x1e, 0x01, 0x81, 0xc2, + 0x8d, 0x00, 0x3b, 0xd8, 0x77, 0x0e, 0x3b, 0xca, + 0x77, 0x0a, 0xc6, 0x06, 0x6e, 0xc4, 0x01, 0xe8, + 0xc8, 0xff, 0xf8, 0xc3, 0xbb, 0x6e, 0xc4, 0x80, + 0x3f, 0x01, 0x74, 0x05, 0xc6, 0x07, 0x00, 0xf8, + 0xc3, 0xbb, 0x98, 0x32, 0x8b, 0x07, 0x0b, 0x47, + 0x02, 0xe8, 0xae, 0xff, 0xc6, 0x06, 0x6e, 0xc4, + 0x00, 0xf9, 0xc3, 0xb9, 0x19, 0x00, 0xbb, 0x98, + 0x32, 0xe8, 0x37, 0x88, 0xf8, 0xc3, 0xc6, 0x06, + 0xe1, 0xc3, 0x00, 0xc6, 0x06, 0xda, 0x1c, 0x01, + 0xe8, 0x4a, 0x09, 0xe8, 0x2d, 0x09, 0xe8, 0x79, + 0x00, 0xbf, 0x75, 0xc4, 0xb0, 0x01, 0xb9, 0x18, + 0x00, 0xfc, 0xf3, 0xaa, 0xa1, 0xbf, 0x32, 0xa3, + 0xac, 0x00, 0x33, 0xc0, 0xa3, 0xaa, 0x00, 0xb9, + 0x04, 0x00, 0xba, 0x54, 0x00, 0xe8, 0x90, 0x8e, + 0xe8, 0x9c, 0x00, 0xe8, 0x45, 0x02, 0xe8, 0xf4, + 0x84, 0xe8, 0xbc, 0x8a, 0xe8, 0xa4, 0x8a, 0xe8, + 0x13, 0x00, 0xe8, 0x1b, 0x86, 0xe8, 0x9a, 0x00, + 0xe8, 0x6f, 0x00, 0xe8, 0x01, 0x85, 0xc7, 0x06, + 0x52, 0x72, 0x00, 0x00, 0xc3, 0xe8, 0x9f, 0x87, + 0x80, 0x3e, 0xb0, 0x32, 0x01, 0x74, 0x05, 0xc6, + 0x06, 0xdc, 0x1c, 0x03, 0xc6, 0x06, 0xda, 0x1c, + 0x01, 0x83, 0x3e, 0x1f, 0xc4, 0x00, 0x74, 0x05, + 0xc6, 0x06, 0xda, 0x1c, 0x02, 0xe8, 0x4e, 0x07, + 0xc6, 0x06, 0xda, 0x1c, 0x00, 0x83, 0x3e, 0x1f, + 0xc4, 0x00, 0x74, 0x05, 0xc6, 0x06, 0xda, 0x1c, + 0x03, 0xc3, 0xc6, 0x06, 0x3d, 0x66, 0x00, 0xc7, + 0x06, 0x1f, 0xc4, 0x00, 0x00, 0xc6, 0x06, 0xc3, + 0x64, 0x00, 0xe8, 0x75, 0x1e, 0x80, 0x3e, 0xb0, + 0x32, 0x01, 0x74, 0x15, 0xe8, 0x22, 0x1d, 0xc6, + 0x06, 0xdc, 0x1c, 0x02, 0xc6, 0x06, 0xda, 0x1c, + 0x01, 0xe8, 0x12, 0x07, 0xc6, 0x06, 0xdc, 0x1c, + 0x03, 0xc3, 0x06, 0x1e, 0xb8, 0x00, 0xa0, 0x8e, + 0xc0, 0xa1, 0xb1, 0x32, 0x8e, 0xd8, 0xfc, 0xf3, + 0xa5, 0x1f, 0xe8, 0x5a, 0x84, 0x07, 0xc3, 0xe8, + 0x13, 0x01, 0xe8, 0x4c, 0x00, 0xe8, 0x2f, 0x01, + 0xe8, 0x07, 0x00, 0xe8, 0x82, 0x85, 0xe8, 0xd9, + 0xff, 0xc3, 0xb8, 0x0c, 0x00, 0xbb, 0x40, 0x01, + 0xf7, 0xe3, 0x8b, 0xf0, 0x8b, 0xf8, 0xb8, 0x0c, + 0x00, 0x05, 0x8d, 0x00, 0xf7, 0xe3, 0x2b, 0xc6, + 0x8b, 0xc8, 0xd1, 0xe9, 0xc3, 0xe8, 0x60, 0x85, + 0xe8, 0x2a, 0x84, 0xe8, 0xdc, 0xff, 0xe8, 0xb1, + 0xff, 0xe8, 0x43, 0x84, 0xc7, 0x06, 0x52, 0x72, + 0x00, 0x00, 0xbf, 0x75, 0xc4, 0xb0, 0x01, 0xb9, + 0x18, 0x00, 0xfc, 0xf3, 0xaa, 0xe8, 0xaf, 0xff, + 0xc3, 0x06, 0xa1, 0xb1, 0x32, 0x8e, 0xc0, 0x33, + 0xc9, 0x3b, 0x0e, 0x73, 0xc4, 0x73, 0x20, 0x41, + 0x51, 0xe8, 0x1d, 0x00, 0x89, 0x36, 0x71, 0xc4, + 0xb9, 0x1a, 0x00, 0xba, 0x28, 0x00, 0xe8, 0x4f, + 0x00, 0xb4, 0xea, 0xe8, 0x37, 0x02, 0xc7, 0x06, + 0x71, 0xc4, 0x00, 0x00, 0x59, 0xeb, 0xda, 0x07, + 0xc3, 0x33, 0xd2, 0x49, 0xfe, 0xce, 0xfe, 0xc6, + 0x83, 0xe9, 0x06, 0x73, 0xf9, 0x83, 0xc1, 0x06, + 0xbe, 0x11, 0x0f, 0x81, 0xc6, 0x45, 0x06, 0x81, + 0xc6, 0x45, 0x06, 0x33, 0xc0, 0x0a, 0xf6, 0x74, + 0x0a, 0x05, 0x1a, 0x00, 0x05, 0x05, 0x00, 0xfe, + 0xce, 0xeb, 0xf2, 0xf7, 0x26, 0xb6, 0x00, 0x03, + 0xf0, 0x0a, 0xc9, 0x74, 0x0a, 0x83, 0xc6, 0x28, + 0x83, 0xc6, 0x05, 0xfe, 0xc9, 0xeb, 0xf2, 0xc3, + 0x1e, 0x52, 0xbb, 0x40, 0x01, 0xa1, 0xb5, 0x32, + 0x8e, 0xd8, 0x8b, 0xc6, 0x2d, 0x11, 0x0f, 0x33, + 0xd2, 0xf7, 0xf3, 0x8b, 0xfa, 0x83, 0xc7, 0x06, + 0xbb, 0x1e, 0x01, 0xf7, 0xe3, 0x03, 0xf8, 0x5a, + 0x81, 0xc6, 0x41, 0x01, 0x81, 0xc7, 0x1f, 0x01, + 0x49, 0x49, 0x4a, 0x4a, 0x8b, 0xd9, 0x8b, 0xca, + 0x8a, 0x05, 0x3c, 0xe8, 0x75, 0x06, 0x26, 0xc6, + 0x04, 0xd6, 0xeb, 0x04, 0x26, 0xc6, 0x04, 0xe0, + 0x46, 0x47, 0xe2, 0xec, 0x81, 0xc6, 0x40, 0x01, + 0x2b, 0xf2, 0x81, 0xc7, 0x1e, 0x01, 0x2b, 0xfa, + 0x4b, 0x75, 0xdb, 0x1f, 0xc3, 0x06, 0xa1, 0xb5, + 0x32, 0x8e, 0xc0, 0xa3, 0xac, 0x00, 0xc7, 0x06, + 0xaa, 0x00, 0x00, 0x00, 0xb9, 0x03, 0x00, 0xba, + 0x54, 0x00, 0xe8, 0xc3, 0x8c, 0xa1, 0xb1, 0x32, + 0x33, 0xdb, 0xe8, 0xf7, 0xf6, 0x07, 0xc3, 0x06, + 0xa1, 0xbf, 0x32, 0x8e, 0xc0, 0x33, 0xc9, 0x3b, + 0x0e, 0x73, 0xc4, 0x73, 0x45, 0x41, 0x51, 0xbb, + 0x8c, 0xc4, 0x03, 0xd9, 0x33, 0xc9, 0x8a, 0x0f, + 0xbf, 0xfe, 0xff, 0xbe, 0xa4, 0xc4, 0xd1, 0xe1, + 0x03, 0xf9, 0x03, 0xf1, 0xd1, 0xe9, 0x8b, 0x34, + 0x47, 0x26, 0x8b, 0x3d, 0x80, 0x7c, 0x01, 0x00, + 0x74, 0x04, 0x26, 0x03, 0x7d, 0x01, 0x59, 0x51, + 0xe8, 0x0e, 0xff, 0x26, 0x8b, 0x0d, 0x26, 0x8b, + 0x55, 0x02, 0x26, 0x03, 0x75, 0x04, 0x83, 0xc7, + 0x06, 0xa1, 0xb1, 0x32, 0xe8, 0x05, 0x00, 0x59, + 0xeb, 0xb5, 0x07, 0xc3, 0x1e, 0x8e, 0xd8, 0x8b, + 0xd9, 0x8b, 0xcb, 0x26, 0x8a, 0x05, 0x3c, 0xff, + 0x74, 0x02, 0x88, 0x04, 0x47, 0x46, 0xe2, 0xf3, + 0x81, 0xc6, 0x40, 0x01, 0x2b, 0xf3, 0x4a, 0x75, + 0xe8, 0x1f, 0xc3, 0xbb, 0xa0, 0x32, 0xb9, 0x0b, + 0x00, 0xe8, 0xaf, 0x85, 0xe8, 0x91, 0x00, 0xe8, + 0x20, 0x02, 0xe8, 0x18, 0xfd, 0x72, 0x5b, 0xe8, + 0x91, 0x83, 0x72, 0x35, 0xe8, 0x5d, 0x83, 0x73, + 0xeb, 0xe8, 0x4f, 0x00, 0x72, 0xe6, 0x83, 0x3e, + 0x1f, 0xc4, 0x00, 0x74, 0x14, 0xa1, 0x6f, 0xc4, + 0x3b, 0x06, 0x1f, 0xc4, 0x74, 0xd6, 0xa3, 0x21, + 0xc4, 0xe8, 0x80, 0x04, 0xe8, 0x45, 0x00, 0xeb, + 0xcb, 0xa1, 0x6f, 0xc4, 0xa3, 0x1f, 0xc4, 0xe8, + 0x20, 0x04, 0x72, 0x26, 0xe8, 0x27, 0x01, 0xeb, + 0xbb, 0xe8, 0x1f, 0x00, 0x72, 0xb6, 0x83, 0x3e, + 0x1f, 0xc4, 0x00, 0x75, 0xd0, 0xe8, 0x3f, 0x04, + 0x72, 0x10, 0xe8, 0xb9, 0x02, 0xb4, 0xea, 0xe8, + 0x9b, 0x00, 0xc7, 0x06, 0x6f, 0xc4, 0x00, 0x00, + 0xeb, 0x9a, 0xc3, 0x83, 0x3e, 0x6f, 0xc4, 0x00, + 0x74, 0x02, 0xf8, 0xc3, 0xe8, 0x05, 0x00, 0xe8, + 0xe9, 0x06, 0xf9, 0xc3, 0x33, 0xc0, 0xa3, 0x6f, + 0xc4, 0xa3, 0x1f, 0xc4, 0xa3, 0x21, 0xc4, 0xc3, + 0xbb, 0xe2, 0xc3, 0xe8, 0x01, 0x00, 0xc3, 0x53, + 0xe8, 0x7e, 0x07, 0x5b, 0xe8, 0x93, 0x02, 0xc3, + 0x33, 0xc9, 0x3b, 0x0e, 0x73, 0xc4, 0x73, 0x13, + 0x41, 0x51, 0xe8, 0x2c, 0xfe, 0xbb, 0x1a, 0x00, + 0xb9, 0x28, 0x00, 0xe8, 0x98, 0x00, 0x59, 0x72, + 0x2b, 0xeb, 0xe7, 0x8b, 0x0e, 0x6f, 0xc4, 0x0b, + 0xc9, 0x74, 0x20, 0xb4, 0xea, 0xe8, 0x3d, 0x00, + 0xc7, 0x06, 0x6f, 0xc4, 0x00, 0x00, 0xc7, 0x06, + 0x71, 0xc4, 0x00, 0x00, 0x83, 0x3e, 0x1f, 0xc4, + 0x00, 0x74, 0x05, 0xe8, 0x98, 0x00, 0xeb, 0x03, + 0xe8, 0x88, 0x06, 0xc3, 0x3b, 0x0e, 0x6f, 0xc4, + 0x75, 0x01, 0xc3, 0x51, 0x56, 0xb4, 0xea, 0xe8, + 0x13, 0x00, 0x5e, 0x59, 0x89, 0x0e, 0x6f, 0xc4, + 0x89, 0x36, 0x71, 0xc4, 0xb4, 0xe9, 0xe8, 0x04, + 0x00, 0xe8, 0x72, 0x00, 0xc3, 0x8b, 0x0e, 0xb1, + 0x32, 0x50, 0xe8, 0x0b, 0x00, 0x58, 0xb9, 0x00, + 0xa0, 0xe8, 0x04, 0x00, 0xe8, 0x98, 0x81, 0xc3, + 0x06, 0x8e, 0xc1, 0x8b, 0x36, 0x71, 0xc4, 0x0b, + 0xf6, 0x74, 0x29, 0xb9, 0x28, 0x00, 0x26, 0x88, + 0x24, 0x46, 0xe2, 0xfa, 0x81, 0xc6, 0x40, 0x01, + 0x83, 0xee, 0x28, 0xb9, 0x18, 0x00, 0x26, 0x88, + 0x24, 0x26, 0x88, 0x64, 0x27, 0x81, 0xc6, 0x40, + 0x01, 0xe2, 0xf3, 0xb9, 0x28, 0x00, 0x26, 0x88, + 0x24, 0x46, 0xe2, 0xfa, 0x07, 0xc3, 0x8b, 0xc6, + 0x33, 0xd2, 0xf7, 0x36, 0xb6, 0x00, 0x3b, 0x06, + 0xc2, 0x00, 0x77, 0x18, 0x3b, 0x16, 0xc0, 0x00, + 0x77, 0x12, 0x03, 0xc3, 0x3b, 0x06, 0xc2, 0x00, + 0x76, 0x0a, 0x03, 0xd1, 0x3b, 0x16, 0xc0, 0x00, + 0x76, 0x02, 0xf9, 0xc3, 0xf8, 0xc3, 0xe8, 0xf2, + 0x05, 0xe8, 0x47, 0x05, 0xe8, 0x48, 0x00, 0xbb, + 0x28, 0xc4, 0xbe, 0xe8, 0x1c, 0x81, 0xc6, 0x85, + 0x02, 0x56, 0xc6, 0x06, 0xe6, 0x1c, 0xd1, 0xe8, + 0x9b, 0x7f, 0x8b, 0xc6, 0x5e, 0x2b, 0xc6, 0xbe, + 0x05, 0x00, 0x03, 0xc6, 0x03, 0xc6, 0x40, 0x0c, + 0x01, 0x3d, 0x40, 0x01, 0x76, 0x03, 0xb8, 0x40, + 0x01, 0xa3, 0xe0, 0x1c, 0xb9, 0x40, 0x01, 0x2b, + 0xc8, 0xd1, 0xe9, 0xb8, 0xb4, 0x00, 0xbb, 0x40, + 0x01, 0xf7, 0xe3, 0x03, 0xc1, 0xa3, 0xde, 0x1c, + 0xb8, 0x00, 0xa0, 0xe8, 0x3f, 0x05, 0xc3, 0xbf, + 0x28, 0xc4, 0xb9, 0x46, 0x00, 0x32, 0xc0, 0xfc, + 0xf3, 0xaa, 0x8b, 0x0e, 0x6f, 0xc4, 0x0b, 0xc9, + 0x74, 0x06, 0xe8, 0x44, 0x00, 0x83, 0xc3, 0x02, + 0xbe, 0x28, 0xc4, 0x8b, 0x0e, 0x1f, 0xc4, 0x0b, + 0xc9, 0x74, 0x2b, 0x53, 0xe8, 0x32, 0x00, 0x83, + 0xc3, 0x02, 0xe8, 0x21, 0x00, 0x4e, 0xb0, 0x20, + 0xb4, 0x26, 0x88, 0x04, 0x88, 0x64, 0x01, 0x88, + 0x44, 0x02, 0x83, 0xc6, 0x03, 0x5b, 0xa1, 0x1f, + 0xc4, 0x8b, 0x0e, 0x6f, 0xc4, 0x0b, 0xc9, 0x74, + 0x04, 0x3b, 0xc1, 0x75, 0x01, 0xc3, 0x8a, 0x07, + 0x88, 0x04, 0x43, 0x46, 0x0a, 0xc0, 0x75, 0xf6, + 0xc3, 0xbb, 0x8c, 0xc4, 0x03, 0xd9, 0x8a, 0x0f, + 0xbb, 0xa4, 0xc4, 0xd1, 0xe1, 0x03, 0xd9, 0x8b, + 0x1f, 0xc3, 0xbb, 0xa0, 0x32, 0xe8, 0x96, 0x83, + 0x72, 0x01, 0xc3, 0xb9, 0x0b, 0x00, 0xe8, 0x7a, + 0x83, 0x06, 0xa1, 0xbf, 0x32, 0x8e, 0xc0, 0x33, + 0xc9, 0x3b, 0x0e, 0x73, 0xc4, 0x73, 0x6d, 0x41, + 0x51, 0xbb, 0x8c, 0xc4, 0x03, 0xd9, 0x8a, 0x07, + 0xbb, 0x74, 0xc4, 0x03, 0xd9, 0x33, 0xc9, 0x8a, + 0xc8, 0xbf, 0xfe, 0xff, 0xbe, 0xa4, 0xc4, 0xd1, + 0xe1, 0x03, 0xf9, 0x03, 0xf1, 0x8b, 0x34, 0x47, + 0x26, 0x8b, 0x3d, 0x80, 0x7c, 0x01, 0x00, 0x74, + 0x40, 0x33, 0xc9, 0x8a, 0x0f, 0xfe, 0xc1, 0x26, + 0x3a, 0x0d, 0x76, 0x02, 0xb1, 0x01, 0x88, 0x0f, + 0x49, 0xd1, 0xe1, 0x03, 0xf9, 0x26, 0x03, 0x7d, + 0x01, 0x2b, 0xf9, 0x59, 0x51, 0xe8, 0x41, 0xfc, + 0xe8, 0x23, 0x00, 0x56, 0x26, 0x8b, 0x0d, 0x26, + 0x8b, 0x55, 0x02, 0x26, 0x03, 0x75, 0x04, 0x83, + 0xc7, 0x06, 0xa1, 0xb1, 0x32, 0xe8, 0x34, 0xfd, + 0x5e, 0x56, 0xe8, 0x1e, 0x00, 0x5e, 0xe8, 0x44, + 0x00, 0x59, 0xeb, 0x8d, 0x07, 0xc3, 0x57, 0x56, + 0x06, 0xa1, 0xb1, 0x32, 0x8e, 0xc0, 0xb9, 0x1a, + 0x00, 0xba, 0x28, 0x00, 0xe8, 0x49, 0xfc, 0x07, + 0x5e, 0x5f, 0xc3, 0x1e, 0x06, 0x81, 0xc6, 0x41, + 0x01, 0x8b, 0xfe, 0xb8, 0x00, 0xa0, 0x8e, 0xc0, + 0xa1, 0xb1, 0x32, 0x8e, 0xd8, 0xfc, 0xb9, 0x18, + 0x00, 0x51, 0xb9, 0x26, 0x00, 0xf3, 0xa4, 0x81, + 0xc6, 0x1a, 0x01, 0x81, 0xc7, 0x1a, 0x01, 0x59, + 0xe2, 0xef, 0x07, 0x1f, 0xc3, 0xbb, 0x1a, 0x00, + 0xb9, 0x28, 0x00, 0xb8, 0x0c, 0x00, 0x03, 0xd8, + 0xf7, 0x26, 0xb6, 0x00, 0x2b, 0xf0, 0xb8, 0x08, + 0x00, 0x2b, 0xf0, 0x03, 0xc8, 0xe8, 0x36, 0xfe, + 0x73, 0x03, 0xe8, 0x92, 0x7f, 0xc3, 0xe8, 0xf8, + 0x04, 0x8b, 0x0e, 0x6f, 0xc4, 0xe8, 0xf9, 0xfe, + 0x83, 0xc3, 0x02, 0x43, 0x80, 0x3f, 0x00, 0x75, + 0xfa, 0x43, 0x06, 0xb8, 0xd4, 0x19, 0x8e, 0xc0, + 0x33, 0xc0, 0x26, 0xa3, 0x0c, 0x00, 0x26, 0xa3, + 0x0a, 0x00, 0xbe, 0x04, 0x00, 0x53, 0xe8, 0x37, + 0x7e, 0x26, 0x01, 0x0e, 0x0c, 0x00, 0x26, 0x89, + 0x04, 0x26, 0xff, 0x06, 0x0a, 0x00, 0x83, 0xc6, + 0x02, 0x43, 0x8a, 0x07, 0x0a, 0xc0, 0x75, 0xe6, + 0x5b, 0x8b, 0xce, 0x33, 0xc0, 0x83, 0xee, 0x02, + 0x81, 0xfe, 0x04, 0x00, 0x72, 0x0b, 0x26, 0x8b, + 0x14, 0x3b, 0xc2, 0x73, 0xf0, 0x8b, 0xc2, 0xeb, + 0xec, 0x8b, 0xf1, 0xb9, 0x40, 0x01, 0x2b, 0xc8, + 0xd1, 0xe9, 0x81, 0xc1, 0xc0, 0xcb, 0x26, 0x89, + 0x0e, 0x00, 0x00, 0x83, 0xee, 0x02, 0x81, 0xfe, + 0x04, 0x00, 0x72, 0x0e, 0x26, 0x8b, 0x14, 0x8b, + 0xc8, 0x2b, 0xca, 0xd1, 0xe9, 0x26, 0x89, 0x0c, + 0xeb, 0xe9, 0xbf, 0x04, 0x00, 0xbe, 0x0e, 0x00, + 0x57, 0x56, 0x26, 0x03, 0x35, 0xc6, 0x06, 0xe6, + 0x1c, 0xd1, 0xe8, 0x78, 0x7d, 0x5e, 0x5f, 0x81, + 0xc6, 0xc0, 0x0d, 0x83, 0xc7, 0x02, 0x43, 0x8a, + 0x07, 0x0a, 0xc0, 0x75, 0xe3, 0xe8, 0xed, 0x7e, + 0xe8, 0x1d, 0x80, 0xe8, 0x9d, 0x03, 0xb8, 0x00, + 0xa0, 0xe8, 0xf2, 0x03, 0xbb, 0x92, 0x32, 0xa1, + 0x96, 0x32, 0x26, 0x8b, 0x0e, 0x0c, 0x00, 0xf7, + 0xe1, 0x8b, 0xc8, 0xc1, 0xe9, 0x03, 0x83, 0xc1, + 0x3c, 0xe8, 0xcf, 0x81, 0xe8, 0x43, 0xfe, 0x80, + 0x3e, 0x96, 0x32, 0x00, 0x74, 0x08, 0xbb, 0x92, + 0x32, 0xe8, 0xd2, 0x81, 0x72, 0x0a, 0xe8, 0xaa, + 0x7f, 0x72, 0x05, 0xe8, 0x76, 0x7f, 0x73, 0xe4, + 0xe8, 0x04, 0x04, 0xe8, 0xc9, 0x7e, 0x07, 0xc3, + 0xbb, 0x8d, 0xc4, 0x8b, 0x0e, 0x73, 0xc4, 0x03, + 0xd9, 0x88, 0x07, 0xff, 0x06, 0x73, 0xc4, 0xc3, + 0xbb, 0x8d, 0xc4, 0x8b, 0x0e, 0x73, 0xc4, 0x3a, + 0x07, 0x74, 0x08, 0x43, 0xe2, 0xf9, 0xb0, 0x3b, + 0xe9, 0x0d, 0x8c, 0x8a, 0x47, 0x01, 0x88, 0x07, + 0x43, 0xe2, 0xf8, 0xc6, 0x47, 0x01, 0x00, 0xff, + 0x0e, 0x73, 0xc4, 0xc3, 0xbb, 0x8d, 0xc4, 0x8b, + 0x0e, 0x73, 0xc4, 0x3a, 0x07, 0x74, 0x05, 0x43, + 0xe2, 0xf9, 0xf8, 0xc3, 0xf9, 0xc3, 0xbb, 0x8d, + 0xc4, 0x8b, 0x0e, 0x73, 0xc4, 0xc6, 0x07, 0x00, + 0x43, 0xe2, 0xfa, 0xc7, 0x06, 0x73, 0xc4, 0x00, + 0x00, 0xc3, 0xa1, 0x1f, 0xc4, 0xe8, 0xcc, 0x00, + 0x3c, 0x03, 0x74, 0x1e, 0x3c, 0x29, 0x74, 0x1a, + 0x3c, 0x25, 0x74, 0x16, 0x3c, 0x48, 0x74, 0x12, + 0xb0, 0xff, 0x83, 0x3e, 0xf3, 0xb4, 0x18, 0x75, + 0x07, 0x80, 0x3e, 0xa4, 0xdb, 0x00, 0x74, 0x02, + 0xf8, 0xc3, 0xa2, 0xe1, 0xc3, 0xe8, 0x8a, 0xf8, + 0xc6, 0x06, 0x6e, 0xc4, 0x00, 0xf9, 0xc3, 0xa1, + 0x6f, 0xc4, 0xe8, 0x97, 0x00, 0x3c, 0x04, 0x74, + 0x06, 0x3c, 0x33, 0x74, 0x02, 0xf8, 0xc3, 0xa2, + 0xe1, 0xc3, 0xe8, 0x6d, 0xf8, 0xc6, 0x06, 0x6e, + 0xc4, 0x00, 0xf9, 0xc3, 0xa1, 0x1f, 0xc4, 0xe8, + 0x7a, 0x00, 0x8a, 0xc8, 0xa1, 0x21, 0xc4, 0xe8, + 0x72, 0x00, 0x8a, 0xd0, 0xbb, 0x35, 0xc3, 0x8b, + 0x07, 0x3a, 0xc1, 0x75, 0x04, 0x3a, 0xe2, 0x74, + 0x08, 0x3a, 0xc2, 0x75, 0x53, 0x3a, 0xe1, 0x75, + 0x4f, 0x80, 0x7f, 0x02, 0x00, 0x74, 0x42, 0x60, + 0xb9, 0x45, 0x00, 0xb0, 0x01, 0xb4, 0x05, 0xff, + 0x1e, 0x4a, 0x32, 0xb8, 0x3b, 0x0b, 0x8e, 0xd8, + 0x8e, 0xc0, 0xa0, 0x49, 0x32, 0xb4, 0x04, 0xb5, + 0x07, 0xff, 0x1e, 0x4a, 0x32, 0xb8, 0x3b, 0x0b, + 0x8e, 0xd8, 0x8e, 0xc0, 0x61, 0x53, 0x8a, 0x07, + 0xe8, 0x0d, 0xff, 0x5b, 0x53, 0x8a, 0x47, 0x01, + 0xe8, 0x05, 0xff, 0x5b, 0x53, 0x8a, 0x47, 0x02, + 0xe8, 0xed, 0xfe, 0x5b, 0x53, 0xe8, 0x5d, 0xf9, + 0x5b, 0x8b, 0x5f, 0x03, 0xe8, 0x68, 0xfb, 0xc3, + 0x83, 0xc3, 0x05, 0x83, 0x3f, 0x00, 0x75, 0x97, + 0xe8, 0x55, 0xfb, 0xc3, 0x0b, 0xc0, 0x75, 0x01, + 0xc3, 0x53, 0x48, 0xbb, 0x8d, 0xc4, 0x03, 0xd8, + 0x8a, 0x07, 0x32, 0xe4, 0x5b, 0xc3, 0x60, 0xe8, + 0x52, 0x06, 0xe8, 0x2f, 0x03, 0xe8, 0x85, 0x01, + 0xe8, 0x43, 0x02, 0xe8, 0xf2, 0x06, 0xe8, 0x72, + 0x03, 0xe8, 0xdb, 0x04, 0xe8, 0x8e, 0x01, 0xe8, + 0x4c, 0x02, 0xe8, 0x7b, 0x7e, 0xe8, 0xc1, 0x0b, + 0xe8, 0x74, 0x05, 0xe8, 0xc2, 0x01, 0xe8, 0x89, + 0x02, 0xe8, 0x33, 0x7d, 0x61, 0xc3, 0xe8, 0x2a, + 0x00, 0x0b, 0xc0, 0x74, 0x17, 0x3d, 0x03, 0x00, + 0x74, 0x12, 0x3d, 0x01, 0x00, 0x74, 0x0e, 0xc6, + 0x06, 0xda, 0x1c, 0x02, 0xe8, 0xb7, 0xff, 0xc6, + 0x06, 0xda, 0x1c, 0x03, 0xc3, 0xc6, 0x06, 0xda, + 0x1c, 0x01, 0xe8, 0xa9, 0xff, 0xc6, 0x06, 0xda, + 0x1c, 0x00, 0xc3, 0xbb, 0x54, 0x72, 0xe8, 0x01, + 0x17, 0x8b, 0xf3, 0x8b, 0x1c, 0x0b, 0xdb, 0x74, + 0x0a, 0xe8, 0xd3, 0x00, 0x72, 0x20, 0x83, 0xc6, + 0x02, 0xeb, 0xf0, 0x83, 0x3e, 0x52, 0x72, 0x00, + 0x75, 0x03, 0x33, 0xc0, 0xc3, 0xc7, 0x06, 0x52, + 0x72, 0x00, 0x00, 0x83, 0x3e, 0x1f, 0xc4, 0x00, + 0x75, 0x11, 0xb8, 0x01, 0x00, 0xc3, 0x3b, 0x06, + 0x52, 0x72, 0x75, 0x04, 0xb8, 0x03, 0x00, 0xc3, + 0xa3, 0x52, 0x72, 0xa1, 0xde, 0x1c, 0xa3, 0xe2, + 0x1c, 0xa1, 0xe0, 0x1c, 0xa3, 0xe4, 0x1c, 0x53, + 0xc6, 0x06, 0xda, 0x1c, 0x01, 0xe8, 0xdd, 0x00, + 0xe8, 0xc0, 0x00, 0x5b, 0x83, 0xc3, 0x13, 0xe8, + 0x45, 0x00, 0xbb, 0x28, 0xc4, 0xbe, 0xe8, 0x1c, + 0x81, 0xc6, 0x85, 0x02, 0x56, 0xc6, 0x06, 0xe6, + 0x1c, 0xd1, 0xe8, 0x10, 0x7b, 0x8b, 0xc6, 0x5e, + 0x2b, 0xc6, 0xbe, 0x05, 0x00, 0x03, 0xc6, 0x03, + 0xc6, 0x40, 0x0c, 0x01, 0x3d, 0x40, 0x01, 0x76, + 0x03, 0xb8, 0x40, 0x01, 0xa3, 0xe0, 0x1c, 0xb9, + 0x40, 0x01, 0x2b, 0xc8, 0xd1, 0xe9, 0xb8, 0xb4, + 0x00, 0xbb, 0x40, 0x01, 0xf7, 0xe3, 0x03, 0xc1, + 0xa3, 0xde, 0x1c, 0xb8, 0x02, 0x00, 0xc3, 0xbf, + 0x28, 0xc4, 0xb9, 0x46, 0x00, 0x32, 0xc0, 0xfc, + 0xf3, 0xaa, 0xbe, 0x28, 0xc4, 0x8b, 0x0e, 0x1f, + 0xc4, 0x0b, 0xc9, 0x74, 0x26, 0x53, 0xe8, 0xb8, + 0xfb, 0x83, 0xc3, 0x02, 0xe8, 0xa7, 0xfb, 0x4e, + 0xb0, 0x20, 0xb4, 0x26, 0x88, 0x04, 0x88, 0x64, + 0x01, 0x88, 0x44, 0x02, 0x83, 0xc6, 0x03, 0x5b, + 0xa1, 0x1f, 0xc4, 0x8b, 0x0e, 0x52, 0x72, 0x0b, + 0xc9, 0x74, 0x03, 0xe8, 0x88, 0xfb, 0xc3, 0x8a, + 0x47, 0x12, 0x0a, 0xc0, 0x74, 0x29, 0xa1, 0xc0, + 0x00, 0x8b, 0x16, 0xc2, 0x00, 0x8b, 0x4f, 0x01, + 0x3b, 0xc1, 0x72, 0x1b, 0x8b, 0x4f, 0x03, 0x3b, + 0xd1, 0x72, 0x14, 0x8b, 0x4f, 0x05, 0x3b, 0xc1, + 0x77, 0x0d, 0x8b, 0x4f, 0x07, 0x3b, 0xd1, 0x77, + 0x06, 0x33, 0xc0, 0x8a, 0x07, 0xf9, 0xc3, 0x33, + 0xc0, 0xf8, 0xc3, 0xbe, 0xe8, 0x1c, 0xb9, 0x0f, + 0x00, 0xb0, 0xff, 0xb4, 0xe0, 0xba, 0x40, 0x01, + 0x88, 0x04, 0x86, 0xc4, 0x46, 0x4a, 0x75, 0xf8, + 0x86, 0xc4, 0xe2, 0xf1, 0xc3, 0xa0, 0xda, 0x1c, + 0x3c, 0x00, 0x75, 0x01, 0xc3, 0x3c, 0x03, 0x75, + 0x01, 0xc3, 0xa1, 0xb3, 0x32, 0x8b, 0x1e, 0xb1, + 0x32, 0xe8, 0x81, 0x00, 0xc3, 0xa0, 0xda, 0x1c, + 0x3c, 0x00, 0x75, 0x01, 0xc3, 0x3c, 0x01, 0x75, + 0x01, 0xc3, 0xa1, 0xb1, 0x32, 0x06, 0x8e, 0xc0, + 0x8b, 0x36, 0xde, 0x1c, 0x8b, 0x16, 0xe0, 0x1c, + 0xbf, 0xe8, 0x1c, 0xb9, 0x0f, 0x00, 0x8b, 0xda, + 0x8a, 0x05, 0x3c, 0xff, 0x74, 0x03, 0x26, 0x88, + 0x04, 0x46, 0x47, 0x4a, 0x75, 0xf2, 0x8b, 0xd3, + 0x81, 0xc6, 0x40, 0x01, 0x2b, 0xf2, 0x81, 0xc7, + 0x40, 0x01, 0x2b, 0xfa, 0xe2, 0xe0, 0x07, 0xc3, + 0xa0, 0xda, 0x1c, 0x3c, 0x00, 0x75, 0x01, 0xc3, + 0x3c, 0x03, 0x75, 0x01, 0xc3, 0xa1, 0xe4, 0x1c, + 0x3b, 0x06, 0xe0, 0x1c, 0x72, 0x1d, 0xff, 0x36, + 0xe0, 0x1c, 0xff, 0x36, 0xde, 0x1c, 0xa3, 0xe0, + 0x1c, 0xa1, 0xe2, 0x1c, 0xa3, 0xde, 0x1c, 0xe8, + 0x09, 0x00, 0x8f, 0x06, 0xde, 0x1c, 0x8f, 0x06, + 0xe0, 0x1c, 0xc3, 0xa1, 0xb1, 0x32, 0xbb, 0x00, + 0xa0, 0xe8, 0x01, 0x00, 0xc3, 0x8b, 0x36, 0xde, + 0x1c, 0x8b, 0x16, 0xe0, 0x1c, 0xb9, 0x0f, 0x00, + 0x1e, 0x06, 0x8e, 0xdb, 0x8e, 0xc0, 0x8b, 0xda, + 0x26, 0x8a, 0x04, 0x88, 0x04, 0x46, 0x4a, 0x75, + 0xf7, 0x8b, 0xd3, 0x81, 0xc6, 0x40, 0x01, 0x2b, + 0xf2, 0xe2, 0xeb, 0x07, 0x1f, 0xc3, 0xa0, 0xdb, + 0x1c, 0x3c, 0x00, 0x75, 0x01, 0xc3, 0x3c, 0x03, + 0x75, 0x01, 0xc3, 0xa1, 0xb3, 0x32, 0x8b, 0x1e, + 0xb1, 0x32, 0xe8, 0x78, 0x00, 0xc3, 0xa0, 0xdb, + 0x1c, 0x3c, 0x00, 0x75, 0x01, 0xc3, 0x3c, 0x01, + 0x75, 0x01, 0xc3, 0xa1, 0xb1, 0x32, 0x1e, 0x06, + 0xba, 0xd4, 0x19, 0x8e, 0xc2, 0x26, 0x8b, 0x36, + 0x00, 0x00, 0x26, 0x8b, 0x16, 0x02, 0x00, 0xbf, + 0x0e, 0x00, 0xb9, 0x21, 0x00, 0x8e, 0xd8, 0x8b, + 0xda, 0x26, 0x8a, 0x05, 0x3c, 0xff, 0x74, 0x02, + 0x88, 0x04, 0x46, 0x47, 0x4a, 0x75, 0xf2, 0x8b, + 0xd3, 0x81, 0xc6, 0x40, 0x01, 0x2b, 0xf2, 0x81, + 0xc7, 0x40, 0x01, 0x2b, 0xfa, 0xe2, 0xe0, 0x07, + 0x1f, 0xc3, 0xa0, 0xdb, 0x1c, 0x3c, 0x00, 0x75, + 0x01, 0xc3, 0x3c, 0x03, 0x75, 0x01, 0xc3, 0xa1, + 0xb1, 0x32, 0xbb, 0x00, 0xa0, 0xe8, 0x15, 0x00, + 0xc3, 0x1e, 0xb9, 0xd4, 0x19, 0x8e, 0xd9, 0xbb, + 0x0e, 0x00, 0xb9, 0x40, 0x29, 0xc6, 0x07, 0xff, + 0x43, 0xe2, 0xfa, 0x1f, 0xc3, 0x1e, 0xb9, 0xd4, + 0x19, 0x8e, 0xd9, 0x8b, 0x36, 0x00, 0x00, 0x8b, + 0x16, 0x02, 0x00, 0xb9, 0x21, 0x00, 0x1f, 0x1e, + 0x06, 0x8e, 0xdb, 0x8e, 0xc0, 0x8b, 0xda, 0x26, + 0x8a, 0x04, 0x88, 0x04, 0x46, 0x4a, 0x75, 0xf7, + 0x8b, 0xd3, 0x81, 0xc6, 0x40, 0x01, 0x2b, 0xf2, + 0xe2, 0xeb, 0x07, 0x1f, 0xc3, 0xbb, 0xa4, 0x32, + 0xe8, 0x6b, 0x7d, 0x73, 0x1e, 0x8b, 0x0e, 0x90, + 0x32, 0xe8, 0x4f, 0x7d, 0xc6, 0x06, 0x33, 0x33, + 0x01, 0xc6, 0x06, 0xdd, 0x1c, 0x02, 0xe8, 0xd5, + 0xfc, 0xc6, 0x06, 0x33, 0x33, 0x00, 0xc6, 0x06, + 0xdd, 0x1c, 0x03, 0xc3, 0xb9, 0x01, 0x00, 0xbb, + 0xc7, 0x32, 0x53, 0x51, 0x49, 0xb0, 0x1b, 0xf6, + 0xe1, 0x03, 0xd8, 0x8b, 0x07, 0x0b, 0xc0, 0x74, + 0x0c, 0x8b, 0x7f, 0x12, 0x8b, 0x4f, 0x14, 0x8b, + 0x5f, 0x10, 0xe8, 0x09, 0x00, 0x59, 0x5b, 0x41, + 0x80, 0xf9, 0x04, 0x76, 0xdd, 0xc3, 0x1e, 0x06, + 0xa1, 0xb3, 0x32, 0x8e, 0xc0, 0xa1, 0xb1, 0x32, + 0x8e, 0xd8, 0x8b, 0xd1, 0x8b, 0xcf, 0x26, 0x8a, + 0x07, 0x88, 0x07, 0x43, 0xe2, 0xf8, 0x8b, 0xca, + 0x81, 0xc3, 0x40, 0x01, 0x2b, 0xdf, 0xe2, 0xea, + 0x07, 0x1f, 0xc3, 0x80, 0x3e, 0x33, 0x33, 0x01, + 0x74, 0x01, 0xc3, 0xb9, 0x01, 0x00, 0xbf, 0xc7, + 0x32, 0x57, 0x51, 0x49, 0xb0, 0x1b, 0xf6, 0xe1, + 0x03, 0xf8, 0x8b, 0x05, 0x0b, 0xc0, 0x74, 0x06, + 0x8b, 0x45, 0x16, 0xe8, 0x09, 0x00, 0x59, 0x5f, + 0x41, 0x80, 0xf9, 0x04, 0x76, 0xe3, 0xc3, 0x06, + 0x8e, 0xc0, 0x51, 0xbb, 0xff, 0xff, 0x8b, 0x05, + 0xb9, 0x03, 0x00, 0xf7, 0xe1, 0x03, 0xd8, 0xbe, + 0x00, 0x00, 0x26, 0x8b, 0x34, 0x8b, 0xd6, 0x3b, + 0xde, 0x72, 0x06, 0xc7, 0x05, 0x01, 0x00, 0xeb, + 0xe2, 0xff, 0x05, 0x33, 0xc9, 0x26, 0x8a, 0x0f, + 0x88, 0x4d, 0x1a, 0x26, 0x8b, 0x77, 0x01, 0x89, + 0x75, 0x0a, 0x8b, 0xda, 0x43, 0x83, 0xeb, 0x02, + 0xd1, 0xe1, 0x03, 0xd9, 0x26, 0x8b, 0x1f, 0x03, + 0xda, 0x26, 0x8b, 0x07, 0x89, 0x45, 0x0c, 0x26, + 0x8b, 0x47, 0x02, 0x89, 0x45, 0x0e, 0x83, 0xc3, + 0x04, 0x89, 0x5d, 0x18, 0x33, 0xd2, 0x8b, 0xc6, + 0xf7, 0x36, 0xb6, 0x00, 0x89, 0x16, 0x4f, 0x33, + 0xa3, 0x57, 0x33, 0x03, 0x55, 0x0c, 0x03, 0x45, + 0x0e, 0x89, 0x16, 0x51, 0x33, 0xa3, 0x59, 0x33, + 0x59, 0xe8, 0x85, 0x00, 0x33, 0xd2, 0x8b, 0x45, + 0x10, 0xf7, 0x36, 0xb6, 0x00, 0x89, 0x16, 0x53, + 0x33, 0xa3, 0x5b, 0x33, 0x03, 0x55, 0x12, 0x03, + 0x45, 0x14, 0x89, 0x16, 0x55, 0x33, 0xa3, 0x5d, + 0x33, 0xa1, 0x4f, 0x33, 0x8b, 0x1e, 0x53, 0x33, + 0x3b, 0xc3, 0x76, 0x04, 0x89, 0x1e, 0x4f, 0x33, + 0xa1, 0x51, 0x33, 0x8b, 0x1e, 0x55, 0x33, 0x3b, + 0xc3, 0x77, 0x04, 0x89, 0x1e, 0x51, 0x33, 0xa1, + 0x57, 0x33, 0x8b, 0x1e, 0x5b, 0x33, 0x3b, 0xc3, + 0x76, 0x04, 0x89, 0x1e, 0x57, 0x33, 0xa1, 0x59, + 0x33, 0x8b, 0x1e, 0x5d, 0x33, 0x3b, 0xc3, 0x77, + 0x04, 0x89, 0x1e, 0x59, 0x33, 0x07, 0xa1, 0x4f, + 0x33, 0x89, 0x45, 0x02, 0xa1, 0x57, 0x33, 0x89, + 0x45, 0x04, 0xa1, 0x51, 0x33, 0x89, 0x45, 0x06, + 0xa1, 0x59, 0x33, 0x89, 0x45, 0x08, 0x8b, 0x45, + 0x0c, 0x89, 0x45, 0x12, 0x8b, 0x45, 0x0e, 0x89, + 0x45, 0x14, 0x8b, 0x45, 0x0a, 0x89, 0x45, 0x10, + 0xc3, 0x80, 0x3e, 0x34, 0x33, 0x01, 0x74, 0x01, + 0xc3, 0xbb, 0x9e, 0xd8, 0x8b, 0x16, 0xf3, 0xb4, + 0x4a, 0xc1, 0xe2, 0x02, 0x03, 0xda, 0x03, 0xd9, + 0x33, 0xc9, 0x8a, 0x0f, 0x80, 0xf9, 0xff, 0x74, + 0x25, 0x49, 0xbb, 0x54, 0x72, 0xe8, 0x92, 0x12, + 0xd1, 0xe1, 0x03, 0xd9, 0x8b, 0x1f, 0x43, 0xa1, + 0x4f, 0x33, 0x89, 0x07, 0xa1, 0x57, 0x33, 0x89, + 0x47, 0x02, 0xa1, 0x51, 0x33, 0x89, 0x47, 0x04, + 0xa1, 0x59, 0x33, 0x89, 0x47, 0x06, 0xc3, 0xb9, + 0x01, 0x00, 0xbf, 0xc7, 0x32, 0x57, 0x51, 0x49, + 0xb0, 0x1b, 0xf6, 0xe1, 0x03, 0xf8, 0x8b, 0x05, + 0x0b, 0xc0, 0x74, 0x15, 0x8b, 0x45, 0x0a, 0x33, + 0xd2, 0xf7, 0x36, 0xb6, 0x00, 0x03, 0x45, 0x0e, + 0x3b, 0x06, 0xb1, 0x64, 0x73, 0x03, 0xe8, 0x48, + 0x00, 0x59, 0x5f, 0x41, 0x80, 0xf9, 0x04, 0x76, + 0xd4, 0x80, 0x3e, 0xdc, 0x1c, 0x01, 0x74, 0x03, + 0xe8, 0x6c, 0x03, 0xe8, 0x9f, 0x05, 0xb9, 0x01, + 0x00, 0xbf, 0xc7, 0x32, 0x57, 0x51, 0x49, 0xb0, + 0x1b, 0xf6, 0xe1, 0x03, 0xf8, 0x8b, 0x05, 0x0b, + 0xc0, 0x74, 0x15, 0x8b, 0x45, 0x0a, 0x33, 0xd2, + 0xf7, 0x36, 0xb6, 0x00, 0x03, 0x45, 0x0e, 0x3b, + 0x06, 0xb1, 0x64, 0x72, 0x03, 0xe8, 0x09, 0x00, + 0x59, 0x5f, 0x41, 0x80, 0xf9, 0x04, 0x76, 0xd4, + 0xc3, 0x8b, 0x45, 0x16, 0x8b, 0x5d, 0x0a, 0x8b, + 0x55, 0x0c, 0x8b, 0x4d, 0x0e, 0x8b, 0x75, 0x18, + 0x1e, 0x06, 0x8e, 0xc0, 0xa1, 0xb1, 0x32, 0x8e, + 0xd8, 0x8b, 0xf9, 0x8b, 0xca, 0x26, 0x8a, 0x04, + 0x3c, 0xff, 0x74, 0x02, 0x88, 0x07, 0x46, 0x43, + 0xe2, 0xf3, 0x8b, 0xcf, 0x81, 0xc3, 0x40, 0x01, + 0x2b, 0xda, 0xe2, 0xe5, 0x07, 0x1f, 0xc3, 0x80, + 0x3e, 0xdd, 0x1c, 0x02, 0x74, 0x01, 0xc3, 0xb9, + 0x01, 0x00, 0xbf, 0xc7, 0x32, 0x57, 0x51, 0x49, + 0xb0, 0x1b, 0xf6, 0xe1, 0x03, 0xf8, 0x8b, 0x05, + 0x0b, 0xc0, 0x74, 0x0f, 0x8b, 0x45, 0x04, 0x8b, + 0x5d, 0x02, 0x8b, 0x4d, 0x08, 0x8b, 0x7d, 0x06, + 0xe8, 0x09, 0x00, 0x59, 0x5f, 0x41, 0x80, 0xf9, + 0x04, 0x76, 0xda, 0xc3, 0x1e, 0x06, 0x8b, 0x16, + 0xb1, 0x32, 0x8e, 0xc2, 0x50, 0xba, 0x40, 0x01, + 0xf7, 0xe2, 0x03, 0xc3, 0x2b, 0xfb, 0x5a, 0x2b, + 0xca, 0x8b, 0xd8, 0xb8, 0x00, 0xa0, 0x8e, 0xd8, + 0x8b, 0xd1, 0x8b, 0xcf, 0x26, 0x8a, 0x07, 0x88, + 0x07, 0x43, 0xe2, 0xf8, 0x8b, 0xca, 0x81, 0xc3, + 0x40, 0x01, 0x2b, 0xdf, 0xe2, 0xea, 0x07, 0x1f, + 0xc3, 0x50, 0x32, 0xe4, 0x48, 0xbb, 0x9e, 0xd8, + 0x8b, 0x16, 0xf3, 0xb4, 0x4a, 0xc1, 0xe2, 0x02, + 0x03, 0xda, 0x03, 0xd8, 0x58, 0x88, 0x27, 0xc3, + 0x50, 0xe8, 0x18, 0xfd, 0xe8, 0x35, 0x00, 0x58, + 0x32, 0xe4, 0xbb, 0xc7, 0x32, 0xb1, 0x1b, 0x48, + 0xf6, 0xe1, 0x03, 0xd8, 0xc7, 0x07, 0x00, 0x00, + 0x53, 0xe8, 0xcc, 0x00, 0xe8, 0xb8, 0xfe, 0xe8, + 0x5e, 0x78, 0x5b, 0x53, 0xff, 0x07, 0xff, 0x36, + 0xdd, 0x1c, 0xc6, 0x06, 0xdd, 0x1c, 0x02, 0xe8, + 0x4d, 0xff, 0x8f, 0x06, 0xdd, 0x1c, 0x5b, 0xc7, + 0x07, 0x00, 0x00, 0xc3, 0x8b, 0x1e, 0x30, 0x32, + 0x8b, 0x3e, 0x2e, 0x32, 0x8b, 0x0e, 0x2c, 0x32, + 0x1e, 0x06, 0xa1, 0xb3, 0x32, 0x8e, 0xc0, 0xa1, + 0xb1, 0x32, 0x8e, 0xd8, 0x8b, 0xd1, 0x8b, 0xcf, + 0x81, 0xfb, 0xff, 0xf9, 0x77, 0x05, 0x26, 0x8a, + 0x07, 0x88, 0x07, 0x43, 0xe2, 0xf2, 0x8b, 0xca, + 0x81, 0xc3, 0x40, 0x01, 0x2b, 0xdf, 0xe2, 0xe4, + 0x07, 0x1f, 0xc3, 0x06, 0xa1, 0xbf, 0x32, 0x8e, + 0xc0, 0x33, 0xc0, 0xa3, 0x28, 0x32, 0xa3, 0x2a, + 0x32, 0xbb, 0xff, 0xff, 0x8a, 0x0e, 0x07, 0x66, + 0xb8, 0x03, 0x00, 0xf6, 0xe1, 0x03, 0xd8, 0xbe, + 0x00, 0x00, 0x26, 0x8b, 0x34, 0x8b, 0xd6, 0x3b, + 0xde, 0x72, 0x03, 0x07, 0xf9, 0xc3, 0xfe, 0x06, + 0x07, 0x66, 0x33, 0xc9, 0x26, 0x8a, 0x0f, 0x26, + 0x8b, 0x77, 0x01, 0x8b, 0xda, 0x43, 0x83, 0xeb, + 0x02, 0xd1, 0xe1, 0x03, 0xd9, 0x26, 0x8b, 0x1f, + 0x03, 0xda, 0x26, 0x8b, 0x3f, 0x26, 0x8b, 0x4f, + 0x02, 0x83, 0xc3, 0x04, 0x89, 0x1e, 0xde, 0x64, + 0x89, 0x0e, 0xe2, 0x64, 0x89, 0x3e, 0xe0, 0x64, + 0x89, 0x36, 0xe4, 0x64, 0x51, 0xe8, 0x31, 0x01, + 0x59, 0x89, 0x0e, 0x2c, 0x32, 0x89, 0x3e, 0x2e, + 0x32, 0x89, 0x36, 0x30, 0x32, 0x07, 0xf8, 0xc3, + 0x06, 0xa1, 0xbf, 0x32, 0x8e, 0xc0, 0x8b, 0x1e, + 0xe6, 0x64, 0x26, 0x8b, 0x3f, 0x43, 0x43, 0x26, + 0x8b, 0x0f, 0x43, 0x43, 0xa1, 0xb1, 0x64, 0x2d, + 0x3e, 0x00, 0xba, 0x40, 0x01, 0xf7, 0xe2, 0x03, + 0x06, 0xaf, 0x64, 0x8b, 0xd7, 0xd1, 0xea, 0x52, + 0x2b, 0xc2, 0x8b, 0xf0, 0x26, 0x8b, 0x07, 0x03, + 0xf0, 0x33, 0xd2, 0xf7, 0x36, 0xb6, 0x00, 0x89, + 0x16, 0x28, 0x32, 0xa3, 0x2a, 0x32, 0x5a, 0x43, + 0x43, 0x89, 0x1e, 0xde, 0x64, 0x89, 0x0e, 0xe2, + 0x64, 0x89, 0x3e, 0xe0, 0x64, 0x89, 0x36, 0xe4, + 0x64, 0x51, 0x57, 0x56, 0x51, 0x52, 0xe8, 0xc8, + 0x00, 0x5a, 0x59, 0xc6, 0x06, 0xae, 0x64, 0x00, + 0xc7, 0x06, 0xba, 0x00, 0x3f, 0x01, 0xc7, 0x06, + 0xb8, 0x00, 0x00, 0x00, 0xc7, 0x06, 0xbc, 0x00, + 0x00, 0x00, 0xc7, 0x06, 0xbe, 0x00, 0xc7, 0x00, + 0xa1, 0xaf, 0x64, 0x2b, 0xc2, 0x72, 0x09, 0x03, + 0x06, 0x28, 0x32, 0x3d, 0x00, 0x00, 0x73, 0x1b, + 0xc6, 0x06, 0xae, 0x64, 0x01, 0xa1, 0xaf, 0x64, + 0x03, 0xc2, 0x03, 0x06, 0x28, 0x32, 0x8b, 0x1e, + 0x34, 0x32, 0x3b, 0xc3, 0x76, 0x02, 0x8b, 0xc3, + 0xa3, 0xba, 0x00, 0xa1, 0xaf, 0x64, 0x03, 0xc2, + 0x03, 0x06, 0x28, 0x32, 0x3d, 0x3f, 0x01, 0x76, + 0x16, 0xc6, 0x06, 0xae, 0x64, 0x01, 0x2b, 0xc2, + 0x2b, 0xc2, 0x8b, 0x1e, 0x32, 0x32, 0x3b, 0xc3, + 0x76, 0x02, 0x8b, 0xc3, 0xa3, 0xb8, 0x00, 0xa1, + 0xb1, 0x64, 0x2b, 0xc1, 0x72, 0x09, 0x03, 0x06, + 0x2a, 0x32, 0x3d, 0x00, 0x00, 0x73, 0x19, 0xc6, + 0x06, 0xae, 0x64, 0x01, 0xa1, 0xb1, 0x64, 0x03, + 0x06, 0x2a, 0x32, 0x8b, 0x1e, 0x3c, 0x32, 0x3b, + 0xc3, 0x76, 0x02, 0x8b, 0xc3, 0xa3, 0xbe, 0x00, + 0xa1, 0xb1, 0x64, 0x03, 0x06, 0x2a, 0x32, 0x3d, + 0xc7, 0x00, 0x76, 0x14, 0xc6, 0x06, 0xae, 0x64, + 0x01, 0x2b, 0xc1, 0x8b, 0x1e, 0x3a, 0x32, 0x3b, + 0xc3, 0x73, 0x02, 0x8b, 0xc3, 0xa3, 0xbc, 0x00, + 0x5e, 0x5f, 0x59, 0x89, 0x0e, 0x2c, 0x32, 0x89, + 0x3e, 0x2e, 0x32, 0x89, 0x36, 0x30, 0x32, 0x07, + 0xc3, 0x33, 0xd2, 0x8b, 0xc6, 0xf7, 0x36, 0xb6, + 0x00, 0x89, 0x16, 0x32, 0x32, 0xa3, 0x3a, 0x32, + 0x03, 0xd7, 0x03, 0xc1, 0x89, 0x16, 0x34, 0x32, + 0xa3, 0x3c, 0x32, 0x33, 0xd2, 0xa1, 0x30, 0x32, + 0xf7, 0x36, 0xb6, 0x00, 0x89, 0x16, 0x36, 0x32, + 0xa3, 0x3e, 0x32, 0x03, 0x16, 0x2e, 0x32, 0x03, + 0x06, 0x2c, 0x32, 0x89, 0x16, 0x38, 0x32, 0xa3, + 0x40, 0x32, 0xa1, 0x32, 0x32, 0x8b, 0x1e, 0x36, + 0x32, 0x3b, 0xc3, 0x76, 0x04, 0x89, 0x1e, 0x32, + 0x32, 0xa1, 0x34, 0x32, 0x8b, 0x1e, 0x38, 0x32, + 0x3b, 0xc3, 0x77, 0x04, 0x89, 0x1e, 0x34, 0x32, + 0xa1, 0x3a, 0x32, 0x8b, 0x1e, 0x3e, 0x32, 0x3b, + 0xc3, 0x76, 0x04, 0x89, 0x1e, 0x3a, 0x32, 0xa1, + 0x3c, 0x32, 0x8b, 0x1e, 0x40, 0x32, 0x3b, 0xc3, + 0x77, 0x04, 0x89, 0x1e, 0x3c, 0x32, 0xc3, 0x55, + 0x1e, 0x06, 0xe8, 0x04, 0x00, 0x07, 0x1f, 0x5d, + 0xc3, 0x8b, 0x1e, 0xde, 0x64, 0x8b, 0x0e, 0xe2, + 0x64, 0x8b, 0x3e, 0xe0, 0x64, 0x8b, 0x36, 0xe4, + 0x64, 0xa1, 0xbf, 0x32, 0x8e, 0xc0, 0x8b, 0xc1, + 0x03, 0xdf, 0x81, 0xc6, 0x40, 0x01, 0xe2, 0xf8, + 0x8b, 0xc8, 0x81, 0xee, 0x40, 0x01, 0x03, 0xf7, + 0x4e, 0x4b, 0x8b, 0xc7, 0xf7, 0x26, 0xd8, 0x64, + 0x33, 0xd2, 0xf7, 0x36, 0xda, 0x64, 0xd1, 0xe8, + 0x2b, 0xf0, 0xa0, 0xae, 0x64, 0x8a, 0x26, 0xdc, + 0x64, 0x8a, 0x16, 0xcb, 0x64, 0x8b, 0x2e, 0xb1, + 0x32, 0x8e, 0xdd, 0xbd, 0x00, 0xfa, 0x0a, 0xc0, + 0x74, 0x03, 0xe9, 0xa8, 0x00, 0x0a, 0xe4, 0x74, + 0x56, 0x80, 0xfa, 0x01, 0x74, 0x51, 0x3e, 0x8b, + 0x56, 0x00, 0x3e, 0x03, 0x56, 0x02, 0x43, 0x2b, + 0xdf, 0x51, 0x56, 0x8b, 0xcf, 0x83, 0xea, 0x64, + 0x77, 0x0c, 0x3e, 0x03, 0x56, 0x00, 0x3e, 0x03, + 0x56, 0x02, 0x5e, 0x59, 0xeb, 0x2e, 0x52, 0x3e, + 0x8b, 0x56, 0x00, 0x3e, 0x03, 0x56, 0x02, 0x83, + 0xea, 0x64, 0x77, 0x0a, 0x3e, 0x03, 0x56, 0x00, + 0x3e, 0x03, 0x56, 0x02, 0xeb, 0x0a, 0x26, 0x8a, + 0x07, 0x3c, 0xff, 0x74, 0x02, 0x88, 0x04, 0x4e, + 0x43, 0xe2, 0xe4, 0x5a, 0x5e, 0x59, 0x81, 0xee, + 0x40, 0x01, 0x2b, 0xdf, 0xe2, 0xb9, 0xc3, 0x3e, + 0x8b, 0x56, 0x00, 0x3e, 0x03, 0x56, 0x02, 0x51, + 0x56, 0x8b, 0xcf, 0x83, 0xea, 0x64, 0x77, 0x0e, + 0x3e, 0x03, 0x56, 0x00, 0x3e, 0x03, 0x56, 0x02, + 0x2b, 0xd9, 0x5e, 0x59, 0xeb, 0x2c, 0x52, 0x3e, + 0x8b, 0x56, 0x00, 0x3e, 0x03, 0x56, 0x02, 0x83, + 0xea, 0x64, 0x77, 0x0a, 0x3e, 0x03, 0x56, 0x00, + 0x3e, 0x03, 0x56, 0x02, 0xeb, 0x0a, 0x26, 0x8a, + 0x07, 0x3c, 0xff, 0x74, 0x02, 0x88, 0x04, 0x4e, + 0x4b, 0xe2, 0xe4, 0x5a, 0x5e, 0x59, 0x81, 0xee, + 0x40, 0x01, 0xe2, 0xbb, 0xc3, 0x0a, 0xe4, 0x75, + 0x03, 0xe9, 0x8d, 0x00, 0x80, 0xfa, 0x01, 0x75, + 0x03, 0xe9, 0x85, 0x00, 0xe8, 0x04, 0x01, 0x43, + 0xba, 0x3b, 0x0b, 0x8e, 0xda, 0x8b, 0x16, 0xb1, + 0x32, 0x8e, 0xda, 0x2b, 0xdf, 0x51, 0x56, 0x8b, + 0xcf, 0x3e, 0x83, 0x6e, 0x04, 0x64, 0x77, 0x07, + 0xe8, 0xf5, 0x00, 0x5e, 0x59, 0xeb, 0x5f, 0x3e, + 0xff, 0x76, 0x04, 0xe8, 0xdd, 0x00, 0x1e, 0x3e, + 0x83, 0x6e, 0x04, 0x64, 0x77, 0x05, 0xe8, 0xdf, + 0x00, 0xeb, 0x3b, 0x26, 0x8a, 0x07, 0x3c, 0xff, + 0x74, 0x33, 0xba, 0x3b, 0x0b, 0x8e, 0xda, 0xa2, + 0x27, 0x32, 0x8b, 0xc6, 0x33, 0xd2, 0xf7, 0x36, + 0xb6, 0x00, 0x3b, 0x16, 0xba, 0x00, 0x77, 0x1d, + 0x3b, 0x16, 0xb8, 0x00, 0x72, 0x17, 0x3b, 0x06, + 0xbe, 0x00, 0x77, 0x11, 0x3b, 0x06, 0xbc, 0x00, + 0x72, 0x0b, 0xa0, 0x27, 0x32, 0x8b, 0x16, 0xb1, + 0x32, 0x8e, 0xda, 0x88, 0x04, 0x4e, 0x43, 0x1f, + 0xe2, 0xb4, 0x3e, 0x8f, 0x46, 0x04, 0x5e, 0x59, + 0x81, 0xee, 0x40, 0x01, 0x2b, 0xdf, 0xe2, 0x80, + 0xc3, 0xe8, 0x7f, 0x00, 0xba, 0x3b, 0x0b, 0x8e, + 0xda, 0x8b, 0x16, 0xb1, 0x32, 0x8e, 0xda, 0x51, + 0x56, 0x8b, 0xcf, 0x3e, 0x83, 0x6e, 0x04, 0x64, + 0x77, 0x09, 0xe8, 0x73, 0x00, 0x2b, 0xd9, 0x5e, + 0x59, 0xeb, 0x5d, 0x3e, 0xff, 0x76, 0x04, 0xe8, + 0x59, 0x00, 0x1e, 0x3e, 0x83, 0x6e, 0x04, 0x64, + 0x77, 0x05, 0xe8, 0x5b, 0x00, 0xeb, 0x3b, 0x26, + 0x8a, 0x07, 0x3c, 0xff, 0x74, 0x33, 0xba, 0x3b, + 0x0b, 0x8e, 0xda, 0xa2, 0x27, 0x32, 0x8b, 0xc6, + 0x33, 0xd2, 0xf7, 0x36, 0xb6, 0x00, 0x3b, 0x16, + 0xba, 0x00, 0x77, 0x1d, 0x3b, 0x16, 0xb8, 0x00, + 0x72, 0x17, 0x3b, 0x06, 0xbe, 0x00, 0x77, 0x11, + 0x3b, 0x06, 0xbc, 0x00, 0x72, 0x0b, 0xa0, 0x27, + 0x32, 0x8b, 0x16, 0xb1, 0x32, 0x8e, 0xda, 0x88, + 0x04, 0x4e, 0x4b, 0x1f, 0xe2, 0xb4, 0x3e, 0x8f, + 0x46, 0x04, 0x5e, 0x59, 0x81, 0xee, 0x40, 0x01, + 0xe2, 0x82, 0xc3, 0x3e, 0x8b, 0x56, 0x00, 0x3e, + 0x03, 0x56, 0x02, 0x3e, 0x89, 0x56, 0x04, 0xc3, + 0x3e, 0x8b, 0x56, 0x00, 0x3e, 0x03, 0x56, 0x02, + 0x3e, 0x01, 0x56, 0x04, 0xc3, 0x06, 0xa1, 0xb5, + 0x32, 0x8e, 0xc0, 0x33, 0xdb, 0x26, 0x8a, 0x0f, + 0xb5, 0x00, 0x43, 0x51, 0x0a, 0xc9, 0x75, 0x03, + 0xe9, 0xfb, 0x00, 0x53, 0x26, 0x8b, 0x1f, 0x26, + 0x8b, 0x47, 0x04, 0x33, 0xd2, 0xf7, 0x36, 0xb6, + 0x00, 0x26, 0x8b, 0x37, 0x03, 0xf2, 0x4e, 0x26, + 0x8b, 0x7f, 0x02, 0x03, 0xf8, 0x4f, 0xe8, 0x10, + 0x0c, 0x72, 0x03, 0xe9, 0xd0, 0x00, 0x53, 0x8a, + 0x1e, 0xae, 0x64, 0x89, 0x16, 0xb7, 0x32, 0x8b, + 0x0e, 0x32, 0x32, 0x0a, 0xdb, 0x74, 0x04, 0x8b, + 0x0e, 0xb8, 0x00, 0x3b, 0xca, 0x72, 0x04, 0x89, + 0x0e, 0xb7, 0x32, 0xa3, 0xb9, 0x32, 0x8b, 0x0e, + 0x3a, 0x32, 0x0a, 0xdb, 0x74, 0x04, 0x8b, 0x0e, + 0xbc, 0x00, 0x3b, 0xc8, 0x72, 0x04, 0x89, 0x0e, + 0xb9, 0x32, 0x89, 0x36, 0xbb, 0x32, 0x8b, 0x0e, + 0x34, 0x32, 0x0a, 0xdb, 0x74, 0x04, 0x8b, 0x0e, + 0xba, 0x00, 0x3b, 0xce, 0x77, 0x04, 0x89, 0x0e, + 0xbb, 0x32, 0x89, 0x3e, 0xbd, 0x32, 0x8b, 0x0e, + 0x3c, 0x32, 0x0a, 0xdb, 0x74, 0x04, 0x8b, 0x0e, + 0xbe, 0x00, 0x3b, 0xcf, 0x77, 0x04, 0x89, 0x0e, + 0xbd, 0x32, 0x5b, 0x26, 0x8b, 0x3f, 0x83, 0xc3, + 0x06, 0x8b, 0xc8, 0x3b, 0x0e, 0xb9, 0x32, 0x73, + 0x05, 0x03, 0xdf, 0x41, 0xeb, 0xf5, 0x8b, 0xca, + 0x3b, 0x0e, 0xb7, 0x32, 0x73, 0x04, 0x43, 0x41, + 0xeb, 0xf6, 0xa1, 0xb9, 0x32, 0xf7, 0x26, 0xb6, + 0x00, 0x03, 0x06, 0xb7, 0x32, 0x8b, 0xf0, 0x55, + 0xa1, 0xbd, 0x32, 0x8b, 0x0e, 0xb9, 0x32, 0x8b, + 0x16, 0xbb, 0x32, 0x8b, 0x2e, 0xb7, 0x32, 0x1e, + 0x50, 0xa1, 0xb1, 0x32, 0x8e, 0xd8, 0x58, 0x50, + 0x53, 0x51, 0x56, 0x8b, 0xcd, 0x26, 0x8a, 0x07, + 0x3c, 0xff, 0x74, 0x02, 0x88, 0x04, 0x46, 0x43, + 0x41, 0x3b, 0xca, 0x76, 0xf0, 0x5e, 0x59, 0x5b, + 0x58, 0x81, 0xc6, 0x40, 0x01, 0x03, 0xdf, 0x41, + 0x3b, 0xc8, 0x76, 0xdb, 0x1f, 0x5d, 0x5b, 0x43, + 0x43, 0x59, 0x49, 0xe9, 0xfd, 0xfe, 0x59, 0x07, + 0xc3, 0xe8, 0x7d, 0x73, 0xa0, 0xdc, 0x1c, 0x3c, + 0x02, 0x74, 0x01, 0xc3, 0x1e, 0x06, 0xa1, 0xb1, + 0x32, 0x8e, 0xc0, 0xa1, 0x3a, 0x32, 0x8b, 0x1e, + 0x32, 0x32, 0x8b, 0x0e, 0x3c, 0x32, 0x8b, 0x3e, + 0x34, 0x32, 0xba, 0x40, 0x01, 0xf7, 0xe2, 0x03, + 0xc3, 0x2b, 0xfb, 0x2b, 0x0e, 0x3a, 0x32, 0x8b, + 0xd8, 0xb8, 0x00, 0xa0, 0x8e, 0xd8, 0x8b, 0xd1, + 0x8b, 0xcf, 0x81, 0xfb, 0xff, 0xf9, 0x77, 0x05, + 0x26, 0x8a, 0x07, 0x88, 0x07, 0x43, 0xe2, 0xf2, + 0x8b, 0xca, 0x81, 0xc3, 0x40, 0x01, 0x2b, 0xdf, + 0xe2, 0xe4, 0x07, 0x1f, 0xc3, 0x80, 0x3e, 0x3d, + 0x66, 0x02, 0x74, 0x01, 0xc3, 0xbb, 0xce, 0xb5, + 0xe8, 0x1f, 0x0b, 0x8b, 0x0e, 0x50, 0x72, 0x49, + 0xd1, 0xe1, 0x03, 0xd9, 0x83, 0x3f, 0x00, 0x74, + 0x04, 0xff, 0x17, 0xeb, 0x03, 0xe8, 0x68, 0x6b, + 0xc6, 0x06, 0x3d, 0x66, 0x00, 0xc7, 0x06, 0x50, + 0x72, 0x00, 0x00, 0xc7, 0x06, 0x52, 0x72, 0x00, + 0x00, 0xe8, 0x6c, 0x00, 0xc3, 0x80, 0x3e, 0x3d, + 0x66, 0x04, 0x74, 0x01, 0xc3, 0xe8, 0xed, 0x70, + 0xbb, 0x9c, 0xb8, 0xe8, 0xe4, 0x0a, 0x8b, 0x0e, + 0x50, 0x72, 0x49, 0xd1, 0xe1, 0x03, 0xd9, 0xff, + 0x17, 0xe8, 0xfb, 0x70, 0xc6, 0x06, 0x3d, 0x66, + 0x00, 0xc7, 0x06, 0x50, 0x72, 0x00, 0x00, 0xc7, + 0x06, 0x52, 0x72, 0xff, 0x00, 0xe8, 0x38, 0x00, + 0xc3, 0xa1, 0xaf, 0x64, 0x3b, 0x06, 0xbb, 0x64, + 0x74, 0x04, 0xe8, 0x2b, 0x00, 0xc3, 0xa1, 0xb1, + 0x64, 0x3b, 0x06, 0xbd, 0x64, 0x74, 0x04, 0xe8, + 0x1e, 0x00, 0xc3, 0xbb, 0x9c, 0x32, 0x8b, 0x07, + 0x0b, 0x47, 0x02, 0x75, 0x06, 0xb9, 0xf4, 0x01, + 0xe8, 0xa0, 0x73, 0xe8, 0xb0, 0x73, 0x72, 0x01, + 0xc3, 0xe8, 0x0f, 0x00, 0xe8, 0x01, 0x00, 0xc3, + 0xbb, 0x9c, 0x32, 0x33, 0xc0, 0x89, 0x07, 0x89, + 0x47, 0x02, 0xc3, 0xa1, 0xbf, 0x32, 0xa3, 0xac, + 0x00, 0x33, 0xc0, 0xa3, 0xaa, 0x00, 0xb9, 0x02, + 0x00, 0xba, 0x54, 0x00, 0xe8, 0x01, 0x7a, 0xbb, + 0x8a, 0x32, 0x33, 0xc0, 0x89, 0x07, 0x89, 0x47, + 0x02, 0xc6, 0x06, 0xcd, 0x64, 0x01, 0xc6, 0x06, + 0xcb, 0x64, 0x01, 0xc6, 0x06, 0x3f, 0x65, 0x01, + 0xe8, 0x22, 0x08, 0x83, 0x3e, 0xc2, 0x00, 0x00, + 0x74, 0x05, 0xe8, 0xb5, 0xea, 0xeb, 0x15, 0xbb, + 0x98, 0x32, 0x8b, 0x07, 0x0b, 0x47, 0x02, 0x75, + 0x06, 0xb9, 0x32, 0x00, 0xe8, 0x3c, 0x73, 0xe8, + 0x4c, 0x73, 0x72, 0x21, 0xe8, 0x32, 0x00, 0xe8, + 0xd3, 0xf5, 0xe8, 0xf1, 0xf2, 0xe8, 0x04, 0xd3, + 0x80, 0x3e, 0x95, 0x60, 0x01, 0x74, 0x0e, 0x80, + 0x3e, 0xca, 0x00, 0x01, 0x74, 0x07, 0x80, 0x3e, + 0xcb, 0x00, 0x01, 0x75, 0xbe, 0xe8, 0xc3, 0x75, + 0xe8, 0xa6, 0x08, 0xc6, 0x06, 0xdc, 0x1c, 0x02, + 0xe8, 0x9b, 0xf2, 0xc6, 0x06, 0xdc, 0x1c, 0x03, + 0xc3, 0x06, 0xbb, 0x8a, 0x32, 0xe8, 0x0e, 0x73, + 0x73, 0x1a, 0x8b, 0x0e, 0x90, 0x32, 0xe8, 0xf2, + 0x72, 0xe8, 0x1a, 0x06, 0xe8, 0x8d, 0x07, 0xc6, + 0x06, 0xdc, 0x1c, 0x02, 0xe8, 0x77, 0xf2, 0xc6, + 0x06, 0xdc, 0x1c, 0x03, 0x07, 0xc3, 0x06, 0xbb, + 0x8a, 0x32, 0xe8, 0xe9, 0x72, 0x73, 0x1a, 0x8b, + 0x0e, 0x90, 0x32, 0xe8, 0xcd, 0x72, 0xe8, 0xf5, + 0x05, 0xe8, 0xa4, 0x07, 0xc6, 0x06, 0xdc, 0x1c, + 0x02, 0xe8, 0x52, 0xf2, 0xc6, 0x06, 0xdc, 0x1c, + 0x03, 0x07, 0xc3, 0xe8, 0xcc, 0x6d, 0xe8, 0x54, + 0xf5, 0xe8, 0x1c, 0x00, 0x80, 0x3e, 0xc6, 0x64, + 0x00, 0x75, 0xf3, 0xc3, 0xe8, 0xbb, 0x6d, 0xe8, + 0x43, 0xf5, 0xe8, 0x0b, 0x00, 0xe8, 0x5e, 0xf2, + 0x80, 0x3e, 0xc6, 0x64, 0x00, 0x75, 0xf0, 0xc3, + 0x06, 0xa0, 0xc6, 0x64, 0x3c, 0x00, 0x75, 0x03, + 0xe9, 0xc3, 0x00, 0x3c, 0x03, 0x74, 0x39, 0xe8, + 0x0c, 0x02, 0x73, 0x0d, 0xe8, 0x84, 0x01, 0x72, + 0xf6, 0xc6, 0x06, 0xc6, 0x64, 0x00, 0xe9, 0xad, + 0x00, 0xc6, 0x06, 0xc4, 0x64, 0x00, 0xc6, 0x06, + 0xc6, 0x64, 0x03, 0xe8, 0x22, 0x08, 0x73, 0x0e, + 0xc6, 0x06, 0xc6, 0x64, 0x02, 0xc6, 0x06, 0xe2, + 0x65, 0x01, 0xff, 0x06, 0xce, 0x64, 0xbb, 0x8a, + 0x32, 0x33, 0xc0, 0x89, 0x07, 0x89, 0x47, 0x02, + 0xbb, 0x8a, 0x32, 0xe8, 0x58, 0x72, 0x72, 0x02, + 0xeb, 0x7c, 0x8b, 0x0e, 0x8e, 0x32, 0xe8, 0x3a, + 0x72, 0xe8, 0xbd, 0x05, 0xe8, 0x5f, 0x05, 0x72, + 0xae, 0xe8, 0xb0, 0x02, 0x72, 0xa9, 0xe8, 0x6f, + 0x06, 0xc6, 0x06, 0xc6, 0x64, 0x03, 0xff, 0x0e, + 0xce, 0x64, 0x7f, 0x4d, 0x80, 0x3e, 0xc5, 0x64, + 0x01, 0x75, 0x2e, 0x8b, 0x3e, 0xb7, 0x64, 0x8b, + 0x36, 0xb9, 0x64, 0x8b, 0x0e, 0xbb, 0x64, 0x8b, + 0x16, 0xbd, 0x64, 0x3b, 0xf9, 0x75, 0x04, 0x3b, + 0xf2, 0x74, 0x16, 0xe8, 0x3a, 0x00, 0x89, 0x3e, + 0xaf, 0x64, 0x89, 0x36, 0xb1, 0x64, 0x89, 0x0e, + 0xb7, 0x64, 0x89, 0x16, 0xb9, 0x64, 0xe9, 0x66, + 0xff, 0xe8, 0xc6, 0x08, 0xe8, 0x7c, 0x00, 0xe8, + 0x77, 0x07, 0xa1, 0xb7, 0x64, 0xa3, 0xaf, 0x64, + 0xa1, 0xb9, 0x64, 0xa3, 0xb1, 0x64, 0xe8, 0xb4, + 0x00, 0xc6, 0x06, 0xdc, 0x1c, 0x02, 0xe8, 0x5d, + 0xf1, 0xc6, 0x06, 0xdc, 0x1c, 0x03, 0x07, 0xc3, + 0x8b, 0x1e, 0x44, 0x67, 0x43, 0x43, 0xa0, 0x40, + 0x67, 0x3c, 0x00, 0x75, 0x1b, 0x3b, 0xd6, 0x76, + 0x0e, 0x8b, 0xd6, 0x3b, 0x3f, 0x77, 0x09, 0x8b, + 0x4f, 0x04, 0xc6, 0x06, 0x40, 0x67, 0x01, 0xc3, + 0x8b, 0x0f, 0xc6, 0x06, 0x40, 0x67, 0x03, 0xc3, + 0x3c, 0x02, 0x75, 0x05, 0x3b, 0xd6, 0x72, 0xe1, + 0xc3, 0x3c, 0x01, 0x75, 0x1d, 0x3b, 0xcf, 0x73, + 0xe6, 0x8b, 0xcf, 0x3b, 0x77, 0x02, 0x77, 0x09, + 0x8b, 0x57, 0x06, 0xc6, 0x06, 0x40, 0x67, 0x02, + 0xc3, 0x8b, 0x57, 0x02, 0xc6, 0x06, 0x40, 0x67, + 0x00, 0xc3, 0x3c, 0x03, 0x75, 0xc9, 0x3b, 0xcf, + 0x77, 0xdf, 0xc3, 0xa0, 0xc3, 0x64, 0x0a, 0xc0, + 0x74, 0x42, 0x3c, 0x01, 0x75, 0x0a, 0xc6, 0x06, + 0xcb, 0x64, 0x01, 0xc6, 0x06, 0xcd, 0x64, 0x00, + 0x3c, 0x03, 0x75, 0x0a, 0xc6, 0x06, 0xcb, 0x64, + 0x01, 0xc6, 0x06, 0xcd, 0x64, 0x01, 0x3c, 0x02, + 0x75, 0x0f, 0xc6, 0x06, 0xcb, 0x64, 0x00, 0xc6, + 0x06, 0xcc, 0x64, 0x01, 0xc6, 0x06, 0xdc, 0x64, + 0x00, 0x3c, 0x04, 0x75, 0x0f, 0xc6, 0x06, 0xcb, + 0x64, 0x00, 0xc6, 0x06, 0xcc, 0x64, 0x00, 0xc6, + 0x06, 0xdc, 0x64, 0x01, 0xc3, 0xc6, 0x06, 0xc3, + 0x64, 0x00, 0xa0, 0x3d, 0x66, 0x3c, 0x01, 0x75, + 0x06, 0xc6, 0x06, 0x3d, 0x66, 0x02, 0xc3, 0x3c, + 0x03, 0x75, 0x06, 0xc6, 0x06, 0x3d, 0x66, 0x04, + 0xc3, 0x3c, 0x05, 0x75, 0x05, 0xc6, 0x06, 0x3d, + 0x66, 0x06, 0xc3, 0x8a, 0x0e, 0xc3, 0x64, 0x0a, + 0xc9, 0x74, 0x69, 0xa0, 0xcc, 0x64, 0x8a, 0x26, + 0xcd, 0x64, 0x8a, 0x2e, 0xcb, 0x64, 0x80, 0xf9, + 0x01, 0x75, 0x13, 0x80, 0xfc, 0x00, 0x75, 0x05, + 0x80, 0xfd, 0x01, 0x74, 0x4f, 0xe8, 0x51, 0x00, + 0xff, 0x06, 0xb1, 0x64, 0xf9, 0xc3, 0x80, 0xf9, + 0x03, 0x75, 0x13, 0x80, 0xfc, 0x01, 0x75, 0x05, + 0x80, 0xfd, 0x01, 0x74, 0x37, 0xe8, 0x39, 0x00, + 0xff, 0x0e, 0xb1, 0x64, 0xf9, 0xc3, 0x80, 0xf9, + 0x02, 0x75, 0x12, 0x3c, 0x01, 0x75, 0x05, 0x80, + 0xfd, 0x00, 0x74, 0x20, 0xe8, 0x22, 0x00, 0xff, + 0x0e, 0xaf, 0x64, 0xf9, 0xc3, 0x80, 0xf9, 0x04, + 0x75, 0x12, 0x3c, 0x00, 0x75, 0x05, 0x80, 0xfd, + 0x00, 0x74, 0x09, 0xe8, 0x0b, 0x00, 0xff, 0x06, + 0xaf, 0x64, 0xf9, 0xc3, 0xe8, 0x66, 0xff, 0xf8, + 0xc3, 0xa1, 0xaf, 0x64, 0xa3, 0xb7, 0x64, 0xa1, + 0xb1, 0x64, 0xa3, 0xb9, 0x64, 0xc3, 0x33, 0xc9, + 0xa1, 0xb7, 0x64, 0x8b, 0x1e, 0xaf, 0x64, 0x3b, + 0xc3, 0x77, 0x03, 0xfe, 0xc1, 0x93, 0x2b, 0xc3, + 0xa3, 0xc7, 0x64, 0xa1, 0xb9, 0x64, 0x8b, 0x1e, + 0xb1, 0x64, 0x3b, 0xc3, 0x77, 0x03, 0xfe, 0xc5, + 0x93, 0x2b, 0xc3, 0xa3, 0xc9, 0x64, 0x8b, 0x1e, + 0xc7, 0x64, 0xa1, 0xc9, 0x64, 0x0b, 0xdb, 0x74, + 0x0d, 0xc6, 0x06, 0xcc, 0x64, 0x01, 0x0a, 0xc9, + 0x74, 0x04, 0xfe, 0x0e, 0xcc, 0x64, 0x0b, 0xc0, + 0x74, 0x0d, 0xc6, 0x06, 0xcd, 0x64, 0x01, 0x0a, + 0xed, 0x74, 0x04, 0xfe, 0x0e, 0xcd, 0x64, 0x8b, + 0xd0, 0x0b, 0xc0, 0x0b, 0xc3, 0x75, 0x02, 0xf9, + 0xc3, 0x8b, 0xc2, 0xb9, 0x10, 0x00, 0xf7, 0xe1, + 0xb9, 0x0a, 0x00, 0xf7, 0xf1, 0x3b, 0xc3, 0x77, + 0x3e, 0xa0, 0xdc, 0x64, 0xa2, 0xdd, 0x64, 0xc6, + 0x06, 0xdc, 0x64, 0x00, 0xc6, 0x06, 0xcb, 0x64, + 0x00, 0x80, 0x3e, 0xcc, 0x64, 0x01, 0x74, 0x05, + 0xc6, 0x06, 0xdc, 0x64, 0x01, 0xa1, 0xc7, 0x64, + 0x8b, 0x1e, 0xb5, 0x64, 0x33, 0xd2, 0xf7, 0xf3, + 0xa3, 0xce, 0x64, 0xa1, 0xb5, 0x64, 0x8b, 0x1e, + 0xc9, 0x64, 0xb9, 0xe8, 0x03, 0xf7, 0xe3, 0xf7, + 0xe1, 0x8b, 0x1e, 0xc7, 0x64, 0xeb, 0x25, 0xc6, + 0x06, 0xcb, 0x64, 0x01, 0xa1, 0xc9, 0x64, 0x8b, + 0x1e, 0xb3, 0x64, 0x33, 0xd2, 0xf7, 0xf3, 0xa3, + 0xce, 0x64, 0xa1, 0xb3, 0x64, 0x8b, 0x1e, 0xc7, + 0x64, 0xb9, 0xe8, 0x03, 0xf7, 0xe3, 0xf7, 0xe1, + 0x8b, 0x1e, 0xc9, 0x64, 0xf7, 0xf3, 0xbb, 0xd0, + 0x64, 0x89, 0x07, 0xc7, 0x47, 0x02, 0x00, 0x00, + 0xbb, 0xd4, 0x64, 0x89, 0x07, 0xc7, 0x47, 0x02, + 0x00, 0x00, 0x80, 0x3e, 0xc4, 0x64, 0x01, 0x75, + 0x05, 0xc6, 0x06, 0xe2, 0x65, 0x01, 0xff, 0x06, + 0xce, 0x64, 0xf8, 0xc3, 0x83, 0x3e, 0xce, 0x64, + 0x01, 0x75, 0x02, 0xf8, 0xc3, 0x8b, 0x36, 0xaf, + 0x64, 0x8b, 0x3e, 0xb1, 0x64, 0xe8, 0x2e, 0x02, + 0x72, 0x01, 0xc3, 0x8b, 0x36, 0x44, 0x67, 0x3b, + 0xde, 0x74, 0x0f, 0x89, 0x1e, 0x44, 0x67, 0x8a, + 0x04, 0x3a, 0x07, 0x74, 0x05, 0xc6, 0x06, 0x40, + 0x67, 0xff, 0xc6, 0x06, 0xc5, 0x64, 0x01, 0xa0, + 0xcc, 0x64, 0x8a, 0x26, 0xcd, 0x64, 0x0a, 0xe4, + 0x74, 0x15, 0xc6, 0x06, 0x42, 0x67, 0x01, 0xc6, + 0x06, 0x43, 0x67, 0x01, 0x0a, 0xc0, 0x74, 0x1a, + 0xc6, 0x06, 0x43, 0x67, 0x00, 0xeb, 0x13, 0xc6, + 0x06, 0x42, 0x67, 0x00, 0xc6, 0x06, 0x43, 0x67, + 0x01, 0x0a, 0xc0, 0x74, 0x05, 0xc6, 0x06, 0x43, + 0x67, 0x00, 0x43, 0x43, 0x53, 0x8b, 0x0f, 0x41, + 0x8b, 0x7f, 0x02, 0x47, 0x8b, 0x77, 0x04, 0x4e, + 0x8b, 0x5f, 0x06, 0x4b, 0xa1, 0xbf, 0x64, 0x8b, + 0x16, 0xc1, 0x64, 0x3b, 0xc1, 0x72, 0x17, 0x3b, + 0xc6, 0x77, 0x13, 0xc6, 0x06, 0x41, 0x67, 0x00, + 0x80, 0x3e, 0x42, 0x67, 0x01, 0x74, 0x4f, 0xc6, + 0x06, 0x41, 0x67, 0x02, 0xeb, 0x48, 0x3b, 0xd7, + 0x72, 0x17, 0x3b, 0xd3, 0x77, 0x13, 0xc6, 0x06, + 0x41, 0x67, 0x01, 0x80, 0x3e, 0x43, 0x67, 0x01, + 0x74, 0x34, 0xc6, 0x06, 0x41, 0x67, 0x03, 0xeb, + 0x2d, 0x80, 0x3e, 0xcb, 0x64, 0x00, 0x75, 0x13, + 0xc6, 0x06, 0x41, 0x67, 0x01, 0x80, 0x3e, 0x43, + 0x67, 0x01, 0x74, 0x1a, 0xc6, 0x06, 0x41, 0x67, + 0x03, 0xeb, 0x13, 0xc6, 0x06, 0x41, 0x67, 0x00, + 0x80, 0x3e, 0x42, 0x67, 0x01, 0x74, 0x07, 0xc6, + 0x06, 0x41, 0x67, 0x02, 0xeb, 0x00, 0x5b, 0x53, + 0x83, 0xc3, 0x08, 0xa0, 0x41, 0x67, 0xb4, 0x00, + 0x03, 0xd8, 0x8a, 0x07, 0x5b, 0x8a, 0x36, 0x40, + 0x67, 0x0a, 0xc0, 0x74, 0x18, 0x3c, 0x01, 0x74, + 0x35, 0x3c, 0x02, 0x74, 0x56, 0x3c, 0x03, 0x74, + 0x77, 0x3c, 0x04, 0x75, 0x03, 0xe9, 0x95, 0x00, + 0xb0, 0x34, 0xe9, 0xf3, 0x78, 0xa0, 0xcd, 0x64, + 0x8a, 0x26, 0xcc, 0x64, 0x8a, 0x16, 0x41, 0x67, + 0x80, 0xfa, 0x01, 0x74, 0x05, 0x80, 0xfa, 0x03, + 0x75, 0x06, 0x0a, 0xc0, 0x74, 0x08, 0xeb, 0x50, + 0x0a, 0xe4, 0x75, 0x27, 0xeb, 0x6f, 0x80, 0xfe, + 0x02, 0x75, 0x09, 0x80, 0x3e, 0xcc, 0x64, 0x01, + 0x74, 0x19, 0xeb, 0x61, 0x80, 0xfe, 0x00, 0x74, + 0xf2, 0xa1, 0xbf, 0x64, 0xa3, 0xb7, 0x64, 0x83, + 0xc3, 0x02, 0x8b, 0x07, 0xa3, 0xb9, 0x64, 0xb0, + 0x00, 0xeb, 0x6a, 0x80, 0xfe, 0x03, 0x75, 0x09, + 0x80, 0x3e, 0xcd, 0x64, 0x01, 0x75, 0xcf, 0xeb, + 0x17, 0x80, 0xfe, 0x01, 0x74, 0xf2, 0xa1, 0xc1, + 0x64, 0xa3, 0xb9, 0x64, 0x83, 0xc3, 0x04, 0x8b, + 0x07, 0xa3, 0xb7, 0x64, 0xb0, 0x01, 0xeb, 0x45, + 0x80, 0xfe, 0x00, 0x75, 0x09, 0x80, 0x3e, 0xcc, + 0x64, 0x01, 0x75, 0x19, 0xeb, 0xcd, 0x80, 0xfe, + 0x02, 0x74, 0xf2, 0xa1, 0xbf, 0x64, 0xa3, 0xb7, + 0x64, 0x83, 0xc3, 0x06, 0x8b, 0x07, 0xa3, 0xb9, + 0x64, 0xb0, 0x02, 0xeb, 0x20, 0x80, 0xfe, 0x01, + 0x75, 0x09, 0x80, 0x3e, 0xcd, 0x64, 0x01, 0x74, + 0xcf, 0xeb, 0x83, 0x80, 0xfe, 0x03, 0x74, 0xf2, + 0xa1, 0xc1, 0x64, 0xa3, 0xb9, 0x64, 0x8b, 0x07, + 0xa3, 0xb7, 0x64, 0xb0, 0x03, 0xa2, 0x40, 0x67, + 0xa1, 0xbf, 0x64, 0xa3, 0xaf, 0x64, 0xa1, 0xc1, + 0x64, 0xa3, 0xb1, 0x64, 0xf9, 0xc3, 0x81, 0xfe, + 0x3f, 0x01, 0x75, 0x01, 0x4e, 0x0b, 0xf6, 0x75, + 0x01, 0x46, 0x81, 0xff, 0xc7, 0x00, 0x75, 0x01, + 0x4f, 0x0b, 0xff, 0x75, 0x01, 0x47, 0xe8, 0x89, + 0x00, 0x73, 0x29, 0x43, 0x8a, 0x07, 0x0a, 0xc0, + 0x74, 0x08, 0xe8, 0x20, 0x00, 0xe8, 0x7a, 0x00, + 0x73, 0x1a, 0xe8, 0x14, 0x03, 0xc6, 0x06, 0xdc, + 0x1c, 0x02, 0xe8, 0x09, 0xed, 0xc6, 0x06, 0xdc, + 0x1c, 0x03, 0xa1, 0xaf, 0x64, 0x8b, 0xf0, 0xa1, + 0xb1, 0x64, 0x8b, 0xf8, 0xc3, 0x43, 0x3c, 0x01, + 0x75, 0x05, 0x8b, 0x7f, 0x02, 0x4f, 0xc3, 0x3c, + 0x03, 0x75, 0x05, 0x8b, 0x7f, 0x06, 0x47, 0xc3, + 0x3c, 0x02, 0x75, 0x05, 0x8b, 0x77, 0x04, 0x46, + 0xc3, 0x3c, 0x04, 0x75, 0x04, 0x8b, 0x37, 0x4e, + 0xc3, 0xb0, 0x3a, 0xe9, 0xc2, 0x77, 0xbb, 0x46, + 0x67, 0xe8, 0x2e, 0x04, 0x8a, 0x0f, 0x0a, 0xc9, + 0x74, 0x24, 0xb5, 0x00, 0x43, 0x8b, 0x47, 0x02, + 0x8b, 0x57, 0x06, 0x3b, 0xf0, 0x76, 0x12, 0x3b, + 0xf2, 0x73, 0x0e, 0x8b, 0x47, 0x04, 0x8b, 0x57, + 0x08, 0x3b, 0xf8, 0x76, 0x04, 0x3b, 0xfa, 0x72, + 0x07, 0x83, 0xc3, 0x0e, 0xe2, 0xdf, 0xf8, 0xc3, + 0xf9, 0xc3, 0xbb, 0x46, 0x67, 0xe8, 0xfa, 0x03, + 0x8a, 0x0f, 0x0a, 0xc9, 0x74, 0x24, 0xb5, 0x00, + 0x43, 0x8b, 0x47, 0x02, 0x8b, 0x57, 0x06, 0x3b, + 0xf0, 0x72, 0x12, 0x3b, 0xf2, 0x77, 0x0e, 0x8b, + 0x47, 0x04, 0x8b, 0x57, 0x08, 0x3b, 0xf8, 0x72, + 0x04, 0x3b, 0xfa, 0x76, 0x07, 0x83, 0xc3, 0x0e, + 0xe2, 0xdf, 0xf8, 0xc3, 0xf9, 0xc3, 0xbb, 0xf4, + 0x70, 0xe8, 0xc6, 0x03, 0x8b, 0x07, 0x3d, 0xff, + 0xff, 0x74, 0x4c, 0x43, 0x43, 0x8b, 0x0e, 0xb1, + 0x64, 0x3a, 0xc8, 0x77, 0xef, 0x8a, 0xc4, 0xb4, + 0x00, 0xa3, 0xd8, 0x64, 0xe8, 0x25, 0x03, 0x83, + 0x3e, 0xce, 0x64, 0x02, 0x76, 0x31, 0x83, 0x3e, + 0xd8, 0x64, 0x1e, 0x72, 0x15, 0x83, 0x3e, 0xb3, + 0x64, 0x01, 0x74, 0x23, 0xc7, 0x06, 0xb3, 0x64, + 0x01, 0x00, 0xc7, 0x06, 0xb5, 0x64, 0x04, 0x00, + 0xf9, 0xc3, 0x83, 0x3e, 0xb3, 0x64, 0x03, 0x74, + 0x0e, 0xc7, 0x06, 0xb3, 0x64, 0x03, 0x00, 0xc7, + 0x06, 0xb5, 0x64, 0x08, 0x00, 0xf9, 0xc3, 0xf8, + 0xc3, 0x80, 0x3e, 0xc6, 0x64, 0x02, 0x75, 0x01, + 0xc3, 0xa1, 0xaf, 0x64, 0xa3, 0xbf, 0x64, 0xa1, + 0xb1, 0x64, 0xa3, 0xc1, 0x64, 0x80, 0x3e, 0xcb, + 0x64, 0x00, 0x75, 0x36, 0xa1, 0xb5, 0x64, 0x80, + 0x3e, 0xcc, 0x64, 0x01, 0x75, 0x06, 0x01, 0x06, + 0xaf, 0x64, 0xeb, 0x04, 0x29, 0x06, 0xaf, 0x64, + 0xbb, 0xd4, 0x64, 0x8b, 0x07, 0x8b, 0x57, 0x02, + 0xb9, 0xe8, 0x03, 0xf7, 0xf1, 0x80, 0x3e, 0xcd, + 0x64, 0x01, 0x75, 0x06, 0x01, 0x06, 0xb1, 0x64, + 0xeb, 0x04, 0x29, 0x06, 0xb1, 0x64, 0xe8, 0x37, + 0x00, 0xc3, 0xa1, 0xb3, 0x64, 0x80, 0x3e, 0xcd, + 0x64, 0x01, 0x75, 0x06, 0x01, 0x06, 0xb1, 0x64, + 0xeb, 0x04, 0x29, 0x06, 0xb1, 0x64, 0xbb, 0xd4, + 0x64, 0x8b, 0x07, 0x8b, 0x57, 0x02, 0xb9, 0xe8, + 0x03, 0xf7, 0xf1, 0x80, 0x3e, 0xcc, 0x64, 0x01, + 0x75, 0x06, 0x01, 0x06, 0xaf, 0x64, 0xeb, 0x04, + 0x29, 0x06, 0xaf, 0x64, 0xe8, 0x01, 0x00, 0xc3, + 0x50, 0xbb, 0xd4, 0x64, 0x8b, 0x07, 0x8b, 0x57, + 0x02, 0xbe, 0xd0, 0x64, 0x8b, 0x1c, 0x8b, 0x4c, + 0x02, 0x03, 0xc3, 0x83, 0xd2, 0x00, 0x03, 0xd1, + 0xbb, 0xd4, 0x64, 0x89, 0x07, 0x89, 0x57, 0x02, + 0x58, 0xb9, 0xe8, 0x03, 0xf7, 0xe1, 0x8b, 0xc8, + 0x8b, 0x07, 0x8b, 0x57, 0x02, 0x2b, 0xc1, 0x83, + 0xda, 0x00, 0x89, 0x07, 0x89, 0x57, 0x02, 0xc3, + 0x8a, 0x0e, 0x07, 0x66, 0x80, 0x3e, 0xc6, 0x64, + 0x02, 0x74, 0x4d, 0x80, 0x3e, 0xcb, 0x64, 0x00, + 0x75, 0x0f, 0xbb, 0xed, 0x65, 0x80, 0x3e, 0xcc, + 0x64, 0x01, 0x74, 0x1e, 0xbb, 0xe3, 0x65, 0xeb, + 0x19, 0x80, 0x3e, 0xe2, 0x65, 0x07, 0x76, 0x05, + 0xc6, 0x06, 0xe2, 0x65, 0x01, 0xbb, 0xff, 0x65, + 0x80, 0x3e, 0xcd, 0x64, 0x01, 0x74, 0x03, 0xbb, + 0xf7, 0x65, 0x8a, 0x0e, 0xe2, 0x65, 0xb5, 0x00, + 0x49, 0x03, 0xd9, 0x8a, 0x0f, 0x0a, 0xc9, 0x75, + 0x07, 0xc6, 0x06, 0xe2, 0x65, 0x01, 0xeb, 0xbb, + 0x88, 0x0e, 0x07, 0x66, 0xfe, 0x06, 0xe2, 0x65, + 0xe8, 0xdd, 0x00, 0xc3, 0x8b, 0x1e, 0x3d, 0x65, + 0x8a, 0x0e, 0x3f, 0x65, 0xb5, 0x00, 0x49, 0x03, + 0xd9, 0x8a, 0x0f, 0x0a, 0xc9, 0x75, 0x0a, 0xc6, + 0x06, 0x3f, 0x65, 0x04, 0xe8, 0x0e, 0x00, 0xeb, + 0xe3, 0x88, 0x0e, 0x07, 0x66, 0xfe, 0x06, 0x3f, + 0x65, 0xe8, 0xb4, 0x00, 0xc3, 0xb8, 0x03, 0x00, + 0xe8, 0xb0, 0x73, 0xbb, 0x40, 0x65, 0xd1, 0xe0, + 0x03, 0xd8, 0x8b, 0x07, 0xa3, 0x3d, 0x65, 0xc3, + 0x80, 0x3e, 0xcb, 0x64, 0x00, 0x75, 0x13, 0xbb, + 0xfe, 0x64, 0xb2, 0x01, 0x80, 0x3e, 0xcc, 0x64, + 0x01, 0x74, 0x18, 0xbb, 0xe9, 0x64, 0xb2, 0x01, + 0xeb, 0x11, 0xbb, 0x28, 0x65, 0xb2, 0x0b, 0x80, + 0x3e, 0xcd, 0x64, 0x01, 0x74, 0x05, 0xbb, 0x13, + 0x65, 0xb2, 0x13, 0x8a, 0x0e, 0xe8, 0x64, 0xb5, + 0x00, 0x49, 0x03, 0xd9, 0x8a, 0x0f, 0x0a, 0xc9, + 0x75, 0x07, 0xc6, 0x06, 0xe8, 0x64, 0x01, 0xeb, + 0xbf, 0xfe, 0x06, 0xe8, 0x64, 0xe8, 0x58, 0x00, + 0x1e, 0x53, 0x8a, 0xca, 0x88, 0x0e, 0x07, 0x66, + 0xe8, 0x4d, 0x00, 0x8b, 0xf3, 0x5b, 0xa1, 0xbf, + 0x32, 0x8e, 0xd8, 0x8b, 0x07, 0x8b, 0x4f, 0x02, + 0xf7, 0xe1, 0x8b, 0xc8, 0xb8, 0x06, 0x00, 0x03, + 0xd8, 0x03, 0xf0, 0x8a, 0x07, 0x88, 0x04, 0x43, + 0x46, 0xe2, 0xf8, 0x1f, 0xc3, 0x33, 0xc9, 0x80, + 0x3e, 0xcb, 0x64, 0x00, 0x75, 0x11, 0xb2, 0x01, + 0xb1, 0x28, 0x80, 0x3e, 0xcc, 0x64, 0x01, 0x74, + 0xb8, 0xb2, 0x01, 0xb1, 0x28, 0xeb, 0xb2, 0xb2, + 0x0b, 0xb1, 0x29, 0x80, 0x3e, 0xcd, 0x64, 0x01, + 0x74, 0xa7, 0xb2, 0x13, 0xb1, 0x2a, 0xeb, 0xa1, + 0x06, 0xa1, 0xbf, 0x32, 0x8e, 0xc0, 0x32, 0xed, + 0xbb, 0x01, 0x00, 0x49, 0xd1, 0xe1, 0x03, 0xd9, + 0x26, 0x8b, 0x1f, 0x89, 0x1e, 0xe6, 0x64, 0x07, + 0xc3, 0x80, 0x3e, 0xcb, 0x64, 0x00, 0x75, 0x0d, + 0xb1, 0x01, 0x80, 0x3e, 0xcc, 0x64, 0x01, 0x74, + 0x0f, 0xb1, 0x01, 0xeb, 0x0b, 0xb1, 0x0b, 0x80, + 0x3e, 0xcd, 0x64, 0x01, 0x74, 0x02, 0xb1, 0x13, + 0x88, 0x0e, 0x07, 0x66, 0xe8, 0xc1, 0xff, 0xc3, + 0xa0, 0x07, 0x66, 0x8a, 0x26, 0xcb, 0x64, 0x8a, + 0x1e, 0xcc, 0x64, 0x8a, 0x3e, 0xcd, 0x64, 0x83, + 0x3e, 0xce, 0x64, 0x01, 0x75, 0x44, 0x3c, 0x13, + 0x75, 0x0f, 0x80, 0xfc, 0x01, 0x75, 0x3b, 0x80, + 0xff, 0x00, 0x75, 0x36, 0xb1, 0x14, 0xe9, 0x85, + 0x00, 0x3c, 0x0b, 0x75, 0x0e, 0x80, 0xfc, 0x01, + 0x75, 0x28, 0x80, 0xff, 0x01, 0x75, 0x23, 0xb1, + 0x0c, 0xeb, 0x73, 0x3c, 0x01, 0x75, 0x1b, 0xa0, + 0xdd, 0x64, 0x3a, 0x06, 0xdc, 0x64, 0x75, 0x12, + 0x80, 0xfc, 0x00, 0x75, 0x0d, 0x80, 0xfb, 0x01, + 0x75, 0x04, 0xb1, 0x02, 0xeb, 0x58, 0xb1, 0x02, + 0xeb, 0x54, 0xa0, 0x07, 0x66, 0x3c, 0x13, 0x72, + 0x12, 0x3c, 0x1a, 0x77, 0x0e, 0x80, 0xfc, 0x01, + 0x75, 0x42, 0x80, 0xff, 0x01, 0x75, 0x3d, 0xb1, + 0x02, 0xeb, 0x3b, 0x3c, 0x01, 0x72, 0x1f, 0x3c, + 0x0a, 0x77, 0x1b, 0x80, 0xfc, 0x00, 0x75, 0x2c, + 0xa0, 0xdd, 0x64, 0x38, 0x06, 0xdc, 0x64, 0x74, + 0x23, 0x80, 0xfb, 0x01, 0x75, 0x04, 0xb1, 0x0c, + 0xeb, 0x1c, 0xb1, 0x0c, 0xeb, 0x18, 0x3c, 0x0b, + 0x72, 0x12, 0x3c, 0x12, 0x77, 0x0e, 0x80, 0xfc, + 0x01, 0x75, 0x09, 0x80, 0xff, 0x00, 0x75, 0x04, + 0xb1, 0x02, 0xeb, 0x02, 0xf8, 0xc3, 0x88, 0x0e, + 0x07, 0x66, 0xf9, 0xc3, 0xa1, 0xd8, 0x64, 0x3d, + 0x64, 0x00, 0x77, 0x28, 0x53, 0x1e, 0x8b, 0x16, + 0xb1, 0x32, 0x8e, 0xda, 0xbb, 0x00, 0xfa, 0xba, + 0xff, 0xff, 0x0b, 0xc0, 0x74, 0x09, 0x8b, 0xc8, + 0xb8, 0x64, 0x00, 0x33, 0xd2, 0xf7, 0xf1, 0x89, + 0x57, 0x02, 0xb9, 0x64, 0x00, 0xf7, 0xe1, 0x89, + 0x07, 0x1f, 0x5b, 0xc3, 0xb0, 0x35, 0xe9, 0xdf, + 0x73, 0x80, 0x3e, 0xae, 0x64, 0x01, 0x75, 0x08, + 0x81, 0x3e, 0xba, 0x00, 0x3f, 0x01, 0x75, 0x18, + 0x8b, 0x0e, 0x32, 0x32, 0x3b, 0xca, 0x77, 0x0a, + 0x8b, 0x0e, 0x34, 0x32, 0x3b, 0xca, 0x73, 0x08, + 0xf8, 0xc3, 0x3b, 0xce, 0x76, 0x02, 0xf8, 0xc3, + 0x8b, 0x0e, 0xb1, 0x64, 0x3b, 0xcf, 0x76, 0x02, + 0xf8, 0xc3, 0x3b, 0xc8, 0x73, 0x02, 0xf8, 0xc3, + 0xf9, 0xc3, 0xc6, 0x06, 0xc6, 0x64, 0x00, 0xc6, + 0x06, 0x40, 0x67, 0xff, 0xc6, 0x06, 0xc4, 0x64, + 0x01, 0xc6, 0x06, 0xc5, 0x64, 0x00, 0xe8, 0x77, + 0xf5, 0xc3, 0x51, 0x8b, 0x0e, 0xf3, 0xb4, 0x49, + 0xd1, 0xe1, 0x03, 0xd9, 0x8b, 0x1f, 0x59, 0xc3, + 0xbb, 0xf5, 0xb4, 0xeb, 0xed, 0xc7, 0x06, 0xf3, + 0xb4, 0x03, 0x00, 0xb8, 0x3f, 0x01, 0xbb, 0x68, + 0x00, 0xbf, 0x22, 0x01, 0xbe, 0x76, 0x00, 0xb1, + 0x01, 0xb5, 0x04, 0xe8, 0xdd, 0x6b, 0xc3, 0xc7, + 0x06, 0xf3, 0xb4, 0x05, 0x00, 0xb8, 0x2c, 0x01, + 0xbb, 0x83, 0x00, 0xbf, 0x2c, 0x01, 0xbe, 0x87, + 0x00, 0xb1, 0x0b, 0xb5, 0x03, 0xe8, 0xc3, 0x6b, + 0xc3, 0x80, 0x3e, 0xe1, 0xdb, 0x01, 0x74, 0x07, + 0xbb, 0x0f, 0x57, 0xe8, 0x27, 0x60, 0xc3, 0xb9, + 0x4c, 0x03, 0xe8, 0xba, 0xda, 0xb9, 0x4e, 0x03, + 0xe8, 0xb7, 0xda, 0xb9, 0x4d, 0x03, 0xe8, 0xd6, + 0xda, 0xbb, 0x96, 0x56, 0xe8, 0x0e, 0x60, 0xc3, + 0xbb, 0xac, 0x56, 0xe8, 0x07, 0x60, 0xc3, 0xbb, + 0xf7, 0x56, 0xe8, 0x00, 0x60, 0xc3, 0xbb, 0x7a, + 0xdb, 0xe8, 0x51, 0xd1, 0xe8, 0x66, 0xd1, 0xc3, + 0xc7, 0x06, 0xf3, 0xb4, 0x02, 0x00, 0xb8, 0x00, + 0x00, 0xbb, 0xb4, 0x00, 0xbf, 0x38, 0x00, 0xbe, + 0xb4, 0x00, 0xb1, 0x01, 0xb5, 0x02, 0xe8, 0x6a, + 0x6b, 0xc3, 0xc7, 0x06, 0xf3, 0xb4, 0x04, 0x00, + 0xb8, 0x3f, 0x01, 0xbb, 0x80, 0x00, 0xbf, 0x13, + 0x01, 0xbe, 0x89, 0x00, 0xb1, 0x01, 0xb5, 0x04, + 0xe8, 0x50, 0x6b, 0xc3, 0x80, 0x3e, 0xe4, 0xdb, + 0x01, 0x75, 0x07, 0xbb, 0xb2, 0x57, 0xe8, 0xb4, + 0x5f, 0xc3, 0xb9, 0x4c, 0x00, 0xb0, 0x0b, 0xb4, + 0x07, 0xe8, 0x51, 0x69, 0xb0, 0x0f, 0xe8, 0x55, + 0x69, 0xb0, 0x13, 0xe8, 0x57, 0x69, 0xb0, 0x17, + 0xe8, 0x59, 0x69, 0xb0, 0x1b, 0xe8, 0x5b, 0x69, + 0xb9, 0x38, 0x00, 0xb0, 0x23, 0xe8, 0x5a, 0x69, + 0xb9, 0x13, 0x00, 0xb0, 0x3b, 0xe8, 0x59, 0x69, + 0xb9, 0x60, 0x03, 0xe8, 0x19, 0xda, 0xe8, 0xba, + 0x6a, 0xc6, 0x06, 0xdc, 0x1c, 0x01, 0xbb, 0x47, + 0x33, 0xc7, 0x47, 0x02, 0x61, 0x03, 0xb0, 0x02, + 0xe8, 0x3c, 0xd9, 0xc6, 0x06, 0xb0, 0x32, 0x01, + 0xe8, 0x91, 0xdd, 0xc6, 0x06, 0xb0, 0x32, 0x00, + 0x9c, 0xe8, 0xa2, 0x69, 0xb9, 0x62, 0x03, 0xc6, + 0x06, 0xdc, 0x1c, 0x02, 0xe8, 0xeb, 0xd9, 0x9d, + 0x73, 0x4c, 0xa1, 0x1f, 0xc4, 0xe8, 0x54, 0xe7, + 0x3c, 0x55, 0x75, 0x42, 0x83, 0x3e, 0x52, 0x72, + 0x05, 0x75, 0x3b, 0xc6, 0x06, 0xcf, 0x00, 0x00, + 0xc7, 0x06, 0x1f, 0xc4, 0x00, 0x00, 0xb9, 0x05, + 0x00, 0xb0, 0x04, 0xb4, 0x06, 0xe8, 0xcd, 0x68, + 0xb0, 0x13, 0xe8, 0xd8, 0x68, 0xb9, 0x40, 0x00, + 0xb0, 0x0b, 0xe8, 0xc9, 0x68, 0xb9, 0x63, 0x03, + 0xe8, 0xaf, 0xd9, 0xb0, 0x55, 0xe8, 0x00, 0xe6, + 0xb0, 0x56, 0xe8, 0xeb, 0xe5, 0xc6, 0x06, 0xe4, + 0xdb, 0x01, 0xe8, 0x1e, 0x00, 0xc3, 0xe8, 0x1a, + 0x00, 0xff, 0x36, 0xcf, 0x00, 0xc6, 0x06, 0xcf, + 0x00, 0x00, 0xbb, 0x72, 0xdb, 0xe8, 0x45, 0xd0, + 0xe8, 0x5a, 0xd0, 0x8f, 0x06, 0xcf, 0x00, 0xe8, + 0xdc, 0xdd, 0xc3, 0xc7, 0x06, 0xaf, 0x64, 0x56, + 0x00, 0xc7, 0x06, 0xb1, 0x64, 0xc3, 0x00, 0xc6, + 0x06, 0xcc, 0x64, 0x00, 0xc6, 0x06, 0xcd, 0x64, + 0x01, 0xc6, 0x06, 0xcb, 0x64, 0x01, 0xb9, 0x64, + 0x03, 0xe8, 0x83, 0xd9, 0xc3, 0xbb, 0xb7, 0x58, + 0xe8, 0xba, 0x5e, 0xc3, 0xb9, 0x38, 0x00, 0xb0, + 0x0a, 0xb4, 0x09, 0xe8, 0x57, 0x68, 0xe8, 0xae, + 0xd9, 0xe8, 0x3c, 0xfe, 0xc6, 0x07, 0x00, 0xe8, + 0xc2, 0x6c, 0xb9, 0x6b, 0x03, 0xe8, 0x6d, 0xd9, + 0xb0, 0x06, 0xe8, 0x28, 0xd8, 0xb0, 0x5c, 0xe8, + 0x76, 0xe5, 0xc3, 0xbb, 0x0f, 0x57, 0xe8, 0x8c, + 0x5e, 0xc3, 0xe8, 0x09, 0x63, 0xc3, 0xe8, 0x86, + 0xd9, 0xbb, 0x46, 0x67, 0xe8, 0x03, 0xfe, 0x83, + 0xc3, 0x03, 0xff, 0x37, 0x53, 0xc7, 0x07, 0x3f, + 0x01, 0xbe, 0xc5, 0x00, 0xbf, 0x9f, 0x00, 0xc6, + 0x06, 0xc3, 0x64, 0x04, 0xe8, 0x3c, 0xf4, 0xe8, + 0xf6, 0xfd, 0xc6, 0x07, 0x00, 0xe8, 0x7c, 0x6c, + 0xb9, 0x47, 0x00, 0xb0, 0x08, 0xb4, 0x07, 0xe8, + 0xfb, 0x67, 0xb9, 0x05, 0x00, 0xb0, 0x0d, 0xe8, + 0xfc, 0x67, 0xb9, 0x41, 0x03, 0xe8, 0x15, 0xd9, + 0xbe, 0xe1, 0x00, 0xbf, 0x9f, 0x00, 0xc6, 0x06, + 0xc3, 0x64, 0x04, 0xe8, 0x0d, 0xf4, 0x5b, 0x8f, + 0x07, 0xb0, 0x4e, 0xe8, 0x12, 0xe5, 0xb0, 0x03, + 0xe8, 0xba, 0xd7, 0xc3, 0xbb, 0xc8, 0x58, 0xe8, + 0x23, 0x5e, 0xc3, 0xc7, 0x06, 0xf3, 0xb4, 0x03, + 0x00, 0xb8, 0xd6, 0x00, 0xbb, 0xc7, 0x00, 0xbf, + 0xda, 0x00, 0xbe, 0xbf, 0x00, 0xb1, 0x13, 0xb5, + 0x01, 0xe8, 0x97, 0x69, 0xc3, 0xc7, 0x06, 0xf3, + 0xb4, 0x05, 0x00, 0xb8, 0x00, 0x00, 0xbb, 0xae, + 0x00, 0xbf, 0x23, 0x00, 0xbe, 0xae, 0x00, 0xb1, + 0x01, 0xb5, 0x02, 0xe8, 0x7d, 0x69, 0xc3, 0xe8, + 0xed, 0xd8, 0xc6, 0x06, 0xdc, 0x64, 0x00, 0xb9, + 0x17, 0x00, 0xb0, 0x08, 0xb4, 0x07, 0xe8, 0x84, + 0x67, 0xb9, 0x18, 0x00, 0xb0, 0x0d, 0xe8, 0x85, + 0x67, 0xe8, 0x64, 0xfd, 0xc6, 0x47, 0x01, 0x00, + 0x53, 0xe8, 0xe8, 0x6b, 0xb9, 0x49, 0x03, 0xe8, + 0x60, 0xd8, 0x5b, 0xc6, 0x47, 0x01, 0x61, 0xc6, + 0x47, 0x02, 0x00, 0xe8, 0x92, 0x6b, 0xe8, 0x84, + 0x00, 0xe8, 0xb1, 0xdc, 0xb9, 0x3f, 0x00, 0xb0, + 0x0c, 0xb4, 0x07, 0xe8, 0x4f, 0x67, 0xb9, 0x05, + 0x00, 0xb0, 0x1a, 0xe8, 0x50, 0x67, 0xb9, 0x4a, + 0x03, 0xe8, 0x36, 0xd8, 0xe8, 0x66, 0x00, 0xe8, + 0x93, 0xdc, 0xc6, 0x06, 0xe6, 0x1c, 0xd1, 0xbb, + 0x56, 0x56, 0xbe, 0x10, 0x55, 0xe8, 0x2e, 0x60, + 0xe8, 0x7b, 0xdc, 0xbb, 0x7a, 0x56, 0xbe, 0x5c, + 0x55, 0xe8, 0x22, 0x60, 0xe8, 0x6f, 0xdc, 0xbb, + 0x82, 0x56, 0xbe, 0x3e, 0x55, 0xe8, 0x16, 0x60, + 0xe8, 0x63, 0xdc, 0xb9, 0x4b, 0x03, 0xe8, 0x01, + 0xd8, 0xc7, 0x06, 0xaf, 0x64, 0xdf, 0x00, 0xc7, + 0x06, 0xb1, 0x64, 0x95, 0x00, 0xc6, 0x06, 0xcb, + 0x64, 0x00, 0xc6, 0x06, 0xcc, 0x64, 0x01, 0xc6, + 0x06, 0xcd, 0x64, 0x00, 0xe8, 0x1d, 0xd8, 0xb0, + 0x07, 0xe8, 0xd1, 0xd6, 0xb0, 0x01, 0xe8, 0xcc, + 0xd6, 0xb0, 0x51, 0xe8, 0x1a, 0xe4, 0xbb, 0x46, + 0x56, 0xe8, 0x31, 0x5d, 0xc3, 0xe8, 0x6b, 0x68, + 0xc6, 0x06, 0xdc, 0x1c, 0x01, 0xe8, 0x9c, 0xeb, + 0xe8, 0x45, 0xec, 0xe8, 0xda, 0x63, 0xe8, 0x2b, + 0xf1, 0xc3, 0xc7, 0x06, 0xf3, 0xb4, 0x0a, 0x00, + 0xb8, 0x3f, 0x01, 0xbb, 0xb7, 0x00, 0xbf, 0x0d, + 0x01, 0xbe, 0xaf, 0x00, 0xb1, 0x01, 0xb5, 0x04, + 0xe8, 0x90, 0x68, 0xc3, 0xc7, 0x06, 0xf3, 0xb4, + 0x04, 0x00, 0xb8, 0x3f, 0x01, 0xbb, 0xb9, 0x00, + 0xbf, 0x18, 0x01, 0xbe, 0xb9, 0x00, 0xb1, 0x01, + 0xb5, 0x04, 0xe8, 0x76, 0x68, 0xc3, 0xc7, 0x06, + 0xf3, 0xb4, 0x02, 0x00, 0xb8, 0xdd, 0x00, 0xbb, + 0xc7, 0x00, 0xbf, 0xd9, 0x00, 0xbe, 0xc1, 0x00, + 0xb1, 0x13, 0xb5, 0x01, 0xe8, 0x5c, 0x68, 0xc3, + 0xb9, 0x50, 0x00, 0xb0, 0x04, 0xb4, 0x02, 0xe8, + 0x6b, 0x66, 0xb9, 0xc1, 0x03, 0xe8, 0x57, 0xd7, + 0xe8, 0xf8, 0x67, 0xc7, 0x06, 0xf3, 0xb4, 0x08, + 0x00, 0xb8, 0x9b, 0x00, 0xbb, 0xc7, 0x00, 0xbf, + 0x9e, 0x00, 0xbe, 0xb8, 0x00, 0xb1, 0x13, 0xb5, + 0x01, 0xe8, 0x2f, 0x68, 0xc3, 0xb9, 0x46, 0x00, + 0xb0, 0x06, 0xb4, 0x09, 0xe8, 0x3e, 0x66, 0xb9, + 0xc2, 0x03, 0xe8, 0x2a, 0xd7, 0xe8, 0xcb, 0x67, + 0xc7, 0x06, 0xf3, 0xb4, 0x07, 0x00, 0xb8, 0x1e, + 0x00, 0xbb, 0xb8, 0x00, 0xbf, 0x32, 0x00, 0xbe, + 0xb8, 0x00, 0xb1, 0x01, 0xb5, 0x02, 0xe8, 0x02, + 0x68, 0x80, 0x3e, 0xdf, 0xdb, 0x02, 0x72, 0x01, + 0xc3, 0xb8, 0x96, 0x00, 0xe8, 0x4b, 0xdb, 0xbe, + 0x86, 0x00, 0xbf, 0xa7, 0x00, 0xc6, 0x06, 0xc3, + 0x64, 0x02, 0xe8, 0x2e, 0xf2, 0xbb, 0xf7, 0x54, + 0xe8, 0x52, 0x5c, 0xbb, 0x47, 0x33, 0xc7, 0x07, + 0x2c, 0x03, 0xb9, 0x2b, 0x03, 0xe8, 0xdf, 0xd6, + 0xe8, 0x80, 0x67, 0xbb, 0x47, 0x33, 0xc7, 0x07, + 0x2d, 0x03, 0xb0, 0x01, 0xe8, 0x08, 0xd6, 0xe8, + 0x11, 0xd3, 0xbb, 0x17, 0x61, 0xe8, 0x9d, 0xcd, + 0xc7, 0x06, 0xaf, 0x64, 0xe6, 0x00, 0xc7, 0x06, + 0xb1, 0x64, 0xb8, 0x00, 0xbb, 0x47, 0x33, 0xc7, + 0x07, 0x2e, 0x03, 0xc7, 0x06, 0xf3, 0xb4, 0x06, + 0x00, 0xe8, 0xd1, 0x68, 0xe8, 0x0f, 0xd3, 0xbb, + 0x6a, 0x62, 0xe8, 0x78, 0xcd, 0xb9, 0x04, 0x00, + 0xb0, 0x0e, 0xb4, 0x0e, 0xe8, 0xa6, 0x65, 0xbb, + 0x47, 0x33, 0xc7, 0x07, 0x2f, 0x03, 0xb0, 0x01, + 0xe8, 0xbd, 0xd5, 0xe8, 0x82, 0xfb, 0xc6, 0x47, + 0x01, 0x00, 0xe8, 0x07, 0x6a, 0xe8, 0x2e, 0x66, + 0xbb, 0xdc, 0x62, 0xe8, 0x4f, 0xcd, 0xc6, 0x06, + 0xdf, 0xdb, 0x01, 0xb9, 0x05, 0x00, 0xe8, 0xca, + 0x6c, 0xc3, 0x80, 0x3e, 0xdf, 0xdb, 0x00, 0x75, + 0x0d, 0xb9, 0xc8, 0x03, 0xe8, 0x8f, 0xd6, 0xbb, + 0x11, 0x55, 0xe8, 0xc0, 0x5b, 0xc3, 0xb9, 0x50, + 0x00, 0xb0, 0x03, 0xb4, 0x0c, 0xe8, 0x5d, 0x65, + 0xb9, 0x4f, 0x00, 0xb0, 0x04, 0xe8, 0x5e, 0x65, + 0xb9, 0xc8, 0x03, 0xe8, 0x51, 0xd6, 0xe8, 0xe2, + 0x66, 0xc7, 0x06, 0xf3, 0xb4, 0x06, 0x00, 0xb8, + 0x18, 0x01, 0xbb, 0xba, 0x00, 0xbf, 0x09, 0x01, + 0xbe, 0xb4, 0x00, 0xb1, 0x01, 0xb5, 0x04, 0xe8, + 0x19, 0x67, 0xc3, 0x80, 0x3e, 0xe5, 0xdb, 0x01, + 0x75, 0x07, 0xbb, 0xc0, 0x57, 0xe8, 0x7d, 0x5b, + 0xc3, 0xb9, 0x31, 0x00, 0xb0, 0x0e, 0xb4, 0x07, + 0xe8, 0x1a, 0x65, 0xb9, 0x05, 0x00, 0xb0, 0x15, + 0xe8, 0x1b, 0x65, 0xb9, 0x65, 0x03, 0xe8, 0x2d, + 0xd6, 0xb0, 0x58, 0xe8, 0x42, 0xe2, 0xc6, 0x06, + 0xe5, 0xdb, 0x01, 0xc3, 0xb9, 0x35, 0x00, 0xb0, + 0x14, 0xb4, 0x05, 0xe8, 0xf7, 0x64, 0xb9, 0x18, + 0x00, 0xb0, 0x1b, 0xb4, 0x0e, 0xe8, 0xf6, 0x64, + 0xb9, 0x05, 0x00, 0xb0, 0x24, 0xe8, 0xf5, 0x64, + 0xb9, 0x47, 0x03, 0xe8, 0xe1, 0xd5, 0xc7, 0x06, + 0xaf, 0x64, 0x16, 0x01, 0xe8, 0x05, 0xd6, 0xb0, + 0x50, 0xe8, 0x0c, 0xe2, 0xb0, 0x01, 0xe8, 0xb4, + 0xd4, 0xc3, 0xbb, 0xe3, 0x58, 0xe8, 0x1d, 0x5b, + 0xc3, 0x80, 0x3e, 0xdd, 0xdb, 0x02, 0x74, 0x7f, + 0xbb, 0x5c, 0xdb, 0xe8, 0x67, 0xcc, 0x53, 0xe8, + 0x7b, 0xcc, 0x5b, 0x81, 0xfb, 0x6b, 0x63, 0x75, + 0x6d, 0xe8, 0x01, 0xda, 0xb9, 0x34, 0x00, 0xb0, + 0x08, 0xb4, 0x0c, 0xe8, 0x9f, 0x64, 0xb0, 0x0d, + 0xe8, 0xa3, 0x64, 0xbb, 0x47, 0x33, 0xc7, 0x07, + 0x34, 0x03, 0xb0, 0x01, 0xe8, 0xb1, 0xd4, 0xe8, + 0x76, 0xfa, 0xc6, 0x47, 0x03, 0x59, 0xe8, 0xfb, + 0x68, 0xe8, 0x22, 0x65, 0xc6, 0x06, 0x33, 0x33, + 0x01, 0xc6, 0x06, 0xdd, 0x1c, 0x02, 0xe8, 0xc5, + 0xd9, 0x8b, 0x36, 0xaf, 0x64, 0x8b, 0x3e, 0xb1, + 0x64, 0x56, 0x57, 0xc6, 0x06, 0xc3, 0x64, 0x03, + 0xe8, 0x90, 0xf0, 0xe8, 0xb7, 0xd9, 0xe8, 0xad, + 0xd9, 0x5f, 0x5e, 0xc6, 0x06, 0xc3, 0x64, 0x02, + 0xe8, 0x80, 0xf0, 0xe8, 0xa7, 0xd9, 0xbb, 0x1f, + 0x55, 0xe8, 0xa1, 0x5a, 0xb0, 0x04, 0xe8, 0x20, + 0xd4, 0xc6, 0x06, 0xdc, 0xdb, 0x01, 0xc3, 0xbb, + 0xc0, 0x55, 0xe8, 0x90, 0x5a, 0xbe, 0x32, 0x01, + 0xbf, 0xc4, 0x00, 0xc6, 0x06, 0xc3, 0x64, 0x02, + 0xe8, 0x58, 0xf0, 0xe8, 0x78, 0xd9, 0xbb, 0x47, + 0x33, 0xc7, 0x07, 0x39, 0x03, 0xb0, 0x01, 0xe8, + 0x45, 0xd4, 0xe8, 0x07, 0x65, 0xe8, 0x66, 0xd9, + 0xb9, 0x47, 0x00, 0xb0, 0x04, 0xb4, 0x0e, 0xe8, + 0x0b, 0x64, 0xb9, 0x37, 0x03, 0xe8, 0x1f, 0xd5, + 0xb9, 0x4a, 0x00, 0xb0, 0x01, 0xb4, 0x0a, 0xe8, + 0xfb, 0x63, 0xb0, 0x03, 0xe8, 0xff, 0x63, 0xb0, + 0x06, 0xe8, 0x01, 0x64, 0xbb, 0x47, 0x33, 0xc7, + 0x07, 0x3a, 0x03, 0xc7, 0x06, 0xf3, 0xb4, 0x05, + 0x00, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x3a, 0x03, + 0xe8, 0xe9, 0x66, 0xb0, 0x01, 0xe8, 0x3a, 0xd4, + 0xe8, 0x73, 0x64, 0xc7, 0x06, 0xf3, 0xb4, 0x06, + 0x00, 0xe8, 0xb4, 0xf9, 0xc6, 0x47, 0x03, 0x5b, + 0xe8, 0xda, 0x66, 0x8b, 0x36, 0xaf, 0x64, 0x8b, + 0x3e, 0xb1, 0x64, 0xc6, 0x06, 0xc3, 0x64, 0x01, + 0xe8, 0xe0, 0xef, 0xe8, 0x00, 0xd9, 0xbb, 0xdb, + 0x55, 0xe8, 0x01, 0x5a, 0xc6, 0x06, 0xdd, 0xdb, + 0x03, 0xb0, 0x04, 0xbe, 0xc7, 0x78, 0xe8, 0x90, + 0xd3, 0xc3, 0x80, 0x3e, 0xdd, 0xdb, 0x03, 0x74, + 0x07, 0xbb, 0x05, 0x59, 0xe8, 0xe6, 0x59, 0xc3, + 0x80, 0x3e, 0xde, 0xdb, 0x01, 0x74, 0x31, 0xbe, + 0x18, 0x01, 0xbf, 0xb3, 0x00, 0xc6, 0x06, 0xc3, + 0x64, 0x02, 0xe8, 0xa6, 0xef, 0xb9, 0x31, 0x00, + 0xb0, 0x07, 0xb4, 0x0c, 0xe8, 0x6e, 0x63, 0xb9, + 0x05, 0x00, 0xb0, 0x11, 0xe8, 0x6f, 0x63, 0xb9, + 0x3b, 0x03, 0xe8, 0x73, 0xd4, 0xb0, 0x4d, 0xe8, + 0x96, 0xe0, 0xc6, 0x06, 0xde, 0xdb, 0x01, 0xc3, + 0xbb, 0x08, 0x56, 0xe8, 0xa7, 0x59, 0xc3, 0x80, + 0x3e, 0xdc, 0xdb, 0x01, 0x74, 0x07, 0xbb, 0x28, + 0x55, 0xe8, 0x99, 0x59, 0xc3, 0xe8, 0x97, 0xd4, + 0xbb, 0x5d, 0x55, 0xe8, 0x8f, 0x59, 0xe8, 0x1f, + 0xf9, 0xc6, 0x47, 0x02, 0x00, 0xe8, 0xa4, 0x67, + 0xb9, 0x35, 0x03, 0xe8, 0x1c, 0xd4, 0xe8, 0x0f, + 0xf9, 0xc6, 0x47, 0x02, 0x5a, 0xc6, 0x47, 0x03, + 0x00, 0xe8, 0x4c, 0x67, 0xb9, 0x16, 0x00, 0xb0, + 0x02, 0xb4, 0x0b, 0xe8, 0x0f, 0x63, 0xb9, 0x36, + 0x03, 0xe8, 0x23, 0xd4, 0xbb, 0x77, 0x55, 0xe8, + 0x5b, 0x59, 0xb0, 0x05, 0xe8, 0xe6, 0xd2, 0xc6, + 0x06, 0xdd, 0xdb, 0x01, 0xc3, 0xe8, 0x4f, 0xd4, + 0xe8, 0x43, 0xd8, 0xbe, 0x90, 0x00, 0xbf, 0xb9, + 0x00, 0xc6, 0x06, 0xc3, 0x64, 0x04, 0xe8, 0x12, + 0xef, 0xe8, 0xcc, 0xf8, 0xc6, 0x07, 0x56, 0xe8, + 0x52, 0x67, 0xb9, 0x38, 0x00, 0xb0, 0x0f, 0xb4, + 0x07, 0xe8, 0xd1, 0x62, 0xbb, 0x47, 0x33, 0xc7, + 0x07, 0x31, 0x03, 0xb9, 0x30, 0x03, 0xe8, 0xc9, + 0xd3, 0xe8, 0xac, 0xf8, 0xc6, 0x07, 0x57, 0xe8, + 0xee, 0x66, 0xb9, 0x22, 0x00, 0xb0, 0x01, 0xb4, + 0x08, 0xe8, 0xb1, 0x62, 0xb9, 0x05, 0x00, 0xb0, + 0x0f, 0xe8, 0xb2, 0x62, 0xbb, 0x47, 0x33, 0xc7, + 0x07, 0x33, 0x03, 0xb9, 0x32, 0x03, 0xe8, 0xa1, + 0xd3, 0xe8, 0x84, 0xf8, 0xc6, 0x47, 0x02, 0x58, + 0xe8, 0xc5, 0x66, 0xc7, 0x06, 0xaf, 0x64, 0xa0, + 0x00, 0xc7, 0x06, 0xb1, 0x64, 0xbc, 0x00, 0xc6, + 0x06, 0xcc, 0x64, 0x01, 0xc6, 0x06, 0xdc, 0x64, + 0x00, 0xe8, 0xa8, 0xd3, 0xb0, 0x06, 0xe8, 0x5c, + 0xd2, 0xb0, 0x05, 0xe8, 0x4b, 0xd2, 0xb0, 0x4c, + 0xe8, 0xa5, 0xdf, 0xc3, 0x80, 0x3e, 0xdf, 0xdb, + 0x02, 0x73, 0x07, 0xbb, 0x2f, 0x59, 0xe8, 0xb4, + 0x58, 0xc3, 0xc7, 0x06, 0xf3, 0xb4, 0x05, 0x00, + 0xb8, 0x1f, 0x01, 0xbb, 0x8f, 0x00, 0xbf, 0x22, + 0x01, 0xbe, 0x8f, 0x00, 0xb1, 0x01, 0xb5, 0x02, + 0xe8, 0x28, 0x64, 0xc3, 0xb9, 0x4f, 0x00, 0xb0, + 0x05, 0xb4, 0x0b, 0xe8, 0x37, 0x62, 0xb9, 0x01, + 0x00, 0xb0, 0x0e, 0xe8, 0x38, 0x62, 0xb9, 0xc6, + 0x03, 0xe8, 0x3c, 0xd3, 0xbb, 0x55, 0x59, 0xe8, + 0x7b, 0x58, 0xc3, 0x80, 0x3e, 0xdf, 0xdb, 0x01, + 0x74, 0x07, 0xbb, 0xf6, 0x52, 0xe8, 0x6d, 0x58, + 0xc3, 0xb9, 0x47, 0x00, 0xb0, 0x04, 0xb4, 0x0e, + 0xe8, 0x0a, 0x62, 0xb9, 0x37, 0x03, 0xe8, 0x17, + 0xd3, 0x80, 0x3e, 0xdd, 0xdb, 0x00, 0x75, 0x07, + 0xbb, 0x80, 0x4d, 0xe8, 0x4f, 0x58, 0xc3, 0xb9, + 0x4a, 0x00, 0xb0, 0x01, 0xb4, 0x0e, 0xe8, 0xec, + 0x61, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x38, 0x03, + 0xb0, 0x01, 0xe8, 0x03, 0xd2, 0xe8, 0x7e, 0x62, + 0x80, 0x3e, 0xdd, 0xdb, 0x01, 0x75, 0x0e, 0xe8, + 0x2b, 0xd7, 0xbb, 0x9a, 0x55, 0xe8, 0x25, 0x58, + 0xc6, 0x06, 0xdd, 0xdb, 0x02, 0xc3, 0xe8, 0x9d, + 0x5c, 0xc3, 0xbb, 0x82, 0xdb, 0xe8, 0x6d, 0xc9, + 0xe8, 0x82, 0xc9, 0xc3, 0xb9, 0x50, 0x00, 0xb0, + 0x04, 0xb4, 0x02, 0xe8, 0xaf, 0x61, 0xb9, 0xc3, + 0x03, 0xe8, 0xab, 0xd2, 0xe8, 0x3c, 0x63, 0xc7, + 0x06, 0xf3, 0xb4, 0x05, 0x00, 0xb8, 0xa6, 0x00, + 0xbb, 0x9e, 0x00, 0xbf, 0xa6, 0x00, 0xbe, 0xa1, + 0x00, 0xb1, 0x0b, 0xb5, 0x03, 0xe8, 0x73, 0x63, + 0xc3, 0xb9, 0xc5, 0x03, 0xe8, 0x99, 0xd2, 0xbb, + 0x11, 0x55, 0xe8, 0xd8, 0x57, 0xc3, 0xbb, 0x62, + 0x59, 0xe8, 0xd1, 0x57, 0xc3, 0xbb, 0x9d, 0x59, + 0xe8, 0xca, 0x57, 0xc3, 0xbb, 0xb6, 0x59, 0xe8, + 0xc3, 0x57, 0xc3, 0x80, 0x3e, 0xe6, 0xdb, 0x01, + 0x75, 0x2d, 0xc6, 0x06, 0xe6, 0xdb, 0x02, 0xe8, + 0xb5, 0xd2, 0xe8, 0x43, 0xf7, 0xc6, 0x47, 0x01, + 0x67, 0xe8, 0xc8, 0x65, 0xb9, 0x05, 0x00, 0xb0, + 0x09, 0xb4, 0x09, 0xe8, 0x47, 0x61, 0xb9, 0x68, + 0x03, 0xe8, 0x5b, 0xd2, 0xb0, 0x5a, 0xe8, 0x77, + 0xde, 0xb0, 0x07, 0xe8, 0x1f, 0xd1, 0xc3, 0xb9, + 0xc4, 0x03, 0xe8, 0x43, 0xd2, 0xbb, 0x11, 0x55, + 0xe8, 0x82, 0x57, 0xc3, 0xbb, 0xdb, 0x59, 0xe8, + 0x7b, 0x57, 0xc3, 0xbb, 0x01, 0x5a, 0xe8, 0x74, + 0x57, 0xc3, 0xe8, 0xf1, 0x5b, 0xc3, 0xe8, 0xed, + 0x5b, 0xc3, 0xe8, 0x6a, 0xd2, 0xe8, 0xf8, 0xf6, + 0xc6, 0x07, 0x00, 0xe8, 0x7e, 0x65, 0xb9, 0x05, + 0x00, 0xb0, 0x09, 0xb4, 0x07, 0xe8, 0xfd, 0x60, + 0xb9, 0x44, 0x03, 0xe8, 0x11, 0xd2, 0xb0, 0x4f, + 0xe8, 0x2d, 0xde, 0xb0, 0x0c, 0xe8, 0xd5, 0xd0, + 0xc3, 0xbb, 0x20, 0x5a, 0xe8, 0x3e, 0x57, 0xc3, + 0x80, 0x3e, 0xe7, 0xdb, 0x01, 0x74, 0x03, 0xe9, + 0x83, 0x00, 0xbe, 0x8c, 0x00, 0xbf, 0x98, 0x00, + 0xc6, 0x06, 0xc3, 0x64, 0x01, 0xe8, 0xfb, 0xec, + 0x80, 0x3e, 0xe8, 0xdb, 0x01, 0x74, 0x07, 0xbb, + 0x55, 0x58, 0xe8, 0x18, 0x57, 0xc3, 0xbb, 0x20, + 0x6f, 0xe8, 0x81, 0xc8, 0xc6, 0x06, 0xe6, 0x1c, + 0xef, 0xbe, 0xe0, 0x53, 0xbb, 0x83, 0x58, 0xe8, + 0xac, 0x59, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x72, + 0x03, 0xb0, 0x01, 0xe8, 0xc2, 0xd0, 0xe8, 0x87, + 0xf6, 0xc6, 0x47, 0x02, 0x00, 0xe8, 0x0c, 0x65, + 0xb9, 0x4b, 0x00, 0xb0, 0x0a, 0xb4, 0x0a, 0xe8, + 0x8b, 0x60, 0xb9, 0x18, 0x00, 0xb0, 0x0f, 0xe8, + 0x8c, 0x60, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x73, + 0x03, 0xb0, 0x01, 0xe8, 0x9a, 0xd0, 0xe8, 0x63, + 0x61, 0xe8, 0x87, 0x00, 0xb8, 0x01, 0x00, 0xe8, + 0xe7, 0xe4, 0xe8, 0xfb, 0xe4, 0xb0, 0x02, 0xe8, + 0x4b, 0xd0, 0xb0, 0x01, 0xe8, 0x46, 0xd0, 0xc6, + 0x06, 0xe9, 0xdb, 0x01, 0xc3, 0xe8, 0x68, 0xcd, + 0x80, 0x3e, 0xdf, 0xdb, 0x03, 0x74, 0x0a, 0xbb, + 0x68, 0xdb, 0xe8, 0xf8, 0xc7, 0xe8, 0x0d, 0xc8, + 0xc3, 0x80, 0x3e, 0xe3, 0xdb, 0x01, 0x75, 0x07, + 0xbb, 0xd6, 0x6b, 0xe8, 0xff, 0xc7, 0xc3, 0xbb, + 0xb5, 0x69, 0xe8, 0xf8, 0xc7, 0xbb, 0x47, 0x33, + 0xc7, 0x07, 0x5a, 0x03, 0xb9, 0x5b, 0x03, 0xe8, + 0x18, 0xd1, 0xe8, 0xc1, 0x60, 0xb9, 0x4b, 0x00, + 0xb0, 0x06, 0xb4, 0x08, 0xe8, 0x16, 0x60, 0xb0, + 0x0a, 0xe8, 0x1a, 0x60, 0xb9, 0x05, 0x00, 0xb0, + 0x0f, 0xe8, 0x19, 0x60, 0xb9, 0x5c, 0x03, 0xe8, + 0x1d, 0xd1, 0xe8, 0x13, 0xcd, 0xbb, 0xc2, 0x69, + 0xe8, 0xc2, 0xc7, 0xb0, 0x55, 0xe8, 0x30, 0xdd, + 0xc6, 0x06, 0xe3, 0xdb, 0x01, 0xc6, 0x06, 0xf0, + 0xdb, 0x00, 0xc3, 0xe8, 0x00, 0x00, 0x1e, 0x06, + 0xa1, 0xb1, 0x32, 0x8e, 0xd8, 0xb8, 0x00, 0xa0, + 0x8e, 0xc0, 0xfc, 0xe8, 0xea, 0x5c, 0xe8, 0xe7, + 0x5c, 0xbe, 0x00, 0x0a, 0x33, 0xff, 0xb9, 0x00, + 0x78, 0xf3, 0xa5, 0xe8, 0xda, 0x5c, 0xe8, 0xd7, + 0x5c, 0x33, 0xf6, 0x33, 0xff, 0xb9, 0x00, 0x7d, + 0xf3, 0xa5, 0xe8, 0xcb, 0x5c, 0xe8, 0xc8, 0x5c, + 0xbe, 0x00, 0x05, 0x33, 0xff, 0xb9, 0x80, 0x7a, + 0xf3, 0xa5, 0xe8, 0xbb, 0x5c, 0xe8, 0xb8, 0x5c, + 0x33, 0xf6, 0x33, 0xff, 0xb9, 0x00, 0x7d, 0xf3, + 0xa5, 0x07, 0x1f, 0xc3, 0x80, 0x3e, 0xf0, 0xdb, + 0x01, 0x75, 0x07, 0xbb, 0x25, 0x5e, 0xe8, 0xe4, + 0x55, 0xc3, 0xc7, 0x06, 0xf3, 0xb4, 0x05, 0x00, + 0xb8, 0x23, 0x00, 0xbb, 0xa2, 0x00, 0xbf, 0x23, + 0x00, 0xbe, 0xae, 0x00, 0xb1, 0x0b, 0xb5, 0x03, + 0xe8, 0x58, 0x61, 0xc3, 0x80, 0x3e, 0xe9, 0xdb, + 0x01, 0x75, 0x3f, 0xb9, 0x59, 0x00, 0xb0, 0x05, + 0xb4, 0x02, 0xe8, 0x60, 0x5f, 0xb9, 0xbe, 0x03, + 0xe8, 0x4c, 0xd0, 0xe8, 0xed, 0x60, 0xc6, 0x06, + 0xcc, 0x64, 0x00, 0xc6, 0x06, 0xdc, 0x64, 0x01, + 0xc6, 0x06, 0xcb, 0x64, 0x00, 0xe8, 0xc1, 0xf3, + 0xc7, 0x06, 0xf3, 0xb4, 0x09, 0x00, 0xb8, 0xf0, + 0x00, 0xbb, 0xb6, 0x00, 0xbf, 0xe0, 0x00, 0xbe, + 0xb6, 0x00, 0xb1, 0x01, 0xb5, 0x04, 0xe8, 0x12, + 0x61, 0xc3, 0x80, 0x3e, 0xe7, 0xdb, 0x01, 0x74, + 0x0d, 0xe8, 0x34, 0xcc, 0xbb, 0x8a, 0xdb, 0xe8, + 0xcb, 0xc6, 0xe8, 0xe0, 0xc6, 0xc3, 0xbb, 0x94, + 0x58, 0xe8, 0x69, 0x55, 0xc3, 0xbb, 0x1e, 0x43, + 0xe8, 0x62, 0x55, 0xc3, 0xe8, 0x60, 0xd0, 0xe8, + 0xee, 0xf4, 0xc6, 0x07, 0x00, 0xe8, 0x74, 0x63, + 0xb9, 0x31, 0x00, 0xb0, 0x06, 0xb4, 0x0b, 0xe8, + 0xf3, 0x5e, 0xb9, 0x05, 0x00, 0xb0, 0x0d, 0xe8, + 0xf4, 0x5e, 0xb9, 0x5d, 0x03, 0xe8, 0xff, 0xcf, + 0xb0, 0x57, 0xe8, 0x1b, 0xdc, 0xb0, 0x06, 0xe8, + 0xc3, 0xce, 0xc3, 0xe8, 0xb0, 0x59, 0xc3, 0xbb, + 0x51, 0x5a, 0xe8, 0x28, 0x55, 0xc3, 0xbb, 0x98, + 0x5a, 0xe8, 0x21, 0x55, 0xc3, 0xb9, 0x0f, 0x00, + 0xb0, 0x07, 0xb4, 0x04, 0xe8, 0xbe, 0x5e, 0xb9, + 0x74, 0x03, 0xe8, 0xcb, 0xcf, 0xb9, 0x37, 0x00, + 0xb0, 0x01, 0xb4, 0x04, 0xe8, 0xae, 0x5e, 0xb9, + 0x18, 0x00, 0xb0, 0x0c, 0xe8, 0xaf, 0x5e, 0xbb, + 0x47, 0x33, 0xc7, 0x07, 0x75, 0x03, 0xb0, 0x01, + 0xe8, 0xbd, 0xce, 0xc6, 0x06, 0x45, 0x33, 0xd0, + 0xb0, 0x01, 0xbe, 0x76, 0x03, 0xbb, 0xe5, 0x67, + 0xe8, 0x84, 0xca, 0xc7, 0x06, 0xaf, 0x64, 0xc6, + 0x00, 0xc7, 0x06, 0xb1, 0x64, 0xba, 0x00, 0xc6, + 0x06, 0xcd, 0x64, 0x00, 0xc6, 0x06, 0xdc, 0x64, + 0x00, 0xc6, 0x06, 0xcb, 0x64, 0x01, 0xe8, 0xe8, + 0xf2, 0xb9, 0x03, 0x00, 0xe8, 0xb4, 0x65, 0xe8, + 0xab, 0x50, 0xe8, 0x2e, 0xba, 0xb8, 0x64, 0x00, + 0xe8, 0xb9, 0xd3, 0xc7, 0x06, 0xf3, 0xb4, 0x28, + 0x00, 0xe8, 0x69, 0x61, 0xe8, 0x28, 0xcb, 0xbb, + 0x20, 0x7f, 0xe8, 0x10, 0xc6, 0xe8, 0xc6, 0xdb, + 0xb0, 0x1d, 0xe8, 0x7b, 0xdb, 0xbb, 0x5c, 0xe4, + 0xe8, 0x1b, 0xba, 0xb9, 0x06, 0x00, 0xe8, 0x82, + 0x65, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0xbc, 0x03, + 0xc7, 0x06, 0xf3, 0xb4, 0x01, 0x00, 0xe8, 0x33, + 0x61, 0xb0, 0x01, 0xe8, 0x84, 0xce, 0xc6, 0x06, + 0x45, 0x33, 0xd1, 0xb0, 0x01, 0xbe, 0xbd, 0x03, + 0xbb, 0xc4, 0x8b, 0xe8, 0x09, 0xca, 0xe8, 0xad, + 0x5e, 0xe8, 0x60, 0x0c, 0xc3, 0xb9, 0xbf, 0x03, + 0xe8, 0xf4, 0xce, 0xe8, 0x95, 0x5f, 0xc7, 0x06, + 0xf3, 0xb4, 0x08, 0x00, 0xb8, 0x28, 0x00, 0xbb, + 0x98, 0x00, 0xbf, 0x28, 0x00, 0xbe, 0x9b, 0x00, + 0xb1, 0x0b, 0xb5, 0x03, 0xe8, 0xcc, 0x5f, 0xc3, + 0xe8, 0xbb, 0x58, 0xc3, 0xb9, 0xc0, 0x03, 0xe8, + 0xee, 0xce, 0xbb, 0x11, 0x55, 0xe8, 0x2d, 0x54, + 0xc3, 0xbb, 0xc6, 0x5a, 0xe8, 0x26, 0x54, 0xc3, + 0xbb, 0xed, 0x5a, 0xe8, 0x1f, 0x54, 0xc3, 0xbb, + 0xed, 0x5a, 0xe8, 0x18, 0x54, 0xc3, 0xb9, 0x20, + 0x00, 0xb0, 0x18, 0xb4, 0x05, 0xe8, 0xb5, 0x5d, + 0xb9, 0x5e, 0x03, 0xe8, 0xa1, 0xce, 0xe8, 0x42, + 0x5f, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x5f, 0x03, + 0xb0, 0x01, 0xe8, 0xca, 0xcd, 0xe8, 0x8c, 0x5e, + 0xb0, 0x54, 0xe8, 0xd3, 0xda, 0xb0, 0x01, 0xe8, + 0x7b, 0xcd, 0xc6, 0x06, 0xe2, 0xdb, 0x02, 0xc3, + 0x80, 0x3e, 0xe2, 0xdb, 0x00, 0x74, 0x10, 0xbb, + 0x22, 0x57, 0xe8, 0xd8, 0x53, 0xe8, 0xd5, 0xd2, + 0xbb, 0x2a, 0x57, 0xe8, 0xcf, 0x53, 0xc3, 0xe8, + 0x10, 0xcb, 0x80, 0x3e, 0xda, 0xdb, 0x01, 0x74, + 0x0a, 0xbb, 0x40, 0xdb, 0xe8, 0x16, 0xc5, 0xe8, + 0x2b, 0xc5, 0xc3, 0xbb, 0x4c, 0xdb, 0xe8, 0x0c, + 0xc5, 0xe8, 0x21, 0xc5, 0xc3, 0xbb, 0x27, 0x5b, + 0xe8, 0xaa, 0x53, 0xc3, 0x80, 0x3e, 0xda, 0xdb, + 0x01, 0x75, 0x1a, 0xc7, 0x06, 0xf3, 0xb4, 0x05, + 0x00, 0xb8, 0x78, 0x00, 0xbb, 0xc7, 0x00, 0xbf, + 0x80, 0x00, 0xbe, 0xb0, 0x00, 0xb1, 0x13, 0xb5, + 0x01, 0xe8, 0x17, 0x5f, 0xc3, 0xe8, 0xca, 0xca, + 0xbb, 0xe9, 0x5f, 0xe8, 0xef, 0xc4, 0xbe, 0x0d, + 0x01, 0xbf, 0xaf, 0x00, 0xc6, 0x06, 0xc3, 0x64, + 0x04, 0xe8, 0x47, 0xe9, 0xe8, 0xb3, 0xca, 0xbb, + 0x56, 0xdb, 0xe8, 0xc0, 0xc4, 0xe8, 0xd5, 0xc4, + 0xc3, 0xe8, 0x32, 0xcb, 0xbb, 0xa6, 0xda, 0xe8, + 0xb3, 0xc4, 0x53, 0xe8, 0xc7, 0xc4, 0x5b, 0x81, + 0xfb, 0xb4, 0x01, 0x75, 0x50, 0x8b, 0x3e, 0xb1, + 0x64, 0x8b, 0x36, 0xaf, 0x64, 0x57, 0x56, 0xbf, + 0x9f, 0x00, 0xbe, 0xbd, 0x00, 0xe8, 0x13, 0xe9, + 0xb8, 0x01, 0x01, 0xe8, 0xf0, 0xd1, 0xb9, 0x05, + 0x00, 0xb0, 0x02, 0xb4, 0x0a, 0xe8, 0xd5, 0x5c, + 0xb0, 0x13, 0xe8, 0xd9, 0x5c, 0xbb, 0x47, 0x33, + 0xc7, 0x07, 0x27, 0x02, 0xb9, 0x26, 0x02, 0xe8, + 0xd6, 0xcd, 0x5e, 0x5f, 0xc6, 0x06, 0xc3, 0x64, + 0x02, 0xe8, 0xe7, 0xe8, 0xb0, 0x13, 0xe8, 0xef, + 0xd9, 0xe8, 0xda, 0xca, 0xbb, 0xa6, 0xda, 0xe8, + 0x5b, 0xc4, 0xe8, 0x70, 0xc4, 0xc3, 0xe8, 0xfe, + 0xcd, 0xb0, 0x10, 0xe8, 0xda, 0xd9, 0xb0, 0x02, + 0xe8, 0x82, 0xcc, 0xe8, 0x82, 0xf2, 0xc6, 0x07, + 0x00, 0xe8, 0x08, 0x61, 0xb9, 0x05, 0x00, 0xb0, + 0x0c, 0xb4, 0x06, 0xe8, 0x87, 0x5c, 0xb9, 0x23, + 0x02, 0xe8, 0x9b, 0xcd, 0xc3, 0xe8, 0x56, 0x57, + 0xc3, 0xe8, 0x52, 0x57, 0xc3, 0xe8, 0x4e, 0x57, + 0xc3, 0xbb, 0xd6, 0x3e, 0xe8, 0xc6, 0x52, 0xc3, + 0xe8, 0x43, 0x57, 0xc3, 0xe8, 0x1d, 0xcb, 0xbb, + 0xbd, 0x33, 0xe8, 0x28, 0xc4, 0xc6, 0x06, 0xe6, + 0x1c, 0xd0, 0xbe, 0xe4, 0x61, 0xbb, 0xae, 0x49, + 0xe8, 0xd5, 0x54, 0xb9, 0x05, 0x00, 0xb0, 0x03, + 0xb4, 0x07, 0xe8, 0x48, 0x5c, 0xbb, 0x47, 0x33, + 0xc7, 0x47, 0x02, 0x9b, 0x02, 0xb0, 0x02, 0xe8, + 0x5e, 0xcc, 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x02, + 0x9c, 0x02, 0xb0, 0x02, 0xe8, 0x51, 0xcc, 0xe8, + 0xcc, 0x5c, 0xc6, 0x06, 0x33, 0x33, 0x01, 0xc6, + 0x06, 0xdd, 0x1c, 0x02, 0xc6, 0x06, 0xdb, 0x1c, + 0x01, 0xe8, 0x04, 0xf2, 0xc6, 0x47, 0x02, 0x32, + 0xe8, 0x89, 0x60, 0xc7, 0x06, 0x30, 0x32, 0x78, + 0x00, 0xc7, 0x06, 0x2e, 0x32, 0x5a, 0x00, 0xc7, + 0x06, 0x2c, 0x32, 0xae, 0x00, 0xe8, 0x76, 0xda, + 0xe8, 0xbd, 0x5a, 0xe8, 0xae, 0xca, 0xbb, 0xc7, + 0x36, 0xe8, 0xb9, 0xc3, 0xb9, 0x52, 0x00, 0xb0, + 0x13, 0xb4, 0x0e, 0xe8, 0xe7, 0x5b, 0xbb, 0x47, + 0x33, 0xc7, 0x47, 0x02, 0x9d, 0x02, 0xb0, 0x02, + 0xe8, 0x3f, 0xcc, 0xe8, 0xc2, 0xf1, 0xc6, 0x47, + 0x03, 0x00, 0xe8, 0x75, 0x60, 0xc7, 0x06, 0xec, + 0xdb, 0x00, 0x00, 0xe8, 0x68, 0x5c, 0xbb, 0x79, + 0x37, 0xe8, 0x89, 0xc3, 0xb0, 0x0f, 0xe8, 0x98, + 0xcb, 0xb0, 0x08, 0xe8, 0x9f, 0xcb, 0xc3, 0xc7, + 0x06, 0xf3, 0xb4, 0x0d, 0x00, 0xb8, 0x00, 0x00, + 0xbb, 0xac, 0x00, 0xbf, 0x12, 0x00, 0xbe, 0xad, + 0x00, 0xb1, 0x01, 0xb5, 0x02, 0xe8, 0x83, 0x5d, + 0xc3, 0xc6, 0x06, 0xdc, 0x64, 0x01, 0xc6, 0x06, + 0xcb, 0x64, 0x00, 0xc7, 0x06, 0xf3, 0xb4, 0x0e, + 0x00, 0xb8, 0x18, 0x01, 0xbb, 0xc6, 0x00, 0xbf, + 0xe3, 0x00, 0xbe, 0xb8, 0x00, 0xb1, 0x01, 0xb5, + 0x04, 0xe8, 0x5f, 0x5d, 0xc3, 0xc7, 0x06, 0xf3, + 0xb4, 0x0f, 0x00, 0xb8, 0x3f, 0x01, 0xbb, 0xa2, + 0x00, 0xbf, 0x06, 0x01, 0xbe, 0xb0, 0x00, 0xb1, + 0x01, 0xb5, 0x04, 0xe8, 0x45, 0x5d, 0xc3, 0xc7, + 0x06, 0xf3, 0xb4, 0x0c, 0x00, 0xb8, 0x3f, 0x01, + 0xbb, 0x98, 0x00, 0xbf, 0x2d, 0x01, 0xbe, 0xaf, + 0x00, 0xb1, 0x01, 0xb5, 0x04, 0xe8, 0x2b, 0x5d, + 0xc3, 0xe8, 0x9b, 0xcc, 0xb9, 0x05, 0x00, 0xb0, + 0x0c, 0xb4, 0x09, 0xe8, 0x37, 0x5b, 0xb0, 0x12, + 0xe8, 0x6d, 0xd8, 0xb0, 0x0d, 0xe8, 0x15, 0xcb, + 0xe8, 0x15, 0xf1, 0xc6, 0x47, 0x01, 0x00, 0xe8, + 0x9a, 0x5f, 0xb9, 0x25, 0x02, 0xe8, 0x37, 0xcc, + 0xc3, 0xe8, 0xf2, 0x55, 0xc3, 0xe8, 0x6f, 0xcc, + 0xe8, 0xfd, 0xf0, 0xc6, 0x47, 0x02, 0x00, 0xe8, + 0x82, 0x5f, 0xb9, 0x05, 0x00, 0xb0, 0x0c, 0xb4, + 0x07, 0xe8, 0x01, 0x5b, 0xb9, 0xa4, 0x02, 0xe8, + 0x15, 0xcc, 0xbb, 0xb0, 0x4a, 0xe8, 0x4d, 0x51, + 0xb0, 0x0f, 0xe8, 0xd8, 0xca, 0xb0, 0x33, 0xe8, + 0x26, 0xd8, 0xc3, 0xc3, 0xbb, 0x0f, 0x37, 0x80, + 0x3e, 0xa1, 0xdb, 0x01, 0x74, 0x03, 0xbb, 0xc2, + 0x36, 0xe8, 0x31, 0x51, 0xc3, 0xb9, 0xc7, 0x03, + 0xe8, 0xe5, 0xcb, 0xbb, 0x42, 0x35, 0xe8, 0x24, + 0x51, 0xc3, 0x80, 0x3e, 0xa1, 0xdb, 0x01, 0x74, + 0x53, 0xb9, 0x38, 0x00, 0xb0, 0x08, 0xb4, 0x0e, + 0xe8, 0xba, 0x5a, 0xb0, 0x0c, 0xe8, 0xc5, 0x5a, + 0xb9, 0x31, 0x00, 0xb0, 0x0a, 0xe8, 0xb6, 0x5a, + 0xc6, 0x06, 0x35, 0x33, 0x10, 0xc6, 0x06, 0x36, + 0x33, 0x18, 0xb8, 0x52, 0x46, 0xa3, 0x37, 0x33, + 0xb8, 0x5b, 0x7b, 0xa3, 0x39, 0x33, 0xe8, 0xee, + 0xcb, 0xb9, 0x4b, 0x02, 0xe8, 0x00, 0xcc, 0xe8, + 0xba, 0xcb, 0x8b, 0x36, 0xaf, 0x64, 0x8b, 0x3e, + 0xb1, 0x64, 0xc6, 0x06, 0xc3, 0x64, 0x02, 0xe8, + 0xa9, 0xe6, 0xe8, 0xd0, 0xcf, 0xbb, 0x68, 0x36, + 0xe8, 0xca, 0x50, 0xc3, 0x80, 0x3e, 0xa2, 0xdb, + 0x01, 0x74, 0x73, 0xb9, 0x1a, 0x00, 0xb0, 0x0d, + 0xb4, 0x0c, 0xe8, 0x60, 0x5a, 0xb0, 0x0f, 0xe8, + 0x64, 0x5a, 0xb0, 0x17, 0xe8, 0x66, 0x5a, 0xb0, + 0x19, 0xe8, 0x68, 0x5a, 0xb0, 0x20, 0xe8, 0x6a, + 0x5a, 0xb0, 0x22, 0xe8, 0x6c, 0x5a, 0xb0, 0x24, + 0xe8, 0x6e, 0x5a, 0xb9, 0x4e, 0x02, 0xe8, 0x2e, + 0xcb, 0xc7, 0x06, 0xaf, 0x64, 0xcc, 0x00, 0xc7, + 0x06, 0xb1, 0x64, 0xb2, 0x00, 0xc6, 0x06, 0xc3, + 0x64, 0x03, 0xc6, 0x06, 0xcb, 0x64, 0x01, 0xc6, + 0x06, 0xcd, 0x64, 0x01, 0xb9, 0x3b, 0x00, 0xb0, + 0x01, 0xb4, 0x0a, 0xe8, 0x17, 0x5a, 0xb9, 0x3c, + 0x00, 0xb0, 0x10, 0xe8, 0x18, 0x5a, 0xb9, 0x4f, + 0x02, 0xe8, 0x23, 0xcb, 0xe8, 0x57, 0xcf, 0xbb, + 0x2e, 0x37, 0xe8, 0x58, 0x50, 0xc6, 0x06, 0xa2, + 0xdb, 0x01, 0xe8, 0x40, 0x4d, 0xc3, 0xbb, 0x66, + 0x37, 0xe8, 0x49, 0x50, 0xc3, 0x80, 0x3e, 0x9e, + 0xdb, 0x01, 0x75, 0x07, 0xbb, 0xe8, 0x35, 0xe8, + 0x3b, 0x50, 0xc3, 0xc6, 0x06, 0x9e, 0xdb, 0x01, + 0xe8, 0x34, 0xcb, 0xe8, 0xc2, 0xef, 0xc6, 0x47, + 0x02, 0x00, 0x53, 0xe8, 0x46, 0x5e, 0xb9, 0x15, + 0x00, 0xb0, 0x09, 0xb4, 0x02, 0xe8, 0xc5, 0x59, + 0xb9, 0x22, 0x00, 0xb0, 0x15, 0xe8, 0xc6, 0x59, + 0xb9, 0x1a, 0x00, 0xb0, 0x1e, 0xe8, 0xc5, 0x59, + 0xb9, 0x28, 0x02, 0xe8, 0xb4, 0xca, 0x5b, 0xc6, + 0x47, 0x02, 0x12, 0xe8, 0xda, 0x5d, 0xe8, 0xd3, + 0xca, 0xb0, 0x14, 0xe8, 0xda, 0xd6, 0xc3, 0xbb, + 0x2a, 0x3f, 0xe8, 0xf0, 0x4f, 0xc3, 0xc7, 0x06, + 0xf3, 0xb4, 0x0b, 0x00, 0xb8, 0xe4, 0x00, 0xbb, + 0x6d, 0x00, 0xbf, 0x8a, 0x00, 0xbe, 0xa3, 0x00, + 0xb1, 0x0b, 0xb5, 0x03, 0xe8, 0x64, 0x5b, 0xc3, + 0xc7, 0x06, 0xf3, 0xb4, 0x0d, 0x00, 0xb8, 0x3f, + 0x01, 0xbb, 0xb5, 0x00, 0xbf, 0x05, 0x01, 0xbe, + 0xb7, 0x00, 0xb1, 0x01, 0xb5, 0x04, 0xe8, 0x4a, + 0x5b, 0xc3, 0xe8, 0x28, 0x00, 0xe8, 0xb7, 0xca, + 0xe8, 0x45, 0xef, 0xc6, 0x47, 0x01, 0x00, 0xe8, + 0xca, 0x5d, 0xb9, 0x05, 0x00, 0xb0, 0x0a, 0xb4, + 0x09, 0xe8, 0x49, 0x59, 0xb9, 0x1f, 0x02, 0xe8, + 0x5d, 0xca, 0xb0, 0x0f, 0xe8, 0x79, 0xd6, 0xb0, + 0x09, 0xe8, 0x21, 0xc9, 0xc3, 0xbe, 0xcb, 0x00, + 0xbf, 0xa9, 0x00, 0x81, 0x3e, 0xaf, 0x64, 0xcb, + 0x00, 0x75, 0x1a, 0x81, 0x3e, 0xb1, 0x64, 0xab, + 0x00, 0x75, 0x12, 0xc6, 0x06, 0xc3, 0x64, 0x01, + 0x57, 0x56, 0xe8, 0x46, 0xe5, 0xb8, 0x09, 0x00, + 0xe8, 0x4f, 0xce, 0x5e, 0x5f, 0xc6, 0x06, 0xc3, + 0x64, 0x02, 0xe8, 0x36, 0xe5, 0xc3, 0xbb, 0x54, + 0x3f, 0xe8, 0x59, 0x4f, 0xc3, 0xbb, 0x85, 0x3f, + 0xe8, 0x52, 0x4f, 0xc3, 0xc7, 0x06, 0xf3, 0xb4, + 0x0b, 0x00, 0xb8, 0x3f, 0x01, 0xbb, 0xc6, 0x00, + 0xbf, 0x2c, 0x01, 0xbe, 0xc4, 0x00, 0xb1, 0x01, + 0xb5, 0x04, 0xe8, 0xc6, 0x5a, 0x80, 0x3e, 0x9c, + 0xdb, 0x01, 0x74, 0x64, 0xe8, 0xd8, 0x54, 0xe8, + 0x26, 0xe5, 0x80, 0x3e, 0xc6, 0x64, 0x00, 0x75, + 0xf6, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x20, 0x02, + 0xb0, 0x01, 0xc7, 0x06, 0x23, 0xc4, 0x01, 0x00, + 0xc7, 0x06, 0x3b, 0x33, 0x15, 0x00, 0xc7, 0x06, + 0x3d, 0x33, 0x2a, 0x00, 0xc6, 0x06, 0xce, 0x00, + 0x02, 0xe8, 0x29, 0xc9, 0x72, 0x33, 0xa1, 0x3f, + 0x33, 0x0b, 0xc0, 0x74, 0x10, 0x3d, 0x30, 0x00, + 0x77, 0x0b, 0xb0, 0x01, 0xb9, 0x2c, 0x00, 0xba, + 0x33, 0x00, 0xe8, 0x81, 0xc1, 0xe8, 0x2e, 0x59, + 0x80, 0x3e, 0x27, 0xc4, 0x01, 0x75, 0x11, 0xc6, + 0x06, 0xcf, 0x00, 0x00, 0xe8, 0xca, 0xc6, 0xbb, + 0xb2, 0xda, 0xe8, 0x28, 0xc0, 0xe8, 0x3d, 0xc0, + 0xc3, 0xc6, 0x06, 0x9c, 0xdb, 0x01, 0xbb, 0x63, + 0x35, 0xb9, 0x3c, 0x00, 0xe8, 0xbd, 0x4f, 0xe8, + 0x04, 0x59, 0xb9, 0x11, 0x00, 0xb0, 0x05, 0xb4, + 0x08, 0xe8, 0x59, 0x58, 0xbb, 0x47, 0x33, 0xc7, + 0x07, 0x21, 0x02, 0xb0, 0x01, 0xe8, 0xb9, 0xc8, + 0xe8, 0x35, 0xee, 0xc6, 0x07, 0x10, 0xe8, 0xbb, + 0x5c, 0xb0, 0x02, 0xe8, 0x1b, 0xc8, 0xe8, 0x88, + 0xc6, 0xbb, 0x17, 0x09, 0xe8, 0xfe, 0xbf, 0xc3, + 0xbb, 0x2a, 0x3f, 0xe8, 0x87, 0x4e, 0xc3, 0xc7, + 0x06, 0xf3, 0xb4, 0x0c, 0x00, 0xb8, 0x00, 0x00, + 0xbb, 0xbd, 0x00, 0xbf, 0x1e, 0x00, 0xbe, 0xbd, + 0x00, 0xb1, 0x01, 0xb5, 0x02, 0xe8, 0xfb, 0x59, + 0xc3, 0xbb, 0xec, 0x3f, 0xe8, 0x66, 0x4e, 0xc3, + 0xe8, 0x64, 0xc9, 0xe8, 0xf2, 0xed, 0xc6, 0x07, + 0x00, 0xe8, 0x78, 0x5c, 0xb9, 0x05, 0x00, 0xb0, + 0x0b, 0xb4, 0x09, 0xe8, 0xf7, 0x57, 0xb9, 0x7d, + 0x02, 0xe8, 0x0b, 0xc9, 0xb0, 0x07, 0xe8, 0xd4, + 0xc7, 0xb0, 0x31, 0xe8, 0x22, 0xd5, 0xc3, 0x80, + 0x3e, 0x9f, 0xdb, 0x01, 0x74, 0x07, 0xbb, 0xe1, + 0x34, 0xe8, 0x31, 0x4e, 0xc3, 0xbb, 0x2e, 0x40, + 0xe8, 0x2a, 0x4e, 0xc3, 0xbb, 0xe1, 0x34, 0xe8, + 0x23, 0x4e, 0xc3, 0xe8, 0xa0, 0x52, 0xc3, 0x80, + 0x3e, 0x9f, 0xdb, 0x01, 0x74, 0x07, 0xbb, 0xe1, + 0x34, 0xe8, 0x11, 0x4e, 0xc3, 0x80, 0x3e, 0xa0, + 0xdb, 0x01, 0x75, 0x07, 0xbb, 0x31, 0x3e, 0xe8, + 0x03, 0x4e, 0xc3, 0xbe, 0xad, 0x00, 0xbf, 0x8a, + 0x00, 0xc6, 0x06, 0xc3, 0x64, 0x02, 0xe8, 0xca, + 0xe3, 0xb9, 0x1c, 0x00, 0xb0, 0x05, 0xb4, 0x08, + 0xe8, 0x92, 0x57, 0xb9, 0x47, 0x02, 0xe8, 0x7e, + 0xc8, 0xb9, 0x48, 0x02, 0xe8, 0x7b, 0xc8, 0xe8, + 0x52, 0x5a, 0xb8, 0x00, 0xa0, 0xb9, 0x00, 0x7d, + 0xe8, 0x7d, 0x5a, 0xa1, 0xb1, 0x32, 0xb9, 0x00, + 0x7d, 0xe8, 0x74, 0x5a, 0xa1, 0xb3, 0x32, 0xb9, + 0x00, 0x7d, 0xe8, 0x6b, 0x5a, 0xa1, 0xb5, 0x32, + 0xb9, 0x00, 0x7d, 0xe8, 0x62, 0x5a, 0xb8, 0x64, + 0x00, 0xe8, 0xb8, 0xcc, 0xe8, 0x32, 0x5a, 0xb9, + 0x48, 0x00, 0xb0, 0x12, 0xb4, 0x08, 0xe8, 0x4c, + 0x57, 0xb9, 0x49, 0x00, 0xb0, 0x27, 0xe8, 0x4d, + 0x57, 0xb9, 0x49, 0x02, 0xe8, 0x33, 0xc8, 0xe8, + 0xd1, 0x58, 0xc7, 0x06, 0xf3, 0xb4, 0x0b, 0x00, + 0xc6, 0x06, 0xdc, 0x1c, 0x01, 0xe8, 0x57, 0x59, + 0xc7, 0x06, 0xaf, 0x64, 0xc2, 0x00, 0xc7, 0x06, + 0xb1, 0x64, 0xa0, 0x00, 0xc6, 0x06, 0xc3, 0x64, + 0x02, 0xc6, 0x06, 0xcb, 0x64, 0x00, 0xc6, 0x06, + 0xcd, 0x64, 0x00, 0xe8, 0x20, 0xe9, 0xb9, 0x1c, + 0x00, 0xb0, 0x02, 0xb4, 0x08, 0xe8, 0x05, 0x57, + 0xb9, 0x4a, 0x02, 0xc6, 0x06, 0xdc, 0x1c, 0x01, + 0xe8, 0x0d, 0xc8, 0xbe, 0x8a, 0x00, 0xbf, 0xa3, + 0x00, 0xc6, 0x06, 0xc3, 0x64, 0x03, 0xe8, 0x1a, + 0xe3, 0xbb, 0x50, 0x36, 0xe8, 0x3e, 0x4d, 0xc6, + 0x06, 0xa0, 0xdb, 0x01, 0xe8, 0x26, 0x4a, 0xc3, + 0xc7, 0x06, 0xf3, 0xb4, 0x0b, 0x00, 0xb8, 0x00, + 0x00, 0xbb, 0x7c, 0x00, 0xbf, 0x3c, 0x00, 0xbe, + 0xaa, 0x00, 0xb1, 0x01, 0xb5, 0x02, 0xe8, 0xaa, + 0x58, 0xc3, 0xbb, 0x47, 0x40, 0xe8, 0x15, 0x4d, + 0xc3, 0xbb, 0x6d, 0x40, 0xe8, 0x0e, 0x4d, 0xc3, + 0x80, 0x3e, 0x99, 0xdb, 0x01, 0x75, 0x07, 0xbb, + 0x1f, 0x35, 0xe8, 0x00, 0x4d, 0xc3, 0xc6, 0x06, + 0x99, 0xdb, 0x01, 0xb9, 0x39, 0x00, 0xb0, 0x06, + 0xb4, 0x06, 0xe8, 0x98, 0x56, 0xb0, 0x0c, 0xe8, + 0x9c, 0x56, 0xb9, 0x3a, 0x00, 0xb0, 0x11, 0xe8, + 0x9b, 0x56, 0xb9, 0x05, 0x00, 0xb0, 0x25, 0xe8, + 0x9a, 0x56, 0xb9, 0x18, 0x02, 0xe8, 0x7f, 0xc7, + 0xe8, 0xa9, 0xc7, 0xb8, 0x0a, 0x00, 0xe8, 0xb1, + 0xcb, 0x8b, 0x3e, 0xb1, 0x64, 0x47, 0x8b, 0x36, + 0xaf, 0x64, 0xe8, 0x96, 0xe2, 0xbb, 0xc3, 0x30, + 0xe8, 0x2a, 0xbe, 0xb0, 0x08, 0xe8, 0x98, 0xd3, + 0xc3, 0x80, 0x3e, 0xb2, 0xdb, 0x01, 0x75, 0x0a, + 0xbb, 0x1d, 0x41, 0xe8, 0xa7, 0x4c, 0xe8, 0x43, + 0x00, 0xc3, 0xbb, 0x8a, 0x40, 0xe8, 0x9d, 0x4c, + 0xe8, 0x39, 0x00, 0xbb, 0x98, 0x40, 0xe8, 0x94, + 0x4c, 0xbb, 0xa7, 0x40, 0xbe, 0xe1, 0xcd, 0xe8, + 0x30, 0x00, 0xbb, 0xb6, 0x40, 0xe8, 0x85, 0x4c, + 0xbb, 0xce, 0x40, 0xbe, 0xac, 0xcd, 0xe8, 0x21, + 0x00, 0xbb, 0xe8, 0x40, 0xe8, 0x76, 0x4c, 0xbb, + 0x0f, 0x41, 0xbe, 0xe8, 0xcd, 0xe8, 0x12, 0x00, + 0xe8, 0x6a, 0xcb, 0xe8, 0x06, 0x00, 0xc6, 0x06, + 0xb2, 0xdb, 0x01, 0xc3, 0xbb, 0x91, 0x40, 0xbe, + 0xf8, 0xcd, 0xc6, 0x06, 0xe6, 0x1c, 0xe5, 0xe8, + 0xfc, 0x4e, 0xc3, 0xbb, 0x33, 0x41, 0xe8, 0x4c, + 0x4c, 0xc3, 0xc7, 0x06, 0xf3, 0xb4, 0x14, 0x00, + 0xb8, 0x00, 0x00, 0xbb, 0xb9, 0x00, 0xbf, 0x14, + 0x00, 0xbe, 0xb9, 0x00, 0xb1, 0x01, 0xb5, 0x02, + 0xe8, 0xc0, 0x57, 0xc3, 0xc7, 0x06, 0xf3, 0xb4, + 0x0b, 0x00, 0xb8, 0x00, 0x00, 0xbb, 0xaa, 0x00, + 0xbf, 0x3c, 0x00, 0xbe, 0xaa, 0x00, 0xb1, 0x01, + 0xb5, 0x02, 0xe8, 0xa6, 0x57, 0xc3, 0xc7, 0x06, + 0xf3, 0xb4, 0x12, 0x00, 0xb8, 0xf6, 0x00, 0xbb, + 0xc7, 0x00, 0xbf, 0xc9, 0x00, 0xbe, 0xc0, 0x00, + 0xb1, 0x01, 0xb5, 0x04, 0xe8, 0x8c, 0x57, 0xc3, + 0xe8, 0xfc, 0xc6, 0xe8, 0x8a, 0xeb, 0xc6, 0x47, + 0x02, 0x00, 0xe8, 0x0f, 0x5a, 0xb9, 0x22, 0x00, + 0xb0, 0x06, 0xb4, 0x06, 0xe8, 0x8e, 0x55, 0xb9, + 0x17, 0x02, 0xe8, 0xa2, 0xc6, 0xb0, 0x0b, 0xe8, + 0xbe, 0xd2, 0xb0, 0x01, 0xe8, 0x66, 0xc5, 0xc7, + 0x06, 0xf3, 0xb4, 0x0f, 0x00, 0xe8, 0x60, 0xeb, + 0xc6, 0x07, 0x00, 0xc7, 0x06, 0xf3, 0xb4, 0x10, + 0x00, 0xe8, 0x01, 0x00, 0xc3, 0xfe, 0x06, 0x98, + 0xdb, 0x80, 0x3e, 0x98, 0xdb, 0x02, 0x73, 0x01, + 0xc3, 0xc7, 0x06, 0xf3, 0xb4, 0x0f, 0x00, 0xb0, + 0x01, 0xe8, 0x39, 0xc5, 0xc7, 0x06, 0xf3, 0xb4, + 0x10, 0x00, 0xc3, 0xe8, 0xa1, 0xc6, 0xe8, 0x2f, + 0xeb, 0xc6, 0x47, 0x01, 0x00, 0xc6, 0x47, 0x03, + 0x00, 0xe8, 0xb0, 0x59, 0xb9, 0x21, 0x00, 0xb0, + 0x07, 0xb4, 0x09, 0xe8, 0x2f, 0x55, 0xb9, 0x16, + 0x02, 0xe8, 0x2e, 0xc6, 0xb0, 0x0a, 0xe8, 0x5f, + 0xd2, 0xb0, 0x02, 0xe8, 0x07, 0xc5, 0xe8, 0x07, + 0xeb, 0xc6, 0x47, 0x01, 0x0a, 0xe8, 0x48, 0x59, + 0xe8, 0x41, 0xc6, 0xc7, 0x06, 0xf3, 0xb4, 0x0f, + 0x00, 0xe8, 0xf4, 0xea, 0xc6, 0x47, 0x01, 0x00, + 0xc7, 0x06, 0xf3, 0xb4, 0x10, 0x00, 0xe8, 0x94, + 0xff, 0xc3, 0xe8, 0xe3, 0xea, 0xb0, 0x00, 0x88, + 0x07, 0xc7, 0x06, 0xf3, 0xb4, 0x0f, 0x00, 0xc6, + 0x06, 0xdc, 0x1c, 0x01, 0xe8, 0x10, 0x57, 0xb9, + 0x38, 0x02, 0xc6, 0x06, 0xdc, 0x1c, 0x01, 0xe8, + 0xcd, 0xc5, 0xc7, 0x06, 0xaf, 0x64, 0x73, 0x00, + 0xc7, 0x06, 0xb1, 0x64, 0xb4, 0x00, 0xc6, 0x06, + 0xc3, 0x64, 0x03, 0xc6, 0x06, 0xcb, 0x64, 0x01, + 0xc6, 0x06, 0xcd, 0x64, 0x01, 0xe8, 0xec, 0xc5, + 0xb9, 0x06, 0x00, 0xe8, 0x05, 0x5c, 0xc3, 0xc7, + 0x06, 0xf3, 0xb4, 0x0f, 0x00, 0xb8, 0x00, 0x00, + 0xbb, 0xac, 0x00, 0xbf, 0x1e, 0x00, 0xbe, 0xac, + 0x00, 0xb1, 0x01, 0xb5, 0x02, 0xe8, 0x83, 0x56, + 0xc3, 0xe8, 0x1a, 0x00, 0xc7, 0x06, 0xf3, 0xb4, + 0x13, 0x00, 0xb8, 0xdf, 0x00, 0xbb, 0xc7, 0x00, + 0xbf, 0xdf, 0x00, 0xbe, 0xc1, 0x00, 0xb1, 0x13, + 0xb5, 0x01, 0xe8, 0x66, 0x56, 0xc3, 0xe8, 0x7e, + 0x50, 0x81, 0x3e, 0xb1, 0x64, 0x95, 0x00, 0x76, + 0x09, 0xbe, 0x33, 0x00, 0xbf, 0x95, 0x00, 0xe8, + 0xaa, 0xe0, 0xbe, 0x5e, 0x00, 0xbf, 0x73, 0x00, + 0xc6, 0x06, 0xc3, 0x64, 0x04, 0xe8, 0x9c, 0xe0, + 0xc3, 0xe8, 0xda, 0xff, 0xe8, 0x2f, 0x4f, 0xc3, + 0xbb, 0x08, 0xdb, 0xe8, 0xff, 0xbb, 0x53, 0xe8, + 0x13, 0xbc, 0x5b, 0x81, 0xfb, 0x5d, 0x2c, 0x74, + 0x2e, 0x81, 0xfb, 0x9b, 0x2c, 0x75, 0x01, 0xc3, + 0xb8, 0x23, 0x01, 0xe8, 0x48, 0xc9, 0xb9, 0x34, + 0x00, 0xb0, 0x09, 0xb4, 0x0a, 0xe8, 0x2d, 0x54, + 0xb0, 0x0b, 0xe8, 0x31, 0x54, 0xb0, 0x0d, 0xe8, + 0x33, 0x54, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x39, + 0x02, 0xb0, 0x01, 0xe8, 0x83, 0xc4, 0xc3, 0xb8, + 0x23, 0x01, 0xe8, 0x21, 0xc9, 0xe8, 0xf8, 0xe9, + 0xc6, 0x07, 0x00, 0xe8, 0x7e, 0x58, 0xb9, 0x34, + 0x00, 0xb0, 0x09, 0xb4, 0x0a, 0xe8, 0xfd, 0x53, + 0xb0, 0x0b, 0xe8, 0x01, 0x54, 0xb0, 0x0d, 0xe8, + 0x03, 0x54, 0xb9, 0x35, 0x00, 0xb0, 0x20, 0xb4, + 0x0a, 0xe8, 0x00, 0x54, 0xbb, 0x47, 0x33, 0xc7, + 0x07, 0x3a, 0x02, 0xb0, 0x01, 0xe8, 0x49, 0xc4, + 0xe8, 0x2b, 0xc9, 0xbb, 0x1f, 0x55, 0xe8, 0x2c, + 0x4a, 0xb0, 0x05, 0xe8, 0xb7, 0xc3, 0xc6, 0x06, + 0xb0, 0xdb, 0x01, 0xc3, 0xbb, 0x0f, 0x57, 0xe8, + 0x1b, 0x4a, 0xc3, 0xe8, 0x19, 0xc5, 0xe8, 0xa7, + 0xe9, 0xc6, 0x47, 0x01, 0x00, 0xe8, 0x2c, 0x58, + 0xb9, 0x05, 0x00, 0xb0, 0x0a, 0xb4, 0x08, 0xe8, + 0xab, 0x53, 0xb9, 0x31, 0x02, 0xe8, 0xcd, 0xc4, + 0xb0, 0x1a, 0xe8, 0xdb, 0xd0, 0xb0, 0x06, 0xe8, + 0x83, 0xc3, 0xc3, 0xbb, 0x7e, 0x41, 0x80, 0x3e, + 0xb0, 0xdb, 0x01, 0x75, 0x03, 0xbb, 0xb1, 0x41, + 0xe8, 0xe2, 0x49, 0xc3, 0xc7, 0x06, 0xf3, 0xb4, + 0x12, 0x00, 0xb8, 0x5e, 0x00, 0xbb, 0x73, 0x00, + 0xbf, 0x5e, 0x00, 0xbe, 0x73, 0x00, 0xb1, 0x0b, + 0xb5, 0x03, 0xe8, 0x56, 0x55, 0xc3, 0xbb, 0xef, + 0x41, 0xe8, 0xc1, 0x49, 0xc3, 0xbb, 0x64, 0x41, + 0xe8, 0xba, 0x49, 0xc3, 0xb9, 0x43, 0x00, 0xb0, + 0x05, 0xb4, 0x03, 0xe8, 0x57, 0x53, 0xb9, 0xd7, + 0x03, 0xe8, 0x64, 0xc4, 0xbb, 0x55, 0x59, 0xe8, + 0xa3, 0x49, 0xc3, 0xe8, 0x20, 0x4e, 0xc3, 0xb9, + 0x42, 0x00, 0xb0, 0x05, 0xb4, 0x08, 0xe8, 0x3c, + 0x53, 0xb9, 0x43, 0x00, 0xb0, 0x0b, 0xe8, 0x3d, + 0x53, 0xb9, 0xd8, 0x03, 0xe8, 0x41, 0xc4, 0xbb, + 0x55, 0x59, 0xe8, 0x80, 0x49, 0xc3, 0xbb, 0xff, + 0x41, 0xe8, 0x79, 0x49, 0xc3, 0xbb, 0x3f, 0x42, + 0xe8, 0x72, 0x49, 0xc3, 0xbb, 0x51, 0x42, 0xe8, + 0x6b, 0x49, 0xc3, 0xbb, 0x67, 0x42, 0xe8, 0x64, + 0x49, 0xc3, 0xe8, 0xe1, 0x4d, 0xc3, 0xb9, 0x20, + 0x00, 0xb0, 0x07, 0xb4, 0x04, 0xe8, 0xfd, 0x52, + 0xb9, 0x72, 0x02, 0xe8, 0x0a, 0xc4, 0xe8, 0xdf, + 0xe8, 0xc6, 0x47, 0x01, 0x00, 0xe8, 0x64, 0x57, + 0xb0, 0x0c, 0xe8, 0xd0, 0xc2, 0xb0, 0x2d, 0xe8, + 0x1e, 0xd0, 0xbb, 0x04, 0x3b, 0xe8, 0x35, 0x49, + 0xc3, 0xbb, 0x3f, 0x42, 0xe8, 0x2e, 0x49, 0xc3, + 0xe8, 0x2c, 0xc4, 0xb0, 0x0d, 0xe8, 0x08, 0xd0, + 0xb0, 0x0e, 0xe8, 0xb0, 0xc2, 0xb9, 0x05, 0x00, + 0xb0, 0x0a, 0xb4, 0x08, 0xe8, 0xbe, 0x52, 0xe8, + 0xa6, 0xe8, 0xc6, 0x07, 0x00, 0xe8, 0x2c, 0x57, + 0xb9, 0x36, 0x02, 0xe8, 0xd7, 0xc3, 0xc3, 0xbb, + 0x89, 0x42, 0xe8, 0x00, 0x49, 0xc3, 0xb9, 0x0b, + 0x00, 0xb0, 0x04, 0xb4, 0x0c, 0xe8, 0x9d, 0x52, + 0xb9, 0x02, 0x02, 0xe8, 0x89, 0xc3, 0xe8, 0x7f, + 0xe8, 0xb0, 0x05, 0x88, 0x47, 0x02, 0x53, 0xe8, + 0x88, 0x57, 0x5b, 0xb0, 0x08, 0x88, 0x47, 0x04, + 0xe8, 0xa6, 0x57, 0xe8, 0xae, 0xc3, 0xb0, 0x0e, + 0xe8, 0x56, 0xc2, 0xb0, 0x0f, 0xe8, 0x51, 0xc2, + 0xb0, 0x10, 0xe8, 0x4c, 0xc2, 0xb0, 0x01, 0xe8, + 0x53, 0xc2, 0xc3, 0x80, 0x3e, 0x94, 0xdb, 0x01, + 0x74, 0x07, 0xbb, 0x63, 0x3e, 0xe8, 0xb5, 0x48, + 0xc3, 0x80, 0x3e, 0x95, 0xdb, 0x01, 0x75, 0x07, + 0xbb, 0x75, 0x3e, 0xe8, 0xa7, 0x48, 0xc3, 0xc6, + 0x06, 0x95, 0xdb, 0x01, 0xbb, 0x46, 0x67, 0xe8, + 0x20, 0xe8, 0x83, 0xc3, 0x03, 0xff, 0x37, 0x53, + 0xc7, 0x07, 0x3f, 0x01, 0xbe, 0xbc, 0x00, 0xbf, + 0xb3, 0x00, 0xe8, 0x5e, 0xde, 0xb9, 0x07, 0x00, + 0xb0, 0x10, 0xb4, 0x07, 0xe8, 0x26, 0x52, 0xb9, + 0x07, 0x02, 0xe8, 0x33, 0xc3, 0xb8, 0x96, 0x00, + 0xe8, 0x57, 0xc7, 0xbe, 0xa8, 0x00, 0xbf, 0xb3, + 0x00, 0xc6, 0x06, 0xc3, 0x64, 0x02, 0xe8, 0x3a, + 0xde, 0x5b, 0x8f, 0x07, 0xb0, 0x03, 0xe8, 0x3f, + 0xcf, 0xc3, 0xbb, 0x3f, 0x42, 0xe8, 0x55, 0x48, + 0xc3, 0xe8, 0xd2, 0x4c, 0xc3, 0xb9, 0x46, 0x00, + 0xb0, 0x06, 0xb4, 0x06, 0xe8, 0xee, 0x51, 0xb9, + 0x01, 0x02, 0xe8, 0xda, 0xc2, 0xe8, 0x7b, 0x53, + 0xc7, 0x06, 0xf3, 0xb4, 0x16, 0x00, 0xb8, 0x33, + 0x00, 0xbb, 0xb4, 0x00, 0xbf, 0x4e, 0x00, 0xbe, + 0xb4, 0x00, 0xb1, 0x01, 0xb5, 0x02, 0xe8, 0xb2, + 0x53, 0xc3, 0xb9, 0xfd, 0x01, 0xe8, 0xd8, 0xc2, + 0xbb, 0xce, 0x5d, 0xe8, 0x17, 0x48, 0xc3, 0xbb, + 0x64, 0x41, 0xe8, 0x10, 0x48, 0xc3, 0xbb, 0x64, + 0x41, 0xe8, 0x09, 0x48, 0xc3, 0xbb, 0x0f, 0x57, + 0xe8, 0x02, 0x48, 0xc3, 0xc7, 0x06, 0xf3, 0xb4, + 0x0f, 0x00, 0xb8, 0x9d, 0x00, 0xbb, 0xc7, 0x00, + 0xbf, 0x9d, 0x00, 0xbe, 0xb4, 0x00, 0xb1, 0x13, + 0xb5, 0x01, 0xe8, 0x76, 0x53, 0xc3, 0xc7, 0x06, + 0xf3, 0xb4, 0x15, 0x00, 0xb8, 0x00, 0x00, 0xbb, + 0xbb, 0x00, 0xbf, 0x30, 0x00, 0xbe, 0xbe, 0x00, + 0xb1, 0x01, 0xb5, 0x02, 0xe8, 0x5c, 0x53, 0xc3, + 0xc7, 0x06, 0xf3, 0xb4, 0x1b, 0x00, 0xb8, 0x54, + 0x00, 0xbb, 0xc7, 0x00, 0xbf, 0x84, 0x00, 0xbe, + 0xbe, 0x00, 0xb1, 0x01, 0xb5, 0x02, 0xe8, 0x42, + 0x53, 0xc3, 0xe8, 0x5e, 0xbf, 0xbb, 0xba, 0xda, + 0xe8, 0x02, 0xb9, 0xe8, 0x17, 0xb9, 0xbe, 0xe5, + 0x92, 0xb0, 0x0d, 0xe8, 0x3b, 0xc1, 0xc3, 0xb0, + 0x0e, 0xe8, 0x29, 0xc1, 0xb0, 0x06, 0xe8, 0x77, + 0xce, 0xb9, 0x05, 0x00, 0xb0, 0x07, 0xb4, 0x0c, + 0xe8, 0x32, 0x51, 0xb9, 0x09, 0x02, 0xe8, 0x1e, + 0xc2, 0xe8, 0x14, 0xe7, 0xc6, 0x47, 0x04, 0x00, + 0xe8, 0x4e, 0x55, 0xe8, 0x4e, 0xc2, 0xc3, 0xc6, + 0x06, 0x94, 0xdb, 0x01, 0xb9, 0x06, 0x00, 0xb0, + 0x04, 0xb4, 0x0b, 0xe8, 0x0f, 0x51, 0xb9, 0x03, + 0x02, 0xe8, 0xfb, 0xc1, 0xe8, 0xf1, 0xe6, 0xb0, + 0x06, 0x88, 0x47, 0x03, 0xe8, 0x22, 0x56, 0xe8, + 0x2a, 0xc2, 0xc3, 0xbb, 0xac, 0x42, 0xe8, 0x4c, + 0x47, 0xc3, 0xc7, 0x06, 0xf3, 0xb4, 0x14, 0x00, + 0xb8, 0x3f, 0x01, 0xbb, 0xbe, 0x00, 0xbf, 0x21, + 0x01, 0xbe, 0xbe, 0x00, 0xb1, 0x01, 0xb5, 0x04, + 0xe8, 0xc0, 0x52, 0xc3, 0xc7, 0x06, 0xf3, 0xb4, + 0x19, 0x00, 0xb8, 0x3f, 0x01, 0xbb, 0x92, 0x00, + 0xbf, 0x14, 0x01, 0xbe, 0x92, 0x00, 0xb1, 0x01, + 0xb5, 0x04, 0xe8, 0xa6, 0x52, 0xc3, 0xb9, 0x59, + 0x00, 0xb0, 0x04, 0xb4, 0x06, 0xe8, 0xb5, 0x50, + 0xb9, 0xd4, 0x03, 0xe8, 0xa1, 0xc1, 0xe8, 0x42, + 0x52, 0x80, 0x3e, 0xee, 0xdb, 0x01, 0x75, 0x06, + 0xb9, 0x07, 0x00, 0xe8, 0xed, 0x57, 0xc7, 0x06, + 0xf3, 0xb4, 0x17, 0x00, 0xb8, 0x4c, 0x00, 0xbb, + 0xc7, 0x00, 0xbf, 0x5e, 0x00, 0xbe, 0xbe, 0x00, + 0xb1, 0x13, 0xb5, 0x01, 0xe8, 0x6c, 0x52, 0xc3, + 0xbb, 0xc7, 0x42, 0xe8, 0xd7, 0x46, 0xc3, 0xbb, + 0x64, 0x41, 0xe8, 0xd0, 0x46, 0xc3, 0xbb, 0x64, + 0x41, 0xe8, 0xc9, 0x46, 0xc3, 0xbb, 0x64, 0x41, + 0xe8, 0xc2, 0x46, 0xc3, 0xe8, 0x04, 0x00, 0xe8, + 0x87, 0x00, 0xc3, 0xc7, 0x06, 0xf3, 0xb4, 0x18, + 0x00, 0xc6, 0x06, 0xdc, 0x1c, 0x01, 0xc6, 0x06, + 0xc5, 0x64, 0x00, 0xc6, 0x06, 0x3d, 0x66, 0x00, + 0xc6, 0x06, 0x40, 0x67, 0xff, 0xc6, 0x06, 0xc4, + 0x64, 0x01, 0xe8, 0x93, 0xdb, 0x80, 0x3e, 0xad, + 0x64, 0x01, 0x75, 0x05, 0xe8, 0x05, 0x53, 0xeb, + 0x03, 0xe8, 0x1a, 0x53, 0xe8, 0x3e, 0x54, 0x80, + 0x3e, 0xa4, 0xdb, 0x01, 0x74, 0x1c, 0xa1, 0xb3, + 0x32, 0xbb, 0x00, 0xfa, 0x1e, 0x53, 0x8e, 0xd8, + 0xb9, 0x70, 0x02, 0xe8, 0x2d, 0x00, 0x5b, 0x81, + 0xc3, 0xd6, 0x02, 0xb9, 0x27, 0x00, 0xe8, 0x22, + 0x00, 0x1f, 0xe8, 0x7a, 0x52, 0x80, 0x3e, 0xad, + 0x64, 0x01, 0x75, 0x04, 0xe8, 0xda, 0x52, 0xc3, + 0xb8, 0x00, 0xa0, 0xb9, 0x00, 0x7d, 0xe8, 0xf7, + 0x52, 0xe8, 0xe7, 0x52, 0xe8, 0xb2, 0x52, 0xe8, + 0xae, 0x4e, 0xc3, 0x8a, 0x07, 0x2c, 0x20, 0x73, + 0x02, 0xb0, 0x00, 0x88, 0x07, 0x43, 0xe2, 0xf3, + 0xc3, 0xc7, 0x06, 0xaf, 0x64, 0xe6, 0x00, 0xc7, + 0x06, 0xb1, 0x64, 0xaa, 0x00, 0xc6, 0x06, 0xc3, + 0x64, 0x01, 0xc6, 0x06, 0xcb, 0x64, 0x01, 0xc6, + 0x06, 0xcd, 0x64, 0x01, 0xb9, 0x34, 0x00, 0xb0, + 0x03, 0xb4, 0x0b, 0xe8, 0xb7, 0x4f, 0xb0, 0x07, + 0xe8, 0xbb, 0x4f, 0xb0, 0x0b, 0xe8, 0xbd, 0x4f, + 0xb0, 0x0e, 0xe8, 0xbf, 0x4f, 0xb0, 0x12, 0xe8, + 0xc1, 0x4f, 0xb0, 0x15, 0xe8, 0xc3, 0x4f, 0xb0, + 0x19, 0xe8, 0xc5, 0x4f, 0xb9, 0x59, 0x02, 0xc6, + 0x06, 0xdc, 0x1c, 0x01, 0xe8, 0xa1, 0xc0, 0xbe, + 0xe6, 0x00, 0xbf, 0xb3, 0x00, 0xc6, 0x06, 0xc3, + 0x64, 0x03, 0xe8, 0xae, 0xdb, 0x80, 0x3e, 0xa4, + 0xdb, 0x01, 0x74, 0x06, 0xbb, 0xea, 0x37, 0xe8, + 0xcb, 0x45, 0xc3, 0x80, 0x3e, 0xad, 0xdb, 0x01, + 0x74, 0x32, 0xb9, 0x2b, 0x00, 0xb0, 0x04, 0xb4, + 0x0b, 0xe8, 0x61, 0x4f, 0xb9, 0x2a, 0x00, 0xb0, + 0x0f, 0xe8, 0x62, 0x4f, 0xb0, 0x11, 0xe8, 0x64, + 0x4f, 0xb0, 0x13, 0xe8, 0x66, 0x4f, 0xbb, 0x47, + 0x33, 0xc7, 0x07, 0x90, 0x02, 0xb0, 0x01, 0xe8, + 0xaf, 0xbf, 0xe8, 0x91, 0xc4, 0xbb, 0x16, 0x3c, + 0xe8, 0x92, 0x45, 0xc3, 0x80, 0x3e, 0xa3, 0xdb, + 0x01, 0x74, 0x29, 0xb9, 0x1c, 0x00, 0xb0, 0x03, + 0xb4, 0x0e, 0xe8, 0x28, 0x4f, 0xb9, 0x54, 0x02, + 0xe8, 0x14, 0xc0, 0xe8, 0x0a, 0xe5, 0xb0, 0x1e, + 0x88, 0x47, 0x01, 0xe8, 0x3b, 0x54, 0xe8, 0x43, + 0xc0, 0xc6, 0x06, 0xa3, 0xdb, 0x01, 0xb0, 0x08, + 0xe8, 0xe6, 0xbe, 0xc3, 0xe8, 0x60, 0xc0, 0xe8, + 0xee, 0xe4, 0xc6, 0x47, 0x01, 0x00, 0xe8, 0x73, + 0x53, 0xb9, 0x04, 0x00, 0xb0, 0x04, 0xb4, 0x0e, + 0xe8, 0xf2, 0x4e, 0xb9, 0x55, 0x02, 0xe8, 0x06, + 0xc0, 0xc6, 0x06, 0xa3, 0xdb, 0x00, 0xb0, 0x08, + 0xe8, 0xca, 0xbe, 0xbb, 0xb8, 0x37, 0xe8, 0x34, + 0x45, 0xc7, 0x06, 0xf3, 0xb4, 0x18, 0x00, 0xe8, + 0xbe, 0xe4, 0xc6, 0x47, 0x01, 0x20, 0xb0, 0x04, + 0xe8, 0xa6, 0xbe, 0xc7, 0x06, 0xf3, 0xb4, 0x15, + 0x00, 0xc3, 0xbb, 0x14, 0xdb, 0xe8, 0x6d, 0xb6, + 0xe8, 0x82, 0xb6, 0xc3, 0xb9, 0xfe, 0x01, 0xe8, + 0xc6, 0xbf, 0xc6, 0x06, 0xe6, 0x1c, 0xe5, 0xbb, + 0xc2, 0x5d, 0xbe, 0x8c, 0x7d, 0xe8, 0xa6, 0x47, + 0xc3, 0xbb, 0xbd, 0x2c, 0xe8, 0x66, 0xb6, 0xb8, + 0x96, 0x00, 0xe8, 0xd5, 0xc3, 0xbb, 0xc2, 0x2d, + 0xe8, 0x5a, 0xb6, 0x8b, 0x36, 0xaf, 0x64, 0x8b, + 0x3e, 0xb1, 0x64, 0x83, 0xef, 0x0c, 0xe8, 0xb2, + 0xda, 0xb9, 0x22, 0x00, 0xb0, 0x05, 0xb4, 0x03, + 0xe8, 0x7a, 0x4e, 0xb9, 0x5f, 0x02, 0xe8, 0x66, + 0xbf, 0xe8, 0x5c, 0xe4, 0xc6, 0x07, 0x00, 0xe8, + 0x9e, 0x52, 0xb9, 0x60, 0x02, 0xe8, 0x5a, 0xbf, + 0xb9, 0x61, 0x02, 0xe8, 0x54, 0xbf, 0xb9, 0x62, + 0x02, 0xe8, 0x4e, 0xbf, 0xb9, 0x05, 0x00, 0xb0, + 0x19, 0xb4, 0x00, 0xe8, 0x4f, 0x4e, 0xb9, 0x63, + 0x02, 0xe8, 0x3e, 0xbf, 0xc7, 0x06, 0xaf, 0x64, + 0x10, 0x00, 0xc6, 0x06, 0xcc, 0x64, 0x00, 0xc6, + 0x06, 0xcd, 0x64, 0x00, 0xc6, 0x06, 0xcb, 0x64, + 0x00, 0xc6, 0x06, 0xc3, 0x64, 0x04, 0xc6, 0x06, + 0xdc, 0x64, 0x01, 0xe8, 0x56, 0xbf, 0xb0, 0x26, + 0xe8, 0x5d, 0xcb, 0xb0, 0x0c, 0xe8, 0x05, 0xbe, + 0xc3, 0xe8, 0xfc, 0xbb, 0xbb, 0xc4, 0xda, 0xe8, + 0xc3, 0xb5, 0xe8, 0xd8, 0xb5, 0xc3, 0xb9, 0x59, + 0x00, 0xb0, 0x05, 0xb4, 0x06, 0xe8, 0x05, 0x4e, + 0xb9, 0x43, 0x00, 0xb0, 0x0b, 0xe8, 0x06, 0x4e, + 0xb9, 0xd6, 0x03, 0xe8, 0x0a, 0xbf, 0xbb, 0x55, + 0x59, 0xe8, 0x49, 0x44, 0xc3, 0x80, 0x3e, 0xa7, + 0xdb, 0x01, 0x75, 0x07, 0xbb, 0xac, 0x3b, 0xe8, + 0x3b, 0x44, 0xc3, 0x80, 0x3e, 0x92, 0xdb, 0x01, + 0x74, 0x25, 0x8b, 0x36, 0xaf, 0x64, 0x8b, 0x3e, + 0xb1, 0x64, 0x56, 0x57, 0xc6, 0x06, 0xc3, 0x64, + 0x03, 0xe8, 0xf7, 0xd9, 0xe8, 0xa9, 0xbb, 0xbb, + 0xa0, 0x15, 0xe8, 0x88, 0xb5, 0x5f, 0x5e, 0xc6, + 0x06, 0xc3, 0x64, 0x01, 0xe8, 0xe4, 0xd9, 0xb9, + 0x42, 0x00, 0xb0, 0x05, 0xb4, 0x07, 0xe8, 0xac, + 0x4d, 0xb9, 0x43, 0x00, 0xb0, 0x14, 0xe8, 0xad, + 0x4d, 0xb9, 0x05, 0x00, 0xb0, 0x17, 0xe8, 0xac, + 0x4d, 0xb9, 0x77, 0x02, 0xe8, 0xa9, 0xbe, 0xb0, + 0x2f, 0xe8, 0xcc, 0xca, 0xc6, 0x06, 0xa7, 0xdb, + 0x01, 0xc3, 0xbb, 0x06, 0x43, 0xe8, 0xdd, 0x43, + 0xc3, 0xbb, 0x64, 0x41, 0xe8, 0xd6, 0x43, 0xc3, + 0xe8, 0x53, 0x48, 0xc3, 0x80, 0x3e, 0x92, 0xdb, + 0x01, 0x74, 0x29, 0x8b, 0x36, 0xaf, 0x64, 0x8b, + 0x3e, 0xb1, 0x64, 0xc6, 0x06, 0xc3, 0x64, 0x03, + 0x57, 0x56, 0xe8, 0x8e, 0xd9, 0xe8, 0x40, 0xbb, + 0xbb, 0xce, 0xda, 0xe8, 0x07, 0xb5, 0xe8, 0x1c, + 0xb5, 0x5e, 0x5f, 0xc6, 0x06, 0xc3, 0x64, 0x01, + 0xe8, 0x78, 0xd9, 0xc3, 0xe8, 0xa0, 0xbe, 0xb0, + 0x02, 0xe8, 0x7c, 0xca, 0xb0, 0x07, 0xe8, 0x24, + 0xbd, 0xe8, 0x24, 0xe3, 0xc6, 0x07, 0x00, 0xe8, + 0xaa, 0x51, 0xb9, 0x20, 0x00, 0xb0, 0x07, 0xb4, + 0x09, 0xe8, 0x29, 0x4d, 0xb9, 0x08, 0x02, 0xe8, + 0x3d, 0xbe, 0xc3, 0xbb, 0x3f, 0x42, 0xe8, 0x74, + 0x43, 0xc3, 0xbb, 0x3f, 0x42, 0xe8, 0x6d, 0x43, + 0xc3, 0xbb, 0x1e, 0x43, 0xe8, 0x66, 0x43, 0xc3, + 0xb9, 0x58, 0x00, 0xb0, 0x05, 0xb4, 0x03, 0xe8, + 0x03, 0x4d, 0xb9, 0xd5, 0x03, 0xe8, 0xff, 0xbd, + 0xe8, 0x90, 0x4e, 0xc7, 0x06, 0xf3, 0xb4, 0x14, + 0x00, 0xb8, 0xa0, 0x00, 0xbb, 0xa5, 0x00, 0xbf, + 0xa0, 0x00, 0xbe, 0xb9, 0x00, 0xb1, 0x0b, 0xb5, + 0x03, 0xe8, 0xc7, 0x4e, 0xc3, 0xbb, 0xff, 0x41, + 0xe8, 0x32, 0x43, 0xc3, 0x80, 0x3e, 0x92, 0xdb, + 0x01, 0x74, 0x29, 0x8b, 0x36, 0xaf, 0x64, 0x8b, + 0x3e, 0xb1, 0x64, 0x56, 0x57, 0xc6, 0x06, 0xc3, + 0x64, 0x03, 0xe8, 0xee, 0xd8, 0xe8, 0xa0, 0xba, + 0xbb, 0xd4, 0xda, 0xe8, 0x67, 0xb4, 0xe8, 0x7c, + 0xb4, 0x5f, 0x5e, 0xc6, 0x06, 0xc3, 0x64, 0x01, + 0xe8, 0xd8, 0xd8, 0xc3, 0xe8, 0x00, 0xbe, 0xb8, + 0x02, 0x00, 0xe8, 0x1c, 0xd1, 0x32, 0xe4, 0xbb, + 0xc7, 0x32, 0xb1, 0x1b, 0x48, 0xf6, 0xe1, 0x03, + 0xd8, 0xc7, 0x07, 0x00, 0x00, 0xb9, 0x20, 0x00, + 0xb0, 0x07, 0xb4, 0x08, 0xe8, 0x86, 0x4c, 0xb9, + 0xfc, 0x01, 0xe8, 0x9a, 0xbd, 0xb0, 0x0d, 0xe8, + 0x63, 0xbc, 0xb0, 0x07, 0xe8, 0xb1, 0xc9, 0xc3, + 0x80, 0x3e, 0xa5, 0xdb, 0x01, 0x74, 0x37, 0xe8, + 0x2b, 0xba, 0xbb, 0xda, 0xda, 0xe8, 0x15, 0xb4, + 0x53, 0xe8, 0x29, 0xb4, 0x5b, 0x81, 0xfb, 0x13, + 0x19, 0x75, 0x22, 0xb8, 0x64, 0x00, 0xe8, 0x91, + 0xc1, 0x8b, 0x3e, 0xb1, 0x64, 0x8b, 0x36, 0xaf, + 0x64, 0xc6, 0x06, 0xc3, 0x64, 0x03, 0xe8, 0x72, + 0xd8, 0xe8, 0x92, 0xc1, 0xbb, 0xd5, 0x34, 0xe8, + 0x93, 0x42, 0xe8, 0x89, 0xc1, 0xc3, 0xc6, 0x06, + 0xa5, 0xdb, 0x02, 0xe8, 0xef, 0xb9, 0xbb, 0x4f, + 0x1f, 0xe8, 0xf1, 0xb3, 0xb8, 0x01, 0x01, 0xe8, + 0x34, 0xc1, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x5c, + 0x02, 0xb0, 0x01, 0xe8, 0x3a, 0xbc, 0xe8, 0x03, + 0x4d, 0xc7, 0x06, 0xf3, 0xb4, 0x15, 0x00, 0xb0, + 0x04, 0xe8, 0xf1, 0xbb, 0xb0, 0x0c, 0xe8, 0xe0, + 0xbb, 0xe8, 0xec, 0xe1, 0x53, 0xc6, 0x07, 0x00, + 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x02, 0x5e, 0x02, + 0xe8, 0x01, 0x4f, 0xb9, 0x2e, 0x00, 0xb0, 0x05, + 0xb4, 0x02, 0xe8, 0xe8, 0x4b, 0xb0, 0x02, 0xe8, + 0x48, 0xbc, 0xe8, 0xcf, 0x4c, 0x5b, 0xc6, 0x07, + 0x21, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x5d, 0x02, + 0xc7, 0x06, 0xf3, 0xb4, 0x17, 0x00, 0xe8, 0xe4, + 0x4e, 0xb0, 0x01, 0xe8, 0x2c, 0xbc, 0xe8, 0x65, + 0x4c, 0xc6, 0x06, 0x33, 0x33, 0x01, 0xc6, 0x06, + 0xdd, 0x1c, 0x02, 0xe8, 0x77, 0xb9, 0xbb, 0x02, + 0x20, 0xe8, 0x79, 0xb3, 0xc3, 0x80, 0x3e, 0x97, + 0xdb, 0x00, 0x74, 0x07, 0xbb, 0x59, 0x3d, 0xe8, + 0xfb, 0x41, 0xc3, 0xbe, 0xf5, 0x00, 0xbf, 0xc6, + 0x00, 0xc6, 0x06, 0xc3, 0x64, 0x01, 0xe8, 0xc2, + 0xd7, 0xe8, 0x00, 0xba, 0xbb, 0xd7, 0x21, 0xe8, + 0x53, 0xb3, 0xc6, 0x06, 0x97, 0xdb, 0x01, 0xb8, + 0x01, 0x02, 0xe8, 0x91, 0xc0, 0xb9, 0x0d, 0x00, + 0xb0, 0x0a, 0xb4, 0x0c, 0xe8, 0x76, 0x4b, 0xb0, + 0x0c, 0xe8, 0x7a, 0x4b, 0xb0, 0x0e, 0xe8, 0x7c, + 0x4b, 0xb0, 0x10, 0xe8, 0x7e, 0x4b, 0xb0, 0x12, + 0xe8, 0x80, 0x4b, 0xb0, 0x14, 0xe8, 0x82, 0x4b, + 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x02, 0x10, 0x02, + 0xb0, 0x02, 0xe8, 0xbc, 0xbb, 0xb8, 0x32, 0x00, + 0xe8, 0x87, 0xc0, 0xb9, 0x07, 0x00, 0xe8, 0x92, + 0x52, 0xc6, 0x06, 0xee, 0xdb, 0x01, 0xb9, 0x38, + 0x00, 0xb0, 0x03, 0xb4, 0x0a, 0xe8, 0x35, 0x4b, + 0xb0, 0x05, 0xe8, 0x39, 0x4b, 0xb0, 0x07, 0xe8, + 0x3b, 0x4b, 0xb0, 0x09, 0xe8, 0x3d, 0x4b, 0xb0, + 0x0b, 0xe8, 0x3f, 0x4b, 0xb0, 0x0d, 0xe8, 0x41, + 0x4b, 0xb0, 0x0f, 0xe8, 0x43, 0x4b, 0xb0, 0x11, + 0xe8, 0x45, 0x4b, 0xb9, 0x0d, 0x02, 0xe8, 0xfe, + 0xbb, 0xb9, 0x38, 0x00, 0xb0, 0x01, 0xb4, 0x0a, + 0xe8, 0x02, 0x4b, 0xb0, 0x03, 0xe8, 0x06, 0x4b, + 0xb0, 0x05, 0xe8, 0x08, 0x4b, 0xb0, 0x07, 0xe8, + 0x0a, 0x4b, 0xb0, 0x09, 0xe8, 0x0c, 0x4b, 0xb0, + 0x0b, 0xe8, 0x0e, 0x4b, 0xb0, 0x0d, 0xe8, 0x10, + 0x4b, 0xb9, 0x28, 0x00, 0xb0, 0x0f, 0xe8, 0x0f, + 0x4b, 0xb0, 0x12, 0xe8, 0x11, 0x4b, 0xb0, 0x16, + 0xe8, 0x13, 0x4b, 0xb9, 0x0e, 0x02, 0xe8, 0xc1, + 0xbb, 0xb9, 0x36, 0x00, 0xb0, 0x01, 0xb4, 0x0a, + 0xe8, 0xc2, 0x4a, 0xb9, 0x37, 0x00, 0xb0, 0x05, + 0xe8, 0xc3, 0x4a, 0xb9, 0x38, 0x00, 0xb0, 0x09, + 0xe8, 0xc2, 0x4a, 0xb0, 0x0d, 0xe8, 0xc4, 0x4a, + 0xb9, 0x18, 0x00, 0xb0, 0x10, 0xe8, 0xc3, 0x4a, + 0xb9, 0x0f, 0x02, 0xe8, 0x94, 0xbb, 0xe8, 0xcb, + 0xbb, 0xe8, 0xea, 0xbf, 0xbb, 0x19, 0x22, 0xe8, + 0x5b, 0xb2, 0xb0, 0x02, 0xbe, 0x20, 0x98, 0xe8, + 0x7f, 0xba, 0xc3, 0x80, 0x3e, 0xee, 0xdb, 0x01, + 0x75, 0x06, 0xb9, 0x06, 0x00, 0xe8, 0xcb, 0x51, + 0xc7, 0x06, 0xf3, 0xb4, 0x15, 0x00, 0xb8, 0x63, + 0x00, 0xbb, 0xb4, 0x00, 0xbf, 0x63, 0x00, 0xbe, + 0xba, 0x00, 0xb1, 0x0b, 0xb5, 0x03, 0xe8, 0x4a, + 0x4c, 0xc3, 0xbb, 0x64, 0x41, 0xe8, 0xb5, 0x40, + 0xc3, 0xbb, 0x64, 0x41, 0xe8, 0xae, 0x40, 0xc3, + 0xbb, 0xff, 0x41, 0xe8, 0xa7, 0x40, 0xc3, 0xbb, + 0x4e, 0x43, 0xe8, 0xa0, 0x40, 0xc3, 0xe8, 0x1d, + 0x45, 0xc3, 0x80, 0x3e, 0xb1, 0xdb, 0x01, 0x75, + 0x07, 0xbb, 0x80, 0x43, 0xe8, 0x8e, 0x40, 0xc3, + 0x8b, 0x36, 0xaf, 0x64, 0x8b, 0x3e, 0xb1, 0x64, + 0xc6, 0x06, 0xc3, 0x64, 0x04, 0xe8, 0x53, 0xd6, + 0xe8, 0xe2, 0xb7, 0xbb, 0xfc, 0xda, 0xe8, 0xcc, + 0xb1, 0xe8, 0xe1, 0xb1, 0xc3, 0xbb, 0xac, 0x43, + 0xe8, 0x6a, 0x40, 0xc3, 0xbb, 0xce, 0x43, 0xe8, + 0x63, 0x40, 0xc3, 0x80, 0x3e, 0x9a, 0xdb, 0x00, + 0x75, 0x0d, 0xe8, 0xc0, 0xb7, 0xbb, 0xf6, 0xda, + 0xe8, 0xaa, 0xb1, 0xe8, 0xbf, 0xb1, 0xc3, 0xe8, + 0xb3, 0xb7, 0xbb, 0x1e, 0x1e, 0xe8, 0xb5, 0xb1, + 0xe8, 0x3b, 0xbf, 0xe8, 0x41, 0xbb, 0xb0, 0x0c, + 0xe8, 0x1d, 0xc7, 0xb0, 0x0c, 0xe8, 0xc5, 0xb9, + 0xe8, 0xc5, 0xdf, 0xc6, 0x07, 0x00, 0xe8, 0x4b, + 0x4e, 0xb9, 0x05, 0x00, 0xb0, 0x06, 0xb4, 0x04, + 0xe8, 0xca, 0x49, 0xb9, 0x1d, 0x02, 0xe8, 0xec, + 0xba, 0xc3, 0xe8, 0x99, 0x44, 0xc3, 0x80, 0x3e, + 0xb3, 0xdb, 0x01, 0x75, 0x07, 0xbb, 0xa7, 0x44, + 0xe8, 0x0a, 0x40, 0xc3, 0xbb, 0x12, 0x44, 0xe8, + 0x18, 0x00, 0xbb, 0x4f, 0x44, 0xe8, 0x12, 0x00, + 0xbb, 0x6b, 0x44, 0xe8, 0x0c, 0x00, 0xbb, 0x92, + 0x44, 0xe8, 0xf1, 0x3f, 0xc6, 0x06, 0xb3, 0xdb, + 0x01, 0xc3, 0xe8, 0xe8, 0x3f, 0xb8, 0x96, 0x00, + 0xe8, 0xc7, 0xbe, 0xc3, 0xe8, 0x5f, 0x44, 0xc3, + 0xbb, 0x1e, 0x43, 0xe8, 0xd7, 0x3f, 0xc3, 0xe8, + 0x33, 0x00, 0xc3, 0x80, 0x3e, 0xa4, 0xdb, 0x01, + 0x74, 0x04, 0xe8, 0x28, 0x00, 0xc3, 0xe8, 0xc6, + 0xba, 0xe8, 0x54, 0xdf, 0xc6, 0x07, 0x00, 0xe8, + 0xda, 0x4d, 0xb9, 0x38, 0x00, 0xb0, 0x0a, 0xb4, + 0x02, 0xe8, 0x59, 0x49, 0xb9, 0x57, 0x02, 0xe8, + 0x7b, 0xba, 0xb0, 0x25, 0xe8, 0x89, 0xc6, 0xb0, + 0x02, 0xe8, 0x31, 0xb9, 0xc3, 0x80, 0x3e, 0xae, + 0xdb, 0x01, 0x75, 0x0a, 0xe8, 0x1a, 0x00, 0xbb, + 0xdd, 0x2f, 0xe8, 0x00, 0xb1, 0xc3, 0xbb, 0x41, + 0x2e, 0xe8, 0xf9, 0xb0, 0xe8, 0x0a, 0x00, 0xe8, + 0x83, 0xbe, 0xbb, 0x6d, 0x2e, 0xe8, 0xed, 0xb0, + 0xc3, 0xa0, 0xab, 0x64, 0x8a, 0x26, 0xaa, 0x64, + 0x50, 0xc6, 0x06, 0xab, 0x64, 0x02, 0xc6, 0x06, + 0xaa, 0x64, 0x02, 0xe8, 0xd1, 0xaa, 0xe8, 0x9d, + 0xaa, 0xb8, 0x03, 0x00, 0xe8, 0x4e, 0x43, 0x8b, + 0x77, 0x0d, 0x8b, 0x7f, 0x0f, 0x8a, 0x47, 0x11, + 0xa2, 0xc3, 0x64, 0xe8, 0x25, 0xd5, 0xe8, 0x22, + 0x00, 0xbe, 0x30, 0x00, 0xbf, 0xbe, 0x00, 0xc6, + 0x06, 0xc3, 0x64, 0x03, 0xe8, 0x14, 0xd5, 0x58, + 0xa2, 0xab, 0x64, 0x88, 0x26, 0xaa, 0x64, 0xe8, + 0x9d, 0xaa, 0xe8, 0x69, 0xaa, 0xc6, 0x06, 0xae, + 0xdb, 0x01, 0xc3, 0xb9, 0x34, 0x00, 0xb0, 0x0a, + 0xb4, 0x0b, 0xe8, 0xc8, 0x48, 0xb0, 0x0e, 0xe8, + 0xcc, 0x48, 0xb0, 0x12, 0xe8, 0xce, 0x48, 0xb0, + 0x15, 0xe8, 0xd0, 0x48, 0xb0, 0x19, 0xe8, 0xd2, + 0x48, 0xb0, 0x1c, 0xe8, 0xd4, 0x48, 0xb0, 0x20, + 0xe8, 0xd6, 0x48, 0xb9, 0x58, 0x02, 0xe8, 0x96, + 0xb9, 0xe8, 0x37, 0x4a, 0xc7, 0x06, 0xf3, 0xb4, + 0x15, 0x00, 0xb8, 0x29, 0x01, 0xbb, 0xb2, 0x00, + 0xbf, 0x29, 0x01, 0xbe, 0xb5, 0x00, 0xb1, 0x0b, + 0xb5, 0x03, 0xe8, 0x6e, 0x4a, 0xc3, 0x80, 0x3e, + 0xa4, 0xdb, 0x01, 0x75, 0x07, 0xbb, 0x01, 0x38, + 0xe8, 0xd2, 0x3e, 0xc3, 0xb9, 0x47, 0x00, 0xb0, + 0x06, 0xb4, 0x0c, 0xe8, 0x6f, 0x48, 0xb9, 0x56, + 0x02, 0xe8, 0x5b, 0xb9, 0xe8, 0x76, 0x4c, 0x80, + 0x3e, 0xad, 0x64, 0x01, 0x75, 0x0e, 0x8b, 0x16, + 0xb3, 0x32, 0xbe, 0x00, 0xfa, 0xb0, 0x40, 0xe8, + 0x78, 0x45, 0xeb, 0x0c, 0x8b, 0x16, 0xb3, 0x32, + 0xbe, 0x00, 0xfa, 0xb0, 0x40, 0xe8, 0x6a, 0x45, + 0xe8, 0x71, 0xb9, 0xe8, 0x2a, 0xde, 0xc6, 0x47, + 0x02, 0x00, 0xe8, 0xaf, 0x4c, 0xbb, 0x47, 0x33, + 0xc7, 0x07, 0x94, 0x02, 0xb0, 0x01, 0xe8, 0x4f, + 0xb8, 0xe8, 0x18, 0x49, 0xb0, 0x01, 0xe8, 0x0c, + 0xb8, 0xb0, 0x01, 0xb4, 0x00, 0xe8, 0x99, 0xcc, + 0xe8, 0xad, 0xcc, 0xc6, 0x06, 0xa4, 0xdb, 0x01, + 0xc3, 0x80, 0x3e, 0xa4, 0xdb, 0x01, 0x74, 0x04, + 0xe8, 0x0b, 0x00, 0xc3, 0xbb, 0x1e, 0xdb, 0xe8, + 0xb3, 0xaf, 0xe8, 0xc8, 0xaf, 0xc3, 0xbb, 0x1d, + 0x46, 0xe8, 0x51, 0x3e, 0xc3, 0x80, 0x3e, 0xa4, + 0xdb, 0x01, 0x74, 0x04, 0xe8, 0xef, 0xff, 0xc3, + 0xbb, 0x0e, 0x45, 0xe8, 0x3f, 0x3e, 0xc3, 0x80, + 0x3e, 0xa4, 0xdb, 0x01, 0x74, 0x04, 0xe8, 0xdd, + 0xff, 0xc3, 0xbb, 0xd6, 0x44, 0xe8, 0x2d, 0x3e, + 0xc3, 0x80, 0x3e, 0xa4, 0xdb, 0x01, 0x74, 0x04, + 0xe8, 0xcb, 0xff, 0xc3, 0xa0, 0xb4, 0xdb, 0x0a, + 0xc0, 0x74, 0x20, 0x3c, 0x01, 0x74, 0x07, 0xbb, + 0x03, 0x46, 0xe8, 0x10, 0x3e, 0xc3, 0xbb, 0xb8, + 0x45, 0xe8, 0x09, 0x3e, 0xe8, 0x06, 0xbd, 0xbb, + 0xda, 0x45, 0xe8, 0x00, 0x3e, 0xc6, 0x06, 0xb4, + 0xdb, 0x02, 0xc3, 0xbb, 0x32, 0x45, 0xe8, 0xf4, + 0x3d, 0x8b, 0x36, 0xaf, 0x64, 0x8b, 0x3e, 0xb1, + 0x64, 0x83, 0xee, 0x1e, 0xc6, 0x06, 0xc3, 0x64, + 0x01, 0xe8, 0xb7, 0xd3, 0xbb, 0x55, 0x45, 0xe8, + 0xdb, 0x3d, 0xbb, 0x68, 0x45, 0xe8, 0x28, 0x00, + 0xbb, 0x7b, 0x45, 0xe8, 0x22, 0x00, 0xbb, 0x8e, + 0x45, 0xe8, 0x1c, 0x00, 0x8b, 0x36, 0xaf, 0x64, + 0x8b, 0x3e, 0xb1, 0x64, 0xc6, 0x06, 0xc3, 0x64, + 0x03, 0xe8, 0x8f, 0xd3, 0xbb, 0x9f, 0x45, 0xe8, + 0xb3, 0x3d, 0xc6, 0x06, 0xb4, 0xdb, 0x01, 0xc3, + 0x53, 0x8b, 0x36, 0xaf, 0x64, 0x8b, 0x3e, 0xb1, + 0x64, 0x83, 0xc6, 0x14, 0xc6, 0x06, 0xc3, 0x64, + 0x01, 0xe8, 0x6f, 0xd3, 0x5b, 0xe8, 0x95, 0x3d, + 0xc3, 0x80, 0x3e, 0xa4, 0xdb, 0x01, 0x74, 0x04, + 0xe8, 0x33, 0xff, 0xc3, 0xe8, 0x69, 0x3d, 0xc3, + 0xe8, 0x84, 0xb8, 0xb9, 0x1a, 0x00, 0xb0, 0x06, + 0xb4, 0x09, 0xe8, 0x20, 0x47, 0xb0, 0x0a, 0xe8, + 0x24, 0x47, 0xb9, 0x18, 0x00, 0xb0, 0x0d, 0xe8, + 0x23, 0x47, 0xb9, 0x2e, 0x00, 0xb0, 0x25, 0xe8, + 0x22, 0x47, 0xe8, 0xf3, 0xdc, 0xc6, 0x07, 0x00, + 0x53, 0xe8, 0x34, 0x4b, 0xc6, 0x06, 0x35, 0x33, + 0x10, 0xc6, 0x06, 0x36, 0x33, 0x18, 0xb8, 0x3c, + 0x46, 0xa3, 0x37, 0x33, 0xb8, 0xda, 0x78, 0xa3, + 0x39, 0x33, 0xc6, 0x06, 0xdc, 0x64, 0x00, 0xb9, + 0x52, 0x02, 0xe8, 0x52, 0xb8, 0xc6, 0x06, 0xdc, + 0x64, 0x01, 0x5b, 0xc6, 0x07, 0x1d, 0xe8, 0x07, + 0x4b, 0xb9, 0x05, 0x00, 0xb0, 0x02, 0xb4, 0x0a, + 0xe8, 0xca, 0x46, 0xb9, 0x53, 0x02, 0xe8, 0xec, + 0xb7, 0xb0, 0x01, 0xe8, 0xa7, 0xb6, 0xb0, 0x24, + 0xe8, 0xf5, 0xc3, 0xbb, 0x90, 0x37, 0xe8, 0x0c, + 0x3d, 0xc3, 0xbb, 0x5e, 0x46, 0xe8, 0x05, 0x3d, + 0xc3, 0x80, 0x3e, 0xac, 0xdb, 0x01, 0x74, 0x07, + 0xbb, 0xd2, 0x3b, 0xe8, 0xf7, 0x3c, 0xc3, 0xb9, + 0x08, 0x00, 0xe8, 0xe6, 0x4d, 0xc7, 0x06, 0xf3, + 0xb4, 0x1a, 0x00, 0xb8, 0x3f, 0x01, 0xbb, 0xa9, + 0x00, 0xbf, 0x14, 0x01, 0xbe, 0xa9, 0x00, 0xb1, + 0x01, 0xb5, 0x04, 0xe8, 0x65, 0x48, 0xc3, 0xc7, + 0x06, 0xf3, 0xb4, 0x15, 0x00, 0xb8, 0xce, 0x00, + 0xbb, 0xc7, 0x00, 0xbf, 0xc4, 0x00, 0xbe, 0xc2, + 0x00, 0xb1, 0x13, 0xb5, 0x01, 0xe8, 0x4b, 0x48, + 0xc3, 0xbb, 0xf7, 0x46, 0xe8, 0xb6, 0x3c, 0xc3, + 0xbb, 0x3d, 0x47, 0xe8, 0xaf, 0x3c, 0xc3, 0xbb, + 0x3d, 0x47, 0xe8, 0xa8, 0x3c, 0xc3, 0xbb, 0x7b, + 0x47, 0xe8, 0xa1, 0x3c, 0xc3, 0xbb, 0x98, 0x47, + 0xe8, 0x9a, 0x3c, 0xc3, 0xb9, 0x06, 0x00, 0xe8, + 0x89, 0x4d, 0xc7, 0x06, 0xf3, 0xb4, 0x19, 0x00, + 0xb8, 0x97, 0x00, 0xbb, 0x9c, 0x00, 0xbf, 0xea, + 0x00, 0xbe, 0x98, 0x00, 0xb1, 0x01, 0xb5, 0x02, + 0xe8, 0x08, 0x48, 0xc3, 0xbb, 0x75, 0x33, 0xe8, + 0xe3, 0xad, 0xc3, 0xbb, 0xbf, 0x47, 0xe8, 0x6c, + 0x3c, 0xc3, 0xb9, 0x05, 0x00, 0xb0, 0x0a, 0xb4, + 0x0c, 0xe8, 0x09, 0x46, 0xe8, 0x60, 0xb7, 0xe8, + 0xee, 0xdb, 0xc6, 0x07, 0x00, 0xe8, 0x74, 0x4a, + 0xb9, 0x80, 0x02, 0xe8, 0x11, 0xb7, 0xb0, 0x32, + 0xe8, 0x2d, 0xc3, 0xb0, 0x06, 0xe8, 0xd5, 0xb5, + 0xc3, 0x80, 0x3e, 0x93, 0xdb, 0x01, 0x75, 0x07, + 0xbb, 0x08, 0x3e, 0xe8, 0x37, 0x3c, 0xc3, 0xc6, + 0x06, 0x93, 0xdb, 0x01, 0xbb, 0xc6, 0x3d, 0xe8, + 0x2b, 0x3c, 0xb9, 0x1e, 0x00, 0xb0, 0x1a, 0xb4, + 0x0a, 0xe8, 0xc9, 0x45, 0xb9, 0x1d, 0x00, 0xb0, + 0x31, 0xb4, 0x0f, 0xe8, 0xc8, 0x45, 0xe8, 0x16, + 0xb7, 0xb4, 0x01, 0xb0, 0x57, 0xe8, 0x9f, 0xba, + 0xbb, 0x47, 0x33, 0xc7, 0x07, 0xf5, 0x01, 0xb9, + 0xf4, 0x01, 0xe8, 0x9d, 0xb6, 0xe8, 0x90, 0xdb, + 0xb0, 0x01, 0x88, 0x07, 0xe8, 0xc2, 0x4a, 0xb0, + 0x0e, 0xe8, 0x75, 0xb5, 0xe8, 0xc5, 0xb6, 0xbb, + 0xf4, 0x3d, 0xe8, 0xe8, 0x3b, 0xc3, 0xbb, 0xc1, + 0x32, 0xe8, 0x51, 0xad, 0xc3, 0xe8, 0xf6, 0xff, + 0xc3, 0xbb, 0x5e, 0x32, 0xe8, 0x46, 0xad, 0xc3, + 0x80, 0x3e, 0x96, 0xdb, 0x01, 0x74, 0x07, 0xbb, + 0xb2, 0x3e, 0xe8, 0xc8, 0x3b, 0xc3, 0xb9, 0x38, + 0x00, 0xb0, 0x07, 0xb4, 0x09, 0xe8, 0x65, 0x45, + 0xb9, 0x05, 0x00, 0xb0, 0x0f, 0xe8, 0x66, 0x45, + 0xb9, 0x65, 0x02, 0xe8, 0x49, 0xb6, 0xe8, 0x3f, + 0xdb, 0xc6, 0x47, 0x03, 0x24, 0xe8, 0x80, 0x49, + 0xe8, 0x79, 0xb6, 0xb0, 0x27, 0xe8, 0x80, 0xc2, + 0xb0, 0x05, 0xe8, 0x28, 0xb5, 0xbb, 0x7c, 0x38, + 0xe8, 0x92, 0x3b, 0xc3, 0x80, 0x3e, 0x96, 0xdb, + 0x01, 0x74, 0x07, 0xbb, 0xb2, 0x3e, 0xe8, 0x84, + 0x3b, 0xc3, 0xe8, 0x82, 0xb6, 0x83, 0x06, 0xaf, + 0x64, 0x04, 0xe8, 0x0b, 0xdb, 0xc6, 0x47, 0x02, + 0x23, 0xe8, 0x90, 0x49, 0xb9, 0x3f, 0x00, 0xb0, + 0x08, 0xb4, 0x09, 0xe8, 0x0f, 0x45, 0xb9, 0x18, + 0x00, 0xb0, 0x0a, 0xe8, 0x10, 0x45, 0xb9, 0x64, + 0x02, 0xe8, 0x1b, 0xb6, 0xb0, 0x28, 0xe8, 0x37, + 0xc2, 0xb0, 0x06, 0xe8, 0xdf, 0xb4, 0xc3, 0x80, + 0x3e, 0x96, 0xdb, 0x01, 0x74, 0x07, 0xbb, 0xe7, + 0x47, 0xe8, 0x41, 0x3b, 0xc3, 0xe8, 0xbe, 0x3f, + 0xc3, 0xe8, 0x3b, 0xb6, 0xe8, 0xc9, 0xda, 0xc6, + 0x47, 0x04, 0x00, 0xe8, 0x4e, 0x49, 0xb9, 0x05, + 0x00, 0xb0, 0x0b, 0xb4, 0x05, 0xe8, 0xcd, 0x44, + 0xb9, 0x71, 0x02, 0xe8, 0xef, 0xb5, 0xb0, 0x2c, + 0xe8, 0xfd, 0xc1, 0xb0, 0x08, 0xe8, 0xa5, 0xb4, + 0xc3, 0xc7, 0x06, 0xf3, 0xb4, 0x14, 0x00, 0xb8, + 0x05, 0x00, 0xbb, 0x83, 0x00, 0xbf, 0x0e, 0x00, + 0xbe, 0xb9, 0x00, 0xb1, 0x0b, 0xb5, 0x03, 0xe8, + 0x89, 0x46, 0xc3, 0x80, 0x3e, 0x9d, 0xdb, 0x01, + 0x75, 0x07, 0xbb, 0x6a, 0x35, 0xe8, 0xed, 0x3a, + 0xc3, 0xc6, 0x06, 0x9d, 0xdb, 0x01, 0xb0, 0x11, + 0xe8, 0xc5, 0xc1, 0xb9, 0x31, 0x00, 0xb0, 0x03, + 0xb4, 0x05, 0xe8, 0x80, 0x44, 0xb9, 0x05, 0x00, + 0xb0, 0x1a, 0xe8, 0x81, 0x44, 0xb9, 0x24, 0x02, + 0xe8, 0x93, 0xb5, 0xbb, 0xb2, 0x35, 0xe8, 0xc4, + 0x3a, 0xc3, 0xe8, 0xc2, 0xb5, 0xb9, 0x12, 0x00, + 0xb0, 0x0a, 0xb4, 0x05, 0xe8, 0x5e, 0x44, 0xe8, + 0x46, 0xda, 0xc6, 0x47, 0x01, 0x00, 0xe8, 0xcb, + 0x48, 0xb9, 0x29, 0x02, 0xe8, 0x76, 0xb5, 0xb0, + 0x15, 0xe8, 0x84, 0xc1, 0xb0, 0x0b, 0xe8, 0x2c, + 0xb4, 0xe8, 0x92, 0xb9, 0xbb, 0x05, 0x36, 0xe8, + 0x93, 0x3a, 0xc3, 0x80, 0x3e, 0xa9, 0xdb, 0x01, + 0x74, 0x07, 0xbb, 0x08, 0x48, 0xe8, 0x85, 0x3a, + 0xc3, 0xb9, 0x7b, 0x02, 0xe8, 0x28, 0xb5, 0xe8, + 0x0e, 0xda, 0xc6, 0x47, 0x05, 0x00, 0xe8, 0x4f, + 0x48, 0xb9, 0x3f, 0x00, 0xb0, 0x0b, 0xb4, 0x06, + 0xe8, 0x12, 0x44, 0xb9, 0x0f, 0x00, 0xb0, 0x14, + 0xe8, 0x13, 0x44, 0xb9, 0x20, 0x00, 0xb0, 0x1f, + 0xb4, 0x09, 0xe8, 0x10, 0x44, 0xb9, 0x7c, 0x02, + 0xe8, 0xff, 0xb4, 0xff, 0x0e, 0xaf, 0x64, 0xc7, + 0x06, 0xb1, 0x64, 0x8b, 0x00, 0xc6, 0x06, 0xcc, + 0x64, 0x01, 0xc6, 0x06, 0xdc, 0x64, 0x00, 0xe8, + 0x12, 0xb5, 0xb0, 0x30, 0xe8, 0x19, 0xc1, 0xb0, + 0x2f, 0xe8, 0x14, 0xc1, 0xbb, 0x83, 0x3b, 0xe8, + 0x2b, 0x3a, 0xc6, 0x06, 0xa9, 0xdb, 0x02, 0xc6, + 0x06, 0xa8, 0xdb, 0x00, 0xc3, 0xbb, 0x28, 0x48, + 0xe8, 0x1a, 0x3a, 0xc3, 0xe8, 0x18, 0xb5, 0xe8, + 0xa6, 0xd9, 0xc6, 0x07, 0x00, 0xe8, 0x2c, 0x48, + 0xb9, 0x05, 0x00, 0xb0, 0x09, 0xb4, 0x0b, 0xe8, + 0xab, 0x43, 0xb9, 0xff, 0x01, 0xe8, 0xbf, 0xb4, + 0xb0, 0x01, 0xe8, 0xdb, 0xc0, 0xb0, 0x0e, 0xe8, + 0x83, 0xb3, 0xc3, 0xbb, 0x28, 0x48, 0xe8, 0xec, + 0x39, 0xc3, 0xbb, 0x60, 0x48, 0xe8, 0xe5, 0x39, + 0xc3, 0xbb, 0x3f, 0x5b, 0xe8, 0xde, 0x39, 0xc3, + 0xe8, 0x5b, 0x3e, 0xc3, 0xb9, 0x46, 0x00, 0xb0, + 0x04, 0xb4, 0x0c, 0xe8, 0x77, 0x43, 0xb9, 0xcc, + 0x03, 0xe8, 0x63, 0xb4, 0xe8, 0x04, 0x45, 0xc7, + 0x06, 0xf3, 0xb4, 0x1d, 0x00, 0xb8, 0xa0, 0x00, + 0xbb, 0xc7, 0x00, 0xbf, 0xa0, 0x00, 0xbe, 0xbc, + 0x00, 0xb1, 0x13, 0xb5, 0x01, 0xe8, 0x3b, 0x45, + 0xc3, 0xbb, 0x7e, 0x4a, 0xe8, 0xa6, 0x39, 0xb0, + 0x04, 0xe8, 0x31, 0xb3, 0xc3, 0xb9, 0x59, 0x00, + 0xb0, 0x05, 0xb4, 0x0b, 0xe8, 0x3e, 0x43, 0xb9, + 0xc9, 0x03, 0xe8, 0x3a, 0xb4, 0xe8, 0xcb, 0x44, + 0xc7, 0x06, 0xf3, 0xb4, 0x21, 0x00, 0xb8, 0x3f, + 0x01, 0xbb, 0xb5, 0x00, 0xbf, 0x2d, 0x01, 0xbe, + 0xb5, 0x00, 0xb1, 0x01, 0xb5, 0x04, 0xe8, 0x02, + 0x45, 0xc3, 0xb9, 0x58, 0x00, 0xb0, 0x04, 0xb4, + 0x02, 0xe8, 0x11, 0x43, 0xb9, 0xca, 0x03, 0xe8, + 0xfd, 0xb3, 0xe8, 0x9e, 0x44, 0xc7, 0x06, 0xf3, + 0xb4, 0x23, 0x00, 0xb8, 0xa0, 0x00, 0xbb, 0xc7, + 0x00, 0xbf, 0xa0, 0x00, 0xbe, 0xbb, 0x00, 0xb1, + 0x13, 0xb5, 0x01, 0xe8, 0xd5, 0x44, 0xc3, 0xbb, + 0x51, 0x5b, 0xe8, 0x40, 0x39, 0xc3, 0xbb, 0x0f, + 0x57, 0xe8, 0x39, 0x39, 0xc3, 0xbb, 0x46, 0x67, + 0xe8, 0xb7, 0xd8, 0x83, 0xc3, 0x03, 0xff, 0x37, + 0x53, 0xc7, 0x07, 0x3f, 0x01, 0xbe, 0x99, 0x00, + 0xbf, 0xa3, 0x00, 0xc6, 0x06, 0xc3, 0x64, 0x04, + 0xe8, 0xf0, 0xce, 0xb9, 0xcd, 0x03, 0xe8, 0xbe, + 0xb3, 0xe8, 0x4f, 0x44, 0x5b, 0x8f, 0x07, 0x80, + 0x3e, 0xc1, 0xdb, 0x00, 0x75, 0x0a, 0xb8, 0x06, + 0x00, 0xe8, 0x0f, 0x4a, 0x40, 0xa2, 0xc1, 0xdb, + 0xc7, 0x06, 0xf3, 0xb4, 0x1e, 0x00, 0xb8, 0x12, + 0x00, 0xbb, 0x9f, 0x00, 0xbf, 0x31, 0x00, 0xbe, + 0xb4, 0x00, 0xb1, 0x01, 0xb5, 0x02, 0xe8, 0x72, + 0x44, 0xc3, 0xc7, 0x06, 0xf3, 0xb4, 0x1f, 0x00, + 0xb8, 0x00, 0x00, 0xbb, 0xbc, 0x00, 0xbf, 0x28, + 0x00, 0xbe, 0xbc, 0x00, 0xb1, 0x01, 0xb5, 0x02, + 0xe8, 0x58, 0x44, 0xc3, 0xc7, 0x06, 0xf3, 0xb4, + 0x1c, 0x00, 0xb8, 0xd0, 0x00, 0xbb, 0x99, 0x00, + 0xbf, 0xaa, 0x00, 0xbe, 0x99, 0x00, 0xb1, 0x01, + 0xb5, 0x04, 0xe8, 0x3e, 0x44, 0xc3, 0xc7, 0x06, + 0xaf, 0x64, 0x95, 0x00, 0xc7, 0x06, 0xb1, 0x64, + 0xa3, 0x00, 0xc6, 0x06, 0xcc, 0x64, 0x01, 0xc6, + 0x06, 0xdc, 0x64, 0x00, 0xc6, 0x06, 0xcb, 0x64, + 0x00, 0xe8, 0xb5, 0xd6, 0xc7, 0x06, 0xf3, 0xb4, + 0x1d, 0x00, 0xc6, 0x06, 0xdc, 0x1c, 0x01, 0xe8, + 0x55, 0x44, 0xbb, 0x46, 0x67, 0xe8, 0x02, 0xd8, + 0x83, 0xc3, 0x03, 0xff, 0x37, 0x53, 0xc7, 0x07, + 0x3f, 0x01, 0xb9, 0xce, 0x03, 0xc6, 0x06, 0xdc, + 0x1c, 0x01, 0xe8, 0x23, 0xb3, 0xbe, 0xa0, 0x00, + 0xbf, 0xbc, 0x00, 0xe8, 0x35, 0xce, 0x5b, 0x8f, + 0x07, 0xc3, 0xe8, 0xd9, 0x3c, 0xc3, 0xbb, 0xab, + 0x5b, 0xe8, 0x51, 0x38, 0xc3, 0xe8, 0x41, 0x00, + 0xb9, 0x20, 0x00, 0xb0, 0x0c, 0xb4, 0x09, 0xe8, + 0xeb, 0x41, 0xb9, 0xb6, 0x02, 0xe8, 0xf8, 0xb2, + 0xb9, 0x0f, 0x00, 0xb0, 0x08, 0xb4, 0x09, 0xe8, + 0xdb, 0x41, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0xb5, + 0x02, 0xb0, 0x01, 0xe8, 0x3b, 0xb2, 0xe8, 0xb7, + 0xd7, 0xc6, 0x47, 0x06, 0x00, 0xe8, 0x3c, 0x46, + 0xbb, 0xc7, 0x4c, 0xe8, 0x17, 0x38, 0xb0, 0x36, + 0xe8, 0xf5, 0xbe, 0xb0, 0x04, 0xe8, 0x9d, 0xb1, + 0xc3, 0xbe, 0xd3, 0x00, 0xbf, 0x97, 0x00, 0x81, + 0x3e, 0xaf, 0x64, 0xd0, 0x00, 0x75, 0x1a, 0x81, + 0x3e, 0xb1, 0x64, 0x97, 0x00, 0x75, 0x12, 0xc6, + 0x06, 0xc3, 0x64, 0x02, 0x57, 0x56, 0xe8, 0xc2, + 0xcd, 0xb8, 0x09, 0x00, 0xe8, 0xcb, 0xb6, 0x5e, + 0x5f, 0xc6, 0x06, 0xc3, 0x64, 0x01, 0xe8, 0xb2, + 0xcd, 0xc3, 0x80, 0x3e, 0xc2, 0xdb, 0x01, 0x75, + 0x07, 0xbb, 0xa0, 0x4c, 0xe8, 0xce, 0x37, 0xc3, + 0xb9, 0x31, 0x00, 0xb0, 0x05, 0xb4, 0x09, 0xe8, + 0x6b, 0x41, 0xb0, 0x11, 0xe8, 0x6f, 0x41, 0xb9, + 0xb3, 0x02, 0xe8, 0x73, 0xb2, 0xe8, 0x46, 0x00, + 0x73, 0x31, 0xb9, 0x0f, 0x00, 0xb0, 0x08, 0xb4, + 0x09, 0xe8, 0x51, 0x41, 0xbb, 0x47, 0x33, 0xc7, + 0x07, 0xb4, 0x02, 0xb0, 0x01, 0xe8, 0xb1, 0xb1, + 0xe8, 0x2d, 0xd7, 0xc6, 0x47, 0x06, 0x3b, 0xe8, + 0xb2, 0x45, 0xb0, 0x04, 0xe8, 0x12, 0xb1, 0xbb, + 0x84, 0x4c, 0xe8, 0x88, 0x37, 0xc6, 0x06, 0xc2, + 0xdb, 0x01, 0xc3, 0x80, 0x3e, 0xc0, 0xdb, 0x01, + 0x74, 0x0b, 0xc6, 0x06, 0xc0, 0xdb, 0x01, 0xbb, + 0x61, 0x4c, 0xe8, 0x70, 0x37, 0xc3, 0xa0, 0xc1, + 0xdb, 0x98, 0x48, 0xbb, 0xb7, 0xdb, 0x53, 0x03, + 0xd8, 0x80, 0x3f, 0x01, 0x5b, 0x75, 0x18, 0x8b, + 0x07, 0x8b, 0x4f, 0x02, 0x8b, 0x57, 0x04, 0x02, + 0xc4, 0x02, 0xc1, 0x02, 0xc5, 0x02, 0xc2, 0x02, + 0xc6, 0x3c, 0x01, 0x75, 0x02, 0xf9, 0xc3, 0xf8, + 0xc3, 0xbb, 0xe7, 0x5b, 0xe8, 0x3e, 0x37, 0xc3, + 0xb0, 0x37, 0xe8, 0x4f, 0xbe, 0x73, 0x07, 0xbb, + 0xd9, 0x4c, 0xe8, 0x30, 0x37, 0xc3, 0x80, 0x3e, + 0xc3, 0xdb, 0x01, 0x74, 0x11, 0xc6, 0x06, 0xc3, + 0xdb, 0x01, 0xb9, 0xb7, 0x02, 0xe8, 0xe6, 0xb1, + 0xbb, 0x6a, 0x38, 0xe8, 0x87, 0xa8, 0xb9, 0x05, + 0x00, 0xb0, 0x0b, 0xb4, 0x0a, 0xe8, 0xb5, 0x40, + 0xb9, 0xb8, 0x02, 0xe8, 0xd0, 0xb1, 0xb0, 0x37, + 0xe8, 0xe5, 0xbd, 0xc3, 0xbb, 0x0b, 0x5c, 0xe8, + 0xfb, 0x36, 0xc3, 0xbb, 0x26, 0x5c, 0xe8, 0xf4, + 0x36, 0xc3, 0x80, 0x3e, 0xb7, 0xdb, 0x01, 0x74, + 0x2d, 0x80, 0x3e, 0xb8, 0xdb, 0x01, 0x75, 0x04, + 0xe8, 0x13, 0x02, 0xc3, 0xb9, 0x42, 0x00, 0xb0, + 0x04, 0xb4, 0x07, 0xe8, 0x7f, 0x40, 0xb9, 0xa5, + 0x02, 0xe8, 0x6b, 0xb1, 0xe8, 0x61, 0xd6, 0xc6, + 0x07, 0x35, 0xe8, 0xa3, 0x44, 0xe8, 0x9c, 0xb1, + 0xc6, 0x06, 0xb7, 0xdb, 0x01, 0xc3, 0xe8, 0xbe, + 0xb1, 0xe8, 0x4c, 0xd6, 0xc6, 0x07, 0x00, 0xe8, + 0xd2, 0x44, 0xb9, 0x43, 0x00, 0xb0, 0x04, 0xb4, + 0x07, 0xe8, 0x51, 0x40, 0xb9, 0xa6, 0x02, 0xe8, + 0x65, 0xb1, 0xc6, 0x06, 0xb7, 0xdb, 0x00, 0xc3, + 0x80, 0x3e, 0xb8, 0xdb, 0x01, 0x74, 0x39, 0x80, + 0x3e, 0xb7, 0xdb, 0x01, 0x75, 0x04, 0xe8, 0xbd, + 0x01, 0xc3, 0x80, 0x3e, 0xb9, 0xdb, 0x01, 0x75, + 0x04, 0xe8, 0xb2, 0x01, 0xc3, 0xb9, 0x42, 0x00, + 0xb0, 0x05, 0xb4, 0x07, 0xe8, 0x1e, 0x40, 0xb9, + 0xa7, 0x02, 0xe8, 0x0a, 0xb1, 0xe8, 0x00, 0xd6, + 0xc6, 0x47, 0x01, 0x36, 0xe8, 0x41, 0x44, 0xe8, + 0x3a, 0xb1, 0xc6, 0x06, 0xb8, 0xdb, 0x01, 0xc3, + 0xe8, 0x5c, 0xb1, 0xe8, 0xea, 0xd5, 0xc6, 0x47, + 0x01, 0x00, 0xe8, 0x6f, 0x44, 0xb9, 0x43, 0x00, + 0xb0, 0x04, 0xb4, 0x07, 0xe8, 0xee, 0x3f, 0xb9, + 0xa8, 0x02, 0xe8, 0x02, 0xb1, 0xc6, 0x06, 0xb8, + 0xdb, 0x00, 0xc3, 0x80, 0x3e, 0xb9, 0xdb, 0x01, + 0x74, 0x2e, 0x80, 0x3e, 0xb8, 0xdb, 0x01, 0x75, + 0x04, 0xe8, 0x5a, 0x01, 0xc3, 0xb9, 0x43, 0x00, + 0xb0, 0x05, 0xb4, 0x07, 0xe8, 0xc6, 0x3f, 0xb9, + 0xa9, 0x02, 0xe8, 0xb2, 0xb0, 0xe8, 0xa8, 0xd5, + 0xc6, 0x47, 0x02, 0x37, 0xe8, 0xe9, 0x43, 0xe8, + 0xe2, 0xb0, 0xc6, 0x06, 0xb9, 0xdb, 0x01, 0xc3, + 0xe8, 0x04, 0xb1, 0xe8, 0x92, 0xd5, 0xc6, 0x47, + 0x02, 0x00, 0xe8, 0x17, 0x44, 0xb9, 0x43, 0x00, + 0xb0, 0x05, 0xb4, 0x07, 0xe8, 0x96, 0x3f, 0xb9, + 0xaa, 0x02, 0xe8, 0xaa, 0xb0, 0xc6, 0x06, 0xb9, + 0xdb, 0x00, 0xc3, 0x80, 0x3e, 0xba, 0xdb, 0x01, + 0x74, 0x2e, 0x80, 0x3e, 0xbb, 0xdb, 0x01, 0x75, + 0x04, 0xe8, 0x02, 0x01, 0xc3, 0xb9, 0x42, 0x00, + 0xb0, 0x04, 0xb4, 0x07, 0xe8, 0x6e, 0x3f, 0xb9, + 0xab, 0x02, 0xe8, 0x5a, 0xb0, 0xe8, 0x50, 0xd5, + 0xc6, 0x47, 0x03, 0x38, 0xe8, 0x91, 0x43, 0xe8, + 0x8a, 0xb0, 0xc6, 0x06, 0xba, 0xdb, 0x01, 0xc3, + 0xe8, 0xac, 0xb0, 0xe8, 0x3a, 0xd5, 0xc6, 0x47, + 0x03, 0x00, 0xe8, 0xbf, 0x43, 0xb9, 0x43, 0x00, + 0xb0, 0x04, 0xb4, 0x07, 0xe8, 0x3e, 0x3f, 0xb9, + 0xac, 0x02, 0xe8, 0x52, 0xb0, 0xc6, 0x06, 0xba, + 0xdb, 0x00, 0xc3, 0x80, 0x3e, 0xbb, 0xdb, 0x01, + 0x74, 0x39, 0x80, 0x3e, 0xba, 0xdb, 0x01, 0x75, + 0x04, 0xe8, 0xaa, 0x00, 0xc3, 0x80, 0x3e, 0xbc, + 0xdb, 0x01, 0x75, 0x04, 0xe8, 0x9f, 0x00, 0xc3, + 0xb9, 0x42, 0x00, 0xb0, 0x05, 0xb4, 0x07, 0xe8, + 0x0b, 0x3f, 0xb9, 0xad, 0x02, 0xe8, 0xf7, 0xaf, + 0xe8, 0xed, 0xd4, 0xc6, 0x47, 0x04, 0x39, 0xe8, + 0x2e, 0x43, 0xe8, 0x27, 0xb0, 0xc6, 0x06, 0xbb, + 0xdb, 0x01, 0xc3, 0xe8, 0x49, 0xb0, 0xe8, 0xd7, + 0xd4, 0xc6, 0x47, 0x04, 0x00, 0xe8, 0x5c, 0x43, + 0xb9, 0x43, 0x00, 0xb0, 0x04, 0xb4, 0x07, 0xe8, + 0xdb, 0x3e, 0xb9, 0xae, 0x02, 0xe8, 0xef, 0xaf, + 0xc6, 0x06, 0xbb, 0xdb, 0x00, 0xc3, 0x80, 0x3e, + 0xbc, 0xdb, 0x01, 0x74, 0x2e, 0x80, 0x3e, 0xbb, + 0xdb, 0x01, 0x75, 0x04, 0xe8, 0x47, 0x00, 0xc3, + 0xb9, 0x42, 0x00, 0xb0, 0x06, 0xb4, 0x07, 0xe8, + 0xb3, 0x3e, 0xb9, 0xaf, 0x02, 0xe8, 0x9f, 0xaf, + 0xe8, 0x95, 0xd4, 0xc6, 0x47, 0x05, 0x3a, 0xe8, + 0xd6, 0x42, 0xe8, 0xcf, 0xaf, 0xc6, 0x06, 0xbc, + 0xdb, 0x01, 0xc3, 0xe8, 0xf1, 0xaf, 0xe8, 0x7f, + 0xd4, 0xc6, 0x47, 0x05, 0x00, 0xe8, 0x04, 0x43, + 0xb9, 0x43, 0x00, 0xb0, 0x05, 0xb4, 0x07, 0xe8, + 0x83, 0x3e, 0xb9, 0xb0, 0x02, 0xe8, 0x97, 0xaf, + 0xc6, 0x06, 0xbc, 0xdb, 0x00, 0xc3, 0x80, 0x3e, + 0xbd, 0xdb, 0x01, 0x74, 0x12, 0xbb, 0xcd, 0x4a, + 0xe8, 0xc2, 0x34, 0xbb, 0x0d, 0x4b, 0xe8, 0xbc, + 0x34, 0xc6, 0x06, 0xbd, 0xdb, 0x01, 0xc3, 0xbb, + 0x39, 0x4b, 0xe8, 0xb0, 0x34, 0xc3, 0xbb, 0x46, + 0x5c, 0xe8, 0xa9, 0x34, 0xc3, 0xb9, 0x50, 0x00, + 0xb0, 0x04, 0xb4, 0x0a, 0xe8, 0x46, 0x3e, 0xb9, + 0xcb, 0x03, 0xe8, 0x32, 0xaf, 0xe8, 0xd3, 0x3f, + 0xc7, 0x06, 0xf3, 0xb4, 0x20, 0x00, 0xb8, 0x8b, + 0x00, 0xbb, 0xc7, 0x00, 0xbf, 0x8b, 0x00, 0xbe, + 0xbc, 0x00, 0xb1, 0x13, 0xb5, 0x01, 0xe8, 0x0a, + 0x40, 0xc3, 0xbb, 0x65, 0x5b, 0xe8, 0x75, 0x34, + 0xc3, 0x80, 0x3e, 0xd9, 0xdb, 0x01, 0x75, 0x07, + 0xbb, 0x26, 0x53, 0xe8, 0x67, 0x34, 0xc3, 0xb9, + 0x58, 0x00, 0xb0, 0x04, 0xb4, 0x0e, 0xe8, 0x04, + 0x3e, 0xb9, 0x28, 0x03, 0xe8, 0xf0, 0xae, 0xe8, + 0x91, 0x3f, 0xc7, 0x06, 0xf3, 0xb4, 0x24, 0x00, + 0xb8, 0x29, 0x00, 0xbb, 0xc3, 0x00, 0xbf, 0x32, + 0x00, 0xbe, 0xc3, 0x00, 0xb1, 0x01, 0xb5, 0x02, + 0xe8, 0xc8, 0x3f, 0xc3, 0xe8, 0xb7, 0x38, 0xc3, + 0xe8, 0xb3, 0x38, 0xc3, 0xbb, 0x51, 0x5b, 0xe8, + 0x2b, 0x34, 0xc3, 0xc7, 0x06, 0xf3, 0xb4, 0x1d, + 0x00, 0xb8, 0x3f, 0x01, 0xbb, 0xbc, 0x00, 0xbf, + 0x18, 0x01, 0xbe, 0xbc, 0x00, 0xb1, 0x01, 0xb5, + 0x04, 0xe8, 0x9f, 0x3f, 0xc3, 0xb9, 0x59, 0x00, + 0xb0, 0x06, 0xb4, 0x0c, 0xe8, 0xae, 0x3d, 0xb9, + 0x26, 0x03, 0x80, 0x3e, 0xef, 0xdb, 0x01, 0x75, + 0x03, 0xb9, 0xd9, 0x03, 0xe8, 0x90, 0xae, 0xe8, + 0x31, 0x3f, 0xc7, 0x06, 0xf3, 0xb4, 0x22, 0x00, + 0xb8, 0x28, 0x00, 0xbb, 0x85, 0x00, 0xbf, 0x34, + 0x00, 0xbe, 0x85, 0x00, 0xb1, 0x01, 0xb5, 0x02, + 0xe8, 0x68, 0x3f, 0xc3, 0xbb, 0x80, 0x5b, 0xe8, + 0xd3, 0x33, 0xc3, 0xe8, 0xbb, 0xac, 0xbb, 0x2e, + 0xdb, 0xe8, 0x21, 0xa5, 0xe8, 0x36, 0xa5, 0xb0, + 0x01, 0xbe, 0x94, 0xaa, 0xe8, 0x5a, 0xad, 0xc6, + 0x06, 0xd1, 0xdb, 0x01, 0xc3, 0xe8, 0xb7, 0xae, + 0xe8, 0x45, 0xd3, 0xc6, 0x07, 0x47, 0xe8, 0xcb, + 0x41, 0xb9, 0x20, 0x00, 0xb0, 0x05, 0xb4, 0x04, + 0xe8, 0x4a, 0x3d, 0xb9, 0xdc, 0x02, 0xe8, 0x5e, + 0xae, 0xb0, 0x02, 0xe8, 0x27, 0xad, 0xb0, 0x48, + 0xe8, 0x75, 0xba, 0xc3, 0xb9, 0xf2, 0x02, 0xe8, + 0x25, 0xae, 0xe8, 0xc6, 0x3e, 0xbe, 0xde, 0x76, + 0xbb, 0x7b, 0x51, 0x06, 0x53, 0x56, 0xb8, 0x00, + 0xa0, 0x8e, 0xc0, 0xe8, 0x67, 0x2f, 0xb8, 0x00, + 0xa0, 0xb9, 0x00, 0x7d, 0xe8, 0x19, 0x40, 0x5e, + 0x5b, 0xe8, 0x69, 0x37, 0xe8, 0x65, 0x2f, 0xb8, + 0x0e, 0x01, 0xe8, 0x67, 0xb2, 0xe8, 0x4d, 0x2f, + 0xa1, 0xb3, 0x32, 0x8e, 0xc0, 0xbf, 0x00, 0xfa, + 0xb9, 0x80, 0x01, 0x33, 0xc0, 0xfc, 0xf3, 0xab, + 0x07, 0xb9, 0x03, 0x00, 0xe8, 0x3c, 0x44, 0xc7, + 0x06, 0xf3, 0xb4, 0x0b, 0x00, 0xe8, 0xf4, 0x3f, + 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x02, 0xee, 0x02, + 0xb0, 0x02, 0xe8, 0x3d, 0xad, 0xc6, 0x06, 0x45, + 0x33, 0xe5, 0xc6, 0x06, 0x46, 0x33, 0xd9, 0xb0, + 0x02, 0xb4, 0x01, 0xbe, 0xef, 0x02, 0xbf, 0x11, + 0x02, 0xbb, 0x50, 0x4f, 0xe8, 0x2f, 0xa7, 0xbb, + 0x47, 0x33, 0xc7, 0x07, 0xf0, 0x02, 0xc7, 0x47, + 0x02, 0xf1, 0x02, 0xb0, 0x01, 0xe8, 0x12, 0xad, + 0xc6, 0x06, 0x45, 0x33, 0xd9, 0xc6, 0x06, 0x46, + 0x33, 0xe5, 0xb0, 0x01, 0xb4, 0x02, 0xbe, 0x11, + 0x02, 0xbf, 0xef, 0x02, 0xbb, 0x68, 0x51, 0xe8, + 0x04, 0xa7, 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x02, + 0xdd, 0x02, 0xc7, 0x47, 0x04, 0xde, 0x02, 0xc7, + 0x06, 0xf3, 0xb4, 0x1e, 0x00, 0xe8, 0x8c, 0x3f, + 0xc6, 0x06, 0x45, 0x33, 0xe5, 0xc6, 0x06, 0x46, + 0x33, 0xd0, 0xb0, 0x02, 0xb4, 0x03, 0xbe, 0xdd, + 0x02, 0xbf, 0xde, 0x02, 0xbb, 0x9e, 0x44, 0xe8, + 0xd4, 0xa6, 0xb9, 0x4b, 0x00, 0xb0, 0x0d, 0xb4, + 0x04, 0xe8, 0x59, 0x3c, 0xb9, 0x20, 0x00, 0xb0, + 0x16, 0xe8, 0x5a, 0x3c, 0xbb, 0x47, 0x33, 0xc7, + 0x47, 0x02, 0xdf, 0x02, 0xc7, 0x47, 0x04, 0xe0, + 0x02, 0xb0, 0x02, 0xe8, 0xa4, 0xac, 0xc6, 0x06, + 0x46, 0x33, 0xe5, 0xc6, 0x06, 0x45, 0x33, 0xd0, + 0xb0, 0x03, 0xb4, 0x02, 0xbe, 0xe1, 0x02, 0xbf, + 0xe2, 0x02, 0xbb, 0xcf, 0x46, 0xe8, 0x96, 0xa6, + 0xb9, 0x20, 0x00, 0xb0, 0x01, 0xb4, 0x04, 0xe8, + 0x1b, 0x3c, 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x02, + 0xe3, 0x02, 0xc7, 0x47, 0x04, 0xe4, 0x02, 0xb0, + 0x02, 0xe8, 0x6e, 0xac, 0xc6, 0x06, 0x45, 0x33, + 0xe5, 0xc6, 0x06, 0x46, 0x33, 0xd0, 0xb0, 0x02, + 0xb4, 0x03, 0xbe, 0xdd, 0x02, 0xbf, 0xde, 0x02, + 0xbb, 0x72, 0x47, 0xe8, 0x60, 0xa6, 0xbb, 0x47, + 0x33, 0xc7, 0x47, 0x02, 0xe6, 0x02, 0xc7, 0x47, + 0x04, 0xe5, 0x02, 0xb0, 0x02, 0xe8, 0x42, 0xac, + 0xc6, 0x06, 0x46, 0x33, 0xe5, 0xc6, 0x06, 0x45, + 0x33, 0xd0, 0xb0, 0x03, 0xb4, 0x02, 0xbe, 0xe7, + 0x02, 0xbf, 0xdd, 0x02, 0xbb, 0x1c, 0x48, 0xe8, + 0x34, 0xa6, 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x02, + 0xe8, 0x02, 0xc7, 0x47, 0x04, 0xe9, 0x02, 0xb0, + 0x02, 0xe8, 0x16, 0xac, 0xb0, 0x03, 0xb4, 0x02, + 0xbe, 0xde, 0x02, 0xbf, 0xdd, 0x02, 0xbb, 0x73, + 0x48, 0xe8, 0x12, 0xa6, 0xbb, 0x47, 0x33, 0xc7, + 0x47, 0x02, 0xea, 0x02, 0xc7, 0x47, 0x04, 0xeb, + 0x02, 0xb0, 0x02, 0xe8, 0xf4, 0xab, 0xe8, 0x2d, + 0x3c, 0xb0, 0x03, 0xbe, 0xde, 0x02, 0xbb, 0xa5, + 0x4d, 0xe8, 0x7b, 0xa7, 0xb0, 0x03, 0xbe, 0xec, + 0x02, 0xbb, 0xb9, 0x4e, 0xe8, 0x70, 0xa7, 0xb0, + 0x03, 0xbe, 0xed, 0x02, 0xbb, 0x15, 0x4f, 0xe8, + 0x65, 0xa7, 0xb0, 0x03, 0xbe, 0xec, 0x02, 0xbb, + 0x2f, 0x4f, 0xe8, 0x5a, 0xa7, 0xb9, 0x0a, 0x00, + 0xe8, 0xa8, 0x42, 0xc7, 0x06, 0xf3, 0xb4, 0x20, + 0x00, 0xe8, 0x60, 0x3e, 0xb9, 0x1a, 0x00, 0xb0, + 0x0a, 0xb4, 0x04, 0xe8, 0x47, 0x3b, 0xb9, 0xf3, + 0x02, 0xe8, 0x5b, 0xac, 0x8b, 0x36, 0xaf, 0x64, + 0x8b, 0x3e, 0xb1, 0x64, 0xc6, 0x06, 0xc3, 0x64, + 0x03, 0xe8, 0x5f, 0xc7, 0xbb, 0xbf, 0x51, 0xe8, + 0xf3, 0xa2, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0xfb, + 0x02, 0xc7, 0x47, 0x02, 0xfc, 0x02, 0xc7, 0x06, + 0xf3, 0xb4, 0x1f, 0x00, 0xe8, 0x25, 0x3e, 0xc6, + 0x06, 0x45, 0x33, 0xd9, 0xc6, 0x06, 0x46, 0x33, + 0xd0, 0xb0, 0x01, 0xb4, 0x02, 0xbe, 0xfb, 0x02, + 0xbf, 0xfc, 0x02, 0xbb, 0x9f, 0x53, 0xe8, 0x6d, + 0xa5, 0xc7, 0x06, 0xf3, 0xb4, 0x20, 0x00, 0xe8, + 0x1d, 0x3d, 0xbb, 0xc3, 0x52, 0xe8, 0xb5, 0xa2, + 0xb0, 0x03, 0xe8, 0xd0, 0xaa, 0xb0, 0x07, 0xe8, + 0xbf, 0xaa, 0xc6, 0x06, 0xd5, 0xdb, 0x01, 0xc3, + 0x80, 0x3e, 0xd5, 0xdb, 0x01, 0x75, 0x07, 0xbb, + 0xa7, 0x51, 0xe8, 0x28, 0x31, 0xc3, 0xe8, 0xa5, + 0x35, 0xc3, 0x80, 0x3e, 0xd5, 0xdb, 0x01, 0x75, + 0x07, 0xbb, 0xa7, 0x51, 0xe8, 0x16, 0x31, 0xc3, + 0xb9, 0xd1, 0x03, 0xe8, 0xca, 0xab, 0xbb, 0x11, + 0x55, 0xe8, 0x09, 0x31, 0xc3, 0x80, 0x3e, 0xd5, + 0xdb, 0x01, 0x75, 0x07, 0xbb, 0xbb, 0x51, 0xe8, + 0xfb, 0x30, 0xc3, 0xc7, 0x06, 0xf3, 0xb4, 0x1f, + 0x00, 0xb8, 0x8b, 0x00, 0xbb, 0xac, 0x00, 0xbf, + 0x8b, 0x00, 0xbe, 0xb5, 0x00, 0xb1, 0x0b, 0xb5, + 0x03, 0xe8, 0x6f, 0x3c, 0xc3, 0xe8, 0xdf, 0xab, + 0x8b, 0x36, 0xaf, 0x64, 0x8b, 0x3e, 0xb1, 0x64, + 0xc6, 0x06, 0xc3, 0x64, 0x03, 0xe8, 0xa3, 0xc6, + 0xb9, 0xf4, 0x02, 0xe8, 0x64, 0xab, 0xe8, 0x02, + 0x3c, 0xc6, 0x06, 0xdc, 0x1c, 0x01, 0xbb, 0x47, + 0x33, 0xc7, 0x47, 0x02, 0xf6, 0x02, 0xb0, 0x02, + 0xe8, 0xbf, 0xaa, 0xc6, 0x06, 0x45, 0x33, 0xd0, + 0xb0, 0x02, 0xbe, 0xf7, 0x02, 0xbb, 0xe6, 0x52, + 0xe8, 0x44, 0xa6, 0xb9, 0x28, 0x00, 0xb0, 0x05, + 0xb4, 0x04, 0xe8, 0x40, 0x3a, 0xb9, 0x34, 0x00, + 0xb0, 0x0d, 0xe8, 0x41, 0x3a, 0xb0, 0x11, 0xe8, + 0x43, 0x3a, 0xb0, 0x15, 0xe8, 0x45, 0x3a, 0xbb, + 0x47, 0x33, 0xc7, 0x47, 0x02, 0xf8, 0x02, 0xb0, + 0x02, 0xe8, 0x86, 0xaa, 0xe8, 0x0d, 0x3b, 0xe8, + 0x06, 0xd0, 0xc6, 0x47, 0x01, 0x48, 0xc6, 0x47, + 0x02, 0x49, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0xfd, + 0x02, 0xc7, 0x06, 0xf3, 0xb4, 0x1f, 0x00, 0xe8, + 0x12, 0x3d, 0xb9, 0x3a, 0x00, 0xb0, 0x05, 0xb4, + 0x07, 0xe8, 0xf9, 0x39, 0xb0, 0x08, 0xe8, 0xfd, + 0x39, 0xb0, 0x0a, 0xe8, 0xff, 0x39, 0xb0, 0x0c, + 0xe8, 0x01, 0x3a, 0xb0, 0x0e, 0xe8, 0x03, 0x3a, + 0xb0, 0x01, 0xe8, 0x45, 0xaa, 0xc6, 0x06, 0x45, + 0x33, 0xd9, 0xb0, 0x01, 0xbe, 0xfe, 0x02, 0xbb, + 0x43, 0x54, 0xe8, 0xca, 0xa5, 0xbb, 0x47, 0x33, + 0xc7, 0x47, 0x02, 0xf9, 0x02, 0xc7, 0x06, 0xf3, + 0xb4, 0x20, 0x00, 0xe8, 0xce, 0x3c, 0xc6, 0x06, + 0x45, 0x33, 0xd0, 0xb0, 0x02, 0xbe, 0xf9, 0x02, + 0xbb, 0x58, 0x53, 0xe8, 0xa9, 0xa5, 0xbb, 0x47, + 0x33, 0xc7, 0x47, 0x02, 0xfa, 0x02, 0xb0, 0x02, + 0xe8, 0x07, 0xaa, 0xe8, 0x40, 0x3a, 0xe8, 0x87, + 0xcf, 0xc6, 0x47, 0x02, 0x00, 0xe8, 0xa5, 0x3d, + 0xb9, 0xf5, 0x02, 0xe8, 0x84, 0xaa, 0xc6, 0x06, + 0xcd, 0x64, 0x01, 0xc6, 0x06, 0xcc, 0x64, 0x01, + 0xc6, 0x06, 0xcb, 0x64, 0x01, 0xe8, 0xac, 0xaa, + 0xbb, 0xe7, 0x51, 0xe8, 0xcf, 0x2f, 0xb0, 0x08, + 0xe8, 0x4e, 0xa9, 0xb0, 0x07, 0xe8, 0x55, 0xa9, + 0xc6, 0x06, 0xd5, 0xdb, 0x00, 0xc3, 0xb9, 0x20, + 0x00, 0xb0, 0x05, 0xb4, 0x08, 0xe8, 0x5d, 0x39, + 0xb9, 0xff, 0x02, 0xe8, 0x6a, 0xaa, 0xe8, 0x3f, + 0xcf, 0xc6, 0x47, 0x01, 0x00, 0xe8, 0xc4, 0x3d, + 0xb0, 0x49, 0xe8, 0x83, 0xb6, 0xb0, 0x08, 0xe8, + 0x2b, 0xa9, 0xc3, 0xe8, 0x60, 0xa8, 0xbb, 0x24, + 0xdb, 0xe8, 0xe9, 0xa0, 0xe8, 0xfe, 0xa0, 0xc3, + 0xe8, 0x15, 0x00, 0xbe, 0x51, 0x00, 0xbf, 0xa0, + 0x00, 0xc6, 0x06, 0xc3, 0x64, 0x04, 0xe8, 0x52, + 0xc5, 0xbb, 0xac, 0x5c, 0xe8, 0x76, 0x2f, 0xc3, + 0x80, 0x3e, 0xcc, 0xdb, 0x01, 0x74, 0x07, 0xbb, + 0xce, 0x4e, 0xe8, 0x68, 0x2f, 0x58, 0xc3, 0xe8, + 0xee, 0xff, 0xbb, 0x46, 0x50, 0xe8, 0x5d, 0x2f, + 0xc3, 0xb0, 0x44, 0xe8, 0x6e, 0xb6, 0x73, 0x12, + 0xb0, 0x44, 0xe8, 0x43, 0xb6, 0xe8, 0x0a, 0x00, + 0xe8, 0x23, 0xc5, 0xbb, 0x0a, 0x50, 0xe8, 0x44, + 0x2f, 0xc3, 0xc7, 0x06, 0xf3, 0xb4, 0x1d, 0x00, + 0xb8, 0x28, 0x00, 0xbb, 0xb0, 0x00, 0xbf, 0x3e, + 0x00, 0xbe, 0xb7, 0x00, 0xb1, 0x01, 0xb5, 0x02, + 0xe8, 0xb8, 0x3a, 0xc3, 0xe8, 0xb1, 0xff, 0x80, + 0x3e, 0xcf, 0xdb, 0x01, 0x74, 0x48, 0xe8, 0x1e, + 0xaa, 0xc6, 0x06, 0xe6, 0x1c, 0xe5, 0xc6, 0x06, + 0x35, 0x33, 0x0b, 0xc6, 0x06, 0x36, 0x33, 0x23, + 0xb8, 0xcb, 0x4f, 0xa3, 0x37, 0x33, 0xb8, 0x70, + 0x87, 0xa3, 0x39, 0x33, 0xb9, 0x59, 0x00, 0xb0, + 0x04, 0xb4, 0x09, 0xe8, 0x9f, 0x38, 0xb9, 0x57, + 0x00, 0xb0, 0x2d, 0xe8, 0xa0, 0x38, 0xb9, 0xce, + 0x02, 0xe8, 0x03, 0xaa, 0xe8, 0xbd, 0xa9, 0xe8, + 0xe3, 0xad, 0xbb, 0xe2, 0x4f, 0xe8, 0xdd, 0x2e, + 0xc6, 0x06, 0xcf, 0xdb, 0x01, 0xc3, 0xb9, 0x59, + 0x00, 0xb0, 0x04, 0xb4, 0x09, 0xe8, 0x75, 0x38, + 0xb9, 0xcf, 0x02, 0xe8, 0x61, 0xa9, 0xe8, 0x57, + 0xce, 0xc6, 0x47, 0x04, 0x43, 0xe8, 0x98, 0x3c, + 0xe8, 0x91, 0xa9, 0xbb, 0x46, 0x67, 0xe8, 0x39, + 0xce, 0xfe, 0x07, 0xb0, 0x05, 0xe8, 0x3d, 0xa8, + 0xb0, 0x0c, 0xe8, 0x2c, 0xa8, 0xc3, 0x80, 0x3e, + 0xcd, 0xdb, 0x01, 0x74, 0x07, 0xbb, 0x9d, 0x3c, + 0xe8, 0x0a, 0xa0, 0xc3, 0x80, 0x3e, 0xce, 0xdb, + 0x01, 0x75, 0x07, 0xbb, 0x9b, 0x4f, 0xe8, 0x8c, + 0x2e, 0xc3, 0xbb, 0xb1, 0x4f, 0xe8, 0x85, 0x2e, + 0xb9, 0x20, 0x00, 0xb0, 0x06, 0xb4, 0x07, 0xe8, + 0x23, 0x38, 0xb9, 0xcd, 0x02, 0xe8, 0x30, 0xa9, + 0xb0, 0x42, 0xe8, 0x53, 0xb5, 0xc6, 0x06, 0xce, + 0xdb, 0x01, 0xc3, 0xe8, 0x69, 0xa9, 0xe8, 0xf7, + 0xcd, 0xc6, 0x47, 0x02, 0x00, 0xe8, 0x7c, 0x3c, + 0xb9, 0x20, 0x00, 0xb0, 0x07, 0xb4, 0x08, 0xe8, + 0xfb, 0x37, 0xb9, 0xc6, 0x02, 0xe8, 0x0f, 0xa9, + 0xb0, 0x3e, 0xe8, 0x2b, 0xb5, 0xb0, 0x07, 0xe8, + 0xd3, 0xa7, 0xb0, 0x08, 0xe8, 0xc2, 0xa7, 0xc3, + 0xe8, 0xbb, 0x32, 0xc3, 0xe8, 0x38, 0xa9, 0xe8, + 0xc6, 0xcd, 0xc6, 0x47, 0x03, 0x00, 0xe8, 0x4b, + 0x3c, 0xb9, 0x20, 0x00, 0xb0, 0x07, 0xb4, 0x0b, + 0xe8, 0xca, 0x37, 0xb9, 0xcb, 0x02, 0xe8, 0xde, + 0xa8, 0xb0, 0x3f, 0xe8, 0xfa, 0xb4, 0xb0, 0x09, + 0xe8, 0xa2, 0xa7, 0xc3, 0xe8, 0x99, 0xfe, 0xbb, + 0x60, 0x5c, 0xe8, 0x08, 0x2e, 0xc3, 0xbb, 0x82, + 0x5c, 0xe8, 0x01, 0x2e, 0xc3, 0x80, 0x3e, 0xd0, + 0xdb, 0x01, 0x74, 0x0d, 0xb9, 0xd1, 0x02, 0xe8, + 0xae, 0xa8, 0xbb, 0x5e, 0x50, 0xe8, 0xed, 0x2d, + 0xc3, 0xe8, 0xeb, 0xa8, 0xe8, 0x79, 0xcd, 0xc6, + 0x47, 0x04, 0x45, 0xe8, 0xfe, 0x3b, 0xb9, 0x20, + 0x00, 0xb0, 0x05, 0xb4, 0x08, 0xe8, 0x7d, 0x37, + 0xb9, 0xd5, 0x02, 0xe8, 0x91, 0xa8, 0xb0, 0x0c, + 0xe8, 0x5a, 0xa7, 0xb0, 0x45, 0xe8, 0xa8, 0xb4, + 0xc3, 0xb9, 0x59, 0x00, 0xb0, 0x03, 0xb4, 0x01, + 0xe8, 0x62, 0x37, 0xb9, 0xcf, 0x03, 0xe8, 0x5e, + 0xa8, 0xe8, 0xef, 0x38, 0xc7, 0x06, 0xf3, 0xb4, + 0x1f, 0x00, 0xb8, 0x2a, 0x01, 0xbb, 0xb1, 0x00, + 0xbf, 0x16, 0x01, 0xbe, 0xb1, 0x00, 0xb1, 0x01, + 0xb5, 0x04, 0xe8, 0x26, 0x39, 0xc3, 0xe8, 0x15, + 0x32, 0xc3, 0x80, 0x3e, 0xd6, 0xdb, 0x02, 0x75, + 0x07, 0xbb, 0x2c, 0x52, 0xe8, 0x86, 0x2d, 0xc3, + 0xb9, 0x4f, 0x00, 0xb0, 0x06, 0xb4, 0x0e, 0xe8, + 0x23, 0x37, 0xb9, 0x54, 0x00, 0xb0, 0x09, 0xe8, + 0x24, 0x37, 0xb9, 0x21, 0x03, 0xe8, 0x28, 0xa8, + 0xe8, 0x63, 0xac, 0x80, 0x3e, 0xd6, 0xdb, 0x01, + 0x74, 0x07, 0xbb, 0x72, 0x53, 0xe8, 0x5d, 0x2d, + 0xc3, 0xbb, 0x8d, 0x53, 0xe8, 0x56, 0x2d, 0xc6, + 0x06, 0xd6, 0xdb, 0x02, 0xc3, 0xe8, 0xce, 0x31, + 0xc3, 0xb9, 0x42, 0x00, 0xb0, 0x05, 0xb4, 0x03, + 0xe8, 0xea, 0x36, 0xb9, 0x43, 0x00, 0xb0, 0x0b, + 0xe8, 0xeb, 0x36, 0xb9, 0xd0, 0x03, 0xe8, 0xef, + 0xa7, 0xbb, 0x55, 0x59, 0xe8, 0x2e, 0x2d, 0xc3, + 0xbb, 0xdb, 0x5c, 0xe8, 0x27, 0x2d, 0xc3, 0xbb, + 0xfd, 0x5c, 0xe8, 0x20, 0x2d, 0xc3, 0xe8, 0x1e, + 0xa8, 0xe8, 0xac, 0xcc, 0xc6, 0x47, 0x01, 0x00, + 0xe8, 0x31, 0x3b, 0xb9, 0x05, 0x00, 0xb0, 0x2a, + 0xb4, 0x07, 0xe8, 0xb0, 0x36, 0xc6, 0x06, 0x35, + 0x33, 0x14, 0xc6, 0x06, 0x36, 0x33, 0x26, 0xb8, + 0x02, 0x4d, 0xa3, 0x37, 0x33, 0xb8, 0x82, 0x7f, + 0xa3, 0x39, 0x33, 0xc6, 0x06, 0xdc, 0x64, 0x00, + 0xb9, 0xb9, 0x02, 0xe8, 0x01, 0xa8, 0xc6, 0x06, + 0xdc, 0x64, 0x01, 0xe8, 0xb6, 0xa7, 0xb0, 0x38, + 0xe8, 0xbd, 0xb3, 0xb0, 0x01, 0xe8, 0x65, 0xa6, + 0xc3, 0xb9, 0x05, 0x00, 0xb0, 0x0c, 0xb4, 0x07, + 0xe8, 0x72, 0x36, 0xb9, 0xc0, 0x02, 0xe8, 0x8d, + 0xa7, 0xb0, 0x02, 0xe8, 0x4f, 0xa6, 0xb0, 0x3a, + 0xe8, 0x9d, 0xb3, 0xc3, 0xbb, 0x2c, 0x5d, 0xe8, + 0xb3, 0x2c, 0xc3, 0x80, 0x3e, 0xc5, 0xdb, 0x01, + 0x74, 0x20, 0xc6, 0x06, 0xc5, 0xdb, 0x01, 0x80, + 0x3e, 0xc6, 0xdb, 0x00, 0x74, 0x05, 0xb8, 0xbe, + 0x02, 0xeb, 0x03, 0xb8, 0xbd, 0x02, 0xe8, 0x25, + 0x00, 0xb0, 0x01, 0xe8, 0x61, 0xa6, 0xe8, 0x23, + 0x37, 0xc3, 0xc6, 0x06, 0xc5, 0xdb, 0x00, 0xb8, + 0xbd, 0x02, 0xe8, 0x11, 0x00, 0xe8, 0xc6, 0x36, + 0x80, 0x3e, 0xc6, 0xdb, 0x01, 0x75, 0x06, 0xbb, + 0xa6, 0x4d, 0xe8, 0x70, 0x2c, 0xc3, 0x50, 0xb9, + 0x47, 0x00, 0xb0, 0x03, 0xb4, 0x06, 0xe8, 0x0c, + 0x36, 0xb9, 0xbc, 0x02, 0xe8, 0xf8, 0xa6, 0xe8, + 0x99, 0x37, 0x58, 0xbb, 0x47, 0x33, 0x89, 0x07, + 0xc3, 0xbb, 0x41, 0x5d, 0xe8, 0x4e, 0x2c, 0xc3, + 0x80, 0x3e, 0xc4, 0xdb, 0x01, 0x75, 0x07, 0xbb, + 0x2a, 0x4d, 0xe8, 0x40, 0x2c, 0xc3, 0xe8, 0x3e, + 0xa7, 0xe8, 0xcc, 0xcb, 0xc6, 0x07, 0x00, 0xe8, + 0x52, 0x3a, 0xb9, 0x1a, 0x00, 0xb0, 0x11, 0xb4, + 0x0a, 0xe8, 0xd1, 0x35, 0xb0, 0x17, 0xe8, 0xd5, + 0x35, 0xb0, 0x1e, 0xe8, 0xd7, 0x35, 0xb0, 0x25, + 0xe8, 0xe0, 0x35, 0xb0, 0x2b, 0xe8, 0xe2, 0x35, + 0xb9, 0x34, 0x00, 0xb0, 0x22, 0xe8, 0xcc, 0x35, + 0xb9, 0xba, 0x02, 0xe8, 0xa4, 0xa6, 0xe8, 0x97, + 0xcb, 0xc6, 0x07, 0x34, 0xc6, 0x47, 0x02, 0x3d, + 0xe8, 0xd5, 0x39, 0xe8, 0xce, 0xa6, 0xbb, 0xb6, + 0x38, 0xe8, 0x61, 0x9d, 0xb0, 0x0b, 0xe8, 0x70, + 0xa5, 0xc6, 0x06, 0xc4, 0xdb, 0x01, 0xc3, 0xbb, + 0x6e, 0x5d, 0xe8, 0xe0, 0x2b, 0xc3, 0x80, 0x3e, + 0xc9, 0xdb, 0x01, 0x75, 0x07, 0xbb, 0xbb, 0x4d, + 0xe8, 0xd2, 0x2b, 0xc3, 0xc6, 0x06, 0xc9, 0xdb, + 0x01, 0xbb, 0xca, 0x3a, 0xe8, 0x36, 0x9d, 0xb9, + 0x3d, 0x00, 0xb0, 0x05, 0xb4, 0x09, 0xe8, 0x64, + 0x35, 0xb9, 0x05, 0x00, 0xb0, 0x0e, 0xe8, 0x65, + 0x35, 0xb9, 0xc1, 0x02, 0xe8, 0x69, 0xa6, 0xbb, + 0xd3, 0x4d, 0xe8, 0xa8, 0x2b, 0xb0, 0x3b, 0xe8, + 0x86, 0xb2, 0xc3, 0xc7, 0x06, 0xf3, 0xb4, 0x1d, + 0x00, 0xb8, 0x00, 0x01, 0xbb, 0xab, 0x00, 0xbf, + 0x00, 0x01, 0xbe, 0xb2, 0x00, 0xb1, 0x0b, 0xb5, + 0x03, 0xe8, 0x17, 0x37, 0xc3, 0xe8, 0x06, 0x30, + 0xc3, 0xe8, 0x83, 0xa6, 0xe8, 0x11, 0xcb, 0xc6, + 0x47, 0x02, 0x00, 0xe8, 0x96, 0x39, 0xb9, 0x05, + 0x00, 0xb0, 0x0c, 0xb4, 0x07, 0xe8, 0x15, 0x35, + 0xb9, 0xbb, 0x02, 0xe8, 0x29, 0xa6, 0xb0, 0x39, + 0xe8, 0x45, 0xb2, 0xb0, 0x0b, 0xe8, 0xed, 0xa4, + 0xc3, 0xc7, 0x06, 0xf3, 0xb4, 0x26, 0x00, 0xb8, + 0xa0, 0x00, 0xbb, 0xc7, 0x00, 0xbf, 0xa0, 0x00, + 0xbe, 0xbe, 0x00, 0xb1, 0x13, 0xb5, 0x01, 0xe8, + 0xd1, 0x36, 0xc3, 0x80, 0x3e, 0xd7, 0xdb, 0x01, + 0x74, 0x07, 0xbb, 0xcb, 0x52, 0xe8, 0x35, 0x2b, + 0xc3, 0x80, 0x3e, 0xd8, 0xdb, 0x01, 0x74, 0x07, + 0xbb, 0xfe, 0x52, 0xe8, 0x27, 0x2b, 0xc3, 0xb9, + 0x58, 0x00, 0xb0, 0x04, 0xb4, 0x0c, 0xe8, 0xc4, + 0x34, 0xb9, 0xd3, 0x03, 0xe8, 0xb0, 0xa5, 0xe8, + 0x51, 0x36, 0xc7, 0x06, 0xaf, 0x64, 0x33, 0x00, + 0xc7, 0x06, 0xb1, 0x64, 0xb7, 0x00, 0xbb, 0x47, + 0x33, 0xc7, 0x07, 0x00, 0x03, 0xc7, 0x47, 0x02, + 0x01, 0x03, 0xc7, 0x06, 0xf3, 0xb4, 0x25, 0x00, + 0xe8, 0xb2, 0x37, 0xc6, 0x06, 0x45, 0x33, 0xd9, + 0xc6, 0x06, 0x46, 0x33, 0xe5, 0xb0, 0x01, 0xb4, + 0x02, 0xbe, 0x00, 0x03, 0xbf, 0x01, 0x03, 0xbb, + 0xea, 0x54, 0xe8, 0xf1, 0x9e, 0xbb, 0x47, 0x33, + 0xc7, 0x07, 0x02, 0x03, 0xc7, 0x47, 0x02, 0x03, + 0x03, 0xe8, 0xd0, 0x34, 0xbb, 0x23, 0x55, 0xe8, + 0x33, 0x9c, 0xb9, 0x05, 0x00, 0xb0, 0x03, 0xb4, + 0x02, 0xe8, 0x61, 0x34, 0xb9, 0x38, 0x00, 0xb0, + 0x0c, 0xe8, 0x62, 0x34, 0xb9, 0x17, 0x00, 0xb0, + 0x14, 0xe8, 0x61, 0x34, 0xb9, 0x4b, 0x00, 0xb0, + 0x19, 0xe8, 0x60, 0x34, 0xb9, 0x04, 0x03, 0xe8, + 0x38, 0xa5, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x06, + 0x03, 0xb9, 0x05, 0x03, 0xe8, 0x2b, 0xa5, 0xe8, + 0xc9, 0x35, 0xc6, 0x06, 0xdc, 0x1c, 0x01, 0xe8, + 0x16, 0xca, 0xc6, 0x07, 0x4a, 0xe8, 0xeb, 0x38, + 0xe8, 0xcd, 0x35, 0xb0, 0x01, 0xbe, 0x07, 0x03, + 0xbb, 0x56, 0x55, 0xe8, 0x11, 0xa0, 0xbb, 0x47, + 0x33, 0xc7, 0x07, 0x08, 0x03, 0xb0, 0x01, 0xe8, + 0x70, 0xa4, 0xb0, 0x01, 0xb4, 0x02, 0xbe, 0x09, + 0x03, 0xbf, 0x0a, 0x03, 0xbb, 0xf7, 0x55, 0xe8, + 0x6c, 0x9e, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x0b, + 0x03, 0xc7, 0x47, 0x02, 0x0c, 0x03, 0xe8, 0x4b, + 0x34, 0xe8, 0xd8, 0x34, 0xb9, 0x3a, 0x00, 0xb0, + 0x01, 0xb4, 0x04, 0xe8, 0xdf, 0x33, 0xb0, 0x02, + 0xe8, 0xe3, 0x33, 0xb0, 0x03, 0xe8, 0xe5, 0x33, + 0xb0, 0x04, 0xe8, 0xe7, 0x33, 0xb0, 0x05, 0xe8, + 0xe9, 0x33, 0xb0, 0x06, 0xe8, 0xeb, 0x33, 0xb0, + 0x0a, 0xe8, 0xf4, 0x33, 0xb9, 0x02, 0x00, 0xb0, + 0x07, 0xe8, 0xe5, 0x33, 0xb9, 0x37, 0x00, 0xb0, + 0x0b, 0xe8, 0xeb, 0x33, 0xb9, 0x36, 0x00, 0xb0, + 0x0f, 0xb4, 0x0a, 0xe8, 0xe8, 0x33, 0xbb, 0x47, + 0x33, 0xc7, 0x47, 0x04, 0x0d, 0x03, 0xc7, 0x47, + 0x06, 0x0e, 0x03, 0xb0, 0x03, 0xe8, 0xfa, 0xa3, + 0xe8, 0x7d, 0xc9, 0xc6, 0x47, 0x01, 0x4b, 0xc6, + 0x47, 0x02, 0x4c, 0xe8, 0x4d, 0x38, 0xe8, 0x2f, + 0x35, 0xb9, 0x3a, 0x00, 0xb0, 0x01, 0xb4, 0x04, + 0xe8, 0x7a, 0x33, 0xb0, 0x02, 0xe8, 0x7e, 0x33, + 0xb0, 0x03, 0xe8, 0x80, 0x33, 0xb0, 0x04, 0xe8, + 0x82, 0x33, 0xb0, 0x05, 0xe8, 0x84, 0x33, 0xb0, + 0x06, 0xe8, 0x86, 0x33, 0xb0, 0x09, 0xe8, 0x8f, + 0x33, 0xb9, 0x02, 0x00, 0xb0, 0x07, 0xe8, 0x80, + 0x33, 0xb0, 0x0f, 0xb4, 0x07, 0xe8, 0x8e, 0x33, + 0xb9, 0x37, 0x00, 0xb0, 0x0a, 0xe8, 0x7f, 0x33, + 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x04, 0x0f, 0x03, + 0xc7, 0x47, 0x06, 0x10, 0x03, 0xb0, 0x03, 0xe8, + 0x98, 0xa3, 0xe8, 0x1b, 0xc9, 0xc6, 0x47, 0x01, + 0x4d, 0xc6, 0x47, 0x02, 0x4e, 0xe8, 0xeb, 0x37, + 0xe8, 0xcd, 0x34, 0xbb, 0x47, 0x33, 0xc7, 0x47, + 0x04, 0x11, 0x03, 0xc7, 0x47, 0x06, 0x12, 0x03, + 0xb0, 0x03, 0xe8, 0x75, 0xa3, 0xbb, 0x47, 0x33, + 0xc7, 0x07, 0xff, 0xff, 0xe8, 0xa7, 0x33, 0xc7, + 0x06, 0xaf, 0x64, 0x70, 0x00, 0xc6, 0x06, 0xdc, + 0x1c, 0x02, 0xe8, 0xe3, 0xc8, 0xc6, 0x47, 0x03, + 0x4f, 0xc6, 0x07, 0x00, 0xe8, 0xb4, 0x37, 0xe8, + 0x96, 0x34, 0xe8, 0x5f, 0x37, 0xc7, 0x06, 0x30, + 0x32, 0x96, 0x97, 0xc7, 0x06, 0x2e, 0x32, 0x2a, + 0x00, 0xc7, 0x06, 0x2c, 0x32, 0x3e, 0x00, 0xe8, + 0x4c, 0xb1, 0xe8, 0x93, 0x31, 0xbb, 0x47, 0x33, + 0xc7, 0x47, 0x04, 0x13, 0x03, 0xc7, 0x47, 0x06, + 0x14, 0x03, 0xb0, 0x03, 0xe8, 0x23, 0xa3, 0xbb, + 0x47, 0x33, 0xc7, 0x47, 0x02, 0xff, 0xff, 0xe8, + 0x54, 0x33, 0xb9, 0x20, 0x00, 0xb0, 0x02, 0xb4, + 0x0c, 0xe8, 0xa9, 0x32, 0xb9, 0x18, 0x00, 0xb0, + 0x07, 0xe8, 0xaa, 0x32, 0xbb, 0x47, 0x33, 0xc7, + 0x07, 0x15, 0x03, 0xc7, 0x47, 0x06, 0x16, 0x03, + 0xb0, 0x01, 0xe8, 0xf5, 0xa2, 0xbb, 0x47, 0x33, + 0xe8, 0x2b, 0x33, 0xe8, 0x72, 0xc8, 0xc6, 0x07, + 0x50, 0xe8, 0x47, 0x37, 0xe8, 0x29, 0x34, 0xe8, + 0xe2, 0xa1, 0xbb, 0x65, 0x56, 0xe8, 0x3d, 0x9a, + 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x06, 0x18, 0x03, + 0xe8, 0xc9, 0x32, 0xe8, 0x56, 0x33, 0xbe, 0x28, + 0x00, 0xbf, 0xab, 0x00, 0xc6, 0x06, 0xc3, 0x64, + 0x04, 0xe8, 0x87, 0xbe, 0xc7, 0x06, 0xf3, 0xb4, + 0x23, 0x00, 0xe8, 0x3b, 0xc8, 0xc6, 0x47, 0x03, + 0x51, 0xb0, 0x0c, 0xe8, 0x23, 0xa2, 0xc7, 0x06, + 0xf3, 0xb4, 0x1f, 0x00, 0xb8, 0x2a, 0x01, 0xbb, + 0xb1, 0x00, 0xbf, 0x16, 0x01, 0xbe, 0xb1, 0x00, + 0xb1, 0x01, 0xb5, 0x04, 0xe8, 0x14, 0x34, 0xc6, + 0x06, 0xd9, 0xdb, 0x01, 0xc3, 0xb9, 0x59, 0x00, + 0xb0, 0x06, 0xb4, 0x02, 0xe8, 0x1e, 0x32, 0xb9, + 0xd2, 0x03, 0xe8, 0x1a, 0xa3, 0xe8, 0xab, 0x33, + 0xc7, 0x06, 0xf3, 0xb4, 0x1f, 0x00, 0xb8, 0x2a, + 0x01, 0xbb, 0xb1, 0x00, 0xbf, 0x16, 0x01, 0xbe, + 0xb1, 0x00, 0xb1, 0x01, 0xb5, 0x04, 0xe8, 0xe2, + 0x33, 0xc3, 0x80, 0x3e, 0xd7, 0xdb, 0x01, 0x74, + 0x07, 0xbb, 0xcb, 0x52, 0xe8, 0x46, 0x28, 0xc3, + 0x80, 0x3e, 0xd8, 0xdb, 0x01, 0x75, 0x07, 0xbb, + 0xf6, 0x52, 0xe8, 0x38, 0x28, 0xc3, 0xb9, 0x47, + 0x00, 0xb0, 0x04, 0xb4, 0x0c, 0xe8, 0xd5, 0x31, + 0xb9, 0x1c, 0x03, 0xe8, 0xe2, 0xa2, 0xb8, 0x01, + 0x00, 0xe8, 0x45, 0xb6, 0xe8, 0x59, 0xb6, 0xc6, + 0x06, 0xd8, 0xdb, 0x01, 0xc3, 0xe8, 0x98, 0xa0, + 0xbb, 0x36, 0xdb, 0xe8, 0x67, 0x99, 0xe8, 0x7c, + 0x99, 0xc3, 0xbb, 0x87, 0x5d, 0xe8, 0x05, 0x28, + 0xc3, 0xbb, 0x11, 0x55, 0xe8, 0xfe, 0x27, 0xc3, + 0xbb, 0x11, 0x55, 0xe8, 0xf7, 0x27, 0xc3, 0xbb, + 0x0f, 0x57, 0xe8, 0xf0, 0x27, 0xc3, 0x80, 0x3e, + 0xdd, 0xdb, 0x03, 0x75, 0x07, 0xbb, 0xff, 0x55, + 0xe8, 0xe2, 0x27, 0xc3, 0xe8, 0xc1, 0x27, 0xc3, + 0xfe, 0x06, 0xdb, 0xdb, 0xa0, 0xdb, 0xdb, 0xbb, + 0x11, 0x54, 0x3c, 0x01, 0x74, 0x1f, 0xbb, 0x63, + 0x54, 0x3c, 0x02, 0x74, 0x18, 0xbb, 0x75, 0x54, + 0x3c, 0x03, 0x74, 0x11, 0xbb, 0x84, 0x54, 0x3c, + 0x04, 0x74, 0x0a, 0xbb, 0xc4, 0x54, 0x3c, 0x05, + 0x74, 0x03, 0xbb, 0xd5, 0x54, 0xe8, 0xad, 0x27, + 0xc3, 0x80, 0x3e, 0xe6, 0xdb, 0x01, 0x75, 0x07, + 0xbb, 0x27, 0x58, 0xe8, 0x9f, 0x27, 0xc3, 0xe8, + 0x7e, 0x27, 0xc3, 0x80, 0x3e, 0xe8, 0xdb, 0x01, + 0x74, 0x04, 0xe8, 0x73, 0x27, 0xc3, 0xbb, 0xb0, + 0x58, 0xe8, 0x89, 0x27, 0xc3, 0xc3, 0x80, 0x3e, + 0xa1, 0xdb, 0x01, 0x74, 0x07, 0xbb, 0x94, 0x36, + 0xe8, 0x7a, 0x27, 0xc3, 0xe8, 0x59, 0x27, 0xc3, + 0xe8, 0xe2, 0xd7, 0xe8, 0x52, 0x27, 0xc3, 0xe8, + 0x94, 0xdc, 0xe8, 0x4b, 0x27, 0xc3, 0xe8, 0x8d, + 0xdc, 0xe8, 0x44, 0x27, 0xc3, 0x80, 0x3e, 0x95, + 0xdb, 0x01, 0x75, 0x07, 0xbb, 0x75, 0x3e, 0xe8, + 0x53, 0x27, 0xc3, 0xe8, 0x32, 0x27, 0xc3, 0x80, + 0x3e, 0x94, 0xdb, 0x01, 0x75, 0x07, 0xbb, 0x4f, + 0x3e, 0xe8, 0x41, 0x27, 0xc3, 0xe8, 0x20, 0x27, + 0xc3, 0x80, 0x3e, 0xa5, 0xdb, 0x01, 0x75, 0x07, + 0xbb, 0x98, 0x3e, 0xe8, 0x2f, 0x27, 0xc3, 0xe8, + 0x0e, 0x27, 0xc3, 0xbe, 0xf5, 0x00, 0xbf, 0xc6, + 0x00, 0xc6, 0x06, 0xc3, 0x64, 0x01, 0xe8, 0xf2, + 0xbc, 0x80, 0x3e, 0xaf, 0xdb, 0x01, 0x74, 0x0c, + 0xbb, 0x93, 0x21, 0xe8, 0x7f, 0x98, 0xc6, 0x06, + 0xaf, 0xdb, 0x01, 0xc3, 0xe8, 0xe9, 0x26, 0xc3, + 0x80, 0x3e, 0xb1, 0xdb, 0x01, 0x75, 0x07, 0xbb, + 0xaf, 0x3d, 0xe8, 0xf8, 0x26, 0xc3, 0xe8, 0xd7, + 0x26, 0xc3, 0xe8, 0x50, 0xe7, 0xc3, 0x80, 0x3e, + 0xa4, 0xdb, 0x01, 0x74, 0x04, 0xe8, 0x45, 0xe7, + 0xc3, 0xe8, 0xc4, 0x26, 0xc3, 0x80, 0x3e, 0xa4, + 0xdb, 0x01, 0x74, 0x07, 0xbb, 0x32, 0x38, 0xe8, + 0xd3, 0x26, 0xc3, 0xe8, 0xb2, 0x26, 0xc3, 0x80, + 0x3e, 0xa4, 0xdb, 0x01, 0x74, 0x04, 0xe8, 0x6d, + 0xe8, 0xc3, 0xe8, 0xa3, 0x26, 0xc3, 0x80, 0x3e, + 0xa4, 0xdb, 0x01, 0x74, 0x04, 0xe8, 0x5e, 0xe8, + 0xc3, 0xe8, 0x94, 0x26, 0xc3, 0x80, 0x3e, 0xa4, + 0xdb, 0x01, 0x74, 0x04, 0xe8, 0x4f, 0xe8, 0xc3, + 0xe8, 0x85, 0x26, 0xc3, 0x80, 0x3e, 0xa4, 0xdb, + 0x01, 0x74, 0x04, 0xe8, 0x40, 0xe8, 0xc3, 0xe8, + 0x76, 0x26, 0xc3, 0x80, 0x3e, 0xa4, 0xdb, 0x01, + 0x74, 0x04, 0xe8, 0x31, 0xe8, 0xc3, 0xe8, 0x67, + 0x26, 0xc3, 0x80, 0x3e, 0x9d, 0xdb, 0x01, 0x75, + 0x07, 0xbb, 0x90, 0x35, 0xe8, 0x76, 0x26, 0xc3, + 0xe8, 0x55, 0x26, 0xc3, 0xe8, 0x62, 0xee, 0xe8, + 0x4e, 0x26, 0xc3, 0xa0, 0xc1, 0xdb, 0x98, 0x48, + 0xd1, 0xe0, 0xbb, 0x3c, 0x5f, 0x03, 0xd8, 0x8b, + 0x1f, 0xe8, 0x59, 0x26, 0xc3, 0x80, 0x3e, 0xb7, + 0xdb, 0x01, 0x74, 0x04, 0xe8, 0x31, 0x26, 0xc3, + 0xbb, 0x6c, 0x4b, 0xe8, 0x47, 0x26, 0xc3, 0x80, + 0x3e, 0xb8, 0xdb, 0x01, 0x74, 0x04, 0xe8, 0x1f, + 0x26, 0xc3, 0x80, 0x3e, 0xbf, 0xdb, 0x01, 0x74, + 0x21, 0xbb, 0x32, 0x4c, 0xe8, 0x2e, 0x26, 0xb9, + 0x05, 0x00, 0xb0, 0x0b, 0xb4, 0x07, 0xe8, 0xcc, + 0x2f, 0xb9, 0xb2, 0x02, 0xe8, 0xd9, 0xa0, 0xb0, + 0x35, 0xe8, 0xfc, 0xac, 0xc6, 0x06, 0xbf, 0xdb, + 0x01, 0xc3, 0xbb, 0x87, 0x4b, 0xe8, 0x0d, 0x26, + 0xc3, 0x80, 0x3e, 0xb9, 0xdb, 0x01, 0x74, 0x04, + 0xe8, 0xe5, 0x25, 0xc3, 0xbb, 0xa1, 0x4b, 0xe8, + 0xfb, 0x25, 0xc3, 0x80, 0x3e, 0xba, 0xdb, 0x01, + 0x74, 0x04, 0xe8, 0xd3, 0x25, 0xc3, 0xbb, 0xbc, + 0x4b, 0xe8, 0xe9, 0x25, 0xc3, 0x80, 0x3e, 0xbb, + 0xdb, 0x01, 0x74, 0x04, 0xe8, 0xc1, 0x25, 0xc3, + 0xbb, 0xd8, 0x4b, 0xe8, 0xd7, 0x25, 0xc3, 0x80, + 0x3e, 0xbc, 0xdb, 0x01, 0x74, 0x04, 0xe8, 0xaf, + 0x25, 0xc3, 0x80, 0x3e, 0xbe, 0xdb, 0x01, 0x74, + 0x21, 0xbb, 0x0f, 0x4c, 0xe8, 0xbe, 0x25, 0xb9, + 0x05, 0x00, 0xb0, 0x0c, 0xb4, 0x07, 0xe8, 0x5c, + 0x2f, 0xb9, 0xb1, 0x02, 0xe8, 0x69, 0xa0, 0xb0, + 0x34, 0xe8, 0x8c, 0xac, 0xc6, 0x06, 0xbe, 0xdb, + 0x01, 0xc3, 0xbb, 0xf4, 0x4b, 0xe8, 0x9d, 0x25, + 0xc3, 0x80, 0x3e, 0xb6, 0xdb, 0x01, 0x74, 0x0c, + 0xbb, 0xd0, 0x37, 0xe8, 0xff, 0x96, 0xc6, 0x06, + 0xb6, 0xdb, 0x01, 0xc3, 0xe8, 0x69, 0x25, 0xc3, + 0xe8, 0x0d, 0xf6, 0xe8, 0x62, 0x25, 0xc3, 0xe8, + 0x06, 0xf6, 0xe8, 0x5b, 0x25, 0xc3, 0x80, 0x3e, + 0xcd, 0xdb, 0x01, 0x74, 0x04, 0xe8, 0x50, 0x25, + 0xc3, 0xbb, 0x69, 0x4f, 0xe8, 0x66, 0x25, 0xc3, + 0xe8, 0xed, 0xf5, 0xe8, 0x42, 0x25, 0xc3, 0x80, + 0x3e, 0xd0, 0xdb, 0x01, 0x74, 0x04, 0xe8, 0x37, + 0x25, 0xc3, 0xbb, 0x82, 0x50, 0xe8, 0x4d, 0x25, + 0xc3, 0xa0, 0xd6, 0xdb, 0x3c, 0x01, 0x74, 0x08, + 0x3c, 0x02, 0x74, 0x0b, 0xe8, 0x21, 0x25, 0xc3, + 0xbb, 0xf8, 0x51, 0xe8, 0x37, 0x25, 0xc3, 0xbb, + 0x8d, 0x53, 0xe8, 0x30, 0x25, 0xc3, 0xe8, 0x2e, + 0xa0, 0xe8, 0xbc, 0xc4, 0xc6, 0x07, 0x00, 0xe8, + 0x42, 0x33, 0xb9, 0x05, 0x00, 0xb0, 0x02, 0xb4, + 0x0c, 0xe8, 0xc1, 0x2e, 0xb9, 0x33, 0x00, 0xb0, + 0x0b, 0xe8, 0xc2, 0x2e, 0xb0, 0x17, 0xe8, 0xc4, + 0x2e, 0xb9, 0x45, 0x03, 0xe8, 0xa3, 0x9f, 0xb9, + 0x33, 0x00, 0xb0, 0x03, 0xb4, 0x0d, 0xe8, 0xa4, + 0x2e, 0xb0, 0x13, 0xe8, 0xa8, 0x2e, 0xb9, 0x17, + 0x00, 0xb0, 0x1a, 0xe8, 0xa7, 0x2e, 0xb9, 0x46, + 0x03, 0xe8, 0x86, 0x9f, 0xe8, 0x79, 0xc4, 0xc6, + 0x07, 0x60, 0xe8, 0xbb, 0x32, 0xc7, 0x06, 0xaf, + 0x64, 0x19, 0x01, 0xe8, 0xae, 0x9f, 0xb0, 0x04, + 0xe8, 0x62, 0x9e, 0xc6, 0x06, 0xe1, 0xdb, 0x01, + 0xc3, 0x80, 0x3e, 0xe1, 0xdb, 0x01, 0x74, 0x07, + 0xbb, 0xda, 0x56, 0xe8, 0xbf, 0x24, 0xc3, 0xb9, + 0x4c, 0x03, 0xe8, 0x52, 0x9f, 0xe8, 0x48, 0xc4, + 0xc6, 0x47, 0x01, 0x00, 0x53, 0xe8, 0x88, 0x32, + 0xb9, 0x05, 0x00, 0xb0, 0x05, 0xb4, 0x0a, 0xe8, + 0x4b, 0x2e, 0xb9, 0x1a, 0x00, 0xb0, 0x13, 0xe8, + 0x4c, 0x2e, 0xb9, 0x18, 0x00, 0xb0, 0x19, 0xe8, + 0x4b, 0x2e, 0xb9, 0x4f, 0x03, 0xe8, 0x2a, 0x9f, + 0xb9, 0x05, 0x00, 0xb0, 0x0b, 0xb4, 0x09, 0xe8, + 0x2b, 0x2e, 0xb9, 0x50, 0x03, 0xe8, 0x1a, 0x9f, + 0x5b, 0xc6, 0x47, 0x01, 0x64, 0xe8, 0x50, 0x32, + 0xb9, 0x4d, 0x03, 0xe8, 0x31, 0x9f, 0xb0, 0x03, + 0xe8, 0xfa, 0x9d, 0xb0, 0x52, 0xe8, 0x48, 0xab, + 0xb0, 0x51, 0xe8, 0x53, 0xab, 0xc3, 0xbb, 0x54, + 0x5e, 0xe8, 0x59, 0x24, 0xc3, 0xb9, 0x4c, 0x00, + 0xb0, 0x12, 0xb4, 0x08, 0xe8, 0xf6, 0x2d, 0xb0, + 0x16, 0xe8, 0xfa, 0x2d, 0xb0, 0x1a, 0xe8, 0xfc, + 0x2d, 0xb0, 0x1e, 0xe8, 0xfe, 0x2d, 0xb0, 0x22, + 0xe8, 0x00, 0x2e, 0xb0, 0x2f, 0xe8, 0x02, 0x2e, + 0xb0, 0x33, 0xe8, 0x04, 0x2e, 0xb0, 0x37, 0xe8, + 0x06, 0x2e, 0xb0, 0x3b, 0xe8, 0x08, 0x2e, 0xb0, + 0x3f, 0xe8, 0x0a, 0x2e, 0xb9, 0x69, 0x03, 0xe8, + 0xd6, 0x9e, 0xbe, 0xf0, 0x00, 0xbf, 0xa3, 0x00, + 0xc6, 0x06, 0xc3, 0x64, 0x04, 0xe8, 0xe3, 0xb9, + 0xbb, 0x37, 0x58, 0xe8, 0x07, 0x24, 0xb4, 0x01, + 0xb0, 0x22, 0xe8, 0xb9, 0xa2, 0xb9, 0x4d, 0x00, + 0xb0, 0x02, 0xb4, 0x08, 0xe8, 0x9e, 0x2d, 0xb0, + 0x0c, 0xe8, 0xa2, 0x2d, 0xb0, 0x10, 0xe8, 0xa4, + 0x2d, 0xb0, 0x14, 0xe8, 0xa6, 0x2d, 0xb0, 0x22, + 0xe8, 0xa8, 0x2d, 0xb9, 0x4e, 0x00, 0xb0, 0x29, + 0xe8, 0xa7, 0x2d, 0xb0, 0x33, 0xe8, 0xa9, 0x2d, + 0xb9, 0x38, 0x00, 0xb0, 0x3f, 0xe8, 0xa8, 0x2d, + 0xb9, 0x18, 0x00, 0xb0, 0x43, 0xe8, 0xa7, 0x2d, + 0xb9, 0x17, 0x00, 0xb0, 0x4c, 0xe8, 0xa6, 0x2d, + 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x6a, 0x03, 0xb0, + 0x01, 0xe8, 0x7c, 0x9d, 0xe8, 0x45, 0x2e, 0xe8, + 0x3e, 0xc3, 0xc6, 0x07, 0x68, 0xe8, 0xc4, 0x31, + 0xb8, 0x01, 0x00, 0xe8, 0xc3, 0xb1, 0xe8, 0xd7, + 0xb1, 0xb0, 0x5b, 0xe8, 0x8a, 0xaa, 0xb0, 0x06, + 0xe8, 0x16, 0x9d, 0xb0, 0x01, 0xe8, 0x1d, 0x9d, + 0xc3, 0xbb, 0xbe, 0x5e, 0xe8, 0x86, 0x23, 0xc3, + 0xbb, 0xbe, 0x5e, 0xe8, 0x7f, 0x23, 0xc3, 0xbb, + 0xe6, 0x5e, 0xe8, 0x78, 0x23, 0xc3, 0xbb, 0x11, + 0x5f, 0xe8, 0x71, 0x23, 0xc3, 0xb9, 0x05, 0x00, + 0xb0, 0x02, 0xb4, 0x07, 0xe8, 0x0e, 0x2d, 0xb9, + 0x13, 0x00, 0xb0, 0x0b, 0xe8, 0x0f, 0x2d, 0xb9, + 0x48, 0x03, 0xe8, 0x02, 0x9e, 0xe8, 0xe8, 0xc2, + 0xc6, 0x47, 0x01, 0x61, 0xe8, 0x29, 0x31, 0xe8, + 0x22, 0x9e, 0xb0, 0x50, 0xe8, 0x39, 0xaa, 0xb0, + 0x02, 0xe8, 0xd1, 0x9c, 0xb0, 0x07, 0xe8, 0xc0, + 0x9c, 0xc3, 0x80, 0x3e, 0xdf, 0xdb, 0x01, 0x76, + 0x07, 0xbb, 0xf6, 0x52, 0xe8, 0x2e, 0x23, 0xc3, + 0xb9, 0x05, 0x00, 0xb0, 0x02, 0xb4, 0x0c, 0xe8, + 0xcb, 0x2c, 0xb9, 0x39, 0x00, 0xb0, 0x0c, 0xe8, + 0xcc, 0x2c, 0xb9, 0x46, 0x00, 0xb0, 0x13, 0xe8, + 0xcb, 0x2c, 0xb9, 0x3c, 0x03, 0xe8, 0xa7, 0x9d, + 0xe8, 0x48, 0x2e, 0xc7, 0x06, 0xaf, 0x64, 0x06, + 0x01, 0xc7, 0x06, 0xb1, 0x64, 0xa0, 0x00, 0xc6, + 0x06, 0xcc, 0x64, 0x01, 0xc6, 0x06, 0xcd, 0x64, + 0x00, 0xc6, 0x06, 0xcb, 0x64, 0x01, 0xe8, 0x10, + 0xc1, 0xb0, 0x04, 0xe8, 0x77, 0x9c, 0xb0, 0x03, + 0xe8, 0x72, 0x9c, 0xe8, 0x72, 0xc2, 0xc6, 0x07, + 0x00, 0xc6, 0x47, 0x02, 0x00, 0xc6, 0x47, 0x03, + 0x00, 0xc6, 0x47, 0x01, 0x55, 0xbb, 0x47, 0x33, + 0xc7, 0x07, 0x3d, 0x03, 0xc7, 0x06, 0xf3, 0xb4, + 0x05, 0x00, 0xe8, 0x53, 0xc2, 0xc6, 0x07, 0x5c, + 0xe8, 0x7a, 0x2f, 0xe8, 0x4a, 0xc2, 0xc6, 0x07, + 0x00, 0xb8, 0xc8, 0x00, 0xe8, 0x93, 0xa1, 0xc6, + 0x06, 0x45, 0x33, 0xd0, 0xb0, 0x01, 0xbe, 0x3e, + 0x03, 0xbb, 0xa5, 0x63, 0xe8, 0x40, 0x98, 0xb9, + 0x04, 0x00, 0xe8, 0x8e, 0x33, 0xbb, 0x47, 0x33, + 0xc7, 0x07, 0x3f, 0x03, 0xc7, 0x06, 0xf3, 0xb4, + 0x07, 0x00, 0xe8, 0x3f, 0x2f, 0xc7, 0x06, 0xaf, + 0x64, 0x82, 0x00, 0xc7, 0x06, 0xb1, 0x64, 0xc3, + 0x00, 0xc6, 0x06, 0xdc, 0x1c, 0x02, 0xe8, 0x95, + 0xaa, 0xe8, 0x71, 0xa1, 0xe8, 0x92, 0x99, 0xbb, + 0x06, 0x64, 0xe8, 0xd8, 0x93, 0xbb, 0x47, 0x33, + 0xc7, 0x07, 0x3f, 0x03, 0xb0, 0x01, 0xe8, 0x2e, + 0x9c, 0xe8, 0xf0, 0x2c, 0xc6, 0x06, 0xdf, 0xdb, + 0x02, 0xc3, 0x80, 0x3e, 0xe0, 0xdb, 0x01, 0x75, + 0x07, 0xbb, 0x32, 0x56, 0xe8, 0x46, 0x22, 0xc3, + 0xb9, 0x05, 0x00, 0xb0, 0x06, 0xb4, 0x05, 0xe8, + 0xe3, 0x2b, 0xb9, 0x1b, 0x00, 0xb0, 0x31, 0xe8, + 0xe4, 0x2b, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x43, + 0x03, 0xb9, 0x42, 0x03, 0xe8, 0xc0, 0x9c, 0xe8, + 0xb6, 0xc1, 0xc6, 0x07, 0x5e, 0xe8, 0xf8, 0x2f, + 0xe8, 0xf1, 0x9c, 0xe8, 0x3b, 0x99, 0xbb, 0xe9, + 0x65, 0xe8, 0x81, 0x93, 0xb0, 0x0c, 0xe8, 0x90, + 0x9b, 0xc6, 0x06, 0xe0, 0xdb, 0x01, 0xc3, 0xe8, + 0x32, 0x99, 0xbb, 0xc0, 0x66, 0xe8, 0x6d, 0x93, + 0xb9, 0x05, 0x00, 0xb0, 0x03, 0xb4, 0x03, 0xe8, + 0x9b, 0x2b, 0xb9, 0x54, 0x03, 0xe8, 0x8a, 0x9c, + 0xe8, 0x28, 0x2d, 0xc6, 0x06, 0xdc, 0x1c, 0x01, + 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x55, 0x03, 0xb0, + 0x01, 0xe8, 0xab, 0x9b, 0xe8, 0x6d, 0x2c, 0xa0, + 0xac, 0x64, 0x50, 0xc6, 0x06, 0xac, 0x64, 0x04, + 0xe8, 0x10, 0x8d, 0xbb, 0x42, 0x57, 0xbe, 0x13, + 0x8c, 0xe8, 0x6a, 0x24, 0xbb, 0x57, 0x57, 0xbe, + 0x12, 0x8c, 0xe8, 0x61, 0x24, 0xbb, 0x70, 0x57, + 0xbe, 0x1d, 0x8c, 0xe8, 0x58, 0x24, 0xbb, 0x82, + 0x57, 0xbe, 0x0f, 0x8c, 0xe8, 0x4f, 0x24, 0xbb, + 0x99, 0x57, 0xbe, 0x07, 0x8c, 0xe8, 0x46, 0x24, + 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x58, 0x03, 0xb0, + 0x01, 0xe8, 0x63, 0x9b, 0xb9, 0x05, 0x00, 0xb0, + 0x03, 0xb4, 0x03, 0xe8, 0x2f, 0x2b, 0xb9, 0x56, + 0x03, 0xe8, 0x1e, 0x9c, 0xe8, 0xbc, 0x2c, 0x58, + 0xa2, 0xac, 0x64, 0xe8, 0xbd, 0x8c, 0xe8, 0xa3, + 0x98, 0xbb, 0xfe, 0x66, 0xe8, 0xde, 0x92, 0xbb, + 0x47, 0x33, 0xc7, 0x07, 0x57, 0x03, 0xb0, 0x01, + 0xe8, 0x34, 0x9b, 0xb8, 0xc8, 0x00, 0xe8, 0x41, + 0xa0, 0xbe, 0x1e, 0x00, 0xbf, 0xb5, 0x00, 0xe8, + 0x29, 0xb7, 0xe8, 0x99, 0x2b, 0xb0, 0x01, 0xe8, + 0xdb, 0x9a, 0xb8, 0x01, 0x00, 0xe8, 0x69, 0xaf, + 0xc6, 0x06, 0xdf, 0xdb, 0x03, 0xc6, 0x06, 0xf0, + 0xdb, 0x01, 0xc6, 0x06, 0xdc, 0x1c, 0x02, 0xe8, + 0x79, 0xc4, 0xc3, 0x80, 0x3e, 0xdf, 0xdb, 0x03, + 0x74, 0x07, 0xbb, 0xe2, 0x5d, 0xe8, 0x25, 0x21, + 0xc3, 0xb9, 0x05, 0x00, 0xb0, 0x03, 0xb4, 0x09, + 0xe8, 0xc2, 0x2a, 0xb9, 0x3a, 0x00, 0xb0, 0x0b, + 0xe8, 0xc3, 0x2a, 0xb9, 0x2e, 0x00, 0xb0, 0x38, + 0xe8, 0xc2, 0x2a, 0xb0, 0x55, 0xe8, 0xc4, 0x2a, + 0xb0, 0x75, 0xe8, 0xc6, 0x2a, 0xb9, 0x66, 0x03, + 0xe8, 0x94, 0x9b, 0xb9, 0x36, 0x00, 0xb0, 0x0f, + 0xb4, 0x09, 0xe8, 0x98, 0x2a, 0xb9, 0x67, 0x03, + 0xe8, 0x87, 0x9b, 0xe8, 0x25, 0x2c, 0xc6, 0x06, + 0xe6, 0xdb, 0x01, 0xe8, 0x72, 0xc0, 0xc6, 0x47, + 0x01, 0x66, 0xe8, 0xf7, 0x2e, 0xb8, 0x32, 0x00, + 0xe8, 0xd9, 0x9f, 0xc7, 0x06, 0xaf, 0x64, 0xe0, + 0x00, 0xc7, 0x06, 0xb1, 0x64, 0xc2, 0x00, 0xc6, + 0x06, 0xcc, 0x64, 0x00, 0xc6, 0x06, 0xdc, 0x64, + 0x01, 0xc6, 0x06, 0xcb, 0x64, 0x00, 0xe8, 0xd8, + 0xbe, 0xc6, 0x06, 0xdc, 0x1c, 0x03, 0xe8, 0xcd, + 0xa8, 0xbe, 0xd7, 0x76, 0xbb, 0xdf, 0x57, 0xc6, + 0x06, 0xdc, 0x1c, 0x02, 0xe8, 0x5e, 0x1c, 0xb0, + 0x59, 0xe8, 0x8c, 0xa7, 0xc3, 0xb9, 0x05, 0x00, + 0xb0, 0x03, 0xb4, 0x06, 0xe8, 0x36, 0x2a, 0xb9, + 0x6c, 0x03, 0xe8, 0x32, 0x9b, 0xe8, 0xc3, 0x2b, + 0xe8, 0x15, 0xc0, 0xc6, 0x47, 0x01, 0x00, 0xe8, + 0x9a, 0x2e, 0xb9, 0x1a, 0x00, 0xb0, 0x07, 0xb4, + 0x04, 0xe8, 0x19, 0x2a, 0xb9, 0x4f, 0x00, 0xb0, + 0x0f, 0xe8, 0x1a, 0x2a, 0xbb, 0x47, 0x33, 0xc7, + 0x47, 0x02, 0x6d, 0x03, 0xb0, 0x02, 0xe8, 0x27, + 0x9a, 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x02, 0x70, + 0x03, 0xb0, 0x02, 0xe8, 0x21, 0x9a, 0xe8, 0xe3, + 0x2a, 0xe8, 0x04, 0x97, 0xbb, 0x0e, 0x6f, 0xe8, + 0xb3, 0x91, 0xe8, 0xd3, 0xbf, 0xc6, 0x47, 0x02, + 0x6a, 0xe8, 0x58, 0x2e, 0xbb, 0x47, 0x33, 0xc7, + 0x07, 0x6e, 0x03, 0xb0, 0x01, 0xe8, 0xf8, 0x99, + 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x6f, 0x03, 0xb0, + 0x01, 0xe8, 0xf3, 0x99, 0xe8, 0xb5, 0x2a, 0xb0, + 0x5c, 0xe8, 0x0c, 0xa7, 0xb0, 0x01, 0xe8, 0x98, + 0x99, 0xc6, 0x06, 0xe7, 0xdb, 0x01, 0xc3, 0xb9, + 0x20, 0x00, 0xb0, 0x05, 0xb4, 0x0a, 0xe8, 0xac, + 0x29, 0xb9, 0x05, 0x00, 0xb0, 0x11, 0xe8, 0xad, + 0x29, 0xb9, 0x34, 0x00, 0xb0, 0x17, 0xe8, 0xac, + 0x29, 0xb9, 0x71, 0x03, 0xe8, 0x88, 0x9a, 0xe8, + 0x7e, 0xbf, 0xc6, 0x47, 0x02, 0x6b, 0xe8, 0xbf, + 0x2d, 0xe8, 0xb8, 0x9a, 0xb0, 0x56, 0xe8, 0xcf, + 0xa6, 0xb0, 0x55, 0xe8, 0xba, 0xa6, 0xc6, 0x06, + 0xe8, 0xdb, 0x01, 0xc3, 0xbb, 0x8f, 0x5e, 0xe8, + 0xcb, 0x1f, 0xc3, 0x80, 0x3e, 0xda, 0xdb, 0x01, + 0x75, 0x07, 0xbb, 0xf2, 0x53, 0xe8, 0xbd, 0x1f, + 0xc3, 0xbb, 0xdd, 0x53, 0xe8, 0xb6, 0x1f, 0xb9, + 0x05, 0x00, 0xb0, 0x02, 0xb4, 0x07, 0xe8, 0x54, + 0x29, 0xb0, 0x12, 0xe8, 0x58, 0x29, 0xb9, 0x2a, + 0x03, 0xe8, 0x5c, 0x9a, 0xe8, 0xe3, 0x96, 0xbb, + 0xbf, 0x60, 0xe8, 0x08, 0x91, 0xc6, 0x06, 0xda, + 0xdb, 0x01, 0xc3, 0xe8, 0xd4, 0x96, 0xbb, 0x11, + 0x68, 0xe8, 0xf9, 0x90, 0xb9, 0x05, 0x00, 0xb0, + 0x03, 0xb4, 0x05, 0xe8, 0x27, 0x29, 0xb0, 0x1e, + 0xe8, 0x32, 0x29, 0xb9, 0x1a, 0x00, 0xb0, 0x0e, + 0xe8, 0x23, 0x29, 0xbb, 0x47, 0x33, 0xc7, 0x07, + 0x53, 0x03, 0xb9, 0x51, 0x03, 0xe8, 0x02, 0x9a, + 0xe8, 0xa0, 0x2a, 0xbb, 0x47, 0x33, 0xc7, 0x07, + 0x52, 0x03, 0xb0, 0x01, 0xe8, 0x28, 0x99, 0xe8, + 0xea, 0x29, 0xb0, 0x53, 0xe8, 0x31, 0xa6, 0xb0, + 0x52, 0xe8, 0x3c, 0xa6, 0xb0, 0x01, 0xe8, 0xc8, + 0x98, 0xc6, 0x06, 0xe2, 0xdb, 0x01, 0xc3, 0xe8, + 0x0c, 0x97, 0xbb, 0x41, 0x0a, 0xe8, 0xa5, 0x90, + 0xb9, 0x05, 0x00, 0xb0, 0x02, 0xb4, 0x0a, 0xe8, + 0xd3, 0x28, 0xb0, 0x2c, 0xe8, 0xd7, 0x28, 0xbb, + 0x47, 0x33, 0xc7, 0x07, 0x82, 0x02, 0xb9, 0x81, + 0x02, 0xe8, 0xd4, 0x99, 0xe8, 0xe7, 0x96, 0xbb, + 0xff, 0x0a, 0xe8, 0x80, 0x90, 0xb8, 0xaa, 0x00, + 0xe8, 0xef, 0x9d, 0xe8, 0xd8, 0x96, 0xbb, 0xa0, + 0x0b, 0xe8, 0x71, 0x90, 0x8b, 0x36, 0xaf, 0x64, + 0xbb, 0xb1, 0x64, 0x8b, 0x3f, 0xff, 0x0f, 0xe8, + 0xc9, 0xb4, 0xe8, 0xf0, 0x9d, 0xbb, 0x10, 0x0c, + 0xe8, 0x5a, 0x90, 0xb0, 0x32, 0xe8, 0xd8, 0xa5, + 0xe8, 0xd2, 0x1b, 0xc3, 0xe8, 0xe0, 0x99, 0xe8, + 0x6e, 0xbe, 0xc6, 0x07, 0x00, 0x53, 0xe8, 0xf3, + 0x2c, 0xb9, 0x05, 0x00, 0xb0, 0x02, 0xb4, 0x09, + 0xe8, 0x72, 0x28, 0xb0, 0x05, 0xe8, 0x76, 0x28, + 0xb0, 0x09, 0xe8, 0x78, 0x28, 0xb9, 0x0e, 0x00, + 0xb0, 0x13, 0xe8, 0x77, 0x28, 0xb9, 0x05, 0x00, + 0xb0, 0x32, 0xe8, 0x76, 0x28, 0xb9, 0x1e, 0x02, + 0xe8, 0x47, 0x99, 0x5b, 0xb0, 0x0f, 0x88, 0x47, + 0x01, 0xe8, 0x6d, 0x2d, 0xb0, 0x03, 0xe8, 0x2c, + 0x98, 0xb0, 0x09, 0xe8, 0x1b, 0x98, 0xe8, 0x6b, + 0x99, 0xc3, 0xb9, 0x38, 0x00, 0xb0, 0x0b, 0xb4, + 0x08, 0xe8, 0x31, 0x28, 0xb9, 0x24, 0x00, 0xb0, + 0x0d, 0xb4, 0x0c, 0xe8, 0x30, 0x28, 0xb9, 0x30, + 0x00, 0xb0, 0x16, 0xb4, 0x0a, 0xe8, 0x2d, 0x28, + 0xb9, 0x38, 0x00, 0xb0, 0x39, 0xb4, 0x08, 0xe8, + 0x2a, 0x28, 0xb9, 0x24, 0x00, 0xb0, 0x3b, 0xb4, + 0x0c, 0xe8, 0x27, 0x28, 0xb9, 0x30, 0x00, 0xb0, + 0x44, 0xb4, 0x0a, 0xe8, 0x24, 0x28, 0xb9, 0x36, + 0x00, 0xb0, 0x78, 0xb4, 0x08, 0xe8, 0x21, 0x28, + 0xb9, 0x38, 0x00, 0xb0, 0x8d, 0xb4, 0x0a, 0xe8, + 0x1e, 0x28, 0xb0, 0x90, 0xe8, 0x20, 0x28, 0xb0, + 0x93, 0xe8, 0x22, 0x28, 0xbb, 0x47, 0x33, 0xc7, + 0x07, 0x4d, 0x02, 0xb9, 0x4c, 0x02, 0xe8, 0xe7, + 0x98, 0xe8, 0x22, 0x9d, 0xbb, 0x7f, 0x36, 0xe8, + 0x23, 0x1e, 0xb0, 0x22, 0xe8, 0x11, 0xa5, 0xc6, + 0x06, 0xa1, 0xdb, 0x01, 0xc3, 0xb9, 0x05, 0x00, + 0xb0, 0x03, 0xb4, 0x03, 0xe8, 0xb6, 0x27, 0xb9, + 0x41, 0x00, 0xb0, 0x10, 0xe8, 0xb7, 0x27, 0xb0, + 0x12, 0xe8, 0xb9, 0x27, 0xb0, 0x14, 0xe8, 0xbb, + 0x27, 0xb0, 0x16, 0xe8, 0xbd, 0x27, 0xb0, 0x18, + 0xe8, 0xbf, 0x27, 0xb0, 0x1a, 0xe8, 0xc1, 0x27, + 0xb0, 0x1c, 0xe8, 0xc3, 0x27, 0xb9, 0x2f, 0x00, + 0xb0, 0x21, 0xe8, 0xc2, 0x27, 0xb9, 0x6c, 0x02, + 0xe8, 0x74, 0x98, 0xb9, 0x38, 0x00, 0xb0, 0x03, + 0xb4, 0x03, 0xe8, 0x78, 0x27, 0xb0, 0x06, 0xe8, + 0x7c, 0x27, 0xb0, 0x09, 0xe8, 0x7e, 0x27, 0xb0, + 0x0c, 0xe8, 0x80, 0x27, 0xb0, 0x0f, 0xe8, 0x82, + 0x27, 0xb0, 0x12, 0xe8, 0x84, 0x27, 0xc6, 0x06, + 0xe6, 0x1c, 0xd9, 0xc6, 0x06, 0x35, 0x33, 0x14, + 0xc6, 0x06, 0x36, 0x33, 0x25, 0xb8, 0xce, 0x3a, + 0xa3, 0x37, 0x33, 0xb8, 0x26, 0x0f, 0xa3, 0x39, + 0x33, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x6f, 0x02, + 0xb9, 0x6d, 0x02, 0xe8, 0xa9, 0x98, 0xc6, 0x06, + 0x35, 0x33, 0x01, 0xc6, 0x06, 0x36, 0x33, 0x09, + 0xb8, 0xe6, 0x3a, 0xa3, 0x37, 0x33, 0xb8, 0x1e, + 0x0f, 0xa3, 0x39, 0x33, 0xb9, 0x23, 0x00, 0xb0, + 0x01, 0xb4, 0x03, 0xe8, 0x17, 0x27, 0xbb, 0x47, + 0x33, 0xc7, 0x07, 0x70, 0x02, 0xb9, 0x6e, 0x02, + 0xe8, 0x7c, 0x98, 0xe8, 0x36, 0x98, 0xb8, 0x96, + 0x00, 0xe8, 0x3e, 0x9c, 0xbb, 0xfd, 0x3a, 0xe8, + 0x53, 0x1d, 0xb0, 0x2b, 0xe8, 0x41, 0xa4, 0xe8, + 0x3b, 0x1a, 0xc3, 0xbb, 0xa1, 0x46, 0xe8, 0x44, + 0x1d, 0xc3, 0xbb, 0x00, 0x30, 0xe8, 0xad, 0x8e, + 0xb9, 0x05, 0x00, 0xb0, 0x18, 0xb4, 0x03, 0xe8, + 0xdb, 0x26, 0xb9, 0x1a, 0x00, 0xb0, 0x20, 0xe8, + 0xdc, 0x26, 0xb9, 0x05, 0x00, 0xb0, 0x2a, 0xe8, + 0xdb, 0x26, 0xb9, 0x0f, 0x00, 0xb0, 0x4d, 0xe8, + 0xda, 0x26, 0xb0, 0x4f, 0xe8, 0xdc, 0x26, 0xb0, + 0x52, 0xe8, 0xde, 0x26, 0xb9, 0x16, 0x00, 0xb0, + 0x5b, 0xe8, 0xdd, 0x26, 0xb9, 0x16, 0x00, 0xb0, + 0x66, 0xe8, 0xdc, 0x26, 0xb9, 0x1a, 0x00, 0xb0, + 0x72, 0xe8, 0xdb, 0x26, 0xb9, 0x18, 0x00, 0xb0, + 0x7c, 0xe8, 0xda, 0x26, 0xb0, 0x1a, 0xb4, 0x01, + 0xe8, 0xa3, 0x9b, 0xbb, 0x47, 0x33, 0xc7, 0x07, + 0x33, 0x02, 0xb9, 0x32, 0x02, 0xe8, 0xa6, 0x97, + 0xb0, 0x06, 0xe8, 0x68, 0x96, 0xb0, 0x01, 0xb4, + 0x00, 0xe8, 0xf5, 0xaa, 0xe8, 0x09, 0xab, 0xbb, + 0x3f, 0x36, 0xe8, 0xc8, 0x1c, 0xb0, 0x1b, 0xe8, + 0xb6, 0xa3, 0xb0, 0x1c, 0xe8, 0xa1, 0xa3, 0xc3, + 0xbb, 0x13, 0x49, 0xe8, 0xb7, 0x1c, 0xc3, 0xb0, + 0x20, 0xe8, 0xa4, 0xa3, 0xb9, 0x25, 0x00, 0xb0, + 0x0e, 0xb4, 0x04, 0xe8, 0x4f, 0x26, 0xb9, 0x10, + 0x00, 0xb0, 0x11, 0xb4, 0x09, 0xe8, 0x4e, 0x26, + 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x02, 0x35, 0x02, + 0xb9, 0x34, 0x02, 0xe8, 0x29, 0x97, 0xe8, 0x1f, + 0xbc, 0xc6, 0x07, 0x18, 0xe8, 0x5a, 0x2a, 0xe8, + 0xcc, 0x26, 0xb9, 0x27, 0x00, 0xb0, 0x05, 0xb4, + 0x00, 0xe8, 0x21, 0x26, 0xb9, 0x46, 0x02, 0xe8, + 0x10, 0x97, 0xe8, 0x47, 0x97, 0xbe, 0x3f, 0x00, + 0xbf, 0xc3, 0x00, 0xc6, 0x06, 0xc3, 0x64, 0x01, + 0xe8, 0x38, 0xb2, 0xbb, 0x47, 0x33, 0xc7, 0x47, + 0x02, 0x3b, 0x02, 0xb0, 0x02, 0xe8, 0x20, 0x96, + 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x02, 0x3c, 0x02, + 0xb0, 0x02, 0xe8, 0x13, 0x96, 0xbb, 0x47, 0x33, + 0xc7, 0x47, 0x02, 0x3d, 0x02, 0xb0, 0x02, 0xe8, + 0x06, 0x96, 0xb9, 0x28, 0x00, 0xb0, 0x01, 0xb4, + 0x08, 0xe8, 0xd9, 0x25, 0xb0, 0x03, 0xe8, 0xdd, + 0x25, 0xb0, 0x05, 0xe8, 0xdf, 0x25, 0xb0, 0x07, + 0xe8, 0xe1, 0x25, 0xbb, 0x47, 0x33, 0xc7, 0x47, + 0x02, 0x3e, 0x02, 0xb0, 0x02, 0xe8, 0xe0, 0x95, + 0xb0, 0x01, 0xb4, 0x00, 0xe8, 0x32, 0xaa, 0xe8, + 0x46, 0xaa, 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x02, + 0x3f, 0x02, 0xb0, 0x02, 0xe8, 0xc9, 0x95, 0xbb, + 0x47, 0x33, 0xc7, 0x47, 0x02, 0x40, 0x02, 0xb0, + 0x02, 0xe8, 0xbc, 0x95, 0xbb, 0x47, 0x33, 0xc7, + 0x47, 0x02, 0x41, 0x02, 0xb0, 0x02, 0xe8, 0xaf, + 0x95, 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x02, 0x42, + 0x02, 0xb0, 0x02, 0xe8, 0xa2, 0x95, 0xbb, 0x47, + 0x33, 0xc7, 0x47, 0x02, 0x43, 0x02, 0xb0, 0x02, + 0xe8, 0x95, 0x95, 0xbb, 0x47, 0x33, 0xc7, 0x47, + 0x02, 0x44, 0x02, 0xb0, 0x02, 0xe8, 0x88, 0x95, + 0xb9, 0x37, 0x00, 0xb0, 0x12, 0xb4, 0x01, 0xe8, + 0x5b, 0x25, 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x02, + 0x45, 0x02, 0xb0, 0x02, 0xe8, 0x71, 0x95, 0xe8, + 0xec, 0x25, 0xc6, 0x06, 0x33, 0x33, 0x01, 0xc6, + 0x06, 0xdd, 0x1c, 0x02, 0xb0, 0x02, 0xe8, 0x24, + 0x95, 0xc6, 0x06, 0x9f, 0xdb, 0x01, 0xc3, 0xb9, + 0x14, 0x00, 0xb0, 0x09, 0xb4, 0x06, 0xe8, 0x2c, + 0x25, 0xb9, 0x12, 0x02, 0xe8, 0x18, 0x96, 0xe8, + 0xb9, 0x26, 0xc7, 0x06, 0xf3, 0xb4, 0x10, 0x00, + 0xc6, 0x06, 0xdc, 0x1c, 0x01, 0xe8, 0x3f, 0x27, + 0xb9, 0x13, 0x02, 0xc6, 0x06, 0xdc, 0x1c, 0x01, + 0xe8, 0xfc, 0x95, 0xb9, 0x24, 0x00, 0xb0, 0x04, + 0xb4, 0x0c, 0xe8, 0x00, 0x25, 0xb9, 0x14, 0x02, + 0xe8, 0xef, 0x95, 0xb9, 0x15, 0x02, 0xe8, 0xe9, + 0x95, 0xe8, 0xdc, 0xba, 0xb0, 0x09, 0x88, 0x07, + 0xe8, 0x0e, 0x2a, 0xc7, 0x06, 0xaf, 0x64, 0xec, + 0x00, 0xc7, 0x06, 0xb1, 0x64, 0x5f, 0x00, 0xc6, + 0x06, 0xc3, 0x64, 0x01, 0xc6, 0x06, 0xcb, 0x64, + 0x01, 0xc6, 0x06, 0xcd, 0x64, 0x00, 0xe8, 0xfb, + 0x95, 0xb9, 0x09, 0x00, 0xe8, 0x14, 0x2c, 0xc3, + 0xbb, 0x46, 0x67, 0xe8, 0x9c, 0xba, 0x83, 0xc3, + 0x03, 0xff, 0x37, 0x53, 0xc7, 0x07, 0x3f, 0x01, + 0xbe, 0xec, 0x00, 0xbf, 0xbe, 0x00, 0xe8, 0xda, + 0xb0, 0xb9, 0x05, 0x00, 0xb0, 0x04, 0xb4, 0x0b, + 0xe8, 0xa2, 0x24, 0xb9, 0x0e, 0x00, 0xb0, 0x0e, + 0xe8, 0xa3, 0x24, 0xb0, 0x21, 0xe8, 0xa5, 0x24, + 0xb9, 0x05, 0x00, 0xb0, 0x2b, 0xe8, 0xa4, 0x24, + 0xe8, 0xe4, 0x95, 0xe8, 0x72, 0xba, 0x53, 0xc6, + 0x47, 0x02, 0x00, 0xe8, 0xf6, 0x28, 0xe8, 0x30, + 0x00, 0xb9, 0x83, 0x02, 0xe8, 0x6b, 0x95, 0x5b, + 0xc6, 0x47, 0x02, 0x2b, 0xe8, 0xa1, 0x28, 0xe8, + 0x32, 0x00, 0xe8, 0x97, 0x95, 0xbe, 0xec, 0x00, + 0xbf, 0xb3, 0x00, 0xc6, 0x06, 0xc3, 0x64, 0x03, + 0xe8, 0x88, 0xb0, 0x5b, 0x8f, 0x07, 0xb0, 0x2c, + 0xe8, 0x9d, 0xa1, 0xb0, 0x2e, 0xe8, 0x88, 0xa1, + 0xc3, 0x1e, 0xa1, 0xb5, 0x32, 0x8e, 0xd8, 0x33, + 0xdb, 0x8a, 0x07, 0xc6, 0x07, 0x00, 0x1f, 0x2e, + 0xa2, 0xd5, 0x85, 0xc3, 0x2e, 0xa0, 0xd5, 0x85, + 0x1e, 0x8b, 0x1e, 0xb5, 0x32, 0x8e, 0xdb, 0x33, + 0xdb, 0x88, 0x07, 0x1f, 0xc3, 0x00, 0xbb, 0xbf, + 0x48, 0xe8, 0x79, 0x1a, 0xc3, 0xbb, 0xd6, 0x48, + 0xe8, 0x72, 0x1a, 0xc3, 0xbb, 0x5c, 0x49, 0xe8, + 0x6b, 0x1a, 0xc3, 0x80, 0x3e, 0xb0, 0xdb, 0x01, + 0x74, 0x07, 0xbb, 0x86, 0x3d, 0xe8, 0x5d, 0x1a, + 0xc3, 0xb0, 0x06, 0xe8, 0xdb, 0x93, 0xb9, 0x19, + 0x00, 0xb0, 0x0a, 0xb4, 0x0a, 0xe8, 0xf5, 0x23, + 0xb0, 0x0e, 0xe8, 0xf9, 0x23, 0xb0, 0x12, 0xe8, + 0xfb, 0x23, 0xb9, 0x2f, 0x02, 0xe8, 0xe7, 0x94, + 0xe8, 0xcd, 0xb9, 0xb0, 0x17, 0x88, 0x47, 0x01, + 0xe8, 0xfe, 0x28, 0xe8, 0x06, 0x95, 0xc6, 0x06, + 0xb0, 0xdb, 0x02, 0xc3, 0xbb, 0x57, 0x34, 0x80, + 0x3e, 0xb0, 0xdb, 0x01, 0x75, 0x03, 0xbb, 0x82, + 0x48, 0xe8, 0x19, 0x1a, 0xc3, 0xb9, 0x0c, 0x00, + 0xb0, 0x04, 0xb4, 0x08, 0xe8, 0xb6, 0x23, 0xb9, + 0x32, 0x00, 0xb0, 0x14, 0xe8, 0xb7, 0x23, 0xb0, + 0x1d, 0xe8, 0xb9, 0x23, 0xb9, 0x2a, 0x02, 0xe8, + 0xb6, 0x94, 0xb0, 0x13, 0xe8, 0xe9, 0xa0, 0xb0, + 0x16, 0xe8, 0xd4, 0xa0, 0xc3, 0xb9, 0x05, 0x00, + 0xb0, 0x03, 0xb4, 0x0c, 0xe8, 0x8e, 0x23, 0xb9, + 0x38, 0x00, 0xb0, 0x0c, 0xe8, 0x8f, 0x23, 0xb0, + 0x0e, 0xe8, 0x91, 0x23, 0xb0, 0x10, 0xe8, 0x93, + 0x23, 0xb0, 0x12, 0xe8, 0x95, 0x23, 0xb0, 0x16, + 0xe8, 0x97, 0x23, 0xb0, 0x18, 0xe8, 0x99, 0x23, + 0xb9, 0x05, 0x00, 0xb0, 0x1c, 0xe8, 0x98, 0x23, + 0xb9, 0x37, 0x02, 0xe8, 0x72, 0x94, 0xb0, 0x0c, + 0xe8, 0xa5, 0xa0, 0xb0, 0x21, 0xe8, 0x90, 0xa0, + 0xc3, 0x80, 0x3e, 0x92, 0xdb, 0x01, 0x75, 0x07, + 0xbb, 0x40, 0x3d, 0xe8, 0x9f, 0x19, 0xc3, 0xc6, + 0x06, 0x92, 0xdb, 0x01, 0xe8, 0x44, 0x91, 0xbb, + 0xcd, 0x0f, 0xe8, 0x00, 0x8b, 0xc6, 0x06, 0xe6, + 0x1c, 0xd1, 0xb8, 0x07, 0x01, 0xe8, 0x3e, 0x98, + 0xb9, 0x05, 0x00, 0xb0, 0x10, 0xb4, 0x06, 0xe8, + 0x23, 0x23, 0xb9, 0x01, 0x00, 0xb0, 0x19, 0xe8, + 0x24, 0x23, 0xb0, 0x1d, 0xe8, 0x26, 0x23, 0xb0, + 0x22, 0xe8, 0x28, 0x23, 0xc6, 0x06, 0xdc, 0x64, + 0x00, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0xfa, 0x01, + 0xb9, 0xf8, 0x01, 0xe8, 0xf4, 0x93, 0xe8, 0xe7, + 0xb8, 0xc6, 0x07, 0x00, 0xe8, 0x29, 0x27, 0xc7, + 0x06, 0x30, 0x32, 0x00, 0x00, 0xc7, 0x06, 0x2e, + 0x32, 0x72, 0x00, 0xc7, 0x06, 0x2c, 0x32, 0xae, + 0x00, 0xb9, 0x18, 0x00, 0xb0, 0x02, 0xb4, 0x06, + 0xe8, 0xda, 0x22, 0xb9, 0x16, 0x00, 0xb0, 0x18, + 0xe8, 0xdb, 0x22, 0xb9, 0x01, 0x00, 0xb0, 0x1c, + 0xe8, 0xda, 0x22, 0xb0, 0x20, 0xe8, 0xdc, 0x22, + 0xb0, 0x25, 0xe8, 0xde, 0x22, 0xb9, 0x05, 0x00, + 0xb0, 0x2b, 0xe8, 0xdd, 0x22, 0xb9, 0x3d, 0x00, + 0xb0, 0x46, 0xe8, 0xdc, 0x22, 0xb9, 0x3d, 0x00, + 0xb0, 0x5b, 0xe8, 0xdb, 0x22, 0xc6, 0x06, 0x35, + 0x33, 0x06, 0xc6, 0x06, 0x36, 0x33, 0x11, 0xb8, + 0xfb, 0x3c, 0xa3, 0x37, 0x33, 0xb8, 0xcd, 0x70, + 0xa3, 0x39, 0x33, 0xbb, 0x47, 0x33, 0xc7, 0x07, + 0xfb, 0x01, 0xb9, 0xf9, 0x01, 0xe8, 0xf7, 0x93, + 0xe8, 0x6d, 0xb8, 0xb0, 0x04, 0x88, 0x07, 0xe8, + 0x9f, 0x27, 0xb8, 0x03, 0x00, 0xe8, 0xbd, 0x1c, + 0xb8, 0x14, 0x00, 0x01, 0x47, 0x03, 0x01, 0x47, + 0x07, 0xc6, 0x06, 0xcd, 0x64, 0x00, 0xc6, 0x06, + 0xcc, 0x64, 0x01, 0xc6, 0x06, 0xcb, 0x64, 0x01, + 0xff, 0x06, 0xaf, 0x64, 0xe8, 0xec, 0x23, 0xe8, + 0xcf, 0xb6, 0xb9, 0x0a, 0x00, 0xb0, 0x03, 0xb4, + 0x02, 0xe8, 0x49, 0x22, 0xbb, 0x47, 0x33, 0xc7, + 0x07, 0xf7, 0x01, 0xb0, 0x01, 0xe8, 0x60, 0x92, + 0xe8, 0xdb, 0x22, 0xc7, 0x06, 0xf3, 0xb4, 0x16, + 0x00, 0xb8, 0x01, 0x00, 0xe8, 0xaa, 0xa6, 0xb0, + 0x01, 0xe8, 0x11, 0x92, 0xc7, 0x06, 0xf3, 0xb4, + 0x14, 0x00, 0xb0, 0x0d, 0xe8, 0x06, 0x92, 0xb8, + 0x01, 0x00, 0xe8, 0x94, 0xa6, 0xe8, 0xa8, 0xa6, + 0xb0, 0x01, 0xe8, 0xf8, 0x91, 0xb0, 0x02, 0xe8, + 0xf3, 0x91, 0xb0, 0x0e, 0xe8, 0xee, 0x91, 0xb0, + 0x0f, 0xe8, 0xe9, 0x91, 0xb0, 0x10, 0xe8, 0xe4, + 0x91, 0xe8, 0x41, 0x14, 0xb8, 0x32, 0x00, 0xe8, + 0x52, 0x97, 0xe8, 0x47, 0x14, 0xbe, 0xa2, 0x00, + 0xbf, 0xa4, 0x00, 0xc6, 0x06, 0xc3, 0x64, 0x02, + 0xe8, 0x10, 0xae, 0xc6, 0x06, 0xe6, 0x1c, 0xe5, + 0xbb, 0x01, 0x3d, 0xbe, 0x46, 0x5f, 0xe8, 0xd5, + 0x1a, 0xc6, 0x06, 0xe6, 0x1c, 0xd8, 0xbb, 0x20, + 0x3d, 0xbe, 0x5a, 0x5f, 0xe8, 0xc7, 0x1a, 0xbe, + 0xa2, 0x00, 0xbf, 0xbf, 0x00, 0xc6, 0x06, 0xc3, + 0x64, 0x02, 0xe8, 0xe6, 0xad, 0xe8, 0xfd, 0x13, + 0xb8, 0x32, 0x00, 0xe8, 0x0e, 0x97, 0xe8, 0x97, + 0xb7, 0x32, 0xc0, 0x88, 0x47, 0x01, 0x88, 0x47, + 0x02, 0x88, 0x47, 0x03, 0x88, 0x47, 0x04, 0xc6, + 0x06, 0xdc, 0x1c, 0x03, 0xe8, 0x0d, 0x26, 0xbb, + 0x46, 0x67, 0xe8, 0x6d, 0xb7, 0x43, 0x33, 0xc0, + 0x89, 0x47, 0x02, 0x89, 0x47, 0x04, 0x89, 0x47, + 0x06, 0x89, 0x47, 0x08, 0xb9, 0x3e, 0x00, 0xb0, + 0x01, 0xb4, 0x0e, 0xe8, 0x77, 0x21, 0xb9, 0x09, + 0x00, 0xb0, 0x08, 0xe8, 0x78, 0x21, 0xe8, 0xc3, + 0x13, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x00, 0x02, + 0xb0, 0x01, 0xe8, 0x83, 0x91, 0xe8, 0x4c, 0x22, + 0xb0, 0x01, 0xb4, 0x00, 0xe8, 0xd2, 0xa5, 0xe8, + 0xe6, 0xa5, 0xe8, 0xa8, 0x96, 0xbb, 0x3a, 0x3d, + 0xe8, 0xa2, 0x17, 0xb0, 0x07, 0xb4, 0x01, 0xb9, + 0xe4, 0x00, 0xba, 0xab, 0x00, 0xe8, 0x45, 0x91, + 0xb0, 0x08, 0xb9, 0x22, 0x01, 0xe8, 0x3d, 0x91, + 0xc3, 0x80, 0x3e, 0x9a, 0xdb, 0x01, 0x74, 0x3b, + 0xe8, 0x0b, 0x00, 0xb0, 0x0a, 0xe8, 0x70, 0x9e, + 0xc6, 0x06, 0x9a, 0xdb, 0x01, 0xc3, 0xe8, 0xdc, + 0x8e, 0xbb, 0x5f, 0x1b, 0xe8, 0xde, 0x88, 0xb9, + 0x05, 0x00, 0xb0, 0x02, 0xb4, 0x03, 0xe8, 0x0c, + 0x21, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x1a, 0x02, + 0xb9, 0x19, 0x02, 0xe8, 0x27, 0x92, 0xe8, 0x54, + 0x96, 0xe8, 0xb9, 0x8e, 0xbb, 0xe0, 0x1b, 0xe8, + 0xbb, 0x88, 0xc3, 0xe8, 0xaf, 0x8e, 0xbb, 0xf0, + 0xda, 0xe8, 0x99, 0x88, 0xe8, 0xae, 0x88, 0xc3, + 0x80, 0x3e, 0x9a, 0xdb, 0x01, 0x74, 0xec, 0xe8, + 0xbc, 0xff, 0xb0, 0x0b, 0xe8, 0x21, 0x9e, 0xc6, + 0x06, 0x9a, 0xdb, 0x01, 0xc3, 0x80, 0x3e, 0x9b, + 0xdb, 0x01, 0x74, 0x76, 0xe8, 0x0b, 0x00, 0xb0, + 0x0a, 0xe8, 0x0c, 0x9e, 0xc6, 0x06, 0x9b, 0xdb, + 0x01, 0xc3, 0xe8, 0x27, 0x8f, 0xbb, 0x93, 0x22, + 0xe8, 0x7a, 0x88, 0xb9, 0x05, 0x00, 0xb0, 0x0a, + 0xb4, 0x03, 0xe8, 0xa8, 0x20, 0xbb, 0x47, 0x33, + 0xc7, 0x47, 0x02, 0x1b, 0x02, 0xb9, 0x1c, 0x02, + 0xe8, 0xc2, 0x91, 0xb8, 0x64, 0x00, 0xe8, 0xd1, + 0x95, 0xe8, 0x00, 0x8f, 0xbb, 0xb1, 0x24, 0xe8, + 0x53, 0x88, 0xe8, 0xd9, 0x95, 0xe8, 0x45, 0x8e, + 0xbb, 0xd7, 0x24, 0xe8, 0x47, 0x88, 0xe8, 0xeb, + 0x8e, 0xbb, 0x14, 0x25, 0xe8, 0x3e, 0x88, 0xe8, + 0xc4, 0x95, 0x8b, 0x3e, 0xb1, 0x64, 0x8b, 0x36, + 0xaf, 0x64, 0x57, 0x56, 0x47, 0xe8, 0x93, 0xac, + 0xe8, 0xb3, 0x95, 0xbb, 0x70, 0x25, 0xe8, 0x24, + 0x88, 0xe8, 0xaa, 0x95, 0x5e, 0x5f, 0xe8, 0x82, + 0xac, 0xc3, 0xe8, 0xbf, 0x8e, 0xbb, 0x02, 0xdb, + 0xe8, 0xfa, 0x87, 0xe8, 0x0f, 0x88, 0xc3, 0x80, + 0x3e, 0x9b, 0xdb, 0x01, 0x74, 0xec, 0xe8, 0x81, + 0xff, 0xb0, 0x0b, 0xe8, 0x82, 0x9d, 0xc6, 0x06, + 0x9b, 0xdb, 0x01, 0xc3, 0xb0, 0x17, 0xe8, 0x77, + 0x9d, 0xe8, 0x98, 0x8e, 0xbb, 0x34, 0x26, 0xe8, + 0xeb, 0x87, 0xb9, 0x05, 0x00, 0xb0, 0x06, 0xb4, + 0x0c, 0xe8, 0x19, 0x20, 0xbb, 0x47, 0x33, 0xc7, + 0x47, 0x02, 0x2c, 0x02, 0xb9, 0x2b, 0x02, 0xe8, + 0x33, 0x91, 0xe8, 0x77, 0x8e, 0xbb, 0x0a, 0x28, + 0xe8, 0xca, 0x87, 0xb9, 0x05, 0x00, 0xb0, 0x0a, + 0xb4, 0x0c, 0xe8, 0xf8, 0x1f, 0xbb, 0x47, 0x33, + 0xc7, 0x47, 0x02, 0x2e, 0x02, 0xb9, 0x2d, 0x02, + 0xe8, 0x12, 0x91, 0xe8, 0x56, 0x8e, 0xbb, 0x71, + 0x29, 0xe8, 0xa9, 0x87, 0xb0, 0x18, 0xe8, 0x17, + 0x9d, 0xc3, 0xb9, 0x2d, 0x00, 0xb0, 0x10, 0xb4, + 0x06, 0xe8, 0xd1, 0x1f, 0xe8, 0x28, 0x91, 0xe8, + 0x7f, 0xfb, 0xb9, 0x30, 0x02, 0xe8, 0xba, 0x90, + 0xe8, 0x89, 0xfb, 0xe8, 0xee, 0x90, 0xb0, 0x1a, + 0xe8, 0x05, 0x9d, 0xb0, 0x1b, 0xe8, 0xf0, 0x9c, + 0xe8, 0x03, 0x95, 0xe8, 0x6f, 0x8d, 0xbb, 0xcd, + 0x1e, 0xe8, 0x71, 0x87, 0x8b, 0x3e, 0xb1, 0x64, + 0x8b, 0x36, 0xaf, 0x64, 0x4e, 0xe8, 0xcb, 0xab, + 0xe8, 0x5a, 0x8d, 0xbb, 0x09, 0x1f, 0xe8, 0x5c, + 0x87, 0xc6, 0x06, 0xb1, 0xdb, 0x01, 0xc3, 0x80, + 0x3e, 0xb5, 0xdb, 0x01, 0x74, 0x07, 0xbb, 0x29, + 0x4a, 0xe8, 0xd9, 0x15, 0xc3, 0xe8, 0xec, 0x8d, + 0xbb, 0x92, 0x29, 0xe8, 0x3f, 0x87, 0xb9, 0x05, + 0x00, 0xb0, 0x03, 0xb4, 0x0e, 0xe8, 0x6d, 0x1f, + 0xb0, 0x14, 0xe8, 0x71, 0x1f, 0xbb, 0x47, 0x33, + 0xc7, 0x47, 0x02, 0x9f, 0x02, 0xb9, 0x9e, 0x02, + 0xe8, 0x5f, 0x90, 0xe8, 0xed, 0x20, 0xe8, 0xcb, + 0x00, 0xe8, 0xe4, 0x8d, 0xbb, 0x00, 0x2a, 0xe8, + 0x13, 0x87, 0xe8, 0xbf, 0x00, 0xc6, 0x06, 0xe6, + 0x1c, 0xe5, 0xc6, 0x06, 0x35, 0x33, 0x17, 0xc6, + 0x06, 0x36, 0x33, 0x26, 0xb8, 0x5b, 0x4a, 0xa3, + 0x37, 0x33, 0xb8, 0x4c, 0x8f, 0xa3, 0x39, 0x33, + 0xb9, 0x53, 0x00, 0xb0, 0x0c, 0xb4, 0x0c, 0xe8, + 0x23, 0x1f, 0xc6, 0x06, 0xdc, 0x64, 0x00, 0xb9, + 0xa1, 0x02, 0xe8, 0x8a, 0x90, 0xe8, 0xab, 0x20, + 0xe8, 0x01, 0x20, 0xc7, 0x06, 0xf3, 0xb4, 0x0b, + 0x00, 0xc6, 0x06, 0xdc, 0x1c, 0x01, 0xe8, 0x2e, + 0x21, 0xb9, 0x18, 0x00, 0xb0, 0x1f, 0xb4, 0x09, + 0xe8, 0xfa, 0x1e, 0xb0, 0x30, 0xe8, 0xfe, 0x1e, + 0xb9, 0x4f, 0x00, 0xb0, 0x32, 0xb4, 0x0c, 0xe8, + 0xfb, 0x1e, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0xa3, + 0x02, 0xb9, 0xa2, 0x02, 0xc6, 0x06, 0xdc, 0x1c, + 0x01, 0xe8, 0xce, 0x8f, 0xe8, 0x6c, 0x20, 0xe8, + 0xc2, 0x1f, 0xc7, 0x06, 0xf3, 0xb4, 0x1c, 0x00, + 0xc6, 0x06, 0xdc, 0x1c, 0x01, 0xe8, 0xef, 0x20, + 0xc7, 0x06, 0xaf, 0x64, 0x00, 0x00, 0xc7, 0x06, + 0xb1, 0x64, 0xa7, 0x00, 0xc6, 0x06, 0xc3, 0x64, + 0x02, 0xc6, 0x06, 0xcb, 0x64, 0x00, 0xc6, 0x06, + 0xcd, 0x64, 0x00, 0xe8, 0xd6, 0x8f, 0xbe, 0x42, + 0x00, 0xbf, 0xa7, 0x00, 0xe8, 0xcc, 0xaa, 0xbb, + 0x6f, 0x4a, 0xe8, 0xf0, 0x14, 0xe8, 0x16, 0x9c, + 0xb0, 0x1d, 0xe8, 0xcb, 0x9b, 0xb9, 0x0a, 0x00, + 0xe8, 0xd8, 0x25, 0xc3, 0xbb, 0x47, 0x33, 0xc7, + 0x47, 0x02, 0xa0, 0x02, 0xb0, 0x02, 0xe8, 0xa6, + 0x8e, 0xc3, 0xe8, 0xd2, 0x8f, 0xe8, 0x60, 0xb4, + 0xc6, 0x07, 0x00, 0xe8, 0xe6, 0x22, 0xb9, 0x05, + 0x00, 0xb0, 0x03, 0xb4, 0x05, 0xe8, 0x65, 0x1e, + 0xb0, 0x06, 0xe8, 0x69, 0x1e, 0xb0, 0x0a, 0xe8, + 0x6b, 0x1e, 0xb9, 0x5c, 0x00, 0xb0, 0x14, 0xe8, + 0x6a, 0x1e, 0xb0, 0x26, 0xe8, 0x6c, 0x1e, 0xb0, + 0x3a, 0xe8, 0x6e, 0x1e, 0xc6, 0x06, 0x35, 0x33, + 0x3a, 0xc6, 0x06, 0x36, 0x33, 0x43, 0xb8, 0x4a, + 0x46, 0xa3, 0x37, 0x33, 0xb8, 0x9e, 0x8e, 0xa3, + 0x39, 0x33, 0xc6, 0x06, 0xdc, 0x64, 0x00, 0xb9, + 0x5a, 0x02, 0xe8, 0x9a, 0x8f, 0xc6, 0x06, 0xdc, + 0x64, 0x01, 0xb9, 0x05, 0x00, 0xb0, 0x03, 0xb4, + 0x04, 0xe8, 0x19, 0x1e, 0xb9, 0x5b, 0x02, 0xe8, + 0x18, 0x8f, 0xe8, 0xfb, 0xb3, 0xc6, 0x07, 0x1b, + 0xe8, 0x3d, 0x22, 0xe8, 0x36, 0x8f, 0xc6, 0x06, + 0xa5, 0xdb, 0x01, 0xc3, 0xbb, 0x31, 0x3c, 0xe8, + 0x53, 0x14, 0xb9, 0x05, 0x00, 0xb0, 0x03, 0xb4, + 0x0a, 0xe8, 0xf1, 0x1d, 0xb9, 0x1a, 0x00, 0xb0, + 0x0d, 0xe8, 0xf2, 0x1d, 0xbb, 0x47, 0x33, 0xc7, + 0x07, 0x92, 0x02, 0xb9, 0x91, 0x02, 0xe8, 0xce, + 0x8e, 0xe8, 0x6f, 0x1f, 0xbb, 0x47, 0x33, 0xc7, + 0x07, 0x93, 0x02, 0xb0, 0x01, 0xe8, 0xf7, 0x8d, + 0xe8, 0xb9, 0x1e, 0xe8, 0x1f, 0x93, 0xbb, 0x3d, + 0x3c, 0xe8, 0x19, 0x14, 0xb0, 0x24, 0xe8, 0x07, + 0x9b, 0xb0, 0x09, 0xe8, 0x1c, 0x00, 0xb0, 0x07, + 0xe8, 0x17, 0x00, 0xbb, 0x46, 0x67, 0xe8, 0x89, + 0xb3, 0x43, 0xc7, 0x47, 0x06, 0x0a, 0x01, 0xc7, + 0x47, 0x08, 0xc1, 0x00, 0xc6, 0x06, 0xad, 0xdb, + 0x01, 0xc3, 0xb4, 0x01, 0xb9, 0x29, 0x01, 0xba, + 0xb5, 0x00, 0xe8, 0x98, 0x8d, 0xc3, 0xb9, 0x05, + 0x00, 0xb0, 0x03, 0xb4, 0x09, 0xe8, 0x85, 0x1d, + 0xb9, 0x1a, 0x00, 0xb0, 0x0d, 0xe8, 0x86, 0x1d, + 0xb9, 0x18, 0x00, 0xb0, 0x16, 0xe8, 0x85, 0x1d, + 0xb9, 0x50, 0x02, 0xe8, 0x71, 0x8e, 0xe8, 0x57, + 0xb3, 0xc6, 0x07, 0x00, 0xe8, 0x99, 0x21, 0xb9, + 0x01, 0x00, 0xb0, 0x05, 0xb4, 0x09, 0xe8, 0x5c, + 0x1d, 0xb0, 0x09, 0xe8, 0x60, 0x1d, 0xb0, 0x0d, + 0xe8, 0x62, 0x1d, 0xb9, 0x51, 0x02, 0xe8, 0x51, + 0x8e, 0xe8, 0x34, 0xb3, 0xc6, 0x07, 0x1c, 0xe8, + 0x76, 0x21, 0xe8, 0x6f, 0x8e, 0xb0, 0x23, 0xe8, + 0x86, 0x9a, 0xb0, 0x01, 0xe8, 0x12, 0x8d, 0xc3, + 0xb9, 0x05, 0x00, 0xb0, 0x03, 0xb4, 0x09, 0xe8, + 0x2b, 0x1d, 0xb9, 0x84, 0x02, 0xe8, 0x27, 0x8e, + 0xe8, 0x0d, 0xb3, 0xc6, 0x47, 0x01, 0x2d, 0xe8, + 0x4e, 0x21, 0xb9, 0x38, 0x00, 0xb0, 0x02, 0xb4, + 0x08, 0xe8, 0x11, 0x1d, 0xb9, 0x1a, 0x00, 0xb0, + 0x04, 0xe8, 0x12, 0x1d, 0xb9, 0x85, 0x02, 0xe8, + 0x08, 0x8e, 0xb9, 0x38, 0x00, 0xb0, 0x01, 0xb4, + 0x08, 0xe8, 0xf9, 0x1c, 0xb0, 0x06, 0xe8, 0x04, + 0x1d, 0xb9, 0x1a, 0x00, 0xb0, 0x03, 0xe8, 0xf5, + 0x1c, 0xb0, 0x08, 0xe8, 0xfe, 0x1c, 0xb9, 0x86, + 0x02, 0xe8, 0xe6, 0x8d, 0xb9, 0x05, 0x00, 0xb0, + 0x15, 0xb4, 0x09, 0xe8, 0xd7, 0x1c, 0xb9, 0x87, + 0x02, 0xe8, 0xf9, 0x8d, 0xb0, 0x02, 0xe8, 0xb4, + 0x8c, 0xb8, 0x03, 0x00, 0xe8, 0x0e, 0x17, 0xc7, + 0x47, 0x0d, 0x9c, 0x00, 0xc6, 0x06, 0xac, 0xdb, + 0x01, 0xc3, 0xbb, 0x0b, 0x5e, 0xe8, 0x0d, 0x13, + 0xc3, 0xbb, 0xa1, 0x46, 0xe8, 0x06, 0x13, 0xc3, + 0xbb, 0xc3, 0x46, 0xe8, 0xff, 0x12, 0xc3, 0xb9, + 0x05, 0x00, 0xb0, 0x02, 0xb4, 0x07, 0xe8, 0x9c, + 0x1c, 0xb9, 0x0f, 0x00, 0xb0, 0x0c, 0xe8, 0x9d, + 0x1c, 0xb9, 0x7e, 0x02, 0xe8, 0xa1, 0x8d, 0xb0, + 0x30, 0xe8, 0xd4, 0x99, 0xe8, 0x0d, 0x91, 0x72, + 0x1e, 0xb0, 0x30, 0xe8, 0xba, 0x99, 0xb9, 0x18, + 0x00, 0xb0, 0x1a, 0xb4, 0x07, 0xe8, 0x75, 0x1c, + 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x04, 0x8b, 0x02, + 0xb9, 0x8a, 0x02, 0xe8, 0x7a, 0x8d, 0xc3, 0xa1, + 0x1f, 0xc4, 0xe8, 0xc7, 0x9a, 0x3c, 0x31, 0x75, + 0xd8, 0x83, 0x3e, 0x52, 0x72, 0x05, 0x75, 0xd1, + 0xc6, 0x06, 0xcf, 0x00, 0x00, 0xb9, 0x05, 0x00, + 0xb0, 0x02, 0xb4, 0x07, 0xe8, 0x46, 0x1c, 0xb9, + 0x34, 0x00, 0xb0, 0x0d, 0xe8, 0x47, 0x1c, 0xb9, + 0x88, 0x02, 0xe8, 0x2a, 0x8d, 0xe8, 0x20, 0xb2, + 0xc6, 0x47, 0x01, 0x2e, 0xe8, 0x61, 0x20, 0xe8, + 0x5a, 0x8d, 0xb0, 0x31, 0xe8, 0x71, 0x99, 0xe8, + 0xaa, 0x90, 0x73, 0x03, 0xe9, 0x91, 0x00, 0xb9, + 0x1b, 0x00, 0xb0, 0x05, 0xb4, 0x07, 0xe8, 0x14, + 0x1c, 0xe8, 0xfc, 0xb1, 0xc6, 0x47, 0x01, 0x00, + 0xe8, 0x81, 0x20, 0xb9, 0x8c, 0x02, 0xe8, 0xf9, + 0x8c, 0xb9, 0x18, 0x00, 0xb0, 0x04, 0xb4, 0x07, + 0xe8, 0xfa, 0x1b, 0xb9, 0x05, 0x00, 0xb0, 0x0c, + 0xe8, 0xfb, 0x1b, 0xc7, 0x06, 0xaf, 0x64, 0xbb, + 0x00, 0xc7, 0x06, 0xb1, 0x64, 0xb3, 0x00, 0xc6, + 0x06, 0xcc, 0x64, 0x01, 0xc6, 0x06, 0xcb, 0x64, + 0x00, 0xc6, 0x06, 0xdc, 0x64, 0x00, 0xb9, 0x8d, + 0x02, 0xe8, 0xc6, 0x8c, 0xbb, 0x47, 0x33, 0xc7, + 0x47, 0x04, 0x8f, 0x02, 0xb9, 0x8e, 0x02, 0xe8, + 0xdd, 0x8c, 0xff, 0x36, 0xcf, 0x00, 0xc6, 0x06, + 0xcf, 0x00, 0x00, 0xbb, 0xf6, 0x3b, 0xe8, 0x0c, + 0x12, 0x8f, 0x06, 0xcf, 0x00, 0xb0, 0x31, 0xe8, + 0xe6, 0x98, 0xc7, 0x06, 0xf3, 0xb4, 0x1b, 0x00, + 0xb0, 0x02, 0xb4, 0x04, 0xe8, 0x1a, 0xa0, 0xb0, + 0x04, 0xe8, 0x75, 0x8b, 0xc6, 0x06, 0xa9, 0xdb, + 0x00, 0xc7, 0x06, 0xf3, 0xb4, 0x1a, 0x00, 0xc3, + 0xa1, 0x1f, 0xc4, 0xe8, 0xee, 0x99, 0x3c, 0x1d, + 0x74, 0x03, 0xe9, 0x62, 0xff, 0x83, 0x3e, 0x52, + 0x72, 0x05, 0x74, 0x03, 0xe9, 0x58, 0xff, 0xc6, + 0x06, 0xcf, 0x00, 0x00, 0xc7, 0x06, 0x1f, 0xc4, + 0x00, 0x00, 0xb9, 0x05, 0x00, 0xb0, 0x02, 0xb4, + 0x07, 0xe8, 0x61, 0x1b, 0xb9, 0x13, 0x00, 0xb0, + 0x0c, 0xe8, 0x62, 0x1b, 0xb9, 0x89, 0x02, 0xe8, + 0x48, 0x8c, 0xe8, 0x3b, 0xb1, 0xc6, 0x47, 0x01, + 0x2f, 0xe8, 0xc0, 0x1f, 0xe8, 0x75, 0x8c, 0xb8, + 0x2c, 0x01, 0xe8, 0x7d, 0x90, 0xb9, 0x44, 0x00, + 0xb0, 0x01, 0xb4, 0x0c, 0xe8, 0x36, 0x1b, 0xb0, + 0x05, 0xe8, 0x3a, 0x1b, 0xb0, 0x09, 0xe8, 0x3c, + 0x1b, 0xb0, 0x0d, 0xe8, 0x3e, 0x1b, 0xb0, 0x11, + 0xe8, 0x40, 0x1b, 0xb0, 0x15, 0xe8, 0x42, 0x1b, + 0xb0, 0x19, 0xe8, 0x44, 0x1b, 0xb0, 0x1d, 0xe8, + 0x46, 0x1b, 0xb0, 0x21, 0xe8, 0x48, 0x1b, 0xb0, + 0x25, 0xe8, 0x4a, 0x1b, 0xbb, 0x47, 0x33, 0xc7, + 0x47, 0x04, 0x7f, 0x02, 0xb0, 0x03, 0xe8, 0x68, + 0x8b, 0xe8, 0xe4, 0xb0, 0xc6, 0x07, 0x2a, 0xe8, + 0x6a, 0x1f, 0xe8, 0x1f, 0x8c, 0xb0, 0x06, 0xe8, + 0xc7, 0x8a, 0xb0, 0x05, 0xe8, 0xce, 0x8a, 0xc6, + 0x06, 0xab, 0xdb, 0x01, 0xc3, 0xbb, 0xd6, 0x2d, + 0xe8, 0xa2, 0x82, 0xe8, 0x31, 0x8c, 0xb9, 0x38, + 0x00, 0xb0, 0x10, 0xb4, 0x07, 0xe8, 0xcd, 0x1a, + 0xb0, 0x12, 0xe8, 0xd1, 0x1a, 0xb0, 0x14, 0xe8, + 0xd3, 0x1a, 0xb0, 0x16, 0xe8, 0xd5, 0x1a, 0xb0, + 0x18, 0xe8, 0xd7, 0x1a, 0xb0, 0x1a, 0xe8, 0xd9, + 0x1a, 0xb0, 0x1c, 0xe8, 0xdb, 0x1a, 0xb0, 0x1e, + 0xe8, 0xdd, 0x1a, 0xb9, 0x02, 0x00, 0xb0, 0x40, + 0xe8, 0xdc, 0x1a, 0xb9, 0x03, 0x00, 0xb0, 0x4a, + 0xe8, 0xdb, 0x1a, 0xc6, 0x06, 0x35, 0x33, 0x23, + 0xc6, 0x06, 0x36, 0x33, 0x32, 0xb8, 0xc7, 0x34, + 0xa3, 0x37, 0x33, 0xb8, 0xd4, 0x64, 0xa3, 0x39, + 0x33, 0xc6, 0x06, 0xe6, 0x1c, 0xd1, 0xb0, 0x01, + 0xb4, 0x03, 0xe8, 0x62, 0x8f, 0xbb, 0x47, 0x33, + 0xc7, 0x47, 0x04, 0x05, 0x02, 0xc7, 0x47, 0x06, + 0x06, 0x02, 0xb9, 0x04, 0x02, 0xe8, 0xd7, 0x8b, + 0xe8, 0xf8, 0x1b, 0xe8, 0x4e, 0x1b, 0xe8, 0xd8, + 0xae, 0xb0, 0x02, 0xe8, 0x3f, 0x8a, 0xb0, 0x03, + 0xe8, 0x3a, 0x8a, 0xb8, 0x03, 0x00, 0xe8, 0xc8, + 0x9e, 0xe8, 0xdc, 0x9e, 0xb8, 0x04, 0x00, 0xe8, + 0xbf, 0x9e, 0xe8, 0xd3, 0x9e, 0xb0, 0x02, 0xe8, + 0x86, 0x97, 0xc6, 0x06, 0x96, 0xdb, 0x01, 0xc3, + 0xbb, 0x2f, 0x3b, 0xe8, 0x87, 0x10, 0xe8, 0x86, + 0x8b, 0xb4, 0x02, 0xb0, 0x04, 0xe8, 0x36, 0x8f, + 0xb9, 0x05, 0x00, 0xb0, 0x03, 0xb4, 0x08, 0xe8, + 0x1b, 0x1a, 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x02, + 0x75, 0x02, 0xb9, 0x73, 0x02, 0xe8, 0x12, 0x8b, + 0xb9, 0x29, 0x00, 0xb0, 0x0a, 0xb4, 0x06, 0xe8, + 0x03, 0x1a, 0xb0, 0x2f, 0xe8, 0x07, 0x1a, 0xb9, + 0x37, 0x00, 0xb0, 0x34, 0xe8, 0x06, 0x1a, 0x80, + 0x3e, 0xa8, 0xdb, 0x01, 0x74, 0x15, 0xbb, 0x47, + 0x33, 0xc7, 0x47, 0x02, 0x76, 0x02, 0xb9, 0x74, + 0x02, 0xe8, 0x09, 0x8b, 0xbb, 0x59, 0x3b, 0xe8, + 0x33, 0x10, 0xc3, 0xbb, 0x47, 0x33, 0xc7, 0x47, + 0x02, 0x7a, 0x02, 0xb9, 0x74, 0x02, 0xe8, 0xd1, + 0x8a, 0xb0, 0x04, 0xe8, 0xaf, 0x89, 0xe8, 0x5a, + 0x1b, 0xe8, 0x62, 0x1a, 0xe8, 0x3a, 0xae, 0xb8, + 0x02, 0x00, 0xe8, 0x34, 0x9e, 0xe8, 0x48, 0x9e, + 0xbb, 0x6c, 0x3b, 0xe8, 0x07, 0x10, 0xc6, 0x06, + 0xa9, 0xdb, 0x01, 0xc3, 0x80, 0x3e, 0xab, 0xdb, + 0x01, 0x75, 0x07, 0xbb, 0x0b, 0x3c, 0xe8, 0xf4, + 0x0f, 0xc3, 0xb9, 0x05, 0x00, 0xb0, 0x0b, 0xb4, + 0x06, 0xe8, 0x91, 0x19, 0xb9, 0x31, 0x00, 0xb0, + 0x15, 0xe8, 0x92, 0x19, 0xe8, 0xe0, 0x8a, 0xc7, + 0x06, 0xb1, 0x64, 0x63, 0x00, 0xb9, 0x78, 0x02, + 0xe8, 0x7f, 0x8a, 0xe8, 0x62, 0xaf, 0xc6, 0x47, + 0x05, 0x28, 0xe8, 0xa3, 0x1d, 0xc7, 0x06, 0xaf, + 0x64, 0xe9, 0x00, 0xc7, 0x06, 0xb1, 0x64, 0x8b, + 0x00, 0xb9, 0x79, 0x02, 0xe8, 0x86, 0x8a, 0xc6, + 0x06, 0xa8, 0xdb, 0x01, 0xb0, 0x2f, 0xe8, 0x9f, + 0x96, 0x80, 0x3e, 0xaa, 0xdb, 0x01, 0x74, 0x0b, + 0xc6, 0x06, 0xaa, 0xdb, 0x01, 0xbb, 0x8b, 0x3b, + 0xe8, 0x9a, 0x0f, 0xc3, 0xb9, 0x05, 0x00, 0xb0, + 0x03, 0xb4, 0x0c, 0xe8, 0x37, 0x19, 0xb9, 0x06, + 0x00, 0xb0, 0x09, 0xe8, 0x38, 0x19, 0xb9, 0x27, + 0x03, 0xe8, 0x1b, 0x8a, 0xe8, 0x11, 0xaf, 0xc6, + 0x07, 0x53, 0xe8, 0x53, 0x1d, 0xe8, 0x4c, 0x8a, + 0xb0, 0x49, 0xe8, 0x63, 0x96, 0xb0, 0x02, 0xe8, + 0xfb, 0x88, 0xb0, 0x03, 0xe8, 0xea, 0x88, 0xc6, + 0x06, 0xef, 0xdb, 0x01, 0xc3, 0xbb, 0x8e, 0x4e, + 0xe8, 0x5a, 0x0f, 0xc3, 0xe8, 0x67, 0x00, 0x80, + 0x3e, 0xd2, 0xdb, 0x01, 0x75, 0x07, 0xbb, 0xc3, + 0x50, 0xe8, 0x49, 0x0f, 0xc3, 0x80, 0x3e, 0xcb, + 0xdb, 0x01, 0x74, 0x07, 0xbb, 0x01, 0x51, 0xe8, + 0x3b, 0x0f, 0xc3, 0xbb, 0xe1, 0x50, 0xe8, 0x34, + 0x0f, 0xb9, 0x05, 0x00, 0xb0, 0x03, 0xb4, 0x04, + 0xe8, 0xd2, 0x18, 0xb0, 0x27, 0xe8, 0xd6, 0x18, + 0xc6, 0x06, 0xe6, 0x1c, 0xd0, 0xc6, 0x06, 0x35, + 0x33, 0x09, 0xc6, 0x06, 0x36, 0x33, 0x23, 0xb8, + 0x24, 0x51, 0xa3, 0x37, 0x33, 0xb8, 0xc4, 0x9d, + 0xa3, 0x39, 0x33, 0xb9, 0xd8, 0x02, 0xe8, 0x1e, + 0x8a, 0xe8, 0xd8, 0x89, 0xe8, 0xea, 0x87, 0xbb, + 0x17, 0x3d, 0xe8, 0x68, 0x80, 0xc6, 0x06, 0xd2, + 0xdb, 0x01, 0xe8, 0x10, 0x00, 0xc3, 0x80, 0x3e, + 0xd1, 0xdb, 0x01, 0x74, 0x07, 0xbb, 0xa6, 0x50, + 0xe8, 0xe2, 0x0e, 0x58, 0xc3, 0x80, 0x3e, 0xd2, + 0xdb, 0x00, 0x74, 0x4e, 0x80, 0x3e, 0xd3, 0xdb, + 0x00, 0x74, 0x47, 0x80, 0x3e, 0xd4, 0xdb, 0x00, + 0x74, 0x40, 0xb8, 0x01, 0x01, 0xe8, 0x7e, 0x8d, + 0xb9, 0x59, 0x00, 0xb0, 0x02, 0xb4, 0x03, 0xe8, + 0x63, 0x18, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0xdb, + 0x02, 0xb0, 0x01, 0xe8, 0x7a, 0x88, 0xe8, 0x43, + 0x19, 0xe8, 0x3c, 0xae, 0xc6, 0x07, 0x46, 0xe8, + 0xc2, 0x1c, 0xb8, 0x01, 0x00, 0xe8, 0xc1, 0x9c, + 0xe8, 0xd5, 0x9c, 0xb0, 0x01, 0xe8, 0x25, 0x88, + 0xb0, 0x02, 0xe8, 0x14, 0x88, 0xb0, 0x03, 0xe8, + 0x0f, 0x88, 0xc3, 0xe8, 0x98, 0xff, 0x80, 0x3e, + 0xd3, 0xdb, 0x01, 0x75, 0x07, 0xbb, 0xc3, 0x50, + 0xe8, 0x7a, 0x0e, 0xc3, 0xbb, 0x38, 0x51, 0xe8, + 0x73, 0x0e, 0xb9, 0x05, 0x00, 0xb0, 0x03, 0xb4, + 0x04, 0xe8, 0x11, 0x18, 0xb0, 0x17, 0xe8, 0x15, + 0x18, 0xb9, 0xd9, 0x02, 0xe8, 0x19, 0x89, 0xe8, + 0x47, 0x87, 0xbb, 0x70, 0x3d, 0xe8, 0xc5, 0x7f, + 0xc6, 0x06, 0xd3, 0xdb, 0x01, 0xe8, 0x6d, 0xff, + 0xc3, 0xe8, 0x5a, 0xff, 0x80, 0x3e, 0xd4, 0xdb, + 0x01, 0x75, 0x07, 0xbb, 0xc3, 0x50, 0xe8, 0x3c, + 0x0e, 0xc3, 0xbb, 0x61, 0x51, 0xe8, 0x35, 0x0e, + 0xb9, 0x05, 0x00, 0xb0, 0x03, 0xb4, 0x04, 0xe8, + 0xd3, 0x17, 0xb0, 0x19, 0xe8, 0xd7, 0x17, 0xb9, + 0xda, 0x02, 0xe8, 0xdb, 0x88, 0xe8, 0x09, 0x87, + 0xbb, 0xd6, 0x3d, 0xe8, 0x87, 0x7f, 0xc6, 0x06, + 0xd4, 0xdb, 0x01, 0xe8, 0x2f, 0xff, 0xc3, 0xbb, + 0xfa, 0x4e, 0xe8, 0x08, 0x0e, 0xc3, 0xe8, 0x06, + 0x89, 0xe8, 0x94, 0xad, 0xc6, 0x47, 0x02, 0x40, + 0xe8, 0x19, 0x1c, 0xb9, 0x05, 0x00, 0xb0, 0x03, + 0xb4, 0x0a, 0xe8, 0x98, 0x17, 0xb9, 0x34, 0x00, + 0xb0, 0x0a, 0xe8, 0x99, 0x17, 0xb9, 0xc7, 0x02, + 0xe8, 0xa4, 0x88, 0x8b, 0x36, 0xaf, 0x64, 0x8b, + 0x3e, 0xb1, 0x64, 0xc6, 0x06, 0xc3, 0x64, 0x04, + 0xe8, 0xa8, 0xa3, 0xe8, 0x98, 0x86, 0xbb, 0x21, + 0x3b, 0xe8, 0x39, 0x7f, 0xbe, 0x2c, 0x01, 0xbf, + 0xbe, 0x00, 0xc6, 0x06, 0xc3, 0x64, 0x04, 0xe8, + 0x91, 0xa3, 0xb0, 0x40, 0xe8, 0xa9, 0x94, 0xb0, + 0x08, 0xe8, 0x41, 0x87, 0xbb, 0x47, 0x33, 0xc7, + 0x07, 0xc8, 0x02, 0xb0, 0x01, 0xe8, 0x70, 0x87, + 0xe8, 0x35, 0xad, 0xc6, 0x47, 0x02, 0x00, 0xe8, + 0xba, 0x1b, 0xb9, 0x0f, 0x00, 0xb0, 0x1a, 0xb4, + 0x02, 0xe8, 0x39, 0x17, 0xb0, 0x1c, 0xe8, 0x3d, + 0x17, 0xb9, 0x10, 0x00, 0xb0, 0x25, 0xe8, 0x3c, + 0x17, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0xc9, 0x02, + 0xb0, 0x01, 0xe8, 0x43, 0x87, 0xe8, 0xbe, 0x17, + 0xe8, 0x3b, 0x86, 0xbb, 0x0d, 0x3c, 0xe8, 0xdc, + 0x7e, 0xb9, 0x55, 0x00, 0xb0, 0x02, 0xb4, 0x03, + 0xe8, 0x0a, 0x17, 0xbb, 0x47, 0x33, 0xc7, 0x07, + 0xca, 0x02, 0xb0, 0x01, 0xe8, 0x21, 0x87, 0xe8, + 0xea, 0x17, 0xb8, 0x01, 0x00, 0xe8, 0x71, 0x9b, + 0xe8, 0x85, 0x9b, 0xb0, 0x01, 0xe8, 0xd5, 0x86, + 0xb9, 0x51, 0x00, 0xba, 0xa0, 0x00, 0xb0, 0x02, + 0xb4, 0x04, 0xe8, 0xe8, 0x86, 0xb9, 0x3f, 0x00, + 0xba, 0xa8, 0x00, 0xb0, 0x03, 0xb4, 0x04, 0xe8, + 0xdb, 0x86, 0xb9, 0x69, 0x00, 0xba, 0xa0, 0x00, + 0xb0, 0x0a, 0xb4, 0x01, 0xe8, 0xce, 0x86, 0xc6, + 0x06, 0xcc, 0xdb, 0x01, 0xc3, 0xe8, 0xa0, 0xdd, + 0x80, 0x3e, 0xcd, 0xdb, 0x01, 0x75, 0x07, 0xbb, + 0x3d, 0x4f, 0xe8, 0x08, 0x0d, 0xc3, 0xe8, 0x06, + 0x88, 0xe8, 0x94, 0xac, 0xc6, 0x47, 0x01, 0x00, + 0xe8, 0x19, 0x1b, 0xb9, 0x05, 0x00, 0xb0, 0x03, + 0xb4, 0x07, 0xe8, 0x98, 0x16, 0xb0, 0x21, 0xe8, + 0xcd, 0x16, 0xb9, 0x18, 0x00, 0xb0, 0x0d, 0xe8, + 0x94, 0x16, 0xb0, 0x13, 0xe8, 0x96, 0x16, 0xb0, + 0x17, 0xe8, 0x9f, 0x16, 0xb0, 0x1a, 0xe8, 0xa8, + 0x16, 0xb0, 0x1d, 0xe8, 0xaa, 0x16, 0xb9, 0x17, + 0x00, 0xb0, 0x15, 0xe8, 0x86, 0x16, 0xb9, 0x4a, + 0x00, 0xb0, 0x19, 0xe8, 0x8c, 0x16, 0xb9, 0xcc, + 0x02, 0xe8, 0x56, 0x87, 0xe8, 0x49, 0xac, 0xc6, + 0x47, 0x01, 0x42, 0xe8, 0x8a, 0x1a, 0xe8, 0x83, + 0x87, 0xc6, 0x06, 0xcd, 0xdb, 0x01, 0xc3, 0xe8, + 0x2e, 0xdd, 0xb9, 0x05, 0x00, 0xb0, 0x03, 0xb4, + 0x03, 0xe8, 0x41, 0x16, 0xb9, 0x56, 0x00, 0xb0, + 0x0b, 0xe8, 0x42, 0x16, 0xb9, 0xd0, 0x02, 0xe8, + 0x54, 0x87, 0xb0, 0x44, 0xe8, 0x69, 0x93, 0xb0, + 0x37, 0xe8, 0x74, 0x93, 0xc3, 0xe8, 0x7f, 0x87, + 0xe8, 0x0d, 0xac, 0xc6, 0x47, 0x04, 0x00, 0xe8, + 0x92, 0x1a, 0xb9, 0x57, 0x00, 0xb0, 0x07, 0xb4, + 0x08, 0xe8, 0x11, 0x16, 0xb9, 0xd2, 0x02, 0xe8, + 0x25, 0x87, 0xb9, 0x05, 0x00, 0xb0, 0x03, 0xb4, + 0x09, 0xe8, 0x01, 0x16, 0xb9, 0x58, 0x00, 0xb0, + 0x0c, 0xe8, 0x02, 0x16, 0xb9, 0x57, 0x00, 0xb0, + 0x18, 0xe8, 0x01, 0x16, 0xb9, 0xd3, 0x02, 0xe8, + 0x05, 0x87, 0xbb, 0x2b, 0x50, 0xe8, 0x3d, 0x0c, + 0xe8, 0x3a, 0x8b, 0xb9, 0x59, 0x00, 0xb0, 0x04, + 0xb4, 0x08, 0xe8, 0xd8, 0x15, 0xb9, 0xd4, 0x02, + 0xe8, 0xc7, 0x86, 0xe8, 0xba, 0xab, 0xc6, 0x47, + 0x04, 0x44, 0xe8, 0xfb, 0x19, 0xe8, 0xf4, 0x86, + 0xbb, 0x3e, 0x50, 0xe8, 0x17, 0x0c, 0xb0, 0x44, + 0xe8, 0x05, 0x93, 0xc6, 0x06, 0xd0, 0xdb, 0x01, + 0xc3, 0xb9, 0x05, 0x00, 0xb0, 0x04, 0xb4, 0x03, + 0xe8, 0xaa, 0x15, 0xb9, 0x3f, 0x00, 0xb0, 0x0c, + 0xe8, 0xab, 0x15, 0xb9, 0xd6, 0x02, 0xe8, 0xbd, + 0x86, 0xbb, 0x8a, 0x50, 0xe8, 0xee, 0x0b, 0xb0, + 0x45, 0xe8, 0xdc, 0x92, 0xb0, 0x46, 0xe8, 0xc7, + 0x92, 0xc3, 0xb9, 0x05, 0x00, 0xb0, 0x04, 0xb4, + 0x0e, 0xe8, 0x81, 0x15, 0xb9, 0x13, 0x00, 0xb0, + 0x0e, 0xe8, 0x82, 0x15, 0xb9, 0x19, 0x03, 0xe8, + 0x86, 0x86, 0xbb, 0x18, 0x52, 0xe8, 0xc5, 0x0b, + 0xb0, 0x3c, 0xe8, 0xb3, 0x92, 0xc6, 0x06, 0xd6, + 0xdb, 0x01, 0xc3, 0x80, 0x3e, 0xd6, 0xdb, 0x02, + 0x74, 0x07, 0xbb, 0x4f, 0x52, 0xe8, 0xad, 0x0b, + 0xc3, 0xb9, 0x05, 0x00, 0xb0, 0x04, 0xb4, 0x0e, + 0xe8, 0x4a, 0x15, 0xb0, 0x19, 0xe8, 0x4e, 0x15, + 0xb9, 0x22, 0x03, 0xe8, 0x52, 0x86, 0xbb, 0x72, + 0x52, 0xe8, 0x91, 0x0b, 0xb0, 0x3e, 0xe8, 0x7f, + 0x92, 0xb0, 0x4a, 0xe8, 0x6a, 0x92, 0xb0, 0x41, + 0xe8, 0x65, 0x92, 0xc3, 0xb0, 0x46, 0xe8, 0x93, + 0x92, 0x73, 0x39, 0xe8, 0x79, 0x86, 0xe8, 0x07, + 0xab, 0xc6, 0x07, 0x00, 0xe8, 0x8d, 0x19, 0xb9, + 0x05, 0x00, 0xb0, 0x03, 0xb4, 0x04, 0xe8, 0x0c, + 0x15, 0xb0, 0x12, 0xe8, 0x17, 0x15, 0xb9, 0x0d, + 0x00, 0xb0, 0x0c, 0xe8, 0x08, 0x15, 0xb9, 0x23, + 0x03, 0xe8, 0x21, 0x86, 0xb0, 0x07, 0xe8, 0xdc, + 0x84, 0xb0, 0x46, 0xe8, 0x3a, 0x92, 0xb0, 0x47, + 0xe8, 0x25, 0x92, 0xc3, 0xbb, 0xad, 0x53, 0xe8, + 0x3b, 0x0b, 0xc3, 0xb9, 0x05, 0x00, 0xb0, 0x04, + 0xb4, 0x0e, 0xe8, 0xd8, 0x14, 0xb0, 0x16, 0xe8, + 0xdc, 0x14, 0xb9, 0x24, 0x03, 0xe8, 0xe0, 0x85, + 0xbb, 0x8b, 0x52, 0xe8, 0x1f, 0x0b, 0xc3, 0xb9, + 0x05, 0x00, 0xb0, 0x03, 0xb4, 0x04, 0xe8, 0xbc, + 0x14, 0xb0, 0x10, 0xe8, 0xc0, 0x14, 0xb9, 0xbf, + 0x02, 0xe8, 0xc4, 0x85, 0x80, 0x3e, 0xc8, 0xdb, + 0x01, 0x74, 0x07, 0xbb, 0x80, 0x4d, 0xe8, 0xfc, + 0x0a, 0xc3, 0x80, 0x3e, 0xc6, 0xdb, 0x00, 0x74, + 0x22, 0xc6, 0x06, 0xc6, 0xdb, 0x00, 0x80, 0x3e, + 0xc5, 0xdb, 0x01, 0x75, 0x15, 0xbb, 0x47, 0x33, + 0xc7, 0x07, 0xbd, 0x02, 0xb0, 0x01, 0xe8, 0xae, + 0x84, 0xe8, 0x70, 0x15, 0xbb, 0xa6, 0x4d, 0xe8, + 0xd3, 0x0a, 0xc3, 0x80, 0x3e, 0xc5, 0xdb, 0x01, + 0x74, 0x07, 0xbb, 0x5b, 0x4d, 0xe8, 0xc5, 0x0a, + 0xc3, 0x80, 0x3e, 0xc7, 0xdb, 0x01, 0x74, 0x06, + 0xbb, 0x93, 0x4d, 0xe8, 0xb7, 0x0a, 0xbb, 0x47, + 0x33, 0xc7, 0x07, 0xbe, 0x02, 0xb0, 0x01, 0xe8, + 0x7d, 0x84, 0xe8, 0x3f, 0x15, 0xc6, 0x06, 0xc6, + 0xdb, 0x01, 0x80, 0x3e, 0xc7, 0xdb, 0x01, 0x74, + 0x0e, 0xe8, 0x3f, 0x83, 0xbb, 0x2c, 0x39, 0xe8, + 0x03, 0x7c, 0xc6, 0x06, 0xc7, 0xdb, 0x01, 0xc3, + 0xb9, 0x05, 0x00, 0xb0, 0x03, 0xb4, 0x06, 0xe8, + 0x2b, 0x14, 0xb9, 0x5b, 0x00, 0xb0, 0x0c, 0xe8, + 0x2c, 0x14, 0xb9, 0xc2, 0x02, 0xe8, 0x30, 0x85, + 0xb0, 0x36, 0xe8, 0x63, 0x91, 0xc6, 0x06, 0xc8, + 0xdb, 0x01, 0xc3, 0x80, 0x3e, 0xc6, 0xdb, 0x01, + 0x74, 0x07, 0xbb, 0xa5, 0x4e, 0xe8, 0x5d, 0x0a, + 0xc3, 0x80, 0x3e, 0xca, 0xdb, 0x01, 0x75, 0x07, + 0xbb, 0xe6, 0x4d, 0xe8, 0x4f, 0x0a, 0xc3, 0xb9, + 0x05, 0x00, 0xb0, 0x03, 0xb4, 0x04, 0xe8, 0xec, + 0x13, 0xb0, 0x18, 0xe8, 0xf7, 0x13, 0xb9, 0x5a, + 0x00, 0xb0, 0x12, 0xe8, 0xe8, 0x13, 0xb9, 0xc3, + 0x02, 0xe8, 0xec, 0x84, 0xb0, 0x3d, 0xe8, 0x0f, + 0x91, 0xc6, 0x06, 0xca, 0xdb, 0x01, 0xc3, 0x80, + 0x3e, 0xc6, 0xdb, 0x01, 0x74, 0x07, 0xbb, 0xa5, + 0x4e, 0xe8, 0x19, 0x0a, 0xc3, 0x80, 0x3e, 0xcb, + 0xdb, 0x01, 0x75, 0x07, 0xbb, 0x32, 0x4e, 0xe8, + 0x0b, 0x0a, 0xc3, 0xbb, 0x05, 0x4e, 0xe8, 0x04, + 0x0a, 0xb9, 0x05, 0x00, 0xb0, 0x03, 0xb4, 0x04, + 0xe8, 0xa2, 0x13, 0xb0, 0x1b, 0xe8, 0xa6, 0x13, + 0xb9, 0xc4, 0x02, 0xe8, 0xaa, 0x84, 0xc6, 0x06, + 0xcb, 0xdb, 0x01, 0xc3, 0xbb, 0x58, 0x4e, 0xe8, + 0xe3, 0x09, 0xc3, 0xb9, 0x05, 0x00, 0xb0, 0x03, + 0xb4, 0x05, 0xe8, 0x80, 0x13, 0xb9, 0x18, 0x00, + 0xb0, 0x0a, 0xe8, 0x81, 0x13, 0xb9, 0x1e, 0x03, + 0xe8, 0x85, 0x84, 0xb9, 0x3f, 0x00, 0xb0, 0x0b, + 0xb4, 0x05, 0xe8, 0x68, 0x13, 0xb9, 0x13, 0x00, + 0xb0, 0x14, 0xe8, 0x69, 0x13, 0xbb, 0x47, 0x33, + 0xc7, 0x07, 0x1f, 0x03, 0xb0, 0x01, 0xe8, 0x7e, + 0x83, 0x50, 0x52, 0xbe, 0x32, 0x00, 0xbf, 0xaa, + 0x00, 0xc6, 0x06, 0xc3, 0x64, 0x01, 0xe8, 0x72, + 0x9f, 0x5a, 0x58, 0xbf, 0xc7, 0x32, 0xb3, 0x1b, + 0x48, 0xf6, 0xe3, 0x03, 0xf8, 0xe8, 0x43, 0x7c, + 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x20, 0x03, 0xb0, + 0x01, 0xe8, 0x53, 0x83, 0xe8, 0x15, 0x14, 0xe8, + 0x7b, 0x88, 0xb9, 0x25, 0x03, 0xe8, 0x12, 0x84, + 0xe8, 0xb0, 0x14, 0xbe, 0x32, 0x00, 0xbf, 0xaa, + 0x00, 0xc6, 0x06, 0xc3, 0x64, 0x03, 0xe8, 0x3a, + 0x9f, 0xbb, 0x49, 0x53, 0xe8, 0x5e, 0x09, 0xc7, + 0x06, 0xaf, 0x64, 0x69, 0x00, 0xc7, 0x06, 0xb1, + 0x64, 0x9d, 0x00, 0xc6, 0x06, 0xcb, 0x64, 0x00, + 0xc6, 0x06, 0xcc, 0x64, 0x00, 0xc6, 0x06, 0xdc, + 0x64, 0x01, 0xe8, 0x64, 0xa7, 0xb9, 0x03, 0x00, + 0xe8, 0x30, 0x1a, 0xbb, 0x47, 0x33, 0xc7, 0x07, + 0xaa, 0x03, 0xc7, 0x06, 0xf3, 0xb4, 0x0b, 0x00, + 0xe8, 0xea, 0x15, 0xe8, 0x61, 0x80, 0xbb, 0x09, + 0x84, 0xe8, 0x91, 0x7a, 0xbb, 0x47, 0x33, 0xc7, + 0x07, 0xab, 0x03, 0xb9, 0xae, 0x03, 0xe8, 0xc1, + 0x83, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0xab, 0x03, + 0xc7, 0x47, 0x02, 0xa7, 0x03, 0xb9, 0xaf, 0x03, + 0xe8, 0xaf, 0x83, 0xbb, 0x47, 0x33, 0xc7, 0x07, + 0xac, 0x03, 0xc7, 0x47, 0x02, 0xa8, 0x03, 0xb9, + 0xb0, 0x03, 0xe8, 0x9d, 0x83, 0xbb, 0x47, 0x33, + 0xc7, 0x07, 0xad, 0x03, 0xc7, 0x47, 0x02, 0xa9, + 0x03, 0xb9, 0xb1, 0x03, 0xe8, 0x8b, 0x83, 0xbb, + 0x47, 0x33, 0xc7, 0x07, 0x00, 0x00, 0xe8, 0xab, + 0x83, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0xb2, 0x03, + 0xb0, 0x01, 0xe8, 0xd5, 0x82, 0xe8, 0xff, 0x7f, + 0xbb, 0x4f, 0x84, 0xe8, 0x2f, 0x7a, 0xbb, 0x47, + 0x33, 0xc7, 0x07, 0xb2, 0x03, 0xb0, 0x01, 0xe8, + 0xc0, 0x82, 0xe8, 0xea, 0x7f, 0xbb, 0xc7, 0x87, + 0xe8, 0x1a, 0x7a, 0xb9, 0x18, 0x00, 0xb0, 0x07, + 0xb4, 0x05, 0xe8, 0x48, 0x12, 0xbb, 0x47, 0x33, + 0xc7, 0x07, 0xb4, 0x03, 0xb9, 0xb3, 0x03, 0xe8, + 0x40, 0x83, 0xe8, 0xce, 0x13, 0xe8, 0xd6, 0x12, + 0xc7, 0x06, 0xaf, 0x64, 0xc6, 0x00, 0xc7, 0x06, + 0xb1, 0x64, 0xba, 0x00, 0xc6, 0x06, 0xcd, 0x64, + 0x00, 0xc6, 0x06, 0xdc, 0x64, 0x00, 0xc6, 0x06, + 0xcb, 0x64, 0x01, 0xe8, 0x93, 0xa6, 0xc7, 0x06, + 0xf3, 0xb4, 0x28, 0x00, 0xe8, 0x26, 0x15, 0xe8, + 0xe5, 0x7e, 0xbb, 0x90, 0x88, 0xe8, 0xcd, 0x79, + 0xe8, 0x0a, 0x7f, 0xbb, 0x2f, 0x8a, 0xe8, 0xc4, + 0x79, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x9b, 0x03, + 0xb0, 0x01, 0xe8, 0x55, 0x82, 0xe8, 0xc7, 0x7e, + 0xbb, 0xa7, 0x8a, 0xe8, 0xaf, 0x79, 0xbe, 0xed, + 0x00, 0xbf, 0xba, 0x00, 0xe8, 0x0c, 0x9e, 0xbe, + 0xed, 0x00, 0xbf, 0xb1, 0x00, 0xe8, 0x03, 0x9e, + 0xbe, 0xc0, 0x00, 0xbf, 0xb1, 0x00, 0xe8, 0xfa, + 0x9d, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0xb5, 0x03, + 0xb0, 0x01, 0xe8, 0x25, 0x82, 0xc6, 0x06, 0x45, + 0x33, 0xe7, 0xb0, 0x01, 0xbe, 0xb6, 0x03, 0xbb, + 0xf6, 0x8a, 0xe8, 0xaa, 0x7d, 0xb9, 0x20, 0x00, + 0xb0, 0x05, 0xb4, 0x09, 0xe8, 0xa6, 0x11, 0xb9, + 0x28, 0x00, 0xb0, 0x0e, 0xe8, 0xa7, 0x11, 0xbb, + 0x47, 0x33, 0xc7, 0x07, 0xb7, 0x03, 0xb9, 0xb8, + 0x03, 0xe8, 0x96, 0x82, 0xe8, 0x24, 0x13, 0xb9, + 0x0b, 0x00, 0xe8, 0xd6, 0x18, 0xe8, 0x44, 0x69, + 0xbb, 0x47, 0x33, 0xc7, 0x07, 0xb9, 0x03, 0xc7, + 0x06, 0xf3, 0xb4, 0x27, 0x00, 0xe8, 0x84, 0x14, + 0xc6, 0x06, 0x45, 0x33, 0xe3, 0xb0, 0x01, 0xbe, + 0xb9, 0x03, 0xbb, 0x4d, 0x8b, 0xe8, 0x5f, 0x7d, + 0xb9, 0x05, 0x00, 0xb0, 0x0f, 0xb4, 0x08, 0xe8, + 0x5b, 0x11, 0xbb, 0x47, 0x33, 0xc7, 0x07, 0xba, + 0x03, 0xb0, 0x01, 0xe8, 0xb4, 0x81, 0xb0, 0x01, + 0xbe, 0xbb, 0x03, 0xbb, 0x7a, 0x8b, 0xe8, 0x3e, + 0x7d, 0x8b, 0x16, 0xb3, 0x32, 0xbe, 0x00, 0xfa, + 0xb0, 0xfe, 0xe8, 0x5d, 0x0e, 0xff, 0x36, 0xa8, + 0x64, 0xc6, 0x06, 0xa8, 0x64, 0x00, 0xb8, 0x64, + 0x00, 0xe8, 0x88, 0x86, 0xe8, 0x62, 0x69, 0x8f, + 0x06, 0xa8, 0x64, 0xb9, 0x02, 0x00, 0xe8, 0x6a, + 0x18, 0xbb, 0x7c, 0xe4, 0xe8, 0xf7, 0x6c, 0x2e, + 0x80, 0x3e, 0xd7, 0x00, 0x80, 0x73, 0xf8, 0x2e, + 0x80, 0x3e, 0xd7, 0x00, 0x00, 0x74, 0xf0, 0xe9, + 0xad, 0x68, 0xb0, 0x03, 0xe8, 0x49, 0x8e, 0xb0, + 0x04, 0xe8, 0x34, 0x8e, 0xb0, 0x23, 0xe8, 0x2f, + 0x8e, 0xbb, 0x68, 0x34, 0xe8, 0x46, 0x07, 0xc3, + 0xb0, 0x04, 0xe8, 0x33, 0x8e, 0xb0, 0x05, 0xe8, + 0x1e, 0x8e, 0xbb, 0x90, 0x34, 0xe8, 0x35, 0x07, + 0xc3, 0xa1, 0xf3, 0xb4, 0x3d, 0x0f, 0x00, 0x74, + 0x0f, 0xbb, 0xce, 0x38, 0x3d, 0x10, 0x00, 0x74, + 0x03, 0xbb, 0xa7, 0x38, 0xe8, 0x1e, 0x07, 0xc3, + 0xbe, 0x9c, 0x00, 0xbf, 0xb4, 0x00, 0xc6, 0x06, + 0xc3, 0x64, 0x03, 0xe8, 0xe5, 0x9c, 0xb9, 0x05, + 0x00, 0xb0, 0x03, 0xb4, 0x07, 0xe8, 0xad, 0x10, + 0xb9, 0x26, 0x00, 0xb0, 0x10, 0xe8, 0xae, 0x10, + 0xb0, 0x16, 0xe8, 0xb0, 0x10, 0xb9, 0x66, 0x02, + 0xe8, 0x8c, 0x81, 0xb9, 0x05, 0x00, 0xb0, 0x03, + 0xb4, 0x07, 0xe8, 0x90, 0x10, 0xb9, 0x2c, 0x00, + 0xb0, 0x0a, 0xe8, 0x91, 0x10, 0xb9, 0x14, 0x00, + 0xb0, 0x1a, 0xe8, 0x90, 0x10, 0xb9, 0x67, 0x02, + 0xe8, 0x6f, 0x81, 0xe8, 0x0d, 0x12, 0xc7, 0x06, + 0xf3, 0xb4, 0x11, 0x00, 0xc6, 0x06, 0xdc, 0x1c, + 0x01, 0xe8, 0x93, 0x12, 0xb9, 0x40, 0x00, 0xb4, + 0x07, 0xb0, 0x01, 0xe8, 0x5f, 0x10, 0xb0, 0x15, + 0xe8, 0x63, 0x10, 0xb0, 0x2a, 0xe8, 0x65, 0x10, + 0xb0, 0x3f, 0xe8, 0x67, 0x10, 0xb9, 0x69, 0x02, + 0xc6, 0x06, 0xdc, 0x1c, 0x01, 0xc7, 0x06, 0x1f, + 0xc4, 0x00, 0x00, 0xe8, 0x87, 0x10, 0xe8, 0x9b, + 0x10, 0xe8, 0x0f, 0x10, 0xc7, 0x06, 0x23, 0xc4, + 0x05, 0x00, 0xc7, 0x06, 0x3b, 0x33, 0x00, 0x00, + 0xc7, 0x06, 0x3d, 0x33, 0x14, 0x00, 0xc6, 0x06, + 0xce, 0x00, 0x02, 0xe8, 0xe7, 0x82, 0x73, 0x3d, + 0xb9, 0x40, 0x00, 0xb4, 0x07, 0xb0, 0x01, 0xe8, + 0x13, 0x10, 0xb9, 0x6a, 0x02, 0xe8, 0x02, 0x81, + 0xb0, 0x05, 0xe8, 0xf0, 0x7f, 0xe8, 0xf0, 0xa5, + 0xc6, 0x07, 0x00, 0xe8, 0x32, 0x14, 0xb9, 0x1f, + 0x00, 0xb0, 0x01, 0xb4, 0x07, 0xe8, 0xf5, 0x0f, + 0xb9, 0x6b, 0x02, 0xe8, 0xe4, 0x80, 0xe8, 0x69, + 0x00, 0xb0, 0x2a, 0xe8, 0x22, 0x8d, 0xbb, 0x89, + 0x39, 0xe8, 0x39, 0x06, 0xc3, 0x51, 0xe8, 0x59, + 0x00, 0x59, 0x80, 0x3e, 0xcf, 0x00, 0x00, 0x74, + 0x20, 0x80, 0x3e, 0xcf, 0x00, 0x04, 0x74, 0x0d, + 0xbb, 0x32, 0x39, 0x83, 0xf9, 0x05, 0x74, 0x08, + 0xbb, 0xff, 0x38, 0xeb, 0x03, 0xbb, 0xdb, 0x38, + 0xc6, 0x06, 0xcf, 0x00, 0x00, 0xe8, 0x0d, 0x06, + 0xc3, 0xfe, 0x06, 0xa6, 0xdb, 0xa0, 0xa6, 0xdb, + 0xbb, 0xae, 0x39, 0x3c, 0x01, 0x74, 0x1f, 0xbb, + 0xf6, 0x39, 0x3c, 0x02, 0x74, 0x18, 0xbb, 0x28, + 0x3a, 0x3c, 0x03, 0x74, 0x11, 0xbb, 0x5a, 0x3a, + 0x3c, 0x04, 0x74, 0x0a, 0xbb, 0x85, 0x3a, 0x3c, + 0x05, 0x74, 0x03, 0xbb, 0xb7, 0x3a, 0xe8, 0xdc, + 0x05, 0xc3, 0xe8, 0x16, 0x11, 0xc7, 0x06, 0xf3, + 0xb4, 0x0f, 0x00, 0xe8, 0x86, 0x12, 0xc7, 0x06, + 0xaf, 0x64, 0x9c, 0x00, 0xc7, 0x06, 0xb1, 0x64, + 0xb4, 0x00, 0xc6, 0x06, 0xc3, 0x64, 0x03, 0xc6, + 0x06, 0xcb, 0x64, 0x01, 0xc6, 0x06, 0xcd, 0x64, + 0x01, 0xb9, 0x05, 0x00, 0xb0, 0x05, 0xb4, 0x07, + 0xe8, 0x52, 0x0f, 0xb9, 0x26, 0x00, 0xb0, 0x0e, + 0xe8, 0x53, 0x0f, 0xb9, 0x26, 0x00, 0xb0, 0x14, + 0xe8, 0x52, 0x0f, 0xb9, 0x05, 0x00, 0xb0, 0x19, + 0xe8, 0x51, 0x0f, 0xb9, 0x68, 0x02, 0xe8, 0x47, + 0x80, 0xc3, 0xa1, 0xf3, 0xb4, 0x3d, 0x0d, 0x00, + 0x74, 0x07, 0xbb, 0x58, 0x3c, 0xe8, 0x7d, 0x05, + 0xc3, 0xe8, 0x7b, 0x80, 0xbe, 0xac, 0x00, 0xbf, + 0xb5, 0x00, 0xc6, 0x06, 0xc3, 0x64, 0x01, 0xe8, + 0x41, 0x9b, 0xb9, 0x1a, 0x00, 0xb0, 0x13, 0xb4, + 0x07, 0xe8, 0x09, 0x0f, 0xb0, 0x1e, 0xe8, 0x14, + 0x0f, 0xb0, 0x29, 0xe8, 0x1d, 0x0f, 0xb0, 0x34, + 0xe8, 0x26, 0x0f, 0xb0, 0x3f, 0xe8, 0x2f, 0x0f, + 0xb9, 0x38, 0x00, 0xb0, 0x17, 0xe8, 0xf6, 0x0e, + 0xb0, 0x22, 0xe8, 0xff, 0x0e, 0xb0, 0x2d, 0xe8, + 0x08, 0x0f, 0xb0, 0x38, 0xe8, 0x11, 0x0f, 0xb9, + 0x95, 0x02, 0xe8, 0xcd, 0x7f, 0xbe, 0x14, 0x77, + 0xbb, 0x80, 0x3c, 0xc6, 0x06, 0xdc, 0x1c, 0x01, + 0xe8, 0xe2, 0x00, 0xb9, 0x38, 0x00, 0xb0, 0x0a, + 0xb4, 0x07, 0xe8, 0xc0, 0x0e, 0xb0, 0x15, 0xe8, + 0xc4, 0x0e, 0xb9, 0x08, 0x00, 0xb0, 0x30, 0xe8, + 0xc3, 0x0e, 0xb9, 0x38, 0x00, 0xb0, 0x75, 0xe8, + 0xc2, 0x0e, 0xb0, 0x80, 0xe8, 0xc4, 0x0e, 0xb0, + 0x8b, 0xe8, 0xc6, 0x0e, 0xb0, 0x96, 0xe8, 0xc8, + 0x0e, 0xb0, 0xa1, 0xe8, 0xca, 0x0e, 0xb0, 0xac, + 0xe8, 0xcc, 0x0e, 0xb0, 0xb7, 0xe8, 0xce, 0x0e, + 0x83, 0x2e, 0xb1, 0x64, 0x14, 0xbb, 0x47, 0x33, + 0xc7, 0x47, 0x02, 0x97, 0x02, 0xb9, 0x96, 0x02, + 0xe8, 0x6f, 0x7f, 0xe8, 0x18, 0x0f, 0xe8, 0x5f, + 0xa4, 0xc6, 0x47, 0x01, 0x31, 0xe8, 0xa0, 0x12, + 0xbe, 0xf5, 0x76, 0xbb, 0x9a, 0x3c, 0xc6, 0x06, + 0xdc, 0x1c, 0x01, 0xe8, 0x77, 0x00, 0xc7, 0x06, + 0xaf, 0x64, 0xa2, 0x00, 0xc7, 0x06, 0xb1, 0x64, + 0xb8, 0x00, 0xb9, 0x1a, 0x00, 0xb0, 0x06, 0xb4, + 0x07, 0xe8, 0x49, 0x0e, 0xb0, 0x11, 0xe8, 0x54, + 0x0e, 0xb9, 0x38, 0x00, 0xb0, 0x0a, 0xe8, 0x45, + 0x0e, 0xb0, 0x15, 0xe8, 0x4e, 0x0e, 0xb9, 0x13, + 0x00, 0xb0, 0x1b, 0xe8, 0x4d, 0x0e, 0xb9, 0x18, + 0x00, 0xb0, 0x26, 0xe8, 0x4c, 0x0e, 0xb9, 0x17, + 0x00, 0xb0, 0x2c, 0xe8, 0x4b, 0x0e, 0xb9, 0x98, + 0x02, 0xe8, 0x0e, 0x7f, 0xe8, 0xac, 0x0f, 0xbb, + 0x47, 0x33, 0xc7, 0x47, 0x02, 0x99, 0x02, 0xb0, + 0x02, 0xe8, 0x2c, 0x7e, 0xe8, 0x5e, 0x83, 0xbb, + 0xbc, 0x3c, 0xe8, 0x58, 0x04, 0xe8, 0x55, 0x83, + 0xe8, 0x29, 0x7f, 0xe8, 0x4f, 0x83, 0xbb, 0xea, + 0x3c, 0xe8, 0x49, 0x04, 0xb0, 0x25, 0xe8, 0x37, + 0x8b, 0xe8, 0x31, 0x01, 0xc3, 0x06, 0x53, 0x56, + 0xb8, 0x00, 0xa0, 0x8e, 0xc0, 0xe8, 0x25, 0x00, + 0xb8, 0x00, 0xa0, 0xb9, 0x00, 0x7d, 0xe8, 0xd7, + 0x10, 0x5e, 0x5b, 0xe8, 0x27, 0x08, 0xe8, 0x23, + 0x00, 0xb8, 0x96, 0x00, 0xe8, 0x25, 0x83, 0xe8, + 0x0b, 0x00, 0xe8, 0x2a, 0x91, 0xe8, 0x80, 0x0c, + 0xe8, 0x11, 0x00, 0x07, 0xc3, 0x80, 0x3e, 0xad, + 0x64, 0x01, 0x75, 0x04, 0xe8, 0x7d, 0x10, 0xc3, + 0xe8, 0x93, 0x10, 0xc3, 0x80, 0x3e, 0xad, 0x64, + 0x01, 0x75, 0x04, 0xe8, 0x7b, 0x10, 0xc3, 0xe8, + 0x91, 0x10, 0xe8, 0x5c, 0x10, 0xc3, 0xbb, 0x84, + 0x49, 0xe8, 0xe9, 0x03, 0xc3, 0xbb, 0xd1, 0x49, + 0xe8, 0xe2, 0x03, 0xc6, 0x06, 0xb5, 0xdb, 0x01, + 0xc3, 0x83, 0x3e, 0xf3, 0xb4, 0x24, 0x74, 0x07, + 0xbb, 0xa9, 0x52, 0xe8, 0xcf, 0x03, 0xc3, 0x80, + 0x3e, 0xf1, 0xdb, 0x01, 0x75, 0x07, 0xbb, 0xf6, + 0x52, 0xe8, 0xc1, 0x03, 0xc3, 0xc6, 0x06, 0xf1, + 0xdb, 0x01, 0xe8, 0xba, 0x7e, 0xbe, 0x66, 0x00, + 0xbf, 0xc3, 0x00, 0xc6, 0x06, 0xc3, 0x64, 0x02, + 0xe8, 0x80, 0x99, 0xb9, 0x05, 0x00, 0xb0, 0x03, + 0xb4, 0x05, 0xe8, 0x48, 0x0d, 0xb9, 0x4b, 0x00, + 0xb0, 0x0c, 0xe8, 0x49, 0x0d, 0xb9, 0x1a, 0x03, + 0xe8, 0x54, 0x7e, 0xb8, 0x01, 0x00, 0xe8, 0xc7, + 0x91, 0x53, 0xe8, 0x88, 0x82, 0xbb, 0x46, 0x67, + 0xe8, 0x07, 0xa3, 0x83, 0xc3, 0x03, 0xc7, 0x07, + 0x00, 0x00, 0xc7, 0x47, 0x04, 0x00, 0x00, 0x53, + 0xbe, 0x97, 0x00, 0xbf, 0xc5, 0x00, 0xc6, 0x06, + 0xc3, 0x64, 0x02, 0xe8, 0x3d, 0x99, 0xb9, 0x1b, + 0x03, 0xe8, 0xfe, 0x7d, 0xc7, 0x06, 0xaf, 0x64, + 0xba, 0x00, 0xff, 0x06, 0xb1, 0x64, 0xe8, 0x2b, + 0x7e, 0xbe, 0xdc, 0x00, 0xbf, 0xc6, 0x00, 0xc6, + 0x06, 0xc3, 0x64, 0x04, 0xe8, 0x1c, 0x99, 0x5b, + 0xc7, 0x47, 0x04, 0xc8, 0x00, 0x5b, 0xc7, 0x07, + 0x01, 0x00, 0xb0, 0x02, 0xe8, 0xc6, 0x7c, 0xbb, + 0xa9, 0x58, 0xe8, 0xa0, 0x74, 0xb0, 0x01, 0xb4, + 0x02, 0xb9, 0x0e, 0x01, 0xba, 0xc1, 0x00, 0xe8, + 0xd3, 0x7c, 0xb0, 0x03, 0xb4, 0x01, 0xb9, 0xfe, + 0x00, 0xba, 0xc1, 0x00, 0xe8, 0xc6, 0x7c, 0xc6, + 0x06, 0xd7, 0xdb, 0x01, 0xc3, 0xe8, 0x06, 0x82, + 0xff, 0x06, 0xea, 0xdb, 0xa1, 0xea, 0xdb, 0x3d, + 0x07, 0x00, 0x73, 0x3b, 0x2d, 0x02, 0x00, 0xbb, + 0x35, 0x60, 0xd1, 0xe0, 0x03, 0xd8, 0xff, 0x36, + 0xf3, 0xb4, 0x53, 0xb9, 0x0b, 0x00, 0xe8, 0xe2, + 0x13, 0xe8, 0x85, 0x02, 0x5b, 0xff, 0x17, 0xc6, + 0x06, 0xdc, 0x1c, 0x02, 0x8f, 0x06, 0xf3, 0xb4, + 0xb9, 0x06, 0x00, 0xe8, 0xcd, 0x13, 0x83, 0x3e, + 0xf3, 0xb4, 0x0b, 0x75, 0x07, 0x83, 0x3e, 0xec, + 0xdb, 0x01, 0x74, 0x03, 0xe8, 0x98, 0x0e, 0xc3, + 0xbb, 0x47, 0x33, 0xc7, 0x07, 0xda, 0x03, 0xc7, + 0x47, 0x02, 0xdb, 0x03, 0xc7, 0x06, 0xf3, 0xb4, + 0x22, 0x00, 0xe8, 0x67, 0x0f, 0xbb, 0x47, 0x33, + 0xc7, 0x07, 0xda, 0x03, 0xc7, 0x47, 0x02, 0xdb, + 0x03, 0xb0, 0x01, 0xe8, 0xac, 0x7c, 0xc6, 0x06, + 0x45, 0x33, 0xd9, 0xc6, 0x06, 0x46, 0x33, 0xd0, + 0xb0, 0x01, 0xb4, 0x02, 0xbe, 0xdc, 0x03, 0xbf, + 0xdd, 0x03, 0xbb, 0x60, 0x6f, 0xe8, 0x9e, 0x76, + 0xbb, 0x47, 0x33, 0xc7, 0x07, 0xde, 0x03, 0xc7, + 0x47, 0x02, 0xdf, 0x03, 0xb0, 0x01, 0xe8, 0x81, + 0x7c, 0xe8, 0xba, 0x0c, 0xc3, 0xbb, 0x47, 0x33, + 0xc7, 0x47, 0x02, 0x77, 0x03, 0xc7, 0x47, 0x04, + 0x78, 0x03, 0xc7, 0x06, 0xf3, 0xb4, 0x1e, 0x00, + 0xe8, 0x11, 0x0f, 0xbb, 0x47, 0x33, 0xc7, 0x47, + 0x02, 0x77, 0x03, 0xc7, 0x47, 0x04, 0x78, 0x03, + 0xb0, 0x02, 0xe8, 0x55, 0x7c, 0xc6, 0x06, 0x45, + 0x33, 0xd9, 0xb0, 0x02, 0xbe, 0x79, 0x03, 0xbb, + 0xb8, 0x6f, 0xe8, 0xda, 0x77, 0xb9, 0x1a, 0x00, + 0xb0, 0x03, 0xb4, 0x0a, 0xe8, 0xd6, 0x0b, 0xbb, + 0x47, 0x33, 0xc7, 0x47, 0x02, 0x7b, 0x03, 0xc7, + 0x47, 0x04, 0x7c, 0x03, 0xb0, 0x03, 0xe8, 0x29, + 0x7c, 0xc6, 0x06, 0x45, 0x33, 0xd0, 0xc6, 0x06, + 0x46, 0x33, 0xd9, 0xb0, 0x03, 0xb4, 0x02, 0xbe, + 0x7a, 0x03, 0xbf, 0x79, 0x03, 0xbb, 0xf0, 0x6f, + 0xe8, 0x1b, 0x76, 0xc3, 0xbb, 0x47, 0x33, 0xc7, + 0x47, 0x02, 0x7e, 0x03, 0xc7, 0x47, 0x04, 0x7d, + 0x03, 0xc7, 0x06, 0xf3, 0xb4, 0x20, 0x00, 0xe8, + 0xa2, 0x0e, 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x02, + 0x7e, 0x03, 0xc7, 0x47, 0x04, 0x7d, 0x03, 0xb0, + 0x02, 0xe8, 0xe6, 0x7b, 0xc6, 0x06, 0x45, 0x33, + 0xd9, 0xb0, 0x03, 0xbe, 0x7f, 0x03, 0xbb, 0x6e, + 0x70, 0xe8, 0x6b, 0x77, 0xb9, 0x4b, 0x00, 0xb0, + 0x09, 0xb4, 0x0b, 0xe8, 0x67, 0x0b, 0xbb, 0x47, + 0x33, 0xc7, 0x47, 0x02, 0x82, 0x03, 0xc7, 0x47, + 0x04, 0x81, 0x03, 0xb0, 0x02, 0xe8, 0xba, 0x7b, + 0xc6, 0x06, 0x45, 0x33, 0xd0, 0xc6, 0x06, 0x46, + 0x33, 0xd9, 0xb0, 0x02, 0xb4, 0x03, 0xbe, 0x80, + 0x03, 0xbf, 0x7f, 0x03, 0xbb, 0x96, 0x70, 0xe8, + 0xac, 0x75, 0xc3, 0xbb, 0x47, 0x33, 0xc7, 0x07, + 0x85, 0x03, 0xc7, 0x47, 0x02, 0x84, 0x03, 0xc7, + 0x06, 0xf3, 0xb4, 0x1d, 0x00, 0xe8, 0x34, 0x0e, + 0xbb, 0x47, 0x33, 0xc7, 0x07, 0x85, 0x03, 0xc7, + 0x47, 0x02, 0x84, 0x03, 0xb0, 0x02, 0xe8, 0x79, + 0x7b, 0xc6, 0x06, 0x45, 0x33, 0xd0, 0xc6, 0x06, + 0x46, 0x33, 0xd9, 0xb0, 0x01, 0xb4, 0x02, 0xbe, + 0x87, 0x03, 0xbf, 0x86, 0x03, 0xbb, 0x61, 0x71, + 0xe8, 0x6b, 0x75, 0xb9, 0x38, 0x00, 0xb0, 0x03, + 0xb4, 0x04, 0xe8, 0xf0, 0x0a, 0xb0, 0x05, 0xe8, + 0xf4, 0x0a, 0xb0, 0x07, 0xe8, 0xf6, 0x0a, 0xb0, + 0x09, 0xe8, 0xf8, 0x0a, 0xbb, 0x47, 0x33, 0xc7, + 0x07, 0x89, 0x03, 0xc7, 0x47, 0x02, 0x88, 0x03, + 0xb0, 0x01, 0xe8, 0x35, 0x7b, 0xb0, 0x01, 0xb4, + 0x02, 0xbe, 0x87, 0x03, 0xbf, 0x86, 0x03, 0xbb, + 0xc6, 0x71, 0xe8, 0x31, 0x75, 0xc3, 0xff, 0x36, + 0xf3, 0xb4, 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x02, + 0x8b, 0x03, 0xc7, 0x47, 0x04, 0x8a, 0x03, 0xc7, + 0x06, 0xf3, 0xb4, 0x23, 0x00, 0xe8, 0xb4, 0x0d, + 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x02, 0x8b, 0x03, + 0xc7, 0x47, 0x04, 0x8a, 0x03, 0xb0, 0x03, 0xe8, + 0xf8, 0x7a, 0xc6, 0x06, 0x45, 0x33, 0xd9, 0xc6, + 0x06, 0x46, 0x33, 0xd0, 0xb0, 0x03, 0xb4, 0x02, + 0xbe, 0x8c, 0x03, 0xbf, 0x8d, 0x03, 0xbb, 0x43, + 0x72, 0xe8, 0xea, 0x74, 0xc6, 0x06, 0x46, 0x33, + 0xd9, 0xc6, 0x06, 0x45, 0x33, 0xd0, 0xb0, 0x02, + 0xb4, 0x03, 0xbe, 0x8e, 0x03, 0xbf, 0x8c, 0x03, + 0xbb, 0x18, 0x73, 0xe8, 0xd0, 0x74, 0xc7, 0x06, + 0xf3, 0xb4, 0x0b, 0x00, 0xe8, 0x41, 0xa0, 0xc6, + 0x47, 0x03, 0x33, 0xe8, 0x5e, 0x0d, 0x58, 0x3d, + 0x0b, 0x00, 0x75, 0x08, 0xc6, 0x06, 0xdc, 0x1c, + 0x02, 0xe8, 0xba, 0x88, 0xbb, 0x47, 0x33, 0xc7, + 0x47, 0x02, 0x8f, 0x03, 0xb0, 0x02, 0xe8, 0x99, + 0x7a, 0xbb, 0x47, 0x33, 0xc7, 0x47, 0x02, 0x83, + 0x03, 0xb0, 0x02, 0xe8, 0x51, 0x7a, 0xe8, 0x13, + 0x0b, 0xb8, 0xc8, 0x00, 0xe8, 0x5b, 0x7f, 0xb0, + 0x08, 0xe8, 0xf5, 0x79, 0xb8, 0x02, 0x08, 0xe8, + 0x8f, 0x8e, 0xc7, 0x06, 0xec, 0xdb, 0x01, 0x00, + 0xc3, 0x06, 0xb8, 0x00, 0xa0, 0x8e, 0xc0, 0xe8, + 0x1d, 0x00, 0xb8, 0x00, 0xa0, 0xb9, 0x00, 0x7d, + 0xe8, 0xfd, 0x0c, 0xbe, 0x14, 0x77, 0xbb, 0x0a, + 0x58, 0xe8, 0x49, 0x04, 0xe8, 0x17, 0x00, 0xb8, + 0x96, 0x00, 0xe8, 0x47, 0x7f, 0x07, 0xc3, 0x80, + 0x3e, 0xad, 0x64, 0x01, 0x75, 0x04, 0xe8, 0xab, + 0x0c, 0xc3, 0xe8, 0xc1, 0x0c, 0xc3, 0x80, 0x3e, + 0xad, 0x64, 0x01, 0x75, 0x04, 0xe8, 0xa9, 0x0c, + 0xc3, 0xe8, 0xbf, 0x0c, 0xe8, 0x8a, 0x0c, 0xc3, + 0xa1, 0x50, 0x72, 0xe8, 0x07, 0x04, 0x83, 0xc3, + 0x13, 0x8a, 0x07, 0x43, 0x0a, 0xc0, 0x75, 0xf9, + 0x80, 0x3f, 0x00, 0x74, 0xf4, 0x80, 0x3f, 0x01, + 0x75, 0x03, 0xbb, 0x50, 0x34, 0xe8, 0x04, 0x00, + 0xe8, 0xb4, 0x00, 0xc3, 0x06, 0xb8, 0xd4, 0x19, + 0x8e, 0xc0, 0xe8, 0xe0, 0x02, 0x8b, 0x0e, 0xaf, + 0x64, 0x8b, 0xd0, 0x52, 0xd1, 0xea, 0x2b, 0xca, + 0x73, 0x03, 0xb9, 0x02, 0x00, 0x26, 0x89, 0x0e, + 0x00, 0x00, 0x5a, 0x03, 0xca, 0x81, 0xf9, 0x3f, + 0x01, 0x76, 0x0d, 0xb9, 0x3f, 0x01, 0x2b, 0xca, + 0x83, 0xe9, 0x02, 0x26, 0x89, 0x0e, 0x00, 0x00, + 0x83, 0xee, 0x02, 0x81, 0xfe, 0x04, 0x00, 0x72, + 0x0e, 0x26, 0x8b, 0x14, 0x8b, 0xc8, 0x2b, 0xca, + 0xd1, 0xe9, 0x26, 0x89, 0x0c, 0xeb, 0xe9, 0xc6, + 0x06, 0xe6, 0x1c, 0xd1, 0xe8, 0x77, 0x02, 0xb8, + 0x3e, 0x00, 0x8b, 0xc8, 0xf7, 0x26, 0xd8, 0x64, + 0xf7, 0x36, 0xda, 0x64, 0x2b, 0xc8, 0xa1, 0xb1, + 0x64, 0x2b, 0xc1, 0x72, 0x12, 0x05, 0x08, 0x00, + 0x26, 0x8b, 0x0e, 0x0a, 0x00, 0x41, 0x2d, 0x0b, + 0x00, 0x72, 0x04, 0xe2, 0xf9, 0xeb, 0x03, 0xb8, + 0x01, 0x00, 0xf7, 0x26, 0xb6, 0x00, 0x26, 0x01, + 0x06, 0x00, 0x00, 0xc6, 0x06, 0xdb, 0x1c, 0x02, + 0xe8, 0x8b, 0x87, 0xc6, 0x06, 0xdb, 0x1c, 0x03, + 0xbb, 0x92, 0x32, 0xa1, 0x96, 0x32, 0x26, 0x8b, + 0x0e, 0x0c, 0x00, 0xf7, 0xe1, 0x8b, 0xc8, 0xc1, + 0xe9, 0x03, 0x83, 0xc1, 0x3c, 0xe8, 0xdb, 0x07, + 0x07, 0xc6, 0x06, 0xe8, 0x64, 0x01, 0xc3, 0xe8, + 0xf4, 0x94, 0xe8, 0x70, 0x8a, 0x2e, 0x80, 0x3e, + 0xd7, 0x00, 0x01, 0x74, 0x19, 0x80, 0x3e, 0x96, + 0x32, 0x00, 0x74, 0x08, 0xbb, 0x92, 0x32, 0xe8, + 0xcc, 0x07, 0x72, 0x0a, 0xe8, 0xa4, 0x05, 0x72, + 0x05, 0xe8, 0x70, 0x05, 0x73, 0xd9, 0xe8, 0xfc, + 0x9c, 0xe8, 0x3d, 0x9d, 0xc6, 0x06, 0xdb, 0x1c, + 0x01, 0xc6, 0x06, 0xdc, 0x1c, 0x02, 0xe8, 0x2d, + 0x87, 0xc6, 0x06, 0xdc, 0x1c, 0x03, 0xc6, 0x06, + 0xdb, 0x1c, 0x00, 0xc3, 0x51, 0xe8, 0x04, 0xff, + 0x59, 0xbb, 0x92, 0x32, 0xe8, 0x84, 0x07, 0xe8, + 0xa4, 0x94, 0xe8, 0x20, 0x8a, 0xbb, 0x92, 0x32, + 0xe8, 0x8b, 0x07, 0x72, 0x0a, 0xe8, 0x63, 0x05, + 0x72, 0x05, 0xe8, 0x2f, 0x05, 0x73, 0xe8, 0xe8, + 0xbc, 0xff, 0xc3, 0xa0, 0x96, 0xda, 0xbf, 0xc7, + 0x32, 0xb1, 0x1b, 0x48, 0xf6, 0xe1, 0x03, 0xf8, + 0xa1, 0xa4, 0xda, 0x89, 0x05, 0x57, 0xe8, 0xcb, + 0xfe, 0x5f, 0x57, 0xa1, 0xa4, 0xda, 0x89, 0x05, + 0xe8, 0x6b, 0x94, 0xe8, 0xe7, 0x89, 0x5f, 0x57, + 0xa1, 0xa4, 0xda, 0x89, 0x05, 0x2e, 0x80, 0x3e, + 0xd7, 0x00, 0x01, 0x74, 0x19, 0x80, 0x3e, 0x96, + 0x32, 0x00, 0x74, 0x08, 0xbb, 0x92, 0x32, 0xe8, + 0x3c, 0x07, 0x72, 0x0a, 0xe8, 0x14, 0x05, 0x72, + 0x05, 0xe8, 0xe0, 0x04, 0x73, 0xcb, 0x5f, 0xe8, + 0x6c, 0xff, 0xc3, 0x06, 0xb8, 0xd4, 0x19, 0x8e, + 0xc0, 0x57, 0xe8, 0x70, 0x01, 0x5f, 0x50, 0x8b, + 0x45, 0x0a, 0x33, 0xd2, 0xf7, 0x36, 0xb6, 0x00, + 0x8b, 0x45, 0x0c, 0xd1, 0xe8, 0x03, 0xd0, 0x58, + 0x8b, 0xca, 0x8b, 0xd0, 0x52, 0xd1, 0xea, 0x2b, + 0xca, 0x73, 0x03, 0xb9, 0x02, 0x00, 0x26, 0x89, + 0x0e, 0x00, 0x00, 0x5a, 0x03, 0xca, 0x81, 0xf9, + 0x3f, 0x01, 0x76, 0x0b, 0xb9, 0x3f, 0x01, 0x2b, + 0xca, 0x49, 0x26, 0x89, 0x0e, 0x00, 0x00, 0x83, + 0xee, 0x02, 0x81, 0xfe, 0x04, 0x00, 0x72, 0x0e, + 0x26, 0x8b, 0x14, 0x8b, 0xc8, 0x2b, 0xca, 0xd1, + 0xe9, 0x26, 0x89, 0x0c, 0xeb, 0xe9, 0x57, 0xa0, + 0xe7, 0x1c, 0xa2, 0xe6, 0x1c, 0xe8, 0xf6, 0x00, + 0x5f, 0x8b, 0x45, 0x0a, 0x33, 0xd2, 0xf7, 0x36, + 0xb6, 0x00, 0x05, 0x08, 0x00, 0x26, 0x8b, 0x0e, + 0x0a, 0x00, 0x41, 0x2d, 0x0b, 0x00, 0x72, 0x04, + 0xe2, 0xf9, 0xeb, 0x03, 0xb8, 0x01, 0x00, 0xb9, + 0x40, 0x01, 0xf7, 0xe1, 0x26, 0x01, 0x06, 0x00, + 0x00, 0xc6, 0x06, 0xdb, 0x1c, 0x02, 0xe8, 0x15, + 0x86, 0xc6, 0x06, 0xdb, 0x1c, 0x03, 0xbb, 0x92, + 0x32, 0xa1, 0x96, 0x32, 0x26, 0x8b, 0x0e, 0x0c, + 0x00, 0xf7, 0xe1, 0x8b, 0xc8, 0xc1, 0xe9, 0x03, + 0x83, 0xc1, 0x3c, 0xe8, 0x65, 0x06, 0x07, 0xc3, + 0x06, 0xb8, 0xd4, 0x19, 0x8e, 0xc0, 0x26, 0x89, + 0x36, 0x00, 0x00, 0xe8, 0xb7, 0x00, 0x83, 0xee, + 0x02, 0x81, 0xfe, 0x04, 0x00, 0x72, 0x0e, 0x26, + 0x8b, 0x14, 0x8b, 0xc8, 0x2b, 0xca, 0xd1, 0xe9, + 0x26, 0x89, 0x0c, 0xeb, 0xe9, 0xe8, 0x7e, 0x00, + 0xc6, 0x06, 0xdb, 0x1c, 0x02, 0xe8, 0xc6, 0x85, + 0xc6, 0x06, 0xdb, 0x1c, 0x03, 0xbb, 0x92, 0x32, + 0xa1, 0x96, 0x32, 0x26, 0x8b, 0x0e, 0x0c, 0x00, + 0xf7, 0xe1, 0x8b, 0xc8, 0xc1, 0xe9, 0x03, 0x83, + 0xc1, 0x3c, 0xe8, 0x16, 0x06, 0x07, 0xc3, 0x06, + 0xb8, 0xd4, 0x19, 0x8e, 0xc0, 0x26, 0x89, 0x36, + 0x00, 0x00, 0x53, 0xe8, 0x63, 0x88, 0x5b, 0xe8, + 0x75, 0x00, 0x83, 0xee, 0x02, 0x81, 0xfe, 0x04, + 0x00, 0x72, 0x0e, 0x26, 0x8b, 0x14, 0x8b, 0xc8, + 0x2b, 0xca, 0xd1, 0xe9, 0x26, 0x89, 0x0c, 0xeb, + 0xe9, 0xe8, 0x2a, 0x00, 0x07, 0xc3, 0xe8, 0x7f, + 0xff, 0xe8, 0x81, 0x88, 0x80, 0x3e, 0x96, 0x32, + 0x00, 0x74, 0x08, 0xbb, 0x92, 0x32, 0xe8, 0xe5, + 0x05, 0x72, 0x0a, 0xe8, 0x8e, 0x03, 0x72, 0x05, + 0xe8, 0xb8, 0x03, 0x73, 0xe4, 0xc6, 0x06, 0xdb, + 0x1c, 0x01, 0xe8, 0x51, 0x85, 0xc3, 0xbf, 0x04, + 0x00, 0xbe, 0x0e, 0x00, 0x57, 0x56, 0x26, 0x03, + 0x35, 0xe8, 0x21, 0x01, 0x5e, 0x5f, 0x81, 0xc6, + 0xc0, 0x0d, 0x83, 0xc7, 0x02, 0x43, 0x8a, 0x07, + 0x0a, 0xc0, 0x75, 0xe8, 0xc3, 0x53, 0xc6, 0x06, + 0xda, 0x1c, 0x01, 0xe8, 0x28, 0x85, 0xc6, 0x06, + 0xda, 0x1c, 0x00, 0xe8, 0xeb, 0x87, 0x5b, 0x33, + 0xc0, 0x26, 0xa3, 0x0c, 0x00, 0x26, 0xa3, 0x0a, + 0x00, 0xbe, 0x04, 0x00, 0x53, 0xe8, 0x40, 0x01, + 0x26, 0x01, 0x0e, 0x0c, 0x00, 0x26, 0x89, 0x04, + 0x26, 0xff, 0x06, 0x0a, 0x00, 0x83, 0xc6, 0x02, + 0x43, 0x8a, 0x07, 0x0a, 0xc0, 0x75, 0xe6, 0x5b, + 0x8b, 0xce, 0x33, 0xc0, 0x83, 0xee, 0x02, 0x81, + 0xfe, 0x04, 0x00, 0x72, 0x0b, 0x26, 0x8b, 0x14, + 0x3b, 0xc2, 0x73, 0xf0, 0x8b, 0xc2, 0xeb, 0xec, + 0x8b, 0xf1, 0xc3, 0x8b, 0x0e, 0xc0, 0x00, 0x8b, + 0x16, 0xc2, 0x00, 0xa1, 0x52, 0x72, 0xa3, 0x50, + 0x72, 0x0b, 0xc0, 0x74, 0x54, 0xc6, 0x06, 0x3d, + 0x66, 0x05, 0x83, 0x3e, 0x1f, 0xc4, 0x00, 0x74, + 0x12, 0xe8, 0x16, 0x7c, 0x80, 0x3e, 0xdb, 0xbb, + 0x01, 0x74, 0x4f, 0xa1, 0x50, 0x72, 0xe8, 0x7c, + 0x00, 0xeb, 0x18, 0xc6, 0x06, 0x3d, 0x66, 0x01, + 0x0a, 0xdb, 0x74, 0x05, 0xc6, 0x06, 0x3d, 0x66, + 0x03, 0xe8, 0x69, 0x00, 0x80, 0x3e, 0x3d, 0x66, + 0x01, 0x75, 0x08, 0x8b, 0x77, 0x09, 0x8b, 0x7f, + 0x0b, 0xeb, 0x06, 0x8b, 0x77, 0x0d, 0x8b, 0x7f, + 0x0f, 0x8a, 0x47, 0x11, 0xa2, 0xc3, 0x64, 0xe8, + 0x38, 0x00, 0xe8, 0xa9, 0x97, 0x72, 0x2e, 0xeb, + 0x11, 0xc6, 0x06, 0x3d, 0x66, 0x00, 0xc6, 0x06, + 0xc3, 0x64, 0x00, 0x8b, 0xf1, 0x8b, 0xfa, 0xe8, + 0x24, 0x97, 0xc6, 0x06, 0xc5, 0x64, 0x00, 0xc6, + 0x06, 0xc6, 0x64, 0x01, 0x89, 0x36, 0xb7, 0x64, + 0x89, 0x3e, 0xb9, 0x64, 0x89, 0x36, 0xbb, 0x64, + 0x89, 0x3e, 0xbd, 0x64, 0xc3, 0xb0, 0x36, 0xe9, + 0x36, 0x0f, 0x83, 0xfe, 0xff, 0x75, 0x0d, 0x83, + 0xff, 0xff, 0x75, 0x08, 0x8b, 0x3e, 0xb1, 0x64, + 0x8b, 0x36, 0xaf, 0x64, 0xc3, 0x48, 0xbb, 0x54, + 0x72, 0x50, 0xe8, 0x8d, 0x9b, 0x58, 0xd1, 0xe0, + 0x03, 0xd8, 0x8b, 0x1f, 0xc3, 0x8a, 0x0f, 0x0a, + 0xc9, 0x74, 0x4c, 0x80, 0xe9, 0x1f, 0xb5, 0x00, + 0xbf, 0x38, 0x01, 0xd1, 0xe1, 0x03, 0xf9, 0x8b, + 0x3d, 0x81, 0xc7, 0x3a, 0x01, 0x8b, 0x0d, 0x83, + 0xc7, 0x02, 0x8a, 0x26, 0xe6, 0x1c, 0x51, 0x56, + 0x51, 0x56, 0x8a, 0x05, 0x0a, 0xc0, 0x74, 0x0b, + 0xfe, 0xc8, 0x0a, 0xc0, 0x74, 0x02, 0x8a, 0xc4, + 0x26, 0x88, 0x04, 0x47, 0x46, 0xfe, 0xcd, 0x75, + 0xe9, 0x5e, 0x59, 0x81, 0xc6, 0x40, 0x01, 0xfe, + 0xc9, 0x75, 0xdd, 0x5e, 0x59, 0x8a, 0xc5, 0xb4, + 0x00, 0x03, 0xf0, 0x4e, 0x43, 0xeb, 0xae, 0xc3, + 0x52, 0x33, 0xc0, 0x8b, 0xd0, 0x8a, 0x0f, 0x0a, + 0xc9, 0x74, 0x1f, 0x42, 0x80, 0xe9, 0x1f, 0xb5, + 0x00, 0xbf, 0x38, 0x01, 0xd1, 0xe1, 0x03, 0xf9, + 0x8b, 0x3d, 0x81, 0xc7, 0x3a, 0x01, 0x8b, 0x0d, + 0x8a, 0xcd, 0xb5, 0x00, 0x03, 0xc1, 0x48, 0x43, + 0xeb, 0xdb, 0x8b, 0xca, 0x5a, 0xc3, 0xb8, 0x04, + 0x00, 0xe8, 0x87, 0x0c, 0xbb, 0x9e, 0x33, 0xd1, + 0xe0, 0x03, 0xd8, 0x8b, 0x1f, 0xe8, 0x6d, 0xfb, + 0xc3, 0x33, 0xc0, 0xcd, 0x33, 0x0b, 0xc0, 0x74, + 0x01, 0xc3, 0xc6, 0x06, 0xd9, 0x00, 0x01, 0xba, + 0x5f, 0x33, 0xb4, 0x09, 0xcd, 0x21, 0xb4, 0x08, + 0xcd, 0x21, 0xc3, 0x06, 0xba, 0x00, 0xa0, 0x8e, + 0xc2, 0x50, 0xe8, 0xfe, 0x00, 0x58, 0x80, 0x3e, + 0xd8, 0x00, 0x00, 0x74, 0x02, 0x07, 0xc3, 0x0a, + 0xc0, 0x75, 0x12, 0xa1, 0xc0, 0x00, 0x3b, 0x06, + 0xc4, 0x00, 0x75, 0x09, 0xa1, 0xc2, 0x00, 0x3b, + 0x06, 0xc6, 0x00, 0x74, 0x58, 0xe8, 0x57, 0x00, + 0xba, 0x40, 0x01, 0xa1, 0xc2, 0x00, 0xa3, 0xc6, + 0x00, 0xf7, 0xe2, 0x8b, 0xf0, 0xa1, 0xc0, 0x00, + 0xa3, 0xc4, 0x00, 0x03, 0xf0, 0x89, 0x36, 0xc8, + 0x00, 0xba, 0x08, 0x00, 0xb8, 0x40, 0x01, 0x2b, + 0x06, 0xc0, 0x00, 0x3b, 0xc2, 0x77, 0x02, 0x8b, + 0xd0, 0xbb, 0xda, 0x00, 0xb9, 0x0c, 0x00, 0x8b, + 0xf9, 0x8b, 0xca, 0x8a, 0x07, 0x3c, 0x01, 0x74, + 0x03, 0x26, 0x88, 0x04, 0x43, 0x46, 0xe2, 0xf3, + 0x8b, 0xcf, 0x81, 0xc6, 0x40, 0x01, 0x83, 0xc3, + 0x08, 0x2b, 0xf2, 0x2b, 0xda, 0x81, 0xfe, 0xff, + 0xf9, 0x73, 0x02, 0xe2, 0xda, 0x07, 0xc3, 0x1e, + 0xba, 0x40, 0x01, 0xa1, 0xc6, 0x00, 0xf7, 0xe2, + 0x8b, 0xf0, 0x03, 0x36, 0xc4, 0x00, 0xba, 0x08, + 0x00, 0xb8, 0x40, 0x01, 0x2b, 0x06, 0xc4, 0x00, + 0x3b, 0xc2, 0x77, 0x02, 0x8b, 0xd0, 0x8b, 0x1e, + 0xc8, 0x00, 0xb9, 0x0c, 0x00, 0xa1, 0xb1, 0x32, + 0x8e, 0xd8, 0x8b, 0xf9, 0x8b, 0xca, 0x8a, 0x07, + 0x26, 0x88, 0x04, 0x43, 0x46, 0xe2, 0xf7, 0x8b, + 0xcf, 0x81, 0xc3, 0x40, 0x01, 0x81, 0xc6, 0x40, + 0x01, 0x2b, 0xda, 0x2b, 0xf2, 0x81, 0xfe, 0xff, + 0xf9, 0x73, 0x02, 0xe2, 0xdd, 0x1f, 0xc3, 0xb0, + 0x01, 0xe8, 0x27, 0xff, 0xc3, 0xc6, 0x06, 0xd8, + 0x00, 0x01, 0x06, 0x9c, 0xb8, 0x00, 0xa0, 0x8e, + 0xc0, 0xfa, 0xe8, 0x9a, 0xff, 0xa1, 0xc0, 0x00, + 0xa3, 0xc4, 0x00, 0xa1, 0xc2, 0x00, 0xa3, 0xc6, + 0x00, 0xe8, 0x8b, 0xff, 0x9d, 0x07, 0xc3, 0xc6, + 0x06, 0xd8, 0x00, 0x00, 0x9c, 0xfa, 0xe8, 0xce, + 0xff, 0x9d, 0xc3, 0xc6, 0x06, 0xca, 0x00, 0x00, + 0xc6, 0x06, 0xcb, 0x00, 0x00, 0x8b, 0x0e, 0xc0, + 0x00, 0x8b, 0x16, 0xc2, 0x00, 0x33, 0xdb, 0x2e, + 0xa0, 0xd7, 0x00, 0x3c, 0x4d, 0x75, 0x09, 0x81, + 0xf9, 0x3f, 0x01, 0x73, 0x36, 0x41, 0xeb, 0x33, + 0x3c, 0x4b, 0x75, 0x07, 0x0b, 0xc9, 0x74, 0x2b, + 0x49, 0xeb, 0x28, 0x3c, 0x48, 0x75, 0x07, 0x0b, + 0xd2, 0x74, 0x20, 0x4a, 0xeb, 0x1d, 0x3c, 0x50, + 0x75, 0x09, 0x81, 0xfa, 0xc7, 0x00, 0x73, 0x13, + 0x42, 0xeb, 0x10, 0x3c, 0x1d, 0x75, 0x05, 0x80, + 0xcb, 0x01, 0xeb, 0x07, 0x3c, 0x38, 0x75, 0x19, + 0x80, 0xcb, 0x02, 0x80, 0x3e, 0xd9, 0x00, 0x01, + 0x74, 0x1d, 0x53, 0x51, 0x52, 0xd1, 0xe1, 0xb8, + 0x04, 0x00, 0xcd, 0x33, 0x5a, 0x59, 0x5b, 0xeb, + 0x0e, 0x80, 0x3e, 0xd9, 0x00, 0x01, 0x74, 0x07, + 0xb8, 0x03, 0x00, 0xcd, 0x33, 0xd1, 0xe9, 0x89, + 0x0e, 0xc0, 0x00, 0x89, 0x16, 0xc2, 0x00, 0xf6, + 0xc3, 0x02, 0x74, 0x05, 0xc6, 0x06, 0xcb, 0x00, + 0x01, 0xf6, 0xc3, 0x01, 0x74, 0x05, 0xc6, 0x06, + 0xca, 0x00, 0x01, 0xc3, 0x80, 0x3e, 0xcf, 0x00, + 0x02, 0x75, 0x07, 0xc6, 0x06, 0xcf, 0x00, 0x00, + 0xeb, 0x0e, 0x80, 0x3e, 0xcb, 0x00, 0x00, 0x74, + 0x13, 0x80, 0x3e, 0xcd, 0x00, 0x01, 0x74, 0x11, + 0xc6, 0x06, 0xcb, 0x00, 0x01, 0xc6, 0x06, 0xcd, + 0x00, 0x01, 0xf9, 0xc3, 0xc6, 0x06, 0xcd, 0x00, + 0x00, 0xf8, 0xc3, 0x80, 0x3e, 0xcf, 0x00, 0x04, + 0x75, 0x07, 0xc6, 0x06, 0xcf, 0x00, 0x00, 0xeb, + 0x0e, 0x80, 0x3e, 0xca, 0x00, 0x00, 0x74, 0x13, + 0x80, 0x3e, 0xcc, 0x00, 0x01, 0x74, 0x11, 0xc6, + 0x06, 0xca, 0x00, 0x01, 0xc6, 0x06, 0xcc, 0x00, + 0x01, 0xf9, 0xc3, 0xc6, 0x06, 0xcc, 0x00, 0x00, + 0xf8, 0xc3, 0xe8, 0x06, 0xff, 0xe8, 0xcb, 0xff, + 0x72, 0x05, 0xe8, 0x97, 0xff, 0x73, 0xf3, 0xc3, + 0x50, 0x52, 0xba, 0xda, 0x03, 0xec, 0xa8, 0x08, + 0x75, 0xf8, 0xec, 0xa8, 0x08, 0x74, 0xfb, 0x5a, + 0x58, 0xc3, 0x1e, 0x8e, 0xda, 0xb7, 0x00, 0x2a, + 0xf8, 0x8a, 0xe7, 0xf6, 0xc7, 0x80, 0x74, 0x04, + 0xb4, 0x40, 0x02, 0xe7, 0x50, 0xa8, 0x80, 0x74, + 0x04, 0x34, 0xff, 0xfe, 0xc0, 0xb4, 0x00, 0x8b, + 0xc8, 0xb8, 0x40, 0x00, 0x33, 0xd2, 0xf7, 0xf1, + 0x8b, 0xc8, 0x58, 0xfc, 0x50, 0x51, 0x56, 0xb9, + 0x40, 0x00, 0xfb, 0xe8, 0xba, 0xff, 0xfa, 0xba, + 0xc8, 0x03, 0x32, 0xc0, 0xee, 0x42, 0xfa, 0xac, + 0x2a, 0xc4, 0x73, 0x02, 0x32, 0xc0, 0xee, 0xac, + 0x2a, 0xc4, 0x73, 0x02, 0x32, 0xc0, 0xee, 0xac, + 0x2a, 0xc4, 0x73, 0x02, 0x32, 0xc0, 0xee, 0xac, + 0x2a, 0xc4, 0x73, 0x02, 0x32, 0xc0, 0xee, 0xac, + 0x2a, 0xc4, 0x73, 0x02, 0x32, 0xc0, 0xee, 0xac, + 0x2a, 0xc4, 0x73, 0x02, 0x32, 0xc0, 0xee, 0xe2, + 0xce, 0xfb, 0xb9, 0x40, 0x00, 0xe8, 0x78, 0xff, + 0xfa, 0xac, 0x2a, 0xc4, 0x73, 0x02, 0x32, 0xc0, + 0xee, 0xac, 0x2a, 0xc4, 0x73, 0x02, 0x32, 0xc0, + 0xee, 0xac, 0x2a, 0xc4, 0x73, 0x02, 0x32, 0xc0, + 0xee, 0xac, 0x2a, 0xc4, 0x73, 0x02, 0x32, 0xc0, + 0xee, 0xac, 0x2a, 0xc4, 0x73, 0x02, 0x32, 0xc0, + 0xee, 0xac, 0x2a, 0xc4, 0x73, 0x02, 0x32, 0xc0, + 0xee, 0xe2, 0xce, 0xfb, 0x5e, 0x59, 0x58, 0x02, + 0xe7, 0x49, 0x74, 0x03, 0xe9, 0x75, 0xff, 0x1f, + 0xc3, 0xbb, 0x3e, 0x66, 0xe8, 0xfb, 0x97, 0x8b, + 0x36, 0xaf, 0x64, 0x8b, 0x3e, 0xb1, 0x64, 0x8b, + 0x07, 0x3d, 0xff, 0xff, 0x74, 0x25, 0x53, 0x8b, + 0x4f, 0x04, 0x8b, 0x57, 0x06, 0x8b, 0x5f, 0x02, + 0xe8, 0x1c, 0x00, 0x5b, 0x72, 0x05, 0x83, 0xc3, + 0x09, 0xeb, 0xe4, 0x8a, 0x47, 0x08, 0x3a, 0x06, + 0x08, 0x66, 0x74, 0x06, 0xa2, 0x08, 0x66, 0xe8, + 0x19, 0x00, 0xc3, 0x32, 0xc0, 0xeb, 0xef, 0x3b, + 0xf0, 0x72, 0x0e, 0x3b, 0xf1, 0x77, 0x0a, 0x3b, + 0xfb, 0x72, 0x06, 0x3b, 0xfa, 0x77, 0x02, 0xf9, + 0xc3, 0xf8, 0xc3, 0x80, 0x3e, 0xad, 0x64, 0x00, + 0x74, 0x31, 0xbe, 0x09, 0x66, 0xb9, 0x0d, 0x00, + 0xb3, 0xf2, 0x51, 0x8a, 0x24, 0x8a, 0x6c, 0x01, + 0x8a, 0x4c, 0x02, 0x2a, 0xe0, 0x73, 0x02, 0x32, + 0xe4, 0x2a, 0xe8, 0x73, 0x02, 0x32, 0xed, 0x2a, + 0xc8, 0x73, 0x02, 0x32, 0xc9, 0x50, 0xe8, 0x37, + 0x00, 0x58, 0x83, 0xc6, 0x03, 0xfe, 0xc3, 0x59, + 0xe2, 0xd8, 0xc3, 0xbe, 0x30, 0x66, 0xb9, 0x0d, + 0x00, 0xb3, 0xf2, 0x51, 0x8a, 0x24, 0x8a, 0xec, + 0x8a, 0xcc, 0x2a, 0xe0, 0x73, 0x02, 0x32, 0xe4, + 0x2a, 0xe8, 0x73, 0x02, 0x32, 0xed, 0x2a, 0xc8, + 0x73, 0x02, 0x32, 0xc9, 0x50, 0xe8, 0x08, 0x00, + 0x58, 0x46, 0xfe, 0xc3, 0x59, 0xe2, 0xdc, 0xc3, + 0xba, 0xc8, 0x03, 0x8a, 0xc3, 0xee, 0xeb, 0x00, + 0x42, 0x8a, 0xc4, 0xee, 0xeb, 0x00, 0x8a, 0xc5, + 0xee, 0xeb, 0x00, 0x8a, 0xc1, 0xee, 0xc3, 0x1e, + 0x06, 0xa1, 0xb1, 0x32, 0x8e, 0xc0, 0xa1, 0xb3, + 0x32, 0x8e, 0xd8, 0x33, 0xff, 0x33, 0xf6, 0xb9, + 0x00, 0x7d, 0xfc, 0xf3, 0xa5, 0x07, 0x1f, 0xc3, + 0x1e, 0x06, 0xe8, 0x4b, 0xfe, 0xb8, 0x00, 0xa0, + 0x8e, 0xc0, 0xa1, 0xb1, 0x32, 0x8e, 0xd8, 0x33, + 0xff, 0x33, 0xf6, 0xb9, 0x00, 0x7d, 0xfc, 0xf3, + 0xa5, 0x07, 0x1f, 0xc3, 0xe8, 0xe1, 0xff, 0xe8, + 0xf5, 0xfc, 0xc3, 0xbe, 0x86, 0x32, 0x8b, 0x04, + 0x8b, 0x54, 0x02, 0x03, 0xc1, 0x73, 0x01, 0x42, + 0x89, 0x07, 0x89, 0x57, 0x02, 0xc3, 0xbe, 0x86, + 0x32, 0x8b, 0x04, 0x8b, 0x54, 0x02, 0x8b, 0x4f, + 0x02, 0x8b, 0x37, 0x3b, 0xd1, 0x77, 0x08, 0x72, + 0x04, 0x3b, 0xc6, 0x73, 0x02, 0xf8, 0xc3, 0xf9, + 0xc3, 0x8a, 0x0e, 0x42, 0x32, 0xb5, 0x00, 0x80, + 0xf9, 0x01, 0x75, 0x05, 0xc6, 0x06, 0xa8, 0x64, + 0x04, 0x80, 0xf9, 0x03, 0x75, 0x05, 0xc6, 0x06, + 0xa8, 0x64, 0x05, 0x80, 0xf9, 0x04, 0x75, 0x05, + 0xc6, 0x06, 0xa8, 0x64, 0x05, 0xba, 0x44, 0x00, + 0xa1, 0xc1, 0x32, 0xa3, 0xac, 0x00, 0xc7, 0x06, + 0xaa, 0x00, 0x00, 0x01, 0xe8, 0x29, 0x06, 0xb8, + 0x00, 0x01, 0xa3, 0x4a, 0x32, 0xa1, 0xc1, 0x32, + 0xa3, 0x4c, 0x32, 0xb4, 0x01, 0x8b, 0x1e, 0x43, + 0x32, 0x8b, 0x0e, 0xc3, 0x32, 0x8b, 0x3e, 0xc5, + 0x32, 0x8a, 0x16, 0x45, 0x32, 0x8a, 0x36, 0x46, + 0x32, 0xff, 0x1e, 0x4a, 0x32, 0xb8, 0x3b, 0x0b, + 0x8e, 0xd8, 0x8e, 0xc0, 0xc3, 0xe8, 0x3b, 0x00, + 0xbb, 0x4e, 0x32, 0xba, 0x0a, 0x00, 0x8b, 0x3e, + 0x7d, 0x32, 0x8b, 0x0f, 0x0b, 0xc9, 0x74, 0x25, + 0x8a, 0x47, 0x03, 0xa2, 0x7c, 0x32, 0x33, 0xc0, + 0x89, 0x07, 0x89, 0x47, 0x02, 0x3b, 0xf9, 0x74, + 0x13, 0x89, 0x0e, 0x7d, 0x32, 0xb0, 0x01, 0xb4, + 0x05, 0xff, 0x1e, 0x4a, 0x32, 0xb8, 0x3b, 0x0b, + 0x8e, 0xd8, 0x8e, 0xc0, 0xc3, 0x83, 0xc3, 0x04, + 0x4a, 0x75, 0xcf, 0xc7, 0x06, 0x7a, 0x32, 0x00, + 0x00, 0xba, 0x0a, 0x00, 0xbb, 0x4e, 0x32, 0x8b, + 0x0f, 0x0b, 0xc9, 0x74, 0x07, 0x8a, 0x47, 0x02, + 0xa2, 0x7a, 0x32, 0xc3, 0x83, 0xc3, 0x04, 0x4a, + 0x75, 0xed, 0xc3, 0xe8, 0xdd, 0xff, 0xbb, 0x4e, + 0x32, 0xba, 0x0a, 0x00, 0x8b, 0x0f, 0x0b, 0xc9, + 0x74, 0x14, 0x89, 0x0e, 0x7d, 0x32, 0xb0, 0x01, + 0xb4, 0x05, 0xff, 0x1e, 0x4a, 0x32, 0xb8, 0x3b, + 0x0b, 0x8e, 0xd8, 0x8e, 0xc0, 0xc3, 0x83, 0xc3, + 0x04, 0x4a, 0x75, 0xe0, 0xc3, 0xbb, 0x4e, 0x32, + 0x89, 0x0f, 0x89, 0x47, 0x02, 0xc3, 0x89, 0x4f, + 0x04, 0x89, 0x47, 0x06, 0xc3, 0x89, 0x4f, 0x08, + 0x89, 0x47, 0x0a, 0xc3, 0x89, 0x4f, 0x0c, 0x89, + 0x47, 0x0e, 0xc3, 0x89, 0x4f, 0x10, 0x89, 0x47, + 0x12, 0xc3, 0x89, 0x4f, 0x14, 0x89, 0x47, 0x16, + 0xc3, 0x89, 0x4f, 0x18, 0x89, 0x47, 0x1a, 0xc3, + 0x89, 0x4f, 0x1c, 0x89, 0x47, 0x1e, 0xc3, 0x89, + 0x4f, 0x20, 0x89, 0x47, 0x22, 0xc3, 0x89, 0x4f, + 0x24, 0x89, 0x47, 0x26, 0xc3, 0x81, 0xe9, 0xf3, + 0x01, 0xba, 0x2c, 0x00, 0xa1, 0xbf, 0x32, 0xa3, + 0xac, 0x00, 0xc7, 0x06, 0xaa, 0x00, 0x00, 0x00, + 0xe8, 0x15, 0x05, 0xc3, 0xbe, 0xc7, 0x32, 0xbb, + 0x47, 0x33, 0xb9, 0x01, 0x00, 0x53, 0x51, 0x56, + 0x49, 0xb0, 0x1b, 0xf6, 0xe1, 0x03, 0xf0, 0xd1, + 0xe1, 0x03, 0xd9, 0x8b, 0x0f, 0x0b, 0xc9, 0x74, + 0x1b, 0x81, 0xe9, 0xf3, 0x01, 0xba, 0x2c, 0x00, + 0x8b, 0x44, 0x16, 0xa3, 0xac, 0x00, 0xc7, 0x06, + 0xaa, 0x00, 0x00, 0x00, 0xe8, 0xe1, 0x04, 0xb8, + 0x01, 0x00, 0x89, 0x04, 0x5e, 0x59, 0x5b, 0x41, + 0x80, 0xf9, 0x04, 0x76, 0xc8, 0xc3, 0xbe, 0xc7, + 0x32, 0xbb, 0x47, 0x33, 0xb9, 0x01, 0x00, 0x53, + 0x51, 0x56, 0x8b, 0xd1, 0x49, 0xb0, 0x1b, 0xf6, + 0xe1, 0x03, 0xf0, 0xd1, 0xe1, 0x03, 0xd9, 0x8b, + 0x07, 0x0b, 0xc0, 0x74, 0x26, 0x8b, 0x0e, 0xf3, + 0xb4, 0x49, 0xc1, 0xe1, 0x02, 0x03, 0xca, 0xba, + 0x38, 0x00, 0xe8, 0x2b, 0x00, 0x8b, 0x44, 0x16, + 0xa3, 0xac, 0x00, 0xc7, 0x06, 0xaa, 0x00, 0x00, + 0x00, 0x56, 0xe8, 0x93, 0x04, 0x5e, 0xb8, 0x01, + 0x00, 0x89, 0x04, 0x5e, 0x59, 0x5b, 0x41, 0x80, + 0xf9, 0x04, 0x76, 0xbb, 0xbf, 0x47, 0x33, 0xb9, + 0x08, 0x00, 0x33, 0xc0, 0xfc, 0xf3, 0xab, 0xc3, + 0x83, 0xf9, 0x51, 0x75, 0x0e, 0x80, 0x3e, 0xad, + 0xdb, 0x01, 0x75, 0x07, 0xb9, 0xa0, 0x00, 0xba, + 0x2c, 0x00, 0xc3, 0x81, 0xf9, 0x89, 0x00, 0x75, + 0x1c, 0x80, 0x3e, 0xc5, 0xdb, 0x01, 0x75, 0x15, + 0x80, 0x3e, 0xc6, 0xdb, 0x01, 0x75, 0x07, 0xb9, + 0xcb, 0x00, 0xba, 0x2c, 0x00, 0xc3, 0xb9, 0xca, + 0x00, 0xba, 0x2c, 0x00, 0xc3, 0x83, 0xf9, 0x19, + 0x75, 0x0e, 0x80, 0x3e, 0xdf, 0xdb, 0x02, 0x75, + 0x07, 0xb9, 0x4c, 0x01, 0xba, 0x2c, 0x00, 0xc3, + 0x83, 0xf9, 0x25, 0x75, 0x1c, 0x80, 0x3e, 0xe2, + 0xdb, 0x01, 0x75, 0x07, 0xb9, 0x5f, 0x01, 0xba, + 0x2c, 0x00, 0xc3, 0x80, 0x3e, 0xe2, 0xdb, 0x02, + 0x75, 0x07, 0xb9, 0x6c, 0x01, 0xba, 0x2c, 0x00, + 0xc3, 0x80, 0x3e, 0xe7, 0xdb, 0x01, 0x75, 0x18, + 0x83, 0xf9, 0x1d, 0x75, 0x07, 0xb9, 0x7c, 0x01, + 0xba, 0x2c, 0x00, 0xc3, 0x83, 0xf9, 0x1e, 0x75, + 0x07, 0xb9, 0x7d, 0x01, 0xba, 0x2c, 0x00, 0xc3, + 0x83, 0x3e, 0xec, 0xdb, 0x01, 0x75, 0x0b, 0x83, + 0xf9, 0x2a, 0x75, 0x06, 0xb9, 0x90, 0x01, 0xba, + 0x2c, 0x00, 0xc3, 0xa1, 0xbf, 0x32, 0xa3, 0xac, + 0x00, 0x33, 0xc0, 0xa3, 0xaa, 0x00, 0xb9, 0x01, + 0x00, 0xba, 0x54, 0x00, 0xe8, 0xc9, 0x03, 0xc3, + 0x8b, 0x0e, 0xf3, 0xb4, 0xba, 0x25, 0x00, 0xa1, + 0xb5, 0x32, 0xa3, 0xac, 0x00, 0x33, 0xc0, 0xa3, + 0xaa, 0x00, 0xe8, 0xb3, 0x03, 0x83, 0x3e, 0xf3, + 0xb4, 0x07, 0x75, 0x11, 0xa0, 0xe6, 0xdb, 0x3c, + 0x02, 0x74, 0x0a, 0xe8, 0x08, 0x00, 0x3c, 0x01, + 0x74, 0x03, 0xe8, 0x01, 0x00, 0xc3, 0x1e, 0x8b, + 0x16, 0xb5, 0x32, 0x8e, 0xda, 0x33, 0xdb, 0xff, + 0x0f, 0x1f, 0xc3, 0xe8, 0x0f, 0x00, 0xe8, 0xf0, + 0xfb, 0xe8, 0x3b, 0x00, 0xc6, 0x06, 0x08, 0x66, + 0xfe, 0xe8, 0xe5, 0xfb, 0xc3, 0x89, 0x3e, 0xb7, + 0x64, 0x89, 0x36, 0xb9, 0x64, 0x89, 0x3e, 0xbb, + 0x64, 0x89, 0x36, 0xbd, 0x64, 0xa3, 0xaf, 0x64, + 0x89, 0x1e, 0xb1, 0x64, 0x88, 0x2e, 0xc3, 0x64, + 0x88, 0x0e, 0x07, 0x66, 0xe8, 0x49, 0x92, 0xc6, + 0x06, 0xdc, 0x1c, 0x02, 0xc6, 0x06, 0xda, 0x1c, + 0x01, 0xc6, 0x06, 0xc6, 0x64, 0x01, 0xc3, 0xc6, + 0x06, 0xc5, 0x64, 0x00, 0xc6, 0x06, 0x3d, 0x66, + 0x00, 0xc6, 0x06, 0x40, 0x67, 0xff, 0xc6, 0x06, + 0xc4, 0x64, 0x01, 0xe8, 0x12, 0x89, 0x80, 0x3e, + 0xad, 0x64, 0x01, 0x75, 0x0a, 0xe8, 0x84, 0x00, + 0xe8, 0x1d, 0x00, 0xe8, 0x8b, 0x00, 0xc3, 0xe8, + 0x94, 0x00, 0xe8, 0x13, 0x00, 0xb8, 0x00, 0xa0, + 0xb9, 0x00, 0x7d, 0xe8, 0xa2, 0x00, 0xe8, 0x92, + 0x00, 0xe8, 0x5d, 0x00, 0xe8, 0x59, 0xfc, 0xc3, + 0xe8, 0xa2, 0x01, 0xe8, 0x01, 0x00, 0xc3, 0xe8, + 0xf0, 0x05, 0xe8, 0x0f, 0x01, 0xe8, 0x2f, 0xfc, + 0xe8, 0x45, 0xfc, 0xff, 0x36, 0xce, 0x64, 0xc7, + 0x06, 0xce, 0x64, 0xff, 0xff, 0xe8, 0x86, 0x8f, + 0x8f, 0x06, 0xce, 0x64, 0xc6, 0x06, 0x33, 0x33, + 0x01, 0xe8, 0x22, 0x00, 0xc6, 0x06, 0xdd, 0x1c, + 0x02, 0xe8, 0xda, 0x7b, 0xbb, 0xa4, 0x32, 0x8b, + 0x0e, 0x90, 0x32, 0xe8, 0x3d, 0xfc, 0xc6, 0x06, + 0x33, 0x33, 0x00, 0xc6, 0x06, 0xdc, 0x1c, 0x03, + 0xc6, 0x06, 0xdd, 0x1c, 0x03, 0xc3, 0xbb, 0xa4, + 0x32, 0x33, 0xc0, 0x89, 0x07, 0x89, 0x47, 0x02, + 0xc3, 0xb8, 0x1b, 0x10, 0x33, 0xdb, 0xb9, 0xff, + 0x00, 0xcd, 0x10, 0xc3, 0x8b, 0x16, 0xb3, 0x32, + 0xbe, 0x00, 0xfa, 0xb0, 0xf0, 0xe8, 0x4a, 0xfa, + 0xc3, 0x8b, 0x16, 0xb3, 0x32, 0xbe, 0x00, 0xfa, + 0xb0, 0x10, 0xe8, 0x3d, 0xfa, 0xc3, 0x8b, 0x16, + 0xb3, 0x32, 0xbe, 0x00, 0xfa, 0xb0, 0xc0, 0xe8, + 0x30, 0xfa, 0xc3, 0x8b, 0x16, 0xb3, 0x32, 0xbe, + 0x00, 0xfa, 0xb0, 0x20, 0xe8, 0x23, 0xfa, 0xc3, + 0x06, 0x8e, 0xc0, 0x33, 0xc0, 0x8b, 0xf8, 0xfc, + 0xf3, 0xab, 0x07, 0xc3, 0xc6, 0x06, 0xdc, 0x1c, + 0x01, 0xe8, 0x0f, 0x00, 0xc3, 0xc6, 0x06, 0xdc, + 0x1c, 0x02, 0xe8, 0x06, 0x00, 0xc6, 0x06, 0xdc, + 0x1c, 0x03, 0xc3, 0x80, 0x3e, 0xad, 0x64, 0x01, + 0x75, 0x0a, 0xe8, 0x9f, 0xff, 0xe8, 0x1d, 0x00, + 0xe8, 0xa6, 0xff, 0xc3, 0xe8, 0xaf, 0xff, 0xe8, + 0x13, 0x00, 0xb8, 0x00, 0xa0, 0xb9, 0x00, 0x7d, + 0xe8, 0xbd, 0xff, 0xe8, 0xad, 0xff, 0xe8, 0x78, + 0xff, 0xe8, 0x74, 0xfb, 0xc3, 0xe8, 0xbd, 0x00, + 0xe8, 0x0f, 0x05, 0xe8, 0x2e, 0x00, 0xe8, 0x03, + 0xfd, 0xe8, 0x4b, 0xfb, 0xe8, 0x61, 0xfb, 0xe8, + 0x54, 0xff, 0xc6, 0x06, 0x33, 0x33, 0x01, 0xc6, + 0x06, 0xdd, 0x1c, 0x02, 0xe8, 0x07, 0x7b, 0xbb, + 0xa4, 0x32, 0x8b, 0x0e, 0x90, 0x32, 0xe8, 0x6a, + 0xfb, 0xc6, 0x06, 0x33, 0x33, 0x00, 0xc6, 0x06, + 0xdd, 0x1c, 0x03, 0xc3, 0x55, 0xbf, 0xc7, 0x32, + 0xb9, 0x36, 0x00, 0x33, 0xc0, 0xfc, 0xf3, 0xab, + 0xbe, 0xc7, 0x32, 0xbb, 0x9e, 0xd8, 0xbd, 0x46, + 0xd9, 0xb9, 0x01, 0x00, 0x53, 0x51, 0x56, 0x55, + 0x8b, 0x16, 0xf3, 0xb4, 0x4a, 0xc1, 0xe2, 0x02, + 0x03, 0xda, 0x03, 0xd9, 0x4b, 0xd1, 0xe2, 0x03, + 0xea, 0x49, 0x03, 0xe9, 0x03, 0xe9, 0xb0, 0x1b, + 0xf6, 0xe1, 0x41, 0x03, 0xf0, 0x8a, 0x2f, 0x0a, + 0xed, 0x74, 0x3e, 0x8a, 0xd1, 0xb6, 0x00, 0x8b, + 0x0e, 0xf3, 0xb4, 0x49, 0xc1, 0xe1, 0x02, 0x03, + 0xca, 0x51, 0x3e, 0x8b, 0x5e, 0x00, 0x83, 0xc6, + 0x16, 0xe8, 0x4f, 0x04, 0x59, 0xba, 0x38, 0x00, + 0xe8, 0x15, 0xfd, 0x8b, 0x04, 0xa3, 0xac, 0x00, + 0xc7, 0x06, 0xaa, 0x00, 0x00, 0x00, 0x56, 0xe8, + 0x7e, 0x01, 0x5e, 0x83, 0xee, 0x16, 0xb8, 0x01, + 0x00, 0x89, 0x04, 0x89, 0x44, 0x12, 0x89, 0x44, + 0x14, 0x5d, 0x5e, 0x59, 0x5b, 0x41, 0x80, 0xf9, + 0x04, 0x76, 0x91, 0x5d, 0xc3, 0x8b, 0x0e, 0xf3, + 0xb4, 0xba, 0x1d, 0x00, 0xa1, 0xb3, 0x32, 0xa3, + 0xac, 0x00, 0x33, 0xc0, 0xa3, 0xaa, 0x00, 0xe8, + 0x4e, 0x01, 0xe8, 0x9e, 0x00, 0xe8, 0x80, 0xfd, + 0xc3, 0xe8, 0x04, 0x00, 0xe8, 0x91, 0xfa, 0xc3, + 0xe8, 0xda, 0xff, 0xff, 0x36, 0x33, 0x33, 0xff, + 0x36, 0xdc, 0x1c, 0xff, 0x36, 0xdd, 0x1c, 0xc6, + 0x06, 0x33, 0x33, 0x00, 0xc6, 0x06, 0xdc, 0x1c, + 0x03, 0xc6, 0x06, 0xdd, 0x1c, 0x03, 0xfe, 0x0e, + 0x07, 0x66, 0xe8, 0xae, 0x80, 0xe8, 0xa3, 0x7d, + 0xe8, 0x0c, 0x7f, 0xe8, 0xb2, 0xf8, 0xe8, 0xf8, + 0x85, 0xe8, 0xab, 0x7f, 0xe8, 0x70, 0xf7, 0x8f, + 0x06, 0xdd, 0x1c, 0x8f, 0x06, 0xdc, 0x1c, 0x8f, + 0x06, 0x33, 0x33, 0xc3, 0xe8, 0x96, 0xff, 0xff, + 0x36, 0x33, 0x33, 0xff, 0x36, 0xdc, 0x1c, 0xff, + 0x36, 0xdd, 0x1c, 0xc6, 0x06, 0x33, 0x33, 0x00, + 0xc6, 0x06, 0xdc, 0x1c, 0x03, 0xc6, 0x06, 0xdd, + 0x1c, 0x03, 0xe8, 0xe1, 0x79, 0x8f, 0x06, 0xdd, + 0x1c, 0x8f, 0x06, 0xdc, 0x1c, 0x8f, 0x06, 0x33, + 0x33, 0xc3, 0xe8, 0x68, 0xff, 0xff, 0x36, 0x33, + 0x33, 0xff, 0x36, 0xdd, 0x1c, 0xc6, 0x06, 0x33, + 0x33, 0x00, 0xc6, 0x06, 0xdd, 0x1c, 0x03, 0xe8, + 0xbc, 0x79, 0x8f, 0x06, 0xdd, 0x1c, 0x8f, 0x06, + 0x33, 0x33, 0xc3, 0x06, 0xa1, 0xb5, 0x32, 0x8e, + 0xc0, 0xa3, 0xac, 0x00, 0xc7, 0x06, 0xaa, 0x00, + 0x00, 0x00, 0xe8, 0x13, 0x91, 0x53, 0x8a, 0x0f, + 0x0a, 0xc9, 0x74, 0x17, 0x80, 0xf9, 0xff, 0x74, + 0x16, 0xb5, 0x00, 0xba, 0x4c, 0x00, 0xe8, 0x87, + 0x00, 0xa1, 0xb3, 0x32, 0x8b, 0x1e, 0xaa, 0x00, + 0xe8, 0xb9, 0x6a, 0x5b, 0x43, 0xeb, 0xde, 0x5b, + 0x07, 0xc3, 0x06, 0x8b, 0x16, 0xb5, 0x32, 0x8e, + 0xc2, 0x89, 0x16, 0xac, 0x00, 0xc7, 0x06, 0xaa, + 0x00, 0x00, 0x00, 0x8a, 0xc8, 0xb5, 0x00, 0xba, + 0x4c, 0x00, 0xe8, 0x5b, 0x00, 0xa1, 0xb3, 0x32, + 0x8b, 0x1e, 0xaa, 0x00, 0xe8, 0x8d, 0x6a, 0x07, + 0xc3, 0xe8, 0xd6, 0xff, 0xe8, 0x81, 0xfc, 0xc3, + 0xb8, 0x00, 0x3d, 0xb1, 0x00, 0xcd, 0x21, 0x72, + 0x3c, 0xa3, 0xa2, 0x00, 0xb8, 0x02, 0x42, 0x33, + 0xc9, 0x33, 0xd2, 0x8b, 0x1e, 0xa2, 0x00, 0xcd, + 0x21, 0x72, 0x2a, 0x8b, 0xd8, 0xb0, 0x33, 0x0b, + 0xd2, 0x75, 0x22, 0x89, 0x1e, 0xa4, 0x00, 0xb8, + 0x00, 0x42, 0x33, 0xc9, 0x33, 0xd2, 0x8b, 0x1e, + 0xa2, 0x00, 0xcd, 0x21, 0x72, 0x0f, 0xb4, 0x3e, + 0x8b, 0x1e, 0xa2, 0x00, 0xcd, 0x21, 0x72, 0x05, + 0x8b, 0x0e, 0xa4, 0x00, 0xc3, 0xe9, 0xf8, 0x03, + 0x51, 0xb8, 0x00, 0x3d, 0xb1, 0x00, 0xcd, 0x21, + 0x72, 0x6a, 0xa3, 0xa2, 0x00, 0x59, 0xb8, 0x04, + 0x00, 0xf7, 0xe1, 0x8b, 0xca, 0x8b, 0xd0, 0x8b, + 0x1e, 0xa2, 0x00, 0xb8, 0x00, 0x42, 0xcd, 0x21, + 0x72, 0x52, 0x8b, 0x1e, 0xa2, 0x00, 0xb9, 0x08, + 0x00, 0xba, 0xae, 0x00, 0xb4, 0x3f, 0xcd, 0x21, + 0x72, 0x42, 0xbb, 0xae, 0x00, 0x8b, 0x17, 0x8b, + 0x4f, 0x02, 0x8b, 0x47, 0x04, 0x2b, 0xc2, 0xa3, + 0xa4, 0x00, 0x8b, 0x1e, 0xa2, 0x00, 0xb8, 0x00, + 0x42, 0xcd, 0x21, 0x72, 0x27, 0x8b, 0x1e, 0xa2, + 0x00, 0x8b, 0x0e, 0xa4, 0x00, 0x8b, 0x16, 0xaa, + 0x00, 0xa1, 0xac, 0x00, 0x8e, 0xd8, 0xb4, 0x3f, + 0xcd, 0x21, 0x72, 0x10, 0xb8, 0x3b, 0x0b, 0x8e, + 0xd8, 0xb4, 0x3e, 0x8b, 0x1e, 0xa2, 0x00, 0xcd, + 0x21, 0x72, 0x01, 0xc3, 0xe9, 0x81, 0x03, 0xb8, + 0x00, 0x3d, 0xb1, 0x00, 0xcd, 0x21, 0x72, 0x54, + 0xa3, 0xa2, 0x00, 0xb8, 0x02, 0x42, 0x33, 0xc9, + 0x33, 0xd2, 0x8b, 0x1e, 0xa2, 0x00, 0xcd, 0x21, + 0x72, 0x42, 0x8b, 0xd8, 0xb0, 0x33, 0x0b, 0xd2, + 0x75, 0x3a, 0x89, 0x1e, 0xa4, 0x00, 0xb8, 0x00, + 0x42, 0x33, 0xc9, 0x33, 0xd2, 0x8b, 0x1e, 0xa2, + 0x00, 0xcd, 0x21, 0x72, 0x27, 0x8b, 0x1e, 0xa2, + 0x00, 0x8b, 0x0e, 0xa4, 0x00, 0x8b, 0x16, 0xaa, + 0x00, 0xa1, 0xac, 0x00, 0x8e, 0xd8, 0xb4, 0x3f, + 0xcd, 0x21, 0x72, 0x10, 0xb8, 0x3b, 0x0b, 0x8e, + 0xd8, 0xb4, 0x3e, 0x8b, 0x1e, 0xa2, 0x00, 0xcd, + 0x21, 0x72, 0x01, 0xc3, 0xe9, 0x21, 0x03, 0xb8, + 0x00, 0x3d, 0xb1, 0x00, 0xcd, 0x21, 0x72, 0x3b, + 0xa3, 0xa2, 0x00, 0xb8, 0x00, 0x42, 0x33, 0xc9, + 0x8b, 0x16, 0xa8, 0x00, 0x8b, 0x1e, 0xa2, 0x00, + 0xcd, 0x21, 0x72, 0x27, 0x8b, 0x1e, 0xa2, 0x00, + 0x8b, 0x0e, 0xa6, 0x00, 0x8b, 0x16, 0xaa, 0x00, + 0xa1, 0xac, 0x00, 0x8e, 0xd8, 0xb4, 0x3f, 0xcd, + 0x21, 0x72, 0x10, 0xb8, 0x3b, 0x0b, 0x8e, 0xd8, + 0xb4, 0x3e, 0x8b, 0x1e, 0xa2, 0x00, 0xcd, 0x21, + 0x72, 0x01, 0xc3, 0xe9, 0xda, 0x02, 0x51, 0xb4, + 0x3c, 0xb1, 0x00, 0xcd, 0x21, 0x59, 0x72, 0x26, + 0xa3, 0xa2, 0x00, 0x8b, 0x1e, 0xa2, 0x00, 0x8b, + 0x16, 0xaa, 0x00, 0xa1, 0xac, 0x00, 0x8e, 0xd8, + 0xb4, 0x40, 0xcd, 0x21, 0x72, 0x10, 0xb8, 0x3b, + 0x0b, 0x8e, 0xd8, 0xb4, 0x3e, 0x8b, 0x1e, 0xa2, + 0x00, 0xcd, 0x21, 0x72, 0x01, 0xc3, 0xe9, 0xa7, + 0x02, 0xba, 0x13, 0x00, 0xb8, 0x00, 0x3d, 0xb1, + 0x00, 0xcd, 0x21, 0x72, 0x19, 0x8b, 0xd8, 0xb4, + 0x3e, 0xcd, 0x21, 0x72, 0x73, 0x8c, 0x1e, 0xac, + 0x00, 0xb8, 0x42, 0x32, 0xa3, 0xaa, 0x00, 0xba, + 0x13, 0x00, 0xe8, 0x02, 0xff, 0xc3, 0x3d, 0x02, + 0x00, 0x75, 0x5d, 0xb8, 0x03, 0x00, 0xcd, 0x10, + 0x8c, 0xc8, 0x8e, 0xd8, 0xba, 0x00, 0xb1, 0xb4, + 0x09, 0xcd, 0x21, 0xb8, 0x00, 0x4c, 0xcd, 0x21, + 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x66, 0x69, 0x6c, 0x65, + 0x3a, 0x20, 0x53, 0x4f, 0x55, 0x4e, 0x44, 0x2e, + 0x53, 0x45, 0x54, 0x20, 0x6e, 0x6f, 0x74, 0x20, + 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x20, 0x50, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x20, 0x72, 0x75, + 0x6e, 0x20, 0x53, 0x4f, 0x55, 0x4e, 0x44, 0x53, + 0x45, 0x54, 0x2e, 0x45, 0x58, 0x45, 0x2e, 0x24, + 0xe9, 0x1d, 0x02, 0x89, 0x0e, 0x90, 0xdb, 0xb0, + 0x00, 0xb4, 0x05, 0xff, 0x1e, 0x4a, 0x32, 0xb8, + 0x3b, 0x0b, 0x8e, 0xd8, 0x8e, 0xc0, 0xc3, 0x00, + 0x00, 0x00, 0x00, 0x57, 0x8b, 0xc8, 0xbb, 0x5f, + 0xb1, 0x2e, 0x8b, 0x47, 0x02, 0x2e, 0x8b, 0x1f, + 0x8b, 0xf0, 0x8b, 0xfb, 0x8a, 0xd4, 0x8a, 0xe0, + 0x8a, 0xc7, 0x8a, 0xfb, 0x32, 0xdb, 0xd0, 0xda, + 0xd1, 0xd8, 0xd1, 0xdb, 0x03, 0xdf, 0x13, 0xc6, + 0x81, 0xc3, 0xe9, 0x62, 0x15, 0x19, 0x36, 0xbf, + 0x5f, 0xb1, 0x2e, 0x89, 0x1d, 0x2e, 0x89, 0x45, + 0x02, 0x33, 0xd2, 0xf7, 0xf1, 0x8b, 0xc2, 0x5f, + 0xc3, 0xb4, 0x62, 0xcd, 0x21, 0x53, 0xba, 0x28, + 0x25, 0x2b, 0xd3, 0x33, 0xc0, 0xe8, 0x1c, 0x00, + 0x05, 0x0f, 0x00, 0x83, 0xd2, 0x00, 0xbb, 0x10, + 0x00, 0xf7, 0xf3, 0x8b, 0xd8, 0x58, 0x06, 0x8e, + 0xc0, 0xb4, 0x4a, 0xcd, 0x21, 0x07, 0x72, 0x01, + 0xc3, 0xe9, 0x9c, 0x01, 0x53, 0xd1, 0xc2, 0xd1, + 0xc2, 0xd1, 0xc2, 0xd1, 0xc2, 0x8b, 0xda, 0x83, + 0xe2, 0x0f, 0x83, 0xe3, 0xf0, 0x03, 0xc3, 0x83, + 0xd2, 0x00, 0x5b, 0xc3, 0xbb, 0x06, 0xfa, 0xbe, + 0xb1, 0x32, 0xe8, 0x3e, 0x00, 0xbb, 0x00, 0xfd, + 0xbe, 0xb3, 0x32, 0xe8, 0x35, 0x00, 0xbb, 0x00, + 0xfa, 0xbe, 0xb5, 0x32, 0xe8, 0x2c, 0x00, 0xbb, + 0x00, 0xfd, 0xbe, 0xbf, 0x32, 0xe8, 0x23, 0x00, + 0xbb, 0x88, 0x14, 0xbe, 0xc1, 0x32, 0xe8, 0x1a, + 0x00, 0x80, 0x3e, 0x42, 0x32, 0x06, 0x74, 0x12, + 0xbb, 0x4e, 0x80, 0xbe, 0xc3, 0x32, 0xe8, 0x0a, + 0x00, 0xbb, 0xb8, 0x88, 0xbe, 0xc5, 0x32, 0xe8, + 0x01, 0x00, 0xc3, 0x53, 0x56, 0xe8, 0x11, 0x00, + 0xb4, 0x48, 0xcd, 0x21, 0x5e, 0x59, 0x72, 0x06, + 0x89, 0x04, 0xe8, 0x19, 0x00, 0xc3, 0xe9, 0x27, + 0x01, 0x8b, 0xc3, 0x05, 0x0f, 0x00, 0x73, 0x04, + 0xb0, 0x38, 0xeb, 0xf2, 0x33, 0xd2, 0xbb, 0x10, + 0x00, 0xf7, 0xf3, 0x8b, 0xd8, 0xc3, 0x06, 0x8e, + 0xc0, 0x33, 0xc0, 0x33, 0xff, 0xfc, 0xf3, 0xaa, + 0x07, 0xc3, 0x06, 0xbe, 0xc7, 0x32, 0xb9, 0x01, + 0x00, 0x51, 0x56, 0x49, 0xb0, 0x1b, 0xf6, 0xe1, + 0x03, 0xf0, 0x8b, 0x44, 0x16, 0x0b, 0xc0, 0x74, + 0x0b, 0x8e, 0xc0, 0xb4, 0x49, 0xcd, 0x21, 0x73, + 0x03, 0xe9, 0xe4, 0x00, 0x5e, 0x59, 0x41, 0x80, + 0xf9, 0x04, 0x76, 0xdd, 0x07, 0xc3, 0xa0, 0x42, + 0x32, 0x3c, 0x01, 0x74, 0x1d, 0x3c, 0x06, 0x74, + 0x19, 0x3c, 0x07, 0x74, 0x15, 0x3c, 0x03, 0x74, + 0x11, 0x3c, 0x04, 0x74, 0x0d, 0xc7, 0x06, 0x84, + 0x32, 0x6c, 0x00, 0xb8, 0x59, 0x00, 0xa3, 0x04, + 0x00, 0xc3, 0xc7, 0x06, 0x84, 0x32, 0x9c, 0x2e, + 0xb8, 0x0a, 0x00, 0xa3, 0x04, 0x00, 0xc3, 0x33, + 0xd2, 0xb8, 0xff, 0xff, 0xf7, 0x36, 0x84, 0x32, + 0xa3, 0x7f, 0x32, 0xa3, 0x81, 0x32, 0xc3, 0xb0, + 0x36, 0xe6, 0x43, 0xa1, 0x84, 0x32, 0xe6, 0x40, + 0x8a, 0xc4, 0xe6, 0x40, 0xc3, 0xb0, 0x36, 0xe6, + 0x43, 0x32, 0xc0, 0xe6, 0x40, 0xe6, 0x40, 0xc3, + 0x06, 0xb8, 0x08, 0x35, 0xcd, 0x21, 0x89, 0x1e, + 0x00, 0x00, 0x8c, 0x06, 0x02, 0x00, 0x07, 0x8b, + 0x16, 0x04, 0x00, 0x1e, 0x0e, 0x1f, 0xb8, 0x08, + 0x25, 0xcd, 0x21, 0x1f, 0xc3, 0x1e, 0x8b, 0x16, + 0x00, 0x00, 0x8b, 0x1e, 0x02, 0x00, 0x8e, 0xdb, + 0xb8, 0x08, 0x25, 0xcd, 0x21, 0x1f, 0xc3, 0x06, + 0xb8, 0x09, 0x35, 0xcd, 0x21, 0x2e, 0x89, 0x1e, + 0xd8, 0x00, 0x2e, 0x8c, 0x06, 0xda, 0x00, 0x07, + 0x1e, 0x0e, 0x1f, 0xba, 0xba, 0x00, 0xb8, 0x09, + 0x25, 0xcd, 0x21, 0x1f, 0xc3, 0x1e, 0x2e, 0x8b, + 0x16, 0xd8, 0x00, 0x2e, 0x8b, 0x1e, 0xda, 0x00, + 0x8e, 0xdb, 0xb8, 0x09, 0x25, 0xcd, 0x21, 0x1f, + 0xc3, 0xe8, 0x42, 0xff, 0xe8, 0xc8, 0xff, 0xfa, + 0xb0, 0xff, 0xe6, 0x21, 0xe8, 0x91, 0xff, 0xe8, + 0x75, 0xff, 0xb0, 0x00, 0xe6, 0x21, 0xfb, 0xb8, + 0x13, 0x00, 0xcd, 0x10, 0xe8, 0x58, 0xff, 0xc3, + 0x50, 0xb8, 0x03, 0x00, 0xcd, 0x10, 0x58, 0xb4, + 0x00, 0xbb, 0xa6, 0x2f, 0xd1, 0xe0, 0x03, 0xd8, + 0x8b, 0x17, 0xb4, 0x09, 0xcd, 0x21, 0x80, 0x3e, + 0x42, 0x32, 0x00, 0x74, 0x0d, 0xb4, 0x02, 0xff, + 0x1e, 0x4a, 0x32, 0xb8, 0x3b, 0x0b, 0x8e, 0xd8, + 0x8e, 0xc0, 0xeb, 0x00, 0xfa, 0xe4, 0x21, 0x50, + 0xb0, 0xff, 0xe6, 0x21, 0xfa, 0xe8, 0x3d, 0xff, + 0xe8, 0x62, 0xff, 0xe8, 0x8f, 0xff, 0x58, 0xe6, + 0x21, 0xfb, 0xb8, 0x00, 0x4c, 0xcd, 0x21, 0x00 +}; + +// Data Segment +// starts at offset 0xb5b0 in original executable +#define DSEG_STARTBLK_SIZE 13214 + +const static uint8 dsegStartBlock[DSEG_STARTBLK_SIZE] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x73, 0x6f, 0x75, 0x6e, 0x64, + 0x2e, 0x73, 0x65, 0x74, 0x00, 0x6f, 0x66, 0x66, + 0x2e, 0x72, 0x65, 0x73, 0x00, 0x6f, 0x6e, 0x2e, + 0x72, 0x65, 0x73, 0x00, 0x6c, 0x61, 0x6e, 0x5f, + 0x35, 0x30, 0x30, 0x2e, 0x72, 0x65, 0x73, 0x00, + 0x6c, 0x61, 0x6e, 0x5f, 0x30, 0x30, 0x30, 0x2e, + 0x72, 0x65, 0x73, 0x00, 0x73, 0x64, 0x72, 0x2e, + 0x72, 0x65, 0x73, 0x00, 0x6f, 0x6e, 0x73, 0x2e, + 0x72, 0x65, 0x73, 0x00, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x2e, 0x72, 0x65, 0x73, 0x00, 0x6d, 0x6d, + 0x6d, 0x2e, 0x72, 0x65, 0x73, 0x00, 0x73, 0x61, + 0x6d, 0x5f, 0x73, 0x61, 0x6d, 0x2e, 0x72, 0x65, + 0x73, 0x00, 0x73, 0x61, 0x6d, 0x5f, 0x6d, 0x6d, + 0x6d, 0x2e, 0x72, 0x65, 0x73, 0x00, 0x75, 0x6e, + 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x2e, 0x72, 0x65, + 0x73, 0x00, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, + 0x2e, 0x72, 0x65, 0x73, 0x00, 0x74, 0x65, 0x65, + 0x6e, 0x61, 0x67, 0x65, 0x30, 0x2e, 0x73, 0x61, + 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa0, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x3f, 0x01, + 0x00, 0x00, 0xdf, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0xdf, 0x00, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0xdf, 0xff, 0x00, 0x01, 0x01, 0x01, + 0x01, 0x01, 0xdf, 0xff, 0xff, 0x00, 0x01, 0x01, + 0x01, 0x01, 0xdf, 0xff, 0xff, 0xff, 0x00, 0x01, + 0x01, 0x01, 0xdf, 0xff, 0xff, 0xff, 0xff, 0x00, + 0x01, 0x01, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x01, 0xdf, 0xff, 0xdf, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xdf, 0xdf, 0x01, 0xdf, 0xff, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x01, 0xdf, 0xff, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xdf, 0xff, + 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xdf, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x32, 0xe1, + 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x30, 0x25, 0x30, 0x34, 0x30, 0x39, 0x30, + 0x4d, 0x30, 0x52, 0x30, 0x57, 0x30, 0x76, 0x30, + 0x8a, 0x30, 0xa7, 0x30, 0xac, 0x30, 0xb1, 0x30, + 0xb6, 0x30, 0xbb, 0x30, 0xc0, 0x30, 0xc5, 0x30, + 0xca, 0x30, 0xcf, 0x30, 0xd4, 0x30, 0xd9, 0x30, + 0xde, 0x30, 0xe3, 0x30, 0xe8, 0x30, 0xed, 0x30, + 0xf2, 0x30, 0xf7, 0x30, 0xfc, 0x30, 0x01, 0x31, + 0x06, 0x31, 0x0b, 0x31, 0x10, 0x31, 0x15, 0x31, + 0x1a, 0x31, 0x1f, 0x31, 0x24, 0x31, 0x29, 0x31, + 0x2e, 0x31, 0x33, 0x31, 0x38, 0x31, 0x3d, 0x31, + 0x42, 0x31, 0x47, 0x31, 0x4c, 0x31, 0x51, 0x31, + 0x56, 0x31, 0x5b, 0x31, 0x60, 0x31, 0x65, 0x31, + 0x6a, 0x31, 0x6f, 0x31, 0xbd, 0x31, 0xc1, 0x31, + 0xc5, 0x31, 0xc9, 0x31, 0xcd, 0x31, 0xce, 0x31, + 0xd2, 0x31, 0xd6, 0x31, 0xda, 0x31, 0xde, 0x31, + 0x45, 0x30, 0x31, 0x68, 0x24, 0x46, 0x69, 0x6c, + 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x66, 0x6f, + 0x75, 0x6e, 0x64, 0x24, 0x45, 0x30, 0x33, 0x68, + 0x24, 0x54, 0x6f, 0x6f, 0x20, 0x6d, 0x61, 0x6e, + 0x79, 0x20, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x66, + 0x69, 0x6c, 0x65, 0x73, 0x24, 0x45, 0x30, 0x35, + 0x68, 0x24, 0x45, 0x30, 0x36, 0x68, 0x24, 0x4d, + 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x20, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x20, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x20, 0x64, 0x65, 0x73, 0x74, + 0x72, 0x6f, 0x79, 0x65, 0x64, 0x24, 0x49, 0x6e, + 0x73, 0x75, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, + 0x6e, 0x74, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, + 0x79, 0x24, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, + 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x69, + 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x24, 0x45, + 0x30, 0x41, 0x68, 0x24, 0x45, 0x30, 0x42, 0x68, + 0x24, 0x45, 0x30, 0x43, 0x68, 0x24, 0x45, 0x30, + 0x44, 0x68, 0x24, 0x45, 0x30, 0x45, 0x68, 0x24, + 0x45, 0x30, 0x46, 0x68, 0x24, 0x45, 0x31, 0x30, + 0x68, 0x24, 0x45, 0x31, 0x31, 0x68, 0x24, 0x45, + 0x31, 0x32, 0x68, 0x24, 0x45, 0x31, 0x33, 0x68, + 0x24, 0x45, 0x31, 0x34, 0x68, 0x24, 0x45, 0x31, + 0x35, 0x68, 0x24, 0x45, 0x31, 0x36, 0x68, 0x24, + 0x45, 0x31, 0x37, 0x68, 0x24, 0x45, 0x31, 0x38, + 0x68, 0x24, 0x45, 0x31, 0x39, 0x68, 0x24, 0x45, + 0x31, 0x41, 0x68, 0x24, 0x45, 0x31, 0x42, 0x68, + 0x24, 0x45, 0x31, 0x43, 0x68, 0x24, 0x45, 0x31, + 0x44, 0x68, 0x24, 0x45, 0x31, 0x45, 0x68, 0x24, + 0x45, 0x31, 0x46, 0x68, 0x24, 0x45, 0x32, 0x30, + 0x68, 0x24, 0x45, 0x32, 0x31, 0x68, 0x24, 0x45, + 0x32, 0x32, 0x68, 0x24, 0x45, 0x32, 0x33, 0x68, + 0x24, 0x45, 0x32, 0x34, 0x68, 0x24, 0x45, 0x32, + 0x35, 0x68, 0x24, 0x45, 0x32, 0x36, 0x68, 0x24, + 0x45, 0x32, 0x37, 0x68, 0x24, 0x45, 0x32, 0x38, + 0x68, 0x24, 0x45, 0x32, 0x39, 0x68, 0x24, 0x45, + 0x32, 0x41, 0x68, 0x24, 0x45, 0x32, 0x42, 0x68, + 0x24, 0x45, 0x32, 0x43, 0x68, 0x24, 0x45, 0x32, + 0x44, 0x68, 0x24, 0x45, 0x32, 0x45, 0x68, 0x24, + 0x45, 0x32, 0x46, 0x68, 0x24, 0x45, 0x33, 0x30, + 0x68, 0x24, 0x45, 0x33, 0x31, 0x68, 0x24, 0x44, + 0x75, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x6e, + 0x74, 0x69, 0x2d, 0x76, 0x69, 0x72, 0x75, 0x73, + 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x61, 0x64, + 0x65, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x68, 0x61, + 0x76, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, + 0x69, 0x73, 0x20, 0x67, 0x61, 0x6d, 0x65, 0x20, + 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x6f, 0x72, 0x69, + 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x64, 0x69, + 0x73, 0x6b, 0x73, 0x2e, 0x24, 0x47, 0x45, 0x31, + 0x24, 0x47, 0x45, 0x32, 0x24, 0x47, 0x45, 0x33, + 0x24, 0x47, 0x45, 0x34, 0x24, 0x24, 0x47, 0x45, + 0x35, 0x24, 0x47, 0x45, 0x36, 0x24, 0x47, 0x45, + 0x37, 0x24, 0x47, 0x45, 0x38, 0x24, 0x47, 0x45, + 0x39, 0x24, 0x43, 0x61, 0x6c, 0x6c, 0x20, 0x79, + 0x6f, 0x75, 0x72, 0x73, 0x65, 0x6c, 0x66, 0x20, + 0x70, 0x69, 0x72, 0x61, 0x74, 0x65, 0x2c, 0x20, + 0x68, 0x61, 0x63, 0x6b, 0x65, 0x72, 0x2c, 0x20, + 0x65, 0x6c, 0x69, 0x74, 0x65, 0x20, 0x6f, 0x72, + 0x20, 0x77, 0x68, 0x61, 0x74, 0x65, 0x76, 0x65, + 0x72, 0x2e, 0x20, 0x42, 0x75, 0x74, 0x20, 0x79, + 0x6f, 0x75, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, + 0x20, 0x54, 0x48, 0x49, 0x45, 0x46, 0x2e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4d, + 0x6f, 0x75, 0x73, 0x65, 0x20, 0x6e, 0x6f, 0x74, + 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3a, 0x20, + 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6b, 0x65, + 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x2e, 0x2e, + 0x2e, 0x0d, 0x0a, 0x50, 0x72, 0x65, 0x73, 0x73, + 0x20, 0x61, 0x6e, 0x79, 0x20, 0x6b, 0x65, 0x79, + 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x74, + 0x69, 0x6e, 0x75, 0x65, 0x2e, 0x24 +}; + +const static char* messages[333] = { + "I have no idea what to do with it.", // 0 + "I can't imagine what I could do with\nthis.", // 1 + "I can't figure out what I should do\nwith this.", // 2 + "I can't find any reason to mess\nwith it.", // 3 + "Cool.", // 4 + "That's no good.", // 5 + "Wow! There's a car jack inside!\nGreat!", // 6 + "There's something else inside the toolbox!\nA spanner!", // 7 + "Last\nchance?", // 8 + "I give up.", // 9 + "I'm going to stay at least five meters\naway from these bees!", // 10 + "There's nothing else in the boat.", // 11 + "This wood is too hard to break.", // 12 + "Booo!", // 13 + "I don't think I should push\nmy luck.", // 14 + "Just an ordinary hay stack. Now.", // 15 + "And they say you can't find a needle\nin a hay stack.", // 16 + "There are no more\npotatoes.", // 17 + "Good I always asked mum for\ntrousers with BIG pockets...", // 18 + "Life is brutal.", // 19 + "Life is really brutal.", // 20 + "Something tickled\nme!", // 21 + "At least it's gone.", // 22 + "Who knows what monsters\nmay live in there...", // 23 + "I'd better not put my hands in there.\nSomething might bite them off\n(yuck)!", // 24 + "I can see it's totally\nempty.", // 25 + "One small step for man,\none big pain in the ...head...", // 26 + "I won't take my chances\na second time...", // 27 + "I really hope this is DINOSAUR\nbone...", // 28 + "Wow! This must have shaken\nall the nearby walls!", // 29 + "It's kinda dark here.", // 30 + "I'm not going to wander here\nin the dark again.", // 31 + "Shutting the valve shook the dirt from the wall\nand revealed the switch!", // 32 + "Sorry, buddy, but I need your\nsunglasses.", // 33 + "It's not the best place for diving...", // 34 + "Not here...", // 35 + "I really can't talk underwater!...", // 36 + "I don't think swimming there is worth the effort.", // 37 + "If I want to get this anchor I have to swim there\nwhen I have more air in my lungs...", // 38 + "I was really hooked on this anchor!", // 39 + "This seaweed is just like the flowers\nI gave mum on her last birthday.", // 40 + "I wonder what fish do inside\nthis boat at night.", // 41 + "I think I have to fish out something down\nthere.", // 42 + "At least fish don't worry about the rain.", // 43 + "I hope all this fish stuff is not a red herring.", // 44 + "It's nice down there.", // 45 + "Hey, let go, will ya?!", // 46 + "Aaaaaaaaaaaaaahhh!...", // 47 + "Oops.", // 48 + "People leave food in unbelievable places.", // 49 + "Come here, I've got something for\nyou...", // 50 + "I can't catch it!", // 51 + "The mouse is trapped!", // 52 + "Yikes!", // 53 + "Boy, this mouse has some nerve!", // 54 + "There's nothing else in the drawers.", // 55 + "I must get rid of this bush first.", // 56 + "The mouse has gone!", // 57 + "Nonsense.", // 58 + "I understand. Good doggy.", // 59 + "Here, boy.", // 60 + "I hope we're friends now.", // 61 + "I don't think this is the right place.", // 62 + "Hundred moments later...", // 63 + "Another hundred moments later...", // 64 + "At least I found crude-oil and I'll be\nrich.", // 65 + "That's my life.", // 66 + "!?&!", // 67 + "But grandpa, you promised!...", // 68 + "Oh, all right. Let's go.", // 69 + "Bye.", // 70 + "No need to do it again.", // 71 + "I really don't know how to talk to\ngirls...", // 72 + "I usually don't work without a purpose.", // 73 + "Only the nut is real.", // 74 + "I wonder if hens can fly. Come here,\nbaby...", // 75 + "First test failed.", // 76 + "I'd already got rid of my frustrations.", // 77 + "Nah, it's a road to nowhere.", // 78 + "It opens the boot.", // 79 + "It's shut tight.", // 80 + "There's nothing else in the boot.", // 81 + "The clothes are dry now.", // 82 + "I'm sure these crows will kill me!", // 83 + "If I want to get inside I must get rid of\nthis guard first or find some other\nway.", // 84 + "The wall surface is too smooth to climb.", // 85 + "I could climb it\nif there wasn't\nso much resin.", // 86 + "The only green stuff I like is that rectangular\npiece of paper with some important-looking\nguy on it.", // 87 + "I don't wanna touch it. Its spines could\nhurt my delicate hands.", // 88 + "Thanks, I'm not hungry.", // 89 + "I really don't have such long hands.", // 90 + "It's too far to swim there.", // 91 + "Echo!", // 92 + "ECHO!", // 93 + "Who's there?!", // 94 + "WHO'S THERE?!", // 95 + " DON'T COPY ME!...", // 96 + " DON'T COPY ME!!!", // 97 + "...OR I WILL THROW A ROCK DOWN THERE!", // 98 + "OR I WILL...", // 99 + "Are you still there?", // 100 + "It's not a barrel-organ. And there's\nno bucket.", // 101 + "I don't need to open it.", // 102 + "Hmmm... Grass... Nah, children might\nbe watching.", // 103 + "I won't find the nut just like that.\nThe grass is too dense.", // 104 + "I'm not horny.", // 105 + "No way I can jump so high,\ncause, er..., white men\ncan't jump.", // 106 + "I don't need it.", // 107 + "I'm not Santa Claus.", // 108 + "I don't need plastic imitations.", // 109 + "It's too fragile to carry around.", // 110 + "I'd like to keep it open.", // 111 + "I really don't want to walk around with\nsomeone else's socks.", // 112 + "Thanks, I'm not tired.", // 113 + "It's too big and I doubt if I'll ever\nneed it.", // 114 + "I don't think there's any secret passage\ninside.", // 115 + "There are no more interesting fruits here.", // 116 + "They can jug me if I steal this.", // 117 + "I'd better leave it. Women are really\noversensitive about flowers.", // 118 + "Mirror, mirror on the wall,\nwho's the smartest of them all?", // 119 + "Hey, don't think too long.", // 120 + "A hint: someone in this room,\na male.", // 121 + "OK, take your time.", // 122 + "I'd better not interrupt its\nthought process.", // 123 + "I don't want to have anything in common\nwith dentists.", // 124 + "It's too heavy. Not that I'm wimp.", // 125 + "Let's look what we've got here...", // 126 + "'Strawberry jam'.", // 127 + "'Gooseberry jam'.", // 128 + "'Blackberry jam'.", // 129 + "'Bilberry jam'.", // 130 + "Get me out of this jam!", // 131 + "Oh, and there is 'Rosemary jam'.", // 132 + "I used to know someone called Rosemary.", // 133 + "I don't want those jams.", // 134 + "It's too dark to see clearly.", // 135 + "YEEEOOOWWWW!", // 136 + "(yawn)", // 137 + "(laughter)", // 138 + "I can't remove it with my hands - these\nthorns look really sharp.", // 139 + "There's no fuel in the chainsaw.", // 140 + "Thorns are too thin, the chainsaw\nis useless here.", // 141 + "Yeah, great idea. Let's take this rock and\nwalk around a bit. Gee...", // 142 + "I'd better leave them alone, they make\nthis place beautiful.", // 143 + "I'm not sure if it's alive.", // 144 + "I don't know what language it speaks.", // 145 + "The hole is too narrow to fit my hand.", // 146 + "Hey, you! Wake up! Bird attack!", // 147 + "I don't have a search-warrant.", // 148 + "I don't see anything interesting\nabout this hay stack.", // 149 + "It's more complicated than that.", // 150 + "It's pointless, the nut will slip between\nthe rake's teeth.", // 151 + "The paddle is BROKEN.", // 152 + "This branch is not a paddle. It doesn't\neven look like one.", // 153 + "I'd better try somewhere else - I suppose this\nside is heavily guarded.", // 154 + "I needed to sharpen it, not pulverize.", // 155 + "I can't do anything here, it's too dark.", // 156 + "Here, let's make your\npocket fat.", // 157 + "It's a note from some bank. Strange,\nbut someone has also written \"NEVER! ANNE\"\non it.", // 158 + "If I just show her the money,\nshe might take it.", // 159 + "A hundred bucks!!!", // 160 + "I want blood!", // 161 + "I don't want to leave the mansion,\nI want blood!", // 162 + "I'm a pathetic little wimp.", // 163 + "Strange, but the drawer is stuck\nif the next drawer is open...", // 164 + "Maybe these are not just ordinary\ndrawers!", // 165 + "I cannot open the drawer\nif the next one is open!", // 166 + "It's got a blue interior.", // 167 + "It's got a red interior.", // 168 + "It's got a grey interior.", // 169 + "It's got a green interior.", // 170 + "It's got a brown interior.", // 171 + "It's got a pink interior.", // 172 + "Wow! There's a dictaphone inside!", // 173 + "There's a polaroid inside!\nI might need that.", // 174 + "Something's got hold of the book!", // 175 + "Wow! A secret compartment!", // 176 + "I don't need to mess with it\nanymore.", // 177 + "Fully automatic.", // 178 + "Right now I don't need any more\nsheets.", // 179 + "Nah, I don't want to deprave the kids.", // 180 + "I don't want to read it again.\nI might like it.", // 181 + "I just realised that the TV is off.", // 182 + "Nothing happened.", // 183 + "The tape started!", // 184 + "That's much better.", // 185 + "I don't want to sleep.", // 186 + "It's just a cork.", // 187 + "I don't need any more photos.", // 188 + "Yeah, I can record this and scare\nthe cats.", // 189 + "I already recorded what I wanted to.", // 190 + "I can't record anything until I find some\nbatteries.", // 191 + "No batteries, no fun.", // 192 + "I don't think this is the right moment.", // 193 + "I can't do anything with\nthis cook around.", // 194 + "The bottle's the same, but\nI doubt if it's enough to\nfool anyone.", // 195 + "I wanted to break it, not to\nflatten it!..", // 196 + "I was always curious what's inside\nthese things.", // 197 + "The rest is useless.", // 198 + "Wow! Two 1.5V batteries!", // 199 + "This one's taken, OK?", // 200 + "It finally happened. I'm slightly mad.", // 201 + "The paper burnt out completely!", // 202 + "Burn, baby, burn!", // 203 + "Voila.", // 204 + "It's too hot to touch!", // 205 + "It has frozen hard onto the shelf!", // 206 + "Yummy.", // 207 + "I never liked veal anyway.", // 208 + "There's no reason to do it.", // 209 + "I'd already fooled him once.", // 210 + "Mike, activate the voice test.", // 211 + "I won't cheat Mike with MY voice.", // 212 + "...siiiiinging!...", // 213 + "Mike, let's get on with the scent\ntest.", // 214 + "Mike, run the view test.", // 215 + "'A secret diary of John Noty. Authorised.'", // 216 + "I can't hide here!", // 217 + "There's John Noty outside! I can't go out!", // 218 + "That was close.", // 219 + "The cork is stuck in the hole.", // 220 + "It fits perfectly!", // 221 + "There's enough water in the sink.", // 222 + "There's no hot water in the sink.", // 223 + "The label has come off!", // 224 + "The cork is a bit too small.", // 225 + "There's no need to try them now.", // 226 + "I don't want to turn myself into a salad.", // 227 + "Nah...", // 228 + "I'd better stop this ventilator first.", // 229 + "I'd better catch John Noty first.", // 230 + "Good this red stuff is only a chilli...", // 231 + "The water looks very hot.", // 232 + "The sink is full of hot water.", // 233 + "I don't have anything\nto store these socks in.", // 234 + "Here are my papers.", // 235 + "I already got the permission.", // 236 + "'Saving is a very fine thing. Especially\nwhen your parents have done it for you'", // 237 + "'I love captain'", // 238 + "'Soccer rulz'", // 239 + "'Don't cut the trees, cuz one\nday you may become partisan\ntoo'", // 240 + "'VISA accepted'", // 241 + "The rest of graffiti is obscene.", // 242 + "Sir, I'm Mark. A rookie.", // 243 + "It's locked!", // 244 + "Thanks.", // 245 + "I don't have any idea what\nto do with it right\nnow.", // 246 + "That gives me an idea...", // 247 + "Now I got to check if it works...", // 248 + "I think it's time to call captain...", // 249 + "Hey! I finished the meal!", // 250 + "Wow, he got welded to the bowl!...", // 251 + "Gotcha.", // 252 + "I don't want to touch\nhis pockets again.", // 253 + "That doesn't work.", // 254 + "Piece of cake.", // 255 + "And how am I supposed to get back?", // 256 + "Great.", // 257 + "Oh, yeah, right...", // 258 + "I can't pull it out.", // 259 + "I don't want to touch it - I might get hurt.", // 260 + "The fence blocks the way...", // 261 + "I don't want to sleep.", // 262 + "I can't reach it.", // 263 + "Hello?", // 264 + "He's totally addicted.", // 265 + "What about a new...", // 266 + "...hot off the press...", // 267 + "...full-color...", // 268 + "...special edition...", // 269 + "... of 'Soldier News'?!", // 270 + "Never again!", // 271 + "What am I? A vacuum cleaner?!", // 272 + " Sixty seven rude words later...", // 273 + "Meanwhile in the mansion...", // 274 + "Now it's open.", // 275 + "C'mon, baby, it's all yours!", // 276 + "I've got no reason to talk to him\nright now.", // 277 + "Yeah, right!...", // 278 + "The barman is too close...", // 279 + "Yuck!", // 280 + "I prefer water.", // 281 + "I'm too weak to climb it.", // 282 + "The springs would prick my back.", // 283 + "No, thanks. This food seems still alive.", // 284 + "The door is closed. What a surprise.", // 285 + "It's empty.", // 286 + "I should have paid more attention\nin geography classes...", // 287 + "I don't need this mess.", // 288 + "Thanks, but I've seen softer rocks.", // 289 + "They are too blunt to be of any use.", // 290 + "What's the use of the models?", // 291 + "The barman will surely notice its\ndisappearing.", // 292 + "It'd take too much time to drink it all.\nMaybe after the mission...", // 293 + "\n\nI'm not a thief. And it's empty, by the way.", // 294 + "There are too many of them to search.", // 295 + "Captain surely wouldn't fit them.\nI must look elsewhere.", // 296 + "Chickening? Me? Never!", // 297 + "I can't open it.", // 298 + "I don't need them.", // 299 + "What am I? A Peeping Tom?", // 300 + "I have big pockets, but there are limits.", // 301 + "If I put it on I might have trouble walking\nup the stairs.", // 302 + "I'd need 9 lives to read them all.", // 303 + "Thanks, I'm not so tired.", // 304 + "There's no need to turn it on.", // 305 + "It won't bear my weight.", // 306 + "I never learnt to how use one...", // 307 + "They're so sharp they'd rip my trousers!", // 308 + "Pfui! The cognac really didn't do any good...", // 309 + "I don't have time for pleasures.", // 310 + "I won't touch these socks with my bare hands!", // 311 + "It's not Halloween.", // 312 + "It can't be controlled manually! I hate it!", // 313 + "I have nothing to play.", // 314 + "I can't take it. It's not mine.", // 315 + "Hey! What's the matter?!", // 316 + "It's open!", // 317 + "It's out of order.", // 318 + "With captain watching?...\nBetter not...", // 319 + "The sickle is too blunt.", // 320 + "First I've got some business to take care of.", // 321 + "Digging it out with the knife could\ntake a hundred years.", // 322 + "I don't want to make more\nmess on this table.", // 323 + "Should I throw the crumbs to the bird?", // 324 + "I don't want to waste these tasty crumbs.", // 325 + "Better not... I might slip and fall in...", // 326 + "\"The history of blues\".", // 327 + "\"Manchester United, or the Red Devils story\".", // 328 + "\"Greyhounds and other hunting dogs\".", // 329 + "\"Greenhorn, or my adventures in the Wild West\".", // 330 + "\"Charlie Brown and his company\".", // 331 + "\"Pink Panther: an unauthorised biography\"." // 332 +}; + +#define DSEG_ENDBLK_SIZE 34651 + +const static uint8 dsegEndBlock[DSEG_ENDBLK_SIZE] = { + 0x90, 0x9d, 0xe5, 0x9d, 0x54, 0x9e, 0xc3, 0x9e, + 0x3e, 0x9f, 0x0b, 0x30, 0x02, 0x31, 0x03, 0x32, + 0x04, 0x33, 0x05, 0x34, 0x06, 0x35, 0x07, 0x36, + 0x08, 0x37, 0x09, 0x38, 0x0a, 0x39, 0x0c, 0x2d, + 0x1e, 0x41, 0x30, 0x42, 0x2e, 0x43, 0x20, 0x44, + 0x12, 0x45, 0x21, 0x46, 0x22, 0x47, 0x23, 0x48, + 0x17, 0x49, 0x24, 0x4a, 0x25, 0x4b, 0x26, 0x4c, + 0x32, 0x4d, 0x31, 0x4e, 0x18, 0x4f, 0x19, 0x50, + 0x10, 0x51, 0x13, 0x52, 0x1f, 0x53, 0x14, 0x54, + 0x16, 0x55, 0x2f, 0x56, 0x11, 0x57, 0x2d, 0x58, + 0x15, 0x59, 0x2c, 0x5a, 0x33, 0x2c, 0x34, 0x2e, + 0x35, 0x3f, 0x39, 0x20, 0x28, 0x27, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7c, 0x0a, 0x48, 0x01, + 0x00, 0x7c, 0x19, 0x48, 0x02, 0x00, 0xaf, 0x30, + 0x0e, 0x03, 0x02, 0xbe, 0x30, 0x26, 0x03, 0x03, + 0xe5, 0x30, 0x0e, 0x03, 0x01, 0xaf, 0x3f, 0x0e, + 0x04, 0x02, 0xbe, 0x3f, 0x26, 0x04, 0x03, 0xe5, + 0x3f, 0x0e, 0x04, 0x01, 0x9f, 0x4e, 0x0e, 0x05, + 0x02, 0xae, 0x4e, 0x36, 0x05, 0x03, 0xe5, 0x4e, + 0x0e, 0x05, 0x01, 0x9f, 0x5d, 0x0e, 0x06, 0x02, + 0xae, 0x5d, 0x36, 0x06, 0x03, 0xe5, 0x5d, 0x0e, + 0x06, 0x01, 0x9f, 0x6c, 0x0e, 0x07, 0x02, 0xae, + 0x6c, 0x36, 0x07, 0x03, 0xe5, 0x6c, 0x0e, 0x07, + 0x01, 0xa7, 0x7b, 0x0e, 0x08, 0x02, 0xb6, 0x7b, + 0x2e, 0x08, 0x03, 0xe5, 0x7b, 0x0e, 0x08, 0x01, + 0x8d, 0x94, 0x25, 0x0b, 0x00, 0x6c, 0xa3, 0x69, + 0x0a, 0x00, 0x79, 0xb2, 0x50, 0x0d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x81, 0x0f, 0x41, 0x22, + 0xd3, 0x3e, 0x92, 0x51, 0x50, 0x64, 0x0e, 0x77, + 0xd0, 0x89, 0x8a, 0x9c, 0x00, 0x00, 0x52, 0xbd, + 0xb1, 0xce, 0x81, 0xe1, 0x4c, 0x6f, 0x61, 0x64, + 0x20, 0x67, 0x61, 0x6d, 0x65, 0x00, 0x53, 0x61, + 0x76, 0x65, 0x20, 0x67, 0x61, 0x6d, 0x65, 0x00, + 0x4d, 0x75, 0x73, 0x69, 0x63, 0x20, 0x76, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, + 0x2d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7f, 0x00, 0x53, + 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x76, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x20, 0x20, 0x20, 0x20, 0x2d, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x7f, 0x00, 0x48, 0x65, + 0x72, 0x6f, 0x20, 0x73, 0x70, 0x65, 0x65, 0x64, + 0x20, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7f, 0x00, 0x47, + 0x61, 0x6d, 0x65, 0x20, 0x73, 0x70, 0x65, 0x65, + 0x64, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7f, 0x00, + 0x54, 0x65, 0x78, 0x74, 0x20, 0x73, 0x70, 0x65, + 0x65, 0x64, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7f, + 0x00, 0x47, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, + 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x20, 0x20, + 0x20, 0x2d, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x7f, 0x00, 0x20, 0x00, 0x51, 0x75, 0x69, 0x74, + 0x00, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x74, 0x6f, 0x20, 0x67, 0x61, 0x6d, 0x65, 0x00, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x20, 0x69, 0x6e, + 0x66, 0x6f, 0x00, 0x00, 0x77, 0x64, 0x39, 0x77, + 0x0f, 0x8a, 0x44, 0x6f, 0x20, 0x79, 0x6f, 0x75, + 0x20, 0x72, 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x00, + 0x77, 0x61, 0x6e, 0x74, 0x20, 0x74, 0x6f, 0x20, + 0x71, 0x75, 0x69, 0x74, 0x00, 0x28, 0x59, 0x2f, + 0x4e, 0x29, 0x3f, 0x00, 0x00, 0xf7, 0x57, 0x83, + 0x6a, 0x43, 0x7d, 0x03, 0x90, 0x46, 0x6f, 0x72, + 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x20, 0x63, 0x61, + 0x6c, 0x6c, 0x3a, 0x00, 0x55, 0x4b, 0x3a, 0x20, + 0x50, 0x44, 0x20, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x30, 0x31, + 0x34, 0x37, 0x34, 0x20, 0x33, 0x32, 0x35, 0x38, + 0x30, 0x32, 0x00, 0x55, 0x53, 0x41, 0x20, 0x61, + 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, + 0x65, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, + 0x3a, 0x00, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x20, + 0x4c, 0x6f, 0x67, 0x69, 0x63, 0x20, 0x28, 0x38, + 0x30, 0x30, 0x29, 0x20, 0x35, 0x38, 0x33, 0x2d, + 0x34, 0x38, 0x33, 0x38, 0x00, 0x00, 0x44, 0x5f, + 0x04, 0x77, 0xc4, 0x84, 0x84, 0x92, 0x49, 0x20, + 0x63, 0x61, 0x6e, 0x27, 0x74, 0x20, 0x75, 0x73, + 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, + 0x61, 0x76, 0x65, 0x67, 0x61, 0x6d, 0x65, 0x21, + 0x00, 0x28, 0x54, 0x68, 0x65, 0x20, 0x66, 0x69, + 0x6c, 0x65, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6f, + 0x72, 0x72, 0x75, 0x70, 0x74, 0x65, 0x64, 0x20, + 0x6f, 0x72, 0x20, 0x77, 0x61, 0x73, 0x00, 0x73, + 0x61, 0x76, 0x65, 0x64, 0x20, 0x75, 0x6e, 0x64, + 0x65, 0x72, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x74, 0x20, 0x67, 0x61, 0x6d, + 0x65, 0x00, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x2e, 0x20, 0x53, 0x6f, 0x72, 0x72, 0x79, + 0x2e, 0x29, 0x00, 0x00, 0xc7, 0x32, 0x4f, 0x46, + 0x46, 0x00, 0xc7, 0x32, 0x31, 0x30, 0x80, 0x00, + 0xc6, 0x32, 0x32, 0x30, 0x80, 0x00, 0xc6, 0x32, + 0x33, 0x30, 0x80, 0x00, 0xc6, 0x32, 0x34, 0x30, + 0x80, 0x00, 0xc6, 0x32, 0x35, 0x30, 0x80, 0x00, + 0xc6, 0x32, 0x36, 0x30, 0x80, 0x00, 0xc6, 0x32, + 0x37, 0x30, 0x80, 0x00, 0xc6, 0x32, 0x38, 0x30, + 0x80, 0x00, 0xc6, 0x32, 0x39, 0x30, 0x80, 0x00, + 0xc5, 0x32, 0x4d, 0x41, 0x58, 0x00, 0xc7, 0x41, + 0x4f, 0x46, 0x46, 0x00, 0xc7, 0x41, 0x31, 0x30, + 0x80, 0x00, 0xc6, 0x41, 0x32, 0x30, 0x80, 0x00, + 0xc6, 0x41, 0x33, 0x30, 0x80, 0x00, 0xc6, 0x41, + 0x34, 0x30, 0x80, 0x00, 0xc6, 0x41, 0x35, 0x30, + 0x80, 0x00, 0xc6, 0x41, 0x36, 0x30, 0x80, 0x00, + 0xc6, 0x41, 0x37, 0x30, 0x80, 0x00, 0xc6, 0x41, + 0x38, 0x30, 0x80, 0x00, 0xc6, 0x41, 0x39, 0x30, + 0x80, 0x00, 0xc5, 0x41, 0x4d, 0x41, 0x58, 0x00, + 0xbb, 0x50, 0x53, 0x4c, 0x4f, 0x57, 0x20, 0x20, + 0x00, 0xb4, 0x50, 0x4e, 0x4f, 0x52, 0x4d, 0x41, + 0x4c, 0x00, 0xbb, 0x50, 0x46, 0x41, 0x53, 0x54, + 0x20, 0x20, 0x00, 0xb7, 0x50, 0x43, 0x52, 0x41, + 0x5a, 0x59, 0x20, 0x00, 0xbb, 0x5f, 0x53, 0x4c, + 0x4f, 0x57, 0x20, 0x20, 0x00, 0xb4, 0x5f, 0x4e, + 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x00, 0xbb, 0x5f, + 0x46, 0x41, 0x53, 0x54, 0x20, 0x20, 0x00, 0xb7, + 0x5f, 0x43, 0x52, 0x41, 0x5a, 0x59, 0x20, 0x00, + 0xb8, 0x6e, 0x43, 0x4c, 0x49, 0x43, 0x4b, 0x20, + 0x00, 0xbb, 0x6e, 0x53, 0x4c, 0x4f, 0x57, 0x20, + 0x20, 0x00, 0xb4, 0x6e, 0x4e, 0x4f, 0x52, 0x4d, + 0x41, 0x4c, 0x00, 0xbb, 0x6e, 0x46, 0x41, 0x53, + 0x54, 0x20, 0x20, 0x00, 0xb7, 0x6e, 0x43, 0x52, + 0x41, 0x5a, 0x59, 0x20, 0x00, 0xbe, 0x7d, 0x4d, + 0x4f, 0x4e, 0x4f, 0x20, 0x00, 0xbb, 0x7d, 0x43, + 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x3b, 0x0c, 0xca, + 0x0c, 0x00, 0x3b, 0x1b, 0xca, 0x0c, 0x00, 0x3b, + 0x2a, 0xca, 0x0c, 0x00, 0x3b, 0x39, 0xca, 0x0c, + 0x00, 0x3b, 0x48, 0xca, 0x0c, 0x00, 0x3b, 0x57, + 0xca, 0x0c, 0x00, 0x3b, 0x66, 0xca, 0x0c, 0x00, + 0x3b, 0x75, 0xca, 0x0c, 0x00, 0x3b, 0x84, 0xca, + 0x0c, 0x00, 0x3b, 0x93, 0xca, 0x0c, 0x00, 0x6e, + 0xaf, 0x64, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xcc, 0xdd, 0x43, 0x61, 0x6e, 0x63, 0x65, + 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x5f, 0x00, 0x0d, 0x0a, 0x48, + 0x45, 0x4c, 0x4c, 0x4f, 0x2c, 0x20, 0x56, 0x4f, + 0x59, 0x45, 0x55, 0x52, 0x21, 0x0d, 0x0a, 0xaf, + 0xb3, 0xa6, 0x64, 0x00, 0x0a, 0x01, 0x01, 0x02, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x28, 0x1b, 0x1c, 0x28, + 0x1d, 0x1e, 0x28, 0x1b, 0x28, 0x1f, 0x20, 0x28, + 0x1b, 0x1c, 0x28, 0x1d, 0x28, 0x1f, 0x28, 0x1b, + 0x00, 0x28, 0x1b, 0x1c, 0x28, 0x1d, 0x1e, 0x28, + 0x1b, 0x28, 0x1f, 0x20, 0x28, 0x1b, 0x1c, 0x28, + 0x1d, 0x28, 0x1f, 0x28, 0x1b, 0x00, 0x2a, 0x26, + 0x2a, 0x2a, 0x27, 0x2a, 0x27, 0x2a, 0x2a, 0x26, + 0x2a, 0x26, 0x2a, 0x2a, 0x2a, 0x27, 0x26, 0x2a, + 0x2a, 0x27, 0x00, 0x21, 0x22, 0x23, 0x24, 0x29, + 0x25, 0x29, 0x29, 0x25, 0x29, 0x21, 0x22, 0x21, + 0x24, 0x29, 0x21, 0x29, 0x29, 0x21, 0x29, 0x00, + 0x00, 0x00, 0x01, 0x46, 0x65, 0x82, 0x65, 0xb2, + 0x65, 0x01, 0x02, 0x03, 0x04, 0x04, 0x04, 0x04, + 0x05, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x06, + 0x06, 0x06, 0x06, 0x07, 0x06, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x05, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x00, 0x01, 0x02, 0x03, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x05, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x08, 0x08, 0x08, 0x09, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x00, 0x01, 0x02, 0x03, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x06, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x04, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x00, 0x01, 0x02, 0x03, + 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x00, + 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, + 0x0a, 0x00, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, + 0x1a, 0x00, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, + 0x12, 0x00, 0x00, 0x00, 0x3a, 0x0d, 0x28, 0x2e, + 0x00, 0x20, 0x31, 0x18, 0x10, 0x3a, 0x23, 0x14, + 0x3f, 0x2b, 0x17, 0x3f, 0x30, 0x22, 0x3f, 0x34, + 0x21, 0x3f, 0x00, 0x00, 0x36, 0x00, 0x00, 0x28, + 0x00, 0x00, 0x11, 0x2f, 0x3f, 0x11, 0x24, 0x3f, + 0x11, 0x16, 0x3f, 0x1d, 0x11, 0x1f, 0x28, 0x2f, + 0x33, 0x35, 0x13, 0x10, 0x0c, 0x28, 0x21, 0x19, + 0x00, 0x92, 0x66, 0x94, 0x66, 0x96, 0x66, 0x98, + 0x66, 0x9a, 0x66, 0x9c, 0x66, 0x9e, 0x66, 0xa0, + 0x66, 0xa2, 0x66, 0xa4, 0x66, 0xa6, 0x66, 0xb1, + 0x66, 0xbc, 0x66, 0xbe, 0x66, 0xc9, 0x66, 0xcb, + 0x66, 0xd6, 0x66, 0xd8, 0x66, 0xe3, 0x66, 0xe5, + 0x66, 0xf0, 0x66, 0xf2, 0x66, 0xf4, 0x66, 0xf6, + 0x66, 0xf8, 0x66, 0xfa, 0x66, 0x20, 0x67, 0x22, + 0x67, 0x24, 0x67, 0x26, 0x67, 0x28, 0x67, 0x2a, + 0x67, 0x2c, 0x67, 0x2e, 0x67, 0x30, 0x67, 0x32, + 0x67, 0x34, 0x67, 0x36, 0x67, 0x38, 0x67, 0x3a, + 0x67, 0x3c, 0x67, 0x3e, 0x67, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x00, 0x00, 0x5c, 0x00, 0x50, 0x00, 0x97, + 0x00, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x01, 0xab, 0x00, 0x09, 0xff, 0xff, 0xff, + 0xff, 0x1f, 0x00, 0xb7, 0x00, 0x55, 0x00, 0xc4, + 0x00, 0x0c, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0xd2, 0x00, 0xc7, 0x00, 0x08, 0xff, + 0xff, 0xff, 0xff, 0x3a, 0x00, 0x9e, 0x00, 0x3f, + 0x01, 0xc7, 0x00, 0x0a, 0xff, 0xff, 0xff, 0xff, + 0x82, 0x00, 0xa0, 0x00, 0x3f, 0x01, 0xa9, 0x00, + 0x0a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x86, 0x00, 0xc7, 0x00, 0x12, 0x00, 0x00, + 0x00, 0x00, 0xaf, 0x00, 0xae, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0xdb, 0x00, 0xa9, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0x01, 0xc7, 0x00, + 0x06, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x9a, 0x67, 0x9b, 0x67, 0xf0, 0x67, 0x29, + 0x68, 0x70, 0x68, 0xc5, 0x68, 0xfe, 0x68, 0x37, + 0x69, 0x8c, 0x69, 0xc5, 0x69, 0x1a, 0x6a, 0x6f, + 0x6a, 0xc4, 0x6a, 0xfd, 0x6a, 0x6e, 0x6b, 0xdf, + 0x6b, 0x18, 0x6c, 0x19, 0x6c, 0x6e, 0x6c, 0xa7, + 0x6c, 0xee, 0x6c, 0x35, 0x6d, 0x7c, 0x6d, 0xb5, + 0x6d, 0xee, 0x6d, 0x19, 0x6e, 0x36, 0x6e, 0xd1, + 0x6e, 0xfc, 0x6e, 0x27, 0x6f, 0x6e, 0x6f, 0x8b, + 0x6f, 0xd2, 0x6f, 0x0b, 0x70, 0x6e, 0x70, 0x99, + 0x70, 0xb6, 0x70, 0xb7, 0x70, 0xf0, 0x70, 0xf1, + 0x70, 0xf2, 0x70, 0xf3, 0x70, 0x00, 0x06, 0x01, + 0x03, 0x00, 0x00, 0x00, 0x00, 0xd2, 0x00, 0xb1, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xe4, 0x00, 0x9b, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfc, 0x00, 0x8e, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0x01, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0xc0, 0x00, 0xa2, 0x00, 0xc7, + 0x00, 0x02, 0x01, 0x00, 0x00, 0x03, 0x00, 0xff, + 0x00, 0x9c, 0x00, 0x3f, 0x01, 0xc7, 0x00, 0x04, + 0x00, 0x00, 0x01, 0x04, 0x01, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xcb, 0x00, 0xbf, 0x00, 0x00, 0x03, + 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe8, 0x00, 0x99, 0x00, 0x00, 0x03, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x01, + 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0xe5, 0x00, 0xb9, 0x00, 0x3f, 0x01, 0xc7, 0x00, + 0x04, 0x00, 0x00, 0x01, 0x05, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xde, 0x00, 0xaf, 0x00, 0x00, + 0x03, 0x02, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x7b, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0x01, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, + 0x00, 0x00, 0x00, 0xc0, 0x00, 0x3f, 0x01, 0xc7, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0xf4, + 0x00, 0x93, 0x00, 0x3f, 0x01, 0xb0, 0x00, 0x04, + 0x00, 0x04, 0x00, 0x06, 0x01, 0x03, 0x00, 0x00, + 0x00, 0x00, 0xf9, 0x00, 0x9c, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x01, 0x00, 0xf9, 0x00, 0x00, 0x00, + 0x08, 0x01, 0x9b, 0x00, 0x00, 0x03, 0x00, 0x03, + 0x01, 0x00, 0x08, 0x01, 0x00, 0x00, 0x3f, 0x01, + 0x7c, 0x00, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, + 0x46, 0x00, 0x00, 0x00, 0x6c, 0x00, 0xa4, 0x00, + 0x00, 0x03, 0x00, 0x03, 0x02, 0x01, 0x00, 0x00, + 0xb5, 0x00, 0x6b, 0x00, 0xc7, 0x00, 0x02, 0x01, + 0x00, 0x00, 0x03, 0x00, 0x87, 0x00, 0xb7, 0x00, + 0x3f, 0x01, 0xc7, 0x00, 0x04, 0x00, 0x00, 0x01, + 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, + 0x00, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x01, 0xac, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x8f, 0x00, 0xbc, 0x00, 0x00, + 0x03, 0x02, 0x00, 0x01, 0x00, 0x33, 0x01, 0x00, + 0x00, 0x3f, 0x01, 0xc7, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0xc7, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x01, + 0xa5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0xfa, 0x00, 0x00, 0x00, 0x3f, 0x01, 0xc7, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x53, 0x00, + 0xaf, 0x00, 0xe6, 0x00, 0xbe, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x01, 0x00, 0xce, 0x00, 0xb3, + 0x00, 0x3f, 0x01, 0xc1, 0x00, 0x04, 0x00, 0x04, + 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0x01, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0xb6, 0x00, 0x5e, 0x00, 0xc1, + 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x10, 0x00, 0xc7, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x05, 0x01, 0x00, + 0x00, 0x3f, 0x01, 0xc7, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0xff, 0x00, 0x00, 0x00, 0x3f, + 0x01, 0xc1, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, + 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x00, + 0xb2, 0x00, 0x00, 0x03, 0x02, 0x00, 0x01, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0x01, 0xac, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xf1, 0x00, + 0x00, 0x00, 0x3f, 0x01, 0xbc, 0x00, 0x00, 0x00, + 0x04, 0x03, 0x01, 0x00, 0x16, 0x01, 0x00, 0x00, + 0x3f, 0x01, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, + 0x00, 0x8a, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, + 0x00, 0x59, 0x00, 0x00, 0x00, 0x3f, 0x01, 0x94, + 0x00, 0x00, 0x00, 0x04, 0x03, 0x01, 0x00, 0xec, + 0x00, 0x00, 0x00, 0x3f, 0x01, 0xa2, 0x00, 0x00, + 0x00, 0x04, 0x03, 0x02, 0x00, 0x00, 0x00, 0x94, + 0x00, 0x3e, 0x00, 0xc7, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x71, + 0x00, 0xc7, 0x00, 0x02, 0x01, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0xbd, 0x00, 0x3f, 0x01, 0xc7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, + 0x00, 0x00, 0x91, 0x00, 0x1a, 0x00, 0xa3, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xb3, 0x00, 0xa4, 0x00, 0xc7, 0x00, 0x02, 0x01, + 0x00, 0x00, 0x02, 0x00, 0xa5, 0x00, 0xbd, 0x00, + 0xc8, 0x00, 0xc7, 0x00, 0x02, 0x01, 0x00, 0x00, + 0x03, 0x00, 0xaf, 0x00, 0x83, 0x00, 0x3f, 0x01, + 0x97, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00, + 0xc3, 0x00, 0x98, 0x00, 0x3f, 0x01, 0xb3, 0x00, + 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x42, 0x00, + 0x00, 0x00, 0x7c, 0x00, 0x99, 0x00, 0x00, 0x03, + 0x00, 0x03, 0x06, 0x01, 0x03, 0x00, 0x00, 0x00, + 0x00, 0xfc, 0x00, 0xa8, 0x00, 0x00, 0x03, 0x02, + 0x00, 0x01, 0x03, 0x00, 0x00, 0xa9, 0x00, 0x30, + 0x00, 0xb8, 0x00, 0x00, 0x03, 0x02, 0x00, 0x01, + 0x00, 0xfd, 0x00, 0x00, 0x00, 0x1f, 0x01, 0xac, + 0x00, 0x00, 0x03, 0x02, 0x03, 0x01, 0x00, 0x20, + 0x01, 0x00, 0x00, 0x2c, 0x01, 0xa2, 0x00, 0x00, + 0x03, 0x02, 0x03, 0x01, 0x00, 0x2d, 0x01, 0x00, + 0x00, 0x3f, 0x01, 0x87, 0x00, 0x00, 0x03, 0x02, + 0x03, 0x02, 0x01, 0x00, 0x00, 0xc2, 0x00, 0x3f, + 0x01, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + 0x01, 0x01, 0x00, 0x00, 0xba, 0x00, 0x4b, 0x00, + 0xc7, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x01, + 0xe6, 0x00, 0xba, 0x00, 0x3f, 0x01, 0xc7, 0x00, + 0x04, 0x00, 0x04, 0x01, 0x02, 0x00, 0x3e, 0x00, + 0x00, 0x00, 0x70, 0x00, 0xaf, 0x00, 0x00, 0x00, + 0x04, 0x03, 0x02, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x3f, 0x01, 0xb2, 0x00, 0x00, 0x00, 0x04, 0x03, + 0x08, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0x01, 0x6e, 0x00, 0x00, 0x03, 0x04, 0x03, 0x01, + 0x00, 0x7a, 0x00, 0x6f, 0x00, 0x3f, 0x01, 0x89, + 0x00, 0x04, 0x00, 0x04, 0x03, 0x01, 0x00, 0xfc, + 0x00, 0x8d, 0x00, 0x3f, 0x01, 0xb8, 0x00, 0x04, + 0x00, 0x04, 0x03, 0x01, 0x00, 0x1c, 0x01, 0xb9, + 0x00, 0x3f, 0x01, 0xc7, 0x00, 0x04, 0x00, 0x04, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x8a, + 0x00, 0xb2, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, + 0x00, 0x00, 0x00, 0xb3, 0x00, 0x23, 0x00, 0xc7, + 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x24, + 0x00, 0xb3, 0x00, 0x6d, 0x00, 0xbe, 0x00, 0x02, + 0x00, 0x02, 0x00, 0x03, 0x00, 0x77, 0x00, 0xbc, + 0x00, 0xe8, 0x00, 0xc7, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x08, 0x03, 0x01, 0xde, 0x00, 0xb4, 0x00, + 0x2c, 0x01, 0xc7, 0x00, 0x04, 0x00, 0x00, 0x01, + 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, + 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, + 0x6f, 0x00, 0x00, 0x00, 0xef, 0x00, 0xb1, 0x00, + 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0xf0, 0x00, + 0x00, 0x00, 0x22, 0x01, 0xa5, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x01, 0x03, 0x23, 0x01, 0x00, 0x00, + 0x3f, 0x01, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x02, 0x01, 0x00, 0x00, 0xb8, 0x00, 0x8b, 0x00, + 0xc7, 0x00, 0x02, 0x01, 0x00, 0x00, 0x03, 0x01, + 0xa3, 0x00, 0xb8, 0x00, 0xdd, 0x00, 0xc7, 0x00, + 0x04, 0x00, 0x00, 0x01, 0x03, 0x01, 0x2d, 0x01, + 0xaf, 0x00, 0x3f, 0x01, 0xc7, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3f, 0x01, 0x50, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x14, 0x01, 0x00, 0x00, 0x3f, 0x01, 0xc7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x65, 0x00, 0x3f, 0x01, 0xc7, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x61, + 0x00, 0x00, 0x00, 0x3f, 0x01, 0xa3, 0x00, 0x00, + 0x00, 0x04, 0x03, 0x01, 0x00, 0x34, 0x00, 0x85, + 0x00, 0x63, 0x00, 0x97, 0x00, 0x04, 0x00, 0x04, + 0x00, 0x01, 0x00, 0xab, 0x00, 0xa4, 0x00, 0x3f, + 0x01, 0xb6, 0x00, 0x00, 0x00, 0x04, 0x03, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x72, + 0x00, 0x00, 0x03, 0x02, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x72, 0x00, 0x19, 0x00, 0xaa, 0x00, 0x02, + 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0xaa, + 0x00, 0x45, 0x00, 0xc7, 0x00, 0x02, 0x01, 0x00, + 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0xa3, 0x00, + 0x2c, 0x00, 0xc7, 0x00, 0x02, 0x01, 0x00, 0x00, + 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x01, + 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, + 0x0f, 0x01, 0xa3, 0x00, 0x3f, 0x01, 0xbd, 0x00, + 0x04, 0x00, 0x04, 0x03, 0x01, 0x00, 0xe2, 0x00, + 0x00, 0x00, 0x3f, 0x01, 0xaa, 0x00, 0x00, 0x00, + 0x04, 0x03, 0x05, 0x01, 0x03, 0xb0, 0x00, 0xa4, + 0x00, 0x3f, 0x01, 0xbc, 0x00, 0x04, 0x00, 0x04, + 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, + 0x03, 0x0f, 0x00, 0x00, 0x00, 0x88, 0x00, 0xb4, + 0x00, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x89, + 0x00, 0x00, 0x00, 0x3f, 0x01, 0xa3, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x02, 0x01, 0x00, 0x00, 0xc4, + 0x00, 0x93, 0x00, 0xc7, 0x00, 0x02, 0x01, 0x00, + 0x00, 0x05, 0x01, 0x00, 0xdc, 0x00, 0x00, 0x00, + 0x3f, 0x01, 0xc7, 0x00, 0x00, 0x03, 0x00, 0x03, + 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, + 0xae, 0x00, 0x00, 0x03, 0x02, 0x00, 0x01, 0x03, + 0x51, 0x00, 0x00, 0x00, 0x78, 0x00, 0xab, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x79, 0x00, + 0x00, 0x00, 0x3f, 0x01, 0xb1, 0x00, 0x00, 0x00, + 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0xc0, 0x00, + 0xa9, 0x00, 0xc7, 0x00, 0x02, 0x01, 0x00, 0x00, + 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0x01, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0xaa, 0x00, 0x29, 0x00, 0xbf, + 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x01, 0x00, + 0x00, 0xbf, 0x00, 0x9e, 0x00, 0xc7, 0x00, 0x02, + 0x01, 0x00, 0x00, 0x01, 0x01, 0xc5, 0x00, 0xaf, + 0x00, 0x3f, 0x01, 0xc7, 0x00, 0x04, 0x00, 0x00, + 0x01, 0x01, 0x04, 0x00, 0x01, 0xa8, 0x00, 0x3f, + 0x01, 0xae, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, + 0x01, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x52, 0x00, + 0xba, 0x00, 0x00, 0x03, 0x02, 0x00, 0x01, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0x01, 0xa9, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xe0, 0x00, + 0xaa, 0x00, 0x3f, 0x01, 0xb2, 0x00, 0x00, 0x00, + 0x04, 0x03, 0x01, 0x00, 0x12, 0x01, 0xb3, 0x00, + 0x3f, 0x01, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, + 0x00, 0xc7, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, + 0x03, 0x47, 0x00, 0x00, 0x00, 0x12, 0x01, 0xa6, + 0x00, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x63, + 0x00, 0x00, 0x00, 0xd3, 0x00, 0xaa, 0x00, 0x00, + 0x03, 0x00, 0x03, 0x01, 0x00, 0x12, 0x01, 0x00, + 0x00, 0x3f, 0x01, 0xc7, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x96, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x03, 0x79, 0x00, 0x00, 0x00, 0x3f, 0x01, + 0x90, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x01, + 0x79, 0x00, 0xa4, 0x00, 0x3f, 0x01, 0xc7, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x69, 0x00, 0xc7, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x03, 0x6a, 0x00, 0x00, + 0x00, 0x3f, 0x01, 0xa5, 0x00, 0x00, 0x03, 0x02, + 0x03, 0x0b, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0x01, 0x83, 0x00, 0x00, 0x00, 0x04, 0x00, + 0x01, 0x03, 0x00, 0x00, 0x84, 0x00, 0xda, 0x00, + 0x9e, 0x00, 0x02, 0x03, 0x02, 0x00, 0x01, 0x03, + 0x00, 0x00, 0x9f, 0x00, 0xc2, 0x00, 0xa9, 0x00, + 0x00, 0x03, 0x02, 0x00, 0x01, 0x03, 0x00, 0x00, + 0xaa, 0x00, 0xa4, 0x00, 0xaf, 0x00, 0x00, 0x03, + 0x02, 0x00, 0x01, 0x03, 0x00, 0x00, 0xb0, 0x00, + 0x7f, 0x00, 0xbb, 0x00, 0x00, 0x03, 0x02, 0x00, + 0x01, 0x03, 0x00, 0x00, 0xbc, 0x00, 0x5e, 0x00, + 0xc3, 0x00, 0x00, 0x03, 0x02, 0x00, 0x01, 0x02, + 0x00, 0x00, 0xc4, 0x00, 0x4b, 0x00, 0xc7, 0x00, + 0x00, 0x03, 0x02, 0x00, 0x01, 0x03, 0xef, 0x00, + 0x84, 0x00, 0x3f, 0x01, 0xa4, 0x00, 0x04, 0x00, + 0x00, 0x01, 0x01, 0x03, 0xdb, 0x00, 0xa5, 0x00, + 0x3f, 0x01, 0xb4, 0x00, 0x04, 0x00, 0x00, 0x01, + 0x01, 0x03, 0xc2, 0x00, 0xb5, 0x00, 0x3f, 0x01, + 0xbe, 0x00, 0x04, 0x00, 0x00, 0x01, 0x01, 0x04, + 0xa2, 0x00, 0xbf, 0x00, 0x3f, 0x01, 0xc7, 0x00, + 0x04, 0x00, 0x00, 0x01, 0x03, 0x01, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x93, 0x00, 0x8c, 0x00, 0x00, + 0x03, 0x00, 0x03, 0x01, 0x03, 0x94, 0x00, 0x00, + 0x00, 0x3f, 0x01, 0x94, 0x00, 0x00, 0x00, 0x04, + 0x03, 0x01, 0x00, 0xe9, 0x00, 0x95, 0x00, 0x3f, + 0x01, 0xc7, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, + 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x01, + 0xa5, 0x00, 0x00, 0x03, 0x00, 0x03, 0x01, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0xc7, 0x00, + 0x02, 0x00, 0x02, 0x00, 0x01, 0x03, 0x30, 0x00, + 0x00, 0x00, 0x4f, 0x00, 0xab, 0x00, 0x00, 0x03, + 0x00, 0x03, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3f, 0x01, 0x95, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x3f, + 0x01, 0x9a, 0x00, 0x00, 0x00, 0x04, 0x03, 0x01, + 0x04, 0x22, 0x01, 0x00, 0x00, 0x3f, 0x01, 0xc7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x75, + 0x00, 0x9c, 0x00, 0xe9, 0x00, 0xbf, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x11, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0x01, 0xa5, 0x00, 0x00, 0x03, 0x00, 0x03, + 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, + 0xb0, 0x00, 0x02, 0x03, 0x02, 0x00, 0x05, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0xc7, + 0x00, 0x00, 0x03, 0x02, 0x00, 0x01, 0x03, 0x28, + 0x00, 0x00, 0x00, 0x8e, 0x00, 0xa9, 0x00, 0x00, + 0x03, 0x02, 0x03, 0x01, 0x03, 0x8e, 0x00, 0x00, + 0x00, 0x07, 0x01, 0xa1, 0x00, 0x00, 0x03, 0x00, + 0x03, 0x01, 0x00, 0x08, 0x01, 0x00, 0x00, 0x3f, + 0x01, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x00, 0xdf, 0x00, 0xb7, 0x00, 0x3f, 0x01, 0xc7, + 0x00, 0x04, 0x00, 0x04, 0x01, 0x03, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xaf, 0x00, + 0x00, 0x03, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x50, 0x00, 0xa7, 0x00, 0x00, 0x03, + 0x02, 0x00, 0x01, 0x03, 0x50, 0x00, 0x00, 0x00, + 0x3f, 0x01, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x01, 0x03, 0x97, 0x00, 0x00, 0x00, 0xb4, 0x00, + 0xa2, 0x00, 0x00, 0x03, 0x00, 0x03, 0x07, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x80, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x03, 0x45, + 0x00, 0x00, 0x00, 0x78, 0x00, 0x86, 0x00, 0x00, + 0x03, 0x00, 0x03, 0x01, 0x03, 0x78, 0x00, 0x00, + 0x00, 0x07, 0x01, 0xa8, 0x00, 0x00, 0x03, 0x00, + 0x03, 0x01, 0x03, 0x07, 0x01, 0x00, 0x00, 0x3f, + 0x01, 0x9e, 0x00, 0x00, 0x03, 0x00, 0x03, 0x02, + 0x00, 0x00, 0x00, 0xb4, 0x00, 0x4d, 0x00, 0xc7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0c, + 0x01, 0xbe, 0x00, 0x3f, 0x01, 0xc7, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0a, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x01, 0x03, 0x64, 0x00, 0x00, 0x00, + 0x3f, 0x01, 0xa8, 0x00, 0x00, 0x03, 0x00, 0x03, + 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, + 0xb7, 0x00, 0x00, 0x03, 0x02, 0x00, 0x02, 0x00, + 0xb6, 0x00, 0xb2, 0x00, 0x3f, 0x01, 0xc7, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x02, 0x01, 0x00, 0x7d, + 0x00, 0x00, 0x00, 0x3f, 0x01, 0xc7, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3f, 0x01, 0xbe, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x28, 0x00, 0xc7, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x01, 0x03, 0x29, 0x00, 0x00, 0x00, 0x5f, + 0x00, 0xa2, 0x00, 0x00, 0x03, 0x00, 0x03, 0x01, + 0x03, 0x5f, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x9b, + 0x00, 0x00, 0x03, 0x00, 0x03, 0x01, 0x00, 0xc8, + 0x00, 0x00, 0x00, 0x3f, 0x01, 0xc7, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x71, 0x4c, 0x71, 0x50, 0x71, 0x54, 0x71, 0x58, + 0x71, 0x5c, 0x71, 0x60, 0x71, 0x64, 0x71, 0x68, + 0x71, 0x6c, 0x71, 0x70, 0x71, 0x84, 0x71, 0x88, + 0x71, 0x8c, 0x71, 0x9c, 0x71, 0xa0, 0x71, 0xa4, + 0x71, 0xa8, 0x71, 0xd0, 0x71, 0xd4, 0x71, 0xee, + 0x71, 0xf2, 0x71, 0xf6, 0x71, 0xfa, 0x71, 0xfe, + 0x71, 0x02, 0x72, 0x06, 0x72, 0x0a, 0x72, 0x18, + 0x72, 0x1c, 0x72, 0x20, 0x72, 0x24, 0x72, 0x28, + 0x72, 0x2c, 0x72, 0x30, 0x72, 0x34, 0x72, 0x38, + 0x72, 0x3c, 0x72, 0x40, 0x72, 0x44, 0x72, 0x48, + 0x72, 0x4c, 0x72, 0xc7, 0x00, 0xff, 0xff, 0xc7, + 0x00, 0xff, 0xff, 0xc7, 0x00, 0xff, 0xff, 0xc7, + 0x00, 0xff, 0xff, 0xc7, 0x00, 0xff, 0xff, 0xc7, + 0x00, 0xff, 0xff, 0xc7, 0x00, 0xff, 0xff, 0xc7, + 0x00, 0xff, 0xff, 0xc7, 0x00, 0xff, 0xff, 0xc7, + 0x00, 0xff, 0xff, 0x67, 0x2d, 0x6a, 0x28, 0x70, + 0x23, 0x79, 0x1e, 0x7f, 0x19, 0x82, 0x14, 0x87, + 0x0f, 0x8c, 0x0a, 0xc7, 0x00, 0xff, 0xff, 0xc7, + 0x00, 0xff, 0xff, 0xc7, 0x00, 0xff, 0xff, 0x6e, + 0x17, 0x73, 0x15, 0x78, 0x13, 0x7d, 0x11, 0x82, + 0x0f, 0x85, 0x0c, 0xc7, 0x00, 0xff, 0xff, 0xc7, + 0x00, 0xff, 0xff, 0xc7, 0x00, 0xff, 0xff, 0xc7, + 0x00, 0xff, 0xff, 0x7a, 0x32, 0x7c, 0x30, 0x7e, + 0x2e, 0x80, 0x2c, 0x82, 0x2a, 0x84, 0x28, 0x86, + 0x24, 0x88, 0x20, 0x8a, 0x1d, 0x8c, 0x1a, 0x8e, + 0x17, 0x90, 0x14, 0x92, 0x11, 0x94, 0x0e, 0x96, + 0x0b, 0x98, 0x08, 0x9a, 0x05, 0x9c, 0x03, 0xc7, + 0x00, 0xff, 0xff, 0xc7, 0x00, 0xff, 0xff, 0x83, + 0x12, 0x85, 0x10, 0x87, 0x0e, 0x89, 0x0c, 0x8b, + 0x0b, 0x8d, 0x0a, 0x8f, 0x09, 0x91, 0x08, 0x93, + 0x06, 0x95, 0x04, 0x97, 0x02, 0xc7, 0x00, 0xff, + 0xff, 0xc7, 0x00, 0xff, 0xff, 0xc7, 0x00, 0xff, + 0xff, 0xc7, 0x00, 0xff, 0xff, 0xc7, 0x00, 0xff, + 0xff, 0xc7, 0x00, 0xff, 0xff, 0xc7, 0x00, 0xff, + 0xff, 0xc7, 0x00, 0xff, 0xff, 0x8e, 0x0c, 0x90, + 0x0a, 0x92, 0x08, 0x94, 0x06, 0x96, 0x04, 0xc7, + 0x00, 0xff, 0xff, 0xc7, 0x00, 0xff, 0xff, 0xc7, + 0x00, 0xff, 0xff, 0xc7, 0x00, 0xff, 0xff, 0xc7, + 0x00, 0xff, 0xff, 0xc7, 0x00, 0xff, 0xff, 0xc7, + 0x00, 0xff, 0xff, 0xc7, 0x00, 0xff, 0xff, 0xc7, + 0x00, 0xff, 0xff, 0xc7, 0x00, 0xff, 0xff, 0xc7, + 0x00, 0xff, 0xff, 0xc7, 0x00, 0xff, 0xff, 0xc7, + 0x00, 0xff, 0xff, 0xc7, 0x00, 0xff, 0xff, 0xc7, + 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xa8, + 0x72, 0xaa, 0x72, 0xc7, 0x73, 0x34, 0x75, 0xca, + 0x76, 0xda, 0x77, 0xbe, 0x79, 0x52, 0x7c, 0xe7, + 0x7e, 0x3e, 0x80, 0x1a, 0x81, 0x2c, 0x84, 0xd9, + 0x85, 0x20, 0x87, 0x06, 0x88, 0xd9, 0x89, 0x6d, + 0x8a, 0xca, 0x8b, 0xec, 0x8c, 0x19, 0x90, 0x6f, + 0x93, 0x2c, 0x95, 0x9c, 0x97, 0x08, 0x9b, 0x22, + 0x9d, 0x00, 0x9f, 0x10, 0xa0, 0xc0, 0xa3, 0x82, + 0xa4, 0xde, 0xa5, 0xc1, 0xa8, 0x5c, 0xaa, 0x12, + 0xac, 0x46, 0xaf, 0x5c, 0xb0, 0xa5, 0xb3, 0xfa, + 0xb3, 0xfc, 0xb3, 0xeb, 0xb4, 0xed, 0xb4, 0xef, + 0xb4, 0xf1, 0xb4, 0x00, 0x00, 0xb6, 0x72, 0xcf, + 0x72, 0xe8, 0x72, 0x38, 0x73, 0x7f, 0x73, 0x00, + 0x00, 0x01, 0x00, 0x00, 0xa6, 0x00, 0x38, 0x00, + 0xc7, 0x00, 0x38, 0x00, 0xb4, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x04, 0x01, 0x70, 0x61, 0x74, 0x68, + 0x00, 0x01, 0x02, 0xb6, 0x00, 0xb5, 0x00, 0x10, + 0x01, 0xc7, 0x00, 0xd9, 0x00, 0xc1, 0x00, 0xdd, + 0x00, 0xc7, 0x00, 0x03, 0x01, 0x70, 0x61, 0x74, + 0x68, 0x00, 0x01, 0x03, 0x20, 0x01, 0x4c, 0x00, + 0x2f, 0x01, 0x59, 0x00, 0x10, 0x01, 0x64, 0x00, + 0x10, 0x01, 0x64, 0x00, 0x01, 0x01, 0x6d, 0x79, + 0x73, 0x74, 0x65, 0x72, 0x69, 0x6f, 0x75, 0x73, + 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x00, + 0x42, 0x6f, 0x79, 0x2c, 0x20, 0x74, 0x68, 0x61, + 0x74, 0x20, 0x63, 0x6f, 0x75, 0x6c, 0x64, 0x20, + 0x62, 0x65, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, + 0x6b, 0x69, 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20, + 0x74, 0x72, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, + 0x21, 0x00, 0x00, 0x04, 0xf1, 0x00, 0x0e, 0x00, + 0x3f, 0x01, 0x5f, 0x00, 0x10, 0x01, 0x64, 0x00, + 0x10, 0x01, 0x64, 0x00, 0x01, 0x01, 0x66, 0x65, + 0x6e, 0x63, 0x65, 0x00, 0x54, 0x68, 0x69, 0x73, + 0x20, 0x69, 0x73, 0x20, 0x6d, 0x61, 0x64, 0x65, + 0x20, 0x6f, 0x66, 0x20, 0x62, 0x61, 0x72, 0x62, + 0x65, 0x64, 0x20, 0x77, 0x69, 0x72, 0x65, 0x2c, + 0x00, 0x61, 0x6e, 0x64, 0x20, 0x69, 0x74, 0x27, + 0x73, 0x20, 0x72, 0x75, 0x73, 0x74, 0x79, 0x2e, + 0x00, 0x00, 0x05, 0x40, 0x00, 0x5a, 0x00, 0xb9, + 0x00, 0xa6, 0x00, 0x7c, 0x00, 0xb7, 0x00, 0x7c, + 0x00, 0xb7, 0x00, 0x01, 0x01, 0x74, 0x65, 0x6e, + 0x74, 0x00, 0x54, 0x68, 0x65, 0x20, 0x63, 0x61, + 0x6d, 0x6f, 0x75, 0x66, 0x6c, 0x61, 0x67, 0x65, + 0x20, 0x69, 0x73, 0x6e, 0x27, 0x74, 0x20, 0x71, + 0x75, 0x69, 0x74, 0x65, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x2d, 0x6f, 0x66, 0x2d, 0x74, 0x68, + 0x65, 0x2d, 0x61, 0x72, 0x74, 0x2e, 0x2e, 0x2e, + 0x00, 0x00, 0xd5, 0x73, 0xf7, 0x73, 0x10, 0x74, + 0x29, 0x74, 0x5c, 0x74, 0xd0, 0x74, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0x00, 0xa3, 0x00, 0xf0, 0x00, 0xa3, + 0x00, 0x04, 0x01, 0x62, 0x69, 0x72, 0x64, 0x00, + 0x42, 0x69, 0x67, 0x20, 0x62, 0x6f, 0x79, 0x2e, + 0x00, 0x00, 0x02, 0x16, 0x01, 0x55, 0x00, 0x3f, + 0x01, 0x7a, 0x00, 0x22, 0x01, 0x76, 0x00, 0x3f, + 0x01, 0x68, 0x00, 0x02, 0x01, 0x70, 0x61, 0x74, + 0x68, 0x00, 0x01, 0x03, 0x50, 0x00, 0xbd, 0x00, + 0xe6, 0x00, 0xc7, 0x00, 0xda, 0x00, 0xbf, 0x00, + 0xd6, 0x00, 0xc7, 0x00, 0x03, 0x01, 0x70, 0x61, + 0x74, 0x68, 0x00, 0x01, 0x04, 0xc6, 0x00, 0x23, + 0x00, 0xdc, 0x00, 0x96, 0x00, 0xd1, 0x00, 0x9a, + 0x00, 0xd1, 0x00, 0x9a, 0x00, 0x01, 0x01, 0x70, + 0x6f, 0x73, 0x74, 0x00, 0x54, 0x68, 0x61, 0x74, + 0x20, 0x6c, 0x6f, 0x6f, 0x6b, 0x73, 0x20, 0x65, + 0x61, 0x73, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x63, + 0x6c, 0x69, 0x6d, 0x62, 0x2e, 0x00, 0x00, 0x05, + 0x38, 0x00, 0x65, 0x00, 0xac, 0x00, 0xbc, 0x00, + 0x73, 0x00, 0xc2, 0x00, 0x73, 0x00, 0xc2, 0x00, + 0x01, 0x01, 0x6d, 0x75, 0x64, 0x20, 0x70, 0x6f, + 0x6f, 0x6c, 0x00, 0x48, 0x65, 0x61, 0x76, 0x65, + 0x6e, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x57, 0x6f, + 0x6f, 0x64, 0x73, 0x74, 0x6f, 0x63, 0x6b, 0x20, + 0x66, 0x61, 0x6e, 0x73, 0x2c, 0x20, 0x61, 0x6c, + 0x6c, 0x69, 0x67, 0x61, 0x74, 0x6f, 0x72, 0x73, + 0x00, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x6f, + 0x73, 0x65, 0x20, 0x74, 0x6f, 0x75, 0x67, 0x68, + 0x20, 0x77, 0x6f, 0x6d, 0x65, 0x6e, 0x20, 0x66, + 0x69, 0x67, 0x68, 0x74, 0x69, 0x6e, 0x67, 0x20, + 0x6f, 0x6e, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x20, + 0x54, 0x56, 0x00, 0x73, 0x68, 0x6f, 0x77, 0x73, + 0x2e, 0x00, 0x00, 0x06, 0xb8, 0x00, 0x90, 0x00, + 0xe4, 0x00, 0xa0, 0x00, 0xf0, 0x00, 0xa3, 0x00, + 0xdc, 0x00, 0xa1, 0x00, 0x04, 0x00, 0x62, 0x69, + 0x72, 0x64, 0x00, 0x49, 0x74, 0x20, 0x74, 0x6f, + 0x6f, 0x6b, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, + 0x64, 0x72, 0x75, 0x67, 0x73, 0x20, 0x74, 0x68, + 0x65, 0x6e, 0x20, 0x66, 0x65, 0x6c, 0x6c, 0x20, + 0x35, 0x20, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, + 0x2e, 0x00, 0x57, 0x68, 0x6f, 0x20, 0x77, 0x6f, + 0x75, 0x6c, 0x64, 0x6e, 0x27, 0x74, 0x20, 0x74, + 0x61, 0x6b, 0x65, 0x20, 0x61, 0x20, 0x6e, 0x61, + 0x70, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, + 0x74, 0x68, 0x61, 0x74, 0x3f, 0x00, 0x00, 0x44, + 0x75, 0x7d, 0x75, 0xd0, 0x75, 0x0a, 0x76, 0x5a, + 0x76, 0x73, 0x76, 0x8c, 0x76, 0x00, 0x00, 0x01, + 0x04, 0x00, 0x77, 0x00, 0x14, 0x00, 0x8d, 0x00, + 0xca, 0x00, 0xb3, 0x00, 0xca, 0x00, 0xb3, 0x00, + 0x04, 0x01, 0x73, 0x68, 0x6f, 0x76, 0x65, 0x6c, + 0x00, 0x49, 0x74, 0x27, 0x73, 0x20, 0x61, 0x20, + 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x20, 0x6d, 0x69, + 0x6c, 0x69, 0x74, 0x61, 0x72, 0x79, 0x20, 0x73, + 0x68, 0x6f, 0x76, 0x65, 0x6c, 0x2e, 0x00, 0x00, + 0x02, 0x7c, 0x00, 0xaa, 0x00, 0xcf, 0x00, 0xc0, + 0x00, 0xca, 0x00, 0xb3, 0x00, 0xca, 0x00, 0xb3, + 0x00, 0x04, 0x01, 0x73, 0x6f, 0x6c, 0x69, 0x64, + 0x20, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x00, + 0x49, 0x27, 0x76, 0x65, 0x20, 0x67, 0x6f, 0x74, + 0x20, 0x61, 0x20, 0x66, 0x65, 0x65, 0x6c, 0x69, + 0x6e, 0x67, 0x20, 0x49, 0x27, 0x6d, 0x20, 0x67, + 0x6f, 0x6e, 0x6e, 0x61, 0x20, 0x6e, 0x65, 0x65, + 0x64, 0x20, 0x74, 0x68, 0x69, 0x73, 0x00, 0x73, + 0x6f, 0x6d, 0x65, 0x68, 0x6f, 0x77, 0x2e, 0x2e, + 0x2e, 0x00, 0x00, 0x03, 0xab, 0x00, 0x63, 0x00, + 0xba, 0x00, 0x97, 0x00, 0xe1, 0x00, 0x9f, 0x00, + 0xe1, 0x00, 0x9f, 0x00, 0x04, 0x01, 0x70, 0x6c, + 0x61, 0x6e, 0x74, 0x00, 0x49, 0x74, 0x20, 0x6d, + 0x75, 0x73, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, + 0x20, 0x61, 0x20, 0x76, 0x65, 0x72, 0x79, 0x20, + 0x73, 0x6f, 0x66, 0x74, 0x20, 0x74, 0x6f, 0x75, + 0x63, 0x68, 0x2e, 0x00, 0x00, 0x04, 0x27, 0x00, + 0x53, 0x00, 0xaa, 0x00, 0xa1, 0x00, 0xca, 0x00, + 0xb3, 0x00, 0xca, 0x00, 0xb3, 0x00, 0x04, 0x01, + 0x62, 0x72, 0x69, 0x63, 0x6b, 0x20, 0x77, 0x61, + 0x6c, 0x6c, 0x00, 0x54, 0x68, 0x65, 0x20, 0x62, + 0x72, 0x69, 0x63, 0x6b, 0x2d, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, + 0x68, 0x61, 0x76, 0x65, 0x20, 0x62, 0x65, 0x65, + 0x6e, 0x00, 0x61, 0x20, 0x50, 0x69, 0x6e, 0x6b, + 0x20, 0x46, 0x6c, 0x6f, 0x79, 0x64, 0x20, 0x66, + 0x61, 0x6e, 0x2e, 0x00, 0x00, 0x05, 0xe0, 0x00, + 0x7a, 0x00, 0x3f, 0x01, 0x9b, 0x00, 0x13, 0x01, + 0x89, 0x00, 0x3f, 0x01, 0x80, 0x00, 0x02, 0x01, + 0x70, 0x61, 0x74, 0x68, 0x00, 0x01, 0x06, 0xfa, + 0x00, 0x9c, 0x00, 0x3f, 0x01, 0xc7, 0x00, 0x18, + 0x01, 0xb9, 0x00, 0x3f, 0x01, 0xb9, 0x00, 0x02, + 0x01, 0x70, 0x61, 0x74, 0x68, 0x00, 0x01, 0x07, + 0xb2, 0x00, 0xa1, 0x00, 0xc0, 0x00, 0xb4, 0x00, + 0xcb, 0x00, 0xb6, 0x00, 0xcb, 0x00, 0xb6, 0x00, + 0x04, 0x00, 0x73, 0x70, 0x72, 0x69, 0x6e, 0x67, + 0x00, 0x49, 0x27, 0x76, 0x65, 0x20, 0x73, 0x65, + 0x65, 0x6e, 0x20, 0x62, 0x65, 0x74, 0x74, 0x65, + 0x72, 0x20, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x20, 0x74, 0x6f, 0x20, 0x73, 0x69, 0x74, 0x20, + 0x6f, 0x6e, 0x2e, 0x00, 0x00, 0xda, 0x76, 0xf3, + 0x76, 0x0c, 0x77, 0x25, 0x77, 0x56, 0x77, 0x6f, + 0x77, 0xb1, 0x77, 0x00, 0x00, 0x01, 0x5c, 0x00, + 0xb4, 0x00, 0x92, 0x00, 0xc7, 0x00, 0x80, 0x00, + 0xb0, 0x00, 0x74, 0x00, 0xc7, 0x00, 0x03, 0x01, + 0x70, 0x61, 0x74, 0x68, 0x00, 0x01, 0x02, 0x00, + 0x00, 0x9c, 0x00, 0x2d, 0x00, 0xb6, 0x00, 0x23, + 0x00, 0xae, 0x00, 0x00, 0x00, 0xae, 0x00, 0x04, + 0x01, 0x70, 0x61, 0x74, 0x68, 0x00, 0x01, 0x03, + 0x23, 0x01, 0x00, 0x00, 0x3f, 0x01, 0x82, 0x00, + 0x2c, 0x01, 0x87, 0x00, 0x2c, 0x01, 0x87, 0x00, + 0x01, 0x01, 0x70, 0x61, 0x74, 0x68, 0x00, 0x01, + 0x04, 0x0b, 0x00, 0x47, 0x00, 0x42, 0x00, 0x9b, + 0x00, 0x28, 0x00, 0x9d, 0x00, 0x28, 0x00, 0x9d, + 0x00, 0x01, 0x01, 0x63, 0x61, 0x6e, 0x74, 0x65, + 0x65, 0x6e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x20, + 0x64, 0x6f, 0x6f, 0x72, 0x00, 0x4e, 0x69, 0x63, + 0x65, 0x20, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x00, + 0x00, 0x05, 0x8c, 0x00, 0x47, 0x00, 0xbf, 0x00, + 0x9b, 0x00, 0xa6, 0x00, 0x9e, 0x00, 0xa6, 0x00, + 0x9e, 0x00, 0x01, 0x01, 0x64, 0x6f, 0x6f, 0x72, + 0x00, 0x01, 0x06, 0x04, 0x01, 0x35, 0x00, 0x22, + 0x01, 0x94, 0x00, 0x22, 0x01, 0x8f, 0x00, 0x14, + 0x01, 0x8f, 0x00, 0x04, 0x01, 0x6a, 0x61, 0x69, + 0x6c, 0x20, 0x64, 0x6f, 0x6f, 0x72, 0x00, 0x4e, + 0x6f, 0x77, 0x20, 0x74, 0x68, 0x61, 0x74, 0x27, + 0x73, 0x20, 0x77, 0x68, 0x61, 0x74, 0x00, 0x49, + 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x61, 0x20, + 0x67, 0x6f, 0x6f, 0x64, 0x00, 0x64, 0x6f, 0x6f, + 0x72, 0x2e, 0x00, 0x00, 0x07, 0x4b, 0x00, 0x65, + 0x00, 0x65, 0x00, 0xa0, 0x00, 0x6d, 0x00, 0xa1, + 0x00, 0x6d, 0x00, 0xa1, 0x00, 0x04, 0x01, 0x74, + 0x72, 0x61, 0x73, 0x68, 0x20, 0x63, 0x61, 0x6e, + 0x00, 0x49, 0x74, 0x20, 0x73, 0x74, 0x69, 0x6e, + 0x6b, 0x73, 0x2e, 0x00, 0x00, 0xf0, 0x77, 0x2c, + 0x78, 0x4f, 0x78, 0x96, 0x78, 0xcd, 0x78, 0x03, + 0x79, 0x3e, 0x79, 0x68, 0x79, 0x86, 0x79, 0xa1, + 0x79, 0x00, 0x00, 0x01, 0x6b, 0x00, 0x9c, 0x00, + 0x84, 0x00, 0xa9, 0x00, 0x91, 0x00, 0xb3, 0x00, + 0x91, 0x00, 0xb3, 0x00, 0x04, 0x01, 0x73, 0x70, + 0x72, 0x69, 0x6e, 0x67, 0x00, 0x59, 0x65, 0x61, + 0x68, 0x2c, 0x20, 0x49, 0x20, 0x64, 0x65, 0x66, + 0x69, 0x6e, 0x65, 0x74, 0x65, 0x6c, 0x79, 0x20, + 0x67, 0x6f, 0x74, 0x74, 0x61, 0x20, 0x73, 0x70, + 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x00, 0x00, 0x02, + 0x1f, 0x00, 0x9c, 0x00, 0x90, 0x00, 0xbb, 0x00, + 0x50, 0x00, 0xc0, 0x00, 0x50, 0x00, 0xc0, 0x00, + 0x01, 0x01, 0x62, 0x65, 0x64, 0x00, 0x4c, 0x6f, + 0x6f, 0x6b, 0x73, 0x20, 0x62, 0x61, 0x64, 0x2e, + 0x00, 0x00, 0x03, 0x1e, 0x01, 0x71, 0x00, 0x32, + 0x01, 0x7e, 0x00, 0x09, 0x01, 0xb4, 0x00, 0x09, + 0x01, 0xb4, 0x00, 0x02, 0x01, 0x63, 0x72, 0x61, + 0x74, 0x65, 0x73, 0x00, 0x54, 0x68, 0x65, 0x20, + 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x20, 0x6c, 0x6f, + 0x6f, 0x6b, 0x73, 0x20, 0x62, 0x65, 0x74, 0x74, + 0x65, 0x72, 0x00, 0x66, 0x72, 0x6f, 0x6d, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x6f, 0x74, 0x68, 0x65, + 0x72, 0x20, 0x73, 0x69, 0x64, 0x65, 0x2e, 0x00, + 0x00, 0x04, 0x1b, 0x01, 0x87, 0x00, 0x2d, 0x01, + 0x92, 0x00, 0x09, 0x01, 0xb4, 0x00, 0x09, 0x01, + 0xb4, 0x00, 0x02, 0x00, 0x62, 0x6f, 0x77, 0x6c, + 0x00, 0x49, 0x74, 0x27, 0x73, 0x20, 0x6d, 0x61, + 0x64, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6c, + 0x75, 0x6d, 0x69, 0x6e, 0x69, 0x75, 0x6d, 0x2e, + 0x00, 0x00, 0x62, 0x6f, 0x64, 0x79, 0x00, 0xff, + 0x05, 0x0a, 0x01, 0xaa, 0x00, 0x20, 0x01, 0xbe, + 0x00, 0x0a, 0x01, 0xbd, 0x00, 0x0a, 0x01, 0xbd, + 0x00, 0x02, 0x00, 0x6c, 0x69, 0x76, 0x65, 0x20, + 0x63, 0x61, 0x62, 0x6c, 0x65, 0x00, 0x54, 0x68, + 0x65, 0x20, 0x77, 0x69, 0x72, 0x65, 0x73, 0x20, + 0x61, 0x72, 0x65, 0x20, 0x65, 0x78, 0x70, 0x6f, + 0x73, 0x65, 0x64, 0x21, 0x00, 0x00, 0x06, 0x9b, + 0x00, 0x5a, 0x00, 0xa4, 0x00, 0x6b, 0x00, 0x9f, + 0x00, 0xc2, 0x00, 0x9f, 0x00, 0xc2, 0x00, 0x01, + 0x01, 0x62, 0x75, 0x6c, 0x62, 0x00, 0x49, 0x74, + 0x27, 0x73, 0x20, 0x6e, 0x61, 0x6b, 0x65, 0x64, + 0x20, 0x61, 0x6e, 0x64, 0x20, 0x69, 0x74, 0x27, + 0x73, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x66, + 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2e, 0x00, + 0x00, 0x07, 0x15, 0x01, 0x62, 0x00, 0x35, 0x01, + 0xbd, 0x00, 0x09, 0x01, 0xb4, 0x00, 0x09, 0x01, + 0xb4, 0x00, 0x02, 0x01, 0x64, 0x6f, 0x6f, 0x72, + 0x00, 0x48, 0x65, 0x61, 0x76, 0x79, 0x20, 0x61, + 0x6e, 0x64, 0x20, 0x73, 0x6f, 0x6c, 0x69, 0x64, + 0x2e, 0x00, 0x00, 0x08, 0xfa, 0x00, 0x93, 0x00, + 0x0e, 0x01, 0xad, 0x00, 0xf2, 0x00, 0xad, 0x00, + 0xf2, 0x00, 0xad, 0x00, 0x02, 0x01, 0x74, 0x72, + 0x61, 0x73, 0x68, 0x20, 0x63, 0x61, 0x6e, 0x00, + 0x01, 0x09, 0x38, 0x01, 0x8a, 0x00, 0x3f, 0x01, + 0x91, 0x00, 0x32, 0x01, 0xc4, 0x00, 0x32, 0x01, + 0xc4, 0x00, 0x02, 0x01, 0x73, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x00, 0x01, 0x0a, 0x38, 0x00, 0x7a, + 0x00, 0xd0, 0x00, 0x9a, 0x00, 0x99, 0x00, 0xb2, + 0x00, 0x99, 0x00, 0xb2, 0x00, 0x01, 0x01, 0x67, + 0x72, 0x61, 0x66, 0x66, 0x69, 0x74, 0x69, 0x00, + 0x01, 0xd8, 0x79, 0x08, 0x7a, 0x21, 0x7a, 0x61, + 0x7a, 0x82, 0x7a, 0xbb, 0x7a, 0xf2, 0x7a, 0x1a, + 0x7b, 0x94, 0x7b, 0xd1, 0x7b, 0xed, 0x7b, 0x17, + 0x7c, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0xc3, 0x00, + 0x82, 0x00, 0xc3, 0x00, 0x01, 0x01, 0x63, 0x61, + 0x70, 0x74, 0x61, 0x69, 0x6e, 0x00, 0x48, 0x65, + 0x27, 0x73, 0x20, 0x73, 0x69, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x20, 0x74, 0x69, 0x67, 0x68, 0x74, + 0x2e, 0x00, 0x00, 0x02, 0x00, 0x00, 0x50, 0x00, + 0x23, 0x00, 0xbc, 0x00, 0x32, 0x00, 0xb8, 0x00, + 0x13, 0x00, 0xb8, 0x00, 0x04, 0x01, 0x64, 0x6f, + 0x6f, 0x72, 0x00, 0x01, 0x03, 0x2c, 0x00, 0x61, + 0x00, 0x4e, 0x00, 0xa4, 0x00, 0x40, 0x00, 0xa6, + 0x00, 0x40, 0x00, 0xa6, 0x00, 0x01, 0x01, 0x6c, + 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x00, 0x49, 0x74, + 0x27, 0x73, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, + 0x64, 0x2e, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x74, + 0x68, 0x61, 0x74, 0x00, 0x49, 0x27, 0x6d, 0x20, + 0x73, 0x75, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, + 0x64, 0x2e, 0x00, 0x00, 0x04, 0x6b, 0x00, 0x51, + 0x00, 0xcd, 0x00, 0x8c, 0x00, 0x9e, 0x00, 0xa8, + 0x00, 0x9e, 0x00, 0xa8, 0x00, 0x01, 0x01, 0x6d, + 0x61, 0x70, 0x00, 0x50, 0x69, 0x63, 0x61, 0x73, + 0x73, 0x6f, 0x3f, 0x00, 0x00, 0x05, 0x8c, 0x00, + 0x94, 0x00, 0xd6, 0x00, 0x9e, 0x00, 0xa4, 0x00, + 0xc6, 0x00, 0xa4, 0x00, 0xc6, 0x00, 0x01, 0x01, + 0x64, 0x65, 0x73, 0x6b, 0x00, 0x54, 0x68, 0x61, + 0x74, 0x27, 0x73, 0x20, 0x6a, 0x75, 0x73, 0x74, + 0x20, 0x61, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x20, + 0x6f, 0x66, 0x20, 0x6f, 0x6c, 0x64, 0x20, 0x6a, + 0x75, 0x6e, 0x6b, 0x2e, 0x00, 0x00, 0x06, 0xee, + 0x00, 0x83, 0x00, 0x3f, 0x01, 0xc7, 0x00, 0xf1, + 0x00, 0xb5, 0x00, 0xf1, 0x00, 0xb5, 0x00, 0x02, + 0x01, 0x62, 0x65, 0x64, 0x00, 0x54, 0x68, 0x61, + 0x74, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x6e, 0x27, + 0x74, 0x20, 0x6c, 0x6f, 0x6f, 0x6b, 0x20, 0x63, + 0x6f, 0x6d, 0x66, 0x6f, 0x72, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x2e, 0x00, 0x00, 0x07, 0xbf, 0x00, + 0xa2, 0x00, 0xd9, 0x00, 0xb9, 0x00, 0xcc, 0x00, + 0xc2, 0x00, 0xcc, 0x00, 0xc2, 0x00, 0x01, 0x01, + 0x64, 0x72, 0x61, 0x77, 0x65, 0x72, 0x00, 0x49, + 0x74, 0x27, 0x73, 0x20, 0x63, 0x6c, 0x6f, 0x73, + 0x65, 0x64, 0x21, 0x00, 0x00, 0x08, 0xd5, 0x00, + 0x5d, 0x00, 0xe8, 0x00, 0x8a, 0x00, 0xf1, 0x00, + 0xb5, 0x00, 0xf1, 0x00, 0xb5, 0x00, 0x01, 0x01, + 0x73, 0x61, 0x62, 0x72, 0x65, 0x73, 0x00, 0x4d, + 0x79, 0x20, 0x67, 0x72, 0x61, 0x6e, 0x64, 0x70, + 0x61, 0x20, 0x68, 0x61, 0x64, 0x20, 0x6f, 0x6e, + 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x6f, + 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x2e, + 0x00, 0x49, 0x20, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x64, 0x20, 0x69, 0x74, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x6a, 0x6f, + 0x79, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x2e, 0x00, + 0x47, 0x72, 0x61, 0x6e, 0x64, 0x70, 0x61, 0x20, + 0x64, 0x69, 0x64, 0x6e, 0x27, 0x74, 0x20, 0x6c, + 0x69, 0x6b, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x69, 0x64, 0x65, 0x61, 0x2e, 0x00, 0x00, 0x09, + 0xef, 0x00, 0x5e, 0x00, 0x15, 0x01, 0x7a, 0x00, + 0xf1, 0x00, 0xb5, 0x00, 0xf1, 0x00, 0xb5, 0x00, + 0x01, 0x01, 0x67, 0x75, 0x6e, 0x73, 0x00, 0x57, + 0x68, 0x61, 0x74, 0x20, 0x61, 0x20, 0x70, 0x69, + 0x74, 0x79, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, + 0x61, 0x72, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, + 0x00, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, + 0x2e, 0x2e, 0x00, 0x00, 0x0a, 0x2d, 0x00, 0x27, + 0x00, 0x53, 0x00, 0x56, 0x00, 0x32, 0x00, 0xb5, + 0x00, 0x32, 0x00, 0xb5, 0x00, 0x01, 0x01, 0x70, + 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x00, 0x01, + 0x0b, 0xde, 0x00, 0x2b, 0x00, 0x1d, 0x01, 0x53, + 0x00, 0xf1, 0x00, 0xb5, 0x00, 0xf1, 0x00, 0xb5, + 0x00, 0x01, 0x01, 0x70, 0x69, 0x63, 0x74, 0x75, + 0x72, 0x65, 0x00, 0x4e, 0x69, 0x63, 0x65, 0x20, + 0x63, 0x68, 0x6f, 0x70, 0x70, 0x65, 0x72, 0x2e, + 0x00, 0x00, 0x0c, 0x7b, 0x00, 0xac, 0x00, 0x89, + 0x00, 0xbb, 0x00, 0x81, 0x00, 0xbf, 0x00, 0x81, + 0x00, 0xbf, 0x00, 0x01, 0x00, 0x20, 0x53, 0x77, + 0x69, 0x73, 0x73, 0x20, 0x41, 0x72, 0x6d, 0x79, + 0x20, 0x6b, 0x6e, 0x69, 0x66, 0x65, 0x00, 0x54, + 0x68, 0x61, 0x74, 0x27, 0x73, 0x20, 0x6d, 0x6f, + 0x72, 0x65, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, + 0x69, 0x74, 0x2e, 0x00, 0x00, 0x66, 0x7c, 0xa8, + 0x7c, 0xe0, 0x7c, 0xf9, 0x7c, 0x34, 0x7d, 0x9b, + 0x7d, 0xf7, 0x7d, 0x3a, 0x7e, 0xba, 0x7e, 0x00, + 0x00, 0x01, 0xbb, 0x00, 0x63, 0x00, 0xc4, 0x00, + 0x6b, 0x00, 0xc0, 0x00, 0x98, 0x00, 0xc0, 0x00, + 0x98, 0x00, 0x01, 0x00, 0x6d, 0x75, 0x67, 0x00, + 0x54, 0x68, 0x61, 0x74, 0x27, 0x73, 0x20, 0x73, + 0x75, 0x72, 0x70, 0x72, 0x69, 0x73, 0x69, 0x6e, + 0x67, 0x2c, 0x20, 0x62, 0x75, 0x74, 0x20, 0x74, + 0x68, 0x65, 0x72, 0x65, 0x27, 0x73, 0x20, 0x74, + 0x65, 0x61, 0x00, 0x69, 0x6e, 0x20, 0x69, 0x74, + 0x2e, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x98, 0x00, + 0xb1, 0x00, 0x98, 0x00, 0x01, 0x01, 0x62, 0x61, + 0x72, 0x6d, 0x61, 0x6e, 0x00, 0x57, 0x68, 0x61, + 0x74, 0x20, 0x61, 0x20, 0x68, 0x61, 0x72, 0x64, + 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, + 0x20, 0x63, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x6e, + 0x2e, 0x00, 0x00, 0x03, 0x5e, 0x00, 0xb6, 0x00, + 0xce, 0x00, 0xc7, 0x00, 0x9e, 0x00, 0xb8, 0x00, + 0x9b, 0x00, 0xc7, 0x00, 0x03, 0x01, 0x65, 0x78, + 0x69, 0x74, 0x00, 0x01, 0x04, 0x10, 0x00, 0x34, + 0x00, 0x26, 0x00, 0x92, 0x00, 0x28, 0x00, 0x98, + 0x00, 0x28, 0x00, 0x98, 0x00, 0x01, 0x01, 0x64, + 0x6f, 0x6f, 0x72, 0x00, 0x54, 0x68, 0x69, 0x73, + 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x6c, 0x65, + 0x61, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x20, + 0x72, 0x6f, 0x6f, 0x6d, 0x2e, 0x00, 0x00, 0x05, + 0x34, 0x00, 0x2b, 0x00, 0x59, 0x00, 0x48, 0x00, + 0x4d, 0x00, 0x98, 0x00, 0x4d, 0x00, 0x98, 0x00, + 0x01, 0x01, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x00, + 0x54, 0x68, 0x65, 0x20, 0x72, 0x61, 0x64, 0x69, + 0x6f, 0x20, 0x6c, 0x6f, 0x6f, 0x6b, 0x73, 0x20, + 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x61, 0x20, 0x72, + 0x61, 0x64, 0x69, 0x6f, 0x2c, 0x20, 0x62, 0x75, + 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x65, + 0x72, 0x69, 0x61, 0x6c, 0x00, 0x69, 0x73, 0x20, + 0x6d, 0x61, 0x64, 0x65, 0x20, 0x6f, 0x66, 0x20, + 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x6b, 0x69, 0x6e, + 0x64, 0x20, 0x6f, 0x66, 0x20, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x72, 0x2e, 0x00, 0x00, 0x06, 0x0a, + 0x01, 0x9f, 0x00, 0x17, 0x01, 0xa6, 0x00, 0x04, + 0x01, 0xc2, 0x00, 0x04, 0x01, 0xc2, 0x00, 0x02, + 0x01, 0x63, 0x72, 0x75, 0x6d, 0x62, 0x73, 0x00, + 0x49, 0x74, 0x27, 0x73, 0x20, 0x64, 0x69, 0x73, + 0x67, 0x75, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, + 0x20, 0x50, 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x20, + 0x72, 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x73, + 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x00, 0x63, 0x6c, + 0x65, 0x61, 0x6e, 0x20, 0x75, 0x70, 0x20, 0x61, + 0x66, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, + 0x6d, 0x73, 0x65, 0x6c, 0x76, 0x65, 0x73, 0x2e, + 0x00, 0x00, 0x07, 0x62, 0x00, 0x23, 0x00, 0x75, + 0x00, 0x35, 0x00, 0x6e, 0x00, 0x98, 0x00, 0x6e, + 0x00, 0x98, 0x00, 0x01, 0x01, 0x63, 0x6c, 0x6f, + 0x63, 0x6b, 0x00, 0x49, 0x74, 0x20, 0x6c, 0x6f, + 0x6f, 0x6b, 0x73, 0x20, 0x6c, 0x69, 0x6b, 0x65, + 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x27, 0x73, + 0x20, 0x61, 0x20, 0x70, 0x72, 0x6f, 0x62, 0x6c, + 0x65, 0x6d, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, + 0x69, 0x74, 0x2e, 0x00, 0x00, 0x08, 0x7e, 0x00, + 0x22, 0x00, 0x00, 0x01, 0x69, 0x00, 0xc8, 0x00, + 0x98, 0x00, 0xc8, 0x00, 0x98, 0x00, 0x01, 0x01, + 0x73, 0x68, 0x65, 0x6c, 0x76, 0x65, 0x73, 0x00, + 0x49, 0x20, 0x77, 0x6f, 0x6e, 0x64, 0x65, 0x72, + 0x20, 0x77, 0x68, 0x79, 0x20, 0x74, 0x68, 0x65, + 0x72, 0x65, 0x27, 0x73, 0x20, 0x73, 0x75, 0x63, + 0x68, 0x20, 0x61, 0x20, 0x6c, 0x61, 0x72, 0x67, + 0x65, 0x20, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, + 0x00, 0x6f, 0x66, 0x20, 0x61, 0x6c, 0x63, 0x6f, + 0x68, 0x6f, 0x6c, 0x20, 0x61, 0x74, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6e, + 0x69, 0x6e, 0x67, 0x20, 0x63, 0x61, 0x6d, 0x70, + 0x2e, 0x00, 0x54, 0x6f, 0x20, 0x6b, 0x65, 0x65, + 0x70, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x72, + 0x6f, 0x6f, 0x70, 0x73, 0x20, 0x68, 0x61, 0x70, + 0x70, 0x79, 0x3f, 0x00, 0x00, 0x09, 0x41, 0x00, + 0x59, 0x00, 0x5b, 0x00, 0x69, 0x00, 0x4d, 0x00, + 0x98, 0x00, 0x4d, 0x00, 0x98, 0x00, 0x01, 0x01, + 0x63, 0x61, 0x73, 0x68, 0x20, 0x72, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x65, 0x72, 0x00, 0x49, 0x20, + 0x6c, 0x6f, 0x76, 0x65, 0x20, 0x69, 0x74, 0x2e, + 0x00, 0x00, 0xf7, 0x7e, 0x29, 0x7f, 0x42, 0x7f, + 0x8b, 0x7f, 0xc4, 0x7f, 0xfc, 0x7f, 0x1d, 0x80, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x32, 0x00, 0xb4, 0x00, 0x32, + 0x00, 0xb4, 0x00, 0x01, 0x01, 0x62, 0x6c, 0x69, + 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x6f, + 0x6c, 0x65, 0x00, 0x54, 0x68, 0x61, 0x74, 0x27, + 0x73, 0x20, 0x77, 0x65, 0x69, 0x72, 0x64, 0x2e, + 0x2e, 0x2e, 0x00, 0x00, 0x02, 0x0c, 0x01, 0x55, + 0x00, 0x29, 0x01, 0xaa, 0x00, 0xf0, 0x00, 0xb6, + 0x00, 0xf0, 0x00, 0xb6, 0x00, 0x02, 0x01, 0x64, + 0x6f, 0x6f, 0x72, 0x00, 0x01, 0x03, 0x04, 0x00, + 0x6c, 0x00, 0x5b, 0x00, 0xb2, 0x00, 0x32, 0x00, + 0xb4, 0x00, 0x32, 0x00, 0xb4, 0x00, 0x01, 0x01, + 0x62, 0x61, 0x72, 0x72, 0x65, 0x6c, 0x73, 0x00, + 0x49, 0x74, 0x27, 0x73, 0x20, 0x67, 0x6f, 0x6f, + 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6b, 0x6e, 0x6f, + 0x77, 0x20, 0x6f, 0x75, 0x72, 0x20, 0x61, 0x72, + 0x6d, 0x79, 0x20, 0x69, 0x73, 0x20, 0x77, 0x65, + 0x6c, 0x6c, 0x20, 0x65, 0x71, 0x75, 0x69, 0x70, + 0x70, 0x65, 0x64, 0x2e, 0x00, 0x00, 0x04, 0x5a, + 0x00, 0x5f, 0x00, 0x78, 0x00, 0xa8, 0x00, 0x70, + 0x00, 0xad, 0x00, 0x70, 0x00, 0xad, 0x00, 0x01, + 0x01, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x00, + 0x49, 0x74, 0x27, 0x73, 0x20, 0x61, 0x20, 0x6c, + 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x20, 0x6b, 0x69, + 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x6c, 0x6f, + 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x00, 0x00, 0x05, + 0x96, 0x00, 0x6b, 0x00, 0xd6, 0x00, 0xa4, 0x00, + 0xb7, 0x00, 0xb2, 0x00, 0xb7, 0x00, 0xb2, 0x00, + 0x01, 0x01, 0x6c, 0x6f, 0x74, 0x73, 0x20, 0x6f, + 0x66, 0x20, 0x64, 0x72, 0x61, 0x77, 0x65, 0x72, + 0x73, 0x00, 0x49, 0x20, 0x68, 0x61, 0x74, 0x65, + 0x20, 0x62, 0x75, 0x72, 0x65, 0x61, 0x75, 0x63, + 0x72, 0x61, 0x63, 0x79, 0x2e, 0x00, 0x00, 0x06, + 0x7e, 0x00, 0x8f, 0x00, 0x97, 0x00, 0xaa, 0x00, + 0x8d, 0x00, 0xb1, 0x00, 0x8d, 0x00, 0xb1, 0x00, + 0x01, 0x01, 0x62, 0x6f, 0x78, 0x65, 0x73, 0x00, + 0x27, 0x50, 0x65, 0x70, 0x61, 0x27, 0x00, 0x00, + 0x07, 0xd7, 0x00, 0x81, 0x00, 0xea, 0x00, 0xaa, + 0x00, 0xe0, 0x00, 0xb6, 0x00, 0xe0, 0x00, 0xb6, + 0x00, 0x01, 0x01, 0x62, 0x6f, 0x78, 0x65, 0x73, + 0x00, 0x27, 0x53, 0x61, 0x6c, 0x74, 0x27, 0x00, + 0x00, 0x48, 0x80, 0x87, 0x80, 0xd1, 0x80, 0x01, + 0x81, 0x00, 0x00, 0x01, 0x7e, 0x00, 0x5f, 0x00, + 0x86, 0x00, 0x69, 0x00, 0x8b, 0x00, 0x9c, 0x00, + 0x84, 0x00, 0x95, 0x00, 0x01, 0x00, 0x67, 0x72, + 0x65, 0x6e, 0x61, 0x64, 0x65, 0x00, 0x57, 0x6f, + 0x77, 0x21, 0x20, 0x49, 0x20, 0x61, 0x6c, 0x77, + 0x61, 0x79, 0x73, 0x20, 0x77, 0x61, 0x6e, 0x74, + 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f, + 0x66, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x2e, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8b, 0x00, 0x9c, 0x00, 0x8b, + 0x00, 0x9c, 0x00, 0x01, 0x01, 0x67, 0x75, 0x61, + 0x72, 0x64, 0x00, 0x49, 0x20, 0x64, 0x6f, 0x6e, + 0x27, 0x74, 0x20, 0x74, 0x68, 0x69, 0x6e, 0x6b, + 0x20, 0x68, 0x65, 0x27, 0x73, 0x20, 0x6d, 0x61, + 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x69, + 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x2e, 0x00, 0x00, 0x03, 0x00, 0x00, 0x6f, + 0x00, 0x54, 0x00, 0xa2, 0x00, 0x53, 0x00, 0x95, + 0x00, 0x53, 0x00, 0x95, 0x00, 0x04, 0x01, 0x77, + 0x61, 0x79, 0x20, 0x6f, 0x75, 0x74, 0x00, 0x48, + 0x6f, 0x6d, 0x65, 0x2c, 0x20, 0x73, 0x77, 0x65, + 0x65, 0x74, 0x20, 0x68, 0x6f, 0x6d, 0x65, 0x2e, + 0x2e, 0x2e, 0x00, 0x00, 0x04, 0x10, 0x01, 0x95, + 0x00, 0x3f, 0x01, 0xc7, 0x00, 0x0d, 0x01, 0xaf, + 0x00, 0x3f, 0x01, 0xb7, 0x00, 0x02, 0x01, 0x70, + 0x61, 0x74, 0x68, 0x00, 0x01, 0x3a, 0x81, 0x79, + 0x81, 0xa3, 0x81, 0xc0, 0x81, 0xdd, 0x81, 0x11, + 0x82, 0x3d, 0x82, 0x7f, 0x82, 0xa4, 0x82, 0xcc, + 0x82, 0x1a, 0x83, 0x3c, 0x83, 0x64, 0x83, 0xb8, + 0x83, 0xea, 0x83, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, + 0xa3, 0x00, 0x8a, 0x00, 0xa3, 0x00, 0x02, 0x01, + 0x67, 0x75, 0x61, 0x72, 0x64, 0x00, 0x48, 0x65, + 0x20, 0x6c, 0x6f, 0x6f, 0x6b, 0x73, 0x20, 0x6c, + 0x69, 0x6b, 0x65, 0x20, 0x61, 0x20, 0x70, 0x65, + 0x61, 0x73, 0x61, 0x6e, 0x74, 0x20, 0x69, 0x6e, + 0x00, 0x64, 0x69, 0x73, 0x67, 0x75, 0x69, 0x73, + 0x65, 0x2e, 0x00, 0x00, 0x02, 0x70, 0x00, 0xa0, + 0x00, 0x7b, 0x00, 0xa8, 0x00, 0x68, 0x00, 0xab, + 0x00, 0x68, 0x00, 0xab, 0x00, 0x02, 0x00, 0x62, + 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x00, 0x49, 0x74, + 0x27, 0x73, 0x20, 0x77, 0x68, 0x69, 0x73, 0x6b, + 0x79, 0x21, 0x2e, 0x2e, 0x00, 0x00, 0x03, 0xd2, + 0x00, 0x77, 0x00, 0xf6, 0x00, 0x98, 0x00, 0x8a, + 0x00, 0xa3, 0x00, 0x8a, 0x00, 0xa3, 0x00, 0x02, + 0x01, 0x67, 0x61, 0x72, 0x67, 0x6f, 0x79, 0x6c, + 0x65, 0x00, 0x01, 0x04, 0x09, 0x01, 0x80, 0x00, + 0x2f, 0x01, 0xad, 0x00, 0x8a, 0x00, 0xa3, 0x00, + 0x8a, 0x00, 0xa3, 0x00, 0x02, 0x01, 0x67, 0x61, + 0x72, 0x67, 0x6f, 0x79, 0x6c, 0x65, 0x00, 0x01, + 0x05, 0x12, 0x01, 0x39, 0x00, 0x23, 0x01, 0x48, + 0x00, 0x8a, 0x00, 0xa3, 0x00, 0x8a, 0x00, 0xa3, + 0x00, 0x02, 0x01, 0x73, 0x63, 0x75, 0x6c, 0x70, + 0x74, 0x75, 0x72, 0x65, 0x00, 0x52, 0x65, 0x61, + 0x6c, 0x6c, 0x79, 0x20, 0x73, 0x6f, 0x70, 0x68, + 0x69, 0x73, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x64, 0x21, 0x00, 0x00, 0x06, 0xfc, 0x00, 0x33, + 0x00, 0x32, 0x01, 0xa1, 0x00, 0x8a, 0x00, 0xa3, + 0x00, 0x8a, 0x00, 0xa3, 0x00, 0x02, 0x01, 0x64, + 0x6f, 0x6f, 0x72, 0x00, 0x53, 0x6f, 0x6c, 0x69, + 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x61, + 0x73, 0x73, 0x69, 0x76, 0x65, 0x2e, 0x00, 0x00, + 0x07, 0xe5, 0x00, 0x00, 0x00, 0x3f, 0x01, 0x98, + 0x00, 0x8a, 0x00, 0xa3, 0x00, 0x8a, 0x00, 0xa3, + 0x00, 0x02, 0x01, 0x6d, 0x61, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x20, 0x77, 0x61, 0x6c, 0x6c, 0x00, + 0x49, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, + 0x62, 0x65, 0x20, 0x33, 0x20, 0x6b, 0x69, 0x6c, + 0x6f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x20, + 0x74, 0x68, 0x69, 0x63, 0x6b, 0x2e, 0x2e, 0x2e, + 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xb5, 0x00, 0xb0, 0x00, 0xb5, + 0x00, 0xb0, 0x00, 0x01, 0x00, 0x4a, 0x6f, 0x68, + 0x6e, 0x20, 0x4e, 0x6f, 0x74, 0x79, 0x00, 0x46, + 0x61, 0x74, 0x73, 0x6f, 0x2e, 0x00, 0x00, 0x09, + 0x9c, 0x00, 0xae, 0x00, 0x3f, 0x01, 0xc7, 0x00, + 0x8a, 0x00, 0xa3, 0x00, 0x3f, 0x01, 0xc6, 0x00, + 0x02, 0x01, 0x70, 0x61, 0x74, 0x68, 0x20, 0x61, + 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x6d, 0x61, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x00, 0x01, 0x0a, + 0x00, 0x00, 0x73, 0x00, 0x46, 0x00, 0x98, 0x00, + 0x3c, 0x00, 0xab, 0x00, 0x00, 0x00, 0x7c, 0x00, + 0x01, 0x01, 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, + 0x6f, 0x20, 0x6d, 0x65, 0x61, 0x64, 0x6f, 0x77, + 0x00, 0x49, 0x74, 0x20, 0x6c, 0x65, 0x61, 0x64, + 0x73, 0x20, 0x69, 0x6e, 0x73, 0x69, 0x64, 0x65, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x72, + 0x6b, 0x20, 0x61, 0x6e, 0x64, 0x00, 0x73, 0x63, + 0x61, 0x72, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x65, + 0x73, 0x74, 0x2e, 0x00, 0x00, 0x0b, 0x00, 0x00, + 0xa1, 0x00, 0x39, 0x00, 0xbe, 0x00, 0x3c, 0x00, + 0xab, 0x00, 0x00, 0x00, 0xab, 0x00, 0x04, 0x01, + 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x6f, 0x20, + 0x73, 0x68, 0x6f, 0x72, 0x65, 0x00, 0x01, 0x0c, + 0x8c, 0x00, 0x68, 0x00, 0xe4, 0x00, 0x98, 0x00, + 0x8a, 0x00, 0xa3, 0x00, 0xe4, 0x00, 0x6d, 0x00, + 0x02, 0x01, 0x70, 0x61, 0x74, 0x68, 0x20, 0x61, + 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x6d, 0x61, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x00, 0x01, 0x0d, + 0xbf, 0x00, 0xa6, 0x00, 0xc8, 0x00, 0xae, 0x00, + 0x8a, 0x00, 0xa3, 0x00, 0xb5, 0x00, 0xb0, 0x00, + 0x02, 0x01, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, + 0x72, 0x00, 0x49, 0x74, 0x27, 0x73, 0x20, 0x61, + 0x20, 0x63, 0x65, 0x6c, 0x6c, 0x6f, 0x70, 0x68, + 0x61, 0x6e, 0x65, 0x20, 0x77, 0x72, 0x61, 0x70, + 0x70, 0x65, 0x72, 0x20, 0x66, 0x72, 0x6f, 0x6d, + 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x63, 0x61, + 0x6e, 0x64, 0x79, 0x00, 0x6f, 0x72, 0x20, 0x73, + 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x2e, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0xe4, 0x00, 0x98, 0x00, 0x3c, 0x00, 0xab, 0x00, + 0x3c, 0x00, 0xab, 0x00, 0x01, 0x01, 0x66, 0x6f, + 0x72, 0x65, 0x73, 0x74, 0x00, 0x49, 0x74, 0x20, + 0x67, 0x69, 0x76, 0x65, 0x73, 0x20, 0x6d, 0x65, + 0x20, 0x74, 0x68, 0x72, 0x69, 0x6c, 0x6c, 0x73, + 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x0f, 0x78, 0x00, + 0x9a, 0x00, 0x85, 0x00, 0xa0, 0x00, 0x70, 0x00, + 0xa3, 0x00, 0x70, 0x00, 0xa3, 0x00, 0x02, 0x00, + 0x62, 0x61, 0x6e, 0x6b, 0x6e, 0x6f, 0x74, 0x65, + 0x00, 0x49, 0x27, 0x6d, 0x20, 0x72, 0x65, 0x61, + 0x6c, 0x6c, 0x79, 0x20, 0x70, 0x72, 0x6f, 0x75, + 0x64, 0x20, 0x49, 0x20, 0x64, 0x69, 0x64, 0x6e, + 0x27, 0x74, 0x20, 0x54, 0x41, 0x4b, 0x45, 0x20, + 0x54, 0x48, 0x41, 0x54, 0x2e, 0x00, 0x00, 0x40, + 0x84, 0x56, 0x84, 0x87, 0x84, 0xb6, 0x84, 0xf2, + 0x84, 0x29, 0x85, 0x66, 0x85, 0x8e, 0x85, 0xb6, + 0x85, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x04, 0x01, 0x74, 0x00, 0x13, 0x01, + 0x8a, 0x00, 0x02, 0x01, 0xbd, 0x00, 0x02, 0x01, + 0xbd, 0x00, 0x01, 0x01, 0x68, 0x6f, 0x6c, 0x6c, + 0x6f, 0x77, 0x00, 0x49, 0x74, 0x27, 0x73, 0x20, + 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x72, 0x69, + 0x67, 0x68, 0x74, 0x20, 0x6e, 0x6f, 0x77, 0x2e, + 0x00, 0x00, 0x03, 0xd0, 0x00, 0x6e, 0x00, 0xf8, + 0x00, 0x7e, 0x00, 0xcb, 0x00, 0xab, 0x00, 0xcb, + 0x00, 0xab, 0x00, 0x02, 0x01, 0x62, 0x72, 0x61, + 0x6e, 0x63, 0x68, 0x00, 0x49, 0x74, 0x20, 0x63, + 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, + 0x75, 0x73, 0x65, 0x66, 0x75, 0x6c, 0x2e, 0x00, + 0x00, 0x04, 0xe4, 0x00, 0x3c, 0x00, 0x2d, 0x01, + 0xaa, 0x00, 0x02, 0x01, 0xbd, 0x00, 0xfc, 0x00, + 0xab, 0x00, 0x01, 0x01, 0x74, 0x72, 0x65, 0x65, + 0x00, 0x49, 0x74, 0x27, 0x73, 0x20, 0x68, 0x69, + 0x67, 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, + 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x61, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x61, + 0x6c, 0x6c, 0x21, 0x00, 0x00, 0x05, 0x0c, 0x00, + 0x8a, 0x00, 0x33, 0x00, 0xad, 0x00, 0x31, 0x00, + 0xac, 0x00, 0x31, 0x00, 0xac, 0x00, 0x04, 0x01, + 0x77, 0x69, 0x6c, 0x64, 0x20, 0x70, 0x6c, 0x61, + 0x6e, 0x74, 0x00, 0x49, 0x74, 0x27, 0x73, 0x20, + 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x77, 0x69, 0x6c, + 0x64, 0x20, 0x70, 0x6f, 0x74, 0x61, 0x74, 0x6f, + 0x65, 0x2e, 0x00, 0x00, 0x06, 0x00, 0x00, 0x22, + 0x00, 0x04, 0x01, 0xa0, 0x00, 0xa6, 0x00, 0xbd, + 0x00, 0xa6, 0x00, 0xbd, 0x00, 0x01, 0x01, 0x77, + 0x61, 0x6c, 0x6c, 0x00, 0x49, 0x74, 0x27, 0x73, + 0x20, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x65, 0x64, + 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x73, 0x6f, + 0x6d, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, + 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x2e, 0x00, + 0x00, 0x07, 0x25, 0x01, 0x5c, 0x00, 0x3f, 0x01, + 0xaa, 0x00, 0x2a, 0x01, 0xaf, 0x00, 0x3f, 0x01, + 0x98, 0x00, 0x01, 0x01, 0x70, 0x61, 0x74, 0x68, + 0x20, 0x61, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, + 0x6d, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x00, + 0x01, 0x08, 0x00, 0x00, 0xae, 0x00, 0x3c, 0x00, + 0xc7, 0x00, 0x1e, 0x00, 0xbd, 0x00, 0x00, 0x00, + 0xbd, 0x00, 0x04, 0x01, 0x70, 0x61, 0x74, 0x68, + 0x20, 0x61, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, + 0x6d, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x00, + 0x01, 0x09, 0xd0, 0x00, 0x9c, 0x00, 0xec, 0x00, + 0xa8, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x62, 0x72, 0x61, 0x6e, + 0x63, 0x68, 0x00, 0x47, 0x6f, 0x74, 0x63, 0x68, + 0x61, 0x2e, 0x00, 0x00, 0xe9, 0x85, 0x0d, 0x86, + 0x42, 0x86, 0x6a, 0x86, 0xa7, 0x86, 0xcf, 0x86, + 0x07, 0x87, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x31, 0x00, 0x9d, 0x00, 0x12, 0x00, 0xad, + 0x00, 0x12, 0x00, 0xad, 0x00, 0x01, 0x01, 0x74, + 0x72, 0x65, 0x65, 0x00, 0x49, 0x74, 0x27, 0x73, + 0x20, 0x68, 0x69, 0x67, 0x68, 0x2e, 0x00, 0x00, + 0x02, 0xf6, 0x00, 0x7c, 0x00, 0x35, 0x01, 0xa6, + 0x00, 0x05, 0x01, 0xb7, 0x00, 0x05, 0x01, 0xb7, + 0x00, 0x01, 0x01, 0x77, 0x69, 0x6c, 0x64, 0x20, + 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x00, 0x4f, 0x72, + 0x64, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x20, 0x67, + 0x72, 0x65, 0x65, 0x6e, 0x20, 0x73, 0x74, 0x75, + 0x66, 0x66, 0x2e, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x9e, 0x00, 0x2f, 0x00, 0xba, 0x00, 0x12, 0x00, + 0xad, 0x00, 0x00, 0x00, 0xac, 0x00, 0x04, 0x01, + 0x70, 0x61, 0x74, 0x68, 0x20, 0x61, 0x72, 0x6f, + 0x75, 0x6e, 0x64, 0x20, 0x6d, 0x61, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x00, 0x01, 0x04, 0x00, 0x00, + 0x20, 0x00, 0x3f, 0x01, 0xa6, 0x00, 0xc5, 0x00, + 0xb7, 0x00, 0xc5, 0x00, 0xb7, 0x00, 0x01, 0x01, + 0x77, 0x61, 0x6c, 0x6c, 0x00, 0x49, 0x74, 0x27, + 0x73, 0x20, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x65, + 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x73, + 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x20, 0x73, 0x6d, 0x6f, 0x6f, 0x74, 0x68, 0x2e, + 0x00, 0x00, 0x05, 0x06, 0x01, 0xa6, 0x00, 0x3f, + 0x01, 0xc7, 0x00, 0x05, 0x01, 0xb7, 0x00, 0x3f, + 0x01, 0xb5, 0x00, 0x02, 0x01, 0x70, 0x61, 0x74, + 0x68, 0x20, 0x61, 0x72, 0x6f, 0x75, 0x6e, 0x64, + 0x20, 0x6d, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x00, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x67, 0x00, 0xc0, 0x00, 0x67, + 0x00, 0xc0, 0x00, 0x04, 0x01, 0x68, 0x65, 0x64, + 0x67, 0x65, 0x68, 0x6f, 0x67, 0x00, 0x49, 0x73, + 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x20, 0x63, + 0x6f, 0x6e, 0x65, 0x20, 0x6f, 0x6e, 0x20, 0x69, + 0x74, 0x73, 0x20, 0x62, 0x61, 0x63, 0x6b, 0x2e, + 0x00, 0x00, 0x07, 0xdb, 0x00, 0xba, 0x00, 0xeb, + 0x00, 0xc3, 0x00, 0xd7, 0x00, 0xc3, 0x00, 0xd7, + 0x00, 0xc3, 0x00, 0x02, 0x01, 0x72, 0x6f, 0x63, + 0x6b, 0x00, 0x01, 0x2c, 0x87, 0x59, 0x87, 0x7f, + 0x87, 0xac, 0x87, 0xe2, 0x87, 0x00, 0x00, 0x01, + 0xb2, 0x00, 0x24, 0x00, 0xbe, 0x00, 0x36, 0x00, + 0xbc, 0x00, 0x96, 0x00, 0xbc, 0x00, 0x96, 0x00, + 0x01, 0x01, 0x62, 0x65, 0x65, 0x73, 0x20, 0x6e, + 0x65, 0x73, 0x74, 0x00, 0x48, 0x6f, 0x6e, 0x65, + 0x79, 0x20, 0x62, 0x61, 0x6c, 0x6c, 0x6f, 0x6f, + 0x6e, 0x2e, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x96, + 0x00, 0xbc, 0x00, 0x96, 0x00, 0x01, 0x01, 0x62, + 0x65, 0x65, 0x73, 0x00, 0x49, 0x20, 0x48, 0x41, + 0x54, 0x45, 0x20, 0x54, 0x48, 0x45, 0x4d, 0x21, + 0x00, 0x00, 0x03, 0x1c, 0x00, 0x5d, 0x00, 0x72, + 0x00, 0xc1, 0x00, 0x3f, 0x00, 0xc3, 0x00, 0x3f, + 0x00, 0xc3, 0x00, 0x01, 0x01, 0x62, 0x75, 0x73, + 0x68, 0x00, 0x4e, 0x69, 0x63, 0x65, 0x20, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x20, 0x74, 0x6f, 0x20, + 0x68, 0x69, 0x64, 0x65, 0x2e, 0x00, 0x00, 0x04, + 0xa6, 0x00, 0x76, 0x00, 0xe6, 0x00, 0x8d, 0x00, + 0xbc, 0x00, 0x96, 0x00, 0xbc, 0x00, 0x96, 0x00, + 0x01, 0x01, 0x76, 0x61, 0x6c, 0x76, 0x65, 0x00, + 0x49, 0x74, 0x27, 0x73, 0x20, 0x72, 0x75, 0x73, + 0x74, 0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x68, + 0x61, 0x73, 0x20, 0x6e, 0x6f, 0x20, 0x6c, 0x6f, + 0x63, 0x6b, 0x2e, 0x00, 0x00, 0x05, 0xd6, 0x00, + 0xb4, 0x00, 0x3f, 0x01, 0xc7, 0x00, 0xdb, 0x00, + 0xb7, 0x00, 0x0e, 0x01, 0xc7, 0x00, 0x02, 0x01, + 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x6f, 0x20, + 0x6d, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x00, + 0x01, 0x18, 0x88, 0x6f, 0x88, 0xad, 0x88, 0xf4, + 0x88, 0x40, 0x89, 0x6e, 0x89, 0x92, 0x89, 0xb6, + 0x89, 0x00, 0x00, 0x01, 0x90, 0x00, 0x0f, 0x00, + 0xa3, 0x00, 0x1d, 0x00, 0x9d, 0x00, 0xb4, 0x00, + 0x9d, 0x00, 0xb4, 0x00, 0x01, 0x01, 0x66, 0x6c, + 0x6f, 0x77, 0x65, 0x72, 0x00, 0x49, 0x74, 0x27, + 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x6f, + 0x73, 0x74, 0x20, 0x62, 0x65, 0x61, 0x75, 0x74, + 0x69, 0x66, 0x75, 0x6c, 0x20, 0x66, 0x6c, 0x6f, + 0x77, 0x65, 0x72, 0x20, 0x49, 0x27, 0x76, 0x65, + 0x20, 0x73, 0x65, 0x65, 0x6e, 0x00, 0x69, 0x6e, + 0x20, 0x6d, 0x79, 0x20, 0x65, 0x6e, 0x74, 0x69, + 0x72, 0x65, 0x20, 0x6c, 0x69, 0x66, 0x65, 0x21, + 0x00, 0x00, 0x02, 0x69, 0x00, 0x00, 0x00, 0xcf, + 0x00, 0x27, 0x00, 0x9d, 0x00, 0xb4, 0x00, 0x9d, + 0x00, 0xb4, 0x00, 0x01, 0x01, 0x69, 0x73, 0x6c, + 0x65, 0x00, 0x4e, 0x65, 0x61, 0x74, 0x20, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x20, 0x74, 0x6f, 0x20, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x65, 0x63, + 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, + 0x20, 0x6c, 0x69, 0x66, 0x65, 0x2e, 0x00, 0x00, + 0x03, 0x3c, 0x00, 0x88, 0x00, 0x7b, 0x00, 0xa7, + 0x00, 0x6b, 0x00, 0xa9, 0x00, 0x6b, 0x00, 0xa9, + 0x00, 0x04, 0x01, 0x62, 0x6f, 0x61, 0x74, 0x00, + 0x49, 0x20, 0x63, 0x61, 0x6e, 0x27, 0x74, 0x20, + 0x62, 0x65, 0x6c, 0x69, 0x65, 0x76, 0x65, 0x20, + 0x69, 0x74, 0x2c, 0x20, 0x62, 0x75, 0x74, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x62, 0x6f, 0x61, 0x74, + 0x20, 0x68, 0x61, 0x73, 0x20, 0x6e, 0x6f, 0x20, + 0x68, 0x6f, 0x6c, 0x65, 0x2e, 0x00, 0x00, 0x04, + 0xec, 0x00, 0xa4, 0x00, 0x20, 0x01, 0xc3, 0x00, + 0xec, 0x00, 0xb3, 0x00, 0xec, 0x00, 0xb3, 0x00, + 0x03, 0x01, 0x77, 0x65, 0x6c, 0x6c, 0x00, 0x49, + 0x20, 0x72, 0x65, 0x66, 0x75, 0x73, 0x65, 0x20, + 0x74, 0x6f, 0x20, 0x74, 0x65, 0x6c, 0x6c, 0x20, + 0x63, 0x68, 0x65, 0x61, 0x70, 0x20, 0x6a, 0x6f, + 0x6b, 0x65, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, + 0x00, 0x74, 0x68, 0x65, 0x20, 0x77, 0x6f, 0x72, + 0x64, 0x20, 0x22, 0x77, 0x65, 0x6c, 0x6c, 0x22, + 0x2e, 0x00, 0x00, 0x05, 0xdd, 0x00, 0x96, 0x00, + 0xe8, 0x00, 0xa2, 0x00, 0xc8, 0x00, 0xb3, 0x00, + 0xc8, 0x00, 0xb3, 0x00, 0x02, 0x01, 0x68, 0x61, + 0x6e, 0x64, 0x6c, 0x65, 0x00, 0x49, 0x20, 0x63, + 0x61, 0x6e, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, + 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x00, + 0x00, 0x06, 0x88, 0x00, 0xb7, 0x00, 0xa5, 0x00, + 0xc7, 0x00, 0x9d, 0x00, 0xb4, 0x00, 0x99, 0x00, + 0xc7, 0x00, 0x03, 0x01, 0x70, 0x61, 0x74, 0x68, + 0x20, 0x74, 0x6f, 0x20, 0x76, 0x69, 0x6c, 0x6c, + 0x61, 0x67, 0x65, 0x00, 0x01, 0x07, 0x25, 0x01, + 0x96, 0x00, 0x3f, 0x01, 0xb6, 0x00, 0x06, 0x01, + 0xb0, 0x00, 0x3f, 0x01, 0xa2, 0x00, 0x02, 0x01, + 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x6f, 0x20, + 0x6d, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x00, + 0x01, 0x08, 0x00, 0x00, 0x96, 0x00, 0x20, 0x00, + 0xb5, 0x00, 0x1e, 0x00, 0xac, 0x00, 0x00, 0x00, + 0xac, 0x00, 0x04, 0x01, 0x70, 0x61, 0x74, 0x68, + 0x20, 0x74, 0x6f, 0x20, 0x66, 0x6f, 0x72, 0x65, + 0x73, 0x74, 0x00, 0x01, 0xe1, 0x89, 0x0c, 0x8a, + 0x3c, 0x8a, 0x00, 0x00, 0x01, 0x7d, 0x00, 0x3b, + 0x00, 0x8c, 0x00, 0x59, 0x00, 0x7b, 0x00, 0x5e, + 0x00, 0x7b, 0x00, 0x5e, 0x00, 0x02, 0x01, 0x66, + 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x00, 0x49, 0x74, + 0x27, 0x73, 0x20, 0x62, 0x65, 0x61, 0x75, 0x74, + 0x69, 0x66, 0x75, 0x6c, 0x21, 0x00, 0x00, 0x02, + 0x8d, 0x00, 0x3b, 0x00, 0x9e, 0x00, 0x57, 0x00, + 0xa0, 0x00, 0x5a, 0x00, 0xa0, 0x00, 0x5a, 0x00, + 0x04, 0x01, 0x66, 0x6c, 0x6f, 0x77, 0x65, 0x72, + 0x00, 0x49, 0x74, 0x20, 0x73, 0x6d, 0x65, 0x6c, + 0x6c, 0x73, 0x20, 0x76, 0x65, 0x72, 0x79, 0x20, + 0x6e, 0x69, 0x63, 0x65, 0x21, 0x00, 0x00, 0x03, + 0xd2, 0x00, 0x4c, 0x00, 0x38, 0x01, 0x7b, 0x00, + 0xec, 0x00, 0x5f, 0x00, 0xec, 0x00, 0x5f, 0x00, + 0x03, 0x01, 0x62, 0x6f, 0x61, 0x74, 0x00, 0x4e, + 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x6e, + 0x65, 0x77, 0x2e, 0x20, 0x4c, 0x69, 0x74, 0x65, + 0x72, 0x61, 0x6c, 0x6c, 0x79, 0x2e, 0x00, 0x00, + 0x87, 0x8a, 0xa1, 0x8a, 0xbb, 0x8a, 0xd2, 0x8a, + 0xe9, 0x8a, 0x05, 0x8b, 0x3c, 0x8b, 0x1f, 0x8b, + 0x59, 0x8b, 0x76, 0x8b, 0x93, 0x8b, 0xae, 0x8b, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x01, 0x66, 0x69, 0x73, + 0x68, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x66, + 0x69, 0x73, 0x68, 0x00, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x3f, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x3f, 0x00, 0x00, 0x00, 0x05, 0x21, 0x00, 0xb1, + 0x00, 0x2b, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x61, + 0x6e, 0x63, 0x68, 0x6f, 0x72, 0x00, 0x00, 0x00, + 0x06, 0x29, 0x00, 0x90, 0x00, 0x99, 0x00, 0xba, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x01, 0x62, 0x6f, 0x61, 0x74, 0x00, + 0x00, 0x00, 0x08, 0x0f, 0x00, 0x90, 0x00, 0x2d, + 0x00, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x02, 0x01, 0x73, 0x65, 0x61, + 0x77, 0x65, 0x65, 0x64, 0x00, 0x00, 0x00, 0x07, + 0x00, 0x00, 0x56, 0x00, 0x22, 0x00, 0x97, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x01, 0x73, 0x65, 0x61, 0x77, 0x65, 0x65, + 0x64, 0x00, 0x00, 0x00, 0x09, 0xce, 0x00, 0xa3, + 0x00, 0xfc, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x73, + 0x65, 0x61, 0x77, 0x65, 0x65, 0x64, 0x00, 0x00, + 0x00, 0x0a, 0xde, 0x00, 0x3c, 0x00, 0x08, 0x01, + 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x01, 0x73, 0x65, 0x61, 0x77, + 0x65, 0x65, 0x64, 0x00, 0x00, 0x00, 0x0b, 0x98, + 0x00, 0x96, 0x00, 0xbb, 0x00, 0xb5, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x01, 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x00, 0x00, + 0x00, 0x0c, 0x68, 0x00, 0x7a, 0x00, 0xe0, 0x00, + 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x02, 0x01, 0x73, 0x74, 0x6f, 0x6e, + 0x65, 0x73, 0x00, 0x00, 0x00, 0xda, 0x8b, 0x01, + 0x8c, 0x39, 0x8c, 0x63, 0x8c, 0x90, 0x8c, 0xb2, + 0x8c, 0xd2, 0x8c, 0x00, 0x00, 0x01, 0xbd, 0x00, + 0xaf, 0x00, 0x3f, 0x01, 0xc7, 0x00, 0xc9, 0x00, + 0xc0, 0x00, 0xec, 0x00, 0xc7, 0x00, 0x02, 0x01, + 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x6f, 0x20, + 0x6c, 0x61, 0x6b, 0x65, 0x20, 0x73, 0x68, 0x6f, + 0x72, 0x65, 0x00, 0x01, 0x02, 0x37, 0x00, 0x50, + 0x00, 0x50, 0x00, 0x69, 0x00, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x04, 0x01, 0x64, + 0x6f, 0x6f, 0x72, 0x00, 0x54, 0x68, 0x65, 0x72, + 0x65, 0x27, 0x73, 0x20, 0x6e, 0x6f, 0x20, 0x6e, + 0x61, 0x6d, 0x65, 0x20, 0x6f, 0x6e, 0x20, 0x74, + 0x68, 0x65, 0x00, 0x64, 0x6f, 0x6f, 0x72, 0x2e, + 0x2e, 0x2e, 0x00, 0x00, 0x03, 0x67, 0x00, 0x46, + 0x00, 0x85, 0x00, 0x5d, 0x00, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x01, 0x77, + 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x00, 0x49, + 0x20, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x20, + 0x44, 0x4f, 0x53, 0x2e, 0x00, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc9, + 0x00, 0xc0, 0x00, 0xc9, 0x00, 0xc0, 0x00, 0x01, + 0x01, 0x73, 0x71, 0x75, 0x69, 0x72, 0x72, 0x65, + 0x6c, 0x00, 0x49, 0x74, 0x27, 0x73, 0x20, 0x76, + 0x65, 0x72, 0x79, 0x20, 0x66, 0x61, 0x73, 0x74, + 0x2e, 0x00, 0x00, 0x05, 0x92, 0x00, 0x35, 0x00, + 0x99, 0x00, 0x3c, 0x00, 0xc9, 0x00, 0xc0, 0x00, + 0xc9, 0x00, 0xc0, 0x00, 0x01, 0x01, 0x6e, 0x75, + 0x74, 0x00, 0x49, 0x74, 0x27, 0x73, 0x20, 0x62, + 0x69, 0x67, 0x2e, 0x00, 0x00, 0x06, 0x8c, 0x00, + 0xbb, 0x00, 0x92, 0x00, 0xc1, 0x00, 0x9c, 0x00, + 0xc2, 0x00, 0x9c, 0x00, 0xc2, 0x00, 0x04, 0x00, + 0x6e, 0x75, 0x74, 0x00, 0x47, 0x6f, 0x74, 0x63, + 0x68, 0x61, 0x2e, 0x00, 0x00, 0x07, 0x48, 0x00, + 0xb4, 0x00, 0xaa, 0x00, 0xc7, 0x00, 0xa2, 0x00, + 0xc2, 0x00, 0xa2, 0x00, 0xc2, 0x00, 0x04, 0x01, + 0x67, 0x72, 0x61, 0x73, 0x73, 0x00, 0x01, 0x0c, + 0x8d, 0x28, 0x8d, 0x6f, 0x8d, 0xcb, 0x8d, 0xe8, + 0x8d, 0x22, 0x8e, 0x3f, 0x8e, 0x5e, 0x8e, 0x99, + 0x8e, 0xd7, 0x8e, 0x12, 0x8f, 0x2c, 0x8f, 0x54, + 0x8f, 0x71, 0x8f, 0xcc, 0x8f, 0x00, 0x00, 0x01, + 0x90, 0x00, 0xbd, 0x00, 0x3f, 0x01, 0xc7, 0x00, + 0xdf, 0x00, 0xc1, 0x00, 0xdf, 0x00, 0xc7, 0x00, + 0x03, 0x01, 0x77, 0x61, 0x79, 0x20, 0x6f, 0x75, + 0x74, 0x00, 0x01, 0x02, 0xcc, 0x00, 0x75, 0x00, + 0xe0, 0x00, 0x83, 0x00, 0xd8, 0x00, 0xa7, 0x00, + 0xd8, 0x00, 0xa7, 0x00, 0x01, 0x01, 0x68, 0x6f, + 0x72, 0x6e, 0x00, 0x49, 0x74, 0x20, 0x6d, 0x75, + 0x73, 0x74, 0x20, 0x6d, 0x61, 0x6b, 0x65, 0x20, + 0x61, 0x20, 0x62, 0x69, 0x67, 0x20, 0x69, 0x6d, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x20, 0x6f, 0x6e, 0x00, 0x74, 0x68, 0x65, 0x20, + 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x2e, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x47, 0x00, 0x1c, + 0x00, 0x94, 0x00, 0x51, 0x00, 0xa7, 0x00, 0x51, + 0x00, 0xa7, 0x00, 0x04, 0x01, 0x77, 0x69, 0x6e, + 0x64, 0x6f, 0x77, 0x00, 0x49, 0x27, 0x6d, 0x20, + 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x75, 0x72, 0x65, + 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x20, 0x73, + 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x6e, 0x27, 0x74, + 0x20, 0x62, 0x65, 0x20, 0x6f, 0x6e, 0x00, 0x74, + 0x68, 0x65, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, + 0x20, 0x73, 0x69, 0x64, 0x65, 0x20, 0x6f, 0x66, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x61, 0x6c, + 0x6c, 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x04, 0x2e, + 0x00, 0x86, 0x00, 0x72, 0x00, 0x98, 0x00, 0x4e, + 0x00, 0xa4, 0x00, 0x4e, 0x00, 0xa4, 0x00, 0x01, + 0x01, 0x63, 0x75, 0x70, 0x62, 0x6f, 0x61, 0x72, + 0x64, 0x00, 0x01, 0x05, 0x81, 0x00, 0x67, 0x00, + 0x9a, 0x00, 0x70, 0x00, 0x8b, 0x00, 0xa5, 0x00, + 0x8b, 0x00, 0xa5, 0x00, 0x01, 0x01, 0x68, 0x65, + 0x61, 0x72, 0x74, 0x2d, 0x73, 0x68, 0x61, 0x70, + 0x65, 0x64, 0x20, 0x68, 0x6f, 0x6c, 0x65, 0x00, + 0x57, 0x68, 0x61, 0x74, 0x20, 0x61, 0x20, 0x6c, + 0x6f, 0x76, 0x65, 0x6c, 0x79, 0x20, 0x68, 0x6f, + 0x6c, 0x65, 0x2e, 0x00, 0x00, 0x06, 0x7d, 0x00, + 0x8c, 0x00, 0x9e, 0x00, 0x9b, 0x00, 0x8f, 0x00, + 0xa4, 0x00, 0x8f, 0x00, 0xa4, 0x00, 0x01, 0x01, + 0x63, 0x75, 0x70, 0x62, 0x6f, 0x61, 0x72, 0x64, + 0x00, 0x01, 0x07, 0x89, 0x00, 0x06, 0x00, 0xb6, + 0x00, 0x29, 0x00, 0xa2, 0x00, 0xbb, 0x00, 0xa2, + 0x00, 0xbb, 0x00, 0x01, 0x01, 0x63, 0x68, 0x61, + 0x6e, 0x64, 0x65, 0x6c, 0x69, 0x65, 0x72, 0x00, + 0x01, 0x08, 0x13, 0x01, 0x5e, 0x00, 0x3f, 0x01, + 0x81, 0x00, 0xd8, 0x00, 0xa7, 0x00, 0xd8, 0x00, + 0xa7, 0x00, 0x02, 0x01, 0x70, 0x69, 0x63, 0x74, + 0x75, 0x72, 0x65, 0x00, 0x49, 0x74, 0x20, 0x6c, + 0x6f, 0x6f, 0x6b, 0x73, 0x20, 0x61, 0x6c, 0x6d, + 0x6f, 0x73, 0x74, 0x20, 0x6c, 0x69, 0x6b, 0x65, + 0x20, 0x61, 0x20, 0x77, 0x69, 0x6e, 0x64, 0x6f, + 0x77, 0x2e, 0x00, 0x00, 0x09, 0x11, 0x01, 0x8c, + 0x00, 0x25, 0x01, 0xb7, 0x00, 0x0e, 0x01, 0xb6, + 0x00, 0x0e, 0x01, 0xb6, 0x00, 0x02, 0x01, 0x66, + 0x69, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, + 0x00, 0x54, 0x68, 0x65, 0x72, 0x65, 0x27, 0x73, + 0x20, 0x61, 0x20, 0x6c, 0x6f, 0x74, 0x20, 0x6f, + 0x66, 0x20, 0x73, 0x6f, 0x6f, 0x74, 0x20, 0x69, + 0x6e, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x2e, + 0x00, 0x00, 0x0a, 0xb9, 0x00, 0x60, 0x00, 0xe8, + 0x00, 0x83, 0x00, 0xd8, 0x00, 0xa7, 0x00, 0xd8, + 0x00, 0xa7, 0x00, 0x01, 0x01, 0x67, 0x75, 0x6e, + 0x73, 0x00, 0x54, 0x68, 0x65, 0x79, 0x20, 0x61, + 0x72, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, + 0x70, 0x6c, 0x61, 0x73, 0x74, 0x69, 0x63, 0x20, + 0x69, 0x6d, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x00, 0x00, 0x0b, 0x37, 0x00, + 0xa5, 0x00, 0x8c, 0x00, 0xc7, 0x00, 0x51, 0x00, + 0xa7, 0x00, 0x51, 0x00, 0xa7, 0x00, 0x03, 0x01, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x00, 0x01, 0x0c, + 0x68, 0x00, 0x71, 0x00, 0x6f, 0x00, 0x77, 0x00, + 0x6d, 0x00, 0xa4, 0x00, 0x6d, 0x00, 0xa4, 0x00, + 0x01, 0x01, 0x72, 0x6f, 0x74, 0x74, 0x65, 0x6e, + 0x20, 0x63, 0x68, 0x65, 0x65, 0x73, 0x65, 0x00, + 0x50, 0x66, 0x75, 0x69, 0x21, 0x00, 0x00, 0x0d, + 0xa9, 0x00, 0x2f, 0x00, 0x3f, 0x01, 0x5d, 0x00, + 0xd8, 0x00, 0xa7, 0x00, 0xd8, 0x00, 0xa7, 0x00, + 0x01, 0x01, 0x74, 0x72, 0x6f, 0x70, 0x68, 0x69, + 0x65, 0x73, 0x00, 0x01, 0x0e, 0xa2, 0x00, 0x8b, + 0x00, 0xb6, 0x00, 0xa9, 0x00, 0xc1, 0x00, 0xa4, + 0x00, 0xc1, 0x00, 0xa4, 0x00, 0x04, 0x01, 0x63, + 0x68, 0x61, 0x69, 0x6e, 0x73, 0x61, 0x77, 0x00, + 0x49, 0x20, 0x64, 0x6f, 0x6e, 0x27, 0x74, 0x20, + 0x6b, 0x6e, 0x6f, 0x77, 0x20, 0x77, 0x68, 0x79, + 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 0x74, 0x20, + 0x72, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x73, 0x20, + 0x6f, 0x66, 0x00, 0x73, 0x6f, 0x6d, 0x65, 0x20, + 0x54, 0x65, 0x78, 0x61, 0x73, 0x20, 0x67, 0x75, + 0x79, 0x20, 0x49, 0x20, 0x6d, 0x65, 0x74, 0x20, + 0x6f, 0x6e, 0x63, 0x65, 0x2e, 0x00, 0x00, 0x0f, + 0x2d, 0x00, 0x6c, 0x00, 0x72, 0x00, 0x84, 0x00, + 0x51, 0x00, 0xa7, 0x00, 0x51, 0x00, 0xa7, 0x00, + 0x01, 0x01, 0x70, 0x6f, 0x72, 0x63, 0x65, 0x6c, + 0x61, 0x69, 0x6e, 0x00, 0x49, 0x27, 0x6d, 0x20, + 0x61, 0x66, 0x72, 0x61, 0x69, 0x64, 0x20, 0x65, + 0x76, 0x65, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x62, + 0x72, 0x65, 0x61, 0x74, 0x68, 0x20, 0x61, 0x72, + 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, + 0x73, 0x65, 0x00, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x00, 0x00, 0x3b, 0x90, 0x67, 0x90, + 0xaf, 0x90, 0x01, 0x91, 0x55, 0x91, 0x6e, 0x91, + 0xc0, 0x91, 0xdb, 0x91, 0xf6, 0x91, 0x17, 0x92, + 0x38, 0x92, 0x51, 0x92, 0x73, 0x92, 0xf8, 0x92, + 0x20, 0x93, 0x52, 0x93, 0x00, 0x00, 0x01, 0x1d, + 0x01, 0x87, 0x00, 0x3b, 0x01, 0xaa, 0x00, 0x16, + 0x01, 0xbd, 0x00, 0x16, 0x01, 0xbd, 0x00, 0x02, + 0x01, 0x63, 0x61, 0x72, 0x20, 0x64, 0x6f, 0x6f, + 0x72, 0x00, 0x49, 0x74, 0x27, 0x73, 0x20, 0x75, + 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x2e, + 0x00, 0x00, 0x02, 0xbf, 0x00, 0x88, 0x00, 0xe6, + 0x00, 0x9c, 0x00, 0xa8, 0x00, 0xb3, 0x00, 0xa8, + 0x00, 0xb3, 0x00, 0x02, 0x01, 0x74, 0x72, 0x75, + 0x6e, 0x6b, 0x00, 0x54, 0x68, 0x65, 0x72, 0x65, + 0x27, 0x73, 0x20, 0x61, 0x6c, 0x77, 0x61, 0x79, + 0x73, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x74, 0x68, + 0x69, 0x6e, 0x67, 0x20, 0x75, 0x73, 0x65, 0x66, + 0x75, 0x6c, 0x00, 0x69, 0x6e, 0x20, 0x61, 0x20, + 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x2e, 0x2e, 0x2e, + 0x00, 0x00, 0x03, 0x50, 0x00, 0x47, 0x00, 0x64, + 0x00, 0x51, 0x00, 0x51, 0x00, 0xb5, 0x00, 0x51, + 0x00, 0xb5, 0x00, 0x01, 0x01, 0x62, 0x61, 0x73, + 0x6b, 0x65, 0x74, 0x00, 0x49, 0x74, 0x20, 0x67, + 0x69, 0x76, 0x65, 0x73, 0x20, 0x6d, 0x65, 0x20, + 0x61, 0x6d, 0x62, 0x69, 0x76, 0x61, 0x6c, 0x65, + 0x6e, 0x74, 0x20, 0x66, 0x65, 0x65, 0x6c, 0x69, + 0x6e, 0x67, 0x73, 0x3a, 0x00, 0x72, 0x65, 0x6d, + 0x69, 0x6e, 0x64, 0x73, 0x20, 0x6d, 0x65, 0x20, + 0x6f, 0x66, 0x20, 0x73, 0x63, 0x68, 0x6f, 0x6f, + 0x6c, 0x2e, 0x00, 0x00, 0x04, 0x65, 0x00, 0x3c, + 0x00, 0x69, 0x00, 0xa0, 0x00, 0x65, 0x00, 0xb5, + 0x00, 0x65, 0x00, 0xb5, 0x00, 0x01, 0x01, 0x70, + 0x6f, 0x6c, 0x65, 0x00, 0x41, 0x62, 0x6f, 0x75, + 0x74, 0x20, 0x34, 0x20, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x6d, + 0x65, 0x74, 0x61, 0x6c, 0x20, 0x70, 0x6f, 0x6c, + 0x65, 0x00, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, + 0x20, 0x62, 0x61, 0x73, 0x6b, 0x65, 0x74, 0x20, + 0x73, 0x63, 0x72, 0x65, 0x77, 0x65, 0x64, 0x20, + 0x74, 0x6f, 0x20, 0x69, 0x74, 0x2e, 0x00, 0x00, + 0x05, 0x90, 0x00, 0x5a, 0x00, 0xb7, 0x00, 0x9f, + 0x00, 0xa1, 0x00, 0xa5, 0x00, 0xa1, 0x00, 0xa5, + 0x00, 0x01, 0x01, 0x64, 0x6f, 0x6f, 0x72, 0x00, + 0x01, 0x06, 0xbe, 0x00, 0x71, 0x00, 0xc5, 0x00, + 0x7c, 0x00, 0xa1, 0x00, 0xa5, 0x00, 0xa1, 0x00, + 0xa5, 0x00, 0x02, 0x01, 0x64, 0x6f, 0x6f, 0x72, + 0x2d, 0x62, 0x65, 0x6c, 0x6c, 0x00, 0x4f, 0x6e, + 0x65, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x75, 0x73, + 0x65, 0x20, 0x69, 0x74, 0x20, 0x74, 0x6f, 0x20, + 0x73, 0x63, 0x61, 0x72, 0x65, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x70, 0x65, 0x6f, 0x70, 0x6c, 0x65, + 0x00, 0x62, 0x65, 0x68, 0x69, 0x6e, 0x64, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x64, 0x6f, 0x6f, 0x72, + 0x2e, 0x00, 0x00, 0x07, 0xd0, 0x00, 0x4b, 0x00, + 0xfd, 0x00, 0x7e, 0x00, 0xa9, 0x00, 0xae, 0x00, + 0xa9, 0x00, 0xae, 0x00, 0x02, 0x01, 0x77, 0x69, + 0x6e, 0x64, 0x6f, 0x77, 0x00, 0x01, 0x08, 0x10, + 0x01, 0x4b, 0x00, 0x3d, 0x01, 0x7d, 0x00, 0xa9, + 0x00, 0xae, 0x00, 0xa9, 0x00, 0xae, 0x00, 0x02, + 0x01, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x00, + 0x01, 0x09, 0x4b, 0x00, 0x02, 0x00, 0x58, 0x00, + 0x1b, 0x00, 0x51, 0x00, 0xb5, 0x00, 0x51, 0x00, + 0xb5, 0x00, 0x01, 0x01, 0x61, 0x74, 0x74, 0x69, + 0x63, 0x20, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, + 0x00, 0x01, 0x0a, 0x00, 0x00, 0xaa, 0x00, 0x21, + 0x00, 0xc7, 0x00, 0x30, 0x00, 0xbb, 0x00, 0x00, + 0x00, 0xbb, 0x00, 0x04, 0x01, 0x70, 0x61, 0x74, + 0x68, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x61, 0x6b, + 0x65, 0x00, 0x01, 0x0b, 0x17, 0x01, 0xaa, 0x00, + 0x3f, 0x01, 0xc7, 0x00, 0x21, 0x01, 0xbe, 0x00, + 0x3f, 0x01, 0xbe, 0x00, 0x02, 0x01, 0x70, 0x61, + 0x74, 0x68, 0x00, 0x01, 0x0c, 0x00, 0x00, 0x74, + 0x00, 0x1c, 0x00, 0xa9, 0x00, 0x30, 0x00, 0xbb, + 0x00, 0x05, 0x00, 0x83, 0x00, 0x01, 0x01, 0x70, + 0x61, 0x74, 0x68, 0x20, 0x74, 0x6f, 0x20, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x00, 0x01, 0x0d, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, + 0x00, 0xbb, 0x00, 0x40, 0x00, 0xbb, 0x00, 0x01, + 0x01, 0x62, 0x6f, 0x79, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x48, 0x65, 0x27, 0x73, 0x20, + 0x74, 0x72, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x68, + 0x61, 0x72, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x2c, 0x00, 0x62, 0x75, + 0x74, 0x20, 0x68, 0x65, 0x27, 0x73, 0x20, 0x74, + 0x6f, 0x6f, 0x20, 0x77, 0x65, 0x61, 0x6b, 0x20, + 0x74, 0x6f, 0x20, 0x74, 0x68, 0x72, 0x6f, 0x77, + 0x00, 0x74, 0x68, 0x65, 0x20, 0x62, 0x61, 0x6c, + 0x6c, 0x20, 0x68, 0x69, 0x67, 0x68, 0x20, 0x65, + 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x21, 0x00, 0x00, + 0x53, 0x6f, 0x6e, 0x6e, 0x79, 0x20, 0x6f, 0x72, + 0x20, 0x77, 0x68, 0x61, 0x74, 0x65, 0x76, 0x65, + 0x72, 0x00, 0xff, 0x0e, 0x1d, 0x01, 0x91, 0x00, + 0x23, 0x01, 0x9b, 0x00, 0x16, 0x01, 0xbd, 0x00, + 0x16, 0x01, 0xbd, 0x00, 0x02, 0x00, 0x63, 0x6f, + 0x6d, 0x62, 0x00, 0x53, 0x74, 0x72, 0x61, 0x6e, + 0x67, 0x65, 0x20, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x2e, 0x00, 0x00, 0x0f, 0x1e, 0x01, 0xa5, 0x00, + 0x24, 0x01, 0xa9, 0x00, 0x16, 0x01, 0xbd, 0x00, + 0x16, 0x01, 0xbd, 0x00, 0x02, 0x00, 0x6c, 0x65, + 0x76, 0x65, 0x72, 0x00, 0x49, 0x20, 0x77, 0x6f, + 0x6e, 0x64, 0x65, 0x72, 0x20, 0x77, 0x68, 0x61, + 0x74, 0x00, 0x69, 0x74, 0x27, 0x73, 0x20, 0x66, + 0x6f, 0x72, 0x3f, 0x00, 0x00, 0x10, 0x26, 0x01, + 0x85, 0x00, 0x3b, 0x01, 0xac, 0x00, 0x16, 0x01, + 0xbd, 0x00, 0x16, 0x01, 0xbd, 0x00, 0x02, 0x00, + 0x63, 0x61, 0x72, 0x20, 0x64, 0x6f, 0x6f, 0x72, + 0x00, 0x01, 0x89, 0x93, 0xa2, 0x93, 0xc3, 0x93, + 0xdc, 0x93, 0x27, 0x94, 0x42, 0x94, 0x5d, 0x94, + 0x78, 0x94, 0xa6, 0x94, 0xda, 0x94, 0xfa, 0x94, + 0x13, 0x95, 0x00, 0x00, 0x01, 0x00, 0x00, 0xac, + 0x00, 0x2b, 0x00, 0xc3, 0x00, 0x30, 0x00, 0xbe, + 0x00, 0x00, 0x00, 0xbb, 0x00, 0x04, 0x01, 0x70, + 0x61, 0x74, 0x68, 0x00, 0x01, 0x02, 0xb0, 0x00, + 0xb6, 0x00, 0xdd, 0x00, 0xc7, 0x00, 0xc4, 0x00, + 0xc2, 0x00, 0xce, 0x00, 0xc7, 0x00, 0x03, 0x01, + 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x6f, 0x20, + 0x63, 0x61, 0x76, 0x65, 0x00, 0x01, 0x03, 0x50, + 0x00, 0x68, 0x00, 0x79, 0x00, 0xa9, 0x00, 0x64, + 0x00, 0xb0, 0x00, 0x64, 0x00, 0xb0, 0x00, 0x01, + 0x01, 0x64, 0x6f, 0x6f, 0x72, 0x00, 0x01, 0x04, + 0x00, 0x00, 0x82, 0x00, 0x3f, 0x00, 0xab, 0x00, + 0x30, 0x00, 0xbe, 0x00, 0x30, 0x00, 0xbe, 0x00, + 0x04, 0x01, 0x6c, 0x61, 0x75, 0x6e, 0x64, 0x72, + 0x79, 0x00, 0x54, 0x68, 0x65, 0x20, 0x61, 0x69, + 0x72, 0x20, 0x69, 0x73, 0x20, 0x74, 0x6f, 0x6f, + 0x20, 0x64, 0x61, 0x6d, 0x70, 0x20, 0x74, 0x6f, + 0x20, 0x64, 0x72, 0x79, 0x00, 0x74, 0x68, 0x69, + 0x73, 0x20, 0x77, 0x65, 0x74, 0x20, 0x6c, 0x61, + 0x75, 0x6e, 0x64, 0x72, 0x79, 0x2e, 0x2e, 0x2e, + 0x00, 0x00, 0x05, 0x8d, 0x00, 0x58, 0x00, 0xba, + 0x00, 0x90, 0x00, 0x9f, 0x00, 0xbd, 0x00, 0x9f, + 0x00, 0xbd, 0x00, 0x01, 0x01, 0x77, 0x69, 0x6e, + 0x64, 0x6f, 0x77, 0x00, 0x01, 0x06, 0xce, 0x00, + 0x58, 0x00, 0xfb, 0x00, 0x90, 0x00, 0x9f, 0x00, + 0xbd, 0x00, 0x9f, 0x00, 0xbd, 0x00, 0x02, 0x01, + 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x00, 0x01, + 0x07, 0x15, 0x01, 0x55, 0x00, 0x36, 0x01, 0x82, + 0x00, 0xc4, 0x00, 0xc2, 0x00, 0xc4, 0x00, 0xc2, + 0x00, 0x02, 0x01, 0x77, 0x69, 0x6e, 0x64, 0x6f, + 0x77, 0x00, 0x01, 0x08, 0x1a, 0x01, 0x9c, 0x00, + 0x38, 0x01, 0xab, 0x00, 0x29, 0x01, 0xb5, 0x00, + 0x29, 0x01, 0xb2, 0x00, 0x01, 0x00, 0x68, 0x6f, + 0x6c, 0x65, 0x00, 0x41, 0x20, 0x77, 0x61, 0x79, + 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x2e, 0x00, + 0x00, 0x09, 0x0b, 0x01, 0x83, 0x00, 0x3f, 0x01, + 0xb0, 0x00, 0xc4, 0x00, 0xc2, 0x00, 0xc4, 0x00, + 0xc2, 0x00, 0x02, 0x01, 0x76, 0x61, 0x6c, 0x76, + 0x65, 0x00, 0x49, 0x74, 0x27, 0x73, 0x20, 0x61, + 0x20, 0x68, 0x65, 0x61, 0x76, 0x79, 0x20, 0x6d, + 0x65, 0x74, 0x61, 0x6c, 0x20, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x2e, 0x00, 0x00, 0x0a, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x00, + 0xc2, 0x00, 0xc4, 0x00, 0xc2, 0x00, 0x02, 0x01, + 0x64, 0x6f, 0x67, 0x00, 0x53, 0x6e, 0x6f, 0x6f, + 0x70, 0x79, 0x2e, 0x00, 0x00, 0x0b, 0x7c, 0x00, + 0x84, 0x00, 0x81, 0x00, 0x8e, 0x00, 0x64, 0x00, + 0xb0, 0x00, 0x64, 0x00, 0xb0, 0x00, 0x02, 0x01, + 0x62, 0x65, 0x6c, 0x6c, 0x00, 0x01, 0x0c, 0x00, + 0x00, 0x82, 0x00, 0x3f, 0x00, 0xa1, 0x00, 0x3f, + 0x00, 0xbb, 0x00, 0x3f, 0x00, 0xbb, 0x00, 0x01, + 0x01, 0x72, 0x6f, 0x70, 0x65, 0x00, 0x01, 0x48, + 0x95, 0x86, 0x95, 0xa3, 0x95, 0xd2, 0x95, 0xfe, + 0x95, 0x2e, 0x96, 0x48, 0x96, 0x88, 0x96, 0xae, + 0x96, 0x0f, 0x97, 0x36, 0x97, 0x4f, 0x97, 0x6e, + 0x97, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe6, 0x00, 0xac, 0x00, + 0xe6, 0x00, 0xac, 0x00, 0x03, 0x01, 0x6f, 0x6c, + 0x64, 0x20, 0x6d, 0x61, 0x6e, 0x00, 0x48, 0x65, + 0x20, 0x6c, 0x6f, 0x6f, 0x6b, 0x73, 0x20, 0x6c, + 0x69, 0x6b, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, + 0x74, 0x69, 0x72, 0x65, 0x64, 0x00, 0x73, 0x65, + 0x61, 0x20, 0x77, 0x6f, 0x6c, 0x66, 0x2e, 0x00, + 0x00, 0x02, 0x60, 0x00, 0x5e, 0x00, 0x7a, 0x00, + 0x7f, 0x00, 0x6d, 0x00, 0xa9, 0x00, 0x6d, 0x00, + 0xa9, 0x00, 0x01, 0x01, 0x63, 0x75, 0x70, 0x62, + 0x6f, 0x61, 0x72, 0x64, 0x00, 0x01, 0x03, 0x63, + 0x00, 0x83, 0x00, 0xb2, 0x00, 0x97, 0x00, 0xa3, + 0x00, 0xab, 0x00, 0xa3, 0x00, 0xab, 0x00, 0x01, + 0x01, 0x64, 0x72, 0x61, 0x77, 0x65, 0x72, 0x73, + 0x00, 0x42, 0x6f, 0x79, 0x21, 0x20, 0x4c, 0x6f, + 0x74, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, + 0x65, 0x6d, 0x21, 0x00, 0x00, 0x04, 0x00, 0x00, + 0xb7, 0x00, 0x8e, 0x00, 0xc7, 0x00, 0x63, 0x00, + 0xb4, 0x00, 0x63, 0x00, 0xb4, 0x00, 0x03, 0x01, + 0x62, 0x65, 0x64, 0x00, 0x48, 0x6f, 0x6d, 0x65, + 0x2c, 0x20, 0x73, 0x77, 0x65, 0x65, 0x74, 0x20, + 0x68, 0x6f, 0x6d, 0x65, 0x2e, 0x2e, 0x2e, 0x00, + 0x00, 0x05, 0x13, 0x01, 0x51, 0x00, 0x28, 0x01, + 0x92, 0x00, 0xf4, 0x00, 0xac, 0x00, 0xf4, 0x00, + 0xac, 0x00, 0x02, 0x01, 0x77, 0x69, 0x6e, 0x64, + 0x6f, 0x77, 0x00, 0x41, 0x20, 0x76, 0x69, 0x65, + 0x77, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x2e, 0x00, + 0x00, 0x06, 0xc8, 0x00, 0x87, 0x00, 0xf4, 0x00, + 0x9b, 0x00, 0xd2, 0x00, 0xac, 0x00, 0xd2, 0x00, + 0xac, 0x00, 0x01, 0x01, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x00, 0x01, 0x07, 0xc0, 0x00, 0x68, 0x00, + 0xec, 0x00, 0x7f, 0x00, 0xd2, 0x00, 0xac, 0x00, + 0xd2, 0x00, 0xac, 0x00, 0x01, 0x01, 0x73, 0x68, + 0x6f, 0x74, 0x67, 0x75, 0x6e, 0x00, 0x47, 0x65, + 0x65, 0x2c, 0x20, 0x69, 0x74, 0x20, 0x6d, 0x75, + 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x66, 0x6f, + 0x72, 0x00, 0x64, 0x69, 0x6e, 0x6f, 0x73, 0x61, + 0x75, 0x72, 0x75, 0x73, 0x65, 0x73, 0x21, 0x2e, + 0x2e, 0x00, 0x00, 0x08, 0xbd, 0x00, 0x38, 0x00, + 0xe6, 0x00, 0x65, 0x00, 0xd2, 0x00, 0xac, 0x00, + 0xd2, 0x00, 0xac, 0x00, 0x01, 0x01, 0x70, 0x69, + 0x63, 0x74, 0x75, 0x72, 0x65, 0x00, 0x43, 0x68, + 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x00, + 0x00, 0x09, 0x87, 0x00, 0x47, 0x00, 0xb8, 0x00, + 0x6a, 0x00, 0x96, 0x00, 0xac, 0x00, 0x96, 0x00, + 0xac, 0x00, 0x01, 0x01, 0x66, 0x61, 0x6d, 0x69, + 0x6c, 0x79, 0x20, 0x70, 0x69, 0x63, 0x74, 0x75, + 0x72, 0x65, 0x73, 0x00, 0x49, 0x20, 0x77, 0x6f, + 0x75, 0x6c, 0x64, 0x6e, 0x27, 0x74, 0x20, 0x6c, + 0x69, 0x6b, 0x65, 0x20, 0x68, 0x61, 0x76, 0x69, + 0x6e, 0x67, 0x20, 0x6d, 0x79, 0x20, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x73, 0x20, + 0x68, 0x61, 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x00, + 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x74, 0x72, 0x6f, + 0x70, 0x68, 0x69, 0x65, 0x73, 0x2e, 0x2e, 0x2e, + 0x00, 0x00, 0x0a, 0x37, 0x00, 0x56, 0x00, 0x57, + 0x00, 0x89, 0x00, 0x46, 0x00, 0xac, 0x00, 0x46, + 0x00, 0xac, 0x00, 0x01, 0x01, 0x66, 0x6c, 0x6f, + 0x77, 0x65, 0x72, 0x00, 0x49, 0x74, 0x27, 0x73, + 0x20, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x2e, 0x00, + 0x00, 0x0b, 0x0d, 0x00, 0x60, 0x00, 0x2c, 0x00, + 0xac, 0x00, 0x3d, 0x00, 0xaf, 0x00, 0x3d, 0x00, + 0xaf, 0x00, 0x04, 0x01, 0x64, 0x6f, 0x6f, 0x72, + 0x00, 0x01, 0x0c, 0x94, 0x00, 0x04, 0x00, 0xb6, + 0x00, 0x37, 0x00, 0xa3, 0x00, 0xab, 0x00, 0xa3, + 0x00, 0xab, 0x00, 0x01, 0x01, 0x63, 0x68, 0x61, + 0x6e, 0x64, 0x65, 0x6c, 0x69, 0x65, 0x72, 0x00, + 0x01, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xb7, 0x00, 0xaa, 0x00, 0xb7, 0x00, + 0xaa, 0x00, 0x01, 0x01, 0x66, 0x61, 0x6e, 0x00, + 0x49, 0x74, 0x27, 0x73, 0x20, 0x62, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x79, 0x20, 0x70, 0x6f, 0x77, + 0x65, 0x72, 0x65, 0x64, 0x2e, 0x00, 0x00, 0xbe, + 0x97, 0xfb, 0x97, 0x26, 0x98, 0x42, 0x98, 0x5d, + 0x98, 0x78, 0x98, 0x97, 0x98, 0xcb, 0x98, 0xe1, + 0x98, 0x23, 0x99, 0x51, 0x99, 0x97, 0x99, 0xdb, + 0x99, 0x3f, 0x9a, 0x7d, 0x9a, 0xe2, 0x9a, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5d, 0x00, 0xba, 0x00, 0x5d, 0x00, + 0xba, 0x00, 0x04, 0x01, 0x6f, 0x6c, 0x64, 0x20, + 0x6c, 0x61, 0x64, 0x79, 0x00, 0x53, 0x68, 0x65, + 0x20, 0x6b, 0x6e, 0x69, 0x74, 0x73, 0x20, 0x69, + 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x74, + 0x65, 0x61, 0x6d, 0x2e, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, + 0x01, 0x67, 0x69, 0x72, 0x6c, 0x00, 0x53, 0x68, + 0x65, 0x27, 0x73, 0x20, 0x63, 0x6f, 0x6f, 0x6c, + 0x2e, 0x00, 0x00, 0x41, 0x6e, 0x6e, 0x65, 0x00, + 0xff, 0x03, 0x00, 0x00, 0xbc, 0x00, 0x6b, 0x00, + 0xc7, 0x00, 0x5e, 0x00, 0xbe, 0x00, 0x4c, 0x00, + 0xc7, 0x00, 0x03, 0x01, 0x77, 0x61, 0x79, 0x20, + 0x6f, 0x75, 0x74, 0x00, 0x01, 0x04, 0x02, 0x00, + 0x48, 0x00, 0x30, 0x00, 0x84, 0x00, 0x5d, 0x00, + 0xba, 0x00, 0x5d, 0x00, 0xba, 0x00, 0x01, 0x01, + 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x00, 0x01, + 0x05, 0x84, 0x00, 0x48, 0x00, 0xb0, 0x00, 0x84, + 0x00, 0x9b, 0x00, 0xac, 0x00, 0x9b, 0x00, 0xac, + 0x00, 0x01, 0x01, 0x77, 0x69, 0x6e, 0x64, 0x6f, + 0x77, 0x00, 0x01, 0x06, 0x4b, 0x00, 0x0a, 0x00, + 0x78, 0x00, 0x38, 0x00, 0x5d, 0x00, 0xba, 0x00, + 0x5d, 0x00, 0xba, 0x00, 0x01, 0x01, 0x63, 0x68, + 0x61, 0x6e, 0x64, 0x65, 0x6c, 0x69, 0x65, 0x72, + 0x00, 0x01, 0x07, 0x4d, 0x00, 0x61, 0x00, 0x6f, + 0x00, 0xa5, 0x00, 0x5d, 0x00, 0xab, 0x00, 0x5d, + 0x00, 0xab, 0x00, 0x01, 0x01, 0x63, 0x6c, 0x6f, + 0x63, 0x6b, 0x00, 0x52, 0x65, 0x61, 0x6c, 0x6c, + 0x79, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x20, + 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x70, 0x69, + 0x65, 0x63, 0x65, 0x2e, 0x00, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x86, 0x00, 0x9f, + 0x00, 0x97, 0x00, 0xad, 0x00, 0x9e, 0x00, 0xc6, + 0x00, 0x9e, 0x00, 0xc6, 0x00, 0x03, 0x01, 0x69, + 0x6d, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x66, 0x72, 0x75, 0x69, 0x74, 0x73, 0x00, + 0x54, 0x68, 0x65, 0x20, 0x61, 0x70, 0x70, 0x6c, + 0x65, 0x20, 0x6c, 0x6f, 0x6f, 0x6b, 0x73, 0x20, + 0x61, 0x6c, 0x6d, 0x6f, 0x73, 0x74, 0x00, 0x72, + 0x65, 0x61, 0x6c, 0x21, 0x00, 0x00, 0x0a, 0xac, + 0x00, 0x9f, 0x00, 0xb6, 0x00, 0xae, 0x00, 0x9e, + 0x00, 0xc6, 0x00, 0x9e, 0x00, 0xc6, 0x00, 0x03, + 0x01, 0x6a, 0x75, 0x67, 0x00, 0x49, 0x74, 0x20, + 0x68, 0x6f, 0x6c, 0x64, 0x73, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x66, 0x6c, 0x6f, 0x77, 0x65, 0x72, + 0x73, 0x2e, 0x00, 0x00, 0x0b, 0xa1, 0x00, 0x89, + 0x00, 0xc2, 0x00, 0x9e, 0x00, 0x9e, 0x00, 0xc6, + 0x00, 0x9e, 0x00, 0xc6, 0x00, 0x03, 0x01, 0x66, + 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x73, 0x00, 0x49, + 0x20, 0x68, 0x6f, 0x70, 0x65, 0x20, 0x74, 0x68, + 0x65, 0x73, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, + 0x6e, 0x6f, 0x74, 0x20, 0x66, 0x72, 0x6f, 0x6d, + 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x00, 0x61, 0x64, + 0x6d, 0x69, 0x72, 0x65, 0x72, 0x2e, 0x2e, 0x2e, + 0x00, 0x00, 0x0c, 0x3c, 0x00, 0xa1, 0x00, 0x4c, + 0x00, 0xa8, 0x00, 0x5d, 0x00, 0xba, 0x00, 0x4e, + 0x00, 0xbc, 0x00, 0x04, 0x01, 0x66, 0x65, 0x61, + 0x74, 0x68, 0x65, 0x72, 0x20, 0x64, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x00, 0x49, 0x74, 0x20, 0x6d, + 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, + 0x75, 0x73, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x62, + 0x6c, 0x65, 0x6d, 0x2e, 0x00, 0x00, 0x0d, 0x7d, + 0x00, 0xa7, 0x00, 0xc2, 0x00, 0xc7, 0x00, 0x9e, + 0x00, 0xc6, 0x00, 0x9e, 0x00, 0xc6, 0x00, 0x03, + 0x01, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x00, 0x49, + 0x74, 0x27, 0x73, 0x20, 0x72, 0x6f, 0x75, 0x6e, + 0x64, 0x2c, 0x20, 0x62, 0x75, 0x74, 0x20, 0x49, + 0x20, 0x64, 0x6f, 0x75, 0x62, 0x74, 0x20, 0x69, + 0x74, 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x6e, + 0x79, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x74, + 0x6f, 0x20, 0x64, 0x6f, 0x00, 0x77, 0x69, 0x74, + 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x65, + 0x64, 0x69, 0x65, 0x76, 0x61, 0x6c, 0x20, 0x6c, + 0x65, 0x67, 0x65, 0x6e, 0x64, 0x2e, 0x2e, 0x2e, + 0x00, 0x00, 0x0e, 0xf1, 0x00, 0x60, 0x00, 0x1a, + 0x01, 0x94, 0x00, 0x02, 0x01, 0xb8, 0x00, 0x02, + 0x01, 0xb8, 0x00, 0x01, 0x01, 0x6d, 0x69, 0x72, + 0x72, 0x6f, 0x72, 0x00, 0x49, 0x20, 0x63, 0x61, + 0x6e, 0x20, 0x73, 0x65, 0x65, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x67, 0x69, 0x72, 0x6c, 0x27, 0x73, + 0x00, 0x66, 0x61, 0x63, 0x65, 0x20, 0x69, 0x6e, + 0x20, 0x69, 0x74, 0x2e, 0x2e, 0x2e, 0x00, 0x00, + 0x0f, 0x1d, 0x01, 0x3e, 0x00, 0x3f, 0x01, 0x68, + 0x00, 0x02, 0x01, 0xb8, 0x00, 0x02, 0x01, 0xb8, + 0x00, 0x02, 0x01, 0x70, 0x69, 0x63, 0x74, 0x75, + 0x72, 0x65, 0x00, 0x49, 0x74, 0x27, 0x73, 0x20, + 0x6e, 0x69, 0x63, 0x65, 0x20, 0x74, 0x6f, 0x20, + 0x6c, 0x69, 0x76, 0x65, 0x20, 0x69, 0x6e, 0x20, + 0x61, 0x20, 0x76, 0x69, 0x6c, 0x6c, 0x61, 0x67, + 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x68, 0x61, + 0x76, 0x65, 0x20, 0x76, 0x69, 0x6c, 0x6c, 0x61, + 0x67, 0x65, 0x00, 0x6c, 0x61, 0x6e, 0x64, 0x73, + 0x63, 0x61, 0x70, 0x65, 0x73, 0x20, 0x6f, 0x6e, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x61, 0x6c, + 0x6c, 0x73, 0x2e, 0x00, 0x00, 0x10, 0x18, 0x01, + 0xa1, 0x00, 0x3f, 0x01, 0xc7, 0x00, 0xf5, 0x00, + 0xc6, 0x00, 0xf5, 0x00, 0xc6, 0x00, 0x02, 0x01, + 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x00, 0x49, 0x6d, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x76, 0x65, + 0x2e, 0x00, 0x00, 0x1c, 0x9b, 0x3f, 0x9b, 0x77, + 0x9b, 0x9b, 0x9b, 0xd1, 0x9b, 0x2d, 0x9c, 0x47, + 0x9c, 0xa4, 0x9c, 0xf4, 0x9c, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5e, 0x00, 0xaa, 0x00, 0x5e, 0x00, 0xaa, 0x00, + 0x04, 0x01, 0x73, 0x70, 0x69, 0x64, 0x65, 0x72, + 0x00, 0x49, 0x74, 0x27, 0x73, 0x2e, 0x2e, 0x2e, + 0x00, 0x00, 0x02, 0x38, 0x00, 0x86, 0x00, 0x4e, + 0x00, 0xa9, 0x00, 0x5e, 0x00, 0xaa, 0x00, 0x4e, + 0x00, 0xaa, 0x00, 0x04, 0x01, 0x73, 0x68, 0x6f, + 0x76, 0x65, 0x6c, 0x00, 0x49, 0x20, 0x63, 0x6f, + 0x75, 0x6c, 0x64, 0x20, 0x70, 0x6c, 0x61, 0x79, + 0x20, 0x64, 0x69, 0x67, 0x67, 0x65, 0x72, 0x20, + 0x77, 0x69, 0x74, 0x68, 0x20, 0x69, 0x74, 0x2e, + 0x00, 0x00, 0x03, 0xd5, 0x00, 0x15, 0x00, 0xf8, + 0x00, 0xa5, 0x00, 0xe6, 0x00, 0xaa, 0x00, 0xe6, + 0x00, 0xaa, 0x00, 0x01, 0x01, 0x6c, 0x61, 0x64, + 0x64, 0x65, 0x72, 0x00, 0x57, 0x61, 0x79, 0x20, + 0x6f, 0x75, 0x74, 0x2e, 0x00, 0x00, 0x04, 0xf7, + 0x00, 0x70, 0x00, 0xfe, 0x00, 0x7a, 0x00, 0x05, + 0x01, 0xa8, 0x00, 0x05, 0x01, 0xa8, 0x00, 0x01, + 0x00, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x00, + 0x49, 0x74, 0x27, 0x73, 0x20, 0x6c, 0x69, 0x74, + 0x74, 0x6c, 0x65, 0x2c, 0x20, 0x62, 0x75, 0x74, + 0x20, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x66, 0x75, + 0x6c, 0x2e, 0x00, 0x00, 0x05, 0x05, 0x00, 0x5a, + 0x00, 0x1e, 0x00, 0x77, 0x00, 0x53, 0x00, 0xb4, + 0x00, 0x53, 0x00, 0xb4, 0x00, 0x04, 0x01, 0x61, + 0x78, 0x65, 0x00, 0x49, 0x20, 0x68, 0x6f, 0x70, + 0x65, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, + 0x73, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x6f, + 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x61, + 0x6c, 0x6c, 0x20, 0x68, 0x61, 0x76, 0x65, 0x00, + 0x6e, 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, + 0x74, 0x6f, 0x20, 0x64, 0x6f, 0x20, 0x77, 0x69, + 0x74, 0x68, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, + 0x61, 0x78, 0x65, 0x2e, 0x2e, 0x2e, 0x00, 0x00, + 0x06, 0x1c, 0x01, 0x38, 0x00, 0x28, 0x01, 0x62, + 0x00, 0xf5, 0x00, 0xb2, 0x00, 0xf5, 0x00, 0xb2, + 0x00, 0x02, 0x01, 0x63, 0x68, 0x61, 0x69, 0x6e, + 0x00, 0x01, 0x07, 0x2e, 0x01, 0x50, 0x00, 0x36, + 0x01, 0x62, 0x00, 0xf5, 0x00, 0xb2, 0x00, 0xf5, + 0x00, 0xb2, 0x00, 0x02, 0x01, 0x74, 0x6f, 0x6e, + 0x67, 0x73, 0x00, 0x47, 0x65, 0x65, 0x2c, 0x20, + 0x74, 0x68, 0x69, 0x73, 0x20, 0x70, 0x6c, 0x61, + 0x63, 0x65, 0x20, 0x6c, 0x6f, 0x6f, 0x6b, 0x73, + 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x6c, 0x69, + 0x6b, 0x65, 0x20, 0x61, 0x00, 0x74, 0x6f, 0x72, + 0x74, 0x75, 0x72, 0x65, 0x20, 0x63, 0x68, 0x61, + 0x6d, 0x62, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, + 0x6e, 0x20, 0x61, 0x20, 0x63, 0x65, 0x6c, 0x6c, + 0x61, 0x72, 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x08, + 0x6b, 0x00, 0x59, 0x00, 0xcc, 0x00, 0xa9, 0x00, + 0x99, 0x00, 0xb0, 0x00, 0x99, 0x00, 0xb0, 0x00, + 0x01, 0x01, 0x73, 0x68, 0x65, 0x6c, 0x76, 0x65, + 0x73, 0x00, 0x4c, 0x6f, 0x74, 0x73, 0x20, 0x6f, + 0x66, 0x20, 0x6a, 0x61, 0x72, 0x73, 0x20, 0x61, + 0x6e, 0x64, 0x20, 0x73, 0x74, 0x75, 0x66, 0x66, + 0x2e, 0x20, 0x4e, 0x6f, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x00, 0x72, 0x65, 0x61, 0x6c, 0x6c, 0x79, + 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x00, 0x00, 0x09, + 0x17, 0x01, 0x8c, 0x00, 0x3f, 0x01, 0xc2, 0x00, + 0xf5, 0x00, 0xb2, 0x00, 0xf5, 0x00, 0xb2, 0x00, + 0x02, 0x01, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, + 0x6e, 0x65, 0x72, 0x73, 0x00, 0x54, 0x68, 0x65, + 0x79, 0x27, 0x72, 0x65, 0x20, 0x65, 0x6d, 0x70, + 0x74, 0x79, 0x2e, 0x00, 0x00, 0x32, 0x9d, 0x90, + 0x9d, 0x07, 0x9e, 0x29, 0x9e, 0x42, 0x9e, 0x9e, + 0x9e, 0xcf, 0x9e, 0x00, 0x00, 0x01, 0xe1, 0x00, + 0x8b, 0x00, 0xf6, 0x00, 0x91, 0x00, 0x0c, 0x01, + 0x91, 0x00, 0x0c, 0x01, 0x91, 0x00, 0x04, 0x00, + 0x62, 0x6f, 0x6e, 0x65, 0x00, 0x44, 0x75, 0x65, + 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x72, 0x6f, 0x63, 0x6b, 0x20, + 0x49, 0x20, 0x74, 0x68, 0x69, 0x6e, 0x6b, 0x00, + 0x69, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, + 0x62, 0x65, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, + 0x64, 0x69, 0x6e, 0x6f, 0x73, 0x61, 0x75, 0x72, + 0x20, 0x62, 0x6f, 0x6e, 0x65, 0x2e, 0x2e, 0x2e, + 0x2e, 0x00, 0x00, 0x02, 0x90, 0x00, 0x49, 0x00, + 0xcb, 0x00, 0x9e, 0x00, 0xea, 0x00, 0x98, 0x00, + 0xea, 0x00, 0x98, 0x00, 0x04, 0x01, 0x62, 0x75, + 0x73, 0x68, 0x00, 0x49, 0x74, 0x20, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x73, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x77, 0x61, 0x79, 0x20, 0x74, 0x6f, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x76, 0x65, + 0x2e, 0x00, 0x4d, 0x61, 0x79, 0x62, 0x65, 0x20, + 0x73, 0x6f, 0x6d, 0x65, 0x6f, 0x6e, 0x65, 0x20, + 0x70, 0x6c, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x20, + 0x69, 0x74, 0x20, 0x68, 0x65, 0x72, 0x65, 0x20, + 0x74, 0x6f, 0x00, 0x6b, 0x65, 0x65, 0x70, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x76, 0x65, + 0x20, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, + 0x20, 0x73, 0x61, 0x66, 0x65, 0x2e, 0x2e, 0x2e, + 0x00, 0x00, 0x03, 0x79, 0x00, 0x34, 0x00, 0xae, + 0x00, 0x9e, 0x00, 0xea, 0x00, 0x98, 0x00, 0xea, + 0x00, 0x98, 0x00, 0x04, 0x01, 0x63, 0x61, 0x76, + 0x65, 0x20, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6e, + 0x63, 0x65, 0x00, 0x01, 0x04, 0x15, 0x01, 0x7a, + 0x00, 0x3f, 0x01, 0xa9, 0x00, 0x14, 0x01, 0x93, + 0x00, 0x3f, 0x01, 0x93, 0x00, 0x02, 0x01, 0x70, + 0x61, 0x74, 0x68, 0x00, 0x01, 0x05, 0xdd, 0x00, + 0x7a, 0x00, 0xfe, 0x00, 0x94, 0x00, 0xed, 0x00, + 0x98, 0x00, 0xed, 0x00, 0x98, 0x00, 0x01, 0x01, + 0x72, 0x6f, 0x63, 0x6b, 0x00, 0x49, 0x74, 0x20, + 0x6d, 0x75, 0x73, 0x74, 0x20, 0x68, 0x61, 0x76, + 0x65, 0x20, 0x66, 0x61, 0x6c, 0x6c, 0x65, 0x6e, + 0x20, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x67, + 0x65, 0x73, 0x20, 0x61, 0x67, 0x6f, 0x2e, 0x00, + 0x49, 0x20, 0x77, 0x6f, 0x6e, 0x64, 0x65, 0x72, + 0x20, 0x69, 0x66, 0x20, 0x61, 0x6e, 0x79, 0x62, + 0x6f, 0x64, 0x79, 0x20, 0x67, 0x6f, 0x74, 0x20, + 0x68, 0x75, 0x72, 0x74, 0x2e, 0x2e, 0x2e, 0x00, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xed, 0x00, 0x98, 0x00, 0xed, 0x00, + 0x98, 0x00, 0x01, 0x01, 0x62, 0x75, 0x74, 0x74, + 0x65, 0x72, 0x66, 0x6c, 0x79, 0x00, 0x49, 0x73, + 0x6e, 0x27, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, + 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x6c, 0x79, 0x3f, + 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xed, 0x00, 0x98, 0x00, 0xed, + 0x00, 0x98, 0x00, 0x01, 0x01, 0x62, 0x75, 0x74, + 0x74, 0x65, 0x72, 0x66, 0x6c, 0x79, 0x00, 0x49, + 0x73, 0x6e, 0x27, 0x74, 0x20, 0x74, 0x68, 0x61, + 0x74, 0x20, 0x6c, 0x6f, 0x76, 0x65, 0x6c, 0x79, + 0x3f, 0x00, 0x00, 0x0e, 0x9f, 0x29, 0x9f, 0x4e, + 0x9f, 0x6a, 0x9f, 0xbd, 0x9f, 0xea, 0x9f, 0x00, + 0x00, 0x01, 0x03, 0x01, 0xa4, 0x00, 0x1d, 0x01, + 0xb6, 0x00, 0xf8, 0x00, 0xa9, 0x00, 0xf8, 0x00, + 0xa9, 0x00, 0x03, 0x01, 0x6c, 0x69, 0x7a, 0x61, + 0x72, 0x64, 0x00, 0x01, 0x02, 0x3f, 0x00, 0x8a, + 0x00, 0x5c, 0x00, 0xbc, 0x00, 0x6e, 0x00, 0xaa, + 0x00, 0x6e, 0x00, 0xaa, 0x00, 0x03, 0x00, 0x3f, + 0x3f, 0x3f, 0x00, 0x57, 0x68, 0x61, 0x74, 0x20, + 0x49, 0x53, 0x20, 0x49, 0x54, 0x3f, 0x21, 0x00, + 0x00, 0x03, 0x11, 0x01, 0x70, 0x00, 0x3f, 0x01, + 0xc7, 0x00, 0xf8, 0x00, 0xa9, 0x00, 0x3f, 0x01, + 0xa9, 0x00, 0x02, 0x01, 0x77, 0x61, 0x79, 0x20, + 0x6f, 0x75, 0x74, 0x00, 0x01, 0x04, 0x97, 0x00, + 0x54, 0x00, 0xad, 0x00, 0x5d, 0x00, 0x9f, 0x00, + 0xaa, 0x00, 0x9f, 0x00, 0xaa, 0x00, 0x01, 0x01, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x00, + 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x6e, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x69, 0x73, 0x20, 0x76, 0x65, 0x72, 0x79, + 0x20, 0x6f, 0x6c, 0x64, 0x2c, 0x20, 0x62, 0x75, + 0x74, 0x20, 0x49, 0x20, 0x63, 0x61, 0x6e, 0x20, + 0x73, 0x74, 0x69, 0x6c, 0x6c, 0x00, 0x72, 0x65, + 0x61, 0x64, 0x20, 0x69, 0x74, 0x2e, 0x00, 0x00, + 0x05, 0x9a, 0x00, 0x5e, 0x00, 0xa6, 0x00, 0x67, + 0x00, 0x9f, 0x00, 0xaa, 0x00, 0x9f, 0x00, 0xaa, + 0x00, 0x01, 0x01, 0x68, 0x6f, 0x6c, 0x65, 0x00, + 0x49, 0x74, 0x20, 0x6c, 0x6f, 0x6f, 0x6b, 0x73, + 0x20, 0x76, 0x65, 0x72, 0x79, 0x20, 0x64, 0x65, + 0x65, 0x70, 0x2e, 0x00, 0x00, 0x06, 0xf9, 0x00, + 0x9d, 0x00, 0xff, 0x00, 0xa3, 0x00, 0xee, 0x00, + 0xa8, 0x00, 0xee, 0x00, 0xa8, 0x00, 0x02, 0x00, + 0x6e, 0x75, 0x67, 0x67, 0x65, 0x74, 0x00, 0x50, + 0x75, 0x72, 0x65, 0x20, 0x67, 0x6f, 0x6c, 0x64, + 0x21, 0x00, 0x00, 0x32, 0xa0, 0x5e, 0xa0, 0x8d, + 0xa0, 0xb9, 0xa0, 0xe6, 0xa0, 0x1c, 0xa1, 0x51, + 0xa1, 0xb1, 0xa1, 0xe3, 0xa1, 0x07, 0xa2, 0x64, + 0xa2, 0xad, 0xa2, 0xe6, 0xa2, 0x21, 0xa3, 0x5f, + 0xa3, 0x7d, 0xa3, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x00, + 0xc3, 0x00, 0x96, 0x00, 0xc3, 0x00, 0x02, 0x01, + 0x68, 0x65, 0x6e, 0x00, 0x41, 0x20, 0x6c, 0x69, + 0x74, 0x74, 0x6c, 0x65, 0x20, 0x73, 0x74, 0x72, + 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x2e, 0x2e, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x00, 0x87, 0x00, 0xe0, 0x00, + 0x87, 0x00, 0x01, 0x01, 0x63, 0x72, 0x6f, 0x77, + 0x00, 0x45, 0x78, 0x74, 0x72, 0x65, 0x6d, 0x65, + 0x6c, 0x79, 0x20, 0x75, 0x6e, 0x66, 0x72, 0x69, + 0x65, 0x6e, 0x64, 0x6c, 0x79, 0x2e, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x87, 0x00, 0xe0, 0x00, 0x87, + 0x00, 0x01, 0x01, 0x63, 0x72, 0x6f, 0x77, 0x00, + 0x4c, 0x6f, 0x6f, 0x6b, 0x73, 0x20, 0x64, 0x61, + 0x6e, 0x67, 0x65, 0x72, 0x6f, 0x75, 0x73, 0x2e, + 0x2e, 0x2e, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x00, 0x8e, + 0x00, 0xec, 0x00, 0x8e, 0x00, 0x04, 0x01, 0x6d, + 0x6f, 0x75, 0x73, 0x65, 0x00, 0x49, 0x74, 0x27, + 0x73, 0x20, 0x76, 0x65, 0x72, 0x79, 0x20, 0x6e, + 0x65, 0x72, 0x76, 0x6f, 0x75, 0x73, 0x2e, 0x00, + 0x00, 0x05, 0xdb, 0x00, 0x41, 0x00, 0xe9, 0x00, + 0x47, 0x00, 0xe0, 0x00, 0x87, 0x00, 0xe0, 0x00, + 0x87, 0x00, 0x01, 0x01, 0x64, 0x69, 0x76, 0x65, + 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x00, 0x59, 0x65, + 0x61, 0x68, 0x2c, 0x20, 0x69, 0x74, 0x20, 0x61, + 0x6d, 0x61, 0x7a, 0x65, 0x73, 0x20, 0x6d, 0x65, + 0x20, 0x74, 0x6f, 0x6f, 0x2e, 0x00, 0x00, 0x06, + 0xc9, 0x00, 0x72, 0x00, 0xf1, 0x00, 0x80, 0x00, + 0xe0, 0x00, 0x87, 0x00, 0xde, 0x00, 0x8f, 0x00, + 0x01, 0x01, 0x66, 0x69, 0x6e, 0x73, 0x00, 0x54, + 0x68, 0x65, 0x79, 0x20, 0x77, 0x69, 0x6c, 0x6c, + 0x20, 0x66, 0x69, 0x74, 0x20, 0x6d, 0x65, 0x20, + 0x70, 0x65, 0x72, 0x66, 0x65, 0x63, 0x74, 0x6c, + 0x79, 0x2e, 0x00, 0x00, 0x07, 0xc8, 0x00, 0x3a, + 0x00, 0xf5, 0x00, 0x80, 0x00, 0xe0, 0x00, 0x87, + 0x00, 0xe0, 0x00, 0x87, 0x00, 0x01, 0x01, 0x73, + 0x63, 0x61, 0x72, 0x65, 0x63, 0x72, 0x6f, 0x77, + 0x00, 0x41, 0x20, 0x74, 0x68, 0x69, 0x6e, 0x67, + 0x20, 0x74, 0x6f, 0x20, 0x73, 0x63, 0x61, 0x72, + 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x72, + 0x6f, 0x77, 0x73, 0x2e, 0x00, 0x41, 0x74, 0x20, + 0x6c, 0x65, 0x61, 0x73, 0x74, 0x20, 0x74, 0x68, + 0x61, 0x74, 0x27, 0x73, 0x20, 0x77, 0x68, 0x61, + 0x74, 0x20, 0x74, 0x68, 0x65, 0x00, 0x74, 0x68, + 0x65, 0x6f, 0x72, 0x79, 0x20, 0x73, 0x61, 0x79, + 0x73, 0x2e, 0x00, 0x00, 0x08, 0x7a, 0x00, 0xa7, + 0x00, 0x87, 0x00, 0xb3, 0x00, 0x90, 0x00, 0xb5, + 0x00, 0x90, 0x00, 0xb5, 0x00, 0x04, 0x01, 0x73, + 0x69, 0x63, 0x6b, 0x6c, 0x65, 0x00, 0x41, 0x20, + 0x76, 0x65, 0x72, 0x79, 0x20, 0x64, 0x61, 0x6e, + 0x67, 0x65, 0x72, 0x6f, 0x75, 0x73, 0x20, 0x74, + 0x6f, 0x6f, 0x6c, 0x2e, 0x00, 0x00, 0x09, 0x3d, + 0x00, 0xb6, 0x00, 0x8d, 0x00, 0xc7, 0x00, 0x84, + 0x00, 0xbe, 0x00, 0x7e, 0x00, 0xc7, 0x00, 0x03, + 0x01, 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x6f, + 0x20, 0x76, 0x69, 0x6c, 0x6c, 0x61, 0x67, 0x65, + 0x00, 0x01, 0x0a, 0x7b, 0x00, 0x7a, 0x00, 0x99, + 0x00, 0xa8, 0x00, 0xa2, 0x00, 0xb5, 0x00, 0xa2, + 0x00, 0xb5, 0x00, 0x04, 0x01, 0x68, 0x61, 0x79, + 0x20, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x00, 0x54, + 0x68, 0x65, 0x72, 0x65, 0x20, 0x6d, 0x75, 0x73, + 0x74, 0x20, 0x62, 0x65, 0x20, 0x73, 0x6f, 0x6d, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x6d, + 0x65, 0x74, 0x61, 0x6c, 0x20, 0x69, 0x6e, 0x73, + 0x69, 0x64, 0x65, 0x2c, 0x00, 0x49, 0x20, 0x63, + 0x61, 0x6e, 0x20, 0x73, 0x65, 0x65, 0x20, 0x69, + 0x74, 0x20, 0x67, 0x6c, 0x69, 0x74, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x67, 0x21, 0x00, 0x00, 0x0b, + 0x6a, 0x00, 0x94, 0x00, 0x7d, 0x00, 0xb3, 0x00, + 0x81, 0x00, 0xbf, 0x00, 0x81, 0x00, 0xbf, 0x00, + 0x04, 0x01, 0x72, 0x61, 0x6b, 0x65, 0x00, 0x49, + 0x74, 0x27, 0x73, 0x20, 0x76, 0x65, 0x72, 0x79, + 0x20, 0x6f, 0x6c, 0x64, 0x20, 0x61, 0x6e, 0x64, + 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, + 0x72, 0x65, 0x6e, 0x27, 0x74, 0x00, 0x6d, 0x61, + 0x6e, 0x79, 0x20, 0x74, 0x65, 0x65, 0x74, 0x68, + 0x20, 0x6c, 0x65, 0x66, 0x74, 0x2e, 0x00, 0x00, + 0x0c, 0xa2, 0x00, 0x73, 0x00, 0xb6, 0x00, 0x80, + 0x00, 0xec, 0x00, 0x8e, 0x00, 0xec, 0x00, 0x8e, + 0x00, 0x04, 0x01, 0x6d, 0x6f, 0x75, 0x73, 0x65, + 0x20, 0x68, 0x6f, 0x6c, 0x65, 0x00, 0x48, 0x6f, + 0x6d, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x70, + 0x61, 0x6e, 0x74, 0x72, 0x79, 0x20, 0x69, 0x6e, + 0x20, 0x6f, 0x6e, 0x65, 0x2e, 0x2e, 0x2e, 0x00, + 0x00, 0x0d, 0xa5, 0x00, 0x5c, 0x00, 0xbf, 0x00, + 0x80, 0x00, 0xec, 0x00, 0x8e, 0x00, 0xec, 0x00, + 0x8e, 0x00, 0x04, 0x01, 0x68, 0x61, 0x79, 0x20, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x00, 0x54, 0x68, + 0x65, 0x72, 0x65, 0x27, 0x73, 0x20, 0x61, 0x20, + 0x6d, 0x6f, 0x75, 0x73, 0x65, 0x20, 0x68, 0x6f, + 0x6c, 0x65, 0x20, 0x69, 0x6e, 0x73, 0x69, 0x64, + 0x65, 0x21, 0x00, 0x00, 0x0e, 0xae, 0x00, 0xbc, + 0x00, 0xb4, 0x00, 0xc2, 0x00, 0xa1, 0x00, 0xc3, + 0x00, 0xa1, 0x00, 0xc3, 0x00, 0x02, 0x00, 0x66, + 0x65, 0x61, 0x74, 0x68, 0x65, 0x72, 0x00, 0x49, + 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x68, + 0x61, 0x76, 0x65, 0x20, 0x62, 0x65, 0x65, 0x6e, + 0x20, 0x64, 0x72, 0x6f, 0x70, 0x70, 0x65, 0x64, + 0x20, 0x62, 0x79, 0x20, 0x68, 0x65, 0x6e, 0x2e, + 0x00, 0x00, 0x0f, 0x51, 0x00, 0x89, 0x00, 0x70, + 0x00, 0xb6, 0x00, 0x84, 0x00, 0xbe, 0x00, 0x84, + 0x00, 0xbe, 0x00, 0x04, 0x01, 0x68, 0x61, 0x79, + 0x20, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x00, 0x01, + 0x10, 0x04, 0x01, 0x0d, 0x00, 0x3f, 0x01, 0x5d, + 0x00, 0xe8, 0x00, 0x86, 0x00, 0xe8, 0x00, 0x86, + 0x00, 0x02, 0x01, 0x6d, 0x61, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x00, 0x47, 0x65, 0x65, 0x2c, 0x20, + 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x70, 0x65, 0x6f, + 0x70, 0x6c, 0x65, 0x20, 0x72, 0x65, 0x61, 0x6c, + 0x6c, 0x79, 0x00, 0x68, 0x61, 0x76, 0x65, 0x20, + 0x6e, 0x6f, 0x20, 0x74, 0x61, 0x73, 0x74, 0x65, + 0x2e, 0x00, 0x00, 0xca, 0xa3, 0x0d, 0xa4, 0x3e, + 0xa4, 0x57, 0xa4, 0x00, 0x00, 0x01, 0x55, 0x00, + 0x35, 0x00, 0x79, 0x00, 0x56, 0x00, 0x67, 0x00, + 0x8f, 0x00, 0x67, 0x00, 0x8f, 0x00, 0x01, 0x01, + 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x00, 0x54, + 0x68, 0x65, 0x72, 0x65, 0x27, 0x73, 0x20, 0x61, + 0x20, 0x73, 0x68, 0x75, 0x74, 0x74, 0x65, 0x72, + 0x2c, 0x20, 0x49, 0x20, 0x63, 0x61, 0x6e, 0x27, + 0x74, 0x20, 0x73, 0x65, 0x65, 0x20, 0x61, 0x20, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x00, 0x00, + 0x02, 0xaa, 0x00, 0x63, 0x00, 0xbd, 0x00, 0x7b, + 0x00, 0x8f, 0x00, 0x8f, 0x00, 0x8f, 0x00, 0x8f, + 0x00, 0x02, 0x01, 0x73, 0x63, 0x75, 0x6c, 0x70, + 0x74, 0x75, 0x72, 0x65, 0x00, 0x54, 0x68, 0x65, + 0x20, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x20, 0x69, + 0x73, 0x20, 0x73, 0x69, 0x63, 0x6b, 0x2e, 0x00, + 0x00, 0x03, 0xc6, 0x00, 0x53, 0x00, 0xf0, 0x00, + 0xa4, 0x00, 0xaa, 0x00, 0x99, 0x00, 0xd1, 0x00, + 0x99, 0x00, 0x02, 0x01, 0x64, 0x6f, 0x6f, 0x72, + 0x00, 0x01, 0x04, 0x00, 0x00, 0x8b, 0x00, 0x22, + 0x00, 0xc7, 0x00, 0x42, 0x00, 0xa7, 0x00, 0x42, + 0x00, 0xa7, 0x00, 0x04, 0x01, 0x77, 0x61, 0x79, + 0x20, 0x6f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x00, 0x01, 0x92, 0xa4, 0xab, + 0xa4, 0xc4, 0xa4, 0x09, 0xa5, 0x3d, 0xa5, 0x8e, + 0xa5, 0xbd, 0xa5, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x5b, 0x00, 0x1a, 0x00, 0xae, 0x00, 0x2b, 0x00, + 0xaa, 0x00, 0x2b, 0x00, 0xaa, 0x00, 0x04, 0x01, + 0x64, 0x6f, 0x6f, 0x72, 0x00, 0x01, 0x02, 0xe8, + 0x00, 0x5b, 0x00, 0x17, 0x01, 0xa8, 0x00, 0xff, + 0x00, 0xb2, 0x00, 0xff, 0x00, 0xa6, 0x00, 0x01, + 0x01, 0x64, 0x6f, 0x6f, 0x72, 0x00, 0x01, 0x03, + 0x2b, 0x00, 0x74, 0x00, 0x4f, 0x00, 0xae, 0x00, + 0x3e, 0x00, 0xb7, 0x00, 0x3e, 0x00, 0xb7, 0x00, + 0x01, 0x01, 0x66, 0x6c, 0x6f, 0x77, 0x65, 0x72, + 0x73, 0x00, 0x53, 0x75, 0x72, 0x70, 0x72, 0x69, + 0x73, 0x65, 0x2c, 0x20, 0x73, 0x75, 0x72, 0x70, + 0x72, 0x69, 0x73, 0x65, 0x2c, 0x20, 0x74, 0x68, + 0x65, 0x79, 0x20, 0x61, 0x72, 0x65, 0x6e, 0x27, + 0x74, 0x00, 0x70, 0x6c, 0x61, 0x73, 0x74, 0x69, + 0x63, 0x2e, 0x00, 0x00, 0x04, 0x82, 0x00, 0x32, + 0x00, 0xab, 0x00, 0x69, 0x00, 0xa2, 0x00, 0xad, + 0x00, 0xa2, 0x00, 0xad, 0x00, 0x01, 0x01, 0x70, + 0x6c, 0x61, 0x6e, 0x74, 0x00, 0x48, 0x6f, 0x77, + 0x27, 0x73, 0x20, 0x69, 0x74, 0x20, 0x68, 0x61, + 0x6e, 0x67, 0x69, 0x6e, 0x27, 0x2c, 0x20, 0x52, + 0x6f, 0x62, 0x62, 0x69, 0x65, 0x3f, 0x00, 0x00, + 0x05, 0x1e, 0x00, 0x49, 0x00, 0x9d, 0x00, 0xa8, + 0x00, 0xa2, 0x00, 0xad, 0x00, 0xa2, 0x00, 0xad, + 0x00, 0x01, 0x01, 0x73, 0x74, 0x61, 0x69, 0x72, + 0x73, 0x00, 0x54, 0x68, 0x65, 0x79, 0x20, 0x73, + 0x61, 0x79, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, + 0x20, 0x73, 0x74, 0x65, 0x70, 0x20, 0x6d, 0x61, + 0x6b, 0x65, 0x73, 0x20, 0x79, 0x6f, 0x75, 0x72, + 0x20, 0x6c, 0x69, 0x66, 0x65, 0x00, 0x33, 0x20, + 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x20, + 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x2e, 0x00, + 0x00, 0x06, 0x1f, 0x01, 0xa8, 0x00, 0x3f, 0x01, + 0xc7, 0x00, 0x18, 0x01, 0xbc, 0x00, 0x3f, 0x01, + 0xbc, 0x00, 0x02, 0x01, 0x6f, 0x74, 0x68, 0x65, + 0x72, 0x20, 0x70, 0x61, 0x72, 0x74, 0x20, 0x6f, + 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, + 0x72, 0x72, 0x69, 0x64, 0x6f, 0x72, 0x00, 0x01, + 0x07, 0x00, 0x00, 0xc0, 0x00, 0x3f, 0x01, 0xc7, + 0x00, 0xa0, 0x00, 0xbc, 0x00, 0xa0, 0x00, 0xc7, + 0x00, 0x03, 0x01, 0x77, 0x61, 0x79, 0x20, 0x74, + 0x6f, 0x20, 0x70, 0x6f, 0x72, 0x63, 0x68, 0x00, + 0x01, 0x00, 0xa6, 0x1f, 0xa6, 0x4d, 0xa6, 0x84, + 0xa6, 0xd4, 0xa6, 0xee, 0xa6, 0x11, 0xa7, 0x51, + 0xa7, 0x72, 0xa7, 0x8b, 0xa7, 0xb3, 0xa7, 0xdb, + 0xa7, 0x03, 0xa8, 0x2b, 0xa8, 0x53, 0xa8, 0x7b, + 0xa8, 0x00, 0x00, 0x01, 0x00, 0x00, 0x78, 0x00, + 0x51, 0x00, 0x9c, 0x00, 0x12, 0x00, 0x9f, 0x00, + 0x12, 0x00, 0x9f, 0x00, 0x01, 0x01, 0x64, 0x6f, + 0x77, 0x6e, 0x73, 0x74, 0x61, 0x69, 0x72, 0x73, + 0x00, 0x01, 0x02, 0x14, 0x00, 0x3f, 0x00, 0x55, + 0x00, 0x6a, 0x00, 0x34, 0x00, 0xa5, 0x00, 0x34, + 0x00, 0xa5, 0x00, 0x01, 0x01, 0x70, 0x69, 0x63, + 0x74, 0x75, 0x72, 0x65, 0x00, 0x49, 0x74, 0x27, + 0x73, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x63, + 0x61, 0x73, 0x74, 0x6c, 0x65, 0x2e, 0x00, 0x00, + 0x03, 0x29, 0x01, 0x5f, 0x00, 0x3f, 0x01, 0xb0, + 0x00, 0x0f, 0x01, 0xae, 0x00, 0x0f, 0x01, 0xae, + 0x00, 0x02, 0x01, 0x61, 0x72, 0x6d, 0x6f, 0x75, + 0x72, 0x00, 0x54, 0x68, 0x65, 0x20, 0x62, 0x65, + 0x74, 0x61, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, + 0x74, 0x61, 0x6e, 0x6b, 0x2e, 0x00, 0x00, 0x04, + 0xcf, 0x00, 0x63, 0x00, 0xda, 0x00, 0x67, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x00, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x20, + 0x74, 0x61, 0x70, 0x65, 0x00, 0x57, 0x68, 0x61, + 0x74, 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x20, 0x6f, + 0x66, 0x20, 0x6d, 0x6f, 0x76, 0x69, 0x65, 0x20, + 0x6d, 0x75, 0x73, 0x74, 0x20, 0x69, 0x74, 0x20, + 0x62, 0x65, 0x00, 0x68, 0x69, 0x64, 0x64, 0x65, + 0x6e, 0x20, 0x73, 0x6f, 0x20, 0x77, 0x65, 0x6c, + 0x6c, 0x3f, 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x05, + 0xc3, 0x00, 0x54, 0x00, 0xc7, 0x00, 0x5d, 0x00, + 0xd0, 0x00, 0x97, 0x00, 0xd0, 0x00, 0x97, 0x00, + 0x01, 0x01, 0x62, 0x6f, 0x6f, 0x6b, 0x00, 0x00, + 0x00, 0x06, 0x6f, 0x00, 0x2f, 0x00, 0x3f, 0x01, + 0x6e, 0x00, 0xdd, 0x00, 0x9b, 0x00, 0xdd, 0x00, + 0x9b, 0x00, 0x01, 0x01, 0x62, 0x6f, 0x6f, 0x6b, + 0x73, 0x00, 0x4f, 0x68, 0x2c, 0x20, 0x62, 0x6f, + 0x79, 0x21, 0x00, 0x00, 0x07, 0xd5, 0x00, 0xab, + 0x00, 0xe3, 0x00, 0xbd, 0x00, 0xea, 0x00, 0xbd, + 0x00, 0xea, 0x00, 0xbd, 0x00, 0x04, 0x01, 0x74, + 0x72, 0x61, 0x73, 0x68, 0x20, 0x63, 0x61, 0x6e, + 0x00, 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, + 0x72, 0x65, 0x20, 0x61, 0x20, 0x6c, 0x6f, 0x74, + 0x20, 0x6f, 0x66, 0x20, 0x70, 0x61, 0x70, 0x65, + 0x72, 0x73, 0x20, 0x69, 0x6e, 0x73, 0x69, 0x64, + 0x65, 0x2e, 0x00, 0x00, 0x08, 0x98, 0x00, 0x8d, + 0x00, 0xb2, 0x00, 0xc1, 0x00, 0xa5, 0x00, 0xc6, + 0x00, 0xa5, 0x00, 0xc6, 0x00, 0x01, 0x01, 0x63, + 0x68, 0x61, 0x69, 0x72, 0x00, 0x53, 0x6f, 0x66, + 0x74, 0x79, 0x2e, 0x00, 0x00, 0x09, 0x87, 0x00, + 0x86, 0x00, 0xa2, 0x00, 0x99, 0x00, 0x88, 0x00, + 0xc1, 0x00, 0x88, 0x00, 0xc1, 0x00, 0x01, 0x01, + 0x6c, 0x61, 0x6d, 0x70, 0x00, 0x01, 0x0a, 0x7c, + 0x00, 0x9e, 0x00, 0x95, 0x00, 0xa6, 0x00, 0x88, + 0x00, 0xc1, 0x00, 0x88, 0x00, 0xc1, 0x00, 0x01, + 0x01, 0x64, 0x72, 0x61, 0x77, 0x65, 0x72, 0x00, + 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x6c, 0x6f, + 0x73, 0x65, 0x64, 0x2e, 0x00, 0x00, 0x0b, 0x7c, + 0x00, 0xa8, 0x00, 0x95, 0x00, 0xaf, 0x00, 0x88, + 0x00, 0xc1, 0x00, 0x88, 0x00, 0xc1, 0x00, 0x01, + 0x01, 0x64, 0x72, 0x61, 0x77, 0x65, 0x72, 0x00, + 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x6c, 0x6f, + 0x73, 0x65, 0x64, 0x2e, 0x00, 0x00, 0x0c, 0x7c, + 0x00, 0xb1, 0x00, 0x95, 0x00, 0xb8, 0x00, 0x88, + 0x00, 0xc1, 0x00, 0x88, 0x00, 0xc1, 0x00, 0x01, + 0x01, 0x64, 0x72, 0x61, 0x77, 0x65, 0x72, 0x00, + 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x6c, 0x6f, + 0x73, 0x65, 0x64, 0x2e, 0x00, 0x00, 0x0d, 0xb6, + 0x00, 0x9e, 0x00, 0xd0, 0x00, 0xa6, 0x00, 0xc4, + 0x00, 0xc0, 0x00, 0xc4, 0x00, 0xc0, 0x00, 0x01, + 0x01, 0x64, 0x72, 0x61, 0x77, 0x65, 0x72, 0x00, + 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x6c, 0x6f, + 0x73, 0x65, 0x64, 0x2e, 0x00, 0x00, 0x0e, 0xb6, + 0x00, 0xa8, 0x00, 0xd0, 0x00, 0xaf, 0x00, 0xc4, + 0x00, 0xc0, 0x00, 0xc4, 0x00, 0xc0, 0x00, 0x01, + 0x01, 0x64, 0x72, 0x61, 0x77, 0x65, 0x72, 0x00, + 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x6c, 0x6f, + 0x73, 0x65, 0x64, 0x2e, 0x00, 0x00, 0x0f, 0xb6, + 0x00, 0xb1, 0x00, 0xd0, 0x00, 0xb8, 0x00, 0xc4, + 0x00, 0xc0, 0x00, 0xc4, 0x00, 0xc0, 0x00, 0x01, + 0x01, 0x64, 0x72, 0x61, 0x77, 0x65, 0x72, 0x00, + 0x49, 0x74, 0x27, 0x73, 0x20, 0x63, 0x6c, 0x6f, + 0x73, 0x65, 0x64, 0x2e, 0x00, 0x00, 0x10, 0xf3, + 0x00, 0x71, 0x00, 0x18, 0x01, 0x98, 0x00, 0x06, + 0x01, 0x9e, 0x00, 0x06, 0x01, 0x9e, 0x00, 0x01, + 0x01, 0x6c, 0x61, 0x64, 0x64, 0x65, 0x72, 0x00, + 0x49, 0x6e, 0x64, 0x69, 0x73, 0x70, 0x65, 0x6e, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x64, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, + 0x6f, 0x20, 0x67, 0x69, 0x72, 0x6c, 0x73, 0x20, + 0x69, 0x6e, 0x20, 0x73, 0x6b, 0x69, 0x72, 0x74, + 0x73, 0x2e, 0x00, 0x00, 0xd5, 0xa8, 0xee, 0xa8, + 0x1e, 0xa9, 0x58, 0xa9, 0x96, 0xa9, 0xcc, 0xa9, + 0xf4, 0xa9, 0x1f, 0xaa, 0x38, 0xaa, 0x00, 0x00, + 0x01, 0x73, 0x00, 0x5b, 0x00, 0xa3, 0x00, 0xa7, + 0x00, 0x8c, 0x00, 0xac, 0x00, 0x8c, 0x00, 0xa6, + 0x00, 0x01, 0x01, 0x64, 0x6f, 0x6f, 0x72, 0x00, + 0x01, 0x02, 0x36, 0x01, 0x8c, 0x00, 0x3b, 0x01, + 0x91, 0x00, 0x2c, 0x01, 0xb2, 0x00, 0x2c, 0x01, + 0xb2, 0x00, 0x02, 0x01, 0x68, 0x6f, 0x6c, 0x65, + 0x00, 0x49, 0x74, 0x20, 0x68, 0x61, 0x73, 0x20, + 0x61, 0x20, 0x73, 0x71, 0x75, 0x61, 0x72, 0x65, + 0x20, 0x73, 0x68, 0x61, 0x70, 0x65, 0x2e, 0x00, + 0x00, 0x03, 0x31, 0x01, 0x8b, 0x00, 0x3b, 0x01, + 0x91, 0x00, 0x2c, 0x01, 0xb2, 0x00, 0x2c, 0x01, + 0xb2, 0x00, 0x02, 0x00, 0x68, 0x61, 0x6e, 0x64, + 0x6c, 0x65, 0x00, 0x49, 0x74, 0x20, 0x66, 0x69, + 0x74, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x68, 0x6f, 0x6c, 0x65, 0x20, 0x70, + 0x65, 0x72, 0x66, 0x65, 0x63, 0x74, 0x6c, 0x79, + 0x2e, 0x00, 0x00, 0x04, 0x04, 0x00, 0x3f, 0x00, + 0x64, 0x00, 0x61, 0x00, 0x3b, 0x00, 0xb2, 0x00, + 0x3b, 0x00, 0xb2, 0x00, 0x01, 0x01, 0x70, 0x69, + 0x63, 0x74, 0x75, 0x72, 0x65, 0x00, 0x49, 0x20, + 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x20, 0x6c, + 0x69, 0x6b, 0x65, 0x64, 0x20, 0x53, 0x60, 0x54, + 0x60, 0x41, 0x60, 0x52, 0x60, 0x20, 0x57, 0x60, + 0x41, 0x60, 0x52, 0x60, 0x53, 0x60, 0x2e, 0x00, + 0x00, 0x05, 0xd8, 0x00, 0x4d, 0x00, 0x09, 0x01, + 0x79, 0x00, 0xf3, 0x00, 0xb5, 0x00, 0xf3, 0x00, + 0xb5, 0x00, 0x01, 0x01, 0x70, 0x69, 0x63, 0x74, + 0x75, 0x72, 0x65, 0x00, 0x41, 0x6e, 0x64, 0x20, + 0x49, 0x20, 0x74, 0x6f, 0x75, 0x67, 0x68, 0x74, + 0x20, 0x49, 0x20, 0x77, 0x61, 0x73, 0x20, 0x77, + 0x65, 0x69, 0x72, 0x64, 0x2e, 0x00, 0x00, 0x06, + 0xf3, 0x00, 0x91, 0x00, 0x15, 0x01, 0xc7, 0x00, + 0xf3, 0x00, 0xb5, 0x00, 0xf3, 0x00, 0xb5, 0x00, + 0x03, 0x01, 0x66, 0x6c, 0x6f, 0x77, 0x65, 0x72, + 0x73, 0x00, 0x4e, 0x69, 0x63, 0x65, 0x20, 0x73, + 0x6d, 0x65, 0x6c, 0x6c, 0x2e, 0x00, 0x00, 0x07, + 0x00, 0x00, 0xa8, 0x00, 0x1a, 0x00, 0xc7, 0x00, + 0x28, 0x00, 0xbc, 0x00, 0x00, 0x00, 0xbc, 0x00, + 0x04, 0x01, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, + 0x70, 0x61, 0x72, 0x74, 0x20, 0x6f, 0x66, 0x20, + 0x63, 0x6f, 0x72, 0x72, 0x69, 0x64, 0x6f, 0x72, + 0x00, 0x01, 0x08, 0x25, 0x01, 0x5f, 0x00, 0x3f, + 0x01, 0xb6, 0x00, 0x11, 0x01, 0xab, 0x00, 0x11, + 0x01, 0xab, 0x00, 0x02, 0x01, 0x64, 0x6f, 0x6f, + 0x72, 0x00, 0x01, 0x09, 0x0e, 0x00, 0x5a, 0x00, + 0x32, 0x00, 0xb0, 0x00, 0x28, 0x00, 0xbc, 0x00, + 0x28, 0x00, 0xbc, 0x00, 0x01, 0x01, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x65, 0x00, 0x42, 0x69, 0x7a, + 0x61, 0x72, 0x72, 0x65, 0x2e, 0x00, 0x00, 0x6e, + 0xaa, 0x9a, 0xaa, 0xcd, 0xaa, 0x12, 0xab, 0x5d, + 0xab, 0x79, 0xab, 0x92, 0xab, 0xda, 0xab, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x52, 0x00, 0xb6, 0x00, 0x52, 0x00, + 0xb6, 0x00, 0x01, 0x01, 0x72, 0x6f, 0x62, 0x6f, + 0x74, 0x00, 0x49, 0x6d, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x76, 0x65, 0x2e, 0x00, 0x00, 0x4d, + 0x69, 0x6b, 0x65, 0x00, 0xff, 0x02, 0x2d, 0x00, + 0x75, 0x00, 0x37, 0x00, 0x83, 0x00, 0x33, 0x00, + 0xaa, 0x00, 0x33, 0x00, 0xaa, 0x00, 0x01, 0x00, + 0x6a, 0x61, 0x72, 0x00, 0x54, 0x68, 0x69, 0x73, + 0x20, 0x6a, 0x61, 0x72, 0x20, 0x69, 0x73, 0x20, + 0x66, 0x75, 0x6c, 0x6c, 0x20, 0x6f, 0x66, 0x20, + 0x70, 0x69, 0x6c, 0x6c, 0x73, 0x2e, 0x00, 0x00, + 0x03, 0x2d, 0x00, 0x75, 0x00, 0x37, 0x00, 0x83, + 0x00, 0x33, 0x00, 0xaa, 0x00, 0x33, 0x00, 0xaa, + 0x00, 0x01, 0x00, 0x62, 0x6f, 0x6f, 0x6b, 0x00, + 0x49, 0x74, 0x27, 0x73, 0x20, 0x62, 0x69, 0x67, + 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6c, 0x6f, 0x6f, + 0x6b, 0x73, 0x00, 0x6c, 0x69, 0x6b, 0x65, 0x20, + 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x6b, 0x69, 0x6e, + 0x64, 0x20, 0x6f, 0x66, 0x00, 0x64, 0x69, 0x61, + 0x72, 0x79, 0x2e, 0x00, 0x00, 0x04, 0x74, 0x00, + 0x2d, 0x00, 0xb9, 0x00, 0x7e, 0x00, 0x98, 0x00, + 0xa5, 0x00, 0x98, 0x00, 0xa5, 0x00, 0x01, 0x01, + 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x00, + 0x54, 0x68, 0x61, 0x74, 0x20, 0x6f, 0x6e, 0x65, + 0x27, 0x73, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, + 0x2e, 0x20, 0x49, 0x27, 0x64, 0x20, 0x6c, 0x69, + 0x6b, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x68, 0x61, + 0x76, 0x65, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6d, + 0x79, 0x73, 0x65, 0x6c, 0x66, 0x2e, 0x00, 0x00, + 0x05, 0x88, 0x00, 0x88, 0x00, 0xa5, 0x00, 0x9f, + 0x00, 0x98, 0x00, 0xa5, 0x00, 0x98, 0x00, 0xa5, + 0x00, 0x01, 0x01, 0x63, 0x61, 0x62, 0x69, 0x6e, + 0x65, 0x74, 0x00, 0x01, 0x06, 0x4e, 0x00, 0xbd, + 0x00, 0xe0, 0x00, 0xc7, 0x00, 0x8b, 0x00, 0xbc, + 0x00, 0x8b, 0x00, 0xc7, 0x00, 0x03, 0x01, 0x65, + 0x78, 0x69, 0x74, 0x00, 0x01, 0x07, 0x00, 0x00, + 0xc7, 0x00, 0x4d, 0x00, 0xc7, 0x00, 0x8b, 0x00, + 0xbc, 0x00, 0x39, 0x00, 0xc6, 0x00, 0x03, 0x00, + 0x6c, 0x65, 0x66, 0x74, 0x20, 0x6c, 0x6f, 0x77, + 0x65, 0x72, 0x20, 0x65, 0x64, 0x67, 0x65, 0x20, + 0x6f, 0x66, 0x20, 0x73, 0x63, 0x72, 0x65, 0x65, + 0x6e, 0x00, 0x49, 0x20, 0x63, 0x6f, 0x75, 0x6c, + 0x64, 0x20, 0x74, 0x72, 0x79, 0x20, 0x74, 0x6f, + 0x20, 0x68, 0x69, 0x64, 0x65, 0x20, 0x68, 0x65, + 0x72, 0x65, 0x21, 0x00, 0x00, 0x08, 0x89, 0x00, + 0x7e, 0x00, 0x93, 0x00, 0x85, 0x00, 0x8f, 0x00, + 0xa3, 0x00, 0x8f, 0x00, 0xa3, 0x00, 0x01, 0x00, + 0x64, 0x6f, 0x6f, 0x72, 0x20, 0x68, 0x61, 0x6e, + 0x64, 0x6c, 0x65, 0x00, 0x4a, 0x6f, 0x68, 0x6e, + 0x20, 0x4e, 0x6f, 0x74, 0x79, 0x20, 0x6c, 0x65, + 0x66, 0x74, 0x20, 0x69, 0x74, 0x20, 0x68, 0x65, + 0x72, 0x65, 0x2e, 0x00, 0x00, 0x2c, 0xac, 0x6b, + 0xac, 0xb8, 0xac, 0xe3, 0xac, 0xff, 0xac, 0x43, + 0xad, 0x8d, 0xad, 0xcc, 0xad, 0x1d, 0xae, 0x6e, + 0xae, 0xbe, 0xae, 0xf8, 0xae, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8d, 0x00, 0x9f, 0x00, 0x8d, 0x00, 0x9f, 0x00, + 0x04, 0x01, 0x63, 0x6f, 0x6f, 0x6b, 0x00, 0x48, + 0x65, 0x27, 0x73, 0x20, 0x63, 0x6f, 0x6d, 0x70, + 0x6c, 0x65, 0x74, 0x65, 0x6c, 0x79, 0x20, 0x61, + 0x64, 0x64, 0x69, 0x63, 0x74, 0x65, 0x64, 0x20, + 0x74, 0x6f, 0x20, 0x68, 0x69, 0x73, 0x20, 0x77, + 0x6f, 0x72, 0x6b, 0x2e, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x04, + 0x01, 0x73, 0x74, 0x65, 0x77, 0x00, 0x49, 0x74, + 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, + 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x20, 0x6b, 0x69, + 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x6f, + 0x75, 0x70, 0x2e, 0x00, 0x4e, 0x6f, 0x77, 0x20, + 0x77, 0x69, 0x74, 0x68, 0x20, 0x65, 0x78, 0x74, + 0x72, 0x61, 0x20, 0x70, 0x6f, 0x77, 0x65, 0x72, + 0x2e, 0x00, 0x00, 0x03, 0x26, 0x00, 0x84, 0x00, + 0x30, 0x00, 0x8e, 0x00, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x04, 0x01, 0x68, 0x6f, + 0x74, 0x20, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x00, + 0x54, 0x68, 0x61, 0x74, 0x27, 0x73, 0x20, 0x43, + 0x4f, 0x4f, 0x4c, 0x2e, 0x00, 0x00, 0x04, 0x1c, + 0x01, 0x9c, 0x00, 0x3f, 0x01, 0xc7, 0x00, 0x0b, + 0x01, 0xb2, 0x00, 0x3f, 0x01, 0xb2, 0x00, 0x02, + 0x01, 0x77, 0x61, 0x79, 0x20, 0x6f, 0x75, 0x74, + 0x00, 0x01, 0x05, 0x9e, 0x00, 0x7f, 0x00, 0xc1, + 0x00, 0x9b, 0x00, 0xc0, 0x00, 0xa0, 0x00, 0xc0, + 0x00, 0xa0, 0x00, 0x01, 0x01, 0x72, 0x65, 0x66, + 0x72, 0x69, 0x67, 0x65, 0x72, 0x61, 0x74, 0x6f, + 0x72, 0x00, 0x4d, 0x79, 0x20, 0x66, 0x61, 0x76, + 0x6f, 0x75, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, + 0x68, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x6b, 0x69, 0x74, 0x63, + 0x68, 0x65, 0x6e, 0x2e, 0x00, 0x00, 0x06, 0x81, + 0x00, 0x74, 0x00, 0x9c, 0x00, 0x7c, 0x00, 0x8d, + 0x00, 0x9f, 0x00, 0x8d, 0x00, 0x9f, 0x00, 0x01, + 0x01, 0x72, 0x61, 0x64, 0x69, 0x6f, 0x00, 0x49, + 0x74, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x20, + 0x77, 0x69, 0x74, 0x68, 0x20, 0x62, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x69, 0x65, 0x73, 0x2e, 0x20, + 0x4a, 0x75, 0x73, 0x74, 0x20, 0x6c, 0x69, 0x6b, + 0x65, 0x00, 0x74, 0x68, 0x65, 0x20, 0x77, 0x61, + 0x6c, 0x6b, 0x6d, 0x61, 0x6e, 0x2e, 0x00, 0x00, + 0x07, 0xdb, 0x00, 0x70, 0x00, 0xe0, 0x00, 0x7c, + 0x00, 0xdd, 0x00, 0xa0, 0x00, 0xdd, 0x00, 0xa0, + 0x00, 0x01, 0x01, 0x63, 0x68, 0x69, 0x6c, 0x6c, + 0x69, 0x00, 0x49, 0x74, 0x27, 0x73, 0x20, 0x72, + 0x65, 0x64, 0x2c, 0x20, 0x69, 0x74, 0x27, 0x73, + 0x20, 0x68, 0x6f, 0x74, 0x2c, 0x20, 0x69, 0x74, + 0x27, 0x73, 0x20, 0x2e, 0x2e, 0x2e, 0x43, 0x48, + 0x49, 0x4c, 0x4c, 0x49, 0x21, 0x00, 0x00, 0x08, + 0xd5, 0x00, 0x77, 0x00, 0xe6, 0x00, 0x7e, 0x00, + 0xdd, 0x00, 0xa0, 0x00, 0xdd, 0x00, 0xa0, 0x00, + 0x01, 0x00, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x20, + 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x63, 0x68, + 0x69, 0x6c, 0x6c, 0x69, 0x20, 0x62, 0x6f, 0x74, + 0x74, 0x6c, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x6f, + 0x64, 0x00, 0x49, 0x74, 0x27, 0x73, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x70, 0x6c, 0x61, 0x63, 0x65, + 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x2e, 0x2e, + 0x2e, 0x20, 0x65, 0x74, 0x63, 0x2e, 0x00, 0x00, + 0x09, 0x23, 0x01, 0x77, 0x00, 0x2f, 0x01, 0x7e, + 0x00, 0x28, 0x01, 0xa0, 0x00, 0x28, 0x01, 0xa0, + 0x00, 0x01, 0x01, 0x70, 0x61, 0x73, 0x74, 0x72, + 0x79, 0x20, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, + 0x00, 0x4d, 0x65, 0x6e, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x67, 0x75, 0x6e, 0x73, 0x2e, 0x20, 0x57, + 0x6f, 0x6d, 0x65, 0x6e, 0x20, 0x75, 0x73, 0x65, + 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x00, 0x31, + 0x20, 0x3a, 0x20, 0x30, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x77, 0x6f, 0x6d, 0x65, 0x6e, 0x2e, 0x00, + 0x00, 0x0a, 0x59, 0x00, 0x70, 0x00, 0x6d, 0x00, + 0x7d, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x01, 0x6d, 0x69, 0x63, 0x72, + 0x6f, 0x77, 0x61, 0x76, 0x65, 0x00, 0x49, 0x74, + 0x27, 0x73, 0x20, 0x61, 0x20, 0x6d, 0x61, 0x67, + 0x69, 0x63, 0x20, 0x74, 0x6f, 0x6f, 0x6c, 0x2e, + 0x20, 0x49, 0x74, 0x20, 0x74, 0x75, 0x72, 0x6e, + 0x73, 0x00, 0x61, 0x6e, 0x79, 0x20, 0x64, 0x69, + 0x73, 0x68, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, + 0x72, 0x75, 0x62, 0x62, 0x65, 0x72, 0x2e, 0x00, + 0x00, 0x0b, 0xb4, 0x00, 0x67, 0x00, 0xd5, 0x00, + 0x74, 0x00, 0xc7, 0x00, 0xa2, 0x00, 0xc7, 0x00, + 0xa2, 0x00, 0x01, 0x01, 0x6b, 0x6e, 0x69, 0x76, + 0x65, 0x73, 0x00, 0x41, 0x20, 0x76, 0x65, 0x72, + 0x79, 0x20, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x00, 0x00, 0x0c, 0xad, 0x00, 0x82, 0x00, + 0xb8, 0x00, 0x8c, 0x00, 0xc0, 0x00, 0xa0, 0x00, + 0xc0, 0x00, 0xa0, 0x00, 0x01, 0x01, 0x6d, 0x65, + 0x61, 0x74, 0x00, 0x49, 0x74, 0x27, 0x73, 0x20, + 0x69, 0x6e, 0x20, 0x61, 0x20, 0x70, 0x6c, 0x61, + 0x73, 0x74, 0x69, 0x63, 0x20, 0x62, 0x61, 0x67, + 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x68, + 0x61, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x7a, 0x65, + 0x6e, 0x20, 0x74, 0x6f, 0x00, 0x74, 0x68, 0x65, + 0x20, 0x73, 0x68, 0x65, 0x6c, 0x66, 0x2e, 0x00, + 0x00, 0x56, 0xaf, 0x6f, 0xaf, 0x97, 0xaf, 0xaf, + 0xaf, 0xe4, 0xaf, 0x00, 0xb0, 0x29, 0xb0, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x2d, 0x00, 0x23, 0x00, + 0x82, 0x00, 0x34, 0x00, 0x85, 0x00, 0x28, 0x00, + 0x80, 0x00, 0x04, 0x01, 0x64, 0x6f, 0x6f, 0x72, + 0x00, 0x01, 0x02, 0x15, 0x01, 0x7d, 0x00, 0x36, + 0x01, 0x9e, 0x00, 0x25, 0x01, 0xa6, 0x00, 0x25, + 0x01, 0xa6, 0x00, 0x01, 0x01, 0x73, 0x69, 0x6e, + 0x6b, 0x00, 0x49, 0x74, 0x20, 0x68, 0x61, 0x73, + 0x20, 0x61, 0x20, 0x68, 0x6f, 0x6c, 0x65, 0x2e, + 0x00, 0x00, 0x03, 0x1e, 0x01, 0x70, 0x00, 0x2c, + 0x01, 0x7c, 0x00, 0x14, 0x01, 0x9f, 0x00, 0x14, + 0x01, 0x9f, 0x00, 0x02, 0x01, 0x74, 0x61, 0x70, + 0x00, 0x01, 0x04, 0x55, 0x00, 0x2e, 0x00, 0x76, + 0x00, 0x67, 0x00, 0x60, 0x00, 0x8c, 0x00, 0x60, + 0x00, 0x8c, 0x00, 0x01, 0x01, 0x6d, 0x69, 0x72, + 0x72, 0x6f, 0x72, 0x00, 0x49, 0x74, 0x27, 0x73, + 0x20, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x65, 0x64, + 0x20, 0x69, 0x6e, 0x20, 0x6f, 0x6c, 0x64, 0x20, + 0x64, 0x69, 0x72, 0x74, 0x2e, 0x00, 0x00, 0x05, + 0x4a, 0x00, 0x6c, 0x00, 0x74, 0x00, 0x86, 0x00, + 0x62, 0x00, 0x87, 0x00, 0x62, 0x00, 0x87, 0x00, + 0x01, 0x01, 0x63, 0x61, 0x62, 0x69, 0x6e, 0x65, + 0x74, 0x00, 0x01, 0x06, 0x7a, 0x00, 0x82, 0x00, + 0xff, 0x00, 0xa4, 0x00, 0xc0, 0x00, 0xae, 0x00, + 0xc0, 0x00, 0xae, 0x00, 0x01, 0x01, 0x62, 0x61, + 0x74, 0x68, 0x00, 0x57, 0x68, 0x6f, 0x61, 0x21, + 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, 0x62, 0x69, + 0x67, 0x21, 0x00, 0x00, 0x07, 0x34, 0x00, 0x72, + 0x00, 0x3a, 0x00, 0x7d, 0x00, 0x44, 0x00, 0x81, + 0x00, 0x44, 0x00, 0x81, 0x00, 0x04, 0x01, 0x73, + 0x6f, 0x63, 0x6b, 0x00, 0x49, 0x74, 0x20, 0x6d, + 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x4a, + 0x6f, 0x68, 0x6e, 0x20, 0x4e, 0x6f, 0x74, 0x79, + 0x27, 0x73, 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x76, + 0xb0, 0xb4, 0xb0, 0xf9, 0xb0, 0x3b, 0xb1, 0x84, + 0xb1, 0xe6, 0xb1, 0x2a, 0xb2, 0x7d, 0xb2, 0xc3, + 0xb2, 0xdf, 0xb2, 0x1b, 0xb3, 0x6c, 0xb3, 0x00, + 0x00, 0x01, 0x52, 0x00, 0x8a, 0x00, 0x5e, 0x00, + 0x9b, 0x00, 0x68, 0x00, 0xb5, 0x00, 0x68, 0x00, + 0xb5, 0x00, 0x04, 0x01, 0x63, 0x6f, 0x67, 0x6e, + 0x61, 0x63, 0x00, 0x42, 0x6f, 0x74, 0x74, 0x6c, + 0x65, 0x20, 0x61, 0x73, 0x20, 0x62, 0x69, 0x67, + 0x20, 0x61, 0x73, 0x20, 0x4e, 0x61, 0x70, 0x6f, + 0x6c, 0x65, 0x6f, 0x6e, 0x20, 0x68, 0x69, 0x6d, + 0x73, 0x65, 0x6c, 0x66, 0x2e, 0x00, 0x00, 0x02, + 0x52, 0x00, 0x8a, 0x00, 0x5e, 0x00, 0x96, 0x00, + 0x68, 0x00, 0xb5, 0x00, 0x68, 0x00, 0xb5, 0x00, + 0x04, 0x01, 0x70, 0x69, 0x6e, 0x63, 0x65, 0x72, + 0x73, 0x00, 0x54, 0x68, 0x65, 0x72, 0x65, 0x27, + 0x73, 0x20, 0x61, 0x20, 0x70, 0x61, 0x69, 0x72, + 0x20, 0x6f, 0x66, 0x20, 0x70, 0x69, 0x6e, 0x63, + 0x65, 0x72, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x2e, 0x00, 0x00, 0x03, 0x71, 0x00, 0x27, + 0x00, 0x91, 0x00, 0x72, 0x00, 0x84, 0x00, 0xaf, + 0x00, 0x84, 0x00, 0xaf, 0x00, 0x01, 0x01, 0x6d, + 0x61, 0x73, 0x6b, 0x00, 0x54, 0x68, 0x69, 0x73, + 0x20, 0x69, 0x73, 0x20, 0x73, 0x6f, 0x6d, 0x65, + 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x20, 0x6f, 0x66, + 0x20, 0x63, 0x6f, 0x6f, 0x6c, 0x20, 0x70, 0x72, + 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, + 0x61, 0x72, 0x74, 0x2e, 0x00, 0x00, 0x04, 0x6c, + 0x00, 0x73, 0x00, 0x9e, 0x00, 0x91, 0x00, 0x87, + 0x00, 0xab, 0x00, 0x87, 0x00, 0xab, 0x00, 0x01, + 0x01, 0x54, 0x56, 0x00, 0x4f, 0x6e, 0x65, 0x20, + 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x6b, 0x69, + 0x6c, 0x6c, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, + 0x74, 0x69, 0x6d, 0x65, 0x20, 0x61, 0x6e, 0x64, + 0x00, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, + 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x00, 0x00, 0x05, + 0x78, 0x00, 0x94, 0x00, 0x92, 0x00, 0x9a, 0x00, + 0x84, 0x00, 0xaf, 0x00, 0x84, 0x00, 0xaf, 0x00, + 0x01, 0x01, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x20, + 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x00, 0x49, + 0x74, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6e, 0x6f, + 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x20, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x2c, 0x00, 0x62, 0x75, 0x74, 0x20, 0x74, 0x68, + 0x61, 0x74, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x6e, + 0x27, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x00, 0x74, 0x6f, 0x20, 0x6d, 0x65, 0x20, + 0x61, 0x6e, 0x79, 0x77, 0x61, 0x79, 0x2e, 0x00, + 0x00, 0x06, 0xb9, 0x00, 0x98, 0x00, 0xcb, 0x00, + 0xa4, 0x00, 0xc1, 0x00, 0xa9, 0x00, 0xc1, 0x00, + 0xa9, 0x00, 0x01, 0x01, 0x6e, 0x65, 0x77, 0x73, + 0x70, 0x61, 0x70, 0x65, 0x72, 0x00, 0x54, 0x68, + 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x73, 0x6f, + 0x6d, 0x65, 0x20, 0x6b, 0x69, 0x6e, 0x64, 0x20, + 0x6f, 0x66, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x20, 0x6e, 0x65, 0x77, 0x73, 0x70, 0x61, 0x70, + 0x65, 0x72, 0x2e, 0x00, 0x00, 0x07, 0xd2, 0x00, + 0x93, 0x00, 0xe4, 0x00, 0xa0, 0x00, 0xdb, 0x00, + 0xaa, 0x00, 0xdb, 0x00, 0xaa, 0x00, 0x01, 0x01, + 0x68, 0x69, 0x2d, 0x66, 0x69, 0x00, 0x57, 0x68, + 0x61, 0x74, 0x20, 0x61, 0x20, 0x62, 0x61, 0x62, + 0x79, 0x21, 0x20, 0x49, 0x74, 0x20, 0x63, 0x6f, + 0x75, 0x6c, 0x64, 0x20, 0x64, 0x72, 0x69, 0x76, + 0x65, 0x00, 0x61, 0x6c, 0x6c, 0x20, 0x6d, 0x79, + 0x20, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, + 0x75, 0x72, 0x73, 0x20, 0x69, 0x6e, 0x73, 0x61, + 0x6e, 0x65, 0x21, 0x2e, 0x2e, 0x2e, 0x00, 0x00, + 0x08, 0xc0, 0x00, 0xa4, 0x00, 0x3f, 0x01, 0xc7, + 0x00, 0xa5, 0x00, 0xc4, 0x00, 0xa5, 0x00, 0xc4, + 0x00, 0x02, 0x01, 0x63, 0x6f, 0x75, 0x63, 0x68, + 0x00, 0x49, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, + 0x20, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x20, 0x6b, + 0x6e, 0x6f, 0x77, 0x20, 0x77, 0x68, 0x65, 0x72, + 0x65, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x6c, 0x61, + 0x63, 0x65, 0x00, 0x61, 0x20, 0x70, 0x69, 0x6c, + 0x6c, 0x6f, 0x77, 0x2e, 0x00, 0x00, 0x09, 0x00, + 0x00, 0xbe, 0x00, 0xbf, 0x00, 0xc7, 0x00, 0x9c, + 0x00, 0xbd, 0x00, 0x9c, 0x00, 0xc7, 0x00, 0x03, + 0x01, 0x77, 0x61, 0x79, 0x20, 0x6f, 0x75, 0x74, + 0x00, 0x01, 0x0a, 0xad, 0x00, 0x25, 0x00, 0x25, + 0x01, 0x79, 0x00, 0xdb, 0x00, 0xaa, 0x00, 0xdb, + 0x00, 0xaa, 0x00, 0x01, 0x01, 0x70, 0x69, 0x63, + 0x74, 0x75, 0x72, 0x65, 0x00, 0x54, 0x68, 0x61, + 0x74, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x69, 0x73, + 0x20, 0x72, 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x20, + 0x69, 0x6d, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x76, 0x65, 0x2e, 0x00, 0x00, 0x0b, 0xa1, + 0x00, 0xa5, 0x00, 0xac, 0x00, 0xaa, 0x00, 0x98, + 0x00, 0xad, 0x00, 0x98, 0x00, 0xad, 0x00, 0x02, + 0x00, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x20, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, + 0x65, 0x72, 0x00, 0x49, 0x74, 0x20, 0x77, 0x61, + 0x73, 0x20, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, + 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x77, + 0x73, 0x70, 0x61, 0x70, 0x65, 0x72, 0x20, 0x70, + 0x61, 0x67, 0x65, 0x73, 0x2e, 0x00, 0x00, 0x0c, + 0x2f, 0x00, 0x4f, 0x00, 0x57, 0x00, 0xaf, 0x00, + 0x68, 0x00, 0xb5, 0x00, 0x64, 0x00, 0xb5, 0x00, + 0x04, 0x00, 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x77, + 0x61, 0x72, 0x64, 0x72, 0x6f, 0x62, 0x65, 0x00, + 0x49, 0x74, 0x27, 0x73, 0x20, 0x61, 0x20, 0x73, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x20, 0x70, 0x61, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x21, 0x00, 0x00, + 0xad, 0xb3, 0xc6, 0xb3, 0xdf, 0xb3, 0x00, 0x00, + 0x01, 0x11, 0x01, 0x72, 0x00, 0x3f, 0x01, 0xc7, + 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x02, 0x01, 0x64, 0x6f, 0x6f, 0x72, 0x00, + 0x01, 0x02, 0x00, 0x00, 0x73, 0x00, 0x2a, 0x00, + 0xc7, 0x00, 0x2e, 0x00, 0xc1, 0x00, 0x2e, 0x00, + 0xc1, 0x00, 0x04, 0x01, 0x64, 0x6f, 0x6f, 0x72, + 0x00, 0x01, 0x03, 0xf2, 0x00, 0x89, 0x00, 0xf6, + 0x00, 0x8e, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x00, 0x01, 0x73, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x00, 0x01, 0x00, 0x00, 0x08, + 0xb4, 0x4c, 0xb4, 0x74, 0xb4, 0x8d, 0xb4, 0xa6, + 0xb4, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0xa0, 0x00, + 0x78, 0x00, 0xa0, 0x00, 0x04, 0x01, 0x4a, 0x6f, + 0x68, 0x6e, 0x20, 0x4e, 0x6f, 0x74, 0x79, 0x00, + 0x48, 0x65, 0x27, 0x73, 0x20, 0x6f, 0x62, 0x73, + 0x65, 0x73, 0x73, 0x65, 0x64, 0x20, 0x77, 0x69, + 0x74, 0x68, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x69, + 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, + 0x6f, 0x6e, 0x65, 0x79, 0x2e, 0x00, 0x00, 0x02, + 0xcf, 0x00, 0x6c, 0x00, 0x3f, 0x01, 0xc1, 0x00, + 0xc1, 0x00, 0xae, 0x00, 0xc1, 0x00, 0xae, 0x00, + 0x02, 0x01, 0x74, 0x6f, 0x6e, 0x73, 0x20, 0x6f, + 0x66, 0x20, 0x67, 0x6f, 0x6c, 0x64, 0x00, 0x28, + 0x67, 0x75, 0x6c, 0x70, 0x29, 0x00, 0x00, 0x03, + 0x06, 0x00, 0x5c, 0x00, 0x24, 0x00, 0x96, 0x00, + 0x58, 0x00, 0xad, 0x00, 0x58, 0x00, 0xad, 0x00, + 0x04, 0x01, 0x73, 0x61, 0x66, 0x65, 0x00, 0x01, + 0x04, 0x72, 0x00, 0x5e, 0x00, 0xb0, 0x00, 0x8d, + 0x00, 0x8c, 0x00, 0x9e, 0x00, 0x8c, 0x00, 0x9e, + 0x00, 0x01, 0x01, 0x73, 0x61, 0x66, 0x65, 0x00, + 0x01, 0x05, 0x0b, 0x01, 0x36, 0x00, 0x1c, 0x01, + 0x47, 0x00, 0xc1, 0x00, 0xae, 0x00, 0xc1, 0x00, + 0xae, 0x00, 0x02, 0x01, 0x63, 0x61, 0x6d, 0x65, + 0x72, 0x61, 0x00, 0x49, 0x74, 0x20, 0x6d, 0x75, + 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, + 0x70, 0x61, 0x72, 0x74, 0x20, 0x6f, 0x66, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x20, 0x73, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x2e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x49, 0xb5, 0x4a, 0xb5, 0x4d, 0xb5, 0x4f, 0xb5, + 0x53, 0xb5, 0x55, 0xb5, 0x5a, 0xb5, 0x5d, 0xb5, + 0x61, 0xb5, 0x62, 0xb5, 0x63, 0xb5, 0x68, 0xb5, + 0x6c, 0xb5, 0x6f, 0xb5, 0x71, 0xb5, 0x75, 0xb5, + 0x7a, 0xb5, 0x7c, 0xb5, 0x7f, 0xb5, 0x82, 0xb5, + 0x88, 0xb5, 0x8b, 0xb5, 0x8d, 0xb5, 0x8f, 0xb5, + 0x93, 0xb5, 0x96, 0xb5, 0x99, 0xb5, 0xa0, 0xb5, + 0xa1, 0xb5, 0xa2, 0xb5, 0xaa, 0xb5, 0xac, 0xb5, + 0xb0, 0xb5, 0xb6, 0xb5, 0xb8, 0xb5, 0xbd, 0xb5, + 0xbe, 0xb5, 0xc3, 0xb5, 0xc4, 0xb5, 0xc6, 0xb5, + 0xc8, 0xb5, 0xcb, 0xb5, 0xff, 0x5f, 0x63, 0xff, + 0x00, 0xff, 0x5d, 0x00, 0x62, 0xff, 0x00, 0xff, + 0x54, 0x55, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, + 0x65, 0x69, 0x00, 0xff, 0xff, 0xff, 0x00, 0x11, + 0x00, 0x00, 0xff, 0x0e, 0x00, 0x12, 0xff, 0x29, + 0x00, 0xff, 0x00, 0xff, 0x14, 0x15, 0x2b, 0xff, + 0x00, 0x0a, 0x0b, 0x0c, 0xff, 0x25, 0xff, 0x16, + 0x00, 0xff, 0x19, 0x27, 0xff, 0x02, 0x03, 0x00, + 0x00, 0x00, 0xff, 0x1b, 0x00, 0xff, 0x07, 0xff, + 0x0d, 0xff, 0x1f, 0x00, 0x30, 0xff, 0x1a, 0x2c, + 0xff, 0x00, 0x00, 0xff, 0x00, 0x13, 0x22, 0x00, + 0x26, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, + 0x00, 0x00, 0xff, 0x3e, 0x3f, 0x40, 0x41, 0x00, + 0xff, 0x52, 0xff, 0x34, 0x3c, 0x00, 0x00, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0x00, 0xff, 0x6e, 0x6f, + 0xff, 0x22, 0xb6, 0x24, 0xb6, 0x2e, 0xb6, 0x3a, + 0xb6, 0x48, 0xb6, 0x56, 0xb6, 0x6a, 0xb6, 0x7a, + 0xb6, 0x8c, 0xb6, 0x9a, 0xb6, 0xa2, 0xb6, 0xc0, + 0xb6, 0xd2, 0xb6, 0xe0, 0xb6, 0xea, 0xb6, 0xfa, + 0xb6, 0x00, 0xb7, 0x02, 0xb7, 0x10, 0xb7, 0x2e, + 0xb7, 0x4e, 0xb7, 0x66, 0xb7, 0x80, 0xb7, 0xa0, + 0xb7, 0xb2, 0xb7, 0xc0, 0xb7, 0xcc, 0xb7, 0xec, + 0xb7, 0xf4, 0xb7, 0x02, 0xb8, 0x22, 0xb8, 0x34, + 0xb8, 0x44, 0xb8, 0x5c, 0xb8, 0x6a, 0xb8, 0x82, + 0xb8, 0x88, 0xb8, 0x8a, 0xb8, 0x94, 0xb8, 0x96, + 0xb8, 0x98, 0xb8, 0x9a, 0xb8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x78, 0x78, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xa9, 0x78, 0x00, 0x00, 0xbb, 0x78, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xcd, 0x78, 0xce, 0x78, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xe0, 0x78, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, + 0x78, 0xee, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xf5, 0x78, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x79, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, + 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x79, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x50, 0x79, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x62, 0x79, 0x66, 0x79, 0x00, + 0x00, 0x75, 0x79, 0x87, 0x79, 0x96, 0x79, 0xa5, + 0x79, 0xb4, 0x79, 0xc3, 0x79, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xd2, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xe4, 0x79, 0xeb, 0x79, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, + 0x79, 0x0f, 0x7a, 0x49, 0x7a, 0x5b, 0x7a, 0x6d, + 0x7a, 0x7f, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x7a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xd0, 0x7a, 0xd7, 0x7a, 0x00, 0x00, 0x00, + 0x00, 0xde, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0x7a, 0x00, 0x00, 0xf7, 0x7a, 0x00, + 0x00, 0x09, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, + 0xb8, 0xf2, 0xb8, 0xfc, 0xb8, 0x08, 0xb9, 0x16, + 0xb9, 0x24, 0xb9, 0x38, 0xb9, 0x50, 0xb9, 0x62, + 0xb9, 0x70, 0xb9, 0x78, 0xb9, 0x96, 0xb9, 0xa8, + 0xb9, 0xb6, 0xb9, 0xc0, 0xb9, 0xd0, 0xb9, 0xd6, + 0xb9, 0xd8, 0xb9, 0xe6, 0xb9, 0x04, 0xba, 0x24, + 0xba, 0x3c, 0xba, 0x56, 0xba, 0x76, 0xba, 0x88, + 0xba, 0x96, 0xba, 0xa2, 0xba, 0xc2, 0xba, 0xca, + 0xba, 0xd8, 0xba, 0xf8, 0xba, 0x0a, 0xbb, 0x1a, + 0xbb, 0x32, 0xbb, 0x40, 0xbb, 0x58, 0xbb, 0x5e, + 0xbb, 0x60, 0xbb, 0x6a, 0xbb, 0x6c, 0xbb, 0x6e, + 0xbb, 0x70, 0xbb, 0x00, 0x00, 0xed, 0x3f, 0x07, + 0x40, 0x21, 0x40, 0x48, 0x40, 0x4f, 0x40, 0x56, + 0x40, 0x60, 0x40, 0x7a, 0x40, 0x94, 0x40, 0x95, + 0x41, 0x9c, 0x41, 0xc3, 0x41, 0xca, 0x41, 0xce, + 0x41, 0x2c, 0x42, 0x33, 0x42, 0x4d, 0x42, 0x67, + 0x42, 0x3a, 0x43, 0x54, 0x43, 0x6e, 0x43, 0x88, + 0x43, 0xb5, 0x43, 0x82, 0x44, 0xcb, 0x44, 0xfc, + 0x44, 0x32, 0x45, 0x39, 0x45, 0x62, 0x46, 0xaf, + 0x46, 0x05, 0x47, 0x94, 0x47, 0xbc, 0x47, 0xdb, + 0x47, 0x36, 0x48, 0x3a, 0x48, 0x44, 0x48, 0x71, + 0x48, 0x7e, 0x48, 0x85, 0x48, 0x8c, 0x48, 0x93, + 0x48, 0xd4, 0x48, 0xdb, 0x48, 0xe2, 0x48, 0xe6, + 0x48, 0xea, 0x48, 0x11, 0x49, 0x18, 0x49, 0x64, + 0x4a, 0x8c, 0x4a, 0xed, 0x4a, 0xf4, 0x4a, 0x23, + 0x4b, 0x27, 0x4b, 0x2e, 0x4b, 0x35, 0x4b, 0xf5, + 0x4b, 0x18, 0x4c, 0x1c, 0x4c, 0x29, 0x4c, 0x30, + 0x4c, 0x37, 0x4c, 0x3e, 0x4c, 0x70, 0x4c, 0xa5, + 0x4c, 0xac, 0x4c, 0xf1, 0x4c, 0x56, 0x4d, 0x7d, + 0x4d, 0x81, 0x4d, 0x85, 0x4d, 0x89, 0x4d, 0x90, + 0x4d, 0x94, 0x4d, 0x47, 0x4e, 0x61, 0x4e, 0x85, + 0x4e, 0x9f, 0x4e, 0xb9, 0x4e, 0xe1, 0x4e, 0xe5, + 0x4e, 0x13, 0x4f, 0x14, 0x4f, 0x25, 0x4f, 0x32, + 0x4f, 0x0d, 0x50, 0x5f, 0x50, 0x66, 0x50, 0x80, + 0x50, 0x9a, 0x50, 0xf6, 0x50, 0xfd, 0x50, 0x04, + 0x51, 0xc8, 0x51, 0xcf, 0x51, 0xe9, 0x51, 0xf0, + 0x51, 0x17, 0x52, 0x2c, 0x52, 0x33, 0x52, 0x37, + 0x52, 0x20, 0x53, 0x3a, 0x53, 0x41, 0x53, 0x48, + 0x53, 0xa1, 0x53, 0x03, 0x54, 0x0a, 0x54, 0x24, + 0x54, 0x3e, 0x54, 0x58, 0x54, 0xb3, 0x54, 0x02, + 0x55, 0x00, 0x00, 0x47, 0x55, 0x61, 0x55, 0xa1, + 0x55, 0xa8, 0x55, 0x34, 0x56, 0x3b, 0x56, 0x63, + 0x56, 0x74, 0x56, 0x8e, 0x56, 0x95, 0x56, 0x9c, + 0x56, 0xb3, 0x56, 0xb7, 0x56, 0xd6, 0x56, 0xdd, + 0x56, 0xe4, 0x56, 0xeb, 0x56, 0xf2, 0x56, 0xf6, + 0x56, 0x21, 0x57, 0x28, 0x57, 0x4f, 0x57, 0x56, + 0x57, 0x93, 0x57, 0xfa, 0x57, 0x01, 0x58, 0x05, + 0x58, 0x32, 0x58, 0x3f, 0x58, 0x46, 0x58, 0x4d, + 0x58, 0x54, 0x58, 0x6e, 0x58, 0x88, 0x58, 0xa2, + 0x58, 0xb7, 0x58, 0xdf, 0x58, 0x03, 0x59, 0x0a, + 0x59, 0x24, 0x59, 0x3e, 0x59, 0x78, 0x59, 0x7f, + 0x59, 0x86, 0x59, 0x8d, 0x59, 0x94, 0x59, 0x8b, + 0x5a, 0x3a, 0x5b, 0x44, 0x5b, 0x59, 0x5b, 0xe1, + 0x5b, 0xee, 0x5b, 0x0d, 0x5c, 0x72, 0x5c, 0x79, + 0x5c, 0x80, 0x5c, 0x84, 0x5c, 0xdb, 0x5c, 0xe2, + 0x5c, 0xe9, 0x5c, 0xf0, 0x5c, 0x1d, 0x5d, 0x24, + 0x5d, 0x88, 0x5d, 0x4d, 0x5e, 0x73, 0x5f, 0x9a, + 0x5f, 0xa1, 0x5f, 0xa8, 0x5f, 0xaf, 0x5f, 0xb6, + 0x5f, 0xba, 0x5f, 0xe5, 0x5f, 0xec, 0x5f, 0xf3, + 0x5f, 0x3a, 0x60, 0x3e, 0x60, 0x74, 0x60, 0x78, + 0x60, 0x7f, 0x60, 0x83, 0x60, 0x2b, 0x61, 0x76, + 0x61, 0xe9, 0x61, 0x05, 0x62, 0x17, 0x62, 0x29, + 0x62, 0xc1, 0x62, 0xd0, 0x62, 0x4a, 0x63, 0x51, + 0x63, 0x7f, 0x63, 0x99, 0x63, 0xa0, 0x63, 0xa7, + 0x63, 0xae, 0x63, 0xb5, 0x63, 0xbc, 0x63, 0xdc, + 0x63, 0xe3, 0x63, 0xea, 0x63, 0x11, 0x64, 0x6e, + 0x64, 0x75, 0x64, 0x79, 0x64, 0x80, 0x64, 0xc4, + 0x64, 0x07, 0x65, 0x19, 0x65, 0x41, 0x65, 0x5b, + 0x65, 0x92, 0x65, 0xc3, 0x65, 0x35, 0x66, 0x3c, + 0x66, 0x63, 0x66, 0x6a, 0x66, 0x71, 0x66, 0x78, + 0x66, 0x7c, 0x66, 0xa9, 0x66, 0xb5, 0x66, 0xe2, + 0x66, 0x0f, 0x67, 0x16, 0x67, 0x1d, 0x67, 0x72, + 0x67, 0x8c, 0x67, 0xa6, 0x67, 0xfa, 0x67, 0xfe, + 0x67, 0x05, 0x68, 0x7a, 0x68, 0x11, 0x69, 0x18, + 0x69, 0x54, 0x69, 0x5b, 0x69, 0x62, 0x69, 0xb8, + 0x69, 0x1b, 0x6a, 0x73, 0x6a, 0xcb, 0x6a, 0x2e, + 0x6b, 0xa6, 0x6b, 0xad, 0x6b, 0xda, 0x6b, 0xe1, + 0x6b, 0x1c, 0x6c, 0x20, 0x6c, 0x24, 0x6c, 0x2b, + 0x6c, 0x45, 0x6c, 0x7c, 0x6c, 0x83, 0x6c, 0x9d, + 0x6c, 0xc4, 0x6c, 0x20, 0x6f, 0x32, 0x6f, 0x4d, + 0x6f, 0x75, 0x6f, 0x96, 0x70, 0xbb, 0x70, 0xc8, + 0x70, 0xef, 0x70, 0xf9, 0x70, 0x2c, 0x71, 0xae, + 0x71, 0xeb, 0x71, 0x18, 0x72, 0x1c, 0x72, 0x44, + 0x72, 0x4e, 0x72, 0x55, 0x72, 0x91, 0x72, 0xbe, + 0x72, 0xc2, 0x72, 0x05, 0x73, 0x09, 0x73, 0x28, + 0x73, 0x2f, 0x73, 0x36, 0x73, 0x81, 0x73, 0x9c, + 0x73, 0xa3, 0x73, 0x01, 0x74, 0x08, 0x74, 0x6f, + 0x74, 0x76, 0x74, 0xb3, 0x74, 0xcd, 0x74, 0xd1, + 0x74, 0xf9, 0x74, 0x13, 0x75, 0xd5, 0x77, 0x02, + 0x78, 0x00, 0x00, 0x3d, 0x78, 0x4a, 0x78, 0x51, + 0x78, 0x58, 0x78, 0x5f, 0x78, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfa, 0x98, + 0x04, 0x10, 0x99, 0x29, 0x21, 0x99, 0x25, 0xca, + 0x9a, 0xff, 0x66, 0x9c, 0x33, 0x6d, 0x9c, 0x48, + 0x79, 0x9c, 0xde, 0xbb, 0xdf, 0xbb, 0xfb, 0xbb, + 0x29, 0xbc, 0x33, 0xbc, 0x34, 0xbc, 0x3e, 0xbc, + 0x5a, 0xbc, 0x76, 0xbc, 0x77, 0xbc, 0x8a, 0xbc, + 0x94, 0xbc, 0xb9, 0xbc, 0xcc, 0xbc, 0xd6, 0xbc, + 0x04, 0xbd, 0x05, 0xbd, 0x06, 0xbd, 0x19, 0xbd, + 0x2c, 0xbd, 0x36, 0xbd, 0x49, 0xbd, 0x4a, 0xbd, + 0x8a, 0xbd, 0x8b, 0xbd, 0xb9, 0xbd, 0xc3, 0xbd, + 0xe8, 0xbd, 0xe9, 0xbd, 0xea, 0xbd, 0xeb, 0xbd, + 0xf5, 0xbd, 0x1a, 0xbe, 0x51, 0xbe, 0x76, 0xbe, + 0xa4, 0xbe, 0xa5, 0xbe, 0xa6, 0xbe, 0xb0, 0xbe, + 0xb1, 0xbe, 0xb2, 0xbe, 0xb3, 0xbe, 0x00, 0x00, + 0x00, 0x00, 0x4f, 0x04, 0x02, 0x00, 0x01, 0x5f, + 0x00, 0x26, 0x7b, 0x51, 0x03, 0x01, 0x10, 0x01, + 0x64, 0x00, 0x89, 0x7b, 0x4f, 0x03, 0x02, 0x19, + 0x01, 0x5f, 0x00, 0xf6, 0x7b, 0x00, 0x5b, 0x04, + 0x01, 0xd1, 0x00, 0x9a, 0x00, 0xfd, 0x7b, 0x5b, + 0x01, 0x04, 0xf0, 0x00, 0xa3, 0x00, 0xc9, 0x7c, + 0x57, 0x01, 0x04, 0xf0, 0x00, 0xa3, 0x00, 0xd0, + 0x7c, 0x57, 0x04, 0x04, 0xd1, 0x00, 0x9a, 0x00, + 0xd7, 0x7c, 0x55, 0x05, 0x01, 0x73, 0x00, 0xc2, + 0x00, 0xde, 0x7c, 0x00, 0x50, 0x02, 0x04, 0xc7, + 0x00, 0xb3, 0x00, 0xe5, 0x7c, 0x00, 0x00, 0x4d, + 0x07, 0x02, 0x23, 0x01, 0xb9, 0x00, 0x1a, 0x7d, + 0x00, 0x4e, 0x01, 0x02, 0x52, 0x00, 0xb8, 0x00, + 0x02, 0x7e, 0x53, 0x01, 0x02, 0x49, 0x00, 0xbc, + 0x00, 0x4f, 0x7e, 0x59, 0x07, 0x01, 0xce, 0x00, + 0xc2, 0x00, 0x23, 0x7f, 0x00, 0x5c, 0x05, 0x04, + 0x6e, 0x00, 0x98, 0x00, 0xbd, 0x7f, 0x56, 0x01, + 0x01, 0xc0, 0x00, 0x98, 0x00, 0x47, 0x80, 0x5a, + 0x06, 0x02, 0x04, 0x01, 0xc2, 0x00, 0x84, 0x80, + 0x00, 0x00, 0x4b, 0x02, 0x01, 0x7a, 0x00, 0x97, + 0x00, 0x8b, 0x80, 0x52, 0x02, 0x01, 0x8b, 0x00, + 0x9c, 0x00, 0xc3, 0x80, 0x00, 0x32, 0x01, 0x02, + 0xbd, 0x00, 0x9f, 0x00, 0x17, 0x81, 0x00, 0x0e, + 0x03, 0x02, 0xcb, 0x00, 0xab, 0x00, 0x74, 0x81, + 0x22, 0x02, 0x02, 0x94, 0x00, 0xbd, 0x00, 0xc2, + 0x81, 0x2b, 0x06, 0x01, 0x5a, 0x00, 0xbc, 0x00, + 0x3d, 0x82, 0x0d, 0x03, 0x02, 0xcb, 0x00, 0xab, + 0x00, 0x0b, 0x83, 0x00, 0x1b, 0x06, 0x04, 0x67, + 0x00, 0xc0, 0x00, 0x12, 0x83, 0x2b, 0x04, 0x01, + 0xc5, 0x00, 0xb7, 0x00, 0x98, 0x83, 0x00, 0x20, + 0x01, 0x02, 0x6e, 0x00, 0xb9, 0x00, 0x9f, 0x83, + 0x00, 0x09, 0x03, 0x02, 0x2c, 0x00, 0xa8, 0x00, + 0xc7, 0x84, 0x2c, 0x04, 0x03, 0xec, 0x00, 0xb3, + 0x00, 0x38, 0x85, 0x08, 0x03, 0x02, 0x2c, 0x00, + 0xa8, 0x00, 0xd6, 0x85, 0x0f, 0x03, 0x02, 0x2c, + 0x00, 0xa8, 0x00, 0xdd, 0x85, 0x2e, 0x04, 0x03, + 0xec, 0x00, 0xb3, 0x00, 0xe4, 0x85, 0x00, 0x00, + 0x00, 0x19, 0x07, 0x04, 0xa2, 0x00, 0xc2, 0x00, + 0xeb, 0x85, 0x15, 0x07, 0x04, 0xa2, 0x00, 0xc2, + 0x00, 0x2c, 0x86, 0x00, 0x13, 0x05, 0x01, 0x8b, + 0x00, 0xa5, 0x00, 0x3d, 0x86, 0x0c, 0x09, 0x02, + 0x0e, 0x01, 0xb6, 0x00, 0x65, 0x86, 0x00, 0x05, + 0x03, 0x04, 0x57, 0x00, 0xb9, 0x00, 0xa9, 0x86, + 0x00, 0x07, 0x04, 0x04, 0x30, 0x00, 0xbe, 0x00, + 0x82, 0x8b, 0x24, 0x0a, 0x02, 0xcf, 0x00, 0xc2, + 0x00, 0xfc, 0x8b, 0x00, 0x00, 0x0a, 0x01, 0x04, + 0x3d, 0x00, 0xbb, 0x00, 0xc9, 0x88, 0x0b, 0x01, + 0x04, 0x3d, 0x00, 0xbb, 0x00, 0x18, 0x89, 0x0a, + 0x02, 0x04, 0x02, 0x01, 0xb5, 0x00, 0x2d, 0x89, + 0x0b, 0x02, 0x04, 0x02, 0x01, 0xb5, 0x00, 0xb7, + 0x89, 0x17, 0x02, 0x04, 0x02, 0x01, 0xb5, 0x00, + 0xcc, 0x89, 0x1a, 0x09, 0x03, 0x9e, 0x00, 0xc6, + 0x00, 0x22, 0x8a, 0x33, 0x02, 0x04, 0x02, 0x01, + 0xb5, 0x00, 0x6f, 0x8a, 0x00, 0x00, 0x23, 0x05, + 0x04, 0x0c, 0x01, 0x91, 0x00, 0x6e, 0x8c, 0x2e, + 0x02, 0x04, 0xcd, 0x00, 0x99, 0x00, 0xc8, 0x8c, + 0x2c, 0x02, 0x04, 0xea, 0x00, 0x98, 0x00, 0x42, + 0x8d, 0x0d, 0x02, 0x04, 0xea, 0x00, 0x98, 0x00, + 0x49, 0x8d, 0x0e, 0x02, 0x04, 0xea, 0x00, 0x98, + 0x00, 0x50, 0x8d, 0x00, 0x30, 0x05, 0x01, 0x9f, + 0x00, 0xa6, 0x00, 0x57, 0x8d, 0x00, 0x02, 0x02, + 0x01, 0xe6, 0x00, 0xa4, 0x00, 0x1d, 0x8f, 0x02, + 0x03, 0x01, 0xe6, 0x00, 0xa4, 0x00, 0x1d, 0x8f, + 0x2d, 0x04, 0x04, 0xec, 0x00, 0x8e, 0x00, 0xc8, + 0x8f, 0x2f, 0x0c, 0x04, 0xec, 0x00, 0x8e, 0x00, + 0x54, 0x90, 0x00, 0x00, 0x00, 0x00, 0x49, 0x02, + 0x02, 0x2c, 0x01, 0xb2, 0x00, 0xbc, 0x90, 0x00, + 0x34, 0x01, 0x01, 0x3d, 0x00, 0xaf, 0x00, 0xf5, + 0x90, 0x43, 0x01, 0x01, 0x3d, 0x00, 0xaf, 0x00, + 0xfc, 0x90, 0x47, 0x01, 0x01, 0x3d, 0x00, 0xaf, + 0x00, 0xcb, 0x91, 0x3d, 0x01, 0x01, 0x3d, 0x00, + 0xaf, 0x00, 0x09, 0x92, 0x00, 0x38, 0x08, 0x01, + 0xdd, 0x00, 0xa0, 0x00, 0x47, 0x92, 0x40, 0x08, + 0x01, 0xdd, 0x00, 0xa0, 0x00, 0x4e, 0x92, 0x3f, + 0x06, 0x01, 0x8d, 0x00, 0x9f, 0x00, 0x3d, 0x93, + 0x37, 0x03, 0x04, 0x3f, 0x00, 0xa8, 0x00, 0xaf, + 0x93, 0x44, 0x0c, 0x01, 0xc0, 0x00, 0xa0, 0x00, + 0xd5, 0x93, 0x45, 0x02, 0x04, 0x51, 0x00, 0xa0, + 0x00, 0x49, 0x94, 0x00, 0x3c, 0x02, 0x02, 0x14, + 0x01, 0x9f, 0x00, 0x72, 0x94, 0x3e, 0x02, 0x02, + 0x14, 0x01, 0x9f, 0x00, 0x9b, 0x94, 0x3a, 0x07, + 0x04, 0x44, 0x00, 0x81, 0x00, 0xd4, 0x94, 0x3b, + 0x02, 0x02, 0x14, 0x01, 0x9f, 0x00, 0x1b, 0x95, + 0x00, 0x39, 0x05, 0x01, 0x91, 0x00, 0xc5, 0x00, + 0x37, 0x95, 0x36, 0x05, 0x01, 0x81, 0x00, 0xad, + 0x00, 0xc8, 0x95, 0x35, 0x04, 0x01, 0x74, 0x00, + 0xbf, 0x00, 0xeb, 0x95, 0x43, 0x04, 0x01, 0x74, + 0x00, 0xbf, 0x00, 0x2f, 0x96, 0x34, 0x04, 0x01, + 0x74, 0x00, 0xbf, 0x00, 0x6c, 0x96, 0x00, 0x00, + 0x00, 0x4a, 0x01, 0x01, 0x3b, 0x00, 0xa3, 0x00, + 0x73, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, + 0x6f, 0x77, 0x2c, 0x20, 0x6e, 0x6f, 0x77, 0x20, + 0x69, 0x74, 0x20, 0x6c, 0x6f, 0x6f, 0x6b, 0x73, + 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x69, 0x74, + 0x20, 0x63, 0x61, 0x6d, 0x65, 0x20, 0x73, 0x74, + 0x72, 0x61, 0x69, 0x67, 0x68, 0x74, 0x00, 0x66, + 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x21, 0x00, 0x00, + 0x54, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x72, 0x69, 0x62, 0x62, 0x6f, 0x6e, + 0x20, 0x61, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x72, 0x61, 0x6b, 0x65, + 0x20, 0x6e, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x65, + 0x64, 0x00, 0x74, 0x68, 0x65, 0x20, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x20, 0x62, 0x65, 0x74, 0x77, + 0x65, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x74, 0x65, 0x65, 0x74, 0x68, 0x21, 0x00, 0x00, + 0x57, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x68, 0x65, 0x6c, 0x70, 0x20, 0x6f, 0x66, + 0x20, 0x73, 0x75, 0x70, 0x65, 0x72, 0x20, 0x67, + 0x6c, 0x75, 0x65, 0x20, 0x49, 0x20, 0x6d, 0x61, + 0x64, 0x65, 0x2e, 0x2e, 0x2e, 0x00, 0x73, 0x6f, + 0x6d, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x2e, + 0x2e, 0x2e, 0x00, 0x00, 0x55, 0x73, 0x69, 0x6e, + 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, + 0x70, 0x65, 0x72, 0x20, 0x67, 0x6c, 0x75, 0x65, + 0x20, 0x6f, 0x6e, 0x63, 0x65, 0x20, 0x61, 0x67, + 0x61, 0x69, 0x6e, 0x2e, 0x2e, 0x2e, 0x00, 0x00, + 0x54, 0x68, 0x65, 0x20, 0x77, 0x68, 0x69, 0x73, + 0x6b, 0x79, 0x20, 0x69, 0x73, 0x20, 0x73, 0x74, + 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x65, 0x6e, 0x6f, + 0x75, 0x67, 0x68, 0x20, 0x74, 0x6f, 0x20, 0x75, + 0x73, 0x65, 0x20, 0x61, 0x73, 0x00, 0x66, 0x75, + 0x65, 0x6c, 0x2c, 0x20, 0x62, 0x75, 0x74, 0x20, + 0x49, 0x20, 0x77, 0x6f, 0x6e, 0x64, 0x65, 0x72, + 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x63, 0x68, 0x61, 0x69, 0x6e, 0x73, 0x61, 0x77, + 0x00, 0x63, 0x61, 0x6e, 0x20, 0x74, 0x61, 0x6b, + 0x65, 0x20, 0x69, 0x74, 0x2e, 0x2e, 0x2e, 0x00, + 0x00, 0x4f, 0x6e, 0x63, 0x65, 0x20, 0x61, 0x67, + 0x61, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x73, 0x75, 0x70, 0x65, 0x72, 0x2d, 0x67, 0x6c, + 0x75, 0x65, 0x20, 0x63, 0x6f, 0x6d, 0x65, 0x73, + 0x20, 0x69, 0x6e, 0x20, 0x68, 0x61, 0x6e, 0x64, + 0x79, 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x54, 0x68, + 0x65, 0x20, 0x73, 0x6f, 0x6f, 0x74, 0x20, 0x67, + 0x69, 0x76, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x70, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x65, + 0x20, 0x61, 0x20, 0x62, 0x72, 0x61, 0x6e, 0x64, + 0x20, 0x6e, 0x65, 0x77, 0x20, 0x6c, 0x6f, 0x6f, + 0x6b, 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x4e, 0x6f, + 0x77, 0x20, 0x49, 0x27, 0x6d, 0x20, 0x72, 0x65, + 0x61, 0x64, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x63, + 0x6f, 0x6e, 0x71, 0x75, 0x65, 0x72, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x6c, 0x61, 0x6b, 0x65, 0x21, + 0x00, 0x00, 0x49, 0x74, 0x20, 0x6d, 0x61, 0x6b, + 0x65, 0x73, 0x20, 0x6d, 0x65, 0x20, 0x66, 0x65, + 0x65, 0x6c, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, + 0x61, 0x6e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x00, + 0x77, 0x61, 0x6e, 0x6e, 0x61, 0x2d, 0x62, 0x65, + 0x20, 0x63, 0x6c, 0x69, 0x66, 0x66, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x72, 0x2e, 0x00, 0x00, 0x49, + 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x6e, 0x27, + 0x74, 0x20, 0x69, 0x6d, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x20, 0x61, 0x6e, 0x79, 0x6f, 0x6e, 0x65, + 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x73, 0x75, + 0x63, 0x68, 0x20, 0x63, 0x61, 0x6e, 0x64, 0x79, + 0x2e, 0x00, 0x00, 0x49, 0x74, 0x27, 0x73, 0x20, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x65, + 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x2e, 0x00, 0x00, + 0x47, 0x72, 0x65, 0x61, 0x74, 0x20, 0x69, 0x64, + 0x65, 0x61, 0x21, 0x20, 0x42, 0x75, 0x74, 0x2c, + 0x20, 0x79, 0x6f, 0x75, 0x20, 0x73, 0x65, 0x65, + 0x2c, 0x20, 0x65, 0x63, 0x6f, 0x6d, 0x61, 0x6e, + 0x69, 0x61, 0x63, 0x73, 0x20, 0x6d, 0x69, 0x67, + 0x68, 0x74, 0x00, 0x62, 0x65, 0x20, 0x77, 0x61, + 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x2e, + 0x2e, 0x00, 0x00, 0x49, 0x74, 0x20, 0x77, 0x6f, + 0x6e, 0x27, 0x74, 0x20, 0x6c, 0x6f, 0x6f, 0x6b, + 0x20, 0x61, 0x6e, 0x79, 0x20, 0x62, 0x65, 0x74, + 0x74, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x20, 0x61, + 0x20, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, + 0x2e, 0x00, 0x00, 0x54, 0x68, 0x65, 0x20, 0x63, + 0x61, 0x6b, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, + 0x6f, 0x6f, 0x20, 0x62, 0x69, 0x67, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, + 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2e, + 0x00, 0x00, 0x49, 0x20, 0x64, 0x6f, 0x6e, 0x27, + 0x74, 0x20, 0x77, 0x61, 0x6e, 0x74, 0x20, 0x74, + 0x6f, 0x20, 0x77, 0x61, 0x73, 0x74, 0x65, 0x20, + 0x74, 0x68, 0x69, 0x73, 0x20, 0x63, 0x61, 0x6e, + 0x64, 0x79, 0x2e, 0x00, 0x00, 0x54, 0x68, 0x65, + 0x20, 0x66, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x20, + 0x69, 0x73, 0x20, 0x62, 0x65, 0x61, 0x75, 0x74, + 0x69, 0x66, 0x75, 0x6c, 0x20, 0x65, 0x6e, 0x6f, + 0x75, 0x67, 0x68, 0x20, 0x77, 0x69, 0x74, 0x68, + 0x6f, 0x75, 0x74, 0x00, 0x61, 0x6e, 0x79, 0x20, + 0x66, 0x61, 0x6e, 0x63, 0x79, 0x20, 0x65, 0x78, + 0x74, 0x72, 0x61, 0x73, 0x2e, 0x00, 0x00, 0x47, + 0x6f, 0x6f, 0x64, 0x20, 0x69, 0x64, 0x65, 0x61, + 0x2c, 0x20, 0x62, 0x75, 0x74, 0x20, 0x49, 0x20, + 0x6e, 0x65, 0x65, 0x64, 0x20, 0x73, 0x6f, 0x6d, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x73, + 0x6d, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x00, 0x74, + 0x68, 0x61, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x73, + 0x20, 0x72, 0x6f, 0x70, 0x65, 0x2e, 0x00, 0x00, + 0x49, 0x20, 0x6d, 0x69, 0x67, 0x68, 0x74, 0x20, + 0x6e, 0x65, 0x65, 0x64, 0x20, 0x74, 0x68, 0x69, + 0x73, 0x20, 0x63, 0x68, 0x65, 0x65, 0x73, 0x65, + 0x2e, 0x20, 0x41, 0x67, 0x61, 0x69, 0x6e, 0x2e, + 0x00, 0x00, 0x49, 0x74, 0x27, 0x73, 0x20, 0x6e, + 0x6f, 0x74, 0x20, 0x44, 0x4f, 0x4f, 0x4d, 0x2e, + 0x20, 0x49, 0x74, 0x27, 0x73, 0x20, 0x61, 0x20, + 0x68, 0x61, 0x72, 0x6d, 0x6c, 0x65, 0x73, 0x73, + 0x20, 0x67, 0x72, 0x61, 0x70, 0x68, 0x69, 0x63, + 0x20, 0x61, 0x64, 0x76, 0x65, 0x6e, 0x74, 0x75, + 0x72, 0x65, 0x00, 0x66, 0x6f, 0x72, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x77, 0x68, 0x6f, 0x6c, 0x65, + 0x20, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x20, + 0x28, 0x77, 0x65, 0x20, 0x77, 0x61, 0x6e, 0x74, + 0x20, 0x44, 0x4f, 0x4f, 0x4d, 0x21, 0x20, 0x77, + 0x65, 0x20, 0x77, 0x61, 0x6e, 0x74, 0x00, 0x44, + 0x4f, 0x4f, 0x4d, 0x21, 0x29, 0x2e, 0x00, 0x00, + 0x49, 0x20, 0x64, 0x6f, 0x6e, 0x27, 0x74, 0x20, + 0x6e, 0x65, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, + 0x6f, 0x70, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x69, + 0x73, 0x20, 0x6e, 0x75, 0x74, 0x2e, 0x00, 0x00, + 0x4c, 0x65, 0x74, 0x27, 0x73, 0x20, 0x6d, 0x61, + 0x6b, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, + 0x63, 0x6f, 0x72, 0x6b, 0x20, 0x6c, 0x61, 0x72, + 0x67, 0x65, 0x72, 0x2e, 0x00, 0x00, 0x4f, 0x6e, + 0x63, 0x65, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6e, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x70, + 0x65, 0x72, 0x20, 0x67, 0x6c, 0x75, 0x65, 0x20, + 0x63, 0x6f, 0x6d, 0x65, 0x73, 0x20, 0x69, 0x6e, + 0x20, 0x68, 0x61, 0x6e, 0x64, 0x79, 0x2e, 0x00, + 0x00, 0x54, 0x68, 0x65, 0x20, 0x62, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x69, 0x65, 0x73, 0x20, 0x66, + 0x69, 0x74, 0x21, 0x00, 0x00, 0x49, 0x20, 0x74, + 0x69, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x72, 0x6f, 0x70, 0x65, 0x20, 0x74, 0x6f, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x70, 0x69, 0x6e, 0x2e, + 0x00, 0x00, 0x4c, 0x65, 0x74, 0x27, 0x73, 0x20, + 0x6d, 0x61, 0x6b, 0x65, 0x20, 0x69, 0x74, 0x20, + 0x73, 0x70, 0x69, 0x63, 0x79, 0x2e, 0x00, 0x00, + 0x12, 0x16, 0x17, 0xb4, 0xbe, 0x15, 0x18, 0x19, + 0xed, 0xbe, 0x01, 0x1c, 0x1f, 0x35, 0xbf, 0x11, + 0x1c, 0x1e, 0x35, 0xbf, 0x1f, 0x11, 0x20, 0x69, + 0xbf, 0x1e, 0x01, 0x20, 0x69, 0xbf, 0x0d, 0x10, + 0x0e, 0x8d, 0xbf, 0x08, 0x0f, 0x09, 0xe6, 0xbf, + 0x14, 0x21, 0x22, 0x13, 0xc0, 0x27, 0x28, 0x29, + 0x43, 0xc0, 0x26, 0x2a, 0x2b, 0x67, 0xc0, 0x12, + 0x13, 0x00, 0x9c, 0xc0, 0x01, 0x30, 0x00, 0xc8, + 0xc0, 0x10, 0x30, 0x00, 0xdd, 0xc0, 0x12, 0x14, + 0x00, 0x18, 0xc1, 0x12, 0x22, 0x00, 0x18, 0xc1, + 0x12, 0x1a, 0x00, 0x18, 0xc1, 0x12, 0x1c, 0x00, + 0x18, 0xc1, 0x12, 0x31, 0x00, 0x18, 0xc1, 0x12, + 0x13, 0x00, 0x40, 0xc1, 0x13, 0x30, 0x00, 0x67, + 0xc1, 0x18, 0x0a, 0x00, 0x8a, 0xc1, 0x18, 0x0b, + 0x00, 0x8a, 0xc1, 0x15, 0x26, 0x00, 0xc4, 0xc1, + 0x2d, 0x30, 0x00, 0xfd, 0xc1, 0x2c, 0x30, 0x00, + 0x1f, 0xc2, 0x2e, 0x30, 0x00, 0x1f, 0xc2, 0x31, + 0x1a, 0x00, 0x85, 0xc2, 0x31, 0x30, 0x00, 0x1f, + 0xc2, 0x37, 0x3b, 0x3c, 0xa5, 0xc2, 0x41, 0x38, + 0x40, 0xc3, 0xc2, 0x42, 0x34, 0x43, 0xee, 0xc2, + 0x54, 0x58, 0x59, 0x02, 0xc3, 0x57, 0x5a, 0x5b, + 0x1f, 0xc3, 0x00, 0x00, 0x00, 0x55, 0x73, 0x69, + 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, + 0x20, 0x74, 0x77, 0x6f, 0x20, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x67, + 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x77, 0x6f, + 0x6e, 0x27, 0x74, 0x00, 0x61, 0x63, 0x63, 0x6f, + 0x6d, 0x70, 0x6c, 0x69, 0x73, 0x68, 0x20, 0x61, + 0x6e, 0x79, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x2e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5e, 0xc5, 0x7b, 0xc5, 0x9a, 0xc5, 0xc3, + 0xc5, 0xcf, 0xc5, 0xfd, 0xc5, 0x2c, 0xc6, 0x3f, + 0xc6, 0x62, 0xc6, 0x93, 0xc6, 0xb9, 0xc6, 0xda, + 0xc6, 0x0a, 0xc7, 0x42, 0xc7, 0x75, 0xc7, 0x96, + 0xc7, 0xcb, 0xc7, 0xf4, 0xc7, 0x60, 0xc8, 0xa0, + 0xc8, 0xd3, 0xc8, 0x21, 0xc9, 0x65, 0xc9, 0xa2, + 0xc9, 0xf2, 0xc9, 0x09, 0xca, 0x22, 0xca, 0x6b, + 0xca, 0xe7, 0xca, 0x2d, 0xcb, 0x61, 0xcb, 0x96, + 0xcb, 0xba, 0xcb, 0xf2, 0xcb, 0x5d, 0xcc, 0x79, + 0xcc, 0xdd, 0xcc, 0x0f, 0xcd, 0x25, 0xcd, 0x54, + 0xcd, 0x95, 0xcd, 0xc8, 0xcd, 0xfe, 0xcd, 0x33, + 0xce, 0x75, 0xce, 0xa6, 0xce, 0xe3, 0xce, 0x4f, + 0xcf, 0x6a, 0xcf, 0x9d, 0xcf, 0xf8, 0xcf, 0x05, + 0xd0, 0x32, 0xd0, 0x5c, 0xd0, 0x7b, 0xd0, 0xb1, + 0xd0, 0xe7, 0xd0, 0x30, 0xd1, 0x4e, 0xd1, 0x73, + 0xd1, 0x9d, 0xd1, 0xf4, 0xd1, 0x41, 0xd2, 0x6f, + 0xd2, 0xa7, 0xd2, 0xcb, 0xd2, 0xf6, 0xd2, 0x46, + 0xd3, 0x8a, 0xd3, 0xb3, 0xd3, 0xfb, 0xd3, 0x16, + 0xd4, 0x49, 0xd4, 0x7b, 0xd4, 0xa4, 0xd4, 0xca, + 0xd4, 0xeb, 0xd4, 0x1f, 0xd5, 0x43, 0xd5, 0x7f, + 0xd5, 0xaa, 0xd5, 0xc6, 0xd5, 0x42, 0xd6, 0xb7, + 0xd6, 0x0a, 0xd7, 0x1d, 0xd7, 0x67, 0xd7, 0x92, + 0xd7, 0xae, 0xd7, 0xe6, 0xd7, 0x35, 0xd8, 0x5e, + 0xd8, 0x01, 0x00, 0x66, 0x65, 0x61, 0x74, 0x68, + 0x65, 0x72, 0x00, 0x49, 0x74, 0x27, 0x73, 0x20, + 0x6b, 0x69, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, + 0x61, 0x73, 0x73, 0x21, 0x00, 0x00, 0x02, 0x00, + 0x73, 0x68, 0x6f, 0x74, 0x67, 0x75, 0x6e, 0x00, + 0x4c, 0x6f, 0x6f, 0x6b, 0x73, 0x20, 0x69, 0x6d, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x76, 0x65, + 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x03, 0x00, 0x74, + 0x6f, 0x6f, 0x6c, 0x62, 0x6f, 0x78, 0x00, 0x44, + 0x6f, 0x65, 0x73, 0x6e, 0x27, 0x74, 0x20, 0x73, + 0x65, 0x65, 0x6d, 0x20, 0x74, 0x6f, 0x20, 0x62, + 0x65, 0x20, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, + 0x21, 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x04, 0x00, + 0x74, 0x6f, 0x6f, 0x6c, 0x62, 0x6f, 0x78, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x73, 0x70, 0x61, 0x6e, + 0x6e, 0x65, 0x72, 0x00, 0x54, 0x68, 0x65, 0x73, + 0x65, 0x20, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x73, + 0x20, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x20, + 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x69, 0x6e, 0x20, + 0x68, 0x61, 0x6e, 0x64, 0x79, 0x2e, 0x00, 0x00, + 0x06, 0x00, 0x63, 0x6f, 0x6d, 0x62, 0x00, 0x49, + 0x27, 0x76, 0x65, 0x20, 0x68, 0x65, 0x61, 0x72, + 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, + 0x6f, 0x6d, 0x65, 0x20, 0x70, 0x65, 0x6f, 0x70, + 0x6c, 0x65, 0x20, 0x75, 0x73, 0x65, 0x20, 0x74, + 0x68, 0x65, 0x73, 0x65, 0x2e, 0x00, 0x00, 0x07, + 0x01, 0x66, 0x61, 0x6e, 0x00, 0x52, 0x65, 0x66, + 0x72, 0x65, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x2e, + 0x00, 0x00, 0x08, 0x00, 0x62, 0x72, 0x6f, 0x6b, + 0x65, 0x6e, 0x20, 0x70, 0x61, 0x64, 0x64, 0x6c, + 0x65, 0x00, 0x54, 0x6f, 0x6f, 0x20, 0x73, 0x68, + 0x6f, 0x72, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x75, + 0x73, 0x65, 0x2e, 0x00, 0x00, 0x09, 0x00, 0x70, + 0x61, 0x64, 0x64, 0x6c, 0x65, 0x00, 0x54, 0x68, + 0x65, 0x20, 0x67, 0x6c, 0x75, 0x65, 0x20, 0x6b, + 0x65, 0x65, 0x70, 0x73, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x00, + 0x72, 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x68, + 0x61, 0x72, 0x64, 0x2e, 0x00, 0x00, 0x0a, 0x00, + 0x66, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x00, 0x49, + 0x74, 0x20, 0x72, 0x65, 0x61, 0x6c, 0x6c, 0x79, + 0x20, 0x73, 0x6d, 0x65, 0x6c, 0x6c, 0x73, 0x00, + 0x76, 0x65, 0x72, 0x79, 0x20, 0x6e, 0x69, 0x63, + 0x65, 0x2e, 0x00, 0x00, 0x0b, 0x00, 0x66, 0x6c, + 0x6f, 0x77, 0x65, 0x72, 0x00, 0x49, 0x74, 0x27, + 0x73, 0x20, 0x72, 0x65, 0x61, 0x6c, 0x6c, 0x79, + 0x20, 0x62, 0x65, 0x61, 0x75, 0x74, 0x69, 0x66, + 0x75, 0x6c, 0x2e, 0x00, 0x00, 0x0c, 0x00, 0x66, + 0x65, 0x61, 0x74, 0x68, 0x65, 0x72, 0x20, 0x64, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x00, 0x49, 0x20, + 0x63, 0x61, 0x6e, 0x20, 0x70, 0x6c, 0x61, 0x79, + 0x20, 0x6a, 0x61, 0x6e, 0x69, 0x74, 0x6f, 0x72, + 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, + 0x69, 0x73, 0x2e, 0x00, 0x00, 0x0d, 0x00, 0x63, + 0x68, 0x61, 0x69, 0x6e, 0x73, 0x61, 0x77, 0x00, + 0x49, 0x74, 0x27, 0x73, 0x20, 0x69, 0x6e, 0x20, + 0x67, 0x6f, 0x6f, 0x64, 0x20, 0x63, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, + 0x62, 0x75, 0x74, 0x20, 0x69, 0x74, 0x20, 0x68, + 0x61, 0x73, 0x20, 0x6e, 0x6f, 0x20, 0x66, 0x75, + 0x65, 0x6c, 0x2e, 0x00, 0x00, 0x0e, 0x01, 0x64, + 0x72, 0x75, 0x6e, 0x6b, 0x65, 0x6e, 0x20, 0x63, + 0x68, 0x61, 0x69, 0x6e, 0x73, 0x61, 0x77, 0x00, + 0x41, 0x20, 0x62, 0x69, 0x74, 0x20, 0x75, 0x6e, + 0x73, 0x74, 0x65, 0x61, 0x64, 0x79, 0x2c, 0x20, + 0x62, 0x75, 0x74, 0x20, 0x77, 0x69, 0x6c, 0x6c, + 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x00, 0x00, + 0x0f, 0x00, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x00, 0x54, 0x68, 0x65, 0x20, 0x77, 0x6f, 0x6f, + 0x64, 0x20, 0x69, 0x73, 0x20, 0x76, 0x65, 0x72, + 0x79, 0x20, 0x68, 0x61, 0x72, 0x64, 0x2e, 0x00, + 0x00, 0x10, 0x00, 0x77, 0x68, 0x69, 0x73, 0x6b, + 0x79, 0x00, 0x54, 0x68, 0x65, 0x20, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x20, 0x73, 0x61, 0x79, 0x73, + 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x77, 0x68, + 0x69, 0x73, 0x6b, 0x79, 0x20, 0x69, 0x73, 0x00, + 0x76, 0x65, 0x72, 0x79, 0x20, 0x73, 0x74, 0x72, + 0x6f, 0x6e, 0x67, 0x2e, 0x00, 0x00, 0x11, 0x00, + 0x6e, 0x65, 0x65, 0x64, 0x6c, 0x65, 0x00, 0x49, + 0x74, 0x27, 0x73, 0x20, 0x71, 0x75, 0x69, 0x74, + 0x65, 0x20, 0x62, 0x69, 0x67, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x65, 0x64, + 0x6c, 0x65, 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x12, + 0x00, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, + 0x00, 0x4e, 0x69, 0x63, 0x65, 0x20, 0x64, 0x65, + 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x20, 0x45, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x6c, 0x79, + 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x27, 0x4c, + 0x4f, 0x56, 0x45, 0x20, 0x43, 0x41, 0x4e, 0x44, + 0x59, 0x27, 0x20, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x2e, 0x00, 0x41, 0x6e, 0x64, 0x20, 0x74, 0x68, + 0x65, 0x72, 0x65, 0x27, 0x73, 0x20, 0x61, 0x20, + 0x68, 0x65, 0x61, 0x72, 0x74, 0x20, 0x70, 0x61, + 0x69, 0x6e, 0x74, 0x65, 0x64, 0x20, 0x6f, 0x6e, + 0x20, 0x69, 0x74, 0x2e, 0x00, 0x48, 0x6f, 0x77, + 0x20, 0x53, 0x57, 0x45, 0x45, 0x54, 0x2e, 0x2e, + 0x2e, 0x00, 0x00, 0x13, 0x00, 0x63, 0x68, 0x6f, + 0x63, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x20, 0x63, + 0x61, 0x6e, 0x64, 0x79, 0x00, 0x49, 0x74, 0x27, + 0x73, 0x20, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x20, + 0x63, 0x68, 0x6f, 0x63, 0x6f, 0x6c, 0x61, 0x74, + 0x65, 0x20, 0x63, 0x61, 0x6e, 0x64, 0x79, 0x2e, + 0x00, 0x41, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, + 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, + 0x2e, 0x00, 0x00, 0x14, 0x00, 0x77, 0x69, 0x6c, + 0x64, 0x20, 0x70, 0x6f, 0x74, 0x61, 0x74, 0x6f, + 0x65, 0x00, 0x57, 0x6f, 0x77, 0x21, 0x20, 0x49, + 0x74, 0x27, 0x73, 0x20, 0x73, 0x68, 0x61, 0x70, + 0x65, 0x64, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, + 0x61, 0x20, 0x67, 0x72, 0x65, 0x6e, 0x61, 0x64, + 0x65, 0x21, 0x2e, 0x2e, 0x00, 0x00, 0x15, 0x00, + 0x72, 0x61, 0x6b, 0x65, 0x00, 0x54, 0x68, 0x65, + 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x62, + 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x74, 0x65, 0x65, 0x74, 0x68, + 0x20, 0x69, 0x73, 0x20, 0x74, 0x6f, 0x6f, 0x20, + 0x6c, 0x61, 0x72, 0x67, 0x65, 0x00, 0x74, 0x6f, + 0x20, 0x6d, 0x61, 0x6b, 0x65, 0x20, 0x74, 0x68, + 0x69, 0x73, 0x20, 0x72, 0x61, 0x6b, 0x65, 0x20, + 0x61, 0x6e, 0x20, 0x75, 0x73, 0x65, 0x66, 0x75, + 0x6c, 0x2e, 0x00, 0x00, 0x16, 0x00, 0x68, 0x65, + 0x61, 0x72, 0x74, 0x2d, 0x73, 0x68, 0x61, 0x70, + 0x65, 0x64, 0x20, 0x63, 0x61, 0x6e, 0x64, 0x79, + 0x00, 0x49, 0x20, 0x64, 0x6f, 0x6e, 0x27, 0x74, + 0x20, 0x74, 0x68, 0x69, 0x6e, 0x6b, 0x20, 0x74, + 0x68, 0x69, 0x73, 0x20, 0x6f, 0x6e, 0x65, 0x20, + 0x69, 0x6d, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x20, 0x69, 0x73, 0x20, 0x65, + 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x2e, 0x00, 0x00, + 0x17, 0x00, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, + 0x64, 0x20, 0x63, 0x61, 0x6e, 0x64, 0x79, 0x00, + 0x42, 0x72, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x65, + 0x77, 0x20, 0x63, 0x61, 0x6e, 0x64, 0x79, 0x2e, + 0x20, 0x41, 0x74, 0x20, 0x6c, 0x65, 0x61, 0x73, + 0x74, 0x20, 0x69, 0x74, 0x20, 0x6c, 0x6f, 0x6f, + 0x6b, 0x73, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, + 0x69, 0x74, 0x2e, 0x00, 0x00, 0x18, 0x00, 0x72, + 0x69, 0x62, 0x62, 0x6f, 0x6e, 0x00, 0x49, 0x74, + 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, + 0x6d, 0x69, 0x6e, 0x64, 0x20, 0x6d, 0x65, 0x20, + 0x6f, 0x66, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, + 0x62, 0x65, 0x61, 0x74, 0x69, 0x66, 0x75, 0x6c, + 0x20, 0x63, 0x68, 0x69, 0x63, 0x6b, 0x2c, 0x00, + 0x49, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x2c, 0x20, + 0x66, 0x65, 0x6d, 0x61, 0x6c, 0x65, 0x20, 0x68, + 0x75, 0x6d, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x69, + 0x6e, 0x67, 0x2e, 0x00, 0x00, 0x19, 0x00, 0x72, + 0x61, 0x6b, 0x65, 0x00, 0x52, 0x65, 0x61, 0x64, + 0x79, 0x20, 0x74, 0x6f, 0x20, 0x77, 0x6f, 0x72, + 0x6b, 0x2e, 0x00, 0x00, 0x1a, 0x00, 0x6e, 0x75, + 0x74, 0x00, 0x41, 0x20, 0x72, 0x65, 0x61, 0x6c, + 0x6c, 0x79, 0x20, 0x62, 0x69, 0x67, 0x20, 0x6f, + 0x6e, 0x65, 0x2e, 0x00, 0x00, 0x1b, 0x00, 0x70, + 0x6c, 0x61, 0x73, 0x74, 0x69, 0x63, 0x20, 0x61, + 0x70, 0x70, 0x6c, 0x65, 0x00, 0x49, 0x74, 0x20, + 0x6c, 0x6f, 0x6f, 0x6b, 0x73, 0x20, 0x73, 0x6f, + 0x20, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x74, 0x68, + 0x61, 0x74, 0x20, 0x49, 0x20, 0x63, 0x6f, 0x75, + 0x6c, 0x64, 0x00, 0x65, 0x76, 0x65, 0x6e, 0x20, + 0x73, 0x65, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x70, 0x69, 0x70, 0x73, 0x20, 0x69, 0x6e, 0x73, + 0x69, 0x64, 0x65, 0x2e, 0x00, 0x00, 0x1c, 0x00, + 0x63, 0x6f, 0x6e, 0x65, 0x00, 0x49, 0x74, 0x20, + 0x6c, 0x6f, 0x6f, 0x6b, 0x73, 0x20, 0x6c, 0x69, + 0x6b, 0x65, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6f, + 0x66, 0x20, 0x74, 0x68, 0x6f, 0x73, 0x65, 0x20, + 0x48, 0x61, 0x76, 0x61, 0x6e, 0x61, 0x20, 0x67, + 0x6f, 0x6f, 0x64, 0x69, 0x65, 0x73, 0x20, 0x65, + 0x76, 0x65, 0x72, 0x79, 0x00, 0x73, 0x65, 0x6c, + 0x66, 0x2d, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, + 0x74, 0x69, 0x6e, 0x67, 0x20, 0x62, 0x75, 0x73, + 0x69, 0x6e, 0x65, 0x73, 0x73, 0x6d, 0x61, 0x6e, + 0x20, 0x69, 0x73, 0x20, 0x73, 0x75, 0x70, 0x70, + 0x6f, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, + 0x68, 0x61, 0x76, 0x65, 0x00, 0x67, 0x6c, 0x75, + 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x68, 0x69, + 0x73, 0x20, 0x73, 0x6d, 0x69, 0x6c, 0x65, 0x2e, + 0x00, 0x00, 0x1d, 0x00, 0x73, 0x75, 0x70, 0x65, + 0x72, 0x20, 0x67, 0x6c, 0x75, 0x65, 0x00, 0x49, + 0x74, 0x27, 0x73, 0x20, 0x74, 0x75, 0x72, 0x62, + 0x6f, 0x20, 0x6d, 0x65, 0x67, 0x61, 0x20, 0x67, + 0x69, 0x67, 0x61, 0x20, 0x73, 0x75, 0x70, 0x65, + 0x72, 0x20, 0x75, 0x6c, 0x74, 0x72, 0x61, 0x00, + 0x66, 0x61, 0x73, 0x74, 0x20, 0x64, 0x72, 0x79, + 0x69, 0x6e, 0x67, 0x20, 0x67, 0x6c, 0x75, 0x65, + 0x20, 0x70, 0x6c, 0x75, 0x73, 0x2e, 0x00, 0x00, + 0x1e, 0x00, 0x63, 0x6f, 0x6e, 0x65, 0x20, 0x26, + 0x20, 0x6e, 0x65, 0x65, 0x64, 0x6c, 0x65, 0x00, + 0x53, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x20, 0x69, 0x73, 0x20, 0x73, 0x74, 0x69, + 0x6c, 0x6c, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6e, 0x67, 0x20, 0x68, 0x65, 0x72, 0x65, 0x2e, + 0x2e, 0x2e, 0x00, 0x00, 0x1f, 0x00, 0x63, 0x6f, + 0x6e, 0x65, 0x20, 0x26, 0x20, 0x66, 0x65, 0x61, + 0x74, 0x68, 0x65, 0x72, 0x00, 0x53, 0x6f, 0x6d, + 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x69, + 0x73, 0x20, 0x73, 0x74, 0x69, 0x6c, 0x6c, 0x20, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, + 0x68, 0x65, 0x72, 0x65, 0x2e, 0x2e, 0x2e, 0x00, + 0x00, 0x20, 0x00, 0x64, 0x61, 0x72, 0x74, 0x00, + 0x4e, 0x6f, 0x77, 0x20, 0x61, 0x6c, 0x6c, 0x20, + 0x49, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x20, 0x69, + 0x73, 0x20, 0x61, 0x20, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x21, 0x00, 0x00, 0x21, 0x00, 0x64, + 0x69, 0x72, 0x74, 0x79, 0x20, 0x66, 0x65, 0x61, + 0x74, 0x68, 0x65, 0x72, 0x20, 0x64, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x00, 0x49, 0x74, 0x27, 0x73, + 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x6d, 0x79, 0x20, + 0x61, 0x6e, 0x64, 0x20, 0x73, 0x6f, 0x69, 0x6c, + 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x73, 0x6f, + 0x6f, 0x74, 0x2e, 0x00, 0x00, 0x22, 0x00, 0x70, + 0x61, 0x69, 0x6e, 0x74, 0x65, 0x64, 0x20, 0x70, + 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x65, 0x00, 0x54, + 0x68, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, + 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, + 0x65, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, + 0x61, 0x6e, 0x64, 0x20, 0x61, 0x20, 0x67, 0x72, + 0x65, 0x6e, 0x61, 0x64, 0x65, 0x00, 0x69, 0x73, + 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x70, 0x6f, + 0x74, 0x61, 0x74, 0x6f, 0x65, 0x65, 0x73, 0x20, + 0x75, 0x73, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x20, + 0x64, 0x6f, 0x6e, 0x27, 0x74, 0x20, 0x62, 0x6c, + 0x6f, 0x77, 0x20, 0x75, 0x70, 0x2e, 0x00, 0x00, + 0x23, 0x00, 0x63, 0x61, 0x72, 0x20, 0x6a, 0x61, + 0x63, 0x6b, 0x00, 0x4c, 0x6f, 0x6f, 0x6b, 0x73, + 0x20, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x2e, 0x00, 0x00, 0x24, 0x00, 0x64, 0x69, + 0x6e, 0x6f, 0x20, 0x62, 0x6f, 0x6e, 0x65, 0x00, + 0x49, 0x74, 0x27, 0x73, 0x20, 0x62, 0x69, 0x67, + 0x20, 0x61, 0x6e, 0x64, 0x20, 0x77, 0x65, 0x6c, + 0x6c, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x64, 0x2e, 0x20, 0x49, 0x74, 0x20, + 0x6d, 0x75, 0x73, 0x74, 0x20, 0x68, 0x61, 0x76, + 0x65, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x00, 0x61, + 0x20, 0x72, 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x20, + 0x62, 0x69, 0x67, 0x2c, 0x20, 0x65, 0x72, 0x2e, + 0x2e, 0x2e, 0x2c, 0x20, 0x61, 0x6e, 0x69, 0x6d, + 0x61, 0x6c, 0x2c, 0x20, 0x49, 0x20, 0x74, 0x68, + 0x69, 0x6e, 0x6b, 0x2e, 0x2e, 0x2e, 0x00, 0x00, + 0x25, 0x00, 0x73, 0x68, 0x6f, 0x76, 0x65, 0x6c, + 0x00, 0x49, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x50, + 0x4c, 0x41, 0x59, 0x20, 0x44, 0x49, 0x47, 0x47, + 0x45, 0x52, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, + 0x69, 0x74, 0x2e, 0x20, 0x53, 0x6f, 0x20, 0x74, + 0x6f, 0x20, 0x73, 0x70, 0x65, 0x61, 0x6b, 0x2e, + 0x00, 0x00, 0x26, 0x00, 0x72, 0x6f, 0x70, 0x65, + 0x00, 0x4c, 0x6f, 0x6f, 0x6b, 0x73, 0x20, 0x73, + 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x2e, 0x00, 0x00, + 0x27, 0x00, 0x6d, 0x61, 0x73, 0x6b, 0x00, 0x49, + 0x74, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x68, + 0x65, 0x6c, 0x70, 0x20, 0x6d, 0x65, 0x20, 0x73, + 0x65, 0x65, 0x20, 0x62, 0x65, 0x74, 0x74, 0x65, + 0x72, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x77, + 0x61, 0x74, 0x65, 0x72, 0x2e, 0x00, 0x00, 0x28, + 0x00, 0x66, 0x69, 0x6e, 0x73, 0x00, 0x54, 0x68, + 0x65, 0x79, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, + 0x68, 0x65, 0x6c, 0x70, 0x20, 0x6d, 0x65, 0x20, + 0x66, 0x65, 0x65, 0x6c, 0x20, 0x6d, 0x6f, 0x72, + 0x65, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x6d, + 0x79, 0x00, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x77, + 0x61, 0x74, 0x65, 0x72, 0x20, 0x62, 0x72, 0x6f, + 0x74, 0x68, 0x65, 0x72, 0x73, 0x2e, 0x00, 0x00, + 0x29, 0x00, 0x64, 0x69, 0x76, 0x69, 0x6e, 0x67, + 0x20, 0x65, 0x71, 0x75, 0x69, 0x70, 0x6d, 0x65, + 0x6e, 0x74, 0x00, 0x57, 0x61, 0x74, 0x63, 0x68, + 0x20, 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x77, 0x61, + 0x74, 0x65, 0x72, 0x21, 0x20, 0x48, 0x65, 0x72, + 0x65, 0x20, 0x49, 0x20, 0x63, 0x6f, 0x6d, 0x65, + 0x21, 0x00, 0x00, 0x2a, 0x00, 0x61, 0x6e, 0x63, + 0x68, 0x6f, 0x72, 0x00, 0x4e, 0x6f, 0x74, 0x20, + 0x62, 0x69, 0x67, 0x2c, 0x20, 0x62, 0x75, 0x74, + 0x20, 0x68, 0x65, 0x61, 0x76, 0x79, 0x20, 0x65, + 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x20, 0x74, 0x6f, + 0x20, 0x73, 0x69, 0x6e, 0x6b, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x62, 0x6f, 0x61, 0x74, 0x2e, 0x00, + 0x00, 0x2b, 0x00, 0x67, 0x72, 0x61, 0x70, 0x70, + 0x6c, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x6f, 0x6f, + 0x6b, 0x00, 0x57, 0x61, 0x74, 0x63, 0x68, 0x20, + 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x2c, 0x20, + 0x68, 0x65, 0x72, 0x65, 0x20, 0x49, 0x20, 0x63, + 0x6f, 0x6d, 0x65, 0x21, 0x00, 0x00, 0x2c, 0x00, + 0x73, 0x69, 0x63, 0x6b, 0x6c, 0x65, 0x00, 0x49, + 0x74, 0x27, 0x73, 0x20, 0x73, 0x6f, 0x20, 0x62, + 0x6c, 0x75, 0x6e, 0x74, 0x2c, 0x20, 0x74, 0x68, + 0x61, 0x74, 0x20, 0x49, 0x20, 0x63, 0x6f, 0x75, + 0x6c, 0x64, 0x6e, 0x27, 0x74, 0x20, 0x65, 0x76, + 0x65, 0x6e, 0x20, 0x63, 0x75, 0x74, 0x00, 0x62, + 0x75, 0x74, 0x74, 0x65, 0x72, 0x20, 0x77, 0x69, + 0x74, 0x68, 0x20, 0x69, 0x74, 0x2e, 0x00, 0x00, + 0x2d, 0x00, 0x73, 0x6f, 0x6d, 0x65, 0x77, 0x68, + 0x61, 0x74, 0x20, 0x72, 0x6f, 0x74, 0x74, 0x65, + 0x6e, 0x20, 0x63, 0x68, 0x65, 0x65, 0x73, 0x65, + 0x00, 0x52, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x73, + 0x20, 0x6d, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x6d, + 0x79, 0x20, 0x72, 0x6f, 0x6f, 0x6d, 0x2e, 0x00, + 0x00, 0x2e, 0x00, 0x73, 0x68, 0x61, 0x72, 0x70, + 0x65, 0x6e, 0x65, 0x64, 0x20, 0x73, 0x69, 0x63, + 0x6b, 0x6c, 0x65, 0x00, 0x4c, 0x61, 0x6d, 0x62, + 0x73, 0x2c, 0x20, 0x62, 0x65, 0x20, 0x73, 0x69, + 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x20, 0x48, 0x65, + 0x72, 0x65, 0x20, 0x63, 0x6f, 0x6d, 0x65, 0x73, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x69, + 0x6e, 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x2f, 0x00, + 0x68, 0x61, 0x6e, 0x64, 0x6b, 0x65, 0x72, 0x63, + 0x68, 0x69, 0x65, 0x66, 0x00, 0x54, 0x68, 0x65, + 0x20, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x20, 0x6d, + 0x75, 0x73, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, + 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x62, 0x69, + 0x67, 0x20, 0x6e, 0x6f, 0x73, 0x65, 0x20, 0x74, + 0x68, 0x61, 0x74, 0x20, 0x68, 0x65, 0x20, 0x6e, + 0x65, 0x65, 0x64, 0x73, 0x00, 0x74, 0x6f, 0x20, + 0x75, 0x73, 0x65, 0x20, 0x61, 0x20, 0x77, 0x68, + 0x6f, 0x6c, 0x65, 0x20, 0x62, 0x61, 0x72, 0x20, + 0x6f, 0x66, 0x20, 0x73, 0x6f, 0x61, 0x70, 0x20, + 0x6a, 0x75, 0x73, 0x74, 0x20, 0x74, 0x6f, 0x20, + 0x77, 0x61, 0x73, 0x68, 0x20, 0x69, 0x74, 0x2e, + 0x00, 0x00, 0x30, 0x01, 0x6d, 0x6f, 0x75, 0x73, + 0x65, 0x00, 0x49, 0x74, 0x27, 0x73, 0x20, 0x76, + 0x65, 0x72, 0x79, 0x20, 0x61, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x2e, 0x00, 0x00, 0x31, 0x00, 0x72, + 0x6f, 0x63, 0x6b, 0x00, 0x49, 0x74, 0x27, 0x73, + 0x20, 0x76, 0x65, 0x72, 0x79, 0x20, 0x72, 0x65, + 0x67, 0x75, 0x6c, 0x61, 0x72, 0x2c, 0x20, 0x6a, + 0x75, 0x73, 0x74, 0x20, 0x6c, 0x69, 0x6b, 0x65, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6e, 0x6f, + 0x77, 0x62, 0x61, 0x6c, 0x6c, 0x2e, 0x00, 0x00, + 0x32, 0x01, 0x6e, 0x75, 0x67, 0x67, 0x65, 0x74, + 0x00, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x3a, + 0x20, 0x41, 0x75, 0x2c, 0x20, 0x61, 0x74, 0x6f, + 0x6d, 0x69, 0x63, 0x20, 0x6e, 0x6f, 0x3a, 0x20, + 0x37, 0x39, 0x2c, 0x20, 0x61, 0x74, 0x6f, 0x6d, + 0x69, 0x63, 0x20, 0x77, 0x74, 0x2e, 0x3a, 0x20, + 0x31, 0x39, 0x36, 0x2e, 0x39, 0x37, 0x2e, 0x00, + 0x49, 0x6e, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, + 0x20, 0x77, 0x6f, 0x72, 0x64, 0x73, 0x3a, 0x20, + 0x47, 0x4f, 0x4c, 0x44, 0x21, 0x21, 0x21, 0x20, + 0x59, 0x65, 0x73, 0x21, 0x20, 0x59, 0x65, 0x73, + 0x21, 0x00, 0x00, 0x33, 0x00, 0x62, 0x61, 0x6e, + 0x6b, 0x6e, 0x6f, 0x74, 0x65, 0x00, 0x00, 0x00, + 0x34, 0x00, 0x64, 0x69, 0x63, 0x74, 0x61, 0x70, + 0x68, 0x6f, 0x6e, 0x65, 0x00, 0x54, 0x68, 0x65, + 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, + 0x6f, 0x20, 0x62, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x69, 0x65, 0x73, 0x20, 0x69, 0x6e, 0x73, 0x69, + 0x64, 0x65, 0x2e, 0x00, 0x00, 0x35, 0x00, 0x70, + 0x6f, 0x6c, 0x61, 0x72, 0x6f, 0x69, 0x64, 0x00, + 0x49, 0x74, 0x27, 0x73, 0x20, 0x72, 0x65, 0x61, + 0x64, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x61, + 0x6b, 0x65, 0x20, 0x61, 0x20, 0x70, 0x69, 0x63, + 0x74, 0x75, 0x72, 0x65, 0x2e, 0x00, 0x00, 0x36, + 0x00, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x20, 0x74, + 0x61, 0x70, 0x65, 0x00, 0x49, 0x74, 0x20, 0x68, + 0x61, 0x73, 0x20, 0x6e, 0x6f, 0x20, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x2e, 0x00, 0x00, 0x37, 0x00, + 0x73, 0x68, 0x65, 0x65, 0x74, 0x20, 0x6f, 0x66, + 0x20, 0x70, 0x61, 0x70, 0x65, 0x72, 0x00, 0x54, + 0x68, 0x65, 0x72, 0x65, 0x27, 0x73, 0x20, 0x6e, + 0x6f, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x69, + 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6e, 0x74, + 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x69, + 0x74, 0x2e, 0x00, 0x00, 0x38, 0x00, 0x63, 0x6f, + 0x67, 0x6e, 0x61, 0x63, 0x00, 0x46, 0x61, 0x6e, + 0x63, 0x79, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, + 0x6a, 0x75, 0x73, 0x74, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x63, 0x75, + 0x73, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x64, + 0x72, 0x69, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x2e, + 0x00, 0x00, 0x39, 0x00, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x00, 0x49, 0x74, 0x20, 0x68, 0x61, + 0x73, 0x20, 0x75, 0x73, 0x65, 0x72, 0x2d, 0x66, + 0x72, 0x69, 0x65, 0x6e, 0x64, 0x6c, 0x79, 0x20, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x2e, 0x00, 0x4f, 0x6e, 0x65, 0x20, 0x63, + 0x61, 0x6e, 0x20, 0x70, 0x6c, 0x61, 0x79, 0x20, + 0x61, 0x6e, 0x64, 0x20, 0x73, 0x74, 0x6f, 0x70, + 0x2e, 0x00, 0x00, 0x3a, 0x00, 0x69, 0x63, 0x65, + 0x20, 0x74, 0x6f, 0x6e, 0x67, 0x73, 0x00, 0x56, + 0x65, 0x72, 0x79, 0x20, 0x68, 0x61, 0x6e, 0x64, + 0x79, 0x20, 0x74, 0x6f, 0x6f, 0x6c, 0x2e, 0x00, + 0x00, 0x3b, 0x00, 0x63, 0x6f, 0x72, 0x6b, 0x00, + 0x49, 0x74, 0x27, 0x73, 0x20, 0x61, 0x20, 0x73, + 0x74, 0x6f, 0x70, 0x70, 0x65, 0x72, 0x20, 0x6b, + 0x69, 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x63, + 0x6f, 0x72, 0x6b, 0x2e, 0x00, 0x00, 0x3c, 0x00, + 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, 0x20, + 0x63, 0x6f, 0x72, 0x6b, 0x00, 0x4e, 0x6f, 0x77, + 0x20, 0x69, 0x74, 0x27, 0x73, 0x20, 0x6d, 0x6f, + 0x72, 0x65, 0x20, 0x61, 0x70, 0x70, 0x72, 0x6f, + 0x70, 0x69, 0x61, 0x74, 0x65, 0x2e, 0x00, 0x00, + 0x3d, 0x00, 0x70, 0x68, 0x6f, 0x74, 0x6f, 0x00, + 0x49, 0x74, 0x27, 0x73, 0x20, 0x61, 0x20, 0x70, + 0x68, 0x6f, 0x74, 0x6f, 0x20, 0x6f, 0x66, 0x20, + 0x4a, 0x6f, 0x68, 0x6e, 0x20, 0x4e, 0x6f, 0x74, + 0x79, 0x2e, 0x20, 0x49, 0x20, 0x63, 0x61, 0x75, + 0x67, 0x68, 0x74, 0x20, 0x68, 0x69, 0x6d, 0x00, + 0x77, 0x68, 0x65, 0x6e, 0x20, 0x68, 0x65, 0x20, + 0x77, 0x61, 0x73, 0x20, 0x73, 0x69, 0x6e, 0x67, + 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x68, 0x69, 0x67, 0x68, 0x20, 0x43, 0x2e, 0x20, + 0x59, 0x75, 0x63, 0x6b, 0x21, 0x00, 0x00, 0x3e, + 0x00, 0x63, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x00, + 0x54, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x62, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x20, + 0x73, 0x61, 0x79, 0x73, 0x20, 0x69, 0x74, 0x27, + 0x73, 0x00, 0x27, 0x4f, 0x52, 0x49, 0x47, 0x49, + 0x4e, 0x41, 0x4c, 0x20, 0x4d, 0x45, 0x58, 0x49, + 0x43, 0x41, 0x4e, 0x20, 0x43, 0x48, 0x49, 0x4c, + 0x4c, 0x49, 0x27, 0x2e, 0x20, 0x53, 0x75, 0x72, + 0x65, 0x2e, 0x00, 0x00, 0x3f, 0x00, 0x70, 0x61, + 0x73, 0x74, 0x72, 0x79, 0x20, 0x72, 0x6f, 0x6c, + 0x6c, 0x65, 0x72, 0x00, 0x49, 0x74, 0x27, 0x73, + 0x20, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x6f, 0x66, + 0x20, 0x76, 0x65, 0x72, 0x79, 0x20, 0x68, 0x61, + 0x72, 0x64, 0x20, 0x77, 0x6f, 0x6f, 0x64, 0x2e, + 0x00, 0x00, 0x40, 0x00, 0x66, 0x61, 0x6b, 0x65, + 0x20, 0x63, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x00, + 0x4e, 0x6f, 0x77, 0x20, 0x74, 0x68, 0x61, 0x74, + 0x27, 0x73, 0x20, 0x77, 0x68, 0x61, 0x74, 0x20, + 0x49, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x73, + 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x20, 0x73, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x2e, + 0x00, 0x00, 0x41, 0x00, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x00, 0x27, 0x4f, 0x52, 0x49, 0x47, 0x49, + 0x4e, 0x41, 0x4c, 0x20, 0x4d, 0x45, 0x58, 0x49, + 0x43, 0x41, 0x4e, 0x20, 0x43, 0x48, 0x49, 0x4c, + 0x4c, 0x49, 0x27, 0x2e, 0x00, 0x00, 0x42, 0x00, + 0x62, 0x61, 0x74, 0x74, 0x65, 0x72, 0x69, 0x65, + 0x73, 0x00, 0x49, 0x74, 0x27, 0x73, 0x20, 0x61, + 0x20, 0x70, 0x61, 0x69, 0x72, 0x20, 0x6f, 0x66, + 0x20, 0x6e, 0x65, 0x77, 0x20, 0x62, 0x61, 0x74, + 0x74, 0x65, 0x72, 0x69, 0x65, 0x73, 0x2e, 0x00, + 0x00, 0x43, 0x00, 0x64, 0x69, 0x63, 0x74, 0x61, + 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x00, 0x27, 0x4f, + 0x6e, 0x65, 0x2d, 0x74, 0x77, 0x6f, 0x2d, 0x6f, + 0x6e, 0x65, 0x2d, 0x74, 0x77, 0x6f, 0x2c, 0x20, + 0x69, 0x74, 0x27, 0x73, 0x20, 0x6d, 0x65, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x6f, 0x6e, 0x65, 0x00, + 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x6e, 0x6c, 0x79, + 0x20, 0x4d, 0x61, 0x72, 0x6b, 0x20, 0x4d, 0x43, + 0x2e, 0x2e, 0x2e, 0x2e, 0x27, 0x00, 0x49, 0x74, + 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x2e, 0x00, + 0x00, 0x44, 0x01, 0x62, 0x75, 0x72, 0x6e, 0x69, + 0x6e, 0x67, 0x20, 0x70, 0x61, 0x70, 0x65, 0x72, + 0x00, 0x41, 0x6d, 0x61, 0x7a, 0x69, 0x6e, 0x67, + 0x2c, 0x20, 0x69, 0x73, 0x6e, 0x27, 0x74, 0x20, + 0x69, 0x74, 0x3f, 0x00, 0x28, 0x4e, 0x6f, 0x74, + 0x20, 0x74, 0x6f, 0x20, 0x6d, 0x65, 0x6e, 0x74, + 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x75, 0x6e, 0x62, + 0x65, 0x6c, 0x69, 0x65, 0x76, 0x61, 0x62, 0x6c, + 0x65, 0x29, 0x2e, 0x00, 0x00, 0x45, 0x00, 0x6d, + 0x65, 0x61, 0x74, 0x00, 0x54, 0x68, 0x65, 0x72, + 0x65, 0x27, 0x73, 0x20, 0x76, 0x65, 0x61, 0x6c, + 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x70, 0x6c, 0x61, 0x73, 0x74, 0x69, 0x63, 0x20, + 0x62, 0x61, 0x67, 0x2e, 0x00, 0x00, 0x46, 0x00, + 0x70, 0x6c, 0x61, 0x73, 0x74, 0x69, 0x63, 0x20, + 0x62, 0x61, 0x67, 0x00, 0x47, 0x65, 0x65, 0x2c, + 0x20, 0x49, 0x20, 0x68, 0x6f, 0x70, 0x65, 0x20, + 0x69, 0x74, 0x27, 0x73, 0x20, 0x72, 0x65, 0x63, + 0x79, 0x63, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2e, + 0x20, 0x49, 0x20, 0x63, 0x6f, 0x75, 0x6c, 0x64, + 0x6e, 0x27, 0x74, 0x00, 0x73, 0x6c, 0x65, 0x65, + 0x70, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x77, + 0x69, 0x73, 0x65, 0x2e, 0x00, 0x00, 0x47, 0x00, + 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x00, 0x54, 0x68, + 0x65, 0x73, 0x65, 0x20, 0x73, 0x6f, 0x63, 0x6b, + 0x73, 0x20, 0x73, 0x75, 0x63, 0x6b, 0x2e, 0x00, + 0x00, 0x48, 0x00, 0x70, 0x69, 0x6c, 0x6c, 0x73, + 0x00, 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, + 0x72, 0x65, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, + 0x20, 0x74, 0x77, 0x65, 0x6e, 0x74, 0x79, 0x20, + 0x70, 0x69, 0x6c, 0x6c, 0x73, 0x20, 0x69, 0x6e, + 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6a, 0x61, + 0x72, 0x2e, 0x00, 0x00, 0x49, 0x00, 0x68, 0x61, + 0x6e, 0x64, 0x6c, 0x65, 0x00, 0x49, 0x74, 0x20, + 0x6c, 0x6f, 0x6f, 0x6b, 0x73, 0x20, 0x6c, 0x69, + 0x6b, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x61, + 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x64, 0x6f, + 0x6f, 0x72, 0x20, 0x68, 0x61, 0x6e, 0x64, 0x6c, + 0x65, 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x4a, 0x00, + 0x63, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x00, 0x4e, + 0x69, 0x63, 0x65, 0x20, 0x62, 0x6f, 0x74, 0x74, + 0x6c, 0x65, 0x2e, 0x20, 0x49, 0x20, 0x6c, 0x69, + 0x6b, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, + 0x68, 0x61, 0x70, 0x65, 0x2e, 0x00, 0x00, 0x4b, + 0x00, 0x70, 0x61, 0x73, 0x73, 0x00, 0x22, 0x4c, + 0x65, 0x74, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, + 0x67, 0x75, 0x79, 0x20, 0x69, 0x6e, 0x2e, 0x20, + 0x52, 0x47, 0x42, 0x20, 0x43, 0x68, 0x69, 0x65, + 0x66, 0x2e, 0x22, 0x00, 0x00, 0x4c, 0x00, 0x62, + 0x75, 0x6c, 0x62, 0x00, 0x49, 0x74, 0x27, 0x73, + 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, + 0x65, 0x6c, 0x79, 0x20, 0x75, 0x73, 0x65, 0x6c, + 0x65, 0x73, 0x73, 0x2e, 0x00, 0x00, 0x4d, 0x00, + 0x6a, 0x61, 0x69, 0x6c, 0x20, 0x6b, 0x65, 0x79, + 0x00, 0x53, 0x75, 0x72, 0x70, 0x72, 0x69, 0x73, + 0x69, 0x6e, 0x67, 0x6c, 0x79, 0x2c, 0x20, 0x69, + 0x74, 0x27, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x6b, 0x65, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x6a, 0x61, 0x69, 0x6c, 0x2e, + 0x00, 0x00, 0x4e, 0x00, 0x64, 0x65, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x20, 0x70, 0x6c, 0x61, + 0x6e, 0x74, 0x00, 0x57, 0x68, 0x6f, 0x61, 0x2c, + 0x20, 0x69, 0x74, 0x20, 0x74, 0x69, 0x63, 0x6b, + 0x6c, 0x65, 0x73, 0x21, 0x00, 0x00, 0x4f, 0x00, + 0x53, 0x77, 0x69, 0x73, 0x73, 0x20, 0x41, 0x72, + 0x6d, 0x79, 0x20, 0x6b, 0x6e, 0x69, 0x66, 0x65, + 0x00, 0x49, 0x20, 0x77, 0x6f, 0x6e, 0x64, 0x65, + 0x72, 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x27, + 0x73, 0x20, 0x67, 0x6f, 0x74, 0x20, 0x61, 0x20, + 0x54, 0x56, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, + 0x65, 0x73, 0x65, 0x20, 0x74, 0x6f, 0x6f, 0x2e, + 0x00, 0x00, 0x50, 0x00, 0x73, 0x70, 0x72, 0x69, + 0x6e, 0x67, 0x00, 0x49, 0x20, 0x63, 0x6f, 0x75, + 0x6c, 0x64, 0x20, 0x6c, 0x61, 0x75, 0x6e, 0x63, + 0x68, 0x20, 0x61, 0x20, 0x72, 0x6f, 0x63, 0x6b, + 0x65, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, + 0x69, 0x74, 0x21, 0x00, 0x00, 0x51, 0x00, 0x73, + 0x68, 0x6f, 0x76, 0x65, 0x6c, 0x00, 0x4e, 0x69, + 0x63, 0x65, 0x2c, 0x20, 0x68, 0x61, 0x6e, 0x64, + 0x79, 0x20, 0x74, 0x6f, 0x6f, 0x6c, 0x2e, 0x00, + 0x00, 0x52, 0x00, 0x6b, 0x61, 0x6c, 0x65, 0x69, + 0x64, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x00, + 0x49, 0x20, 0x63, 0x6f, 0x75, 0x6c, 0x64, 0x20, + 0x73, 0x70, 0x65, 0x6e, 0x64, 0x20, 0x6d, 0x79, + 0x20, 0x77, 0x68, 0x6f, 0x6c, 0x65, 0x20, 0x6c, + 0x69, 0x66, 0x65, 0x20, 0x6c, 0x6f, 0x6f, 0x6b, + 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x72, 0x6f, + 0x75, 0x67, 0x68, 0x00, 0x74, 0x68, 0x69, 0x73, + 0x2e, 0x20, 0x57, 0x65, 0x6c, 0x6c, 0x2c, 0x20, + 0x6c, 0x65, 0x74, 0x27, 0x73, 0x20, 0x73, 0x61, + 0x79, 0x20, 0x66, 0x69, 0x76, 0x65, 0x20, 0x6d, + 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x00, + 0x4f, 0x68, 0x2c, 0x20, 0x61, 0x6c, 0x6c, 0x20, + 0x72, 0x69, 0x67, 0x68, 0x74, 0x2c, 0x20, 0x69, + 0x74, 0x27, 0x73, 0x20, 0x62, 0x6f, 0x72, 0x69, + 0x6e, 0x67, 0x2e, 0x00, 0x00, 0x53, 0x00, 0x22, + 0x53, 0x6f, 0x6c, 0x64, 0x69, 0x65, 0x72, 0x20, + 0x4e, 0x65, 0x77, 0x73, 0x22, 0x00, 0x49, 0x74, + 0x27, 0x73, 0x20, 0x6a, 0x75, 0x73, 0x74, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6d, 0x65, + 0x20, 0x61, 0x73, 0x20, 0x77, 0x6f, 0x6d, 0x65, + 0x6e, 0x27, 0x73, 0x20, 0x6d, 0x61, 0x67, 0x61, + 0x7a, 0x69, 0x6e, 0x65, 0x73, 0x2c, 0x00, 0x62, + 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, + 0x20, 0x61, 0x72, 0x65, 0x20, 0x67, 0x75, 0x6e, + 0x73, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, 0x61, + 0x64, 0x20, 0x6f, 0x66, 0x20, 0x70, 0x65, 0x72, + 0x66, 0x75, 0x6d, 0x65, 0x73, 0x2e, 0x00, 0x49, + 0x74, 0x27, 0x73, 0x20, 0x63, 0x6f, 0x6f, 0x6c, + 0x20, 0x61, 0x6e, 0x79, 0x77, 0x61, 0x79, 0x2e, + 0x00, 0x00, 0x54, 0x00, 0x67, 0x72, 0x65, 0x6e, + 0x61, 0x64, 0x65, 0x00, 0x49, 0x20, 0x6d, 0x75, + 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x63, 0x72, + 0x61, 0x7a, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x70, + 0x75, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x6d, 0x79, + 0x20, 0x70, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x2e, + 0x00, 0x53, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x69, + 0x6e, 0x67, 0x20, 0x68, 0x6f, 0x72, 0x72, 0x69, + 0x62, 0x6c, 0x65, 0x20, 0x6d, 0x69, 0x67, 0x68, + 0x74, 0x20, 0x68, 0x61, 0x70, 0x70, 0x65, 0x6e, + 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0x55, 0x00, 0x6d, + 0x75, 0x67, 0x00, 0x49, 0x74, 0x27, 0x73, 0x20, + 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x00, 0x00, + 0x56, 0x00, 0x6d, 0x75, 0x67, 0x20, 0x66, 0x75, + 0x6c, 0x6c, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x75, + 0x64, 0x00, 0x57, 0x68, 0x79, 0x20, 0x64, 0x69, + 0x64, 0x20, 0x49, 0x20, 0x66, 0x69, 0x6c, 0x6c, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x75, 0x67, + 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6d, 0x75, + 0x64, 0x3f, 0x00, 0x00, 0x54, 0x68, 0x61, 0x74, + 0x20, 0x6d, 0x61, 0x6b, 0x65, 0x73, 0x20, 0x6e, + 0x6f, 0x20, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x21, + 0x00, 0x00, 0x57, 0x00, 0x63, 0x72, 0x75, 0x6d, + 0x62, 0x73, 0x00, 0x54, 0x68, 0x65, 0x73, 0x65, + 0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x6f, 0x6d, + 0x65, 0x20, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, + 0x73, 0x20, 0x6f, 0x66, 0x20, 0x62, 0x72, 0x65, + 0x61, 0x64, 0x2e, 0x00, 0x00, 0x58, 0x00, 0x72, + 0x6f, 0x70, 0x65, 0x00, 0x49, 0x74, 0x27, 0x73, + 0x20, 0x74, 0x68, 0x69, 0x6e, 0x20, 0x61, 0x6e, + 0x64, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x2e, 0x00, + 0x00, 0x59, 0x00, 0x72, 0x6f, 0x70, 0x65, 0x20, + 0x74, 0x69, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, + 0x67, 0x72, 0x65, 0x6e, 0x61, 0x64, 0x65, 0x00, + 0x4d, 0x79, 0x20, 0x70, 0x61, 0x74, 0x65, 0x6e, + 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, + 0x62, 0x6f, 0x6d, 0x62, 0x61, 0x73, 0x74, 0x69, + 0x63, 0x20, 0x79, 0x6f, 0x79, 0x6f, 0x2e, 0x00, + 0x00, 0x5a, 0x00, 0x6d, 0x65, 0x64, 0x69, 0x63, + 0x69, 0x6e, 0x65, 0x00, 0x54, 0x68, 0x65, 0x79, + 0x20, 0x6c, 0x6f, 0x6f, 0x6b, 0x20, 0x6c, 0x69, + 0x6b, 0x65, 0x20, 0x73, 0x6c, 0x65, 0x65, 0x70, + 0x69, 0x6e, 0x67, 0x20, 0x70, 0x69, 0x6c, 0x6c, + 0x73, 0x2e, 0x00, 0x41, 0x6c, 0x74, 0x68, 0x6f, + 0x75, 0x67, 0x68, 0x20, 0x49, 0x20, 0x64, 0x6f, + 0x6e, 0x27, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, + 0x20, 0x61, 0x6e, 0x79, 0x20, 0x69, 0x64, 0x65, + 0x61, 0x20, 0x77, 0x68, 0x79, 0x2e, 0x00, 0x00, + 0x5b, 0x00, 0x64, 0x72, 0x75, 0x67, 0x67, 0x65, + 0x64, 0x20, 0x66, 0x6f, 0x6f, 0x64, 0x00, 0x53, + 0x6d, 0x65, 0x6c, 0x6c, 0x73, 0x20, 0x6c, 0x69, + 0x6b, 0x65, 0x20, 0x54, 0x65, 0x65, 0x6e, 0x20, + 0x53, 0x70, 0x69, 0x72, 0x69, 0x74, 0x2e, 0x00, + 0x00, 0x5c, 0x01, 0x62, 0x69, 0x72, 0x64, 0x00, + 0x49, 0x74, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, + 0x20, 0x6d, 0x61, 0x6b, 0x65, 0x20, 0x61, 0x20, + 0x67, 0x72, 0x65, 0x61, 0x74, 0x20, 0x64, 0x69, + 0x6e, 0x6e, 0x2e, 0x2e, 0x2e, 0x20, 0x49, 0x20, + 0x6d, 0x65, 0x61, 0x6e, 0x00, 0x66, 0x72, 0x69, + 0x65, 0x6e, 0x64, 0x2c, 0x20, 0x6f, 0x66, 0x20, + 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x00, + 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, + 0x00, 0x01, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, + 0x00, 0x01, 0xff, 0x00, 0x00, 0x02, 0xff, 0xff, + 0xff, 0x01, 0xff, 0x00, 0x00, 0x02, 0xff, 0x00, + 0x00, 0x01, 0xff, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x06, 0xff, 0xff, 0x00, 0x02, 0xff, 0x00, + 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, + 0x00, 0x01, 0x02, 0xff, 0x00, 0x04, 0xff, 0x00, + 0x00, 0xff, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, + 0x00, 0x0a, 0xff, 0x00, 0x00, 0x01, 0x0d, 0x00, + 0x00, 0x01, 0x02, 0xff, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x06, 0x07, 0x00, 0x00, 0xff, 0xff, 0xff, + 0x00, 0x01, 0x04, 0x02, 0x03, 0xff, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0xff, 0xff, + 0x00, 0x01, 0x02, 0xff, 0x00, 0xff, 0xff, 0x00, + 0x00, 0x04, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, + 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0x00, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, + 0x00, 0xf8, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x28, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x67, 0x7c, 0x04, 0x4f, 0x29, 0x00, + 0x00, 0xec, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x2a, 0x66, 0x37, 0x03, 0xca, 0x0c, 0x00, + 0x00, 0x75, 0xbf, 0x91, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x99, 0x5f, 0x87, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x64, 0x34, 0xbe, 0x47, 0xad, 0x03, 0x86, + 0x02, 0x18, 0x20, 0xd4, 0x02, 0x00, 0x00, 0x00, + 0x00, 0xd6, 0x22, 0x58, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x0c, 0x67, 0xac, 0xf3, 0x00, 0x00, 0x00, + 0x00, 0xc3, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xdf, 0x27, 0xc8, 0x4d, 0x64, 0x08, 0x00, + 0x00, 0x4e, 0x7e, 0x5c, 0xe6, 0x00, 0x00, 0x00, + 0x00, 0x69, 0x0d, 0x27, 0x0d, 0x00, 0x00, 0x00, + 0x00, 0x4a, 0x0d, 0x45, 0x0d, 0x00, 0x00, 0x00, + 0x00, 0xb9, 0x48, 0x71, 0x12, 0x04, 0x27, 0x00, + 0x00, 0xdb, 0x73, 0xfe, 0x02, 0x00, 0x00, 0x00, + 0x00, 0xfc, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5b, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x13, 0x40, 0x51, 0x93, 0x00, 0x00, 0x00, + 0x00, 0x13, 0x4f, 0x4f, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x7a, 0x50, 0x64, 0x5d, 0x6f, 0x04, 0x00, + 0x00, 0xa3, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x88, 0x02, 0x91, 0x02, 0x00, 0x00, 0x00, + 0x00, 0xce, 0x02, 0x77, 0x04, 0x2f, 0x1d, 0x00, + 0x00, 0x08, 0x69, 0x06, 0x23, 0x32, 0x4b, 0x3e, + 0x6c, 0x46, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf6, 0x16, 0xc5, 0x13, 0x00, 0x00, 0x00, + 0x00, 0xfb, 0x0a, 0x21, 0x73, 0x68, 0x3b, 0x00, + 0x00, 0x9b, 0x15, 0x0d, 0x1a, 0x00, 0x00, 0x00, + 0x00, 0xce, 0xf7, 0x25, 0x6b, 0xcb, 0x13, 0x00, + 0x00, 0x33, 0xa5, 0xbf, 0x01, 0xb3, 0x10, 0x00, + 0x00, 0xcb, 0x13, 0x7c, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x7e, 0x0f, 0x14, 0x59, 0xc5, 0x13, 0x00, + 0x00, 0x95, 0x51, 0xce, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4d, 0x29, 0xfc, 0x14, 0xe1, 0xa4, 0xad, + 0x8e, 0x07, 0x5b, 0x47, 0x02, 0x00, 0x00, 0x00, + 0x00, 0xbf, 0x52, 0x3c, 0x0e, 0xc5, 0x0e, 0x00, + 0x00, 0x44, 0x6b, 0xe0, 0x76, 0x97, 0x00, 0x00, + 0x00, 0x5a, 0x1a, 0xb8, 0xb3, 0x00, 0x00, 0x00, + 0x00, 0x6c, 0x66, 0x8f, 0xdc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0xb4, 0x01, 0x6f, 0x04, 0xcb, + 0x07, 0x01, 0x09, 0xff, 0xff, 0x36, 0x09, 0x02, + 0x0a, 0x2d, 0x0a, 0xff, 0xff, 0x43, 0x0c, 0x75, + 0x0d, 0x0e, 0x0f, 0xb8, 0x0f, 0xff, 0xff, 0xdb, + 0x10, 0xac, 0x11, 0xd9, 0x12, 0x68, 0x14, 0xff, + 0xff, 0x85, 0x14, 0x28, 0x15, 0xff, 0xff, 0xde, + 0x16, 0x26, 0x17, 0xff, 0xff, 0x52, 0x17, 0x8c, + 0x17, 0x13, 0x19, 0x3e, 0x1a, 0x63, 0x1a, 0x84, + 0x1a, 0xc9, 0x1a, 0xf7, 0x1a, 0x27, 0x1b, 0x4a, + 0x1b, 0xff, 0xff, 0x97, 0x1c, 0xec, 0x1c, 0xff, + 0xff, 0x2c, 0x1d, 0xd8, 0x1d, 0xff, 0xff, 0x41, + 0x20, 0x5f, 0x21, 0xff, 0xff, 0x82, 0x25, 0xfe, + 0x25, 0xff, 0xff, 0x6f, 0x2b, 0xb2, 0x2b, 0xdd, + 0x2b, 0x5d, 0x2c, 0x9b, 0x2c, 0xff, 0xff, 0x02, + 0x31, 0x1b, 0x31, 0x37, 0x31, 0x6f, 0x31, 0xff, + 0xff, 0x7d, 0x31, 0x15, 0x32, 0xff, 0xff, 0x41, + 0x3e, 0xa3, 0x3e, 0x08, 0x3f, 0xea, 0x3f, 0xff, + 0xff, 0x0d, 0x40, 0x39, 0x44, 0x6a, 0x44, 0xff, + 0xff, 0xe2, 0x58, 0xc5, 0x59, 0x9d, 0x5a, 0xd7, + 0x5a, 0xff, 0xff, 0xf3, 0x5a, 0xa9, 0x5b, 0x53, + 0x5c, 0x99, 0x5c, 0x3e, 0x5d, 0xff, 0xff, 0x5b, + 0x5d, 0x0a, 0x5f, 0xae, 0x5f, 0xcf, 0x5f, 0xff, + 0xff, 0xfe, 0x5f, 0x88, 0x60, 0xff, 0xff, 0xf0, + 0x62, 0x18, 0x63, 0x47, 0x63, 0x6b, 0x63, 0x82, + 0x63, 0xff, 0xff, 0xf7, 0x6b, 0x7f, 0x6d, 0x7b, + 0x6e, 0xa4, 0x6e, 0xff, 0xff, 0xc0, 0x6e, 0xe9, + 0x6e, 0x03, 0x6f, 0xff, 0xff, 0x5e, 0x73, 0xb3, + 0x73, 0xe8, 0x73, 0xff, 0xff, 0xfc, 0x64, 0x4c, + 0x65, 0xab, 0x65, 0xff, 0xff, 0x03, 0x74, 0x59, + 0x74, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xdd, 0xec, 0x50, + 0x62, 0x61, 0x63, 0x6b, 0x67, 0x72, 0x6f, 0x75, + 0x6e, 0x64, 0x73, 0x00, 0x69, 0x41, 0x4e, 0x44, + 0x52, 0x5a, 0x45, 0x4a, 0x20, 0x44, 0x4f, 0x42, + 0x52, 0x5a, 0x59, 0x3b, 0x53, 0x4b, 0x49, 0x00, + 0x00, 0xe3, 0xd2, 0x50, 0x6d, 0x75, 0x73, 0x69, + 0x63, 0x00, 0x69, 0x52, 0x41, 0x44, 0x45, 0x4b, + 0x20, 0x53, 0x5a, 0x41, 0x4d, 0x52, 0x45, 0x4a, + 0x00, 0x00, 0xd7, 0xe6, 0x50, 0x61, 0x6e, 0x69, + 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, + 0x6e, 0x64, 0x20, 0x67, 0x72, 0x61, 0x70, 0x68, + 0x69, 0x63, 0x73, 0x00, 0x69, 0x47, 0x52, 0x5a, + 0x45, 0x47, 0x4f, 0x52, 0x5a, 0x20, 0x4d, 0x49, + 0x45, 0x43, 0x48, 0x4f, 0x57, 0x53, 0x4b, 0x49, + 0x00, 0x00, 0xd9, 0xe8, 0x50, 0x70, 0x72, 0x6f, + 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x20, 0x61, 0x6e, 0x64, 0x20, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x00, 0x69, 0x41, 0x44, 0x52, + 0x49, 0x41, 0x4e, 0x20, 0x43, 0x48, 0x4d, 0x49, + 0x45, 0x4c, 0x41, 0x52, 0x5a, 0x00, 0x00, 0xdd, + 0xec, 0x5c, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x74, 0x69, 0x72, 0x69, + 0x6e, 0x67, 0x20, 0x6a, 0x6f, 0x75, 0x72, 0x6e, + 0x65, 0x79, 0x2e, 0x2e, 0x2e, 0x00, 0x00, 0xdd, + 0xec, 0x5c, 0x54, 0x48, 0x45, 0x20, 0x45, 0x4e, + 0x44, 0x00, 0x00, 0x70, 0x72, 0x6f, 0x67, 0x72, + 0x61, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x00, 0x41, + 0x44, 0x52, 0x49, 0x41, 0x4e, 0x20, 0x43, 0x48, + 0x4d, 0x49, 0x45, 0x4c, 0x41, 0x52, 0x5a, 0x00, + 0x20, 0x00, 0x20, 0x00, 0x61, 0x6e, 0x69, 0x6d, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x47, 0x52, + 0x5a, 0x45, 0x47, 0x4f, 0x52, 0x5a, 0x20, 0x4d, + 0x49, 0x45, 0x43, 0x48, 0x4f, 0x57, 0x53, 0x4b, + 0x49, 0x00, 0x20, 0x00, 0x20, 0x00, 0x61, 0x64, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x20, 0x61, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x00, 0x54, 0x4f, 0x4d, 0x41, + 0x53, 0x5a, 0x20, 0x50, 0x49, 0x4c, 0x49, 0x4b, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x62, 0x61, 0x63, + 0x6b, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x73, + 0x00, 0x41, 0x4e, 0x44, 0x52, 0x5a, 0x45, 0x4a, + 0x20, 0x44, 0x4f, 0x42, 0x52, 0x5a, 0x59, 0x4e, + 0x53, 0x4b, 0x49, 0x00, 0x20, 0x00, 0x20, 0x00, + 0x6d, 0x75, 0x73, 0x69, 0x63, 0x00, 0x52, 0x41, + 0x44, 0x45, 0x4b, 0x20, 0x53, 0x5a, 0x41, 0x4d, + 0x52, 0x45, 0x4a, 0x00, 0x20, 0x00, 0x20, 0x00, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x20, 0x61, 0x72, + 0x74, 0x00, 0x44, 0x41, 0x52, 0x49, 0x55, 0x53, + 0x5a, 0x20, 0x41, 0x4e, 0x41, 0x43, 0x4b, 0x49, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x68, 0x65, 0x6c, 0x70, 0x00, 0x50, 0x45, + 0x54, 0x45, 0x52, 0x20, 0x57, 0x45, 0x4c, 0x4c, + 0x53, 0x00, 0x20, 0x00, 0x20, 0x00, 0x62, 0x65, + 0x74, 0x61, 0x74, 0x65, 0x73, 0x74, 0x65, 0x72, + 0x73, 0x00, 0x54, 0x4f, 0x4d, 0x41, 0x53, 0x5a, + 0x20, 0x46, 0x55, 0x52, 0x4d, 0x41, 0x4e, 0x49, + 0x55, 0x4b, 0x00, 0x50, 0x41, 0x54, 0x52, 0x59, + 0x4b, 0x20, 0x53, 0x41, 0x57, 0x49, 0x43, 0x4b, + 0x49, 0x00, 0x50, 0x41, 0x57, 0x45, 0x4c, 0x20, + 0x4d, 0x49, 0x45, 0x43, 0x48, 0x4f, 0x57, 0x53, + 0x4b, 0x49, 0x00, 0x4d, 0x41, 0x52, 0x45, 0x4b, + 0x20, 0x43, 0x48, 0x4d, 0x49, 0x45, 0x4c, 0x41, + 0x52, 0x5a, 0x00, 0x4a, 0x45, 0x44, 0x52, 0x45, + 0x4b, 0x20, 0x57, 0x49, 0x43, 0x48, 0x41, 0x00, + 0x4d, 0x52, 0x2e, 0x20, 0x4a, 0x4f, 0x48, 0x4e, + 0x20, 0x44, 0x4f, 0x45, 0x00, 0x4d, 0x41, 0x52, + 0x43, 0x49, 0x4e, 0x20, 0x44, 0x52, 0x45, 0x57, + 0x53, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, + 0x69, 0x64, 0x65, 0x61, 0x73, 0x00, 0x41, 0x44, + 0x52, 0x49, 0x41, 0x4e, 0x20, 0x43, 0x48, 0x4d, + 0x49, 0x45, 0x4c, 0x41, 0x52, 0x5a, 0x00, 0x47, + 0x52, 0x5a, 0x45, 0x47, 0x4f, 0x52, 0x5a, 0x20, + 0x4d, 0x49, 0x45, 0x43, 0x48, 0x4f, 0x57, 0x53, + 0x4b, 0x49, 0x00, 0x41, 0x4e, 0x44, 0x52, 0x5a, + 0x45, 0x4a, 0x20, 0x53, 0x41, 0x57, 0x49, 0x43, + 0x4b, 0x49, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x00, 0x4a, + 0x41, 0x52, 0x4f, 0x53, 0x5d, 0x41, 0x57, 0x20, + 0x57, 0x45, 0x49, 0x53, 0x53, 0x00, 0x41, 0x47, + 0x45, 0x4e, 0x43, 0x4a, 0x41, 0x20, 0x53, 0x54, + 0x59, 0x4c, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x74, 0x68, 0x61, 0x6e, 0x6b, 0x73, 0x00, + 0x48, 0x45, 0x4e, 0x52, 0x59, 0x20, 0x4b, 0x55, + 0x54, 0x54, 0x4e, 0x45, 0x52, 0x00, 0x55, 0x2d, + 0x4b, 0x4e, 0x4f, 0x57, 0x2d, 0x57, 0x48, 0x4f, + 0x2d, 0x55, 0x2d, 0x52, 0x2d, 0x42, 0x55, 0x54, + 0x2d, 0x57, 0x41, 0x4e, 0x54, 0x2d, 0x32, 0x2d, + 0x53, 0x54, 0x41, 0x59, 0x2d, 0x49, 0x4e, 0x2d, + 0x53, 0x48, 0x41, 0x44, 0x4f, 0x57, 0x00, 0x45, + 0x50, 0x49, 0x43, 0x20, 0x4d, 0x45, 0x47, 0x41, + 0x47, 0x41, 0x4d, 0x45, 0x53, 0x00, 0x58, 0x4c, + 0x41, 0x4e, 0x44, 0x20, 0x53, 0x4f, 0x46, 0x54, + 0x57, 0x41, 0x52, 0x45, 0x20, 0x50, 0x55, 0x42, + 0x4c, 0x49, 0x53, 0x48, 0x49, 0x4e, 0x47, 0x00, + 0x4b, 0x41, 0x54, 0x41, 0x52, 0x5a, 0x59, 0x4e, + 0x41, 0x20, 0x4d, 0x49, 0x45, 0x43, 0x48, 0x4f, + 0x57, 0x53, 0x4b, 0x41, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x61, 0x6c, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x6b, + 0x73, 0x00, 0x41, 0x4e, 0x44, 0x52, 0x5a, 0x45, + 0x4a, 0x20, 0x4d, 0x49, 0x43, 0x48, 0x41, 0x4c, + 0x41, 0x4b, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x70, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x00, + 0x4d, 0x45, 0x54, 0x52, 0x4f, 0x50, 0x4f, 0x4c, + 0x49, 0x53, 0x20, 0x53, 0x4f, 0x46, 0x54, 0x57, + 0x41, 0x52, 0x45, 0x20, 0x48, 0x4f, 0x55, 0x53, + 0x45, 0x00, 0x28, 0x63, 0x29, 0x20, 0x31, 0x39, + 0x39, 0x34, 0x2d, 0x31, 0x39, 0x39, 0x35, 0x00, + 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x41, 0x6c, + 0x6c, 0x20, 0x61, 0x6c, 0x6c, 0x75, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, + 0x70, 0x75, 0x6e, 0x73, 0x00, 0x61, 0x72, 0x65, + 0x20, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00 +}; + +// Dialog Strings Block + +#define ANIM_WAIT "\xff" +#define NEW_LINE "\n" +#define DISPLAY_MESSAGE "\n\n" +#define CHANGE_CHARACTER "\n\n\n" +#define END_DIALOG "\n\n\n\n" + +const static char* dialog_0[] = { + ANIM_WAIT, + "Good day.", + CHANGE_CHARACTER, + "Yeah.", + CHANGE_CHARACTER, + "Why are you standing here?", + CHANGE_CHARACTER, + "It's a question of gravitation.", + CHANGE_CHARACTER, + "Extremely funny joke.", + DISPLAY_MESSAGE, + "For a soldier.", + CHANGE_CHARACTER, + "I'm not a soldier, although I tried", + NEW_LINE, + "to be.", + DISPLAY_MESSAGE, + "I didn't pass the intell...", + NEW_LINE, + "the physical test.", + DISPLAY_MESSAGE, + "They ordered me to shoot at", + NEW_LINE, + "a thrown coin when jumping", + NEW_LINE, + "from the tree onto a horse.", + CHANGE_CHARACTER, + "Yep, that seems hard.", + CHANGE_CHARACTER, + "Special Forces ain't a piece of cake,", + NEW_LINE, + "you know.", + CHANGE_CHARACTER, + "I'm sorry you didn't make it.", + CHANGE_CHARACTER, + "Yeah, I missed the horse.", + END_DIALOG +}; + +const static char* dialog_1[] = { + "So...", + DISPLAY_MESSAGE, + "What are you doing now?", + CHANGE_CHARACTER, + "Wanna hear a funny answer?", + CHANGE_CHARACTER, + "Please don't bother.", + CHANGE_CHARACTER, + "All right, but you know, there's not much", + NEW_LINE, + "entertainment here.", + DISPLAY_MESSAGE, + "Sometimes I like to joke a bit.", + NEW_LINE, + "Or a byte, heh-heh!", + CHANGE_CHARACTER, + "Well then...", + CHANGE_CHARACTER, + "I'm guarding this place...", + CHANGE_CHARACTER, + "Wow. That's a surprise.", + CHANGE_CHARACTER, + "...And I'm told to kill ANYBODY", + NEW_LINE, + "who tries to get in.", + CHANGE_CHARACTER, + "What about the owner?", + CHANGE_CHARACTER, + "He's not just ANYBODY, you know.", + CHANGE_CHARACTER, + "I guess you won't let ME in then?", + CHANGE_CHARACTER, + "Bingo.", + CHANGE_CHARACTER, + "Even if say I please?", + CHANGE_CHARACTER, + "No way, kiddo.", + CHANGE_CHARACTER, + ANIM_WAIT, + "PLEEEEEASE.", + CHANGE_CHARACTER, + "Forget it.", + NEW_LINE, + "I've got a heart of stone.", + CHANGE_CHARACTER, + "Like your brain.", + CHANGE_CHARACTER, + ANIM_WAIT, + "I don't follow.", + CHANGE_CHARACTER, + "Never mind.", + NEW_LINE, + "How can I soften your stone heart?", + CHANGE_CHARACTER, + "You can't. I'm a really tough guy.", + DISPLAY_MESSAGE, + "But come here, I'll give you", + NEW_LINE, + "a consolation...", + END_DIALOG +}; + +const static char* dialog_2[] = { + "Thanks. What is it?", + CHANGE_CHARACTER, + "Chocolate candy.", + DISPLAY_MESSAGE, + "My employer gave me a few of these", + NEW_LINE, + "for lunch and...", + CHANGE_CHARACTER, + "Is your employer home?!", + CHANGE_CHARACTER, + "Mr. John Noty? Yeah, why?", + CHANGE_CHARACTER, + "Oh, nothing...", + DISPLAY_MESSAGE, + "John Noty...", + DISPLAY_MESSAGE, + "I think I've heard of him...", + CHANGE_CHARACTER, + "You should have. He's making big money,", + NEW_LINE, + "you know.", + DISPLAY_MESSAGE, + "Especially lately...", + CHANGE_CHARACTER, + "Yeah?...", + CHANGE_CHARACTER, + "Well, I don't know how.", + DISPLAY_MESSAGE, + "Maybe it has something to do with", + NEW_LINE, + "the mad scientist that came round", + NEW_LINE, + "one day...", + DISPLAY_MESSAGE, + "Oh, you think you're smart, don't you?!", + NEW_LINE, + "Are you a spy?!", + CHANGE_CHARACTER, + "Hey, I'm just a common homeboy.", + DISPLAY_MESSAGE, + "If you don't wanna talk,", + NEW_LINE, + "don't talk.", + CHANGE_CHARACTER, + "Mr. Bad Gay told me to watch", + NEW_LINE, + "for spies...", + CHANGE_CHARACTER, + "Do I really look like a spy?", + CHANGE_CHARACTER, + "...And kill them immediately...", + CHANGE_CHARACTER, + "Hey, chill...", + CHANGE_CHARACTER, + "...And I haven't killed anybody", + NEW_LINE, + "for a loooong time...", + CHANGE_CHARACTER, + "It's about this candy, isn't it?", + NEW_LINE, + "Do you want it back? No problem.", + CHANGE_CHARACTER, + ANIM_WAIT, + "Sorry, I just got carried away.", + CHANGE_CHARACTER, + "I understand.", + NEW_LINE, + "It's hot around here.", + CHANGE_CHARACTER, + "Yeah.", + END_DIALOG +}; + +const static char* dialog_3[] = { + "Mister guard, I...", + CHANGE_CHARACTER, + "Listen, boy.", + DISPLAY_MESSAGE, + "A spy or not a spy, it's out of", + NEW_LINE, + "the question.", + DISPLAY_MESSAGE, + "You won't get in, no matter if you just want", + NEW_LINE, + "to visit the place, steal something or", + NEW_LINE, + "talk to Mr. John Noty.", + DISPLAY_MESSAGE, + "Also you won't make me talk.", + DISPLAY_MESSAGE, + "One more try and I'll make a few", + NEW_LINE, + "highways for worms.", + DISPLAY_MESSAGE, + "In your body.", + DISPLAY_MESSAGE, + "Got it?", + CHANGE_CHARACTER, + "Got it.", + END_DIALOG +}; + +const static char* dialog_4[] = { + "Nice suit.", + CHANGE_CHARACTER, + "Yeah.", + END_DIALOG +}; + +const static char* dialog_5[] = { + CHANGE_CHARACTER, + "Damn!", + DISPLAY_MESSAGE, + "It's only you!...", + END_DIALOG +}; + +const static char* dialog_6[] = { + "Hey!", + CHANGE_CHARACTER, + "What?", + CHANGE_CHARACTER, + "What's in this bottle?", + CHANGE_CHARACTER, + "You can't prove anything!", + CHANGE_CHARACTER, + "Something hot, I guess?..", + CHANGE_CHARACTER, + "None of your business.", + CHANGE_CHARACTER, + "Drinking on duty, huh?", + CHANGE_CHARACTER, + "You think you've almost got me,", + NEW_LINE, + "don't you?", + DISPLAY_MESSAGE, + "Forget it.", + END_DIALOG +}; + +const static char* dialog_7[] = { + "Hey!", + CHANGE_CHARACTER, + "You've seen nothing.", + DISPLAY_MESSAGE, + "I'm clean.", + END_DIALOG +}; + +const static char* dialog_8[] = { + "Hey!", + CHANGE_CHARACTER, + "Get lost.", + END_DIALOG +}; + +const static char* dialog_9[] = { + "What would you say if I gave you some", + NEW_LINE, + "gold?...", + CHANGE_CHARACTER, + "I'd say thanks.", + CHANGE_CHARACTER, + "Would you let me in?", + CHANGE_CHARACTER, + "I guess so...", + CHANGE_CHARACTER, + "You have to be sure.", + CHANGE_CHARACTER, + "OK, I'm sure. I will let you in.", + CHANGE_CHARACTER, + "All right. Here we go.", + END_DIALOG +}; + +const static char* dialog_10[] = { + "Now please open the door.", + CHANGE_CHARACTER, + "No way. Now buzz off.", + CHANGE_CHARACTER, + "Hey! I gave you the gold, remember?...", + CHANGE_CHARACTER, + "What gold?", + CHANGE_CHARACTER, + "WHAT GOLD?!?", + CHANGE_CHARACTER, + "I don't know nothing 'bout any gold.", + END_DIALOG +}; + +const static char* dialog_11[] = { + "You... You...", + CHANGE_CHARACTER, + "Buzz off.", + CHANGE_CHARACTER, + "You said you'd let me in!", + DISPLAY_MESSAGE, + "But you've let me down!", + CHANGE_CHARACTER, + "Yeah, but I'll let you off.", + END_DIALOG +}; + +const static char* dialog_12[] = { + "You can't even trust corrupt", + NEW_LINE, + "guards these days.", + END_DIALOG +}; + +const static char* dialog_13[] = { + "Hi.", + CHANGE_CHARACTER, + "Hello.", + CHANGE_CHARACTER, + "I'm Mark.", + DISPLAY_MESSAGE, + "What's your name?", + CHANGE_CHARACTER, + "What's my name?", + CHANGE_CHARACTER, + "I don't know, you tell me.", + CHANGE_CHARACTER, + "Me.", + CHANGE_CHARACTER, + "Don't tell me 'me', just say", + NEW_LINE, + "your name!", + CHANGE_CHARACTER, + "Your na..", + CHANGE_CHARACTER, + "Gee!", + DISPLAY_MESSAGE, + "What did your dad call you?", + CHANGE_CHARACTER, + "Sonny.", + CHANGE_CHARACTER, + "Sonny as in the name or sonny", + NEW_LINE, + "as in son?", + CHANGE_CHARACTER, + "Sonny.", + CHANGE_CHARACTER, + "Are you stupid or just rude?", + CHANGE_CHARACTER, + "Sonny, I am.", + CHANGE_CHARACTER, + "(sigh)", + END_DIALOG +}; + +const static char* dialog_14[] = { + "Listen, Sonny or whatever.", + DISPLAY_MESSAGE, + "What are you trying to do", + NEW_LINE, + "with this ball?", + CHANGE_CHARACTER, + "Well, grandpa said he'd take", + NEW_LINE, + "me to ZOO if I score.", + CHANGE_CHARACTER, + "I think you should throw the ball", + NEW_LINE, + "a little bit higher.", + CHANGE_CHARACTER, + "Yeah, I know.", + CHANGE_CHARACTER, + "So?", + CHANGE_CHARACTER, + "So what?", + CHANGE_CHARACTER, + "So why don't you do it?!", + CHANGE_CHARACTER, + "It must be something with", + NEW_LINE, + "my eyes.", + CHANGE_CHARACTER, + "You should wear glassess?", + CHANGE_CHARACTER, + "No, why?", + CHANGE_CHARACTER, + "(sigh)", + DISPLAY_MESSAGE, + "Maybe you're just too weak to", + NEW_LINE, + "send the ball high enough?", + CHANGE_CHARACTER, + "No kidding.", + CHANGE_CHARACTER, + "(sigh)", + END_DIALOG +}; + +const static char* dialog_15[] = { + "Hey, kid!", + DISPLAY_MESSAGE, + "I've got a great idea!", + CHANGE_CHARACTER, + "Yeah?", + CHANGE_CHARACTER, + "Go to your grandpa and", + NEW_LINE, + "say you've scored!", + CHANGE_CHARACTER, + "You mean lie?", + CHANGE_CHARACTER, + "Well, sort of...", + CHANGE_CHARACTER, + "I NEVER LIE!", + CHANGE_CHARACTER, + "Never?!", + CHANGE_CHARACTER, + "NEVER!", + CHANGE_CHARACTER, + "Good boy.", + END_DIALOG +}; + +const static char* dialog_16[] = { + "Hey...", + CHANGE_CHARACTER, + "Go away.", + END_DIALOG +}; + +const static char* dialog_17[] = { + "Hey, boy! It's unbelievable!", + CHANGE_CHARACTER, + "What?", + CHANGE_CHARACTER, + "You might think it's a joke,", + NEW_LINE, + "but there's a hand holding", + NEW_LINE, + "a sword appearing from the lake!", + CHANGE_CHARACTER, + "OK, I'll look but just don't ", + NEW_LINE, + "think you've fooled me.", + NEW_LINE, + "This hand appears every year.", + DISPLAY_MESSAGE, + "Maybe this time will bring me luck", + NEW_LINE, + "at basketball...", + END_DIALOG +}; + +const static char* dialog_18[] = { + "Good day, sir!", + CHANGE_CHARACTER, + "And good day to", + NEW_LINE, + "you, my son.", + CHANGE_CHARACTER, + "My name is Mark, sir.", + CHANGE_CHARACTER, + "Great.", + DISPLAY_MESSAGE, + "What do you want?", + CHANGE_CHARACTER, + "I'm just admiring your arm-chair.", + DISPLAY_MESSAGE, + "It's nice.", + CHANGE_CHARACTER, + "Nice and pretty", + NEW_LINE, + "comfortable.", + CHANGE_CHARACTER, + "And big.", + CHANGE_CHARACTER, + "2-person model.", + END_DIALOG +}; + +const static char* dialog_19[] = { + "Do you know the boy", + NEW_LINE, + "playing with the ball", + NEW_LINE, + "outside?", + CHANGE_CHARACTER, + "Of course, he's", + NEW_LINE, + "my grandson.", + CHANGE_CHARACTER, + "Nice kid.", + CHANGE_CHARACTER, + "Nice and smart.", + CHANGE_CHARACTER, + "Nice and small.", + CHANGE_CHARACTER, + "He'll grow.", + CHANGE_CHARACTER, + "And become a very", + NEW_LINE, + "famous basketball", + NEW_LINE, + "player?...", + CHANGE_CHARACTER, + "I hope he won't.", + CHANGE_CHARACTER, + "Then tell him to stop playing!", + CHANGE_CHARACTER, + "Yeah.", + DISPLAY_MESSAGE, + "Later.", + DISPLAY_MESSAGE, + "Maybe.", + DISPLAY_MESSAGE, + "Right now I need", + NEW_LINE, + "some rest.", + END_DIALOG +}; + +const static char* dialog_20[] = { + "Are you going to sit here", + NEW_LINE, + "all day long?", + CHANGE_CHARACTER, + "Hope so.", + CHANGE_CHARACTER, + "For all of this beautiful day?", + CHANGE_CHARACTER, + "Hope so.", + CHANGE_CHARACTER, + "Aren't you interested", + NEW_LINE, + "in the outside world?!", + CHANGE_CHARACTER, + "Not really.", + CHANGE_CHARACTER, + "Why's that?", + CHANGE_CHARACTER, + "I'm not interested", + NEW_LINE, + "in news.", + CHANGE_CHARACTER, + "But...", + CHANGE_CHARACTER, + "As they say...", + DISPLAY_MESSAGE, + "The best news", + NEW_LINE, + "is no news.", + CHANGE_CHARACTER, + "But people must know about", + NEW_LINE, + "progress and stuff!", + CHANGE_CHARACTER, + "I won't even bother", + NEW_LINE, + "to ask you why...", + CHANGE_CHARACTER, + "Because...", + DISPLAY_MESSAGE, + "Er...", + DISPLAY_MESSAGE, + "Because...", + DISPLAY_MESSAGE, + "Uhm...", + CHANGE_CHARACTER, + "Right.", + NEW_LINE, + " ", + END_DIALOG +}; + +const static char* dialog_21[] = { + "Anything new?", + CHANGE_CHARACTER, + "Hope not.", + END_DIALOG +}; + +const static char* dialog_22[] = { + "May I borrow this shotgun?", + CHANGE_CHARACTER, + "No.", + CHANGE_CHARACTER, + "Pleeeease...", + CHANGE_CHARACTER, + "Young man, this weapon is", + NEW_LINE, + "very old and dangerous...", + DISPLAY_MESSAGE, + "and I'm a responsible man,", + NEW_LINE, + "got it?", + CHANGE_CHARACTER, + "But I will...", + CHANGE_CHARACTER, + "No.", + END_DIALOG +}; + +const static char* dialog_23[] = { + "Maybe you will change your mind", + NEW_LINE, + "about the shotgun?...", + CHANGE_CHARACTER, + "No.", + DISPLAY_MESSAGE, + "Nope.", + DISPLAY_MESSAGE, + "Niet.", + DISPLAY_MESSAGE, + "Nein.", + DISPLAY_MESSAGE, + "Niente.", + DISPLAY_MESSAGE, + "Nie.", + DISPLAY_MESSAGE, + "Ne.", + CHANGE_CHARACTER, + "OK, I got it.", + END_DIALOG +}; + +const static char* dialog_24[] = { + "May I search your drawers?", + CHANGE_CHARACTER, + "Yes.", + CHANGE_CHARACTER, + "YES?!?", + CHANGE_CHARACTER, + "Oh, I forgot to tell you they are all", + NEW_LINE, + "empty.", + DISPLAY_MESSAGE, + "Only the right upper one has a handkerchief", + NEW_LINE, + "in it.", + DISPLAY_MESSAGE, + "You can take if you want, I don't need it.", + CHANGE_CHARACTER, + "Well, thank you.", + DISPLAY_MESSAGE, + "You are very... kind...", + CHANGE_CHARACTER, + "Just don't think I let you take", + NEW_LINE, + "anything else.", + CHANGE_CHARACTER, + "Of course, I wouldn't even dream.", + END_DIALOG +}; + +const static char* dialog_25[] = { + "May I borrow the fan?", + CHANGE_CHARACTER, + "No way. It makes this hot day more", + NEW_LINE, + "bearable.", + END_DIALOG +}; + +const static char* dialog_26[] = { + "About this fan...", + CHANGE_CHARACTER, + "Come back in winter.", + END_DIALOG +}; + +const static char* dialog_27[] = { + "Nice weather we have", + NEW_LINE, + "today...", + CHANGE_CHARACTER, + "Indeed it is,", + NEW_LINE, + "my dear.", + END_DIALOG +}; + +const static char* dialog_28[] = { + "Is it your daughter?", + CHANGE_CHARACTER, + "You are very kind,", + NEW_LINE, + "my dear, making", + NEW_LINE, + "me so young,", + DISPLAY_MESSAGE, + "but of course", + NEW_LINE, + "that sweetie is my", + NEW_LINE, + "grand-daughter.", + CHANGE_CHARACTER, + "Oh, yes! She really", + NEW_LINE, + "looks grand!", + CHANGE_CHARACTER, + "Well, I was once", + NEW_LINE, + "like that...", + CHANGE_CHARACTER, + "But you still are!", + CHANGE_CHARACTER, + "How sweet of you...", + DISPLAY_MESSAGE, + "But nobody sings", + NEW_LINE, + "at my window", + NEW_LINE, + "anymore,", + DISPLAY_MESSAGE, + "if you know", + NEW_LINE, + "what I mean.", + CHANGE_CHARACTER, + "Errr...", + DISPLAY_MESSAGE, + "Yes...", + DISPLAY_MESSAGE, + "I know...", + DISPLAY_MESSAGE, + "I have similiar", + NEW_LINE, + "feelings myself...", + DISPLAY_MESSAGE, + "Sometimes...", + DISPLAY_MESSAGE, + "I guess...", + END_DIALOG +}; + +const static char* dialog_29[] = { + "May I ask what you are", + NEW_LINE, + "doing?", + CHANGE_CHARACTER, + "Yes, you may,", + NEW_LINE, + "my dear.", + CHANGE_CHARACTER, + ANIM_WAIT, + "What are you doing?", + CHANGE_CHARACTER, + "I'm knitting.", + CHANGE_CHARACTER, + "I understand.", + DISPLAY_MESSAGE, + "What are you knitting?", + CHANGE_CHARACTER, + "This time you", + NEW_LINE, + "didn't ask if", + NEW_LINE, + "you may ask.", + CHANGE_CHARACTER, + "Oh, sorry. May I ask?", + CHANGE_CHARACTER, + "Ask about what?", + CHANGE_CHARACTER, + "About what are you", + NEW_LINE, + "knitting.", + CHANGE_CHARACTER, + "You asked me", + NEW_LINE, + "about that before,", + NEW_LINE, + "didn't you?", + END_DIALOG +}; + +const static char* dialog_30[] = { + "Is everything OK?", + CHANGE_CHARACTER, + "Indeed it is.", + END_DIALOG +}; + +const static char* dialog_31[] = { + "Is everything OK?", + CHANGE_CHARACTER, + "You know.", + END_DIALOG +}; + +const static char* dialog_32[] = { + "Is everything OK?", + CHANGE_CHARACTER, + "It's nice you ask,", + NEW_LINE, + "but I've told you", + NEW_LINE, + "already.", + END_DIALOG +}; + +const static char* dialog_33[] = { + "Is everything OK?", + CHANGE_CHARACTER, + "Don't repeat", + NEW_LINE, + "yourself.", + END_DIALOG +}; + +const static char* dialog_34[] = { + "Is everything OK?", + CHANGE_CHARACTER, + "Don't interrupt", + NEW_LINE, + "my work.", + END_DIALOG +}; + +const static char* dialog_35[] = { + "Is everything OK?", + CHANGE_CHARACTER, + "Oh shut up.", + END_DIALOG +}; + +const static char* dialog_36[] = { + "Is everything OK?", + END_DIALOG +}; + +const static char* dialog_37[] = { + "Excuse my", + NEW_LINE, + "immodesty...", + CHANGE_CHARACTER, + "Yes?...", + CHANGE_CHARACTER, + "...but I thought", + NEW_LINE, + "that an innocent", + NEW_LINE, + "flower...", + DISPLAY_MESSAGE, + "...would express", + NEW_LINE, + "my happiness at", + NEW_LINE, + "meeting you.", + END_DIALOG +}; + +const static char* dialog_38[] = { + "I hope you", + NEW_LINE, + "like it...", + CHANGE_CHARACTER, + "Oh, dear!", + DISPLAY_MESSAGE, + "I'm really", + NEW_LINE, + "touched...", + DISPLAY_MESSAGE, + "That's the nicest", + NEW_LINE, + "thing anybody has", + NEW_LINE, + "done for me...", + DISPLAY_MESSAGE, + "...in last ten", + NEW_LINE, + "years!", + DISPLAY_MESSAGE, + "Thank you from all", + NEW_LINE, + "my heart!", + CHANGE_CHARACTER, + "You're welcome.", + END_DIALOG +}; + +const static char* dialog_39[] = { + "Would you care for", + NEW_LINE, + "another flower?", + CHANGE_CHARACTER, + "You're very kind,", + NEW_LINE, + "my boy, but no,", + NEW_LINE, + "thank you.", + END_DIALOG +}; + +const static char* dialog_40[] = { + "Are you sure you don't", + NEW_LINE, + "want another flower?", + CHANGE_CHARACTER, + "Yes. I'm sure.", + END_DIALOG +}; + +const static char* dialog_41[] = { + "May I borrow this", + NEW_LINE, + "duster?", + CHANGE_CHARACTER, + "We don't know each", + NEW_LINE, + "other too well, and", + NEW_LINE, + "I don't...", + DISPLAY_MESSAGE, + "...lend things to", + NEW_LINE, + "anybody who asks", + NEW_LINE, + "for them.", + CHANGE_CHARACTER, + "Don't I look reliable?", + CHANGE_CHARACTER, + "I've said enough.", + END_DIALOG +}; + +const static char* dialog_42[] = { + "Any chances to borrow the", + NEW_LINE, + "feather duster?", + CHANGE_CHARACTER, + "I like it where it is.", + END_DIALOG +}; + +const static char* dialog_43[] = { + "Do you think you could", + NEW_LINE, + "lend me the feather duster", + NEW_LINE, + "now?", + CHANGE_CHARACTER, + "But of course, I can't", + NEW_LINE, + "see why I shouldn't...", + DISPLAY_MESSAGE, + "...help to such a nice", + NEW_LINE, + "young man like you!..", + CHANGE_CHARACTER, + "Thank you very much.", + END_DIALOG +}; + +const static char* dialog_44[] = { + "Ha! I'm even faster than Indy`!", + CHANGE_CHARACTER, + "I've seen it all, boy!", + END_DIALOG +}; + +const static char* dialog_45[] = { + "Er...", + DISPLAY_MESSAGE, + "Uh...", + DISPLAY_MESSAGE, + "I just...", + CHANGE_CHARACTER, + "Don't worry. I hope you killed", + NEW_LINE, + "that fly.", + END_DIALOG +}; + +const static char* dialog_46[] = { + "Excuse me, lady, but I think your", + NEW_LINE, + "laundry is dry now...", + DISPLAY_MESSAGE, + "...and too much sun will distort", + NEW_LINE, + "the clothes...", + CHANGE_CHARACTER, + "How come the laundry dried", + NEW_LINE, + "out so fast?", + DISPLAY_MESSAGE, + "I'd better go and check it.", + END_DIALOG +}; + +const static char* dialog_47[] = { + CHANGE_CHARACTER, + "You were right, young man.", + DISPLAY_MESSAGE, + "Thank you.", + CHANGE_CHARACTER, + "You're welcome.", + END_DIALOG +}; + +const static char* dialog_48[] = { + "Do you need this fake apple?", + CHANGE_CHARACTER, + "It depends. This apple", + NEW_LINE, + "has its own story.", + DISPLAY_MESSAGE, + "I remember how one day", + NEW_LINE, + "my younger sister Mary", + NEW_LINE, + "was making...", + CHANGE_CHARACTER, + "Er, how long is the story?", + CHANGE_CHARACTER, + "Oh, there's no need to rush.", + DISPLAY_MESSAGE, + "We do have hours to talk,", + NEW_LINE, + "don't we?", + CHANGE_CHARACTER, + "I just realised I don't need that", + NEW_LINE, + "apple.", + DISPLAY_MESSAGE, + "Thanks.", + END_DIALOG +}; + +const static char* dialog_49[] = { + "This apple...", + CHANGE_CHARACTER, + "No story, no apple.", + CHANGE_CHARACTER, + ANIM_WAIT, + "No apple.", + END_DIALOG +}; + +const static char* dialog_50[] = { + "Could she be...", + DISPLAY_MESSAGE, + "...the most beautiful girl...", + DISPLAY_MESSAGE, + "in the world?...", + END_DIALOG +}; + +const static char* dialog_51[] = { + "I think it's high time to", + NEW_LINE, + "introduce myself.", + DISPLAY_MESSAGE, + "I'm Mark.", + CHANGE_CHARACTER, + "Anne.", + END_DIALOG +}; + +const static char* dialog_52[] = { + "The moment I saw those eyes", + NEW_LINE, + "was the best moment of my entire", + NEW_LINE, + "life.", + DISPLAY_MESSAGE, + ANIM_WAIT, + "Not counting the time", + NEW_LINE, + "I played doctor with", + NEW_LINE, + "Susie.", + END_DIALOG +}; + +const static char* dialog_53[] = { + "Uh...", + DISPLAY_MESSAGE, + "Er...", + DISPLAY_MESSAGE, + "I wonder...", + DISPLAY_MESSAGE, + "I wonder if", + NEW_LINE, + "you would like", + NEW_LINE, + "to get some...", + DISPLAY_MESSAGE, + "Er...", + DISPLAY_MESSAGE, + "I mean...", + DISPLAY_MESSAGE, + "I have something", + NEW_LINE, + "I would like to give", + NEW_LINE, + "you, because...", + DISPLAY_MESSAGE, + "Uh...", + DISPLAY_MESSAGE, + "I think you", + NEW_LINE, + "are... And...", + CHANGE_CHARACTER, + "Hey! I don't bite!", + DISPLAY_MESSAGE, + "I see you want to tell me", + NEW_LINE, + "something nice.", + DISPLAY_MESSAGE, + "Just use simple", + NEW_LINE, + "words...", + CHANGE_CHARACTER, + "Simple words?!", + CHANGE_CHARACTER, + "Yes, simple words make", + NEW_LINE, + "things simple.", + CHANGE_CHARACTER, + "Oh, yes.", + DISPLAY_MESSAGE, + "OK.", + DISPLAY_MESSAGE, + "Simple words.", + DISPLAY_MESSAGE, + "OK.", + DISPLAY_MESSAGE, + "Here I go.", + DISPLAY_MESSAGE, + "Me like you and", + NEW_LINE, + "want give flower.", + CHANGE_CHARACTER, + ANIM_WAIT, + "Well, maybe you should", + NEW_LINE, + "try something...", + DISPLAY_MESSAGE, + "...more complicated.", + CHANGE_CHARACTER, + "Uh...", + DISPLAY_MESSAGE, + "Sorry...", + DISPLAY_MESSAGE, + "I just...", + DISPLAY_MESSAGE, + "I just brought you", + NEW_LINE, + "a flower.", + CHANGE_CHARACTER, + "Oh?...", + END_DIALOG +}; + +const static char* dialog_54[] = { + "Do you like it?", + CHANGE_CHARACTER, + "You're charming.", + END_DIALOG +}; + +const static char* dialog_55[] = { + "As a matter", + NEW_LINE, + "of fact...", + CHANGE_CHARACTER, + "Simple words, boy!", + NEW_LINE, + "Simple words!", + END_DIALOG +}; + +const static char* dialog_56[] = { + "Oh,yes...", + DISPLAY_MESSAGE, + "I just wanted to say", + NEW_LINE, + "that you're charming", + NEW_LINE, + "too.", + CHANGE_CHARACTER, + "I guess I should say", + NEW_LINE, + "thanks.", + END_DIALOG +}; + +const static char* dialog_57[] = { + "I hate myself.", + END_DIALOG +}; + +const static char* dialog_58[] = { + "I have another", + NEW_LINE, + "flower...", + CHANGE_CHARACTER, + "Oh, let's not", + NEW_LINE, + "exaggerate.", + DISPLAY_MESSAGE, + "And, as you can see, I'm", + NEW_LINE, + "not the only...", + DISPLAY_MESSAGE, + "...woman in this room...", + END_DIALOG +}; + +const static char* dialog_59[] = { + "So you don't want", + NEW_LINE, + "another flower?", + CHANGE_CHARACTER, + "No, thank you.", + END_DIALOG +}; + +const static char* dialog_60[] = { + "Would you like some candy?", + CHANGE_CHARACTER, + "You're nice, but no, thanks.", + NEW_LINE, + "I don't want to get fat.", + CHANGE_CHARACTER, + "Hey, don't worry. Even Obelix", + NEW_LINE, + "has friends.", + CHANGE_CHARACTER, + "Who's Obelix?!", + CHANGE_CHARACTER, + "Er, never mind. It's just that I found", + NEW_LINE, + "this candy...", + CHANGE_CHARACTER, + "You FOUND IT?!", + CHANGE_CHARACTER, + "...I found it's pretty hard to get,", + NEW_LINE, + "of course.", + DISPLAY_MESSAGE, + "It's not some cheap pseudo-chocolate,", + NEW_LINE, + "but the highest quality goodie!", + DISPLAY_MESSAGE, + "It's made only from the things you", + NEW_LINE, + "can find in a natural environment.", + DISPLAY_MESSAGE, + "No preservatives added.", + CHANGE_CHARACTER, + "Oh, all right. If you insist...", + END_DIALOG +}; + +const static char* dialog_61[] = { + ANIM_WAIT, + "Khm...", + CHANGE_CHARACTER, + "Oh yes, I think I should give you", + NEW_LINE, + "something in return...", + CHANGE_CHARACTER, + "Oh, no... You really don't", + NEW_LINE, + "have to...", + CHANGE_CHARACTER, + "OK. Your wish.", + CHANGE_CHARACTER, + ANIM_WAIT, + "Well, on second thoughts...", + CHANGE_CHARACTER, + "I knew it. You boys always want", + NEW_LINE, + "something.", + DISPLAY_MESSAGE, + "You can't do anything for", + NEW_LINE, + "free.", + CHANGE_CHARACTER, + "I cleaned my room once.", + CHANGE_CHARACTER, + ANIM_WAIT, + "Well...", + DISPLAY_MESSAGE, + "Let's forget it.", + DISPLAY_MESSAGE, + "Here's my present for", + NEW_LINE, + "you.", + DISPLAY_MESSAGE, + "It's my ribbon. Think of me", + NEW_LINE, + "sometimes.", + END_DIALOG +}; + +const static char* dialog_62[] = { + "Thanks. I will never", + NEW_LINE, + "wash it.", + END_DIALOG +}; + +const static char* dialog_63[] = { + "I found your name on a banknote", + NEW_LINE, + "some fatso gave me. Do you know", + NEW_LINE, + "anything about it?", + CHANGE_CHARACTER, + "Show me the banknote.", + END_DIALOG +}; + +const static char* dialog_64[] = { + "Hey, what's up?!", + CHANGE_CHARACTER, + "Oh, poor me!...", + CHANGE_CHARACTER, + "Why are you crying?!", + CHANGE_CHARACTER, + "This... this...", + DISPLAY_MESSAGE, + "Oh, poor me!...", + DISPLAY_MESSAGE, + "Our... our neighbour, Mr.", + NEW_LINE, + "John Noty gave me some", + NEW_LINE, + "money one day...", + DISPLAY_MESSAGE, + "...and said that if I gave", + NEW_LINE, + "him a kiss he'd give", + NEW_LINE, + "me more...", + DISPLAY_MESSAGE, + "...but I thought it over", + NEW_LINE, + "and I gave him all the", + NEW_LINE, + "money back.", + CHANGE_CHARACTER, + "You mean, that pig tried", + NEW_LINE, + "to buy you?!", + CHANGE_CHARACTER, + "I'm so unhappy!", + CHANGE_CHARACTER, + "Oh, man! That", + NEW_LINE, + "does it!", + END_DIALOG +}; + +const static char* dialog_65[] = { + "Hey, you!", + DISPLAY_MESSAGE, + "Would you please give me that nut", + NEW_LINE, + "lying next to you?", + END_DIALOG +}; + +const static char* dialog_66[] = { + "Are you gonna give me that nut or not?!", + END_DIALOG +}; + +const static char* dialog_67[] = { + "All right.", + DISPLAY_MESSAGE, + "That's it.", + DISPLAY_MESSAGE, + "Now you'll get what you deserve.", + DISPLAY_MESSAGE, + "I'm gonna insult you until I get that nut.", + DISPLAY_MESSAGE, + "You ugly squirrel you.", + END_DIALOG +}; + +const static char* dialog_68[] = { + "Don't you know it's not politically", + NEW_LINE, + "correct to wear a fur?", + END_DIALOG +}; + +const static char* dialog_69[] = { + "Hey, thanks again for the nut.", + END_DIALOG +}; + +const static char* dialog_70[] = { + "I didn't ask if I could take the rope.", + DISPLAY_MESSAGE, + "It's really rude to take someone else's", + NEW_LINE, + "property without their permission.", + DISPLAY_MESSAGE, + "And I might get caught, of", + NEW_LINE, + "course.", + DISPLAY_MESSAGE, + "And they will put me in jail and", + NEW_LINE, + "nobody will respect me anymore.", + DISPLAY_MESSAGE, + "I could really ruin my life doing that.", + END_DIALOG +}; + +const static char* dialog_71[] = { + "No pain no gain.", + END_DIALOG +}; + +const static char* dialog_72[] = { + "Listen, guys. I want you to get", + NEW_LINE, + "outta here at once!", + DISPLAY_MESSAGE, + "Or I'll have to shoot.", + DISPLAY_MESSAGE, + "With a real gun.", + DISPLAY_MESSAGE, + "I think.", + END_DIALOG +}; + +const static char* dialog_73[] = { + "I can see...", + DISPLAY_MESSAGE, + "...there's a...", + DISPLAY_MESSAGE, + "SPIDER!!!", + END_DIALOG +}; + +const static char* dialog_74[] = { + "Not that I'm chicken.", + DISPLAY_MESSAGE, + "It's just that it could be", + NEW_LINE, + "a mutant spider and it", + NEW_LINE, + "could bite me...", + DISPLAY_MESSAGE, + "...and I'd get mutant too...", + DISPLAY_MESSAGE, + "...and I'd have to wear those", + NEW_LINE, + "funny gloves and stuff...", + DISPLAY_MESSAGE, + "...and I'd have a double life...", + DISPLAY_MESSAGE, + "...and I'd have to fight with Venom`", + NEW_LINE, + "and others and I might get hurt...", + DISPLAY_MESSAGE, + "...and everybody would be making", + NEW_LINE, + "money on me but me...", + DISPLAY_MESSAGE, + "I think I'll pass then.", + END_DIALOG +}; + +const static char* dialog_75[] = { + "This spider gives me thrills...", + END_DIALOG +}; + +const static char* dialog_76[] = { + "Hey, little buddy!", + DISPLAY_MESSAGE, + "I've got a DECENT PROPOSAL for you.", + DISPLAY_MESSAGE, + "A big, fresh and juicy apple for this old cone", + NEW_LINE, + "which presses your back.", + DISPLAY_MESSAGE, + "If you want to make a deal, stand here", + NEW_LINE, + "and shake your muzzle.", + END_DIALOG +}; + +const static char* dialog_77[] = { + "I should have know", + NEW_LINE, + "there's a catch.", + DISPLAY_MESSAGE, + ANIM_WAIT, + "The paddle is broken.", + END_DIALOG +}; + +const static char* dialog_78[] = { + "Hello there, big boy.", + END_DIALOG +}; + +const static char* dialog_79[] = { + "Don't ignore me, please.", + END_DIALOG +}; + +const static char* dialog_80[] = { + "You know, I'm a little bit dog-tired", + NEW_LINE, + "talking to you.", + END_DIALOG +}; + +const static char* dialog_81[] = { + "What's up?", + END_DIALOG +}; + +const static char* dialog_82[] = { + "Yes, I could take this...", + DISPLAY_MESSAGE, + "It's a quiet little village...", + DISPLAY_MESSAGE, + "No police...", + DISPLAY_MESSAGE, + "Noone will hear their screams...", + DISPLAY_MESSAGE, + ANIM_WAIT, + "But I don't have a hockey mask.", + DISPLAY_MESSAGE, + ANIM_WAIT, + "(sigh)", + END_DIALOG +}; + +const static char* dialog_83[] = { + "I don't want my fingerprints on it.", + DISPLAY_MESSAGE, + " Who knows what it was used for.", + END_DIALOG +}; + +const static char* dialog_84[] = { + "I'm afraid that it's too hard", + NEW_LINE, + "to catch a mouse just like", + NEW_LINE, + "that.", + DISPLAY_MESSAGE, + "And what challenge would it be?", + END_DIALOG +}; + +const static char* dialog_85[] = { + "I could try to scare these birds myself", + NEW_LINE, + "if I hadn't watched that Hitchcock", + NEW_LINE, + "movie when I was five.", + DISPLAY_MESSAGE, + "My mum should never let me watch that.", + DISPLAY_MESSAGE, + "Now I'm CHICKEN even when I eat eggs.", + END_DIALOG +}; + +const static char* dialog_86[] = { + "Great. Let's GET THE MESSAGE.", + DISPLAY_MESSAGE, + "\"Gold awaits at the end of the road.\"", + END_DIALOG +}; + +const static char* dialog_87[] = { + "Are you Mr. John Noty?", + CHANGE_CHARACTER, + "How do you do, my friend.", + DISPLAY_MESSAGE, + "My people told me you tried", + NEW_LINE, + "to get inside my mansion.", + NEW_LINE, + "Why?", + CHANGE_CHARACTER, + "Er... You see...", + DISPLAY_MESSAGE, + "I'm here to...", + NEW_LINE, + "To...", + DISPLAY_MESSAGE, + "I mean, I'm here on my vacations,", + NEW_LINE, + "but I got sick of all these green", + NEW_LINE, + "plants and trees around...", + DISPLAY_MESSAGE, + "...and I just wanted to lick some", + NEW_LINE, + "civilisation.", + CHANGE_CHARACTER, + "Well... I can understand you,", + NEW_LINE, + "my friend.", + DISPLAY_MESSAGE, + "I also think that the natural", + NEW_LINE, + "environment for us, people", + NEW_LINE, + "of 20th century...", + DISPLAY_MESSAGE, + "is TV and a bag of pop-corn.", + NEW_LINE, + "But talking about the green", + NEW_LINE, + "stuff...", + DISPLAY_MESSAGE, + "I can't allow you to enter", + NEW_LINE, + "my house, because... uhm...", + NEW_LINE, + "because it's ...being...", + DISPLAY_MESSAGE, + "...under renovation, but as", + NEW_LINE, + "a rich man I'll give you", + NEW_LINE, + "a hundred bucks...", + DISPLAY_MESSAGE, + "so you can buy yourself", + NEW_LINE, + "something that will help", + NEW_LINE, + "you survive here.", + DISPLAY_MESSAGE, + "A walkman for example.", + NEW_LINE, + "What do you say?", + CHANGE_CHARACTER, + "What do you take me for?!", + END_DIALOG +}; + +const static char* dialog_88[] = { + "I will NEVER take this!", + DISPLAY_MESSAGE, + "NEVER!", + CHANGE_CHARACTER, + "Don't get so excited.", + DISPLAY_MESSAGE, + "Pecunia non olet.", + DISPLAY_MESSAGE, + "I'll leave now. Don't be shy", + NEW_LINE, + "and pick up the banknote.", + DISPLAY_MESSAGE, + "Noone has to know...", + DISPLAY_MESSAGE, + "Good bye, my friend.", + END_DIALOG +}; + +const static char* dialog_89[] = { + "I can't believe he treated me", + NEW_LINE, + "like that.", + DISPLAY_MESSAGE, + "By the way...", + DISPLAY_MESSAGE, + ANIM_WAIT, + "Peculiar non omelette?...", + END_DIALOG +}; + +const static char* dialog_90[] = { + "Boy...", + DISPLAY_MESSAGE, + "It's all black...", + DISPLAY_MESSAGE, + "...and it looks like a man...", + DISPLAY_MESSAGE, + "...with some long pole...", + DISPLAY_MESSAGE, + "...and a pot on its head...", + DISPLAY_MESSAGE, + ANIM_WAIT, + "VGA artist shouldn't drink so much.", + END_DIALOG +}; + +const static char* dialog_91[] = { + "Searching trash cans again?", + DISPLAY_MESSAGE, + ANIM_WAIT, + "Oh, all right, there are only some", + NEW_LINE, + "papers.", + END_DIALOG +}; + +const static char* dialog_92[] = { + "The same as usual...", + DISPLAY_MESSAGE, + "Disasters...", + DISPLAY_MESSAGE, + "Corruption...", + DISPLAY_MESSAGE, + "Murders...", + DISPLAY_MESSAGE, + "Puzzle...", + DISPLAY_MESSAGE, + "Half-naked babes...", + DISPLAY_MESSAGE, + ANIM_WAIT, + "I gotta subscribe.", + END_DIALOG +}; + +const static char* dialog_93[] = { + ANIM_WAIT, + "Gee...", + CHANGE_CHARACTER, + "...I'm daaaancing...", + DISPLAY_MESSAGE, + "...and siiiinging...", + CHANGE_CHARACTER, + "It's John Noty...", + CHANGE_CHARACTER, + "...raaain!...", + CHANGE_CHARACTER, + "...singing to the camera!", + CHANGE_CHARACTER, + "...what a beaaaaautifuuuul...", + CHANGE_CHARACTER, + "Although he definitely shouldn't.", + CHANGE_CHARACTER, + "...feeeliiing...", + CHANGE_CHARACTER, + "I can't believe it.", + CHANGE_CHARACTER, + "...haaaappy agaaain!..", + CHANGE_CHARACTER, + "What a horror.", + CHANGE_CHARACTER, + "...just daaancing in the raaain...", + CHANGE_CHARACTER, + "My neighbour's dog will do it better.", + CHANGE_CHARACTER, + "...la, laaaaa!...", + CHANGE_CHARACTER, + "I've had enough.", + CHANGE_CHARACTER, + "...la, la! La, laaaa....", + END_DIALOG +}; + +const static char* dialog_94[] = { + "There's nothing intere...", + DISPLAY_MESSAGE, + "No, wait a minute...", + DISPLAY_MESSAGE, + "There's something under the couch!", + END_DIALOG +}; + +const static char* dialog_95[] = { + "Don't you think you", + NEW_LINE, + "should add a little", + NEW_LINE, + "bit of chilli?", + CHANGE_CHARACTER, + "Add?", + DISPLAY_MESSAGE, + "Why?", + CHANGE_CHARACTER, + "I see you're not happy", + NEW_LINE, + "with the stew you're", + NEW_LINE, + "cooking.", + DISPLAY_MESSAGE, + "Maybe you should try", + NEW_LINE, + "to spice it up a", + NEW_LINE, + "little?", + CHANGE_CHARACTER, + "Well...", + DISPLAY_MESSAGE, + "That's good idea.", + DISPLAY_MESSAGE, + "Luckily I've got something here.", + END_DIALOG +}; + +const static char* dialog_96[] = { + CHANGE_CHARACTER, + "This... hic!...", + DISPLAY_MESSAGE, + "This chilllllleeeeee... hep!", + DISPLAY_MESSAGE, + "...must have been...", + DISPLAY_MESSAGE, + "...fermented...", + DISPLAY_MESSAGE, + "The stew yyys spoiled aaand...", + DISPLAY_MESSAGE, + "...I'm fired!", + DISPLAY_MESSAGE, + "Hic!", + END_DIALOG +}; + +const static char* dialog_97[] = { + "I don't need this radio, but", + NEW_LINE, + "I can use its batteries.", + DISPLAY_MESSAGE, + "Unfortunately I never know", + NEW_LINE, + "where to open those Japanese", + NEW_LINE, + "babies.", + END_DIALOG +}; + +const static char* dialog_98[] = { + CHANGE_CHARACTER, + "Security test: voice, scent, view.", + DISPLAY_MESSAGE, + "Voice positively identified.", + DISPLAY_MESSAGE, + ANIM_WAIT, + "Nice song, man.", + END_DIALOG +}; + +const static char* dialog_99[] = { + CHANGE_CHARACTER, + "Security test: voice, scent, view.", + DISPLAY_MESSAGE, + "Scent positively identified.", + DISPLAY_MESSAGE, + ANIM_WAIT, + "I don't like water too, bro.", + END_DIALOG +}; + +const static char* dialog_100[] = { + CHANGE_CHARACTER, + "Security test: voice, scent, view.", + DISPLAY_MESSAGE, + "View positively identified.", + DISPLAY_MESSAGE, + ANIM_WAIT, + "Next time stand a bit closer, man.", + END_DIALOG +}; + +const static char* dialog_101[] = { + "May I talk with...", + CHANGE_CHARACTER, + "Go away.", + DISPLAY_MESSAGE, + "I'm busy.", + DISPLAY_MESSAGE, + "Working.", + DISPLAY_MESSAGE, + "Dinner soon.", + DISPLAY_MESSAGE, + "Gotta hurry.", + CHANGE_CHARACTER, + "Aye, captain.", + END_DIALOG +}; + +const static char* dialog_102[] = { + "Well, but maybe...", + CHANGE_CHARACTER, + "I...", + DISPLAY_MESSAGE, + "...AM...", + DISPLAY_MESSAGE, + "...BUSY.", + DISPLAY_MESSAGE, + "DON'T...", + DISPLAY_MESSAGE, + "...DISTURB...", + DISPLAY_MESSAGE, + "...ME.", + DISPLAY_MESSAGE, + "OK?", + CHANGE_CHARACTER, + "Okay, okay.", + END_DIALOG +}; + +const static char* dialog_103[] = { + "Last time I ask you...", + CHANGE_CHARACTER, + "BUSY.", + DISPLAY_MESSAGE, + "B like Bill.", + DISPLAY_MESSAGE, + "U like Ulrik.", + DISPLAY_MESSAGE, + "S like Sean.", + DISPLAY_MESSAGE, + "Y like...", + DISPLAY_MESSAGE, + "...like...", + CHANGE_CHARACTER, + "Yeti?", + CHANGE_CHARACTER, + "No. Like...", + CHANGE_CHARACTER, + "Yabbadabbadoo?", + CHANGE_CHARACTER, + "No, no. Like...", + CHANGE_CHARACTER, + "Yoko?", + CHANGE_CHARACTER, + "Yoko.", + DISPLAY_MESSAGE, + "Leave me alone now, PLEASE!", + CHANGE_CHARACTER, + "All right, all right.", + END_DIALOG +}; + +const static char* dialog_104[] = { + "Er...", + CHANGE_CHARACTER, + "Wrrrr...", + CHANGE_CHARACTER, + "Oh, nothing.", + END_DIALOG +}; + +const static char* dialog_105[] = { + "Good day, Mr. Robot.", + CHANGE_CHARACTER, + "Hey, yo, wassup my man,", + NEW_LINE, + "you know what I'm sayin'?", + DISPLAY_MESSAGE, + "Call me Mike, you know", + NEW_LINE, + "what I'm sayin'?", + CHANGE_CHARACTER, + "Er...", + DISPLAY_MESSAGE, + "Are you sure everything's", + NEW_LINE, + "all right with your...", + DISPLAY_MESSAGE, + "...program?...", + CHANGE_CHARACTER, + "What's da problem, man?!", + DISPLAY_MESSAGE, + "Neva seen da rappin' robo-safe,", + NEW_LINE, + "you know what I'm sayin'?", + CHANGE_CHARACTER, + "Actually, never.", + CHANGE_CHARACTER, + "I'm brand new, bro.", + DISPLAY_MESSAGE, + "Fresh stuff, you know what I mean?", + DISPLAY_MESSAGE, + "Smart people sez da robots", + NEW_LINE, + "should be for everybody,", + DISPLAY_MESSAGE, + "you know what I'm sayin',", + NEW_LINE, + "so they gave me human", + NEW_LINE, + "personality,", + DISPLAY_MESSAGE, + "you know what I mean?", + NEW_LINE, + "Cool, ain't that?", + CHANGE_CHARACTER, + "Khm... Yeah, great.", + DISPLAY_MESSAGE, + "So, you're some kind of safe?", + CHANGE_CHARACTER, + "That's right, man.", + DISPLAY_MESSAGE, + "Totally reliable, you know", + NEW_LINE, + "what I'm sayin'?", + DISPLAY_MESSAGE, + "If you wanna get me open, you", + NEW_LINE, + "gotta prove you're da owner.", + DISPLAY_MESSAGE, + "Now check diz (CENSORED) out:", + NEW_LINE, + "I can judge if it's the right", + NEW_LINE, + "homie by three things:", + DISPLAY_MESSAGE, + "...view, scent and da voice.", + NEW_LINE, + "You know what I'm sayin'?", + CHANGE_CHARACTER, + "But will you please open", + NEW_LINE, + "...yourself... just to let me see", + NEW_LINE, + "what you got inside?", + CHANGE_CHARACTER, + "Sorry, bro.", + DISPLAY_MESSAGE, + "You don't look like da owner...", + DISPLAY_MESSAGE, + "...you don't smell like him...", + DISPLAY_MESSAGE, + "...and your voice is kinda different.", + DISPLAY_MESSAGE, + "Now (CENSORED), you know what I mean?", + END_DIALOG +}; + +const static char* dialog_106[] = { + "Sesame, open...", + CHANGE_CHARACTER, + "(CENSORED), you (CENSORED).", + END_DIALOG +}; + +const static char* dialog_107[] = { + "Hi there!", + CHANGE_CHARACTER, + "(PARENTAL GUIDANCE: EXPLICIT LYRICS)", + END_DIALOG +}; + +const static char* dialog_108[] = { + "I'm telling you, it's something great.", + CHANGE_CHARACTER, + "I remember when you killed my", + NEW_LINE, + "servant, testing your bullet-proof", + NEW_LINE, + "T-shirt.", + CHANGE_CHARACTER, + "That was a long time ago...", + CHANGE_CHARACTER, + "Or like you made rapping", + NEW_LINE, + "robo-safe, which goes mad", + NEW_LINE, + "every time...", + DISPLAY_MESSAGE, + "...I ask it to open.", + CHANGE_CHARACTER, + "You got a bad attitude...", + CHANGE_CHARACTER, + "Or like you sold me", + NEW_LINE, + "the recipe for girls'", + NEW_LINE, + "heart-breaking.", + CHANGE_CHARACTER, + "Money didn't work?", + CHANGE_CHARACTER, + "Nope.", + CHANGE_CHARACTER, + "Strange. Usually it works.", + CHANGE_CHARACTER, + "Or when you...", + CHANGE_CHARACTER, + "ALL RIGHT, ALL RIGHT!", + DISPLAY_MESSAGE, + "Let's forget this!", + DISPLAY_MESSAGE, + "I already tested my new", + NEW_LINE, + "invention on myself!", + CHANGE_CHARACTER, + "Really?", + CHANGE_CHARACTER, + "Really.", + DISPLAY_MESSAGE, + "I can demonstrate it.", + CHANGE_CHARACTER, + ANIM_WAIT, + "Ok, I'll take my chance.", + END_DIALOG +}; + +const static char* dialog_109[] = { + ANIM_WAIT, + "Great.", + DISPLAY_MESSAGE, + "Ultimate gnome-maker.", + CHANGE_CHARACTER, + "Khm, it's just a side effect.", + DISPLAY_MESSAGE, + "Sometimes I can't control my", + NEW_LINE, + "inventions.", + DISPLAY_MESSAGE, + "But don't worry, it lasts only", + NEW_LINE, + "a second.", + CHANGE_CHARACTER, + "I hope so.", + END_DIALOG +}; + +const static char* dialog_110[] = { + "Here I am.", + DISPLAY_MESSAGE, + "Well, have you noticed anything", + NEW_LINE, + "else unusual?", + CHANGE_CHARACTER, + "Nope.", + CHANGE_CHARACTER, + "Great!", + DISPLAY_MESSAGE, + "So the pills still work!", + CHANGE_CHARACTER, + "Oh yeah?", + CHANGE_CHARACTER, + "Yes!", + DISPLAY_MESSAGE, + "Check out your wallet!", + CHANGE_CHARACTER, + "My wallet is still...", + END_DIALOG +}; + +const static char* dialog_111[] = { + "Where is my wallet?!", + DISPLAY_MESSAGE, + "You thief!", + DISPLAY_MESSAGE, + "Give it back!", + CHANGE_CHARACTER, + "Take it easy, here's your", + NEW_LINE, + "wallet.", + END_DIALOG +}; + +const static char* dialog_112[] = { + "I demand an explanation.", + CHANGE_CHARACTER, + "Hah!", + DISPLAY_MESSAGE, + "This is the best thing I have", + NEW_LINE, + "ever invented!", + CHANGE_CHARACTER, + "What's that?", + CHANGE_CHARACTER, + "You didn't see me steal", + NEW_LINE, + "your wallet,", + DISPLAY_MESSAGE, + "...because I have eaten...", + DISPLAY_MESSAGE, + "THE TIME PILL!", + CHANGE_CHARACTER, + ANIM_WAIT, + "The time pill?", + CHANGE_CHARACTER, + "Yes!", + DISPLAY_MESSAGE, + "Anyone who eats it, lives", + NEW_LINE, + "1000 times faster than the", + NEW_LINE, + "rest of the world!", + CHANGE_CHARACTER, + "That means...", + CHANGE_CHARACTER, + "That means the world for", + NEW_LINE, + "this person moves 1000", + NEW_LINE, + "times slower!", + DISPLAY_MESSAGE, + "Only for a few seconds,", + NEW_LINE, + "though...", + CHANGE_CHARACTER, + "Well... That's interesting.", + NEW_LINE, + "But what's the use?", + CHANGE_CHARACTER, + "I don't care.", + DISPLAY_MESSAGE, + "Think about it.", + DISPLAY_MESSAGE, + "You could, for example, get in", + NEW_LINE, + "the cinema without a ticket,", + NEW_LINE, + "and nobody would notice you.", + CHANGE_CHARACTER, + "Of course!", + DISPLAY_MESSAGE, + "Great!", + DISPLAY_MESSAGE, + "I want to buy the patent!", + CHANGE_CHARACTER, + "That's the problem...", + DISPLAY_MESSAGE, + "As you know, my uncel Gallagher,", + NEW_LINE, + "used to invent the best things", + NEW_LINE, + "when he was ...let's say...", + CHANGE_CHARACTER, + "...drunk...", + CHANGE_CHARACTER, + "...intoxicated.", + DISPLAY_MESSAGE, + "And the same happened to me", + NEW_LINE, + "(sigh).", + DISPLAY_MESSAGE, + "So last night I woke up with", + NEW_LINE, + "a horrible headache and", + NEW_LINE, + "found those pills.", + DISPLAY_MESSAGE, + "I don't remember how I made them.", + CHANGE_CHARACTER, + "Oh no!", + CHANGE_CHARACTER, + "But I may try to work on them.", + DISPLAY_MESSAGE, + "I need your money for that.", + DISPLAY_MESSAGE, + "Let's make a deal.", + DISPLAY_MESSAGE, + "You build me a new", + NEW_LINE, + "laboratory and stuff...", + DISPLAY_MESSAGE, + "...and I'll give you my rights.", + CHANGE_CHARACTER, + "You'll give me the patent?!", + CHANGE_CHARACTER, + "Yes.", + DISPLAY_MESSAGE, + "All I care about is the", + NEW_LINE, + "respect of the science", + NEW_LINE, + "society respect.", + DISPLAY_MESSAGE, + "And Nobel.", + DISPLAY_MESSAGE, + "You know, honoris causa here", + NEW_LINE, + "and there, interviews...", + CHANGE_CHARACTER, + "All right. You got the deal.", + DISPLAY_MESSAGE, + "Prepare the list of necessary", + NEW_LINE, + "equipment.", + CHANGE_CHARACTER, + "Wonderful.", + END_DIALOG +}; + +const static char* dialog_113[] = { + "This fool trusts me.", + DISPLAY_MESSAGE, + "But I will use him...", + DISPLAY_MESSAGE, + "The time pills...", + DISPLAY_MESSAGE, + "I won't be selling them to", + NEW_LINE, + "those stupid people!", + DISPLAY_MESSAGE, + "I don't care about the", + NEW_LINE, + "patent!", + DISPLAY_MESSAGE, + "I could rob any bank", + NEW_LINE, + "without being seen!", + DISPLAY_MESSAGE, + "Faster than light!", + DISPLAY_MESSAGE, + "I need to steal some money", + NEW_LINE, + "or gold for this mad man's", + NEW_LINE, + "laboratory.", + END_DIALOG +}; + +const static char* dialog_114[] = { + "But soon...", + DISPLAY_MESSAGE, + "I'll get rich.", + DISPLAY_MESSAGE, + "Veeeery rich.", + DISPLAY_MESSAGE, + ANIM_WAIT, + "I feel like I could...", + DISPLAY_MESSAGE, + ANIM_WAIT, + "...like I could...", + END_DIALOG +}; + +const static char* dialog_115[] = { + ANIM_WAIT, + "TAKE ON THE WORLD!...", + END_DIALOG +}; + +const static char* dialog_116[] = { + ANIM_WAIT, + "I always wanted to say that.", + END_DIALOG +}; + +const static char* dialog_117[] = { + "It's me again.", + CHANGE_CHARACTER, + "Goodbye again.", + CHANGE_CHARACTER, + ANIM_WAIT, + "Let's say I haven't heard that.", + DISPLAY_MESSAGE, + "Is Mr. John Noty home?", + CHANGE_CHARACTER, + "Yeah, but he said you can't get in.", + CHANGE_CHARACTER, + "Me?! Why?!", + CHANGE_CHARACTER, + "Your last invention cost him", + NEW_LINE, + "two walls.", + CHANGE_CHARACTER, + "Oh, that time machine...", + DISPLAY_MESSAGE, + "But now I have some...", + CHANGE_CHARACTER, + "Not to mention the disapearance of his cat.", + CHANGE_CHARACTER, + "The cat is happier than", + NEW_LINE, + "any of us now!", + DISPLAY_MESSAGE, + ANIM_WAIT, + "If the world still exists in", + NEW_LINE, + "XXV century.", + DISPLAY_MESSAGE, + "Never mind.", + DISPLAY_MESSAGE, + "You just have to let me in.", + CHANGE_CHARACTER, + "Oh yeah?", + CHANGE_CHARACTER, + "Or I'll tell Mr. John Noty you drink on duty.", + CHANGE_CHARACTER, + "You're bluffing. You have no proof.", + CHANGE_CHARACTER, + "Yeah, but you never know.", + END_DIALOG +}; + +const static char* dialog_118[] = { + "Ok, get in, you filthy terrorist.", + DISPLAY_MESSAGE, + "Just don't tell anybody.", + CHANGE_CHARACTER, + "Of course. Thank you.", + END_DIALOG +}; + +const static char* dialog_119[] = { + "So...", + DISPLAY_MESSAGE, + "That's how it all happened...", + DISPLAY_MESSAGE, + "That's why nobody has seen", + NEW_LINE, + "how things were", + NEW_LINE, + "being stolen...", + DISPLAY_MESSAGE, + "It's a really dangerous", + NEW_LINE, + "invention!", + DISPLAY_MESSAGE, + ANIM_WAIT, + "I HAVE TO stop John Noty!", + DISPLAY_MESSAGE, + ANIM_WAIT, + "Somehow.", + DISPLAY_MESSAGE, + ANIM_WAIT, + "Boy! Those pills I took", + NEW_LINE, + "from Mike must be...", + DISPLAY_MESSAGE, + "Oh, no!", + DISPLAY_MESSAGE, + "I can hear somebody coming!", + END_DIALOG +}; + +const static char* dialog_120[] = { + "I have to hide somewhere!", + DISPLAY_MESSAGE, + "Now!", + END_DIALOG +}; + +const static char* dialog_121[] = { + "I have to buy an old-fashioned safe.", + DISPLAY_MESSAGE, + "That stupid robot went mad again.", + DISPLAY_MESSAGE, + "I hate it.", + DISPLAY_MESSAGE, + "CLOSE, YOU PIECE OF JUNK!", + END_DIALOG +}; + +const static char* dialog_122[] = { + "Third time this week.", + DISPLAY_MESSAGE, + "Oh, all right, all right!...", + DISPLAY_MESSAGE, + "I'm coming!...", + END_DIALOG +}; + +const static char* dialog_123[] = { + "...cover it all.", + DISPLAY_MESSAGE, + "I need more money for the security system.", + DISPLAY_MESSAGE, + "I've got only two men and...", + CHANGE_CHARACTER, + "More and more!", + DISPLAY_MESSAGE, + "It's all I hear!", + CHANGE_CHARACTER, + "All right, I'll explain again...", + END_DIALOG +}; + +const static char* dialog_124[] = { + "Mr. John Noty?", + DISPLAY_MESSAGE, + "I just received some information from", + NEW_LINE, + "the professor.", + DISPLAY_MESSAGE, + "He's asked you to come to the laboratory.", + DISPLAY_MESSAGE, + "He says he's found out the structure of", + NEW_LINE, + "the pills.", + END_DIALOG +}; + +const static char* dialog_125[] = { + "So this is it?!", + CHANGE_CHARACTER, + "Definitely ...hic!... yes.", + CHANGE_CHARACTER, + "Great!", + END_DIALOG +}; + +const static char* dialog_126[] = { + "I have to stop them!", + DISPLAY_MESSAGE, + "There's no time to waste!", + END_DIALOG +}; + +const static char* dialog_127[] = { + "Well, well, well...", + DISPLAY_MESSAGE, + "You really play on my nerves.", + DISPLAY_MESSAGE, + "It was a good idea not to save money", + NEW_LINE, + "on the security system...", + DISPLAY_MESSAGE, + "This force field is indestructible!", + DISPLAY_MESSAGE, + "Hah!", + END_DIALOG +}; + +const static char* dialog_128[] = { + "But I have to kill you anyway.", + CHANGE_CHARACTER, + "No, no!", + CHANGE_CHARACTER, + "Shut up!", + CHANGE_CHARACTER, + "It's not worth it!", + CHANGE_CHARACTER, + "Oh really?", + CHANGE_CHARACTER, + "I don't want to...", + END_DIALOG +}; + +const static char* dialog_129[] = { + CHANGE_CHARACTER, + "The poor professor has fainted...", + CHANGE_CHARACTER, + "But... How...", + DISPLAY_MESSAGE, + "I DON'T UNDERSTAND ANYTHING!!!", + CHANGE_CHARACTER, + "It's very easy.", + DISPLAY_MESSAGE, + "We attached a secret micro-camera", + NEW_LINE, + "to your cap.", + DISPLAY_MESSAGE, + "This way we knew all the time what was", + NEW_LINE, + "happening.", + CHANGE_CHARACTER, + "You have seen when I?...", + CHANGE_CHARACTER, + "I don't want to embarass you.", + DISPLAY_MESSAGE, + "You did a good job for the RGB.", + CHANGE_CHARACTER, + "But John Noty has escaped!", + CHANGE_CHARACTER, + "He's not important.", + DISPLAY_MESSAGE, + "We have the professor, you'll give us the pills.", + DISPLAY_MESSAGE, + "Sorry, but you can't keep them for yourself.", + CHANGE_CHARACTER, + "Okay, but...", + DISPLAY_MESSAGE, + "Could you please give me just a minute?", + DISPLAY_MESSAGE, + "I have some private business to do with", + NEW_LINE, + "this scum.", + CHANGE_CHARACTER, + ANIM_WAIT, + "All right. But hurry up.", + END_DIALOG +}; + +const static char* dialog_130[] = { + ANIM_WAIT, + "(gulp)", + DISPLAY_MESSAGE, + "This time-effect really doesn't last", + NEW_LINE, + "long...", + END_DIALOG +}; + +const static char* dialog_131[] = { + "You've lost, mister!", + DISPLAY_MESSAGE, + "The police are surrounding the building!", + CHANGE_CHARACTER, + "Don't be stupid.", + DISPLAY_MESSAGE, + "Didn't you think I'd have", + NEW_LINE, + "a secret way out?", + CHANGE_CHARACTER, + "Oh yeah?", + DISPLAY_MESSAGE, + "What's that?", + CHANGE_CHARACTER, + "Like I'm going to tell you...", + DISPLAY_MESSAGE, + "Get lost, you little creep.", + DISPLAY_MESSAGE, + "I'm busy.", + END_DIALOG +}; + +const static char* dialog_132[] = { + "I'll have to disarm you.", + DISPLAY_MESSAGE, + "Be nice and surrender without problems.", + CHANGE_CHARACTER, + "I don't have time for jokes.", + DISPLAY_MESSAGE, + "Get the hell out of here,", + NEW_LINE, + "before I point my gun at you", + NEW_LINE, + "again.", + CHANGE_CHARACTER, + "I warn you...", + CHANGE_CHARACTER, + "Where do they sell", + NEW_LINE, + "bores like you?", + END_DIALOG +}; + +const static char* dialog_133[] = { + "I won't give you any more chances...", + CHANGE_CHARACTER, + "Good.", + DISPLAY_MESSAGE, + "And bye.", + END_DIALOG +}; + +const static char* dialog_134[] = { + "Stop packing that money!", + END_DIALOG +}; + +const static char* dialog_135[] = { + "Hi, there!", + CHANGE_CHARACTER, + "Hi.", + DISPLAY_MESSAGE, + "What's your problem?", + CHANGE_CHARACTER, + "I was sent here for some training.", + CHANGE_CHARACTER, + "Another wanna-be secret agent, huh?", + CHANGE_CHARACTER, + "Yep.", + CHANGE_CHARACTER, + "Show me your documents and you'll get in.", + CHANGE_CHARACTER, + "Okey dokey.", + END_DIALOG +}; + +const static char* dialog_136[] = { + "Can't you let me in without all that", + NEW_LINE, + "bureaucracy?", + CHANGE_CHARACTER, + "Sorry, no.", + DISPLAY_MESSAGE, + "Rules are rules.", + CHANGE_CHARACTER, + "And morons are morons.", + CHANGE_CHARACTER, + ANIM_WAIT, + "And dead people are dead people.", + CHANGE_CHARACTER, + ANIM_WAIT, + "Have a good day, sir.", + END_DIALOG +}; + +const static char* dialog_137[] = { + "MAY I PASS, PLEASE?!", + CHANGE_CHARACTER, + "YES, YOU MAY!", + DISPLAY_MESSAGE, + "JUST SHOW ME YOUR DOCUMENTS!", + END_DIALOG +}; + +const static char* dialog_138[] = { + "Let me in!", + CHANGE_CHARACTER, + "Show your documents!", + CHANGE_CHARACTER, + "You take your job really seriously,", + NEW_LINE, + "don't you?", + CHANGE_CHARACTER, + "Are you blind or what?", + DISPLAY_MESSAGE, + "I'm reading a magazine on duty.", + CHANGE_CHARACTER, + ANIM_WAIT, + "Oh, yeah.", + DISPLAY_MESSAGE, + "Sorry.", + END_DIALOG +}; + +const static char* dialog_139[] = { + "I have to...", + CHANGE_CHARACTER, + "Documents!", + END_DIALOG +}; + +const static char* dialog_140[] = { + "What are you reading?", + CHANGE_CHARACTER, + "'Soldier News', of course.", + CHANGE_CHARACTER, + "You love all that military stuff,", + NEW_LINE, + "don't you?", + CHANGE_CHARACTER, + "Are you crazy?", + DISPLAY_MESSAGE, + "I like pictures of cool babes...", + DISPLAY_MESSAGE, + "...crosswords...", + DISPLAY_MESSAGE, + "...the humor page...", + DISPLAY_MESSAGE, + "...rumors...", + DISPLAY_MESSAGE, + "...recipes...", + CHANGE_CHARACTER, + "COOKING?!", + CHANGE_CHARACTER, + "Yes, they try to raise their profile.", + DISPLAY_MESSAGE, + "Gain new readers, you know.", + CHANGE_CHARACTER, + "Oh yeah.", + DISPLAY_MESSAGE, + "Great idea.", + DISPLAY_MESSAGE, + "Is there a knitting page too?", + CHANGE_CHARACTER, + "I get the feeling you're", + NEW_LINE, + "trying to be funny.", + CHANGE_CHARACTER, + "Nah, me?", + DISPLAY_MESSAGE, + "Never.", + CHANGE_CHARACTER, + "Good.", + END_DIALOG +}; + +const static char* dialog_141[] = { + "Would you lend me the magazine?", + CHANGE_CHARACTER, + "And what am I supposed", + NEW_LINE, + "to kill the time with", + NEW_LINE, + "then?", + CHANGE_CHARACTER, + "Erm...", + DISPLAY_MESSAGE, + "You could count the leaves.", + CHANGE_CHARACTER, + "There're 11034 leaves here.", + CHANGE_CHARACTER, + ANIM_WAIT, + "Wow.", + END_DIALOG +}; + +const static char* dialog_142[] = { + "What's up?", + CHANGE_CHARACTER, + "The sky, I hope.", + END_DIALOG +}; + +const static char* dialog_143[] = { + "Keep up the good work.", + END_DIALOG +}; + +const static char* dialog_144[] = { + CHANGE_CHARACTER, + "Hey, get back!", + END_DIALOG +}; + +const static char* dialog_145[] = { + "What's the matter?", + CHANGE_CHARACTER, + "You must show me your pass", + NEW_LINE, + "before I let you enter the", + NEW_LINE, + "camp.", + CHANGE_CHARACTER, + "What if I don't?", + CHANGE_CHARACTER, + "I'll have to shoot you.", + CHANGE_CHARACTER, + "(gulp)", + END_DIALOG +}; + +const static char* dialog_146[] = { + CHANGE_CHARACTER, + "I warn you...", + DISPLAY_MESSAGE, + "My bullets are faster than you...", + END_DIALOG +}; + +const static char* dialog_147[] = { + CHANGE_CHARACTER, + "All right.", + DISPLAY_MESSAGE, + "Report to the captain.", + DISPLAY_MESSAGE, + "He should be around somewhere.", + CHANGE_CHARACTER, + "Thanks, man.", + END_DIALOG +}; + +const static char* dialog_148[] = { + CHANGE_CHARACTER, + "We're gonna turn you into a real man,", + NEW_LINE, + "right, son?!", + CHANGE_CHARACTER, + "Erm...", + CHANGE_CHARACTER, + "Best of the best!...", + CHANGE_CHARACTER, + "Uh...", + CHANGE_CHARACTER, + "By sweat, blood and tears!", + CHANGE_CHARACTER, + "I'd rather...", + CHANGE_CHARACTER, + "I'm glad to see your enthusiasm, son!", + DISPLAY_MESSAGE, + "Let's not waste time!", + DISPLAY_MESSAGE, + "I was told to give you some express training.", + DISPLAY_MESSAGE, + "All right, son!", + DISPLAY_MESSAGE, + "You'll have to pass three trials!", + DISPLAY_MESSAGE, + "Let's begin with the easy one!...", + END_DIALOG +}; + +const static char* dialog_149[] = { + CHANGE_CHARACTER, + "The task is simple.", + DISPLAY_MESSAGE, + "I'll lock up you here...", + DISPLAY_MESSAGE, + "...and you must escape.", + DISPLAY_MESSAGE, + "Is it clear?!", + CHANGE_CHARACTER, + "Sir, I...", + CHANGE_CHARACTER, + "GOOD!!!", + END_DIALOG +}; + +const static char* dialog_150[] = { + ANIM_WAIT, + "Hello?", + DISPLAY_MESSAGE, + ANIM_WAIT, + "Great.", + END_DIALOG +}; + +const static char* dialog_151[] = { + "OK, that was funny.", + DISPLAY_MESSAGE, + "Now let me out!", + END_DIALOG +}; + +const static char* dialog_152[] = { + "Hey! Is there anybody out", + NEW_LINE, + "there?!", + DISPLAY_MESSAGE, + ANIM_WAIT, + "HELP!!!", + END_DIALOG +}; + +const static char* dialog_153[] = { + "Have mercy!", + DISPLAY_MESSAGE, + "I'm gonna die here!", + END_DIALOG +}; + +const static char* dialog_154[] = { + "I'm getting hungry!", + END_DIALOG +}; + +const static char* dialog_155[] = { + "I don't know what to say now...", + END_DIALOG +}; + +const static char* dialog_156[] = { + "I think...", + DISPLAY_MESSAGE, + "...you've passed...", + DISPLAY_MESSAGE, + "...the first test...", + DISPLAY_MESSAGE, + "...Let's get...", + DISPLAY_MESSAGE, + "...to the next one...", + END_DIALOG +}; + +const static char* dialog_157[] = { + CHANGE_CHARACTER, + "Ok, soldier.", + DISPLAY_MESSAGE, + "Let's assume I'm your captive...", + DISPLAY_MESSAGE, + "...and I know some secret password.", + DISPLAY_MESSAGE, + "Your task is to get it from me.", + DISPLAY_MESSAGE, + "CLEAR?!?", + CHANGE_CHARACTER, + "Am I restricted?", + CHANGE_CHARACTER, + "No.", + DISPLAY_MESSAGE, + "Do anything you want.", + CHANGE_CHARACTER, + "May I even spit in your eye?", + CHANGE_CHARACTER, + ANIM_WAIT, + "Yes.", + CHANGE_CHARACTER, + ANIM_WAIT, + "Thanks, just checking.", + END_DIALOG +}; + +const static char* dialog_158[] = { + "Please tell me the password", + NEW_LINE, + "and let's get over it all.", + DISPLAY_MESSAGE, + ANIM_WAIT, + "OK, think about it.", + END_DIALOG +}; + +const static char* dialog_159[] = { + "Hey, talk to me.", + DISPLAY_MESSAGE, + ANIM_WAIT, + "Do you hear me?", + DISPLAY_MESSAGE, + ANIM_WAIT, + "EARTH TO CAPTAIN, EARTH TO CAPTAIN!", + DISPLAY_MESSAGE, + ANIM_WAIT, + "You're hopeless.", + END_DIALOG +}; + +const static char* dialog_160[] = { + "Are you ready to talk?", + DISPLAY_MESSAGE, + ANIM_WAIT, + "OK, I'll give you some more time.", + END_DIALOG +}; + +const static char* dialog_161[] = { + "Now, what is the password?", + CHANGE_CHARACTER, + "Get lost, you pathetic wimp.", + CHANGE_CHARACTER, + "Be nice, or I'll tickle you again.", + CHANGE_CHARACTER, + "Go on, that'll be a pleasure.", + CHANGE_CHARACTER, + ANIM_WAIT, + "You enjoyed that, didn't you?", + CHANGE_CHARACTER, + "Well, you know...", + CHANGE_CHARACTER, + "Ok, I'll find some other way.", + END_DIALOG +}; + +const static char* dialog_162[] = { + "I brought you something...", + CHANGE_CHARACTER, + "You can't bribe me.", + CHANGE_CHARACTER, + "Oh, yeah?", + END_DIALOG +}; + +// Note: +// The usage of this in the engine overlaps the previous dialog i.e. the +// starting offset used is two bytes early, thus implicitly changing the +// first command of this dialog from NEW_LINE to CHANGE_CHARACTER. +const static char* dialog_163[] = { + NEW_LINE, + "OH GIMMIE GIMMIE GIMMIE!!!", + DISPLAY_MESSAGE, + "I'LL DO ANYTHING!!!", + CHANGE_CHARACTER, + "Password...", + CHANGE_CHARACTER, + "The password is 'COFFEE'.", + DISPLAY_MESSAGE, + "Tell it to the barman and", + NEW_LINE, + "he'll give you something.", + DISPLAY_MESSAGE, + "Then he'll tell you about the third task.", + DISPLAY_MESSAGE, + "NOW FREE ME!!!", + CHANGE_CHARACTER, + "I'll think about it.", + END_DIALOG +}; + +const static char* dialog_164[] = { + "You...", + DISPLAY_MESSAGE, + "...you...", + DISPLAY_MESSAGE, + ANIM_WAIT, + "...have passed, sir!", + END_DIALOG +}; + +const static char* dialog_165[] = { + "Would you care for a wonderful kaleidoscope?", + CHANGE_CHARACTER, + "I had one once, but captain saw me", + NEW_LINE, + "playing with it and took it from me.", + DISPLAY_MESSAGE, + "I think he uses it himself,", + NEW_LINE, + "you know.", + CHANGE_CHARACTER, + "If you give me the gazette,", + NEW_LINE, + "I'll give you that kaleidoscope.", + CHANGE_CHARACTER, + "I don't want to know how you got it...", + CHANGE_CHARACTER, + "Good.", + CHANGE_CHARACTER, + "...but what if the captain sees me again?", + CHANGE_CHARACTER, + "Don't worry, he's tied up.", + CHANGE_CHARACTER, + "Oh, test number two, I guess?...", + CHANGE_CHARACTER, + "Yep.", + CHANGE_CHARACTER, + "OK, let's have some fun here.", + END_DIALOG +}; + +const static char* dialog_166[] = { + "'COFFEE'.", + END_DIALOG +}; + +const static char* dialog_167[] = { + CHANGE_CHARACTER, + "Hot, wasn't it?", + CHANGE_CHARACTER, + "Uh-huh.", + DISPLAY_MESSAGE, + "The captain says you're gonna tell me", + NEW_LINE, + "about the third task.", + CHANGE_CHARACTER, + "Again...", + DISPLAY_MESSAGE, + "Well, it's kinda hide'n'seek.", + DISPLAY_MESSAGE, + "The captain hides, you seek.", + CHANGE_CHARACTER, + "But I left him tied to a chair!", + CHANGE_CHARACTER, + "That man and his sick games...", + DISPLAY_MESSAGE, + "He enjoys it more than he should!...", + DISPLAY_MESSAGE, + "He cheated you.", + DISPLAY_MESSAGE, + "Go and check.", + DISPLAY_MESSAGE, + "I'm sure he's already free.", + CHANGE_CHARACTER, + "But I took his knife!", + DISPLAY_MESSAGE, + "How could he cut the ties?!", + CHANGE_CHARACTER, + "Maybe he walked away with the chair", + NEW_LINE, + "tied to his...", + CHANGE_CHARACTER, + "Never mind.", + DISPLAY_MESSAGE, + "Any hints about where he might hide?", + CHANGE_CHARACTER, + "None.", + CHANGE_CHARACTER, + "Oh, c'mon.", + CHANGE_CHARACTER, + "No, boy. Play fair.", + END_DIALOG +}; + +const static char* dialog_168[] = { + "Time for a little hint?", + CHANGE_CHARACTER, + "No.", + END_DIALOG +}; + +const static char* dialog_169[] = { + "Hello, sir. I'm Mark.", + CHANGE_CHARACTER, + "What a pity you're not a dollar.", + DISPLAY_MESSAGE, + "What can I do for you?", + CHANGE_CHARACTER, + ANIM_WAIT, + "You can give me a lot of money...", + DISPLAY_MESSAGE, + "...or you can do a headstand...", + DISPLAY_MESSAGE, + "...or...", + CHANGE_CHARACTER, + "Okay, okay. It's a tie.", + DISPLAY_MESSAGE, + "So?...", + CHANGE_CHARACTER, + "Who's else is in the camp?", + CHANGE_CHARACTER, + "You're a journalist?", + CHANGE_CHARACTER, + "No, I'm a secret agent.", + CHANGE_CHARACTER, + "You too?", + DISPLAY_MESSAGE, + "Anyway, there are only three men.", + DISPLAY_MESSAGE, + "Me, the captain and the guard.", + CHANGE_CHARACTER, + "No women?", + CHANGE_CHARACTER, + "No cry.", + CHANGE_CHARACTER, + ANIM_WAIT, + "Erm, well...", + END_DIALOG +}; + +const static char* dialog_170[] = { + "Not much of a rush on, is there?", + CHANGE_CHARACTER, + "Do you want to order something or not?", + CHANGE_CHARACTER, + "I don't have money.", + CHANGE_CHARACTER, + "Today's free.", + CHANGE_CHARACTER, + "Really?", + CHANGE_CHARACTER, + "Really.", + CHANGE_CHARACTER, + "I want a hot-dog.", + CHANGE_CHARACTER, + "Miss.", + CHANGE_CHARACTER, + "Pizza?", + CHANGE_CHARACTER, + "Miss.", + CHANGE_CHARACTER, + "Toast?", + CHANGE_CHARACTER, + "Miss.", + CHANGE_CHARACTER, + "Anything?", + CHANGE_CHARACTER, + "Miss.", + CHANGE_CHARACTER, + ANIM_WAIT, + "No, thank you.", + DISPLAY_MESSAGE, + "I'm not hungry.", + END_DIALOG +}; + +const static char* dialog_171[] = { + "What are you drinking?", + CHANGE_CHARACTER, + "Tea.", + CHANGE_CHARACTER, + "Sure.", + END_DIALOG +}; + +const static char* dialog_172[] = { + "Nice weather.", + CHANGE_CHARACTER, + "Mhmmm...", + END_DIALOG +}; + +const static char* dialog_173[] = { + "Sometimes I feel tired.", + DISPLAY_MESSAGE, + ANIM_WAIT, + "Very tired.", + END_DIALOG +}; + +const static char* dialog_174[] = { + "Hey, Woodstock's over!", + END_DIALOG +}; + +const static char* dialog_175[] = { + "Thanks.", + END_DIALOG +}; + +const static char* dialog_176[] = { + CHANGE_CHARACTER, + "What the...", + END_DIALOG +}; + +const static char* dialog_177[] = { + "Hey, aren't you thirsty?", + DISPLAY_MESSAGE, + "Have you forgotten about your cup?", + END_DIALOG +}; + +const static char* dialog_178[] = { + "Sir, we have been informed that...", + CHANGE_CHARACTER, + "Later!", + DISPLAY_MESSAGE, + "I'm busy right now!", + CHANGE_CHARACTER, + "As you wish, sir.", + END_DIALOG +}; + +const static char* dialog_179[] = { + "Sir, some young boy tried to get inside", + NEW_LINE, + "the mansion.", + END_DIALOG +}; + +const static char* dialog_180[] = { + "Don't worry.", + DISPLAY_MESSAGE, + "Young boys are curious...", + DISPLAY_MESSAGE, + "...and my house plays on their imaginations.", + DISPLAY_MESSAGE, + "But keep an eye on him.", + CHANGE_CHARACTER, + "Yes, sir!", + END_DIALOG +}; + +const static char* dialog_181[] = { + "Sir, that boy tried to get in again.", + END_DIALOG +}; + +const static char* dialog_182[] = { + "Do you think it's serious?", + CHANGE_CHARACTER, + "Hmmm... No...", + DISPLAY_MESSAGE, + "He doesn't look dangerously.", + DISPLAY_MESSAGE, + "But maybe we should...", + CHANGE_CHARACTER, + "Nah.", + DISPLAY_MESSAGE, + "Just keep him out of the mansion.", + DISPLAY_MESSAGE, + "But tell me if he appears again.", + DISPLAY_MESSAGE, + "Now get back to your job.", + END_DIALOG +}; + +const static char* dialog_183[] = { + "Don't tell me it's that boy again...", + CHANGE_CHARACTER, + "I'm afraid so.", + DISPLAY_MESSAGE, + "The guard says the boy's really desperate.", + END_DIALOG +}; + +const static char* dialog_184[] = { + "He's starting to get on my nerves.", + DISPLAY_MESSAGE, + "And what am I paying you for?", + CHANGE_CHARACTER, + "Should I...", + CHANGE_CHARACTER, + "Not yet.", + DISPLAY_MESSAGE, + "Let's give him a last chance.", + END_DIALOG +}; + +const static char* dialog_185[] = { + "Sir...", + CHANGE_CHARACTER, + "Let me guess...", + DISPLAY_MESSAGE, + "THE BOY?!?...", + CHANGE_CHARACTER, + "Bingo.", + CHANGE_CHARACTER, + "Why do I have to do everything?!", + DISPLAY_MESSAGE, + "Can't you do anything yourself?", + CHANGE_CHARACTER, + "Shall I kill him or just beat him to pieces?", + CHANGE_CHARACTER, + "You're stupid.", + DISPLAY_MESSAGE, + "There are ...better ways...", + END_DIALOG +}; + +const static char* dialog_186[] = { + "I'll handle it myself.", + DISPLAY_MESSAGE, + "Now get out!", + DISPLAY_MESSAGE, + "I have to change my clothes.", + END_DIALOG +}; + +const static char* dialog_187[] = { + "Hey, you up there!", + DISPLAY_MESSAGE, + "Get down at once!", + DISPLAY_MESSAGE, + ANIM_WAIT, + "Zero reaction.", + DISPLAY_MESSAGE, + ANIM_WAIT, + "Is it deaf or something?", + END_DIALOG +}; + +const static char* dialog_188[] = { + "Hey, birdy, don't be shy.", + DISPLAY_MESSAGE, + "Come to me...", + DISPLAY_MESSAGE, + ANIM_WAIT, + "(sigh)", + END_DIALOG +}; + +const static char* dialog_189[] = { + "Come here, little bird...", + END_DIALOG +}; + +const static char* dialog_190[] = { + NEW_LINE, + "Hey, keep away from this door!", + CHANGE_CHARACTER, + "Why?", + CHANGE_CHARACTER, + "None of your business.", + DISPLAY_MESSAGE, + "Just keep away.", + END_DIALOG +}; + +const static char* dialog_191[] = { + CHANGE_CHARACTER, + "I told you to keep away, didn't I?", + CHANGE_CHARACTER, + "OK, OK...", + END_DIALOG +}; + +const static char* dialog_192[] = { + "I've got a new delivery of gold.", + CHANGE_CHARACTER, + "Yeah, I know.", + DISPLAY_MESSAGE, + "Password?", + CHANGE_CHARACTER, + "Bimbo.", + CHANGE_CHARACTER, + "All right.", + DISPLAY_MESSAGE, + "You can bring the gold in.", + CHANGE_CHARACTER, + "Okey dokey.", + END_DIALOG +}; + +const static char* dialog_193[] = { + "As I told you, our organisation", + NEW_LINE, + "takes care of unusual problems.", + DISPLAY_MESSAGE, + "Last time we solved the problem of a UFO", + NEW_LINE, + "over the White House.", + CHANGE_CHARACTER, + "Oh, heally?", + DISPLAY_MESSAGE, + "How?", + CHANGE_CHARACTER, + "We shot the thing down.", + CHANGE_CHARACTER, + ANIM_WAIT, + "I undehstand.", + DISPLAY_MESSAGE, + "And who oh ...what was inside?", + CHANGE_CHARACTER, + "You want to know?", + CHANGE_CHARACTER, + "Oh, yes! As a fohtune-telleh", + NEW_LINE, + "I'm a cuhious pehson.", + CHANGE_CHARACTER, + "Do you REALLY want to know?", + CHANGE_CHARACTER, + "YES!", + CHANGE_CHARACTER, + "But...", + DISPLAY_MESSAGE, + "...REALLY REALLY?", + CHANGE_CHARACTER, + "YES!", + CHANGE_CHARACTER, + ANIM_WAIT, + "Sorry, I can't tell you.", + DISPLAY_MESSAGE, + "Anyway, we need your help.", + CHANGE_CHARACTER, + "I'm not a sechet agent, I'm a fohtune-tell...", + CHANGE_CHARACTER, + "I know.", + DISPLAY_MESSAGE, + "We have a very difficult case,", + NEW_LINE, + "which we haven't been able", + NEW_LINE, + "to solve for 6 months.", + DISPLAY_MESSAGE, + "We're in a hopeless situation.", + DISPLAY_MESSAGE, + "I thought to myself, if we handle", + NEW_LINE, + "strange cases...", + DISPLAY_MESSAGE, + "...then why not use", + NEW_LINE, + "strange means?", + CHANGE_CHARACTER, + "And?...", + CHANGE_CHARACTER, + "Let me show you the phone-book.", + DISPLAY_MESSAGE, + "Use your powers and select a name.", + DISPLAY_MESSAGE, + "Maybe a fresh mind will solve the case.", + CHANGE_CHARACTER, + "You don't believe it will wohk, do you?", + CHANGE_CHARACTER, + "No, I don't.", + CHANGE_CHARACTER, + ANIM_WAIT, + "This is stupid.", + CHANGE_CHARACTER, + "I know.", + CHANGE_CHARACTER, + ANIM_WAIT, + "Okay. Show me the book.", + END_DIALOG +}; + +const static char* dialog_194[] = { + ANIM_WAIT, + "The name is...", + DISPLAY_MESSAGE, + "...Hoppeh...", + DISPLAY_MESSAGE, + "...Mahk Hoppeh...", + DISPLAY_MESSAGE, + "Hm...", + END_DIALOG +}; + +const static char* dialog_195[] = { + "He's coming.", + END_DIALOG +}; + +const static char* dialog_196[] = { + "Oh, I'm sorry about my men.", + DISPLAY_MESSAGE, + "Sometimes they get a bit too nervous...", + DISPLAY_MESSAGE, + "But, please...", + DISPLAY_MESSAGE, + "Let's talk...", + END_DIALOG +}; + +const static char* dialog_197[] = { + "Listen, mister...", + CHANGE_CHARACTER, + "I know, I know.", + DISPLAY_MESSAGE, + "Please, give me five minutes and", + NEW_LINE, + "everything will become clear.", + CHANGE_CHARACTER, + "Go on, I always liked that conspiracy stuff.", + CHANGE_CHARACTER, + "Well...", + DISPLAY_MESSAGE, + "I'm head of a secret government organization", + NEW_LINE, + "called the RGB.", + CHANGE_CHARACTER, + "Why RGB?", + CHANGE_CHARACTER, + "Even I don't know.", + DISPLAY_MESSAGE, + "It's so secret.", + CHANGE_CHARACTER, + ANIM_WAIT, + "Cool.", + CHANGE_CHARACTER, + "The aim of my organization is to solve", + NEW_LINE, + "all the extraordinary problems around", + NEW_LINE, + "the world.", + CHANGE_CHARACTER, + "Like taxes?", + CHANGE_CHARACTER, + "No, like UFOs, strange inventions,", + NEW_LINE, + "spirits...", + CHANGE_CHARACTER, + "Wow!", + CHANGE_CHARACTER, + "Yes, when the police, the secret service and so on", + NEW_LINE, + "can't solve the problem...", + DISPLAY_MESSAGE, + "...it's delivered to us. But...", + DISPLAY_MESSAGE, + "You see, six months ago gold and cash", + NEW_LINE, + "deposited in bank safes started to", + NEW_LINE, + "disappear.", + DISPLAY_MESSAGE, + "Literally. Pum! And it's gone!", + CHANGE_CHARACTER, + "And?...", + CHANGE_CHARACTER, + "Gone - without a trace.", + DISPLAY_MESSAGE, + "The whole thing happens in a few seconds.", + DISPLAY_MESSAGE, + "We have video recordings but they don't", + NEW_LINE, + "show anything.", + DISPLAY_MESSAGE, + "That's why we hired the fortune-teller", + NEW_LINE, + "to show us someone who could be our", + NEW_LINE, + "salvation.", + DISPLAY_MESSAGE, + "She has chosen you.", + CHANGE_CHARACTER, + "I beg your pardon...", + DISPLAY_MESSAGE, + "You said you have hired...", + DISPLAY_MESSAGE, + "...A FORTUNE TELLER?!?", + CHANGE_CHARACTER, + "Yes, we're desperate and", + NEW_LINE, + "we'll try everything once.", + CHANGE_CHARACTER, + "This is crazy. Mum, wake me up!", + CHANGE_CHARACTER, + "Relax.", + DISPLAY_MESSAGE, + "We have a proposal for you.", + DISPLAY_MESSAGE, + "Try to help us and you will be rewarded.", + CHANGE_CHARACTER, + "What's in it for me?", + CHANGE_CHARACTER, + "Self-satisfaction?", + END_DIALOG +}; + +const static char* dialog_198[] = { + CHANGE_CHARACTER, + "Our respect?", + END_DIALOG +}; + +const static char* dialog_199[] = { + CHANGE_CHARACTER, + "Patriotism?", + END_DIALOG +}; + +const static char* dialog_200[] = { + CHANGE_CHARACTER, + "Girls?", + CHANGE_CHARACTER, + "What do you mean?", + CHANGE_CHARACTER, + "Every girl loves a secret agent.", + END_DIALOG +}; + +const static char* dialog_201[] = { + "Ok, I agree. What am I supposed to do?", + CHANGE_CHARACTER, + "Before you start, I suggest that first", + NEW_LINE, + "you get some training in our special", + NEW_LINE, + "secret camp.", + DISPLAY_MESSAGE, + "I'll issue a pass for you.", + DISPLAY_MESSAGE, + "Deal?", + CHANGE_CHARACTER, + "Deal!", + END_DIALOG +}; + +const static char* dialog_202[] = { + "...and it was even fun.", + CHANGE_CHARACTER, + "I'm glad you liked our training methods.", + DISPLAY_MESSAGE, + "But let's get to the point.", + DISPLAY_MESSAGE, + "I must admit I didn't believe you could", + NEW_LINE, + "actually help.", + DISPLAY_MESSAGE, + "Nothing personal.", + CHANGE_CHARACTER, + "I hope so.", + CHANGE_CHARACTER, + "But you brought us luck.", + DISPLAY_MESSAGE, + "Our people found out that some", + NEW_LINE, + "businessman is spending his", + NEW_LINE, + "money like crazy...", + DISPLAY_MESSAGE, + "...for some strange materials.", + DISPLAY_MESSAGE, + "There are three very suspicious things", + NEW_LINE, + "about him:", + DISPLAY_MESSAGE, + "...He pays in cash, which is very strange", + NEW_LINE, + "in a plastic card century...", + DISPLAY_MESSAGE, + "...Second, half a year ago he wasn't nearly", + NEW_LINE, + "as rich as he is now...", + DISPLAY_MESSAGE, + "...Third, what the hell does he need", + NEW_LINE, + "100 kg of borax for?", + CHANGE_CHARACTER, + "Maybe he's just a weirdo.", + CHANGE_CHARACTER, + "Maybe.", + DISPLAY_MESSAGE, + "But I want you to fly to the place", + NEW_LINE, + "and try to sneak inside his mansion...", + DISPLAY_MESSAGE, + "...to find out some more information.", + DISPLAY_MESSAGE, + "What do you say?", + CHANGE_CHARACTER, + "Well...", + CHANGE_CHARACTER, + "I promise you'll be an official secret", + NEW_LINE, + "agent after this mission.", + CHANGE_CHARACTER, + ANIM_WAIT, + "Promise?", + CHANGE_CHARACTER, + "My word of honour.", + CHANGE_CHARACTER, + "Okay. I'm ready.", + DISPLAY_MESSAGE, + "Where am I supposed to go?", + CHANGE_CHARACTER, + "It's a little village.", + DISPLAY_MESSAGE, + "You won't find it on many maps...", + DISPLAY_MESSAGE, + "But before you go, let me give you some special", + NEW_LINE, + "agent equipment.", + DISPLAY_MESSAGE, + "I would give you some boots to make you fly,", + NEW_LINE, + "but I've lent them to somebody.", + DISPLAY_MESSAGE, + "The mega-power gauntlets are also", + NEW_LINE, + "out of stock.", + DISPLAY_MESSAGE, + "As a matter of act I only have special", + NEW_LINE, + "super glue.", + DISPLAY_MESSAGE, + "Well, that's better than nothing...", + DISPLAY_MESSAGE, + "Good luck!", + END_DIALOG +}; + +const static char* dialog_203[] = { + CHANGE_CHARACTER, + "Don't worry.", + DISPLAY_MESSAGE, + "He'll be okay.", + DISPLAY_MESSAGE, + "Just... oh, look, here he goes...", + END_DIALOG +}; + +const static char* dialog_204[] = { + CHANGE_CHARACTER, + "He got what he deserved.", + DISPLAY_MESSAGE, + "But we've wasted enough time. Let's go!", + CHANGE_CHARACTER, + "No! Wait!", + DISPLAY_MESSAGE, + "I have to see Anne!", + CHANGE_CHARACTER, + "Ermm... You can't.", + CHANGE_CHARACTER, + "And why is that?!", + CHANGE_CHARACTER, + ANIM_WAIT, + "You see... Anne was our man.", + DISPLAY_MESSAGE, + "She was ordered to keep an eye on you", + NEW_LINE, + "in case the microcamera got out of", + NEW_LINE, + "order.", + DISPLAY_MESSAGE, + "And she was also your motivation...", + CHANGE_CHARACTER, + "I don't believe you!", + CHANGE_CHARACTER, + "She has already gone off on", + NEW_LINE, + "her next mission.", + DISPLAY_MESSAGE, + "Sorry.", + CHANGE_CHARACTER, + "I guess grandma was involved too?", + CHANGE_CHARACTER, + "No, she's from here. We payed her.", + CHANGE_CHARACTER, + "Now that's interesting.", + DISPLAY_MESSAGE, + "Because if so, why did I have so", + NEW_LINE, + "many problems?...", + CHANGE_CHARACTER, + "We were pumping up your determination.", + DISPLAY_MESSAGE, + "We counted on you to have some strong will.", + DISPLAY_MESSAGE, + "We were not wrong, were we?", + CHANGE_CHARACTER, + "You treat people like animals in", + NEW_LINE, + "an experiment.", + DISPLAY_MESSAGE, + "You're ruthless...", + CHANGE_CHARACTER, + "It worked, didn't it?", + CHANGE_CHARACTER, + "This is all so unbelievable.", + DISPLAY_MESSAGE, + "Maybe you're gonna tell me that the dog is", + NEW_LINE, + "a masked agent...", + DISPLAY_MESSAGE, + "...the old man was my guard...", + DISPLAY_MESSAGE, + "...and you are from Mars?!", + END_DIALOG +}; + +const static char* dialog_205[] = { + CHANGE_CHARACTER, + "It's not a soap opera, it's", + NEW_LINE, + "just usual agent work.", + DISPLAY_MESSAGE, + "But hey, join the RGB and you could", + NEW_LINE, + "work with Anne there!", + CHANGE_CHARACTER, + ANIM_WAIT, + "Well...", + DISPLAY_MESSAGE, + "I'll think about it...", + CHANGE_CHARACTER, + "Great.", + DISPLAY_MESSAGE, + "It was a pleasure to see you in action!", + END_DIALOG +}; + +const static char* dialog_206[] = { + CHANGE_CHARACTER, + "You don't have to tell me.", + DISPLAY_MESSAGE, + "I have already read a very detailed report.", + CHANGE_CHARACTER, + "But what happened to the professor?", + CHANGE_CHARACTER, + "Oh, that poor man has forgotten the pill recipe", + NEW_LINE, + "again.", + DISPLAY_MESSAGE, + "We'll give him the best laboratory we can.", + DISPLAY_MESSAGE, + "Right now we have only those few pills", + NEW_LINE, + "you gave us.", + CHANGE_CHARACTER, + "And John Noty?", + CHANGE_CHARACTER, + "Don't worry, his greediness will be punished.", + CHANGE_CHARACTER, + "I hope so...", + DISPLAY_MESSAGE, + "And one more little thing...", + DISPLAY_MESSAGE, + "You have promised me something...", + END_DIALOG +}; + +const static char* dialog_207[] = { + CHANGE_CHARACTER, + "Me?...", + DISPLAY_MESSAGE, + "I don't remember...", + CHANGE_CHARACTER, + "You said you'll make me an official agent...", + DISPLAY_MESSAGE, + "'Girls love secret agents'. Remember?", + END_DIALOG +}; + +const static char* dialog_208[] = { + CHANGE_CHARACTER, + "(sigh)", + DISPLAY_MESSAGE, + "A promise is a promise...", + DISPLAY_MESSAGE, + "Let me think.", + DISPLAY_MESSAGE, + ANIM_WAIT, + "All right. Come here.", + END_DIALOG +}; + +const static char* dialog_209[] = { + "In the name of...", + DISPLAY_MESSAGE, + "...blah...blah...blah...", + DISPLAY_MESSAGE, + "...blah...blah...", + DISPLAY_MESSAGE, + "...for our country.", + END_DIALOG +}; + +const static char* dialog_210[] = { + " Well... ", + DISPLAY_MESSAGE, + "That's all, folks!", + END_DIALOG +}; + +const static char* dialog_211[] = { + "I found the time pill!", + DISPLAY_MESSAGE, + "It must have fallen out of the jar!...", + DISPLAY_MESSAGE, + ANIM_WAIT, + "Cool.", + END_DIALOG +}; + +const static char* dialog_212[] = { + "Wow!", + DISPLAY_MESSAGE, + "This is charming!...", + END_DIALOG +}; + +const static char** dialogs[] = { + dialog_0, + dialog_1, + dialog_2, + dialog_3, + dialog_4, + dialog_5, + dialog_6, + dialog_7, + dialog_8, + dialog_9, + dialog_10, + dialog_11, + dialog_12, + dialog_13, + dialog_14, + dialog_15, + dialog_16, + dialog_17, + dialog_18, + dialog_19, + dialog_20, + dialog_21, + dialog_22, + dialog_23, + dialog_24, + dialog_25, + dialog_26, + dialog_27, + dialog_28, + dialog_29, + dialog_30, + dialog_31, + dialog_32, + dialog_33, + dialog_34, + dialog_35, + dialog_36, + dialog_37, + dialog_38, + dialog_39, + dialog_40, + dialog_41, + dialog_42, + dialog_43, + dialog_44, + dialog_45, + dialog_46, + dialog_47, + dialog_48, + dialog_49, + dialog_50, + dialog_51, + dialog_52, + dialog_53, + dialog_54, + dialog_55, + dialog_56, + dialog_57, + dialog_58, + dialog_59, + dialog_60, + dialog_61, + dialog_62, + dialog_63, + dialog_64, + dialog_65, + dialog_66, + dialog_67, + dialog_68, + dialog_69, + dialog_70, + dialog_71, + dialog_72, + dialog_73, + dialog_74, + dialog_75, + dialog_76, + dialog_77, + dialog_78, + dialog_79, + dialog_80, + dialog_81, + dialog_82, + dialog_83, + dialog_84, + dialog_85, + dialog_86, + dialog_87, + dialog_88, + dialog_89, + dialog_90, + dialog_91, + dialog_92, + dialog_93, + dialog_94, + dialog_95, + dialog_96, + dialog_97, + dialog_98, + dialog_99, + dialog_100, + dialog_101, + dialog_102, + dialog_103, + dialog_104, + dialog_105, + dialog_106, + dialog_107, + dialog_108, + dialog_109, + dialog_110, + dialog_111, + dialog_112, + dialog_113, + dialog_114, + dialog_115, + dialog_116, + dialog_117, + dialog_118, + dialog_119, + dialog_120, + dialog_121, + dialog_122, + dialog_123, + dialog_124, + dialog_125, + dialog_126, + dialog_127, + dialog_128, + dialog_129, + dialog_130, + dialog_131, + dialog_132, + dialog_133, + dialog_134, + dialog_135, + dialog_136, + dialog_137, + dialog_138, + dialog_139, + dialog_140, + dialog_141, + dialog_142, + dialog_143, + dialog_144, + dialog_145, + dialog_146, + dialog_147, + dialog_148, + dialog_149, + dialog_150, + dialog_151, + dialog_152, + dialog_153, + dialog_154, + dialog_155, + dialog_156, + dialog_157, + dialog_158, + dialog_159, + dialog_160, + dialog_161, + dialog_162, + dialog_163, + dialog_164, + dialog_165, + dialog_166, + dialog_167, + dialog_168, + dialog_169, + dialog_170, + dialog_171, + dialog_172, + dialog_173, + dialog_174, + dialog_175, + dialog_176, + dialog_177, + dialog_178, + dialog_179, + dialog_180, + dialog_181, + dialog_182, + dialog_183, + dialog_184, + dialog_185, + dialog_186, + dialog_187, + dialog_188, + dialog_189, + dialog_190, + dialog_191, + dialog_192, + dialog_193, + dialog_194, + dialog_195, + dialog_196, + dialog_197, + dialog_198, + dialog_199, + dialog_200, + dialog_201, + dialog_202, + dialog_203, + dialog_204, + dialog_205, + dialog_206, + dialog_207, + dialog_208, + dialog_209, + dialog_210, + dialog_211, + dialog_212 +}; + +#endif diff --git a/devtools/create_teenagent/util.cpp b/devtools/create_teenagent/util.cpp new file mode 100644 index 0000000000..5ce8237b85 --- /dev/null +++ b/devtools/create_teenagent/util.cpp @@ -0,0 +1,152 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// Disable symbol overrides so that we can use system headers. +#define FORBIDDEN_SYMBOL_ALLOW_ALL + +#include "util.h" +#include <stdarg.h> + +#ifdef _MSC_VER + #define vsnprintf _vsnprintf +#endif + +void error(const char *s, ...) { + char buf[1024]; + va_list va; + + va_start(va, s); + vsnprintf(buf, 1024, s, va); + va_end(va); + + fprintf(stderr, "ERROR: %s!\n", buf); + + exit(1); +} + +void warning(const char *s, ...) { + char buf[1024]; + va_list va; + + va_start(va, s); + vsnprintf(buf, 1024, s, va); + va_end(va); + + fprintf(stderr, "WARNING: %s!\n", buf); +} + +int scumm_stricmp(const char *s1, const char *s2) { + byte l1, l2; + do { + // Don't use ++ inside tolower, in case the macro uses its + // arguments more than once. + l1 = (byte)*s1++; + l1 = tolower(l1); + l2 = (byte)*s2++; + l2 = tolower(l2); + } while (l1 == l2 && l1 != 0); + return l1 - l2; +} + +void debug(int level, const char *s, ...) { + char buf[1024]; + va_list va; + + va_start(va, s); + vsnprintf(buf, 1024, s, va); + va_end(va); + + fprintf(stderr, "DEBUG: %s!\n", buf); +} + +uint8 readByte(FILE *fp) { + return fgetc(fp); +} + +uint16 readUint16BE(FILE *fp) { + uint16 ret = 0; + ret |= fgetc(fp) << 8; + ret |= fgetc(fp); + return ret; +} + +uint16 readUint16LE(FILE *fp) { + uint16 ret = 0; + ret |= fgetc(fp); + ret |= fgetc(fp) << 8; + return ret; +} + +uint32 readUint32BE(FILE *fp) { + uint32 ret = 0; + ret |= fgetc(fp) << 24; + ret |= fgetc(fp) << 16; + ret |= fgetc(fp) << 8; + ret |= fgetc(fp); + return ret; +} + +uint32 readUint32LE(FILE *fp) { + uint32 ret = 0; + ret |= fgetc(fp); + ret |= fgetc(fp) << 8; + ret |= fgetc(fp) << 16; + ret |= fgetc(fp) << 24; + return ret; +} + +void writeByte(FILE *fp, uint8 b) { + fwrite(&b, 1, 1, fp); +} + +void writeUint16BE(FILE *fp, uint16 value) { + writeByte(fp, (uint8)(value >> 8)); + writeByte(fp, (uint8)(value)); +} + +void writeUint16LE(FILE *fp, uint16 value) { + writeByte(fp, (uint8)(value)); + writeByte(fp, (uint8)(value >> 8)); +} + +void writeUint32BE(FILE *fp, uint32 value) { + writeByte(fp, (uint8)(value >> 24)); + writeByte(fp, (uint8)(value >> 16)); + writeByte(fp, (uint8)(value >> 8)); + writeByte(fp, (uint8)(value)); +} + +void writeUint32LE(FILE *fp, uint32 value) { + writeByte(fp, (uint8)(value)); + writeByte(fp, (uint8)(value >> 8)); + writeByte(fp, (uint8)(value >> 16)); + writeByte(fp, (uint8)(value >> 24)); +} + +uint32 fileSize(FILE *fp) { + uint32 sz; + uint32 pos = ftell(fp); + fseek(fp, 0, SEEK_END); + sz = ftell(fp); + fseek(fp, pos, SEEK_SET); + return sz; +} diff --git a/devtools/create_teenagent/util.h b/devtools/create_teenagent/util.h index 0d8e15cc37..a2783cca71 100644 --- a/devtools/create_teenagent/util.h +++ b/devtools/create_teenagent/util.h @@ -50,6 +50,7 @@ uint32 fileSize(FILE *fp); void NORETURN_PRE error(const char *s, ...) NORETURN_POST; void warning(const char *s, ...); void debug(int level, const char *s, ...); +int scumm_stricmp(const char *s1, const char *s2); using namespace Common; diff --git a/engines/teenagent/actor.cpp b/engines/teenagent/actor.cpp index cb8c798fb6..d65a367309 100644 --- a/engines/teenagent/actor.cpp +++ b/engines/teenagent/actor.cpp @@ -22,47 +22,46 @@ #include "teenagent/actor.h" #include "teenagent/objects.h" #include "teenagent/resources.h" +#include "teenagent/teenagent.h" #include "common/random.h" #include "common/textconsole.h" namespace TeenAgent { -Actor::Actor() : head_index(0), idle_type(0) {} +Actor::Actor(TeenAgentEngine *vm) : _vm(vm), headIndex(0), idleType(0) {} -//idle animation lists at dseg: 0x6540 -Common::Rect Actor::renderIdle(Graphics::Surface *surface, const Common::Point &position, uint8 orientation, int delta_frame, uint zoom, Common::RandomSource &rnd) { +Common::Rect Actor::renderIdle(Graphics::Surface *surface, const Common::Point &position, uint8 orientation, int deltaFrame, uint zoom, Common::RandomSource &rnd) { if (index == 0) { - idle_type = rnd.getRandomNumber(2); - debug(0, "switched to idle animation %u", idle_type); + idleType = rnd.getRandomNumber(2); + debugC(kDebugActor, "switched to idle animation %u", idleType); } - Resources *res = Resources::instance(); - byte *frames_idle; + byte *framesIdle; do { - frames_idle = res->dseg.ptr(res->dseg.get_word(0x6540 + idle_type * 2)) + index; - index += delta_frame; - if (*frames_idle == 0) { - idle_type = rnd.getRandomNumber(2); - debug(0, "switched to idle animation %u[loop]", idle_type); + framesIdle = _vm->res->dseg.ptr(_vm->res->dseg.get_word(dsAddr_idleAnimationListPtr + idleType * 2)) + index; + index += deltaFrame; + if (*framesIdle == 0) { + idleType = rnd.getRandomNumber(2); + debugC(kDebugActor, "switched to idle animation %u[loop]", idleType); index = 3; //put 4th frame (base 1) if idle animation loops } - } while (*frames_idle == 0); + } while (*framesIdle == 0); bool mirror = orientation == kActorLeft; - Surface *s = frames + *frames_idle - 1; + Surface *s = frames + *framesIdle - 1; - ///\todo remove copy-paste here and below + //TODO: remove copy-paste here and below int xp = position.x - s->w * zoom / 512 - s->x, yp = position.y - 62 * zoom / 256 - s->y; //hardcoded in original game return s->render(surface, xp, yp, mirror, Common::Rect(), zoom); } -Common::Rect Actor::render(Graphics::Surface *surface, const Common::Point &position, uint8 orientation, int delta_frame, bool render_head, uint zoom) { - const uint8 frames_left_right[] = {0, 1, 2, 3, 4, 5, /* step */ 6, 7, 8, 9}; - const uint8 frames_up[] = {18, 19, 20, 21, 22, 23, 24, 25, }; - const uint8 frames_down[] = {10, 11, 12, 13, 14, 15, 16, 17, }; +Common::Rect Actor::render(Graphics::Surface *surface, const Common::Point &position, uint8 orientation, int deltaFrame, bool renderHead, uint zoom) { + const uint8 framesLeftRight[] = {0, 1, 2, 3, 4, 5, /* step */ 6, 7, 8, 9}; + const uint8 framesUp[] = {18, 19, 20, 21, 22, 23, 24, 25, }; + const uint8 framesDown[] = {10, 11, 12, 13, 14, 15, 16, 17, }; - const uint8 frames_head_left_right[] = { + const uint8 framesHeadLeftRight[] = { 0x27, 0x1a, 0x1b, 0x27, 0x1c, 0x1d, 0x27, 0x1a, @@ -73,14 +72,14 @@ Common::Rect Actor::render(Graphics::Surface *surface, const Common::Point &posi 0x27, 0x1a, }; - const uint8 frames_head_up[] = { + const uint8 framesHeadUp[] = { 0x29, 0x25, 0x29, 0x29, 0x26, 0x29, 0x26, 0x29, 0x29, 0x25, 0x29, 0x25, 0x29, 0x29, 0x29, 0x25, 0x25, 0x29, 0x29, 0x26 }; - const uint8 frames_head_down[] = { + const uint8 framesHeadDown[] = { 0x20, 0x21, 0x22, 0x23, 0x28, 0x24, 0x28, 0x28, 0x24, 0x28, 0x20, 0x21, @@ -91,45 +90,45 @@ Common::Rect Actor::render(Graphics::Surface *surface, const Common::Point &posi Surface *s = NULL, *head = NULL; bool mirror = orientation == kActorLeft; - index += delta_frame; + index += deltaFrame; switch (orientation) { case kActorLeft: case kActorRight: - if (render_head) { - if (head_index >= ARRAYSIZE(frames_head_left_right)) - head_index = 0; - head = frames + frames_head_left_right[head_index]; - ++head_index; + if (renderHead) { + if (headIndex >= ARRAYSIZE(framesHeadLeftRight)) + headIndex = 0; + head = frames + framesHeadLeftRight[headIndex]; + ++headIndex; } - if (index >= ARRAYSIZE(frames_left_right)) + if (index >= ARRAYSIZE(framesLeftRight)) index = 1; - s = frames + frames_left_right[index]; + s = frames + framesLeftRight[index]; break; case kActorUp: - if (render_head) { - if (head_index >= ARRAYSIZE(frames_head_up)) - head_index = 0; - head = frames + frames_head_up[head_index]; - ++head_index; + if (renderHead) { + if (headIndex >= ARRAYSIZE(framesHeadUp)) + headIndex = 0; + head = frames + framesHeadUp[headIndex]; + ++headIndex; } - if (index >= ARRAYSIZE(frames_up)) + if (index >= ARRAYSIZE(framesUp)) index = 1; - s = frames + frames_up[index]; + s = frames + framesUp[index]; break; case kActorDown: - if (render_head) { - if (head_index >= ARRAYSIZE(frames_head_down)) - head_index = 0; - head = frames + frames_head_down[head_index]; - ++head_index; + if (renderHead) { + if (headIndex >= ARRAYSIZE(framesHeadDown)) + headIndex = 0; + head = frames + framesHeadDown[headIndex]; + ++headIndex; } - if (index >= ARRAYSIZE(frames_down)) + if (index >= ARRAYSIZE(framesDown)) index = 1; - s = frames + frames_down[index]; + s = frames + framesDown[index]; break; default: return Common::Rect(); diff --git a/engines/teenagent/actor.h b/engines/teenagent/actor.h index 9a7d395547..942397c636 100644 --- a/engines/teenagent/actor.h +++ b/engines/teenagent/actor.h @@ -28,13 +28,20 @@ class RandomSource; namespace TeenAgent { +class TeenAgentEngine; + class Actor : public Animation { - uint head_index; - uint idle_type; +private: + TeenAgentEngine *_vm; + + uint headIndex; + uint idleType; + public: - Actor(); - Common::Rect render(Graphics::Surface *surface, const Common::Point &position, uint8 orientation, int delta_frame, bool head, uint zoom); - Common::Rect renderIdle(Graphics::Surface *surface, const Common::Point &position, uint8 orientation, int delta_frame, uint zoom, Common::RandomSource &rnd); + Actor(TeenAgentEngine *vm); + + Common::Rect render(Graphics::Surface *surface, const Common::Point &position, uint8 orientation, int deltaFrame, bool renderHead, uint zoom); + Common::Rect renderIdle(Graphics::Surface *surface, const Common::Point &position, uint8 orientation, int deltaFrame, uint zoom, Common::RandomSource &rnd); }; } // End of namespace TeenAgent diff --git a/engines/teenagent/animation.cpp b/engines/teenagent/animation.cpp index 56107b67ca..effafcaac6 100644 --- a/engines/teenagent/animation.cpp +++ b/engines/teenagent/animation.cpp @@ -19,24 +19,30 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +#include "teenagent/teenagent.h" #include "teenagent/animation.h" + #include "common/endian.h" #include "common/textconsole.h" namespace TeenAgent { -Animation::Animation() : id(0), x(0), y(0), loop(true), paused(false), ignore(false), data(0), data_size(0), frames_count(0), frames(0), index(0) { +Animation::Animation() : id(0), x(0), y(0), loop(true), paused(false), ignore(false), data(0), dataSize(0), framesCount(0), frames(0), index(0) { +} + +Animation::~Animation() { + free(); } Surface *Animation::firstFrame() { - if (frames == NULL || frames_count == 0) + if (frames == NULL || framesCount == 0) return NULL; Surface *r = frames; uint16 pos = READ_LE_UINT16(data + 1); if (pos != 0) { - r->x = pos % 320; - r->y = pos / 320; + r->x = pos % kScreenWidth; + r->y = pos / kScreenWidth; } return r; } @@ -45,38 +51,38 @@ Surface *Animation::currentFrame(int dt) { if (paused) return firstFrame(); - if (frames == NULL || frames_count == 0) + if (frames == NULL || framesCount == 0) return NULL; Surface *r; if (data != NULL) { uint32 frame = 3 * index; - //debug(0, "%u/%u", index, data_size / 3); + debugC(2, kDebugAnimation, "%u/%u", index, dataSize / 3); index += dt; - if (!loop && index >= data_size / 3) { + if (!loop && index >= dataSize / 3) { return NULL; } - if (data[frame] - 1 >= frames_count) { - warning("invalid frame %u(0x%x) (max %u) index %u, mod %u", frame, frame, frames_count, index - 1, data_size / 3); + if (data[frame] - 1 >= framesCount) { + warning("invalid frame %u(0x%x) (max %u) index %u, mod %u", frame, frame, framesCount, index - 1, dataSize / 3); return NULL; } r = frames + data[frame] - 1; uint16 pos = READ_LE_UINT16(data + frame + 1); - index %= (data_size / 3); + index %= (dataSize / 3); if (pos != 0) { - x = r->x = pos % 320; - y = r->y = pos / 320; + x = r->x = pos % kScreenWidth; + y = r->y = pos / kScreenWidth; } } else { - //debug(0, "index %u", index); + debugC(2, kDebugAnimation, "index %u", index); r = frames + index; index += dt; - index %= frames_count; + index %= framesCount; } return r; @@ -97,9 +103,9 @@ void Animation::free() { delete[] data; data = NULL; - data_size = 0; + dataSize = 0; - frames_count = 0; + framesCount = 0; delete[] frames; frames = NULL; @@ -107,44 +113,42 @@ void Animation::free() { } void Animation::load(Common::SeekableReadStream &s, Type type) { - //fixme: do not reload the same animation each time + //FIXME: do not reload the same animation each time free(); if (s.size() <= 1) { - debug(1, "empty animation"); + debugC(1, kDebugAnimation, "empty animation"); return; } - //uint16 pos = 0; + uint16 pos = 0; int off = 0; switch (type) { case kTypeLan: - data_size = s.readUint16LE(); + dataSize = s.readUint16LE(); if (s.eos()) { - debug(1, "empty animation"); + debugC(1, kDebugAnimation, "empty animation"); return; } - data_size -= 2; - data = new byte[data_size]; - data_size = s.read(data, data_size); - /* for (int i = 0; i < data_size; ++i) { - debug(0, "%02x ", data[i]); - } - debug(0, ", %u frames", data_size / 3); - */ - frames_count = s.readByte(); - debug(1, "%u physical frames", frames_count); - if (frames_count == 0) + dataSize -= 2; + data = new byte[dataSize]; + dataSize = s.read(data, dataSize); + for (int i = 0; i < dataSize; ++i) + debugC(2, kDebugAnimation, "%02x ", data[i]); + debugC(2, kDebugAnimation, ", %u frames", dataSize / 3); + framesCount = s.readByte(); + debugC(1, kDebugAnimation, "%u physical frames", framesCount); + if (framesCount == 0) return; - frames = new Surface[frames_count]; + frames = new Surface[framesCount]; - s.skip(frames_count * 2 - 2); //sizes - /*pos = */s.readUint16LE(); - //debug(0, "pos?: %04x", pos); + s.skip(framesCount * 2 - 2); //sizes + pos = s.readUint16LE(); + debugC(3, kDebugAnimation, "pos?: 0x%04x", pos); - for (uint16 i = 0; i < frames_count; ++i) { + for (uint16 i = 0; i < framesCount; ++i) { frames[i].load(s, Surface::kTypeLan); frames[i].x = 0; frames[i].y = 0; @@ -152,43 +156,43 @@ void Animation::load(Common::SeekableReadStream &s, Type type) { break; case kTypeInventory: { - data_size = 3 * s.readByte(); - data = new byte[data_size]; + dataSize = 3 * s.readByte(); + data = new byte[dataSize]; - frames_count = 0; - for (byte i = 0; i < data_size / 3; ++i) { + framesCount = 0; + for (byte i = 0; i < dataSize / 3; ++i) { int idx = i * 3; - /* byte unk = */ - s.readByte(); + byte unk = s.readByte(); + debugC(3, kDebugAnimation, "unk?: 0x%02x", unk); data[idx] = s.readByte(); if (data[idx] == 0) data[idx] = 1; //fixme: investigate - if (data[idx] > frames_count) - frames_count = data[idx]; + if (data[idx] > framesCount) + framesCount = data[idx]; data[idx + 1] = 0; data[idx + 2] = 0; - //debug(0, "frame #%u", data[idx]); + debugC(2, kDebugAnimation, "frame #%u", data[idx]); } - frames = new Surface[frames_count]; + frames = new Surface[framesCount]; - for (uint16 i = 0; i < frames_count; ++i) { + for (uint16 i = 0; i < framesCount; ++i) { frames[i].load(s, Surface::kTypeOns); } } break; case kTypeVaria: - frames_count = s.readByte(); - debug(1, "loading varia resource, %u physical frames", frames_count); + framesCount = s.readByte(); + debugC(1, kDebugAnimation, "loading varia resource, %u physical frames", framesCount); uint16 offset[255]; - for (byte i = 0; i < frames_count; ++i) { + for (byte i = 0; i < framesCount; ++i) { offset[i] = s.readUint16LE(); - //debug(0, "%u: %04x", i, offset[i]); + debugC(0, kDebugAnimation, "%u: %04x", i, offset[i]); } - frames = new Surface[frames_count]; - for (uint16 i = 0; i < frames_count; ++i) { - //debug(0, "%04x", offset[i]); + frames = new Surface[framesCount]; + for (uint16 i = 0; i < framesCount; ++i) { + debugC(0, kDebugAnimation, "%04x", offset[i]); s.seek(offset[i] + off); frames[i].load(s, Surface::kTypeOns); } @@ -196,11 +200,7 @@ void Animation::load(Common::SeekableReadStream &s, Type type) { break; } - debug(0, "%u frames", data_size / 3); -} - -Animation::~Animation() { - free(); + debugC(2, kDebugAnimation, "%u frames", dataSize / 3); } } // End of namespace TeenAgent diff --git a/engines/teenagent/animation.h b/engines/teenagent/animation.h index 6942cc74eb..9be21a4c3d 100644 --- a/engines/teenagent/animation.h +++ b/engines/teenagent/animation.h @@ -35,6 +35,8 @@ public: enum Type {kTypeLan, kTypeVaria, kTypeInventory}; Animation(); + ~Animation(); + void load(Common::SeekableReadStream &, Type type = kTypeLan); void free(); @@ -43,8 +45,6 @@ public: uint16 currentIndex() const { return index; } void resetIndex() { index = 0; } - ~Animation(); - bool empty() const { return frames == NULL; } void restart(); @@ -53,9 +53,9 @@ public: protected: byte *data; - uint16 data_size; + uint16 dataSize; - uint16 frames_count; + uint16 framesCount; Surface *frames; uint16 index; }; diff --git a/engines/teenagent/callbacks.cpp b/engines/teenagent/callbacks.cpp index 934727a478..2de81abb37 100644 --- a/engines/teenagent/callbacks.cpp +++ b/engines/teenagent/callbacks.cpp @@ -19,8 +19,9 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#include "teenagent/scene.h" #include "teenagent/teenagent.h" +#include "teenagent/scene.h" +#include "teenagent/inventory.h" #include "teenagent/resources.h" #include "teenagent/dialog.h" @@ -33,159 +34,536 @@ namespace TeenAgent { #define GET_FLAG(addr) (res->dseg.get_byte(addr)) #define INC_FLAG(addr) (++*res->dseg.ptr(addr)) -void TeenAgentEngine::rejectMessage() { - Resources *res = Resources::instance(); - //random reject message: - uint i = _rnd.getRandomNumber(3); - //debug(0, "reject message: %s", (const char *)res->dseg.ptr(res->dseg.get_word(0x339e + 2 * i))); - displayMessage(res->dseg.get_word(0x339e + 2 * i)); +void TeenAgentEngine::fnIntro() { + hideActor(); + + loadScene(41, 139, 156, 3); + playSound(41, 12); + playAnimation(912, 1); + setOns(0, 108); + playSound(62, 8); + playSound(58, 40); + playAnimation(913, 1); + setOns(1, 109); + setLan(2, 1); + dialog->show(192, scene, 914, 915, textColorGoldDriver, textColorBankGuard, 2, 1); + displayCredits(dsAddr_introCredits1); + + loadScene(42, 139, 156, 3); + playSound(15, 20); + playAnimation(916, 1); + playSound(40, 18); + playSound(40, 22); + for (byte i = 27; i < 37; i += 2) + playSound(40, i); + playSound(29, 44); + playAnimation(918, 0, true); + playAnimation(917, 1, true); + waitAnimation(); + displayCredits(dsAddr_introCredits2); + + loadScene(40, 139, 156, 3); + playMusic(3); + dialog->show(193, scene, 920, 924, textColorRGBBoss, textColorFortuneTeller, 1, 2); + playSound(26, 50); + playAnimation(925, 0, true); + playAnimation(926, 1, true); + waitAnimation(); + dialog->show(194, scene, 927, 920, textColorFortuneTeller, textColorRGBBoss, 2, 1); + displayCredits(dsAddr_introCredits3); + + loadScene(39, 139, 156, 3); + playMusic(11); + playSound(81, 2); + playSound(81, 8); + playSound(81, 11); + playSound(81, 14); + playSound(81, 16); + playSound(81, 18); + playSound(81, 20); + playSound(81, 21); + playAnimation(928, 1); + setOns(0, 112); + dialog->showMono(195, scene, 929, textColorMark, 1); + showActor(); + moveTo(319, 150, 1, true); + moveTo(63, 150, 1); + displayAsyncMessage(dsAddr_HeyWtmQMsg, 4, 62, 18, 36); // hey, what's the matter? + playAnimation(851, 0, true); + playActorAnimation(930, true); + waitAnimation(); + playSound(24, 11); + playActorAnimation(931); + + displayCredits(dsAddr_introCredits4); + + playMusic(3); + loadScene(40, 50, 186, 1); + setOns(0, 113); + dialog->show(196, scene, 919, 0, textColorRGBBoss, textColorMark, 1, 0); + moveTo(196, 186, 1); + dialog->show(197, scene, 0, 920, textColorMark, textColorRGBBoss, 0, 1); + playActorAnimation(932); + dialog->show(198, scene, 0, 920, textColorMark, textColorRGBBoss, 0, 1); + playActorAnimation(932); + dialog->show(199, scene, 0, 920, textColorMark, textColorRGBBoss, 0, 1); + playActorAnimation(932); + dialog->show(200, scene, 0, 922, textColorMark, textColorRGBBoss, 0, 1); + playActorAnimation(933); + dialog->show(201, scene, 0, 920, textColorMark, textColorRGBBoss, 0, 1); + moveTo(174, 186, 1); + playAnimation(851, 0, true); + playActorAnimation(934, true); + waitAnimation(); + loadScene(10, 136, 153, 3); } +void TeenAgentEngine::fnPoleClimbFail() { + moveTo(86, 195, 1, true); + playActorAnimation(868); +} -bool TeenAgentEngine::processCallback(uint16 addr) { - if (addr == 0) - return false; +void TeenAgentEngine::fnGotAnchor() { + SET_FLAG(dsAddr_timedCallbackState, 0); + setTimerCallback(0, 0); + scene->getActorAnimation()->free(); + playSound(64, 7); + playActorAnimation(618); + disableObject(5); + setOns(0, 0); + playSound(31, 1); + playActorAnimation(619); + fnGetOutOfLake(); + inventory->add(kInvItemAnchor); + displayMessage(dsAddr_hookedAnchorMsg); // "I was really hooked on this anchor!" +} - Resources *res = Resources::instance(); - debug(0, "processCallback(%04x)", addr); - byte *code = res->cseg.ptr(addr); - - //try trivial callbacks first - if (code[0] == 0xbb && code[3] == 0xe8 && code[6] == 0xc3) { - //call display_message, r - uint16 msg = READ_LE_UINT16(code + 1); - uint16 func = 6 + addr + READ_LE_UINT16(code + 4); - debug(0, "call %04x", func); - //debug(0, "trivial callback, showing message %s", (const char *)res->dseg.ptr(addr)); - switch (func) { - case 0xa055: - displayMessage(msg); - return true; - } +void TeenAgentEngine::fnGetOutOfLake() { + loadScene(15, 156, 180, 3); + playSound(5, 5); + playSound(38, 14); + playSound(38, 20); + playSound(5, 25); + playActorAnimation(616); +} + +void TeenAgentEngine::fnGuardDrinking() { + SET_FLAG(dsAddr_timedCallbackState, 0); + setTimerCallback(0, 0); + scene->getAnimation(0)->free(); + SET_FLAG(dsAddr_scaredGuardAlreadyFlag, 1); + + displayAsyncMessage(dsAddr_BooMsg, 300, 130, 1, 5); // "Booo!" + setOns(0, 16); + enableObject(2); + + playSound(17, 5); + playAnimation(545, 0); + + dialog->show(5, scene, 0, 546, textColorMark, textColorMansionGuard, 0, 1); + SET_FLAG(dsAddr_spokenWithMansionGuardFlag, 1); + SET_FLAG(dsAddr_haveNotSpokenWithMansionGuardFlag, 0); +} + +void TeenAgentEngine::fnEgoDefaultPosition() { + if (scene->getPosition().y <= 149) + moveTo(94, 115, 4); + else + moveTo(51, 149, 4); +} + +void TeenAgentEngine::fnEnterCave() { + loadScene(24, 230, 170, 1); + playSound(52, 3); + playSound(52, 7); + playSound(52, 11); + playSound(52, 14); + playSound(52, 18); + playSound(52, 21); + playSound(52, 25); + playActorAnimation(601); + moveTo(230, 179, 3); + if (!CHECK_FLAG(dsAddr_lightOnFlag, 1)) + displayMessage(dsAddr_kindaDarkMsg); // "It's kinda dark here" +} + +void TeenAgentEngine::fnEgoScaredBySpider() { + if (CHECK_FLAG(dsAddr_egoAlreadyScaredBySpiderFlag, 1)) { + fnMoveToLadderAndLeaveCellar(); + dialog->showMark(75, scene); + } else { + dialog->showMark(73, scene); + fnMoveToLadderAndLeaveCellar(); + wait(100); + dialog->showMark(74, scene); + SET_FLAG(dsAddr_egoAlreadyScaredBySpiderFlag, 1); } +} - if (code[0] == 0xe8 && code[3] == 0xc3) { - uint func = 3 + addr + READ_LE_UINT16(code + 1); - debug(0, "call %04x and return", func); - if (func == 0xa4d6) { - rejectMessage(); +void TeenAgentEngine::fnMoveToLadderAndLeaveCellar() { + Object *objTemp = scene->getObject(3); + moveTo(objTemp); + fnLeaveCellar(); + moveTo(48, 190, 3); +} + +void TeenAgentEngine::fnLeaveCellar() { + playSound(52, 10); + playSound(52, 14); + playSound(52, 18); + playSound(52, 21); + playSound(52, 25); + playSound(52, 28); + playSound(52, 32); + playActorAnimation(600); + loadScene(21, 297, 178, 3); +} + +void TeenAgentEngine::fnPutRockInHole() { + if (CHECK_FLAG(dsAddr_timedCallbackState, 0)) { + playSound(5, 2); + playSound(15, 12); + playActorAnimation(638); + inventory->remove(kInvItemMouse); + setTimerCallback(csAddr_mouseOutOfHoleTimeout, 100); + SET_FLAG(dsAddr_timedCallbackState, 1); + } else if (CHECK_FLAG(dsAddr_timedCallbackState, 1)) { + playSound(5, 2); + playSound(52, 13); + playActorAnimation(648); + setOns(1, 46); + inventory->remove(kInvItemRock); + setTimerCallback(csAddr_mouseOutOfHoleTimeout, 100); + SET_FLAG(dsAddr_timedCallbackState, 2); + } else if (CHECK_FLAG(dsAddr_timedCallbackState, 2)) { + playActorAnimation(649); + setOns(1, 47); + wait(300); + for (byte i = 1; i <= 37; i += 4) + playSound(68, i); + playAnimation(639, 2); + setOns(0, 42); + enableObject(6); + disableObject(5); + SET_FLAG(dsAddr_mouseGotGoldNuggetFlag, 1); + SET_FLAG(dsAddr_timedCallbackState, 0); + setTimerCallback(0, 0); + } +} + +void TeenAgentEngine::fnEgoBottomRightTurn() { + Common::Point p = scene->getPosition(); + if (p.x == 208 && p.y == 151) + moveRel(0, 0, 2); + else + moveTo(208, 151, 1); +} + +bool TeenAgentEngine::fnCheckingDrawers() { + uint16 v = GET_FLAG(dsAddr_drawerPuzzleBookValue) - 1; + if (GET_FLAG(dsAddr_blueDrawerOpenFlag + v) != 1) + return false; + else { + uint16 sum = 0; + for (uint i = 0; i < 6; ++i) + sum += GET_FLAG(dsAddr_blueDrawerOpenFlag + i); + if (sum != 1) + return false; + else return true; - } } +} - if (code[0] == 0xc7 && code[1] == 0x06 && code[2] == 0xf3 && code[3] == 0xb4 && - code[6] == 0xb8 && code[9] == 0xbb && code[12] == 0xbf && - code[22] == 0xe8 && code[25] == 0xc3) { - loadScene(code[4], Common::Point( - (READ_LE_UINT16(code + 7) + READ_LE_UINT16(code + 13) + 1) / 2 , - READ_LE_UINT16(code + 10))); - scene->setOrientation(code[21]); +void TeenAgentEngine::fnDrawerOpenMessage() { + if (CHECK_FLAG(dsAddr_drawerPuzzleHintGivenFlag, 1)) + displayMessage(dsAddr_drawerOpenMsg); // "I cannot open the drawer if the next one is open!" + else { + displayMessage(dsAddr_strangeDrawerMsg); // "Strange, but the drawer is stuck if the next drawer is open" + displayMessage(dsAddr_notOrdinaryDrawersMsg); // "Maybe these are not just ordinary drawers!" + SET_FLAG(dsAddr_drawerPuzzleHintGivenFlag, 1); + } +} + +bool TeenAgentEngine::fnRobotSafeAlreadyUnlockedCheck() { + if (CHECK_FLAG(dsAddr_MansionRobotSafeUnlockedFlag, 1)) { return true; + } else { + displayMessage(dsAddr_noReasonMsg); // "There's no reason to do it" + return false; } +} - switch (addr) { +void TeenAgentEngine::fnRobotSafeUnlockCheck() { + if (CHECK_FLAG(dsAddr_MansionRobotSafeVoiceTestPassedFlag, 1) && + CHECK_FLAG(dsAddr_MansionRobotSafeScentTestPassedFlag, 1) && + CHECK_FLAG(dsAddr_MansionRobotSafeViewTestPassedFlag, 1)) { + waitLanAnimationFrame(1, 1); + playSound(89, 2); + playActorAnimation(731); + setOns(0, 70); + setLan(1, 0); + disableObject(1); + enableObject(2); + enableObject(3); + } +} - case 0x024c: //intro - hideActor(); +bool TeenAgentEngine::fnMansionIntrusionAttempt() { + wait(50); + byte attempts = res->dseg.get_byte(dsAddr_mansionEntryCount) + 1; + res->dseg.set_byte(dsAddr_mansionEntryCount, attempts); + debugC(0, kDebugCallbacks, "mansion intrusion attempt #%u", attempts); + if (attempts >= 7) + return false; + else { + byte id = scene->getId(); - loadScene(41, 139, 156, 3); - playSound(41, 12); - playAnimation(912, 1); - setOns(0, 108); - playSound(62, 8); - playSound(58, 40); - playAnimation(913, 1); - setOns(1, 109); - setLan(2, 1); - Dialog::show(scene, 0x748e, 914, 915, 0xe7, 0xd7, 2, 1); - displayCredits(0xe3c2); - - loadScene(42, 139, 156, 3); - playSound(15, 20); - playAnimation(916, 1); - playSound(40, 18); - playSound(40, 22); - for (byte i = 27; i < 37; i += 2) - playSound(40, i); - playSound(29, 44); - playAnimation(918, 0, true); - playAnimation(917, 1, true); - waitAnimation(); - displayCredits(0xe3e6); + playMusic(11); + displayCutsceneMessage(dsAddr_cutsceneMsg2, 84, 95); // "Meanwhile in the mansion" + switch (attempts) { + case 2: + fnSecondMansionIntrusion(); + break; + case 3: + fnThirdMansionIntrusion(); + break; + case 4: + fnFourthMansionIntrusion(); + break; + case 5: + fnFifthMansionIntrusion(); + break; + case 6: + fnSixthMansionIntrusion(); + break; + default: + error("mansion intrusion attempts out of range!"); + break; + } + playMusic(6); + if (getFlag(dsAddr_johnNotyOutsideMansionDoorFlag) != 1 || attempts != 6) + loadScene(id, scene->getPosition()); + return true; + } +} - loadScene(40, 139, 156, 3); - playMusic(3); - Dialog::show(scene, 0x750d, 920, 924, 0xe7, 0xeb, 1, 2); //as i told you, our organization... - playSound(26, 50); - playAnimation(925, 0, true); - playAnimation(926, 1, true); - waitAnimation(); - Dialog::show(scene, 0x78a6, 927, 920, 0xeb, 0xe7, 2, 1); - displayCredits(0xe3ff); +void TeenAgentEngine::fnSecondMansionIntrusion() { + hideActor(); + loadScene(34, scene->getPosition()); + playAnimation(986, 0, true); + playAnimation(987, 1, true); + waitAnimation(); + dialog->show(178, scene, 988, 989, textColorMansionGuard, textColorJohnNoty, 1, 2); + playAnimation(990, 0, true); + playAnimation(991, 1, true); + waitAnimation(); + showActor(); +} - loadScene(39, 139, 156, 3); - playMusic(11); - playSound(81, 2); - playSound(81, 8); - playSound(81, 11); - playSound(81, 14); - playSound(81, 16); - playSound(81, 18); - playSound(81, 20); - playSound(81, 21); - playAnimation(928, 1); - setOns(0, 112); - Dialog::showMono(scene, 0x78e1, 929, 0xd1, 1); //he's coming - showActor(); - moveTo(319, 150, 1, true); - moveTo(63, 150, 1); - displayAsyncMessage(0x5da8, 19844, 18, 36); //hey, what's the matter? - playAnimation(851, 0, true); - playActorAnimation(930, true); - waitAnimation(); - playSound(24, 11); - playActorAnimation(931); +void TeenAgentEngine::fnThirdMansionIntrusion() { + hideActor(); + loadScene(30, scene->getPosition()); + playAnimation(887, 1); + playAnimation(888, 2, true, true, true); + //waitAnimation(); + dialog->showMono(179, scene, 889, textColorMansionGuard, 2); + playSound(26, 3); + playAnimation(891, 1, true, true, true); + playAnimation(892, 2); + waitAnimation(); + dialog->show(180, scene, 890, 889, textColorJohnNoty, textColorMansionGuard, 3, 2); + showActor(); +} - displayCredits(0xe42f); +void TeenAgentEngine::fnFourthMansionIntrusion() { + hideActor(); + loadScene(32, scene->getPosition()); + playAnimation(894, 1, true, true, true); + playAnimation(893, 2, true); + waitAnimation(); + dialog->showMono(181, scene, 895, textColorMansionGuard, 3); + playSound(75, 9); + playAnimation(898, 1, true); + playAnimation(897, 2, true); + dialog->show(182, scene, 896, 895, textColorJohnNoty, textColorMansionGuard, 2, 3); + showActor(); +} - playMusic(3); - loadScene(40, 50, 186, 1); - setOns(0, 113); - Dialog::show(scene, 0x78f1, 919, 0, 0xe7, 0xd1, 1, 0); - moveTo(196, 186, 1); - Dialog::show(scene, 0x7958, 0, 920, 0xd1, 0xe7, 0, 1); - playActorAnimation(932); - Dialog::show(scene, 0x7e07, 0, 920, 0xd1, 0xe7, 0, 1); - playActorAnimation(932); - Dialog::show(scene, 0x7e1a, 0, 920, 0xd1, 0xe7, 0, 1); - playActorAnimation(932); - Dialog::show(scene, 0x7e2c, 0, 922, 0xd1, 0xe7, 0, 1); - playActorAnimation(933); - Dialog::show(scene, 0x7e70, 0, 920, 0xd1, 0xe7, 0, 1); - moveTo(174, 186, 1); - playAnimation(851, 0, true); - playActorAnimation(934, true); - waitAnimation(); - loadScene(10, 136, 153, 3); +void TeenAgentEngine::fnFifthMansionIntrusion() { + hideActor(); + loadScene(29, scene->getPosition()); + playActorAnimation(901, true); + playAnimation(900, 1, true); + waitAnimation(); + dialog->show(183, scene, 903, 902, textColorJohnNoty, textColorMansionGuard, 2, 3); + for (byte i = 3; i <= 9; i += 2) + playSound(56, i); + + playActorAnimation(905, true); + playAnimation(904, 1, true); + dialog->show(184, scene, 903, 902, textColorJohnNoty, textColorMansionGuard, 2, 3); + showActor(); +} + +void TeenAgentEngine::fnSixthMansionIntrusion() { + hideActor(); + loadScene(35, scene->getPosition()); + playAnimation(907, 2, true); + playAnimation(906, 3, true); + waitAnimation(); + dialog->show(185, scene, 908, 909, textColorMansionGuard, textColorJohnNoty, 2, 3); + dialog->show(186, scene, 910, 908, textColorJohnNoty, textColorMansionGuard, 3, 2); + loadScene(11, scene->getPosition()); + showActor(); + setOns(3, 51); + playAnimation(911, 1); + playAnimation(899, 1); + setFlag(dsAddr_johnNotyOutsideMansionDoorFlag, 1); + reloadLan(); + wait(200); + enableObject(8); + setLan(2, 8); +} +void TeenAgentEngine::fnTooDark() { + displayMessage(dsAddr_TooDarkMsg); // "It's too dark to see clearly" +} + +bool TeenAgentEngine::fnIsCookGone() { + if (CHECK_FLAG(dsAddr_MansionCookGoneFlag, 1)) { return true; + } else { + displayMessage(dsAddr_cookAroundMsg); // "I can't do anything with this cook around" + return false; + } +} + +void TeenAgentEngine::fnEgoSuspiciousPosition() { + Common::Point p = scene->getPosition(); + if (p.x != 203 && p.y != 171) + moveTo(203, 169, 2); + else + moveTo(203, 169, 1); +} + +void TeenAgentEngine::fnGivingFlowerToOldLady() { + playSound(5, 2); + dialog->show(37, scene, 0, 523, textColorMark, textColorOldLady, 0, 1); + playActorAnimation(537, true); + playAnimation(538, 0, true); + waitAnimation(); + wait(100); + dialog->show(38, scene, 0, 523, textColorMark, textColorOldLady, 0, 1); +} + +void TeenAgentEngine::fnGiveAnotherFlowerToOldLady() { + dialog->pop(scene, dsAddr_dialogStackOldLady, 0, 523, textColorMark, textColorOldLady, 0, 1); +} + +void TeenAgentEngine::fnGivingFlowerToAnne() { + dialog->show(53, scene, 0, 524, textColorMark, textColorAnne, 0, 2); + playSound(5, 10); + playActorAnimation(540, true); + playAnimation(539, 1, true); + waitAnimation(); + wait(100); + dialog->show(54, scene, 0, 524, textColorMark, textColorAnne, 0, 2); + wait(50); + dialog->show(55, scene, 0, 524, textColorMark, textColorAnne, 0, 2); + dialog->show(56, scene, 0, 524, textColorMark, textColorAnne, 0, 2); + wait(50); + moveRel(0, 1, 0); + dialog->show(57, scene, 0, 524, textColorMark, textColorAnne, 0, 2); + moveRel(0, -1, 0); + wait(50); +} + +void TeenAgentEngine::fnGiveAnotherFlowerToAnne() { + dialog->pop(scene, dsAddr_dialogStackAnotherFlowerToAnne, 0, 524, textColorMark, textColorAnne, 0, 2); +} + +void TeenAgentEngine::rejectMessage() { + uint i = _rnd.getRandomNumber(3); + switch (i) { + case 0: + displayMessage(dsAddr_rejectMsg0); // "I have no idea what to do with it" + break; + case 1: + displayMessage(dsAddr_rejectMsg1); // "I can't imagine what I could do with this" + break; + case 2: + displayMessage(dsAddr_rejectMsg2); // "I can't figure out what I should do with this" + break; + case 3: + displayMessage(dsAddr_rejectMsg3); // "I can't find any reason to mess with it" + break; + default: + error("rejectMessage() index out of range"); + break; + } +} + +bool TeenAgentEngine::processCallback(uint16 addr) { + if (addr == 0) + return false; + + debugC(0, kDebugCallbacks, "processCallback(%04x)", addr); + + bool retVal = true; + switch (addr) { + case csAddr_intro: // intro + fnIntro(); + break; + + case 0x3fed: + loadScene(3, Common::Point(305, 104)); + scene->setOrientation(4); + break; + + case 0x4007: + loadScene(5, Common::Point(300, 131)); + scene->setOrientation(3); + break; case 0x4021: - //pulling out mysterious object - if (CHECK_FLAG(0xdbe1, 1)) { + // pulling out mysterious object + if (CHECK_FLAG(dsAddr_cutFenceFlag, 1)) { playActorAnimation(844); playActorAnimation(846); playActorAnimation(845); - displayMessage(0x5696); + displayMessage(dsAddr_pullObjMsg1); // "I can't pull it out" } else { - displayMessage(0x570f); + displayMessage(dsAddr_pullObjMsg2); // "I can't reach it" } - return true; - - case 0x4094: //climbing to the pole near mudpool - if (CHECK_FLAG(0xDBE4, 1)) { - displayMessage(0x57b2); - return true; + break; + + case 0x4048: + displayMessage(dsAddr_dontWantToTouchMsg); // "I don't want to touch it - I might get hurt" + break; + + case 0x404f: + displayMessage(dsAddr_notWantToSleepMsg); // "I don't want to sleep" + break; + + case 0x4056: + // FIXME - This is the bird use callback in the first act at + // the mudpool. Current Code based on behaviour. Need to analyse cseg data. + dialog->popMark(scene, dsAddr_dialogStackMudpoolBird); + break; + + case 0x4060: + loadScene(2, Common::Point(28, 180)); + scene->setOrientation(2); + break; + + case 0x407a: + loadScene(4, Common::Point(297, 128)); + scene->setOrientation(4); + break; + + case 0x4094: // climbing to the pole near mudpool + if (CHECK_FLAG(dsAddr_gotMugOfMudFlag, 1)) { + displayMessage(dsAddr_poleClimbDoneMsg); // "Never Again!" } else { for (byte i = 11; i <= 27; i += 4) playSound(76, i); @@ -196,39 +574,49 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playAnimation(865, 1); playActorAnimation(866); //InventoryObject *obj = inventory->selectedObject(); - //if (obj != NULL && obj->id == 0x55) { + //if (obj != NULL && obj->id == kInvItemMug) { - //implement pause and using real object: - if (inventory->has(0x55)) { + // FIXME: implement pause in mudpool and using of Mug object, as per original interpreter + if (inventory->has(kInvItemMug)) { playSound(5, 4); playSound(5, 19); playSound(64, 11); playActorAnimation(867); - inventory->remove(0x55); - inventory->add(0x56); + inventory->remove(kInvItemMug); + inventory->add(kInvItemMugOfMud); moveTo(86, 195, 1, true); playActorAnimation(868); - SET_FLAG(0xDBE4, 1); + SET_FLAG(dsAddr_gotMugOfMudFlag, 1); } else { - processCallback(0x4173); - Dialog::pop(scene, 0xDB72, 0, 0, 0xd1, 0xd1, 0, 0); + fnPoleClimbFail(); + dialog->popMark(scene, dsAddr_dialogStackFallIntoMudpool); } - return true; } - case 0x4173: - //fail! - moveTo(86, 195, 1, true); - playActorAnimation(868); - return true; + break; + + case csAddr_poleClimbFail: + fnPoleClimbFail(); + break; - case 0x419c: //getting the bird + case 0x4195: + displayMessage(dsAddr_preferWaterMsg); // "I prefer water" + break; + + case 0x419c: // getting the bird setOns(0, 0); playSound(56, 10); playActorAnimation(875); disableObject(6); - inventory->add(0x5c); - return true; + inventory->add(kInvItemBird); + break; + case 0x41c3: + displayMessage(dsAddr_pullObjMsg2); // "I can't reach it" + break; + + case 0x41ca: + rejectMessage(); + break; case 0x41ce: moveTo(197, 159, 4); @@ -236,9 +624,23 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playSound(71, 8); playActorAnimation(833); moveTo(225, 159, 4); - inventory->add(0x4e); + inventory->add(kInvItemDelicatePlant); disableObject(3); - return true; + break; + + case 0x422c: + displayMessage(dsAddr_tooWeakToClimbMsg); // "I'm too weak to climb it" + break; + + case 0x4233: + loadScene(3, Common::Point(216, 199)); + scene->setOrientation(1); + break; + + case 0x424d: + loadScene(5, Common::Point(18, 174)); + scene->setOrientation(2); + break; case 0x4267: hideActor(); @@ -252,92 +654,111 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playSound(5, 26); playActorAnimation(842); wait(100); - //shown in different positions - displayMessage(0x5656, 0xd1, 0x5510); + // shown in different positions + displayMessage(dsAddr_fnMsg2, textColorMark, 16, 68); // "And how am I supposed to get back?" wait(50); - displayMessage(0x567a, 0xd1, 0x555c); + displayMessage(dsAddr_fnMsg3, textColorMark, 92, 68); // "Great" wait(50); - displayMessage(0x5682, 0xd1, 0x553e); + displayMessage(dsAddr_fnMsg4, textColorMark, 62, 68); // "Oh, yeah, right" wait(50); playActorAnimation(843); showActor(); moveTo(223, 149, 0, true); disableObject(7); disableObject(1); - inventory->add(0x51); - displayMessage(0x5646); - return true; + inventory->add(kInvItemShovelAct1); + displayMessage(dsAddr_fnMsg1); // "Piece of cake" + break; + + case 0x433a: + loadScene(10, Common::Point(294, 183)); + scene->setOrientation(4); + break; + + case 0x4354: + loadScene(4, Common::Point(300, 185)); + scene->setOrientation(4); + break; + + case 0x436e: + loadScene(2, Common::Point(219, 199)); + scene->setOrientation(1); + break; case 0x4388: playSound(80, 4); playActorAnimation(961); loadScene(8, 155, 199, 1); - return true; + break; - case 0x43b5: //HQ, first trial - prison + case 0x43b5: // HQ, first trial - prison playSound(70, 6); playActorAnimation(962); loadScene(7, 30, 184, 2); - if (res->dseg.get_byte(0xDBDF) < 2) { + if (res->dseg.get_byte(dsAddr_FirstActTrialState) < 2) { wait(150); moveTo(134, 167, 2); - displayMessage(0x54f7); + displayMessage(dsAddr_firstTrialMsg); // "Sir, I'm Mark. A rookie" setLan(1, 0); playAnimation(812, 0, true); playActorAnimation(811); - Dialog::show(scene, 0x6117, 0, 813, 0xd1, 0xec, 0, 1); + dialog->show(148, scene, 0, 813, textColorMark, textColorCaptain, 0, 1); loadScene(6, 230, 184); playMusic(5); - Dialog::show(scene, 0x626a, 0, 814, 0xd1, 0xec, 0, 1); + dialog->show(149, scene, 0, 814, textColorMark, textColorCaptain, 0, 1); playSound(4, 14); playAnimation(815, 0); setOns(1, 0); - Dialog::showMono(scene, 0x62dc, 0, 0xd1, 0); + dialog->showMono(150, scene, 0, textColorMark, 0); - SET_FLAG(0xDBDF, 1); + SET_FLAG(dsAddr_FirstActTrialState, 1); } - return true; + break; case 0x4482: - if (CHECK_FLAG(0xDBDF, 0)) { + if (CHECK_FLAG(dsAddr_FirstActTrialState, 0)) { playActorAnimation(968); - displayMessage(0x5511); + displayMessage(dsAddr_lockedMsg); // "It's Locked!" } else { playSound(80, 3); playSound(79, 4); playActorAnimation(968); loadScene(6, 280, 186, 4); } - return true; + break; - case 0x44fc: //pull out spring from bed + case 0x44fc: // pull out spring from bed playSound(53, 25); playSound(24, 27); playSound(5, 36); playActorAnimation(839); moveTo(278, scene->getPosition().y, 0, true); - inventory->add(0x50); + inventory->add(kInvItemSpring); disableObject(1); - return true; + break; case 0x44cb: - if (CHECK_FLAG(0xDBE5, 1)) { - displayMessage(0x57c0); + if (CHECK_FLAG(dsAddr_gotRopeAct1Flag, 1)) { + displayMessage(dsAddr_vacMsg); // "What am I? A vacuum cleaner?!" } else { playSound(49, 14); playSound(5, 21); playActorAnimation(869); - inventory->add(0x58); - SET_FLAG(0xDBE5, 1); + inventory->add(kInvItemRopeAct1); + SET_FLAG(dsAddr_gotRopeAct1Flag, 1); } - return true; + break; + + case 0x4532: + displayMessage(dsAddr_springPrickMsg); // "The springs would prick my back" + break; - case 0x4539: //prison cell: use crates - if (CHECK_FLAG(0xdbdd, 2)) { - //finished the meal - trap - displayMessage(0x55c0); + case 0x4539: // prison cell: use crates + if (CHECK_FLAG(dsAddr_JailCableAndBowlState, 2)) { + // finished the meal - trap + displayMessage(dsAddr_mealFinishedMsg); // "Hey! I finished my meal." moveTo(306, 196, 2); wait(50); //playAnimation(825, 1); //very long empty animation. what for? @@ -354,66 +775,65 @@ bool TeenAgentEngine::processCallback(uint16 addr) { loadScene(6, scene->getPosition()); setOns(3, 0x5b); wait(50); - displayMessage(0x55db); - SET_FLAG(0xdbdd, 3); + displayMessage(dsAddr_bowlWeldedMsg); // "Wow. He got welded to the bowl" + SET_FLAG(dsAddr_JailCableAndBowlState, 3); scene->getObject(4)->setName("body"); } else { - if (Dialog::pop(scene, 0xdb5c, 0, 0, 0xd1, 0xd1, 0, 0) != 0x636b) //not 'im getting hungry' - return true; - - wait(100); - playSound(52, 8); - playSound(52, 13); - playAnimation(820, 1); - setOns(3, 0x59); - wait(50); - moveTo(scene->getPosition().x, scene->getPosition().y + 1, 3); - wait(150); - moveTo(scene->getPosition().x, scene->getPosition().y - 1, 2); - wait(100); - displayMessage(0x551f); - enableObject(4); - SET_FLAG(0xdbdc, 1); + if (dialog->pop(scene, dsAddr_dialogStackJailDoorGrates, 0, 0, textColorMark, textColorMark, 0, 0) == 0x636b) { // 'im getting hungry' + wait(100); + playSound(52, 8); + playSound(52, 13); + playAnimation(820, 1); + setOns(3, 0x59); + wait(50); + moveTo(scene->getPosition().x, scene->getPosition().y + 1, 3); + wait(150); + moveTo(scene->getPosition().x, scene->getPosition().y - 1, 2); + wait(100); + displayMessage(dsAddr_ThanksMsg); // "Thanks." + enableObject(4); + SET_FLAG(dsAddr_GotFoodBowlInJailFlag, 1); + } } - return true; + break; case 0x4662: - if (CHECK_FLAG(0xDBDD, 3)) { - if (CHECK_FLAG(0xDBDE, 1)) { - displayMessage(0x5608); + if (CHECK_FLAG(dsAddr_JailCableAndBowlState, 3)) { + if (CHECK_FLAG(dsAddr_GotJailKeyFlag, 1)) { + displayMessage(dsAddr_noPocketMsg); // "I don't want to touch his pockets again." } else { moveTo(280, 179, 2); playSound(49, 7); playSound(5, 17); playActorAnimation(827); - inventory->add(0x4d); - SET_FLAG(0xDBDE, 1); + inventory->add(kInvItemJailKey); + SET_FLAG(dsAddr_GotJailKeyFlag, 1); } } else - displayMessage(0x5905); - return true; + displayMessage(dsAddr_foodAliveMsg); // "No, thanks. This food seems still alive" + break; - case 0x46af: //prison cell: use live cable - if (CHECK_FLAG(0xdbdc, 1)) { - displayMessage(0x555d); + case 0x46af: // prison cell: use live cable + if (CHECK_FLAG(dsAddr_GotFoodBowlInJailFlag, 1)) { + displayMessage(dsAddr_ideaMsg); // "That gives me an idea" setOns(2, 0); playActorAnimation(821); setOns(2, 0x5a); setOns(3, 0); playSound(22, 2); playActorAnimation(822); - displayMessage(0x5577); + displayMessage(dsAddr_checkWorksMsg); // "Now I got to check if it works" disableObject(5); - SET_FLAG(0xdbdd, 1); + SET_FLAG(dsAddr_JailCableAndBowlState, 1); } else - displayMessage(0x5528); - return true; + displayMessage(dsAddr_unkUsageMsg); // "I don't have any idea what to do with it right now" + break; - case 0x4705: //prison: getting lamp bulb + case 0x4705: // prison: getting lamp bulb wait(50); moveTo(144, 185, 4); playSound(56, 15); - setOns(0, 86); //hiding lamp + setOns(0, 86); // hiding lamp playActorAnimation(816, true); playAnimation(817, 0, true); waitAnimation(); @@ -430,69 +850,102 @@ bool TeenAgentEngine::processCallback(uint16 addr) { disableObject(6); enableObject(5); - inventory->add(0x4c); - return true; + inventory->add(kInvItemBulb); + break; - case 0x4794: //prison cell door - if (res->dseg.get_byte(0xDBDF) >= 2) { + case 0x4794: // prison cell door + if (res->dseg.get_byte(dsAddr_FirstActTrialState) >= 2) { loadScene(5, 287, 143); } else { - displayMessage(0x592f); + displayMessage(dsAddr_doorClosedMsg); // "The door is closed. What a surprise." } - return true; + break; - case 0x47bc: //prison: examining trash can + case 0x47bc: // prison: examining trash can playSound(79, 5); playSound(1, 14); playActorAnimation(966); - displayMessage(0x5955); - return true; + displayMessage(dsAddr_emptyMsg); // "It's Empty" + break; - case 0x47db: //prison: use switch - if (CHECK_FLAG(0xDBDF, 1)) { + case 0x47db: // prison: use switch + if (CHECK_FLAG(dsAddr_FirstActTrialState, 1)) { playSound(71, 4); playActorAnimation(823); - if (CHECK_FLAG(0xDBDD, 0)) { - displayMessage(0x4d80); + if (CHECK_FLAG(dsAddr_JailCableAndBowlState, 0)) { + displayMessage(dsAddr_NotHappenMsg); // "Nothing happened" } else { playSound(74, 1); playAnimation(824, 1); - if (CHECK_FLAG(0xDBDD, 1)) { + if (CHECK_FLAG(dsAddr_JailCableAndBowlState, 1)) { wait(100); - displayMessage(0x559a); - SET_FLAG(0xDBDD, 2); + displayMessage(dsAddr_timeToCallMsg); // "I think it is time to call captain" + SET_FLAG(dsAddr_JailCableAndBowlState, 2); } } } else { - displayMessage(0x52f6); + displayMessage(dsAddr_nahMsg); // "Nah" } - return true; + break; + + case 0x4836: + rejectMessage(); + break; case 0x4871: playActorAnimation(965); - displayMessage(0x5511); - return true; + displayMessage(dsAddr_lockedMsg); // "It's Locked!" + break; + + case 0x487e: + displayMessage(dsAddr_geographyClassMsg); // "I should have paid more attention in geography classes." + break; + + case 0x4885: + displayMessage(dsAddr_dontNeedMessMsg); // "I don't need this mess" + break; + + case 0x488c: + displayMessage(dsAddr_seenSofterRocksMsg); // "Thanks, but I've seen softer rocks" + break; - case 0x4893: //taking pills - if (CHECK_FLAG(0xDBE6, 1)) { - SET_FLAG(0xDBE6, 2); + case 0x4893: // taking pills + if (CHECK_FLAG(dsAddr_captainDrawerState, 1)) { + SET_FLAG(dsAddr_captainDrawerState, 2); setOns(1, 0x67); playSound(5, 9); playActorAnimation(872); - inventory->add(0x5a); + inventory->add(kInvItemMedicine); disableObject(7); } else { playActorAnimation(964); - displayMessage(0x5511); + displayMessage(dsAddr_lockedMsg); // "It's Locked!" } - return true; + break; + + case 0x48d4: + displayMessage(dsAddr_tooBluntMsg); // "They are too blunt to be of any use" + break; + + case 0x48db: + displayMessage(dsAddr_uselessModelsMsg); // "What's the use of the models?" + break; + + case 0x48e2: + case 0x48e6: + rejectMessage(); + break; + + case 0x4911: + displayMessage(dsAddr_barmanWillNoticeMsg); // "The barman will surely notice its disappearing" + break; - case 0x4918: //talking with barmen - if (CHECK_FLAG(0xDBE7, 1)) { + case 0x4918: // talking with barmen + if (CHECK_FLAG(dsAddr_birdOnBarRadioAntennaFlag, 1)) { moveTo(140, 152, 1); - if (CHECK_FLAG(0xDBE8, 1)) { - Dialog::showMono(scene, 0x6f20, 0, 0xd1, 0); //aren't you thirsty? - displayMessage(0x5883, 0xef, 21472); + if (CHECK_FLAG(dsAddr_swappedBarmanMugFlag, 1)) { + dialog->showMono(177, scene, 0, textColorMark, 0); + displayMessage(dsAddr_yeahRightMsg, textColorBarman, 32, 67); // "Yeah right!" //reloadLan(); setLan(1, 0); playAnimation(882, 0); @@ -504,86 +957,145 @@ bool TeenAgentEngine::processCallback(uint16 addr) { shakeScreen(); disableObject(1); disableObject(2); - SET_FLAG(0xDBE9, 1); + SET_FLAG(dsAddr_barmanPassedOutFlag, 1); } else - displayMessage(0x5855); + displayMessage(dsAddr_talkNotNowMsg); // "I've got no reason to talk to him right now." } else { - if (CHECK_FLAG(0xDBDF, 3)) { - if (CHECK_FLAG(0xDBE3, 1)) { - Dialog::show(scene, 0x6BD6, 0, 857, 0xd1, 0xef, 0, 1); + if (CHECK_FLAG(dsAddr_FirstActTrialState, 3)) { + if (CHECK_FLAG(dsAddr_spokeToBarmanAboutThirdTrialFlag, 1)) { + dialog->show(168, scene, 0, 857, textColorMark, textColorBarman, 0, 1); } else { - Dialog::show(scene, 0x69B5, 0, 857, 0xd1, 0xef, 0, 1); //taking mug + dialog->show(166, scene, 0, 857, textColorMark, textColorBarman, 0, 1); // taking mug playActorAnimation(859, true); playAnimation(858, 0, true); waitAnimation(); playSound(75, 6); playActorAnimation(860); - Dialog::show(scene, 0x69C2, 0, 857, 0xd1, 0xef, 0, 1); - inventory->add(0x55); - SET_FLAG(0xDBE3, 1); - SET_FLAG(0xDBF0, 0); + dialog->show(167, scene, 0, 857, textColorMark, textColorBarman, 0, 1); + inventory->add(kInvItemMug); + SET_FLAG(dsAddr_spokeToBarmanAboutThirdTrialFlag, 1); + SET_FLAG(dsAddr_gotPasswordNeedSpeakBarmanFlag, 0); } } else { - Dialog::pop(scene, 0xDB68, 0, 857, 0xd1, 0xef, 0, 1); + dialog->pop(scene, dsAddr_dialogStackBarman, 0, 857, textColorMark, textColorBarman, 0, 1); } } - return true; + break; - case 0x4f14: //use the hollow - displayMessage(CHECK_FLAG(0xDBA1, 1) ? 0x370f : 0x36c2); - return true; + case 0x4d7d: + case 0x4d81: + rejectMessage(); + break; + + case 0x4d89: + displayMessage(dsAddr_getRidOfGuardFirstMsg); // "If I want to get inside I must get rid of this guard first..." + break; + + case 0x4d90: + rejectMessage(); + break; + + case 0x4e47: + loadScene(13, Common::Point(9, 172)); + scene->setOrientation(2); + break; + + case 0x4e85: + loadScene(15, Common::Point(291, 162)); + scene->setOrientation(4); + break; + + case 0x4e9f: + loadScene(12, Common::Point(310, 152)); + scene->setOrientation(4); + break; + + case 0x4f14: // use the hollow + if (CHECK_FLAG(dsAddr_mansionTreeHollowEmptyFlag, 1)) + displayMessage(dsAddr_totalEmptyMsg); // "I can see it's totally empty" + else + displayMessage(dsAddr_noHandsMsg); // "I'd better not put my hands in there..." + break; case 0x4a64: - if (CHECK_FLAG(0xDBF0, 1)) { - displayMessage(0x5e25); - } else { + if (CHECK_FLAG(dsAddr_gotPasswordNeedSpeakBarmanFlag, 1)) + displayMessage(dsAddr_firstBusinessMsg); // "First I've got some business to take care of" + else loadScene(5, 35, 162); - } - return true; + break; case 0x4bf5: playActorAnimation(959); loadScene(8, 40, 152, 3); - return true; + break; + + case 0x4c18: + rejectMessage(); + break; + + case 0x4c29: + displayMessage(dsAddr_tooManyToSearchMsg); // "There are too many of them to search" + break; + + case 0x4c30: + case 0x4c37: + displayMessage(dsAddr_captainWouldNotFitMsg); // "Captain surely wouldn't fit them. I must look elsewhere" + break; case 0x483a: - Dialog::pop(scene, 0xdb82, 0, 0, 0xd1, 0xd1, 0, 0); - return true; + dialog->popMark(scene, dsAddr_dialogStackInterrogateCaptain); + break; case 0x4844: playSound(80, 4); playActorAnimation(963); loadScene(5, 166, 158); - return true; + break; case 0x48ea: setOns(0, 0); playSound(5, 9); playActorAnimation(836); - inventory->add(0x4f); + inventory->add(kInvItemSwissArmyKnife); disableObject(12); - return true; + break; case 0x4a8c: - if (CHECK_FLAG(0xDBE9, 1)) { + if (CHECK_FLAG(dsAddr_barmanPassedOutFlag, 1)) { playSound(89, 5); playActorAnimation(958); loadScene(9, 240, 182, 4); - } else if (CHECK_FLAG(0xDBE7, 1)) { - displayMessage(0x5894); + } else if (CHECK_FLAG(dsAddr_birdOnBarRadioAntennaFlag, 1)) { + displayMessage(dsAddr_barmanTooCloseMsg); // "The barman is too close" } else { - Dialog::pop(scene, 0xDB8A, 0, 857, 0xd1, 0xef, 0, 1); + dialog->pop(scene, dsAddr_dialogStackBarCellarDoor, 0, 857, textColorMark, textColorBarman, 0, 1); } - return true; + break; - case 0x4af4: //taking the crumbs + case 0x4aed: + displayMessage(dsAddr_tooBigMsg); // "It's too big and I doubt if I'll ever need it" + break; + + case 0x4af4: // taking the crumbs setOns(0, 0); playSound(49, 6); playSound(5, 13); playActorAnimation(861); - inventory->add(0x57); + inventory->add(kInvItemCrumbs); disableObject(6); - return true; + break; + + case 0x4b23: + rejectMessage(); + break; + + case 0x4b27: + displayMessage(dsAddr_tooMuchToDrinkMsg); // "It'd take too much time to drink it..." + break; + + case 0x4b2e: + displayMessage(dsAddr_notThiefMsg); // "I'm not a thief. And it's empty, by the way." + break; case 0x4b35: playSound(15, 7); @@ -591,140 +1103,149 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playSound(55, 1); playSound(24, 12); playAnimation(885, 0); - Dialog::show(scene, 0x67e5, 886, 0, 0xd0, 0xd1, 1, 0); + dialog->show(164, scene, 886, 0, textColorJohnNoty, textColorMark, 1, 0); playMusic(3); loadScene(40, 198, 186, 1); - Dialog::show(scene, 0x7f20, 0, 920, 0xd1, 0xe7, 0, 1); + dialog->show(202, scene, 0, 920, textColorMark, textColorRGBBoss, 0, 1); inventory->clear(); - inventory->add(0x1d); - displayCredits(0xe45c); + inventory->add(kInvItemSuperGlue); + displayCredits(dsAddr_credits5); loadScene(1, 198, 186); hideActor(); playActorAnimation(956); - Dialog::showMono(scene, 0x8bc4, 957, 0xd1, 1); + dialog->showMono(212, scene, 957, textColorMark, 1); waitAnimation(); loadScene(15, 157, 199, 1); playMusic(6); - return true; + break; - case 0x4c3e: //get the grenade + case 0x4c3e: // get the grenade playSound(32, 24); playActorAnimation(862); reloadLan(); playAnimation(863, 1); - inventory->add(0x54); + inventory->add(kInvItemGrenade); disableObject(1); - SET_FLAG(0xDBE2, 2); - return true; + SET_FLAG(dsAddr_act1GuardState, 2); + break; case 0x4c70: - if (CHECK_FLAG(0xDBE2, 0)) { - if (CHECK_FLAG(0xDBDA, 1)) { //papers are shown - Dialog::pop(scene, 0xDB4C, 0, 809, 0xd1, 0xd0, 0, 1); + if (CHECK_FLAG(dsAddr_act1GuardState, 0)) { + if (CHECK_FLAG(dsAddr_ShownPassToGuardFlag, 1)) { // papers are shown + dialog->pop(scene, dsAddr_dialogStackCampGuardReadingNews, 0, 809, textColorMark, textColorCampGuard, 0, 1); } else { - Dialog::pop(scene, 0xDB40, 0, 809, 0xd1, 0xd0, 0, 1); + dialog->pop(scene, dsAddr_dialogStackCampGuardWantsDocuments, 0, 809, textColorMark, textColorCampGuard, 0, 1); } } else { - displayMessage(0x5722); + displayMessage(dsAddr_helloQMsg); // "Hello?" wait(100); - displayMessage(0x572a); + displayMessage(dsAddr_totallyAddictedMsg); // "He's totally addicted" } - return true; + break; case 0x4c1c: playActorAnimation(960); - displayMessage(0x5511); - return true; + displayMessage(dsAddr_lockedMsg); // "It's Locked!" + break; + + case 0x4ca5: + displayMessage(dsAddr_chickenNeverMsg); // "Chickening? Me? Never!" + break; case 0x4cac: - if (CHECK_FLAG(0xdbda, 1)) { //papers are shown + if (CHECK_FLAG(dsAddr_ShownPassToGuardFlag, 1)) { // papers are shown loadScene(5, 124, 199); } else { - Dialog::show(scene, 0x5FE9, 0, 809, 0xd1, 0xd0, 0, 1); + dialog->show(144, scene, 0, 809, textColorMark, textColorCampGuard, 0, 1); moveTo(269, 175, 4); - Dialog::pop(scene, 0xDB56, 0, 809, 0xd1, 0xd0, 0, 1); + dialog->pop(scene, dsAddr_dialogStackCampGuardShowPass, 0, 809, textColorMark, textColorCampGuard, 0, 1); } - return true; - - case 0x4cf1: { //talking with mansion guard - SET_FLAG(0xda96, 1); - if (Dialog::pop(scene, 0xdaa6, 0, 529, 0xd1, 0xd9, 0, 1) != 0x1b4) - return true; + break; - Common::Point p = scene->getPosition(); - moveTo(189, 159, 0); - //waitLanAnimationFrame(1, 1); + case 0x4cf1: // talking with mansion guard + SET_FLAG(dsAddr_spokenWithMansionGuardFlag, 1); + if (dialog->pop(scene, dsAddr_dialogStackPleadingToMansionGuard, 0, 529, textColorMark, textColorMansionGuard, 0, 1) == 0x01b4) { // 2nd try + Common::Point p = scene->getPosition(); + moveTo(189, 159, 0); + //waitLanAnimationFrame(1, 1); - playSound(5, 2); - playSound(5, 19); - playActorAnimation(550, true); - playAnimation(551, 0, true); - waitAnimation(); + playSound(5, 2); + playSound(5, 19); + playActorAnimation(550, true); + playAnimation(551, 0, true); + waitAnimation(); - moveTo(p, 2); - inventory->add(0x13); - Dialog::pop(scene, 0xdaa6, 0, 529, 0xd1, 0xd9, 0, 1); - } - return true; + moveTo(p, 2); + inventory->add(kInvItemChocCandy); + dialog->pop(scene, dsAddr_dialogStackPleadingToMansionGuard, 0, 529, textColorMark, textColorMansionGuard, 0, 1); + } + break; - case 0x4d94: //talking with fatso - Dialog::show(scene, 0x33bd, 0, 666, 0xd1, 0xd0, 0, 2); - displayAsyncMessage(0x49ae, /*25060*/ 35000, 1, 10, 0xd0); + case 0x4d94: // talking with fatso + dialog->show(87, scene, 0, 666, textColorMark, textColorJohnNoty, 0, 2); + displayAsyncMessage(dsAddr_BribeMsg, 120, 109, 1, 10, textColorJohnNoty); // FIXME: Original (x,y) was (100, 78), rather than (120, 109)? playSound(5, 3); playAnimation(667, 1); playAnimation(668, 1); setOns(2, 50); - Dialog::show(scene, 0x36c7, 0, 666, 0xd1, 0xd0, 0, 2); + dialog->show(88, scene, 0, 666, textColorMark, textColorJohnNoty, 0, 2); setOns(3, 0); - setFlag(0xDBEC, 0); + setFlag(dsAddr_johnNotyOutsideMansionDoorFlag, 0); reloadLan(); playSound(82, 19); playAnimation(669, 1); - Dialog::showMark(scene, 0x3779); + dialog->showMark(89, scene); enableObject(15); disableObject(8); - return true; + break; case 0x4e61: loadScene(14, 280, 198); - return true; + break; case 0x4ee5: setOns(2, 0); playSound(5, 12); playActorAnimation(676); - displayMessage(0x4ab0); + displayMessage(dsAddr_WimpMsg); // "I'm a pathetic little wimp" disableObject(15); - inventory->add(51); - return true; + inventory->add(kInvItemBanknote); + break; case 0x4d56: - inventory->add(16); + inventory->add(kInvItemWhisky); disableObject(2); setOns(0, 0); playSound(5, 12); playActorAnimation(547); - return true; + break; + case 0x4d85: + rejectMessage(); + break; - case 0x4eb9://Pick up wrapper + case 0x4eb9: // Pick up wrapper playSound(5, 12); playSound(5, 18); - inventory->add(0x12); + inventory->add(kInvItemWrapper); setOns(1, 0); playActorAnimation(549); disableObject(13); - return true; + break; + + case 0x4ee1: + rejectMessage(); + break; case 0x4f25: playActorAnimation(967); - displayMessage(0x3542); - return true; + displayMessage(dsAddr_tooHardWoodMsg); // "This wood is too hard to break" + break; - case 0x4f32: //use tree near the mansion - if (CHECK_FLAG(0xDBA1, 1)) { - if (CHECK_FLAG(0xDBA2, 1)) { - displayMessage(0x3766); + case 0x4f32: // use tree near the mansion + if (CHECK_FLAG(dsAddr_mansionTreeHollowEmptyFlag, 1)) { + if (CHECK_FLAG(dsAddr_climbedMansionTreeAlreadyFlag, 1)) { + displayMessage(dsAddr_noChanceMsg); // "I won't take my chances a second time" } else { playSound(26, 13); playSound(26, 15); @@ -739,95 +1260,126 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playSound(60, 16); playActorAnimation(591); wait(50); - displayMessage(0x372e); - SET_FLAG(0xDBA2, 1); - processCallback(0x9d45); + displayMessage(dsAddr_oneSmallStepMsg); // "One small step for man, one big pain in the head" + SET_FLAG(dsAddr_climbedMansionTreeAlreadyFlag, 1); + fnMansionIntrusionAttempt(); } } else { playActorAnimation(49); playSound(56, 8); playSound(56, 12); playSound(49, 10); - displayAsyncMessage(0x4652, 31579, 16, 24); + displayAsyncMessage(dsAddr_laughterMsg, 219, 98, 16, 24); // "(laughter)" playActorAnimation(587); moveRel(0, 0, 2); wait(100); - displayMessage(0x3668); + displayMessage(dsAddr_tickledMsg); // "Something tickled me!" } - return true; + break; - case 0x500d: //picking up wild plant - if (CHECK_FLAG(0xDB9E, 1)) { - displayMessage(0x35E8); //there are no more + case 0x500d: // picking up wild plant + if (CHECK_FLAG(dsAddr_gotPotatoAlreadyFlag, 1)) { + displayMessage(dsAddr_noPotatoMsg); // "There are no more potatoes" } else { - SET_FLAG(0xDB9E, 1); + SET_FLAG(dsAddr_gotPotatoAlreadyFlag, 1); setOns(2, 0); playSound(21, 9); playSound(34, 21); playSound(26, 30); playActorAnimation(552); setOns(2, 0x12); - inventory->add(0x14); + inventory->add(kInvItemPotato); } - return true; + break; + + case 0x505f: + displayMessage(dsAddr_wallTooSmoothMsg); // "The wall surface is too smooth to climb" + break; + + case 0x5066: + loadScene(11, Common::Point(183, 109)); + scene->setOrientation(3); + break; + + case 0x5080: + loadScene(13, Common::Point(290, 181)); + scene->setOrientation(4); + break; + + case 0x50f6: + displayMessage(dsAddr_tooMuchResinToClimbMsg); // "I could climb it if there wasn't so much resin" + break; + + case 0x50fd: + displayMessage(dsAddr_onlyGreenRectMsg); // "The only green stuff that I like is that rectangular piece of paper with..." + break; case 0x5104: loadScene(11, 319, 198, 4); - if (CHECK_FLAG(0xDB9C, 1)) - return true; - - //guard's drinking - SET_FLAG(0, 3); - setTimerCallback(0x516d, 40); - playAnimation(544, 0, true, true); //ignore busy flag for this animation - return true; + if (!CHECK_FLAG(dsAddr_scaredGuardAlreadyFlag, 1)) { + // guard is drinking + SET_FLAG(dsAddr_timedCallbackState, 3); + setTimerCallback(csAddr_guardScareTimeout, 40); + playAnimation(544, 0, true, true); // ignore busy flag for this animation + } + break; - case 0x516d: //too late to scare guard, resetting - SET_FLAG(0, 0); - return true; + case csAddr_guardScareTimeout: // too late to scare guard, resetting + SET_FLAG(dsAddr_timedCallbackState, 0); + break; - case 0x5189: //guard's drinking, boo! - SET_FLAG(0, 0); - setTimerCallback(0, 0); - scene->getAnimation(0)->free(); - SET_FLAG(0xDB9C, 1); + case csAddr_guardDrinking: + fnGuardDrinking(); + break; - displayAsyncMessage(0x3563, 320 * 130 + 300, 1, 5); - setOns(0, 16); - enableObject(2); + case 0x51c8: + displayMessage(dsAddr_wallTooSmoothMsg); // "The wall surface is too smooth to climb" + break; - playSound(17, 5); - playAnimation(545, 0); + case 0x51cf: + loadScene(12, Common::Point(15, 189)); + scene->setOrientation(2); + break; - Dialog::show(scene, 0x0917, 0, 546, 0xd1, 0xd9, 0, 1); - SET_FLAG(0xDA96, 1); - SET_FLAG(0xDA97, 0); - return true; + case 0x51e9: + displayMessage(dsAddr_dontWannaTouchHedgehogMsg); // "I don't wanna touch it. Its spines could hurt my delicate hands" + break; case 0x51f0: setOns(0, 0); playSound(5, 11); playActorAnimation(637); disableObject(7); - inventory->add(49); - return true; + inventory->add(kInvItemRock); + break; case 0x5217: - displayMessage(CHECK_FLAG(0xDB9F, 1) ? 0x402e : 0x34e1); - return true; + if (CHECK_FLAG(dsAddr_beesGoneFlag, 1)) + displayMessage(dsAddr_notHungryMsg); // "Thanks, I'm not hungry" + else + displayMessage(dsAddr_avoidBeesMsg); // "I'm going to stay at least five meters away from these bees!" + break; + + case 0x522c: + displayMessage(dsAddr_avoidBeesMsg); // "I'm going to stay at least five meters away from these bees!" + break; + + case 0x5233: + rejectMessage(); + break; case 0x5237: - if (!CHECK_FLAG(0xDB9F, 1)) { - displayMessage(0x34e1); - } else if (CHECK_FLAG(0xDBA0, 1)) - displayMessage(0x3E31); + if (!CHECK_FLAG(dsAddr_beesGoneFlag, 1)) { + displayMessage(dsAddr_avoidBeesMsg); // "I'm going to stay at least five meters away from these bees!" + } else if (CHECK_FLAG(dsAddr_mansionTunnelDoneFlag, 1)) + displayMessage(dsAddr_roadNowhereMsg); // "Nah. It's a road to nowhere" else { moveTo(173, 138, 2); playSound(28, 5); playActorAnimation(583); playActorAnimation(584); - loadScene(0, 0, 0, 0); //clear background + loadScene(0, 0, 0, 0); // clear background playSound(72, 18); playSound(73, 39); @@ -837,82 +1389,257 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playSound(28, 2); playActorAnimation(586); moveTo(138, 163, 3); - displayMessage(0x3650); - SET_FLAG(0xDBA0, 1); - processCallback(0x9d45); //another mansion try + displayMessage(dsAddr_lifeBrutalMsg); // "Life is really brutal" + SET_FLAG(dsAddr_mansionTunnelDoneFlag, 1); + fnMansionIntrusionAttempt(); } - return true; - - case 0x55a8: { - uint16 d = Dialog::pop(scene, 0xdb08, 0, 0, 0xd1, 0xd1, 0, 0); - if (d == 0x2c5d) { - waitLanAnimationFrame(1, 0x23); - setOns(0, 0); - playSound(52, 9); - playSound(52, 11); - playSound(52, 13); - playSound(53, 32); - playAnimation(570, 0); - wait(50); - displayMessage(0x551f); - disableObject(5); - SET_FLAG(0xDBB0, 1); - } else if (d != 0x2c9b) { - waitLanAnimationFrame(1, 0x23); - playSound(52, 9); - playSound(52, 11); - playSound(52, 13); - playAnimation(569, 0); + break; + + case 0x5320: + loadScene(11, Common::Point(30, 124)); + scene->setOrientation(2); + break; + + case 0x533a: + displayMessage(dsAddr_noLongHandsMsg); // "I really don't have such long hands" + break; + + case 0x5341: + displayMessage(dsAddr_tooFarToSwimMsg); // "It's too far to swim there" + break; + + case 0x5403: + displayMessage(dsAddr_noBucketMsg); // "It's not a barrel-organ. And there's no bucket." + break; + + case 0x540a: + loadScene(20, Common::Point(10, 185)); + scene->setOrientation(2); + break; + + case 0x5424: + loadScene(11, Common::Point(30, 170)); + scene->setOrientation(2); + break; + + case 0x543e: + loadScene(18, Common::Point(224, 199)); + scene->setOrientation(4); + break; + + case 0x5547: + loadScene(15, Common::Point(15, 172)); + scene->setOrientation(2); + break; + + case 0x55a8: + { + uint16 d = dialog->popMark(scene, dsAddr_dialogStackSquirrel); + if (d == 0x2c5d) { // 4th try - Throw Nut + waitLanAnimationFrame(1, 0x23); + setOns(0, 0); + playSound(52, 9); + playSound(52, 11); + playSound(52, 13); + playSound(53, 32); + playAnimation(570, 0); + wait(50); + displayMessage(dsAddr_ThanksMsg); // "Thanks." + disableObject(5); + SET_FLAG(dsAddr_squirrelNutState, 1); + } else if (d != 0x2c9b) { // 5th (last) try + waitLanAnimationFrame(1, 0x23); + playSound(52, 9); + playSound(52, 11); + playSound(52, 13); + playAnimation(569, 0); + } } - } - return true; + break; case 0x5663: - displayMessage(CHECK_FLAG(0xDBB0, 1) ? 0x41b1 : 0x417e); - return true; + if (CHECK_FLAG(dsAddr_squirrelNutState, 1)) + displayMessage(dsAddr_findNutMsg); // "I won't find the nut just like that. The grass is too dense" + else + displayMessage(dsAddr_hmmGrassMsg); // "Hmmm. Grass..." + break; + + case 0x5674: + loadScene(18, Common::Point(94, 115)); + scene->setOrientation(3); + break; + + case 0x568e: + displayMessage(dsAddr_notHornyMsg); // "I'm not horny" + break; + + case 0x5695: + displayMessage(dsAddr_dontNeedToOpenMsg); // "I don't need to open it" + break; case 0x569c: playSound(67, 5); playActorAnimation(983); - displayMessage(0x5955); - return true; + displayMessage(dsAddr_emptyMsg); // "It's Empty" + break; + + case 0x56b3: + rejectMessage(); + break; case 0x56b7: playSound(66, 5); playSound(67, 11); playActorAnimation(984); - displayMessage(0x5955); - return true; + displayMessage(dsAddr_emptyMsg); // "It's Empty" + break; + + case 0x56d6: + displayMessage(dsAddr_CantJumpMsg); // "No way I can jump so high, cause, err, white men can't jump" + break; + + case 0x56dd: + displayMessage(dsAddr_dontNeedItMsg); // "I don't need it" + break; + + case 0x56e4: + displayMessage(dsAddr_notSantaClausMsg); // "I'm not Santa Claus" + break; + + case 0x56eb: + displayMessage(dsAddr_noPlasticImitationsMsg); // "I don't need plastic imitations" + break; + + case 0x56f2: + rejectMessage(); + break; + + case 0x5721: + displayMessage(dsAddr_dontNeedItMsg); // "I don't need it" + break; case 0x5728: - inventory->add(0x0d); + inventory->add(kInvItemChainsaw); disableObject(14); setOns(0, 0); playSound(5, 10); playActorAnimation(566); - return true; + break; + + case 0x574f: + displayMessage(dsAddr_tooFragileMsg); // "It's too fragile to carry around" + break; case 0x5793: - if (!CHECK_FLAG(0xDB94, 1)) { - displayMessage(0x3e63); - } else if (CHECK_FLAG(0xDB95, 1)) { - displayMessage(0x3e75); + if (!CHECK_FLAG(dsAddr_alreadyPulledTrunkReleaseLeverFlag, 1)) { + displayMessage(dsAddr_shutTightMsg); // "It's shut tight" + } else if (CHECK_FLAG(dsAddr_carTrunkEmptyFlag, 1)) { + displayMessage(dsAddr_bootEmptyMsg); // "There's nothing else in the boot" } else { - SET_FLAG(0xDB95, 1); + SET_FLAG(dsAddr_carTrunkEmptyFlag, 1); moveTo(188, 179, 0); playSound(7, 16); playActorAnimation(519); wait(150); moveTo(168, 179, 2); - inventory->add(3); + inventory->add(kInvItemToolboxFull); } - return true; + break; + + case 0x57fa: + displayMessage(dsAddr_dontNeedItMsg); // "I don't need it" + break; + + case 0x5801: + rejectMessage(); + break; + + case 0x583f: + case 0x5846: + displayMessage(dsAddr_dontNeedToOpenMsg); + break; + + case 0x584d: + displayMessage(dsAddr_pullObjMsg2); + break; + + case 0x5854: + loadScene(15, Common::Point(157, 199)); + scene->setOrientation(1); + break; + + case 0x586e: + loadScene(21, Common::Point(24, 187)); + scene->setOrientation(2); + break; + + case 0x5888: + loadScene(27, Common::Point(108, 199)); + scene->setOrientation(2); + break; + + case 0x5903: + displayMessage(dsAddr_keepItOpenMsg); // "I'd like to keep it open" + break; + + case 0x590a: + loadScene(20, Common::Point(304, 190)); + scene->setOrientation(4); + break; + + case 0x5924: + loadScene(25, Common::Point(298, 146)); + scene->setOrientation(4); + break; + + case 0x5978: + displayMessage(dsAddr_notTakingSocksMsg); // "I really don't want to walk around with someone else's socks" + break; + + case 0x597f: + case 0x5986: + case 0x598d: + displayMessage(dsAddr_dontNeedToOpenMsg); // "I don't need to open it" + break; + + case 0x5b44: + // FIXME - This is the doorbell use callback on House #2 + // i.e. Granny and Anne's House. Need to analyse cseg data properly. + // Current code inferred from behaviour. + // FIXME - Add animation call for Ego pushing doorbell. + displayMessage(dsAddr_ItsOpenMsg); + break; + + case 0x5c72: + displayMessage(dsAddr_notTiredMsg); // "Thanks, I'm not tired" + break; + + case 0x5c79: + displayMessage(dsAddr_dontNeedToOpenMsg); // "I don't need to open it" + break; + + case 0x5c80: + rejectMessage(); + break; + + case 0x5cdb: + case 0x5ce2: + displayMessage(dsAddr_dontNeedItMsg); // "I don't need it" + break; + + case 0x5ce9: + displayMessage(dsAddr_tooBigMsg); // "It's too big and I doubt if I'll ever need it" + break; + + case 0x5d1d: + displayMessage(dsAddr_CantJumpMsg); // "No way I can jump so high, cause, err, white men can't jump" + break; case 0x5d88: - if (CHECK_FLAG(0xDBA5, 1)) { //dry laundry - SET_FLAG(0xDBA5, 2); - Dialog::show(scene, 0x1F4F, 0, 523, 0xd1, 0xe5, 0, 1); - //waitLanAnimationFrame(1, 1); //another long waiting + if (CHECK_FLAG(dsAddr_laundryState, 1)) { // dry laundry + SET_FLAG(dsAddr_laundryState, 2); + dialog->show(46, scene, 0, 523, textColorMark, textColorOldLady, 0, 1); + //waitLanAnimationFrame(1, 1); // another long waiting playAnimation(604, 0); loadScene(21, scene->getPosition()); @@ -924,184 +1651,393 @@ bool TeenAgentEngine::processCallback(uint16 addr) { setOns(0, 33); loadScene(23, scene->getPosition()); playAnimation(605, 0); - Dialog::show(scene, 0x2002, 0, 523, 0xd1, 0xe5, 0, 1); + dialog->show(47, scene, 0, 523, textColorMark, textColorOldLady, 0, 1); } else { - uint16 d = Dialog::pop(scene, 0xdada, 0, 523, 0xd1, 0xe5, 0, 1); - if (d == 0x1913) { + uint16 d = dialog->pop(scene, dsAddr_dialogStackAskOldLadyOK, 0, 523, textColorMark, textColorOldLady, 0, 1); + if (d == 0x1913) { // 3rd time wait(100); moveRel(0, 0, 3); wait(50); - displayMessage(0x34d5); //I give up + displayMessage(dsAddr_giveUpMsg); // "I give up" wait(50); } } - return true; + break; + + case 0x5f9a: + case 0x5fa1: + displayMessage(dsAddr_dontNeedToOpenMsg); // "I don't need to open it" + break; - case 0x5ff3: //get duster - if (CHECK_FLAG(0xDB9A, 0)) { - Dialog::pop(scene, 0xdaf6, 0, 523, 0xd1, 0xe5, 0, 1); + case 0x5fa8: + displayMessage(dsAddr_CantJumpMsg); // "No way I can jump so high, cause, err, white men can't jump" + break; + + case 0x5faf: + displayMessage(dsAddr_noSecretPassageMsg); // "I don't think there's any secret passage inside" + break; + + case 0x5fe5: + displayMessage(dsAddr_jugMeMsg); // "They can jug me if I steal this" + break; + + case 0x5fec: + displayMessage(dsAddr_leaveFlowersAloneMsg); // "I'd better leave it. Women are really oversensitive about flowers." + break; + + case 0x5ff3: // get duster + if (CHECK_FLAG(dsAddr_givenFlowerToOldLadyAlreadyFlag, 0)) { + dialog->pop(scene, dsAddr_dialogStackBorrowDusterFromOldLady, 0, 523, textColorMark, textColorOldLady, 0, 1); } else { - Dialog::show(scene, 0x1e1e, 0, 523, 0xd1, 0xe5, 0, 1); + dialog->show(43, scene, 0, 523, textColorMark, textColorOldLady, 0, 1); wait(50); - inventory->add(12); + inventory->add(kInvItemFeatherDusterClean); disableObject(12); setOns(0, 0); playSound(5, 6); playActorAnimation(541); } - return true; + break; + + case 0x603a: + rejectMessage(); + break; case 0x603e: - if (CHECK_FLAG(0xDBB3, 1)) { - displayMessage(0x44a7); + if (CHECK_FLAG(dsAddr_spokenToMirrorFlag, 1)) { + displayMessage(dsAddr_busyThinkingMsg); // "I'd better not interrupt it's thought process" } else { - displayMessage(0x4412); + displayMessage(dsAddr_mirrorMirrorMsg); // "Mirror, Mirror on the wall...." wait(150); - displayMessage(0x444f); + displayMessage(dsAddr_thinkTooLongMsg); // "Hey, don't think too long" wait(150); - displayMessage(0x446b); + displayMessage(dsAddr_HintMaleMsg); // "A hint: Someone in this room, a male" wait(150); - displayMessage(0x4492); + displayMessage(dsAddr_okWaitMsg); // "OK, take your time" wait(150); - SET_FLAG(0xDBB3, 1); + SET_FLAG(dsAddr_spokenToMirrorFlag, 1); } - return true; + break; + + case 0x6074: + rejectMessage(); + break; + + case 0x6078: + displayMessage(dsAddr_tooBigMsg); // "It's too big and I doubt if I'll ever need it" + break; case 0x6205: - if (CHECK_FLAG(0xDBA4, 1)) - displayMessage(0x450e); + if (CHECK_FLAG(dsAddr_lightOnFlag, 1)) + displayMessage(dsAddr_tooHeavyMsg); // "It's too heavy. Not that I'm wimp" else - processCallback(0x61fe); - return true; + fnTooDark(); + break; case 0x6217: - if (CHECK_FLAG(0xDBA4, 1)) - displayMessage(0x44d6); + if (CHECK_FLAG(dsAddr_lightOnFlag, 1)) + displayMessage(dsAddr_noDentistsMsg); // "I don't want to have anything in common with dentists" else - processCallback(0x61fe); - return true; + fnTooDark(); + break; case 0x62c1: - if (CHECK_FLAG(0xDBA4, 1)) - return false; + if (CHECK_FLAG(dsAddr_lightOnFlag, 1)) + retVal = false; + else + fnTooDark(); + break; - processCallback(0x61fe); - return true; + case 0x634a: + displayMessage(dsAddr_noHandsSharpThornsMsg); // "I can't remove it with my hands. these thorns look really sharp" + break; + + case 0x637f: + loadScene(21, Common::Point(201, 199)); + scene->setOrientation(1); + break; + + case 0x6399: + displayMessage(dsAddr_rockWalkingGeeMsg); // "Yeah, great idea. Let's take this rock and walk around a bit. Gee..." + break; + + case 0x63a0: + case 0x63a7: + displayMessage(dsAddr_butterflyMsg); // "I'd better leave them alone, they make this place beautiful" + break; + + case 0x63ae: + displayMessage(dsAddr_notSureIfAliveMsg); // "I'm not sure if it's alive" + break; case 0x63bc: playMusic(6); loadScene(25, 151, 156, 2); - return true; + break; case 0x63dc: - Dialog::showMono(scene, 0x3375, 0, 0xd1, 0); - return true; + dialog->showMono(86, scene, 0, textColorMark, 0); + break; + + case 0x63e3: + displayMessage(dsAddr_holeTooNarrowMsg); // "The hole is too narrow to fit my hand" + break; case 0x646e: case 0x6475: - Dialog::showMono(scene, 0x32C1, 0, 0xd1, 0); - return true; + dialog->showMono(85, scene, 0, textColorMark, 0); + break; case 0x6479: - Dialog::showMono(scene, 0x325e, 0, 0xd1, 0); - return true; + dialog->showMono(84, scene, 0, textColorMark, 0); + break; case 0x6507: - if (CHECK_FLAG(0xDB96, 1)) { + if (CHECK_FLAG(dsAddr_birdsGoneFromScarecrowFlag, 1)) rejectMessage(); - } else - displayMessage(0x47e7); - return true; + else + displayMessage(dsAddr_birdAttackMsg); // "Hey You! Wake up! Bird attack!" + break; + + case 0x6541: + loadScene(20, Common::Point(10, 131)); + scene->setOrientation(3); + break; + + case 0x6635: + displayMessage(dsAddr_uninterestingHaystackMsg); // "I don't see anything interesting about this haystack" + break; + + case 0x666a: + displayMessage(dsAddr_moreComplicatedMsg); // "It's more complicated than that" + break; case 0x65c3: - if (CHECK_FLAG(0xDBA9, 1)) { + if (CHECK_FLAG(dsAddr_mouseHoleState, 1)) { playActorAnimation(635); setOns(5, 0); playSound(63, 11); playSound(15, 20); playSound(32, 31); playActorAnimation(636); - inventory->add(47); - inventory->add(48); + inventory->add(kInvItemHandkerchief); + inventory->add(kInvItemMouse); moveTo(scene->getPosition().x - 1, 139, 1, true); - displayMessage(0x3b83); - SET_FLAG(0xDBA9, 2); - SET_FLAG(0xDBA8, 0); + displayMessage(dsAddr_yikesMsg); // "Yikes!" + SET_FLAG(dsAddr_mouseHoleState, 2); + SET_FLAG(dsAddr_HankerchiefInMouseholeFlag, 0); } else - displayMessage(0x4808); - return true; + displayMessage(dsAddr_noSearchWarrantMsg); // "I don't have a search-warrant" + break; + + case 0x6671: + displayMessage(dsAddr_cantOpenItMsg); // "I can't open it" + break; + + case 0x6678: + rejectMessage(); + break; + + case 0x670f: + displayMessage(dsAddr_dontNeedThemMsg); // "I don't need them" + break; + + case 0x6716: + displayMessage(dsAddr_pullObjMsg2); // "I can't reach it" + break; + + case 0x6772: + loadScene(31, Common::Point(20, 188)); + scene->setOrientation(2); + break; + + case 0x678c: + loadScene(28, Common::Point(189, 153)); + scene->setOrientation(4); + break; + + case 0x67fa: + rejectMessage(); + break; + + case 0x67fe: + displayMessage(dsAddr_troubleWithStairsMsg); // "If I put it on I might have trouble walking up the stairs" + break; + + case 0x6911: + displayMessage(dsAddr_9LivesToReadMsg); // "I'd need 9 lives to read them all" + break; + + case 0x6954: + displayMessage(dsAddr_thanksNotTiredMsg); // "Thanks, I'm not so tired" + break; + + case 0x695b: + displayMessage(dsAddr_noNeedToTurnOnMsg); // "There's no need to turn it on" + break; + + case 0x6ba6: + displayMessage(dsAddr_wontBearWeightMsg); // "It won't bear my weight" + break; + + case 0x6bda: + displayMessage(dsAddr_peepingTomMsg); // "What am I? A Peeping Tom?" + break; + + case 0x6c1c: + case 0x6c20: + rejectMessage(); + break; + + case 0x6c24: + displayMessage(dsAddr_dontNeedThemMsg); // "I don't need them" + break; + + case 0x6c2b: + loadScene(29, Common::Point(300, 188)); + scene->setOrientation(4); + break; + + case 0x6c7c: + displayMessage(dsAddr_bigPocketsMsg); // "I have big pockets, but there are limits" + break; + + case 0x724e: + displayMessage(dsAddr_soSharpMsg); // "They're so sharp they'd rip my trousers!" + break; + + case 0x72be: + rejectMessage(); + break; + + case 0x7305: + rejectMessage(); + break; + + case 0x7328: + displayMessage(dsAddr_noTimeForPleasuresMsg); // "I don't have time for pleasures" + break; + + case 0x732f: + displayMessage(dsAddr_notSocksWithBareHandsMsg); // "I won't touch these socks with my bare hands!" + break; + + case 0x739c: + displayMessage(dsAddr_notHalloweenMsg); // "It's not Halloween" + break; + + case 0x7401: + displayMessage(dsAddr_NotManualMsg); // "It can't be controlled manually! I hate it!" + break; + + case 0x746f: + displayMessage(dsAddr_nothingToPlayMsg); // "I have nothing to play" + break; + + case 0x74b3: + loadScene(29, Common::Point(256, 171)); + scene->setOrientation(3); + break; + + case 0x74cd: + rejectMessage(); + break; + + case 0x74f9: + loadScene(38, Common::Point(160, 199)); + scene->setOrientation(1); + break; + + case 0x784a: + displayMessage(dsAddr_notMineMsg); // "I can't take it. It's not mine." + break; + + case 0x7851: + displayMessage(dsAddr_lockedMsg); // "It's Locked!" + break; + + case 0x7858: + displayMessage(dsAddr_lockedMsg); // "It's Locked!" + break; + + case 0x785f: + displayMessage(dsAddr_pullObjMsg2); // "I can't reach it" + break; case 0x7866: - if (CHECK_FLAG(0xdbdd, 3)) { - displayMessage(0x55ff); - return true; - } else - return false; + if (CHECK_FLAG(dsAddr_JailCableAndBowlState, 3)) + displayMessage(dsAddr_gotchaMsg); // "Gotcha" + else + retVal = false; + break; - case 0x7878: { - byte v = res->dseg.get_byte(0xDBDB) + 1; - if (v <= 6) - SET_FLAG(0xDBDB, v); + case 0x7878: + { + byte v = res->dseg.get_byte(dsAddr_graffitiMsgId) + 1; + if (v <= 6) + SET_FLAG(dsAddr_graffitiMsgId, v); - switch (v) { - case 1: - displayMessage(0x5411); - return true; - case 2: - displayMessage(0x5463); - return true; - case 3: - displayMessage(0x5475); - return true; - case 4: - displayMessage(0x5484); - return true; - case 5: - displayMessage(0x54c4); - return true; - default: - displayMessage(0x54d5); - return true; + switch (v) { + case 1: + displayMessage(dsAddr_SavingFineMsg); // "Saving is a very fine thing..." + break; + case 2: + displayMessage(dsAddr_loveCaptainMsg); // "I love captain" + break; + case 3: + displayMessage(dsAddr_soccerRulzMsg); // "Soccer rulz" + break; + case 4: + displayMessage(dsAddr_treeCutMsg); // "Don't cut the trees..." + break; + case 5: + displayMessage(dsAddr_visaAcceptedMsg); // "VISA Accepted" + break; + default: + displayMessage(dsAddr_otherGraffitiMsg); // "The rest of graffiti is obscene" + break; + } } - } + break; case 0x78a9: - if (CHECK_FLAG(0xDBE6, 1)) { - displayMessage(0x5827); - return true; - } else - return false; + if (CHECK_FLAG(dsAddr_captainDrawerState, 1)) + displayMessage(dsAddr_nowOpenMsg); // "Now it's open" + else + retVal = false; + break; case 0x78bb: - if (CHECK_FLAG(0xDBE8, 1)) { - displayMessage(0x58b0); - return true; - } else - return false; + if (CHECK_FLAG(dsAddr_swappedBarmanMugFlag, 1)) + displayMessage(dsAddr_yuckMsg); // "Yuck!" + else + retVal = false; + break; case 0x78ce: - if (!CHECK_FLAG(0xDBA1, 1)) { - displayMessage(0x3694); - return true; - } else - return false; + if (!CHECK_FLAG(dsAddr_mansionTreeHollowEmptyFlag, 1)) + displayMessage(dsAddr_monstersMsg); // "Who knows what monsters live in there" + else + retVal = false; + break; - case 0x792b: //left click on ann + case 0x792b: // left click on ann moveTo(245, 198, 1); - if (CHECK_FLAG(0xDBAF, 1)) - return false; - - Dialog::showMono(scene, 0x2193, 0, 0xd1, 0); - SET_FLAG(0xDBAF, 1); - return true; + if (!CHECK_FLAG(dsAddr_alreadySaidAnneBeautifulFlag, 1)) { + dialog->showMono(50, scene, 0, textColorMark, 0); + SET_FLAG(dsAddr_alreadySaidAnneBeautifulFlag, 1); + } else + retVal = false; + break; case 0x79c3: - if (CHECK_FLAG(0xDBA4, 1)) - return false; - processCallback(0x61fe); - return true; + if (CHECK_FLAG(dsAddr_lightOnFlag, 1)) + retVal = false; + else + fnTooDark(); + break; - case 0x7b26: //cutting the fence + case 0x7b26: // cutting the fence setOns(0, 0); playSound(5, 2); playSound(51, 11); @@ -1114,11 +2050,11 @@ bool TeenAgentEngine::processCallback(uint16 addr) { setOns(0, 0x60); moveTo(281, scene->getPosition().y, 0, true); disableObject(4); - SET_FLAG(0xDBE1, 1); - return true; + SET_FLAG(dsAddr_cutFenceFlag, 1); + break; - case 0x7b89: //digging mysterious object - if (CHECK_FLAG(0xDBE1, 1)) { + case 0x7b89: // digging mysterious object + if (CHECK_FLAG(dsAddr_cutFenceFlag, 1)) { playActorAnimation(844); setOns(1, 0); playSound(5, 5); @@ -1130,11 +2066,15 @@ bool TeenAgentEngine::processCallback(uint16 addr) { setOns(1, 0x64); playActorAnimation(845); disableObject(3); - inventory->add(0x52); - inventory->remove(0x51); + inventory->add(kInvItemKaleidoscope); + inventory->remove(kInvItemShovelAct1); } else - displayMessage(0x56da); - return true; + displayMessage(dsAddr_fenceBlocksMsg); // "The fence blocks the way" + break; + + case 0x7bf6: + displayMessage(dsAddr_noDiggingKnifeMsg); // "Digging it out with the knife could take a hundred years" + break; case 0x7bfd: playSound(76, 18); @@ -1149,7 +2089,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playSound(76, 63); playActorAnimation(873); moveTo(240, 163, 4); - displayMessage(0x5837); + displayMessage(dsAddr_cmonBabyMsg); // "C'mon baby, it's all yours!" waitLanAnimationFrame(1, 0x22); playSound(77, 2); playSound(77, 12); @@ -1164,23 +2104,36 @@ bool TeenAgentEngine::processCallback(uint16 addr) { setLan(1, 0); playAnimation(874, 1); setOns(0, 0x68); - inventory->remove(0x5b); + inventory->remove(kInvItemDruggedFood); enableObject(6); disableObject(1); - return true; + break; + + case 0x7cc9: + case 0x7cd0: + displayMessage(dsAddr_throwCrumbsToBirdQMsg); // "Should I throw the crumbs to the bird?" + break; + + case 0x7cd7: + displayMessage(dsAddr_dontWasteCrumbs); // "I don't want to waste these tasty crumbs" + break; - case 0x7ce5: //put spring on the solid ground + case 0x7cde: + displayMessage(dsAddr_mightSlipFallInMsg); // "Better not... I might slip and fall in..." + break; + + case 0x7ce5: // put spring on the solid ground playSound(5, 2); playSound(19, 11); playActorAnimation(840); setOns(1, 0x61); - inventory->remove(0x50); + inventory->remove(kInvItemSpring); disableObject(2); enableObject(7); - return true; + break; - case 0x7d1a: //captain's key + door - if (res->dseg.get_byte(0xDBDF) <= 1) { + case 0x7d1a: // captain's key + door + if (res->dseg.get_byte(dsAddr_FirstActTrialState) <= 1) { playSound(5, 2); playSound(57, 12); playSound(70, 19); @@ -1198,24 +2151,23 @@ bool TeenAgentEngine::processCallback(uint16 addr) { wait(200); playAnimation(0, 1); setOns(0, 0); - Dialog::showMono(scene, 0x63a5, 830, 0xd0, 1); + dialog->showMono(156, scene, 830, textColorShockedCaptain, 1); loadScene(7, 130, 195, 2); playMusic(4); setLan(1, 1); wait(100); - Dialog::show(scene, 0x6406, 0, 832, 0xd1, 0xec, 0, 1); + dialog->show(157, scene, 0, 832, textColorMark, textColorCaptain, 0, 1); //playAnimation(831, 1); - SET_FLAG(0xDBDF, 2); - + SET_FLAG(dsAddr_FirstActTrialState, 2); } else - displayMessage(0x52f6); - return true; + displayMessage(dsAddr_nahMsg); // "Nah" + break; - case 0x7e02: //tickling the captain - if (CHECK_FLAG(0xdbe0, 1)) { - displayMessage(0x5632); + case 0x7e02: // tickling the captain + if (CHECK_FLAG(dsAddr_AlreadyTickledCaptainFlag, 1)) { + displayMessage(dsAddr_doesNotWorkMsg); // "That doesn't work" } else { playSound(5, 6); playSound(27, 49); @@ -1224,37 +2176,37 @@ bool TeenAgentEngine::processCallback(uint16 addr) { waitAnimation(); setOns(0, 94); - Dialog::show(scene, 0x65e9, 0, 832, 0xd1, 0xec, 0, 1); + dialog->show(161, scene, 0, 832, textColorMark, textColorCaptain, 0, 1); enableObject(12); - SET_FLAG(0xdbe0, 1); + SET_FLAG(dsAddr_AlreadyTickledCaptainFlag, 1); } - return true; + break; - case 0x7e4f: //giving magazine to captain - Dialog::show(scene, 0x66c0, 0, 856, 0xd1, 0xec, 0, 1); + case 0x7e4f: // giving magazine to captain + dialog->show(162, scene, 0, 856, textColorMark, textColorCaptain, 0, 1); playSound(5, 3); playActorAnimation(852, true); playActorAnimation(853, true); - displayMessage(0x5742); - displayMessage(0x5757); - displayMessage(0x5770); - displayMessage(0x5782); - displayMessage(0x5799); + displayMessage(dsAddr_whatAboutMsg); // "What about a new" + displayMessage(dsAddr_hotOffMsg); // "hot off the press" + displayMessage(dsAddr_fullColorMsg); // "full-color" + displayMessage(dsAddr_specialEdMsg); // "special edition" + displayMessage(dsAddr_soldierNewsMsg); // "of Soldier News?!" playAnimation(856, 1); playSound(5, 3); //playActorAnimation(854); - Dialog::show(scene, 0x66fe, 0, 856, 0xd1, 0xec, 0, 1); + dialog->show(163, scene, 0, 856, textColorMark, textColorCaptain, 0, 1); playAnimation(855, 1); wait(200); moveTo(30, 181, 0); disableObject(1); setLan(1, 0); - SET_FLAG(0xDBDF, 3); - SET_FLAG(0xDBF0, 1); + SET_FLAG(dsAddr_FirstActTrialState, 3); + SET_FLAG(dsAddr_gotPasswordNeedSpeakBarmanFlag, 1); loadScene(8, 155, 199); - return true; + break; - case 0x7fbd: //using bird & bartender + case 0x7fbd: // using bird & bartender playSound(5, 3); playActorAnimation(876); setOns(1, 0); @@ -1263,15 +2215,15 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playAnimation(877, 1); playAnimation(880, 1, true); - Dialog::show(scene, 0x6f0e, 0, 857, 0xd1, 0xef, 0, 1); + dialog->show(176, scene, 0, 857, textColorMark, textColorBarman, 0, 1); setOns(2, 0x6a); reloadLan(); playAnimation(878, 0); - //playAnimation(879, 0); //background bartender animation - inventory->remove(0x5c); + //playAnimation(879, 0); // background bartender animation + inventory->remove(kInvItemBird); enableObject(1); - SET_FLAG(0xDBE7, 1); - return true; + SET_FLAG(dsAddr_birdOnBarRadioAntennaFlag, 1); + break; case 0x8047: playSound(32, 5); @@ -1279,27 +2231,26 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playSound(52, 23); playActorAnimation(881); setOns(2, 0x6b); - inventory->remove(0x56); - inventory->add(0x55); - SET_FLAG(0xDBE8, 1); - return true; + inventory->remove(kInvItemMugOfMud); + inventory->add(kInvItemMug); + SET_FLAG(dsAddr_swappedBarmanMugFlag, 1); + break; case 0x808b: - if (CHECK_FLAG(0xDBDA, 1)) { - //alredy shown - displayMessage(0x53F2); + if (CHECK_FLAG(dsAddr_ShownPassToGuardFlag, 1)) { + displayMessage(dsAddr_gotPermissionMsg); // "I already got the permission" } else { - displayMessage(0x53DD); + displayMessage(dsAddr_showPapersMsg); // "Here are my papers" playSound(5, 2); playSound(5, 18); playActorAnimation(810); - Dialog::show(scene, 0x60BF, 0, 809, 0xd1, 0xd0, 0, 1); - SET_FLAG(0xDBDA, 1); + dialog->show(147, scene, 0, 809, textColorMark, textColorCampGuard, 0, 1); + SET_FLAG(dsAddr_ShownPassToGuardFlag, 1); } - return true; + break; - case 0x80c3: //show kaleydoscope to the guard - Dialog::show(scene, 0x6811, 0, 809, 0xd1, 0xd0, 0, 1); + case 0x80c3: // show kaleidoscope to the guard + dialog->show(165, scene, 0, 809, textColorMark, textColorCampGuard, 0, 1); playSound(5, 3); playSound(5, 30); playSound(26, 14); @@ -1309,124 +2260,146 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playAnimation(851, 0); playAnimation(850, 0); reloadLan(); - inventory->add(0x53); - inventory->remove(0x52); + inventory->add(kInvItemSoldierNews); + inventory->remove(kInvItemKaleidoscope); enableObject(1); - SET_FLAG(0xDBE2, 1); - return true; + SET_FLAG(dsAddr_act1GuardState, 1); + break; + + case 0x8398: + displayMessage(dsAddr_trySomewhereElseMsg); // "I'd better try somewhere else - I suppose this side is heavily guarded" + break; + + case 0x85dd: + displayMessage(dsAddr_branchNotPaddleMsg); // "This branch is not a paddle. It doesn't even look like one" + break; + + case 0x85e4: + displayMessage(dsAddr_sharpenNotPulverizeMsg); // "I needed to sharpen it, not pulverize" + break; + + case 0x8d42: + displayMessage(dsAddr_bluntSickleMsg); // "The sickle is too blunt" + break; - //Shore + case 0x8d49: + displayMessage(dsAddr_noChainsawFuelMsg); // "There's no fuel in the chainsaw" + break; + + case 0x8d50: + displayMessage(dsAddr_thornsTooThinMsg); // "Thorns are too thin, the chainsaw is useless here" + break; + + // Shore case 0x5348: - if (CHECK_FLAG(0xdb99, 1)) { //got broken paddle from boat - displayMessage(0x351f); + if (CHECK_FLAG(dsAddr_alreadyGotBrokenPaddleFlag, 1)) { // got broken paddle from boat + displayMessage(dsAddr_boatEmptyMsg); // "There's nothing else in the boat" } else { - SET_FLAG(0xDB99, 1); + SET_FLAG(dsAddr_alreadyGotBrokenPaddleFlag, 1); playSound(57, 6); playActorAnimation(536); - Dialog::showMono(scene, 0x30c3, 0, 0xd1, 0); - inventory->add(0x8); + dialog->showMono(77, scene, 0, textColorMark, 0); + inventory->add(kInvItemBrokenPaddle); } - return true; + break; case 0x53a1: - if (CHECK_FLAG(0xdbb2, 1)) { //spoken to man in well - displayMessage(0x411d); + if (CHECK_FLAG(dsAddr_spokenToManInWellFlag, 1)) { // spoken to man in well + displayMessage(dsAddr_stillThereMsg); // "Are you still there?" } else { - displayMessage(0x408a); - displayMessage(0x4091, 0xe5, 52728); - displayMessage(0x4098); - displayMessage(0x40a7, 0xe5, 52705); - displayMessage(0x40b6); - displayMessage(0x40ce, 0xe5, 52652); - displayMessage(0x40e8); - displayMessage(0x410f, 0xe5, 52712); + displayMessage(dsAddr_echoMsg); // "Echo!" + displayMessage(dsAddr_loudEchoMsg, textColorWellEcho, 248, 164); // "ECHO!" + displayMessage(dsAddr_whoThereMsg); // "Who's there?!" + displayMessage(dsAddr_loudWhoThereMsg, textColorWellEcho, 225, 164); // "WHO'S THERE?!" + displayMessage(dsAddr_dontCopyMsg); // "DON'T COPY ME!" + displayMessage(dsAddr_loudDontCopyMsg, textColorWellEcho, 172, 164); // "DON'T COPY ME!!!" + displayMessage(dsAddr_throwRockMsg); // "OR I WILL THROW A ROCK DOWN THERE!" + displayMessage(dsAddr_orIWillMsg, textColorWellEcho, 232, 164); // "OR I WILL" wait(100); - displayMessage(0x4091, 0xe5, 52728); - SET_FLAG(0xDBB2, 1); + displayMessage(dsAddr_loudEchoMsg, textColorWellEcho, 248, 164); + SET_FLAG(dsAddr_spokenToManInWellFlag, 1); } - return true; + break; + case 0x5458: + { + setOns(2, 0); + playSound(34, 7); + playActorAnimation(535); + inventory->add(kInvItemSecondFlower); + disableObject(1); - case 0x5458: { - setOns(2, 0); - playSound(34, 7); - playActorAnimation(535); - inventory->add(11); - disableObject(1); - - byte *scene_15_ons = scene->getOns(15); //patch ons for the scene 15 - scene_15_ons[0] = 0; + byte *scene_15_ons = scene->getOns(15); // patch ons for the scene 15 + scene_15_ons[0] = 0; - byte f = GET_FLAG(0xDB98) + 1; - SET_FLAG(0xDB98, f); - if (f >= 2) { - //disable object boat for scene 15!! - disableObject(1, 15); + byte f = GET_FLAG(dsAddr_flowerIsleState) + 1; + SET_FLAG(dsAddr_flowerIsleState, f); + if (f >= 2) { + // disable object boat for scene 15!! + disableObject(1, 15); + } } - } - return true; + break; - case 0x54b3: { - setOns(1, 0); - setOns(3, 0); - playSound(33, 6); - playActorAnimation(534); - inventory->add(10); - disableObject(2); - setOns(1, 10); - setOns(1, 0, 15); - byte f = GET_FLAG(0xDB98) + 1; - SET_FLAG(0xDB98, f); - if (f >= 2) { - //disable object boat for scene 15!! - disableObject(1, 15); + case 0x54b3: + { + setOns(1, 0); + setOns(3, 0); + playSound(33, 6); + playActorAnimation(534); + inventory->add(kInvItemFirstFlower); + disableObject(2); + setOns(1, 10); + setOns(1, 0, 15); + byte f = GET_FLAG(dsAddr_flowerIsleState) + 1; + SET_FLAG(dsAddr_flowerIsleState, f); + if (f >= 2) { + // disable object boat for scene 15!! + disableObject(1, 15); + } } - } - return true; + break; case 0x5502: setOns(0, 0); loadScene(15, 115, 180, 1); playMusic(6); playActorAnimation(568); - return true; + break; - case 0x5561://Enter lakeside house - moveTo(94, 115, 4); //call 557e, but it's not needed I guess + case 0x5561: // Enter lakeside house + fnEgoDefaultPosition(); loadScene(19, 223, 199, 1); - return true; + break; case 0x55a1: - processCallback(0x557e); + fnEgoDefaultPosition(); rejectMessage(); - return true; + break; - case 0x557e: - if (scene->getPosition().y <= 149) - moveTo(94, 115, 4); - else - moveTo(51, 149, 4); - return true; + case csAddr_egoDefaultPosition: + fnEgoDefaultPosition(); + break; case 0x563b: playSound(5, 10); setOns(1, 0); playActorAnimation(561); - inventory->add(26); + inventory->add(kInvItemNut); disableObject(6); - return true; + break; case 0x56f6: playSound(32, 7); setOns(1, 0); playActorAnimation(626); disableObject(12); - inventory->add(45); - displayMessage(0x3b04); - return true; + inventory->add(kInvItemCheese); + displayMessage(dsAddr_foundFoodMsg); // "People leave food in unbelievable places" + break; - case 0x5756://Open car door + case 0x5756: // Open car door playSound(11, 4); playActorAnimation(514); setOns(4, 8); @@ -1435,106 +2408,94 @@ bool TeenAgentEngine::processCallback(uint16 addr) { enableObject(15); enableObject(16); disableObject(1); - return true; + break; - case 0x5805://Enter basketball house + case 0x5805: // Enter basketball house playSound(70, 6); playActorAnimation(513); loadScene(22, 51, 180, 2); - return true; + break; - case 0x5832://Ring doorbell + case 0x5832: // Ring doorbell playActorAnimation(509); - displayMessage(0x5dce); - return true; + displayMessage(dsAddr_outOfOrderMsg); // "It's out of order" + break; case 0x58a2: - Dialog::pop(scene, 0xdaba, 0, 502, 0xd1, 0xe5, 0, 1); - scene->getObject(13)->setName((const char *)res->dseg.ptr(0x92e5)); - return true; + dialog->pop(scene, dsAddr_dialogStackSonny, 0, 502, textColorMark, textColorSonny, 0, 1); + scene->getObject(13)->setName((const char *)res->dseg.ptr(dsAddr_scnObjNameSonny)); + break; - case 0x58b7://Get comb from car + case 0x58b7: // Get comb from car disableObject(14); setOns(4, 0); playSound(5, 7); playActorAnimation(521); setOns(4, 0); - inventory->add(0x6); - return true; + inventory->add(kInvItemComb); + break; - case 0x58df://Pull trunk lever in car - SET_FLAG(0xDB94, 1); + case 0x58df: // Pull trunk lever in car + SET_FLAG(dsAddr_alreadyPulledTrunkReleaseLeverFlag, 1); playSound(6, 1); setOns(3, 6); playActorAnimation(515); - return true; + break; - case 0x593e://Enter annes house + case 0x593e: // Enter annes house playSound(89, 4); playActorAnimation(980); loadScene(23, 76, 199, 1); - if (CHECK_FLAG(0xDBEE, 1)) + if (CHECK_FLAG(dsAddr_lovestruckByAnneFlag, 1)) playMusic(7); - return true; + break; case 0x5994: - processCallback(0x599b); - processCallback(0x5a21); - return true; + fnEnterCave(); + break; - case 0x599b: - return true; + case csAddr_caveNOP: + break; - case 0x5a21: - loadScene(24, 230, 170, 1); - playSound(52, 3); - playSound(52, 7); - playSound(52, 11); - playSound(52, 14); - playSound(52, 18); - playSound(52, 21); - playSound(52, 25); - playActorAnimation(601); - moveTo(230, 179, 3); - if (!CHECK_FLAG(0xDBA4, 1)) - displayMessage(0x37ea); //it's kinda dark here - return true; + case csAddr_enterCave: + fnEnterCave(); + break; case 0x5a8b: - if (!CHECK_FLAG(0xDBAD, 1)) { - playSound(43, 4); //grrrrrr + if (!CHECK_FLAG(dsAddr_dogHasBoneFlag, 1)) { + playSound(43, 4); // grrrrrr playSound(42, 15); playSound(42, 17); playSound(42, 19); playAnimation(656, 0); wait(50); - displayMessage(0x3c16); - } else if (!CHECK_FLAG(0xDBA3, 1)) {//Dog has bone + displayMessage(dsAddr_goodDoggyMsg); // "I understand. Good doggy" + } else if (!CHECK_FLAG(dsAddr_cellarDoorOpenFlag, 1)) { // Dog has bone playSound(28, 3); playActorAnimation(596); setOns(1, 30); - SET_FLAG(0xDBA3, 1); + SET_FLAG(dsAddr_cellarDoorOpenFlag, 1); enableObject(8); } else { setOns(1, 0); playSound(4, 4); playActorAnimation(597); - SET_FLAG(0xDBA3, 0); + SET_FLAG(dsAddr_cellarDoorOpenFlag, 0); disableObject(8); - displayMessage(0x37b8); + displayMessage(dsAddr_wallShakenMsg); // "Wow! This must have shaken all the nearby walls!" setOns(1, 32, 24); enableObject(4, 24); } - return true; + break; - case 0x5b3a://Click on dog - Dialog::popMark(scene, 0xDB14); - return true; + case 0x5b3a: // Click on dog + dialog->popMark(scene, dsAddr_dialogStackDog); + break; - case 0x5b59: //picking up the rope - Dialog::showMark(scene, 0x2cbd); + case 0x5b59: // picking up the rope + dialog->showMark(70, scene); wait(150); - Dialog::showMark(scene, 0x2dc2); + dialog->showMark(71, scene); moveRel(0, -12, 0); playSound(34, 5); playActorAnimation(607); @@ -1545,81 +2506,81 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playSound(5, 25); playActorAnimation(611); moveTo(16, scene->getPosition().y, 4, true); - inventory->add(38); + inventory->add(kInvItemRopeAct2); disableObject(12); - return true; + break; - case 0x5be1://Talk to grandpa - Dialog::pop(scene, 0xDAC4, 0, 522, 0xd1, 0xd8, 0, 1); - return true; + case 0x5be1: // Talk to grandpa + dialog->pop(scene, dsAddr_dialogStackGrandpa, 0, 522, textColorMark, textColorGrandpa, 0, 1); + break; case 0x5bee: playSound(89, 5); playSound(67, 11); playActorAnimation(982); - displayMessage(0x5955); - return true; + displayMessage(dsAddr_emptyMsg); // "It's Empty" + break; - case 0x5c0d: //grandpa - drawers - if (CHECK_FLAG(0xDBA7, 1)) { - displayMessage(0x3bac); + case 0x5c0d: // grandpa - drawers + if (CHECK_FLAG(dsAddr_SearchedGrandpaDrawersFlag, 1)) { + displayMessage(dsAddr_drawersEmptyMsg); // "There's nothing else in the drawers" } else { - if (!CHECK_FLAG(0xDB92, 1)) - Dialog::show(scene, 0x15a0, 0, 522, 0xd1, 0xd8, 0, 1); //can I search your drawers? + if (!CHECK_FLAG(dsAddr_alreadyAdjustedHoopPoleFlag, 1)) + dialog->show(24, scene, 0, 522, textColorMark, textColorGrandpa, 0, 1); playSound(66, 5); playSound(67, 20); playSound(5, 23); playActorAnimation(631); - inventory->add(47); - SET_FLAG(0xDBA7, 1); + inventory->add(kInvItemHandkerchief); + SET_FLAG(dsAddr_SearchedGrandpaDrawersFlag, 1); } - return true; + break; case 0x5c84: - if (CHECK_FLAG(0xDB92, 1)) { - inventory->add(2); + if (CHECK_FLAG(dsAddr_alreadyAdjustedHoopPoleFlag, 1)) { + inventory->add(kInvItemShotgun); disableObject(7); playSound(32, 7); setOns(0, 0); playActorAnimation(520); } else { - Dialog::pop(scene, 0xDACE, 0, 522, 0xd1, 0xd8, 0, 1); + dialog->pop(scene, dsAddr_dialogStackGrandpaShotgun, 0, 522, textColorMark, textColorGrandpa, 0, 1); } - return true; + break; - case 0x5cf0://Exit basketball house + case 0x5cf0:// Exit basketball house playSound(88, 5); playActorAnimation(981); loadScene(20, 161, 165); - return true; + break; - case 0x5d24: //getting the fan - if (CHECK_FLAG(0xDB92, 1)) { + case 0x5d24: // getting the fan + if (CHECK_FLAG(dsAddr_alreadyAdjustedHoopPoleFlag, 1)) { setLan(2, 0); playSound(32, 7); playActorAnimation(508); disableObject(13); - inventory->add(7); + inventory->add(kInvItemFan); } else { - Dialog::pop(scene, 0xDAD4, 0, 522, 0xd1, 0xd8, 0, 1); + dialog->pop(scene, dsAddr_dialogStackGrandpaFan, 0, 522, textColorMark, textColorGrandpa, 0, 1); } - return true; + break; - case 0x5e4d: //right click on ann - if (!CHECK_FLAG(0xDB97, 0)) { - displayMessage(0x3d59); + case 0x5e4d: // right click on ann + if (!CHECK_FLAG(dsAddr_alreadySpokenToAnneFlag, 0)) { + displayMessage(dsAddr_girlTalkMsg); // "I really don't know how to talk to girls" } else { moveTo(245, 198, 1); - Dialog::show(scene, 0x21d7, 0, 524, 0xd1, 0xe5, 0, 2); - //waitLanAnimationFrame(2, 1); //too long, about 200 frames! seems to be present in original game (sic) - SET_FLAG(0xDB97, 1); + dialog->show(51, scene, 0, 524, textColorMark, textColorAnne, 0, 2); + //waitLanAnimationFrame(2, 1); // too long, about 200 frames! seems to be present in original game (sic) + SET_FLAG(dsAddr_alreadySpokenToAnneFlag, 1); for (byte i = 10; i <= 20; i += 2) playSound(13, i); playAnimation(528, 1); wait(50); playMusic(7); - SET_FLAG(0xDBEE, 1); + SET_FLAG(dsAddr_lovestruckByAnneFlag, 1); for (byte i = 3; i <= 17; i += 2) playSound(56, i); playActorAnimation(525); @@ -1633,163 +2594,146 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playSound(55, 5); playActorAnimation(527); wait(50); - Dialog::show(scene, 0x2219, 0, 524, 0xd1, 0xe5, 0, 2); - scene->getObject(2)->setName((const char *)res->dseg.ptr(0x9820)); + dialog->show(52, scene, 0, 524, textColorMark, textColorAnne, 0, 2); + scene->getObject(2)->setName((const char *)res->dseg.ptr(dsAddr_scnObjNameAnne)); } - return true; + break; - case 0x5f73: //exiting ann's house - if (CHECK_FLAG(0xDBEE, 1)) + case 0x5f73: // exiting ann's house + if (CHECK_FLAG(dsAddr_lovestruckByAnneFlag, 1)) playMusic(6); loadScene(21, 99, 180, 3); - return true; + break; case 0x5fba: - if (CHECK_FLAG(0xDBB1, 1)) { - displayMessage(0x4380); + if (CHECK_FLAG(dsAddr_nutSwappedForAppleFlag, 1)) { + displayMessage(dsAddr_noFruitMsg); // "There are no more interesting fruits here" } else { - Dialog::pop(scene, 0xDAFC, 0, 523, 0xd1, 0xe5, 0, 1); + dialog->pop(scene, dsAddr_dialogStackGetAppleOldLady, 0, 523, textColorMark, textColorOldLady, 0, 1); } - return true; + break; case 0x607f: - return processCallback(0x60b5); + fnEgoScaredBySpider(); + break; case 0x6083: - if (CHECK_FLAG(0xDBA4, 1)) { + if (CHECK_FLAG(dsAddr_lightOnFlag, 1)) { setOns(0, 0); playSound(56, 10); playActorAnimation(599); - inventory->add(37); + inventory->add(kInvItemShovelAct2); disableObject(2); } else - processCallback(0x60b5); - return true; + fnEgoScaredBySpider(); + break; - case 0x60b5: - if (CHECK_FLAG(0xDBAE, 1)) { - processCallback(0x60d9); - Dialog::showMark(scene, 0x2fdd); - } else { - Dialog::showMark(scene, 0x2e41); - processCallback(0x60d9); - wait(100); - Dialog::showMark(scene, 0x2e6d); - } - return true; + case csAddr_egoScaredBySpider: + fnEgoScaredBySpider(); + break; - case 0x60d9: { - Object *obj = scene->getObject(3); - moveTo(obj); - processCallback(0x612b); - moveTo(48, 190, 3); - } - return true; + case csAddr_moveToLadderAndLeaveCellar: + fnMoveToLadderAndLeaveCellar(); + break; - case 0x612b: - playSound(52, 10); - playSound(52, 14); - playSound(52, 18); - playSound(52, 21); - playSound(52, 25); - playSound(52, 28); - playSound(52, 32); - playActorAnimation(600); - loadScene(21, 297, 178, 3); - return true; + case csAddr_leaveCellar: + fnLeaveCellar(); + break; case 0x6176: - if (CHECK_FLAG(0xDBA4, 1)) { - displayMessage(0x3801); - return true; + if (CHECK_FLAG(dsAddr_lightOnFlag, 1)) { + displayMessage(dsAddr_notInDarkMsg); // "I'm not going to wander here in the dark again" + } else { + playSound(71, 6); + playActorAnimation(598); + loadScene(24, scene->getPosition()); + setOns(2, 0); + setLan(1, 0); + playAnimation(660, 0); + disableObject(1); + SET_FLAG(dsAddr_lightOnFlag, 1); + loadScene(24, scene->getPosition()); } - playSound(71, 6); - playActorAnimation(598); - loadScene(24, scene->getPosition()); - setOns(2, 0); - setLan(1, 0); - playAnimation(660, 0); - disableObject(1); - SET_FLAG(0xDBA4, 1); - loadScene(24, scene->getPosition()); - - return true; + break; case 0x61e9: - if (CHECK_FLAG(0xDBA4, 1)) { - Dialog::popMark(scene, 0xdb1e); - } else - processCallback(0x61fe); + if (CHECK_FLAG(dsAddr_lightOnFlag, 1)) + dialog->popMark(scene, dsAddr_dialogStackTakeAxe); + else + fnTooDark(); + break; - return true; + case csAddr_TooDark: + displayMessage(dsAddr_TooDarkMsg); // "It's too dark to see clearly" + break; - case 0x6229: //shelves in cellar - if (CHECK_FLAG(0xDBA4, 1)) { + case 0x6229: // shelves in cellar + if (CHECK_FLAG(dsAddr_lightOnFlag, 1)) { Common::Point p = scene->getPosition(); - byte v = GET_FLAG(0xDBB4); + byte v = GET_FLAG(dsAddr_cellarShelfExamineCount); switch (v) { case 0: - displayMessage(0x4532); + displayMessage(dsAddr_whatGotMsg); // "Let's look what we've got here" moveRel(-34, 0, 1); - displayMessage(0x4555); + displayMessage(dsAddr_strawberryJamMsg); // "Strawberry jam" moveRel(20, 0, 1); - displayMessage(0x4568); + displayMessage(dsAddr_gooseberryJamMsg); // "Gooseberry jam" moveRel(20, 0, 1); - displayMessage(0x457b); + displayMessage(dsAddr_blackberryJamMsg); // "Blackberry jam" moveRel(20, 0, 1); - displayMessage(0x458e); + displayMessage(dsAddr_bilberryJamMsg); // "Bilberry jam" moveTo(p, 3); - displayMessage(0x459f); - SET_FLAG(0xDBB4, 1); + displayMessage(dsAddr_getMeOutJamMsg); // "Get me out of this jam!" + SET_FLAG(dsAddr_cellarShelfExamineCount, 1); break; case 1: - displayMessage(0x45b8); + displayMessage(dsAddr_rosemaryJamMsg); // "Oh, and there is Rosemary jam" wait(100); - displayMessage(0x45da); - SET_FLAG(0xDBB4, 2); + displayMessage(dsAddr_knowRosemaryMsg); // "I used to know someone called Rosemary" + SET_FLAG(dsAddr_cellarShelfExamineCount, 2); break; default: - displayMessage(0x4603); + displayMessage(dsAddr_unwantedJamsMsg); // "I don't want those jams" + break; } } else - processCallback(0x61fe); - - return true; + fnTooDark(); + break; - case 0x6480: //dive mask - if (CHECK_FLAG(0xDB96, 1)) { + case 0x6480: // dive mask + if (CHECK_FLAG(dsAddr_birdsGoneFromScarecrowFlag, 1)) { playSound(56, 7); playSound(5, 15); playActorAnimation(613); setOns(3, 36); - inventory->add(39); + inventory->add(kInvItemMask); disableObject(5); - displayMessage(0x387c); + displayMessage(dsAddr_needSunglassesMsg); // "Sorry buddy, but I need your sunglasses" } else - displayMessage(0x3eb2); - return true; + displayMessage(dsAddr_crowKillMsg); // "I'm sure these crows will kill me" + break; - case 0x64c4: //flippers - if (CHECK_FLAG(0xDB96, 1)) { + case 0x64c4: // flippers + if (CHECK_FLAG(dsAddr_birdsGoneFromScarecrowFlag, 1)) { setOns(2, 35); playSound(63, 8); playSound(24, 10); playActorAnimation(612); - inventory->add(40); + inventory->add(kInvItemFins); disableObject(6); } else - displayMessage(0x3eb2); - return true; + displayMessage(dsAddr_crowKillMsg); // "I'm sure these crows will kill me" + break; - case 0x7907://Describe car lever - if (CHECK_FLAG(0xdb94, 1)) {//Already pulled lever? - displayMessage(0x3e4f); - return true; + case 0x7907: // Describe car lever + if (CHECK_FLAG(dsAddr_alreadyPulledTrunkReleaseLeverFlag, 1)) { // Already pulled lever? + displayMessage(dsAddr_openBootMsg); // "It opens the boot" } else - return false; + retVal = false; + break; - case 0x62d0://Get bone from under rock - displayAsyncMessage(0x463c, 30938, 16, 24); + case 0x62d0: // Get bone from under rock + displayAsyncMessage(dsAddr_yeowMsg, 218, 96, 16, 24); // "YEEEOOOWWWW!" playSound(26, 6); playSound(26, 10); playSound(24, 13); @@ -1798,35 +2742,34 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playActorAnimation(594); setOns(0, 29); disableObject(1); - inventory->add(36); + inventory->add(kInvItemBone); playSound(5, 2); playActorAnimation(595); - displayMessage(0x3790); - return true; + displayMessage(dsAddr_dinoBoneMsg); // "I really hope this is DINOSAUR bone" + break; case 0x6351: - if (CHECK_FLAG(0xdaca, 1)) { //cave bush is cut down + if (CHECK_FLAG(dsAddr_caveThornsCutDownFlag, 1)) { // cave bush is cut down playMusic(8); loadScene(26, 319, 169, 4); } else - displayMessage(0x3bd2); - return true; + displayMessage(dsAddr_ridBushMsg); // "I must get rid of this bush first" + break; case 0x63ea: playSound(5, 10); setOns(0, 0); playActorAnimation(640); - inventory->add(50); + inventory->add(kInvItemNugget); disableObject(6); - return true; + break; - case 0x6411://Kick hen - if (CHECK_FLAG(0xdb93, 1)) { //already kicked hen - displayMessage(0x3e08); - return true; + case 0x6411: // Kick hen + if (CHECK_FLAG(dsAddr_alreadyKickedHenFlag, 1)) { // already kicked hen + displayMessage(dsAddr_ridFrustationsMsg); // "I'd already got rid of my frustrations" } else { - SET_FLAG(0xdb93, 1); - displayMessage(0x3dc6); + SET_FLAG(dsAddr_alreadyKickedHenFlag, 1); + displayMessage(dsAddr_henFlyMsg); // "I wonder if hens can fly. Come here, baby" waitLanAnimationFrame(1, 87); playSound(30, 26); playSound(29, 49); @@ -1835,198 +2778,191 @@ bool TeenAgentEngine::processCallback(uint16 addr) { waitAnimation(); setOns(0, 1); enableObject(14); - displayMessage(0x3df4); - return true; + displayMessage(dsAddr_firstTestFailMsg); // "First test failed" } + break; - case 0x6592: //Rake + case 0x6592: // Rake setOns(1, 0); playSound(18, 10); playActorAnimation(553); - inventory->add(0x15); + inventory->add(kInvItemRakeBroken); wait(50); - displayMessage(0x3605); + displayMessage(dsAddr_trousersMsg); // "Good I always asked mum for trousers with BIG pockets" disableObject(11); - return true; + break; case 0x66b5: playSound(89, 5); playActorAnimation(969); loadScene(33, 319, 181, 4); - return true; + break; - case 0x6519://Sickle + case 0x6519: // Sickle setOns(4, 0); playSound(5, 11); playActorAnimation(625); - inventory->add(0x2c); + inventory->add(kInvItemSickleBlunt); disableObject(8); - return true; + break; - case 0x655b://Get needle from haystack - if (CHECK_FLAG(0xdb9d, 1)) { //already have needle - displayMessage(0x356a); - return true; + case 0x655b: // Get needle from haystack + if (CHECK_FLAG(dsAddr_gotNeedleAlreadyFlag, 1)) { // already have needle + displayMessage(dsAddr_dontPushLuckMsg); // "I don't think I should push my luck" } else { - SET_FLAG(0xdb9d, 1); + SET_FLAG(dsAddr_gotNeedleAlreadyFlag, 1); playSound(49, 3); playActorAnimation(548); - inventory->add(0x11); - displayMessage(0x35b2); - return true; + inventory->add(kInvItemNeedle); + displayMessage(dsAddr_needleHaystackMsg); // "And they say you can't find a needle in a haystack" } + break; - case 0x663c://Feather + case 0x663c: // Feather setOns(0, 0); playSound(5, 9); playActorAnimation(511); - inventory->add(1); + inventory->add(kInvItemFeather); disableObject(15); - return true; + break; case 0x667c: playSound(70, 4); playActorAnimation(972); loadScene(29, 160, 199, 1); - return true; + break; case 0x66a9: - displayMessage(0x4a7e); + displayMessage(dsAddr_dontLeaveMansionMsg); // "I don't want to leave the mansion, I want blood!" disableObject(4); - return true; + break; case 0x66e2: playSound(88, 4); playActorAnimation(970); loadScene(35, 160, 199, 1); - return true; + break; case 0x70bb: - Dialog::pop(scene, 0xdb24, 0, 709, 0xd1, 0xef, 0, 1); - return true; + dialog->pop(scene, dsAddr_dialogStackBusyCook, 0, 709, textColorMark, textColorCook, 0, 1); + break; case 0x71ae: - if (CHECK_FLAG(0xDBCD, 1)) { - if (CHECK_FLAG(0xDBCE, 1)) { - displayMessage(0x4f9b); + if (CHECK_FLAG(dsAddr_MansionRadioBrokenFlag, 1)) { + if (CHECK_FLAG(dsAddr_MansionGotRadioBatteriesFlag, 1)) { + displayMessage(dsAddr_restUselessMsg); // "The rest is useless" } else { - displayMessage(0x4fb1); + displayMessage(dsAddr_twoBatteriesMsg); // "Wow! Two 1.5V batteries!" playSound(32, 6); playActorAnimation(717); - inventory->add(66); - SET_FLAG(0xDBCE, 1); + inventory->add(kInvItemBatteries); + SET_FLAG(dsAddr_MansionGotRadioBatteriesFlag, 1); } } else - Dialog::showMark(scene, 0x3c9d); - return true; + dialog->showMark(97, scene); + break; case 0x70c8: - if (!processCallback(0x70e0)) - return true; - moveTo(81, 160, 4); - displayMessage(0x5cac); - return true; - - case 0x70e0: - if (!CHECK_FLAG(0xDBCC, 1)) { - displayMessage(0x4ece); - return false; + if (fnIsCookGone()) { + moveTo(81, 160, 4); + displayMessage(dsAddr_cognacMsg); // "Pfui! The cognac really didn't do any good" } - return true; + break; + + case csAddr_isCookGone: + retVal = fnIsCookGone(); + break; case 0x70ef: - if (!processCallback(0x70e0)) - return true; - displayMessage(0x5046); - return true; + if (fnIsCookGone()) + displayMessage(dsAddr_tooHotMsg); // "It's too hot to touch!" + break; case 0x70f9: - if (inventory->has(68)) { - inventory->remove(68); + if (inventory->has(kInvItemBurningPaper)) { + inventory->remove(kInvItemBurningPaper); loadScene(29, 40, 176, 2); - displayMessage(0x500a); + displayMessage(dsAddr_paperBurntMsg); // "The paper burnt out completely!" } else loadScene(29, 40, 176, 2); - return true; + break; case 0x712c: - if (!processCallback(0x70e0)) - return true; - - if (CHECK_FLAG(0xDBCF, 1)) { - playSound(89, 4); - playActorAnimation(719); - setOns(4, 67); - ++ *res->dseg.ptr(READ_LE_UINT16(res->dseg.ptr(0x6746 + (scene->getId() - 1) * 2))); - disableObject(5); - enableObject(12); - } else { - playSound(89, 4); - playSound(89, 4); - playSound(87, 45); - displayAsyncMessage(0x4fcb, 34672, 11, 35, 0xe5); - playActorAnimation(718); - wait(100); - displayMessage(0x4fe2); - SET_FLAG(0xDBCF, 1); + if (fnIsCookGone()) { + if (CHECK_FLAG(dsAddr_MansionHaveOpenedFridgeBeforeFlag, 1)) { + playSound(89, 4); + playActorAnimation(719); + setOns(4, 67); + ++ *res->dseg.ptr(READ_LE_UINT16(res->dseg.ptr(dsAddr_sceneWalkboxTablePtr + (scene->getId() - 1) * 2))); + disableObject(5); + enableObject(12); + } else { + playSound(89, 4); + playSound(89, 4); + playSound(87, 45); + displayAsyncMessage(dsAddr_oneTakenMsg, 112, 108, 11, 35, textColorEskimo); // "This one's taken, OK?" + playActorAnimation(718); + wait(100); + displayMessage(dsAddr_slightMadMsg); // "It finally happened. I'm slightly mad" + SET_FLAG(dsAddr_MansionHaveOpenedFridgeBeforeFlag, 1); + } } - return true; + break; case 0x71eb: setOns(2, 0); playSound(32, 7); playActorAnimation(710); - inventory->add(62); + inventory->add(kInvItemChilliWithLabel); disableObject(7); enableObject(8); - return true; + break; case 0x7244: - if (!processCallback(0x70e0)) - return true; - displayMessage(0x5c60); - return true; + if (fnIsCookGone()) + displayMessage(dsAddr_neverLearntMsg); // "I never learnt to how use one" + break; case 0x7255: - if (CHECK_FLAG(0xDBD0, 1)) { + if (CHECK_FLAG(dsAddr_MansionPutBurningPaperInFridgeFlag, 1)) { setOns(4, 69); playSound(32, 5); playActorAnimation(725); disableObject(12); - inventory->add(69); + inventory->add(kInvItemMeat); } else { playActorAnimation(721); - displayMessage(0x505e); + displayMessage(dsAddr_frozenShelfMsg); // "It has frozen hard onto the shelf!" } - return true; + break; case 0x721c: setOns(3, 0); playSound(32, 7); playActorAnimation(715); - inventory->add(63); + inventory->add(kInvItemPastryRoller); disableObject(9); - return true; + break; case 0x7336: setOns(1, 0); playSound(5, 42); - displayAsyncMessage(0x4d02, 32642, 20, 38); + displayAsyncMessage(dsAddr_noDepraveMsg, 2, 102, 20, 38); // "Nah, I don't want to deprave the kids" playActorAnimation(697); - inventory->add(56); + inventory->add(kInvItemCognac); disableObject(1); - return true; + break; case 0x7381: playSound(5, 12); playActorAnimation(704); disableObject(2); - inventory->add(58); - return true; + inventory->add(kInvItemIceTongs); + break; case 0x7408: - if (CHECK_FLAG(0xDBC4, 1)) { - displayMessage(0x4d2a); + if (CHECK_FLAG(dsAddr_mansionReadNewspaperFlag, 1)) { + displayMessage(dsAddr_noReadAgainMsg); // "I don't want to read it again. I might like it." } else { setOns(0, 0); playSound(26, 17); @@ -2038,45 +2974,45 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playActorAnimation(698); setOns(0, 52); setOns(2, 61); - Dialog::showMark(scene, 0x38b6); + dialog->showMark(92, scene); enableObject(11); - SET_FLAG(0xDBC4, 1); + SET_FLAG(dsAddr_mansionReadNewspaperFlag, 1); } - return true; + break; case 0x7476: - if (CHECK_FLAG(0xDBC9, 1)) { - displayMessage(0x4dbb); + if (CHECK_FLAG(dsAddr_mansionExaminedCouchBeforeFlag, 1)) { + displayMessage(dsAddr_noSleepMsg); // "I don't want to sleep" } else { - SET_FLAG(0xDBC9, 1); - Dialog::showMark(scene, 0x3aca); + SET_FLAG(dsAddr_mansionExaminedCouchBeforeFlag, 1); + dialog->showMark(94, scene); playSound(61, 5); playSound(5, 14); playActorAnimation(705); - displayMessage(0x4dd3); - inventory->add(59); + displayMessage(dsAddr_justCorkMsg); // "It's just a cork" + inventory->add(kInvItemCork); } - return true; + break; case 0x74d1: setOns(2, 0); playSound(5, 12); playActorAnimation(699); - inventory->add(57); + inventory->add(kInvItemRemoteControl); disableObject(11); - return true; + break; - case 0x7513: //fatso + doctor: pre-final - if (CHECK_FLAG(0xDBD7, 1)) { - if (CHECK_FLAG(0xDBD8, 1)) { + case 0x7513: // fatso + doctor: pre-final + if (CHECK_FLAG(dsAddr_MansionThruFanByTimePillFlag, 1)) { + if (CHECK_FLAG(dsAddr_MansionVentFanStoppedFlag, 1)) { playSound(88, 4); playActorAnimation(979); loadScene(37, 51, 183); - Dialog::show(scene, 0x54ea, 768, 769, 0xd9, 0xe5, 1, 2); + dialog->show(125, scene, 768, 769, textColorMansionGuard, textColorProfessor, 1, 2); playAnimation(770, 0, true, true, true); playAnimation(771, 1, true, true, true); - Dialog::showMono(scene, 0x5523, 0, 0xd1, 0); + dialog->showMono(126, scene, 0, textColorMark, 0); playAnimation(770, 0, true, true, true); playAnimation(771, 1, true, true, true); playSound(5, 3); @@ -2090,11 +3026,11 @@ bool TeenAgentEngine::processCallback(uint16 addr) { waitAnimation(); setOns(0, 74); hideActor(); - Dialog::showMono(scene, 0x5556, 775, 0xd0, 1); + dialog->showMono(127, scene, 775, textColorJohnNoty, 1); playAnimation(771, 1, true, true, true); playAnimation(776, 0); - Dialog::show(scene, 0x55f7, 777, 778, 0xd0, 0xe5, 1, 2); //i have to kill you anyway + dialog->show(128, scene, 777, 778, textColorJohnNoty, textColorProfessor, 1, 2); playAnimation(779, 0, true, true, true); playAnimation(780, 1, true, true, true); @@ -2151,7 +3087,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) { setOns(0, 80); playAnimation(792, 3, true, true, true); - Dialog::show(scene, 0x5665, 0, 791, 0xd1, 0xd0, 0, 4); + dialog->show(129, scene, 0, 791, textColorMark, textColorJohnNoty, 0, 4); playAnimation(792, 3, true, true, true); moveTo(40, 171, 4); @@ -2161,43 +3097,47 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playAnimation(0, 3); loadScene(31, 298, 177, 4); - SET_FLAG(0xDBD9, 1); - } else { - displayMessage(0x52fe); - } + SET_FLAG(dsAddr_MansionJohnNotyEscapingFlag, 1); + } else + displayMessage(dsAddr_ventFirstMsg); // "I'd better stop this ventilator first" } else - displayMessage(0x52cb); - return true; + displayMessage(dsAddr_noSaladMsg); // "I don't want to turn myself into a salad" + break; case 0x783d: - Dialog::pop(scene, 0xdb36, 0, 797, 0xd1, 0xd0, 0, 1); - return true; + dialog->pop(scene, dsAddr_dialogStackJohnNotyEndgame, 0, 797, textColorMark, textColorJohnNoty, 0, 1); + break; case 0x7966: - if (CHECK_FLAG(0xDBA4, 1)) - return false; - return processCallback(0x60b5); + if (CHECK_FLAG(dsAddr_lightOnFlag, 1)) + retVal = false; + else + fnEgoScaredBySpider(); + break; case 0x7ad0: case 0x7ad7: - return !processCallback(0x70e0); + retVal = !fnIsCookGone(); + break; case 0x7ab9: - if (CHECK_FLAG(0xDBB6, 1)) - return false; - Dialog::showMono(scene, 0x37d0, 0, 0xd1, 0); - SET_FLAG(0xDBB6, 1); - return true; + if (CHECK_FLAG(dsAddr_vgaArtistQuipAlreadySaidFlag, 1)) + retVal = false; + else { + dialog->showMono(90, scene, 0, textColorMark, 0); + SET_FLAG(dsAddr_vgaArtistQuipAlreadySaidFlag, 1); + } + break; case 0x7ade: - if (CHECK_FLAG(0xdbcd, 1)) { - displayMessage(0x4f69); - return true; - } else - return false; + if (CHECK_FLAG(dsAddr_MansionRadioBrokenFlag, 1)) + displayMessage(dsAddr_whatInsideMsg); // "I was always curious what's inside these things" + else + retVal = false; + break; - case 0x7f23://Use grenade on captains drawer - if (CHECK_FLAG(0xDBDF, 3)) { + case 0x7f23: // Use grenade on captains drawer + if (CHECK_FLAG(dsAddr_FirstActTrialState, 3)) { enableOn(false); playSound(5, 3); playSound(58, 11); @@ -2207,123 +3147,120 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playActorAnimation(870); playSound(54, 15); playActorAnimation(871); - SET_FLAG(0xDBE6, 1); + SET_FLAG(dsAddr_captainDrawerState, 1); setOns(1, 0x66); moveTo(224, 194, 0, true); - displayCutsceneMessage(0x57df, 30423); - inventory->remove(0x59); + displayCutsceneMessage(dsAddr_cutsceneMsg1, 23, 95); // "sixty seven rude words later" + inventory->remove(kInvItemRopeAndGrenade); enableOn(true); - } else { - displayMessage(0x5de2); - } - return true; + } else + displayMessage(dsAddr_captainWatchingMsg); // "with captain watching? Better not" + break; - case 0x505c: { - //suspicious stuff - Common::Point p = scene->getPosition(); - if (p.x != 203 && p.y != 171) - moveTo(203, 169, 2); - else - moveTo(203, 169, 1); - } - return true; + case csAddr_egoSuspiciousPosition: + fnEgoSuspiciousPosition(); + break; case 0x509a: - processCallback(0x505c); + fnEgoSuspiciousPosition(); setOns(1, 0); playSound(5, 10); playActorAnimation(543); - inventory->add(15); + inventory->add(kInvItemBranch); disableObject(9); - return true; + break; case 0x7802: - if (CHECK_FLAG(0xDBD7, 1)) { - if (CHECK_FLAG(0xDBD8, 1)) - displayMessage(0x52f6); + if (CHECK_FLAG(dsAddr_MansionThruFanByTimePillFlag, 1)) { + if (CHECK_FLAG(dsAddr_MansionVentFanStoppedFlag, 1)) + displayMessage(dsAddr_nahMsg); // "Nah" else { playSound(71, 4); playActorAnimation(796); setLan(1, 0); - SET_FLAG(0xDBD8, 1); + SET_FLAG(dsAddr_MansionVentFanStoppedFlag, 1); } } else - displayMessage(0x52cb); - return true; + displayMessage(dsAddr_noSaladMsg); // "I don't want to turn myself into a salad" + break; case 0x78e0: - processCallback(0x505c); - return false; + fnEgoSuspiciousPosition(); + retVal = false; + break; case 0x78e7: - processCallback(0x557e); - return false; - case 0x78ee: - processCallback(0x557e); - return false; + fnEgoDefaultPosition(); + retVal = false; + break; case 0x78f5: - if (CHECK_FLAG(0xDB95, 1)) { - displayMessage(0x3E75); - return true; + if (CHECK_FLAG(dsAddr_carTrunkEmptyFlag, 1)) { + displayMessage(dsAddr_bootEmptyMsg); // "There's nothing else in the boot" } else - return false; + retVal = false; + break; case 0x7919: - if (!CHECK_FLAG(0xDBA5, 1)) - return false; - displayMessage(0x3E98); - return true; + if (!CHECK_FLAG(dsAddr_laundryState, 1)) + retVal = false; + else + displayMessage(dsAddr_clothesDryMsg); // "The clothes are dry now." + break; case 0x7950: - if (!CHECK_FLAG(0xDBB1, 1)) - return false; - - displayMessage(0x3DAF); - return true; + if (CHECK_FLAG(dsAddr_nutSwappedForAppleFlag, 1)) + displayMessage(dsAddr_nutRealMsg); // "Only the nut is real" + else + retVal = false; + break; case 0x7975: - if (CHECK_FLAG(0xDBA4, 1)) - return false; - displayMessage(0x3832); - return true; + if (CHECK_FLAG(dsAddr_lightOnFlag, 1)) + retVal = false; + else + displayMessage(dsAddr_shutValveMsg); // "Shutting the valve shook the dirt from the wall..." + break; case 0x7987: case 0x7996: case 0x79a5: case 0x79b4: - if (CHECK_FLAG(0xDBA4, 1)) - return false; - return processCallback(0x61fe); + if (CHECK_FLAG(dsAddr_lightOnFlag, 1)) + retVal = false; + else + fnTooDark(); + break; case 0x79d2: - if (!CHECK_FLAG(0xDB9D, 1)) - return false; - displayMessage(0x3590); - return true; + if (!CHECK_FLAG(dsAddr_gotNeedleAlreadyFlag, 1)) + retVal = false; + else + displayMessage(dsAddr_ordinaryHaystackMsg); // "Just an ordinary hay stack. Now." + break; case 0x7af0: - if (!processCallback(0x70e0)) - return true; - return false; + if (fnIsCookGone()) + retVal = false; + break; case 0x8117: - Dialog::show(scene, 0x0a41, 0, 529, 0xd1, 0xd9, 0, 1); + dialog->show(9, scene, 0, 529, textColorMark, textColorMansionGuard, 0, 1); playSound(5, 2); playSound(5, 44); playAnimation(642, 0, true); playActorAnimation(641, true); waitAnimation(); - Dialog::show(scene, 0x0aff, 0, 529, 0xd1, 0xd9, 0, 1); + dialog->show(10, scene, 0, 529, textColorMark, textColorMansionGuard, 0, 1); wait(170); - Dialog::show(scene, 0x0ba0, 0, 529, 0xd1, 0xd9, 0, 1); + dialog->show(11, scene, 0, 529, textColorMark, textColorMansionGuard, 0, 1); moveRel(0, 1, 0); wait(100); - Dialog::show(scene, 0x0c10, 0, 529, 0xd1, 0xd9, 0, 1); - inventory->remove(50); - processCallback(0x9d45); - return true; + dialog->show(12, scene, 0, 529, textColorMark, textColorMansionGuard, 0, 1); + inventory->remove(kInvItemNugget); + fnMansionIntrusionAttempt(); + break; case 0x8174: setOns(0, 0); @@ -2336,7 +3273,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) { setOns(1, 15); disableObject(3); enableObject(9); - return true; + break; case 0x81c2: playSound(56, 11); @@ -2353,12 +3290,12 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playActorAnimation(588, true); waitAnimation(); wait(50); - displayMessage(0x367f); - inventory->remove(34); - SET_FLAG(0xDBA1, 1); - return true; + displayMessage(dsAddr_itsGoneMsg); // "At least it's gone" + inventory->remove(kInvItemPaintedPotato); + SET_FLAG(dsAddr_mansionTreeHollowEmptyFlag, 1); + break; - case 0x823d: //grappling hook on the wall + case 0x823d: // grappling hook on the wall playSound(5, 3); for (byte i = 16; i <= 28; i += 2) playSound(65, i); @@ -2367,27 +3304,26 @@ bool TeenAgentEngine::processCallback(uint16 addr) { for (byte i = 3; i <= 18; i += 3) playSound(56, i); - displayAsyncMessage(0x3ace, 3878, 20, 37, 0xd9); + displayAsyncMessage(dsAddr_heyLetGoMsg, 38, 12, 20, 37, textColorMansionGuard); // "Hey, let go, will ya?!" playActorAnimation(621, true); playAnimation(623, 1, true); waitAnimation(); - displayAsyncMessage(0x3ae6, 3870, 1, 9, 0xd9); + displayAsyncMessage(dsAddr_aaahhhMsg, 30, 12, 1, 9, textColorMansionGuard); // "Aaaaaaaaaaaaahhh!" playSound(35, 1); playActorAnimation(622, true); playAnimation(624, 0, true); waitAnimation(); wait(150); - displayMessage(0x3afd); - - inventory->remove(43); - processCallback(0x9d45); - return true; + displayMessage(dsAddr_oopsMsg); // "Oops" + inventory->remove(kInvItemGrapplingHook); + fnMansionIntrusionAttempt(); + break; - case 0x8312: //hedgehog + plastic apple - Dialog::showMark(scene, 0x3000); + case 0x8312: // hedgehog + plastic apple + dialog->showMark(76, scene); setLan(1, 0); playSound(5, 24); playSound(26, 32); @@ -2405,13 +3341,13 @@ bool TeenAgentEngine::processCallback(uint16 addr) { waitAnimation(); disableObject(6); - displayMessage(0x363f); - inventory->remove(27); - inventory->add(28); - return true; + displayMessage(dsAddr_lifeIsBrutalMsg); // "Life is brutal" + inventory->remove(kInvItemPlasticApple); + inventory->add(kInvItemCone); + break; case 0x839f: - inventory->remove(32); + inventory->remove(kInvItemDart); playSound(37, 14); playSound(16, 17); playActorAnimation(564, true); @@ -2437,10 +3373,10 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playSound(55, 18); playAnimation(581, 1); disableObject(2); - SET_FLAG(0xDB9F, 1); - return true; + SET_FLAG(dsAddr_beesGoneFlag, 1); + break; - case 0x84c7: //using paddle on boat + case 0x84c7: // using paddle on boat playSound(20, 9); playActorAnimation(530); loadScene(16, 236, 95, 1); @@ -2451,12 +3387,12 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playActorAnimation(533); setOns(0, 9); moveTo(236, 95, 1, true); - return true; + break; - case 0x8538://Sharpen sickle on well + case 0x8538: // Sharpen sickle on well moveTo(236, 190, 0); setOns(2, 0); - //TODO: Remove handle sprite + // FIXME: Add code to Remove handle sprite (visible GFX glitch) playSound(5, 4); playSound(14, 14); playSound(14, 33); @@ -2464,52 +3400,58 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playActorAnimation(643); setOns(2, 43); moveTo(236, 179, 3); - inventory->remove(0x2c); - inventory->add(0x2e); - return true; + inventory->remove(kInvItemSickleBlunt); + inventory->add(kInvItemSickleSharp); + break; + + case 0x85d6: + displayMessage(dsAddr_paddleBrokenMsg); // "The paddle is BROKEN" + break; case 0x85eb: - if (CHECK_FLAG(0xDBB0, 1)) { + if (CHECK_FLAG(dsAddr_squirrelNutState, 1)) { enableObject(6); playSound(25, 10); playSound(25, 14); playSound(25, 18); playActorAnimation(559); setOns(1, 23); - SET_FLAG(0xDBB0, 2); + SET_FLAG(dsAddr_squirrelNutState, 2); } else - displayMessage(0x3d86); - - return true; + displayMessage(dsAddr_dontWorkPurposeMsg); // "I usually don't work without a purpose" + break; case 0x863d: playSound(12, 4); playSound(50, 20); playSound(50, 29); playActorAnimation(554); - inventory->remove(19); - inventory->add(22); - return true; + inventory->remove(kInvItemChocCandy); + inventory->add(kInvItemHeartShapedCandy); + break; case 0x8665: playSound(5, 3); for (byte i = 12; i <= 24; i += 2) playSound(56, i); playActorAnimation(567); - inventory->remove(12); - inventory->add(33); - return true; + inventory->remove(kInvItemFeatherDusterClean); + inventory->add(kInvItemFeatherDusterDirty); + break; case 0x862c: - displayMessage(CHECK_FLAG(0xDBB0, 1) ? 0x4882 : 0x3457); - return true; + if (CHECK_FLAG(dsAddr_squirrelNutState, 1)) + displayMessage(dsAddr_nutRakeMsg); // "It's pointless, the nut will slip between the rake's teeth" + else + displayMessage(dsAddr_objErrorMsg); // "That's no good" + break; - case 0x86a9: //correcting height of the pole with spanner - if (CHECK_FLAG(0xDB92, 1)) { - displayMessage(0x3d40); + case 0x86a9: // correcting height of the pole with spanner + if (CHECK_FLAG(dsAddr_alreadyAdjustedHoopPoleFlag, 1)) { + displayMessage(dsAddr_noNeedMsg); // "No need to do it again" } else { - SET_FLAG(0xDB92, 1); - Dialog::show(scene, 0x0fcd, 0, 502, 0xd0, 0xe5, 0, 1); + SET_FLAG(dsAddr_alreadyAdjustedHoopPoleFlag, 1); + dialog->show(17, scene, 0, 502, textColorMark, textColorSonny, 0, 1); waitLanAnimationFrame(1, 7); playSound(5, 16); playSound(1, 25); @@ -2528,7 +3470,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playSound(5, 43); playSound(61, 70); playSound(61, 91); - displayAsyncMessage(0x3cfb, 28877, 6, 17); + displayAsyncMessage(dsAddr_ConfusionMsg, 77, 90, 6, 17); // "!?&!" playActorAnimation(505, true); playAnimation(507, 0, true); waitAnimation(); @@ -2552,8 +3494,8 @@ bool TeenAgentEngine::processCallback(uint16 addr) { disableObject(15); disableObject(16); moveTo(162, 164, 2); - displayMessage(0x3d01, 0xe5, 24390); - displayMessage(0x3d20, 0xd8, 24410); + displayMessage(dsAddr_grandpaPromiseMsg, textColorSonny, 70, 76); // "But grandpa, you promised!" + displayMessage(dsAddr_ohLetsGoMsg, textColorGrandpa, 90, 76); // "Oh all right. Let's go" moveTo(162, 191, 2); setOns(1, 0); setOns(2, 0); @@ -2572,133 +3514,118 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playAnimation(512, 0); wait(100); - displayMessage(0x3d3a); + displayMessage(dsAddr_byeMsg); // "Bye." { Object *obj = scene->getObject(7); - obj->actor_rect.left = obj->actor_rect.right = 228; - obj->actor_rect.top = obj->actor_rect.bottom = 171; - obj->actor_rect.save(); + obj->actorRect.left = obj->actorRect.right = 228; + obj->actorRect.top = obj->actorRect.bottom = 171; + obj->actorRect.save(); } { Object *obj = scene->getObject(8); - obj->actor_rect.left = obj->actor_rect.right = 290; - obj->actor_rect.top = obj->actor_rect.bottom = 171; - obj->actor_rect.save(); + obj->actorRect.left = obj->actorRect.right = 290; + obj->actorRect.top = obj->actorRect.bottom = 171; + obj->actorRect.save(); } } - return true; + break; - case 0x88c9: //give flower to old lady - if (CHECK_FLAG(0xDB9A, 1)) - return processCallback(0x890b); - - inventory->remove(10); - SET_FLAG(0xDB9A, 1); - processCallback(0x88DE); - return true; - - case 0x88de: - playSound(5, 2); - Dialog::show(scene, 0x1B5F, 0, 523, 0xd1, 0xe5, 0, 1); - playActorAnimation(537, true); - playAnimation(538, 0, true); - waitAnimation(); - wait(100); - Dialog::show(scene, 0x1BE0, 0, 523, 0xd1, 0xe5, 0, 1); - return true; + case 0x88c9: // give flower to old lady + if (CHECK_FLAG(dsAddr_givenFlowerToOldLadyAlreadyFlag, 1)) + fnGiveAnotherFlowerToOldLady(); + else { + inventory->remove(kInvItemFirstFlower); + SET_FLAG(dsAddr_givenFlowerToOldLadyAlreadyFlag, 1); + fnGivingFlowerToOldLady(); + } + break; - case 0x890b: - Dialog::pop(scene, 0xDAF0, 0, 523, 0xd1, 0xe5, 0, 1); - return true; + case csAddr_givingFlowerToOldLady: + fnGivingFlowerToOldLady(); + break; - case 0x8918://give flower to old lady - if (CHECK_FLAG(0xDB9A, 1)) - return processCallback(0x890B); + case csAddr_giveAnotherFlowerToOldLady: + fnGiveAnotherFlowerToOldLady(); + break; - inventory->remove(11); - SET_FLAG(0xDB9A, 1); - processCallback(0x88DE); - return true; + case 0x8918: // give flower to old lady + if (CHECK_FLAG(dsAddr_givenFlowerToOldLadyAlreadyFlag, 1)) + fnGiveAnotherFlowerToOldLady(); + else { + inventory->remove(kInvItemSecondFlower); + SET_FLAG(dsAddr_givenFlowerToOldLadyAlreadyFlag, 1); + fnGivingFlowerToOldLady(); + } + break; case 0x892d: - if (CHECK_FLAG(0xDB9B, 1)) - return processCallback(0x89aa); + if (CHECK_FLAG(dsAddr_givenFlowerToAnneAlreadyFlag, 1)) + fnGiveAnotherFlowerToAnne(); + else { + fnGivingFlowerToAnne(); + inventory->remove(kInvItemFirstFlower); + SET_FLAG(dsAddr_givenFlowerToAnneAlreadyFlag, 1); + } + break; - processCallback(0x8942); - inventory->remove(10); - SET_FLAG(0xDB9B, 1); - return true; + case csAddr_givingFlowerToAnne: + fnGivingFlowerToAnne(); + break; - case 0x8942: - Dialog::show(scene, 0x2293, 0, 524, 0xd1, 0xe5, 0, 2); - playSound(5, 10); - playActorAnimation(540, true); - playAnimation(539, 1, true); - waitAnimation(); - wait(100); - Dialog::show(scene, 0x24b1, 0, 524, 0xd1, 0xe5, 0, 2); - wait(50); - Dialog::show(scene, 0x24d7, 0, 524, 0xd1, 0xe5, 0, 2); - Dialog::show(scene, 0x2514, 0, 524, 0xd1, 0xe5, 0, 2); - wait(50); - moveRel(0, 1, 0); - Dialog::show(scene, 0x2570, 0, 524, 0xd1, 0xe5, 0, 2); - moveRel(0, -1, 0); - wait(50); - return true; - - case 0x89aa: - Dialog::pop(scene, 0xdb02, 0, 524, 0xd1, 0xe5, 0, 2); - return true; + case csAddr_giveAnotherFlowerToAnne: + fnGiveAnotherFlowerToAnne(); + break; case 0x89b7: - if (CHECK_FLAG(0xDB9B, 1)) - return processCallback(0x89aa); - - processCallback(0x8942); - inventory->remove(11); - SET_FLAG(0xDB9B, 1); - return true; + if (CHECK_FLAG(dsAddr_givenFlowerToAnneAlreadyFlag, 1)) + fnGiveAnotherFlowerToAnne(); + else { + fnGivingFlowerToAnne(); + inventory->remove(kInvItemSecondFlower); + SET_FLAG(dsAddr_givenFlowerToAnneAlreadyFlag, 1); + } + break; case 0x89cc: - inventory->remove(23); + inventory->remove(kInvItemWrappedCandy); playSound(5, 6); - Dialog::show(scene, 0x2634, 0, 524, 0xd1, 0xe5, 0, 2); + dialog->show(60, scene, 0, 524, textColorMark, textColorAnne, 0, 2); + // FIXME - Dialog #61 not explicitly called. Does Dialog #60 run on somehow? playActorAnimation(555, true); playAnimation(556, 1, true); waitAnimation(); playActorAnimation(557, true); playAnimation(558, 1, true); waitAnimation(); - Dialog::show(scene, 0x2971, 0, 524, 0xd1, 0xe5, 0, 2); - inventory->add(24); - return true; + dialog->show(62, scene, 0, 524, textColorMark, textColorAnne, 0, 2); + inventory->add(kInvItemRibbon); + break; case 0x8a22: playSound(45, 16); playActorAnimation(560); - inventory->remove(26); - inventory->add(27); + inventory->remove(kInvItemNut); + inventory->add(kInvItemPlasticApple); wait(50); - Dialog::show(scene, 0x1ecd, 0, 523, 0xd1, 0xe5, 0, 1); - Dialog::show(scene, 0x1f09, 0, 523, 0xd1, 0xe5, 0, 1); - SET_FLAG(0xDBB1, 1); - return true; - - case 0x8a6f: //banknote + ann - if (CHECK_FLAG(0xDBB5, 1)) { - Dialog::show(scene, 0x2992, 0, 524, 0xd1, 0xe5, 0, 2); + dialog->show(44, scene, 0, 523, textColorMark, textColorOldLady, 0, 1); + dialog->show(45, scene, 0, 523, textColorMark, textColorOldLady, 0, 1); + SET_FLAG(dsAddr_nutSwappedForAppleFlag, 1); + break; + + case 0x8a6f: // banknote + ann + if (CHECK_FLAG(dsAddr_examinedBanknoteFlag, 1)) { + dialog->show(63, scene, 0, 524, textColorMark, textColorAnne, 0, 2); playSound(5, 3); playSound(5, 20); playAnimation(671, 1, true); playActorAnimation(670, true); waitAnimation(); //playAnimation(672, 1); - Dialog::show(scene, 0x2a00, 524, 672, 0xd1, 0xe5, 0, 2); + dialog->show(64, scene, 524, 672, textColorMark, textColorAnne, 0, 2); //playAnimation(672, 1); playSound(83, 12); - displayAsyncMessage(0x4a5b, 36684, 23, 38, 0xe5); + displayAsyncMessage(dsAddr_hundredBucksMsg, 204, 114, 23, 38, textColorAnne); // "A hundred bucks!!!" playActorAnimation(673); loadScene(11, scene->getPosition()); playSound(24, 31); @@ -2710,14 +3637,14 @@ bool TeenAgentEngine::processCallback(uint16 addr) { loadScene(28, 0, 167, 2); playMusic(10); moveTo(66, 167, 2); - displayMessage(0x4a6f); + displayMessage(dsAddr_wantBloodMsg); // "I want Blood!" inventory->clear(); - inventory->add(29); + inventory->add(kInvItemSuperGlue); } else - displayMessage(0x4a29); - return true; + displayMessage(dsAddr_showHerMoneyMsg); // "If I just show her the money, she might take it" + break; - case 0x8b82: //use fan on laundry + case 0x8b82: // use fan on laundry setOns(0, 0); playSound(5, 3); playSound(5, 6); @@ -2725,16 +3652,16 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playSound(92, 20); playSound(92, 38); playSound(92, 58); - displayAsyncMessage(0x464a, 36510, 58, 67); + displayAsyncMessage(dsAddr_yawnMsg, 30, 114, 58, 67); // "(yawn)" playActorAnimation(602); playSound(5, 3); playActorAnimation(603); setOns(0, 27); - SET_FLAG(0xDBA5, 1); - return true; + SET_FLAG(dsAddr_laundryState, 1); + break; - case 0x8bfc://Give bone to dog - displayMessage(0x3c31); + case 0x8bfc: // Give bone to dog + displayMessage(dsAddr_hereBoyMsg); // "Here, boy" playSound(5, 3); playSound(26, 13); playActorAnimation(657, true); @@ -2744,20 +3671,20 @@ bool TeenAgentEngine::processCallback(uint16 addr) { reloadLan(); playAnimation(659, 0); - inventory->remove(36); - SET_FLAG(0xDBAD, 1); + inventory->remove(kInvItemBone); + SET_FLAG(dsAddr_dogHasBoneFlag, 1); { Object *o = scene->getObject(7); - o->actor_rect.left = o->actor_rect.right = 297; - o->actor_rect.top = o->actor_rect.bottom = 181; - o->actor_orientation = 1; + o->actorRect.left = o->actorRect.right = 297; + o->actorRect.top = o->actorRect.bottom = 181; + o->actorOrientation = 1; o->save(); } { Object *o = scene->getObject(9); - o->actor_rect.left = o->actor_rect.right = 297; - o->actor_rect.top = o->actor_rect.bottom = 181; - o->actor_orientation = 1; + o->actorRect.left = o->actorRect.right = 297; + o->actorRect.top = o->actorRect.bottom = 181; + o->actorOrientation = 1; o->save(); } { @@ -2767,10 +3694,10 @@ bool TeenAgentEngine::processCallback(uint16 addr) { w->save(); } wait(100); - displayMessage(0x3c3d); - return true; + displayMessage(dsAddr_friendsNowMsg); // "I hope we're friends now" + break; - case 0x8c6e://Use car jack on rock + case 0x8c6e: // Use car jack on rock playSound(5, 3); playSound(26, 13); playSound(24, 22); @@ -2782,10 +3709,10 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playActorAnimation(593); setOns(0, 28); enableObject(1); - inventory->remove(35); - return true; + inventory->remove(kInvItemCarJack); + break; - case 0x8cc8://Cut bush with sickle + case 0x8cc8: // Cut bush with sickle playSound(5, 3); playActorAnimation(644); setOns(1, 45); @@ -2799,16 +3726,16 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playActorAnimation(646); playSound(5, 21); playActorAnimation(647); - SET_FLAG(0xdaca, 1); - inventory->remove(0x2e); + SET_FLAG(dsAddr_caveThornsCutDownFlag, 1); + inventory->remove(kInvItemSickleSharp); disableObject(2); - scene->getObject(3)->actor_rect.right = 156; + scene->getObject(3)->actorRect.right = 156; scene->getObject(3)->save(); - return true; + break; - case 0x8d79: //mouse falls back from the hole (cave) - if (CHECK_FLAG(0, 1)) { - inventory->add(48); + case csAddr_mouseOutOfHoleTimeout: // mouse falls back from the hole (cave) + if (CHECK_FLAG(dsAddr_timedCallbackState, 1)) { + inventory->add(kInvItemMouse); playSound(24, 26); playActorAnimation(650, true); playAnimation(651, 2, true); @@ -2824,54 +3751,26 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playActorAnimation(654, true); playAnimation(655, 2, true); waitAnimation(); - displayMessage(0x3bf6); - inventory->add(49); + displayMessage(dsAddr_mouseGoneMsg); // "The mouse has gone!" + inventory->add(kInvItemRock); setLan(2, 4, 27); enableObject(4, 27); - SET_FLAG(0xdba9, 0); + SET_FLAG(dsAddr_mouseHoleState, 0); } - SET_FLAG(0, 0); - return true; + SET_FLAG(dsAddr_timedCallbackState, 0); + break; - case 0x8d57: - if (CHECK_FLAG(0, 0)) { - playSound(5, 2); - playSound(15, 12); - playActorAnimation(638); - inventory->remove(48); - setTimerCallback(0x8d79, 100); - SET_FLAG(0, 1); - } else if (CHECK_FLAG(0, 1)) { - playSound(5, 2); - playSound(52, 13); - playActorAnimation(648); - setOns(1, 46); - inventory->remove(49); - setTimerCallback(0x8d79, 100); - SET_FLAG(0, 2); - } else if (CHECK_FLAG(0, 2)) { - playActorAnimation(649); - setOns(1, 47); - wait(300); - for (byte i = 1; i <= 37; i += 4) - playSound(68, i); - playAnimation(639, 2); - setOns(0, 42); - enableObject(6); - disableObject(5); - SET_FLAG(0xDBAB, 1); - SET_FLAG(0, 0); - setTimerCallback(0, 0); - } - return true; + case csAddr_putRockInHole: + fnPutRockInHole(); + break; case 0x8f1d: - Dialog::showMark(scene, 0x2dd6); + dialog->showMark(72, scene); for (uint i = 16; i <= 30; i += 2) playSound(56, i); playSound(2, 64); playSound(3, 74); - displayAsyncMessage(0x34c7, 25812, 35, 50); + displayAsyncMessage(dsAddr_lastChanceMsg, 212, 80, 35, 50); // "Last chance?" playActorAnimation(516, true); playAnimation(517, 2, true); playAnimation(518, 3, true); @@ -2880,12 +3779,12 @@ bool TeenAgentEngine::processCallback(uint16 addr) { setLan(4, 0); disableObject(2); disableObject(3); - inventory->remove(2); - SET_FLAG(0xDB96, 1); - return true; + inventory->remove(kInvItemShotgun); + SET_FLAG(dsAddr_birdsGoneFromScarecrowFlag, 1); + break; case 0x8fc8: - displayMessage(0x3b2f); + displayMessage(dsAddr_comeHereMsg); // "Come here, I've got something for you" waitLanAnimationFrame(2, 4); playSound(5, 3); playActorAnimation(627, true); @@ -2894,25 +3793,25 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playSound(41, 10); playSound(41, 47); playSound(55, 52); - if (CHECK_FLAG(0xDBA8, 1)) { + if (CHECK_FLAG(dsAddr_HankerchiefInMouseholeFlag, 1)) { setLan(2, 0); playActorAnimation(628, true); playAnimation(634, 1, true); waitAnimation(); disableObject(4); - displayMessage(0x3b6c); - SET_FLAG(0xDBA9, 1); + displayMessage(dsAddr_trappedMouseMsg); // "The mouse is trapped!" + SET_FLAG(dsAddr_mouseHoleState, 1); } else { playActorAnimation(628, true); playAnimation(630, 1, true); waitAnimation(); - displayMessage(0x3b59); + displayMessage(dsAddr_cantCatchMsg); // "I can't catch it!" } - return true; + break; - case 0x9054: //mouse hole - if (CHECK_FLAG(0xDBAB, 1)) { - displayMessage(0x3c0b); + case 0x9054: // mouse hole + if (CHECK_FLAG(dsAddr_mouseGotGoldNuggetFlag, 1)) { + displayMessage(dsAddr_nonsenseMsg); // "Nonsense" } else { playSound(5, 11); playSound(49, 21); @@ -2920,50 +3819,48 @@ bool TeenAgentEngine::processCallback(uint16 addr) { setOns(5, 40); moveTo(239, 139, 0, true); playActorAnimation(633); - SET_FLAG(0xDBA8, 1); - inventory->remove(47); - if (!CHECK_FLAG(0xDBAA, 1)) { - SET_FLAG(0xDBAA, 1); - displayMessage(0x3b8b); + SET_FLAG(dsAddr_HankerchiefInMouseholeFlag, 1); + inventory->remove(kInvItemHandkerchief); + if (!CHECK_FLAG(dsAddr_mouseNerveMsgSaidFlag, 1)) { + SET_FLAG(dsAddr_mouseNerveMsgSaidFlag, 1); + displayMessage(dsAddr_mouseNerveMsg); // "Boy, this mouse has some nerve!" } } - return true; + break; case 0x933d: - if (!processCallback(0x70e0)) - return true; - - if (CHECK_FLAG(0xdbcd, 1)) { - displayMessage(0x4f3d); - return true; + if (fnIsCookGone()) { + if (CHECK_FLAG(dsAddr_MansionRadioBrokenFlag, 1)) + displayMessage(dsAddr_breakFlattenMsg); // "I wanted to break it, not to flatten it!" + else { + setOns(1, 0); + playSound(5, 3); + playSound(5, 33); + playSound(24, 13); + playSound(24, 19); + playSound(24, 23); + playSound(24, 26); + playSound(24, 29); + playSound(23, 21); + playSound(74, 25); + playActorAnimation(716); + setOns(1, 66); + SET_FLAG(dsAddr_MansionRadioBrokenFlag, 1); + } } + break; - setOns(1, 0); - playSound(5, 3); - playSound(5, 33); - playSound(24, 13); - playSound(24, 19); - playSound(24, 23); - playSound(24, 26); - playSound(24, 29); - playSound(23, 21); - playSound(74, 25); - playActorAnimation(716); - setOns(1, 66); - SET_FLAG(0xDBCD, 1); - return true; - - case 0x93af: //sheet + hot plate - if (!processCallback(0x70e0)) - return true; - playSound(5, 3); - playSound(86, 11); - playActorAnimation(720); - inventory->add(68); - inventory->remove(55); - return true; + case 0x93af: // sheet + hot plate + if (fnIsCookGone()) { + playSound(5, 3); + playSound(86, 11); + playActorAnimation(720); + inventory->add(kInvItemBurningPaper); + inventory->remove(kInvItemSheetOfPaper); + } + break; - case 0x93d5: //burning sheet + plate + case 0x93d5: // burning sheet + plate setOns(4, 0); playSound(87, 7); playActorAnimation(722); @@ -2971,323 +3868,298 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playSound(88, 12); playSound(87, 24); playActorAnimation(723); - displayMessage(0x502b); + displayMessage(dsAddr_burnBabyMsg); // "Burn, baby, burn!" wait(100); playSound(89, 4); playActorAnimation(724); setOns(4, 68); - displayMessage(0x503e); - inventory->remove(68); - SET_FLAG(0xDBD0, 1); - return true; - - case 0x98fa://Right click to open toolbox - inventory->remove(3); - inventory->add(4); - inventory->add(35); + displayMessage(dsAddr_voilaMsg); // "Voila" + inventory->remove(kInvItemBurningPaper); + SET_FLAG(dsAddr_MansionPutBurningPaperInFridgeFlag, 1); + break; + + case csAddr_openFullToolbox: // Right click to open toolbox + inventory->remove(kInvItemToolboxFull); + inventory->add(kInvItemToolboxHalfEmpty); + inventory->add(kInvItemCarJack); inventory->activate(false); inventory->resetSelectedObject(); - displayMessage(0x3468); - return true; + displayMessage(dsAddr_carJackMsg); // "Wow! There's a car jack inside! Great!" + break; - case 0x9910: - inventory->remove(4); - inventory->add(5); + case csAddr_openHalfEmptyToolbox: + inventory->remove(kInvItemToolboxHalfEmpty); + inventory->add(kInvItemSpanner); inventory->activate(false); inventory->resetSelectedObject(); - displayMessage(0x3490); - return true; + displayMessage(dsAddr_spannerMsg); // "There's something else inside the toolbox! A spanner!" + break; - - //very last part of the game: - case 0x671d: + case 0x671d: // very last part of the game moveTo(153, 163, 4); playActorAnimation(973); - if (CHECK_FLAG(0xDBC1, 0)) { - SET_FLAG(0xDBC1, _rnd.getRandomNumber(5) + 1); + if (CHECK_FLAG(dsAddr_drawerPuzzleBookValue, 0)) { + SET_FLAG(dsAddr_drawerPuzzleBookValue, _rnd.getRandomNumber(5) + 1); } loadScene(30, 18, 159, 2); - return true; + break; case 0x67a6: loadScene(29, 149, 163, 1); playActorAnimation(974); moveTo(160, 188, 0); - return true; + break; case 0x6805: - processCallback(0x6849); + fnEgoBottomRightTurn(); playSound(32, 12); playActorAnimation(694); playSound(15, 8); playAnimation(693, 0); setOns(6, 0); - displayMessage(0x4cc7); - inventory->add(54); + displayMessage(dsAddr_fullAutomaticMsg); // "Fully Automatic" + inventory->add(kInvItemVideoTape); disableObject(4); - return true; + break; - case 0x6849: { - Common::Point p = scene->getPosition(); - if (p.x == 208 && p.y == 151) { - moveRel(0, 0, 2); - } else - moveTo(208, 151, 1); - } - return true; + case csAddr_egoBottomRightTurn: + fnEgoBottomRightTurn(); + break; - case 0x687a: //using the book - if (CHECK_FLAG(0xDBC2, 1)) { - displayMessage(0x4ca0); + case 0x687a: // using the book + if (CHECK_FLAG(dsAddr_drawerPuzzleSolvedFlag, 1)) { + displayMessage(dsAddr_dontMessMsg); // "I don't need to mess with it anymore" } else { playSound(49, 5); playSound(49, 17); playActorAnimation(691); - if (!processCallback(0x68e6)) { - if (!CHECK_FLAG(0xDBC0, 1)) { - displayMessage(0x4c61); - SET_FLAG(0xDBC0, 1); + if (!fnCheckingDrawers()) { + if (!CHECK_FLAG(dsAddr_drawerPuzzleBookMessageFlag, 1)) { + displayMessage(dsAddr_bookHeldMsg); // "Something's got hold of the book!" + SET_FLAG(dsAddr_drawerPuzzleBookMessageFlag, 1); } } else { - playSound(15, 8); //secret compartment + playSound(15, 8); // secret compartment playAnimation(692, 0); setOns(6, 59); enableObject(4); - displayMessage(0x4c84); - SET_FLAG(0xDBC2, 1); + displayMessage(dsAddr_secretCompartmentMsg); // "Wow! A secret compartment!" + SET_FLAG(dsAddr_drawerPuzzleSolvedFlag, 1); } } - return true; + break; - case 0x68e6: { //checking drawers - uint16 v = GET_FLAG(0xDBC1) - 1; - uint bx = 0xDBB7; - if (GET_FLAG(bx + v) != 1) - return false; - - uint16 sum = 0; - for (uint i = 0; i < 6; ++i) { - sum += GET_FLAG(bx + i); - } - return sum == 1; - } + case csAddr_checkingDrawers: + fnCheckingDrawers(); + break; case 0x6918: - if (inventory->has(55)) { - displayMessage(0x4cd9); - return true; - } - if (!CHECK_FLAG(0xDBC3, 1)) { - playActorAnimation(695); - Dialog::showMark(scene, 0x386a); - SET_FLAG(0xDBC3, 1); - } + if (inventory->has(kInvItemSheetOfPaper)) + displayMessage(dsAddr_noMoreSheetsMsg); // "Right now I don't need any more sheets" + else { + if (!CHECK_FLAG(dsAddr_mansionTrashcanSearchedFlag, 1)) { + playActorAnimation(695); + dialog->showMark(91, scene); + SET_FLAG(dsAddr_mansionTrashcanSearchedFlag, 1); + } - playSound(5, 11); - playActorAnimation(696); - inventory->add(55); - return true; + playSound(5, 11); + playActorAnimation(696); + inventory->add(kInvItemSheetOfPaper); + } + break; case 0x6962: - if (CHECK_FLAG(0xDBB7, 1)) { + if (CHECK_FLAG(dsAddr_blueDrawerOpenFlag, 1)) { setOns(0, 0); playSound(67, 4); playActorAnimation(678); - SET_FLAG(0xDBB7, 0); - } else if (CHECK_FLAG(0xDBB8, 1)) { - processCallback(0x6b86); + SET_FLAG(dsAddr_blueDrawerOpenFlag, 0); + } else if (CHECK_FLAG(dsAddr_redDrawerOpenFlag, 1)) { + fnDrawerOpenMessage(); } else { playSound(66, 4); playActorAnimation(677); setOns(0, 53); - SET_FLAG(0xDBB7, 1); + SET_FLAG(dsAddr_blueDrawerOpenFlag, 1); } - return true; + break; case 0x69b8: - if (CHECK_FLAG(0xDBB8, 1)) { + if (CHECK_FLAG(dsAddr_redDrawerOpenFlag, 1)) { setOns(1, 0); playSound(67, 4); playActorAnimation(680); - SET_FLAG(0xDBB8, 0); - } else if (CHECK_FLAG(0xDBB7, 1)) { - processCallback(0x6b86); - } else if (CHECK_FLAG(0xDBB9, 1)) { - processCallback(0x6b86); + SET_FLAG(dsAddr_redDrawerOpenFlag, 0); + } else if (CHECK_FLAG(dsAddr_blueDrawerOpenFlag, 1)) { + fnDrawerOpenMessage(); + } else if (CHECK_FLAG(dsAddr_greyDrawerOpenFlag, 1)) { + fnDrawerOpenMessage(); } else { playSound(66, 5); playActorAnimation(679); setOns(1, 54); - SET_FLAG(0xDBB8, 1); + SET_FLAG(dsAddr_redDrawerOpenFlag, 1); } - return true; + break; case 0x6a1b: - if (CHECK_FLAG(0xDBB9, 1)) { + if (CHECK_FLAG(dsAddr_greyDrawerOpenFlag, 1)) { setOns(2, 0); playSound(67, 5); playActorAnimation(682); - SET_FLAG(0xDBB9, 0); - } else if (CHECK_FLAG(0xDBB8, 1)) { - processCallback(0x6b86); + SET_FLAG(dsAddr_greyDrawerOpenFlag, 0); + } else if (CHECK_FLAG(dsAddr_redDrawerOpenFlag, 1)) { + fnDrawerOpenMessage(); } else { playSound(67, 5); playActorAnimation(681); setOns(2, 55); - SET_FLAG(0xDBB9, 1); + SET_FLAG(dsAddr_greyDrawerOpenFlag, 1); } - return true; + break; case 0x6a73: - if (CHECK_FLAG(0xDBBA, 1)) { + if (CHECK_FLAG(dsAddr_greenDrawerOpenFlag, 1)) { setOns(3, 0); playSound(67, 4); playActorAnimation(684); - SET_FLAG(0xDBBA, 0); - } else if (!CHECK_FLAG(0xDBBB, 1)) { + SET_FLAG(dsAddr_greenDrawerOpenFlag, 0); + } else if (!CHECK_FLAG(dsAddr_brownDrawerOpenFlag, 1)) { playSound(66, 4); playActorAnimation(683); setOns(3, 56); - SET_FLAG(0xDBBA, 1); + SET_FLAG(dsAddr_greenDrawerOpenFlag, 1); } else - processCallback(0x6b86); - return true; + fnDrawerOpenMessage(); + break; case 0x6acb: - if (CHECK_FLAG(0xDBBB, 1)) { + if (CHECK_FLAG(dsAddr_brownDrawerOpenFlag, 1)) { setOns(4, 0); playSound(67, 4); playActorAnimation(686); - SET_FLAG(0xDBBB, 0); - } else if (CHECK_FLAG(0xDBBA, 1)) { - processCallback(0x6b86); - } else if (CHECK_FLAG(0xDBBC, 1)) { - processCallback(0x6b86); + SET_FLAG(dsAddr_brownDrawerOpenFlag, 0); + } else if (CHECK_FLAG(dsAddr_greenDrawerOpenFlag, 1)) { + fnDrawerOpenMessage(); + } else if (CHECK_FLAG(dsAddr_pinkDrawerOpenFlag, 1)) { + fnDrawerOpenMessage(); } else { playSound(66, 5); playActorAnimation(685); setOns(4, 57); - SET_FLAG(0xDBBB, 1); + SET_FLAG(dsAddr_brownDrawerOpenFlag, 1); } - return true; + break; case 0x6b2e: - if (CHECK_FLAG(0xdbbc, 1)) { + if (CHECK_FLAG(dsAddr_pinkDrawerOpenFlag, 1)) { setOns(5, 0); playSound(67, 5); playActorAnimation(688); - SET_FLAG(0xdbbc, 0); - } else if (CHECK_FLAG(0xdbbb, 1)) { - processCallback(0x6b86); + SET_FLAG(dsAddr_pinkDrawerOpenFlag, 0); + } else if (CHECK_FLAG(dsAddr_brownDrawerOpenFlag, 1)) { + fnDrawerOpenMessage(); } else { playSound(66, 6); playActorAnimation(687); setOns(5, 58); - SET_FLAG(0xDBBC, 1); + SET_FLAG(dsAddr_pinkDrawerOpenFlag, 1); } - return true; - + break; - case 0x6b86: - if (CHECK_FLAG(0xDBBD, 1)) { - displayMessage(0x4b39); - } else { - displayMessage(0x4acd); - displayMessage(0x4b0d); - SET_FLAG(0xDBBD, 1); - } - return true; + case csAddr_DrawerOpenMessage: + fnDrawerOpenMessage(); + break; - case 0x6be1: //handle to the bathroom - if (CHECK_FLAG(0xDBD9, 1)) { - displayMessage(0x5326); //i'd better catch johnny - } else { + case 0x6be1: // handle to the bathroom + if (CHECK_FLAG(dsAddr_MansionJohnNotyEscapingFlag, 1)) + displayMessage(dsAddr_catchJohnFirstMsg); // "I'd better catch John Noty first" + else { playSound(88, 4); playActorAnimation(808); loadScene(36, 41, 195, 2); } - return true; + break; case 0x6bad: playSound(80, 4); playActorAnimation(971); loadScene(32, 139, 199, 1); - return true; + break; case 0x6c45: playSound(89, 6); - playActorAnimation(CHECK_FLAG(0xDBEF, 1) ? 985 : 806); + playActorAnimation(CHECK_FLAG(dsAddr_mansionHandleInDoorHoleFlag, 1) ? 985 : 806); loadScene(34, 40, 133, 2); - return true; + break; case 0x6c83: waitLanAnimationFrame(1, 1); - Dialog::pop(scene, 0xdb2e, 0, 727, 0xd1, 0xef, 0, 1); - scene->getObject(1)->setName((const char *)res->dseg.ptr(0xaa94)); - SET_FLAG(0xDBD1, 1); - return true; + dialog->pop(scene, dsAddr_dialogStackRobotSafe, 0, 727, textColorMark, textColorMike, 0, 1); + scene->getObject(1)->setName((const char *)res->dseg.ptr(dsAddr_scnObjNameMike)); + SET_FLAG(dsAddr_MansionRobotSafeUnlockedFlag, 1); + break; - case 0x6c9d: //getting jar + case 0x6c9d: // getting jar setOns(0, 71); playSound(32, 5); playActorAnimation(732); disableObject(2); - inventory->add(72); - return true; + inventory->add(kInvItemTimePills); + break; - case 0x6cc4: //secret diary + case 0x6cc4: // secret diary playActorAnimation(754); hideActor(); - displayCutsceneMessage(0x517b, 30430); + displayCutsceneMessage(dsAddr_cutsceneMsg0, 30, 95); // "A secret diary of ..." playMusic(3); loadScene(11, scene->getPosition()); playAnimation(750, 2); - Dialog::show(scene, 0x4f50, 751, 529, 0xe5, 0xd9, 2, 1); + dialog->show(117, scene, 751, 529, textColorProfessor, textColorMansionGuard, 2, 1); playAnimation(752, 0, true); playAnimation(753, 1, true); waitAnimation(); - Dialog::show(scene, 0x5168, 529, 751, 0xd9, 0xe5, 1, 2); + dialog->show(118, scene, 529, 751, textColorMansionGuard, textColorProfessor, 1, 2); loadScene(30, scene->getPosition()); - Dialog::show(scene, 0x449e, 733, 734, 0xe5, 0xd0, 2, 3); + dialog->show(108, scene, 733, 734, textColorProfessor, textColorJohnNoty, 2, 3); playSound(75, 13); playSound(32, 22); playAnimation(735, 1, true); playAnimation(736, 2, true); waitAnimation(); - Dialog::show(scene, 0x46cf, 737, 738, 0xd0, 0xe5, 3, 2); - + dialog->show(109, scene, 737, 738, textColorJohnNoty, textColorProfessor, 3, 2); playSound(32, 1); playAnimation(739, 1, true); playAnimation(740, 2, true); waitAnimation(); - Dialog::show(scene, 0x4772, 733, 734, 0xe5, 0xd0, 2, 3); + dialog->show(110, scene, 733, 734, textColorProfessor, textColorJohnNoty, 2, 3); playAnimation(742, 1, true); playAnimation(741, 2, true); waitAnimation(); - Dialog::show(scene, 0x481c, 743, 733, 0xd0, 0xe5, 3, 2); //where's my wallet?? + dialog->show(111, scene, 743, 733, textColorJohnNoty, textColorProfessor, 3, 2); playAnimation(744, 1, true); playAnimation(745, 2, true); waitAnimation(); - Dialog::show(scene, 0x4873, 734, 733, 0xd0, 0xe5, 3, 2); + dialog->show(112, scene, 734, 733, textColorJohnNoty, textColorProfessor, 3, 2); playAnimation(746, 1, true); playAnimation(747, 2, true); waitAnimation(); - - Dialog::show(scene, 0x4da5, 734, 734, 0xd0, 0xd0, 3, 3); - Dialog::show(scene, 0x4eb9, 748, 748, 0xd0, 0xd0, 3, 3); - Dialog::show(scene, 0x4f15, 749, 749, 0xd0, 0xd0, 3, 3); - Dialog::show(scene, 0x4f2f, 748, 748, 0xd0, 0xd0, 3, 3); + dialog->show(113, scene, 734, 734, textColorJohnNoty, textColorJohnNoty, 3, 3); + dialog->show(114, scene, 748, 748, textColorJohnNoty, textColorJohnNoty, 3, 3); + dialog->show(115, scene, 749, 749, textColorJohnNoty, textColorJohnNoty, 3, 3); + dialog->show(116, scene, 748, 748, textColorJohnNoty, textColorJohnNoty, 3, 3); playMusic(10); loadScene(32, scene->getPosition()); @@ -3296,35 +4168,34 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playActorAnimation(755); moveRel(0, 0, 3); - Dialog::show(scene, 0x51bf, 0, 0, 0xd1, 0xd1, 0, 0); + dialog->showMark(119, scene); hideActor(); loadScene(31, scene->getPosition()); - Dialog::show(scene, 0x539f, 763, 764, 0xd9, 0xd0, 1, 2); + dialog->show(123, scene, 763, 764, textColorMansionGuard, textColorJohnNoty, 1, 2); loadScene(32, scene->getPosition()); showActor(); - Dialog::show(scene, 0x52c3, 0, 0, 0xd1, 0xd1, 0, 0); //i have to hide somewhere + dialog->showMark(120, scene); disableObject(3); enableObject(7); - SET_FLAG(0xDBD5, 1); - return true; + SET_FLAG(dsAddr_MansionJohnNotyOutsideBathroomFlag, 1); + break; case 0x6f20: - if (CHECK_FLAG(0xDBD5, 1)) { - displayMessage(0x51a7); - } else { + if (CHECK_FLAG(dsAddr_MansionJohnNotyOutsideBathroomFlag, 1)) + displayMessage(dsAddr_cantHideMsg); // "I can't hide here!" + else rejectMessage(); - } - return true; + break; - case 0x6f75: //hiding in left corner + case 0x6f75: // hiding in left corner moveRel(0, 0, 3); playActorAnimation(756); hideActor(); playAnimation(758, 1); - Dialog::show(scene, 0x52e6, 759, 759, 0xd0, 0xd0, 2, 2); //I have to buy... + dialog->show(121, scene, 759, 759, textColorJohnNoty, textColorJohnNoty, 2, 2); playSound(40, 5); playSound(52, 13); @@ -3340,272 +4211,265 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playSound(58, 12); playSound(58, 14); playAnimation(765, 1); - Dialog::show(scene, 0x5443, 766, 766, 0xd9, 0xd9, 1, 1); + dialog->show(124, scene, 766, 766, textColorMansionGuard, textColorMansionGuard, 1, 1); loadScene(32, scene->getPosition()); - Dialog::show(scene, 0x5358, 761, 761, 0xd0, 0xd0, 2, 2); + dialog->show(122, scene, 761, 761, textColorJohnNoty, textColorJohnNoty, 2, 2); playAnimation(762, 1); setOns(2, 0); showActor(); playActorAnimation(757); moveRel(0, 0, 1); - displayMessage(0x51e7); + displayMessage(dsAddr_wasCloseMsg); // "That was close" enableObject(8); disableObject(7); - SET_FLAG(0xDBD5, 0); - return true; + SET_FLAG(dsAddr_MansionJohnNotyOutsideBathroomFlag, 0); + break; case 0x6f4d: - if (CHECK_FLAG(0xDBD5, 1)) { - displayMessage(0x51bb); - } else { + if (CHECK_FLAG(dsAddr_MansionJohnNotyOutsideBathroomFlag, 1)) + displayMessage(dsAddr_johnOutsideMsg); // "There's John Noty outside! I can't go out!" + else loadScene(31, 139, 172, 3); - } - return true; + break; case 0x6f32: - if (CHECK_FLAG(0xDBD5, 1)) { - displayMessage(0x51a7); + if (CHECK_FLAG(dsAddr_MansionJohnNotyOutsideBathroomFlag, 1)) { + displayMessage(dsAddr_cantHideMsg); // "I can't hide here!" } else { playActorAnimation(977); - displayMessage(0x5511); + displayMessage(dsAddr_lockedMsg); // "It's Locked!" } - return true; + break; case 0x7096: playSound(32, 5); playActorAnimation(767); setOns(1, 0); - inventory->add(73); + inventory->add(kInvItemHandle); disableObject(8); - return true; + break; + + case 0x7218: + rejectMessage(); + break; case 0x7291: playSound(89, 3); playActorAnimation(975); loadScene(31, 298, 177, 4); - return true; + break; case 0x72c2: - if (CHECK_FLAG(0xDBD6, 2)) { - displayMessage(0x522c); + if (CHECK_FLAG(dsAddr_MansionSinkState, 2)) { + displayMessage(dsAddr_enoughWaterMsg); // "There's enough water in the sink" } else { playSound(79, 6); playSound(84, 9); playActorAnimation(801); wait(50); - if (CHECK_FLAG(0xDBD6, 1)) { - displayMessage(0x538d); - SET_FLAG(0xDBD6, 2); + if (CHECK_FLAG(dsAddr_MansionSinkState, 1)) { + displayMessage(dsAddr_sinkFullMsg); // "The sink is full of hot water" + SET_FLAG(dsAddr_MansionSinkState, 2); } else - displayMessage(0x5372); + displayMessage(dsAddr_waterHotMsg); // "The water looks very hot" } - return true; + break; case 0x7309: playSound(66, 5); playSound(67, 11); playActorAnimation(976); - displayMessage(0x5955); - return true; + displayMessage(dsAddr_emptyMsg); // "It's Empty" + break; case 0x77d5: - if (CHECK_FLAG(0xdbd7, 1) && !CHECK_FLAG(0xdbd8, 1)) { //disallow exiting through the first door until switch turned on, not present in original game - displayMessage(0x52cb); - return true; + if (CHECK_FLAG(dsAddr_MansionThruFanByTimePillFlag, 1) && !CHECK_FLAG(dsAddr_MansionVentFanStoppedFlag, 1)) { // disallow exiting through the first door until switch turned on, not present in original game + displayMessage(dsAddr_noSaladMsg); // "I don't want to turn myself into a salad" + } else { + playSound(89, 6); + playActorAnimation(978); + loadScene(31, 298, 177, 4); } - playSound(89, 6); - playActorAnimation(978); - loadScene(31, 298, 177, 4); - return true; + break; case 0x79e4: - processCallback(0x6849); - return false; + fnEgoBottomRightTurn(); + retVal = false; + break; - case 0x79eb: //color of the book - displayMessage(res->dseg.get_word(0x5f3c + GET_FLAG(0xDBC1) * 2 - 2)); - return true; + case 0x79eb: // color of the book + // FIXME - Replace with internal lookup and switch + displayMessage(res->dseg.get_word(dsAddr_bookColorMsgPtr + GET_FLAG(dsAddr_drawerPuzzleBookValue) * 2 - 2)); + break; case 0x79fd: - if (CHECK_FLAG(0xDBB7, 1)) { - displayMessage(0x4b6c); - return true; - } else - return false; + if (CHECK_FLAG(dsAddr_blueDrawerOpenFlag, 1)) + displayMessage(dsAddr_blueInteriorMsg); // "It's got a blue interior" + else + retVal = false; + break; case 0x7a0f: - if (CHECK_FLAG(0xDBB8, 1)) { - if (!CHECK_FLAG(0xDBBF, 1)) { - displayMessage(0x4c32); + if (CHECK_FLAG(dsAddr_redDrawerOpenFlag, 1)) { + if (!CHECK_FLAG(dsAddr_drawerGotPolaroidFlag, 1)) { + displayMessage(dsAddr_foundPolaroidMsg); // "There's a polaroid inside! I might need that" playSound(5, 11); playActorAnimation(690); - inventory->add(53); - SET_FLAG(0xDBBF, 1); + inventory->add(kInvItemPolaroidCamera); + SET_FLAG(dsAddr_drawerGotPolaroidFlag, 1); } - displayMessage(0x4b87); - return true; + displayMessage(dsAddr_redInteriorMsg); // "It's got a red interior" } else - return false; + retVal = false; + break; case 0x7a49: - if (CHECK_FLAG(0xDBB9, 1)) { - displayMessage(0x4ba1); - return true; - } else - return false; + if (CHECK_FLAG(dsAddr_greyDrawerOpenFlag, 1)) + displayMessage(dsAddr_greyInteriorMsg); // "It's got a grey interior" + else + retVal = false; + break; case 0x7a5b: - if (CHECK_FLAG(0xDBBA, 1)) { - displayMessage(0x4bbc); - return true; - } else - return false; + if (CHECK_FLAG(dsAddr_greenDrawerOpenFlag, 1)) + displayMessage(dsAddr_greenInteriorMsg); // "It's got a green interior" + else + retVal = false; + break; case 0x7a6d: - if (CHECK_FLAG(0xDBBB, 1)) { - displayMessage(0x4bd8); - return true; - } else - return false; + if (CHECK_FLAG(dsAddr_brownDrawerOpenFlag, 1)) + displayMessage(dsAddr_brownInteriorMsg); // "It's got a brown interior" + else + retVal = false; + break; case 0x7a7f: - if (CHECK_FLAG(0xDBBC, 1)) { - if (!CHECK_FLAG(0xDBBE, 1)) { - displayMessage(0x4c0f); //there's dictaphone inside! + if (CHECK_FLAG(dsAddr_pinkDrawerOpenFlag, 1)) { + if (!CHECK_FLAG(dsAddr_drawerGotDictaphoneFlag, 1)) { + displayMessage(dsAddr_dictaphoneInsideMsg); // "Wow! There's a dictaphone inside!" playSound(5, 12); playActorAnimation(689); - inventory->add(52); - SET_FLAG(0xDBBE, 1); + inventory->add(kInvItemDictaphoneNoBatteries); + SET_FLAG(dsAddr_drawerGotDictaphoneFlag, 1); } - displayMessage(0x4bf4); - return true; + displayMessage(dsAddr_pinkInteriorMsg); // "It's got a pink interior" } else - return false; + retVal = false; + break; case 0x7af7: - if (CHECK_FLAG(0xDBD0, 1)) { - displayMessage(0x5082); - return true; - } else - return false; - - case 0x7b09: { - byte v = GET_FLAG(0xDBD6); - switch (v) { - case 1: - displayMessage(0x51f8); - return true; - case 2: - displayMessage(0x538d); - return true; - default: - return false; - } - } + if (CHECK_FLAG(dsAddr_MansionPutBurningPaperInFridgeFlag, 1)) + displayMessage(dsAddr_yummyMsg); // "Yummy" + else + retVal = false; + break; - case 0x9166: - if (CHECK_FLAG(0xDBD1, 1)) { - return true; - } else { - displayMessage(0x50a6); - return false; + case 0x7b09: + { + byte v = GET_FLAG(dsAddr_MansionSinkState); + switch (v) { + case 1: + displayMessage(dsAddr_corkInHoleMsg); // "The cork is stuck in the hole" + break; + case 2: + displayMessage(dsAddr_sinkFullMsg); // "The sink is full of hot water" + break; + default: + retVal = false; + break; + } } + break; - case 0x9175: - if (CHECK_FLAG(0xDBD2, 0) || CHECK_FLAG(0xDBD3, 0) || CHECK_FLAG(0xDBD4, 0)) - return true; + case csAddr_robotSafeAlreadyUnlockedCheck: + fnRobotSafeAlreadyUnlockedCheck(); + break; - waitLanAnimationFrame(1, 1); - playSound(89, 2); - playActorAnimation(731); - setOns(0, 70); - setLan(1, 0); - disableObject(1); - enableObject(2); - enableObject(3); - return true; + case csAddr_robotSafeUnlockCheck: + fnRobotSafeUnlockCheck(); + break; - case 0x90bc: //handle on the hole + case 0x90bc: // handle on the hole playSound(5, 3); playSound(6, 9); playActorAnimation(807); setOns(0, 83); - inventory->remove(73); + inventory->remove(kInvItemHandle); disableObject(2); enableObject(3); - SET_FLAG(0xDBEF, 1); - return true; - - case 0x90fc: //dictaphone on robot - if (!processCallback(0x9166)) - return true; - - if (CHECK_FLAG(0xDBD2, 1)) { - displayMessage(0x50c3); - return true; - } + SET_FLAG(dsAddr_mansionHandleInDoorHoleFlag, 1); + break; - if (!CHECK_FLAG(0xDBCB, 1)) { - displayMessage(0x5101); - return true; + case 0x90fc: // dictaphone on robot + if (fnRobotSafeAlreadyUnlockedCheck()) { + if (CHECK_FLAG(dsAddr_MansionRobotSafeVoiceTestPassedFlag, 1)) { + displayMessage(dsAddr_fooledOnceMsg); // "I'd already fooled him once" + } else { + if (!CHECK_FLAG(dsAddr_usedDictaphoneOnTVFlag, 1)) { + displayMessage(dsAddr_notMyVoiceMsg); // "I won't cheat Mike with MY voice" + } else { + displayMessage(dsAddr_mikeVoiceTestMsg); // "Mike, activate the voice test" + waitLanAnimationFrame(1, 1); + + playSound(5, 3); + playSound(5, 39); + displayAsyncMessage(dsAddr_singingMsg, 68, 126, 9, 35, textColorJohnNoty); // "siiiiinging!" + playActorAnimation(728); + + waitLanAnimationFrame(1, 1); + dialog->show(98, scene, 0, 727, textColorMark, textColorMike, 0, 1); + SET_FLAG(dsAddr_MansionRobotSafeVoiceTestPassedFlag, 1); + fnRobotSafeUnlockCheck(); + } + } } + break; - displayMessage(0x50e1); - waitLanAnimationFrame(1, 1); - - playSound(5, 3); - playSound(5, 39); - displayAsyncMessage(0x5124, 40388, 9, 35, 0xd0); - playActorAnimation(728); - - waitLanAnimationFrame(1, 1); - Dialog::show(scene, 0x3d17, 0, 727, 0xd1, 0xef, 0, 1); - SET_FLAG(0xDBD2, 1); - processCallback(0x9175); - return true; + case 0x91cb: // use socks on robot + if (fnRobotSafeAlreadyUnlockedCheck()) { + if (CHECK_FLAG(dsAddr_MansionRobotSafeScentTestPassedFlag, 1)) { + displayMessage(dsAddr_fooledOnceMsg); // "I'd already fooled him once" + } else { + displayMessage(dsAddr_mikeScentTestMsg); // "Mike, let's get on with the scent test" - case 0x91cb: //use socks on robot - if (!processCallback(0x9166)) - return true; + waitLanAnimationFrame(1, 1); + playSound(5, 3); + playSound(5, 23); + playActorAnimation(729); - if (CHECK_FLAG(0xDBD3, 1)) { - displayMessage(0x50c3); - return true; + waitLanAnimationFrame(1, 1); + dialog->show(99, scene, 0, 727, textColorMark, textColorMike, 0, 1); + SET_FLAG(dsAddr_MansionRobotSafeScentTestPassedFlag, 1); + fnRobotSafeUnlockCheck(); + } } - displayMessage(0x5138); - - waitLanAnimationFrame(1, 1); - playSound(5, 3); - playSound(5, 23); - playActorAnimation(729); + break; - waitLanAnimationFrame(1, 1); - Dialog::show(scene, 0x3d70, 0, 727, 0xd1, 0xef, 0, 1); - SET_FLAG(0xDBD3, 1); - processCallback(0x9175); - return true; + case 0x9209: // photo on robot + if (fnRobotSafeAlreadyUnlockedCheck()) { + if (CHECK_FLAG(dsAddr_MansionRobotSafeViewTestPassedFlag, 1)) { + displayMessage(dsAddr_fooledOnceMsg); // "I'd already fooled him once" + } else { + displayMessage(dsAddr_mikeViewTestMsg); // "Mike, run the view test" + waitLanAnimationFrame(1, 1); - case 0x9209: //photo on robot - if (!processCallback(0x9166)) - return true; + playSound(5, 3); + playSound(5, 25); + playActorAnimation(730); - if (CHECK_FLAG(0xDBD4, 1)) { - displayMessage(0x50c3); - return true; + waitLanAnimationFrame(1, 1); + dialog->show(100, scene, 0, 727, textColorMark, textColorMike, 0, 1); + SET_FLAG(dsAddr_MansionRobotSafeViewTestPassedFlag, 1); + fnRobotSafeUnlockCheck(); + } } - displayMessage(0x5161); - waitLanAnimationFrame(1, 1); - - playSound(5, 3); - playSound(5, 25); - playActorAnimation(730); + break; - waitLanAnimationFrame(1, 1); - Dialog::show(scene, 0x3dd6, 0, 727, 0xd1, 0xef, 0, 1); - SET_FLAG(0xDBD4, 1); - processCallback(0x9175); - return true; + case 0x9247: + displayMessage(dsAddr_sameBottleMsg); // "The bottle's the same, but I doubt if it's enough to fool anyone" + break; case 0x924e: setOns(2, 64); @@ -3613,9 +4477,9 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playSound(52, 10); playActorAnimation(711); moveRel(0, 0, 4); - Dialog::show(scene, 0x3b21, 0, 709, 0xd1, 0xef, 0, 1); + dialog->show(95, scene, 0, 709, textColorMark, textColorCook, 0, 1); moveTo(300, 190, 4); - inventory->remove(64); + inventory->remove(kInvItemFakeChilli); disableObject(8); playAnimation(712, 0); setOns(2, 0); @@ -3623,90 +4487,90 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playSound(15, 28); playSound(16, 37); playAnimation(713, 0); - Dialog::show(scene, 0x3c0d, 0, 709, 0xd1, 0xef, 0, 1); + dialog->show(96, scene, 0, 709, textColorMark, textColorCook, 0, 1); playSound(85, 2); playAnimation(714, 0); setLan(1, 0); disableObject(1); { Object *obj = scene->getObject(2); - obj->actor_rect.left = obj->actor_rect.right = 81; - obj->actor_rect.top = obj->actor_rect.bottom = 160; - obj->actor_orientation = 4; + obj->actorRect.left = obj->actorRect.right = 81; + obj->actorRect.top = obj->actorRect.bottom = 160; + obj->actorOrientation = 4; obj->save(); } { Object *obj = scene->getObject(3); - obj->actor_rect.left = obj->actor_rect.right = 64; - obj->actor_rect.top = obj->actor_rect.bottom = 168; - obj->actor_orientation = 4; + obj->actorRect.left = obj->actorRect.right = 64; + obj->actorRect.top = obj->actorRect.bottom = 168; + obj->actorOrientation = 4; obj->save(); } { Object *obj = scene->getObject(10); - obj->actor_rect.left = obj->actor_rect.right = 105; - obj->actor_rect.top = obj->actor_rect.bottom = 160; - obj->actor_orientation = 1; + obj->actorRect.left = obj->actorRect.right = 105; + obj->actorRect.top = obj->actorRect.bottom = 160; + obj->actorOrientation = 1; obj->save(); } - SET_FLAG(0xDBCC, 1); - return true; + SET_FLAG(dsAddr_MansionCookGoneFlag, 1); + break; case 0x9472: playSound(5, 4); playSound(19, 14); playActorAnimation(793); - displayMessage(0x5218); - inventory->remove(60); - SET_FLAG(0xDBD6, 1); - return true; + displayMessage(dsAddr_fitsPerfectMsg); // "It fits perfectly!" + inventory->remove(kInvItemWrappedCork); + SET_FLAG(dsAddr_MansionSinkState, 1); + break; - case 0x9449: //meat + stew + case 0x9449: // meat + stew playSound(5, 4); playSound(63, 12); playActorAnimation(726); - displayMessage(0x508a); - inventory->remove(69); - inventory->add(70); - return true; + displayMessage(dsAddr_dislikeVealMsg); // "I never liked veal anyway" + inventory->remove(kInvItemMeat); + inventory->add(kInvItemPlasticBag); + break; case 0x949b: - if (CHECK_FLAG(0xDBD6, 2)) { + if (CHECK_FLAG(dsAddr_MansionSinkState, 2)) { playSound(5, 4); playSound(5, 25); playActorAnimation(802); - displayMessage(0x5272); - inventory->remove(62); - inventory->add(74); - inventory->add(65); + displayMessage(dsAddr_labelOffMsg); // "The label has come off!" + inventory->remove(kInvItemChilliWithLabel); + inventory->add(kInvItemChilliNoLabel); + inventory->add(kInvItemLabel); } else - displayMessage(0x524f); - return true; + displayMessage(dsAddr_noHotWaterMsg); // "There's no hot water in the sink" + break; case 0x94d4: - if (inventory->has(70)) { + if (inventory->has(kInvItemPlasticBag)) { setOns(0, 0); playSound(5, 3); playSound(5, 18); playSound(13, 12); playActorAnimation(803); disableObject(7); - inventory->remove(70); - inventory->add(71); + inventory->remove(kInvItemPlasticBag); + inventory->add(kInvItemSocks); } else - displayMessage(0x53ad); - return true; + displayMessage(dsAddr_noSockStoreMsg); // "I don't have anything to store these socks in" + break; case 0x951b: playSound(5, 4); playSound(5, 22); playActorAnimation(804); - displayMessage(0x528b); - return true; + displayMessage(dsAddr_corkTooSmallMsg); // "The cork is a bit too small" + break; case 0x73a3: - if (CHECK_FLAG(0xdbc5, 1)) { - SET_FLAG(0xdbc5, 0); + if (CHECK_FLAG(dsAddr_mansionTVOnFlag, 1)) { + SET_FLAG(dsAddr_mansionTVOnFlag, 0); //call 73e6 playSound(71, 3); @@ -3714,92 +4578,94 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playAnimation(0, 0, true); reloadLan(); - if (CHECK_FLAG(0xDBC6, 1)) { - displayMessage(0x4da6); + if (CHECK_FLAG(dsAddr_mansionVCRPlayingTapeFlag, 1)) { + displayMessage(dsAddr_muchBetterMsg); // "That's much better" } } else { - SET_FLAG(0xdbc5, 1); + SET_FLAG(dsAddr_mansionTVOnFlag, 1); //call 73e6 playSound(71, 3); playActorAnimation(700); reloadLan(); } - return true; + break; - case 0x9537: //using remote on VCR + case 0x9537: // using remote on VCR playSound(5, 3); playSound(5, 16); playActorAnimation(703); - if (!CHECK_FLAG(0xDBC8, 1)) { - displayMessage(0x4D80); //nothing happened - return true; - } - - //0x955a - if (CHECK_FLAG(0xDBC6, 0)) { - if (CHECK_FLAG(0xDBC5, 1)) { //tv on - if (!CHECK_FLAG(0xDBC7, 1)) - displayMessage(0x4d93); //the tape started - - SET_FLAG(0xDBC6, 1); - reloadLan(); - if (!CHECK_FLAG(0xDBC7, 1)) { - Dialog::show(scene, 0x392c, 0, 702, 0xd1, 0xd0, 0, 1); - SET_FLAG(0xDBC7, 1); + if (!CHECK_FLAG(dsAddr_mansionVCRTapeLoadedFlag, 1)) + displayMessage(dsAddr_NotHappenMsg); // "Nothing happened" + else { + //0x955a + if (CHECK_FLAG(dsAddr_mansionVCRPlayingTapeFlag, 0)) { + if (CHECK_FLAG(dsAddr_mansionTVOnFlag, 1)) { + if (!CHECK_FLAG(dsAddr_mansionVCRPlayedTapeBeforeFlag, 1)) + displayMessage(dsAddr_tapeStartedMsg); // "The tape started!" + + SET_FLAG(dsAddr_mansionVCRPlayingTapeFlag, 1); + reloadLan(); + if (!CHECK_FLAG(dsAddr_mansionVCRPlayedTapeBeforeFlag, 1)) { + dialog->show(93, scene, 0, 702, textColorMark, textColorJohnNoty, 0, 1); + SET_FLAG(dsAddr_mansionVCRPlayedTapeBeforeFlag, 1); + } + } else + displayMessage(dsAddr_tvOffMsg); // "I just realised that the TV is off" + } else { + SET_FLAG(dsAddr_mansionVCRPlayingTapeFlag, 0); + if (CHECK_FLAG(dsAddr_mansionTVOnFlag, 1)) { + reloadLan(); + displayMessage(dsAddr_muchBetterMsg); // "That's much better" } - } else - displayMessage(0x4d5b); //i just realized that tv is off - } else { - SET_FLAG(0xDBC6, 0); - if (CHECK_FLAG(0xDBC5, 1)) { //tv on - reloadLan(); - displayMessage(0x4da6); //much better! } } - return true; + break; - case 0x95eb: //polaroid + tv - if (CHECK_FLAG(0xDBC6, 1)) { - if (CHECK_FLAG(0xDBCA, 1)) { - displayMessage(0x4de6); + case 0x95eb: // polaroid + tv + if (CHECK_FLAG(dsAddr_mansionVCRPlayingTapeFlag, 1)) { + if (CHECK_FLAG(dsAddr_usedPolaroidOnTVFlag, 1)) { + displayMessage(dsAddr_enoughPhotosMsg); // "I don't need any more photos" } else { playSound(5, 3); playSound(5, 24); playSound(90, 18); playActorAnimation(707); - inventory->add(61); - SET_FLAG(0xDBCA, 1); + inventory->add(kInvItemPhoto); + SET_FLAG(dsAddr_usedPolaroidOnTVFlag, 1); } } else - displayMessage(0x4ea5); - return true; + displayMessage(dsAddr_notRightMomentMsg); // "I don't think this is the right moment" + break; - case 0x962f: //polaroid + tv - if (CHECK_FLAG(0xDBC6, 1)) { - if (CHECK_FLAG(0xDBCB, 1)) { - displayMessage(0x4e32); + case 0x962f: // dictaphone + tv + if (CHECK_FLAG(dsAddr_mansionVCRPlayingTapeFlag, 1)) { + if (CHECK_FLAG(dsAddr_usedDictaphoneOnTVFlag, 1)) { + displayMessage(dsAddr_alreadyRecordedMsg); // "I already recorded what I wanted to" } else { - displayMessage(0x4e05); + displayMessage(dsAddr_recordScareMsg); // "Yeah, I can record this and scare the cats" playSound(5, 3); playSound(5, 27); playActorAnimation(708); - SET_FLAG(0xDBCB, 1); + SET_FLAG(dsAddr_usedDictaphoneOnTVFlag, 1); } } else - displayMessage(0x4ea5); - return true; - + displayMessage(dsAddr_notRightMomentMsg); // "I don't think this is the right moment" + break; case 0x95c8: playSound(5, 3); playSound(91, 12); playActorAnimation(706); - inventory->remove(54); - SET_FLAG(0xDBC8, 1); - return true; + inventory->remove(kInvItemVideoTape); + SET_FLAG(dsAddr_mansionVCRTapeLoadedFlag, 1); + break; - case 0x9673: //hit fatso - final scene + case 0x966c: + displayMessage(dsAddr_cantRecordNoBatteriesMsg); // "I can't record anything until I find some batteries" + break; + + case 0x9673: // hit fatso - final scene playSound(5, 3); playSound(24, 10); playActorAnimation(798); @@ -3811,12 +4677,12 @@ bool TeenAgentEngine::processCallback(uint16 addr) { wait(100); playActorAnimation(805); moveTo(50, 170, 3); - displayMessage(0x5349); + displayMessage(dsAddr_onlyChilliMsg); // "Good this red stuff is only a chilli" //moveTo(105, 157, 0, true); playMusic(3); loadScene(11, 105, 157, 4); - Dialog::show(scene, 0x8409, 0, 938, 0xd1, 0xec, 0, 1); + dialog->show(203, scene, 0, 938, textColorMark, textColorCaptain, 0, 1); playAnimation(939, 0, true, true); playActorAnimation(942, true); @@ -3837,9 +4703,9 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playActorAnimation(945, true); waitAnimation(); - Dialog::show(scene, 0x844f, 0, 938, 0xd1, 0xec, 0, 1); + dialog->show(204, scene, 0, 938, textColorMark, textColorCaptain, 0, 1); playAnimation(946, 0); - Dialog::show(scene, 0x87c7, 0, 938, 0xd1, 0xec, 0, 1); + dialog->show(205, scene, 0, 938, textColorMark, textColorCaptain, 0, 1); playSound(24, 7); playAnimation(948, 0, true); @@ -3847,16 +4713,16 @@ bool TeenAgentEngine::processCallback(uint16 addr) { waitAnimation(); loadScene(40, 198, 186, 1); - Dialog::show(scene, 0x8890, 0, 920, 0xd1, 0xe7, 0, 1); - Dialog::show(scene, 0x8a2f, 0, 921, 0xd1, 0xe7, 0, 1); + dialog->show(206, scene, 0, 920, textColorMark, textColorRGBBoss, 0, 1); + dialog->show(207, scene, 0, 921, textColorMark, textColorRGBBoss, 0, 1); playAnimation(923, 0); - Dialog::show(scene, 0x8aa7, 0, 920, 0xd1, 0xe7, 0, 1); + dialog->show(208, scene, 0, 920, textColorMark, textColorRGBBoss, 0, 1); moveTo(237, 186, 0); moveTo(237, 177, 0); moveTo(192, 177, 4); playAnimation(949, 0); - Dialog::showMono(scene, 0x8af6, 950, 0xe7, 1); + dialog->showMono(209, scene, 950, textColorRGBBoss, 1); playSound(32, 5); playSound(40, 14); @@ -3869,98 +4735,89 @@ bool TeenAgentEngine::processCallback(uint16 addr) { displayCredits(); loadScene(39, 192, 177, 0); hideActor(); - Dialog::showMono(scene, 0x8b4d, 953, 0xe3, 1); //well... + dialog->showMono(210, scene, 953, textColorMarkEnd, 1); playSound(5, 15); playAnimation(954, 0); - Dialog::showMono(scene, 0x8b7a, 955, 0xe3, 1); //that's all folks + dialog->showMono(211, scene, 955, textColorMarkEnd, 1); playMusic(2); - displayCredits(0xe47c, 4500); //3 minutes (infinite until key pressed in original) + displayCredits(dsAddr_finalCredits6, 4500); // 3 minutes (infinite until key pressed in original) scene->push(SceneEvent(SceneEvent::kQuit)); + break; - return true; - - case 0x9921: { //using diving eq - int id = scene->getId(); - if (id != 15) { - displayMessage(id == 16 ? 0x38ce : 0x38a7); - } else { - playSound(5, 3); - playSound(38, 16); - playSound(38, 22); - playActorAnimation(614); - playSound(5, 3); - playSound(44, 10); - playSound(20, 26); - playActorAnimation(615); - loadScene(17, 156, 180, 3); - SET_FLAG(0, 4); - playSound(64, 7); - playSound(64, 21); - playSound(64, 42); - playSound(64, 63); - setTimerCallback(0x9a1d, 30); - playActorAnimation(617, false, true); + case csAddr_useDivingEquipment: // using diving eq + // FIXME - Some code is missing here as displayMessage(dsAddr_cantTalkUnderwaterMsg), + // displayMessage(dsAddr_notSwimmingThereMsg), displayMessage(dsAddr_tooLittleAirMsg) + // displayMessage(dsAddr_fishDontWorryMsg) are never called. + { + int id = scene->getId(); + if (id != 15) { + if (id == 16) + displayMessage(dsAddr_notHereMsg); // "Not here" + else + displayMessage(dsAddr_notBestPlaceMsg); // "It's not the best place for diving" + } else { + playSound(5, 3); + playSound(38, 16); + playSound(38, 22); + playActorAnimation(614); + playSound(5, 3); + playSound(44, 10); + playSound(20, 26); + playActorAnimation(615); + loadScene(17, 156, 180, 3); + SET_FLAG(dsAddr_timedCallbackState, 4); + playSound(64, 7); + playSound(64, 21); + playSound(64, 42); + playSound(64, 63); + setTimerCallback(csAddr_noAnchorTimeout, 30); + playActorAnimation(617, false, true); + } } - } - return true; + break; - case 0x9a1d: //no anchor, timeout - SET_FLAG(0, 0); - processCallback(0x9a7a); - INC_FLAG(0xDBA6); - switch (GET_FLAG(0xDBA6)) { + case csAddr_noAnchorTimeout: // no anchor, timeout + SET_FLAG(dsAddr_timedCallbackState, 0); + fnGetOutOfLake(); + INC_FLAG(dsAddr_lakeDivingExitMessage); + switch (GET_FLAG(dsAddr_lakeDivingExitMessage)) { case 1: - displayMessage(0x39ae); + displayMessage(dsAddr_seaweedMsg); // "This seaweed is just like the flowers I gave mum on her last birthday" break; case 2: - displayMessage(0x39f6); + displayMessage(dsAddr_fishBoatMsg); // "I wonder what fish do inside this boat at night" break; case 3: - displayMessage(0x3a28); + displayMessage(dsAddr_fishSomethingMsg); // "I think I have to fish out something down there" break; case 4: - displayMessage(0x3a85); + displayMessage(dsAddr_notRedHerringMsg); // "I hope all this fish stuff is not a red herring" break; case 5: - displayMessage(0x39ae); + displayMessage(dsAddr_seaweedMsg); // "This seaweed is just like the flowers I gave mum on her last birthday" break; default: - displayMessage(0x3ab7); + displayMessage(dsAddr_niceDownMsg); // "It's nice down there" + break; } - return true; + break; - case 0x99e0: //success getting an anchor - SET_FLAG(0, 0); - setTimerCallback(0, 0); - scene->getActorAnimation()->free(); - playSound(64, 7); - playActorAnimation(618); - disableObject(5); - setOns(0, 0); - playSound(31, 1); - playActorAnimation(619); - processCallback(0x9a7a); - inventory->add(42); - displayMessage(0x3989); - return true; + case csAddr_gotAnchor: + fnGotAnchor(); + break; - case 0x9a7a: - loadScene(15, 156, 180, 3); - playSound(5, 5); - playSound(38, 14); - playSound(38, 20); - playSound(5, 25); - playActorAnimation(616); - return true; + case csAddr_getOutOfLake: + fnGetOutOfLake(); + break; - case 0x9aca: + case csAddr_digMansionWall: if (scene->getId() == 13) { moveTo(172, 181, 1); playSound(26, 19); for (uint i = 0; i < 8; ++i) playSound(26, 30 + i * 11); playActorAnimation(661); - displayCutsceneMessage(0x3c80, 30484); + displayCutsceneMessage(dsAddr_cutsceneMsgA, 84, 95); // "Hundred moments later" playSound(56, 10); playSound(56, 21); @@ -3974,7 +4831,7 @@ bool TeenAgentEngine::processCallback(uint16 addr) { waitAnimation(); setOns(1, 49); - displayCutsceneMessage(0x3c9a, 30453); + displayCutsceneMessage(dsAddr_cutsceneMsgB, 53, 95); // "Another hundred moments later" moveTo(162, 184, 0, true); playSound(26, 6); playSound(26, 17); @@ -3986,27 +4843,32 @@ bool TeenAgentEngine::processCallback(uint16 addr) { playActorAnimation(664); playAnimation(665, 1); wait(100); - displayMessage(0x3cbc); + displayMessage(dsAddr_foundCrudeOilMsg); // "At least I found crude oil and I'll be rich" wait(100); - displayMessage(0x3cea); - inventory->remove(37); - processCallback(0x9d45); //another mansion try + displayMessage(dsAddr_myLifeMsg); // "That's my life" + inventory->remove(kInvItemShovelAct2); + fnMansionIntrusionAttempt(); } else - displayMessage(0x3c58); - return true; + displayMessage(dsAddr_notThinkRightPlaceMsg); // "I don't think this is the right place" + break; - case 0x9c6d: - displayMessage(0x49d1); - SET_FLAG(0xDBB5, 1); - return false; + case csAddr_tooDarkHere: + displayMessage(dsAddr_cantDoTooDarkMsg); // "I can't do anything here, it's too dark" + break; + + case csAddr_examineBanknote: + displayMessage(dsAddr_bankNoteMsg); // "It's a note from some bank..." + SET_FLAG(dsAddr_examinedBanknoteFlag, 1); + retVal = false; + break; - case 0x9c79: //use pills + case csAddr_useTimePills: // use pills if (scene->getId() != 36) { - displayMessage(0x52a9); - } else if (CHECK_FLAG(0xDBF1, 1)) { - displayMessage(0x52F6); + displayMessage(dsAddr_notTryNowMsg); // "There's no need to try them now" + } else if (CHECK_FLAG(dsAddr_mansionAlreadyUsedTimePillsFlag, 1)) { + displayMessage(dsAddr_nahMsg); // "Nah" } else { - SET_FLAG(0xDBF1, 1); + SET_FLAG(dsAddr_mansionAlreadyUsedTimePillsFlag, 1); moveTo(102, 195, 2); playSound(5, 3); playSound(75, 12); @@ -4020,131 +4882,59 @@ bool TeenAgentEngine::processCallback(uint16 addr) { { Walkbox *w = scene->getWalkbox(0); w->rect.left = 0; - w->rect.bottom = 199; + w->rect.bottom = kScreenHeight-1; w->save(); } setLan(1, 0xff); - Dialog::showMark(scene, 0x58a9); + dialog->showMark(130, scene); Object *obj = scene->getObject(1); - obj->actor_rect.left = obj->actor_rect.right = 270; - obj->actor_rect.top = obj->actor_rect.bottom = 193; - obj->actor_orientation = 2; + obj->actorRect.left = obj->actorRect.right = 270; + obj->actorRect.top = obj->actorRect.bottom = 193; + obj->actorOrientation = 2; obj->save(); obj = scene->getObject(3); - obj->actor_rect.left = obj->actor_rect.right = 254; - obj->actor_rect.top = obj->actor_rect.bottom = 193; - obj->actor_orientation = 1; + obj->actorRect.left = obj->actorRect.right = 254; + obj->actorRect.top = obj->actorRect.bottom = 193; + obj->actorOrientation = 1; obj->save(); - SET_FLAG(0xDBD7, 1); + SET_FLAG(dsAddr_MansionThruFanByTimePillFlag, 1); } - return true; + break; - case 0x9d45: { - wait(50); - byte attempts = ++ *(res->dseg.ptr(0xDBEA)); - debug(0, "mansion intrusion attempt #%u", attempts); - if (attempts >= 7) - return false; + case csAddr_mansionIntrusionAttempt: + retVal = fnMansionIntrusionAttempt(); + break; - uint16 ptr = res->dseg.get_word((attempts - 2) * 2 + 0x6035); - debug(0, "mansion callback = %04x", ptr); - byte id = scene->getId(); + case csAddr_secondMansionIntrusion: + fnSecondMansionIntrusion(); + break; - playMusic(11); - displayCutsceneMessage(0x580a, 30484); - processCallback(ptr); - playMusic(6); - if (getFlag(0xdbec) != 1 || ptr != 0x9f3e) //ptr check eq. scene_id == 11 - loadScene(id, scene->getPosition()); - return true; - } + case csAddr_thirdMansionIntrusion: + fnThirdMansionIntrusion(); + break; - case 0x9d90: - hideActor(); - loadScene(34, scene->getPosition()); - playAnimation(986, 0, true); - playAnimation(987, 1, true); - waitAnimation(); - Dialog::show(scene, 0x6f60, 988, 989, 0xd9, 0xd0, 1, 2); - playAnimation(990, 0, true); - playAnimation(991, 1, true); - waitAnimation(); - showActor(); - return true; - - case 0x9de5: - hideActor(); - loadScene(30, scene->getPosition()); - playAnimation(887, 1); - playAnimation(888, 2, true, true, true); - //waitAnimation(); - Dialog::showMono(scene, 0x6fb8, 889, 0xd9, 2); - playSound(26, 3); - playAnimation(891, 1, true, true, true); - playAnimation(892, 2); - waitAnimation(); - Dialog::show(scene, 0x6ff0, 890, 889, 0xd0, 0xd9, 3, 2); - showActor(); - return true; - - case 0x9e54: - hideActor(); - loadScene(32, scene->getPosition()); - playAnimation(894, 1, true, true, true); - playAnimation(893, 2, true); - waitAnimation(); - Dialog::showMono(scene, 0x706e, 895, 0xd9, 3); - playSound(75, 9); - playAnimation(898, 1, true); - playAnimation(897, 2, true); - Dialog::show(scene, 0x7096, 896, 895, 0xd0, 0xd9, 2, 3); - showActor(); - return true; + case csAddr_fourthMansionIntrusion: + fnFourthMansionIntrusion(); + break; - case 0x9ec3: - hideActor(); - loadScene(29, scene->getPosition()); - playActorAnimation(901, true); - playAnimation(900, 1, true); - waitAnimation(); - Dialog::show(scene, 0x7161, 903, 902, 0xd0, 0xd9, 2, 3); - for (byte i = 3; i <= 9; i += 2) - playSound(56, i); + case csAddr_fifthMansionIntrusion: + fnFifthMansionIntrusion(); + break; - playActorAnimation(905, true); - playAnimation(904, 1, true); - Dialog::show(scene, 0x71c6, 903, 902, 0xd0, 0xd9, 2, 3); - showActor(); - return true; + case csAddr_sixthMansionIntrusion: + fnSixthMansionIntrusion(); + break; - case 0x9f3e: - hideActor(); - loadScene(35, scene->getPosition()); - playAnimation(907, 2, true); - playAnimation(906, 3, true); - waitAnimation(); - Dialog::show(scene, 0x7243, 908, 909, 0xd9, 0xd0, 2, 3); - Dialog::show(scene, 0x7318, 910, 908, 0xd0, 0xd9, 3, 2); - loadScene(11, scene->getPosition()); - showActor(); - setOns(3, 51); - playAnimation(911, 1); - playAnimation(899, 1); - setFlag(0xDBEC, 1); - reloadLan(); - wait(200); - enableObject(8); - setLan(2, 8); - return true; + default: + error("unknown callback 0x%04x called", addr); + break; } - //error("invalid callback %04x called", addr); - warning("invalid callback %04x called", addr); - return true; + return retVal; } } // End of namespace TeenAgent diff --git a/engines/teenagent/detection.cpp b/engines/teenagent/detection.cpp index 2de6f49c44..0c1268a5fc 100644 --- a/engines/teenagent/detection.cpp +++ b/engines/teenagent/detection.cpp @@ -26,6 +26,7 @@ #include "base/plugins.h" #include "engines/advancedDetector.h" +#include "teenagent/resources.h" #include "teenagent/teenagent.h" #include "graphics/thumbnail.h" @@ -168,7 +169,7 @@ public: Common::String desc = buf; - in->seek(0x777a); + in->seek(TeenAgent::saveStateSize); if (!Graphics::checkThumbnailHeader(*in)) return SaveStateDescriptor(slot, desc); diff --git a/engines/teenagent/dialog.cpp b/engines/teenagent/dialog.cpp index 400bd7cec2..870aca6400 100644 --- a/engines/teenagent/dialog.cpp +++ b/engines/teenagent/dialog.cpp @@ -22,99 +22,103 @@ #include "teenagent/dialog.h" #include "teenagent/resources.h" #include "teenagent/scene.h" +#include "teenagent/teenagent.h" namespace TeenAgent { +void Dialog::show(uint16 dialogNum, Scene *scene, uint16 animation1, uint16 animation2, byte color1, byte color2, byte slot1, byte slot2) { + uint16 addr = _vm->res->getDialogAddr(dialogNum); + // WORKAROUND: For Dialog 163, The usage of this in the engine overlaps the previous dialog i.e. the + // starting offset used is two bytes early, thus implicitly changing the first command of this dialog + // from NEW_LINE to CHANGE_CHARACTER. + // FIXME: Unsure if this is correct behaviour or if this is a regression from the original. Check this. + // Similar issue occurs with Dialog 190 which is used from dialogue stack at 0x7403, rather than start of 0x7405 + // Similar issue occurs with Dialog 0 which is used from dialogue stack at 0x0001, rather than start of 0x0000 + if (dialogNum == 163) + addr -= 2; + show(scene, addr, animation1, animation2, color1, color2, slot1, slot2); +} + void Dialog::show(Scene *scene, uint16 addr, uint16 animation1, uint16 animation2, byte color1, byte color2, byte slot1, byte slot2) { - debug(0, "Dialog::show(%04x, %u:%u, %u:%u)", addr, slot1, animation1, slot2, animation2); - Resources *res = Resources::instance(); + debugC(0, kDebugDialog, "Dialog::show(%04x, %u:%u, %u:%u)", addr, slot1, animation1, slot2, animation2); int n = 0; Common::String message; byte color = color1; if (animation1 != 0) { - SceneEvent e(SceneEvent::kPlayAnimation); - e.animation = animation1; - e.slot = 0xc0 | slot1; //looped, paused - scene->push(e); + SceneEvent e1(SceneEvent::kPlayAnimation); + e1.animation = animation1; + e1.slot = 0xc0 | slot1; //looped, paused + scene->push(e1); } if (animation2 != 0) { - SceneEvent e(SceneEvent::kPlayAnimation); - e.animation = animation2; - e.slot = 0xc0 | slot2; //looped, paused - scene->push(e); + SceneEvent e2(SceneEvent::kPlayAnimation); + e2.animation = animation2; + e2.slot = 0xc0 | slot2; //looped, paused + scene->push(e2); } while (n < 4) { - byte c = res->eseg.get_byte(addr++); - //debug(0, "%02x: %c", c, c > 0x20? c: '.'); + byte c = _vm->res->eseg.get_byte(addr++); + debugC(1, kDebugDialog, "%02x: %c", c, c > 0x20? c: '.'); switch (c) { case 0: ++n; switch (n) { case 1: - //debug(0, "new line\n"); + debugC(1, kDebugDialog, "new line\n"); if (!message.empty()) message += '\n'; break; case 2: - //debug(0, "displaymessage %s", message.c_str()); + debugC(1, kDebugDialog, "displaymessage %s", message.c_str()); if (color == color2) { //pause animation in other slot - { - SceneEvent e(SceneEvent::kPauseAnimation); - e.slot = 0x80 | slot1; - scene->push(e); - } - { - SceneEvent e(SceneEvent::kPlayAnimation); - e.animation = animation2; - e.slot = 0x80 | slot2; - scene->push(e); - } + SceneEvent e1(SceneEvent::kPauseAnimation); + e1.slot = 0x80 | slot1; + scene->push(e1); + + SceneEvent e2(SceneEvent::kPlayAnimation); + e2.animation = animation2; + e2.slot = 0x80 | slot2; + scene->push(e2); } else if (color == color1) { //pause animation in other slot - { - SceneEvent e(SceneEvent::kPauseAnimation); - e.slot = 0x80 | slot2; - scene->push(e); - } - { - SceneEvent e(SceneEvent::kPlayAnimation); - e.animation = animation1; - e.slot = 0x80 | slot1; - scene->push(e); - } - } + SceneEvent e2(SceneEvent::kPauseAnimation); + e2.slot = 0x80 | slot2; + scene->push(e2); - { - message.trim(); - if (message.empty()) - break; + SceneEvent e1(SceneEvent::kPlayAnimation); + e1.animation = animation1; + e1.slot = 0x80 | slot1; + scene->push(e1); + } - SceneEvent e(SceneEvent::kMessage); - e.message = message; - e.color = color; + message.trim(); + if (!message.empty()) { + SceneEvent em(SceneEvent::kMessage); + em.message = message; + em.color = color; if (color == color1) - e.slot = slot1; + em.slot = slot1; if (color == color2) - e.slot = slot2; - scene->push(e); + em.slot = slot2; + scene->push(em); message.clear(); } break; case 3: - color = color == color1 ? color2 : color1; - //debug(0, "changing color to %02x", color); + color = (color == color1) ? color2 : color1; + debugC(1, kDebugDialog, "changing color to %02x", color); break; } break; case 0xff: { - //fixme : wait for the next cycle of the animation + //FIXME : wait for the next cycle of the animation } break; @@ -124,21 +128,20 @@ void Dialog::show(Scene *scene, uint16 addr, uint16 animation1, uint16 animation } } - SceneEvent e(SceneEvent::kClearAnimations); - scene->push(e); + SceneEvent ec(SceneEvent::kClearAnimations); + scene->push(ec); } uint16 Dialog::pop(Scene *scene, uint16 addr, uint16 animation1, uint16 animation2, byte color1, byte color2, byte slot1, byte slot2) { - debug(0, "Dialog::pop(%04x, %u:%u, %u:%u)", addr, slot1, animation1, slot2, animation2); - Resources *res = Resources::instance(); + debugC(0, kDebugDialog, "Dialog::pop(%04x, %u:%u, %u:%u)", addr, slot1, animation1, slot2, animation2); uint16 next; do { - next = res->dseg.get_word(addr); + next = _vm->res->dseg.get_word(addr); addr += 2; } while (next == 0); - uint16 next2 = res->dseg.get_word(addr); + uint16 next2 = _vm->res->dseg.get_word(addr); if (next2 != 0xffff) - res->dseg.set_word(addr - 2, 0); + _vm->res->dseg.set_word(addr - 2, 0); show(scene, next, animation1, animation2, color1, color2, slot1, slot2); return next; } diff --git a/engines/teenagent/dialog.h b/engines/teenagent/dialog.h index 3bb7d818c1..6672ce7206 100644 --- a/engines/teenagent/dialog.h +++ b/engines/teenagent/dialog.h @@ -27,20 +27,59 @@ namespace TeenAgent { +// Text Color Symbols +enum { + textColorJohnNoty = 0xd0, + textColorCampGuard = 0xd0, + textColorShockedCaptain = 0xd0, + textColorMark = 0xd1, + textColorCredits = 0xd1, + textColorBankGuard = 0xd7, + textColorGrandpa = 0xd8, + textColorMansionGuard = 0xd9, + textColorMarkEnd = 0xe3, + textColorProfessor = 0xe5, + textColorOldLady = 0xe5, + textColorAnne = 0xe5, + textColorWellEcho = 0xe5, + textColorSonny = 0xe5, + textColorEskimo = 0xe5, + textColorRGBBoss = 0xe7, + textColorGoldDriver = 0xe7, + textColorFortuneTeller = 0xeb, + textColorCaptain = 0xec, + textColorMike = 0xef, + textColorCook = 0xef, + textColorBarman = 0xef +}; + class Scene; +class TeenAgentEngine; + class Dialog { public: - static uint16 pop(Scene *scene, uint16 addr, uint16 animation1, uint16 animation2, byte color1, byte color2, byte slot1, byte slot2); - static uint16 popMark(Scene *scene, uint16 addr) { - return pop(scene, addr, 0, 0, 0xd1, 0xd1, 0, 0); + Dialog(TeenAgentEngine *vm) : _vm(vm) { } + + uint16 pop(Scene *scene, uint16 addr, uint16 animation1, uint16 animation2, byte color1, byte color2, byte slot1, byte slot2); + + uint16 popMark(Scene *scene, uint16 addr) { + return pop(scene, addr, 0, 0, textColorMark, textColorMark, 0, 0); } - static void show(Scene *scene, uint16 addr, uint16 animation1, uint16 animation2, byte color1, byte color2, byte slot1, byte slot2); - static void showMono(Scene *scene, uint16 addr, uint16 animation, byte color, byte slot) { - show(scene, addr, animation, animation, color, color, slot, slot); + + void show(uint16 dialogNum, Scene *scene, uint16 animation1, uint16 animation2, byte color1, byte color2, byte slot1, byte slot2); + + void showMono(uint16 dialogNum, Scene *scene, uint16 animation, byte color, byte slot) { + show(dialogNum, scene, animation, animation, color, color, slot, slot); } - static void showMark(Scene *scene, uint16 addr) { - show(scene, addr, 0, 0, 0xd1, 0xd1, 0, 0); + + void showMark(uint16 dialogNum, Scene *scene) { + show(dialogNum, scene, 0, 0, textColorMark, textColorMark, 0, 0); } + +private: + TeenAgentEngine *_vm; + + void show(Scene *scene, uint16 addr, uint16 animation1, uint16 animation2, byte color1, byte color2, byte slot1, byte slot2); }; } // End of namespace TeenAgent diff --git a/engines/teenagent/font.cpp b/engines/teenagent/font.cpp index f7558b60f2..47f52ff90f 100644 --- a/engines/teenagent/font.cpp +++ b/engines/teenagent/font.cpp @@ -20,8 +20,10 @@ */ #include "teenagent/font.h" + #include "teenagent/pack.h" -#include "common/debug.h" +#include "teenagent/teenagent.h" + #include "common/endian.h" #include "common/stream.h" #include "common/textconsole.h" @@ -30,34 +32,41 @@ namespace TeenAgent { -Font::Font() : grid_color(0xd0), shadow_color(0), height(0), width_pack(0), data(0) { +Font::Font() : _gridColor(0xd0), _shadowColor(0), _height(0), _widthPack(0), _data(0) { +} + +Font::~Font() { + delete[] _data; } -void Font::load(const Pack &pack, int id) { - delete[] data; - data = NULL; +void Font::load(const Pack &pack, int id, byte height, byte widthPack) { + delete[] _data; + _data = NULL; Common::ScopedPtr<Common::SeekableReadStream> s(pack.getStream(id)); if (!s) error("loading font %d failed", id); - data = new byte[s->size()]; - s->read(data, s->size()); - debug(0, "font size: %d", s->size()); + _data = new byte[s->size()]; + s->read(_data, s->size()); + debugC(0, kDebugFont, "font size: %d", s->size()); + + _height = height; + _widthPack = widthPack; } uint Font::render(Graphics::Surface *surface, int x, int y, char c, byte color) { unsigned idx = (unsigned char)c; if (idx < 0x20 || idx >= 0x81) { - debug(0, "unhandled char 0x%02x", idx); + debugC(0, kDebugFont, "unhandled char 0x%02x", idx); return 0; } idx -= 0x20; - byte *glyph = data + READ_LE_UINT16(data + idx * 2); + byte *glyph = _data + READ_LE_UINT16(_data + idx * 2); int h = glyph[0], w = glyph[1]; - if (surface == NULL || surface->pixels == NULL || y + h <= 0 || y >= 200 || x + w <= 0 || x >= 320) - return w - width_pack; + if (surface == NULL || surface->pixels == NULL || y + h <= 0 || y >= kScreenHeight || x + w <= 0 || x >= kScreenWidth) + return w - _widthPack; int i0 = 0, j0 = 0; if (x < 0) { @@ -68,7 +77,7 @@ uint Font::render(Graphics::Surface *surface, int x, int y, char c, byte color) i0 = -y; y = 0; } - //debug(0, "char %c, width: %dx%d", c, w, h); + debugC(0, kDebugFont, "char %c, width: %dx%d", c, w, h); glyph += 2; glyph += i0 * w + j0; byte *dst = (byte *)surface->getBasePtr(x, y); @@ -80,7 +89,7 @@ uint Font::render(Graphics::Surface *surface, int x, int y, char c, byte color) case 0: break; case 1: - dst[j] = shadow_color; + dst[j] = _shadowColor; break; case 2: dst[j] = color; @@ -91,57 +100,57 @@ uint Font::render(Graphics::Surface *surface, int x, int y, char c, byte color) } dst += surface->pitch; } - return w - width_pack; + return w - _widthPack; } -static uint find_in_str(const Common::String &str, char c, uint pos = 0) { +static uint findInStr(const Common::String &str, char c, uint pos = 0) { while (pos < str.size() && str[pos] != c) ++pos; return pos; } -uint Font::render(Graphics::Surface *surface, int x, int y, const Common::String &str, byte color, bool show_grid) { +uint Font::render(Graphics::Surface *surface, int x, int y, const Common::String &str, byte color, bool showGrid) { if (surface != NULL) { - uint max_w = render(NULL, 0, 0, str, false); - if (show_grid) - grid(surface, x - 4, y - 2, max_w + 8, 8 + 6, grid_color); + uint maxW = render(NULL, 0, 0, str, false); + if (showGrid) + grid(surface, x - 4, y - 2, maxW + 8, 8 + 6, _gridColor); uint i = 0, j; do { - j = find_in_str(str, '\n', i); + j = findInStr(str, '\n', i); Common::String line(str.c_str() + i, j - i); - //debug(0, "line: %s", line.c_str()); + debugC(0, kDebugFont, "line: %s", line.c_str()); - if (y + (int)height >= 0) { + if (y + (int)_height >= 0) { uint w = render(NULL, 0, 0, line, false); - int xp = x + (max_w - w) / 2; + int xp = x + (maxW - w) / 2; for (uint k = 0; k < line.size(); ++k) { xp += render(surface, xp, y, line[k], color); } - } else if (y >= 200) + } else if (y >= kScreenHeight) break; - y += height; + y += _height; i = j + 1; } while (i < str.size()); - return max_w; + return maxW; } else { - //surface == NULL; - uint w = 0, max_w = 0; + // surface == NULL; + uint w = 0, maxW = 0; for (uint i = 0; i < str.size(); ++i) { char c = str[i]; if (c == '\n') { - y += height; - if (w > max_w) - max_w = w; + y += _height; + if (w > maxW) + maxW = w; w = 0; continue; } w += render(NULL, 0, 0, c, color); } - if (w > max_w) - max_w = w; + if (w > maxW) + maxW = w; - return max_w; + return maxW; } } @@ -156,8 +165,4 @@ void Font::grid(Graphics::Surface *surface, int x, int y, int w, int h, byte col } } -Font::~Font() { - delete[] data; -} - } // End of namespace TeenAgent diff --git a/engines/teenagent/font.h b/engines/teenagent/font.h index 5146ace21f..a61f145fa6 100644 --- a/engines/teenagent/font.h +++ b/engines/teenagent/font.h @@ -28,20 +28,24 @@ namespace TeenAgent { class Pack; + class Font { public: - byte grid_color, shadow_color; - byte height, width_pack; - Font(); - void load(const Pack &pack, int id); - uint render(Graphics::Surface *surface, int x, int y, const Common::String &str, byte color, bool grid = false); + ~Font(); + + void load(const Pack &pack, int id, byte height, byte widthPack); + uint render(Graphics::Surface *surface, int x, int y, const Common::String &str, byte color, bool showGrid = false); uint render(Graphics::Surface *surface, int x, int y, char c, byte color); static void grid(Graphics::Surface *surface, int x, int y, int w, int h, byte color); - ~Font(); + byte getHeight() { return _height; } + void setShadowColor(byte color) { _shadowColor = color; } private: - byte *data; + byte *_data; + + byte _gridColor, _shadowColor; + byte _height, _widthPack; }; } // End of namespace TeenAgent diff --git a/engines/teenagent/inventory.cpp b/engines/teenagent/inventory.cpp index 59dd44baa3..354371666c 100644 --- a/engines/teenagent/inventory.cpp +++ b/engines/teenagent/inventory.cpp @@ -24,6 +24,7 @@ #include "common/textconsole.h" #include "teenagent/inventory.h" + #include "teenagent/resources.h" #include "teenagent/objects.h" #include "teenagent/teenagent.h" @@ -31,47 +32,44 @@ namespace TeenAgent { -Inventory::Inventory(TeenAgentEngine *engine) { - _engine = engine; +Inventory::Inventory(TeenAgentEngine *vm) : _vm(vm) { _active = false; FilePack varia; varia.open("varia.res"); - { - Common::ScopedPtr<Common::SeekableReadStream> s(varia.getStream(3)); - if (!s) - error("no inventory background"); - debug(0, "loading inventory background..."); - _background.load(*s, Surface::kTypeOns); - } + Common::ScopedPtr<Common::SeekableReadStream> s(varia.getStream(3)); + if (!s) + error("no inventory background"); + debugC(0, kDebugInventory, "loading inventory background..."); + _background.load(*s, Surface::kTypeOns); - uint32 items_size = varia.getSize(4); - if (items_size == 0) + uint32 itemsSize = varia.getSize(4); + if (itemsSize == 0) error("invalid inventory items size"); - debug(0, "loading items, size: %u", items_size); - _items = new byte[items_size]; - varia.read(4, _items, items_size); + debugC(0, kDebugInventory, "loading items, size: %u", itemsSize); + _items = new byte[itemsSize]; + varia.read(4, _items, itemsSize); byte offsets = _items[0]; - assert(offsets == 92); + assert(offsets == kNumInventoryItems); for (byte i = 0; i < offsets; ++i) { _offset[i] = READ_LE_UINT16(_items + i * 2 + 1); } - _offset[92] = items_size; + _offset[kNumInventoryItems] = itemsSize; - Resources *res = Resources::instance(); - for (byte i = 0; i <= 92; ++i) { + InventoryObject ioBlank; + _objects.push_back(ioBlank); + for (byte i = 0; i < kNumInventoryItems; ++i) { InventoryObject io; - uint16 obj_addr = res->dseg.get_word(0xc4a4 + i * 2); - if (obj_addr != 0) - io.load(res->dseg.ptr(obj_addr)); + uint16 objAddr = vm->res->dseg.get_word(dsAddr_inventoryItemDataPtrTable + i * 2); + io.load(vm->res->dseg.ptr(objAddr)); _objects.push_back(io); } - _inventory = res->dseg.ptr(0xc48d); + _inventory = vm->res->dseg.ptr(dsAddr_inventory); - for (int y = 0; y < 4; ++y) + for (int y = 0; y < 4; ++y) { for (int x = 0; x < 6; ++x) { int i = y * 6 + x; _graphics[i]._rect.left = 28 + 45 * x - 1; @@ -79,6 +77,7 @@ Inventory::Inventory(TeenAgentEngine *engine) { _graphics[i]._rect.right = _graphics[i]._rect.left + 40; _graphics[i]._rect.bottom = _graphics[i]._rect.top + 26; } + } varia.close(); _hoveredObj = _selectedObj = NULL; @@ -89,7 +88,7 @@ Inventory::~Inventory() { } bool Inventory::has(byte item) const { - for (int i = 0; i < 24; ++i) { + for (int i = 0; i < kInventorySize; ++i) { if (_inventory[i] == item) return true; } @@ -97,34 +96,34 @@ bool Inventory::has(byte item) const { } void Inventory::remove(byte item) { - debug(0, "removing %u from inventory", item); + debugC(0, kDebugInventory, "removing %u from inventory", item); int i; - for (i = 0; i < 24; ++i) { + for (i = 0; i < kInventorySize; ++i) { if (_inventory[i] == item) { break; } } - for (; i < 23; ++i) { + for (; i < (kInventorySize - 1); ++i) { _inventory[i] = _inventory[i + 1]; _graphics[i].free(); } - _inventory[23] = 0; - _graphics[23].free(); + _inventory[kInventorySize - 1] = kInvItemNoItem; + _graphics[kInventorySize - 1].free(); } void Inventory::clear() { - debug(0, "clearing inventory"); - for (int i = 0; i < 24; ++i) { - _inventory[i] = 0; + debugC(0, kDebugInventory, "clearing inventory"); + for (int i = 0; i < kInventorySize; ++i) { + _inventory[i] = kInvItemNoItem; _graphics[i].free(); } } void Inventory::reload() { - for (int i = 0; i < 24; ++i) { + for (int i = 0; i < kInventorySize; ++i) { _graphics[i].free(); uint item = _inventory[i]; - if (item != 0) + if (item != kInvItemNoItem) _graphics[i].load(this, item); } } @@ -132,9 +131,9 @@ void Inventory::reload() { void Inventory::add(byte item) { if (has(item)) return; - debug(0, "adding %u to inventory", item); - for (int i = 0; i < 24; ++i) { - if (_inventory[i] == 0) { + debugC(0, kDebugInventory, "adding %u to inventory", item); + for (int i = 0; i < kInventorySize; ++i) { + if (_inventory[i] == kInvItemNoItem) { _inventory[i] = item; return; } @@ -143,13 +142,14 @@ void Inventory::add(byte item) { } bool Inventory::tryObjectCallback(InventoryObject *obj) { - byte id = obj->id; - uint i = 0; - for (byte *table = Resources::instance()->dseg.ptr(0xBB6F + 3); table[0] != 0 && i < 7; table += 3, ++i) { - if (table[0] == id) { + byte objId = obj->id; + for (uint i = 0; i < 7; ++i) { + byte tableId = _vm->res->dseg.get_byte(dsAddr_objCallbackTablePtr + (3 * i)); + uint16 callbackAddr = _vm->res->dseg.get_word(dsAddr_objCallbackTablePtr + (3 * i) + 1); + if (tableId == objId) { resetSelectedObject(); activate(false); - if (_engine->processCallback(READ_LE_UINT16(table + 1))) + if (_vm->processCallback(callbackAddr)) return true; } } @@ -157,8 +157,6 @@ bool Inventory::tryObjectCallback(InventoryObject *obj) { } bool Inventory::processEvent(const Common::Event &event) { - Resources *res = Resources::instance(); - switch (event.type) { case Common::EVENT_MOUSEMOVE: @@ -178,9 +176,9 @@ bool Inventory::processEvent(const Common::Event &event) { _mouse = event.mouse; _hoveredObj = NULL; - for (int i = 0; i < 24; ++i) { + for (int i = 0; i < kInventorySize; ++i) { byte item = _inventory[i]; - if (item == 0) + if (item == kInvItemNoItem) continue; _graphics[i]._hovered = _graphics[i]._rect.in(_mouse); @@ -197,14 +195,14 @@ bool Inventory::processEvent(const Common::Event &event) { if (_hoveredObj == NULL) return true; - debug(0, "lclick on %u:%s", _hoveredObj->id, _hoveredObj->name.c_str()); + debugC(0, kDebugInventory, "lclick on %u:%s", _hoveredObj->id, _hoveredObj->name.c_str()); if (_selectedObj == NULL) { if (tryObjectCallback(_hoveredObj)) return true; //activate(false); - int w = res->font7.render(NULL, 0, 0, _hoveredObj->description, 0xd1); - _engine->scene->displayMessage(_hoveredObj->description, 0xd1, Common::Point((320 - w) / 2, 162)); + int w = _vm->res->font7.render(NULL, 0, 0, _hoveredObj->description, textColorMark); + _vm->scene->displayMessage(_hoveredObj->description, textColorMark, Common::Point((kScreenWidth - w) / 2, 162)); return true; } @@ -213,30 +211,27 @@ bool Inventory::processEvent(const Common::Event &event) { if (id1 == id2) return true; - debug(0, "combine(%u, %u)!", id1, id2); - byte *table = res->dseg.ptr(0xC335); + debugC(0, kDebugInventory, "combine(%u, %u)!", id1, id2); + byte *table = _vm->res->dseg.ptr(dsAddr_objCombiningTablePtr); while (table[0] != 0 && table[1] != 0) { - if ( - (id1 == table[0] && id2 == table[1]) || - (id2 == table[0] && id1 == table[1]) - ) { - byte new_obj = table[2]; - if (new_obj != 0) { + if ((id1 == table[0] && id2 == table[1]) || (id2 == table[0] && id1 == table[1])) { + byte newObj = table[2]; + if (newObj != 0) { remove(id1); remove(id2); - debug(0, "adding object %u", new_obj); - add(new_obj); - _engine->playSoundNow(69); + debugC(0, kDebugInventory, "adding object %u", newObj); + add(newObj); + _vm->playSoundNow(69); } uint16 msg = READ_LE_UINT16(table + 3); - _engine->displayMessage(msg); + _vm->displayMessage(msg); activate(false); resetSelectedObject(); return true; } table += 5; } - _engine->displayMessage(0xc3e2); + _vm->displayMessage(dsAddr_objCombineErrorMsg); activate(false); resetSelectedObject(); return true; @@ -247,14 +242,15 @@ bool Inventory::processEvent(const Common::Event &event) { return false; if (_hoveredObj != NULL) { - debug(0, "rclick object %u:%s", _hoveredObj->id, _hoveredObj->name.c_str()); - if (_hoveredObj->id != 51 && tryObjectCallback(_hoveredObj)) //do not process callback for banknote on r-click + debugC(0, kDebugInventory, "rclick object %u:%s", _hoveredObj->id, _hoveredObj->name.c_str()); + // do not process callback for banknote on r-click + if (_hoveredObj->id != kInvItemBanknote && tryObjectCallback(_hoveredObj)) return true; } _selectedObj = _hoveredObj; if (_selectedObj) - debug(0, "selected object %s", _selectedObj->name.c_str()); + debugC(0, kDebugInventory, "selected object %s", _selectedObj->name.c_str()); return true; case Common::EVENT_KEYDOWN: @@ -262,7 +258,7 @@ bool Inventory::processEvent(const Common::Event &event) { activate(false); return true; } - if (event.kbd.keycode == Common::KEYCODE_RETURN) { //triangle button on psp + if (event.kbd.keycode == Common::KEYCODE_RETURN) { activate(!_active); return true; } @@ -277,7 +273,6 @@ bool Inventory::processEvent(const Common::Event &event) { } } - void Inventory::Item::free() { _animation.free(); _surface.free(); @@ -294,30 +289,29 @@ void Inventory::Item::backgroundEffect(Graphics::Surface *s) { } } -void Inventory::Item::load(Inventory *inventory, uint item_id) { - InventoryObject *obj = &inventory->_objects[item_id]; +void Inventory::Item::load(Inventory *inventory, uint itemId) { + InventoryObject *obj = &inventory->_objects[itemId]; if (obj->animated) { if (_animation.empty()) { - debug(0, "loading item %d from offset %x", obj->id, inventory->_offset[obj->id - 1]); + debugC(0, kDebugInventory, "loading item %d from offset %x", obj->id, inventory->_offset[obj->id - 1]); Common::MemoryReadStream s(inventory->_items + inventory->_offset[obj->id - 1], inventory->_offset[obj->id] - inventory->_offset[obj->id - 1]); _animation.load(s, Animation::kTypeInventory); } } else { if (_surface.empty()) { - debug(0, "loading item %d from offset %x", obj->id, inventory->_offset[obj->id - 1]); + debugC(0, kDebugInventory, "loading item %d from offset %x", obj->id, inventory->_offset[obj->id - 1]); Common::MemoryReadStream s(inventory->_items + inventory->_offset[obj->id - 1], inventory->_offset[obj->id] - inventory->_offset[obj->id - 1]); _surface.load(s, Surface::kTypeOns); } } } -void Inventory::Item::render(Inventory *inventory, uint item_id, Graphics::Surface *dst, int delta) { - InventoryObject *obj = &inventory->_objects[item_id]; - Resources *res = Resources::instance(); +void Inventory::Item::render(Inventory *inventory, uint itemId, Graphics::Surface *dst, int delta) { + InventoryObject *obj = &inventory->_objects[itemId]; backgroundEffect(dst); _rect.render(dst, _hovered ? 233 : 234); - load(inventory, item_id); + load(inventory, itemId); if (obj->animated) { if (_hovered) { Surface *s = _animation.currentFrame(delta); @@ -342,15 +336,16 @@ void Inventory::Item::render(Inventory *inventory, uint item_id, Graphics::Surfa if (inventory->_selectedObj != inventory->_hoveredObj) name += obj->name; - if (_hovered && inventory->_engine->scene->getMessage().empty()) { - int w = res->font7.render(NULL, 0, 0, name, 0xd1, true); - res->font7.render(dst, (320 - w) / 2, 180, name, 0xd1, true); + if (_hovered && inventory->_vm->scene->getMessage().empty()) { + int w = inventory->_vm->res->font7.render(NULL, 0, 0, name, textColorMark, true); + inventory->_vm->res->font7.render(dst, (kScreenWidth - w) / 2, 180, name, textColorMark, true); } } void Inventory::render(Graphics::Surface *surface, int delta) { if (!_active) return; + debugC(0, kDebugInventory, "Inventory::render()"); _background.render(surface); @@ -358,11 +353,10 @@ void Inventory::render(Graphics::Surface *surface, int delta) { for (int x = 0; x < 6; x++) { int idx = x + 6 * y; byte item = _inventory[idx]; - if (item == 0) - continue; - - //debug(0, "%d,%d -> %u", x0, y0, item); - _graphics[idx].render(this, item, surface, delta); + if (item != 0) { + debugC(0, kDebugInventory, "\t(x, y): %d,%d -> item: %u", x, y, item); + _graphics[idx].render(this, item, surface, delta); + } } } } diff --git a/engines/teenagent/inventory.h b/engines/teenagent/inventory.h index 61e5364542..d487848c2c 100644 --- a/engines/teenagent/inventory.h +++ b/engines/teenagent/inventory.h @@ -33,9 +33,112 @@ namespace TeenAgent { struct InventoryObject; class TeenAgentEngine; +// Maximum number of items found within game +const uint8 kNumInventoryItems = 92; + +// Inventory Item Ids +enum { + kInvItemNoItem = 0, // No item i.e. empty inventory slot + kInvItemFeather = 1, + kInvItemShotgun = 2, + kInvItemToolboxFull = 3, // Contains Car Jack and Spanner + kInvItemToolboxHalfEmpty = 4, // Contains Spanner + kInvItemSpanner = 5, + kInvItemComb = 6, + kInvItemFan = 7, + kInvItemBrokenPaddle = 8, + kInvItemPaddle = 9, // Repaired - BrokenPaddle combined with Branch (with Glue) + kInvItemFirstFlower = 10, // Smells nice + kInvItemSecondFlower = 11, // Really beautiful + kInvItemFeatherDusterClean = 12, + kInvItemChainsaw = 13, // Unfueled + kInvItemDrunkenChainsaw = 14, // Fueled with Whisky (Chainsaw combined with Whiskey) + kInvItemBranch = 15, + kInvItemWhisky = 16, + kInvItemNeedle = 17, + kInvItemWrapper = 18, + kInvItemChocCandy = 19, + kInvItemPotato = 20, + kInvItemRakeBroken = 21, + kInvItemHeartShapedCandy = 22, + kInvItemWrappedCandy = 23, // HeartShapedCandy combined with Wrapper + kInvItemRibbon = 24, + kInvItemRakeFixed = 25, // Rake combined with Ribbon + kInvItemNut = 26, + kInvItemPlasticApple = 27, + kInvItemCone = 28, + kInvItemSuperGlue = 29, + kInvItemConeAndNeedle = 30, // Cone combined with Needle + kInvItemConeAndFeather = 31, // Cone combined with Feather + kInvItemDart = 32, // Needle combined with ConeAndFeather or Feather combined with ConeAndNeedle + kInvItemFeatherDusterDirty = 33, + kInvItemPaintedPotato = 34, // Potato combined with Dirty Feather Duster (Soot) + kInvItemCarJack = 35, + kInvItemBone = 36, + kInvItemShovelAct2 = 37, + kInvItemRopeAct2 = 38, + kInvItemMask = 39, + kInvItemFins = 40, + kInvItemDiveEquipment = 41, // Mask combined with Fins + kInvItemAnchor = 42, + kInvItemGrapplingHook = 43, + kInvItemSickleBlunt = 44, + kInvItemCheese = 45, + kInvItemSickleSharp = 46, + kInvItemHandkerchief = 47, + kInvItemMouse = 48, + kInvItemRock = 49, + kInvItemNugget = 50, + kInvItemBanknote = 51, + kInvItemDictaphoneNoBatteries = 52, + kInvItemPolaroidCamera = 53, + kInvItemVideoTape = 54, + kInvItemSheetOfPaper = 55, + kInvItemCognac = 56, + kInvItemRemoteControl = 57, + kInvItemIceTongs = 58, + kInvItemCork = 59, + kInvItemWrappedCork = 60, // Cork combined with Sheet Of Paper + kInvItemPhoto = 61, + kInvItemChilliWithLabel = 62, + kInvItemPastryRoller = 63, + kInvItemFakeChilli = 64, + kInvItemLabel = 65, + kInvItemBatteries = 66, + kInvItemDictaphoneWithBatteries = 67, // Dictaphone combined with Batteries + kInvItemBurningPaper = 68, + kInvItemMeat = 69, + kInvItemPlasticBag = 70, + kInvItemSocks = 71, + kInvItemTimePills = 72, + kInvItemHandle = 73, + kInvItemChilliNoLabel = 74, + kInvItemPass = 75, + kInvItemBulb = 76, + kInvItemJailKey = 77, + kInvItemDelicatePlant = 78, + kInvItemSwissArmyKnife = 79, + kInvItemSpring = 80, + kInvItemShovelAct1 = 81, + kInvItemKaleidoscope = 82, + kInvItemSoldierNews = 83, + kInvItemGrenade = 84, + kInvItemMug = 85, // Empty + kInvItemMugOfMud = 86, // Full of mud + kInvItemCrumbs = 87, + kInvItemRopeAct1 = 88, + kInvItemRopeAndGrenade = 89, // Rope combined with Grenade + kInvItemMedicine = 90, + kInvItemDruggedFood = 91, // Crumbs combined with Medicine + kInvItemBird = 92 +}; + +// Maximum number of inventory items held by Ego (Mark) +const uint8 kInventorySize = 24; + class Inventory { public: - Inventory(TeenAgentEngine *engine); + Inventory(TeenAgentEngine *vm); ~Inventory(); void render(Graphics::Surface *surface, int delta); @@ -55,10 +158,10 @@ public: void resetSelectedObject() { _selectedObj = NULL; } private: - TeenAgentEngine *_engine; + TeenAgentEngine *_vm; Surface _background; byte *_items; - uint _offset[93]; + uint _offset[kNumInventoryItems+1]; Common::Array<InventoryObject> _objects; byte *_inventory; @@ -71,12 +174,12 @@ private: Item() : _hovered(false) {} void free(); - void load(Inventory *inventory, uint item_id); + void load(Inventory *inventory, uint itemId); void backgroundEffect(Graphics::Surface *s); - void render(Inventory *inventory, uint item_id, Graphics::Surface *surface, int delta); + void render(Inventory *inventory, uint itemId, Graphics::Surface *surface, int delta); }; - Item _graphics[24]; + Item _graphics[kInventorySize]; bool _active; Common::Point _mouse; diff --git a/engines/teenagent/music.cpp b/engines/teenagent/music.cpp index 1f44e9cfcb..b06a5f1f5e 100644 --- a/engines/teenagent/music.cpp +++ b/engines/teenagent/music.cpp @@ -22,6 +22,8 @@ #include "teenagent/music.h" #include "teenagent/resources.h" +#include "teenagent/teenagent.h" + #include "common/debug.h" #include "common/ptr.h" #include "common/textconsole.h" @@ -34,36 +36,36 @@ static const uint32 noteToPeriod[3][12] = { {214, 201, 189, 179, 170, 160, 151, 143, 135, 127, 120, 113} }; -MusicPlayer::MusicPlayer() : Paula(false, 44100, 5000), _id(0) { +MusicPlayer::MusicPlayer(TeenAgentEngine *vm) : Paula(false, 44100, 5000), _vm(vm), _id(0) { } MusicPlayer::~MusicPlayer() { + stop(); } bool MusicPlayer::load(int id) { - Resources *res = Resources::instance(); - - Common::ScopedPtr<Common::SeekableReadStream> stream(res->mmm.getStream(id)); + debugC(0, kDebugMusic, "MusicPlayer::load(%d)", id); + Common::ScopedPtr<Common::SeekableReadStream> stream(_vm->res->mmm.getStream(id)); if (!stream) return false; char header[4]; stream->read(header, 4); - //check header? + // check header? Common::StackLock lock(_mutex); // Load the samples sampleCount = stream->readByte(); - debug(0, "sampleCount = %d", sampleCount); + debugC(0, kDebugMusic, "sampleCount = %d", sampleCount); for (byte currSample = 0; currSample < sampleCount; currSample++) { byte sample = stream->readByte(); // Load the sample data - byte sampleResource = ((sample >> 4) & 0x0F) * 10 + (sample & 0x0F); - debug(0, "currSample = %d, sample = 0x%02x, resource: %d", currSample, sample, sampleResource); - uint32 sampleSize = res->sam_mmm.getSize(sampleResource); + byte sampleResource = ((sample >> 4) & 0x0f) * 10 + (sample & 0x0f); + debugC(0, kDebugMusic, "currSample = %d, sample = 0x%02x, resource: %d", currSample, sample, sampleResource); + uint32 sampleSize = _vm->res->sam_mmm.getSize(sampleResource); if (sampleSize == 0) { warning("load: invalid sample %d (0x%02x)", sample, sample); _samples[sample].clear(); @@ -71,7 +73,7 @@ bool MusicPlayer::load(int id) { } _samples[sample].resize(sampleSize); - res->sam_mmm.read(sampleResource, _samples[sample].data, sampleSize); + _vm->res->sam_mmm.read(sampleResource, _samples[sample].data, sampleSize); } // Load the music data @@ -87,17 +89,17 @@ bool MusicPlayer::load(int id) { row.channels[1].note = stream->readByte(); row.channels[2].note = stream->readByte(); _rows.push_back(row); - } else if ((cmd & 0xF0) == 0x50) { + } else if ((cmd & 0xf0) == 0x50) { byte sample = stream->readByte(); - //debug(1, "%02x: set sample %02x", cmd, sample); - row.channels[(cmd & 0x0F) - 1].sample = sample; - } else if ((cmd & 0xF0) == 0x40) { + debugC(1, kDebugMusic, "%02x: set sample %02x", cmd, sample); + row.channels[(cmd & 0x0f) - 1].sample = sample; + } else if ((cmd & 0xf0) == 0x40) { byte vol = stream->readByte(); - //debug(1, "%02x: set volume %02x -> %02x", cmd, row.channels[(cmd & 0x0F) - 1].volume, vol); - //channel volume 0x40 * music volume 0x40 mixed with high bytes - row.channels[(cmd & 0x0F) - 1].volume = vol * 16; + debugC(1, kDebugMusic, "%02x: set volume %02x -> %02x", cmd, row.channels[(cmd & 0x0f) - 1].volume, vol); + // channel volume 0x40 * music volume 0x40 mixed with high bytes + row.channels[(cmd & 0x0f) - 1].volume = vol * 16; } else { - debug(0, "unhandled music command %02x", cmd); + debugC(0, kDebugMusic, "unhandled music command %02x", cmd); } } _currRow = 0; @@ -124,13 +126,13 @@ void MusicPlayer::interrupt() { for (int chn = 0; chn < 3; ++chn) { setChannelVolume(chn, row->channels[chn].volume); - //debug(0, "row->channels[%d].volume = %d", chn, row->channels[chn].volume); + debugC(2, kDebugMusic, "row->channels[%d].volume = %d", chn, row->channels[chn].volume); byte sample = (row->channels[chn].sample); if (row->channels[chn].note != 0 && sample != 0) { - //debug(0, "row->channels[%d].note = %d", chn, row->channels[chn].note); - //debug(0, "row->channels[%d].sample = %d", chn, row->channels[chn].sample); + debugC(2, kDebugMusic, "row->channels[%d].note = %d", chn, row->channels[chn].note); + debugC(2, kDebugMusic, "row->channels[%d].sample = %d", chn, row->channels[chn].sample); byte note = row->channels[chn].note; if (_samples[sample].size == 0) { @@ -139,11 +141,11 @@ void MusicPlayer::interrupt() { } setChannelData(chn, (const int8 *)_samples[sample].data, NULL, _samples[sample].size, 0); - setChannelPeriod(chn, noteToPeriod[((note >> 4) & 0x0F) - 1][(note & 0x0F)]); + setChannelPeriod(chn, noteToPeriod[((note >> 4) & 0x0f) - 1][(note & 0x0f)]); } } - //debug(0, "------------------------------------------------"); + debugC(2, kDebugMusic, "------------------------------------------------"); ++_currRow; } diff --git a/engines/teenagent/music.h b/engines/teenagent/music.h index 22b4fa5e8e..408436cf3a 100644 --- a/engines/teenagent/music.h +++ b/engines/teenagent/music.h @@ -28,10 +28,11 @@ namespace TeenAgent { +class TeenAgentEngine; + class MusicPlayer : public Audio::Paula { public: - - MusicPlayer(); + MusicPlayer(TeenAgentEngine *vm); ~MusicPlayer(); bool load(int id); @@ -41,6 +42,8 @@ public: void stop(); private: + TeenAgentEngine *_vm; + int _id; struct Row { diff --git a/engines/teenagent/objects.cpp b/engines/teenagent/objects.cpp index 748f342d54..5dad9ab99d 100644 --- a/engines/teenagent/objects.cpp +++ b/engines/teenagent/objects.cpp @@ -21,8 +21,10 @@ #include "common/debug.h" #include "common/memstream.h" + #include "teenagent/objects.h" #include "teenagent/resources.h" +#include "teenagent/teenagent.h" namespace TeenAgent { @@ -51,7 +53,6 @@ void Rect::render(Graphics::Surface *surface, uint8 color) const { surface->vLine(right, bottom, top, color); } - void Object::load(byte *src) { _base = src; @@ -59,39 +60,39 @@ void Object::load(byte *src) { rect.load(src); src += 8; - actor_rect.load(src); + actorRect.load(src); src += 8; - actor_orientation = *src++; + actorOrientation = *src++; enabled = *src++; name = (const char *)src; - description = parse_description((const char *)src); + description = parseDescription((const char *)src); } void Object::save() const { assert(_base != NULL); rect.save(); - actor_rect.save(); - _base[17] = actor_orientation; + actorRect.save(); + _base[17] = actorOrientation; _base[18] = enabled; } -void Object::setName(const Common::String &new_name) { +void Object::setName(const Common::String &newName) { assert(_base != 0); - strcpy((char *)(_base + 19), new_name.c_str()); - name = new_name; + strcpy((char *)(_base + 19), newName.c_str()); + name = newName; } void Object::dump(int level) const { - debug(level, "object: %u %u [%u,%u,%u,%u], actor: [%u,%u,%u,%u], orientation: %u, name: %s", id, enabled, + debugC(level, kDebugObject, "object: %u %u [%u,%u,%u,%u], actor: [%u,%u,%u,%u], orientation: %u, name: %s", id, enabled, rect.left, rect.top, rect.right, rect.bottom, - actor_rect.left, actor_rect.top, actor_rect.right, actor_rect.bottom, - actor_orientation, name.c_str() + actorRect.left, actorRect.top, actorRect.right, actorRect.bottom, + actorOrientation, name.c_str() ); } -Common::String Object::parse_description(const char *name) { +Common::String Object::parseDescription(const char *name) { const char *desc = name + strlen(name) + 1; if (*desc == 0) return Common::String(); @@ -101,7 +102,7 @@ Common::String Object::parse_description(const char *name) { while (*desc != 1 && *desc != 0) { Common::String line; while (*desc != 1 && *desc != 0) { - //debug(0, "%02x ", *desc); + debugC(2, kDebugObject, "%02x ", *desc); line += *desc++; } @@ -115,7 +116,7 @@ Common::String Object::parse_description(const char *name) { if (!result.empty()) result.deleteLastChar(); else - result = "Cool."; + result = "Cool."; // FIXME - Use dsAddr_coolMsg ? return result; } @@ -124,31 +125,31 @@ void InventoryObject::load(byte *src) { id = *src++; animated = *src++; name = (const char *)src; - description = Object::parse_description((const char *)src); + description = Object::parseDescription((const char *)src); } void UseHotspot::load(byte *src) { Common::MemoryReadStream in(src, 9); - inventory_id = in.readByte(); - object_id = in.readByte(); + inventoryId = in.readByte(); + objectId = in.readByte(); orientation = in.readByte(); - actor_x = in.readUint16LE(); - actor_y = in.readUint16LE(); + actorX = in.readUint16LE(); + actorY = in.readUint16LE(); callback = in.readUint16LE(); } void UseHotspot::dump(int level) const { - debug(level, - "hotspot: inv_id: %02x, obj_id: %02x, orientation?: %02x, actor position: (%d,%d), callback: %04x", - inventory_id, object_id, orientation, actor_x, actor_y, callback + debugC(level, kDebugObject, + "hotspot: invId: %02x, objId: %02x, orientation: %02x, actor position: (%d,%d), callback: %04x", + inventoryId, objectId, orientation, actorX, actorY, callback ); } void Walkbox::dump(int level) const { - debug(level, "walkbox %02x %02x [%d, %d, %d, %d] top: %u, right: %u, bottom: %u, left: %u", + debugC(level, kDebugObject, "walkbox %02x %02x [%d, %d, %d, %d] top: %u, right: %u, bottom: %u, left: %u", type, orientation, rect.left, rect.top, rect.right, rect.bottom, - side_hint[0], side_hint[1], side_hint[2], side_hint[3]); + sideHint[0], sideHint[1], sideHint[2], sideHint[3]); } void Walkbox::load(byte *src) { @@ -159,7 +160,7 @@ void Walkbox::load(byte *src) { rect.load(src); src += 8; for (byte i = 0; i < 4; ++i) - side_hint[i] = *src++; + sideHint[i] = *src++; } void Walkbox::save() const { diff --git a/engines/teenagent/objects.h b/engines/teenagent/objects.h index 555287fc56..6e7955766f 100644 --- a/engines/teenagent/objects.h +++ b/engines/teenagent/objects.h @@ -26,6 +26,8 @@ #include "common/rect.h" #include "graphics/surface.h" +#include "teenagent/teenagent.h" + namespace TeenAgent { enum {kActorUp = 1, kActorRight = 2, kActorDown = 3, kActorLeft = 4 }; @@ -46,13 +48,13 @@ struct Rect { } inline bool valid() const { - return left >= 0 && left < 320 && right >= 0 && right < 320 && top >= 0 && top < 200 && bottom >= 0 && bottom < 200; + return left >= 0 && left < kScreenWidth && right >= 0 && right < kScreenWidth && top >= 0 && top < kScreenHeight && bottom >= 0 && bottom < kScreenHeight; } void render(Graphics::Surface *surface, uint8 color) const; void dump(int level = 0) const { - debug(level, "rect[%u, %u, %u, %u]", left, top, right, bottom); + debugC(level, kDebugObject, "rect[%u, %u, %u, %u]", left, top, right, bottom); } inline void clear() { @@ -154,22 +156,21 @@ protected: }; struct Object { - byte id; //0 Rect rect; //1 - Rect actor_rect; //9 - byte actor_orientation; //17 + Rect actorRect; //9 + byte actorOrientation; //17 byte enabled; //18 //19 Common::String name, description; Object(): _base(NULL) {} void dump(int level = 0) const; - void setName(const Common::String &name); + void setName(const Common::String &newName); void load(byte *addr); void save() const; - static Common::String parse_description(const char *name); + static Common::String parseDescription(const char *name); protected: byte *_base; @@ -188,10 +189,10 @@ protected: }; struct UseHotspot { - byte inventory_id; - byte object_id; + byte inventoryId; + byte objectId; byte orientation; - uint16 actor_x, actor_y; + uint16 actorX, actorY; uint16 callback; void load(byte *src); void dump(int level = 0) const; @@ -201,7 +202,7 @@ struct Walkbox { byte type; byte orientation; Rect rect; - byte side_hint[4]; + byte sideHint[4]; Walkbox() : _base(NULL) {} void dump(int level = 0) const; diff --git a/engines/teenagent/pack.cpp b/engines/teenagent/pack.cpp index 5302e2eceb..2e6c913a72 100644 --- a/engines/teenagent/pack.cpp +++ b/engines/teenagent/pack.cpp @@ -20,6 +20,8 @@ */ #include "teenagent/pack.h" +#include "teenagent/teenagent.h" + #include "common/util.h" #include "common/debug.h" #include "common/memstream.h" @@ -44,7 +46,7 @@ bool FilePack::open(const Common::String &filename) { return false; _fileCount = file.readUint32LE(); - debug(0, "opened %s, found %u entries", filename.c_str(), _fileCount); + debugC(0, kDebugPack, "opened %s, found %u entries", filename.c_str(), _fileCount); offsets = new uint32[_fileCount + 1]; for (uint32 i = 0; i <= _fileCount; ++i) { offsets[i] = file.readUint32LE(); @@ -65,18 +67,17 @@ uint32 FilePack::read(uint32 id, byte *dst, uint32 size) const { file.seek(offsets[id - 1]); uint32 rsize = offsets[id] - offsets[id - 1]; uint32 r = file.read(dst, MIN(rsize, size)); - //debug(0, "read(%u, %u) = %u", id, size, r); + debugC(0, kDebugPack, "read(%u, %u) = %u", id, size, r); return r; } Common::SeekableReadStream *FilePack::getStream(uint32 id) const { if (id < 1 || id > _fileCount) return NULL; - //debug(0, "stream: %04x-%04x", offsets[id - 1], offsets[id]); + debugC(0, kDebugPack, "stream: %04x-%04x", offsets[id - 1], offsets[id]); return new Common::SeekableSubReadStream(&file, offsets[id - 1], offsets[id]); } - TransientFilePack::TransientFilePack() : offsets(0) {} TransientFilePack::~TransientFilePack() { @@ -97,7 +98,7 @@ bool TransientFilePack::open(const Common::String &filename) { return false; _fileCount = file.readUint32LE(); - debug(0, "opened %s, found %u entries", filename.c_str(), _fileCount); + debugC(0, kDebugPack, "opened %s, found %u entries", filename.c_str(), _fileCount); offsets = new uint32[_fileCount + 1]; for (uint32 i = 0; i <= _fileCount; ++i) { offsets[i] = file.readUint32LE(); @@ -124,14 +125,14 @@ uint32 TransientFilePack::read(uint32 id, byte *dst, uint32 size) const { uint32 rsize = offsets[id] - offsets[id - 1]; uint32 r = file.read(dst, MIN(rsize, size)); file.close(); - //debug(0, "read(%u, %u) = %u", id, size, r); + debugC(0, kDebugPack, "read(%u, %u) = %u", id, size, r); return r; } Common::SeekableReadStream *TransientFilePack::getStream(uint32 id) const { if (id < 1 || id > _fileCount) return NULL; - //debug(0, "stream: %04x-%04x", offsets[id - 1], offsets[id]); + debugC(0, kDebugPack, "stream: %04x-%04x", offsets[id - 1], offsets[id]); Common::File file; if (!file.open(_filename)) return NULL; @@ -146,7 +147,6 @@ Common::SeekableReadStream *TransientFilePack::getStream(uint32 id) const { return new Common::MemoryReadStream(ptr, r, DisposeAfterUse::YES); } - void MemoryPack::close() { chunks.clear(); } @@ -157,7 +157,7 @@ bool MemoryPack::open(const Common::String &filename) { return false; uint32 count = file.readUint32LE(); - debug(0, "opened %s, found %u entries [memory]", filename.c_str(), count); + debugC(0, kDebugPack, "opened %s, found %u entries [memory]", filename.c_str(), count); for (uint32 i = 0; i < count; ++i) { uint32 offset = file.readUint32LE(); int32 pos = file.pos(); @@ -199,5 +199,4 @@ Common::SeekableReadStream *MemoryPack::getStream(uint32 id) const { return new Common::MemoryReadStream(c.data, c.size, DisposeAfterUse::NO); } - } // End of namespace TeenAgent diff --git a/engines/teenagent/resources.cpp b/engines/teenagent/resources.cpp index dff58f98e2..442d0abf16 100644 --- a/engines/teenagent/resources.cpp +++ b/engines/teenagent/resources.cpp @@ -27,14 +27,10 @@ namespace TeenAgent { -Resources::Resources() {} - -Resources *Resources::instance() { - static Resources i; - return &i; +Resources::Resources() { } -void Resources::deinit() { +Resources::~Resources() { off.close(); on.close(); ons.close(); @@ -61,6 +57,36 @@ quick note on varia resources: 11: quit shareware */ +#define CSEG_SIZE 46000 // 0xb3b0 +#define DSEG_SIZE 59280 // 0xe790 +#define ESEG_SIZE 35810 // 0x8be2 + +void Resources::precomputeDialogOffsets() { + dialogOffsets.push_back(0); + int n = 0; + uint8 current, last = 0xff; + for (uint i = 0; i < eseg.size(); i++) { + current = eseg.get_byte(i); + + if (n == 4) { + dialogOffsets.push_back(i); + n = 0; + } + + if (current != 0x00 && last == 0x00) + n = 0; + + if (current == 0x00) + n++; + + last = current; + } + + debug(1, "Resources::precomputeDialogOffsets() - Found %d dialogs", dialogOffsets.size()); + for (uint i = 0; i < dialogOffsets.size(); i++) + debug(1, "\tDialog #%d: Offset 0x%04x", i, dialogOffsets[i]); +} + bool Resources::loadArchives(const ADGameDescription *gd) { Common::File *dat_file = new Common::File(); if (!dat_file->open("teenagent.dat")) { @@ -93,18 +119,17 @@ bool Resources::loadArchives(const ADGameDescription *gd) { } #endif - cseg.read(dat, 0xb3b0); - dseg.read(dat, 0xe790); - eseg.read(dat, 0x8be2); + dat->skip(CSEG_SIZE); + dseg.read(dat, DSEG_SIZE); + eseg.read(dat, ESEG_SIZE); delete dat; + precomputeDialogOffsets(); + FilePack varia; varia.open("varia.res"); - font7.load(varia, 7); - font7.width_pack = 1; - font7.height = 11; - font8.load(varia, 8); - font8.height = 31; + font7.load(varia, 7, 11, 1); + font8.load(varia, 8, 31, 0); varia.close(); off.open("off.res"); @@ -150,13 +175,13 @@ Common::SeekableReadStream *Resources::loadLan000(uint32 id) const { switch (id) { case 81: - if (dseg.get_byte(0xDBAD)) + if (dseg.get_byte(dsAddr_dogHasBoneFlag)) return lan500.getStream(160); break; case 137: - if (dseg.get_byte(0xDBC5) == 1) { - if (dseg.get_byte(0xDBC6) == 1) + if (dseg.get_byte(dsAddr_mansionTVOnFlag) == 1) { + if (dseg.get_byte(dsAddr_mansionVCRPlayingTapeFlag) == 1) return lan500.getStream(203); else return lan500.getStream(202); @@ -164,31 +189,31 @@ Common::SeekableReadStream *Resources::loadLan000(uint32 id) const { break; case 25: - if (dseg.get_byte(0xDBDF) == 2) { + if (dseg.get_byte(dsAddr_FirstActTrialState) == 2) { return lan500.getStream(332); } break; case 37: - if (dseg.get_byte(0xdbe2) == 1) { + if (dseg.get_byte(dsAddr_act1GuardState) == 1) { return lan500.getStream(351); - } else if (dseg.get_byte(0xdbe2) == 2) { + } else if (dseg.get_byte(dsAddr_act1GuardState) == 2) { return lan500.getStream(364); } break; case 29: - if (dseg.get_byte(0xDBE7) == 1) { + if (dseg.get_byte(dsAddr_birdOnBarRadioAntennaFlag) == 1) { return lan500.getStream(380); } case 30: - if (dseg.get_byte(0xDBE7) == 1) { + if (dseg.get_byte(dsAddr_birdOnBarRadioAntennaFlag) == 1) { return lan500.getStream(381); } case 42: - if (dseg.get_byte(0xDBEC) == 1) { + if (dseg.get_byte(dsAddr_johnNotyOutsideMansionDoorFlag) == 1) { return lan500.getStream(400); } } diff --git a/engines/teenagent/resources.h b/engines/teenagent/resources.h index 5c08a46489..7aae2f9ec8 100644 --- a/engines/teenagent/resources.h +++ b/engines/teenagent/resources.h @@ -31,18 +31,1144 @@ struct ADGameDescription; namespace TeenAgent { +// Code Segment Addresses (Read Only) +// Intro function : 0x024c +const uint16 csAddr_intro = 0x024c; +// Pole Climb Fail function : 0x4173 +const uint16 csAddr_poleClimbFail = 0x4173; +// Move Ego (Mark) To Suspicious Position function : 0x505c +const uint16 csAddr_egoSuspiciousPosition = 0x505c; +// Guard Scare Timeout function : 0x516d +const uint16 csAddr_guardScareTimeout = 0x516d; +// Guard Drinking function : 0x5189 +const uint16 csAddr_guardDrinking = 0x5189; +// Move Ego (Mark) To Default Position function : 0x557e +const uint16 csAddr_egoDefaultPosition = 0x557e; +// Cave NOP function : 0x599b +const uint16 csAddr_caveNOP = 0x599b; +// Enter Cave function : 0x5a21 +const uint16 csAddr_enterCave = 0x5a21; +// Ego (Mark) Scared By Spider function : 0x60b5 +const uint16 csAddr_egoScaredBySpider = 0x60b5; +// Move to Ladder and Leave Cellar function : 0x60d9 +const uint16 csAddr_moveToLadderAndLeaveCellar = 0x60d9; +// Leave Cellar function : 0x612b +const uint16 csAddr_leaveCellar = 0x612b; +// Too Dark function : 0x61fe +const uint16 csAddr_TooDark = 0x61fe; +// Move Ego (Mark) To Bottom-Right or Turn function : 0x6849 +const uint16 csAddr_egoBottomRightTurn = 0x6849; +// Checking Drawers function : 0x68e6 +const uint16 csAddr_checkingDrawers = 0x68e6; +// Drawer Open Message function : 0x6b86 +const uint16 csAddr_DrawerOpenMessage = 0x6b86; +// Is Cook Gone function : 0x70e0 +const uint16 csAddr_isCookGone = 0x70e0; +// Giving Flower to Old Lady function : 0x88de +const uint16 csAddr_givingFlowerToOldLady = 0x88de; +// Give Another Flower to Old Lady function : 0x890b +const uint16 csAddr_giveAnotherFlowerToOldLady = 0x890b; +// Giving Flower to Anne function : 0x8942 +const uint16 csAddr_givingFlowerToAnne = 0x8942; +// Give Another Flower to Anne function : 0x89aa +const uint16 csAddr_giveAnotherFlowerToAnne = 0x89aa; +// Putting Rock in Hole function : 0x8d57 +const uint16 csAddr_putRockInHole = 0x8d57; +// Mouse Out Of Hole Timeout function : 0x8d79 +const uint16 csAddr_mouseOutOfHoleTimeout = 0x8d79; +// Robot Safe (Mike) Already Unlocked Check function : 0x9166 +const uint16 csAddr_robotSafeAlreadyUnlockedCheck = 0x9166; +// Robot Safe (Mike) Unlock Check function : 0x9175 +const uint16 csAddr_robotSafeUnlockCheck = 0x9175; +// Open Full Toolbox function : 0x98fa +const uint16 csAddr_openFullToolbox = 0x98fa; +// Open Half Empty Toolbox function : 0x9910 +const uint16 csAddr_openHalfEmptyToolbox = 0x9910; +// Use Diving Equipment function : 0x9921 +const uint16 csAddr_useDivingEquipment = 0x9921; +// Successfully Got Anchor function : 0x99e0 +const uint16 csAddr_gotAnchor = 0x99e0; +// No Anchor Timeout function : 0x9a1d +const uint16 csAddr_noAnchorTimeout = 0x9a1d; +// Get Out of Lake function : 0x9a7a +const uint16 csAddr_getOutOfLake = 0x9a7a; +// Dig Under Mansion Wall function : 0x9aca +const uint16 csAddr_digMansionWall = 0x9aca; +// Too Dark Here function : 0x9c66 +const uint16 csAddr_tooDarkHere = 0x9c66; +// Examine Banknote function : 0x9c6d +const uint16 csAddr_examineBanknote = 0x9c6d; +// Use Time Pills function : 0x9c79 +const uint16 csAddr_useTimePills = 0x9c79; +// Mansion Intrusion Attempt function : 0x9d45 +const uint16 csAddr_mansionIntrusionAttempt = 0x9d45; +// Second Mansion Intrusion function : 0x9d90 +const uint16 csAddr_secondMansionIntrusion = 0x9d90; +// Third Mansion Intrusion function : 0x9de5 +const uint16 csAddr_thirdMansionIntrusion = 0x9de5; +// Fourth Mansion Intrusion function : 0x9e54 +const uint16 csAddr_fourthMansionIntrusion = 0x9e54; +// Fifth Mansion Intrusion function : 0x9ec3 +const uint16 csAddr_fifthMansionIntrusion = 0x9ec3; +// Sixth Mansion Intrusion function : 0x9f3e +const uint16 csAddr_sixthMansionIntrusion = 0x9f3e; +// Display Message function : 0xa055 +const uint16 csAddr_displayMsg = 0xa055; +// Reject Message function : 0xa4d6 +const uint16 csAddr_rejectMsg = 0xa4d6; + +// Data Segment Addresses +// Timed Callback State Variable : 0x0000 +const uint16 dsAddr_timedCallbackState = 0x0000; // 1 byte + +// Cursor Graphic 8*12px : 0x00da to 0x0139 (Read Only) +const uint16 dsAddr_cursor = 0x00da; + +// Reject Message Address Pointers : (4 * 2-byte) = 0x339e to 0x33a5 +const uint16 dsAddr_rejectMsgPtr = 0x339e; +// Reject Message #0 : 0x33a6 to 0x33c9 +const uint16 dsAddr_rejectMsg0 = 0x33a6; // "I have no idea what to do with it" +// Reject Message #1 : 0x33ca to 0x33f5 +const uint16 dsAddr_rejectMsg1 = 0x33ca; // "I can't imagine what I could do with this" +// Reject Message #2 : 0x33f6 to 0x3425 +const uint16 dsAddr_rejectMsg2 = 0x33f6; // "I can't figure out what I should do with this" +// Reject Message #3 : 0x3426 to 0x344f +const uint16 dsAddr_rejectMsg3 = 0x3426; // "I can't find any reason to mess with it" +// Cool Message : 0x3450 to 0x3456 +const uint16 dsAddr_coolMsg = 0x3450; // "Cool." +// Object Usage Error Message : 0x3457 to 0x3467 +const uint16 dsAddr_objErrorMsg = 0x3457; // "That's no good" +// Car Jack Message : 0x3468 to 0x348f +const uint16 dsAddr_carJackMsg = 0x3468; // "Wow! There's a car jack inside! Great!" +// Spanner Message : 0x3490 to 0x34c6 +const uint16 dsAddr_spannerMsg = 0x3490; // "There's something else inside the toolbox! A spanner!" +// Last Chance Message : 0x34c7 to 0x34d4 +const uint16 dsAddr_lastChanceMsg = 0x34c7; // "Last chance?" +// Give Up Message : 0x34d5 to 0x34e0 +const uint16 dsAddr_giveUpMsg = 0x34d5; // "I give up" +// Avoid Bees Message : 0x34e1 to 0x351e +const uint16 dsAddr_avoidBeesMsg = 0x34e1; // "I'm going to stay at least five meters away from these bees!" +// Boat Empty Message : 0x351f to 0x3541 +const uint16 dsAddr_boatEmptyMsg = 0x351f; // "There's nothing else in the boat" +// Too Hard Wood Message : 0x3542 to 0x3562 +const uint16 dsAddr_tooHardWoodMsg = 0x3542; // "This wood is too hard to break" +// Boo Message : 0x3563 to 0x3569 +const uint16 dsAddr_BooMsg = 0x3563; // "Booo!" +// Dont Push Luck Message : 0x356a to 0x358f +const uint16 dsAddr_dontPushLuckMsg = 0x356a; // "I don't think I should push my luck" +// Ordinary Haystack Message : 0x3590 to 0x35b1 +const uint16 dsAddr_ordinaryHaystackMsg = 0x3590; // "Just an ordinary hay stack. Now." +// Needle Haystack Message : 0x35b2 to 0x35e7 +const uint16 dsAddr_needleHaystackMsg = 0x35b2; // "And they say you can't find a needle in a haystack" +// No Potatoes Message : 0x35e8 to 0x3604 +const uint16 dsAddr_noPotatoMsg = 0x35e8; // "There are no more potatoes" +// Trousers Message : 0x3605 to 0x363e +const uint16 dsAddr_trousersMsg = 0x3605; // "Good I always asked mum for trousers with BIG pockets" +// Life Is Brutal Message : 0x363f to 0x364f +const uint16 dsAddr_lifeIsBrutalMsg = 0x363f; // "Life is brutal" +// Life Brutal Message : 0x3650 to 0x3667 +const uint16 dsAddr_lifeBrutalMsg = 0x3650; // "Life is really brutal" +// Tickled Message : 0x3668 to 0x367e +const uint16 dsAddr_tickledMsg = 0x3668; // "Something tickled me!" +// Its Gone Message : 0x367f to 0x3693 +const uint16 dsAddr_itsGoneMsg = 0x367f; // "At least it's gone" +// Monsters Message : 0x3694 to 0x36c1 +const uint16 dsAddr_monstersMsg = 0x3694; // "Who knows what monsters live in there" +// No Hands Message : 0x36c2 to 0x370e +const uint16 dsAddr_noHandsMsg = 0x36c2; // "I'd better not put my hands in there..." +// Totally Empty Message : 0x370f to 0x372d +const uint16 dsAddr_totalEmptyMsg = 0x370f; // "I can see it's totally empty" +// One Small Step Message : 0x372e to 0x3765 +const uint16 dsAddr_oneSmallStepMsg = 0x372e; // "One small step for man, one big pain in the head" +// No Chance Message : 0x3766 to 0x378f +const uint16 dsAddr_noChanceMsg = 0x3766; // "I won't take my chances a second time" +// Dinosaur Bone Message : 0x3790 to 0x37b7 +const uint16 dsAddr_dinoBoneMsg = 0x3790; // "I really hope this is DINOSAUR bone" +// Wall Shaken Message : 0x37b8 to 0x37e9 +const uint16 dsAddr_wallShakenMsg = 0x37b8; // "Wow! This must have shaken all the nearby walls!" +// Kinda Dark Message : 0x37ea to 0x3800 +const uint16 dsAddr_kindaDarkMsg = 0x37ea; // "It's kinda dark here" +// Not in Dark Message : 0x3801 to 0x3831 +const uint16 dsAddr_notInDarkMsg = 0x3801; // "I'm not going to wander here in the dark again" +// Shut Valve Message : 0x3832 to 0x387b +const uint16 dsAddr_shutValveMsg = 0x3832; // "Shutting the valve shook the dirt from the wall..." +// Need Sunglasses Message : 0x387c to 0x38a6 +const uint16 dsAddr_needSunglassesMsg = 0x387c; // "Sorry buddy, but I need your sunglasses" +// Not Best Place Message : 0x38a7 to 0x38cd +const uint16 dsAddr_notBestPlaceMsg = 0x38a7; // "It's not the best place for diving" +// Not Here Message : 0x38ce to 0x38da +const uint16 dsAddr_notHereMsg = 0x38ce; // "Not here" +// Can't Talk Underwater Message : 0x38db to 0x38fe +const uint16 dsAddr_cantTalkUnderwaterMsg = 0x38db; // "I really can't talk underwater!" +// Not Swimming There Message : 0x38ff to 0x3931 +const uint16 dsAddr_notSwimmingThereMsg = 0x38ff; // "I don't think swimming there is worth the effort" +// Too Little Air Message : 0x3932 to 0x3988 +const uint16 dsAddr_tooLittleAirMsg = 0x3932; // "If I want to get this anchor I have to swim there when I have more air in my lungs" +// Hooked Anchor Message : 0x3989 to 0x39ad +const uint16 dsAddr_hookedAnchorMsg = 0x3989; // "I was really hooked on this anchor!" +// Seaweed Message : 0x39ae to 0x39f5 +const uint16 dsAddr_seaweedMsg = 0x39ae; // "This seaweed is just like the flowers I gave mum on her last birthday" +// Fish Boat Message : 0x39f6 to 0x3a27 +const uint16 dsAddr_fishBoatMsg = 0x39f6; // "I wonder what fish do inside this boat at night" +// Fish Something Message : 0x3a28 to 0x3a59 +const uint16 dsAddr_fishSomethingMsg = 0x3a28; // "I think I have to fish out something down there" +// Fish Don't Worry Message : 0x3a5a to 0x3a84 +const uint16 dsAddr_fishDontWorryMsg = 0x3a5a; // "At least fish don't worry about the rain" +// Not Red Herring Message : 0x3a85 to 0x3ab6 +const uint16 dsAddr_notRedHerringMsg = 0x3a85; // "I hope all this fish stuff is not a red herring" +// Nice Down Message : 0x3ab7 to 0x3acd +const uint16 dsAddr_niceDownMsg = 0x3ab7; // "It's nice down there" +// Hey Let Go Message : 0x3ace to 0x3ae5 +const uint16 dsAddr_heyLetGoMsg = 0x3ace; // "Hey, let go, will ya?!" +// Aaahhh Message : 0x3ae6 to 0x3afc +const uint16 dsAddr_aaahhhMsg = 0x3ae6; // "Aaaaaaaaaaaaahhh!" +// Oops Message : 0x3afd to 0x3b03 +const uint16 dsAddr_oopsMsg = 0x3afd; // "Oops" +// Found Food Message : 0x3b04 to 0x3b2e +const uint16 dsAddr_foundFoodMsg = 0x3b04; // "People leave food in unbelievable places" +// Come Here Message : 0x3b2f to 0x3b58 +const uint16 dsAddr_comeHereMsg = 0x3b2f; // "Come here, I've got something for you" +// Cant Catch Message : 0x3b59 to 0x3b6b +const uint16 dsAddr_cantCatchMsg = 0x3b59; // "I can't catch it!" +// Trapped Mouse Message : 0x3b6c to 0x3b82 +const uint16 dsAddr_trappedMouseMsg = 0x3b6c; // "The mouse is trapped!" +// Yikes Message : 0x3b83 to 0x3b8a +const uint16 dsAddr_yikesMsg = 0x3b83; // "Yikes!" +// Mouse Nerve Message : 0x3b8b to 0x3bab +const uint16 dsAddr_mouseNerveMsg = 0x3b8b; // "Boy, this mouse has some nerve!" +// Drawers Empty Message : 0x3bac to 0x3bd1 +const uint16 dsAddr_drawersEmptyMsg = 0x3bac; // "There's nothing else in the drawers" +// Rid Bush Message 0x3bd2 to 0x3bf5 +const uint16 dsAddr_ridBushMsg = 0x3bd2; // "I must get rid of this bush first" +// Mouse Gone Message : 0x3bf6 to 0x3c0a +const uint16 dsAddr_mouseGoneMsg = 0x3bf6; // "The mouse has gone!" +// Nonsense Message : 0x3c0b to 0x3c15 +const uint16 dsAddr_nonsenseMsg = 0x3c0b; // "Nonsense" +// Good Doggy Message : 0x3c16 to 0x3c30 +const uint16 dsAddr_goodDoggyMsg = 0x3c16; // "I understand. Good doggy" +// Here Boy Message : 0x3c31 to 0x3c3c +const uint16 dsAddr_hereBoyMsg = 0x3c31; // "Here, boy" +// Friends Now Message : 0x3c3d to 0x3c57 +const uint16 dsAddr_friendsNowMsg = 0x3c3d; // "I hope we're friends now" +// Not Think Right Place Message : 0x3c58 to 0x3c7f +const uint16 dsAddr_notThinkRightPlaceMsg = 0x3c58; // "I don't think this is the right place" +// Cutscene Message A : 0x3c80 to 0x3c99 +const uint16 dsAddr_cutsceneMsgA = 0x3c80; // "Hundred moments later" +// Cutscene Message B : 0x3c9a to 0x3cbb +const uint16 dsAddr_cutsceneMsgB = 0x3c9a; // "Another hundred moments later" +// Found Crude Oil Message : 0x3cbc to 0x3ce9 +const uint16 dsAddr_foundCrudeOilMsg = 0x3cbc; // "At least I found crude oil and I'll be rich" +// My Life Message : 0x3cea to 0x3cfa +const uint16 dsAddr_myLifeMsg = 0x3cea; // "That's my life" +// Confusion Message : 0x3cfb to 0x3d00 +const uint16 dsAddr_ConfusionMsg = 0x3cfb; // "!?&!" +// Grandpa Promise Message : 0x3d01 to 0x3d1f +const uint16 dsAddr_grandpaPromiseMsg = 0x3d01; // "But grandpa, you promised!" +// Oh Lets Go Message : 0x3d20 to 0x3d39 +const uint16 dsAddr_ohLetsGoMsg = 0x3d20; // "Oh all right. Let's go" +// Bye Message : 0x3d3a to 0x3d3f +const uint16 dsAddr_byeMsg = 0x3d3a; // "Bye." +// No Need Message : 0x3d40 to 0x3d58 +const uint16 dsAddr_noNeedMsg = 0x3d40; // "No need to do it again" +// Girl Talk Message : 0x3d59 to 0x3d85 +const uint16 dsAddr_girlTalkMsg = 0x3d59; // "I really don't know how to talk to girls" +// Dont Work Purpose Message : 0x3d86 to 0x3dae +const uint16 dsAddr_dontWorkPurposeMsg = 0x3d86; // "I usually don't work without a purpose" +// Nut Real Message : 0x3daf to 0x3dc5 +const uint16 dsAddr_nutRealMsg = 0x3daf; // "Only the nut is real" +// Hen Fly Message : 0x3dc6 to 0x3df3 +const uint16 dsAddr_henFlyMsg = 0x3dc6; // "I wonder if hens can fly. Come here, baby" +// First Test Fail Message : 0x3df4 to 0x3e07 +const uint16 dsAddr_firstTestFailMsg = 0x3df4; // "First test failed" +// Rid Frustations Message : 0x3e08 to 3e30 +const uint16 dsAddr_ridFrustationsMsg = 0x3e08; // "I'd already got rid of my frustrations" +// Road Nowhere Message : 0x3e31 to 0x3e4e +const uint16 dsAddr_roadNowhereMsg = 0x3e31; // "Nah. It's a road to nowhere" +// Open Boot Message 0x3e4f to 0x3e62 +const uint16 dsAddr_openBootMsg = 0x3e4f; // "It opens the boot" +// Shut Tight Message : 0x3e63 to 0x3e74 +const uint16 dsAddr_shutTightMsg = 0x3e63; // "It's shut tight" +// Boot Empty Message : 0x3e75 to 0x3e97 +const uint16 dsAddr_bootEmptyMsg = 0x3e75; // "There's nothing else in the boot" +// Clothes Dry Message : 0x3e98 to 0x3eb1 +const uint16 dsAddr_clothesDryMsg = 0x3e98; // "The clothes are dry now." +// Crow Kill Message : 0x3eb2 to 0x3ed5 +const uint16 dsAddr_crowKillMsg = 0x3eb2; // "I'm sure these crows will kill me" +// Get Rid Of Guard First Message : 0x3ed6 to 0x3f29 +const uint16 dsAddr_getRidOfGuardFirstMsg = 0x3ed6; // "If I want to get inside I must get rid of this guard first..." +// Wall Too Smooth Message : 0x3f2a to 0x3f53 +const uint16 dsAddr_wallTooSmoothMsg = 0x3f2a; // "The wall surface is too smooth to climb" +// Too Much Resin To Climb Message : 0x3f54 to 0x3f84 +const uint16 dsAddr_tooMuchResinToClimbMsg = 0x3f54; // "I could climb it if there wasn't so much resin" +// Only Green Rect Message : 0x3f85 to 0x3feb +const uint16 dsAddr_onlyGreenRectMsg = 0x3f85; // "The only green stuff that I like is that rectangular piece of paper with..." +// Don't Wanna Touch Hedgehog Message : 0x3fec to 0x402d +const uint16 dsAddr_dontWannaTouchHedgehogMsg = 0x3fec; // "I don't wanna touch it. Its spines could hurt my delicate hands" +// Not Hungry Message : 0x402e to 0x4046 +const uint16 dsAddr_notHungryMsg = 0x402e; // "Thanks, I'm not hungry" +// No Long Hands Message : 0x4047 to 0x406c +const uint16 dsAddr_noLongHandsMsg = 0x4047; // "I really don't have such long hands" +// Too Far To Swim Message : 0x406d to 0x4089 +const uint16 dsAddr_tooFarToSwimMsg = 0x406d; // "It's too far to swim there" +// Echo Message : 0x408a to 0x4090 +const uint16 dsAddr_echoMsg = 0x408a; // "Echo!" +// Loud Echo Message : 0x4091 to 0x4097 +const uint16 dsAddr_loudEchoMsg = 0x4091; // "ECHO!" +// Who There Message : 0x4098 to 0x40a6 +const uint16 dsAddr_whoThereMsg = 0x4098; // "Who's there?!" +// Loud Who There Message : 0x40a7 to 0x40b5 +const uint16 dsAddr_loudWhoThereMsg = 0x40a7; // "WHO'S THERE?!" +// Dont Copy Message : 0x40b6 to 0x40cd +const uint16 dsAddr_dontCopyMsg = 0x40b6; // "DON'T COPY ME!" +// Loud Dont Copy Message : 0x40ce to 0x40e7 +const uint16 dsAddr_loudDontCopyMsg = 0x40ce; // "DON'T COPY ME!!!" +// Throw Rock Message : 0x40e8 to 0x410e +const uint16 dsAddr_throwRockMsg = 0x40e8; // "OR I WILL THROW A ROCK DOWN THERE!" +// Or I Will Message : 0x410f to 0x411c +const uint16 dsAddr_orIWillMsg = 0x410f; // "OR I WILL" +// Still There Message : 0x411d to 0x4132 +const uint16 dsAddr_stillThereMsg = 0x411d; // "Are you still there?" +// No Bucket Message : 0x4133 to 0x4163 +const uint16 dsAddr_noBucketMsg = 0x4133; // "It's not a barrel-organ. And there's no bucket." +// Dont Need To Open Message : 0x4164 to 0x417d +const uint16 dsAddr_dontNeedToOpenMsg = 0x4164; // "I don't need to open it" +// Hmm Grass Message : 0x417e to 41b0 +const uint16 dsAddr_hmmGrassMsg = 0x417e; // "Hmmm. Grass..." +// Find Nut Message : 0x41b1 to 0x41ee +const uint16 dsAddr_findNutMsg = 0x41b1; // "I won't find the nut just like that. The grass is too dense" +// Not Horny Message : 0x41ef to 0x41fe +const uint16 dsAddr_notHornyMsg = 0x41ef; // "I'm not horny" +// Can't Jump So High Message : 0x41ff to 0x423e +const uint16 dsAddr_CantJumpMsg = 0x41ff; // "No way I can jump so high, cause, err, white men can't jump" +// Don't Need It Message : 0x423f to 0x4250 +const uint16 dsAddr_dontNeedItMsg = 0x423f; // "I don't need it" +// Not Santa Claus Message : 0x4251 to 0x4266 +const uint16 dsAddr_notSantaClausMsg = 0x4251; // "I'm not Santa Claus" +// No Plastic Imitations Message : 0x4267 to 0x4288 +const uint16 dsAddr_noPlasticImitationsMsg = 0x4267; // "I don't need plastic imitations" +// Too Fragile Message : 0x4289 to 0x42ab +const uint16 dsAddr_tooFragileMsg = 0x4289; // "It's too fragile to carry around" +// Keep It Open Message : 0x42ac to 0x42c6 +const uint16 dsAddr_keepItOpenMsg = 0x42ac; // "I'd like to keep it open" +// Not Taking Socks Message : 0x42c7 to 0x4305 +const uint16 dsAddr_notTakingSocksMsg = 0x42c7; // "I really don't want to walk around with someone else's socks" +// Not Tired Message : 0x4306 to 0x431d +const uint16 dsAddr_notTiredMsg = 0x4306; // "Thanks, I'm not tired" +// Too Big Message : 0x431e to 0x434d +const uint16 dsAddr_tooBigMsg = 0x431e; // "It's too big and I doubt if I'll ever need it" +// No Secret Passage Message : 0x434e to 0x437f +const uint16 dsAddr_noSecretPassageMsg = 0x434e; // "I don't think there's any secret passage inside" +// No Fruit Message : 0x4380 to 0x43ab +const uint16 dsAddr_noFruitMsg = 0x4380; // "There are no more interesting fruits here" +// Jug Me Message : 0x43ac to 0x43cd +const uint16 dsAddr_jugMeMsg = 0x43ac; // "They can jug me if I steal this" +// Leave Flowers Alone Message : 0x43ce to 0x4411 +const uint16 dsAddr_leaveFlowersAloneMsg = 0x43ce; // "I'd better leave it. Women are really oversensitive about flowers." +// Mirror Mirror Message : 0x4412 to 0x444e +const uint16 dsAddr_mirrorMirrorMsg = 0x4412; // "Mirror, Mirror on the wall...." +// Think Too Long Message : 0x444f to 0x446a +const uint16 dsAddr_thinkTooLongMsg = 0x444f; // "Hey, don't think too long" +// Hint Male Message : 0x446b to 0x4491 +const uint16 dsAddr_HintMaleMsg = 0x446b; // "A hint: Someone in this room, a male" +// OK Wait Message : 0x4492 to 0x44a6 +const uint16 dsAddr_okWaitMsg = 0x4492; // "OK, take your time" +// Busy Thinking Message : 0x44a7 to 0x44d5 +const uint16 dsAddr_busyThinkingMsg = 0x44a7; // "I'd better not interrupt it's thought process" +// No Dentists Message : 0x44d6 to 0x450d +const uint16 dsAddr_noDentistsMsg = 0x44d6; // "I don't want to have anything in common with dentists" +// Too Heavy Message : 0x450e to 0x4531 +const uint16 dsAddr_tooHeavyMsg = 0x450e; // "It's too heavy. Not that I'm wimp" +// What Got Message : 0x4532 to 0x4554 +const uint16 dsAddr_whatGotMsg = 0x4532; // "Let's look what we've got here" +// Strawberry Jam Message : 0x4555 to 0x4567 +const uint16 dsAddr_strawberryJamMsg = 0x4555; // "Strawberry jam" +// Gooseberry Jam Message : 0x4568 to 0x457a +const uint16 dsAddr_gooseberryJamMsg = 0x4568; // "Gooseberry jam" +// Blackberry Jam Message : 0x457b to 0x458d +const uint16 dsAddr_blackberryJamMsg = 0x457b; // "Blackberry jam" +// Bilberry Jam Message : 0x458e to 0x459e +const uint16 dsAddr_bilberryJamMsg = 0x458e; // "Bilberry jam" +// Get Me Out Jam Message : 0x459f to 0x45b7 +const uint16 dsAddr_getMeOutJamMsg = 0x459f; // "Get me out of this jam!" +// Rosemary Jam Message : 0x45b8 to 0x45d9 +const uint16 dsAddr_rosemaryJamMsg = 0x45b8; // "Oh, and there is Rosemary jam" +// Know Rosemary Message : 0x45da to 0x4602 +const uint16 dsAddr_knowRosemaryMsg = 0x45da; // "I used to know someone called Rosemary" +// Unwanted Jams Message : 0x4603 to 0x461c +const uint16 dsAddr_unwantedJamsMsg = 0x4603; // "I don't want those jams" +// Too Dark Message : 0x461d to 0x463b +const uint16 dsAddr_TooDarkMsg = 0x461d; // "It's too dark to see clearly" +// Yeow Message : 0x463c to 0x4649 +const uint16 dsAddr_yeowMsg = 0x463c; // "YEEEOOOWWWW!" +// Yawn Message : 0x464a to 0x4651 +const uint16 dsAddr_yawnMsg = 0x464a; // "(yawn)" +// Laughter Message : 0x4652 to 0x465d +const uint16 dsAddr_laughterMsg = 0x4652; // "(laughter)" +// No Hands Sharp Thorns Message : 0x465e to 0x46a0 +const uint16 dsAddr_noHandsSharpThornsMsg = 0x465e; // "I can't remove it with my hands. these thorns look really sharp" +// No Chainsaw Fuel Message : 0x46a1 to 0x46c2 +const uint16 dsAddr_noChainsawFuelMsg = 0x46a1; // "There's no fuel in the chainsaw" +// Thorns Too Thin Message : 0x46c3 to 0x46f6 +const uint16 dsAddr_thornsTooThinMsg = 0x46c3; // "Thorns are too thin, the chainsaw is useless here" +// Rock Walking Gee Message : 0x46f7 to 0x473c +const uint16 dsAddr_rockWalkingGeeMsg = 0x46f7; // "Yeah, great idea. Let's take this rock and walk around a bit. Gee..." +// Butterfly Message : 0x473d to 0x477a +const uint16 dsAddr_butterflyMsg = 0x473d; // "I'd better leave them alone, they make this place beautiful" +// Not Sure If Alive Message : 0x477b to 0x4797 +const uint16 dsAddr_notSureIfAliveMsg = 0x477b; // "I'm not sure if it's alive" + +// FIXME - Unknown where this is used.. Talking to SOMETHING... +// Unknown Language Message : 0x4798 to 0x47be +const uint16 dsAddr_unknownLanguageMsg = 0x4798; // "I don't know what language it speaks" + +// Hole Too Narrow Message : 0x47bf to 0x47e6 +const uint16 dsAddr_holeTooNarrowMsg = 0x47bf; // "The hole is too narrow to fit my hand" +// Bird Attack Message : 0x47e7 to 0x4807 +const uint16 dsAddr_birdAttackMsg = 0x47e7; // "Hey You! Wake up! Bird attack!" +// No Search Warrant Message : 0x4808 to 0x4827 +const uint16 dsAddr_noSearchWarrantMsg = 0x4808; // "I don't have a search-warrant" +// Uninteresting Haystack Message : 0x4828 to 0x485f +const uint16 dsAddr_uninterestingHaystackMsg = 0x4828; // "I don't see anything interesting about this haystack" +// More Complicated Message : 0x4860 to 0x4881 +const uint16 dsAddr_moreComplicatedMsg = 0x4860; // "It's more complicated than that" +// Nut Rake Message : 0x4882 to 0x48be +const uint16 dsAddr_nutRakeMsg = 0x4882; // "It's pointless, the nut will slip between the rake's teeth" +// Paddle Broken Message : 0x48bf to 0x48d5 +const uint16 dsAddr_paddleBrokenMsg = 0x48bf; // "The paddle is BROKEN" +// Branch Not Paddle Message : 0x48d6 to 0x4912 +const uint16 dsAddr_branchNotPaddleMsg = 0x48d6; // "This branch is not a paddle. It doesn't even look like one" +// Try Somewhere Else Message : 0x4913 to 0x495b +const uint16 dsAddr_trySomewhereElseMsg = 0x4913; // "I'd better try somewhere else - I suppose this side is heavily guarded" +// Sharpen Not Pulverize Message : 0x495c to 0x4983 +const uint16 dsAddr_sharpenNotPulverizeMsg = 0x495c; // "I needed to sharpen it, not pulverize" +// Can't Do Anything Too Dark Message : 0x4984 to 0x49ad +const uint16 dsAddr_cantDoTooDarkMsg = 0x4984; // "I can't do anything here, it's too dark" +// Bribe Message : 0x49ae to 0x49d0 +const uint16 dsAddr_BribeMsg = 0x49ae; // "Here, let's make your pocket fat." +// Bank Note Message : 0x49d1 to 0x4a28 +const uint16 dsAddr_bankNoteMsg = 0x49d1; // "It's a note from some bank..." +// Show Her Money Message : 0x4a29 to 0x4a5a +const uint16 dsAddr_showHerMoneyMsg = 0x4a29; // "If I just show her the money, she might take it" +// Hundred Bucks Message : 0x4a5b to 0x4a6e +const uint16 dsAddr_hundredBucksMsg = 0x4a5b; // "A hundred bucks!!!" +// Want Blood Message : 0x4a6f to 0x4a7d +const uint16 dsAddr_wantBloodMsg = 0x4a6f; // "I want Blood!" +// Dont Leave Mansion Message : 0x4a7e to 0x4aaf +const uint16 dsAddr_dontLeaveMansionMsg = 0x4a7e; // "I don't want to leave the mansion, I want blood!" +// Wimp Message : 0x4ab0 to 0x4acc +const uint16 dsAddr_WimpMsg = 0x4ab0; // "I'm a pathetic little wimp" +// Strange Drawer Message : 0x4acd to 0x4b0c +const uint16 dsAddr_strangeDrawerMsg = 0x4acd; // "Strange, but the drawer is stuck if the next drawer is open" +// Not Ordinary Drawers Message : 0x4b0d to 0x4b38 +const uint16 dsAddr_notOrdinaryDrawersMsg = 0x4b0d; // "Maybe these are not just ordinary drawers!" +// Drawer Open Message : 0x4b39 to 0x4b6b +const uint16 dsAddr_drawerOpenMsg = 0x4b39; // "I cannot open the drawer if the next one is open!" +// Blue Interior Message 0x4b6c to 0x4b86 +const uint16 dsAddr_blueInteriorMsg = 0x4b6c; // "It's got a blue interior" +// Red Interior Message : 0x4b87 to 0x4ba0 +const uint16 dsAddr_redInteriorMsg = 0x4b87; // "It's got a red interior" +// Grey Interior Message : 0x4ba1 to 0x4bbb +const uint16 dsAddr_greyInteriorMsg = 0x4ba1; // "It's got a grey interior" +// Green Interior Message : 0x4bbc to 0x4bd7 +const uint16 dsAddr_greenInteriorMsg = 0x4bbc; // "It's got a green interior" +// Brown Interior Message : 0x4bd8 to 0x4bf3 +const uint16 dsAddr_brownInteriorMsg = 0x4bd8; // "It's got a brown interior" +// Pink Interior Message : 0x4bf4 to 0x4c0e +const uint16 dsAddr_pinkInteriorMsg = 0x4bf4; // "It's got a pink interior" +// Dictaphone Inside Message : 0x4c0f to 0x4c31 +const uint16 dsAddr_dictaphoneInsideMsg = 0x4c0f; // "Wow! There's a dictaphone inside!" +// Found Polaroid Message : 0x4c32 to 0x4c60 +const uint16 dsAddr_foundPolaroidMsg = 0x4c32; // "There's a polaroid inside! I might need that" +// Book Held Message : 0x4c61 to 0x4c83 +const uint16 dsAddr_bookHeldMsg = 0x4c61; // "Something's got hold of the book!" +// Secret Compartment Message : 0x4c84 to 0x4c9f +const uint16 dsAddr_secretCompartmentMsg = 0x4c84; // "Wow! A secret compartment!" +// Dont Mess Message : 0x4ca0 to 0x4cc6 +const uint16 dsAddr_dontMessMsg = 0x4ca0; // "I don't need to mess with it anymore" +// Full Automatic Message : 0x4cc7 to 0x4cd8 +const uint16 dsAddr_fullAutomaticMsg = 0x4cc7; // "Fully Automatic" +// No More Sheets Message : 0x4cd9 to 0x4d01 +const uint16 dsAddr_noMoreSheetsMsg = 0x4cd9; // "Right now I don't need any more sheets" +// No Deprave Message : 0x4d02 to 0x4d29 +const uint16 dsAddr_noDepraveMsg = 0x4d02; // "Nah, I don't want to deprave the kids" +// No Read Again Message : 0x4d2a to 0x4d5a +const uint16 dsAddr_noReadAgainMsg = 0x4d2a; // "I don't want to read it again. I might like it." +// TV Off Message : 0x4d5b to 0x4d7f +const uint16 dsAddr_tvOffMsg = 0x4d5b; // "I just realised that the TV is off" +// Not Happen Message : 0x4d80 to 0x4d92 +const uint16 dsAddr_NotHappenMsg = 0x4d80; // "Nothing happened" +// Tape Started Message : 0x4d93 to 0x4da5 +const uint16 dsAddr_tapeStartedMsg = 0x4d93; // "The tape started!" +// Much Better Message : 0x4da6 to 0x4dba +const uint16 dsAddr_muchBetterMsg = 0x4da6; // "That's much better" +// No Sleep Message : 0x4dbb to 0x4dd2 +const uint16 dsAddr_noSleepMsg = 0x4dbb; // "I don't want to sleep" +// Just Cork Message : 0x4dd3 to 0x4de5 +const uint16 dsAddr_justCorkMsg = 0x4dd3; // "It's just a cork" +// Enough Photos Message : 0x4de6 to 0x4e04 +const uint16 dsAddr_enoughPhotosMsg = 0x4de6; // "I don't need any more photos" +// Record Scare Message : 0x4e05 to 0x4e31 +const uint16 dsAddr_recordScareMsg = 0x4e05; // "Yeah, I can record this and scare the cats" +// Already Recorded Message : 0x4e32 to 0x4e57 +const uint16 dsAddr_alreadyRecordedMsg = 0x4e32; // "I already recorded what I wanted to" +// Can't Record No Batteries Message : 0x4e58 to 0x4e8d +const uint16 dsAddr_cantRecordNoBatteriesMsg = 0x4e58; // "I can't record anything until I find some batteries" + +// FIXME - Not sure how to get this message. Dictaphone with no batteries somewhere? Radio? +// No Batteries No Fun Message : 0x4e8e to 0x4ea4 +const uint16 dsAddr_NoBatteriesNoFunMsg = 0x4e8e; // "No batteries, no fun" + +// Not Right Moment Message : 0x4ea5 to 0x4ecd +const uint16 dsAddr_notRightMomentMsg = 0x4ea5; // "I don't think this is the right moment" +// Cook Around Message : 0x4ece to 0x4ef9 +const uint16 dsAddr_cookAroundMsg = 0x4ece; // "I can't do anything with this cook around" +// Same Bottle Message : 0x4efa to 0x4f3c +const uint16 dsAddr_sameBottleMsg = 0x4efa; // "The bottle's the same, but I doubt if it's enough to fool anyone" +// Break Flatten Message : 0x4f3d to 0x4f68 +const uint16 dsAddr_breakFlattenMsg = 0x4f3d; // "I wanted to break it, not to flatten it!" +// What Inside Message : 0x4f69 to 0x4f9a +const uint16 dsAddr_whatInsideMsg = 0x4f69; // "I was always curious what's inside these things" +// Rest Useless Message : 0x4f9b to 0x4fb0 +const uint16 dsAddr_restUselessMsg = 0x4f9b; // "The rest is useless" +// Two Batteries Message : 0x4fb1 to 0x4fca +const uint16 dsAddr_twoBatteriesMsg = 0x4fb1; // "Wow! Two 1.5V batteries!" +// One Taken Message : 0x4fcb to 0x4fe1 +const uint16 dsAddr_oneTakenMsg = 0x4fcb; // "This one's taken, OK?" +// Slight Mad Message : 0x4fe2 to 0x5009 +const uint16 dsAddr_slightMadMsg = 0x4fe2; // "It finally happened. I'm slightly mad" +// Paper Burnt Message : 0x500a to 0x502a +const uint16 dsAddr_paperBurntMsg = 0x500a; // "The paper burnt out completely!" +// Burn Baby Message : 0x502b to 0x503d +const uint16 dsAddr_burnBabyMsg = 0x502b; // "Burn, baby, burn!" +// Voila Message : 0x503e to 0x5045 +const uint16 dsAddr_voilaMsg = 0x503e; // "Voila" +// Too Hot Message : 0x5046 to 0x505d +const uint16 dsAddr_tooHotMsg = 0x5046; // "It's too hot to touch!" +// Frozen Shelf Message : 0x505e to 0x5081 +const uint16 dsAddr_frozenShelfMsg = 0x505e; // "It has frozen hard onto the shelf!" +// Yummy Message : 0x5082 to 0x5089 +const uint16 dsAddr_yummyMsg = 0x5082; // "Yummy" +// Dislike Veal Message : 0x508a to 0x50a5 +const uint16 dsAddr_dislikeVealMsg = 0x508a; // "I never liked veal anyway" +// No Reason Message : 0x50a6 to 0x50c2 +const uint16 dsAddr_noReasonMsg = 0x50a6; // "There's no reason to do it" +// Fooled Once Message : 0x50c3 to 0x50e0 +const uint16 dsAddr_fooledOnceMsg = 0x50c3; // "I'd already fooled him once" +// Mike Voice Test Message : 0x50e1 to 0x5100 +const uint16 dsAddr_mikeVoiceTestMsg = 0x50e1; // "Mike, activate the voice test" +// Not My Voice Message : 0x5101 to 0x5123 +const uint16 dsAddr_notMyVoiceMsg = 0x5101; // "I won't cheat Mike with MY voice" +// Singing Message : 0x5124 to 0x5137 +const uint16 dsAddr_singingMsg = 0x5124; // "siiiiinging!" +// Mike Scent Test Message : 0x5138 to 0x5160 +const uint16 dsAddr_mikeScentTestMsg = 0x5138; // "Mike, let's get on with the scent test" +// Mike View Test Message : 0x5161 to 0x517a +const uint16 dsAddr_mikeViewTestMsg = 0x5161; // "Mike, run the view test" +// Cutscene Message #0 : 0x517b to 0x51a6 +const uint16 dsAddr_cutsceneMsg0 = 0x517b; // "A secret diary of ..." +// Cant Hide Message : 0x51a7 to 0x51ba +const uint16 dsAddr_cantHideMsg = 0x51a7; // "I can't hide here!" +// John Outside Message : 0x51bb to 0x51e6 +const uint16 dsAddr_johnOutsideMsg = 0x51bb; // "There's John Noty outside! I can't go out!" +// Was Close Message : 0x51e7 to 0x51f7 +const uint16 dsAddr_wasCloseMsg = 0x51e7; // "That was close" +// Cork In Hole Message : 0x51f8 to 0x5217 +const uint16 dsAddr_corkInHoleMsg = 0x51f8; // "The cork is stuck in the hole" +// Fits Perfect Message : 0x5218 to 0x522b +const uint16 dsAddr_fitsPerfectMsg = 0x5218; // "It fits perfectly!" +// Enough Water Message : 0x522c to 0x524e +const uint16 dsAddr_enoughWaterMsg = 0x522c; // "There's enough water in the sink" +// No Hot Water Message : 0x524f to 0x5271 +const uint16 dsAddr_noHotWaterMsg = 0x524f; // "There's no hot water in the sink" +// Label Off Message : 0x5272 to 0x528a +const uint16 dsAddr_labelOffMsg = 0x5272; // "The label has come off!" +// Cork Too Small Message : 0x528b to 0x52a8 +const uint16 dsAddr_corkTooSmallMsg = 0x528b; // "The cork is a bit too small" +// Not Try Now Message : 0x52a9 to 0x52ca +const uint16 dsAddr_notTryNowMsg = 0x52a9; // "There's no need to try them now" +// No Salad Message : 0x52cb to 0x52f5 +const uint16 dsAddr_noSaladMsg = 0x52cb; // "I don't want to turn myself into a salad" +// Nah Message : 0x52f6 to 0x52fd +const uint16 dsAddr_nahMsg = 0x52f6; // "Nah" +// Vent First Message : 0x52fe to 0x5325 +const uint16 dsAddr_ventFirstMsg = 0x52fe; // "I'd better stop this ventilator first" +// Catch John First Message : 0x5326 to 0x5348 +const uint16 dsAddr_catchJohnFirstMsg = 0x5326; // "I'd better catch John Noty first" +// Only Chilli Message : 0x5349 to 0x5371 +const uint16 dsAddr_onlyChilliMsg = 0x5349; // "Good this red stuff is only a chilli" +// Water Hot Message : 0x5372 to 0x538c +const uint16 dsAddr_waterHotMsg = 0x5372; // "The water looks very hot" +// Sink Full Message : 0x538d to 0x53ac +const uint16 dsAddr_sinkFullMsg = 0x538d; // "The sink is full of hot water" +// No Sock Store Message : 0x53ad to 0x53dc +const uint16 dsAddr_noSockStoreMsg = 0x53ad; // "I don't have anything to store these socks in" +// Show Papers Message : 0x53dd to 0x53f1 +const uint16 dsAddr_showPapersMsg = 0x53dd; // "Here are my papers" +// Got Permission Message : 0x53f2 to 0x5410 +const uint16 dsAddr_gotPermissionMsg = 0x53f2; // "I already got the permission" +// Saving Fine Message : 0x5411 to 0x5462 +const uint16 dsAddr_SavingFineMsg = 0x5411; // "Saving is a very fine thing..." +// Love Captain Message : 0x5463 to 0x5474 +const uint16 dsAddr_loveCaptainMsg = 0x5463; // "I love captain" +// Soccer Rulz Message : 0x5475 to 0x5483 +const uint16 dsAddr_soccerRulzMsg = 0x5475; // "Soccer rulz" +// Tree Cut Message : 0x5484 to 0x54c3 +const uint16 dsAddr_treeCutMsg = 0x5484; // "Don't cut the trees..." +// Visa Accepted Message : 0x54c4 to 0x54d4 +const uint16 dsAddr_visaAcceptedMsg = 0x54c4; // "VISA Accepted" +// Other Graffiti Message : 0x54d5 to 0x54f6 +const uint16 dsAddr_otherGraffitiMsg = 0x54d5; // "The rest of graffiti is obscene" +// First Trial Message : 0x54f7 to 0x5510 +const uint16 dsAddr_firstTrialMsg = 0x54f7; // "Sir, I'm Mark. A rookie" +// Locked Message : 0x5511 to 0x551e +const uint16 dsAddr_lockedMsg = 0x5511; // "It's Locked!" +// Thanks Message : 0x551f to 0x5527 +const uint16 dsAddr_ThanksMsg = 0x551f; // "Thanks." +// Unknown Usage Message : 0x5528 to 0x555c +const uint16 dsAddr_unkUsageMsg = 0x5528; // "I don't have any idea what to do with it right now" +// Idea Message : 0x555d to 0x5576 +const uint16 dsAddr_ideaMsg = 0x555d; // "That gives me an idea" +// Check Works Message : 0x5577 to 0x5599 +const uint16 dsAddr_checkWorksMsg = 0x5577; // "Now I got to check if it works" +// Time To Call Message : 0x559a to 0x55bf +const uint16 dsAddr_timeToCallMsg = 0x559a; // "I think it is time to call captain" +// Meal Finished Message : 0x55c0 to 0x55da +const uint16 dsAddr_mealFinishedMsg = 0x55c0; // "Hey! I finished my meal." +// Bowl Welded Message : 0x55db to 0x55fe +const uint16 dsAddr_bowlWeldedMsg = 0x55db; // "Wow. He got welded to the bowl" +// Gotcha Message : 0x55ff to 0x5607 +const uint16 dsAddr_gotchaMsg = 0x55ff; // "Gotcha" +// No Pocket Message : 0x5608 to 0x5631 +const uint16 dsAddr_noPocketMsg = 0x5608; // "I don't want to touch his pockets again." +// Does Not Work Message : 0x5632 to 0x5645 +const uint16 dsAddr_doesNotWorkMsg = 0x5632; // "That doesn't work" +// Message : 0x5646 to 0x5655 +const uint16 dsAddr_fnMsg1 = 0x5646; // "Piece of cake" +// Message : 0x5656 to 0x5679 +const uint16 dsAddr_fnMsg2 = 0x5656; // "And how am I supposed to get back?" +// Message : 0x567a to 0x5681 +const uint16 dsAddr_fnMsg3 = 0x567a; // "Great" +// Message : 0x5682 to 0x5695 +const uint16 dsAddr_fnMsg4 = 0x5682; // "Oh, yeah, right" +// Pull Object Message #1 : 0x5696 to 0x56ab +const uint16 dsAddr_pullObjMsg1 = 0x5696; // "I can't pull it out" +// Dont Want To Touch Message : 0x56ac to 0x56d9 +const uint16 dsAddr_dontWantToTouchMsg = 0x56ac; // "I don't want to touch it - I might get hurt" +// Fence Blocks Message : 0x56da to 0x56f6 +const uint16 dsAddr_fenceBlocksMsg = 0x56da; // "The fence blocks the way" +// Not Want To Sleep Message : 0x56f7 to 0x570e +const uint16 dsAddr_notWantToSleepMsg = 0x56f7; // "I don't want to sleep" +// Pull Object Message #2 : 0x570f to 0x5721 +const uint16 dsAddr_pullObjMsg2 = 0x570f; // "I can't reach it" +// Hello Question Message : 0x5722 to 0x5729 +const uint16 dsAddr_helloQMsg = 0x5722; // "Hello?" +// Totally Addicted Message : 0x572a to 0x5741 +const uint16 dsAddr_totallyAddictedMsg = 0x572a; // "He's totally addicted" +// What About Message : 0x5742 to 0x5756 +const uint16 dsAddr_whatAboutMsg = 0x5742; // "What about a new" +// Hot Off Message : 0x5757 to 0x576f +const uint16 dsAddr_hotOffMsg = 0x5757; // "hot off the press" +// Full Color Message : 0x5770 to 0x5781 +const uint16 dsAddr_fullColorMsg = 0x5770; // "full-color" +// Special Edition Message : 0x5782 to 0x5798 +const uint16 dsAddr_specialEdMsg = 0x5782; // "special edition" +// Soldier News Message : 0x5799 to 0x57b1 +const uint16 dsAddr_soldierNewsMsg = 0x5799; // "of Soldier News?!" +// Pole Climb Done Message : 0x57b2 to 0x57bf +const uint16 dsAddr_poleClimbDoneMsg = 0x57b2; // "Never Again!" +// Vac Message : 0x57c0 to 0x57de +const uint16 dsAddr_vacMsg = 0x57c0; // "What am I? A vacuum cleaner?!" +// Cutscene Message #1 : 0x57df to 0x5809 +const uint16 dsAddr_cutsceneMsg1 = 0x57df; // "sixty seven rude words later" +// Cutscene Message #2 : 0x580a to 0x5826 +const uint16 dsAddr_cutsceneMsg2 = 0x580a; // "Meanwhile in the mansion" +// Now Open Message : 0x5827 to 0x5836 +const uint16 dsAddr_nowOpenMsg = 0x5827; // "Now it's open" +// Cmon Baby Message : 0x5837 to 0x5854 +const uint16 dsAddr_cmonBabyMsg = 0x5837; // "C'mon baby, it's all yours!" +// Talk Not Now Message : 0x5855 to 0x5882 +const uint16 dsAddr_talkNotNowMsg = 0x5855; // "I've got no reason to talk to him right now." +// Yeah Right Message : 0x5883 to 0x5893 +const uint16 dsAddr_yeahRightMsg = 0x5883; // "Yeah right!" +// Barman Too Close Message : 0x5894 to 0x58af +const uint16 dsAddr_barmanTooCloseMsg = 0x5894; // "The barman is too close" +// Yuck Message : 0x58b0 to 0x58b6 +const uint16 dsAddr_yuckMsg = 0x58b0; // "Yuck!" +// Prefer Water Message : 0x58b7 to 0x58c7 +const uint16 dsAddr_preferWaterMsg = 0x58b7; // "I prefer water" +// Too Weak To Climb Message : 0x58c8 to 0x58e2 +const uint16 dsAddr_tooWeakToClimbMsg = 0x58c8; // "I'm too weak to climb it" +// Spring Prick Message : 0x58e3 to 0x5904 +const uint16 dsAddr_springPrickMsg = 0x58e3; // "The springs would prick my back" +// Food Alive Message : 0x5905 to 0x592e +const uint16 dsAddr_foodAliveMsg = 0x5905; // "No, thanks. This food seems still alive" +// Door Closed Message : 0x592f to 0x5954 +const uint16 dsAddr_doorClosedMsg = 0x592f; // "The door is closed. What a surprise." +// Empty Message : 0x5955 to 0x5961 +const uint16 dsAddr_emptyMsg = 0x5955; // "It's Empty" +// Geography Class Message : 0x5962 to 0x599c +const uint16 dsAddr_geographyClassMsg = 0x5962; // "I should have paid more attention in geography classes." +// Don't Need Mess Message : 0x599d to 0x59b5 +const uint16 dsAddr_dontNeedMessMsg = 0x599d; // "I don't need this mess" +// Seen Softer Rocks Message : 0x59b6 to 0x59da +const uint16 dsAddr_seenSofterRocksMsg = 0x59b6; // "Thanks, but I've seen softer rocks" +// Too Blunt Message : 0x59db to 0x5a00 +const uint16 dsAddr_tooBluntMsg = 0x59db; // "They are too blunt to be of any use" +// Useless Models Message : 0x5a01 to 0x5a1f +const uint16 dsAddr_uselessModelsMsg = 0x5a01; // "What's the use of the models?" +// Barman Will Notice Message : 0x5a20 to 0x5a50 +const uint16 dsAddr_barmanWillNoticeMsg = 0x5a20; // "The barman will surely notice its disappearing" +// Too Much To Drink Message : 0x5a51 to 0x5a95 +const uint16 dsAddr_tooMuchToDrinkMsg = 0x5a51; // "It'd take too much time to drink it..." +// 0x5a96 to 0x5a97 : 2 extra null bytes (padding?) +// Not Thief Message : 0x5a98 to 0x5ac5 +const uint16 dsAddr_notThiefMsg = 0x5a98; // "I'm not a thief. And it's empty, by the way." +// Too Many To Search Message : 0x5ac6 to 0x5aec +const uint16 dsAddr_tooManyToSearchMsg = 0x5ac6; // "There are too many of them to search" +// Captain Would Not Fit Message : 0x5aed to 0x5b26 +const uint16 dsAddr_captainWouldNotFitMsg = 0x5aed; // "Captain surely wouldn't fit them. I must look elsewhere" +// Chickening Never Message : 0x5b27 to 0x5b3e +const uint16 dsAddr_chickenNeverMsg = 0x5b27; // "Chickening? Me? Never!" +// Can't Open It Message : 0x5b3f to 0x5b50 +const uint16 dsAddr_cantOpenItMsg = 0x5b3f; // "I can't open it" +// Don't Need Them Message : 0x5b51 to 0x5b64 +const uint16 dsAddr_dontNeedThemMsg = 0x5b51; // "I don't need them" +// Peeping Tom Message : 0x5b65 to 0x5b7f +const uint16 dsAddr_peepingTomMsg = 0x5b65; // "What am I? A Peeping Tom?" +// Big Pockets Message : 0x5b80 to 0x5baa +const uint16 dsAddr_bigPocketsMsg = 0x5b80; // "I have big pockets, but there are limits" +// Trouble With Stairs Message : 0x5bab to 0x5be6 +const uint16 dsAddr_troubleWithStairsMsg = 0x5bab; // "If I put it on I might have trouble walking up the stairs" +// 9 Lives To Read Message : 0x5be7 to 0x5c0a +const uint16 dsAddr_9LivesToReadMsg = 0x5be7; // "I'd need 9 lives to read them all" +// Thanks Not Tired Message : 0x5c0b to 0x5c25 +const uint16 dsAddr_thanksNotTiredMsg = 0x5c0b; // "Thanks, I'm not so tired" +// No Need To Turn On Message : 0x5c26 to 0x5c45 +const uint16 dsAddr_noNeedToTurnOnMsg = 0x5c26; // "There's no need to turn it on" +// Won't Bear Weight Message : 0x5c46 to 0x5c5f +const uint16 dsAddr_wontBearWeightMsg = 0x5c46; // "It won't bear my weight" +// Never Learnt Message : 0x5c60 to 0x5c81 +const uint16 dsAddr_neverLearntMsg = 0x5c60; // "I never learnt to how use one" +// So Sharp Message : 0x5c82 to 0x5cab +const uint16 dsAddr_soSharpMsg = 0x5c82; // "They're so sharp they'd rip my trousers!" +// Cognac Message : 0x5cac to 0x5cda +const uint16 dsAddr_cognacMsg = 0x5cac; // "Pfui! The cognac really didn't do any good" +// No Time For Pleasures Message : 0x5cdb to 0x5cfc +const uint16 dsAddr_noTimeForPleasuresMsg = 0x5cdb; // "I don't have time for pleasures" +// Not Socks With Bare Hands Message : 0x5cfd to 0x5d2b +const uint16 dsAddr_notSocksWithBareHandsMsg = 0x5cfd; // "I won't touch these socks with my bare hands!" +// Not Halloween Message : 0x5d2c to 0x5d40 +const uint16 dsAddr_notHalloweenMsg = 0x5d2c; // "It's not Halloween" +// Not Manual Message : 0x5d41 to 0x5d6d +const uint16 dsAddr_NotManualMsg = 0x5d41; // "It can't be controlled manually! I hate it!" +// Nothing To Play Message : 0x5d6e to 0x5d86 +const uint16 dsAddr_nothingToPlayMsg = 0x5d6e; // "I have nothing to play" +// Not Mine Message : 0x5d87 to 0x5da7 +const uint16 dsAddr_notMineMsg = 0x5d87; // "I can't take it. It's not mine." +// Hey What's The Matter Message : 0x5da8 to 0x5dc1 +const uint16 dsAddr_HeyWtmQMsg = 0x5da8; // "Hey! What's the matter?!" +// Its Open Message : 0x5dc2 to 0x5dcd +const uint16 dsAddr_ItsOpenMsg = 0x5dc2; // "It's Open!" +// Out Of Order Message : 0x5dce to 0x5de1 +const uint16 dsAddr_outOfOrderMsg = 0x5dce; // "It's out of order" +// Captain Watching Message : 0x5de2 to 0x5e0a +const uint16 dsAddr_captainWatchingMsg = 0x5de2; // "with captain watching? Better not" +// Blunt Sickle Message : 0x5e0b to 0x5e24 +const uint16 dsAddr_bluntSickleMsg = 0x5e0b; // "The sickle is too blunt" +// First Business Message : 0x5e25 to 0x5e53 +const uint16 dsAddr_firstBusinessMsg = 0x5e25; // "First I've got some business to take care of" +// No Digging Knife Message : 0x5e54 to 0x5e8e +const uint16 dsAddr_noDiggingKnifeMsg = 0x5e54; // "Digging it out with the knife could take a hundred years" + +// FIXME - Where is this message used?! Unused? +// No Mess On Table Message : 0x5e8f to 0x5ebd +const uint16 dsAddr_noMessOnTableMsg = 0x5e8f; // "I don't want to make more mess on this table" + +// Throw Crumbs To Bird Question Message : 0x5ebe to 0x5ee5 +const uint16 dsAddr_throwCrumbsToBirdQMsg = 0x5ebe; // "Should I throw the crumbs to the bird?" +// Don't Waste Crumbs Message : 0x5ee6 to 0x5f10 +const uint16 dsAddr_dontWasteCrumbs = 0x5ee6; // "I don't want to waste these tasty crumbs" +// Might Slip Fall In Message : 0x5f11 to 0x5f3b +const uint16 dsAddr_mightSlipFallInMsg = 0x5f11; // "Better not... I might slip and fall in..." +// Book Color Message Address Pointers : (6 * 2-byte) = 0x5f3c to 0x5f47 +const uint16 dsAddr_bookColorMsgPtr = 0x5f3c; +// Book Color Message #0 : 0x5f48 to 0x5f60 +const uint16 dsAddr_bookColorMsg0 = 0x5f48; // ""The history of blues"" +// Book Color Message #1 : 0x5f61 to 0x5f8f +const uint16 dsAddr_bookColorMsg1 = 0x5f61; // ""Manchester United, or the Red Devils story"" +// Book Color Message #2 : 0x5f90 to 0x5fb5 +const uint16 dsAddr_bookColorMsg2 = 0x5f90; // ""Greyhounds and other hunting dogs"" +// Book Color Message #3 : 0x5fb6 to 0x5fe6 +const uint16 dsAddr_bookColorMsg3 = 0x5fb6; // ""Greenhorn, or my adventures in the Wild West"" +// Book Color Message #4 : 0x5fe7 to 0x6008 +const uint16 dsAddr_bookColorMsg4 = 0x5fe7; // ""Charlie Brown and his company"" +// Book Color Message #5 : 0x6009 to 0x6034 +const uint16 dsAddr_bookColorMsg5 = 0x6009; // ""Pink Panther: an unauthorised biography"" + +// Mansion Intrusion Function Pointers : (5 * 2-byte) = 0x6035 to 0x603e +const uint16 dsAddr_MansionIntrusionFnPtr = 0x6035; + +// Save State Region : 0x6478 to 0xdbf1 +const uint16 dsAddr_saveState = 0x6478; +const uint16 saveStateSize = 0x777a; + +// Save Description String (24 bytes) : 0x6478 to 0x648f + +// Ego (Mark) position in scene : 0x64af to 0x64b2 +const uint16 dsAddr_egoX = 0x64af; // 2 bytes +const uint16 dsAddr_egoY = 0x64b1; // 2 bytes + +// Idle Animation List Table : 0x6540 to 0x???? +const uint16 dsAddr_idleAnimationListPtr = 0x6540; + +// Palette Effect Data : 0x6609 to 0x???? +const uint16 dsAddr_paletteEffectData = 0x6609; + +// Scene Fade Table (2 byte address * 42): 0x663e to 0x6691 +const uint16 dsAddr_sceneFadeTablePtr = 0x663e; + +// Scene Walkbox Table (2 byte LE address * 42) : 0x6746 to 0x6799 +const uint16 dsAddr_sceneWalkboxTablePtr = 0x6746; + +// Scene Zoom Table (2 byte address * 42) : 0x70f4 to 0x7147 +const uint16 dsAddr_sceneZoomTablePtr = 0x70f4; + +// Scene Object Table (2 byte address * 42) : 0x7254 to 0x72a7 +const uint16 dsAddr_sceneObjectTablePtr = 0x7254; + +// Scene Object Name : Sonny or whatever : 0x92e5 to 0x92f6 +const uint16 dsAddr_scnObjNameSonny = 0x92e5; // "Sonny or whatever" + +// Scene Object Name - Anne : 0x9820 to 0x9824 +const uint16 dsAddr_scnObjNameAnne = 0x9820; // "Anne" + +// Scene Object Name - Mike : 0xaa94 to 0xaa98 +const uint16 dsAddr_scnObjNameMike = 0xaa94; // "Mike" + +// Current Scene Id : 0xb4f3 +const uint16 dsAddr_currentScene = 0xb4f3; // 1 byte + +// Ons Animation Table (2 byte address * ??) : 0xb4f5 to 0x???? +const uint16 dsAddr_onsAnimationTablePtr = 0xb4f5; + +// Examine Object Callback Table (2 byte LE address * ??) : 0xb5ce to 0x???? +const uint16 dsAddr_objExamineCallbackTablePtr = 0xb5ce; + +// Use Object Callback Table (2 byte LE address * ??) : 0xb89c to 0x???? +const uint16 dsAddr_objUseCallbackTablePtr = 0xb89c; + +// Inventory Object Callback Table (3 byte (id, callbackAddr) * 7) : 0xbb72 to 0xbb86 +const uint16 dsAddr_objCallbackTablePtr = 0xbb72; +// invItemToolboxFull = csAddr_openFullToolbox +// invItemToolboxHalfEmpty = csAddr_openHalfEmptyToolbox +// invItemDiveEquipment = csAddr_useDivingEquipment +// invItemShovelAct2 = csAddr_digMansionWall +// 0xff = csAddr_tooDarkHere // TODO: No object has id 0xff - Callback Disabled? +// invItemBanknote = csAddr_examineBanknote +// invItemTimePills = csAddr_useTimePills + +// Scene Hotspots Table (2 byte LE address * ??) : 0xbb87 to 0x???? +const uint16 dsAddr_sceneHotspotsPtr = 0xbb87; + +// Inventory Object Combining Table (5 byte (id, id, new object id, msgAddr) * 34) : 0xc335 to 0xc3de +const uint16 dsAddr_objCombiningTablePtr = 0xc335; +// 3 byte null terminator for Combining table 0xc3df to 0xc3e1 + +// Object Combine Error Message : 0xc3e2 to 0xc41e +const uint16 dsAddr_objCombineErrorMsg = 0xc3e2; // "Using these two objects ..." + +// Inventory (item ids held by Ego) (1 byte * 24) : 0xc48d to 0xc4a4 +const uint16 dsAddr_inventory = 0xc48d; +// 0xc4a5 is null word alignment byte +// Inventory item data address table (2 bytes * 92) : 0xc4a6 to 0xc55d +const uint16 dsAddr_inventoryItemDataPtrTable = 0xc4a6; + +// Lans Animation Table (4 byte * ??) : 0xd89e to 0x???? +const uint16 dsAddr_lansAnimationTablePtr = 0xd89e; + +// Spoken With Mansion Guard Flag : 0xda96 +// FIXME - This is probably unecessary as although this location is set, it +// doesn't now appear to be read. +const uint16 dsAddr_spokenWithMansionGuardFlag = 0xda96; // 1 byte +// Have Not Spoken With Mansion Guard Flag : 0xda97 +// FIXME - This is probably unecessary as although this location is set, it +// doesn't now appear to be read. +const uint16 dsAddr_haveNotSpokenWithMansionGuardFlag = 0xda97; // 1 byte + +// Dialog Stack - Pleading with Mansion Guard : 0xdaa6 to 0xdab1 +const uint16 dsAddr_dialogStackPleadingToMansionGuard = 0xdaa6; +// Dialog Stack - Mansion Guard Drinking : 0xdab2 to 0xdab9 +// FIXME - Can't find where this is used... +const uint16 dsAddr_dialogStackMansionGuardDrinking = 0xdab2; +// Dialog Stack - Talking To Sonny : 0xdaba to 0xdac3 +const uint16 dsAddr_dialogStackSonny = 0xdaba; +// Dialog Stack - Talking To Grandpa : 0xdac4 to 0xdacd +const uint16 dsAddr_dialogStackGrandpa = 0xdac4; +// Cave Thorns Cut Down Flag : 0xdaca +// FIXME - Cave Thorns Flag overlap with dsAddr_dialogStackGrandpa. Bug or typo? +const uint16 dsAddr_caveThornsCutDownFlag = 0xdaca; // 1 byte +// Dialog Stack - Trying To Borrow Shotgun From Grandpa : 0xdace to 0xdad3 +const uint16 dsAddr_dialogStackGrandpaShotgun = 0xdace; +// Dialog Stack - Trying To Borrow Fan From Grandpa : 0xdad4 to 0xdad9 +const uint16 dsAddr_dialogStackGrandpaFan = 0xdad4; +// Dialog Stack - Ask Old Lady if OK : 0xdada to 0xdaef +const uint16 dsAddr_dialogStackAskOldLadyOK = 0xdada; +// Dialog Stack - Talking To Old Lady : 0xdaf0 to 0xdaf5 +const uint16 dsAddr_dialogStackOldLady = 0xdaf0; +// Dialog Stack - Borrow Duster From Old Lady : 0xdaf6 to 0xdafb +const uint16 dsAddr_dialogStackBorrowDusterFromOldLady = 0xdaf6; +// Dialog Stack - Get Old Lady's Apple : 0xdafc to 0xdb01 +const uint16 dsAddr_dialogStackGetAppleOldLady = 0xdafc; +// Dialog Stack - Giving Another Flower To Anne : 0xdb02 to 0xdb07 +const uint16 dsAddr_dialogStackAnotherFlowerToAnne = 0xdb02; +// Dialog Stack - Talking To Squirrel : 0xdb08 to 0xdb13 +const uint16 dsAddr_dialogStackSquirrel = 0xdb08; +// Dialog Stack - Talking To Dog : 0xdb14 to 0xdb1d +const uint16 dsAddr_dialogStackDog = 0xdb14; +// Dialog Stack - Take Axe : 0xdb1e to 0xdb23 +const uint16 dsAddr_dialogStackTakeAxe = 0xdb1e; +// Dialog Stack - Talking To Busy Cook : 0xdb24 to 0xdb2d +const uint16 dsAddr_dialogStackBusyCook = 0xdb24; +// Dialog Stack - Talking To Mike the Robot Safe : 0xdb2e to 0xdb35 +const uint16 dsAddr_dialogStackRobotSafe = 0xdb2e; +// Dialog Stack - Talking To John Noty At Endgame : 0xdb36 to 0xdb3f +const uint16 dsAddr_dialogStackJohnNotyEndgame = 0xdb36; +// Dialog Stack - Camp Guard Waiting For Documents : 0xdb40 to 0xdb4b +const uint16 dsAddr_dialogStackCampGuardWantsDocuments = 0xdb40; +// Dialog Stack - Camp Guard Reading Soldier News : 0xdb4c to 0xdb55 +const uint16 dsAddr_dialogStackCampGuardReadingNews = 0xdb4c; +// Dialog Stack - Camp Guard Show Pass : 0xdb56 to 0xdb5b +const uint16 dsAddr_dialogStackCampGuardShowPass = 0xdb56; +// Dialog Stack - Jail Door Grates : 0xdb5c to 0xdb67 +const uint16 dsAddr_dialogStackJailDoorGrates = 0xdb5c; +// Dialog Stack - Talking to Barman : 0xdb68 to 0xdb71 +const uint16 dsAddr_dialogStackBarman = 0xdb68; +// Dialog Stack - Fall Into Mudpool : 0xdb72 to 0xdb79 +const uint16 dsAddr_dialogStackFallIntoMudpool = 0xdb72; +// Dialog Stack - Talking To Mudpool Bird : 0xdb7a to 0xdb81 +const uint16 dsAddr_dialogStackMudpoolBird = 0xdb7a; +// Dialog Stack - Interrogate Captain : 0xdb82 to 0xdb89 +const uint16 dsAddr_dialogStackInterrogateCaptain = 0xdb82; +// Dialog Stack - Bar Cellar Door : 0xdb8a to 0xdb8f +const uint16 dsAddr_dialogStackBarCellarDoor = 0xdb8a; +// Current Music Id Playing : 0xdb90 +const uint16 dsAddr_currentMusic = 0xdb90; // 1 byte +// Unused Byte : 0xdb91 +// Already Adjusted Hoop Pole Flag : 0xdb92 +const uint16 dsAddr_alreadyAdjustedHoopPoleFlag = 0xdb92; // 1 byte +// Already Kicked Hen Flag : 0xdb93 +const uint16 dsAddr_alreadyKickedHenFlag = 0xdb93; // 1 byte +// Already Pulled Trunk Release Lever Flag : 0xdb94 +const uint16 dsAddr_alreadyPulledTrunkReleaseLeverFlag = 0xdb94; // 1 byte +// Car Trunk Empty Flag : 0xdb95 +const uint16 dsAddr_carTrunkEmptyFlag = 0xdb95; // 1 byte +// Birds Gone From Scarecrow Flag : 0xdb96 +const uint16 dsAddr_birdsGoneFromScarecrowFlag = 0xdb96; // 1 byte +// Already Spoken To Anne Flag : 0xdb97 +const uint16 dsAddr_alreadySpokenToAnneFlag = 0xdb97; // 1 byte +// Flower Isle in Lake State (0 = Both Flowers Present, 1 = One Flower Taken, 2+ = Both Flowers Taken): 0xdb98 +const uint16 dsAddr_flowerIsleState = 0xdb98; // 1 byte +// Already Got Broken Paddle Flag : 0xdb99 +const uint16 dsAddr_alreadyGotBrokenPaddleFlag = 0xdb99; // 1 byte +// Given Flower To OldLady Already Flag : 0xdb9a +const uint16 dsAddr_givenFlowerToOldLadyAlreadyFlag = 0xdb9a; // 1 byte +// Given Flower To Anne Already Flag : 0xdb9b +const uint16 dsAddr_givenFlowerToAnneAlreadyFlag = 0xdb9b; // 1 byte +// Scared Guard Already Flag : 0xdb9c +const uint16 dsAddr_scaredGuardAlreadyFlag = 0xdb9c; // 1 byte +// Got Needle Already Flag : 0xdb9d +const uint16 dsAddr_gotNeedleAlreadyFlag = 0xdb9d; // 1 byte +// Got Potato Already Flag : 0xdb9e +const uint16 dsAddr_gotPotatoAlreadyFlag = 0xdb9e; // 1 byte +// Bees Gone Flag : 0xdb9f +const uint16 dsAddr_beesGoneFlag = 0xdb9f; // 1 byte +// Mansion Already Been Through Tunnel Flag : 0xdba0 +const uint16 dsAddr_mansionTunnelDoneFlag = 0xdba0; // 1 byte +// Mansion Tree Hollow Empty Flag : 0xdba1 +const uint16 dsAddr_mansionTreeHollowEmptyFlag = 0xdba1; // 1 byte +// Climbed Mansion Tree Already Flag : 0xdba2 +const uint16 dsAddr_climbedMansionTreeAlreadyFlag = 0xdba2; // 1 byte +// Cellar Door Open Flag : 0xdba3 +const uint16 dsAddr_cellarDoorOpenFlag = 0xdba3; // 1 byte +// Cellar Light On Flag : 0xdba4 +const uint16 dsAddr_lightOnFlag = 0xdba4; // 1 byte +// Laundry State (0 = Wet on Line, 1 = Dry on Line, 2 = Not Present): 0xdba5 +const uint16 dsAddr_laundryState = 0xdba5; // 1 byte +// Lake Diving Exit Message (0 to 5+) : 0xdba6 +const uint16 dsAddr_lakeDivingExitMessage = 0xdba6; // 1 byte +// Searched Grandpa Drawers Flag : 0xdba7 +const uint16 dsAddr_SearchedGrandpaDrawersFlag = 0xdba7; // 1 byte +// Hankerchief in Mousehole Flag : 0xdba8 +const uint16 dsAddr_HankerchiefInMouseholeFlag = 0xdba8; // 1 byte +// Mouse Hole State : 0xdba9, 0 = Mouse Gone, 1 = Mouse Trapped, 2 = Mouse Success(?) +const uint16 dsAddr_mouseHoleState = 0xdba9; // 1 byte +// Mouse Nerve Message Said Flag : 0xdbaa +const uint16 dsAddr_mouseNerveMsgSaidFlag = 0xdbaa; // 1 byte +// Mouse Already Got Gold Nugget Flag : 0xdbab +const uint16 dsAddr_mouseGotGoldNuggetFlag = 0xdbab; // 1 byte +// Unused Byte : 0xdbac +// Dog Has Bone Flag : 0xdbad +const uint16 dsAddr_dogHasBoneFlag = 0xdbad; // 1 byte +// Ego Already Scared By Spider Flag : 0xdbae +const uint16 dsAddr_egoAlreadyScaredBySpiderFlag = 0xdbae; // 1 byte +// Already Said That Anne is Beautiful Flag : 0xdbaf +const uint16 dsAddr_alreadySaidAnneBeautifulFlag = 0xdbaf; // 1 byte +// Squirrel's Nut State (0 = Nut in Tree, 1 = Nut in Grass, 2 = Nut Found with Rake) : 0xdbb0 +const uint16 dsAddr_squirrelNutState = 0xdbb0; // 1 byte +// Nut Swapped For Apple in Fruit Bowl Flag : 0xdbb1 +const uint16 dsAddr_nutSwappedForAppleFlag = 0xdbb1; // 1 byte +// Spoken To Man In Well Flag : 0xdbb2 +const uint16 dsAddr_spokenToManInWellFlag = 0xdbb2; // 1 byte +// Spoken To Mirror Flag : 0xdbb3 +const uint16 dsAddr_spokenToMirrorFlag = 0xdbb3; // 1 byte +// Cellar Shelves Examine Count (0 to 2(clamped))) : 0xdbb4 +const uint16 dsAddr_cellarShelfExamineCount = 0xdbb4; // 1 byte +// Examined Bank Note Flag : 0xdbb5 +const uint16 dsAddr_examinedBanknoteFlag = 0xdbb5; // 1 byte +// VGA Artist Quip Already Said Flag : 0xdbb6 +const uint16 dsAddr_vgaArtistQuipAlreadySaidFlag = 0xdbb6; // 1 byte +// Mansion Desk Blue Drawer Open Flag : 0xdbb7 +const uint16 dsAddr_blueDrawerOpenFlag = 0xdbb7; // 1 byte +// Mansion Desk Red Drawer Open Flag : 0xdbb8 +const uint16 dsAddr_redDrawerOpenFlag = 0xdbb8; // 1 byte +// Mansion Desk Grey Drawer Open Flag : 0xdbb9 +const uint16 dsAddr_greyDrawerOpenFlag = 0xdbb9; // 1 byte +// Mansion Desk Green Drawer Open Flag : 0xdbba +const uint16 dsAddr_greenDrawerOpenFlag = 0xdbba; // 1 byte +// Mansion Desk Brown Drawer Open Flag : 0xdbbb +const uint16 dsAddr_brownDrawerOpenFlag = 0xdbbb; // 1 byte +// Mansion Desk Pink Drawer Open Flag : 0xdbbc +const uint16 dsAddr_pinkDrawerOpenFlag = 0xdbbc; // 1 byte +// Mansion Colored Drawer Puzzle Hint Message Given Flag : 0xdbbd +const uint16 dsAddr_drawerPuzzleHintGivenFlag = 0xdbbd; // 1 byte +// Mansion Colored Drawer Got Dictaphone Flag : 0xdbbe +const uint16 dsAddr_drawerGotDictaphoneFlag = 0xdbbe; // 1 byte +// Mansion Colored Drawer Got Polaroid Flag : 0xdbbf +const uint16 dsAddr_drawerGotPolaroidFlag = 0xdbbf; // 1 byte +// Mansion Colored Drawer Puzzle Book Message Flag : 0xdbc0 +const uint16 dsAddr_drawerPuzzleBookMessageFlag = 0xdbc0; // 1 byte +// Mansion Colored Drawer Puzzle - Random Book Color Value (0 = No Book, 1 to 6 = Books) : 0xdbc1 +const uint16 dsAddr_drawerPuzzleBookValue = 0xdbc1; // 1 byte +// Mansion Colored Drawer Puzzle Solved Flag : 0xdbc2 +const uint16 dsAddr_drawerPuzzleSolvedFlag = 0xdbc2; // 1 byte +// Mansion Trashcan Searched Flag : 0xdbc3 +const uint16 dsAddr_mansionTrashcanSearchedFlag = 0xdbc3; // 1 byte +// Mansion Read Newspaper Flag : 0xdbc4 +const uint16 dsAddr_mansionReadNewspaperFlag = 0xdbc4; // 1 byte +// Mansion TV On Flag : 0xdbc5 +const uint16 dsAddr_mansionTVOnFlag = 0xdbc5; // 1 byte +// Mansion VCR Playing Tape Flag : 0xdbc6 +const uint16 dsAddr_mansionVCRPlayingTapeFlag = 0xdbc6; // 1 byte +// Mansion VCR Played Tape Before Flag : 0xdbc7 +const uint16 dsAddr_mansionVCRPlayedTapeBeforeFlag = 0xdbc7; // 1 byte +// Mansion VCR Tape Loaded Flag : 0xdbc8 +const uint16 dsAddr_mansionVCRTapeLoadedFlag = 0xdbc8; // 1 byte +// Mansion Examined Couch Before Flag : 0xdbc9 +const uint16 dsAddr_mansionExaminedCouchBeforeFlag = 0xdbc9; // 1 byte +// Mansion Used Polaroid on TV Flag : 0xdbca +const uint16 dsAddr_usedPolaroidOnTVFlag = 0xdbca; // 1 byte +// Mansion Used Dictaphone on TV Flag : 0xdbcb +const uint16 dsAddr_usedDictaphoneOnTVFlag = 0xdbcb; // 1 byte +// Mansion Cook Gone Flag : 0xdbcc +const uint16 dsAddr_MansionCookGoneFlag = 0xdbcc; // 1 byte +// Mansion Radio Broken Flag : 0xdbcd +const uint16 dsAddr_MansionRadioBrokenFlag = 0xdbcd; // 1 byte +// Mansion Got Radio Batteries Flag : 0xdbce +const uint16 dsAddr_MansionGotRadioBatteriesFlag = 0xdbce; // 1 byte +// Mansion Have Opened Fridge Before Flag : 0xdbcf +const uint16 dsAddr_MansionHaveOpenedFridgeBeforeFlag = 0xdbcf; // 1 byte +// Mansion Put Burning Paper In Fridge Flag : 0xdbd0 +const uint16 dsAddr_MansionPutBurningPaperInFridgeFlag = 0xdbd0; // 1 byte +// Mansion Robot Safe Unlocked Flag : 0xdbd1 +const uint16 dsAddr_MansionRobotSafeUnlockedFlag = 0xdbd1; // 1 byte +// Mansion Robot Safe Voice Test Passed Flag : 0xdbd2 +const uint16 dsAddr_MansionRobotSafeVoiceTestPassedFlag = 0xdbd2; // 1 byte +// Mansion Robot Safe Scent Test Passed Flag : 0xdbd3 +const uint16 dsAddr_MansionRobotSafeScentTestPassedFlag = 0xdbd3; // 1 byte +// Mansion Robot Safe View Test Passed Flag : 0xdbd4 +const uint16 dsAddr_MansionRobotSafeViewTestPassedFlag = 0xdbd4; // 1 byte +// Mansion John Noty Outside Bathroom Flag : 0xdbd5 +const uint16 dsAddr_MansionJohnNotyOutsideBathroomFlag = 0xdbd5; // 1 byte +// Mansion Sink State (0 - No Plug, Sink Empty, 1 - Plug, Sink Empty, 2 - Plug, Sink Full) : 0xdbd6 +const uint16 dsAddr_MansionSinkState = 0xdbd6; // 1 byte +// Mansion Through Fan By Time Pill Flag : 0xdbd7 +const uint16 dsAddr_MansionThruFanByTimePillFlag = 0xdbd7; // 1 byte +// Mansion Ventilator Fan Stopped Flag : 0xdbd8 +const uint16 dsAddr_MansionVentFanStoppedFlag = 0xdbd8; // 1 byte +// Mansion John Noty Escaping Flag : 0xdbd9 +const uint16 dsAddr_MansionJohnNotyEscapingFlag = 0xdbd9; // 1 byte +// Shown Pass To Guard Flag : 0xdbda +const uint16 dsAddr_ShownPassToGuardFlag = 0xdbda; // 1 byte +// Graffiti Message Id (0 to 6) : 0xdbdb +const uint16 dsAddr_graffitiMsgId = 0xdbdb; // 1 byte +// Got Food Bowl in Jail Flag : 0xdbdc +const uint16 dsAddr_GotFoodBowlInJailFlag = 0xdbdc; // 1 byte +// Jail Cable and Bowl State (0 = Cable not in Bowl, 1 = Cable in Bowl, 2 = Bowl Electrified 3 = Captain Shocked) : 0xdbdd +const uint16 dsAddr_JailCableAndBowlState = 0xdbdd; // 1 byte +// Got Jail Key Flag : 0xdbde +const uint16 dsAddr_GotJailKeyFlag = 0xdbde; // 1 byte +// First Act Trial State (0 = Before First Trial, 1 to 3 = Trial 1st to 3rd) : 0xdbdf +const uint16 dsAddr_FirstActTrialState = 0xdbdf; // 1 byte +// Already Tickled Captain Flag : 0xdbe0 +const uint16 dsAddr_AlreadyTickledCaptainFlag = 0xdbe0; // 1 byte +// Cut Fence Flag : 0xdbe1 +const uint16 dsAddr_cutFenceFlag = 0xdbe1; // 1 byte +// Act 1 Guard State (0 = Normal, 1 = With Kaleidoscope & Grenade, 2 = Kaleidoscope & No Grenade) : 0xdbe2 +const uint16 dsAddr_act1GuardState = 0xdbe2; // 1 byte +// Spoken to Barman About Third Trial Flag : 0xdbe3 +const uint16 dsAddr_spokeToBarmanAboutThirdTrialFlag = 0xdbe3; // 1 byte +// Got Mug Of Mud Flag : 0xdbe4 +const uint16 dsAddr_gotMugOfMudFlag = 0xdbe4; // 1 byte +// Got Rope In Act 1 Flag : 0xdbe5 +const uint16 dsAddr_gotRopeAct1Flag = 0xdbe5; // 1 byte +// Captain Drawer State : 0xdbe6 +const uint16 dsAddr_captainDrawerState = 0xdbe6; // 1 byte +// Bird on Bar Radio Antenna Flag : 0xdbe7 +const uint16 dsAddr_birdOnBarRadioAntennaFlag = 0xdbe7; // 1 byte +// Swapped Barman Mug Flag : 0xdbe8 +const uint16 dsAddr_swappedBarmanMugFlag = 0xdbe8; // 1 byte +// Barman Passed Out Flag : 0xdbe9 +const uint16 dsAddr_barmanPassedOutFlag = 0xdbe9; // 1 byte +// Counter for Mansion Intrusion Attempts : 0xdbea +const uint16 dsAddr_mansionEntryCount = 0xdbea;// 1 byte +// Unused Byte : 0xdbeb +// John Noty Outside Mansion Door Flag : 0xdbec +const uint16 dsAddr_johnNotyOutsideMansionDoorFlag = 0xdbec; // 1 byte +// Unused Byte : 0xdbed +// Lovestruck By Anne Flag : 0xdbee +const uint16 dsAddr_lovestruckByAnneFlag = 0xdbee;// 1 byte +// Mansion Handle in Door Hole Flag : 0xdbef +const uint16 dsAddr_mansionHandleInDoorHoleFlag = 0xdbef;// 1 byte +// Got Password Need to Speak To Barman Flag : 0xdbf0 +const uint16 dsAddr_gotPasswordNeedSpeakBarmanFlag = 0xdbf0; // 1 byte +// Mansion Already Used Time Pills Flag : 0xdbf1 +const uint16 dsAddr_mansionAlreadyUsedTimePillsFlag = 0xdbf1; // 1 byte + +// Intro Credits #1 : 0xe3c2 to 0xe3e5 (Read Only) +const uint16 dsAddr_introCredits1 = 0xe3c2; // "backgrounds ..." +// Intro Credits #2 : 0xe3e6 to 0xe3fe (Read Only) +const uint16 dsAddr_introCredits2 = 0xe3e6; // "music ..." +// Intro Credits #3 : 0xe3ff to 0xe42e (Read Only) +const uint16 dsAddr_introCredits3 = 0xe3ff; // "animation..." +// Intro Credits #4 : 0xe42f to 0xe45b (Read Only) +const uint16 dsAddr_introCredits4 = 0xe42f; // "programming..." +// Credits #5 : 0xe45c to 0xe47b (Read Only) +const uint16 dsAddr_credits5 = 0xe45c; // "after the tiring journey..." +// Final Credits #6 : 0xe47c to 0xe487 (Read Only) +const uint16 dsAddr_finalCredits6 = 0xe47c; // "THE END..." +// Final Credits #7 : 0xe488 to 0xe782 (Read Only) +const uint16 dsAddr_finalCredits7 = 0xe488; // "programming..." +// 0xe783 to 0xe78f: 13 null bytes at end of dseg data - segment alignment padding? + class Resources { -protected: - Resources(); public: - static Resources *instance(); + Resources(); + ~Resources(); bool loadArchives(const ADGameDescription *gd); - void deinit(); + void loadOff(Graphics::Surface &surface, byte *palette, int id); Common::SeekableReadStream *loadLan(uint32 id) const; Common::SeekableReadStream *loadLan000(uint32 id) const; - //void loadOn(Graphics::Surface &surface, int id, uint16 &dst, uint16 *flags); - //void loadOns(Graphics::Surface &surface, int id, uint16 &dst); /* * PSP (as the other sony playstation consoles - to be confirmed and 'ifdef'ed here too) @@ -56,8 +1182,17 @@ public: FilePack off, on, ons, lan000, lan500, sam_mmm, sam_sam, mmm, voices; #endif - Segment cseg, dseg, eseg; + Segment dseg; Font font7, font8; + + //const byte *getDialog(uint16 dialogNum) { return eseg.ptr(dialogOffsets[dialogNum]); } + uint16 getDialogAddr(uint16 dialogNum) { return dialogOffsets[dialogNum]; } + + Segment eseg; +private: + void precomputeDialogOffsets(); + + Common::Array<uint16> dialogOffsets; }; } // End of namespace TeenAgent diff --git a/engines/teenagent/scene.cpp b/engines/teenagent/scene.cpp index 038c8ea05e..bdeb11a841 100644 --- a/engines/teenagent/scene.cpp +++ b/engines/teenagent/scene.cpp @@ -21,6 +21,7 @@ #include "common/config-manager.h" #include "common/debug.h" +#include "common/events.h" #include "common/algorithm.h" #include "common/ptr.h" #include "common/textconsole.h" @@ -28,24 +29,23 @@ #include "graphics/palette.h" #include "teenagent/scene.h" +#include "teenagent/inventory.h" #include "teenagent/resources.h" #include "teenagent/surface.h" #include "teenagent/objects.h" #include "teenagent/teenagent.h" -#include "teenagent/dialog.h" #include "teenagent/music.h" namespace TeenAgent { -Scene::Scene(TeenAgentEngine *engine, OSystem *system) : intro(false), _id(0), ons(0), - orientation(kActorRight), actor_talking(false), - message_timer(0), message_first_frame(0), message_last_frame(0), message_animation(NULL), - current_event(SceneEvent::kNone), hide_actor(false), callback(0), callback_timer(0), _idle_timer(0) { - _engine = engine; - _system = system; +Scene::Scene(TeenAgentEngine *vm) : _vm(vm), intro(false), _id(0), ons(0), + orientation(kActorRight), actorTalking(false), teenagent(vm), teenagentIdle(vm), + messageTimer(0), messageFirstFrame(0), messageLastFrame(0), messageAnimation(NULL), + currentEvent(SceneEvent::kNone), hideActor(false), callback(0), callbackTimer(0), _idleTimer(0) { - _fade_timer = 0; - on_enabled = true; + _fadeTimer = 0; + _fadeOld = 0; + onEnabled = true; memset(palette, 0, sizeof(palette)); background.pixels = 0; @@ -65,8 +65,8 @@ Scene::Scene(TeenAgentEngine *engine, OSystem *system) : intro(false), _id(0), o if (!s) error("invalid resource data"); - teenagent_idle.load(*s, Animation::kTypeVaria); - if (teenagent_idle.empty()) + teenagentIdle.load(*s, Animation::kTypeVaria); + if (teenagentIdle.empty()) error("invalid mark animation"); varia.close(); @@ -91,10 +91,10 @@ void Scene::warp(const Common::Point &_point, byte o) { bool Scene::findPath(Scene::Path &p, const Common::Point &src, const Common::Point &dst) const { const Common::Array<Walkbox> &scene_walkboxes = walkboxes[_id - 1]; - if (dst.x < 0 || dst.x > 319 || dst.y < 0 || dst.y > 199) + if (dst.x < 0 || dst.x >= kScreenWidth || dst.y < 0 || dst.y >= kScreenHeight) return false; - debug(1, "findPath %d,%d -> %d,%d", src.x, src.y, dst.x, dst.y); + debugC(1, kDebugScene, "findPath %d,%d -> %d,%d", src.x, src.y, dst.x, dst.y); p.clear(); p.push_back(src); p.push_back(dst); @@ -113,7 +113,7 @@ bool Scene::findPath(Scene::Path &p, const Common::Point &src, const Common::Poi break; const Common::Point &p1 = *i, &p2 = *next; - debug(1, "%d,%d -> %d,%d", p1.x, p1.y, p2.x, p2.y); + debugC(1, kDebugScene, "%d,%d -> %d,%d", p1.x, p1.y, p2.x, p2.y); Common::List<uint>::iterator wi; for (wi = boxes.begin(); wi != boxes.end(); ++wi) { @@ -124,14 +124,14 @@ bool Scene::findPath(Scene::Path &p, const Common::Point &src, const Common::Poi } w.dump(1); - debug(1, "%u: intersection mask 0x%04x, searching hints", *wi, mask); + debugC(1, kDebugScene, "%u: intersection mask 0x%04x, searching hints", *wi, mask); int dx = p2.x - p1.x, dy = p2.y - p1.y; if (dx >= 0) { - if ((mask & 8) != 0 && w.side_hint[3] != 0) { - debug(1, "hint left: %u", w.side_hint[3]); + if ((mask & 8) != 0 && w.sideHint[3] != 0) { + debugC(1, kDebugScene, "hint left: %u", w.sideHint[3]); Common::Point w1, w2; - w.rect.side(w1, w2, w.side_hint[3], p1); - debug(1, "hint: %d,%d-%d,%d", w1.x, w1.y, w2.x, w2.y); + w.rect.side(w1, w2, w.sideHint[3], p1); + debugC(1, kDebugScene, "hint: %d,%d-%d,%d", w1.x, w1.y, w2.x, w2.y); p.insert(next, w1); if (mask & 2) p.insert(next, w2); @@ -139,11 +139,11 @@ bool Scene::findPath(Scene::Path &p, const Common::Point &src, const Common::Poi break; } } else { - if ((mask & 2) != 0 && w.side_hint[1] != 0) { - debug(1, "hint right: %u", w.side_hint[1]); + if ((mask & 2) != 0 && w.sideHint[1] != 0) { + debugC(1, kDebugScene, "hint right: %u", w.sideHint[1]); Common::Point w1, w2; - w.rect.side(w1, w2, w.side_hint[1], p1); - debug(1, "hint: %d,%d-%d,%d", w1.x, w1.y, w2.x, w2.y); + w.rect.side(w1, w2, w.sideHint[1], p1); + debugC(1, kDebugScene, "hint: %d,%d-%d,%d", w1.x, w1.y, w2.x, w2.y); p.insert(next, w1); if (mask & 8) p.insert(next, w2); @@ -153,11 +153,11 @@ bool Scene::findPath(Scene::Path &p, const Common::Point &src, const Common::Poi } if (dy >= 0) { - if ((mask & 1) != 0 && w.side_hint[0] != 0) { - debug(1, "hint top: %u", w.side_hint[0]); + if ((mask & 1) != 0 && w.sideHint[0] != 0) { + debugC(1, kDebugScene, "hint top: %u", w.sideHint[0]); Common::Point w1, w2; - w.rect.side(w1, w2, w.side_hint[0], p1); - debug(1, "hint: %d,%d-%d,%d", w1.x, w1.y, w2.x, w2.y); + w.rect.side(w1, w2, w.sideHint[0], p1); + debugC(1, kDebugScene, "hint: %d,%d-%d,%d", w1.x, w1.y, w2.x, w2.y); p.insert(next, w1); if (mask & 4) p.insert(next, w2); @@ -165,11 +165,11 @@ bool Scene::findPath(Scene::Path &p, const Common::Point &src, const Common::Poi break; } } else { - if ((mask & 4) != 0 && w.side_hint[2] != 0) { - debug(1, "hint bottom: %u", w.side_hint[2]); + if ((mask & 4) != 0 && w.sideHint[2] != 0) { + debugC(1, kDebugScene, "hint bottom: %u", w.sideHint[2]); Common::Point w1, w2; - w.rect.side(w1, w2, w.side_hint[2], p1); - debug(1, "hint: %d,%d-%d,%d", w1.x, w1.y, w2.x, w2.y); + w.rect.side(w1, w2, w.sideHint[2], p1); + debugC(1, kDebugScene, "hint: %d,%d-%d,%d", w1.x, w1.y, w2.x, w2.y); p.insert(next, w1); if (mask & 1) p.insert(next, w2); @@ -187,13 +187,13 @@ bool Scene::findPath(Scene::Path &p, const Common::Point &src, const Common::Poi void Scene::moveTo(const Common::Point &_point, byte orient, bool validate) { Common::Point point(_point); - debug(0, "moveTo(%d, %d, %u)", point.x, point.y, orient); + debugC(0, kDebugScene, "moveTo(%d, %d, %u)", point.x, point.y, orient); const Common::Array<Walkbox> &scene_walkboxes = walkboxes[_id - 1]; for (byte i = 0; i < scene_walkboxes.size(); ++i) { const Walkbox &w = scene_walkboxes[i]; if (w.rect.in(point)) { - debug(0, "bumped into walkbox %u", i); + debugC(0, kDebugScene, "bumped into walkbox %u", i); w.dump(); byte o = w.orientation; switch (o) { @@ -229,7 +229,7 @@ void Scene::moveTo(const Common::Point &_point, byte orient, bool validate) { } if (!findPath(path, position, point)) { - _engine->cancel(); + _vm->cancel(); return; } @@ -237,55 +237,53 @@ void Scene::moveTo(const Common::Point &_point, byte orient, bool validate) { } void Scene::loadObjectData() { - Resources *res = Resources::instance(); - //loading objects & walkboxes objects.resize(42); walkboxes.resize(42); fades.resize(42); for (byte i = 0; i < 42; ++i) { - Common::Array<Object> &scene_objects = objects[i]; - scene_objects.clear(); + Common::Array<Object> &sceneObjects = objects[i]; + sceneObjects.clear(); - uint16 scene_table = res->dseg.get_word(0x7254 + i * 2); - uint16 object_addr; - while ((object_addr = res->dseg.get_word(scene_table)) != 0) { + uint16 sceneTable = _vm->res->dseg.get_word(dsAddr_sceneObjectTablePtr + (i * 2)); + uint16 objectAddr; + while ((objectAddr = _vm->res->dseg.get_word(sceneTable)) != 0) { Object obj; - obj.load(res->dseg.ptr(object_addr)); + obj.load(_vm->res->dseg.ptr(objectAddr)); //obj.dump(); - scene_objects.push_back(obj); - scene_table += 2; + sceneObjects.push_back(obj); + sceneTable += 2; } - debug(0, "scene[%u] has %u object(s)", i + 1, scene_objects.size()); + debugC(0, kDebugScene, "scene[%u] has %u object(s)", i + 1, sceneObjects.size()); - byte *walkboxes_base = res->dseg.ptr(READ_LE_UINT16(res->dseg.ptr(0x6746 + i * 2))); - byte walkboxes_n = *walkboxes_base++; - debug(0, "scene[%u] has %u walkboxes", i + 1, walkboxes_n); + byte *walkboxesBase = _vm->res->dseg.ptr(READ_LE_UINT16(_vm->res->dseg.ptr(dsAddr_sceneWalkboxTablePtr + i * 2))); + byte walkboxesCount = *walkboxesBase++; + debugC(0, kDebugScene, "scene[%u] has %u walkboxes", i + 1, walkboxesCount); - Common::Array<Walkbox> &scene_walkboxes = walkboxes[i]; - for (byte j = 0; j < walkboxes_n; ++j) { + Common::Array<Walkbox> &sceneWalkboxes = walkboxes[i]; + for (byte j = 0; j < walkboxesCount; ++j) { Walkbox w; - w.load(walkboxes_base + 14 * j); - if ((w.side_hint[0] | w.side_hint[1] | w.side_hint[2] | w.side_hint[3]) == 0) { - w.side_hint[0] = 2; - w.side_hint[1] = 3; - w.side_hint[2] = 4; - w.side_hint[3] = 1; + w.load(walkboxesBase + 14 * j); + if ((w.sideHint[0] | w.sideHint[1] | w.sideHint[2] | w.sideHint[3]) == 0) { + w.sideHint[0] = 2; + w.sideHint[1] = 3; + w.sideHint[2] = 4; + w.sideHint[3] = 1; } //walkbox[i]->dump(); - scene_walkboxes.push_back(w); + sceneWalkboxes.push_back(w); } - byte *fade_table = res->dseg.ptr(res->dseg.get_word(0x663e + i * 2)); - Common::Array<FadeType> &scene_fades = fades[i]; - while (READ_LE_UINT16(fade_table) != 0xffff) { + byte *fadeTable = _vm->res->dseg.ptr(_vm->res->dseg.get_word(dsAddr_sceneFadeTablePtr + i * 2)); + Common::Array<FadeType> &sceneFades = fades[i]; + while (READ_LE_UINT16(fadeTable) != 0xffff) { FadeType fade; - fade.load(fade_table); - fade_table += 9; - scene_fades.push_back(fade); + fade.load(fadeTable); + fadeTable += 9; + sceneFades.push_back(fade); } - debug(0, "scene[%u] has %u fadeboxes", i + 1, scene_fades.size()); + debugC(0, kDebugScene, "scene[%u] has %u fadeboxes", i + 1, sceneFades.size()); } } @@ -293,10 +291,10 @@ Object *Scene::findObject(const Common::Point &point) { if (_id == 0) return NULL; - Common::Array<Object> &scene_objects = objects[_id - 1]; + Common::Array<Object> &sceneObjects = objects[_id - 1]; - for (uint i = 0; i < scene_objects.size(); ++i) { - Object &obj = scene_objects[i]; + for (uint i = 0; i < sceneObjects.size(); ++i) { + Object &obj = sceneObjects[i]; if (obj.enabled != 0 && obj.rect.in(point)) return &obj; } @@ -304,41 +302,38 @@ Object *Scene::findObject(const Common::Point &point) { } byte *Scene::getOns(int id) { - Resources *res = Resources::instance(); - return res->dseg.ptr(res->dseg.get_word(0xb4f5 + (id - 1) * 2)); + return _vm->res->dseg.ptr(_vm->res->dseg.get_word(dsAddr_onsAnimationTablePtr + (id - 1) * 2)); } byte *Scene::getLans(int id) { - Resources *res = Resources::instance(); - return res->dseg.ptr(0xd89e + (id - 1) * 4); + return _vm->res->dseg.ptr(dsAddr_lansAnimationTablePtr + (id - 1) * 4); } void Scene::loadOns() { - debug(0, "loading ons animation"); - Resources *res = Resources::instance(); + debugC(0, kDebugScene, "loading ons animation"); - uint16 addr = res->dseg.get_word(0xb4f5 + (_id - 1) * 2); - //debug(0, "ons index: %04x", addr); + uint16 addr = _vm->res->dseg.get_word(dsAddr_onsAnimationTablePtr + (_id - 1) * 2); + debugC(0, kDebugScene, "ons index: %04x", addr); - ons_count = 0; + onsCount = 0; byte b; - byte on_id[16]; - while ((b = res->dseg.get_byte(addr)) != 0xff) { - debug(0, "on: %04x = %02x", addr, b); + byte onId[16]; + while ((b = _vm->res->dseg.get_byte(addr)) != 0xff) { + debugC(0, kDebugScene, "on: %04x = %02x", addr, b); ++addr; if (b == 0) continue; - on_id[ons_count++] = b; + onId[onsCount++] = b; } delete[] ons; ons = NULL; - if (ons_count > 0) { - ons = new Surface[ons_count]; - for (uint32 i = 0; i < ons_count; ++i) { - Common::ScopedPtr<Common::SeekableReadStream> s(res->ons.getStream(on_id[i])); + if (onsCount > 0) { + ons = new Surface[onsCount]; + for (uint32 i = 0; i < onsCount; ++i) { + Common::ScopedPtr<Common::SeekableReadStream> s(_vm->res->ons.getStream(onId[i])); if (s) { ons[i].load(*s, Surface::kTypeOns); } @@ -347,21 +342,20 @@ void Scene::loadOns() { } void Scene::loadLans() { - debug(0, "loading lans animation"); - Resources *res = Resources::instance(); - //load lan000 + debugC(0, kDebugScene, "loading lans animation"); + // load lan000 for (byte i = 0; i < 4; ++i) { animation[i].free(); - uint16 bx = 0xd89e + (_id - 1) * 4 + i; - byte bxv = res->dseg.get_byte(bx); - uint16 res_id = 4 * (_id - 1) + i + 1; - debug(0, "lan[%u]@%04x = %02x, resource id: %u", i, bx, bxv, res_id); + uint16 bx = dsAddr_lansAnimationTablePtr + (_id - 1) * 4 + i; + byte bxv = _vm->res->dseg.get_byte(bx); + uint16 resId = 4 * (_id - 1) + i + 1; + debugC(0, kDebugScene, "lan[%u]@%04x = %02x, resource id: %u", i, bx, bxv, resId); if (bxv == 0) continue; - Common::ScopedPtr<Common::SeekableReadStream> s(res->loadLan000(res_id)); + Common::ScopedPtr<Common::SeekableReadStream> s(_vm->res->loadLan000(resId)); if (s) { animation[i].load(*s, Animation::kTypeLan); if (bxv != 0 && bxv != 0xff) @@ -371,24 +365,23 @@ void Scene::loadLans() { } void Scene::init(int id, const Common::Point &pos) { - debug(0, "init(%d)", id); + debugC(0, kDebugScene, "init(%d)", id); _id = id; - on_enabled = true; //reset on-rendering flag on loading. + onEnabled = true; //reset on-rendering flag on loading. sounds.clear(); for (byte i = 0; i < 4; ++i) - custom_animation[i].free(); + customAnimation[i].free(); if (background.pixels == NULL) - background.create(320, 200, Graphics::PixelFormat::createFormatCLUT8()); + background.create(kScreenWidth, kScreenHeight, Graphics::PixelFormat::createFormatCLUT8()); warp(pos); - Resources *res = Resources::instance(); - res->loadOff(background, palette, id); + _vm->res->loadOff(background, palette, id); if (id == 24) { - //dark scene - if (res->dseg.get_byte(0xDBA4) != 1) { - //dim down palette + // dark scene + if (_vm->res->dseg.get_byte(dsAddr_lightOnFlag) != 1) { + // dim down palette uint i; for (i = 0; i < 624; ++i) { palette[i] = palette[i] > 0x20 ? palette[i] - 0x20 : 0; @@ -399,62 +392,62 @@ void Scene::init(int id, const Common::Point &pos) { } } - Common::ScopedPtr<Common::SeekableReadStream> stream(res->on.getStream(id)); - int sub_hack = 0; - if (id == 7) { //something patched in the captains room - switch (res->dseg.get_byte(0xdbe6)) { + Common::ScopedPtr<Common::SeekableReadStream> stream(_vm->res->on.getStream(id)); + int subHack = 0; + if (id == 7) { // something patched in the captains room + switch (_vm->res->dseg.get_byte(dsAddr_captainDrawerState)) { case 2: break; case 1: - sub_hack = 1; + subHack = 1; break; default: - sub_hack = 2; + subHack = 2; } } - on.load(*stream, SurfaceList::kTypeOn, sub_hack); + on.load(*stream, subHack); loadOns(); loadLans(); - //check music - int now_playing = _engine->music->getId(); + // check music + int nowPlaying = _vm->music->getId(); - if (now_playing != res->dseg.get_byte(0xDB90)) - _engine->music->load(res->dseg.get_byte(0xDB90)); + if (nowPlaying != _vm->res->dseg.get_byte(dsAddr_currentMusic)) + _vm->music->load(_vm->res->dseg.get_byte(dsAddr_currentMusic)); - _system->copyRectToScreen(background.pixels, background.pitch, 0, 0, background.w, background.h); + _vm->_system->copyRectToScreen(background.pixels, background.pitch, 0, 0, background.w, background.h); setPalette(0); } void Scene::playAnimation(byte idx, uint id, bool loop, bool paused, bool ignore) { - debug(0, "playAnimation(%u, %u, loop:%s, paused:%s, ignore:%s)", idx, id, loop ? "true" : "false", paused ? "true" : "false", ignore ? "true" : "false"); + debugC(0, kDebugScene, "playAnimation(%u, %u, loop:%s, paused:%s, ignore:%s)", idx, id, loop ? "true" : "false", paused ? "true" : "false", ignore ? "true" : "false"); assert(idx < 4); - Common::ScopedPtr<Common::SeekableReadStream> s(Resources::instance()->loadLan(id + 1)); + Common::ScopedPtr<Common::SeekableReadStream> s(_vm->res->loadLan(id + 1)); if (!s) error("playing animation %u failed", id); - custom_animation[idx].load(*s); - custom_animation[idx].loop = loop; - custom_animation[idx].paused = paused; - custom_animation[idx].ignore = ignore; + customAnimation[idx].load(*s); + customAnimation[idx].loop = loop; + customAnimation[idx].paused = paused; + customAnimation[idx].ignore = ignore; } void Scene::playActorAnimation(uint id, bool loop, bool ignore) { - debug(0, "playActorAnimation(%u, loop:%s, ignore:%s)", id, loop ? "true" : "false", ignore ? "true" : "false"); - Common::ScopedPtr<Common::SeekableReadStream> s(Resources::instance()->loadLan(id + 1)); + debugC(0, kDebugScene, "playActorAnimation(%u, loop:%s, ignore:%s)", id, loop ? "true" : "false", ignore ? "true" : "false"); + Common::ScopedPtr<Common::SeekableReadStream> s(_vm->res->loadLan(id + 1)); if (!s) error("playing animation %u failed", id); - actor_animation.load(*s); - actor_animation.loop = loop; - actor_animation.ignore = ignore; - actor_animation.id = id; + actorAnimation.load(*s); + actorAnimation.loop = loop; + actorAnimation.ignore = ignore; + actorAnimation.id = id; } Animation *Scene::getAnimation(byte slot) { assert(slot < 4); - return custom_animation + slot; + return customAnimation + slot; } byte Scene::peekFlagEvent(uint16 addr) const { @@ -463,17 +456,17 @@ byte Scene::peekFlagEvent(uint16 addr) const { if (e.type == SceneEvent::kSetFlag && e.callback == addr) return e.color; } - return Resources::instance()->dseg.get_byte(addr); + return _vm->res->dseg.get_byte(addr); } void Scene::push(const SceneEvent &event) { - //debug(0, "push"); + debugC(0, kDebugScene, "push"); //event.dump(); if (event.type == SceneEvent::kWalk && !events.empty()) { SceneEvent &prev = events.back(); if (prev.type == SceneEvent::kWalk && prev.color == event.color) { - debug(0, "fixing double-move [skipping event!]"); - if ((event.color & 2) != 0) { //relative move + debugC(0, kDebugScene, "fixing double-move [skipping event!]"); + if ((event.color & 2) != 0) { // relative move prev.dst.x += event.dst.x; prev.dst.y += event.dst.y; } else { @@ -489,7 +482,7 @@ bool Scene::processEvent(const Common::Event &event) { switch (event.type) { case Common::EVENT_LBUTTONDOWN: case Common::EVENT_RBUTTONDOWN: - if (!message.empty() && message_first_frame == 0) { + if (!message.empty() && messageFirstFrame == 0) { clearMessage(); nextEvent(); return true; @@ -505,16 +498,16 @@ bool Scene::processEvent(const Common::Event &event) { clearMessage(); events.clear(); sounds.clear(); - current_event.clear(); - message_color = 0xd1; + currentEvent.clear(); + messageColor = textColorMark; for (int i = 0; i < 4; ++i) - custom_animation[i].free(); - _engine->playMusic(4); - _engine->loadScene(10, Common::Point(136, 153)); + customAnimation[i].free(); + _vm->playMusic(4); + _vm->loadScene(10, Common::Point(136, 153)); return true; } - if (!message.empty() && message_first_frame == 0) { + if (!message.empty() && messageFirstFrame == 0) { clearMessage(); nextEvent(); return true; @@ -534,8 +527,8 @@ bool Scene::processEvent(const Common::Event &event) { if (event.kbd.flags & Common::KBD_CTRL) { uint feature = event.kbd.keycode - '1'; if (feature < DebugFeatures::kMax) { - debug_features.feature[feature] = !debug_features.feature[feature]; - debug(0, "switched feature %u %s", feature, debug_features.feature[feature] ? "on" : "off"); + debugFeatures.feature[feature] = !debugFeatures.feature[feature]; + debugC(0, kDebugScene, "switched feature %u %s", feature, debugFeatures.feature[feature] ? "on" : "off"); } } break; @@ -556,25 +549,22 @@ struct ZOrderCmp { }; int Scene::lookupZoom(uint y) const { - Resources *res = Resources::instance(); - for (byte *zoom_table = res->dseg.ptr(res->dseg.get_word(0x70f4 + (_id - 1) * 2)); - zoom_table[0] != 0xff && zoom_table[1] != 0xff; - zoom_table += 2) { - //debug(0, "%d %d->%d", y, zoom_table[0], zoom_table[1]); - if (y <= zoom_table[0]) { - //debug(0, "%d %d->%d", y, zoom_table[0], zoom_table[1]); - return 256u * (100 - zoom_table[1]) / 100; + debugC(2, kDebugScene, "lookupZoom(%d)", y); + for (byte *zoomTable = _vm->res->dseg.ptr(_vm->res->dseg.get_word(dsAddr_sceneZoomTablePtr + (_id - 1) * 2)); + zoomTable[0] != 0xff && zoomTable[1] != 0xff; + zoomTable += 2) { + debugC(2, kDebugScene, "\t%d %d->%d", y, zoomTable[0], zoomTable[1]); + if (y <= zoomTable[0]) { + return 256u * (100 - zoomTable[1]) / 100; } } return 256; } - void Scene::paletteEffect(byte step) { - Resources *res = Resources::instance(); - byte *src = res->dseg.ptr(0x6609); - byte *dst = palette + 3 * 0xf2; - for (byte i = 0; i < 0xd; ++i) { + byte *src = _vm->res->dseg.ptr(dsAddr_paletteEffectData); + byte *dst = palette + (3 * 242); + for (byte i = 0; i < 13; ++i) { for (byte c = 0; c < 3; ++c, ++src) *dst++ = *src > step ? *src - step : 0; } @@ -584,9 +574,9 @@ byte Scene::findFade() const { if (_id <= 0) return 0; - const Common::Array<FadeType> &scene_fades = fades[_id - 1]; - for (uint i = 0; i < scene_fades.size(); ++i) { - const FadeType &fade = scene_fades[i]; + const Common::Array<FadeType> &sceneFades = fades[_id - 1]; + for (uint i = 0; i < sceneFades.size(); ++i) { + const FadeType &fade = sceneFades[i]; if (fade.rect.in(position)) { return fade.value; } @@ -594,110 +584,109 @@ byte Scene::findFade() const { return 0; } -bool Scene::render(bool tick_game, bool tick_mark, uint32 delta) { - Resources *res = Resources::instance(); +bool Scene::render(bool tickGame, bool tickMark, uint32 messageDelta) { bool busy; bool restart; - uint32 game_delta = tick_game ? 1 : 0; - uint32 mark_delta = tick_mark ? 1 : 0; + uint32 gameDelta = tickGame ? 1 : 0; + uint32 markDelta = tickMark ? 1 : 0; do { restart = false; busy = processEventQueue(); - if (_fade_timer && game_delta != 0) { - if (_fade_timer > 0) { - _fade_timer -= game_delta; - setPalette(_fade_timer); + if (_fadeTimer && gameDelta != 0) { + if (_fadeTimer > 0) { + _fadeTimer -= gameDelta; + setPalette(_fadeTimer); } else { - _fade_timer += game_delta; - setPalette(_fade_timer + 4); + _fadeTimer += gameDelta; + setPalette(_fadeTimer + 4); } } - switch (current_event.type) { + switch (currentEvent.type) { case SceneEvent::kCredits: { - _system->fillScreen(0); - ///\todo: optimize me - Graphics::Surface *surface = _system->lockScreen(); - res->font7.render(surface, current_event.dst.x, current_event.dst.y -= game_delta, current_event.message, current_event.color); - _system->unlockScreen(); - - if (current_event.dst.y < -(int)current_event.timer) - current_event.clear(); + _vm->_system->fillScreen(0); + // TODO: optimize me + Graphics::Surface *surface = _vm->_system->lockScreen(); + _vm->res->font7.render(surface, currentEvent.dst.x, currentEvent.dst.y -= gameDelta, currentEvent.message, currentEvent.color); + _vm->_system->unlockScreen(); + + if (currentEvent.dst.y < -(int)currentEvent.timer) + currentEvent.clear(); } return true; default: ; } - if (!message.empty() && message_timer != 0) { - if (message_timer <= delta) { + if (!message.empty() && messageTimer != 0) { + if (messageTimer <= messageDelta) { clearMessage(); nextEvent(); continue; } else - message_timer -= delta; + messageTimer -= messageDelta; } - if (current_event.type == SceneEvent::kCreditsMessage) { - _system->fillScreen(0); - Graphics::Surface *surface = _system->lockScreen(); - if (current_event.lan == 8) { - res->font8.shadow_color = current_event.orientation; - res->font8.render(surface, current_event.dst.x, current_event.dst.y, message, current_event.color); + if (currentEvent.type == SceneEvent::kCreditsMessage) { + _vm->_system->fillScreen(0); + Graphics::Surface *surface = _vm->_system->lockScreen(); + if (currentEvent.lan == 8) { + _vm->res->font8.setShadowColor(currentEvent.orientation); + _vm->res->font8.render(surface, currentEvent.dst.x, currentEvent.dst.y, message, currentEvent.color); } else { - res->font7.render(surface, current_event.dst.x, current_event.dst.y, message, 0xd1); + _vm->res->font7.render(surface, currentEvent.dst.x, currentEvent.dst.y, message, textColorCredits); } - _system->unlockScreen(); + _vm->_system->unlockScreen(); return true; } - if (background.pixels && debug_features.feature[DebugFeatures::kShowBack]) { - _system->copyRectToScreen(background.pixels, background.pitch, 0, 0, background.w, background.h); + if (background.pixels && debugFeatures.feature[DebugFeatures::kShowBack]) { + _vm->_system->copyRectToScreen(background.pixels, background.pitch, 0, 0, background.w, background.h); } else - _system->fillScreen(0); + _vm->_system->fillScreen(0); - Graphics::Surface *surface = _system->lockScreen(); + Graphics::Surface *surface = _vm->_system->lockScreen(); - bool got_any_animation = false; + bool gotAnyAnimation = false; - if (ons != NULL && debug_features.feature[DebugFeatures::kShowOns]) { - for (uint32 i = 0; i < ons_count; ++i) { + if (ons != NULL && debugFeatures.feature[DebugFeatures::kShowOns]) { + for (uint32 i = 0; i < onsCount; ++i) { Surface *s = ons + i; if (s != NULL) s->render(surface); } } - Common::List<Surface *> z_order; + Common::List<Surface *> zOrder; for (byte i = 0; i < 4; ++i) { - Animation *a = custom_animation + i; - Surface *s = a->currentFrame(game_delta); + Animation *a = customAnimation + i; + Surface *s = a->currentFrame(gameDelta); if (s != NULL) { if (!a->ignore) busy = true; if (!a->paused && !a->loop) - got_any_animation = true; + gotAnyAnimation = true; } else { a = animation + i; - if (!custom_animation[i].empty()) { - debug(0, "custom animation ended, restart animation in the same slot."); - custom_animation[i].free(); + if (!customAnimation[i].empty()) { + debugC(0, kDebugScene, "custom animation ended, restart animation in the same slot."); + customAnimation[i].free(); a->restart(); } - s = a->currentFrame(game_delta); + s = a->currentFrame(gameDelta); } - if (current_event.type == SceneEvent::kWaitLanAnimationFrame && current_event.slot == i) { + if (currentEvent.type == SceneEvent::kWaitLanAnimationFrame && currentEvent.slot == i) { if (s == NULL) { restart |= nextEvent(); continue; } int index = a->currentIndex(); - if (index == current_event.animation) { - debug(0, "kWaitLanAnimationFrame(%d, %d) complete", current_event.slot, current_event.animation); + if (index == currentEvent.animation) { + debugC(0, kDebugScene, "kWaitLanAnimationFrame(%d, %d) complete", currentEvent.slot, currentEvent.animation); restart |= nextEvent(); } } @@ -705,8 +694,8 @@ bool Scene::render(bool tick_game, bool tick_mark, uint32 delta) { if (s == NULL) continue; - if (debug_features.feature[DebugFeatures::kShowLan]) - z_order.push_back(s); + if (debugFeatures.feature[DebugFeatures::kShowLan]) + zOrder.push_back(s); if (a->id == 0) continue; @@ -722,38 +711,36 @@ bool Scene::render(bool tick_game, bool tick_mark, uint32 delta) { } } - Common::sort(z_order.begin(), z_order.end(), ZOrderCmp()); - Common::List<Surface *>::iterator z_order_it; + Common::sort(zOrder.begin(), zOrder.end(), ZOrderCmp()); + Common::List<Surface *>::iterator zOrderIter; - Surface *mark = actor_animation.currentFrame(game_delta); + Surface *mark = actorAnimation.currentFrame(gameDelta); int horizon = position.y; - for (z_order_it = z_order.begin(); z_order_it != z_order.end(); ++z_order_it) { - Surface *s = *z_order_it; + for (zOrderIter = zOrder.begin(); zOrderIter != zOrder.end(); ++zOrderIter) { + Surface *s = *zOrderIter; if (s->y + s->h > horizon) break; s->render(surface); } if (mark != NULL) { - actor_animation_position = mark->render(surface); - if (!actor_animation.ignore) + actorAnimationPosition = mark->render(surface); + if (!actorAnimation.ignore) busy = true; else busy = false; - got_any_animation = true; - } else if (!hide_actor) { - actor_animation.free(); + gotAnyAnimation = true; + } else if (!hideActor) { + actorAnimation.free(); uint zoom = lookupZoom(position.y); - { - byte fade = findFade(); - static byte old_fade = 0; - if (fade != old_fade) { - old_fade = fade; - paletteEffect(fade); - if (_fade_timer == 0) - setPalette(4); - } + + byte fade = findFade(); + if (fade != _fadeOld) { + _fadeOld = fade; + paletteEffect(fade); + if (_fadeTimer == 0) + setPalette(4); } if (!path.empty()) { @@ -767,31 +754,31 @@ bool Scene::render(bool tick_game, bool tick_mark, uint32 delta) { o = dp.y > 0 ? kActorDown : kActorUp; } - if (tick_mark) { - int speed_x = zoom / 32; //8 * zoom / 256 - int speed_y = (o == kActorDown || o == kActorUp ? 2 : 1) * zoom / 256; - if (speed_x == 0) - speed_x = 1; - if (speed_y == 0) - speed_y = 1; + if (tickMark) { + int speedX = zoom / 32; // 8 * zoom / 256 + int speedY = (o == kActorDown || o == kActorUp ? 2 : 1) * zoom / 256; + if (speedX == 0) + speedX = 1; + if (speedY == 0) + speedY = 1; - position.y += (ABS(dp.y) < speed_y ? dp.y : SIGN(dp.y) * speed_y); + position.y += (ABS(dp.y) < speedY ? dp.y : SIGN(dp.y) * speedY); position.x += (o == kActorDown || o == kActorUp) ? - (ABS(dp.x) < speed_y ? dp.x : SIGN(dp.x) * speed_y) : - (ABS(dp.x) < speed_x ? dp.x : SIGN(dp.x) * speed_x); + (ABS(dp.x) < speedY ? dp.x : SIGN(dp.x) * speedY) : + (ABS(dp.x) < speedX ? dp.x : SIGN(dp.x) * speedX); } - _idle_timer = 0; - teenagent_idle.resetIndex(); - actor_animation_position = teenagent.render(surface, position, o, mark_delta, false, zoom); + _idleTimer = 0; + teenagentIdle.resetIndex(); + actorAnimationPosition = teenagent.render(surface, position, o, markDelta, false, zoom); - if (tick_mark && position == destination) { + if (tickMark && position == destination) { path.pop_front(); if (path.empty()) { if (orientation == 0) - orientation = o; //save last orientation + orientation = o; // save last orientation nextEvent(); - got_any_animation = true; + gotAnyAnimation = true; restart = true; } busy = true; @@ -799,65 +786,63 @@ bool Scene::render(bool tick_game, bool tick_mark, uint32 delta) { busy = true; } else { teenagent.resetIndex(); - _idle_timer += mark_delta; - if (_idle_timer < 50) - actor_animation_position = teenagent.render(surface, position, orientation, 0, actor_talking, zoom); + _idleTimer += markDelta; + if (_idleTimer < 50) + actorAnimationPosition = teenagent.render(surface, position, orientation, 0, actorTalking, zoom); else - actor_animation_position = teenagent_idle.renderIdle(surface, position, orientation, mark_delta, zoom, _engine->_rnd); + actorAnimationPosition = teenagentIdle.renderIdle(surface, position, orientation, markDelta, zoom, _vm->_rnd); } } if (restart) { - _system->unlockScreen(); + _vm->_system->unlockScreen(); continue; } - //removed mark == null. In final scene of chapter 2 mark rendered above table. - //if it'd cause any bugs, add hack here. (_id != 23 && mark == NULL) - if (on_enabled && - debug_features.feature[DebugFeatures::kShowOn]) { - on.render(surface, actor_animation_position); - } + // removed mark == null. In final scene of chapter 2 mark rendered above table. + // if it'd cause any bugs, add hack here. (_id != 23 && mark == NULL) + if (onEnabled && debugFeatures.feature[DebugFeatures::kShowOn]) + on.render(surface, actorAnimationPosition); - for (; z_order_it != z_order.end(); ++z_order_it) { - Surface *s = *z_order_it; + for (; zOrderIter != zOrder.end(); ++zOrderIter) { + Surface *s = *zOrderIter; s->render(surface); } if (!message.empty()) { bool visible = true; - if (message_first_frame != 0 && message_animation != NULL) { - int index = message_animation->currentIndex() + 1; - //debug(0, "message: %s first: %u index: %u", message.c_str(), message_first_frame, index); - if (index < message_first_frame) + if (messageFirstFrame != 0 && messageAnimation != NULL) { + int index = messageAnimation->currentIndex() + 1; + debugC(0, kDebugScene, "message: %s first: %u index: %u", message.c_str(), messageFirstFrame, index); + if (index < messageFirstFrame) visible = false; - if (index > message_last_frame) { + if (index > messageLastFrame) { clearMessage(); visible = false; } } if (visible) { - res->font7.render(surface, message_pos.x, message_pos.y, message, message_color); + _vm->res->font7.render(surface, messagePos.x, messagePos.y, message, messageColor); busy = true; } } - if (!busy && !restart && tick_game && callback_timer) { - if (--callback_timer == 0) { - if (_engine->inventory->active()) - _engine->inventory->activate(false); - _engine->processCallback(callback); + if (!busy && !restart && tickGame && callbackTimer) { + if (--callbackTimer == 0) { + if (_vm->inventory->active()) + _vm->inventory->activate(false); + _vm->processCallback(callback); } - //debug(0, "callback timer = %u", callback_timer); + debugC(0, kDebugScene, "callback timer = %u", callbackTimer); } //if (!current_event.empty()) // current_event.dump(); - if (!debug_features.feature[DebugFeatures::kHidePath]) { - const Common::Array<Walkbox> & scene_walkboxes = walkboxes[_id - 1]; - for (uint i = 0; i < scene_walkboxes.size(); ++i) { - scene_walkboxes[i].rect.render(surface, 0xd0 + i); + if (!debugFeatures.feature[DebugFeatures::kHidePath]) { + const Common::Array<Walkbox> & sceneWalkboxes = walkboxes[_id - 1]; + for (uint i = 0; i < sceneWalkboxes.size(); ++i) { + sceneWalkboxes[i].rect.render(surface, 0xd0 + i); } Common::Point last_p = position; @@ -872,39 +857,39 @@ bool Scene::render(bool tick_game, bool tick_mark, uint32 delta) { } } - _system->unlockScreen(); + _vm->_system->unlockScreen(); - if (current_event.type == SceneEvent::kWait) { - if (current_event.timer > delta) { + if (currentEvent.type == SceneEvent::kWait) { + if (currentEvent.timer > messageDelta) { busy = true; - current_event.timer -= delta; + currentEvent.timer -= messageDelta; } - if (current_event.timer <= delta) + if (currentEvent.timer <= messageDelta) restart |= nextEvent(); } - if (!restart && current_event.type == SceneEvent::kWaitForAnimation && !got_any_animation) { - debug(0, "no animations, nextevent"); + if (!restart && currentEvent.type == SceneEvent::kWaitForAnimation && !gotAnyAnimation) { + debugC(0, kDebugScene, "no animations, nextevent"); nextEvent(); restart = true; } if (busy) { - _idle_timer = 0; - teenagent_idle.resetIndex(); + _idleTimer = 0; + teenagentIdle.resetIndex(); } } while (restart); for (Sounds::iterator i = sounds.begin(); i != sounds.end();) { Sound &sound = *i; if (sound.delay == 0) { - debug(1, "sound %u started", sound.id); - _engine->playSoundNow(sound.id); + debugC(1, kDebugScene, "sound %u started", sound.id); + _vm->playSoundNow(sound.id); i = sounds.erase(i); } else { - sound.delay -= game_delta; + sound.delay -= gameDelta; ++i; } } @@ -913,363 +898,364 @@ bool Scene::render(bool tick_game, bool tick_mark, uint32 delta) { } bool Scene::processEventQueue() { - while (!events.empty() && current_event.empty()) { - //debug(0, "processing next event"); - current_event = events.front(); + while (!events.empty() && currentEvent.empty()) { + debugC(0, kDebugScene, "processing next event"); + currentEvent = events.front(); events.pop_front(); - switch (current_event.type) { + switch (currentEvent.type) { case SceneEvent::kSetOn: { - byte on_id = current_event.ons; - if (on_id != 0) { - --on_id; - byte *ptr = getOns(current_event.scene == 0 ? _id : current_event.scene); - debug(0, "on[%u] = %02x", on_id, current_event.color); - ptr[on_id] = current_event.color; + byte onId = currentEvent.ons; + if (onId != 0) { + --onId; + byte *ptr = getOns(currentEvent.scene == 0 ? _id : currentEvent.scene); + debugC(0, kDebugScene, "on[%u] = %02x", onId, currentEvent.color); + ptr[onId] = currentEvent.color; } else { - on_enabled = current_event.color != 0; - debug(0, "%s on rendering", on_enabled ? "enabling" : "disabling"); + onEnabled = currentEvent.color != 0; + debugC(0, kDebugScene, "%s on rendering", onEnabled ? "enabling" : "disabling"); } loadOns(); - current_event.clear(); + currentEvent.clear(); } break; case SceneEvent::kSetLan: { - if (current_event.lan != 0) { - debug(0, "lan[%u] = %02x", current_event.lan - 1, current_event.color); - byte *ptr = getLans(current_event.scene == 0 ? _id : current_event.scene); - ptr[current_event.lan - 1] = current_event.color; + if (currentEvent.lan != 0) { + debugC(0, kDebugScene, "lan[%u] = %02x", currentEvent.lan - 1, currentEvent.color); + byte *ptr = getLans(currentEvent.scene == 0 ? _id : currentEvent.scene); + ptr[currentEvent.lan - 1] = currentEvent.color; } loadLans(); - current_event.clear(); + currentEvent.clear(); } break; case SceneEvent::kLoadScene: { - if (current_event.scene != 0) { - init(current_event.scene, current_event.dst); - if (current_event.orientation != 0) - orientation = current_event.orientation; + if (currentEvent.scene != 0) { + init(currentEvent.scene, currentEvent.dst); + if (currentEvent.orientation != 0) + orientation = currentEvent.orientation; } else { - //special case, empty scene + // special case, empty scene background.free(); on.free(); delete[] ons; ons = NULL; for (byte i = 0; i < 4; ++i) { animation[i].free(); - custom_animation[i].free(); + customAnimation[i].free(); } } - current_event.clear(); + currentEvent.clear(); } break; case SceneEvent::kWalk: { - Common::Point dst = current_event.dst; - if ((current_event.color & 2) != 0) { //relative move + Common::Point dst = currentEvent.dst; + if ((currentEvent.color & 2) != 0) { // relative move dst.x += position.x; dst.y += position.y; } - if ((current_event.color & 1) != 0) { - warp(dst, current_event.orientation); - current_event.clear(); + if ((currentEvent.color & 1) != 0) { + warp(dst, currentEvent.orientation); + currentEvent.clear(); } else - moveTo(dst, current_event.orientation); + moveTo(dst, currentEvent.orientation); } break; case SceneEvent::kCreditsMessage: case SceneEvent::kMessage: { - message = current_event.message; - message_animation = NULL; - if (current_event.first_frame) { - message_timer = 0; - message_first_frame = current_event.first_frame; - message_last_frame = current_event.last_frame; - if (current_event.slot > 0) { - message_animation = custom_animation + (current_event.slot - 1); - //else if (!animation[current_event.slot].empty()) - // message_animation = animation + current_event.slot; + message = currentEvent.message; + messageAnimation = NULL; + if (currentEvent.firstFrame) { + messageTimer = 0; + messageFirstFrame = currentEvent.firstFrame; + messageLastFrame = currentEvent.lastFrame; + if (currentEvent.slot > 0) { + messageAnimation = customAnimation + (currentEvent.slot - 1); + //else if (!animation[currentEvent.slot].empty()) + // messageAnimation = animation + currentEvent.slot; } else - message_animation = &actor_animation; - debug(0, "async message %d-%d (slot %u)", message_first_frame, message_last_frame, current_event.slot); + messageAnimation = &actorAnimation; + debugC(0, kDebugScene, "async message %d-%d (slot %u)", messageFirstFrame, messageLastFrame, currentEvent.slot); } else { - message_timer = current_event.timer ? current_event.timer * 110 : messageDuration(message); - message_first_frame = message_last_frame = 0; + messageTimer = currentEvent.timer ? currentEvent.timer * 110 : messageDuration(message); + messageFirstFrame = messageLastFrame = 0; } Common::Point p; - if (current_event.dst.x == 0 && current_event.dst.y == 0) { - p = Common::Point((actor_animation_position.left + actor_animation_position.right) / 2, - actor_animation_position.top); + if (currentEvent.dst.x == 0 && currentEvent.dst.y == 0) { + p = Common::Point((actorAnimationPosition.left + actorAnimationPosition.right) / 2, + actorAnimationPosition.top); } else { - p = current_event.dst; + p = currentEvent.dst; } - byte message_slot = current_event.slot; - if (message_slot != 0) { - --message_slot; - assert(message_slot < 4); - const Surface *s = custom_animation[message_slot].currentFrame(0); + byte messageSlot = currentEvent.slot; + if (messageSlot != 0) { + --messageSlot; + assert(messageSlot < 4); + const Surface *s = customAnimation[messageSlot].currentFrame(0); if (s == NULL) - s = animation[message_slot].currentFrame(0); + s = animation[messageSlot].currentFrame(0); if (s != NULL) { p.x = s->x + s->w / 2; p.y = s->y; } else - warning("no animation in slot %u", message_slot); + warning("no animation in slot %u", messageSlot); } - message_pos = messagePosition(message, p); - message_color = current_event.color; + messagePos = messagePosition(message, p); + messageColor = currentEvent.color; - if (message_first_frame) - current_event.clear(); //async message, clearing event + if (messageFirstFrame) + currentEvent.clear(); // async message, clearing event } break; case SceneEvent::kPlayAnimation: { - byte slot = current_event.slot & 7; //0 - mark's - if (current_event.animation != 0) { - debug(0, "playing animation %u in slot %u(%02x)", current_event.animation, slot, current_event.slot); + byte slot = currentEvent.slot & 7; // 0 - mark's + if (currentEvent.animation != 0) { + debugC(0, kDebugScene, "playing animation %u in slot %u(%02x)", currentEvent.animation, slot, currentEvent.slot); if (slot != 0) { --slot; assert(slot < 4); - playAnimation(slot, current_event.animation, (current_event.slot & 0x80) != 0, (current_event.slot & 0x40) != 0, (current_event.slot & 0x20) != 0); + playAnimation(slot, currentEvent.animation, (currentEvent.slot & 0x80) != 0, (currentEvent.slot & 0x40) != 0, (currentEvent.slot & 0x20) != 0); } else - actor_talking = true; + actorTalking = true; } else { if (slot != 0) { --slot; - debug(0, "cancelling animation in slot %u", slot); + debugC(0, kDebugScene, "cancelling animation in slot %u", slot); assert(slot < 4); - custom_animation[slot].free(); + customAnimation[slot].free(); } else - actor_talking = true; + actorTalking = true; } - current_event.clear(); + currentEvent.clear(); } break; case SceneEvent::kPauseAnimation: { - byte slot = current_event.slot & 7; //0 - mark's + byte slot = currentEvent.slot & 7; // 0 - mark's if (slot != 0) { --slot; - debug(1, "pause animation in slot %u", slot); - custom_animation[slot].paused = (current_event.slot & 0x80) != 0; + debugC(1, kDebugScene, "pause animation in slot %u", slot); + customAnimation[slot].paused = (currentEvent.slot & 0x80) != 0; } else { - actor_talking = false; + actorTalking = false; } - current_event.clear(); + currentEvent.clear(); } break; case SceneEvent::kClearAnimations: for (byte i = 0; i < 4; ++i) - custom_animation[i].free(); - actor_talking = false; - current_event.clear(); + customAnimation[i].free(); + actorTalking = false; + currentEvent.clear(); break; case SceneEvent::kPlayActorAnimation: - debug(0, "playing actor animation %u", current_event.animation); - playActorAnimation(current_event.animation, (current_event.slot & 0x80) != 0, (current_event.slot & 0x20) != 0); - current_event.clear(); + debugC(0, kDebugScene, "playing actor animation %u", currentEvent.animation); + playActorAnimation(currentEvent.animation, (currentEvent.slot & 0x80) != 0, (currentEvent.slot & 0x20) != 0); + currentEvent.clear(); break; case SceneEvent::kPlayMusic: - debug(0, "setting music %u", current_event.music); - _engine->setMusic(current_event.music); - Resources::instance()->dseg.set_byte(0xDB90, current_event.music); - current_event.clear(); + debugC(0, kDebugScene, "setting music %u", currentEvent.music); + _vm->setMusic(currentEvent.music); + _vm->res->dseg.set_byte(dsAddr_currentMusic, currentEvent.music); + currentEvent.clear(); break; case SceneEvent::kPlaySound: - debug(0, "playing sound %u, delay: %u", current_event.sound, current_event.color); - sounds.push_back(Sound(current_event.sound, current_event.color)); - current_event.clear(); + debugC(0, kDebugScene, "playing sound %u, delay: %u", currentEvent.sound, currentEvent.color); + sounds.push_back(Sound(currentEvent.sound, currentEvent.color)); + currentEvent.clear(); break; case SceneEvent::kEnableObject: { - debug(0, "%s object #%u", current_event.color ? "enabling" : "disabling", current_event.object - 1); - Object *obj = getObject(current_event.object - 1, current_event.scene == 0 ? _id : current_event.scene); - obj->enabled = current_event.color; + debugC(0, kDebugScene, "%s object #%u", currentEvent.color ? "enabling" : "disabling", currentEvent.object - 1); + Object *obj = getObject(currentEvent.object - 1, currentEvent.scene == 0 ? _id : currentEvent.scene); + obj->enabled = currentEvent.color; obj->save(); - current_event.clear(); + currentEvent.clear(); } break; case SceneEvent::kHideActor: - hide_actor = current_event.color != 0; - current_event.clear(); + hideActor = currentEvent.color != 0; + currentEvent.clear(); break; case SceneEvent::kWaitForAnimation: - debug(0, "waiting for the animation"); + debugC(0, kDebugScene, "waiting for the animation"); break; case SceneEvent::kWaitLanAnimationFrame: - debug(0, "waiting for the frame %d in slot %d", current_event.animation, current_event.slot); + debugC(0, kDebugScene, "waiting for the frame %d in slot %d", currentEvent.animation, currentEvent.slot); break; case SceneEvent::kTimer: - callback = current_event.callback; - callback_timer = current_event.timer; - debug(0, "triggering callback %04x in %u frames", callback, callback_timer); - current_event.clear(); + callback = currentEvent.callback; + callbackTimer = currentEvent.timer; + debugC(0, kDebugScene, "triggering callback %04x in %u frames", callback, callbackTimer); + currentEvent.clear(); break; case SceneEvent::kEffect: - _system->delayMillis(80); //2 vsyncs - _system->setShakePos(8); - _system->updateScreen(); + _vm->_system->delayMillis(80); // 2 vsyncs + _vm->_system->setShakePos(8); + _vm->_system->updateScreen(); - _system->delayMillis(80); //2 vsyncs - _system->setShakePos(0); - _system->updateScreen(); + _vm->_system->delayMillis(80); // 2 vsyncs + _vm->_system->setShakePos(0); + _vm->_system->updateScreen(); - _system->delayMillis(80); //2 vsyncs - _system->setShakePos(4); - _system->updateScreen(); + _vm->_system->delayMillis(80); // 2 vsyncs + _vm->_system->setShakePos(4); + _vm->_system->updateScreen(); - _system->delayMillis(80); //2 vsyncs - _system->setShakePos(0); - _system->updateScreen(); + _vm->_system->delayMillis(80); // 2 vsyncs + _vm->_system->setShakePos(0); + _vm->_system->updateScreen(); - current_event.clear(); + currentEvent.clear(); break; case SceneEvent::kFade: - _fade_timer = current_event.orientation != 0 ? 5 : -5; - current_event.clear(); + _fadeTimer = currentEvent.orientation != 0 ? 5 : -5; + currentEvent.clear(); break; case SceneEvent::kWait: - debug(0, "wait %u", current_event.timer); + debugC(0, kDebugScene, "wait %u", currentEvent.timer); break; case SceneEvent::kCredits: - debug(0, "showing credits"); + debugC(0, kDebugScene, "showing credits"); break; case SceneEvent::kQuit: - debug(0, "quit!"); - _engine->quitGame(); + debugC(0, kDebugScene, "quit!"); + _vm->quitGame(); break; case SceneEvent::kSetFlag: - debug(0, "async set_flag(%04x, %d)", current_event.callback, current_event.color); - Resources::instance()->dseg.set_byte(current_event.callback, current_event.color); - current_event.clear(); + debugC(0, kDebugScene, "async set_flag(%04x, %d)", currentEvent.callback, currentEvent.color); + _vm->res->dseg.set_byte(currentEvent.callback, currentEvent.color); + currentEvent.clear(); break; default: - error("empty/unhandler event[%d]", (int)current_event.type); + error("empty/unhandler event[%d]", (int)currentEvent.type); } } + if (events.empty()) { - message_color = 0xd1; - hide_actor = false; + messageColor = textColorMark; + hideActor = false; } - return !current_event.empty(); + + return !currentEvent.empty(); } void Scene::setPalette(unsigned mul) { - //debug(0, "setPalette(%u)", mul); + debugC(0, kDebugScene, "setPalette(%u)", mul); byte p[3 * 256]; for (int i = 0; i < 3 * 256; ++i) { p[i] = (unsigned)palette[i] * mul; } - _system->getPaletteManager()->setPalette(p, 0, 256); + _vm->_system->getPaletteManager()->setPalette(p, 0, 256); } -Object *Scene::getObject(int id, int scene_id) { +Object *Scene::getObject(int id, int sceneId) { assert(id > 0); - if (scene_id == 0) - scene_id = _id; + if (sceneId == 0) + sceneId = _id; - if (scene_id == 0) + if (sceneId == 0) return NULL; - Common::Array<Object> &scene_objects = objects[scene_id - 1]; + Common::Array<Object> &sceneObjects = objects[sceneId - 1]; --id; - if (id >= (int)scene_objects.size()) + if (id >= (int)sceneObjects.size()) return NULL; - return &scene_objects[id]; + return &sceneObjects[id]; } -Common::Point Scene::messagePosition(const Common::String &str, Common::Point message_position) { - Resources *res = Resources::instance(); +Common::Point Scene::messagePosition(const Common::String &str, Common::Point pos) { int lines = 1; for (uint i = 0; i < str.size(); ++i) if (str[i] == '\n') ++lines; - uint w = res->font7.render(NULL, 0, 0, str, 0); - uint h = res->font7.height * lines + 3; + uint w = _vm->res->font7.render(NULL, 0, 0, str, 0); + uint h = _vm->res->font7.getHeight() * lines + 3; - message_position.x -= w / 2; - message_position.y -= h; + pos.x -= w / 2; + pos.y -= h; - if (message_position.x + w > 320) - message_position.x = 320 - w; - if (message_position.x < 0) - message_position.x = 0; - if (message_position.y + h > 320) - message_position.y = 200 - h; - if (message_position.y < 0) - message_position.y = 0; + if (pos.x + w > kScreenWidth) + pos.x = kScreenWidth - w; + if (pos.x < 0) + pos.x = 0; + if (pos.y + h > kScreenHeight) + pos.y = kScreenHeight - h; + if (pos.y < 0) + pos.y = 0; - return message_position; + return pos; } uint Scene::messageDuration(const Common::String &str) { - //original game uses static delays: 100-slow, 50, 20 and 1 tick - crazy speed. - //total delay = total message length * delay / 8 + 60. - uint total_width = str.size(); + // original game uses static delays: 100-slow, 50, 20 and 1 tick - crazy speed. + // total delay = total message length * delay / 8 + 60. + uint totalWidth = str.size(); - int speed = Common::ConfigManager::instance().getInt("talkspeed"); + int speed = ConfMan.getInt("talkspeed"); if (speed < 0) speed = 60; - uint delay_delta = 1 + (255 - speed) * 99 / 255; + uint delayDelta = 1 + (255 - speed) * 99 / 255; - uint delay = 60 + (total_width * delay_delta) / 8; - //debug(0, "delay = %u, delta: %u", delay, delay_delta); + uint delay = 60 + (totalWidth * delayDelta) / 8; + debugC(0, kDebugScene, "delay = %u, delta: %u", delay, delayDelta); return delay * 10; } void Scene::displayMessage(const Common::String &str, byte color, const Common::Point &pos) { //assert(!str.empty()); - //debug(0, "displayMessage: %s", str.c_str()); + debugC(0, kDebugScene, "displayMessage: %s", str.c_str()); message = str; - message_pos = (pos.x | pos.y) ? pos : messagePosition(str, position); - message_color = color; - message_timer = messageDuration(message); + messagePos = (pos.x | pos.y) ? pos : messagePosition(str, position); + messageColor = color; + messageTimer = messageDuration(message); } void Scene::clear() { clearMessage(); events.clear(); - current_event.clear(); + currentEvent.clear(); for (int i = 0; i < 4; ++i) { animation[i].free(); - custom_animation[i].free(); + customAnimation[i].free(); } callback = 0; - callback_timer = 0; + callbackTimer = 0; } void Scene::clearMessage() { message.clear(); - message_timer = 0; - message_color = 0xd1; - message_first_frame = 0; - message_last_frame = 0; - message_animation = NULL; + messageTimer = 0; + messageColor = textColorMark; + messageFirstFrame = 0; + messageLastFrame = 0; + messageAnimation = NULL; } } // End of namespace TeenAgent diff --git a/engines/teenagent/scene.h b/engines/teenagent/scene.h index 32e784bb60..14aefa0cca 100644 --- a/engines/teenagent/scene.h +++ b/engines/teenagent/scene.h @@ -27,8 +27,8 @@ #include "teenagent/objects.h" #include "teenagent/surface.h" #include "teenagent/surface_list.h" +#include "teenagent/teenagent.h" -#include "common/system.h" #include "common/array.h" #include "common/list.h" @@ -39,7 +39,6 @@ struct Event; namespace TeenAgent { class TeenAgentEngine; -class Dialog; struct SceneEvent { enum Type { @@ -84,22 +83,22 @@ struct SceneEvent { byte lan; union { byte music; - byte first_frame; + byte firstFrame; }; union { byte sound; - byte last_frame; + byte lastFrame; }; byte object; SceneEvent(Type type_) : - type(type_), message(), color(0xd1), slot(0), animation(0), timer(0), orientation(0), dst(), + type(type_), message(), color(textColorMark), slot(0), animation(0), timer(0), orientation(0), dst(), scene(0), ons(0), lan(0), music(0), sound(0), object(0) {} void clear() { type = kNone; message.clear(); - color = 0xd1; + color = textColorMark; slot = 0; orientation = 0; animation = 0; @@ -118,7 +117,7 @@ struct SceneEvent { } void dump() const { - debug(0, "event[%d]: \"%s\"[%02x], slot: %d, animation: %u, timer: %u, dst: (%d, %d) [%u], scene: %u, ons: %u, lan: %u, object: %u, music: %u, sound: %u", + debugC(0, kDebugScene, "event[%d]: \"%s\"[%02x], slot: %d, animation: %u, timer: %u, dst: (%d, %d) [%u], scene: %u, ons: %u, lan: %u, object: %u, music: %u, sound: %u", (int)type, message.c_str(), color, slot, animation, timer, dst.x, dst.y, orientation, scene, ons, lan, object, music, sound ); } @@ -126,13 +125,13 @@ struct SceneEvent { class Scene { public: - Scene(TeenAgentEngine *engine, OSystem *system); + Scene(TeenAgentEngine *engine); ~Scene(); bool intro; void init(int id, const Common::Point &pos); - bool render(bool tick_game, bool tick_mark, uint32 message_delta); + bool render(bool tickGame, bool tickMark, uint32 messageDelta); int getId() const { return _id; } void warp(const Common::Point &point, byte orientation = 0); @@ -140,7 +139,7 @@ public: void moveTo(const Common::Point &point, byte orientation = 0, bool validate = false); Common::Point getPosition() const { return position; } - void displayMessage(const Common::String &str, byte color = 0xd1, const Common::Point &pos = Common::Point()); + void displayMessage(const Common::String &str, byte color = textColorMark, const Common::Point &pos = Common::Point()); void setOrientation(uint8 o) { orientation = o; } void push(const SceneEvent &event); byte peekFlagEvent(uint16 addr) const; @@ -153,15 +152,15 @@ public: byte *getOns(int id); byte *getLans(int id); - bool eventRunning() const { return !current_event.empty(); } + bool eventRunning() const { return !currentEvent.empty(); } Walkbox *getWalkbox(byte id) { return &walkboxes[_id - 1][id]; } - Object *getObject(int id, int scene_id = 0); + Object *getObject(int id, int sceneId = 0); Object *findObject(const Common::Point &point); void loadObjectData(); Animation *getAnimation(byte slot); - inline Animation *getActorAnimation() { return &actor_animation; } + inline Animation *getActorAnimation() { return &actorAnimation; } inline const Common::String &getMessage() const { return message; } void setPalette(unsigned mul); int lookupZoom(uint y) const; @@ -173,39 +172,38 @@ private: void playAnimation(byte idx, uint id, bool loop, bool paused, bool ignore); void playActorAnimation(uint id, bool loop, bool ignore); - byte palette[768]; + byte palette[3 * 256]; void paletteEffect(byte step); byte findFade() const; - static Common::Point messagePosition(const Common::String &str, Common::Point position); - static uint messageDuration(const Common::String &str); + Common::Point messagePosition(const Common::String &str, Common::Point pos); + uint messageDuration(const Common::String &str); bool processEventQueue(); inline bool nextEvent() { - current_event.clear(); + currentEvent.clear(); return processEventQueue(); } void clearMessage(); - TeenAgentEngine *_engine; - OSystem *_system; + TeenAgentEngine *_vm; int _id; Graphics::Surface background; SurfaceList on; - bool on_enabled; + bool onEnabled; Surface *ons; - uint32 ons_count; - Animation actor_animation, animation[4], custom_animation[4]; - Common::Rect actor_animation_position, animation_position[4]; + uint32 onsCount; + Animation actorAnimation, animation[4], customAnimation[4]; + Common::Rect actorAnimationPosition, animationPosition[4]; - Actor teenagent, teenagent_idle; + Actor teenagent, teenagentIdle; Common::Point position; typedef Common::List<Common::Point> Path; Path path; uint8 orientation; - bool actor_talking; + bool actorTalking; bool findPath(Path &p, const Common::Point &src, const Common::Point &dst) const; @@ -214,22 +212,24 @@ private: Common::Array<Common::Array<FadeType> > fades; Common::String message; - Common::Point message_pos; - byte message_color; - uint message_timer; - byte message_first_frame; - byte message_last_frame; - Animation *message_animation; + Common::Point messagePos; + byte messageColor; + uint messageTimer; + byte messageFirstFrame; + byte messageLastFrame; + Animation *messageAnimation; typedef Common::List<SceneEvent> EventList; EventList events; - SceneEvent current_event; - bool hide_actor; + SceneEvent currentEvent; + bool hideActor; - uint16 callback, callback_timer; + uint16 callback, callbackTimer; - int _fade_timer; - uint _idle_timer; + int _fadeTimer; + byte _fadeOld; + + uint _idleTimer; struct Sound { byte id, delay; @@ -254,7 +254,7 @@ private: feature[i] = true; } } - } debug_features; + } debugFeatures; }; } // End of namespace TeenAgent diff --git a/engines/teenagent/segment.h b/engines/teenagent/segment.h index 303198b071..286337d120 100644 --- a/engines/teenagent/segment.h +++ b/engines/teenagent/segment.h @@ -41,26 +41,21 @@ public: assert(offset < _size); return _data[offset]; } + inline uint16 get_word(uint32 offset) const { assert(offset + 1 < _size); return READ_LE_UINT16(_data + offset); } - inline uint32 get_quad(uint32 offset) const { - assert(offset + 3 < _size); - return READ_LE_UINT32(_data + offset); - } + inline void set_byte(uint32 offset, byte v) const { assert(offset < _size); _data[offset] = v; } + inline void set_word(uint32 offset, uint16 v) const { assert(offset + 1 < _size); return WRITE_LE_UINT16(_data + offset, v); } - inline void set_quad(uint32 offset, uint32 v) const { - assert(offset + 3 < _size); - return WRITE_LE_UINT32(_data + offset, v); - } const byte *ptr(uint32 addr) const { assert(addr < _size); @@ -71,6 +66,7 @@ public: assert(addr < _size); return _data + addr; } + uint size() const { return _size; } }; diff --git a/engines/teenagent/surface.cpp b/engines/teenagent/surface.cpp index 63312990ee..4db25bc749 100644 --- a/engines/teenagent/surface.cpp +++ b/engines/teenagent/surface.cpp @@ -21,6 +21,8 @@ #include "teenagent/surface.h" #include "teenagent/pack.h" +#include "teenagent/teenagent.h" + #include "common/stream.h" #include "common/debug.h" @@ -34,7 +36,7 @@ Surface::~Surface() { } void Surface::load(Common::SeekableReadStream &stream, Type type) { - //debug(0, "load()"); + debugC(0, kDebugSurface, "load()"); free(); x = y = 0; @@ -44,71 +46,71 @@ void Surface::load(Common::SeekableReadStream &stream, Type type) { if (type != kTypeLan) { uint16 pos = stream.readUint16LE(); - x = pos % 320; - y = pos / 320; + x = pos % kScreenWidth; + y = pos / kScreenWidth; } - //debug(0, "declared info: %ux%u (%04xx%04x) -> %u,%u", w_, h_, w_, h_, x, y); + debugC(0, kDebugSurface, "declared info: %ux%u (%04xx%04x) -> %u,%u", w_, h_, w_, h_, x, y); if (stream.eos() || w_ == 0) return; if (w_ * h_ > stream.size()) { - debug(0, "invalid surface %ux%u -> %u,%u", w_, h_, x, y); + debugC(0, kDebugSurface, "invalid surface %ux%u -> %u,%u", w_, h_, x, y); return; } - //debug(0, "creating surface %ux%u -> %u,%u", w_, h_, x, y); + debugC(0, kDebugSurface, "creating surface %ux%u -> %u,%u", w_, h_, x, y); create(w_, h_, Graphics::PixelFormat::createFormatCLUT8()); stream.read(pixels, w_ * h_); } -Common::Rect Surface::render(Graphics::Surface *surface, int dx, int dy, bool mirror, Common::Rect src_rect, uint zoom) const { - if (src_rect.isEmpty()) { - src_rect = Common::Rect(0, 0, w, h); +Common::Rect Surface::render(Graphics::Surface *surface, int dx, int dy, bool mirror, Common::Rect srcRect, uint zoom) const { + if (srcRect.isEmpty()) { + srcRect = Common::Rect(0, 0, w, h); } - Common::Rect dst_rect(x + dx, y + dy, x + dx + zoom * src_rect.width() / 256, y + dy + zoom * src_rect.height() / 256); - if (dst_rect.left < 0) { - src_rect.left = -dst_rect.left; - dst_rect.left = 0; + Common::Rect dstRect(x + dx, y + dy, x + dx + zoom * srcRect.width() / 256, y + dy + zoom * srcRect.height() / 256); + if (dstRect.left < 0) { + srcRect.left = -dstRect.left; + dstRect.left = 0; } - if (dst_rect.right > surface->w) { - src_rect.right -= dst_rect.right - surface->w; - dst_rect.right = surface->w; + if (dstRect.right > surface->w) { + srcRect.right -= dstRect.right - surface->w; + dstRect.right = surface->w; } - if (dst_rect.top < 0) { - src_rect.top -= dst_rect.top; - dst_rect.top = 0; + if (dstRect.top < 0) { + srcRect.top -= dstRect.top; + dstRect.top = 0; } - if (dst_rect.bottom > surface->h) { - src_rect.bottom -= dst_rect.bottom - surface->h; - dst_rect.bottom = surface->h; + if (dstRect.bottom > surface->h) { + srcRect.bottom -= dstRect.bottom - surface->h; + dstRect.bottom = surface->h; } - if (src_rect.isEmpty() || dst_rect.isEmpty()) + if (srcRect.isEmpty() || dstRect.isEmpty()) return Common::Rect(); if (zoom == 256) { - const byte *src = (const byte *)getBasePtr(0, src_rect.top); - byte *dst_base = (byte *)surface->getBasePtr(dst_rect.left, dst_rect.top); + const byte *src = (const byte *)getBasePtr(0, srcRect.top); + byte *dstBase = (byte *)surface->getBasePtr(dstRect.left, dstRect.top); - for (int i = src_rect.top; i < src_rect.bottom; ++i) { - byte *dst = dst_base; - for (int j = src_rect.left; j < src_rect.right; ++j) { + for (int i = srcRect.top; i < srcRect.bottom; ++i) { + byte *dst = dstBase; + for (int j = srcRect.left; j < srcRect.right; ++j) { byte p = src[(mirror ? w - j - 1 : j)]; if (p != 0xff) *dst++ = p; else ++dst; } - dst_base += surface->pitch; + dstBase += surface->pitch; src += pitch; } } else { - byte *dst = (byte *)surface->getBasePtr(dst_rect.left, dst_rect.top); - for (int i = 0; i < dst_rect.height(); ++i) { - for (int j = 0; j < dst_rect.width(); ++j) { + byte *dst = (byte *)surface->getBasePtr(dstRect.left, dstRect.top); + for (int i = 0; i < dstRect.height(); ++i) { + for (int j = 0; j < dstRect.width(); ++j) { int px = j * 256 / zoom; - const byte *src = (const byte *)getBasePtr(src_rect.left + (mirror ? w - px - 1 : px), src_rect.top + i * 256 / zoom); + const byte *src = (const byte *)getBasePtr(srcRect.left + (mirror ? w - px - 1 : px), srcRect.top + i * 256 / zoom); byte p = *src; if (p != 0xff) dst[j] = p; @@ -116,7 +118,7 @@ Common::Rect Surface::render(Graphics::Surface *surface, int dx, int dy, bool mi dst += surface->pitch; } } - return dst_rect; + return dstRect; } } // End of namespace TeenAgent diff --git a/engines/teenagent/surface.h b/engines/teenagent/surface.h index 51368c6bee..3e591ed3e0 100644 --- a/engines/teenagent/surface.h +++ b/engines/teenagent/surface.h @@ -33,16 +33,17 @@ namespace TeenAgent { class Surface : public Graphics::Surface { public: - enum Type {kTypeOns, kTypeLan}; - - uint16 x, y; - Surface(); ~Surface(); + + enum Type {kTypeOns, kTypeLan}; + void load(Common::SeekableReadStream &, Type type); - Common::Rect render(Graphics::Surface *surface, int dx = 0, int dy = 0, bool mirror = false, Common::Rect src_rect = Common::Rect(), uint zoom = 256) const; + Common::Rect render(Graphics::Surface *surface, int dx = 0, int dy = 0, bool mirror = false, Common::Rect srcRect = Common::Rect(), uint zoom = 256) const; bool empty() const { return pixels == NULL; } + + uint16 x, y; }; } // End of namespace TeenAgent diff --git a/engines/teenagent/surface_list.cpp b/engines/teenagent/surface_list.cpp index 31387ac3cb..e293ce6470 100644 --- a/engines/teenagent/surface_list.cpp +++ b/engines/teenagent/surface_list.cpp @@ -19,34 +19,35 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#include "teenagent/surface.h" #include "teenagent/surface_list.h" -#include "objects.h" +#include "teenagent/surface.h" +#include "teenagent/objects.h" +#include "teenagent/teenagent.h" namespace TeenAgent { -SurfaceList::SurfaceList() : surfaces(NULL), surfaces_n(0) {} +SurfaceList::SurfaceList() : surfaces(NULL), surfacesCount(0) {} SurfaceList::~SurfaceList() { free(); } -void SurfaceList::load(Common::SeekableReadStream &stream, Type type, int sub_hack) { +void SurfaceList::load(Common::SeekableReadStream &stream, int subHack) { free(); byte fn = stream.readByte(); if (stream.eos()) return; - surfaces_n = fn - sub_hack; - debug(0, "loading %u surfaces from list (skip %d)", surfaces_n, sub_hack); + surfacesCount = fn - subHack; + debugC(0, kDebugSurface, "loading %u surfaces from list (skip %d)", surfacesCount, subHack); - if (surfaces_n == 0) + if (surfacesCount == 0) return; - surfaces = new Surface[surfaces_n]; + surfaces = new Surface[surfacesCount]; - for (byte i = 0; i < surfaces_n; ++i) { + for (byte i = 0; i < surfacesCount; ++i) { uint offset = stream.readUint16LE(); uint pos = stream.pos(); stream.seek(offset); @@ -58,11 +59,11 @@ void SurfaceList::load(Common::SeekableReadStream &stream, Type type, int sub_ha void SurfaceList::free() { delete[] surfaces; surfaces = NULL; - surfaces_n = 0; + surfacesCount = 0; } void SurfaceList::render(Graphics::Surface *surface, const Common::Rect &clip) const { - for (uint i = 0; i < surfaces_n; ++i) { + for (uint i = 0; i < surfacesCount; ++i) { const Surface &s = surfaces[i]; Common::Rect r(s.x, s.y, s.x + s.w, s.y + s.h); if (r.bottom < clip.bottom || !clip.intersects(r)) diff --git a/engines/teenagent/surface_list.h b/engines/teenagent/surface_list.h index 2d7be0d52b..73a41fb5f8 100644 --- a/engines/teenagent/surface_list.h +++ b/engines/teenagent/surface_list.h @@ -23,23 +23,23 @@ #define TEENAGENT_SURFACE_LIST_H__ #include "common/stream.h" +#include "graphics/surface.h" namespace TeenAgent { class Surface; class SurfaceList { public: - enum Type { kTypeOn }; - SurfaceList(); ~SurfaceList(); - void load(Common::SeekableReadStream &, Type type, int sub_hack = 0); + + void load(Common::SeekableReadStream &, int subHack = 0); void free(); void render(Graphics::Surface *surface, const Common::Rect &clip) const; protected: Surface *surfaces; - uint surfaces_n; + uint surfacesCount; }; } diff --git a/engines/teenagent/teenagent.cpp b/engines/teenagent/teenagent.cpp index 57c069fe59..0b48a18b26 100644 --- a/engines/teenagent/teenagent.cpp +++ b/engines/teenagent/teenagent.cpp @@ -21,6 +21,7 @@ #include "common/config-manager.h" #include "common/debug.h" +#include "common/debug-channels.h" #include "common/events.h" #include "common/savefile.h" #include "common/system.h" @@ -39,26 +40,56 @@ #include "graphics/thumbnail.h" #include "teenagent/console.h" +#include "teenagent/dialog.h" +#include "teenagent/inventory.h" #include "teenagent/music.h" #include "teenagent/objects.h" #include "teenagent/pack.h" +#include "teenagent/resources.h" #include "teenagent/scene.h" #include "teenagent/teenagent.h" namespace TeenAgent { TeenAgentEngine::TeenAgentEngine(OSystem *system, const ADGameDescription *gd) - : Engine(system), action(kActionNone), _gameDescription(gd), - _rnd("teenagent") { - music = new MusicPlayer(); + : Engine(system), _action(kActionNone), _gameDescription(gd), _rnd("teenagent") { + DebugMan.addDebugChannel(kDebugActor, "Actor", "Enable Actor Debug"); + DebugMan.addDebugChannel(kDebugAnimation, "Animation", "Enable Animation Debug"); + DebugMan.addDebugChannel(kDebugCallbacks, "Callbacks", "Enable Callbacks Debug"); + DebugMan.addDebugChannel(kDebugDialog, "Dialog", "Enable Dialog Debug"); + DebugMan.addDebugChannel(kDebugFont, "Font", "Enable Font Debug"); + DebugMan.addDebugChannel(kDebugInventory, "Inventory", "Enable Inventory Debug"); + DebugMan.addDebugChannel(kDebugMusic, "Music", "Enable Music Debug"); + DebugMan.addDebugChannel(kDebugObject, "Object", "Enable Object Debug"); + DebugMan.addDebugChannel(kDebugPack, "Pack", "Enable Pack Debug"); + DebugMan.addDebugChannel(kDebugScene, "Scene", "Enable Scene Debug"); + DebugMan.addDebugChannel(kDebugSurface, "Surface", "Enable Surface Debug"); + + music = new MusicPlayer(this); + dialog = new Dialog(this); + res = new Resources(); console = 0; } TeenAgentEngine::~TeenAgentEngine() { + delete dialog; + dialog = 0; + delete scene; + scene = 0; + delete inventory; + inventory = 0; delete music; + music = 0; + _mixer->stopAll(); + _useHotspots.clear(); + delete res; + res = 0; + + CursorMan.popCursor(); delete console; + DebugMan.clearAllDebugChannels(); } bool TeenAgentEngine::trySelectedObject() { @@ -66,66 +97,64 @@ bool TeenAgentEngine::trySelectedObject() { if (inv == NULL) return false; - Resources *res = Resources::instance(); - debug(0, "checking active object %u on %u", inv->id, dst_object->id); + debugC(0, kDebugObject, "checking active object %u on %u", inv->id, _dstObject->id); //mouse time challenge hack: - if ((res->dseg.get_byte(0) == 1 && inv->id == 49 && dst_object->id == 5) || - (res->dseg.get_byte(0) == 2 && inv->id == 29 && dst_object->id == 5)) { + if ((res->dseg.get_byte(dsAddr_timedCallbackState) == 1 && inv->id == kInvItemRock && _dstObject->id == 5) || + (res->dseg.get_byte(dsAddr_timedCallbackState) == 2 && inv->id == kInvItemSuperGlue && _dstObject->id == 5)) { //putting rock into hole or superglue on rock - processCallback(0x8d57); + fnPutRockInHole(); return true; } - const Common::Array<UseHotspot> &hotspots = use_hotspots[scene->getId() - 1]; + const Common::Array<UseHotspot> &hotspots = _useHotspots[scene->getId() - 1]; for (uint i = 0; i < hotspots.size(); ++i) { const UseHotspot &spot = hotspots[i]; - if (spot.inventory_id == inv->id && dst_object->id == spot.object_id) { - debug(0, "use object on hotspot!"); + if (spot.inventoryId == inv->id && _dstObject->id == spot.objectId) { + debugC(0, kDebugObject, "use object on hotspot!"); spot.dump(); - if (spot.actor_x != 0xffff && spot.actor_y != 0xffff) - moveTo(spot.actor_x, spot.actor_y, spot.orientation); + if (spot.actorX != 0xffff && spot.actorY != 0xffff) + moveTo(spot.actorX, spot.actorY, spot.orientation); if (!processCallback(spot.callback)) - debug(0, "fixme! display proper description"); + debugC(0, kDebugObject, "FIXME: display proper description"); inventory->resetSelectedObject(); return true; } } - //error + // error inventory->resetSelectedObject(); - displayMessage(0x3457); + displayMessage(dsAddr_objErrorMsg); // "That's no good" return true; } void TeenAgentEngine::processObject() { - if (dst_object == NULL) + if (_dstObject == NULL) return; - Resources *res = Resources::instance(); - switch (action) { + switch (_action) { case kActionExamine: { if (trySelectedObject()) break; - byte *dcall = res->dseg.ptr(0xb5ce); + byte *dcall = res->dseg.ptr(dsAddr_objExamineCallbackTablePtr); dcall = res->dseg.ptr(READ_LE_UINT16(dcall + scene->getId() * 2 - 2)); - dcall += 2 * dst_object->id - 2; + dcall += 2 * _dstObject->id - 2; uint16 callback = READ_LE_UINT16(dcall); if (callback == 0 || !processCallback(callback)) - displayMessage(dst_object->description); + displayMessage(_dstObject->description); } break; case kActionUse: { if (trySelectedObject()) break; - byte *dcall = res->dseg.ptr(0xb89c); + byte *dcall = res->dseg.ptr(dsAddr_objUseCallbackTablePtr); dcall = res->dseg.ptr(READ_LE_UINT16(dcall + scene->getId() * 2 - 2)); - dcall += 2 * dst_object->id - 2; + dcall += 2 * _dstObject->id - 2; uint16 callback = READ_LE_UINT16(dcall); if (!processCallback(callback)) - displayMessage(dst_object->description); + displayMessage(_dstObject->description); } break; @@ -134,20 +163,19 @@ void TeenAgentEngine::processObject() { } } - void TeenAgentEngine::use(Object *object) { if (object == NULL || scene->eventRunning()) return; - dst_object = object; + _dstObject = object; object->rect.dump(); - object->actor_rect.dump(); + object->actorRect.dump(); - action = kActionUse; - if (object->actor_rect.valid()) - scene->moveTo(Common::Point(object->actor_rect.right, object->actor_rect.bottom), object->actor_orientation); - else if (object->actor_orientation > 0) - scene->setOrientation(object->actor_orientation); + _action = kActionUse; + if (object->actorRect.valid()) + scene->moveTo(Common::Point(object->actorRect.right, object->actorRect.bottom), object->actorOrientation); + else if (object->actorOrientation > 0) + scene->setOrientation(object->actorOrientation); } void TeenAgentEngine::examine(const Common::Point &point, Object *object) { @@ -155,53 +183,39 @@ void TeenAgentEngine::examine(const Common::Point &point, Object *object) { return; if (object != NULL) { - Common::Point dst = object->actor_rect.center(); - debug(0, "click %d, %d, object %d, %d", point.x, point.y, dst.x, dst.y); - action = kActionExamine; - if (object->actor_rect.valid()) - scene->moveTo(dst, object->actor_orientation, true); //validate examine message. Original engine does not let you into walkboxes - dst_object = object; - } else if (!scene_busy) { - //do not reset anything while scene is busy, but allow interrupts while walking. - debug(0, "click %d, %d", point.x, point.y); - action = kActionNone; + Common::Point dst = object->actorRect.center(); + debugC(0, kDebugObject, "click %d, %d, object %d, %d", point.x, point.y, dst.x, dst.y); + _action = kActionExamine; + if (object->actorRect.valid()) + scene->moveTo(dst, object->actorOrientation, true); // validate examine message. Original engine does not let you into walkboxes + _dstObject = object; + } else if (!_sceneBusy) { + // do not reset anything while scene is busy, but allow interrupts while walking. + debugC(0, kDebugObject, "click %d, %d", point.x, point.y); + _action = kActionNone; scene->moveTo(point, 0, true); - dst_object = NULL; + _dstObject = NULL; } } void TeenAgentEngine::init() { - _mark_delay = 80; - _game_delay = 110; + _markDelay = 80; + _gameDelay = 110; - Resources *res = Resources::instance(); - use_hotspots.resize(42); - byte *scene_hotspots = res->dseg.ptr(0xbb87); + _useHotspots.resize(42); + byte *sceneHotspots = res->dseg.ptr(dsAddr_sceneHotspotsPtr); for (byte i = 0; i < 42; ++i) { - Common::Array<UseHotspot> & hotspots = use_hotspots[i]; - byte *hotspots_ptr = res->dseg.ptr(READ_LE_UINT16(scene_hotspots + i * 2)); - while (*hotspots_ptr) { + Common::Array<UseHotspot> & hotspots = _useHotspots[i]; + byte *hotspotsPtr = res->dseg.ptr(READ_LE_UINT16(sceneHotspots + i * 2)); + while (*hotspotsPtr) { UseHotspot h; - h.load(hotspots_ptr); - hotspots_ptr += 9; + h.load(hotspotsPtr); + hotspotsPtr += 9; hotspots.push_back(h); } } } -void TeenAgentEngine::deinit() { - _mixer->stopAll(); - delete scene; - scene = NULL; - delete inventory; - inventory = NULL; - //delete music; - //music = NULL; - use_hotspots.clear(); - Resources::instance()->deinit(); - CursorMan.popCursor(); -} - Common::Error TeenAgentEngine::loadGameState(int slot) { debug(0, "loading from slot %d", slot); Common::ScopedPtr<Common::InSaveFile> in(_saveFileMan->openForLoading(Common::String::format("teenagent.%02d", slot))); @@ -211,22 +225,19 @@ Common::Error TeenAgentEngine::loadGameState(int slot) { if (!in) return Common::kReadPermissionDenied; - Resources *res = Resources::instance(); + assert(res->dseg.size() >= dsAddr_saveState + saveStateSize); - const uint dataSize = 0x777a; - assert(res->dseg.size() >= 0x6478 + dataSize); - - char *data = (char *)malloc(dataSize); + char *data = (char *)malloc(saveStateSize); if (!data) error("[TeenAgentEngine::loadGameState] Cannot allocate buffer"); in->seek(0); - if (in->read(data, dataSize) != dataSize) { + if (in->read(data, saveStateSize) != saveStateSize) { free(data); return Common::kReadingFailed; } - memcpy(res->dseg.ptr(0x6478), data, dataSize); + memcpy(res->dseg.ptr(dsAddr_saveState), data, saveStateSize); free(data); @@ -234,10 +245,10 @@ Common::Error TeenAgentEngine::loadGameState(int slot) { inventory->activate(false); inventory->reload(); - setMusic(Resources::instance()->dseg.get_byte(0xDB90)); + setMusic(res->dseg.get_byte(dsAddr_currentMusic)); - int id = res->dseg.get_byte(0xB4F3); - uint16 x = res->dseg.get_word(0x64AF), y = res->dseg.get_word(0x64B1); + int id = res->dseg.get_byte(dsAddr_currentScene); + uint16 x = res->dseg.get_word(dsAddr_egoX), y = res->dseg.get_word(dsAddr_egoY); scene->loadObjectData(); scene->init(id, Common::Point(x, y)); scene->setPalette(4); @@ -251,15 +262,15 @@ Common::Error TeenAgentEngine::saveGameState(int slot, const Common::String &des if (!out) return Common::kWritingFailed; - Resources *res = Resources::instance(); - res->dseg.set_byte(0xB4F3, scene->getId()); + res->dseg.set_byte(dsAddr_currentScene, scene->getId()); Common::Point pos = scene->getPosition(); - res->dseg.set_word(0x64AF, pos.x); - res->dseg.set_word(0x64B1, pos.y); + res->dseg.set_word(dsAddr_egoX, pos.x); + res->dseg.set_word(dsAddr_egoY, pos.y); - assert(res->dseg.size() >= 0x6478 + 0x777a); - strncpy((char *)res->dseg.ptr(0x6478), desc.c_str(), 0x16); - out->write(res->dseg.ptr(0x6478), 0x777a); + assert(res->dseg.size() >= dsAddr_saveState + saveStateSize); + // FIXME: Description string is 24 bytes and null based on detection.cpp code, not 22? + strncpy((char *)res->dseg.ptr(dsAddr_saveState), desc.c_str(), 22); + out->write(res->dseg.ptr(dsAddr_saveState), saveStateSize); if (!Graphics::saveThumbnail(*out)) warning("saveThumbnail failed"); @@ -267,7 +278,6 @@ Common::Error TeenAgentEngine::saveGameState(int slot, const Common::String &des return Common::kNoError; } - int TeenAgentEngine::skipEvents() const { Common::EventManager *_event = _system->getEventManager(); Common::Event event; @@ -295,7 +305,7 @@ bool TeenAgentEngine::showCDLogo() { if (!cdlogo.exists("cdlogo.res") || !cdlogo.open("cdlogo.res")) return true; - const uint bgSize = 0xfa00; + const uint bgSize = kScreenWidth * kScreenHeight; const uint paletteSize = 3 * 256; byte *bg = (byte *)malloc(bgSize); @@ -314,8 +324,8 @@ bool TeenAgentEngine::showCDLogo() { for (uint c = 0; c < paletteSize; ++c) palette[c] *= 4; - _system->getPaletteManager()->setPalette(palette, 0, 0x100); - _system->copyRectToScreen(bg, 320, 0, 0, 320, 200); + _system->getPaletteManager()->setPalette(palette, 0, 256); + _system->copyRectToScreen(bg, kScreenWidth, 0, 0, kScreenWidth, kScreenHeight); _system->updateScreen(); free(bg); @@ -341,7 +351,7 @@ bool TeenAgentEngine::showLogo() { if (!frame) return true; - const uint bgSize = 0xfa00; + const uint bgSize = kScreenWidth * kScreenHeight; const uint paletteSize = 3 * 256; byte *bg = (byte *)malloc(bgSize); @@ -360,7 +370,7 @@ bool TeenAgentEngine::showLogo() { for (uint c = 0; c < paletteSize; ++c) palette[c] *= 4; - _system->getPaletteManager()->setPalette(palette, 0, 0x100); + _system->getPaletteManager()->setPalette(palette, 0, 256); free(palette); @@ -374,7 +384,7 @@ bool TeenAgentEngine::showLogo() { return r > 0 ? true : false; } } - _system->copyRectToScreen(bg, 320, 0, 0, 320, 200); + _system->copyRectToScreen(bg, kScreenWidth, 0, 0, kScreenWidth, kScreenHeight); frame.reset(logo.getStream(i)); if (!frame) { @@ -419,23 +429,23 @@ bool TeenAgentEngine::showMetropolis() { palette[c] *= 4; } - _system->getPaletteManager()->setPalette(palette, 0, 0x100); + _system->getPaletteManager()->setPalette(palette, 0, 256); free(palette); const uint varia6Size = 21760; const uint varia9Size = 18302; - byte *varia_6 = (byte *)malloc(varia6Size); - byte *varia_9 = (byte *)malloc(varia9Size); - if (!varia_6 || !varia_9) { - free(varia_6); - free(varia_9); + byte *varia6Data = (byte *)malloc(varia6Size); + byte *varia9Data = (byte *)malloc(varia9Size); + if (!varia6Data || !varia9Data) { + free(varia6Data); + free(varia9Data); error("[TeenAgentEngine::showMetropolis] Cannot allocate buffer"); } - varia.read(6, varia_6, varia6Size); - varia.read(9, varia_9, varia9Size); + varia.read(6, varia6Data, varia6Size); + varia.read(9, varia9Data, varia9Size); const uint colorsSize = 56 * 160 * 2; byte *colors = (byte *)malloc(colorsSize); @@ -449,8 +459,8 @@ bool TeenAgentEngine::showMetropolis() { { int r = skipEvents(); if (r != 0) { - free(varia_6); - free(varia_9); + free(varia6Data); + free(varia9Data); free(colors); return r > 0 ? true : false; } @@ -458,7 +468,7 @@ bool TeenAgentEngine::showMetropolis() { Graphics::Surface *surface = _system->lockScreen(); if (logo_y > 0) { - surface->fillRect(Common::Rect(0, 0, 320, logo_y), 0); + surface->fillRect(Common::Rect(0, 0, kScreenWidth, logo_y), 0); } { @@ -485,7 +495,7 @@ bool TeenAgentEngine::showMetropolis() { } byte *dst = (byte *)surface->getBasePtr(0, 131); - byte *src = varia_6; + byte *src = varia6Data; for (uint y = 0; y < 68; ++y) { for (uint x = 0; x < 320; ++x) { if (*src++ == 1) { @@ -497,7 +507,7 @@ bool TeenAgentEngine::showMetropolis() { _system->unlockScreen(); _system->copyRectToScreen( - varia_9 + (logo_y < 0 ? -logo_y * 320 : 0), 320, + varia9Data + (logo_y < 0 ? -logo_y * 320 : 0), 320, 0, logo_y >= 0 ? logo_y : 0, 320, logo_y >= 0 ? 57 : 57 + logo_y); @@ -509,38 +519,37 @@ bool TeenAgentEngine::showMetropolis() { _system->delayMillis(100); } - free(varia_6); - free(varia_9); + free(varia6Data); + free(varia9Data); free(colors); return true; } Common::Error TeenAgentEngine::run() { - Resources *res = Resources::instance(); if (!res->loadArchives(_gameDescription)) return Common::kUnknownError; Common::EventManager *_event = _system->getEventManager(); - initGraphics(320, 200, false); + initGraphics(kScreenWidth, kScreenHeight, false); console = new Console(this); - scene = new Scene(this, _system); + scene = new Scene(this); inventory = new Inventory(this); init(); - CursorMan.pushCursor(res->dseg.ptr(0x00da), 8, 12, 0, 0, 1); + CursorMan.pushCursor(res->dseg.ptr(dsAddr_cursor), 8, 12, 0, 0, 1); syncSoundSettings(); setMusic(1); _mixer->playStream(Audio::Mixer::kMusicSoundType, &_musicHandle, music, -1, Audio::Mixer::kMaxChannelVolume, 0, DisposeAfterUse::NO, false); - int load_slot = Common::ConfigManager::instance().getInt("save_slot"); - if (load_slot >= 0) { - loadGameState(load_slot); + int loadSlot = ConfMan.getInt("save_slot"); + if (loadSlot >= 0) { + loadGameState(loadSlot); } else { if (!showCDLogo()) return Common::kNoError; @@ -549,32 +558,30 @@ Common::Error TeenAgentEngine::run() { if (!showMetropolis()) return Common::kNoError; scene->intro = true; - scene_busy = true; - processCallback(0x24c); + _sceneBusy = true; + fnIntro(); } CursorMan.showMouse(true); - uint32 game_timer = 0; - uint32 mark_timer = 0; + uint32 gameTimer = 0; + uint32 markTimer = 0; Common::Event event; Common::Point mouse; uint32 timer = _system->getMillis(); do { - Object *current_object = scene->findObject(mouse); + Object *currentObject = scene->findObject(mouse); while (_event->pollEvent(event)) { - if (event.type == Common::EVENT_RTL) { - deinit(); + if (event.type == Common::EVENT_RTL) return Common::kNoError; - } - if ((!scene_busy && inventory->processEvent(event)) || scene->processEvent(event)) + if ((!_sceneBusy && inventory->processEvent(event)) || scene->processEvent(event)) continue; - //debug(0, "event"); + debug(5, "event"); switch (event.type) { case Common::EVENT_KEYDOWN: if ((event.kbd.hasFlags(Common::KBD_CTRL) && event.kbd.keycode == Common::KEYCODE_d) || @@ -583,33 +590,33 @@ Common::Error TeenAgentEngine::run() { } else if (event.kbd.hasFlags(0) && event.kbd.keycode == Common::KEYCODE_F5) { openMainMenuDialog(); } if (event.kbd.hasFlags(Common::KBD_CTRL) && event.kbd.keycode == Common::KEYCODE_f) { - _mark_delay = _mark_delay == 80 ? 40 : 80; - debug(0, "mark_delay = %u", _mark_delay); + _markDelay = _markDelay == 80 ? 40 : 80; + debug(5, "markDelay = %u", _markDelay); } break; case Common::EVENT_LBUTTONDOWN: if (scene->getId() < 0) break; - examine(event.mouse, current_object); + examine(event.mouse, currentObject); break; case Common::EVENT_RBUTTONDOWN: - //if (current_object) - // debug(0, "%d, %s", current_object->id, current_object->name.c_str()); + if (currentObject) + debugC(0, kDebugObject, "%d, %s", currentObject->id, currentObject->name.c_str()); if (scene->getId() < 0) break; - if (current_object == NULL) + if (currentObject == NULL) break; - if (res->dseg.get_byte(0) == 3 && current_object->id == 1) { - processCallback(0x5189); //boo! + if (res->dseg.get_byte(dsAddr_timedCallbackState) == 3 && currentObject->id == 1) { + fnGuardDrinking(); break; } - if (res->dseg.get_byte(0) == 4 && current_object->id == 5) { - processCallback(0x99e0); //getting an anchor + if (res->dseg.get_byte(dsAddr_timedCallbackState) == 4 && currentObject->id == 5) { + fnGotAnchor(); break; } - use(current_object); + use(currentObject); break; case Common::EVENT_MOUSEMOVE: mouse = event.mouse; @@ -622,60 +629,60 @@ Common::Error TeenAgentEngine::run() { //game delays: slow 16, normal 11, fast 5, crazy 1 //mark delays: 4 * (3 - hero_speed), normal == 1 //game delays in 1/100th of seconds - uint32 new_timer = _system->getMillis(); - uint32 delta = new_timer - timer; - timer = new_timer; + uint32 newTimer = _system->getMillis(); + uint32 delta = newTimer - timer; + timer = newTimer; - bool tick_game = game_timer <= delta; - if (tick_game) - game_timer = _game_delay - ((delta - game_timer) % _game_delay); + bool tickGame = gameTimer <= delta; + if (tickGame) + gameTimer = _gameDelay - ((delta - gameTimer) % _gameDelay); else - game_timer -= delta; + gameTimer -= delta; - bool tick_mark = mark_timer <= delta; - if (tick_mark) - mark_timer = _mark_delay - ((delta - mark_timer) % _mark_delay); + bool tickMark = markTimer <= delta; + if (tickMark) + markTimer = _markDelay - ((delta - markTimer) % _markDelay); else - mark_timer -= delta; + markTimer -= delta; - if (tick_game || tick_mark) { - bool b = scene->render(tick_game, tick_mark, delta); - if (!inventory->active() && !b && action != kActionNone) { + if (tickGame || tickMark) { + bool b = scene->render(tickGame, tickMark, delta); + if (!inventory->active() && !b && _action != kActionNone) { processObject(); - action = kActionNone; - dst_object = NULL; + _action = kActionNone; + _dstObject = NULL; } - scene_busy = b; + _sceneBusy = b; } - _system->showMouse(scene->getMessage().empty() && !scene_busy); + _system->showMouse(scene->getMessage().empty() && !_sceneBusy); - bool busy = inventory->active() || scene_busy; + bool busy = inventory->active() || _sceneBusy; Graphics::Surface *surface = _system->lockScreen(); if (!busy) { - InventoryObject *selected_object = inventory->selectedObject(); - if (current_object || selected_object) { + InventoryObject *selectedObject = inventory->selectedObject(); + if (currentObject || selectedObject) { Common::String name; - if (selected_object) { - name += selected_object->name; + if (selectedObject) { + name += selectedObject->name; name += " & "; } - if (current_object) - name += current_object->name; + if (currentObject) + name += currentObject->name; - uint w = res->font7.render(NULL, 0, 0, name, 0xd1); - res->font7.render(surface, (320 - w) / 2, 180, name, 0xd1, true); + uint w = res->font7.render(NULL, 0, 0, name, textColorMark); + res->font7.render(surface, (kScreenWidth - w) / 2, 180, name, textColorMark, true); #if 0 - if (current_object) { - current_object->rect.render(surface, 0x80); - current_object->actor_rect.render(surface, 0x81); + if (currentObject) { + currentObject->rect.render(surface, 0x80); + currentObject->actorRect.render(surface, 0x81); } #endif } } - inventory->render(surface, tick_game ? 1 : 0); + inventory->render(surface, tickGame ? 1 : 0); _system->unlockScreen(); @@ -683,20 +690,19 @@ Common::Error TeenAgentEngine::run() { console->onFrame(); - uint32 next_tick = MIN(game_timer, mark_timer); - if (next_tick > 0) { - _system->delayMillis(next_tick > 40 ? 40 : next_tick); + uint32 nextTick = MIN(gameTimer, markTimer); + if (nextTick > 0) { + _system->delayMillis(nextTick > 40 ? 40 : nextTick); } } while (!shouldQuit()); - deinit(); return Common::kNoError; } Common::String TeenAgentEngine::parseMessage(uint16 addr) { Common::String message; for ( - const char *str = (const char *)Resources::instance()->dseg.ptr(addr); + const char *str = (const char *)res->dseg.ptr(addr); str[0] != 0 || str[1] != 0; ++str) { char c = str[0]; @@ -708,12 +714,12 @@ Common::String TeenAgentEngine::parseMessage(uint16 addr) { return message; } -void TeenAgentEngine::displayMessage(const Common::String &str, byte color, uint16 position) { +void TeenAgentEngine::displayMessage(const Common::String &str, byte color, uint16 x, uint16 y) { if (str.empty()) { return; } - if (color == 0xd1) { //mark's + if (color == textColorMark) { // mark's SceneEvent e(SceneEvent::kPlayAnimation); e.animation = 0; e.slot = 0x80; @@ -725,8 +731,8 @@ void TeenAgentEngine::displayMessage(const Common::String &str, byte color, uint event.message = str; event.color = color; event.slot = 0; - event.dst.x = position % 320; - event.dst.y = position / 320; + event.dst.x = x; + event.dst.y = y; scene->push(event); } @@ -738,46 +744,45 @@ void TeenAgentEngine::displayMessage(const Common::String &str, byte color, uint } } -void TeenAgentEngine::displayMessage(uint16 addr, byte color, uint16 position) { - displayMessage(parseMessage(addr), color, position); +void TeenAgentEngine::displayMessage(uint16 addr, byte color, uint16 x, uint16 y) { + displayMessage(parseMessage(addr), color, x, y); } -void TeenAgentEngine::displayAsyncMessage(uint16 addr, uint16 position, uint16 first_frame, uint16 last_frame, byte color) { +void TeenAgentEngine::displayAsyncMessage(uint16 addr, uint16 x, uint16 y, uint16 firstFrame, uint16 lastFrame, byte color) { SceneEvent event(SceneEvent::kMessage); event.message = parseMessage(addr); event.slot = 0; event.color = color; - event.dst.x = position % 320; - event.dst.y = position / 320; - event.first_frame = first_frame; - event.last_frame = last_frame; + event.dst.x = x; + event.dst.y = y; + event.firstFrame = firstFrame; + event.lastFrame = lastFrame; scene->push(event); } -void TeenAgentEngine::displayAsyncMessageInSlot(uint16 addr, byte slot, uint16 first_frame, uint16 last_frame, byte color) { +void TeenAgentEngine::displayAsyncMessageInSlot(uint16 addr, byte slot, uint16 firstFrame, uint16 lastFrame, byte color) { SceneEvent event(SceneEvent::kMessage); event.message = parseMessage(addr); event.slot = slot + 1; event.color = color; - event.first_frame = first_frame; - event.last_frame = last_frame; + event.firstFrame = firstFrame; + event.lastFrame = lastFrame; scene->push(event); } - void TeenAgentEngine::displayCredits(uint16 addr, uint16 timer) { SceneEvent event(SceneEvent::kCreditsMessage); - const byte *src = Resources::instance()->dseg.ptr(addr); + const byte *src = res->dseg.ptr(addr); event.orientation = *src++; event.color = *src++; event.lan = 8; event.dst.y = *src; while (true) { - ++src; //skip y position + ++src; // skip y position Common::String line((const char *)src); event.message += line; src += line.size() + 1; @@ -785,33 +790,33 @@ void TeenAgentEngine::displayCredits(uint16 addr, uint16 timer) { break; event.message += "\n"; } - int w = Resources::instance()->font8.render(NULL, 0, 0, event.message, 0xd1); - event.dst.x = (320 - w) / 2; + int w = res->font8.render(NULL, 0, 0, event.message, textColorCredits); + event.dst.x = (kScreenWidth - w) / 2; event.timer = timer; scene->push(event); } void TeenAgentEngine::displayCredits() { SceneEvent event(SceneEvent::kCredits); - event.message = parseMessage(0xe488); - event.dst.y = 200; + event.message = parseMessage(dsAddr_finalCredits7); + event.dst.y = kScreenHeight; int lines = 1; for (uint i = 0; i < event.message.size(); ++i) if (event.message[i] == '\n') ++lines; - event.dst.x = (320 - Resources::instance()->font7.render(NULL, 0, 0, event.message, 0xd1)) / 2; + event.dst.x = (kScreenWidth - res->font7.render(NULL, 0, 0, event.message, textColorCredits)) / 2; event.timer = 11 * lines - event.dst.y + 22; - //debug(0, "credits = %s", event.message.c_str()); + debug(2, "credits = %s", event.message.c_str()); scene->push(event); } -void TeenAgentEngine::displayCutsceneMessage(uint16 addr, uint16 position) { +void TeenAgentEngine::displayCutsceneMessage(uint16 addr, uint16 x, uint16 y) { SceneEvent event(SceneEvent::kCreditsMessage); event.message = parseMessage(addr); - event.dst.x = position % 320; - event.dst.y = position / 320; + event.dst.x = x; + event.dst.y = y; event.lan = 7; scene->push(event); @@ -822,7 +827,7 @@ void TeenAgentEngine::moveTo(const Common::Point &dst, byte o, bool warp) { } void TeenAgentEngine::moveTo(Object *obj) { - moveTo(obj->actor_rect.right, obj->actor_rect.bottom, obj->actor_orientation); + moveTo(obj->actorRect.right, obj->actorRect.bottom, obj->actorOrientation); } void TeenAgentEngine::moveTo(uint16 x, uint16 y, byte o, bool warp) { @@ -865,7 +870,6 @@ void TeenAgentEngine::playActorAnimation(uint16 id, bool async, bool ignore) { waitAnimation(); } - void TeenAgentEngine::loadScene(byte id, const Common::Point &pos, byte o) { loadScene(id, pos.x, pos.y, o); } @@ -890,21 +894,21 @@ void TeenAgentEngine::enableOn(bool enable) { scene->push(event); } -void TeenAgentEngine::setOns(byte id, byte value, byte scene_id) { +void TeenAgentEngine::setOns(byte id, byte value, byte sceneId) { SceneEvent event(SceneEvent::kSetOn); event.ons = id + 1; event.color = value; - event.scene = scene_id; + event.scene = sceneId; scene->push(event); } -void TeenAgentEngine::setLan(byte id, byte value, byte scene_id) { +void TeenAgentEngine::setLan(byte id, byte value, byte sceneId) { if (id == 0) error("setting lan 0 is invalid"); SceneEvent event(SceneEvent::kSetLan); event.lan = id; event.color = value; - event.scene = scene_id; + event.scene = sceneId; scene->push(event); } @@ -925,35 +929,34 @@ void TeenAgentEngine::reloadLan() { scene->push(event); } - void TeenAgentEngine::playMusic(byte id) { SceneEvent event(SceneEvent::kPlayMusic); event.music = id; scene->push(event); } -void TeenAgentEngine::playSound(byte id, byte skip_frames) { - if (skip_frames > 0) - --skip_frames; +void TeenAgentEngine::playSound(byte id, byte skipFrames) { + if (skipFrames > 0) + --skipFrames; SceneEvent event(SceneEvent::kPlaySound); event.sound = id; - event.color = skip_frames; + event.color = skipFrames; scene->push(event); } -void TeenAgentEngine::enableObject(byte id, byte scene_id) { +void TeenAgentEngine::enableObject(byte id, byte sceneId) { SceneEvent event(SceneEvent::kEnableObject); event.object = id + 1; event.color = 1; - event.scene = scene_id; + event.scene = sceneId; scene->push(event); } -void TeenAgentEngine::disableObject(byte id, byte scene_id) { +void TeenAgentEngine::disableObject(byte id, byte sceneId) { SceneEvent event(SceneEvent::kEnableObject); event.object = id + 1; event.color = 0; - event.scene = scene_id; + event.scene = sceneId; scene->push(event); } @@ -1015,7 +1018,6 @@ void TeenAgentEngine::wait(uint16 frames) { } void TeenAgentEngine::playSoundNow(byte id) { - Resources *res = Resources::instance(); uint size = res->sam_sam.getSize(id); if (size == 0) { warning("skipping invalid sound %u", id); @@ -1024,28 +1026,26 @@ void TeenAgentEngine::playSoundNow(byte id) { byte *data = (byte *)malloc(size); res->sam_sam.read(id, data, size); - //debug(0, "playing %u samples...", size); + debug(3, "playing %u samples...", size); Audio::AudioStream *stream = Audio::makeRawStream(data, size, 11025, 0); - _mixer->playStream(Audio::Mixer::kSFXSoundType, &_soundHandle, stream); //dispose is YES by default + _mixer->playStream(Audio::Mixer::kSFXSoundType, &_soundHandle, stream); // dispose is YES by default } - void TeenAgentEngine::setMusic(byte id) { - debug(0, "starting music %u", id); - Resources *res = Resources::instance(); + debugC(0, kDebugMusic, "starting music %u", id); - if (id != 1) //intro music - *res->dseg.ptr(0xDB90) = id; + if (id != 1) // intro music + res->dseg.set_byte(dsAddr_currentMusic, id); if (_gameDescription->flags & ADGF_CD) { byte track2cd[] = {7, 2, 0, 9, 3, 6, 8, 10, 4, 5, 11}; if (id == 0 || id > 11 || track2cd[id - 1] == 0) { - debug(0, "no cd music for id %u", id); + debugC(0, kDebugMusic, "no cd music for id %u", id); return; } byte track = track2cd[id - 1]; - debug(0, "playing cd track %u", track); + debugC(0, kDebugMusic, "playing cd track %u", track); _system->getAudioCDManager()->play(track, -1, 0, 0); } else if (music->load(id)) music->start(); diff --git a/engines/teenagent/teenagent.h b/engines/teenagent/teenagent.h index 737f07ba85..d6a2c0d3c6 100644 --- a/engines/teenagent/teenagent.h +++ b/engines/teenagent/teenagent.h @@ -23,12 +23,15 @@ #define TEENAGENT_ENGINE_H #include "engines/engine.h" -#include "teenagent/pack.h" -#include "teenagent/resources.h" -#include "teenagent/inventory.h" + #include "audio/audiostream.h" #include "audio/mixer.h" + #include "common/random.h" +#include "common/rect.h" +#include "common/array.h" + +#include "teenagent/dialog.h" struct ADGameDescription; @@ -43,14 +46,34 @@ struct ADGameDescription; namespace TeenAgent { struct Object; +struct UseHotspot; class Scene; class MusicPlayer; +class Dialog; class Console; +class Resources; +class Inventory; + +// Engine Debug Flags +enum { + kDebugActor = (1 << 0), + kDebugAnimation = (1 << 1), + kDebugCallbacks = (1 << 2), + kDebugDialog = (1 << 3), + kDebugFont = (1 << 4), + kDebugInventory = (1 << 5), + kDebugMusic = (1 << 6), + kDebugObject = (1 << 7), + kDebugPack = (1 << 8), + kDebugScene = (1 << 9), + kDebugSurface = (1 << 10) +}; + +const uint16 kScreenWidth = 320; +const uint16 kScreenHeight = 200; class TeenAgentEngine : public Engine { public: - enum Action { kActionNone, kActionExamine, kActionUse }; - TeenAgentEngine(OSystem *system, const ADGameDescription *gd); ~TeenAgentEngine(); @@ -58,15 +81,16 @@ public: virtual Common::Error loadGameState(int slot); virtual Common::Error saveGameState(int slot, const Common::String &desc); virtual bool canLoadGameStateCurrently() { return true; } - virtual bool canSaveGameStateCurrently() { return !scene_busy; } + virtual bool canSaveGameStateCurrently() { return !_sceneBusy; } virtual bool hasFeature(EngineFeature f) const; void init(); - void deinit(); + + enum Action { kActionNone, kActionExamine, kActionUse }; void examine(const Common::Point &point, Object *object); void use(Object *object); - inline void cancel() { action = kActionNone; } + inline void cancel() { _action = kActionNone; } bool processCallback(uint16 addr); inline Scene *getScene() { return scene; } @@ -76,15 +100,15 @@ public: bool showMetropolis(); int skipEvents() const; - static Common::String parseMessage(uint16 addr); + Common::String parseMessage(uint16 addr); //event driven: - void displayMessage(uint16 addr, byte color = 0xd1, uint16 position = 0); - void displayMessage(const Common::String &str, byte color = 0xd1, uint16 position = 0); - void displayAsyncMessage(uint16 addr, uint16 position, uint16 first_frame, uint16 last_frame, byte color = 0xd1); - void displayAsyncMessageInSlot(uint16 addr, byte slot, uint16 first_frame, uint16 last_frame, byte color = 0xd1); + void displayMessage(uint16 addr, byte color = textColorMark, uint16 x = 0, uint16 y = 0); + void displayMessage(const Common::String &str, byte color = textColorMark, uint16 x = 0, uint16 y = 0); + void displayAsyncMessage(uint16 addr, uint16 x, uint16 y, uint16 firstFrame, uint16 lastFrame, byte color = textColorMark); + void displayAsyncMessageInSlot(uint16 addr, byte slot, uint16 firstFrame, uint16 lastFrame, byte color = textColorMark); void displayCredits(uint16 addr, uint16 timer = 0); - void displayCutsceneMessage(uint16 addr, uint16 position); + void displayCutsceneMessage(uint16 addr, uint16 x, uint16 y); void moveTo(const Common::Point &dst, byte o, bool warp = false); void moveTo(uint16 x, uint16 y, byte o, bool warp = false); void moveTo(Object *obj); @@ -94,18 +118,18 @@ public: void loadScene(byte id, const Common::Point &pos, byte o = 0); void loadScene(byte id, uint16 x, uint16 y, byte o = 0); void enableOn(bool enable = true); - void setOns(byte id, byte value, byte scene_id = 0); - void setLan(byte id, byte value, byte scene_id = 0); + void setOns(byte id, byte value, byte sceneId = 0); + void setLan(byte id, byte value, byte sceneId = 0); void setFlag(uint16 addr, byte value); byte getFlag(uint16 addr); void reloadLan(); void rejectMessage(); void playMusic(byte id); //schedules play - void playSound(byte id, byte skip_frames); + void playSound(byte id, byte skipFrames); void playSoundNow(byte id); - void enableObject(byte id, byte scene_id = 0); - void disableObject(byte id, byte scene_id = 0); + void enableObject(byte id, byte sceneId = 0); + void disableObject(byte id, byte sceneId = 0); void hideActor(); void showActor(); void waitAnimation(); @@ -119,9 +143,11 @@ public: Common::RandomSource _rnd; + Resources *res; Scene *scene; Inventory *inventory; MusicPlayer *music; + Dialog *dialog; Console *console; void setMusic(byte id); @@ -130,17 +156,47 @@ private: void processObject(); bool trySelectedObject(); - bool scene_busy; - Action action; - Object *dst_object; + bool _sceneBusy; + Action _action; + Object *_dstObject; Audio::AudioStream *_musicStream; Audio::SoundHandle _musicHandle, _soundHandle; const ADGameDescription *_gameDescription; - uint _mark_delay, _game_delay; - - Common::Array<Common::Array<UseHotspot> > use_hotspots; + uint _markDelay, _gameDelay; + + Common::Array<Common::Array<UseHotspot> > _useHotspots; + + void fnIntro(); + void fnPoleClimbFail(); + void fnGotAnchor(); + void fnGetOutOfLake(); + void fnGuardDrinking(); + void fnEgoDefaultPosition(); + void fnEnterCave(); + void fnEgoScaredBySpider(); + void fnMoveToLadderAndLeaveCellar(); + void fnLeaveCellar(); + void fnPutRockInHole(); + void fnEgoBottomRightTurn(); + bool fnCheckingDrawers(); + void fnDrawerOpenMessage(); + bool fnRobotSafeAlreadyUnlockedCheck(); + void fnRobotSafeUnlockCheck(); + bool fnMansionIntrusionAttempt(); + void fnSecondMansionIntrusion(); + void fnThirdMansionIntrusion(); + void fnFourthMansionIntrusion(); + void fnFifthMansionIntrusion(); + void fnSixthMansionIntrusion(); + void fnTooDark(); + bool fnIsCookGone(); + void fnEgoSuspiciousPosition(); + void fnGivingFlowerToOldLady(); + void fnGiveAnotherFlowerToOldLady(); + void fnGivingFlowerToAnne(); + void fnGiveAnotherFlowerToAnne(); }; } // End of namespace TeenAgent |