/* ------------------------------------------------------------------------------

S220618 - HW ref: A040618

IOS-LITE - I/O Subsystem for Z80-MBC2 (Multi Boot Computer) - LITE Edition (No SD disk support)
(Z80 128kB RAM @ 4/8Mhz)


Notes:

1:  This SW is ONLY for the Atmega32A used as EEPROM and I/O subsystem (16MHz external oscillator).
    
2:  Tested on Atmega32A @ Arduino IDE 1.8.5.

3:  Embedded FW: S210718 uBIOS + Basic, S200718 iLoad (Intel-Hex loader),
                 Forth interpreter

4:  Utilities:   S111216 TASM conversion utility


--------------------------------------------------------------------------------- */

/* ------------------------------------------------------------------------------

CHANGELOG:


S220618           First release.


--------------------------------------------------------------------------------- */

// ------------------------------------------------------------------------------
//
// Hardware definitions for A040618 (Z80-MBC2) - Base system
//
// ------------------------------------------------------------------------------

#define   D0          24  // PA0 pin 40   Z80 data bus
#define   D1          25  // PA1 pin 39
#define   D2          26  // PA2 pin 38
#define   D3          27  // PA3 pin 37
#define   D4          28  // PA4 pin 36
#define   D5          29  // PA5 pin 35
#define   D6          30  // PA6 pin 34
#define   D7          31  // PA7 pin 33

#define   AD0         18  // PC2 pin 24   Z80 A0
#define   WR_         19  // PC3 pin 25   Z80 WR
#define   RD_         20  // PC4 pin 26   Z80 RD
#define   MREQ_       21  // PC5 pin 27   Z80 MREQ
#define   RESET_      22  // PC6 pin 28   Z80 RESET
#define   MCU_RTS_    23  // PC7 pin 29   * RESERVED - NOT USED *
#define   MCU_CTS_    10  // PD2 pin 16   * RESERVED - NOT USED *
#define   BANK1       11  // PD3 pin 17   RAM Memory bank address (High)
#define   BANK0       12  // PD4 pin 18   RAM Memory bank address (Low)
#define   INT_         1  // PB1 pin 2    Z80 control bus
#define   RAM_CE2      2  // PB2 pin 3    RAM Chip Enable (CE2). Active HIGH. Used only during boot
#define   WAIT_        3  // PB3 pin 4    Z80 WAIT
#define   SS_          4  // PB4 pin 5    SD SPI * RESERVED - NOT USED *
#define   MOSI         5  // PB5 pin 6    SD SPI * RESERVED - NOT USED *
#define   MISO         6  // PB6 pin 7    SD SPI * RESERVED - NOT USED *
#define   SCK          7  // PB7 pin 8    SD SPI * RESERVED - NOT USED *
#define   BUSREQ_     14  // PD6 pin 20   Z80 BUSRQ
#define   CLK         15  // PD7 pin 21   Z80 CLK
#define   SCL_PC0     16  // PC0 pin 22   IOEXP connector (I2C)
#define   SDA_PC1     17  // PC1 pin 23   IOEXP connector (I2C)
#define   LED_IOS      0  // PB0 pin 1    Led LED_IOS is ON if HIGH
#define   WAIT_RES_    0  // PB0 pin 1    Reset the Wait FF
#define   USER        13  // PD5 pin 19   Led USER and key (led USER is ON if LOW)

// ------------------------------------------------------------------------------
//
// Hardware definitions for A040618 GPE Option (Optional GPIO Expander)
//
// ------------------------------------------------------------------------------

#define   GPIOEXP_ADDR  0x20  // I2C module address (see datasheet)
#define   IODIRA_REG    0x00  // MCP23017 internal register IODIRA  (see datasheet)
#define   IODIRB_REG    0x01  // MCP23017 internal register IODIRB  (see datasheet)
#define   GPPUA_REG     0x0C  // MCP23017 internal register GPPUA  (see datasheet)
#define   GPPUB_REG     0x0D  // MCP23017 internal register GPPUB  (see datasheet)
#define   GPIOA_REG     0x12  // MCP23017 internal register GPIOA  (see datasheet)
#define   GPIOB_REG     0x13  // MCP23017 internal register GPIOB  (see datasheet)

// ------------------------------------------------------------------------------
//
// Hardware definitions for A040618 RTC Module Option (see DS3231 datasheet)
//
// ------------------------------------------------------------------------------

#define   DS3231_RTC    0x68  // DS3231 I2C address
#define   DS3231_SECRG  0x00  // DS3231 Seconds Register
#define   DS3231_STATRG 0x0F  // DS3231 Status Register

// ------------------------------------------------------------------------------
//
//  Libraries
//
// ------------------------------------------------------------------------------

#include <avr/pgmspace.h>                 // Needed for PROGMEM
#include "Wire.h"                         // Needed for I2C bus
#include <EEPROM.h>                       // Needed for internal EEPROM R/W

// ------------------------------------------------------------------------------
//
//  Constants
//
// ------------------------------------------------------------------------------

const byte    LD_HL        =  0x36;     // Opcode of the Z80 instruction: LD(HL), n
const byte    INC_HL       =  0x23;     // Opcode of the Z80 instruction: INC HL
const byte    LD_HLnn      =  0x21;     // Opcode of the Z80 instruction: LD HL, nn
const byte    JP_nn        =  0xC3;     // Opcode of the Z80 instruction: JP nn
const String  compTimeStr   = __TIME__;  // Compile timestamp string
const String  compDateStr   = __DATE__;  // Compile datestamp string
const byte    daysOfMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
const byte    debug         = 0;        // Debug off = 0, on = 1

const word  boot_A_StrAddr = 0x0000;// Payload A image starting address
const byte  boot_A_[] PROGMEM = {   // Payload A image (S210718 uBIOS + Basic)
  0xF3, 0xC3, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0xC3, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0xF5, 0xE5, 0xDB, 0x01, 0xF5, 0x3A, 
  0x43, 0x20, 0xFE, 0x3F, 0x20, 0x03, 0xF1, 0x18, 0x1C, 0x2A, 0x3F, 0x20, 0x23, 0x7D, 0xFE, 0x3F, 
  0x20, 0x03, 0x21, 0x00, 0x20, 0x22, 0x3F, 0x20, 0xF1, 0x77, 0x3A, 0x43, 0x20, 0x3C, 0x32, 0x43, 
  0x20, 0xFE, 0x30, 0x38, 0x00, 0xE1, 0xF1, 0xFB, 0xED, 0x4D, 0x3A, 0x43, 0x20, 0xFE, 0x00, 0x28, 
  0xF9, 0xE5, 0x2A, 0x41, 0x20, 0x23, 0x7D, 0xFE, 0x3F, 0x20, 0x03, 0x21, 0x00, 0x20, 0xF3, 0x22, 
  0x41, 0x20, 0x3A, 0x43, 0x20, 0x3D, 0x32, 0x43, 0x20, 0xFE, 0x05, 0x30, 0x00, 0x7E, 0xFB, 0xE1, 
  0xC9, 0xF5, 0x3E, 0x01, 0xD3, 0x01, 0xF1, 0xD3, 0x00, 0xC9, 0x3A, 0x43, 0x20, 0xFE, 0x00, 0xC9, 
  0x7E, 0xB7, 0xC8, 0xCF, 0x23, 0x18, 0xF9, 0xC9, 0x21, 0xED, 0x20, 0xF9, 0x21, 0x00, 0x20, 0x22, 
  0x3F, 0x20, 0x22, 0x41, 0x20, 0xAF, 0x32, 0x43, 0x20, 0xED, 0x56, 0xFB, 0x21, 0xF5, 0x00, 0xCD, 
  0xA0, 0x00, 0x3A, 0x44, 0x20, 0xFE, 0x59, 0x20, 0x16, 0x21, 0x2B, 0x01, 0xCD, 0xA0, 0x00, 0xCD, 
  0x6A, 0x00, 0xE6, 0xDF, 0xFE, 0x43, 0x20, 0x0F, 0xCF, 0x3E, 0x0D, 0xCF, 0x3E, 0x0A, 0xCF, 0x3E, 
  0x59, 0x32, 0x44, 0x20, 0xC3, 0x50, 0x01, 0xFE, 0x57, 0x20, 0xE4, 0xCF, 0x3E, 0x0D, 0xCF, 0x3E, 
  0x0A, 0xCF, 0xC3, 0x53, 0x01, 0x75, 0x42, 0x49, 0x4F, 0x53, 0x20, 0x2D, 0x20, 0x53, 0x32, 0x31, 
  0x30, 0x37, 0x31, 0x38, 0x20, 0x28, 0x41, 0x64, 0x61, 0x70, 0x74, 0x65, 0x64, 0x20, 0x66, 0x72, 
  0x6F, 0x6D, 0x20, 0x5A, 0x38, 0x30, 0x20, 0x53, 0x42, 0x43, 0x20, 0x62, 0x79, 0x20, 0x47, 0x2E, 
  0x20, 0x53, 0x65, 0x61, 0x72, 0x6C, 0x65, 0x29, 0x0D, 0x0A, 0x00, 0x0D, 0x0A, 0x75, 0x42, 0x49, 
  0x4F, 0x53, 0x3A, 0x20, 0x43, 0x6F, 0x6C, 0x64, 0x20, 0x6F, 0x72, 0x20, 0x77, 0x61, 0x72, 0x6D, 
  0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x28, 0x43, 0x2F, 0x57, 0x29, 0x3F, 0x00, 0x00, 0x00, 
  0xC3, 0x56, 0x01, 0xC3, 0xF4, 0x01, 0xDD, 0x21, 0x00, 0x00, 0xC3, 0x61, 0x01, 0x07, 0x0A, 0x7D, 
  0x11, 0x21, 0x45, 0x20, 0xF9, 0xC3, 0x9C, 0x1D, 0x11, 0x2E, 0x04, 0x06, 0x63, 0x21, 0x45, 0x20, 
  0x1A, 0x77, 0x23, 0x13, 0x05, 0xC2, 0x70, 0x01, 0xF9, 0xCD, 0x2F, 0x06, 0xCD, 0xFD, 0x0B, 0x32, 
  0xEF, 0x20, 0x32, 0x3E, 0x21, 0x21, 0x43, 0x02, 0xCD, 0x9B, 0x12, 0xCD, 0x4C, 0x06, 0xCD, 0x55, 
  0x09, 0xB7, 0xC2, 0xAA, 0x01, 0x21, 0xA2, 0x21, 0x23, 0x7C, 0xB5, 0xCA, 0xBC, 0x01, 0x7E, 0x47, 
  0x2F, 0x77, 0xBE, 0x70, 0xCA, 0x98, 0x01, 0xC3, 0xBC, 0x01, 0xCD, 0x21, 0x0A, 0xB7, 0xC2, 0xFD, 
  0x04, 0xEB, 0x2B, 0x3E, 0xD9, 0x46, 0x77, 0xBE, 0x70, 0xC2, 0x85, 0x01, 0x2B, 0x11, 0xA1, 0x21, 
  0xCD, 0xC5, 0x07, 0xDA, 0x85, 0x01, 0x11, 0xCE, 0xFF, 0x22, 0xF4, 0x20, 0x19, 0x22, 0x9F, 0x20, 
  0xCD, 0x0A, 0x06, 0x2A, 0x9F, 0x20, 0x11, 0xEF, 0xFF, 0x19, 0x11, 0x3E, 0x21, 0x7D, 0x93, 0x6F, 
  0x7C, 0x9A, 0x67, 0xE5, 0x21, 0x0C, 0x02, 0xCD, 0x9B, 0x12, 0xE1, 0xCD, 0x3E, 0x19, 0x21, 0xFD, 
  0x01, 0xCD, 0x9B, 0x12, 0x31, 0xAB, 0x20, 0xCD, 0x2F, 0x06, 0xC3, 0x48, 0x05, 0x20, 0x42, 0x79, 
  0x74, 0x65, 0x73, 0x20, 0x66, 0x72, 0x65, 0x65, 0x0D, 0x0A, 0x00, 0x00, 0x5A, 0x38, 0x30, 0x20, 
  0x42, 0x41, 0x53, 0x49, 0x43, 0x20, 0x56, 0x65, 0x72, 0x20, 0x34, 0x2E, 0x37, 0x62, 0x0D, 0x0A, 
  0x43, 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x43, 0x29, 0x20, 0x31, 0x39, 
  0x37, 0x38, 0x20, 0x62, 0x79, 0x20, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x0D, 
  0x0A, 0x00, 0x00, 0x4D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x74, 0x6F, 0x70, 0x00, 0xB3, 0x17, 
  0x77, 0x18, 0xC9, 0x17, 0x48, 0x20, 0x5B, 0x11, 0xE0, 0x14, 0x89, 0x11, 0x3D, 0x1A, 0x1C, 0x1B, 
  0x58, 0x16, 0x8B, 0x1A, 0x91, 0x1B, 0x97, 0x1B, 0xF8, 0x1B, 0x0D, 0x1C, 0x34, 0x15, 0x78, 0x1C, 
  0x96, 0x20, 0x0D, 0x14, 0x25, 0x12, 0xA7, 0x14, 0x1C, 0x14, 0x2D, 0x14, 0x9A, 0x1C, 0x2D, 0x1D, 
  0x3D, 0x14, 0x6D, 0x14, 0x77, 0x14, 0xC5, 0x4E, 0x44, 0xC6, 0x4F, 0x52, 0xCE, 0x45, 0x58, 0x54, 
  0xC4, 0x41, 0x54, 0x41, 0xC9, 0x4E, 0x50, 0x55, 0x54, 0xC4, 0x49, 0x4D, 0xD2, 0x45, 0x41, 0x44, 
  0xCC, 0x45, 0x54, 0xC7, 0x4F, 0x54, 0x4F, 0xD2, 0x55, 0x4E, 0xC9, 0x46, 0xD2, 0x45, 0x53, 0x54, 
  0x4F, 0x52, 0x45, 0xC7, 0x4F, 0x53, 0x55, 0x42, 0xD2, 0x45, 0x54, 0x55, 0x52, 0x4E, 0xD2, 0x45, 
  0x4D, 0xD3, 0x54, 0x4F, 0x50, 0xCF, 0x55, 0x54, 0xCF, 0x4E, 0xCE, 0x55, 0x4C, 0x4C, 0xD7, 0x41, 
  0x49, 0x54, 0xC4, 0x45, 0x46, 0xD0, 0x4F, 0x4B, 0x45, 0xC4, 0x4F, 0x4B, 0x45, 0xD3, 0x43, 0x52, 
  0x45, 0x45, 0x4E, 0xCC, 0x49, 0x4E, 0x45, 0x53, 0xC3, 0x4C, 0x53, 0xD7, 0x49, 0x44, 0x54, 0x48, 
  0xCD, 0x4F, 0x4E, 0x49, 0x54, 0x4F, 0x52, 0xD3, 0x45, 0x54, 0xD2, 0x45, 0x53, 0x45, 0x54, 0xD0, 
  0x52, 0x49, 0x4E, 0x54, 0xC3, 0x4F, 0x4E, 0x54, 0xCC, 0x49, 0x53, 0x54, 0xC3, 0x4C, 0x45, 0x41, 
  0x52, 0xC3, 0x4C, 0x4F, 0x41, 0x44, 0xC3, 0x53, 0x41, 0x56, 0x45, 0xCE, 0x45, 0x57, 0xD4, 0x41, 
  0x42, 0x28, 0xD4, 0x4F, 0xC6, 0x4E, 0xD3, 0x50, 0x43, 0x28, 0xD4, 0x48, 0x45, 0x4E, 0xCE, 0x4F, 
  0x54, 0xD3, 0x54, 0x45, 0x50, 0xAB, 0xAD, 0xAA, 0xAF, 0xDE, 0xC1, 0x4E, 0x44, 0xCF, 0x52, 0xBE, 
  0xBD, 0xBC, 0xD3, 0x47, 0x4E, 0xC9, 0x4E, 0x54, 0xC1, 0x42, 0x53, 0xD5, 0x53, 0x52, 0xC6, 0x52, 
  0x45, 0xC9, 0x4E, 0x50, 0xD0, 0x4F, 0x53, 0xD3, 0x51, 0x52, 0xD2, 0x4E, 0x44, 0xCC, 0x4F, 0x47, 
  0xC5, 0x58, 0x50, 0xC3, 0x4F, 0x53, 0xD3, 0x49, 0x4E, 0xD4, 0x41, 0x4E, 0xC1, 0x54, 0x4E, 0xD0, 
  0x45, 0x45, 0x4B, 0xC4, 0x45, 0x45, 0x4B, 0xD0, 0x4F, 0x49, 0x4E, 0x54, 0xCC, 0x45, 0x4E, 0xD3, 
  0x54, 0x52, 0x24, 0xD6, 0x41, 0x4C, 0xC1, 0x53, 0x43, 0xC3, 0x48, 0x52, 0x24, 0xC8, 0x45, 0x58, 
  0x24, 0xC2, 0x49, 0x4E, 0x24, 0xCC, 0x45, 0x46, 0x54, 0x24, 0xD2, 0x49, 0x47, 0x48, 0x54, 0x24, 
  0xCD, 0x49, 0x44, 0x24, 0x80, 0x9F, 0x09, 0x9C, 0x08, 0x77, 0x0D, 0xEC, 0x0A, 0x7E, 0x0C, 0xB3, 
  0x0F, 0xAD, 0x0C, 0x03, 0x0B, 0xA9, 0x0A, 0x8C, 0x0A, 0x7B, 0x0B, 0x65, 0x09, 0x98, 0x0A, 0xC7, 
  0x0A, 0xEE, 0x0A, 0x9D, 0x09, 0xEC, 0x14, 0x5D, 0x0B, 0xDE, 0x09, 0xF2, 0x14, 0x91, 0x11, 0x3B, 
  0x15, 0x83, 0x1C, 0xEE, 0x0A, 0x69, 0x1C, 0x5C, 0x1C, 0x61, 0x1C, 0x99, 0x1D, 0x99, 0x20, 0x9C, 
  0x20, 0x9F, 0x0B, 0xCB, 0x09, 0x11, 0x08, 0x46, 0x0A, 0xEE, 0x0A, 0xEE, 0x0A, 0x09, 0x06, 0x79, 
  0x25, 0x19, 0x79, 0x59, 0x15, 0x7C, 0x97, 0x16, 0x7C, 0xF8, 0x16, 0x7F, 0x46, 0x1A, 0x50, 0x0C, 
  0x0F, 0x46, 0x0B, 0x0F, 0x4E, 0x46, 0x53, 0x4E, 0x52, 0x47, 0x4F, 0x44, 0x46, 0x43, 0x4F, 0x56, 
  0x4F, 0x4D, 0x55, 0x4C, 0x42, 0x53, 0x44, 0x44, 0x2F, 0x30, 0x49, 0x44, 0x54, 0x4D, 0x4F, 0x53, 
  0x4C, 0x53, 0x53, 0x54, 0x43, 0x4E, 0x55, 0x46, 0x4D, 0x4F, 0x48, 0x58, 0x42, 0x4E, 0xC3, 0xF4, 
  0x01, 0xC3, 0x1C, 0x0A, 0xD3, 0x00, 0xC9, 0xD6, 0x00, 0x6F, 0x7C, 0xDE, 0x00, 0x67, 0x78, 0xDE, 
  0x00, 0x47, 0x3E, 0x00, 0xC9, 0x00, 0x00, 0x00, 0x35, 0x4A, 0xCA, 0x99, 0x39, 0x1C, 0x76, 0x98, 
  0x22, 0x95, 0xB3, 0x98, 0x0A, 0xDD, 0x47, 0x98, 0x53, 0xD1, 0x99, 0x99, 0x0A, 0x1A, 0x9F, 0x98, 
  0x65, 0xBC, 0xCD, 0x98, 0xD6, 0x77, 0x3E, 0x98, 0x52, 0xC7, 0x4F, 0x80, 0xDB, 0x00, 0xC9, 0x01, 
  0xFF, 0x1C, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x42, 0x07, 0xC3, 
  0x00, 0x00, 0xC3, 0x00, 0x00, 0xC3, 0x00, 0x00, 0xA2, 0x21, 0xFE, 0xFF, 0x3F, 0x21, 0x20, 0x45, 
  0x72, 0x72, 0x6F, 0x72, 0x00, 0x20, 0x69, 0x6E, 0x20, 0x00, 0x4F, 0x6B, 0x0D, 0x0A, 0x00, 0x00, 
  0x42, 0x72, 0x65, 0x61, 0x6B, 0x00, 0x21, 0x04, 0x00, 0x39, 0x7E, 0x23, 0xFE, 0x81, 0xC0, 0x4E, 
  0x23, 0x46, 0x23, 0xE5, 0x69, 0x60, 0x7A, 0xB3, 0xEB, 0xCA, 0xC0, 0x04, 0xEB, 0xCD, 0xC5, 0x07, 
  0x01, 0x0D, 0x00, 0xE1, 0xC8, 0x09, 0xC3, 0xAA, 0x04, 0xCD, 0xE3, 0x04, 0xC5, 0xE3, 0xC1, 0xCD, 
  0xC5, 0x07, 0x7E, 0x02, 0xC8, 0x0B, 0x2B, 0xC3, 0xCF, 0x04, 0xE5, 0x2A, 0x1F, 0x21, 0x06, 0x00, 
  0x09, 0x09, 0x3E, 0xE5, 0x3E, 0xD0, 0x95, 0x6F, 0x3E, 0xFF, 0x9C, 0xDA, 0xF2, 0x04, 0x67, 0x39, 
  0xE1, 0xD8, 0x1E, 0x0C, 0xC3, 0x11, 0x05, 0x2A, 0x0E, 0x21, 0x22, 0xA1, 0x20, 0x1E, 0x02, 0x01, 
  0x1E, 0x14, 0x01, 0x1E, 0x00, 0x01, 0x1E, 0x12, 0x01, 0x1E, 0x22, 0x01, 0x1E, 0x0A, 0x01, 0x1E, 
  0x18, 0xCD, 0x2F, 0x06, 0x32, 0x8A, 0x20, 0xCD, 0xF0, 0x0B, 0x21, 0x04, 0x04, 0x57, 0x3E, 0x3F, 
  0xCD, 0xD6, 0x07, 0x19, 0x7E, 0xCD, 0xD6, 0x07, 0xCD, 0x55, 0x09, 0xCD, 0xD6, 0x07, 0x21, 0x8E, 
  0x04, 0xCD, 0x9B, 0x12, 0x2A, 0xA1, 0x20, 0x11, 0xFE, 0xFF, 0xCD, 0xC5, 0x07, 0xCA, 0x61, 0x01, 
  0x7C, 0xA5, 0x3C, 0xC4, 0x36, 0x19, 0x3E, 0xC1, 0xAF, 0x32, 0x8A, 0x20, 0xCD, 0xF0, 0x0B, 0x21, 
  0x9A, 0x04, 0xCD, 0x9B, 0x12, 0x21, 0xFF, 0xFF, 0x22, 0xA1, 0x20, 0xCD, 0x42, 0x07, 0xDA, 0x55, 
  0x05, 0xCD, 0x55, 0x09, 0x3C, 0x3D, 0xCA, 0x55, 0x05, 0xF5, 0xCD, 0x21, 0x0A, 0xD5, 0xCD, 0x59, 
  0x06, 0x47, 0xD1, 0xF1, 0xD2, 0x35, 0x09, 0xD5, 0xC5, 0xAF, 0x32, 0x11, 0x21, 0xCD, 0x55, 0x09, 
  0xB7, 0xF5, 0xCD, 0xE9, 0x05, 0xDA, 0x8E, 0x05, 0xF1, 0xF5, 0xCA, 0xC2, 0x0A, 0xB7, 0xC5, 0xD2, 
  0xA5, 0x05, 0xEB, 0x2A, 0x1B, 0x21, 0x1A, 0x02, 0x03, 0x13, 0xCD, 0xC5, 0x07, 0xC2, 0x96, 0x05, 
  0x60, 0x69, 0x22, 0x1B, 0x21, 0xD1, 0xF1, 0xCA, 0xCC, 0x05, 0x2A, 0x1B, 0x21, 0xE3, 0xC1, 0x09, 
  0xE5, 0xCD, 0xC9, 0x04, 0xE1, 0x22, 0x1B, 0x21, 0xEB, 0x74, 0xD1, 0x23, 0x23, 0x73, 0x23, 0x72, 
  0x23, 0x11, 0xA6, 0x20, 0x1A, 0x77, 0x23, 0x13, 0xB7, 0xC2, 0xC4, 0x05, 0xCD, 0x15, 0x06, 0x23, 
  0xEB, 0x62, 0x6B, 0x7E, 0x23, 0xB6, 0xCA, 0x55, 0x05, 0x23, 0x23, 0x23, 0xAF, 0xBE, 0x23, 0xC2, 
  0xDD, 0x05, 0xEB, 0x73, 0x23, 0x72, 0xC3, 0xD1, 0x05, 0x2A, 0xA3, 0x20, 0x44, 0x4D, 0x7E, 0x23, 
  0xB6, 0x2B, 0xC8, 0x23, 0x23, 0x7E, 0x23, 0x66, 0x6F, 0xCD, 0xC5, 0x07, 0x60, 0x69, 0x7E, 0x23, 
  0x66, 0x6F, 0x3F, 0xC8, 0x3F, 0xD0, 0xC3, 0xEC, 0x05, 0xC0, 0x2A, 0xA3, 0x20, 0xAF, 0x77, 0x23, 
  0x77, 0x23, 0x22, 0x1B, 0x21, 0x2A, 0xA3, 0x20, 0x2B, 0x22, 0x13, 0x21, 0x2A, 0xF4, 0x20, 0x22, 
  0x08, 0x21, 0xAF, 0xCD, 0x65, 0x09, 0x2A, 0x1B, 0x21, 0x22, 0x1D, 0x21, 0x22, 0x1F, 0x21, 0xC1, 
  0x2A, 0x9F, 0x20, 0xF9, 0x21, 0xF8, 0x20, 0x22, 0xF6, 0x20, 0xAF, 0x6F, 0x67, 0x22, 0x19, 0x21, 
  0x32, 0x10, 0x21, 0x22, 0x23, 0x21, 0xE5, 0xC5, 0x2A, 0x13, 0x21, 0xC9, 0x3E, 0x3F, 0xCD, 0xD6, 
  0x07, 0x3E, 0x20, 0xCD, 0xD6, 0x07, 0xC3, 0x93, 0x20, 0xAF, 0x32, 0xF3, 0x20, 0x0E, 0x05, 0x11, 
  0xA6, 0x20, 0x7E, 0xFE, 0x20, 0xCA, 0xE1, 0x06, 0x47, 0xFE, 0x22, 0xCA, 0x01, 0x07, 0xB7, 0xCA, 
  0x08, 0x07, 0x3A, 0xF3, 0x20, 0xB7, 0x7E, 0xC2, 0xE1, 0x06, 0xFE, 0x3F, 0x3E, 0x9E, 0xCA, 0xE1, 
  0x06, 0x7E, 0xFE, 0x30, 0xDA, 0x8C, 0x06, 0xFE, 0x3C, 0xDA, 0xE1, 0x06, 0xD5, 0x11, 0x85, 0x02, 
  0xC5, 0x01, 0xDD, 0x06, 0xC5, 0x06, 0x7F, 0x7E, 0xFE, 0x61, 0xDA, 0xA5, 0x06, 0xFE, 0x7B, 0xD2, 
  0xA5, 0x06, 0xE6, 0x5F, 0x77, 0x4E, 0xEB, 0x23, 0xB6, 0xF2, 0xA7, 0x06, 0x04, 0x7E, 0xE6, 0x7F, 
  0xC8, 0xB9, 0xC2, 0xA7, 0x06, 0xEB, 0xE5, 0x13, 0x1A, 0xB7, 0xFA, 0xD9, 0x06, 0x4F, 0x78, 0xFE, 
  0x88, 0xC2, 0xC8, 0x06, 0xCD, 0x55, 0x09, 0x2B, 0x23, 0x7E, 0xFE, 0x61, 0xDA, 0xD1, 0x06, 0xE6, 
  0x5F, 0xB9, 0xCA, 0xB7, 0x06, 0xE1, 0xC3, 0xA5, 0x06, 0x48, 0xF1, 0xEB, 0xC9, 0xEB, 0x79, 0xC1, 
  0xD1, 0x23, 0x12, 0x13, 0x0C, 0xD6, 0x3A, 0xCA, 0xEF, 0x06, 0xFE, 0x49, 0xC2, 0xF2, 0x06, 0x32, 
  0xF3, 0x20, 0xD6, 0x54, 0xC2, 0x62, 0x06, 0x47, 0x7E, 0xB7, 0xCA, 0x08, 0x07, 0xB8, 0xCA, 0xE1, 
  0x06, 0x23, 0x12, 0x0C, 0x13, 0xC3, 0xF8, 0x06, 0x21, 0xA5, 0x20, 0x12, 0x13, 0x12, 0x13, 0x12, 
  0xC9, 0x3A, 0x89, 0x20, 0xB7, 0x3E, 0x00, 0x32, 0x89, 0x20, 0xC2, 0x25, 0x07, 0x05, 0xCA, 0x42, 
  0x07, 0xCD, 0xD6, 0x07, 0x3E, 0x05, 0x2B, 0xCA, 0x39, 0x07, 0x7E, 0xCD, 0xD6, 0x07, 0xC3, 0x4B, 
  0x07, 0x05, 0x2B, 0xCD, 0xD6, 0x07, 0xC2, 0x4B, 0x07, 0xCD, 0xD6, 0x07, 0xCD, 0xFD, 0x0B, 0xC3, 
  0x42, 0x07, 0x21, 0xA6, 0x20, 0x06, 0x01, 0xAF, 0x32, 0x89, 0x20, 0xCD, 0x00, 0x08, 0x4F, 0xFE, 
  0x7F, 0xCA, 0x11, 0x07, 0x3A, 0x89, 0x20, 0xB7, 0xCA, 0x64, 0x07, 0x3E, 0x00, 0xCD, 0xD6, 0x07, 
  0xAF, 0x32, 0x89, 0x20, 0x79, 0xFE, 0x07, 0xCA, 0xA8, 0x07, 0xFE, 0x03, 0xCC, 0xFD, 0x0B, 0x37, 
  0xC8, 0xFE, 0x0D, 0xCA, 0xF8, 0x0B, 0xFE, 0x15, 0xCA, 0x3C, 0x07, 0xFE, 0x40, 0xCA, 0x39, 0x07, 
  0xFE, 0x5F, 0xCA, 0x31, 0x07, 0xFE, 0x08, 0xCA, 0x31, 0x07, 0xFE, 0x12, 0xC2, 0xA3, 0x07, 0xC5, 
  0xD5, 0xE5, 0x36, 0x00, 0xCD, 0xAD, 0x1D, 0x21, 0xA6, 0x20, 0xCD, 0x9B, 0x12, 0xE1, 0xD1, 0xC1, 
  0xC3, 0x4B, 0x07, 0xFE, 0x20, 0xDA, 0x4B, 0x07, 0x78, 0xFE, 0x49, 0x3E, 0x07, 0xD2, 0xBD, 0x07, 
  0x79, 0x71, 0x32, 0x11, 0x21, 0x23, 0x04, 0xCD, 0xD6, 0x07, 0xC3, 0x4B, 0x07, 0xCD, 0xD6, 0x07, 
  0x3E, 0x08, 0xC3, 0xB7, 0x07, 0x7C, 0x92, 0xC0, 0x7D, 0x93, 0xC9, 0x7E, 0xE3, 0xBE, 0x23, 0xE3, 
  0xCA, 0x55, 0x09, 0xC3, 0xFD, 0x04, 0xF5, 0x3A, 0x8A, 0x20, 0xB7, 0xC2, 0xD0, 0x12, 0xF1, 0xC5, 
  0xF5, 0xFE, 0x20, 0xDA, 0xFA, 0x07, 0x3A, 0x87, 0x20, 0x47, 0x3A, 0xF0, 0x20, 0x04, 0xCA, 0xF6, 
  0x07, 0x05, 0xB8, 0xCC, 0xFD, 0x0B, 0x3C, 0x32, 0xF0, 0x20, 0xF1, 0xC1, 0xCD, 0x96, 0x1D, 0xC9, 
  0xCD, 0x5A, 0x1C, 0xE6, 0x7F, 0xFE, 0x0F, 0xC0, 0x3A, 0x8A, 0x20, 0x2F, 0x32, 0x8A, 0x20, 0xAF, 
  0xC9, 0xCD, 0x21, 0x0A, 0xC0, 0xC1, 0xCD, 0xE9, 0x05, 0xC5, 0xCD, 0x67, 0x08, 0xE1, 0x4E, 0x23, 
  0x46, 0x23, 0x78, 0xB1, 0xCA, 0x48, 0x05, 0xCD, 0x70, 0x08, 0xCD, 0x80, 0x09, 0xC5, 0xCD, 0xFD, 
  0x0B, 0x5E, 0x23, 0x56, 0x23, 0xE5, 0xEB, 0xCD, 0x3E, 0x19, 0x3E, 0x20, 0xE1, 0xCD, 0xD6, 0x07, 
  0x7E, 0xB7, 0x23, 0xCA, 0x1D, 0x08, 0xF2, 0x3D, 0x08, 0xD6, 0x7F, 0x4F, 0x11, 0x86, 0x02, 0x1A, 
  0x13, 0xB7, 0xF2, 0x4F, 0x08, 0x0D, 0xC2, 0x4F, 0x08, 0xE6, 0x7F, 0xCD, 0xD6, 0x07, 0x1A, 0x13, 
  0xB7, 0xF2, 0x59, 0x08, 0xC3, 0x40, 0x08, 0xE5, 0x2A, 0x8D, 0x20, 0x22, 0x8B, 0x20, 0xE1, 0xC9, 
  0xE5, 0xD5, 0x2A, 0x8B, 0x20, 0x11, 0xFF, 0xFF, 0xED, 0x5A, 0x22, 0x8B, 0x20, 0xD1, 0xE1, 0xF0, 
  0xE5, 0x2A, 0x8D, 0x20, 0x22, 0x8B, 0x20, 0xCD, 0x5A, 0x1C, 0xFE, 0x03, 0xCA, 0x93, 0x08, 0xE1, 
  0xC3, 0x70, 0x08, 0x2A, 0x8D, 0x20, 0x22, 0x8B, 0x20, 0xC3, 0xF7, 0x01, 0x3E, 0x64, 0x32, 0x10, 
  0x21, 0xCD, 0x03, 0x0B, 0xC1, 0xE5, 0xCD, 0xEC, 0x0A, 0x22, 0x0C, 0x21, 0x21, 0x02, 0x00, 0x39, 
  0xCD, 0xAA, 0x04, 0xD1, 0xC2, 0xCC, 0x08, 0x09, 0xD5, 0x2B, 0x56, 0x2B, 0x5E, 0x23, 0x23, 0xE5, 
  0x2A, 0x0C, 0x21, 0xCD, 0xC5, 0x07, 0xE1, 0xC2, 0xB0, 0x08, 0xD1, 0xF9, 0xEB, 0x0E, 0x08, 0xCD, 
  0xDA, 0x04, 0xE5, 0x2A, 0x0C, 0x21, 0xE3, 0xE5, 0x2A, 0xA1, 0x20, 0xE3, 0xCD, 0xC5, 0x0D, 0xCD, 
  0xCB, 0x07, 0xA6, 0xCD, 0xC2, 0x0D, 0xE5, 0xCD, 0xF0, 0x17, 0xE1, 0xC5, 0xD5, 0x01, 0x00, 0x81, 
  0x51, 0x5A, 0x7E, 0xFE, 0xAB, 0x3E, 0x01, 0xC2, 0x08, 0x09, 0xCD, 0x55, 0x09, 0xCD, 0xC2, 0x0D, 
  0xE5, 0xCD, 0xF0, 0x17, 0xCD, 0xA4, 0x17, 0xE1, 0xC5, 0xD5, 0xF5, 0x33, 0xE5, 0x2A, 0x13, 0x21, 
  0xE3, 0x06, 0x81, 0xC5, 0x33, 0xCD, 0x80, 0x09, 0x22, 0x13, 0x21, 0x7E, 0xFE, 0x3A, 0xCA, 0x35, 
  0x09, 0xB7, 0xC2, 0xFD, 0x04, 0x23, 0x7E, 0x23, 0xB6, 0xCA, 0xA7, 0x09, 0x23, 0x5E, 0x23, 0x56, 
  0xEB, 0x22, 0xA1, 0x20, 0xEB, 0xCD, 0x55, 0x09, 0x11, 0x15, 0x09, 0xD5, 0xC8, 0xD6, 0x80, 0xDA, 
  0x03, 0x0B, 0xFE, 0x25, 0xD2, 0xFD, 0x04, 0x07, 0x4F, 0x06, 0x00, 0xEB, 0x21, 0xA5, 0x03, 0x09, 
  0x4E, 0x23, 0x46, 0xC5, 0xEB, 0x23, 0x7E, 0xFE, 0x3A, 0xD0, 0xFE, 0x20, 0xCA, 0x55, 0x09, 0xFE, 
  0x30, 0x3F, 0x3C, 0x3D, 0xC9, 0xEB, 0x2A, 0xA3, 0x20, 0xCA, 0x7A, 0x09, 0xEB, 0xCD, 0x21, 0x0A, 
  0xE5, 0xCD, 0xE9, 0x05, 0x60, 0x69, 0xD1, 0xD2, 0xC2, 0x0A, 0x2B, 0x22, 0x21, 0x21, 0xEB, 0xC9, 
  0xDF, 0xC8, 0xD7, 0xFE, 0x1B, 0x28, 0x11, 0xFE, 0x03, 0x28, 0x0D, 0xFE, 0x13, 0xC0, 0xD7, 0xFE, 
  0x11, 0xC8, 0xFE, 0x03, 0x28, 0x07, 0x18, 0xF6, 0x3E, 0xFF, 0x32, 0x92, 0x20, 0xC0, 0xF6, 0xC0, 
  0x22, 0x13, 0x21, 0x21, 0xF6, 0xFF, 0xC1, 0x2A, 0xA1, 0x20, 0xF5, 0x7D, 0xA4, 0x3C, 0xCA, 0xBA, 
  0x09, 0x22, 0x17, 0x21, 0x2A, 0x13, 0x21, 0x22, 0x19, 0x21, 0xAF, 0x32, 0x8A, 0x20, 0xCD, 0xF0, 
  0x0B, 0xF1, 0x21, 0xA0, 0x04, 0xC2, 0x31, 0x05, 0xC3, 0x48, 0x05, 0x2A, 0x19, 0x21, 0x7C, 0xB5, 
  0x1E, 0x20, 0xCA, 0x11, 0x05, 0xEB, 0x2A, 0x17, 0x21, 0x22, 0xA1, 0x20, 0xEB, 0xC9, 0xCD, 0x23, 
  0x15, 0xC0, 0x32, 0x86, 0x20, 0xC9, 0xE5, 0x2A, 0x8F, 0x20, 0x06, 0x00, 0x4F, 0x09, 0x22, 0x8F, 
  0x20, 0xE1, 0xC9, 0x7E, 0xFE, 0x41, 0xD8, 0xFE, 0x5B, 0x3F, 0xC9, 0xCD, 0x55, 0x09, 0xCD, 0xC2, 
  0x0D, 0xCD, 0xA4, 0x17, 0xFA, 0x1C, 0x0A, 0x3A, 0x2C, 0x21, 0xFE, 0x90, 0xDA, 0x4C, 0x18, 0x01, 
  0x80, 0x90, 0x11, 0x00, 0x00, 0xE5, 0xCD, 0x1F, 0x18, 0xE1, 0x51, 0xC8, 0x1E, 0x08, 0xC3, 0x11, 
  0x05, 0x2B, 0x11, 0x00, 0x00, 0xCD, 0x55, 0x09, 0xD0, 0xE5, 0xF5, 0x21, 0x98, 0x19, 0xCD, 0xC5, 
  0x07, 0xDA, 0xFD, 0x04, 0x62, 0x6B, 0x19, 0x29, 0x19, 0x29, 0xF1, 0xD6, 0x30, 0x5F, 0x16, 0x00, 
  0x19, 0xEB, 0xE1, 0xC3, 0x25, 0x0A, 0xCA, 0x19, 0x06, 0xCD, 0xFE, 0x09, 0x2B, 0xCD, 0x55, 0x09, 
  0xE5, 0x2A, 0xF4, 0x20, 0xCA, 0x69, 0x0A, 0xE1, 0xCD, 0xCB, 0x07, 0x2C, 0xD5, 0xCD, 0xFE, 0x09, 
  0x2B, 0xCD, 0x55, 0x09, 0xC2, 0xFD, 0x04, 0xE3, 0xEB, 0x7D, 0x93, 0x5F, 0x7C, 0x9A, 0x57, 0xDA, 
  0xF2, 0x04, 0xE5, 0x2A, 0x1B, 0x21, 0x01, 0x28, 0x00, 0x09, 0xCD, 0xC5, 0x07, 0xD2, 0xF2, 0x04, 
  0xEB, 0x22, 0x9F, 0x20, 0xE1, 0x22, 0xF4, 0x20, 0xE1, 0xC3, 0x19, 0x06, 0xCA, 0x15, 0x06, 0xCD, 
  0x19, 0x06, 0x01, 0x15, 0x09, 0xC3, 0xA8, 0x0A, 0x0E, 0x03, 0xCD, 0xDA, 0x04, 0xC1, 0xE5, 0xE5, 
  0x2A, 0xA1, 0x20, 0xE3, 0x3E, 0x8C, 0xF5, 0x33, 0xC5, 0xCD, 0x21, 0x0A, 0xCD, 0xEE, 0x0A, 0xE5, 
  0x2A, 0xA1, 0x20, 0xCD, 0xC5, 0x07, 0xE1, 0x23, 0xDC, 0xEC, 0x05, 0xD4, 0xE9, 0x05, 0x60, 0x69, 
  0x2B, 0xD8, 0x1E, 0x0E, 0xC3, 0x11, 0x05, 0xC0, 0x16, 0xFF, 0xCD, 0xA6, 0x04, 0xF9, 0xFE, 0x8C, 
  0x1E, 0x04, 0xC2, 0x11, 0x05, 0xE1, 0x22, 0xA1, 0x20, 0x23, 0x7C, 0xB5, 0xC2, 0xE6, 0x0A, 0x3A, 
  0x11, 0x21, 0xB7, 0xC2, 0x47, 0x05, 0x21, 0x15, 0x09, 0xE3, 0x3E, 0xE1, 0x01, 0x3A, 0x0E, 0x00, 
  0x06, 0x00, 0x79, 0x48, 0x47, 0x7E, 0xB7, 0xC8, 0xB8, 0xC8, 0x23, 0xFE, 0x22, 0xCA, 0xF2, 0x0A, 
  0xC3, 0xF5, 0x0A, 0xCD, 0xB8, 0x0F, 0xCD, 0xCB, 0x07, 0xB4, 0xD5, 0x3A, 0xF2, 0x20, 0xF5, 0xCD, 
  0xD4, 0x0D, 0xF1, 0xE3, 0x22, 0x13, 0x21, 0x1F, 0xCD, 0xC7, 0x0D, 0xCA, 0x56, 0x0B, 0xE5, 0x2A, 
  0x29, 0x21, 0xE5, 0x23, 0x23, 0x5E, 0x23, 0x56, 0x2A, 0xA3, 0x20, 0xCD, 0xC5, 0x07, 0xD2, 0x45, 
  0x0B, 0x2A, 0x9F, 0x20, 0xCD, 0xC5, 0x07, 0xD1, 0xD2, 0x4D, 0x0B, 0x21, 0x04, 0x21, 0xCD, 0xC5, 
  0x07, 0xD2, 0x4D, 0x0B, 0x3E, 0xD1, 0xCD, 0xFC, 0x13, 0xEB, 0xCD, 0x35, 0x12, 0xCD, 0xFC, 0x13, 
  0xE1, 0xCD, 0xFF, 0x17, 0xE1, 0xC9, 0xE5, 0xCD, 0xFC, 0x17, 0xD1, 0xE1, 0xC9, 0xCD, 0x23, 0x15, 
  0x7E, 0x47, 0xFE, 0x8C, 0xCA, 0x6C, 0x0B, 0xCD, 0xCB, 0x07, 0x88, 0x2B, 0x4B, 0x0D, 0x78, 0xCA, 
  0x3D, 0x09, 0xCD, 0x22, 0x0A, 0xFE, 0x2C, 0xC0, 0xC3, 0x6D, 0x0B, 0xCD, 0xD4, 0x0D, 0x7E, 0xFE, 
  0x88, 0xCA, 0x89, 0x0B, 0xCD, 0xCB, 0x07, 0xA9, 0x2B, 0xCD, 0xC5, 0x0D, 0xCD, 0xA4, 0x17, 0xCA, 
  0xEE, 0x0A, 0xCD, 0x55, 0x09, 0xDA, 0xA9, 0x0A, 0xC3, 0x3C, 0x09, 0x2B, 0xCD, 0x55, 0x09, 0xCA, 
  0xFD, 0x0B, 0xC8, 0xFE, 0xA5, 0xCA, 0x30, 0x0C, 0xFE, 0xA8, 0xCA, 0x30, 0x0C, 0xE5, 0xFE, 0x2C, 
  0xCA, 0x19, 0x0C, 0xFE, 0x3B, 0xCA, 0x53, 0x0C, 0xC1, 0xCD, 0xD4, 0x0D, 0xE5, 0x3A, 0xF2, 0x20, 
  0xB7, 0xC2, 0xE9, 0x0B, 0xCD, 0x49, 0x19, 0xCD, 0x59, 0x12, 0x36, 0x20, 0x2A, 0x29, 0x21, 0x34, 
  0x2A, 0x29, 0x21, 0x3A, 0x87, 0x20, 0x47, 0x04, 0xCA, 0xE5, 0x0B, 0x04, 0x3A, 0xF0, 0x20, 0x86, 
  0x3D, 0xB8, 0xD4, 0xFD, 0x0B, 0xCD, 0x9E, 0x12, 0xAF, 0xC4, 0x9E, 0x12, 0xE1, 0xC3, 0x9B, 0x0B, 
  0x3A, 0xF0, 0x20, 0xB7, 0xC8, 0xC3, 0xFD, 0x0B, 0x36, 0x00, 0x21, 0xA5, 0x20, 0x3E, 0x0D, 0xCD, 
  0xD6, 0x07, 0x3E, 0x0A, 0xCD, 0xD6, 0x07, 0xAF, 0x32, 0xF0, 0x20, 0x3A, 0x86, 0x20, 0x3D, 0xC8, 
  0xF5, 0xAF, 0xCD, 0xD6, 0x07, 0xF1, 0xC3, 0x0E, 0x0C, 0x3A, 0x88, 0x20, 0x47, 0x3A, 0xF0, 0x20, 
  0xB8, 0xD4, 0xFD, 0x0B, 0xD2, 0x53, 0x0C, 0xD6, 0x0E, 0xD2, 0x27, 0x0C, 0x2F, 0xC3, 0x48, 0x0C, 
  0xF5, 0xCD, 0x20, 0x15, 0xCD, 0xCB, 0x07, 0x29, 0x2B, 0xF1, 0xD6, 0xA8, 0xE5, 0xCA, 0x43, 0x0C, 
  0x3A, 0xF0, 0x20, 0x2F, 0x83, 0xD2, 0x53, 0x0C, 0x3C, 0x47, 0x3E, 0x20, 0xCD, 0xD6, 0x07, 0x05, 
  0xC2, 0x4C, 0x0C, 0xE1, 0xCD, 0x55, 0x09, 0xC3, 0xA2, 0x0B, 0x3F, 0x52, 0x65, 0x64, 0x6F, 0x20, 
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x0D, 0x0A, 0x00, 0x3A, 0x12, 0x21, 
  0xB7, 0xC2, 0xF7, 0x04, 0xC1, 0x21, 0x5A, 0x0C, 0xCD, 0x9B, 0x12, 0xC3, 0x48, 0x06, 0xCD, 0x06, 
  0x12, 0x7E, 0xFE, 0x22, 0x3E, 0x00, 0x32, 0x8A, 0x20, 0xC2, 0x98, 0x0C, 0xCD, 0x5A, 0x12, 0xCD, 
  0xCB, 0x07, 0x3B, 0xE5, 0xCD, 0x9E, 0x12, 0x3E, 0xE5, 0xCD, 0x4C, 0x06, 0xC1, 0xDA, 0xA4, 0x09, 
  0x23, 0x7E, 0xB7, 0x2B, 0xC5, 0xCA, 0xEB, 0x0A, 0x36, 0x2C, 0xC3, 0xB2, 0x0C, 0xE5, 0x2A, 0x21, 
  0x21, 0xF6, 0xAF, 0x32, 0x12, 0x21, 0xE3, 0xC3, 0xBE, 0x0C, 0xCD, 0xCB, 0x07, 0x2C, 0xCD, 0xB8, 
  0x0F, 0xE3, 0xD5, 0x7E, 0xFE, 0x2C, 0xCA, 0xE6, 0x0C, 0x3A, 0x12, 0x21, 0xB7, 0xC2, 0x53, 0x0D, 
  0x3E, 0x3F, 0xCD, 0xD6, 0x07, 0xCD, 0x4C, 0x06, 0xD1, 0xC1, 0xDA, 0xA4, 0x09, 0x23, 0x7E, 0xB7, 
  0x2B, 0xC5, 0xCA, 0xEB, 0x0A, 0xD5, 0x3A, 0xF2, 0x20, 0xB7, 0xCA, 0x10, 0x0D, 0xCD, 0x55, 0x09, 
  0x57, 0x47, 0xFE, 0x22, 0xCA, 0x04, 0x0D, 0x3A, 0x12, 0x21, 0xB7, 0x57, 0xCA, 0x01, 0x0D, 0x16, 
  0x3A, 0x06, 0x2C, 0x2B, 0xCD, 0x5D, 0x12, 0xEB, 0x21, 0x1B, 0x0D, 0xE3, 0xD5, 0xC3, 0x1E, 0x0B, 
  0xCD, 0x55, 0x09, 0xCD, 0xAB, 0x18, 0xE3, 0xCD, 0xFC, 0x17, 0xE1, 0x2B, 0xCD, 0x55, 0x09, 0xCA, 
  0x27, 0x0D, 0xFE, 0x2C, 0xC2, 0x6D, 0x0C, 0xE3, 0x2B, 0xCD, 0x55, 0x09, 0xC2, 0xBA, 0x0C, 0xD1, 
  0x3A, 0x12, 0x21, 0xB7, 0xEB, 0xC2, 0x7B, 0x09, 0xD5, 0xB6, 0x21, 0x42, 0x0D, 0xC4, 0x9B, 0x12, 
  0xE1, 0xC9, 0x3F, 0x45, 0x78, 0x74, 0x72, 0x61, 0x20, 0x69, 0x67, 0x6E, 0x6F, 0x72, 0x65, 0x64, 
  0x0D, 0x0A, 0x00, 0xCD, 0xEC, 0x0A, 0xB7, 0xC2, 0x6C, 0x0D, 0x23, 0x7E, 0x23, 0xB6, 0x1E, 0x06, 
  0xCA, 0x11, 0x05, 0x23, 0x5E, 0x23, 0x56, 0xEB, 0x22, 0x0E, 0x21, 0xEB, 0xCD, 0x55, 0x09, 0xFE, 
  0x83, 0xC2, 0x53, 0x0D, 0xC3, 0xE6, 0x0C, 0x11, 0x00, 0x00, 0xC4, 0xB8, 0x0F, 0x22, 0x13, 0x21, 
  0xCD, 0xA6, 0x04, 0xC2, 0x03, 0x05, 0xF9, 0xD5, 0x7E, 0x23, 0xF5, 0xD5, 0xCD, 0xE2, 0x17, 0xE3, 
  0xE5, 0xCD, 0x4F, 0x15, 0xE1, 0xCD, 0xFC, 0x17, 0xE1, 0xCD, 0xF3, 0x17, 0xE5, 0xCD, 0x1F, 0x18, 
  0xE1, 0xC1, 0x90, 0xCD, 0xF3, 0x17, 0xCA, 0xB2, 0x0D, 0xEB, 0x22, 0xA1, 0x20, 0x69, 0x60, 0xC3, 
  0x11, 0x09, 0xF9, 0x2A, 0x13, 0x21, 0x7E, 0xFE, 0x2C, 0xC2, 0x15, 0x09, 0xCD, 0x55, 0x09, 0xCD, 
  0x7A, 0x0D, 0xCD, 0xD4, 0x0D, 0xF6, 0x37, 0x3A, 0xF2, 0x20, 0x8F, 0xB7, 0xE8, 0xC3, 0x0F, 0x05, 
  0xCD, 0xCB, 0x07, 0x28, 0x2B, 0x16, 0x00, 0xD5, 0x0E, 0x01, 0xCD, 0xDA, 0x04, 0xCD, 0x4B, 0x0E, 
  0x22, 0x15, 0x21, 0x2A, 0x15, 0x21, 0xC1, 0x78, 0xFE, 0x78, 0xD4, 0xC5, 0x0D, 0x7E, 0x16, 0x00, 
  0xD6, 0xB3, 0xDA, 0x0C, 0x0E, 0xFE, 0x03, 0xD2, 0x0C, 0x0E, 0xFE, 0x01, 0x17, 0xAA, 0xBA, 0x57, 
  0xDA, 0xFD, 0x04, 0x22, 0x0A, 0x21, 0xCD, 0x55, 0x09, 0xC3, 0xF0, 0x0D, 0x7A, 0xB7, 0xC2, 0x33, 
  0x0F, 0x7E, 0x22, 0x0A, 0x21, 0xD6, 0xAC, 0xD8, 0xFE, 0x07, 0xD0, 0x5F, 0x3A, 0xF2, 0x20, 0x3D, 
  0xB3, 0x7B, 0xCA, 0x91, 0x13, 0x07, 0x83, 0x5F, 0x21, 0xEF, 0x03, 0x19, 0x78, 0x56, 0xBA, 0xD0, 
  0x23, 0xCD, 0xC5, 0x0D, 0xC5, 0x01, 0xE3, 0x0D, 0xC5, 0x43, 0x4A, 0xCD, 0xD5, 0x17, 0x58, 0x51, 
  0x4E, 0x23, 0x46, 0x23, 0xC5, 0x2A, 0x0A, 0x21, 0xC3, 0xD7, 0x0D, 0xAF, 0x32, 0xF2, 0x20, 0xCD, 
  0x55, 0x09, 0x1E, 0x24, 0xCA, 0x11, 0x05, 0xDA, 0xAB, 0x18, 0xCD, 0xF3, 0x09, 0xD2, 0xB2, 0x0E, 
  0xFE, 0x26, 0x20, 0x12, 0xCD, 0x55, 0x09, 0xFE, 0x48, 0xCA, 0xEF, 0x1C, 0xFE, 0x42, 0xCA, 0x5F, 
  0x1D, 0x1E, 0x02, 0xCA, 0x11, 0x05, 0xFE, 0xAC, 0xCA, 0x4B, 0x0E, 0xFE, 0x2E, 0xCA, 0xAB, 0x18, 
  0xFE, 0xAD, 0xCA, 0xA1, 0x0E, 0xFE, 0x22, 0xCA, 0x5A, 0x12, 0xFE, 0xAA, 0xCA, 0x93, 0x0F, 0xFE, 
  0xA7, 0xCA, 0xBE, 0x11, 0xD6, 0xB6, 0xD2, 0xC3, 0x0E, 0xCD, 0xD0, 0x0D, 0xCD, 0xCB, 0x07, 0x29, 
  0xC9, 0x16, 0x7D, 0xCD, 0xD7, 0x0D, 0x2A, 0x15, 0x21, 0xE5, 0xCD, 0xCD, 0x17, 0xCD, 0xC5, 0x0D, 
  0xE1, 0xC9, 0xCD, 0xB8, 0x0F, 0xE5, 0xEB, 0x22, 0x29, 0x21, 0x3A, 0xF2, 0x20, 0xB7, 0xCC, 0xE2, 
  0x17, 0xE1, 0xC9, 0x06, 0x00, 0x07, 0x4F, 0xC5, 0xCD, 0x55, 0x09, 0x79, 0xFE, 0x31, 0xDA, 0xEA, 
  0x0E, 0xCD, 0xD0, 0x0D, 0xCD, 0xCB, 0x07, 0x2C, 0xCD, 0xC6, 0x0D, 0xEB, 0x2A, 0x29, 0x21, 0xE3, 
  0xE5, 0xEB, 0xCD, 0x23, 0x15, 0xEB, 0xE3, 0xC3, 0xF2, 0x0E, 0xCD, 0x99, 0x0E, 0xE3, 0x11, 0xAD, 
  0x0E, 0xD5, 0x01, 0x4E, 0x02, 0x09, 0x4E, 0x23, 0x66, 0x69, 0xE9, 0x15, 0xFE, 0xAD, 0xC8, 0xFE, 
  0x2D, 0xC8, 0x14, 0xFE, 0x2B, 0xC8, 0xFE, 0xAC, 0xC8, 0x2B, 0xC9, 0xF6, 0xAF, 0xF5, 0xCD, 0xC5, 
  0x0D, 0xCD, 0x07, 0x0A, 0xF1, 0xEB, 0xC1, 0xE3, 0xEB, 0xCD, 0xE5, 0x17, 0xF5, 0xCD, 0x07, 0x0A, 
  0xF1, 0xC1, 0x79, 0x21, 0x7C, 0x11, 0xC2, 0x2E, 0x0F, 0xA3, 0x4F, 0x78, 0xA2, 0xE9, 0xB3, 0x4F, 
  0x78, 0xB2, 0xE9, 0x21, 0x45, 0x0F, 0x3A, 0xF2, 0x20, 0x1F, 0x7A, 0x17, 0x5F, 0x16, 0x64, 0x78, 
  0xBA, 0xD0, 0xC3, 0x34, 0x0E, 0x47, 0x0F, 0x79, 0xB7, 0x1F, 0xC1, 0xD1, 0xF5, 0xCD, 0xC7, 0x0D, 
  0x21, 0x89, 0x0F, 0xE5, 0xCA, 0x1F, 0x18, 0xAF, 0x32, 0xF2, 0x20, 0xD5, 0xCD, 0xDE, 0x13, 0x7E, 
  0x23, 0x23, 0x4E, 0x23, 0x46, 0xD1, 0xC5, 0xF5, 0xCD, 0xE2, 0x13, 0xCD, 0xF3, 0x17, 0xF1, 0x57, 
  0xE1, 0x7B, 0xB2, 0xC8, 0x7A, 0xD6, 0x01, 0xD8, 0xAF, 0xBB, 0x3C, 0xD0, 0x15, 0x1D, 0x0A, 0xBE, 
  0x23, 0x03, 0xCA, 0x71, 0x0F, 0x3F, 0xC3, 0xAF, 0x17, 0x3C, 0x8F, 0xC1, 0xA0, 0xC6, 0xFF, 0x9F, 
  0xC3, 0xB6, 0x17, 0x16, 0x5A, 0xCD, 0xD7, 0x0D, 0xCD, 0xC5, 0x0D, 0xCD, 0x07, 0x0A, 0x7B, 0x2F, 
  0x4F, 0x7A, 0x2F, 0xCD, 0x7C, 0x11, 0xC1, 0xC3, 0xE3, 0x0D, 0x2B, 0xCD, 0x55, 0x09, 0xC8, 0xCD, 
  0xCB, 0x07, 0x2C, 0x01, 0xAA, 0x0F, 0xC5, 0xF6, 0xAF, 0x32, 0xF1, 0x20, 0x46, 0xCD, 0xF3, 0x09, 
  0xDA, 0xFD, 0x04, 0xAF, 0x4F, 0x32, 0xF2, 0x20, 0xCD, 0x55, 0x09, 0xDA, 0xD4, 0x0F, 0xCD, 0xF3, 
  0x09, 0xDA, 0xE1, 0x0F, 0x4F, 0xCD, 0x55, 0x09, 0xDA, 0xD5, 0x0F, 0xCD, 0xF3, 0x09, 0xD2, 0xD5, 
  0x0F, 0xD6, 0x24, 0xC2, 0xF0, 0x0F, 0x3C, 0x32, 0xF2, 0x20, 0x0F, 0x81, 0x4F, 0xCD, 0x55, 0x09, 
  0x3A, 0x10, 0x21, 0x3D, 0xCA, 0x9D, 0x10, 0xF2, 0x00, 0x10, 0x7E, 0xD6, 0x28, 0xCA, 0x75, 0x10, 
  0xAF, 0x32, 0x10, 0x21, 0xE5, 0x50, 0x59, 0x2A, 0x23, 0x21, 0xCD, 0xC5, 0x07, 0x11, 0x25, 0x21, 
  0xCA, 0xE5, 0x16, 0x2A, 0x1D, 0x21, 0xEB, 0x2A, 0x1B, 0x21, 0xCD, 0xC5, 0x07, 0xCA, 0x33, 0x10, 
  0x79, 0x96, 0x23, 0xC2, 0x28, 0x10, 0x78, 0x96, 0x23, 0xCA, 0x67, 0x10, 0x23, 0x23, 0x23, 0x23, 
  0xC3, 0x1A, 0x10, 0xE1, 0xE3, 0xD5, 0x11, 0xB5, 0x0E, 0xCD, 0xC5, 0x07, 0xD1, 0xCA, 0x6A, 0x10, 
  0xE3, 0xE5, 0xC5, 0x01, 0x06, 0x00, 0x2A, 0x1F, 0x21, 0xE5, 0x09, 0xC1, 0xE5, 0xCD, 0xC9, 0x04, 
  0xE1, 0x22, 0x1F, 0x21, 0x60, 0x69, 0x22, 0x1D, 0x21, 0x2B, 0x36, 0x00, 0xCD, 0xC5, 0x07, 0xC2, 
  0x59, 0x10, 0xD1, 0x73, 0x23, 0x72, 0x23, 0xEB, 0xE1, 0xC9, 0x32, 0x2C, 0x21, 0x21, 0x99, 0x04, 
  0x22, 0x29, 0x21, 0xE1, 0xC9, 0xE5, 0x2A, 0xF1, 0x20, 0xE3, 0x57, 0xD5, 0xC5, 0xCD, 0xFB, 0x09, 
  0xC1, 0xF1, 0xEB, 0xE3, 0xE5, 0xEB, 0x3C, 0x57, 0x7E, 0xFE, 0x2C, 0xCA, 0x7B, 0x10, 0xCD, 0xCB, 
  0x07, 0x29, 0x22, 0x15, 0x21, 0xE1, 0x22, 0xF1, 0x20, 0x1E, 0x00, 0xD5, 0x11, 0xE5, 0xF5, 0x2A, 
  0x1D, 0x21, 0x3E, 0x19, 0xEB, 0x2A, 0x1F, 0x21, 0xEB, 0xCD, 0xC5, 0x07, 0xCA, 0xD5, 0x10, 0x7E, 
  0xB9, 0x23, 0xC2, 0xB7, 0x10, 0x7E, 0xB8, 0x23, 0x5E, 0x23, 0x56, 0x23, 0xC2, 0xA3, 0x10, 0x3A, 
  0xF1, 0x20, 0xB7, 0xC2, 0x06, 0x05, 0xF1, 0x44, 0x4D, 0xCA, 0xE5, 0x16, 0x96, 0xCA, 0x33, 0x11, 
  0x1E, 0x10, 0xC3, 0x11, 0x05, 0x11, 0x04, 0x00, 0xF1, 0xCA, 0x1C, 0x0A, 0x71, 0x23, 0x70, 0x23, 
  0x4F, 0xCD, 0xDA, 0x04, 0x23, 0x23, 0x22, 0x0A, 0x21, 0x71, 0x23, 0x3A, 0xF1, 0x20, 0x17, 0x79, 
  0x01, 0x0B, 0x00, 0xD2, 0xF8, 0x10, 0xC1, 0x03, 0x71, 0x23, 0x70, 0x23, 0xF5, 0xE5, 0xCD, 0x90, 
  0x18, 0xEB, 0xE1, 0xF1, 0x3D, 0xC2, 0xF0, 0x10, 0xF5, 0x42, 0x4B, 0xEB, 0x19, 0xDA, 0xF2, 0x04, 
  0xCD, 0xE3, 0x04, 0x22, 0x1F, 0x21, 0x2B, 0x36, 0x00, 0xCD, 0xC5, 0x07, 0xC2, 0x16, 0x11, 0x03, 
  0x57, 0x2A, 0x0A, 0x21, 0x5E, 0xEB, 0x29, 0x09, 0xEB, 0x2B, 0x2B, 0x73, 0x23, 0x72, 0x23, 0xF1, 
  0xDA, 0x57, 0x11, 0x47, 0x4F, 0x7E, 0x23, 0x16, 0xE1, 0x5E, 0x23, 0x56, 0x23, 0xE3, 0xF5, 0xCD, 
  0xC5, 0x07, 0xD2, 0xD0, 0x10, 0xE5, 0xCD, 0x90, 0x18, 0xD1, 0x19, 0xF1, 0x3D, 0x44, 0x4D, 0xC2, 
  0x38, 0x11, 0x29, 0x29, 0xC1, 0x09, 0xEB, 0x2A, 0x15, 0x21, 0xC9, 0x2A, 0x1F, 0x21, 0xEB, 0x21, 
  0x00, 0x00, 0x39, 0x3A, 0xF2, 0x20, 0xB7, 0xCA, 0x77, 0x11, 0xCD, 0xDE, 0x13, 0xCD, 0xDE, 0x12, 
  0x2A, 0x9F, 0x20, 0xEB, 0x2A, 0x08, 0x21, 0x7D, 0x93, 0x4F, 0x7C, 0x9A, 0x41, 0x50, 0x1E, 0x00, 
  0x21, 0xF2, 0x20, 0x73, 0x06, 0x90, 0xC3, 0xBB, 0x17, 0x3A, 0xF0, 0x20, 0x47, 0xAF, 0xC3, 0x7D, 
  0x11, 0xCD, 0x14, 0x12, 0xCD, 0x06, 0x12, 0x01, 0xEC, 0x0A, 0xC5, 0xD5, 0xCD, 0xCB, 0x07, 0x28, 
  0xCD, 0xB8, 0x0F, 0xE5, 0xEB, 0x2B, 0x56, 0x2B, 0x5E, 0xE1, 0xCD, 0xC5, 0x0D, 0xCD, 0xCB, 0x07, 
  0x29, 0xCD, 0xCB, 0x07, 0xB4, 0x44, 0x4D, 0xE3, 0x71, 0x23, 0x70, 0xC3, 0x53, 0x12, 0xCD, 0x14, 
  0x12, 0xD5, 0xCD, 0x99, 0x0E, 0xCD, 0xC5, 0x0D, 0xE3, 0x5E, 0x23, 0x56, 0x23, 0x7A, 0xB3, 0xCA, 
  0x09, 0x05, 0x7E, 0x23, 0x66, 0x6F, 0xE5, 0x2A, 0x23, 0x21, 0xE3, 0x22, 0x23, 0x21, 0x2A, 0x27, 
  0x21, 0xE5, 0x2A, 0x25, 0x21, 0xE5, 0x21, 0x25, 0x21, 0xD5, 0xCD, 0xFC, 0x17, 0xE1, 0xCD, 0xC2, 
  0x0D, 0x2B, 0xCD, 0x55, 0x09, 0xC2, 0xFD, 0x04, 0xE1, 0x22, 0x25, 0x21, 0xE1, 0x22, 0x27, 0x21, 
  0xE1, 0x22, 0x23, 0x21, 0xE1, 0xC9, 0xE5, 0x2A, 0xA1, 0x20, 0x23, 0x7C, 0xB5, 0xE1, 0xC0, 0x1E, 
  0x16, 0xC3, 0x11, 0x05, 0xCD, 0xCB, 0x07, 0xA7, 0x3E, 0x80, 0x32, 0x10, 0x21, 0xB6, 0x47, 0xCD, 
  0xBD, 0x0F, 0xC3, 0xC5, 0x0D, 0xCD, 0xC5, 0x0D, 0xCD, 0x49, 0x19, 0xCD, 0x59, 0x12, 0xCD, 0xDE, 
  0x13, 0x01, 0x39, 0x14, 0xC5, 0x7E, 0x23, 0x23, 0xE5, 0xCD, 0xB4, 0x12, 0xE1, 0x4E, 0x23, 0x46, 
  0xCD, 0x4D, 0x12, 0xE5, 0x6F, 0xCD, 0xD1, 0x13, 0xD1, 0xC9, 0xCD, 0xB4, 0x12, 0x21, 0x04, 0x21, 
  0xE5, 0x77, 0x23, 0x23, 0x73, 0x23, 0x72, 0xE1, 0xC9, 0x2B, 0x06, 0x22, 0x50, 0xE5, 0x0E, 0xFF, 
  0x23, 0x7E, 0x0C, 0xB7, 0xCA, 0x6F, 0x12, 0xBA, 0xCA, 0x6F, 0x12, 0xB8, 0xC2, 0x60, 0x12, 0xFE, 
  0x22, 0xCC, 0x55, 0x09, 0xE3, 0x23, 0xEB, 0x79, 0xCD, 0x4D, 0x12, 0x11, 0x04, 0x21, 0x2A, 0xF6, 
  0x20, 0x22, 0x29, 0x21, 0x3E, 0x01, 0x32, 0xF2, 0x20, 0xCD, 0xFF, 0x17, 0xCD, 0xC5, 0x07, 0x22, 
  0xF6, 0x20, 0xE1, 0x7E, 0xC0, 0x1E, 0x1E, 0xC3, 0x11, 0x05, 0x23, 0xCD, 0x59, 0x12, 0xCD, 0xDE, 
  0x13, 0xCD, 0xF3, 0x17, 0x1C, 0x1D, 0xC8, 0x0A, 0xCD, 0xD6, 0x07, 0xFE, 0x0D, 0xCC, 0x07, 0x0C, 
  0x03, 0xC3, 0xA5, 0x12, 0xB7, 0x0E, 0xF1, 0xF5, 0x2A, 0x9F, 0x20, 0xEB, 0x2A, 0x08, 0x21, 0x2F, 
  0x4F, 0x06, 0xFF, 0x09, 0x23, 0xCD, 0xC5, 0x07, 0xDA, 0xD2, 0x12, 0x22, 0x08, 0x21, 0x23, 0xEB, 
  0xF1, 0xC9, 0xF1, 0x1E, 0x1A, 0xCA, 0x11, 0x05, 0xBF, 0xF5, 0x01, 0xB6, 0x12, 0xC5, 0x2A, 0xF4, 
  0x20, 0x22, 0x08, 0x21, 0x21, 0x00, 0x00, 0xE5, 0x2A, 0x9F, 0x20, 0xE5, 0x21, 0xF8, 0x20, 0xEB, 
  0x2A, 0xF6, 0x20, 0xEB, 0xCD, 0xC5, 0x07, 0x01, 0xEF, 0x12, 0xC2, 0x43, 0x13, 0x2A, 0x1B, 0x21, 
  0xEB, 0x2A, 0x1D, 0x21, 0xEB, 0xCD, 0xC5, 0x07, 0xCA, 0x16, 0x13, 0x7E, 0x23, 0x23, 0xB7, 0xCD, 
  0x46, 0x13, 0xC3, 0x00, 0x13, 0xC1, 0xEB, 0x2A, 0x1F, 0x21, 0xEB, 0xCD, 0xC5, 0x07, 0xCA, 0x6C, 
  0x13, 0xCD, 0xF3, 0x17, 0x7B, 0xE5, 0x09, 0xB7, 0xF2, 0x15, 0x13, 0x22, 0x0A, 0x21, 0xE1, 0x4E, 
  0x06, 0x00, 0x09, 0x09, 0x23, 0xEB, 0x2A, 0x0A, 0x21, 0xEB, 0xCD, 0xC5, 0x07, 0xCA, 0x16, 0x13, 
  0x01, 0x35, 0x13, 0xC5, 0xF6, 0x80, 0x7E, 0x23, 0x23, 0x5E, 0x23, 0x56, 0x23, 0xF0, 0xB7, 0xC8, 
  0x44, 0x4D, 0x2A, 0x08, 0x21, 0xCD, 0xC5, 0x07, 0x60, 0x69, 0xD8, 0xE1, 0xE3, 0xCD, 0xC5, 0x07, 
  0xE3, 0xE5, 0x60, 0x69, 0xD0, 0xC1, 0xF1, 0xF1, 0xE5, 0xD5, 0xC5, 0xC9, 0xD1, 0xE1, 0x7D, 0xB4, 
  0xC8, 0x2B, 0x46, 0x2B, 0x4E, 0xE5, 0x2B, 0x2B, 0x6E, 0x26, 0x00, 0x09, 0x50, 0x59, 0x2B, 0x44, 
  0x4D, 0x2A, 0x08, 0x21, 0xCD, 0xCC, 0x04, 0xE1, 0x71, 0x23, 0x70, 0x69, 0x60, 0x2B, 0xC3, 0xE1, 
  0x12, 0xC5, 0xE5, 0x2A, 0x29, 0x21, 0xE3, 0xCD, 0x4B, 0x0E, 0xE3, 0xCD, 0xC6, 0x0D, 0x7E, 0xE5, 
  0x2A, 0x29, 0x21, 0xE5, 0x86, 0x1E, 0x1C, 0xDA, 0x11, 0x05, 0xCD, 0x4A, 0x12, 0xD1, 0xCD, 0xE2, 
  0x13, 0xE3, 0xCD, 0xE1, 0x13, 0xE5, 0x2A, 0x06, 0x21, 0xEB, 0xCD, 0xC8, 0x13, 0xCD, 0xC8, 0x13, 
  0x21, 0xE0, 0x0D, 0xE3, 0xE5, 0xC3, 0x7B, 0x12, 0xE1, 0xE3, 0x7E, 0x23, 0x23, 0x4E, 0x23, 0x46, 
  0x6F, 0x2C, 0x2D, 0xC8, 0x0A, 0x12, 0x03, 0x13, 0xC3, 0xD2, 0x13, 0xCD, 0xC6, 0x0D, 0x2A, 0x29, 
  0x21, 0xEB, 0xCD, 0xFC, 0x13, 0xEB, 0xC0, 0xD5, 0x50, 0x59, 0x1B, 0x4E, 0x2A, 0x08, 0x21, 0xCD, 
  0xC5, 0x07, 0xC2, 0xFA, 0x13, 0x47, 0x09, 0x22, 0x08, 0x21, 0xE1, 0xC9, 0x2A, 0xF6, 0x20, 0x2B, 
  0x46, 0x2B, 0x4E, 0x2B, 0x2B, 0xCD, 0xC5, 0x07, 0xC0, 0x22, 0xF6, 0x20, 0xC9, 0x01, 0x8C, 0x11, 
  0xC5, 0xCD, 0xDB, 0x13, 0xAF, 0x57, 0x32, 0xF2, 0x20, 0x7E, 0xB7, 0xC9, 0x01, 0x8C, 0x11, 0xC5, 
  0xCD, 0x11, 0x14, 0xCA, 0x1C, 0x0A, 0x23, 0x23, 0x5E, 0x23, 0x56, 0x1A, 0xC9, 0x3E, 0x01, 0xCD, 
  0x4A, 0x12, 0xCD, 0x26, 0x15, 0x2A, 0x06, 0x21, 0x73, 0xC1, 0xC3, 0x7B, 0x12, 0xCD, 0xD6, 0x14, 
  0xAF, 0xE3, 0x4F, 0xE5, 0x7E, 0xB8, 0xDA, 0x4B, 0x14, 0x78, 0x11, 0x0E, 0x00, 0xC5, 0xCD, 0xB4, 
  0x12, 0xC1, 0xE1, 0xE5, 0x23, 0x23, 0x46, 0x23, 0x66, 0x68, 0x06, 0x00, 0x09, 0x44, 0x4D, 0xCD, 
  0x4D, 0x12, 0x6F, 0xCD, 0xD1, 0x13, 0xD1, 0xCD, 0xE2, 0x13, 0xC3, 0x7B, 0x12, 0xCD, 0xD6, 0x14, 
  0xD1, 0xD5, 0x1A, 0x90, 0xC3, 0x41, 0x14, 0xEB, 0x7E, 0xCD, 0xDB, 0x14, 0x04, 0x05, 0xCA, 0x1C, 
  0x0A, 0xC5, 0x1E, 0xFF, 0xFE, 0x29, 0xCA, 0x90, 0x14, 0xCD, 0xCB, 0x07, 0x2C, 0xCD, 0x23, 0x15, 
  0xCD, 0xCB, 0x07, 0x29, 0xF1, 0xE3, 0x01, 0x43, 0x14, 0xC5, 0x3D, 0xBE, 0x06, 0x00, 0xD0, 0x4F, 
  0x7E, 0x91, 0xBB, 0x47, 0xD8, 0x43, 0xC9, 0xCD, 0x11, 0x14, 0xCA, 0xC4, 0x15, 0x5F, 0x23, 0x23, 
  0x7E, 0x23, 0x66, 0x6F, 0xE5, 0x19, 0x46, 0x72, 0xE3, 0xC5, 0x7E, 0xFE, 0x24, 0xC2, 0xC5, 0x14, 
  0xCD, 0xEF, 0x1C, 0x18, 0x0D, 0xFE, 0x25, 0xC2, 0xCF, 0x14, 0xCD, 0x5F, 0x1D, 0x18, 0x03, 0xCD, 
  0xAB, 0x18, 0xC1, 0xE1, 0x70, 0xC9, 0xEB, 0xCD, 0xCB, 0x07, 0x29, 0xC1, 0xD1, 0xC5, 0x43, 0xC9, 
  0xCD, 0x26, 0x15, 0x32, 0x84, 0x20, 0xCD, 0x83, 0x20, 0xC3, 0x8C, 0x11, 0xCD, 0x10, 0x15, 0xC3, 
  0x4B, 0x20, 0xCD, 0x10, 0x15, 0xF5, 0x1E, 0x00, 0x2B, 0xCD, 0x55, 0x09, 0xCA, 0x06, 0x15, 0xCD, 
  0xCB, 0x07, 0x2C, 0xCD, 0x23, 0x15, 0xC1, 0xCD, 0x83, 0x20, 0xAB, 0xA0, 0xCA, 0x07, 0x15, 0xC9, 
  0xCD, 0x23, 0x15, 0x32, 0x84, 0x20, 0x32, 0x4C, 0x20, 0xCD, 0xCB, 0x07, 0x2C, 0xC3, 0x23, 0x15, 
  0xCD, 0x55, 0x09, 0xCD, 0xC2, 0x0D, 0xCD, 0x01, 0x0A, 0x7A, 0xB7, 0xC2, 0x1C, 0x0A, 0x2B, 0xCD, 
  0x55, 0x09, 0x7B, 0xC9, 0xCD, 0x07, 0x0A, 0x1A, 0xC3, 0x8C, 0x11, 0xCD, 0xC2, 0x0D, 0xCD, 0x07, 
  0x0A, 0xD5, 0xCD, 0xCB, 0x07, 0x2C, 0xCD, 0x23, 0x15, 0xD1, 0x12, 0xC9, 0x21, 0x22, 0x1A, 0xCD, 
  0xF3, 0x17, 0xC3, 0x5E, 0x15, 0xCD, 0xF3, 0x17, 0x21, 0xC1, 0xD1, 0xCD, 0xCD, 0x17, 0x78, 0xB7, 
  0xC8, 0x3A, 0x2C, 0x21, 0xB7, 0xCA, 0xE5, 0x17, 0x90, 0xD2, 0x78, 0x15, 0x2F, 0x3C, 0xEB, 0xCD, 
  0xD5, 0x17, 0xEB, 0xCD, 0xE5, 0x17, 0xC1, 0xD1, 0xFE, 0x19, 0xD0, 0xF5, 0xCD, 0x0A, 0x18, 0x67, 
  0xF1, 0xCD, 0x23, 0x16, 0xB4, 0x21, 0x29, 0x21, 0xF2, 0x9E, 0x15, 0xCD, 0x03, 0x16, 0xD2, 0xE4, 
  0x15, 0x23, 0x34, 0xCA, 0x0C, 0x05, 0x2E, 0x01, 0xCD, 0x39, 0x16, 0xC3, 0xE4, 0x15, 0xAF, 0x90, 
  0x47, 0x7E, 0x9B, 0x5F, 0x23, 0x7E, 0x9A, 0x57, 0x23, 0x7E, 0x99, 0x4F, 0xDC, 0x0F, 0x16, 0x68, 
  0x63, 0xAF, 0x47, 0x79, 0xB7, 0xC2, 0xD1, 0x15, 0x4A, 0x54, 0x65, 0x6F, 0x78, 0xD6, 0x08, 0xFE, 
  0xE0, 0xC2, 0xB2, 0x15, 0xAF, 0x32, 0x2C, 0x21, 0xC9, 0x05, 0x29, 0x7A, 0x17, 0x57, 0x79, 0x8F, 
  0x4F, 0xF2, 0xC9, 0x15, 0x78, 0x5C, 0x45, 0xB7, 0xCA, 0xE4, 0x15, 0x21, 0x2C, 0x21, 0x86, 0x77, 
  0xD2, 0xC4, 0x15, 0xC8, 0x78, 0x21, 0x2C, 0x21, 0xB7, 0xFC, 0xF6, 0x15, 0x46, 0x23, 0x7E, 0xE6, 
  0x80, 0xA9, 0x4F, 0xC3, 0xE5, 0x17, 0x1C, 0xC0, 0x14, 0xC0, 0x0C, 0xC0, 0x0E, 0x80, 0x34, 0xC0, 
  0xC3, 0x0C, 0x05, 0x7E, 0x83, 0x5F, 0x23, 0x7E, 0x8A, 0x57, 0x23, 0x7E, 0x89, 0x4F, 0xC9, 0x21, 
  0x2D, 0x21, 0x7E, 0x2F, 0x77, 0xAF, 0x6F, 0x90, 0x47, 0x7D, 0x9B, 0x5F, 0x7D, 0x9A, 0x57, 0x7D, 
  0x99, 0x4F, 0xC9, 0x06, 0x00, 0xD6, 0x08, 0xDA, 0x32, 0x16, 0x43, 0x5A, 0x51, 0x0E, 0x00, 0xC3, 
  0x25, 0x16, 0xC6, 0x09, 0x6F, 0xAF, 0x2D, 0xC8, 0x79, 0x1F, 0x4F, 0x7A, 0x1F, 0x57, 0x7B, 0x1F, 
  0x5F, 0x78, 0x1F, 0x47, 0xC3, 0x35, 0x16, 0x00, 0x00, 0x00, 0x81, 0x03, 0xAA, 0x56, 0x19, 0x80, 
  0xF1, 0x22, 0x76, 0x80, 0x45, 0xAA, 0x38, 0x82, 0xCD, 0xA4, 0x17, 0xB7, 0xEA, 0x1C, 0x0A, 0x21, 
  0x2C, 0x21, 0x7E, 0x01, 0x35, 0x80, 0x11, 0xF3, 0x04, 0x90, 0xF5, 0x70, 0xD5, 0xC5, 0xCD, 0x5E, 
  0x15, 0xC1, 0xD1, 0x04, 0xCD, 0xFA, 0x16, 0x21, 0x47, 0x16, 0xCD, 0x55, 0x15, 0x21, 0x4B, 0x16, 
  0xCD, 0xEC, 0x1A, 0x01, 0x80, 0x80, 0x11, 0x00, 0x00, 0xCD, 0x5E, 0x15, 0xF1, 0xCD, 0x1F, 0x19, 
  0x01, 0x31, 0x80, 0x11, 0x18, 0x72, 0x21, 0xC1, 0xD1, 0xCD, 0xA4, 0x17, 0xC8, 0x2E, 0x00, 0xCD, 
  0x62, 0x17, 0x79, 0x32, 0x3B, 0x21, 0xEB, 0x22, 0x3C, 0x21, 0x01, 0x00, 0x00, 0x50, 0x58, 0x21, 
  0xAF, 0x15, 0xE5, 0x21, 0xBB, 0x16, 0xE5, 0xE5, 0x21, 0x29, 0x21, 0x7E, 0x23, 0xB7, 0xCA, 0xE7, 
  0x16, 0xE5, 0x2E, 0x08, 0x1F, 0x67, 0x79, 0xD2, 0xD5, 0x16, 0xE5, 0x2A, 0x3C, 0x21, 0x19, 0xEB, 
  0xE1, 0x3A, 0x3B, 0x21, 0x89, 0x1F, 0x4F, 0x7A, 0x1F, 0x57, 0x7B, 0x1F, 0x5F, 0x78, 0x1F, 0x47, 
  0x2D, 0x7C, 0xC2, 0xC4, 0x16, 0xE1, 0xC9, 0x43, 0x5A, 0x51, 0x4F, 0xC9, 0xCD, 0xD5, 0x17, 0x01, 
  0x20, 0x84, 0x11, 0x00, 0x00, 0xCD, 0xE5, 0x17, 0xC1, 0xD1, 0xCD, 0xA4, 0x17, 0xCA, 0x00, 0x05, 
  0x2E, 0xFF, 0xCD, 0x62, 0x17, 0x34, 0x34, 0x2B, 0x7E, 0x32, 0x57, 0x20, 0x2B, 0x7E, 0x32, 0x53, 
  0x20, 0x2B, 0x7E, 0x32, 0x4F, 0x20, 0x41, 0xEB, 0xAF, 0x4F, 0x57, 0x5F, 0x32, 0x5A, 0x20, 0xE5, 
  0xC5, 0x7D, 0xCD, 0x4E, 0x20, 0xDE, 0x00, 0x3F, 0xD2, 0x32, 0x17, 0x32, 0x5A, 0x20, 0xF1, 0xF1, 
  0x37, 0xD2, 0xC1, 0xE1, 0x79, 0x3C, 0x3D, 0x1F, 0xFA, 0xE5, 0x15, 0x17, 0x7B, 0x17, 0x5F, 0x7A, 
  0x17, 0x57, 0x79, 0x17, 0x4F, 0x29, 0x78, 0x17, 0x47, 0x3A, 0x5A, 0x20, 0x17, 0x32, 0x5A, 0x20, 
  0x79, 0xB2, 0xB3, 0xC2, 0x1F, 0x17, 0xE5, 0x21, 0x2C, 0x21, 0x35, 0xE1, 0xC2, 0x1F, 0x17, 0xC3, 
  0x0C, 0x05, 0x78, 0xB7, 0xCA, 0x86, 0x17, 0x7D, 0x21, 0x2C, 0x21, 0xAE, 0x80, 0x47, 0x1F, 0xA8, 
  0x78, 0xF2, 0x85, 0x17, 0xC6, 0x80, 0x77, 0xCA, 0xE5, 0x16, 0xCD, 0x0A, 0x18, 0x77, 0x2B, 0xC9, 
  0xCD, 0xA4, 0x17, 0x2F, 0xE1, 0xB7, 0xE1, 0xF2, 0xC4, 0x15, 0xC3, 0x0C, 0x05, 0xCD, 0xF0, 0x17, 
  0x78, 0xB7, 0xC8, 0xC6, 0x02, 0xDA, 0x0C, 0x05, 0x47, 0xCD, 0x5E, 0x15, 0x21, 0x2C, 0x21, 0x34, 
  0xC0, 0xC3, 0x0C, 0x05, 0x3A, 0x2C, 0x21, 0xB7, 0xC8, 0x3A, 0x2B, 0x21, 0xFE, 0x2F, 0x17, 0x9F, 
  0xC0, 0x3C, 0xC9, 0xCD, 0xA4, 0x17, 0x06, 0x88, 0x11, 0x00, 0x00, 0x21, 0x2C, 0x21, 0x4F, 0x70, 
  0x06, 0x00, 0x23, 0x36, 0x80, 0x17, 0xC3, 0xAC, 0x15, 0xCD, 0xA4, 0x17, 0xF0, 0x21, 0x2B, 0x21, 
  0x7E, 0xEE, 0x80, 0x77, 0xC9, 0xEB, 0x2A, 0x29, 0x21, 0xE3, 0xE5, 0x2A, 0x2B, 0x21, 0xE3, 0xE5, 
  0xEB, 0xC9, 0xCD, 0xF3, 0x17, 0xEB, 0x22, 0x29, 0x21, 0x60, 0x69, 0x22, 0x2B, 0x21, 0xEB, 0xC9, 
  0x21, 0x29, 0x21, 0x5E, 0x23, 0x56, 0x23, 0x4E, 0x23, 0x46, 0x23, 0xC9, 0x11, 0x29, 0x21, 0x06, 
  0x04, 0x1A, 0x77, 0x13, 0x23, 0x05, 0xC2, 0x01, 0x18, 0xC9, 0x21, 0x2B, 0x21, 0x7E, 0x07, 0x37, 
  0x1F, 0x77, 0x3F, 0x1F, 0x23, 0x23, 0x77, 0x79, 0x07, 0x37, 0x1F, 0x4F, 0x1F, 0xAE, 0xC9, 0x78, 
  0xB7, 0xCA, 0xA4, 0x17, 0x21, 0xAD, 0x17, 0xE5, 0xCD, 0xA4, 0x17, 0x79, 0xC8, 0x21, 0x2B, 0x21, 
  0xAE, 0x79, 0xF8, 0xCD, 0x39, 0x18, 0x1F, 0xA9, 0xC9, 0x23, 0x78, 0xBE, 0xC0, 0x2B, 0x79, 0xBE, 
  0xC0, 0x2B, 0x7A, 0xBE, 0xC0, 0x2B, 0x7B, 0x96, 0xC0, 0xE1, 0xE1, 0xC9, 0x47, 0x4F, 0x57, 0x5F, 
  0xB7, 0xC8, 0xE5, 0xCD, 0xF0, 0x17, 0xCD, 0x0A, 0x18, 0xAE, 0x67, 0xFC, 0x70, 0x18, 0x3E, 0x98, 
  0x90, 0xCD, 0x23, 0x16, 0x7C, 0x17, 0xDC, 0xF6, 0x15, 0x06, 0x00, 0xDC, 0x0F, 0x16, 0xE1, 0xC9, 
  0x1B, 0x7A, 0xA3, 0x3C, 0xC0, 0x0B, 0xC9, 0x21, 0x2C, 0x21, 0x7E, 0xFE, 0x98, 0x3A, 0x29, 0x21, 
  0xD0, 0x7E, 0xCD, 0x4C, 0x18, 0x36, 0x98, 0x7B, 0xF5, 0x79, 0x17, 0xCD, 0xAC, 0x15, 0xF1, 0xC9, 
  0x21, 0x00, 0x00, 0x78, 0xB1, 0xC8, 0x3E, 0x10, 0x29, 0xDA, 0xD0, 0x10, 0xEB, 0x29, 0xEB, 0xD2, 
  0xA6, 0x18, 0x09, 0xDA, 0xD0, 0x10, 0x3D, 0xC2, 0x98, 0x18, 0xC9, 0xFE, 0x2D, 0xF5, 0xCA, 0xB7, 
  0x18, 0xFE, 0x2B, 0xCA, 0xB7, 0x18, 0x2B, 0xCD, 0xC4, 0x15, 0x47, 0x57, 0x5F, 0x2F, 0x4F, 0xCD, 
  0x55, 0x09, 0xDA, 0x08, 0x19, 0xFE, 0x2E, 0xCA, 0xE3, 0x18, 0xFE, 0x45, 0xC2, 0xE7, 0x18, 0xCD, 
  0x55, 0x09, 0xCD, 0xFB, 0x0E, 0xCD, 0x55, 0x09, 0xDA, 0x2A, 0x19, 0x14, 0xC2, 0xE7, 0x18, 0xAF, 
  0x93, 0x5F, 0x0C, 0x0C, 0xCA, 0xBF, 0x18, 0xE5, 0x7B, 0x90, 0xF4, 0x00, 0x19, 0xF2, 0xF6, 0x18, 
  0xF5, 0xCD, 0xEC, 0x16, 0xF1, 0x3C, 0xC2, 0xEA, 0x18, 0xD1, 0xF1, 0xCC, 0xCD, 0x17, 0xEB, 0xC9, 
  0xC8, 0xF5, 0xCD, 0x8D, 0x17, 0xF1, 0x3D, 0xC9, 0xD5, 0x57, 0x78, 0x89, 0x47, 0xC5, 0xE5, 0xD5, 
  0xCD, 0x8D, 0x17, 0xF1, 0xD6, 0x30, 0xCD, 0x1F, 0x19, 0xE1, 0xC1, 0xD1, 0xC3, 0xBF, 0x18, 0xCD, 
  0xD5, 0x17, 0xCD, 0xB6, 0x17, 0xC1, 0xD1, 0xC3, 0x5E, 0x15, 0x7B, 0x07, 0x07, 0x83, 0x07, 0x86, 
  0xD6, 0x30, 0x5F, 0xC3, 0xD5, 0x18, 0xE5, 0x21, 0x95, 0x04, 0xCD, 0x9B, 0x12, 0xE1, 0xEB, 0xAF, 
  0x06, 0x98, 0xCD, 0xBB, 0x17, 0x21, 0x9A, 0x12, 0xE5, 0x21, 0x2E, 0x21, 0xE5, 0xCD, 0xA4, 0x17, 
  0x36, 0x20, 0xF2, 0x57, 0x19, 0x36, 0x2D, 0x23, 0x36, 0x30, 0xCA, 0x0D, 0x1A, 0xE5, 0xFC, 0xCD, 
  0x17, 0xAF, 0xF5, 0xCD, 0x13, 0x1A, 0x01, 0x43, 0x91, 0x11, 0xF8, 0x4F, 0xCD, 0x1F, 0x18, 0xB7, 
  0xE2, 0x84, 0x19, 0xF1, 0xCD, 0x01, 0x19, 0xF5, 0xC3, 0x66, 0x19, 0xCD, 0xEC, 0x16, 0xF1, 0x3C, 
  0xF5, 0xCD, 0x13, 0x1A, 0xCD, 0x4C, 0x15, 0x3C, 0xCD, 0x4C, 0x18, 0xCD, 0xE5, 0x17, 0x01, 0x06, 
  0x03, 0xF1, 0x81, 0x3C, 0xFA, 0xA0, 0x19, 0xFE, 0x08, 0xD2, 0xA0, 0x19, 0x3C, 0x47, 0x3E, 0x02, 
  0x3D, 0x3D, 0xE1, 0xF5, 0x11, 0x26, 0x1A, 0x05, 0xC2, 0xB1, 0x19, 0x36, 0x2E, 0x23, 0x36, 0x30, 
  0x23, 0x05, 0x36, 0x2E, 0xCC, 0xFA, 0x17, 0xC5, 0xE5, 0xD5, 0xCD, 0xF0, 0x17, 0xE1, 0x06, 0x2F, 
  0x04, 0x7B, 0x96, 0x5F, 0x23, 0x7A, 0x9E, 0x57, 0x23, 0x79, 0x9E, 0x4F, 0x2B, 0x2B, 0xD2, 0xC0, 
  0x19, 0xCD, 0x03, 0x16, 0x23, 0xCD, 0xE5, 0x17, 0xEB, 0xE1, 0x70, 0x23, 0xC1, 0x0D, 0xC2, 0xB1, 
  0x19, 0x05, 0xCA, 0xF1, 0x19, 0x2B, 0x7E, 0xFE, 0x30, 0xCA, 0xE5, 0x19, 0xFE, 0x2E, 0xC4, 0xFA, 
  0x17, 0xF1, 0xCA, 0x10, 0x1A, 0x36, 0x45, 0x23, 0x36, 0x2B, 0xF2, 0x01, 0x1A, 0x36, 0x2D, 0x2F, 
  0x3C, 0x06, 0x2F, 0x04, 0xD6, 0x0A, 0xD2, 0x03, 0x1A, 0xC6, 0x3A, 0x23, 0x70, 0x23, 0x77, 0x23, 
  0x71, 0xE1, 0xC9, 0x01, 0x74, 0x94, 0x11, 0xF7, 0x23, 0xCD, 0x1F, 0x18, 0xB7, 0xE1, 0xE2, 0x7B, 
  0x19, 0xE9, 0x00, 0x00, 0x00, 0x80, 0xA0, 0x86, 0x01, 0x10, 0x27, 0x00, 0xE8, 0x03, 0x00, 0x64, 
  0x00, 0x00, 0x0A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x21, 0xCD, 0x17, 0xE3, 0xE9, 0xCD, 0xD5, 0x17, 
  0x21, 0x22, 0x1A, 0xCD, 0xE2, 0x17, 0xC1, 0xD1, 0xCD, 0xA4, 0x17, 0x78, 0xCA, 0x8B, 0x1A, 0xF2, 
  0x56, 0x1A, 0xB7, 0xCA, 0x00, 0x05, 0xB7, 0xCA, 0xC5, 0x15, 0xD5, 0xC5, 0x79, 0xF6, 0x7F, 0xCD, 
  0xF0, 0x17, 0xF2, 0x73, 0x1A, 0xD5, 0xC5, 0xCD, 0x77, 0x18, 0xC1, 0xD1, 0xF5, 0xCD, 0x1F, 0x18, 
  0xE1, 0x7C, 0x1F, 0xE1, 0x22, 0x2B, 0x21, 0xE1, 0x22, 0x29, 0x21, 0xDC, 0x38, 0x1A, 0xCC, 0xCD, 
  0x17, 0xD5, 0xC5, 0xCD, 0x58, 0x16, 0xC1, 0xD1, 0xCD, 0x99, 0x16, 0xCD, 0xD5, 0x17, 0x01, 0x38, 
  0x81, 0x11, 0x3B, 0xAA, 0xCD, 0x99, 0x16, 0x3A, 0x2C, 0x21, 0xFE, 0x88, 0xD2, 0x80, 0x17, 0xCD, 
  0x77, 0x18, 0xC6, 0x80, 0xC6, 0x02, 0xDA, 0x80, 0x17, 0xF5, 0x21, 0x47, 0x16, 0xCD, 0x4F, 0x15, 
  0xCD, 0x90, 0x16, 0xF1, 0xC1, 0xD1, 0xF5, 0xCD, 0x5B, 0x15, 0xCD, 0xCD, 0x17, 0x21, 0xCB, 0x1A, 
  0xCD, 0xFB, 0x1A, 0x11, 0x00, 0x00, 0xC1, 0x4A, 0xC3, 0x99, 0x16, 0x08, 0x40, 0x2E, 0x94, 0x74, 
  0x70, 0x4F, 0x2E, 0x77, 0x6E, 0x02, 0x88, 0x7A, 0xE6, 0xA0, 0x2A, 0x7C, 0x50, 0xAA, 0xAA, 0x7E, 
  0xFF, 0xFF, 0x7F, 0x7F, 0x00, 0x00, 0x80, 0x81, 0x00, 0x00, 0x00, 0x81, 0xCD, 0xD5, 0x17, 0x11, 
  0x97, 0x16, 0xD5, 0xE5, 0xCD, 0xF0, 0x17, 0xCD, 0x99, 0x16, 0xE1, 0xCD, 0xD5, 0x17, 0x7E, 0x23, 
  0xCD, 0xE2, 0x17, 0x06, 0xF1, 0xC1, 0xD1, 0x3D, 0xC8, 0xD5, 0xC5, 0xF5, 0xE5, 0xCD, 0x99, 0x16, 
  0xE1, 0xCD, 0xF3, 0x17, 0xE5, 0xCD, 0x5E, 0x15, 0xE1, 0xC3, 0x04, 0x1B, 0xCD, 0xA4, 0x17, 0x21, 
  0x5E, 0x20, 0xFA, 0x7D, 0x1B, 0x21, 0x7F, 0x20, 0xCD, 0xE2, 0x17, 0x21, 0x5E, 0x20, 0xC8, 0x86, 
  0xE6, 0x07, 0x06, 0x00, 0x77, 0x23, 0x87, 0x87, 0x4F, 0x09, 0xCD, 0xF3, 0x17, 0xCD, 0x99, 0x16, 
  0x3A, 0x5D, 0x20, 0x3C, 0xE6, 0x03, 0x06, 0x00, 0xFE, 0x01, 0x88, 0x32, 0x5D, 0x20, 0x21, 0x81, 
  0x1B, 0x87, 0x87, 0x4F, 0x09, 0xCD, 0x4F, 0x15, 0xCD, 0xF0, 0x17, 0x7B, 0x59, 0xEE, 0x4F, 0x4F, 
  0x36, 0x80, 0x2B, 0x46, 0x36, 0x80, 0x21, 0x5C, 0x20, 0x34, 0x7E, 0xD6, 0xAB, 0xC2, 0x74, 0x1B, 
  0x77, 0x0C, 0x15, 0x1C, 0xCD, 0xAF, 0x15, 0x21, 0x7F, 0x20, 0xC3, 0xFC, 0x17, 0x77, 0x2B, 0x77, 
  0x2B, 0x77, 0xC3, 0x58, 0x1B, 0x68, 0xB1, 0x46, 0x68, 0x99, 0xE9, 0x92, 0x69, 0x10, 0xD1, 0x75, 
  0x68, 0x21, 0xDB, 0x1B, 0xCD, 0x4F, 0x15, 0xCD, 0xD5, 0x17, 0x01, 0x49, 0x83, 0x11, 0xDB, 0x0F, 
  0xCD, 0xE5, 0x17, 0xC1, 0xD1, 0xCD, 0xFA, 0x16, 0xCD, 0xD5, 0x17, 0xCD, 0x77, 0x18, 0xC1, 0xD1, 
  0xCD, 0x5B, 0x15, 0x21, 0xDF, 0x1B, 0xCD, 0x55, 0x15, 0xCD, 0xA4, 0x17, 0x37, 0xF2, 0xC7, 0x1B, 
  0xCD, 0x4C, 0x15, 0xCD, 0xA4, 0x17, 0xB7, 0xF5, 0xF4, 0xCD, 0x17, 0x21, 0xDF, 0x1B, 0xCD, 0x4F, 
  0x15, 0xF1, 0xD4, 0xCD, 0x17, 0x21, 0xE3, 0x1B, 0xC3, 0xEC, 0x1A, 0xDB, 0x0F, 0x49, 0x81, 0x00, 
  0x00, 0x00, 0x7F, 0x05, 0xBA, 0xD7, 0x1E, 0x86, 0x64, 0x26, 0x99, 0x87, 0x58, 0x34, 0x23, 0x87, 
  0xE0, 0x5D, 0xA5, 0x86, 0xDA, 0x0F, 0x49, 0x83, 0xCD, 0xD5, 0x17, 0xCD, 0x97, 0x1B, 0xC1, 0xE1, 
  0xCD, 0xD5, 0x17, 0xEB, 0xCD, 0xE5, 0x17, 0xCD, 0x91, 0x1B, 0xC3, 0xF8, 0x16, 0xCD, 0xA4, 0x17, 
  0xFC, 0x38, 0x1A, 0xFC, 0xCD, 0x17, 0x3A, 0x2C, 0x21, 0xFE, 0x81, 0xDA, 0x2A, 0x1C, 0x01, 0x00, 
  0x81, 0x51, 0x59, 0xCD, 0xFA, 0x16, 0x21, 0x55, 0x15, 0xE5, 0x21, 0x34, 0x1C, 0xCD, 0xEC, 0x1A, 
  0x21, 0xDB, 0x1B, 0xC9, 0x09, 0x4A, 0xD7, 0x3B, 0x78, 0x02, 0x6E, 0x84, 0x7B, 0xFE, 0xC1, 0x2F, 
  0x7C, 0x74, 0x31, 0x9A, 0x7D, 0x84, 0x3D, 0x5A, 0x7D, 0xC8, 0x7F, 0x91, 0x7E, 0xE4, 0xBB, 0x4C, 
  0x7E, 0x6C, 0xAA, 0xAA, 0x7F, 0x00, 0x00, 0x00, 0x81, 0xC9, 0xD7, 0xC9, 0x3E, 0x0C, 0xC3, 0x96, 
  0x1D, 0xCD, 0x23, 0x15, 0x7B, 0x32, 0x87, 0x20, 0xC9, 0xCD, 0xC2, 0x0D, 0xCD, 0x07, 0x0A, 0xED, 
  0x53, 0x8B, 0x20, 0xED, 0x53, 0x8D, 0x20, 0xC9, 0xCD, 0x07, 0x0A, 0xD5, 0xE1, 0x46, 0x23, 0x7E, 
  0xC3, 0x7D, 0x11, 0xCD, 0xC2, 0x0D, 0xCD, 0x07, 0x0A, 0xD5, 0xCD, 0xCB, 0x07, 0x2C, 0xCD, 0xC2, 
  0x0D, 0xCD, 0x07, 0x0A, 0xE3, 0x73, 0x23, 0x72, 0xE1, 0xC9, 0xCD, 0xC5, 0x0D, 0xCD, 0x07, 0x0A, 
  0xC5, 0x21, 0x2E, 0x21, 0x7A, 0xFE, 0x00, 0x28, 0x0C, 0xCD, 0xD2, 0x1C, 0x78, 0xFE, 0x30, 0x28, 
  0x02, 0x70, 0x23, 0x71, 0x23, 0x7B, 0xCD, 0xD2, 0x1C, 0x7A, 0xFE, 0x00, 0x20, 0x05, 0x78, 0xFE, 
  0x30, 0x28, 0x02, 0x70, 0x23, 0x71, 0x23, 0xAF, 0x77, 0x23, 0x77, 0xC1, 0x21, 0x2E, 0x21, 0xC3, 
  0x2B, 0x12, 0x47, 0xE6, 0x0F, 0xFE, 0x0A, 0x38, 0x02, 0xC6, 0x07, 0xC6, 0x30, 0x4F, 0x78, 0x0F, 
  0x0F, 0x0F, 0x0F, 0xE6, 0x0F, 0xFE, 0x0A, 0x38, 0x02, 0xC6, 0x07, 0xC6, 0x30, 0x47, 0xC9, 0xEB, 
  0x21, 0x00, 0x00, 0xCD, 0x08, 0x1D, 0xDA, 0x28, 0x1D, 0x18, 0x05, 0xCD, 0x08, 0x1D, 0x38, 0x1F, 
  0x29, 0x29, 0x29, 0x29, 0xB5, 0x6F, 0x18, 0xF3, 0x13, 0x1A, 0xFE, 0x20, 0xCA, 0x08, 0x1D, 0xD6, 
  0x30, 0xD8, 0xFE, 0x0A, 0x38, 0x05, 0xD6, 0x07, 0xFE, 0x0A, 0xD8, 0xFE, 0x10, 0x3F, 0xC9, 0xEB, 
  0x7A, 0x4B, 0xE5, 0xCD, 0x7C, 0x11, 0xE1, 0xC9, 0x1E, 0x26, 0xC3, 0x11, 0x05, 0xCD, 0xC5, 0x0D, 
  0xCD, 0x07, 0x0A, 0xC5, 0x21, 0x2E, 0x21, 0x06, 0x11, 0x05, 0x78, 0xFE, 0x01, 0x28, 0x08, 0xCB, 
  0x13, 0xCB, 0x12, 0x30, 0xF4, 0x18, 0x04, 0xCB, 0x13, 0xCB, 0x12, 0x3E, 0x30, 0xCE, 0x00, 0x77, 
  0x23, 0x05, 0x20, 0xF3, 0xAF, 0x77, 0x23, 0x77, 0xC1, 0x21, 0x2E, 0x21, 0xC3, 0x2B, 0x12, 0xEB, 
  0x21, 0x00, 0x00, 0xCD, 0x7C, 0x1D, 0xDA, 0x8A, 0x1D, 0xD6, 0x30, 0x29, 0xB5, 0x6F, 0xCD, 0x7C, 
  0x1D, 0x30, 0xF6, 0xEB, 0x7A, 0x4B, 0xE5, 0xCD, 0x7C, 0x11, 0xE1, 0xC9, 0x13, 0x1A, 0xFE, 0x20, 
  0xCA, 0x7C, 0x1D, 0xFE, 0x30, 0xD8, 0xFE, 0x32, 0x3F, 0xC9, 0x1E, 0x28, 0xC3, 0x11, 0x05, 0xDD, 
  0x21, 0xFF, 0xFF, 0xC3, 0x61, 0x01, 0xC3, 0x08, 0x00, 0xC3, 0x00, 0x00, 0x3E, 0x00, 0x32, 0x92, 
  0x20, 0xC3, 0x68, 0x01, 0xED, 0x45, 0xF5, 0xA0, 0xC1, 0xB8, 0x3E, 0x00, 0xC9, 0xCD, 0xD6, 0x07, 
  0xC3, 0xFD, 0x0B
  };

const word  boot_B_StrAddr = 0xfd10;// Payload B image starting address
const byte  boot_B_[] PROGMEM = {   // Payload B image (S200718 iLoad)
  0x31, 0x10, 0xFD, 0x21, 0x52, 0xFD, 0xCD, 0xC6, 0xFE, 0xCD, 0x3E, 0xFF, 0xCD, 0xF4, 0xFD, 0x3E, 
  0xFF, 0xBC, 0x20, 0x10, 0xBD, 0x20, 0x0D, 0x21, 0xD9, 0xFD, 0xCD, 0xC6, 0xFE, 0x21, 0x88, 0xFD, 
  0xCD, 0xC6, 0xFE, 0x76, 0xE5, 0x21, 0xD9, 0xFD, 0xCD, 0xC6, 0xFE, 0x21, 0x75, 0xFD, 0xCD, 0xC6, 
  0xFE, 0xE1, 0xCD, 0x4B, 0xFF, 0xCD, 0x3E, 0xFF, 0xCD, 0x3E, 0xFF, 0xDB, 0x01, 0xFE, 0xFF, 0x20, 
  0xFA, 0xE9, 0x69, 0x4C, 0x6F, 0x61, 0x64, 0x20, 0x2D, 0x20, 0x49, 0x6E, 0x74, 0x65, 0x6C, 0x2D, 
  0x48, 0x65, 0x78, 0x20, 0x4C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x20, 0x2D, 0x20, 0x53, 0x32, 0x30, 
  0x30, 0x37, 0x31, 0x38, 0x00, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x41, 0x64, 
  0x64, 0x72, 0x65, 0x73, 0x73, 0x3A, 0x20, 0x00, 0x4C, 0x6F, 0x61, 0x64, 0x20, 0x65, 0x72, 0x72, 
  0x6F, 0x72, 0x20, 0x2D, 0x20, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x68, 0x61, 0x6C, 0x74, 
  0x65, 0x64, 0x00, 0x57, 0x61, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x70, 0x75, 0x74, 
  0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x2E, 0x2E, 0x00, 0x53, 0x79, 0x6E, 0x74, 0x61, 
  0x78, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x21, 0x00, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x73, 0x75, 
  0x6D, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x21, 0x00, 0x69, 0x4C, 0x6F, 0x61, 0x64, 0x3A, 0x20, 
  0x00, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x76, 0x69, 0x6F, 0x6C, 0x61, 0x74, 0x69, 
  0x6F, 0x6E, 0x21, 0x00, 0xF5, 0xD5, 0xC5, 0x01, 0xFF, 0xFF, 0x21, 0xA3, 0xFD, 0xCD, 0xC6, 0xFE, 
  0xCD, 0x3E, 0xFF, 0xCD, 0x72, 0xFF, 0xFE, 0x0D, 0x28, 0xF9, 0xFE, 0x0A, 0x28, 0xF5, 0xFE, 0x20, 
  0x28, 0xF1, 0xCD, 0x1A, 0xFF, 0xCD, 0x69, 0xFF, 0xFE, 0x3A, 0xC2, 0xA3, 0xFE, 0xCD, 0xE1, 0xFE, 
  0x57, 0x1E, 0x00, 0xCD, 0xBE, 0xFE, 0xCD, 0xD6, 0xFE, 0x3E, 0xFF, 0xB8, 0x20, 0x05, 0xB9, 0x20, 
  0x02, 0x44, 0x4D, 0x7C, 0xCD, 0xBE, 0xFE, 0x7D, 0xCD, 0xBE, 0xFE, 0xCD, 0xE1, 0xFE, 0xCD, 0xBE, 
  0xFE, 0xFE, 0x01, 0x20, 0x1E, 0xCD, 0xE1, 0xFE, 0xCD, 0xBE, 0xFE, 0x7B, 0xA7, 0x28, 0x66, 0xCD, 
  0x3E, 0xFF, 0x21, 0xD9, 0xFD, 0xCD, 0xC6, 0xFE, 0x21, 0xC9, 0xFD, 0xCD, 0xC6, 0xFE, 0x01, 0xFF, 
  0xFF, 0x18, 0x52, 0x7A, 0xA7, 0x28, 0x2C, 0xCD, 0xE1, 0xFE, 0xCD, 0xBE, 0xFE, 0xE5, 0xC5, 0xA7, 
  0x01, 0xF0, 0xFC, 0xED, 0x42, 0xC1, 0xE1, 0xDA, 0x8E, 0xFE, 0xCD, 0x3E, 0xFF, 0x21, 0xD9, 0xFD, 
  0xCD, 0xC6, 0xFE, 0x21, 0xE1, 0xFD, 0xCD, 0xC6, 0xFE, 0x01, 0xFF, 0xFF, 0x18, 0x27, 0x77, 0x23, 
  0x15, 0x18, 0xD0, 0xCD, 0xE1, 0xFE, 0xCD, 0xBE, 0xFE, 0x7B, 0xA7, 0x20, 0xB2, 0xCD, 0x3E, 0xFF, 
  0xC3, 0x03, 0xFE, 0xCD, 0x3E, 0xFF, 0x21, 0xD9, 0xFD, 0xCD, 0xC6, 0xFE, 0x21, 0xBB, 0xFD, 0xCD, 
  0xC6, 0xFE, 0x01, 0xFF, 0xFF, 0xCD, 0x3E, 0xFF, 0x60, 0x69, 0xC1, 0xD1, 0xF1, 0xC9, 0xC5, 0x4F, 
  0x7B, 0x91, 0x5F, 0x79, 0xC1, 0xC9, 0xF5, 0xE5, 0x7E, 0xFE, 0x00, 0x28, 0x06, 0xCD, 0x69, 0xFF, 
  0x23, 0x18, 0xF5, 0xE1, 0xF1, 0xC9, 0xF5, 0xCD, 0xE1, 0xFE, 0x67, 0xCD, 0xE1, 0xFE, 0x6F, 0xF1, 
  0xC9, 0xC5, 0xCD, 0xF4, 0xFE, 0xCB, 0x07, 0xCB, 0x07, 0xCB, 0x07, 0xCB, 0x07, 0x47, 0xCD, 0xF4, 
  0xFE, 0xB0, 0xC1, 0xC9, 0xCD, 0x72, 0xFF, 0xCD, 0x1A, 0xFF, 0xCD, 0x06, 0xFF, 0x30, 0xF5, 0xCD, 
  0x23, 0xFF, 0xCD, 0x2E, 0xFF, 0xC9, 0xFE, 0x47, 0xD0, 0xFE, 0x30, 0x30, 0x02, 0x3F, 0xC9, 0xFE, 
  0x3A, 0xD8, 0xFE, 0x41, 0x30, 0x02, 0x3F, 0xC9, 0x37, 0xC9, 0xFE, 0x61, 0xD8, 0xFE, 0x7B, 0xD0, 
  0xE6, 0x5F, 0xC9, 0xFE, 0x3A, 0x38, 0x02, 0xD6, 0x07, 0xD6, 0x30, 0xE6, 0x0F, 0xC9, 0xF5, 0xE6, 
  0x0F, 0xC6, 0x30, 0xFE, 0x3A, 0x38, 0x02, 0xC6, 0x07, 0xCD, 0x69, 0xFF, 0xF1, 0xC9, 0xF5, 0x3E, 
  0x0D, 0xCD, 0x69, 0xFF, 0x3E, 0x0A, 0xCD, 0x69, 0xFF, 0xF1, 0xC9, 0xE5, 0xF5, 0x7C, 0xCD, 0x58, 
  0xFF, 0x7D, 0xCD, 0x58, 0xFF, 0xF1, 0xE1, 0xC9, 0xF5, 0xC5, 0x47, 0x0F, 0x0F, 0x0F, 0x0F, 0xCD, 
  0x2E, 0xFF, 0x78, 0xCD, 0x2E, 0xFF, 0xC1, 0xF1, 0xC9, 0xF5, 0x3E, 0x01, 0xD3, 0x01, 0xF1, 0xD3, 
  0x00, 0xC9, 0xDB, 0x01, 0xFE, 0xFF, 0xCA, 0x72, 0xFF, 0xC9
  };

const word  boot_C_StrAddr = 0x0100;// Payload C image starting address
const byte  boot_C_[] PROGMEM = {   // Payload C image (Forth)
  0x00, 0xC3, 0xCB, 0x11, 0x00, 0xC3, 0xB6, 0x11, 0x01, 0x03, 0x01, 0x0E, 0x8A, 0x21, 0x08, 0x00, 
  0xB0, 0x6F, 0x10, 0x6F, 0xB0, 0x6F, 0x10, 0x6F, 0x1F, 0x00, 0x00, 0x00, 0x8A, 0x21, 0x95, 0x21, 
  0x34, 0x11, 0x05, 0x00, 0x20, 0xB3, 0x7C, 0x21, 0xB0, 0x6F, 0xB0, 0x6F, 0x00, 0x00, 0x21, 0x2C, 
  0x01, 0x7E, 0xB9, 0xC2, 0x3F, 0x01, 0x23, 0x7E, 0xB8, 0xC2, 0x3F, 0x01, 0x00, 0x00, 0x00, 0x0A, 
  0x03, 0x6F, 0xC3, 0x4B, 0x01, 0x00, 0xD5, 0xE5, 0x0A, 0x03, 0x6F, 0x0A, 0x03, 0x67, 0x5E, 0x23, 
  0x56, 0xEB, 0xE9, 0x83, 0x4C, 0x49, 0xD4, 0x00, 0x00, 0x5B, 0x01, 0x0A, 0x03, 0x6F, 0x0A, 0x03, 
  0x67, 0xC3, 0x47, 0x01, 0x87, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0xC5, 0x53, 0x01, 0x70, 0x01, 
  0xE1, 0xC3, 0x4E, 0x01, 0x86, 0x42, 0x52, 0x41, 0x4E, 0x43, 0xC8, 0x64, 0x01, 0x7F, 0x01, 0x60, 
  0x69, 0x5E, 0x23, 0x56, 0x2B, 0x19, 0x4D, 0x44, 0xC3, 0x48, 0x01, 0x87, 0x30, 0x42, 0x52, 0x41, 
  0x4E, 0x43, 0xC8, 0x74, 0x01, 0x97, 0x01, 0xE1, 0x7D, 0xB4, 0xCA, 0x7F, 0x01, 0x03, 0x03, 0xC3, 
  0x48, 0x01, 0x86, 0x28, 0x4C, 0x4F, 0x4F, 0x50, 0xA9, 0x8B, 0x01, 0xAD, 0x01, 0x2A, 0x2A, 0x01, 
  0x5E, 0x23, 0x56, 0x13, 0x72, 0x2B, 0x73, 0x23, 0x23, 0x7B, 0x96, 0x7A, 0x23, 0x9E, 0xFA, 0x7F, 
  0x01, 0x23, 0x22, 0x2A, 0x01, 0x03, 0x03, 0xC3, 0x48, 0x01, 0x87, 0x28, 0x2B, 0x4C, 0x4F, 0x4F, 
  0x50, 0xA9, 0xA2, 0x01, 0xD6, 0x01, 0xD1, 0x2A, 0x2A, 0x01, 0x7E, 0x83, 0x77, 0x5F, 0x23, 0x7E, 
  0x8A, 0x77, 0x23, 0x14, 0x15, 0x57, 0xFA, 0xF1, 0x01, 0x7B, 0x96, 0x7A, 0x23, 0x9E, 0xC3, 0xF6, 
  0x01, 0x7E, 0x93, 0x23, 0x7E, 0x9A, 0xFA, 0x7F, 0x01, 0x23, 0x22, 0x2A, 0x01, 0x03, 0x03, 0xC3, 
  0x48, 0x01, 0x84, 0x28, 0x44, 0x4F, 0xA9, 0xCA, 0x01, 0x0B, 0x02, 0x2A, 0x2A, 0x01, 0x2B, 0x2B, 
  0x2B, 0x2B, 0x22, 0x2A, 0x01, 0xD1, 0x73, 0x23, 0x72, 0xD1, 0x23, 0x73, 0x23, 0x72, 0xC3, 0x48, 
  0x01, 0x81, 0xC9, 0x02, 0x02, 0x27, 0x02, 0x2A, 0x2A, 0x01, 0x5E, 0x23, 0x56, 0xD5, 0xC3, 0x48, 
  0x01, 0x82, 0x49, 0xA7, 0x21, 0x02, 0x38, 0x02, 0x2A, 0x2A, 0x01, 0x23, 0x23, 0xC3, 0x2A, 0x02, 
  0x81, 0xCA, 0x31, 0x02, 0x46, 0x02, 0x2A, 0x2A, 0x01, 0x23, 0x23, 0x23, 0x23, 0xC3, 0x2A, 0x02, 
  0x85, 0x44, 0x49, 0x47, 0x49, 0xD4, 0x21, 0x02, 0x5A, 0x02, 0xE1, 0x26, 0x00, 0xD1, 0x7B, 0xD6, 
  0x30, 0xFE, 0x0A, 0xDA, 0x6D, 0x02, 0xD6, 0x07, 0xFE, 0x0A, 0xDA, 0x74, 0x02, 0xBD, 0x5F, 0x2E, 
  0x01, 0xDA, 0x46, 0x01, 0x6C, 0xC3, 0x47, 0x01, 0x86, 0x28, 0x46, 0x49, 0x4E, 0x44, 0xA9, 0x50, 
  0x02, 0x83, 0x02, 0xD1, 0xE1, 0xE5, 0x1A, 0xAE, 0xE6, 0x3F, 0xC2, 0xAF, 0x02, 0x23, 0x13, 0x1A, 
  0xAE, 0xCA, 0x8D, 0x02, 0x87, 0xC2, 0xAC, 0x02, 0x21, 0x05, 0x00, 0x19, 0xE3, 0x1B, 0x1A, 0xB7, 
  0xF2, 0x9D, 0x02, 0x5F, 0x16, 0x00, 0x21, 0x01, 0x00, 0xC3, 0x46, 0x01, 0xDA, 0xB5, 0x02, 0x13, 
  0x1A, 0xB7, 0xF2, 0xAF, 0x02, 0x13, 0xEB, 0x5E, 0x23, 0x56, 0x7A, 0xB3, 0xC2, 0x84, 0x02, 0xE1, 
  0xD5, 0xC3, 0x48, 0x01, 0x87, 0x45, 0x4E, 0x43, 0x4C, 0x4F, 0x53, 0xC5, 0x78, 0x02, 0xD0, 0x02, 
  0xD1, 0xE1, 0xE5, 0x7B, 0x11, 0xFF, 0xFF, 0x2B, 0x23, 0x13, 0xBE, 0xCA, 0xD8, 0x02, 0xD5, 0x57, 
  0x7E, 0xA7, 0x7A, 0xD1, 0xD5, 0xC2, 0xEF, 0x02, 0x13, 0xD5, 0x1B, 0xD5, 0xC3, 0x48, 0x01, 0xC5, 
  0x47, 0x23, 0x13, 0x7E, 0xB8, 0xCA, 0x02, 0x03, 0xA7, 0xC2, 0xF1, 0x02, 0xC1, 0xD5, 0xD5, 0xC3, 
  0x48, 0x01, 0xC1, 0xD5, 0x13, 0xD5, 0xC3, 0x48, 0x01, 0x84, 0x45, 0x4D, 0x49, 0xD4, 0xC4, 0x02, 
  0xE0, 0x06, 0x0C, 0x19, 0x67, 0x07, 0x3B, 0x08, 0x41, 0x06, 0xB0, 0x04, 0x83, 0x4B, 0x45, 0xD9, 
  0x09, 0x03, 0x24, 0x03, 0xC3, 0xEF, 0x18, 0x89, 0x3F, 0x54, 0x45, 0x52, 0x4D, 0x49, 0x4E, 0x41, 
  0xCC, 0x1C, 0x03, 0x35, 0x03, 0x21, 0x00, 0x00, 0xC3, 0xE9, 0x18, 0x82, 0x43, 0xD2, 0x27, 0x03, 
  0x42, 0x03, 0xC3, 0x5B, 0x19, 0x85, 0x43, 0x4D, 0x4F, 0x56, 0xC5, 0x3B, 0x03, 0x4F, 0x03, 0x69, 
  0x60, 0xC1, 0xD1, 0xE3, 0xC3, 0x5C, 0x03, 0x7E, 0x23, 0x12, 0x13, 0x0B, 0x78, 0xB1, 0xC2, 0x57, 
  0x03, 0xC1, 0xC3, 0x48, 0x01, 0x86, 0x3E, 0x43, 0x4D, 0x4F, 0x56, 0xC5, 0x45, 0x03, 0x70, 0x03, 
  0x69, 0x60, 0xC1, 0xD1, 0xE3, 0x09, 0x2B, 0xEB, 0x09, 0x2B, 0xEB, 0xC3, 0x83, 0x03, 0x7E, 0x2B, 
  0x12, 0x1B, 0x0B, 0x78, 0xB1, 0xC2, 0x7E, 0x03, 0xC1, 0xC3, 0x48, 0x01, 0x82, 0x55, 0xAA, 0x65, 
  0x03, 0x93, 0x03, 0xD1, 0xE1, 0xC5, 0x44, 0x7D, 0xCD, 0xAF, 0x03, 0xE5, 0x67, 0x78, 0x44, 0xCD, 
  0xAF, 0x03, 0xD1, 0x4A, 0x09, 0xCE, 0x00, 0x55, 0x6C, 0x67, 0xC1, 0xD5, 0xC3, 0x47, 0x01, 0x21, 
  0x00, 0x00, 0x0E, 0x04, 0x29, 0x17, 0xD2, 0xBC, 0x03, 0x19, 0xCE, 0x00, 0x29, 0x17, 0xD2, 0xC4, 
  0x03, 0x19, 0xCE, 0x00, 0x0D, 0xC2, 0xB4, 0x03, 0xC9, 0x82, 0x55, 0xAF, 0x8C, 0x03, 0xD0, 0x03, 
  0x60, 0x69, 0xC1, 0xD1, 0xE3, 0xEB, 0x7D, 0x91, 0x7C, 0x98, 0xD2, 0x14, 0x04, 0x7C, 0x65, 0x6A, 
  0x16, 0x08, 0xD5, 0xCD, 0x03, 0x04, 0xD1, 0xE5, 0x6B, 0xCD, 0x03, 0x04, 0x57, 0x5C, 0xC1, 0x61, 
  0xC1, 0xC3, 0x46, 0x01, 0x5F, 0x7C, 0x91, 0x67, 0x7B, 0x98, 0xD2, 0x0E, 0x04, 0x7C, 0x81, 0x67, 
  0x7B, 0x15, 0xC8, 0x29, 0x17, 0xD2, 0xF4, 0x03, 0x5F, 0x7C, 0x91, 0x67, 0x7B, 0x98, 0x2C, 0x15, 
  0xC2, 0x03, 0x04, 0xC9, 0x21, 0xFF, 0xFF, 0xC1, 0xE5, 0xC3, 0x47, 0x01, 0x85, 0x55, 0x2F, 0x4D, 
  0x4F, 0xC4, 0xC9, 0x03, 0xD0, 0x03, 0x83, 0x41, 0x4E, 0xC4, 0x1C, 0x04, 0x2E, 0x04, 0xD1, 0xE1, 
  0x7B, 0xA5, 0x6F, 0x7A, 0xA4, 0x67, 0xC3, 0x47, 0x01, 0x82, 0x4F, 0xD2, 0x26, 0x04, 0x40, 0x04, 
  0xD1, 0xE1, 0x7B, 0xB5, 0x6F, 0x7A, 0xB4, 0x67, 0xC3, 0x47, 0x01, 0x83, 0x58, 0x4F, 0xD2, 0x39, 
  0x04, 0x53, 0x04, 0xD1, 0xE1, 0x7B, 0xAD, 0x6F, 0x7A, 0xAC, 0x67, 0xC3, 0x47, 0x01, 0x83, 0x53, 
  0x50, 0xC0, 0x4B, 0x04, 0x66, 0x04, 0x21, 0x00, 0x00, 0x39, 0xC3, 0x47, 0x01, 0x83, 0x53, 0x50, 
  0xA1, 0x5E, 0x04, 0x75, 0x04, 0x2A, 0x28, 0x01, 0x11, 0x06, 0x00, 0x19, 0x5E, 0x23, 0x56, 0xEB, 
  0xF9, 0xC3, 0x48, 0x01, 0x83, 0x52, 0x50, 0xC0, 0x6D, 0x04, 0x8C, 0x04, 0x2A, 0x2A, 0x01, 0xC3, 
  0x47, 0x01, 0x83, 0x52, 0x50, 0xA1, 0x84, 0x04, 0x9A, 0x04, 0x2A, 0x28, 0x01, 0x11, 0x08, 0x00, 
  0x19, 0x5E, 0x23, 0x56, 0xEB, 0x22, 0x2A, 0x01, 0xC3, 0x48, 0x01, 0x82, 0x3B, 0xD3, 0x92, 0x04, 
  0xB2, 0x04, 0x2A, 0x2A, 0x01, 0x4E, 0x23, 0x46, 0x23, 0x22, 0x2A, 0x01, 0xC3, 0x48, 0x01, 0x84, 
  0x45, 0x58, 0x49, 0xD4, 0xAB, 0x04, 0xB2, 0x04, 0x85, 0x4C, 0x45, 0x41, 0x56, 0xC5, 0xBF, 0x04, 
  0xD2, 0x04, 0x2A, 0x2A, 0x01, 0x5E, 0x23, 0x56, 0x23, 0x73, 0x23, 0x72, 0xC3, 0x48, 0x01, 0x82, 
  0x3E, 0xD2, 0xC8, 0x04, 0xE6, 0x04, 0xD1, 0x2A, 0x2A, 0x01, 0x2B, 0x2B, 0x22, 0x2A, 0x01, 0x73, 
  0x23, 0x72, 0xC3, 0x48, 0x01, 0x82, 0x52, 0xBE, 0xDF, 0x04, 0xFC, 0x04, 0x2A, 0x2A, 0x01, 0x5E, 
  0x23, 0x56, 0x23, 0x22, 0x2A, 0x01, 0xD5, 0xC3, 0x48, 0x01, 0x81, 0xD2, 0xF5, 0x04, 0x27, 0x02, 
  0x82, 0x52, 0xC0, 0x0A, 0x05, 0x27, 0x02, 0x82, 0x30, 0xBD, 0x10, 0x05, 0x1E, 0x05, 0xE1, 0x7D, 
  0xB4, 0x21, 0x00, 0x00, 0xC2, 0x28, 0x05, 0x23, 0xC3, 0x47, 0x01, 0x83, 0x4E, 0x4F, 0xD4, 0x17, 
  0x05, 0x1E, 0x05, 0x82, 0x30, 0xBC, 0x2B, 0x05, 0x3A, 0x05, 0xF1, 0xB7, 0x21, 0x00, 0x00, 0xF2, 
  0x47, 0x01, 0x2C, 0xC3, 0x47, 0x01, 0x81, 0xAB, 0x33, 0x05, 0x4C, 0x05, 0xD1, 0xE1, 0x19, 0xC3, 
  0x47, 0x01, 0x82, 0x44, 0xAB, 0x46, 0x05, 0x59, 0x05, 0x21, 0x06, 0x00, 0x39, 0x5E, 0x71, 0x23, 
  0x56, 0x70, 0xC1, 0xE1, 0x19, 0xEB, 0xE1, 0x7D, 0x89, 0x6F, 0x7C, 0x88, 0x67, 0xC1, 0xD5, 0xC3, 
  0x47, 0x01, 0x85, 0x4D, 0x49, 0x4E, 0x55, 0xD3, 0x52, 0x05, 0x7C, 0x05, 0xE1, 0x7D, 0x2F, 0x6F, 
  0x7C, 0x2F, 0x67, 0x23, 0xC3, 0x47, 0x01, 0x86, 0x4E, 0x45, 0x47, 0x41, 0x54, 0xC5, 0x72, 0x05, 
  0x7C, 0x05, 0x86, 0x44, 0x4D, 0x49, 0x4E, 0x55, 0xD3, 0x87, 0x05, 0x9D, 0x05, 0xE1, 0xD1, 0x97, 
  0x93, 0x5F, 0x3E, 0x00, 0x9A, 0x57, 0x3E, 0x00, 0x9D, 0x6F, 0x3E, 0x00, 0x9C, 0x67, 0xD5, 0xC3, 
  0x47, 0x01, 0x84, 0x4F, 0x56, 0x45, 0xD2, 0x92, 0x05, 0xBB, 0x05, 0xD1, 0xE1, 0xE5, 0xC3, 0x46, 
  0x01, 0x84, 0x44, 0x52, 0x4F, 0xD0, 0xB2, 0x05, 0xCA, 0x05, 0xE1, 0xC3, 0x48, 0x01, 0x84, 0x53, 
  0x57, 0x41, 0xD0, 0xC1, 0x05, 0xD7, 0x05, 0xE1, 0xE3, 0xC3, 0x47, 0x01, 0x83, 0x44, 0x55, 0xD0, 
  0xCE, 0x05, 0xE4, 0x05, 0xE1, 0xE5, 0xC3, 0x47, 0x01, 0x84, 0x32, 0x44, 0x55, 0xD0, 0xDC, 0x05, 
  0xF2, 0x05, 0xE1, 0xD1, 0xD5, 0xE5, 0xC3, 0x46, 0x01, 0x85, 0x32, 0x44, 0x52, 0x4F, 0xD0, 0xE9, 
  0x05, 0x03, 0x06, 0xE1, 0xE1, 0xC3, 0x48, 0x01, 0x85, 0x32, 0x53, 0x57, 0x41, 0xD0, 0xF9, 0x05, 
  0x12, 0x06, 0xE1, 0xD1, 0xE3, 0xEB, 0x33, 0x33, 0xE3, 0x3B, 0x3B, 0xEB, 0xC3, 0x46, 0x01, 0x85, 
  0x32, 0x4F, 0x56, 0x45, 0xD2, 0x08, 0x06, 0x29, 0x06, 0x33, 0x33, 0x33, 0x33, 0xE1, 0xE5, 0x33, 
  0x33, 0xD1, 0xD5, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0xC3, 0x46, 0x01, 0x82, 0x2B, 0xA1, 0x1F, 
  0x06, 0x43, 0x06, 0xE1, 0xD1, 0x7E, 0x83, 0x77, 0x23, 0x7E, 0x8A, 0x77, 0xC3, 0x48, 0x01, 0x86, 
  0x54, 0x4F, 0x47, 0x47, 0x4C, 0xC5, 0x3C, 0x06, 0x5A, 0x06, 0xD1, 0xE1, 0x7E, 0xAB, 0x77, 0xC3, 
  0x48, 0x01, 0x81, 0xC0, 0x4F, 0x06, 0x68, 0x06, 0xE1, 0x5E, 0x23, 0x56, 0xD5, 0xC3, 0x48, 0x01, 
  0x82, 0x43, 0xC0, 0x62, 0x06, 0x77, 0x06, 0xE1, 0x6E, 0x26, 0x00, 0xC3, 0x47, 0x01, 0x82, 0x32, 
  0xC0, 0x70, 0x06, 0x85, 0x06, 0xE1, 0x11, 0x02, 0x00, 0x19, 0x5E, 0x23, 0x56, 0xD5, 0x11, 0xFD, 
  0xFF, 0x19, 0x5E, 0x23, 0x56, 0xD5, 0xC3, 0x48, 0x01, 0x81, 0xA1, 0x7E, 0x06, 0x9F, 0x06, 0xE1, 
  0xD1, 0x73, 0x23, 0x72, 0xC3, 0x48, 0x01, 0x82, 0x43, 0xA1, 0x99, 0x06, 0xAE, 0x06, 0xE1, 0xD1, 
  0x73, 0xC3, 0x48, 0x01, 0x82, 0x32, 0xA1, 0xA7, 0x06, 0xBB, 0x06, 0xE1, 0xD1, 0x73, 0x23, 0x72, 
  0x23, 0xD1, 0x73, 0x23, 0x72, 0xC3, 0x48, 0x01, 0xC1, 0xBA, 0xB4, 0x06, 0xE0, 0x06, 0xF5, 0x0A, 
  0xB0, 0x0A, 0x6A, 0x08, 0x66, 0x06, 0x5D, 0x08, 0x9D, 0x06, 0xBB, 0x0F, 0x7A, 0x0B, 0xE2, 0x0B, 
  0x2A, 0x2A, 0x01, 0x2B, 0x2B, 0x22, 0x2A, 0x01, 0x71, 0x23, 0x70, 0x13, 0x4B, 0x42, 0xC3, 0x48, 
  0x01, 0xC1, 0xBB, 0xC8, 0x06, 0xE0, 0x06, 0x1F, 0x0B, 0x56, 0x0B, 0xB0, 0x04, 0x8F, 0x0B, 0x6C, 
  0x0B, 0xB0, 0x04, 0x84, 0x4E, 0x4F, 0x4F, 0xD0, 0xF1, 0x06, 0xE0, 0x06, 0xB0, 0x04, 0x88, 0x43, 
  0x4F, 0x4E, 0x53, 0x54, 0x41, 0x4E, 0xD4, 0x03, 0x07, 0xE0, 0x06, 0xBB, 0x0F, 0x8F, 0x0B, 0x29, 
  0x09, 0xE2, 0x0B, 0x13, 0xEB, 0x5E, 0x23, 0x56, 0xD5, 0xC3, 0x48, 0x01, 0x88, 0x56, 0x41, 0x52, 
  0x49, 0x41, 0x42, 0x4C, 0xC5, 0x0E, 0x07, 0xE0, 0x06, 0x19, 0x07, 0xE2, 0x0B, 0x13, 0xD5, 0xC3, 
  0x48, 0x01, 0x84, 0x55, 0x53, 0x45, 0xD2, 0x2C, 0x07, 0xE0, 0x06, 0x19, 0x07, 0xE2, 0x0B, 0x13, 
  0xEB, 0x5E, 0x16, 0x00, 0x2A, 0x28, 0x01, 0x19, 0xC3, 0x47, 0x01, 0x81, 0xB0, 0x42, 0x07, 0x23, 
  0x07, 0x00, 0x00, 0x81, 0xB1, 0x5B, 0x07, 0x23, 0x07, 0x01, 0x00, 0x81, 0xB2, 0x63, 0x07, 0x23, 
  0x07, 0x02, 0x00, 0x81, 0xB3, 0x6B, 0x07, 0x23, 0x07, 0x03, 0x00, 0x82, 0x42, 0xCC, 0x73, 0x07, 
  0x23, 0x07, 0x20, 0x00, 0x83, 0x43, 0x2F, 0xCC, 0x7B, 0x07, 0x23, 0x07, 0x40, 0x00, 0x85, 0x46, 
  0x49, 0x52, 0x53, 0xD4, 0x84, 0x07, 0x23, 0x07, 0xF0, 0x6F, 0x85, 0x4C, 0x49, 0x4D, 0x49, 0xD4, 
  0x8E, 0x07, 0x23, 0x07, 0x00, 0xA0, 0x85, 0x42, 0x2F, 0x42, 0x55, 0xC6, 0x9A, 0x07, 0x23, 0x07, 
  0x00, 0x04, 0x85, 0x42, 0x2F, 0x53, 0x43, 0xD2, 0xA6, 0x07, 0x23, 0x07, 0x01, 0x00, 0x87, 0x2B, 
  0x4F, 0x52, 0x49, 0x47, 0x49, 0xCE, 0xB2, 0x07, 0xE0, 0x06, 0x59, 0x01, 0x00, 0x01, 0x4A, 0x05, 
  0xB0, 0x04, 0x82, 0x53, 0xB0, 0xBE, 0x07, 0x4F, 0x07, 0x06, 0x82, 0x52, 0xB0, 0xD2, 0x07, 0x4F, 
  0x07, 0x08, 0x83, 0x54, 0x49, 0xC2, 0xDA, 0x07, 0x4F, 0x07, 0x0A, 0x85, 0x57, 0x49, 0x44, 0x54, 
  0xC8, 0xE2, 0x07, 0x4F, 0x07, 0x0C, 0x87, 0x57, 0x41, 0x52, 0x4E, 0x49, 0x4E, 0xC7, 0xEB, 0x07, 
  0x4F, 0x07, 0x0E, 0x85, 0x46, 0x45, 0x4E, 0x43, 0xC5, 0xF6, 0x07, 0x4F, 0x07, 0x10, 0x82, 0x44, 
  0xD0, 0x03, 0x08, 0x4F, 0x07, 0x12, 0x88, 0x56, 0x4F, 0x43, 0x2D, 0x4C, 0x49, 0x4E, 0xCB, 0x0E, 
  0x08, 0x4F, 0x07, 0x14, 0x83, 0x42, 0x4C, 0xCB, 0x16, 0x08, 0x4F, 0x07, 0x16, 0x82, 0x49, 0xCE, 
  0x24, 0x08, 0x4F, 0x07, 0x18, 0x83, 0x4F, 0x55, 0xD4, 0x2D, 0x08, 0x4F, 0x07, 0x1A, 0x83, 0x53, 
  0x43, 0xD2, 0x35, 0x08, 0x4F, 0x07, 0x1C, 0x86, 0x4F, 0x46, 0x46, 0x53, 0x45, 0xD4, 0x3E, 0x08, 
  0x4F, 0x07, 0x1E, 0x87, 0x43, 0x4F, 0x4E, 0x54, 0x45, 0x58, 0xD4, 0x47, 0x08, 0x4F, 0x07, 0x20, 
  0x87, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4E, 0xD4, 0x53, 0x08, 0x4F, 0x07, 0x22, 0x85, 0x53, 0x54, 
  0x41, 0x54, 0xC5, 0x60, 0x08, 0x4F, 0x07, 0x24, 0x84, 0x42, 0x41, 0x53, 0xC5, 0x6D, 0x08, 0x4F, 
  0x07, 0x26, 0x83, 0x44, 0x50, 0xCC, 0x78, 0x08, 0x4F, 0x07, 0x28, 0x83, 0x46, 0x4C, 0xC4, 0x82, 
  0x08, 0x4F, 0x07, 0x2A, 0x83, 0x43, 0x53, 0xD0, 0x8B, 0x08, 0x4F, 0x07, 0x2C, 0x82, 0x52, 0xA3, 
  0x94, 0x08, 0x4F, 0x07, 0x2E, 0x83, 0x48, 0x4C, 0xC4, 0x9D, 0x08, 0x4F, 0x07, 0x30, 0x82, 0x31, 
  0xAB, 0xA5, 0x08, 0xB5, 0x08, 0xE1, 0x23, 0xC3, 0x47, 0x01, 0x82, 0x32, 0xAB, 0xAE, 0x08, 0xC1, 
  0x08, 0xE1, 0x23, 0x23, 0xC3, 0x47, 0x01, 0x82, 0x31, 0xAD, 0xBA, 0x08, 0xCE, 0x08, 0xE1, 0x2B, 
  0xC3, 0x47, 0x01, 0x82, 0x32, 0xAD, 0xC7, 0x08, 0xDA, 0x08, 0xE1, 0x2B, 0x2B, 0xC3, 0x47, 0x01, 
  0x82, 0x32, 0xAA, 0xD3, 0x08, 0xE7, 0x08, 0xE1, 0x37, 0x3F, 0x7D, 0x17, 0x6F, 0x7C, 0x17, 0x67, 
  0xC3, 0x47, 0x01, 0x82, 0x32, 0xAF, 0xE0, 0x08, 0xFA, 0x08, 0xE1, 0x7C, 0x07, 0x0F, 0x1F, 0x67, 
  0x7D, 0x1F, 0x6F, 0xC3, 0x47, 0x01, 0x84, 0x48, 0x45, 0x52, 0xC5, 0xF3, 0x08, 0xE0, 0x06, 0x13, 
  0x08, 0x66, 0x06, 0xB0, 0x04, 0x85, 0x41, 0x4C, 0x4C, 0x4F, 0xD4, 0x06, 0x09, 0xE0, 0x06, 0x13, 
  0x08, 0x41, 0x06, 0xB0, 0x04, 0x81, 0xAC, 0x15, 0x09, 0xE0, 0x06, 0x0D, 0x09, 0x9D, 0x06, 0x6F, 
  0x07, 0x1D, 0x09, 0xB0, 0x04, 0x82, 0x43, 0xAC, 0x25, 0x09, 0xE0, 0x06, 0x0D, 0x09, 0xAC, 0x06, 
  0x67, 0x07, 0x1D, 0x09, 0xB0, 0x04, 0x7D, 0x93, 0x6F, 0x7C, 0x9A, 0x67, 0xC9, 0x81, 0xAD, 0x35, 
  0x09, 0x53, 0x09, 0xD1, 0xE1, 0xCD, 0x46, 0x09, 0xC3, 0x47, 0x01, 0x81, 0xBD, 0x4D, 0x09, 0xE0, 
  0x06, 0x51, 0x09, 0x1C, 0x05, 0xB0, 0x04, 0x82, 0x3C, 0xBE, 0x5B, 0x09, 0xE0, 0x06, 0x51, 0x09, 
  0x1C, 0x05, 0x1C, 0x05, 0xB0, 0x04, 0x84, 0x3D, 0x4E, 0x4F, 0xD4, 0x67, 0x09, 0xE0, 0x06, 0x6C, 
  0x09, 0xB0, 0x04, 0x81, 0xBC, 0x76, 0x09, 0x89, 0x09, 0xD1, 0xE1, 0x7A, 0xAC, 0xFA, 0x93, 0x09, 
  0xCD, 0x46, 0x09, 0x24, 0x25, 0xFA, 0x9E, 0x09, 0x21, 0x00, 0x00, 0xC3, 0x47, 0x01, 0x21, 0x01, 
  0x00, 0xC3, 0x47, 0x01, 0x82, 0x55, 0xBC, 0x83, 0x09, 0xE0, 0x06, 0xF0, 0x05, 0x51, 0x04, 0x38, 
  0x05, 0x95, 0x01, 0x0C, 0x00, 0xC8, 0x05, 0x38, 0x05, 0x1C, 0x05, 0x7D, 0x01, 0x06, 0x00, 0x51, 
  0x09, 0x38, 0x05, 0xB0, 0x04, 0x81, 0xBE, 0xA4, 0x09, 0xE0, 0x06, 0xD5, 0x05, 0x87, 0x09, 0xB0, 
  0x04, 0x82, 0x30, 0xBE, 0xC5, 0x09, 0xE0, 0x06, 0x5F, 0x07, 0xC9, 0x09, 0xB0, 0x04, 0x83, 0x52, 
  0x4F, 0xD4, 0xD1, 0x09, 0xE6, 0x09, 0xD1, 0xE1, 0xE3, 0xC3, 0x46, 0x01, 0x84, 0x2D, 0x52, 0x4F, 
  0xD4, 0xDE, 0x09, 0xE0, 0x06, 0xE4, 0x09, 0xE4, 0x09, 0xB0, 0x04, 0x85, 0x53, 0x50, 0x41, 0x43, 
  0xC5, 0xEC, 0x09, 0xE0, 0x06, 0x80, 0x07, 0x10, 0x03, 0xB0, 0x04, 0x84, 0x2D, 0x44, 0x55, 0xD0, 
  0xFB, 0x09, 0xE0, 0x06, 0xE2, 0x05, 0x95, 0x01, 0x04, 0x00, 0xE2, 0x05, 0xB0, 0x04, 0x84, 0x3F, 
  0x44, 0x55, 0xD0, 0x0B, 0x0A, 0x14, 0x0A, 0x88, 0x54, 0x52, 0x41, 0x56, 0x45, 0x52, 0x53, 0xC5, 
  0x1E, 0x0A, 0xE0, 0x06, 0xD5, 0x05, 0xB9, 0x05, 0x4A, 0x05, 0x59, 0x01, 0x7F, 0x00, 0xB9, 0x05, 
  0x75, 0x06, 0x87, 0x09, 0x95, 0x01, 0xF0, 0xFF, 0xD5, 0x05, 0xC8, 0x05, 0xB0, 0x04, 0x86, 0x4C, 
  0x41, 0x54, 0x45, 0x53, 0xD4, 0x27, 0x0A, 0xE0, 0x06, 0x6A, 0x08, 0x66, 0x06, 0x66, 0x06, 0xB0, 
  0x04, 0x83, 0x4C, 0x46, 0xC1, 0x4E, 0x0A, 0xE0, 0x06, 0x59, 0x01, 0x04, 0x00, 0x51, 0x09, 0xB0, 
  0x04, 0x83, 0x43, 0x46, 0xC1, 0x61, 0x0A, 0xE0, 0x06, 0x6F, 0x07, 0x51, 0x09, 0xB0, 0x04, 0x83, 
  0x4E, 0x46, 0xC1, 0x71, 0x0A, 0xE0, 0x06, 0x59, 0x01, 0x05, 0x00, 0x51, 0x09, 0x59, 0x01, 0xFF, 
  0xFF, 0x32, 0x0A, 0xB0, 0x04, 0x83, 0x50, 0x46, 0xC1, 0x7F, 0x0A, 0xE0, 0x06, 0x67, 0x07, 0x32, 
  0x0A, 0x59, 0x01, 0x05, 0x00, 0x4A, 0x05, 0xB0, 0x04, 0x84, 0x21, 0x43, 0x53, 0xD0, 0x95, 0x0A, 
  0xE0, 0x06, 0x64, 0x04, 0x9A, 0x08, 0x9D, 0x06, 0xB0, 0x04, 0x86, 0x3F, 0x45, 0x52, 0x52, 0x4F, 
  0xD2, 0xA9, 0x0A, 0xE0, 0x06, 0xD5, 0x05, 0x95, 0x01, 0x08, 0x00, 0x4D, 0x0F, 0x7D, 0x01, 0x04, 
  0x00, 0xC8, 0x05, 0xB0, 0x04, 0x85, 0x3F, 0x43, 0x4F, 0x4D, 0xD0, 0xBA, 0x0A, 0xE0, 0x06, 0x75, 
  0x08, 0x66, 0x06, 0x1C, 0x05, 0x59, 0x01, 0x11, 0x00, 0xC3, 0x0A, 0xB0, 0x04, 0x85, 0x3F, 0x45, 
  0x58, 0x45, 0xC3, 0xD5, 0x0A, 0xE0, 0x06, 0x75, 0x08, 0x66, 0x06, 0x59, 0x01, 0x12, 0x00, 0xC3, 
  0x0A, 0xB0, 0x04, 0x86, 0x3F, 0x50, 0x41, 0x49, 0x52, 0xD3, 0xED, 0x0A, 0xE0, 0x06, 0x51, 0x09, 
  0x59, 0x01, 0x13, 0x00, 0xC3, 0x0A, 0xB0, 0x04, 0x84, 0x3F, 0x43, 0x53, 0xD0, 0x03, 0x0B, 0xE0, 
  0x06, 0x64, 0x04, 0x9A, 0x08, 0x66, 0x06, 0x51, 0x09, 0x59, 0x01, 0x14, 0x00, 0xC3, 0x0A, 0xB0, 
  0x04, 0x88, 0x3F, 0x4C, 0x4F, 0x41, 0x44, 0x49, 0x4E, 0xC7, 0x18, 0x0B, 0xE0, 0x06, 0x2A, 0x08, 
  0x66, 0x06, 0x1C, 0x05, 0x59, 0x01, 0x16, 0x00, 0xC3, 0x0A, 0xB0, 0x04, 0x87, 0x43, 0x4F, 0x4D, 
  0x50, 0x49, 0x4C, 0xC5, 0x31, 0x0B, 0xE0, 0x06, 0xDD, 0x0A, 0xFA, 0x04, 0xE2, 0x05, 0xBF, 0x08, 
  0xE4, 0x04, 0x66, 0x06, 0x29, 0x09, 0xB0, 0x04, 0xC1, 0xDB, 0x4C, 0x0B, 0xE0, 0x06, 0x5F, 0x07, 
  0x75, 0x08, 0x9D, 0x06, 0xB0, 0x04, 0x81, 0xDD, 0x68, 0x0B, 0xE0, 0x06, 0x59, 0x01, 0xC0, 0x00, 
  0x75, 0x08, 0x9D, 0x06, 0xB0, 0x04, 0x86, 0x53, 0x4D, 0x55, 0x44, 0x47, 0xC5, 0x76, 0x0B, 0xE0, 
  0x06, 0x57, 0x0A, 0x59, 0x01, 0x20, 0x00, 0x58, 0x06, 0xB0, 0x04, 0x83, 0x48, 0x45, 0xD8, 0x86, 
  0x0B, 0xE0, 0x06, 0x59, 0x01, 0x10, 0x00, 0x7F, 0x08, 0x9D, 0x06, 0xB0, 0x04, 0x87, 0x44, 0x45, 
  0x43, 0x49, 0x4D, 0x41, 0xCC, 0x9B, 0x0B, 0xE0, 0x06, 0x59, 0x01, 0x0A, 0x00, 0x7F, 0x08, 0x9D, 
  0x06, 0xB0, 0x04, 0x86, 0x42, 0x49, 0x4E, 0x41, 0x52, 0xD9, 0xAD, 0x0B, 0xE0, 0x06, 0x59, 0x01, 
  0x02, 0x00, 0x7F, 0x08, 0x9D, 0x06, 0xB0, 0x04, 0x87, 0x28, 0x3B, 0x43, 0x4F, 0x44, 0x45, 0xA9, 
  0xC3, 0x0B, 0xE0, 0x06, 0xFA, 0x04, 0x57, 0x0A, 0x9B, 0x0A, 0x77, 0x0A, 0x9D, 0x06, 0xB0, 0x04, 
  0xC5, 0x3B, 0x43, 0x4F, 0x44, 0xC5, 0xD8, 0x0B, 0xE0, 0x06, 0x1F, 0x0B, 0x56, 0x0B, 0xE2, 0x0B, 
  0x6C, 0x0B, 0x0A, 0x07, 0xB0, 0x04, 0x87, 0x3C, 0x42, 0x55, 0x49, 0x4C, 0x44, 0xD3, 0xF0, 0x0B, 
  0xE0, 0x06, 0x5F, 0x07, 0x19, 0x07, 0xB0, 0x04, 0x85, 0x44, 0x4F, 0x45, 0x53, 0xBE, 0x06, 0x0C, 
  0xE0, 0x06, 0xFA, 0x04, 0x57, 0x0A, 0x9B, 0x0A, 0x9D, 0x06, 0xE2, 0x0B, 0x2A, 0x2A, 0x01, 0x2B, 
  0x70, 0x2B, 0x71, 0x22, 0x2A, 0x01, 0x13, 0xEB, 0x4E, 0x23, 0x46, 0x23, 0xC3, 0x47, 0x01, 0x85, 
  0x43, 0x4F, 0x55, 0x4E, 0xD4, 0x18, 0x0C, 0xE0, 0x06, 0xE2, 0x05, 0xB3, 0x08, 0xD5, 0x05, 0x75, 
  0x06, 0xB0, 0x04, 0x84, 0x54, 0x59, 0x50, 0xC5, 0x3F, 0x0C, 0xE0, 0x06, 0x12, 0x0A, 0x95, 0x01, 
  0x18, 0x00, 0xB9, 0x05, 0x4A, 0x05, 0xD5, 0x05, 0x09, 0x02, 0x25, 0x02, 0x75, 0x06, 0x10, 0x03, 
  0xAB, 0x01, 0xF8, 0xFF, 0x7D, 0x01, 0x04, 0x00, 0xC8, 0x05, 0xB0, 0x04, 0x89, 0x2D, 0x54, 0x52, 
  0x41, 0x49, 0x4C, 0x49, 0x4E, 0xC7, 0x53, 0x0C, 0xE0, 0x06, 0xE2, 0x05, 0x5F, 0x07, 0x09, 0x02, 
  0xB9, 0x05, 0xB9, 0x05, 0x4A, 0x05, 0x67, 0x07, 0x51, 0x09, 0x75, 0x06, 0x80, 0x07, 0x51, 0x09, 
  0x95, 0x01, 0x08, 0x00, 0xD0, 0x04, 0x7D, 0x01, 0x06, 0x00, 0x67, 0x07, 0x51, 0x09, 0xAB, 0x01, 
  0xE0, 0xFF, 0xB0, 0x04, 0x84, 0x28, 0x2E, 0x22, 0xA9, 0x7C, 0x0C, 0xE0, 0x06, 0x0E, 0x05, 0x47, 
  0x0C, 0xE2, 0x05, 0xB3, 0x08, 0xFA, 0x04, 0x4A, 0x05, 0xE4, 0x04, 0x5A, 0x0C, 0xB0, 0x04, 0xC2, 
  0x2E, 0xA2, 0xB4, 0x0C, 0xE0, 0x06, 0x59, 0x01, 0x22, 0x00, 0x75, 0x08, 0x66, 0x06, 0x95, 0x01, 
  0x14, 0x00, 0x56, 0x0B, 0xBB, 0x0C, 0x1F, 0x0E, 0x0D, 0x09, 0x75, 0x06, 0xB3, 0x08, 0x1D, 0x09, 
  0x7D, 0x01, 0x0A, 0x00, 0x1F, 0x0E, 0x0D, 0x09, 0x47, 0x0C, 0x5A, 0x0C, 0xB0, 0x04, 0x86, 0x45, 
  0x58, 0x50, 0x45, 0x43, 0xD4, 0xCF, 0x0C, 0xE0, 0x06, 0xB9, 0x05, 0x4A, 0x05, 0xB9, 0x05, 0x09, 
  0x02, 0x22, 0x03, 0xE2, 0x05, 0x59, 0x01, 0x0E, 0x00, 0xC8, 0x07, 0x66, 0x06, 0x5F, 0x09, 0x95, 
  0x01, 0x2A, 0x00, 0xC8, 0x05, 0xE2, 0x05, 0x25, 0x02, 0x5F, 0x09, 0xE2, 0x05, 0xFA, 0x04, 0x6F, 
  0x07, 0x51, 0x09, 0x4A, 0x05, 0xE4, 0x04, 0x95, 0x01, 0x0A, 0x00, 0x59, 0x01, 0x07, 0x00, 0x7D, 
  0x01, 0x06, 0x00, 0x59, 0x01, 0x08, 0x00, 0x7D, 0x01, 0x28, 0x00, 0xE2, 0x05, 0x59, 0x01, 0x0D, 
  0x00, 0x5F, 0x09, 0x95, 0x01, 0x0E, 0x00, 0xD0, 0x04, 0xC8, 0x05, 0x80, 0x07, 0x5F, 0x07, 0x7D, 
  0x01, 0x04, 0x00, 0xE2, 0x05, 0x25, 0x02, 0xAC, 0x06, 0x5F, 0x07, 0x25, 0x02, 0xB3, 0x08, 0x9D, 
  0x06, 0x10, 0x03, 0xAB, 0x01, 0x9C, 0xFF, 0xC8, 0x05, 0xB0, 0x04, 0x85, 0x51, 0x55, 0x45, 0x52, 
  0xD9, 0xFE, 0x0C, 0xE0, 0x06, 0xE8, 0x07, 0x66, 0x06, 0x59, 0x01, 0x50, 0x00, 0x07, 0x0D, 0x5F, 
  0x07, 0x32, 0x08, 0x9D, 0x06, 0xB0, 0x04, 0xC1, 0x80, 0x7B, 0x0D, 0xE0, 0x06, 0x2A, 0x08, 0x66, 
  0x06, 0x95, 0x01, 0x04, 0x00, 0xF5, 0x0A, 0xFA, 0x04, 0xC8, 0x05, 0xB0, 0x04, 0x84, 0x46, 0x49, 
  0x4C, 0xCC, 0x97, 0x0D, 0xB6, 0x0D, 0x69, 0x60, 0xD1, 0xC1, 0xE3, 0xEB, 0x78, 0xB1, 0xCA, 0xC8, 
  0x0D, 0x7D, 0x12, 0x13, 0x0B, 0xC3, 0xBC, 0x0D, 0xC1, 0xC3, 0x48, 0x01, 0x85, 0x45, 0x52, 0x41, 
  0x53, 0xC5, 0xAD, 0x0D, 0xE0, 0x06, 0x5F, 0x07, 0xB4, 0x0D, 0xB0, 0x04, 0x86, 0x42, 0x4C, 0x41, 
  0x4E, 0x4B, 0xD3, 0xCC, 0x0D, 0xE0, 0x06, 0x80, 0x07, 0xB4, 0x0D, 0xB0, 0x04, 0x84, 0x48, 0x4F, 
  0x4C, 0xC4, 0xDC, 0x0D, 0xE0, 0x06, 0x59, 0x01, 0xFF, 0xFF, 0xAB, 0x08, 0x41, 0x06, 0xAB, 0x08, 
  0x66, 0x06, 0xAC, 0x06, 0xB0, 0x04, 0x83, 0x50, 0x41, 0xC4, 0xED, 0x0D, 0xE0, 0x06, 0x0D, 0x09, 
  0x59, 0x01, 0x44, 0x00, 0x4A, 0x05, 0xB0, 0x04, 0x84, 0x57, 0x4F, 0x52, 0xC4, 0x06, 0x0E, 0xE0, 
  0x06, 0x2A, 0x08, 0x66, 0x06, 0x95, 0x01, 0x0C, 0x00, 0x2A, 0x08, 0x66, 0x06, 0x89, 0x15, 0x7D, 
  0x01, 0x06, 0x00, 0xE8, 0x07, 0x66, 0x06, 0x32, 0x08, 0x66, 0x06, 0x4A, 0x05, 0xD5, 0x05, 0xCE, 
  0x02, 0x0D, 0x09, 0x59, 0x01, 0x22, 0x00, 0xE5, 0x0D, 0x32, 0x08, 0x41, 0x06, 0xB9, 0x05, 0x51, 
  0x09, 0xE4, 0x04, 0x0E, 0x05, 0x0D, 0x09, 0xAC, 0x06, 0x4A, 0x05, 0x0D, 0x09, 0xB3, 0x08, 0xFA, 
  0x04, 0x4D, 0x03, 0xB0, 0x04, 0x88, 0x28, 0x4E, 0x55, 0x4D, 0x42, 0x45, 0x52, 0xA9, 0x18, 0x0E, 
  0xE0, 0x06, 0xB3, 0x08, 0xE2, 0x05, 0xE4, 0x04, 0x75, 0x06, 0x7F, 0x08, 0x66, 0x06, 0x58, 0x02, 
  0x95, 0x01, 0x2C, 0x00, 0xD5, 0x05, 0x7F, 0x08, 0x66, 0x06, 0x91, 0x03, 0xC8, 0x05, 0xE4, 0x09, 
  0x7F, 0x08, 0x66, 0x06, 0x91, 0x03, 0x57, 0x05, 0x88, 0x08, 0x66, 0x06, 0xB3, 0x08, 0x95, 0x01, 
  0x08, 0x00, 0x67, 0x07, 0x88, 0x08, 0x41, 0x06, 0xFA, 0x04, 0x7D, 0x01, 0xC6, 0xFF, 0xFA, 0x04, 
  0xB0, 0x04, 0x86, 0x4E, 0x55, 0x4D, 0x42, 0x45, 0xD2, 0x65, 0x0E, 0xE0, 0x06, 0x5F, 0x07, 0x5F, 
  0x07, 0xE4, 0x09, 0xE2, 0x05, 0xB3, 0x08, 0x75, 0x06, 0x59, 0x01, 0x2D, 0x00, 0x5F, 0x09, 0xE2, 
  0x05, 0xE4, 0x04, 0x4A, 0x05, 0x59, 0x01, 0xFF, 0xFF, 0x88, 0x08, 0x9D, 0x06, 0x70, 0x0E, 0xE2, 
  0x05, 0x75, 0x06, 0x80, 0x07, 0x51, 0x09, 0x95, 0x01, 0x16, 0x00, 0xE2, 0x05, 0x75, 0x06, 0x59, 
  0x01, 0x2E, 0x00, 0x51, 0x09, 0x5F, 0x07, 0xC3, 0x0A, 0x5F, 0x07, 0x7D, 0x01, 0xDC, 0xFF, 0xC8, 
  0x05, 0xFA, 0x04, 0x95, 0x01, 0x04, 0x00, 0x9B, 0x05, 0xB0, 0x04, 0x85, 0x2D, 0x46, 0x49, 0x4E, 
  0xC4, 0xB2, 0x0E, 0xE0, 0x06, 0x80, 0x07, 0x1F, 0x0E, 0x0D, 0x09, 0x5D, 0x08, 0x66, 0x06, 0x66, 
  0x06, 0x81, 0x02, 0xE2, 0x05, 0x1C, 0x05, 0x95, 0x01, 0x0A, 0x00, 0xC8, 0x05, 0x0D, 0x09, 0x57, 
  0x0A, 0x81, 0x02, 0xB0, 0x04, 0x87, 0x28, 0x41, 0x42, 0x4F, 0x52, 0x54, 0xA9, 0x0B, 0x0F, 0xE0, 
  0x06, 0x94, 0x11, 0xB0, 0x04, 0x85, 0x45, 0x52, 0x52, 0x4F, 0xD2, 0x35, 0x0F, 0xE0, 0x06, 0x00, 
  0x08, 0x66, 0x06, 0x38, 0x05, 0x95, 0x01, 0x04, 0x00, 0x3F, 0x0F, 0x0D, 0x09, 0x47, 0x0C, 0x5A, 
  0x0C, 0xBB, 0x0C, 0x02, 0x3F, 0x20, 0xB5, 0x13, 0x73, 0x04, 0x2A, 0x08, 0x66, 0x06, 0x12, 0x0A, 
  0x95, 0x01, 0x0A, 0x00, 0x32, 0x08, 0x66, 0x06, 0xD5, 0x05, 0x47, 0x1E, 0x67, 0x11, 0x83, 0x49, 
  0x44, 0xAE, 0x45, 0x0F, 0xE0, 0x06, 0x0C, 0x0E, 0x59, 0x01, 0x20, 0x00, 0x59, 0x01, 0x5F, 0x00, 
  0xB4, 0x0D, 0xE2, 0x05, 0x9B, 0x0A, 0x67, 0x0A, 0xB9, 0x05, 0x51, 0x09, 0x0C, 0x0E, 0xD5, 0x05, 
  0x4D, 0x03, 0x0C, 0x0E, 0x47, 0x0C, 0x59, 0x01, 0x1F, 0x00, 0x2C, 0x04, 0x5A, 0x0C, 0x03, 0x0A, 
  0xB0, 0x04, 0x86, 0x43, 0x52, 0x45, 0x41, 0x54, 0xC5, 0x7E, 0x0F, 0xE0, 0x06, 0x13, 0x0F, 0x95, 
  0x01, 0x10, 0x00, 0xC8, 0x05, 0x85, 0x0A, 0x84, 0x0F, 0x59, 0x01, 0x04, 0x00, 0xB5, 0x13, 0x03, 
  0x0A, 0x0D, 0x09, 0xE2, 0x05, 0x75, 0x06, 0xF3, 0x07, 0x66, 0x06, 0x8E, 0x12, 0xB3, 0x08, 0x1D, 
  0x09, 0xE2, 0x05, 0x59, 0x01, 0xA0, 0x00, 0x58, 0x06, 0x0D, 0x09, 0x67, 0x07, 0x51, 0x09, 0x59, 
  0x01, 0x80, 0x00, 0x58, 0x06, 0x57, 0x0A, 0x29, 0x09, 0x6A, 0x08, 0x66, 0x06, 0x9D, 0x06, 0x0D, 
  0x09, 0xBF, 0x08, 0x29, 0x09, 0xB0, 0x04, 0xC9, 0x5B, 0x43, 0x4F, 0x4D, 0x50, 0x49, 0x4C, 0x45, 
  0xDD, 0xB2, 0x0F, 0xE0, 0x06, 0x13, 0x0F, 0x1C, 0x05, 0x5F, 0x07, 0xC3, 0x0A, 0xC8, 0x05, 0x77, 
  0x0A, 0x29, 0x09, 0xB0, 0x04, 0xC7, 0x4C, 0x49, 0x54, 0x45, 0x52, 0x41, 0xCC, 0x07, 0x10, 0xE0, 
  0x06, 0x75, 0x08, 0x66, 0x06, 0x95, 0x01, 0x08, 0x00, 0x56, 0x0B, 0x59, 0x01, 0x29, 0x09, 0xB0, 
  0x04, 0xC8, 0x44, 0x4C, 0x49, 0x54, 0x45, 0x52, 0x41, 0xCC, 0x25, 0x10, 0xE0, 0x06, 0x75, 0x08, 
  0x66, 0x06, 0x95, 0x01, 0x08, 0x00, 0xD5, 0x05, 0x2F, 0x10, 0x2F, 0x10, 0xB0, 0x04, 0x86, 0x3F, 
  0x53, 0x54, 0x41, 0x43, 0xCB, 0x41, 0x10, 0xE0, 0x06, 0x64, 0x04, 0xD7, 0x07, 0x66, 0x06, 0xD5, 
  0x05, 0xA9, 0x09, 0x67, 0x07, 0xC3, 0x0A, 0x64, 0x04, 0x0D, 0x09, 0x59, 0x01, 0x80, 0x00, 0x4A, 
  0x05, 0xA9, 0x09, 0x59, 0x01, 0x07, 0x00, 0xC3, 0x0A, 0xB0, 0x04, 0x89, 0x49, 0x4E, 0x54, 0x45, 
  0x52, 0x50, 0x52, 0x45, 0xD4, 0x5E, 0x10, 0xE0, 0x06, 0x13, 0x0F, 0x95, 0x01, 0x1E, 0x00, 0x75, 
  0x08, 0x66, 0x06, 0x87, 0x09, 0x95, 0x01, 0x0A, 0x00, 0x77, 0x0A, 0x29, 0x09, 0x7D, 0x01, 0x06, 
  0x00, 0x77, 0x0A, 0x6E, 0x01, 0x67, 0x10, 0x7D, 0x01, 0x1C, 0x00, 0x0D, 0x09, 0xBB, 0x0E, 0x88, 
  0x08, 0x66, 0x06, 0xB3, 0x08, 0x95, 0x01, 0x08, 0x00, 0x4C, 0x10, 0x7D, 0x01, 0x06, 0x00, 0xC8, 
  0x05, 0x2F, 0x10, 0x67, 0x10, 0x7D, 0x01, 0xC2, 0xFF, 0x89, 0x49, 0x4D, 0x4D, 0x45, 0x44, 0x49, 
  0x41, 0x54, 0xC5, 0x8B, 0x10, 0xE0, 0x06, 0x57, 0x0A, 0x59, 0x01, 0x40, 0x00, 0x58, 0x06, 0xB0, 
  0x04, 0x8A, 0x56, 0x4F, 0x43, 0x41, 0x42, 0x55, 0x4C, 0x41, 0x52, 0xD9, 0xD9, 0x10, 0xE0, 0x06, 
  0x10, 0x0C, 0x59, 0x01, 0x81, 0xA0, 0x29, 0x09, 0x6A, 0x08, 0x66, 0x06, 0x77, 0x0A, 0x29, 0x09, 
  0x0D, 0x09, 0x21, 0x08, 0x66, 0x06, 0x29, 0x09, 0x21, 0x08, 0x9D, 0x06, 0x20, 0x0C, 0xBF, 0x08, 
  0x5D, 0x08, 0x9D, 0x06, 0xB0, 0x04, 0xC5, 0x46, 0x4F, 0x52, 0x54, 0xC8, 0xF1, 0x10, 0x2C, 0x0C, 
  0x1E, 0x11, 0x81, 0xA0, 0x8A, 0x21, 0x00, 0x00, 0x8B, 0x44, 0x45, 0x46, 0x49, 0x4E, 0x49, 0x54, 
  0x49, 0x4F, 0x4E, 0xD3, 0x26, 0x11, 0xE0, 0x06, 0x5D, 0x08, 0x66, 0x06, 0x6A, 0x08, 0x9D, 0x06, 
  0xB0, 0x04, 0xC1, 0xA8, 0x38, 0x11, 0xE0, 0x06, 0x59, 0x01, 0x29, 0x00, 0x1F, 0x0E, 0xB0, 0x04, 
  0x84, 0x51, 0x55, 0x49, 0xD4, 0x52, 0x11, 0xE0, 0x06, 0x5F, 0x07, 0x2A, 0x08, 0x9D, 0x06, 0x6C, 
  0x0B, 0x98, 0x04, 0x40, 0x03, 0x83, 0x0D, 0x97, 0x10, 0x75, 0x08, 0x66, 0x06, 0x1C, 0x05, 0x95, 
  0x01, 0x07, 0x00, 0xBB, 0x0C, 0x02, 0x4F, 0x4B, 0x7D, 0x01, 0xE7, 0xFF, 0x85, 0x41, 0x42, 0x4F, 
  0x52, 0xD4, 0x60, 0x11, 0xE0, 0x06, 0x73, 0x04, 0xB7, 0x0B, 0x67, 0x10, 0x40, 0x03, 0x58, 0x1D, 
  0xBB, 0x0C, 0x0D, 0x66, 0x69, 0x67, 0x2D, 0x46, 0x4F, 0x52, 0x54, 0x48, 0x20, 0x31, 0x2E, 0x33, 
  0x2E, 0x11, 0x46, 0x11, 0x67, 0x11, 0x01, 0xBC, 0x11, 0xC3, 0x48, 0x01, 0xC5, 0x11, 0x84, 0x57, 
  0x41, 0x52, 0xCD, 0x8C, 0x11, 0xE0, 0x06, 0xF8, 0x14, 0x94, 0x11, 0xF3, 0x01, 0xD6, 0x11, 0x2A, 
  0x12, 0x01, 0xF9, 0xC3, 0x48, 0x01, 0xDF, 0x11, 0x84, 0x43, 0x4F, 0x4C, 0xC4, 0xBE, 0x11, 0xE0, 
  0x06, 0xF8, 0x14, 0x5F, 0x07, 0x8D, 0x14, 0x9D, 0x06, 0x96, 0x07, 0x37, 0x14, 0x9D, 0x06, 0x96, 
  0x07, 0x42, 0x14, 0x9D, 0x06, 0x0C, 0x15, 0x59, 0x01, 0x00, 0x00, 0x59, 0x01, 0xE6, 0x18, 0x9D, 
  0x06, 0x59, 0x01, 0x12, 0x01, 0x59, 0x01, 0x28, 0x01, 0x66, 0x06, 0x59, 0x01, 0x06, 0x00, 0x4A, 
  0x05, 0x59, 0x01, 0x10, 0x00, 0x4D, 0x03, 0x59, 0x01, 0x0C, 0x01, 0x66, 0x06, 0x59, 0x01, 0x34, 
  0x11, 0x9D, 0x06, 0x59, 0x01, 0x26, 0x01, 0x66, 0x06, 0x59, 0x01, 0x3B, 0x1E, 0x9D, 0x06, 0x94, 
  0x11, 0x84, 0x53, 0x2D, 0x3E, 0xC4, 0xD8, 0x11, 0x3A, 0x12, 0xD1, 0x21, 0x00, 0x00, 0x7A, 0xE6, 
  0x80, 0xCA, 0x45, 0x12, 0x2B, 0xC3, 0x46, 0x01, 0x82, 0x2B, 0xAD, 0x31, 0x12, 0xE0, 0x06, 0x38, 
  0x05, 0x95, 0x01, 0x04, 0x00, 0x7A, 0x05, 0xB0, 0x04, 0x83, 0x44, 0x2B, 0xAD, 0x48, 0x12, 0xE0, 
  0x06, 0x38, 0x05, 0x95, 0x01, 0x04, 0x00, 0x9B, 0x05, 0xB0, 0x04, 0x83, 0x41, 0x42, 0xD3, 0x59, 
  0x12, 0xE0, 0x06, 0xE2, 0x05, 0x4D, 0x12, 0xB0, 0x04, 0x84, 0x44, 0x41, 0x42, 0xD3, 0x6B, 0x12, 
  0xE0, 0x06, 0xE2, 0x05, 0x5F, 0x12, 0xB0, 0x04, 0x83, 0x4D, 0x49, 0xCE, 0x79, 0x12, 0xE0, 0x06, 
  0xF0, 0x05, 0xC9, 0x09, 0x95, 0x01, 0x04, 0x00, 0xD5, 0x05, 0xC8, 0x05, 0xB0, 0x04, 0x83, 0x4D, 
  0x41, 0xD8, 0x88, 0x12, 0xE0, 0x06, 0xF0, 0x05, 0x87, 0x09, 0x95, 0x01, 0x04, 0x00, 0xD5, 0x05, 
  0xC8, 0x05, 0xB0, 0x04, 0x82, 0x4D, 0xAA, 0x9E, 0x12, 0xE0, 0x06, 0xF0, 0x05, 0x51, 0x04, 0xE4, 
  0x04, 0x71, 0x12, 0xD5, 0x05, 0x71, 0x12, 0x91, 0x03, 0xFA, 0x04, 0x5F, 0x12, 0xB0, 0x04, 0x82, 
  0x4D, 0xAF, 0xB4, 0x12, 0xE0, 0x06, 0xB9, 0x05, 0xE4, 0x04, 0xE4, 0x04, 0x80, 0x12, 0x0E, 0x05, 
  0x71, 0x12, 0xCE, 0x03, 0xFA, 0x04, 0x0E, 0x05, 0x51, 0x04, 0x4D, 0x12, 0xD5, 0x05, 0xFA, 0x04, 
  0x4D, 0x12, 0xD5, 0x05, 0xB0, 0x04, 0x81, 0xAA, 0xCF, 0x12, 0xE0, 0x06, 0xB9, 0x12, 0xC8, 0x05, 
  0xB0, 0x04, 0x84, 0x2F, 0x4D, 0x4F, 0xC4, 0xF6, 0x12, 0xE0, 0x06, 0xE4, 0x04, 0x38, 0x12, 0xFA, 
  0x04, 0xD4, 0x12, 0xB0, 0x04, 0x81, 0xAF, 0x02, 0x13, 0xE0, 0x06, 0x09, 0x13, 0xD5, 0x05, 0xC8, 
  0x05, 0xB0, 0x04, 0x83, 0x4D, 0x4F, 0xC4, 0x15, 0x13, 0xE0, 0x06, 0x09, 0x13, 0xC8, 0x05, 0xB0, 
  0x04, 0x85, 0x2A, 0x2F, 0x4D, 0x4F, 0xC4, 0x23, 0x13, 0xE0, 0x06, 0xE4, 0x04, 0xB9, 0x12, 0xFA, 
  0x04, 0xD4, 0x12, 0xB0, 0x04, 0x82, 0x2A, 0xAF, 0x31, 0x13, 0xE0, 0x06, 0x39, 0x13, 0xD5, 0x05, 
  0xC8, 0x05, 0xB0, 0x04, 0x85, 0x4D, 0x2F, 0x4D, 0x4F, 0xC4, 0x45, 0x13, 0xE0, 0x06, 0xE4, 0x04, 
  0x5F, 0x07, 0x0E, 0x05, 0xCE, 0x03, 0xFA, 0x04, 0xD5, 0x05, 0xE4, 0x04, 0xCE, 0x03, 0xFA, 0x04, 
  0xB0, 0x04, 0x86, 0x28, 0x4C, 0x49, 0x4E, 0x45, 0xA9, 0x54, 0x13, 0xE0, 0x06, 0xE4, 0x04, 0x59, 
  0x01, 0x40, 0x00, 0xAE, 0x07, 0x39, 0x13, 0xFA, 0x04, 0xBA, 0x07, 0xFA, 0x12, 0x4A, 0x05, 0x89, 
  0x15, 0x4A, 0x05, 0x59, 0x01, 0x40, 0x00, 0xB0, 0x04, 0x85, 0x2E, 0x4C, 0x49, 0x4E, 0xC5, 0x72, 
  0x13, 0xE0, 0x06, 0x7B, 0x13, 0x88, 0x0C, 0x5A, 0x0C, 0xB0, 0x04, 0x87, 0x4D, 0x45, 0x53, 0x53, 
  0x41, 0x47, 0xC5, 0x99, 0x13, 0xE0, 0x06, 0x00, 0x08, 0x66, 0x06, 0x95, 0x01, 0x1E, 0x00, 0x12, 
  0x0A, 0x95, 0x01, 0x14, 0x00, 0x59, 0x01, 0x04, 0x00, 0x50, 0x08, 0x66, 0x06, 0xBA, 0x07, 0x19, 
  0x13, 0x51, 0x09, 0xA1, 0x13, 0x03, 0x0A, 0x7D, 0x01, 0x0D, 0x00, 0xBB, 0x0C, 0x06, 0x4D, 0x53, 
  0x47, 0x20, 0x23, 0x20, 0xC5, 0x1B, 0xB0, 0x04, 0x82, 0x50, 0xC0, 0xAB, 0x13, 0xEF, 0x13, 0xD1, 
  0x21, 0xF5, 0x13, 0x73, 0xDB, 0x00, 0x6F, 0x26, 0x00, 0xC3, 0x47, 0x01, 0x82, 0x50, 0xA1, 0xE8, 
  0x13, 0x03, 0x14, 0xD1, 0x21, 0x0B, 0x14, 0x73, 0xE1, 0x7D, 0xD3, 0x00, 0xC3, 0x48, 0x01, 0x85, 
  0x44, 0x52, 0x49, 0x56, 0xC5, 0xFC, 0x13, 0x3D, 0x07, 0x00, 0x00, 0x83, 0x53, 0x45, 0xC3, 0x0F, 
  0x14, 0x3D, 0x07, 0x00, 0x00, 0x85, 0x54, 0x52, 0x41, 0x43, 0xCB, 0x1B, 0x14, 0x3D, 0x07, 0x00, 
  0x00, 0x83, 0x55, 0x53, 0xC5, 0x25, 0x14, 0x3D, 0x07, 0xF0, 0x6F, 0x84, 0x50, 0x52, 0x45, 0xD6, 
  0x31, 0x14, 0x3D, 0x07, 0xF0, 0x6F, 0x87, 0x53, 0x45, 0x43, 0x2F, 0x42, 0x4C, 0xCB, 0x3B, 0x14, 
  0x23, 0x07, 0x08, 0x00, 0x85, 0x23, 0x42, 0x55, 0x46, 0xC6, 0x46, 0x14, 0x23, 0x07, 0x04, 0x00, 
  0x88, 0x23, 0x53, 0x43, 0x52, 0x2F, 0x44, 0x52, 0xD6, 0x54, 0x14, 0xE0, 0x06, 0x8D, 0x14, 0x66, 
  0x06, 0x95, 0x01, 0x0A, 0x00, 0x59, 0x01, 0xF4, 0x01, 0x7D, 0x01, 0x06, 0x00, 0x59, 0x01, 0xFA, 
  0x00, 0xB0, 0x04, 0x87, 0x44, 0x45, 0x4E, 0x53, 0x49, 0x54, 0xD9, 0x60, 0x14, 0x3D, 0x07, 0x00, 
  0x00, 0x8A, 0x44, 0x49, 0x53, 0x4B, 0x2D, 0x45, 0x52, 0x52, 0x4F, 0xD2, 0x83, 0x14, 0x3D, 0x07, 
  0x00, 0x00, 0x84, 0x2B, 0x42, 0x55, 0xC6, 0x91, 0x14, 0xE0, 0x06, 0x59, 0x01, 0x04, 0x04, 0x4A, 
  0x05, 0xE2, 0x05, 0xA2, 0x07, 0x5F, 0x09, 0x95, 0x01, 0x06, 0x00, 0xC8, 0x05, 0x96, 0x07, 0xE2, 
  0x05, 0x42, 0x14, 0x66, 0x06, 0x51, 0x09, 0xB0, 0x04, 0x86, 0x55, 0x50, 0x44, 0x41, 0x54, 0xC5, 
  0xA2, 0x14, 0xE0, 0x06, 0x42, 0x14, 0x66, 0x06, 0x66, 0x06, 0x59, 0x01, 0x00, 0x80, 0x3E, 0x04, 
  0x42, 0x14, 0x66, 0x06, 0x9D, 0x06, 0xB0, 0x04, 0x8D, 0x45, 0x4D, 0x50, 0x54, 0x59, 0x2D, 0x42, 
  0x55, 0x46, 0x46, 0x45, 0x52, 0xD3, 0xC9, 0x14, 0xE0, 0x06, 0x96, 0x07, 0xA2, 0x07, 0xB9, 0x05, 
  0x51, 0x09, 0xD4, 0x0D, 0xB0, 0x04, 0x83, 0x44, 0x52, 0xB0, 0xE8, 0x14, 0xE0, 0x06, 0x5F, 0x07, 
  0x50, 0x08, 0x9D, 0x06, 0xB0, 0x04, 0x83, 0x44, 0x52, 0xB1, 0x06, 0x15, 0xE0, 0x06, 0x8D, 0x14, 
  0x66, 0x06, 0x95, 0x01, 0x0A, 0x00, 0x59, 0x01, 0xF4, 0x01, 0x7D, 0x01, 0x06, 0x00, 0x59, 0x01, 
  0xFA, 0x00, 0x50, 0x08, 0x9D, 0x06, 0xB0, 0x04, 0x86, 0x42, 0x55, 0x46, 0x46, 0x45, 0xD2, 0x16, 
  0x15, 0xE0, 0x06, 0x37, 0x14, 0x66, 0x06, 0xE2, 0x05, 0xE4, 0x04, 0xA9, 0x14, 0x95, 0x01, 0xFC, 
  0xFF, 0x37, 0x14, 0x9D, 0x06, 0x0E, 0x05, 0x66, 0x06, 0x38, 0x05, 0x95, 0x01, 0x14, 0x00, 0x0E, 
  0x05, 0xBF, 0x08, 0x0E, 0x05, 0x66, 0x06, 0x59, 0x01, 0xFF, 0x7F, 0x2C, 0x04, 0x5F, 0x07, 0x9C, 
  0x17, 0x0E, 0x05, 0x9D, 0x06, 0x0E, 0x05, 0x42, 0x14, 0x9D, 0x06, 0xFA, 0x04, 0xBF, 0x08, 0xB0, 
  0x04, 0x85, 0x42, 0x4C, 0x4F, 0x43, 0xCB, 0x38, 0x15, 0xE0, 0x06, 0x50, 0x08, 0x66, 0x06, 0x4A, 
  0x05, 0xE4, 0x04, 0x42, 0x14, 0x66, 0x06, 0xE2, 0x05, 0x66, 0x06, 0x0E, 0x05, 0x51, 0x09, 0xE2, 
  0x05, 0x4A, 0x05, 0x95, 0x01, 0x34, 0x00, 0xA9, 0x14, 0x1C, 0x05, 0x95, 0x01, 0x14, 0x00, 0xC8, 
  0x05, 0x0E, 0x05, 0x41, 0x15, 0xE2, 0x05, 0x0E, 0x05, 0x67, 0x07, 0x9C, 0x17, 0x6F, 0x07, 0x51, 
  0x09, 0xE2, 0x05, 0x66, 0x06, 0x0E, 0x05, 0x51, 0x09, 0xE2, 0x05, 0x4A, 0x05, 0x1C, 0x05, 0x95, 
  0x01, 0xD6, 0xFF, 0xE2, 0x05, 0x42, 0x14, 0x9D, 0x06, 0xFA, 0x04, 0xC8, 0x05, 0xBF, 0x08, 0xB0, 
  0x04, 0xCD, 0x48, 0x18, 0x20, 0x2A, 0x2A, 0x2A, 0x2A, 0x20, 0x43, 0x61, 0x6C, 0x6C, 0x65, 0x64, 
  0x20, 0x49, 0x4F, 0x53, 0x20, 0x2A, 0x2A, 0x2A, 0x00, 0x2A, 0x01, 0x00, 0x19, 0xE9, 0x86, 0x53, 
  0x45, 0x54, 0x2D, 0x49, 0xCF, 0x81, 0x15, 0x09, 0x16, 0xCD, 0x48, 0x18, 0x20, 0x2A, 0x2A, 0x2A, 
  0x2A, 0x20, 0x43, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x53, 0x45, 0x54, 0x49, 0x4F, 0x20, 0x2A, 
  0x2A, 0x2A, 0x00, 0xC5, 0x2A, 0x39, 0x14, 0x44, 0x4D, 0x11, 0x21, 0x00, 0xCD, 0xE1, 0x15, 0x2A, 
  0x23, 0x14, 0x4D, 0x11, 0x1E, 0x00, 0xCD, 0xE1, 0x15, 0x2A, 0x2F, 0x14, 0x44, 0x4D, 0x11, 0x1B, 
  0x00, 0xCD, 0xE1, 0x15, 0xC1, 0xC3, 0x48, 0x01, 0x89, 0x53, 0x45, 0x54, 0x2D, 0x44, 0x52, 0x49, 
  0x56, 0xC5, 0xFE, 0x15, 0x56, 0x16, 0xC5, 0x3A, 0x19, 0x14, 0x4F, 0x11, 0x18, 0x00, 0xCD, 0xE1, 
  0x15, 0xC1, 0xC3, 0x48, 0x01, 0x87, 0x54, 0x26, 0x53, 0x43, 0x41, 0x4C, 0xC3, 0x48, 0x16, 0xE0, 
  0x06, 0x8D, 0x14, 0x66, 0x06, 0x95, 0x01, 0x38, 0x00, 0x59, 0x01, 0xA0, 0x0F, 0x09, 0x13, 0x59, 
  0x01, 0x01, 0x00, 0x8E, 0x12, 0xE2, 0x05, 0x17, 0x14, 0x66, 0x06, 0x5F, 0x09, 0x95, 0x01, 0x08, 
  0x00, 0xC8, 0x05, 0x7D, 0x01, 0x08, 0x00, 0x17, 0x14, 0x9D, 0x06, 0x54, 0x16, 0x59, 0x01, 0x34, 
  0x00, 0x09, 0x13, 0x2D, 0x14, 0x9D, 0x06, 0xB3, 0x08, 0x21, 0x14, 0x9D, 0x06, 0xB0, 0x04, 0x59, 
  0x01, 0xD0, 0x07, 0x09, 0x13, 0x59, 0x01, 0x01, 0x00, 0x8E, 0x12, 0xE2, 0x05, 0x17, 0x14, 0x66, 
  0x06, 0x5F, 0x09, 0x95, 0x01, 0x08, 0x00, 0xC8, 0x05, 0x7D, 0x01, 0x08, 0x00, 0x17, 0x14, 0x9D, 
  0x06, 0x54, 0x16, 0x59, 0x01, 0x1A, 0x00, 0x09, 0x13, 0x2D, 0x14, 0x9D, 0x06, 0xB3, 0x08, 0x21, 
  0x14, 0x9D, 0x06, 0xB0, 0x04, 0x88, 0x53, 0x45, 0x43, 0x2D, 0x52, 0x45, 0x41, 0xC4, 0x65, 0x16, 
  0xF2, 0x16, 0xC5, 0x11, 0x24, 0x00, 0xCD, 0xE1, 0x15, 0x32, 0xA0, 0x14, 0xC1, 0xC3, 0x48, 0x01, 
  0x89, 0x53, 0x45, 0x43, 0x2D, 0x57, 0x52, 0x49, 0x54, 0xC5, 0xE5, 0x16, 0x0E, 0x17, 0xC5, 0x11, 
  0x27, 0x00, 0xCD, 0xE1, 0x15, 0x32, 0xA0, 0x14, 0xC1, 0xC3, 0x48, 0x01, 0x86, 0x2B, 0x54, 0x52, 
  0x41, 0x43, 0xCB, 0x00, 0x17, 0x27, 0x17, 0x3A, 0x8F, 0x14, 0xB7, 0x3E, 0x1B, 0xCA, 0x32, 0x17, 
  0x3E, 0x35, 0x2A, 0x23, 0x14, 0xBD, 0xC2, 0x48, 0x01, 0x3E, 0x01, 0x32, 0x23, 0x14, 0x3A, 0x2F, 
  0x14, 0x3C, 0x32, 0x2F, 0x14, 0xC3, 0x48, 0x01, 0x87, 0x2B, 0x53, 0x45, 0x43, 0x54, 0x4F, 0xD2, 
  0x1C, 0x17, 0x54, 0x17, 0x3A, 0x23, 0x14, 0x3C, 0x32, 0x23, 0x14, 0xD5, 0x2A, 0x39, 0x14, 0x11, 
  0x80, 0x00, 0x19, 0x22, 0x39, 0x14, 0xD1, 0xC3, 0x48, 0x01, 0x84, 0x3F, 0x52, 0x2F, 0xD7, 0x48, 
  0x17, 0x73, 0x17, 0xE3, 0x7D, 0xB4, 0xE3, 0xCA, 0x88, 0x17, 0xC5, 0x11, 0x24, 0x00, 0xCD, 0xE1, 
  0x15, 0x32, 0xA0, 0x14, 0xC1, 0xC3, 0x48, 0x01, 0xC5, 0x11, 0x27, 0x00, 0xCD, 0xE1, 0x15, 0x32, 
  0xA0, 0x14, 0xC1, 0xC3, 0x48, 0x01, 0x83, 0x52, 0x2F, 0xD7, 0x6A, 0x17, 0xE0, 0x06, 0xC8, 0x05, 
  0xC8, 0x05, 0xC8, 0x05, 0xB0, 0x04, 0x85, 0x46, 0x4C, 0x55, 0x53, 0xC8, 0x96, 0x17, 0xE0, 0x06, 
  0x5C, 0x14, 0xB3, 0x08, 0x5F, 0x07, 0x09, 0x02, 0x5F, 0x07, 0x41, 0x15, 0xC8, 0x05, 0xAB, 0x01, 
  0xF8, 0xFF, 0xB0, 0x04, 0x84, 0x53, 0x41, 0x56, 0xC5, 0xA6, 0x17, 0xE0, 0x06, 0xAE, 0x17, 0xB0, 
  0x04, 0x84, 0x4C, 0x4F, 0x41, 0xC4, 0xC4, 0x17, 0xE0, 0x06, 0x2A, 0x08, 0x66, 0x06, 0xE4, 0x04, 
  0x32, 0x08, 0x66, 0x06, 0xE4, 0x04, 0x5F, 0x07, 0x32, 0x08, 0x9D, 0x06, 0xBA, 0x07, 0xFA, 0x12, 
  0x2A, 0x08, 0x9D, 0x06, 0x97, 0x10, 0xFA, 0x04, 0x32, 0x08, 0x9D, 0x06, 0xFA, 0x04, 0x2A, 0x08, 
  0x9D, 0x06, 0xB0, 0x04, 0xC3, 0x2D, 0x2D, 0xBE, 0xD1, 0x17, 0xE0, 0x06, 0x3C, 0x0B, 0x5F, 0x07, 
  0x32, 0x08, 0x9D, 0x06, 0xBA, 0x07, 0x2A, 0x08, 0x66, 0x06, 0xB9, 0x05, 0x29, 0x13, 0x51, 0x09, 
  0x2A, 0x08, 0x41, 0x06, 0xB0, 0x04, 0x84, 0x54, 0x48, 0x52, 0xD5, 0x04, 0x18, 0xE0, 0x06, 0xB3, 
  0x08, 0xD5, 0x05, 0x09, 0x02, 0x25, 0x02, 0xD8, 0x17, 0xAB, 0x01, 0xFA, 0xFF, 0xB0, 0x04, 0xF5, 
  0x3E, 0x01, 0xD3, 0x01, 0xF1, 0xD3, 0x00, 0xC9, 0xE3, 0xF5, 0x7E, 0x23, 0xB7, 0xCA, 0x56, 0x18, 
  0xCD, 0x3F, 0x18, 0xC3, 0x4A, 0x18, 0xF1, 0xE3, 0xC9, 0x5B, 0x18, 0x3E, 0xFF, 0x32, 0x45, 0x01, 
  0xC3, 0x48, 0x01, 0x65, 0x18, 0xAF, 0x32, 0x45, 0x01, 0xC3, 0x48, 0x01, 0xE5, 0xF5, 0x7E, 0x23, 
  0xB7, 0xCA, 0x7D, 0x18, 0xFA, 0x7D, 0x18, 0xCD, 0x3F, 0x18, 0xC3, 0x6E, 0x18, 0xF1, 0xE1, 0xC9, 
  0xE5, 0xF5, 0x7E, 0xB7, 0x23, 0xCD, 0x3F, 0x18, 0xF2, 0x82, 0x18, 0x3E, 0x0D, 0xCD, 0x3F, 0x18, 
  0x3E, 0x0A, 0xCD, 0x3F, 0x18, 0xF1, 0xE1, 0xC9, 0xF5, 0xF5, 0xB7, 0x0F, 0x0F, 0x0F, 0x0F, 0xE6, 
  0x0F, 0xFE, 0x0A, 0xFA, 0xA8, 0x18, 0xC6, 0x07, 0xC6, 0x30, 0xCD, 0x3F, 0x18, 0xF1, 0xE6, 0x0F, 
  0xFE, 0x0A, 0xFA, 0xB7, 0x18, 0xC6, 0x07, 0xC6, 0x30, 0xCD, 0x3F, 0x18, 0xF1, 0xC9, 0xF5, 0x7C, 
  0xCD, 0x98, 0x18, 0x7D, 0xCD, 0x98, 0x18, 0xF1, 0xC9, 0xD5, 0x13, 0xC3, 0xCF, 0x18, 0xD5, 0xF5, 
  0x1A, 0xB7, 0x13, 0xCD, 0x3F, 0x18, 0xF2, 0xD0, 0x18, 0x3E, 0x0D, 0xCD, 0x3F, 0x18, 0x3E, 0x0A, 
  0xCD, 0x3F, 0x18, 0xF1, 0xD1, 0xC9, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0xC3, 0x47, 0x01, 0xDB, 
  0x01, 0xFE, 0xFF, 0xCA, 0xEF, 0x18, 0xFE, 0x14, 0xC2, 0x05, 0x19, 0x3A, 0x45, 0x01, 0x2F, 0x32, 
  0x45, 0x01, 0xC3, 0xEF, 0x18, 0x21, 0x00, 0x00, 0x6F, 0xC3, 0x47, 0x01, 0x0E, 0x19, 0xE1, 0x7D, 
  0xCD, 0x3F, 0x18, 0xC3, 0x48, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x19, 0x21, 0x00, 
  0x00, 0x39, 0xCD, 0xBE, 0x18, 0x3E, 0x3A, 0xCD, 0x3F, 0x18, 0xE1, 0x22, 0x16, 0x19, 0xE1, 0x22, 
  0x18, 0x19, 0xE1, 0x22, 0x1A, 0x19, 0xE5, 0x2A, 0x18, 0x19, 0xE5, 0x2A, 0x16, 0x19, 0xE5, 0xCD, 
  0xBE, 0x18, 0x3E, 0x20, 0xCD, 0x3F, 0x18, 0x2A, 0x18, 0x19, 0xCD, 0xBE, 0x18, 0x3E, 0x20, 0xCD, 
  0x3F, 0x18, 0x2A, 0x1A, 0x19, 0xCD, 0xBE, 0x18, 0xC3, 0x48, 0x01, 0x3E, 0x0D, 0xCD, 0x3F, 0x18, 
  0x3E, 0x0A, 0xCD, 0x3F, 0x18, 0xC3, 0x48, 0x01, 0xC1, 0xA7, 0x26, 0x18, 0xE0, 0x06, 0x13, 0x0F, 
  0x1C, 0x05, 0x5F, 0x07, 0xC3, 0x0A, 0xC8, 0x05, 0x2F, 0x10, 0xB0, 0x04, 0x86, 0x46, 0x4F, 0x52, 
  0x47, 0x45, 0xD4, 0x68, 0x19, 0xE0, 0x06, 0x6A, 0x08, 0x66, 0x06, 0x5D, 0x08, 0x66, 0x06, 0x51, 
  0x09, 0x59, 0x01, 0x18, 0x00, 0xC3, 0x0A, 0x6C, 0x19, 0xE2, 0x05, 0x0B, 0x08, 0x66, 0x06, 0xA9, 
  0x09, 0x59, 0x01, 0x15, 0x00, 0xC3, 0x0A, 0xE2, 0x05, 0x85, 0x0A, 0x13, 0x08, 0x9D, 0x06, 0x67, 
  0x0A, 0x66, 0x06, 0x5D, 0x08, 0x66, 0x06, 0x9D, 0x06, 0xB0, 0x04, 0x84, 0x42, 0x41, 0x43, 0xCB, 
  0x7C, 0x19, 0xE0, 0x06, 0x0D, 0x09, 0x51, 0x09, 0x29, 0x09, 0xB0, 0x04, 0xC5, 0x42, 0x45, 0x47, 
  0x49, 0xCE, 0xBB, 0x19, 0xE0, 0x06, 0xDD, 0x0A, 0x0D, 0x09, 0x67, 0x07, 0xB0, 0x04, 0xC5, 0x45, 
  0x4E, 0x44, 0x49, 0xC6, 0xCC, 0x19, 0xE0, 0x06, 0xDD, 0x0A, 0x6F, 0x07, 0x0C, 0x0B, 0x0D, 0x09, 
  0xB9, 0x05, 0x51, 0x09, 0xD5, 0x05, 0x9D, 0x06, 0xB0, 0x04, 0xC4, 0x54, 0x48, 0x45, 0xCE, 0xDE, 
  0x19, 0xE0, 0x06, 0xE6, 0x19, 0xB0, 0x04, 0xC2, 0x44, 0xCF, 0xFA, 0x19, 0xE0, 0x06, 0x56, 0x0B, 
  0x09, 0x02, 0x0D, 0x09, 0x77, 0x07, 0xB0, 0x04, 0xC4, 0x4C, 0x4F, 0x4F, 0xD0, 0x07, 0x1A, 0xE0, 
  0x06, 0x77, 0x07, 0x0C, 0x0B, 0x56, 0x0B, 0xAB, 0x01, 0xC2, 0x19, 0xB0, 0x04, 0xC5, 0x2B, 0x4C, 
  0x4F, 0x4F, 0xD0, 0x18, 0x1A, 0xE0, 0x06, 0x77, 0x07, 0x0C, 0x0B, 0x56, 0x0B, 0xD4, 0x01, 0xC2, 
  0x19, 0xB0, 0x04, 0xC5, 0x55, 0x4E, 0x54, 0x49, 0xCC, 0x2D, 0x1A, 0xE0, 0x06, 0x67, 0x07, 0x0C, 
  0x0B, 0x56, 0x0B, 0x95, 0x01, 0xC2, 0x19, 0xB0, 0x04, 0xC3, 0x45, 0x4E, 0xC4, 0x43, 0x1A, 0xE0, 
  0x06, 0x4B, 0x1A, 0xB0, 0x04, 0xC5, 0x41, 0x47, 0x41, 0x49, 0xCE, 0x59, 0x1A, 0xE0, 0x06, 0x67, 
  0x07, 0x0C, 0x0B, 0x56, 0x0B, 0x7D, 0x01, 0xC2, 0x19, 0xB0, 0x04, 0xC6, 0x52, 0x45, 0x50, 0x45, 
  0x41, 0xD4, 0x65, 0x1A, 0xE0, 0x06, 0xE4, 0x04, 0xE4, 0x04, 0x6D, 0x1A, 0xFA, 0x04, 0xFA, 0x04, 
  0x6F, 0x07, 0x51, 0x09, 0xE6, 0x19, 0xB0, 0x04, 0xC2, 0x49, 0xC6, 0x7B, 0x1A, 0xE0, 0x06, 0x56, 
  0x0B, 0x95, 0x01, 0x0D, 0x09, 0x5F, 0x07, 0x29, 0x09, 0x6F, 0x07, 0xB0, 0x04, 0xC4, 0x45, 0x4C, 
  0x53, 0xC5, 0x98, 0x1A, 0xE0, 0x06, 0x6F, 0x07, 0x0C, 0x0B, 0x56, 0x0B, 0x7D, 0x01, 0x0D, 0x09, 
  0x5F, 0x07, 0x29, 0x09, 0xD5, 0x05, 0x6F, 0x07, 0xE6, 0x19, 0x6F, 0x07, 0xB0, 0x04, 0xC5, 0x57, 
  0x48, 0x49, 0x4C, 0xC5, 0xAD, 0x1A, 0xE0, 0x06, 0x9D, 0x1A, 0xBF, 0x08, 0xB0, 0x04, 0x86, 0x53, 
  0x50, 0x41, 0x43, 0x45, 0xD3, 0xCE, 0x1A, 0xE0, 0x06, 0x5F, 0x07, 0xA4, 0x12, 0x12, 0x0A, 0x95, 
  0x01, 0x0C, 0x00, 0x5F, 0x07, 0x09, 0x02, 0x03, 0x0A, 0xAB, 0x01, 0xFC, 0xFF, 0xB0, 0x04, 0x82, 
  0x3C, 0xA3, 0xDE, 0x1A, 0xE0, 0x06, 0x0C, 0x0E, 0xAB, 0x08, 0x9D, 0x06, 0xB0, 0x04, 0x82, 0x23, 
  0xBE, 0xFF, 0x1A, 0xE0, 0x06, 0xC8, 0x05, 0xC8, 0x05, 0xAB, 0x08, 0x66, 0x06, 0x0C, 0x0E, 0xB9, 
  0x05, 0x51, 0x09, 0xB0, 0x04, 0x84, 0x53, 0x49, 0x47, 0xCE, 0x0E, 0x1B, 0xE0, 0x06, 0xE4, 0x09, 
  0x38, 0x05, 0x95, 0x01, 0x08, 0x00, 0x59, 0x01, 0x2D, 0x00, 0xF4, 0x0D, 0xB0, 0x04, 0x81, 0xA3, 
  0x25, 0x1B, 0xE0, 0x06, 0x7F, 0x08, 0x66, 0x06, 0x5C, 0x13, 0xE4, 0x09, 0x59, 0x01, 0x09, 0x00, 
  0xB9, 0x05, 0x87, 0x09, 0x95, 0x01, 0x08, 0x00, 0x59, 0x01, 0x07, 0x00, 0x4A, 0x05, 0x59, 0x01, 
  0x30, 0x00, 0x4A, 0x05, 0xF4, 0x0D, 0xB0, 0x04, 0x82, 0x23, 0xD3, 0x3E, 0x1B, 0xE0, 0x06, 0x42, 
  0x1B, 0xF0, 0x05, 0x3E, 0x04, 0x1C, 0x05, 0x95, 0x01, 0xF6, 0xFF, 0xB0, 0x04, 0x83, 0x44, 0x2E, 
  0xD2, 0x68, 0x1B, 0xE0, 0x06, 0xE4, 0x04, 0xD5, 0x05, 0xB9, 0x05, 0x80, 0x12, 0x04, 0x1B, 0x6D, 
  0x1B, 0x2C, 0x1B, 0x13, 0x1B, 0xFA, 0x04, 0xB9, 0x05, 0x51, 0x09, 0xE7, 0x1A, 0x5A, 0x0C, 0xB0, 
  0x04, 0x82, 0x2E, 0xD2, 0x7D, 0x1B, 0xE0, 0x06, 0xE4, 0x04, 0x38, 0x12, 0xFA, 0x04, 0x83, 0x1B, 
  0xB0, 0x04, 0x82, 0x44, 0xAE, 0xA1, 0x1B, 0xE0, 0x06, 0x5F, 0x07, 0x83, 0x1B, 0x03, 0x0A, 0xB0, 
  0x04, 0x81, 0xAE, 0xB2, 0x1B, 0xE0, 0x06, 0x38, 0x12, 0xB7, 0x1B, 0xB0, 0x04, 0x81, 0xBF, 0xC1, 
  0x1B, 0xE0, 0x06, 0x66, 0x06, 0xC5, 0x1B, 0xB0, 0x04, 0x82, 0x55, 0xAE, 0xCD, 0x1B, 0xE0, 0x06, 
  0x5F, 0x07, 0xB7, 0x1B, 0xB0, 0x04, 0x85, 0x56, 0x4C, 0x49, 0x53, 0xD4, 0xD9, 0x1B, 0xE0, 0x06, 
  0x59, 0x01, 0x80, 0x00, 0x3B, 0x08, 0x9D, 0x06, 0x5D, 0x08, 0x66, 0x06, 0x66, 0x06, 0x3B, 0x08, 
  0x66, 0x06, 0x8A, 0x07, 0xC9, 0x09, 0x95, 0x01, 0x0A, 0x00, 0x40, 0x03, 0x5F, 0x07, 0x3B, 0x08, 
  0x9D, 0x06, 0xE2, 0x05, 0x84, 0x0F, 0x03, 0x0A, 0x03, 0x0A, 0x9B, 0x0A, 0x67, 0x0A, 0x66, 0x06, 
  0xE2, 0x05, 0x33, 0x03, 0x95, 0x01, 0x28, 0x00, 0x22, 0x03, 0x59, 0x01, 0x13, 0x00, 0x5F, 0x09, 
  0x95, 0x01, 0x18, 0x00, 0x22, 0x03, 0x59, 0x01, 0x11, 0x00, 0x5F, 0x09, 0x1C, 0x05, 0x95, 0x01, 
  0x0E, 0x00, 0x73, 0x04, 0x67, 0x11, 0x7D, 0x01, 0x06, 0x00, 0x73, 0x04, 0x67, 0x11, 0x1C, 0x05, 
  0x95, 0x01, 0xAC, 0xFF, 0xC8, 0x05, 0xB0, 0x04, 0x83, 0x42, 0x59, 0xC5, 0xE6, 0x1B, 0x60, 0x1C, 
  0xC3, 0x00, 0x00, 0x84, 0x50, 0x41, 0x47, 0xC5, 0x58, 0x1C, 0xE0, 0x06, 0x59, 0x01, 0x0C, 0x00, 
  0x10, 0x03, 0x40, 0x03, 0xB0, 0x04, 0x84, 0x4C, 0x49, 0x53, 0xD4, 0x63, 0x1C, 0xE0, 0x06, 0x40, 
  0x03, 0xE2, 0x05, 0x44, 0x08, 0x9D, 0x06, 0xBB, 0x0C, 0x06, 0x53, 0x43, 0x52, 0x20, 0x23, 0x20, 
  0xC5, 0x1B, 0x59, 0x01, 0x10, 0x00, 0x5F, 0x07, 0x09, 0x02, 0x40, 0x03, 0x25, 0x02, 0x59, 0x01, 
  0x03, 0x00, 0xA6, 0x1B, 0x03, 0x0A, 0x25, 0x02, 0x44, 0x08, 0x66, 0x06, 0xA1, 0x13, 0x33, 0x03, 
  0x95, 0x01, 0x04, 0x00, 0xD0, 0x04, 0xAB, 0x01, 0xE2, 0xFF, 0x40, 0x03, 0xB0, 0x04, 0x85, 0x49, 
  0x4E, 0x44, 0x45, 0xD8, 0x76, 0x1C, 0xE0, 0x06, 0x6A, 0x1C, 0xB3, 0x08, 0xD5, 0x05, 0x09, 0x02, 
  0x40, 0x03, 0x25, 0x02, 0x59, 0x01, 0x03, 0x00, 0xA6, 0x1B, 0x03, 0x0A, 0x5F, 0x07, 0x25, 0x02, 
  0xA1, 0x13, 0x33, 0x03, 0x95, 0x01, 0x04, 0x00, 0xD0, 0x04, 0xAB, 0x01, 0xE4, 0xFF, 0xB0, 0x04, 
  0x85, 0x54, 0x52, 0x49, 0x41, 0xC4, 0xBE, 0x1C, 0xE0, 0x06, 0x6A, 0x1C, 0x59, 0x01, 0x03, 0x00, 
  0x19, 0x13, 0x59, 0x01, 0x03, 0x00, 0xFA, 0x12, 0x59, 0x01, 0x03, 0x00, 0xB9, 0x05, 0x4A, 0x05, 
  0xD5, 0x05, 0x09, 0x02, 0x40, 0x03, 0x25, 0x02, 0x7D, 0x1C, 0x33, 0x03, 0x95, 0x01, 0x04, 0x00, 
  0xD0, 0x04, 0xAB, 0x01, 0xF0, 0xFF, 0x40, 0x03, 0x59, 0x01, 0x0F, 0x00, 0xB5, 0x13, 0x40, 0x03, 
  0xB0, 0x04, 0x84, 0x53, 0x48, 0x4F, 0xD7, 0xF0, 0x1C, 0xE0, 0x06, 0xB3, 0x08, 0xD5, 0x05, 0x09, 
  0x02, 0x6A, 0x1C, 0x25, 0x02, 0xF8, 0x1C, 0x59, 0x01, 0x03, 0x00, 0xD4, 0x01, 0xF4, 0xFF, 0xB0, 
  0x04, 0x84, 0x2E, 0x43, 0x50, 0xD5, 0x32, 0x1D, 0xE0, 0x06, 0x7F, 0x08, 0x66, 0x06, 0x59, 0x01, 
  0x24, 0x00, 0x7F, 0x08, 0x9D, 0x06, 0x59, 0x01, 0x22, 0x00, 0xC8, 0x07, 0x83, 0x06, 0xB7, 0x1B, 
  0x7F, 0x08, 0x9D, 0x06, 0xB0, 0x04, 0x85, 0x4D, 0x41, 0x54, 0x43, 0xC8, 0x51, 0x1D, 0x80, 0x1D, 
  0x69, 0x60, 0xC1, 0x79, 0xD1, 0xC1, 0x47, 0xE3, 0xE5, 0xC5, 0x0C, 0x2B, 0x0D, 0x79, 0xB8, 0xFA, 
  0xB0, 0x1D, 0x23, 0x1A, 0xAE, 0xC2, 0x8C, 0x1D, 0xE5, 0xD5, 0xC5, 0x0E, 0x01, 0x0C, 0x78, 0xB9, 
  0xFA, 0xBC, 0x1D, 0x13, 0x23, 0x1A, 0xAE, 0xCA, 0x9D, 0x1D, 0xC1, 0xD1, 0xE1, 0xC3, 0x8C, 0x1D, 
  0xD1, 0xE1, 0xC1, 0x16, 0x00, 0xEB, 0x11, 0x00, 0x00, 0xC3, 0x46, 0x01, 0xC1, 0xD1, 0xE1, 0xC1, 
  0xD1, 0x7D, 0x93, 0x6F, 0x7C, 0x9A, 0x67, 0x58, 0x16, 0x00, 0x19, 0xC1, 0x11, 0x01, 0x00, 0xC3, 
  0x46, 0x01, 0x85, 0x44, 0x45, 0x50, 0x54, 0xC8, 0x76, 0x1D, 0xE0, 0x06, 0x64, 0x04, 0xD7, 0x07, 
  0x66, 0x06, 0xD5, 0x05, 0x51, 0x09, 0x6F, 0x07, 0x19, 0x13, 0xB0, 0x04, 0x84, 0x54, 0x45, 0x58, 
  0xD4, 0xD2, 0x1D, 0xE0, 0x06, 0x0D, 0x09, 0x8A, 0x07, 0xB3, 0x08, 0xE5, 0x0D, 0x1F, 0x0E, 0x0D, 
  0x09, 0x0C, 0x0E, 0x8A, 0x07, 0xB3, 0x08, 0x4D, 0x03, 0xB0, 0x04, 0x84, 0x4C, 0x49, 0x4E, 0xC5, 
  0xEC, 0x1D, 0xE0, 0x06, 0xE2, 0x05, 0x59, 0x01, 0xF0, 0xFF, 0x2C, 0x04, 0x59, 0x01, 0x17, 0x00, 
  0xC3, 0x0A, 0x44, 0x08, 0x66, 0x06, 0x7B, 0x13, 0xC8, 0x05, 0xB0, 0x04, 0xC6, 0x45, 0x44, 0x49, 
  0x54, 0x4F, 0xD2, 0x0B, 0x1E, 0x2C, 0x0C, 0x1E, 0x11, 0x81, 0xA0, 0x7C, 0x21, 0x00, 0x00, 0x85, 
  0x57, 0x48, 0x45, 0x52, 0xC5, 0x2C, 0x1E, 0xE0, 0x06, 0xE2, 0x05, 0xBA, 0x07, 0x19, 0x13, 0xE2, 
  0x05, 0x44, 0x08, 0x9D, 0x06, 0xBB, 0x0C, 0x06, 0x53, 0x43, 0x52, 0x20, 0x23, 0x20, 0xB7, 0x0B, 
  0xC5, 0x1B, 0xD5, 0x05, 0x8A, 0x07, 0x09, 0x13, 0x8A, 0x07, 0xFA, 0x12, 0xE4, 0x09, 0x89, 0x15, 
  0x4A, 0x05, 0x40, 0x03, 0x8A, 0x07, 0x5A, 0x0C, 0x40, 0x03, 0x0D, 0x09, 0x75, 0x06, 0x51, 0x09, 
  0xE7, 0x1A, 0x59, 0x01, 0x5E, 0x00, 0x10, 0x03, 0x13, 0x10, 0x35, 0x1E, 0x67, 0x11, 0xB0, 0x04, 
  0x83, 0x54, 0x4F, 0xD0, 0x32, 0x11, 0xE0, 0x06, 0x5F, 0x07, 0xA2, 0x08, 0x9D, 0x06, 0xB0, 0x04, 
  0x87, 0x23, 0x4C, 0x4F, 0x43, 0x41, 0x54, 0xC5, 0x90, 0x1E, 0xE0, 0x06, 0xA2, 0x08, 0x66, 0x06, 
  0x8A, 0x07, 0x09, 0x13, 0xB0, 0x04, 0x85, 0x23, 0x4C, 0x45, 0x41, 0x44, 0x27, 0x2B, 0x38, 0x30, 
  0x48, 0x09, 0x3B, 0x20, 0x4C, 0x49, 0x4E, 0x45, 0x20, 0x41, 0x44, 0x44, 0x52, 0xA0, 0x1E, 0xE0, 
  0x06, 0xAA, 0x1E, 0x12, 0x1E, 0xD5, 0x05, 0xB0, 0x04, 0x84, 0x23, 0x4C, 0x41, 0xC7, 0xC7, 0x1E, 
  0xE0, 0x06, 0xCF, 0x1E, 0xE2, 0x05, 0xE4, 0x04, 0x4A, 0x05, 0x8A, 0x07, 0xFA, 0x04, 0x51, 0x09, 
  0xB0, 0x04, 0x85, 0x2D, 0x4D, 0x4F, 0x56, 0xC5, 0xD9, 0x1E, 0xE0, 0x06, 0x12, 0x1E, 0x8A, 0x07, 
  0x4D, 0x03, 0xD2, 0x14, 0xB0, 0x04, 0x81, 0xC8, 0xF2, 0x1E, 0xE0, 0x06, 0x12, 0x1E, 0x0C, 0x0E, 
  0xB3, 0x08, 0x8A, 0x07, 0xE2, 0x05, 0x0C, 0x0E, 0xAC, 0x06, 0x4D, 0x03, 0xB0, 0x04, 0x81, 0xC5, 
  0x06, 0x1F, 0xE0, 0x06, 0x12, 0x1E, 0x8A, 0x07, 0xE5, 0x0D, 0xD2, 0x14, 0xB0, 0x04, 0x81, 0xD3, 
  0x1E, 0x1F, 0xE0, 0x06, 0xE2, 0x05, 0x67, 0x07, 0x51, 0x09, 0x59, 0x01, 0x0E, 0x00, 0x09, 0x02, 
  0x25, 0x02, 0x12, 0x1E, 0x25, 0x02, 0xB3, 0x08, 0xFA, 0x1E, 0x59, 0x01, 0xFF, 0xFF, 0xD4, 0x01, 
  0xF0, 0xFF, 0x22, 0x1F, 0xB0, 0x04, 0x81, 0xC4, 0x2E, 0x1F, 0xE0, 0x06, 0xE2, 0x05, 0x0A, 0x1F, 
  0x59, 0x01, 0x0F, 0x00, 0xE2, 0x05, 0xE4, 0x09, 0x09, 0x02, 0x25, 0x02, 0xB3, 0x08, 0x12, 0x1E, 
  0x25, 0x02, 0xFA, 0x1E, 0xAB, 0x01, 0xF4, 0xFF, 0x22, 0x1F, 0xB0, 0x04, 0x81, 0xCD, 0x56, 0x1F, 
  0xE0, 0x06, 0xA2, 0x08, 0x41, 0x06, 0x40, 0x03, 0xAA, 0x1E, 0x59, 0x01, 0x03, 0x00, 0xA6, 0x1B, 
  0x03, 0x0A, 0xC8, 0x05, 0xCF, 0x1E, 0x5A, 0x0C, 0x59, 0x01, 0x5E, 0x00, 0x10, 0x03, 0xE0, 0x1E, 
  0x5A, 0x0C, 0xB0, 0x04, 0x81, 0xD4, 0x7C, 0x1F, 0xE0, 0x06, 0xE2, 0x05, 0x8A, 0x07, 0xFA, 0x12, 
  0xA2, 0x08, 0x9D, 0x06, 0xE2, 0x05, 0x0A, 0x1F, 0x5F, 0x07, 0x80, 0x1F, 0xB0, 0x04, 0x81, 0xCC, 
  0xA4, 0x1F, 0xE0, 0x06, 0x44, 0x08, 0x66, 0x06, 0x7D, 0x1C, 0x5F, 0x07, 0x80, 0x1F, 0xB0, 0x04, 
  0x85, 0x43, 0x4C, 0x45, 0x41, 0xD2, 0xBE, 0x1F, 0xE0, 0x06, 0x44, 0x08, 0x9D, 0x06, 0x59, 0x01, 
  0x10, 0x00, 0x5F, 0x07, 0x09, 0x02, 0x25, 0x02, 0x22, 0x1F, 0xAB, 0x01, 0xFA, 0xFF, 0xB0, 0x04, 
  0x84, 0x43, 0x4F, 0x50, 0xD9, 0xD0, 0x1F, 0xE0, 0x06, 0xBA, 0x07, 0xFA, 0x12, 0x50, 0x08, 0x66, 
  0x06, 0x4A, 0x05, 0xD5, 0x05, 0xBA, 0x07, 0xFA, 0x12, 0xBA, 0x07, 0xB9, 0x05, 0x4A, 0x05, 0xD5, 
  0x05, 0x09, 0x02, 0xE2, 0x05, 0x25, 0x02, 0x89, 0x15, 0x6F, 0x07, 0x51, 0x09, 0x9D, 0x06, 0xB3, 
  0x08, 0xD2, 0x14, 0xAB, 0x01, 0xEE, 0xFF, 0xC8, 0x05, 0xAE, 0x17, 0xB0, 0x04, 0x85, 0x31, 0x4C, 
  0x49, 0x4E, 0xC5, 0xF0, 0x1F, 0xE0, 0x06, 0xE0, 0x1E, 0x0C, 0x0E, 0x47, 0x0C, 0x7E, 0x1D, 0xA2, 
  0x08, 0x41, 0x06, 0xB0, 0x04, 0x84, 0x46, 0x49, 0x4E, 0xC4, 0x2D, 0x20, 0xE0, 0x06, 0x59, 0x01, 
  0xFF, 0x03, 0xA2, 0x08, 0x66, 0x06, 0x87, 0x09, 0x95, 0x01, 0x12, 0x00, 0x96, 0x1E, 0x0C, 0x0E, 
  0x0D, 0x09, 0x8A, 0x07, 0xB3, 0x08, 0x4D, 0x03, 0x5F, 0x07, 0x4D, 0x0F, 0x35, 0x20, 0x95, 0x01, 
  0xDE, 0xFF, 0xB0, 0x04, 0x86, 0x44, 0x45, 0x4C, 0x45, 0x54, 0xC5, 0x45, 0x20, 0xE0, 0x06, 0xE4, 
  0x04, 0xE0, 0x1E, 0x4A, 0x05, 0x0E, 0x05, 0x51, 0x09, 0xE0, 0x1E, 0x0E, 0x05, 0x7A, 0x05, 0xA2, 
  0x08, 0x41, 0x06, 0xCF, 0x1E, 0x4A, 0x05, 0xD5, 0x05, 0x4D, 0x03, 0xFA, 0x04, 0xE5, 0x0D, 0xD2, 
  0x14, 0xB0, 0x04, 0x81, 0xD2, 0x74, 0x20, 0xE0, 0x06, 0x0C, 0x0E, 0xB3, 0x08, 0xD5, 0x05, 0xFA, 
  0x1E, 0xB0, 0x04, 0x81, 0xD0, 0xA3, 0x20, 0xE0, 0x06, 0x67, 0x07, 0xF3, 0x1D, 0xA7, 0x20, 0xB0, 
  0x04, 0x81, 0xC9, 0xB3, 0x20, 0xE0, 0x06, 0xE2, 0x05, 0x32, 0x1F, 0xA7, 0x20, 0xB0, 0x04, 0x81, 
  0xCE, 0xC1, 0x20, 0xE0, 0x06, 0x4C, 0x20, 0x5F, 0x07, 0x80, 0x1F, 0xB0, 0x04, 0x81, 0xC6, 0xCF, 
  0x20, 0xE0, 0x06, 0x67, 0x07, 0xF3, 0x1D, 0xD3, 0x20, 0xB0, 0x04, 0x81, 0xC2, 0xDD, 0x20, 0xE0, 
  0x06, 0x0C, 0x0E, 0x75, 0x06, 0x7A, 0x05, 0x80, 0x1F, 0xB0, 0x04, 0x81, 0xD8, 0xEB, 0x20, 0xE0, 
  0x06, 0x67, 0x07, 0xF3, 0x1D, 0x4C, 0x20, 0x0C, 0x0E, 0x75, 0x06, 0x7D, 0x20, 0x5F, 0x07, 0x80, 
  0x1F, 0xB0, 0x04, 0x84, 0x54, 0x49, 0x4C, 0xCC, 0xFB, 0x20, 0xE0, 0x06, 0xCF, 0x1E, 0x4A, 0x05, 
  0x67, 0x07, 0xF3, 0x1D, 0x35, 0x20, 0x1C, 0x05, 0x5F, 0x07, 0xC3, 0x0A, 0xCF, 0x1E, 0x4A, 0x05, 
  0xD5, 0x05, 0x51, 0x09, 0x7D, 0x20, 0x5F, 0x07, 0x80, 0x1F, 0xB0, 0x04, 0x83, 0x50, 0x55, 0xD4, 
  0x13, 0x21, 0xE0, 0x06, 0x0C, 0x0E, 0x47, 0x0C, 0xE0, 0x1E, 0xE4, 0x09, 0xB9, 0x05, 0x8E, 0x12, 
  0xE4, 0x04, 0x0E, 0x05, 0xA2, 0x08, 0x41, 0x06, 0x0E, 0x05, 0x51, 0x09, 0xE4, 0x04, 0xE2, 0x05, 
  0x0D, 0x09, 0x0E, 0x05, 0x4D, 0x03, 0x0D, 0x09, 0xCF, 0x1E, 0x4A, 0x05, 0xFA, 0x04, 0x4D, 0x03, 
  0xFA, 0x04, 0x4D, 0x03, 0xD2, 0x14, 0x5F, 0x07, 0x80, 0x1F, 0xB0, 0x04, 0x81, 0xC3, 0x3C, 0x21, 
  0xE0, 0x06, 0x67, 0x07, 0xF3, 0x1D, 0x42, 0x21, 0xB0, 0x04, 0x84, 0x54, 0x41, 0x53, 0xCB, 0x3F, 
  0x1E, 0xE0, 0x06, 0xB0, 0x04
  };

const byte * const bootPh2Table[3] PROGMEM = {boot_A_, boot_B_, boot_C_}; // Payload addresses table
const byte  bootModeAddr  = 10;          // Internal EEPROM address for boot mode storage
const byte  autoexecFlagAddr = 12;       // Internal EEPROM address for AUTOEXEC flag storage
const byte  clockModeAddr = 13;          // Internal EEPROM address for the Z80 clock 4/8 MHz switch

// ------------------------------------------------------------------------------
//
//  Global variables
//
// ------------------------------------------------------------------------------

// General purpose variables
byte          ioAddress;                  // I/O virtual address. Only two possible addresses are allowed (0 and 1)
byte          ioData;                     // Data byte used for the I/O operation
byte          ioOpcode       = 0xFF;      // I/O operation code (0xFF means "No Operation")
byte          ioByteCnt;                  // Exchanged bytes counter during an I/O operation
byte          tempByte;
byte          moduleGPIO     = 0;         // Set to 1 if the module is found, 0 otherwise
byte          bootMode       = 0;         // Set the payload array to boot 
                                          // (0: boot_A_[], 1: boot_C_[], 2: boot_B_[])
byte *        BootImage;                  // Pointer to selected payload array (image) to boot
word          BootImageSize;              // Size of the selected payload array (image) to boot
word          BootStrAddr;                // Starting address of the selected payload array (image) to boot
byte          Z80IntEnFlag   = 0;         // Z80 INT_ enable flag (0 = No INT_ used, 1 = INT_ used for I/O)
unsigned long timeStamp;                  // Timestamp for led blinking
char          inChar;                     // Input char from serial
byte          iCount;                     // Temporary variable
byte          clockMode;                  // Z80 clock HI/LO speed selector (0 = 4MHz, 1 = 8MHz)

// DS3231 RTC variables
byte          foundRTC;                   // Set to 1 if RTC is found, 0 otherwise
byte          seconds, minutes, hours, day, month, year;
byte          tempC;                      // Temperature (Celsius) encoded in two’s complement integer format

// CP/M support variables - NOT USED
byte          autoexecFlag;               // Set to 1 if AUTOEXEC must be executed at cold boot, 0 otherwise

// ------------------------------------------------------------------------------

void setup() 
{
  
// ------------------------------------------------------------------------------
//
//  Local variables
//
// ------------------------------------------------------------------------------

  byte          data;                       // External RAM data byte
  word          address;                    // External RAM current address;
  char          minBootChar   = '1';        // Minimum allowed ASCII value selection (boot selection)
  char          maxSelChar    = '4';        // Maximum allowed ASCII value selection (boot selection)
  byte          maxBootMode   = 2;          // Default maximum allowed value for bootMode [0..2]
  byte          bootSelection = 0;          // Flag to enter into the boot mode selection

// ------------------------------------------------------------------------------

  // ----------------------------------------
  // INITIALITATION
  // ----------------------------------------

  // Initialize RESET_ and WAIT_RES_
  pinMode(RESET_, OUTPUT);                        // Configure RESET_ and set it ACTIVE
  digitalWrite(RESET_, LOW);
  pinMode(WAIT_RES_, OUTPUT);                     // Configure WAIT_RES_ and set it ACTIVE to reset the WAIT FF (U1C)
  digitalWrite(WAIT_RES_, LOW);

  // Check USER Key for boot mode changes 
  pinMode(USER, INPUT_PULLUP);                    // Read USER Key to enter into the boot mode selection
  if (!digitalRead(USER)) bootSelection = 1;

  // Initialize USER,  INT_, RAM_CE2, and BUSREQ_
  pinMode(USER, OUTPUT);                          // USER led OFF
  digitalWrite(USER, HIGH);
  pinMode(INT_, INPUT_PULLUP);                    // Configure INT_ and set it NOT ACTIVE
  pinMode(INT_, OUTPUT);
  digitalWrite(INT_, HIGH);
  pinMode(RAM_CE2, OUTPUT);                       // Configure RAM_CE2 as output
  digitalWrite(RAM_CE2, HIGH);                    // Set RAM_CE2 active
  pinMode(WAIT_, INPUT);                          // Configure WAIT_ as input
  pinMode(BUSREQ_, INPUT_PULLUP);                 // Set BUSREQ_ HIGH
  pinMode(BUSREQ_, OUTPUT);
  digitalWrite(BUSREQ_, HIGH);

  // Initialize D0-D7, AD0, MREQ_, RD_ and WR_
  DDRA = 0x00;                                    // Configure Z80 data bus D0-D7 (PA0-PA7) as input with pull-up
  PORTA = 0xFF;
  pinMode(MREQ_, INPUT_PULLUP);                   // Configure MREQ_ as input with pull-up
  pinMode(RD_, INPUT_PULLUP);                     // Configure RD_ as input with pull-up
  pinMode(WR_, INPUT_PULLUP);                     // Configure WR_ as input with pull-up
  pinMode(AD0, INPUT_PULLUP);

  // Initialize the Logical RAM Bank (32KB) to map into the lower half of the Z80 addressing space
  pinMode(BANK0, OUTPUT);                         // Set RAM Logical Bank 1
  digitalWrite(BANK0, HIGH);
  pinMode(BANK1, OUTPUT);
  digitalWrite(BANK1, LOW);

  // Initialize (park) SPI pins 
  pinMode(SS_, INPUT);                            // SD SPI parked (not used)
  pinMode(MISO, INPUT);
  pinMode(MOSI, INPUT_PULLUP);
  pinMode(SCK, INPUT);

  // Initialize CLK (single clock pulses mode) and reset the Z80 CPU
  pinMode(CLK, OUTPUT);                           // Set CLK as output
  digitalWrite(CLK, LOW);
  singlePulsesResetZ80();                         // Reset the Z80 CPU using single clock pulses

  // Initialize (park) MCU_RTS and MCU_CTS
  pinMode(MCU_RTS_, INPUT_PULLUP);                // Parked (not used)
  pinMode(MCU_CTS_, INPUT_PULLUP);

  // Read the Z80 CPU speed mode
  if (EEPROM.read(clockModeAddr) > 1)             // Check if it is a valid value, otherwise set it to 4MHz mode
  // Not a valid value. Set it to 4MHz.
  {
    EEPROM.write(clockModeAddr, 1);
  }
  clockMode = EEPROM.read(clockModeAddr);         // Read the previous stored value

  // Initialize the EXP_PORT (I2C) and search for "known" optional modules
  Wire.begin();                                   // Wake up I2C bus
  Wire.beginTransmission(GPIOEXP_ADDR);
  if (Wire.endTransmission() == 0) moduleGPIO = 1;// Set to 1 if GPIO Module is found
  
  // Print some system information
  Serial.begin(9600);
  Serial.println();
  Serial.println("Z80-MBC2 - A040618");
  Serial.println("IOS-LITE - I/O Subsystem - S220618");
  Serial.println();

  // Print the Z80 clock speed mode
  Serial.print("IOS: Z80 clock set at ");
  Serial.print(8 - (clockMode * 4));
  Serial.println("MHz");

  // Print RTC and GPIO informations if found
  foundRTC = autoSetRTC();                        // Check if RTC is present and initialize it as needed
  if (moduleGPIO) Serial.println("IOS: Found GPE Option");

  // ----------------------------------------
  // BOOT SELECTION AND SYS PARAMETERS MENU
  // ----------------------------------------

  // Boot selection and system parameters menu if requested
  bootMode = EEPROM.read(bootModeAddr);           // Read the previous stored boot mode
  if ((bootSelection == 1 ) || (bootMode > maxBootMode))
  // Enter in the boot selection menu if USER key was pressed at startup 
  //   or an invalid bootMode code was read from internal EEPROM
  {
    while (Serial.available() > 0)                // Flush input serial Rx buffer
    {
      Serial.read();
    }
    Serial.println();
    Serial.println("IOS: Select boot mode or system parameters:");
    Serial.println();
    if (bootMode <= maxBootMode)
    // Previous valid boot mode read, so enable '0' selection
    {
      minBootChar = '0';
      Serial.print(" 0: No change (->");
      Serial.print(bootMode + 1);
      Serial.println(")");
    }
    Serial.println(" 1: Basic");
    Serial.println(" 2: Forth");
    Serial.println(" 3: iLoad");
    Serial.println(" 4: Change Z80 clock speed (4/8MHz)");
    if (foundRTC)
    // RTC module is present, so add a choice
    {
      Serial.println(" 5: Change RTC time/date");
      maxSelChar = '5';
    }

    // Ask a choice
    Serial.println();
    timeStamp = millis();
    Serial.print("Enter your choice >");
    do
    {
      blinkIOSled(&timeStamp);
      inChar = Serial.read();
    }               
    while ((inChar < minBootChar) || (inChar > maxSelChar));
    Serial.print(inChar);
    Serial.println("  Ok");

    // Make the selected action
    if (inChar == '4')
    // Change the clock speed of the Z80 CPU
    {
      clockMode = !clockMode;                     // Toggle speed mode (4/8MHz)
      EEPROM.write(clockModeAddr, clockMode);     // Save it to the internal EEPROM
    }
    if (inChar == '5') ChangeRTC();               // Change RTC Date/Time
    bootMode = inChar - '1';                      // Calculate bootMode from inChar
    if (bootMode < 3) EEPROM.write(bootModeAddr, bootMode); // Save to the internal EEPROM if required
    else bootMode = EEPROM.read(bootModeAddr);    // Reload boot mode if '0' or > '3' choice selected
  }

  // ----------------------------------------
  // Z80 PROGRAM BOOT
  // ----------------------------------------

  // Get the address of the payload array in PROGMEM for the program boot and its size
  switch (bootMode)
  {
    case 0:                                       // Basic boot
      BootImage = (byte *) pgm_read_word (&bootPh2Table[0]); 
      BootImageSize = sizeof(boot_A_);
      BootStrAddr = boot_A_StrAddr;
      Z80IntEnFlag = 1;                           // Enable INT_ signal generation (Z80 M1 INT I/O)
    break;
    case 1:                                       // Forth boot
      BootImage = (byte *) pgm_read_word (&bootPh2Table[2]); 
      BootImageSize = sizeof(boot_C_);
      BootStrAddr = boot_C_StrAddr;
    break;
    case 2:                                       // iLoad boot
      BootImage = (byte *) pgm_read_word (&bootPh2Table[1]); 
      BootImageSize = sizeof(boot_B_);
      BootStrAddr = boot_B_StrAddr;
    break;
  }
  digitalWrite(WAIT_RES_, HIGH);                // Set WAIT_RES_ HIGH (Led LED_0 ON)
  
  // Load a JP instruction if the boot program starting addr is > 0x0000
  if (BootStrAddr > 0x0000)                     // Check if the boot program starting addr > 0x0000
  // Inject a "JP <BootStrAddr>" instruction to jump at boot starting address
  {
    loadHL(0x0000);                             // HL = 0x0000 (used as pointer to RAM)
    loadByteToRAM(JP_nn);                       // Write the JP opcode @ 0x0000;
    loadByteToRAM(lowByte(BootStrAddr));        // Write LSB to jump @ 0x0001
    loadByteToRAM(highByte(BootStrAddr));       // Write MSB to jump @ 0x0002
    //
    // DEBUG ----------------------------------
    if (debug)
    {
      Serial.print("DEBUG: Injected JP 0x");
      Serial.println(BootStrAddr, HEX);
    }
    // DEBUG END ------------------------------
    //
  }

  // Execute the boot
  loadHL(BootStrAddr);                           // Set Z80 HL = boot starting address (used as pointer to RAM);
  //
  // DEBUG ----------------------------------
  if (debug)
  {
    Serial.print("DEBUG: BootImageSize = ");
    Serial.println(BootImageSize);
    Serial.print("DEBUG: BootStrAddr = ");
    Serial.println(BootStrAddr, HEX);    
  }
  // DEBUG END ------------------------------
  //
  Serial.print("IOS: Loading boot program...");
  for (word i = 0; i < BootImageSize; i++)
  // Write boot program into external RAM
  {
    loadByteToRAM(pgm_read_byte(BootImage + i));  // Write current data byte into RAM
  }
  Serial.println(" Done");
  digitalWrite(RESET_, LOW);                      // Activate the RESET_ signal

  // Initialize CLK @ 4/8MHz. Z80 clock_freq = (Atmega_clock) / ((OCR2 + 1) * 2)
  ASSR &= ~(1 << AS2);                            // Set Timer2 clock from system clock
  TCCR2 |= (1 << CS20);                           // Set Timer2 clock to "no prescaling"
  TCCR2 &= ~((1 << CS21) | (1 << CS22));
  TCCR2 |= (1 << WGM21);                          // Set Timer2 CTC mode
  TCCR2 &= ~(1 << WGM20);
  TCCR2 |= (1 <<  COM20);                         // Set "toggle OC2 on compare match"
  TCCR2 &= ~(1 << COM21);
  OCR2 = clockMode;                               // Set the compare value to toggle OC2 (0 = 8MHz or 1 = 4MHz)
  pinMode(CLK, OUTPUT);                           // Set OC2 as output and start to output the clock @ 4Mhz
  Serial.println("IOS: Z80 is running from now");
  Serial.println();

  // Flush input serial Rx buffer
  while (Serial.available() > 0) 
  {
    Serial.read();
  }

  // Leave the Z80 CPU running
  delay(1);                                       // Just to be sure...
  digitalWrite(RESET_, HIGH);                     // Release Z80 from reset and let it run
}

// ------------------------------------------------------------------------------

void loop() 
{
  if (!digitalRead(WAIT_))
  // I/O operaton requested
  {
    if (!digitalRead(WR_))
    // I/O WRITE operation requested

    // ----------------------------------------
    // VIRTUAL I/O WRTE ENGINE
    // ----------------------------------------
    
    {
      ioAddress = digitalRead(AD0);               // Read Z80 address bus line AD0 (PC2)
      ioData = PINA;                              // Read Z80 data bus D0-D7 (PA0-PA7)
      if (ioAddress)                              // Check the I/O address (only AD0 is checked!)
      // .........................................................................................................
      //
      // AD0 = 1 (I/O write address = 0x01). STORE OPCODE.
      //
      // Store (write) an "I/O operation code" (Opcode) and reset the exchanged bytes counter.
      //
      // NOTE 1: An Opcode can be a write or read Opcode, if the I/O operation is read or write.
      // NOTE 2: the STORE OPCODE operation must always precede an EXECUTE WRITE OPCODE or EXECUTE READ OPCODE 
      //         operation.
      // NOTE 3: For multi-byte read opcode (as DATETIME) read sequentially all the data bytes without to send
      //         a STORE OPCODE operation before each data byte after the first one.
      // .........................................................................................................
      //
      // Currently defined Opcodes for I/O write operations:
      //
      //   Opcode     Name            Exchanged bytes
      // -------------------------------------------------
      // Opcode 0x00  USER LED        1
      // Opcode 0x01  SERIAL TX       1
      // Opcode 0x03  GPIOA Write     1
      // Opcode 0x04  GPIOB Write     1
      // Opcode 0x05  IODIRA Write    1
      // Opcode 0x06  IODIRB Write    1
      // Opcode 0x07  GPPUA Write     1
      // Opcode 0x08  GPPUB Write     1
      // Opcode 0xFF  No operation    1
      //
      //
      // Currently defined Opcodes for I/O read operations:
      //
      //   Opcode     Name            Exchanged bytes
      // -------------------------------------------------
      // Opcode 0x80  USER KEY        1
      // Opcode 0x81  GPIOA Read      1
      // Opcode 0x82  GPIOB Read      1
      // Opcode 0x83  SYSFLAGS        1
      // Opcode 0x84  DATETIME        7
      // Opcode 0xFF  No operation    1
      //
      // See the following lines for the Opcodes details.
      // 
      // .........................................................................................................     
      {
        ioOpcode = ioData;                        // Store the I/O operation code (Opcode)
        ioByteCnt = 0;                            // Reset the exchanged bytes counter
      }
      else
      // .........................................................................................................
      //
      // AD0 = 0 (I/O write address = 0x00). EXECUTE WRITE OPCODE.
      //
      // Execute the previously stored I/O write opcode with the current data.
      // The code of the I/O write operation (Opcode) must be previously stored with a STORE OPCODE operation.
      // .........................................................................................................
      //
      {
        switch (ioOpcode)
        // Execute the requested I/O WRITE Opcode. The 0xFF value is reserved as "No operation".
        {
          case  0x00:
          // USER LED:      
          //                I/O DATA:    D7 D6 D5 D4 D3 D2 D1 D0
          //                            ---------------------------------------------------------
          //                              x  x  x  x  x  x  x  0    USER Led off
          //                              x  x  x  x  x  x  x  1    USER Led on
          
          if (ioData & B00000001) digitalWrite(USER, LOW); 
          else digitalWrite(USER, HIGH);
        break;

        case  0x01:
          // SERIAL TX:     
          //                I/O DATA:    D7 D6 D5 D4 D3 D2 D1 D0
          //                            ---------------------------------------------------------
          //                             D7 D6 D5 D4 D3 D2 D1 D0    ASCII char to be sent to serial
          
          Serial.write(ioData);
        break;

        case  0x03:
          // GPIOA Write (GPE Option):
          //
          //                I/O DATA:    D7 D6 D5 D4 D3 D2 D1 D0
          //                            ---------------------------------------------------------
          //                             D7 D6 D5 D4 D3 D2 D1 D0    GPIOA value (see MCP32017 datasheet)
          
          if (moduleGPIO) 
          {
            Wire.beginTransmission(GPIOEXP_ADDR);
            Wire.write(GPIOA_REG);                // Select GPIOA
            Wire.write(ioData);                   // Write value
            Wire.endTransmission();
          }
        break;
        
        case  0x04:
          // GPIOB Write (GPE Option): 
          //   
          //                I/O DATA:    D7 D6 D5 D4 D3 D2 D1 D0
          //                            ---------------------------------------------------------
          //                             D7 D6 D5 D4 D3 D2 D1 D0    GPIOB value (see MCP32017 datasheet)
          
          if (moduleGPIO) 
          {
            Wire.beginTransmission(GPIOEXP_ADDR);
            Wire.write(GPIOB_REG);                // Select GPIOB
            Wire.write(ioData);                   // Write value
            Wire.endTransmission();
          }
        break;
        
        case  0x05:
          // IODIRA Write (GPE Option):
          //
          //                I/O DATA:    D7 D6 D5 D4 D3 D2 D1 D0
          //                            ---------------------------------------------------------
          //                             D7 D6 D5 D4 D3 D2 D1 D0    IODIRA value (see MCP32017 datasheet)
          
          if (moduleGPIO) 
          {
            Wire.beginTransmission(GPIOEXP_ADDR);
            Wire.write(IODIRA_REG);               // Select IODIRA
            Wire.write(ioData);                   // Write value
            Wire.endTransmission();
          }
        break;
        
        case  0x06:
          // IODIRB Write (GPE Option):
          //
          //                I/O DATA:    D7 D6 D5 D4 D3 D2 D1 D0
          //                            ---------------------------------------------------------
          //                             D7 D6 D5 D4 D3 D2 D1 D0    IODIRB value (see MCP32017 datasheet)
          
          if (moduleGPIO) 
          {
            Wire.beginTransmission(GPIOEXP_ADDR);
            Wire.write(IODIRB_REG);               // Select IODIRB
            Wire.write(ioData);                   // Write value
            Wire.endTransmission();
          }
        break;
        
        case  0x07:
          // GPPUA Write (GPE Option):
          //
          //                I/O DATA:    D7 D6 D5 D4 D3 D2 D1 D0
          //                            ---------------------------------------------------------
          //                             D7 D6 D5 D4 D3 D2 D1 D0    GPPUA value (see MCP32017 datasheet)
          
          if (moduleGPIO) 
          {
            Wire.beginTransmission(GPIOEXP_ADDR);
            Wire.write(GPPUA_REG);                // Select GPPUA
            Wire.write(ioData);                   // Write value
            Wire.endTransmission();
          }
        break;
        
        case  0x08:
          // GPPUB Write (GPIO Exp. Mod. ):
          //
          //                I/O DATA:    D7 D6 D5 D4 D3 D2 D1 D0
          //                            ---------------------------------------------------------
          //                             D7 D6 D5 D4 D3 D2 D1 D0    GPPUB value (see MCP32017 datasheet)
          
          if (moduleGPIO) 
          {
            Wire.beginTransmission(GPIOEXP_ADDR);
            Wire.write(GPPUB_REG);                // Select GPPUB
            Wire.write(ioData);                   // Write value
            Wire.endTransmission();
          }
        break;
        }
        ioOpcode = 0xFF;                // All done. Set ioOpcode = "No operation"
      }
      
      // Control bus sequence to exit from a wait state (M I/O write cycle)
      digitalWrite(BUSREQ_, LOW);                 // Request for a DMA
      digitalWrite(WAIT_RES_, LOW);               // Reset WAIT FF exiting from WAIT state
      digitalWrite(WAIT_RES_, HIGH);              // Now Z80 is in DMA, so it's safe set WAIT_RES_ HIGH again
      digitalWrite(BUSREQ_, HIGH);                // Resume Z80 from DMA
    }
    else 
      if (!digitalRead(RD_))
      // I/O READ operation requested

      // ----------------------------------------
      // VIRTUAL I/O READ ENGINE
      // ----------------------------------------
      
      {
        ioAddress = digitalRead(AD0);             // Read Z80 address bus line AD0 (PC2)
        ioData = 0;                               // Clear input data buffer
        if (ioAddress)                            // Check the I/O address (only AD0 is checked!)
        // .........................................................................................................
        //
        // AD0 = 1 (I/O read address = 0x01). SERIAL RX.
        //
        // Execute a Serial I/O Read operation.
        // .........................................................................................................
        //
        {
          //
          // SERIAL RX:     
          //                I/O DATA:    D7 D6 D5 D4 D3 D2 D1 D0
          //                            ---------------------------------------------------------
          //                             D7 D6 D5 D4 D3 D2 D1 D0    ASCII char read from serial
          //
          // NOTE 1: if there is no input char, a value 0xFF is forced as input char.
          // NOTE 2: the INT_ signal is always reset (set to HIGH) after this I/O operation.
          // NOTE 3: This is the only I/O that do not require any previous STORE OPCODE operation (for fast polling)
          //
          ioData = 0xFF;
          if (Serial.available() > 0) ioData = Serial.read();
          digitalWrite(INT_, HIGH);
        }
        else
        // .........................................................................................................
        //
        // AD0 = 0 (I/O read address = 0x00). EXECUTE READ OPCODE.
        //
        // Execute the previously stored I/O read operation with the current data.
        // The code of the I/O operation (Opcode) must be previously stored with a STORE OPCODE operation.
        //
        // NOTE: For multi-byte read opcode (as DATETIME) read sequentially all the data bytes without to send
        //       a STORE OPCODE operation before each data byte after the first one.
        // .........................................................................................................
        //
        {
          switch (ioOpcode)
          // Execute the requested I/O READ Opcode. The 0xFF value is reserved as "No operation".
          {
            case  0x80:
            // USER KEY:      
            //                I/O DATA:    D7 D6 D5 D4 D3 D2 D1 D0
            //                            ---------------------------------------------------------
            //                              0  0  0  0  0  0  0  0    USER Key not pressed
            //                              0  0  0  0  0  0  0  1    USER Key pressed
            
            tempByte = digitalRead(USER);         // Save USER led status
            pinMode(USER, INPUT_PULLUP);          // Read USER Key
            ioData = !digitalRead(USER);
            pinMode(USER, OUTPUT); 
            digitalWrite(USER, tempByte);         // Restore USER led status
            ioOpcode = 0xFF;                      // All done. Set ioOpcode = "No operation"
          break;

          case  0x81:
            // GPIOA Read (GPE Option):
            //
            //                I/O DATA:    D7 D6 D5 D4 D3 D2 D1 D0
            //                            ---------------------------------------------------------
            //                             D7 D6 D5 D4 D3 D2 D1 D0    GPIOA value (see MCP32017 datasheet)
            //
            // NOTE: a value 0x00 is forced if the GPE Option is not present
            
            if (moduleGPIO) 
            {
              // Set MCP23017 pointer to GPIOA
              Wire.beginTransmission(GPIOEXP_ADDR);
              Wire.write(GPIOA_REG);
              Wire.endTransmission();
              // Read GPIOA
              Wire.beginTransmission(GPIOEXP_ADDR);
              Wire.requestFrom(GPIOEXP_ADDR, 1);
              ioData = Wire.read();
            }
            ioOpcode = 0xFF;                      // All done. Set ioOpcode = "No operation"
          break;

          case  0x82:
            // GPIOB Read (GPE Option):
            //
            //                I/O DATA:    D7 D6 D5 D4 D3 D2 D1 D0
            //                            ---------------------------------------------------------
            //                             D7 D6 D5 D4 D3 D2 D1 D0    GPIOB value (see MCP32017 datasheet)
            //
            // NOTE: a value 0x00 is forced if the GPE Option is not present
            
            if (moduleGPIO) 
            {
              // Set MCP23017 pointer to GPIOB
              Wire.beginTransmission(GPIOEXP_ADDR);
              Wire.write(GPIOB_REG);
              Wire.endTransmission();
              // Read GPIOB
              Wire.beginTransmission(GPIOEXP_ADDR);
              Wire.requestFrom(GPIOEXP_ADDR, 1);
              ioData = Wire.read();
            }
            ioOpcode = 0xFF;                      // All done. Set ioOpcode = "No operation"
          break;

          case  0x83:
            // SYSFLAGS (Various system flags for the OS):
            //                I/O DATA:    D7 D6 D5 D4 D3 D2 D1 D0
            //                            ---------------------------------------------------------
            //                              X  X  X  X  X  X  X  0    AUTOEXEC not enabled
            //                              X  X  X  X  X  X  X  1    AUTOEXEC enabled
            //                              X  X  X  X  X  X  0  X    DS3231 RTC not found
            //                              X  X  X  X  X  X  1  X    DS3231 RTC found
            //
            // NOTE: Currently only D1 is used

            ioData = autoexecFlag | (foundRTC << 1);
            ioOpcode = 0xFF;                      // All done. Set ioOpcode = "No operation"
          break;

          case  0x84:
            // DATETIME (Read date/time and temperature from the RTC. Binary values): 
            //                I/O DATA:    D7 D6 D5 D4 D3 D2 D1 D0
            //                            ---------------------------------------------------------
            //                I/O DATA 0   D7 D6 D5 D4 D3 D2 D1 D0    seconds [0..59]     (1st data byte)
            //                I/O DATA 1   D7 D6 D5 D4 D3 D2 D1 D0    minutes [0..59]
            //                I/O DATA 2   D7 D6 D5 D4 D3 D2 D1 D0    hours   [0..23]
            //                I/O DATA 3   D7 D6 D5 D4 D3 D2 D1 D0    day     [1..31]
            //                I/O DATA 4   D7 D6 D5 D4 D3 D2 D1 D0    month   [1..12]
            //                I/O DATA 5   D7 D6 D5 D4 D3 D2 D1 D0    year    [0..99]
            //                I/O DATA 6   D7 D6 D5 D4 D3 D2 D1 D0    tempC   [-128..127] (7th data byte)
            //
            // NOTE 1: If RTC is not found all read values wil be = 0
            // NOTE 2: Overread data (more then 6 bytes read) will be = 0
            // NOTE 3: The temperature (Celsius) is a byte with two complement binary format [-128..127]

            if (foundRTC)
            {
               if (ioByteCnt == 0) readRTC(&seconds, &minutes, &hours, &day, &month, &year, &tempC); // Read from RTC
               if (ioByteCnt < 7)
               // Send date/time (binary values) to Z80 bus
               {
                  switch (ioByteCnt)
                  {
                    case 0: ioData = seconds; break;
                    case 1: ioData = minutes; break;
                    case 2: ioData = hours; break;
                    case 3: ioData = day; break;
                    case 4: ioData = month; break;
                    case 5: ioData = year; break;
                    case 6: ioData = tempC; break;
                  }
                  ioByteCnt++;
               }
               else ioOpcode = 0xFF;              // All done. Set ioOpcode = "No operation"
            }
            else ioOpcode = 0xFF;                 // Nothing to do. Set ioOpcode = "No operation"
          break;
          }
        }
        DDRA = 0xFF;                              // Configure Z80 data bus D0-D7 (PA0-PA7) as output
        PORTA = ioData;                           // Current output on data bus

        // Control bus sequence to exit from a wait state (M I/O read cycle)
        digitalWrite(BUSREQ_, LOW);               // Request for a DMA
        digitalWrite(WAIT_RES_, LOW);             // Now is safe reset WAIT FF (exiting from WAIT state)
        delayMicroseconds(2);                     // Wait 2us just to be sure that Z80 read the data and go HiZ
        DDRA = 0x00;                              // Configure Z80 data bus D0-D7 (PA0-PA7) as input with pull-up
        PORTA = 0xFF;
        digitalWrite(WAIT_RES_, HIGH);            // Now Z80 is in DMA (HiZ), so it's safe set WAIT_RES_ HIGH again
        digitalWrite(BUSREQ_, HIGH);              // Resume Z80 from DMA
      }
      else
      // INTERRUPT operation setting IORQ_ LOW, so nothing to do

      // ----------------------------------------
      // VIRTUAL INTERRUPT
      // ----------------------------------------

      // Nothing to do
      {
        //
        // DEBUG ----------------------------------
        if (debug) 
        {
          Serial.println();
          Serial.println("DEBUG: INT operation (nothing to do)");
        }
        // DEBUG END ------------------------------
        //
        
        // Control bus sequence to exit from a wait state (M interrupt cycle)
        digitalWrite(BUSREQ_, LOW);               // Request for a DMA
        digitalWrite(WAIT_RES_, LOW);             // Reset WAIT FF exiting from WAIT state
        digitalWrite(WAIT_RES_, HIGH);            // Now Z80 is in DMA, so it's safe set WAIT_RES_ HIGH again
        digitalWrite(BUSREQ_, HIGH);              // Resume Z80 from DMA
      }
  }
}


// ------------------------------------------------------------------------------

// Generic routines

// ------------------------------------------------------------------------------



void printBinaryByte(byte value)
{
  for (byte mask = 0x80; mask; mask >>= 1)
  {
    Serial.print((mask & value) ? '1' : '0');
  }
}

// ------------------------------------------------------------------------------

void serialEvent()
// Set INT_ to ACTIVE if there are received chars from serial to read and if the interrupt generation is enabled
{
  if ((Serial.available()) && Z80IntEnFlag) digitalWrite(INT_, LOW);
}

// ------------------------------------------------------------------------------

void blinkIOSled(unsigned long *timestamp)
// Blink led IOS using a timestamp
{
  if ((millis() - *timestamp) > 200)
  {
    digitalWrite(LED_IOS,!digitalRead(LED_IOS));
    *timestamp = millis();
  }
}


// ------------------------------------------------------------------------------

// RTC Module routines

// ------------------------------------------------------------------------------


byte decToBcd(byte val)
// Convert a binary byte to a two digits BCD byte
{
  return( (val/10*16) + (val%10) );
}

// ------------------------------------------------------------------------------

byte bcdToDec(byte val)
// Convert binary coded decimal to normal decimal numbers
{
  return( (val/16*10) + (val%16) );
}

// ------------------------------------------------------------------------------

void readRTC(byte *second, byte *minute, byte *hour, byte *day, byte *month, byte *year, byte *tempC)
// Read current date/time binary values and the temprerature (2 complement) from the DS3231 RTC
{
  Wire.beginTransmission(DS3231_RTC);
  Wire.write(DS3231_SECRG);                        // Set the DS3231 Seconds Register
  Wire.endTransmission();
  // Read from RTC and convert to binary
  Wire.requestFrom(DS3231_RTC, 18);
  *second = bcdToDec(Wire.read() & 0x7f);
  *minute = bcdToDec(Wire.read());
  *hour = bcdToDec(Wire.read() & 0x3f);
  Wire.read();                                     // Jump over the DoW
  *day = bcdToDec(Wire.read());
  *month = bcdToDec(Wire.read());
  *year = bcdToDec(Wire.read());
  for (iCount = 0; iCount < 10; iCount++) Wire.read(); // Jump over 10 registers
  *tempC = Wire.read();
}

// ------------------------------------------------------------------------------

void writeRTC(byte second, byte minute, byte hour, byte day, byte month, byte year)
// Write given date/time binary values to the DS3231 RTC
{
  Wire.beginTransmission(DS3231_RTC);
  Wire.write(DS3231_SECRG);                        // Set the DS3231 Seconds Register
  Wire.write(decToBcd(seconds));
  Wire.write(decToBcd(minutes));
  Wire.write(decToBcd(hours));
  Wire.write(1);                                   // Day of week not used (always set to 1 = Sunday)
  Wire.write(decToBcd(day));
  Wire.write(decToBcd(month));
  Wire.write(decToBcd(year));
  Wire.endTransmission();
}

// ------------------------------------------------------------------------------

byte autoSetRTC()
// Check if the DS3231 RTC is present and set the date/time at compile date/time if 
// the RTC "Oscillator Stop Flag" is set (= date/time failure).
// Return value: 0 if RTC not present, 1 if found.
{
  byte    OscStopFlag;

  Wire.beginTransmission(DS3231_RTC);
  if (Wire.endTransmission() != 0) return 0;       // RTC not found
  Serial.print("IOS: Found RTC DS3231 Module (");
  printDateTime(1);
  Serial.println(")");

  // Print the temperaturefrom the RTC sensor
  Serial.print("IOS: RTC DS3231 temperature sensor: ");
  Serial.print((int8_t)tempC);
  Serial.println("C");
  
  // Read the "Oscillator Stop Flag"
  Wire.beginTransmission(DS3231_RTC);
  Wire.write(DS3231_STATRG);                       // Set the DS3231 Status Register
  Wire.endTransmission();
  Wire.requestFrom(DS3231_RTC, 1);
  OscStopFlag = Wire.read() & 0x80;                // Read the "Oscillator Stop Flag"

  if (OscStopFlag)
  // RTC oscillator stopped. RTC must be set at compile date/time
  {
    // Convert compile time strings to numeric values
    seconds = compTimeStr.substring(6,8).toInt();
    minutes = compTimeStr.substring(3,5).toInt();
    hours = compTimeStr.substring(0,2).toInt();
    day = compDateStr.substring(4,6).toInt();
    switch (compDateStr[0]) 
      {
        case 'J': month = compDateStr[1] == 'a' ? 1 : month = compDateStr[2] == 'n' ? 6 : 7; break;
        case 'F': month = 2; break;
        case 'A': month = compDateStr[2] == 'r' ? 4 : 8; break;
        case 'M': month = compDateStr[2] == 'r' ? 3 : 5; break;
        case 'S': month = 9; break;
        case 'O': month = 10; break;
        case 'N': month = 11; break;
        case 'D': month = 12; break;
      };
    year = compDateStr.substring(9,11).toInt();

    // Ask for RTC setting al compile date/time
    Serial.println("IOS: RTC clock failure!");
    Serial.print("\nDo you want set RTC at IOS compile time (");
    printDateTime(0);
    Serial.print(")? [Y/N] >");
    timeStamp = millis();
    do
    {
      blinkIOSled(&timeStamp);
      inChar = Serial.read();
    }
    while ((inChar != 'y') && (inChar != 'Y') && (inChar != 'n') &&(inChar != 'N'));
    Serial.println(inChar);
 
    // Set the RTC at the compile date/time and print a message
    if ((inChar == 'y') || (inChar == 'Y'))
    {
      writeRTC(seconds, minutes, hours, day, month, year);
      Serial.print("IOS: RTC set at compile time - Now: ");
      printDateTime(1);
      Serial.println();
    }

    // Reset the "Oscillator Stop Flag" 
    Wire.beginTransmission(DS3231_RTC);
    Wire.write(DS3231_STATRG);                          // Set the DS3231 Status Register
    Wire.write(0x08);                                   // Reset the "Oscillator Stop Flag" (32KHz output left enabled)
    Wire.endTransmission();
  }
  return 1;
}

// ------------------------------------------------------------------------------

void printDateTime(byte readSourceFlag)
// Print to serial the current date/time from the global variables.
//
// Flag readSourceFlag [0..1] usage:
//    If readSourceFlag = 0 the RTC read is not done
//    If readSourceFlag = 1 the RTC read is done (global variables are updated)
{
  if (readSourceFlag) readRTC(&seconds, &minutes, &hours, &day,  &month,  &year, &tempC);
  print2digit(day);
  Serial.print("/");
  print2digit(month);
  Serial.print("/");
  print2digit(year);
  Serial.print(" ");
  print2digit(hours);
  Serial.print(":");
  print2digit(minutes);
  Serial.print(":");
  print2digit(seconds);
}

// ------------------------------------------------------------------------------

void print2digit(byte data)
// Print a byte [0..99] using 2 digit with leading zeros if needed
{
  if (data < 10) Serial.print("0");
  Serial.print(data);
}

// ------------------------------------------------------------------------------

byte isLeapYear(byte yearXX)
// Check if the year 2000+XX (where XX is the argument yearXX [00..99]) is a leap year.
// Returns 1 if it is leap, 0 otherwise.
// This function works in the [2000..2099] years range. It should be enough...
{
  if (((2000 + yearXX) % 4) == 0) return 1;
  else return 0;
}

// ------------------------------------------------------------------------------

void ChangeRTC()
// Change manually the RTC Date/Time from keyboard
{
  byte    leapYear;   //  Set to 1 if the selected year is bissextile, 0 otherwise [0..1]

  // Read RTC
  readRTC(&seconds, &minutes, &hours, &day,  &month,  &year, &tempC);

  // Change RTC date/time from keyboard
  tempByte = 0;
  Serial.println("\nIOS: RTC manual setting:");
  Serial.println("\nPress T/U to increment +10/+1 or CR to accept");
  do
  {
    do
    {
      Serial.print(" ");
      switch (tempByte)
      {
        case 0:
          Serial.print("Year -> ");
          print2digit(year);
        break;
        
        case 1:
          Serial.print("Month -> ");
          print2digit(month);
        break;

        case 2:
          Serial.print("             ");
          Serial.write(13);
          Serial.print(" Day -> ");
          print2digit(day);
        break;

        case 3:
          Serial.print("Hours -> ");
          print2digit(hours);
        break;

        case 4:
          Serial.print("Minutes -> ");
          print2digit(minutes);
        break;

        case 5:
          Serial.print("Seconds -> ");
          print2digit(seconds);
        break;
      }

      timeStamp = millis();
      do
      {
        blinkIOSled(&timeStamp);
        inChar = Serial.read();
      }
      while ((inChar != 'u') && (inChar != 'U') && (inChar != 't') && (inChar != 'T') && (inChar != 13));
      
      if ((inChar == 'u') || (inChar == 'U'))
      // Change units
        switch (tempByte)
        {
          case 0:
            year++;
            if (year > 99) year = 0;
          break;

          case 1:
            month++;
            if (month > 12) month = 1;
          break;

          case 2:
            day++;
            if (day > (daysOfMonth[month - 1] + isLeapYear(year))) day = 1;
          break;

          case 3:
            hours++;
            if (hours > 23) hours = 0;
          break;

          case 4:
            minutes++;
            if (minutes > 59) minutes = 0;
          break;

          case 5:
            seconds++;
            if (seconds > 59) seconds = 0;
          break;
        }
      if ((inChar == 't') || (inChar == 'T'))
      // Change tens
        switch (tempByte)
        {
          case 0:
            year = year + 10;
            if (year > 99) year = year - (year / 10) * 10; 
          break;

          case 1:
            if (month > 10) month = month - 10;
            else if (month < 3) month = month + 10;
          break;

          case 2:
            day = day + 10;
            if (day > (daysOfMonth[month - 1] + isLeapYear(year))) day = day - (day / 10) * 10;
            if (day == 0) day = 1;
          break;

          case 3:
            hours = hours + 10;
            if (hours > 23) hours = hours - (hours / 10 ) * 10;
          break;

          case 4:
            minutes = minutes + 10;
            if (minutes > 59) minutes = minutes - (minutes / 10 ) * 10;
          break;

          case 5:
            seconds = seconds + 10;
            if (seconds > 59) seconds = seconds - (seconds / 10 ) * 10;
          break;
        }
      Serial.write(13);
    }
    while (inChar != 13);
    tempByte++;
  }
  while (tempByte < 6);  

  // Write new date/time into the RTC
  writeRTC(seconds, minutes, hours, day, month, year);
  Serial.println(" ...done      ");
  Serial.print("IOS: RTC date/time updated (");
  printDateTime(1);
  Serial.println(")");
}


// ------------------------------------------------------------------------------

// Z80 boot routines

// ------------------------------------------------------------------------------


void pulseClock(byte numPulse)
// Generate <numPulse> clock pulses on the Z80 clock pin.
// The steady clock level is LOW, e.g. one clock pulse is a 0-1-0 transition
{
  for (iCount = 0; iCount < numPulse; iCount++)
  // Generate one clock pulse
  {
    // Send one impulse (0-1-0) on the CLK output
    digitalWrite(CLK, HIGH);
    digitalWrite(CLK, LOW);
  }
}

// ------------------------------------------------------------------------------

void loadByteToRAM(byte value)
// Load a given byte to RAM using a sequence of two Z80 instructions forced on the data bus.
// The RAM_CE2 signal is used to force the RAM in HiZ, so the Atmega can write the needed instruction/data
// on the data bus. Controlling the clock signal and knowing exactly how many clocks pulse are required it is possible control the
// whole loading process.
// In the following "T" are the T-cycles of the Z80 (See the Z80 datashet).
// The two instruction are "LD (HL), n" and "INC (HL)".
{
  // Execute the LD(HL),n instruction (T = 4+3+3). See the Z80 datasheet and manual.
  // After the execution of this instruction the <value> byte is loaded in the memory address pointed by HL.
  pulseClock(1);                      // Execute the T1 cycle of M1 (Opcode Fetch machine cycle)
  digitalWrite(RAM_CE2, LOW);         // Force the RAM in HiZ (CE2 = LOW)
  DDRA = 0xFF;                        // Configure Z80 data bus D0-D7 (PA0-PA7) as output
  PORTA = LD_HL;                      // Write "LD (HL), n" opcode on data bus
  pulseClock(2);                      // Execute T2 and T3 cycles of M1
  DDRA = 0x00;                        // Configure Z80 data bus D0-D7 (PA0-PA7) as input... 
  PORTA = 0xFF;                       // ...with pull-up
  pulseClock(2);                      // Complete the execution of M1 and execute the T1 cycle of the following 
                                      // Memory Read machine cycle
  DDRA = 0xFF;                        // Configure Z80 data bus D0-D7 (PA0-PA7) as output
  PORTA = value;                      // Write the byte to load in RAM on data bus
  pulseClock(2);                      // Execute the T2 and T3 cycles of the Memory Read machine cycle
  DDRA = 0x00;                        // Configure Z80 data bus D0-D7 (PA0-PA7) as input... 
  PORTA = 0xFF;                       // ...with pull-up
  digitalWrite(RAM_CE2, HIGH);        // Enable the RAM again (CE2 = HIGH)
  pulseClock(3);                      // Execute all the following Memory Write machine cycle

  // Execute the INC(HL) instruction (T = 6). See the Z80 datasheet and manual.
  // After the execution of this instruction HL points to the next memory address.
  pulseClock(1);                      // Execute the T1 cycle of M1 (Opcode Fetch machine cycle)
  digitalWrite(RAM_CE2, LOW);         // Force the RAM in HiZ (CE2 = LOW)
  DDRA = 0xFF;                        // Configure Z80 data bus D0-D7 (PA0-PA7) as output
  PORTA = INC_HL;                     // Write "INC(HL)" opcode on data bus
  pulseClock(2);                      // Execute T2 and T3 cycles of M1
  DDRA = 0x00;                        // Configure Z80 data bus D0-D7 (PA0-PA7) as input... 
  PORTA = 0xFF;                       // ...with pull-up
  digitalWrite(RAM_CE2, HIGH);        // Enable the RAM again (CE2 = HIGH)
  pulseClock(3);                      // Execute all the remaining T cycles
}

// ------------------------------------------------------------------------------

void loadHL(word value)
// Load "value" word into the HL registers inside the Z80 CPU, using the "LD HL,nn" instruction.
// In the following "T" are the T-cycles of the Z80 (See the Z80 datashet).
{
  // Execute the LD dd,nn instruction (T = 4+3+3), with dd = HL and nn = value. See the Z80 datasheet and manual.
  // After the execution of this instruction the word "value" (16bit) is loaded into HL.
  pulseClock(1);                      // Execute the T1 cycle of M1 (Opcode Fetch machine cycle)
  digitalWrite(RAM_CE2, LOW);         // Force the RAM in HiZ (CE2 = LOW)
  DDRA = 0xFF;                        // Configure Z80 data bus D0-D7 (PA0-PA7) as output
  PORTA = LD_HLnn;                    // Write "LD HL, n" opcode on data bus
  pulseClock(2);                      // Execute T2 and T3 cycles of M1
  DDRA = 0x00;                        // Configure Z80 data bus D0-D7 (PA0-PA7) as input... 
  PORTA = 0xFF;                       // ...with pull-up
  pulseClock(2);                      // Complete the execution of M1 and execute the T1 cycle of the following 
                                      // Memory Read machine cycle
  DDRA = 0xFF;                        // Configure Z80 data bus D0-D7 (PA0-PA7) as output
  PORTA = lowByte(value);             // Write first byte of "value" to load in HL
  pulseClock(3);                      // Execute the T2 and T3 cycles of the first Memory Read machine cycle
                                      // and T1, of the second Memory Read machine cycle
  PORTA = highByte(value);            // Write second byte of "value" to load in HL
  pulseClock(2);                      // Execute the T2 and T3 cycles of the second Memory Read machine cycle                                    
  DDRA = 0x00;                        // Configure Z80 data bus D0-D7 (PA0-PA7) as input... 
  PORTA = 0xFF;                       // ...with pull-up
  digitalWrite(RAM_CE2, HIGH);        // Enable the RAM again (CE2 = HIGH)
}

// ------------------------------------------------------------------------------

void singlePulsesResetZ80()
// Reset the Z80 CPU using single pulses clock
{
  digitalWrite(RESET_, LOW);          // Set RESET_ active
  pulseClock(6);                      // Generate twice the needed clock pulses to reset the Z80
  digitalWrite(RESET_, HIGH);         // Set RESET_ not active
  pulseClock(2);                      // Needed two more clock pulses after RESET_ goes HIGH
}


