[Feature][MD310EU][task-view-1009] Create MD310EU project code directory
Change-Id: I57cd3c474efe4493ae8a242d7e2fa643ad8ecbde
diff --git a/lynq/MD310EU/boot/common/src/loader/cpu/m0/start.S b/lynq/MD310EU/boot/common/src/loader/cpu/m0/start.S
new file mode 100755
index 0000000..a2e49cb
--- /dev/null
+++ b/lynq/MD310EU/boot/common/src/loader/cpu/m0/start.S
@@ -0,0 +1,226 @@
+/*
+ * (C) Copyright 2016 ZXIC Inc.
+ *
+ */
+
+#include <config.h>
+#include <board.h>
+#include <load_mode.h>
+
+.globl stack_setup
+
+stack:
+#if (CONFIG_DL_DISABLE)
+ .word 0x045A0000 /* DL port: 0x5A->Disable. */
+#else
+ .word 0x01000000 /* DL port: 0x00->Enable. */
+#endif
+ .word 0x3537585A /* = string "57XZ" */
+ .word 0x31563132 /* = string "1V12" */
+ .word 0x00001E70 /* zdata size = 8K - HdrSize = 8192 - 400 = 7792 Bytes = 0x1E70*/
+
+ /* NOT used now, Just reverse memory for RSA/HASH in near future. */
+ .word 0x00000000 /*puk_rsa_d*/
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+
+ .word 0x00000000 /*puk_rsa_n*/
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+
+ .word 0x00000000 /*hash_y*/
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000
+ .word 0x00000000 /* VID+PID */
+#if defined(CFG_ZLOAD)
+ .word 0x00102800
+ .word _start - 0x100000 + 0x8A001 /* TBD: MACRO instead of number. */
+#else
+ .word 0x0008A000
+ .word _start + 0x1
+#endif
+ .word loop + 1
+ .word loop + 1
+
+.globl _bss_start
+_bss_start:
+ .word __bss_start
+ nop
+ nop
+
+.globl _bss_end
+_bss_end:
+ .word __bss_end
+
+.globl _para_start
+_para_start:
+ .word __para_start
+
+.globl _para_end
+_para_end:
+ .word __para_end
+
+.globl _start
+_start:
+
+#if defined(CFG_ZLOAD)
+ /* check stage1 state */
+ ldr r3,=CFG_START_STAGE1_ADDR
+ ldr r4,=CFG_START_STAGE1_STATE
+ ldr r5, [r3]
+ cmp r4, r5
+ beq set_stack
+
+ ldr r0, =0x8a000
+ msr MSP, r0
+
+ bl copy_to_iram1
+ ldr r3,=0x1001B1 /* 0x1b1 = 0x194(header len) + 0x1c(first Ins. offset) + 0x1(16bit thumb instruction) */
+ mov pc,r3
+set_stack:
+ /* Set up the stack */
+ ldr r2, =0x100000
+ ldr r3,=0x194 /*header len=0x194*/
+ add r2,r3
+ ldr r0, [r2]
+ msr MSP, r0
+
+#else
+
+ /* Set up the stack */
+ ldr r2, =stack
+ ldr r3,=0x194 /*header len=0x194*/
+ add r2,r3
+ ldr r0, [r2]
+ msr MSP, r0
+
+#endif /* CFG_ZLOAD */
+
+/* clear the bss */
+clear_bss:
+ ldr r3, =_bss_start
+ ldr r0, [r3] /* find start of bss segment */
+ ldr r3, =_bss_end
+ ldr r1, [r3] /* stop here */
+ cmp r0, r1
+ beq clbss_over
+ mov r2, #0x0 /* clear value */
+clbss_l:
+ str r2, [r0] /* clear BSS location */
+ add r0, r0, #4 /* increment clear index pointer */
+ cmp r0, r1 /* are we at the end yet */
+ bne clbss_l /* keep clearing till at end */
+clbss_over:
+
+/* remove the para section */
+ ldr r3, =_para_start
+ ldr r4, [r3]
+ ldr r3, =_para_end
+ ldr r1, [r3]
+ sub r1, r1, r4
+ ldr r3, =_bss_end
+ ldr r0, [r3]
+ add r1, r1, r0
+ cmp r0, r1
+ beq remove_over
+re_move:
+ ldr r2, [r0]
+ str r2, [r4]
+ add r4, r4, #4
+ add r0, r0, #4 /* increment clear index pointer */
+ cmp r0, r1 /* are we at the end yet */
+ bne re_move
+remove_over:
+
+ b start_armboot
+
+loop:
+ b loop
+
diff --git a/lynq/MD310EU/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_ufi_mini.c b/lynq/MD310EU/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_ufi_mini.c
new file mode 100755
index 0000000..a47746d
--- /dev/null
+++ b/lynq/MD310EU/boot/common/src/uboot/board/zte/zx297520v3/zx297520v3_ufi_mini.c
@@ -0,0 +1,568 @@
+/*********************************************************************
+ Copyright 2016 by ZIXC Corporation.
+*
+* FileName:: zx297520.c
+* File Mark:
+* Description:
+* Others:
+* Version: v1.0
+* Author: zhouqi
+* Date: 2014-1-15
+
+* History 1:
+* Date:
+* Version:
+* Author:
+* Modification:
+* History 2:
+**********************************************************************/
+
+#include <common.h>
+#include <errno.h>
+#include <nand.h>
+#include <asm/arch/nand.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/uart.h>
+#include <asm/arch/lsp_crpm.h>
+#include <power.h>
+#include <partition_table.h>
+
+#include <mmc.h>
+#include <dwmmc.h>
+#include <boot_mode.h>
+#include <load_image.h>
+#include <zx234290.h>
+#include <charge.h>
+//#include <led.h>
+#include <lcd.h>
+#include <peripheral.h>
+#include "board.h"
+
+#include <drvs_gpio.h>
+
+#include <asm/arch/gmac.h>
+#include <command.h>
+#include <version.h>
+#include <secure_verify.h>
+#include <asm/arch/efuse.h>
+
+#include "cmd_downver.h"
+#include <../drivers/dma/zx29_dma.h>
+
+#include <watchdog.h>
+#include <linux/mtd/partitions.h>
+
+
+#define RET_BOOT_READY 1
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#if TIME_DEBUG
+#define time_debug_reset(fmt) fmt = get_timer(0)
+#define time_debug_printf(fmt, val) printf(fmt ,get_timer(val))
+#else
+#define time_debug_reset(fmt)
+#define time_debug_printf(fmt, val)
+#endif /* TIME_DEBUG */
+
+typedef struct {
+ int (*Init)(void);
+ char func_name[20];
+}sys_init_func_t;
+
+extern boot_reason_t g_boot_reason;
+extern uint32_t g_gmac_init_flag;
+extern uint32_t g_gmac_init_overtime;
+extern unsigned char g_ddr_size_flag;
+
+unsigned int g_uiDebugLevel = UBOOT_NOTICE;
+unsigned int g_sys_kernel_sdram_size = CONFIG_SYS_SDRAM32_A9_SIZE;
+
+
+#ifndef CFG_TEMP_ADDR
+#define CFG_TEMP_ADDR 0x22000000
+#endif
+
+#define reg32(addr) (*(volatile unsigned long *)(addr))
+
+#define UDELAY_PARAM_1SEC (100000/3)
+
+/* DebugLevel - Controlled at compile time
+ * UBOOT_ERR -> Noncritical error conditions.
+ * UBOOT_WARN -> Warning conditions that should be taken care of.
+ * UBOOT_NOTICE -> Normal, but significant events.
+ * UBOOT_DBG -> Informational messages that require no action.
+ * UBOOT_INFO -> Debugging messages, output if the developer enabled debugging.
+ */
+//unsigned int g_uiDebugLevel = UBOOT_NOTICE;
+extern int copy_ddr_allbin(void);
+
+/*******************************************************************************
+ * Function: board_init
+ * Description:
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ * Returns:
+ *
+ *
+ * Others:
+ ********************************************************************************/
+int board_init(void)
+{
+ return 0;
+}
+
+/*******************************************************************************
+ * Function: dram_init_banksize
+ * Description:
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ * Returns:
+ *
+ *
+ * Others:
+ ********************************************************************************/
+void dram_init_banksize(void)
+{
+ gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
+ gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
+}
+
+/*******************************************************************************
+ * Function: dram_init
+ * Description:
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ * Returns:
+ *
+ *
+ * Others:
+ ********************************************************************************/
+int dram_init(void)
+{
+ gd->ram_size = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE,
+ PHYS_SDRAM_1_SIZE);
+
+ return 0;
+}
+
+/*******************************************************************************
+ * Function: checkboard
+ * Description:
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ * Returns:
+ *
+ *
+ * Others:
+ ********************************************************************************/
+int checkboard(void)
+{
+#ifdef CONFIG_DISPLAY_BOARDINFO
+ printf("Board: ZX297520V3\n");
+#endif
+
+ return 0;
+}
+
+void clear_iram(uint32_t addr, uint32_t len)
+{
+ uint32_t i = 0;
+ for(i = addr; i < addr + len; i+=4)
+ {
+ writel(0x0, i);
+ }
+}
+
+void clear_tmp_buf(void)
+{
+ clear_iram(CONFIG_SYS_SDRAM_TEMP_BASE, 0x800);
+}
+
+/*
+ * EC: 616000510470
+ */
+static int mdl_poweron(void)
+{
+ pmu_pull_on_ps_hold();
+
+
+ zDrvGpio_PullUpDown(GPIO120, 0);
+ //gpio_set_reuse(PS_HOLD_PIN, 0);
+ zDrvGpio_SetFunc(GPIO120,GPIO120_GPIO120);
+ zDrvGpio_SetDirection(GPIO120,GPIO_OUT);
+ zDrvGpio_SetOutputValue(GPIO120,GPIO_HIGH);
+ zDrvGpio_PullUpDown(GPIO125, GPIO_PULL_DOWN);
+ zDrvGpio_SetFunc(GPIO125,GPIO125_GPIO125);
+ zDrvGpio_SetDirection(GPIO125,GPIO_IN);
+ // power red led
+ zDrvGpio_PullUpDown(GPIO126, 0);
+ zDrvGpio_SetFunc(GPIO121,GPIO121_GPIO121);
+ zDrvGpio_SetDirection(GPIO121,GPIO_OUT);
+ zDrvGpio_SetOutputValue(GPIO121,GPIO_HIGH);
+
+ return 0;
+}
+
+static int gmac_download_init(void)
+{
+ int ret = 0;
+
+ get_gmac_init_flag();
+ BOOT_PRINTF(UBOOT_DBG, "get_gmac_init_flag = 0x%x, read_gmac_init_flag = 0x%x.\n", get_gmac_init_flag(), read_gmac_init_flag());
+ if(1 == read_gmac_init_flag())
+ {
+ BOOT_PRINTF(UBOOT_NOTICE, "gmac init overtime[%ds].....$$$$$$$$$$$$$$\n", read_gmac_init_overtime());
+
+ puts("Net: ");
+ eth_initialize(gd->bd);
+
+ if (run_command ("downver allbins", 0) >= 0)
+ {
+ ret = copy_ddr_allbin();
+ if(ret != 0)
+ {
+ BOOT_PRINTF(UBOOT_ERR, "net load write from ddr to nand FAILED !!!\n");
+ }
+ }
+ else
+ {
+ BOOT_PRINTF(UBOOT_ERR, "run_command downver allbins FAILED !!!\n");
+ }
+ }
+
+ return 0;
+}
+
+static int test_env_entry(void)
+{
+ /* Ó²¼þ²âÊÔ */
+#if CONFIG_HARDWARE_TEST
+ hardware_test();
+#endif
+
+#if CONFIG_MUTUAL_DEBUG //ÖÃ1Ö®ºó¾Í¿ÉÒÔ½øÈëUBoot¿ØÖÆÌ¨ÃüÁîÐÐ
+ for (;;)
+ {
+ main_loop();
+ }
+#endif
+
+ return 0;
+}
+
+static int boot_reason_init(void)
+{
+ int ret = 0;
+ unsigned int amt_flag = 0;
+ unsigned int key_times = 0;
+ unsigned int *poweron_type = (unsigned int *)POWERON_TYPE_ADDR; //ÁÙʱʹÓÃ
+
+ BOOT_PRINTF(UBOOT_DBG, "Normal mode.\n");
+
+ amt_flag = readl(POWERON_TYPE_ADDR);
+ BOOT_PRINTF(UBOOT_NOTICE, "VALUE = 0x%x!\n", amt_flag);
+ if(amt_flag == AMT_MODE_FLAG)
+ {
+ BOOT_PRINTF(UBOOT_NOTICE, "AMT VALUE = AMT_MODE_FLAG!\n");
+ g_boot_reason = RB_AMT;
+ }
+ else
+ {
+ ret = get_boot_reason();
+ if(ret != 0)
+ {
+ BOOT_PRINTF(UBOOT_ERR, "get boot reason ERROR !!!\n");
+ /* TBD: Error Return. */
+ }
+ }
+
+ if(read_fota_update_flag() == FOTA_RECOVERY)
+ {
+ *poweron_type = POWER_ON_FOTA;
+ }
+ else if(read_fota_update_flag() == FOTA_LOCALUPDATE)
+ {
+ *poweron_type = POWER_ON_LOCALUPDATE;
+ }
+ else if(g_boot_reason == RB_AMT)
+ {
+ *poweron_type = POWER_ON_AMT;
+ }
+ else if(g_boot_reason == RB_PRODUCTION)
+ {
+ *poweron_type = POWER_ON_PRODUCTION;
+ }
+ else if((g_boot_reason & 0xF0) == ZX234290_WDT_RST_FLAG)
+ {
+ *poweron_type = g_boot_reason & 0x0F;
+ }
+ else if(g_boot_reason == RB_RESET_NOMAL)
+ {
+ *poweron_type = POWER_ON_NORMAL;
+ }
+ else if(g_boot_reason == RB_RTC)
+ {
+ *poweron_type = POWER_ON_RTC; //POWER_ON_NORMAL;
+ }
+ else if(g_boot_reason == RB_RESET_EXCEPT)
+ {
+ *poweron_type = POWER_ON_EXCEPTRESET;
+ }
+ else if(g_boot_reason == RB_POWER_BOOST_IN)
+ {
+ *poweron_type = POWER_ON_BOOST_IN;
+ }
+ else if(g_boot_reason == RB_RESET_ALARM)
+ {
+ *poweron_type = POWER_ON_NORMAL;
+ }
+ else
+ {
+ *poweron_type = POWER_ON_NORMAL;
+ }
+ BOOT_PRINTF(UBOOT_NOTICE, "poweron_type=0x%x.\n", *poweron_type);
+ zx234290_write_flag(ZX234290_WDT_RST_FLAG | *poweron_type);
+
+ return 0;
+}
+
+static int boot_prepare(void)
+{
+
+#if 1
+ zx234290_set_softon(1);
+#else
+ zx234290_set_softon(0);
+ pmu_pull_off_ps_hold();
+#endif
+
+ return 0;
+}
+
+static int boot_entry(void)
+{
+ int ret = 0;
+ unsigned int poweron_type = reg32(POWERON_TYPE_ADDR); //ÁÙʱʹÓÃ
+
+ g_ddr_size_flag = CHIP_DDR_IS_32M;
+
+ switch (poweron_type) {
+
+ case POWER_ON_LOCALUPDATE:
+ break;
+ case POWER_ON_FOTA:
+ BOOT_PRINTF(UBOOT_NOTICE, "Fota entry!\n");
+ if(g_ddr_size_flag == CHIP_DDR_IS_32M)
+ {
+ g_sys_kernel_sdram_size = CONFIG_SYS_SDRAM32_RECOVERY_A9_SIZE;
+ }
+ else if(g_ddr_size_flag == CHIP_DDR_IS_64M)
+ {
+ g_sys_kernel_sdram_size = CONFIG_SYS_SDRAM64_RECOVERY_A9_SIZE;
+ }
+ else if(g_ddr_size_flag == CHIP_DDR_IS_128M)
+ {
+ g_sys_kernel_sdram_size = CONFIG_SYS_SDRAM128_RECOVERY_A9_SIZE;
+ }
+ else
+ {
+ g_sys_kernel_sdram_size = CONFIG_SYS_SDRAM256_RECOVERY_A9_SIZE;
+ }
+
+ ret = fs_load_arm_image_linux(ARM_RECOVERY_USERDATA_IMAGE); /*FOTA-UPDATE*/
+ break;
+ default:
+ BOOT_PRINTF(UBOOT_NOTICE, "Normal entry!\n");
+ if(g_ddr_size_flag == CHIP_DDR_IS_32M)
+ {
+ g_sys_kernel_sdram_size = CONFIG_SYS_SDRAM32_A9_SIZE;
+ }
+ else if(g_ddr_size_flag == CHIP_DDR_IS_64M)
+
+ {
+ g_sys_kernel_sdram_size = CONFIG_SYS_SDRAM64_A9_SIZE;
+ }
+ else if(g_ddr_size_flag == CHIP_DDR_IS_128M)
+ {
+ g_sys_kernel_sdram_size = CONFIG_SYS_SDRAM128_A9_SIZE;
+ }
+ else
+ {
+ g_sys_kernel_sdram_size = CONFIG_SYS_SDRAM256_A9_SIZE;
+ }
+ ret = fs_load_m0_image();
+ ret += fs_load_zsp_image();
+ ret += fs_load_arm_image_linux(ARM_APP_IMAGE);
+ break;
+ }
+
+#if VERSION_RELEASE
+ if( ret != 0 )
+ {
+ BOOT_PRINTF(UBOOT_ERR, "load images ERROR !!!\n");
+ }
+#endif
+
+ return 0;
+}
+
+static const sys_init_func_t uboot_init_func_tbl[] =
+{
+ {mdl_poweron, "pull on pshold"},
+ {wdt_get_reboot_reason, "wdt_reboot"},
+ {dma_init, "dma"},
+ {i2c_init, "i2c"},
+ {peripheral_init, "peri"},
+ {nand_init, "nand"},
+ {partition_init, "partition"},
+ {gmac_download_init, "gmac"},
+ {test_env_entry, "test"},
+ {efuse_init, "efuse"},
+ {lcd_init, "lcd"},
+ {nvrw_flag_init, "nvrw_flag"},
+ {boot_reason_init, "boot_reason"},
+ {wdt_init, "wdt"},
+ {boot_prepare, "boot_prepare"},
+ {NULL, {}}
+};
+
+static const sys_init_func_t tboot_init_func_tbl[] =
+{
+ {wdt_get_reboot_reason, "wdt_reboot"},
+ {dma_init, "dma"},
+ {i2c_init, "i2c"},
+ {peripheral_init, "peri"},
+ {nand_init, "nand"},
+ {NULL, {}}
+};
+
+int uboot_init_func(void)
+{
+ unsigned int dev_index;
+ int ret;
+
+ BOOT_PRINTF(UBOOT_NOTICE, "go into uboot init func\n");
+
+ for (dev_index = 0; (uboot_init_func_tbl[dev_index].Init != NULL); dev_index++)
+ {
+ ret = uboot_init_func_tbl[dev_index].Init();
+
+ if (ret < 0) {
+ BOOT_PRINTF(UBOOT_ERR, "uboot init %s fail, ret = %d\n",
+ uboot_init_func_tbl[dev_index].func_name, ret);
+ BUG();
+ return ret;
+ } else {
+ BOOT_PRINTF(UBOOT_NOTICE, "uboot init %s success\n",
+ uboot_init_func_tbl[dev_index].func_name);
+ }
+ }
+
+ return SUCCESS;
+}
+
+int tboot_init_func(void)
+{
+ unsigned int dev_index;
+ int ret;
+
+ BOOT_PRINTF(UBOOT_NOTICE, "go into tboot init func\n");
+
+ for (dev_index = 0; (tboot_init_func_tbl[dev_index].Init != NULL); dev_index++)
+ {
+ ret = tboot_init_func_tbl[dev_index].Init();
+ if (ret < 0) {
+ BOOT_PRINTF(UBOOT_ERR, "tboot init %s fail, ret = %d\n",
+ tboot_init_func_tbl[dev_index].func_name, ret);
+ BUG();
+ return ret;
+ } else {
+ BOOT_PRINTF(UBOOT_NOTICE, "tboot init %s success\n",
+ tboot_init_func_tbl[dev_index].func_name);
+ }
+ }
+
+ return SUCCESS;
+}
+
+#if defined(CONFIG_I2S0_TO_32K)
+void i2s_to_32k(void)
+{
+ REG32(LSP_CRPM_BASE + 0x58) = 0x01000075;
+ REG32(LSP_CRPM_BASE + 0x5C) = 0x00010319;
+ REG32(PIN_MUX_CTRL_PD_BASE) &= ~(0x3 << 15);
+ REG32(PIN_MUX_CTRL_PD_BASE) |= (0x1 << 15);
+ REG32(PAD_CTRL_AO_BASE + 0x30) |= (0x1);
+}
+#endif
+
+#if defined(CONFIG_I2S1_TO_32K)
+void i2s_to_32k(void)
+{
+ REG32(LSP_CRPM_BASE + 0x60) = 0x01000075;
+ REG32(LSP_CRPM_BASE + 0x64) = 0x00010319;
+ REG32(PIN_MUX_CTRL_PD_BASE) &= ~(0x3 << 15);
+ REG32(PIN_MUX_CTRL_PD_BASE) |= (0x2 << 15);
+ REG32(PAD_CTRL_AO_BASE + 0x30) |= (0x1);
+}
+#endif
+
+/*******************************************************************************
+ * Function: sys_entry
+ * Description: ϵͳÖ÷Á÷³Ì
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ * Returns:
+ *
+ *
+ * Others:
+ ********************************************************************************/
+void sys_entry(void)
+{
+
+ BOOT_PRINTF(UBOOT_NOTICE, "sys_entry ...\n");
+
+#if defined(CONFIG_I2S0_TO_32K) || defined(CONFIG_I2S1_TO_32K)
+ i2s_to_32k();
+#endif
+
+ switch (get_load_mode()) {
+ case TLOAD_MODE:
+ tboot_init_func();
+ run_command("downloader", 0);
+ break;
+ case ZLOAD_MODE:
+ uboot_init_func();
+ boot_entry();
+ //clear_tmp_buf();
+ break;
+ default:
+ break;
+ }
+
+ add_partition_to_bootargs();
+ for (;;)
+ {
+ main_loop();
+ }
+
+ hang();
+ /* NOTREACHED - no way out of command loop except booting */
+}
+
diff --git a/lynq/MD310EU/boot/common/src/uboot/drivers/lcd/Makefile b/lynq/MD310EU/boot/common/src/uboot/drivers/lcd/Makefile
new file mode 100755
index 0000000..2163295
--- /dev/null
+++ b/lynq/MD310EU/boot/common/src/uboot/drivers/lcd/Makefile
@@ -0,0 +1,43 @@
+#
+# ZTE (C) Copyright 2014
+# Author: YinWenguan
+#
+#
+
+include $(TOPDIR)/config.mk
+
+LIB := $(obj)liblcd.o
+
+ifeq ($(CONFIG_ZX297520V3E_MIFI_MINI_XR819),y)
+COBJS-y += lcd_comm_array.o
+COBJS-y += lcd_res_128x128.o
+else
+COBJS-y += lcd_comm.o
+endif
+
+COBJS-$(CONFIG_ZX297520V3E_MIFI) += lcd_prj_mifi.o
+COBJS-$(CONFIG_ZX297520V3E_FWP) += lcd_prj.o
+COBJS-$(CONFIG_ZX297520V3E_MIFI_MINI) += lcd_prj_mifi_mini.o
+COBJS-$(CONFIG_ZX297520V3E_UFI_MINI) += lcd_prj_mifi_mini.o
+COBJS-$(CONFIG_ZX297520V3E_MIFI_MINI_XR819) += lcd_prj_mifi_mini_xr819.o
+COBJS-$(CONFIG_ZX297520V3E_PHONE) += lcd_prj_phone.o
+COBJS-$(CONFIG_ZX297520V3E_WATCH) += lcd_prj_watch.o
+COBJS-$(CONFIG_ZX297520V3E_WATCH_CAP) += lcd_prj_watch.o
+
+COBJS := $(sort $(COBJS-y))
+SRCS := $(COBJS:.o=.c)
+OBJS := $(addprefix $(obj),$(COBJS))
+
+all: $(LIB)
+
+$(LIB): $(obj).depend $(OBJS)
+ $(call cmd_link_o_target, $(OBJS))
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/lynq/MD310EU/boot/common/src/uboot/drivers/lcd/lcd_comm.c b/lynq/MD310EU/boot/common/src/uboot/drivers/lcd/lcd_comm.c
new file mode 100755
index 0000000..365400f
--- /dev/null
+++ b/lynq/MD310EU/boot/common/src/uboot/drivers/lcd/lcd_comm.c
@@ -0,0 +1,916 @@
+/***********************************************************************
+ * Copyright (C) 2014, ZTE Corporation.
+ *
+ * File Name: hal_lcd.c
+ * File Mark:
+ * Description: Lcd function implementation. Adapted to LCM MODEL - LEAD T15DS26.
+ * Others: this file is in BOOTLOADER procedure.
+ * This LCM MODEL uses SPI-4.
+ * NOTE: 4-lines-spi uses CS, CLK, D/CX and SDI. Do not using SDO instead of D/CX.
+ * Version: V1.0
+ * Author: YinWenguan
+ * Date: 2014-12-19
+ *
+ * History 1:
+ * Date: 2015-1-16
+ * Version:
+ * Author: YinWenguan
+ * Modification: Add brightness setting.
+ * History 2:
+ * Date: 2015-2-10
+ * Version:
+ * Author: YinWenguan
+ * Modification: Add "Low Battery" logo.
+ *
+***********************************************************************/
+
+/*************************************************************************
+ * Include files
+ *************************************************************************/
+#include "../include/board.h"
+#include "../include/zx234290.h"
+
+#include <common.h>
+#include <malloc.h>
+#include <asm/io.h>
+#include "../include/spi.h"
+#include "../include/ssp.h"
+#include <lcd.h>
+#include <drvs_gpio.h>
+#include <peripheral.h>
+
+/*************************************************************************
+ * Macro
+ *************************************************************************/
+ /* debug switch */
+#define LCD_DEBUG
+
+#ifdef LCD_DEBUG
+#define LCD_PRINTF(format, args...) printf(format, ##args)
+#define LCD_ASSERT(condition, ret, format, args...) { if (!(condition)) { printf(format, ##args); while(1){}; } }
+#else
+#define LCD_PRINTF(format, args...)
+#define LCD_ASSERT(condition, ret, format, args...)
+#endif
+/* read/write register's value */
+#define REG_READ(REG) *((volatile unsigned int*)(REG))
+#define REG_WRITE(REG,value) *((volatile unsigned int*)(REG)) = value
+
+#define ZSP_LOGO_PATH "/LOGO.bin"
+#define ZSP_LOGOBAK_PATH "/LOGOBAK.bin"
+#define ZSP_UPDATING_PATH "/UPDATING.bin"
+#define ZSP_UPDATESUCC_PATH "/UPDATESUCC.bin"
+#define ZSP_UPDATEFAIL_PATH "/UPDATEFAIL.bin"
+#define ZSP_LOWBAT_PATH "/LOWBAT.bin"
+#define ZSP_NOBAT_PATH "/NOBAT.bin"
+#define ZSP_CHARGING_PATH "/CHARGING.bin"
+
+/*R-5BIT,G-6BIT,B-5BIT:
+ * 1st byte: R4 R3 R2 R1 R0 G5 G4 G3
+ * 2nd byte: G2 G1 G0 B4 B3 B2 B1 B0
+ * picture width: 240,picture height: 240
+*/
+unsigned char bmp_logo[153600] = {};
+unsigned char bmp_updating[153600]= {};
+unsigned char bmp_updatesuccess[]= {};
+unsigned char bmp_updatefailed[] = {};
+unsigned char bmp_lowbattery[153600] = {};
+unsigned char bmp_nobattery[153600] = {};
+unsigned char bmp_charging[153600]={};
+
+
+/**************************************************************************
+ * Types *
+ **************************************************************************/
+
+/**************************************************************************
+ * Global Variable
+ **************************************************************************/
+static void * g_sLcd_SpiHandle = NULL; // SPI device handle
+volatile T_ZDrvLcd_Info s_lcd_info = {0};
+
+static int __def_lcd_prj(void)
+{
+ LCD_PRINTF("lcd_prj undefine\n");
+ return -1;
+}
+
+void lcd_gpio_define(struct T_ZDrvLcd_gpio_define * config) __attribute__((weak, alias("__def_lcd_prj")));
+int update_rect(unsigned char *pBuf, unsigned short uiLeft, unsigned short uiTop,\
+ unsigned short uiWidth, unsigned short uiHeight) __attribute__((weak, alias("__def_lcd_prj")));
+int prj_lcm_init(void) __attribute__((weak, alias("__def_lcd_prj")));
+int prj_lcd_get_info(T_ZDrvLcd_Info * pInfo) __attribute__((weak, alias("__def_lcd_prj")));
+
+/**************************************************************************
+ * Function Implementation
+ **************************************************************************/
+
+/*******************************************************************************
+ *
+ * Keep reserved.
+ * Simulating SPI r/w via GPIO.
+ *
+ ********************************************************************************/
+/* 4��SPI��ƽ�����ݴ��䷽�� */
+#define CS_L zDrvGpio_SetOutputValue(s_lcd_info.gpio_def.spi_cs_gpio, GPIO_LOW)
+#define CS_H zDrvGpio_SetOutputValue(s_lcd_info.gpio_def.spi_cs_gpio, GPIO_HIGH)
+
+#define RS_L zDrvGpio_SetOutputValue(s_lcd_info.gpio_def.spi_dcx_gpio, GPIO_LOW)
+#define RS_H zDrvGpio_SetOutputValue(s_lcd_info.gpio_def.spi_dcx_gpio, GPIO_HIGH)
+
+#define SDA_L zDrvGpio_SetOutputValue(s_lcd_info.gpio_def.spi_sda_gpio, GPIO_LOW)
+#define SDA_H zDrvGpio_SetOutputValue(s_lcd_info.gpio_def.spi_sda_gpio, GPIO_HIGH)
+
+#define SCL_L zDrvGpio_SetOutputValue(s_lcd_info.gpio_def.spi_scl_gpio, GPIO_LOW)
+#define SCL_H zDrvGpio_SetOutputValue(s_lcd_info.gpio_def.spi_scl_gpio, GPIO_HIGH)
+
+#define SDA_OUT zDrvGpio_SetDirection(s_lcd_info.gpio_def.spi_sda_gpio, GPIO_OUT)
+#define SDA_IN zDrvGpio_SetDirection(s_lcd_info.gpio_def.spi_sda_gpio, GPIO_IN)
+
+/* SPI����״̬--> ��ͨGPIO�� */
+void change_spi_to_gpio()
+{
+ zDrvGpio_SetFunc(s_lcd_info.gpio_def.spi_cs_gpio, s_lcd_info.gpio_def.spi_cs_gpio_sel);
+ zDrvGpio_SetFunc(s_lcd_info.gpio_def.spi_scl_gpio, s_lcd_info.gpio_def.spi_scl_gpio_sel);
+ zDrvGpio_SetFunc(s_lcd_info.gpio_def.spi_sda_gpio, s_lcd_info.gpio_def.spi_sda_gpio_sel);
+
+ zDrvGpio_SetDirection(s_lcd_info.gpio_def.spi_cs_gpio, GPIO_OUT);
+ zDrvGpio_SetDirection(s_lcd_info.gpio_def.spi_scl_gpio, GPIO_OUT);
+ zDrvGpio_SetDirection(s_lcd_info.gpio_def.spi_sda_gpio, GPIO_OUT);
+
+ CS_H;
+ SCL_L;
+}
+
+/* �ָ���ԭ����SPI����״̬ */
+void recover_gpio_to_spi()
+{
+ zDrvGpio_SetFunc(s_lcd_info.gpio_def.spi_cs_gpio, s_lcd_info.gpio_def.spi_cs_func_sel);
+ zDrvGpio_SetFunc(s_lcd_info.gpio_def.spi_scl_gpio, s_lcd_info.gpio_def.spi_scl_func_sel);
+ zDrvGpio_SetFunc(s_lcd_info.gpio_def.spi_sda_gpio, s_lcd_info.gpio_def.spi_sda_func_sel);
+ SDA_IN;
+}
+
+void delay_gpio(unsigned int tt)
+{
+ volatile unsigned int tmp = tt;
+ while(tmp > 0){tmp--;}
+}
+
+void write_st(unsigned short rs, unsigned short para)
+{
+ unsigned char i;
+
+ change_spi_to_gpio();
+
+ if (rs){RS_H;}else{RS_L;}
+ CS_L;
+ delay_gpio(50);
+ for (i = 0; i < 8; i++)
+ {
+ SCL_L;
+ delay_gpio(50);
+ if ((para & 0x80)==0x80)
+ {
+ SDA_H;
+ }
+ else
+ {
+ SDA_L;
+ }
+ delay_gpio(50);
+ SCL_H;
+ delay_gpio(50);
+ para <<= 1;
+ }
+ CS_H;
+ SCL_L;
+ delay_gpio(50);
+ recover_gpio_to_spi();
+}
+
+unsigned short read_st(unsigned short reg)
+{
+ unsigned char i;
+ volatile unsigned char tmp;
+
+ change_spi_to_gpio();
+
+ RS_L;
+ CS_L;
+ delay_gpio(50);
+ for (i = 0; i < 8; i++)
+ {
+ SCL_L;
+ delay_gpio(50);
+ if ((reg & 0x80)==0x80)
+ {
+ SDA_H;
+ }
+ else
+ {
+ SDA_L;
+ }
+ delay_gpio(50);
+ SCL_H;
+ delay_gpio(50);
+ reg <<= 1;
+ }
+ delay_gpio(50);
+ RS_H;
+ SDA_IN;
+ delay_gpio(150);
+ tmp = 0;
+ for (i = 0; i < 8; i++)
+ {
+ tmp <<= 1;
+ SCL_L;
+ delay_gpio(250);
+ if (GPIO_HIGH == zDrvGpio_GetInputValue(s_lcd_info.gpio_def.spi_sda_gpio))
+ {
+ tmp |= 0x01;
+ }
+ SCL_H;
+ delay_gpio(250);
+ }
+ CS_H;
+ SDA_OUT;
+
+ recover_gpio_to_spi();
+ return tmp;
+}
+
+#if 1
+/*******************************************************************************
+ * Function: zDrvLcd_DelayMs
+ * Description: used to delay.
+ * Parameters:
+ * (IN)
+ * ms: millisecond
+ * (OUT):
+ * None.
+ * Returns:
+ *
+ *
+ * Others:
+ ********************************************************************************/
+void zDrvLcd_DelayMs(unsigned long ms)
+{
+ volatile int i = 0;
+ while (i < (50000 * ms)) {i++;}
+}
+
+void zDrvLcd_DelayUs(unsigned long us)
+{
+ volatile int i = 0;
+ while (i < (50 * us)) {i++;}
+}
+/**************************************************************************
+* Function: zDrvLcd_Blg_Init
+* Description: used to initialize backlight usage.
+* Parameters:
+* (IN)
+*
+* (OUT)
+*
+* Returns:
+* DRV_SUCCESS: successed.
+* DRV_ERROR: others error code. For more details, please refer to the source code.
+* Others:
+**************************************************************************/
+int zDrvLcd_Blg_Init(VOID)
+{
+ int ret = DRV_SUCCESS;
+
+#if 0
+ if(INVLID_GPIO == s_lcd_info.gpio_def.lcd_blg_gpio)
+ return ret;
+
+ zDrvGpio_SetFunc(s_lcd_info.gpio_def.lcd_blg_gpio, s_lcd_info.gpio_def.lcd_blg_gpio_sel); /* function selection: gpio225 */
+ zDrvGpio_PullUpDown(s_lcd_info.gpio_def.lcd_blg_gpio, 0);
+ zDrvGpio_SetDirection(s_lcd_info.gpio_def.lcd_blg_gpio, GPIO_OUT);
+#endif
+ printf("zDrvLcd_Blg_Init zDrvLcd_TurnBacklightOnOff on\n");
+ ret = zDrvLcd_TurnBacklightOnOff(1);
+
+ return ret;
+}
+
+/**************************************************************************
+* Function: zDrvLcd_Gpio_Init
+* Description: used to initialize GPIO usage.
+* Parameters:
+* (IN)
+*
+* (OUT)
+*
+* Returns:
+* DRV_SUCCESS: successed.
+* DRV_ERROR: others error code. For more details, please refer to the source code.
+* Others:
+**************************************************************************/
+int zDrvLcd_Gpio_Init(void)
+{
+ int ret = DRV_SUCCESS;
+
+ lcd_gpio_define(&(s_lcd_info.gpio_def));
+
+ // RS, ��D/CX
+ zDrvGpio_SetFunc(s_lcd_info.gpio_def.spi_dcx_gpio, s_lcd_info.gpio_def.spi_dcx_gpio_sel); /* function selection: gpio192 */
+ zDrvGpio_SetDirection(s_lcd_info.gpio_def.spi_dcx_gpio, GPIO_OUT);
+
+ // ��λ
+ zDrvGpio_SetFunc(s_lcd_info.gpio_def.lcd_reset_gpio, s_lcd_info.gpio_def.lcd_reset_gpio_sel); /* function selection: gpio225 */
+ zDrvGpio_SetDirection(s_lcd_info.gpio_def.lcd_reset_gpio, GPIO_OUT);
+
+ return ret;
+}
+
+/**************************************************************************
+* Function: zDrvLcd_Spi_Init
+* Description: used to initialize SPI usage.
+* Parameters:
+* (IN)
+*
+* (OUT)
+*
+* Returns:
+* DRV_SUCCESS: successed.
+* DRV_ERROR: others error code. For more details, please refer to the source code.
+* Others:
+**************************************************************************/
+int zDrvLcd_Spi_Init(void)
+{
+ int ret = DRV_SUCCESS;
+
+ g_sLcd_SpiHandle = ssp_open(SSP_DEV_0);
+ LCD_ASSERT(NULL != g_sLcd_SpiHandle, DRV_ERROR, "[LCD] Can not open SPI device to get handle!");
+
+ return ret;
+}
+
+/**************************************************************************
+* Function: zDrvLcd_Spi_ConfigDcx
+* Description: used to configure D/CX pin. thus, this interface is just for SPI-4.
+* Parameters:
+* (IN)
+* type command or parameter/data
+* (OUT)
+* None.
+* Returns:
+* DRV_SUCCESS: successed.
+* DRV_ERROR: others error code. For more details, please refer to the source code.
+* Others:
+* - SPI-3's data packet contains a control bit D/CX and a transmission byte.
+* - SPI-4's data packet contains just transmission byte and
+* control bit D/CX is transferred by the D/CX pin.
+**************************************************************************/
+int zDrvLcd_Spi_ConfigDcx(T_ZDrvLcd_DcxType type)
+{
+ s_lcd_info.instance.eDcxType = type;
+ zDrvGpio_SetOutputValue(s_lcd_info.gpio_def.spi_dcx_gpio, (type == LCD_DCX_DATA) ? GPIO_HIGH : GPIO_LOW);
+
+ return DRV_SUCCESS;
+}
+
+/**************************************************************************
+* Function: zDrvLcd_Spi_WriteCmd
+* Description: used to send command-code to the LCD device IC.
+* Parameters:
+* (IN)
+* cmd command
+* (OUT)
+* None.
+* Returns:
+* DRV_SUCCESS: successed.
+* DRV_ERROR: others error code. For more details, please refer to the source code.
+* Others:
+* - SPI-3's data packet contains a control bit D/CX and a transmission byte.
+* - SPI-4's data packet contains just transmission byte and
+* control bit D/CX is transferred by the D/CX pin.
+**************************************************************************/
+int zDrvLcd_Spi_WriteCmd(unsigned char cmd)
+{
+ unsigned char buf[1] = {cmd};
+ int cnt = 0;
+
+ zDrvLcd_Spi_ConfigDcx(LCD_DCX_CMD); // ����������������: ����
+ cnt = ssp_transfer(g_sLcd_SpiHandle, buf, 1); // ��SPI�ڷ���8bits cmd; uboot���spiֻ��CPU����ģʽ
+
+ return (1 == cnt ? DRV_SUCCESS : DRV_ERROR);
+}
+
+/**************************************************************************
+* Function: zDrvLcd_Spi_WriteData
+* Description: used to send parameter/data to the LCD device IC.
+* Parameters:
+* (IN)
+* data parameter or RAM data.
+* (OUT)
+* None.
+* Returns:
+* DRV_SUCCESS: successed.
+* DRV_ERROR: others error code. For more details, please refer to the source code.
+* Others:
+* - SPI-3's data packet contains a control bit D/CX and a transmission byte.
+* - SPI-4's data packet contains just transmission byte and
+* control bit D/CX is transferred by the D/CX pin.
+**************************************************************************/
+int zDrvLcd_Spi_WriteData(unsigned char data)
+{
+ int cnt = 0;
+
+ // ��������Ĵ�������:�ýӿڿ��ܱ��������ô���������ݣ�
+ // Ӧ�������ô���
+ if (LCD_DCX_CMD == s_lcd_info.instance.eDcxType)
+ {
+ zDrvLcd_Spi_ConfigDcx(LCD_DCX_DATA);
+ }
+
+ // cnt = ssp_transfer(g_sLcd_SpiHandle, buf, 1);
+ cnt = ssp_transfer(g_sLcd_SpiHandle, &data, 1);
+
+ return (1 == cnt ? DRV_SUCCESS : DRV_ERROR);
+}
+
+int zDrvLcd_Spi_WriteDataBlock(unsigned char* pData, unsigned long size)
+{
+ int cnt = 0;
+
+ if (LCD_DCX_CMD == s_lcd_info.instance.eDcxType)
+ {
+ zDrvLcd_Spi_ConfigDcx(LCD_DCX_DATA);
+ }
+
+ cnt = ssp_transfer(g_sLcd_SpiHandle, pData, size);
+
+ return (size == cnt ? DRV_SUCCESS : DRV_ERROR);
+}
+
+/**************************************************************************
+* Function: zDrvLcd_InitLcm
+* Description: used to initialize lead(ST7735S)
+* Parameters:
+* (IN)
+* None.
+* (OUT)
+* None.
+* Returns:
+* DRV_SUCCESS: successed.
+* DRV_ERROR: others error code. For more details, please refer to the source code.
+* Others:
+* None.
+**************************************************************************/
+int zDrvLcd_Lcm_Init(void)
+{
+ int ret = DRV_SUCCESS;
+
+ ret = prj_lcm_init();
+
+ return ret;
+}
+#endif
+
+/// ST7735S begin
+#include "lcd_uboot_logo.h"
+extern const unsigned char gImage_lcd_uboot_logo[];
+void addr_1(T_ZDrvLcd_Info *pInfo, unsigned int Xstart, unsigned int Xend, unsigned int Ystart, unsigned int Yend)
+{
+ if (pInfo->lcm_info.man_id == 0x7C)
+ {
+ zDrvLcd_Spi_WriteCmd(0x2B);
+ zDrvLcd_Spi_WriteData(0x00);
+ zDrvLcd_Spi_WriteData(0x18);
+ zDrvLcd_Spi_WriteData(0x00);
+ zDrvLcd_Spi_WriteData(0x67);
+
+ zDrvLcd_Spi_WriteCmd(0x2A);
+ zDrvLcd_Spi_WriteData(0x00);
+ zDrvLcd_Spi_WriteData(0x00);
+ zDrvLcd_Spi_WriteData(0x00);
+ zDrvLcd_Spi_WriteData(0x9f);
+ zDrvLcd_Spi_WriteCmd(0x2c);
+ }
+ else
+ {
+ Xstart = Xstart + 1; // X�1�71�1�77�1�71�1�77�1�70�1�73�1�71�1�77�1�71�1�77�1�70�1�77+2
+ Xend = Xend + 1;
+ Ystart = Ystart + 26; // Y�1�71�1�77�1�71�1�77�1�70�1�73�1�71�1�77�1�71�1�77�1�70�1�77+1
+ Yend = Yend + 26;
+ zDrvLcd_Spi_WriteCmd(0X2A);
+ zDrvLcd_Spi_WriteData(Xstart >> 8);
+ zDrvLcd_Spi_WriteData(Xstart);
+ zDrvLcd_Spi_WriteData(Xend >> 8);
+ zDrvLcd_Spi_WriteData(Xend); // HSA7-0
+ zDrvLcd_Spi_WriteCmd(0x2B);
+ zDrvLcd_Spi_WriteData(Ystart >> 8);
+ zDrvLcd_Spi_WriteData(Ystart);
+ zDrvLcd_Spi_WriteData(Yend >> 8);
+ zDrvLcd_Spi_WriteData(Yend);
+ zDrvLcd_Spi_WriteCmd(0X2C); // write memory
+ }
+}
+
+void WriteData(char DBH, char DBL)
+{
+ zDrvLcd_Spi_WriteData(DBH);
+ zDrvLcd_Spi_WriteData(DBL);
+}
+
+void Show_bmp(unsigned char *pt, unsigned int x, unsigned int y)
+{
+ unsigned char i, j;
+ for (i = 0; i < y; i++)
+ for (j = 0; j < x; j++)
+ {
+ WriteData(*pt, *(pt+1));
+ pt=pt+2;
+ }
+}
+/// ST7735S end
+
+/**************************************************************************
+* Function: zDrvLcd_Open
+* Description: used to open the LCD device.
+* Parameters:
+* (IN)
+* None.
+* (OUT)
+* None.
+* Returns:
+* DRV_SUCCESS: successed.
+* DRV_ERR_OPEN_TIMES: has been opened already.
+* DRV_ERROR: others error code. For more details, please refer to the source code.
+* Others:
+* None.
+**************************************************************************/
+int zDrvLcd_Initiate(void)
+{
+ int ret = DRV_SUCCESS;
+
+ ret = zDrvLcd_Spi_Init(); // SPI��ʼ��
+ ret |= zDrvLcd_Gpio_Init(); // LCD������������GPIO���� : rest, backlight, rs(D/CX)
+
+ ret |= zDrvLcd_Reset();
+ LCD_ASSERT(DRV_SUCCESS == ret, DRV_ERROR, "[LCD] Failed to reset LCM!");
+
+ zDrvLcd_GetInfo(&s_lcd_info);
+ ret |= zDrvLcd_BootPicFromRes();
+ ret |= zDrvLcd_Lcm_Init(); // ��ʼ��ģ��
+ ret |= zDrvLcd_Blg_Init();
+ addr_1(&s_lcd_info,0,s_lcd_info.width -1 ,0,s_lcd_info.height -1);
+ Show_bmp(gImage_lcd_uboot_logo,s_lcd_info.width,s_lcd_info.height);
+ return ret;
+}
+
+int lcd_init(void)
+{
+#ifdef CONFIG_ZX297520V3E_MIFI_MINI
+#ifdef CONFIG_ZX297520V3_AIC8800
+ return zDrvLcd_Initiate();
+#endif
+#endif
+ return zDrvLcd_Initiate();
+}
+
+/**************************************************************************
+* Function: zDrvLcd_Open
+* Description: used to open the LCD device.
+* Parameters:
+* (IN)
+* devData LCD device name
+* flags don't care
+* (OUT)
+* None.
+* Returns:
+* DRV_SUCCESS: successed.
+* DRV_ERR_OPEN_TIMES: has been opened already.
+* DRV_ERROR: others error code. For more details, please refer to the source code.
+* Others:
+* None.
+**************************************************************************/
+int zDrvLcd_Open(void)
+{
+ if (s_lcd_info.instance.bOpen)
+ {
+ return DRV_ERR_OPEN_TIMES;
+ }
+
+ // �ô�־�͵�ǰģʽ
+ s_lcd_info.instance.bOpen= true;
+ s_lcd_info.instance.eMode = LCD_NORMAL;
+
+ return DRV_SUCCESS;
+}
+
+/**************************************************************************
+* Function: zDrvLcd_Close
+* Description: used to close the LCD device opened previously.
+* Parameters:
+* (IN)
+* None.
+* (OUT)
+* None.
+* Returns:
+* DRV_SUCCESS: successed.
+* DRV_ERR_NOT_OPENED: has not been opend yet.
+* DRV_ERROR: others error code. For more details, please refer to the source code.
+* Others:
+* None.
+**************************************************************************/
+int zDrvLcd_Close()
+{
+ if (false == s_lcd_info.instance.bOpen)
+ {
+ return DRV_ERR_NOT_OPENED;
+ }
+
+ s_lcd_info.instance.bOpen = false;
+ return DRV_SUCCESS;
+}
+
+/**************************************************************************
+* Function: zDrvLcd_GetInfo
+* Description: used to get the LCD device information.
+* Parameters:
+* (IN)
+* pInfo the pointer of LCD device information to store into
+* (OUT)
+* pInfo the pointer of LCD device information allready stored into
+* Returns:
+* DRV_SUCCESS: succeeded.
+* Others:
+* None.
+**************************************************************************/
+int zDrvLcd_GetInfo(T_ZDrvLcd_Info* pInfo)
+{
+ int ret = DRV_SUCCESS;
+
+ ret = prj_lcd_get_info(pInfo);
+
+ return ret;
+}
+
+/**************************************************************************
+* Function: zDrvLcd_Reset
+* Description: used to reset the LCD device opened previously.
+* Parameters:
+* (IN)
+* None.
+* (OUT)
+* None.
+* Returns:
+* None.
+* Others:
+* None.
+**************************************************************************/
+int zDrvLcd_Reset(void)
+{
+ int ret = DRV_SUCCESS;
+
+ // Ӳ����λ
+ zDrvGpio_SetOutputValue(s_lcd_info.gpio_def.lcd_reset_gpio, GPIO_HIGH);
+ zDrvGpio_SetOutputValue(s_lcd_info.gpio_def.lcd_reset_gpio, GPIO_LOW);
+ zDrvLcd_DelayMs(100);
+ zDrvGpio_SetOutputValue(s_lcd_info.gpio_def.lcd_reset_gpio, GPIO_HIGH);
+ zDrvLcd_DelayMs(120);
+
+ return ret;
+}
+
+/**************************************************************************
+* Function: zDrvLcd_UpdateRect
+* Description: used to update a specified rectangle area of the LCD device opened previously.
+* Parameters:
+* (IN)
+* pBuf data buffer
+* uiLeft left postion
+* uiTop top postion
+* uiWidth rectangle width
+* uiHeight rectangle height
+* (OUT)
+* None.
+* Returns:
+* DRV_SUCCESS: successed.
+* DRV_ERROR: others error code. For more details, please refer to the source code.
+* Others:
+* None.
+**************************************************************************/
+int zDrvLcd_UpdateRect(unsigned char *pBuf, unsigned short uiLeft, unsigned short uiTop, unsigned short uiWidth, unsigned short uiHeight)
+{
+ int ret = DRV_SUCCESS;
+ unsigned short uiRight = uiLeft + uiWidth - 1;
+ unsigned short uiBottom = uiTop + uiHeight - 1;
+
+ if(pBuf != NULL)
+ {
+ if ((s_lcd_info.width <= uiLeft) ||
+ (s_lcd_info.height <= uiTop) ||
+ (s_lcd_info.width <= uiRight) ||
+ (s_lcd_info.height <= uiBottom))
+ {
+ LCD_PRINTF("[LCD]Invalid input parameter on calling zDrvLcd_UpdateRect!!!!");
+ }
+ }
+ else
+ {
+ LCD_PRINTF("[LCD]fsload resource BIN failed!!!!\n");
+ }
+ update_rect(pBuf, uiLeft, uiTop, uiWidth, uiHeight);
+
+ return ret;
+}
+
+/**************************************************************************
+* Function: Lcd_EnterSleepMode
+* Description: used to let the LCD device into sleep mode.
+* Parameters:
+* (IN)
+* bIn enter or exit sleep mode
+* (OUT)
+* None.
+* Returns:
+* DRV_SUCCESS: successed.
+* DRV_ERROR: others error code. For more details, please refer to the source code.
+* Others:
+* None.
+**************************************************************************/
+int zDrvLcd_SleepInOut( bool bIn )
+{
+ int ret = DRV_SUCCESS;
+
+ ret = zDrvLcd_Spi_WriteCmd(bIn ? 0x10 : 0x11); // enter/exit the spleep mode
+ zDrvLcd_DelayMs(120); // leave 120ms
+
+ if (false == bIn)
+ {
+ s_lcd_info.instance.eMode = LCD_NORMAL;
+ ret |= zDrvLcd_Spi_WriteCmd(0x2c); // �˳�sleepʱ����һ��ָ��
+ }
+ else
+ {
+ s_lcd_info.instance.eMode = LCD_SLEEP;
+ }
+
+ return ret;
+}
+
+/**************************************************************************
+* Function: zDrvLcd_TurnBacklightOnOff
+* Description: used to turn on/off the LCD device's backlight.
+* Parameters:
+* (IN)
+* None.
+* (OUT)
+* None.
+* Returns:
+* DRV_SUCCESS: successed.
+* DRV_ERROR: others error code. For more details, please refer to the source code.
+* Others:
+* None.
+**************************************************************************/
+int zDrvLcd_TurnBacklightOnOff(unsigned int enable)
+{
+ zx234290_set_sink(SINK_1,enable,SINK_CURRENT_5MA);
+#if 0
+ if (enable)
+ {
+ /* turn on backlight */
+ zDrvGpio_SetOutputValue(s_lcd_info.gpio_def.lcd_blg_gpio, GPIO_HIGH);
+ s_lcd_info.backlight = LCD_BACKLIGHT_ON;
+ }
+ else
+ {
+ /* turn off backlight */
+ zDrvGpio_SetOutputValue(s_lcd_info.gpio_def.lcd_blg_gpio, GPIO_LOW);
+ s_lcd_info.backlight = LCD_BACKLIGHT_OFF;
+ }
+#endif
+
+ return DRV_SUCCESS;
+}
+
+int zDrvLcd_SetPulseLevel(int level)
+{
+ unsigned int i = 0;
+ int ret = DRV_SUCCESS;
+
+ if (level > 16 || level < 11)
+ {
+ return -1;
+ }
+
+ for (i = 0; i < level; i++)
+ {
+ zDrvGpio_SetOutputValue(s_lcd_info.gpio_def.lcd_blg_gpio, GPIO_LOW);
+ zDrvLcd_DelayUs(15);
+ zDrvGpio_SetOutputValue(s_lcd_info.gpio_def.lcd_blg_gpio, GPIO_HIGH);
+ zDrvLcd_DelayUs(15);
+ }
+
+ LCD_PRINTF("[lcd]:zDrvLcd_SetPulseLevel %d\n", level);
+
+ return ret;
+}
+/**************************************************************************
+* Function: zDrvLcd_PowerOnLogo, zDrvLcd_ShowXxx
+* Description:
+* Parameters:
+* (IN)
+* None.
+* (OUT)
+* None.
+* Returns:
+* DRV_SUCCESS: successed.
+* DRV_ERROR: others error code. For more details, please refer to the source code.
+* Others:
+* None.
+**************************************************************************/
+int zDrvLcd_BootPicFromRes(void)
+{
+ unsigned char *bmp;
+ char cmd[64] = {0};
+
+ sprintf(cmd, "fsload resource 0x%x %s", (ulong)(&bmp_logo), ZSP_LOGO_PATH);
+ run_command(cmd, 0);
+
+ sprintf(cmd, "fsload resource 0x%x %s", (ulong)(&bmp_updating), ZSP_UPDATING_PATH);
+ run_command(cmd, 0);
+
+ sprintf(cmd, "fsload resource 0x%x %s", (ulong)(&bmp_lowbattery), ZSP_LOWBAT_PATH);
+ run_command(cmd, 0);
+
+ sprintf(cmd, "fsload resource 0x%x %s", (ulong)(&bmp_nobattery), ZSP_NOBAT_PATH);
+ run_command(cmd, 0);
+
+ sprintf(cmd, "fsload resource 0x%x %s", (ulong)(&bmp_charging), ZSP_CHARGING_PATH);
+ run_command(cmd, 0);
+
+ return DRV_SUCCESS;
+}
+
+int zDrvLcd_PowerOnLogo(void)
+{
+ unsigned char *bmp;
+ bmp = bmp_logo;
+ return zDrvLcd_UpdateRect(bmp, 0, 0, s_lcd_info.width, s_lcd_info.height);
+}
+
+int zDrvLcd_ShowUpdateWait(void)
+{
+ unsigned char *bmp;
+ bmp = bmp_updating;
+
+ return zDrvLcd_UpdateRect(bmp, 0, 0, s_lcd_info.width, s_lcd_info.height);
+}
+
+int zDrvLcd_ShowUpdateSucc(void)
+{
+ unsigned char *bmp;
+ char cmd[64] = {0};
+ extern unsigned char bmp_updatesuccess[];
+
+ sprintf(cmd, "fsload resource 0x%x %s", (ulong)(&bmp_updatesuccess), ZSP_UPDATESUCC_PATH);
+ run_command(cmd, 0);
+ bmp = bmp_updatesuccess;
+
+ return zDrvLcd_UpdateRect(bmp, 0, 0, s_lcd_info.width, s_lcd_info.height);
+}
+
+int zDrvLcd_ShowUpdateFail(void)
+{
+ unsigned char *bmp;
+ char cmd[64] = {0};
+ extern unsigned char bmp_updatefailed[];
+
+ sprintf(cmd, "fsload resource 0x%x %s", (ulong)(&bmp_updatefailed), ZSP_UPDATEFAIL_PATH);
+ run_command(cmd, 0);
+ bmp = bmp_updatefailed;
+
+ return zDrvLcd_UpdateRect(bmp, 0, 0, s_lcd_info.width, s_lcd_info.height);
+}
+
+int zDrvLcd_ShowLowBattery(void)
+{
+ unsigned char *bmp;
+ bmp = bmp_lowbattery;
+
+ return zDrvLcd_UpdateRect(bmp, 0, 0, s_lcd_info.width, s_lcd_info.height);
+}
+
+int zDrvLcd_ShowNoBattery(void)
+{
+ unsigned char *bmp;
+ bmp = bmp_nobattery;
+
+ return zDrvLcd_UpdateRect(bmp, 0, 0, s_lcd_info.width, s_lcd_info.height);
+}
+
+int zDrvLcd_ShowCharging(void)
+{
+ unsigned char *bmp;
+ bmp = bmp_charging;
+
+ return zDrvLcd_UpdateRect(bmp, 0, 0, s_lcd_info.width, s_lcd_info.height);
+}
+
diff --git a/lynq/MD310EU/boot/common/src/uboot/drivers/lcd/lcd_prj.c b/lynq/MD310EU/boot/common/src/uboot/drivers/lcd/lcd_prj.c
new file mode 100644
index 0000000..57b8fc5
--- /dev/null
+++ b/lynq/MD310EU/boot/common/src/uboot/drivers/lcd/lcd_prj.c
@@ -0,0 +1,773 @@
+/***********************************************************************
+ * Copyright (C) 2014, ZTE Corporation.
+ *
+ * File Name: lcd_comm.c
+ * File Mark:
+ * Description: Lcd function implementation. Adapted to LCM MODEL - LEAD T15DS26.
+ * Others: this file is in BOOTLOADER procedure.
+ * This LCM MODEL uses SPI-4.
+ * NOTE: 4-lines-spi uses CS, CLK, D/CX and SDI. Do not using SDO instead of D/CX.
+ * Version: V1.0
+ * Author: qihongfang
+ * Date: 2017-9-18
+ *
+ * History 1:
+ * Date: 2015-1-16
+ * Version:
+ * Author: YinWenguan
+ * Modification: Add brightness setting.
+ *
+***********************************************************************/
+
+/*************************************************************************
+ * Include files
+ *************************************************************************/
+#include "../include/board.h"
+
+#include <common.h>
+#include <malloc.h>
+#include <asm/io.h>
+#include "../include/spi.h"
+#include "../include/ssp.h"
+#include <lcd.h>
+#include <drvs_gpio.h>
+#include <peripheral.h>
+
+/*************************************************************************
+ * Macro
+ *************************************************************************/
+ /* debug switch */
+
+//static unsigned char g_lcd_id=0;
+#define LCM_ID_LEAD 0x7C /*Öйâµçst7735s\ÈýÁúst7735s*/
+
+/* LCD Features */
+#define LCD_WIDTH 128
+#define LCD_HEIGHT 64
+
+#define ZSP_LCDINFO_PATH "/LCDINFO.bin"
+#define LCD_BITS_PER_PIXEL (5 + 6 + 5)
+#define LCD_PAGE_HEIGHT 8
+#define LCD_PAGE_NUM 8
+#define LCD_BPP (2)
+
+#define START_LINE_BIT 0x40
+#define START_PAGE 0xB0
+#define START_HIGH_BIT 0x10
+#define START_LOW_BIT 0x00
+#define START_LOW_PY 1
+
+/* rotate display */
+//#define LCD_ROTATE_180
+
+#define LCD_XS 0x02
+#define LCD_XE ((LCD_WIDTH)+(LCD_XS)-1)
+#ifdef LCD_ROTATE_180
+#define LCD_MXMYRGB 0x1C
+#define LCD_YS 0x01
+#else
+#define LCD_MXMYRGB 0xC8
+#define LCD_YS 0x03
+#endif
+
+#define LCD_YE ((LCD_HEIGHT)+(LCD_YS)-1)
+
+struct lcd_var_screeninfo {
+ unsigned int xs; //xs_offset
+ unsigned int ys; //ys_offset
+ unsigned int width; //128 240
+ unsigned int height; //128 240
+ unsigned int xe; //width + xs - 1
+ unsigned int ye; //height + ys - 1
+ unsigned int xs_offset; //0x02 0x00
+ unsigned int ys_offset; //0x03 0x00
+ //unsigned int bits_per_pixel;
+};
+static struct lcd_var_screeninfo var_screeninfo = {0}; /* Current var */
+
+
+/**************************************************************************
+ * Types *
+ **************************************************************************/
+static volatile T_ZDrvLcd_Instance g_sLcd_Instance = {false, LCD_NORMAL, LCD_XFER_POLL, LCD_DCX_CMD};
+static volatile T_ZDrvLcd_BacklightStatus g_sLcd_Backlight = LCD_BACKLIGHT_OFF;
+static volatile T_ZDrvLcd_Brightness g_sLcd_Brightness = 255;
+
+/**************************************************************************
+ * Global Variable
+ **************************************************************************/
+extern volatile T_ZDrvLcd_Info s_lcd_info;
+extern int zDrvLcd_Spi_WriteCmd(unsigned char cmd);
+extern int zDrvLcd_Spi_WriteData(unsigned char data);
+
+static unsigned char g_sLcdHalDataBuf[128 * LCD_PAGE_NUM] =
+{
+ 0,
+};
+
+static unsigned char g_sLcdHalDataBuf_reg[128 *64] =
+{
+ 0,
+};
+
+
+/**************************************************************************
+ * Function Implementation
+ **************************************************************************/
+void lcd_gpio_define(struct T_ZDrvLcd_gpio_define* config)
+{
+
+ config->spi_cs_gpio = GPIO25;
+ config->spi_scl_gpio = GPIO26;
+ config->spi_sda_gpio = GPIO28;
+ config->spi_dcx_gpio = GPIO27;
+
+ config->spi_cs_func_sel = GPIO25_SSP0_CS;
+ config->spi_scl_func_sel = GPIO26_SSP0_CLK;
+ config->spi_sda_func_sel = GPIO28_SSP0_TXD;
+ config->spi_dcx_func_sel = GPIO27_SSP0_RXD;
+
+ config->spi_cs_gpio_sel = GPIO25_GPIO25;
+ config->spi_scl_gpio_sel = GPIO26_GPIO26;
+ config->spi_sda_gpio_sel = GPIO28_GPIO28;
+ config->spi_dcx_gpio_sel = GPIO27_GPIO27;
+
+#ifdef CONFIG_ZX297520V3E_FWP
+ config->lcd_reset_gpio =GPIO125;
+ config->lcd_reset_gpio_sel =GPIO125_GPIO125;
+ config->lcd_blg_gpio =GPIO53;
+ config->lcd_blg_gpio_sel =GPIO53_GPIO53;
+#else
+ config->lcd_reset_gpio = GPIO120;
+ config->lcd_reset_gpio_sel = GPIO120_GPIO120;
+ config->lcd_blg_gpio = GPIO119;
+ config->lcd_blg_gpio_sel = GPIO119_GPIO119;
+#endif
+
+}
+
+//#if KLOCWORK_BOOT
+/**************************************************************************
+* Function: zDrvLcd_SetRamAddr
+* Description: used to set specified start point of DISPLAY RAM for updating laterly
+* Parameters:
+* (IN)
+* uiLeft left postion
+* uiTop top postion
+* (OUT)
+* None.
+* Returns:
+* DRV_SUCCESS: successed.
+* DRV_ERROR: others error code. For more details, please refer to the source code.
+* Others:
+* None.
+**************************************************************************/
+int set_ram_addr_bw(unsigned short uiLeft, unsigned short uiTop)
+{
+ signed int ret = 0;
+
+ /*set column address*/
+ zDrvLcd_Spi_WriteCmd(START_HIGH_BIT |((uiLeft>>4) & 0x0F)); // ?4?
+ zDrvLcd_Spi_WriteCmd((START_LOW_BIT | (uiLeft & 0x0F))+START_LOW_PY); // ?4?
+
+ /*set page address*/
+ zDrvLcd_Spi_WriteCmd(START_PAGE | (uiTop & 0x0F));
+ return ret ;
+}
+
+uint32_t lcd_WritePixel(unsigned short rgb565, unsigned short uiRow, unsigned short uiCol)
+{
+ unsigned short page_index = uiRow / LCD_PAGE_HEIGHT;
+
+ unsigned short ram_offset = page_index * var_screeninfo.width + uiCol;
+
+ unsigned short bit_shift = uiRow % LCD_PAGE_HEIGHT;
+
+ if (rgb565 != 0 )
+ *(g_sLcdHalDataBuf + ram_offset) &= ~(0x01 << bit_shift);
+ else
+ *(g_sLcdHalDataBuf + ram_offset) |= (0x01 << bit_shift);
+
+ return 0;
+}
+/**************************************************************************
+* Function: zDrvLcd_UpdateRect
+* Description: used to update a specified rectangle area of the LCD device opened previously.
+* Parameters:
+* (IN)
+* pBuf data buffer
+* uiLeft left postion
+* uiTop top postion
+* uiWidth rectangle width
+* uiHeight rectangle height
+* (OUT)
+* None.
+* Returns:
+* DRV_SUCCESS: successed.
+* DRV_ERROR: others error code. For more details, please refer to the source code.
+* Others:
+* None.
+**************************************************************************/
+int update_rect_bw(unsigned char *pBuf, unsigned short uiLeft, unsigned short uiTop, unsigned short uiWidth, unsigned short uiHeight)
+{
+
+ unsigned short *pSrcBuf = (unsigned short *)pBuf;
+ unsigned short row,row_reg, col,col_reg, pixel_value;
+ unsigned short cur_page;
+
+ if((pBuf==NULL)|(var_screeninfo.width <=uiLeft)|(var_screeninfo.height <=uiTop)|(var_screeninfo.width < uiLeft + uiWidth)| (var_screeninfo.height < uiTop + uiHeight))
+ { return -1;}
+
+ for (row = uiTop,row_reg = 0; row <(uiTop + uiHeight); row++,row_reg++)
+ {
+ for (col = uiLeft,col_reg = 0; col < (uiLeft + uiWidth); col++,col_reg++)
+ {
+ g_sLcdHalDataBuf_reg[row * var_screeninfo.width + col] = *(pSrcBuf + row_reg * uiWidth + col_reg);
+ }
+ }
+
+ /* ???????RGB565??????,??RAM */
+
+ for (row = 0; row <var_screeninfo.height; row++)
+ {
+ for (col = 0; col < var_screeninfo.width; col++)
+ {
+ pixel_value = g_sLcdHalDataBuf_reg[row * var_screeninfo.width + col];
+
+ lcd_WritePixel(pixel_value, row , col );
+ }
+ }
+
+
+ /* ??,?????,??RAM???,????page */
+
+ for ( cur_page =0; cur_page <LCD_PAGE_NUM; cur_page++ )
+ {
+ set_ram_addr_bw( 0, cur_page );
+ zDrvLcd_Spi_WriteDataBlock(g_sLcdHalDataBuf + cur_page* var_screeninfo.width, var_screeninfo.width);
+ }
+
+ return 0;
+
+}
+//#endif
+
+/**************************************************************************
+* Function: zDrvLcd_Gpio_Init
+* Description: used to initialize GPIO usage.
+* Parameters:
+* (IN)
+*
+* (OUT)
+*
+* Returns:
+* DRV_SUCCESS: successed.
+* DRV_ERROR: others error code. For more details, please refer to the source code.
+* Others:
+**************************************************************************/
+int set_ram_addr_color(unsigned short uiLeft, unsigned short uiTop)
+{
+ int ret = DRV_SUCCESS;
+
+ ret |= zDrvLcd_Spi_WriteCmd(0x2A);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(var_screeninfo.xs);
+ ret |= zDrvLcd_Spi_WriteData((var_screeninfo.xe >> 8));
+ ret |= zDrvLcd_Spi_WriteData((var_screeninfo.xe &0xff));
+
+
+ ret |= zDrvLcd_Spi_WriteCmd(0x2B);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(var_screeninfo.ys);
+ ret |= zDrvLcd_Spi_WriteData((var_screeninfo.ye >> 8));
+ ret |= zDrvLcd_Spi_WriteData((var_screeninfo.ye & 0xff));
+
+ return ret;
+}
+
+int update_rect_color(unsigned char *pBuf, unsigned short uiLeft, unsigned short uiTop, unsigned short uiWidth, unsigned short uiHeight)
+{
+ int ret = DRV_SUCCESS;
+
+ ret |= set_ram_addr_color(uiLeft, uiTop); // Ö¸¶¨Ë¢ÐÂµÄÆðʼµØÖ·
+
+ ret |= zDrvLcd_Spi_WriteCmd(0x2c);
+ ret = zDrvLcd_Spi_WriteDataBlock((unsigned char *) pBuf, uiWidth * uiHeight * 2);
+
+ return ret;
+}
+
+/**************************************************************************
+* Function: prj_lcm_init
+* Description: used to initialize SPI usage.
+* Parameters:
+* (IN)
+*
+* (OUT)
+*
+* Returns:
+* DRV_SUCCESS: successed.
+* DRV_ERROR: others error code. For more details, please refer to the source code.
+* Others:
+**************************************************************************/
+
+int prj_lcm_init(void)
+{
+ int ret = DRV_SUCCESS;
+ unsigned long uiRow, uiCol;
+ uint8_t page_number,column_number;
+#ifdef CONFIG_ZX297520V3E_FWP
+ if (s_lcd_info.lcm_info.lcd_item == ST7567_128x64) {
+
+ #if 1
+ zDrvLcd_Spi_WriteCmd(0xe2); // soft reset
+ zDrvLcd_Spi_WriteCmd(0xa3); // Select bias setting(0xa2:1/9, 0xa3:1/7)
+ zDrvLcd_Spi_WriteCmd(0xa0); // Set scan direction of SEG(0xa0:normal direction, 0xa1:reverse direction)
+ zDrvLcd_Spi_WriteCmd(0xc8); // Set output direction of COM(0xc8:reverse direction, 0xc0:normal direction)
+ zDrvLcd_Spi_WriteCmd(0xa6); // Inverse Display(0xa6:normal display, 0xa7:inverse display)
+ zDrvLcd_Spi_WriteCmd(0x2f); // Power Control(0x28~0x2f, Built-in Booster ON, Built-in Regulator ON, Built-in Follower ON)
+ zDrvLcd_Spi_WriteCmd(0x23); // Select regulation resistor ratio(0x20~0x27)
+ zDrvLcd_Spi_WriteCmd(0x81); // Setelectronic volume (EV) level
+ zDrvLcd_Spi_WriteCmd(0x2e); // level
+ zDrvLcd_Spi_WriteCmd(START_LINE_BIT + 0x20); // set start line
+ //zDrvLcd_Spi_WriteCmd(0xa1); // Set scan direction of SEG(0xa0:normal direction, 0xa1:reverse direction)
+ #else
+ zDrvLcd_Spi_WriteCmd(0xe2); // soft reset
+ zDrvLcd_Spi_WriteCmd(0xa3); // Select bias setting(0xa2:1/9, 0xa3:1/7)
+ //zDrvLcd_Spi_WriteCmd(0xa0); // Set scan direction of SEG(0xa0:normal direction, 0xa1:reverse direction)
+ zDrvLcd_Spi_WriteCmd(0xc8); // Set output direction of COM(0xc8:reverse direction, 0xc0:normal direction)
+ zDrvLcd_Spi_WriteCmd(0xa6); // Inverse Display(0xa6:normal display, 0xa7:inverse display)
+ zDrvLcd_Spi_WriteCmd(0x2f); // Power Control(0x28~0x2f, Built-in Booster ON, Built-in Regulator ON, Built-in Follower ON)
+ zDrvLcd_Spi_WriteCmd(0x23); // Select regulation resistor ratio(0x20~0x27)
+ zDrvLcd_Spi_WriteCmd(0x81); // Setelectronic volume (EV) level
+ zDrvLcd_Spi_WriteCmd(0x2e); // level
+ zDrvLcd_Spi_WriteCmd(START_LINE_BIT); // set start line
+ zDrvLcd_Spi_WriteCmd(0xa1); // Set scan direction of SEG(0xa0:normal direction, 0xa1:reverse direction)
+ #endif
+
+ for( page_number = 0; page_number < LCD_PAGE_NUM; page_number++)
+ {
+ set_ram_addr_bw(0x00, page_number );
+ //printf( " page_number = d% ...\n",page_number);
+ for(column_number = 0;column_number < LCD_WIDTH; column_number++)
+ {
+ zDrvLcd_Spi_WriteData(0x00);
+ }
+ }
+
+ zDrvLcd_Spi_WriteCmd(0xaf); // Display On
+ printf("display on show back ...\n");
+ //zDrvLcd_DelayMs(120);
+ //return ret;
+ }
+#else
+
+ if(s_lcd_info.lcm_info.lcd_item != LCM_ID_LEAD)//s93521a
+ {
+ zDrvLcd_Spi_WriteCmd(0x11); //Exit Sleep
+ zDrvLcd_DelayMs(150);
+
+ zDrvLcd_Spi_WriteCmd(0x26); //Set Default Gamma
+ zDrvLcd_Spi_WriteData(0x04);
+
+ zDrvLcd_Spi_WriteCmd(0xB1);
+ zDrvLcd_Spi_WriteData(0x0B);
+ zDrvLcd_Spi_WriteData(0x14);
+
+ zDrvLcd_Spi_WriteCmd(0xC0); //Set VRH1[4:0] & VC[2:0] for VCI1 & GVDD
+ zDrvLcd_Spi_WriteData(0x10);
+ zDrvLcd_Spi_WriteData(0x00);
+
+ zDrvLcd_Spi_WriteCmd(0xC1); //Set BT[2:0] for AVDD & VCL & VGH & VGL
+ zDrvLcd_Spi_WriteData(0x05);
+
+ zDrvLcd_Spi_WriteCmd(0xC5); //Set VMH[6:0] & VML[6:0] for VOMH & VCOML
+ zDrvLcd_Spi_WriteData(0x46);
+ zDrvLcd_Spi_WriteData(0x40);
+
+ zDrvLcd_Spi_WriteCmd(0xC7);
+ zDrvLcd_Spi_WriteData(0xBD);
+
+ zDrvLcd_Spi_WriteCmd(0xEC);
+ zDrvLcd_Spi_WriteData(0x0C);
+
+ zDrvLcd_Spi_WriteCmd(0x3a); //Set Color Format
+ zDrvLcd_Spi_WriteData(0x05);
+
+ zDrvLcd_Spi_WriteCmd(0x2A); //Set Column Address
+ zDrvLcd_Spi_WriteData(0x00);
+ zDrvLcd_Spi_WriteData(0x00);
+ zDrvLcd_Spi_WriteData(0x00);
+ zDrvLcd_Spi_WriteData(0x7F);
+
+ zDrvLcd_Spi_WriteCmd(0x2B); //Set Page Address
+ zDrvLcd_Spi_WriteData(0x00);
+ zDrvLcd_Spi_WriteData(0x00);
+ zDrvLcd_Spi_WriteData(0x00);
+ zDrvLcd_Spi_WriteData(0x9F);
+
+ zDrvLcd_Spi_WriteCmd(0x36); //Set Scanning Direction
+ zDrvLcd_Spi_WriteData(LCD_MXMYRGB);
+
+ zDrvLcd_Spi_WriteCmd(0xB7); //Set Source Output Direction
+ zDrvLcd_Spi_WriteData(0x00);
+
+ zDrvLcd_Spi_WriteCmd(0xf2); //Enable Gamma bit
+ zDrvLcd_Spi_WriteData(0x01);
+
+ zDrvLcd_Spi_WriteCmd(0xE0);
+ zDrvLcd_Spi_WriteData(0x3F);//p1
+ zDrvLcd_Spi_WriteData(0x29);//p2
+ zDrvLcd_Spi_WriteData(0x26);//p3
+ zDrvLcd_Spi_WriteData(0x26);//p4
+ zDrvLcd_Spi_WriteData(0x26);//p5
+ zDrvLcd_Spi_WriteData(0x0C);//p6
+ zDrvLcd_Spi_WriteData(0x51);//p7
+ zDrvLcd_Spi_WriteData(0xB8);//p8
+ zDrvLcd_Spi_WriteData(0x39);//p9
+ zDrvLcd_Spi_WriteData(0x17);//p10
+ zDrvLcd_Spi_WriteData(0x00);//p11
+ zDrvLcd_Spi_WriteData(0x00);//p12
+ zDrvLcd_Spi_WriteData(0x00);//p13
+ zDrvLcd_Spi_WriteData(0x00);//p14
+ zDrvLcd_Spi_WriteData(0x00);//p15
+
+ zDrvLcd_Spi_WriteCmd(0xE1);
+ zDrvLcd_Spi_WriteData(0x00);//p1
+ zDrvLcd_Spi_WriteData(0x16);//p2
+ zDrvLcd_Spi_WriteData(0x19);//p3
+ zDrvLcd_Spi_WriteData(0x19);//p4
+ zDrvLcd_Spi_WriteData(0x19);//p5
+ zDrvLcd_Spi_WriteData(0x13);//p6
+ zDrvLcd_Spi_WriteData(0x2E);//p7
+ zDrvLcd_Spi_WriteData(0x47);//p8
+ zDrvLcd_Spi_WriteData(0x46);//p9
+ zDrvLcd_Spi_WriteData(0x08);//p10
+ zDrvLcd_Spi_WriteData(0x3F);//p11
+ zDrvLcd_Spi_WriteData(0x3F);//p12
+ zDrvLcd_Spi_WriteData(0x3F);//p13
+ zDrvLcd_Spi_WriteData(0x3F);//p14
+ zDrvLcd_Spi_WriteData(0x3F);//p15
+
+ zDrvLcd_Spi_WriteCmd(0x29); // Display On
+
+ zDrvLcd_Spi_WriteCmd(0x2C);
+ }
+ else
+ {
+ #if 0
+ ret |= zDrvLcd_Spi_WriteCmd(0x11); //Sleep out
+ zDrvLcd_DelayMs(120); //Delay 120ms
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xB1);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x08);
+ ret |= zDrvLcd_Spi_WriteData(0x05);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xB2);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x08);
+ ret |= zDrvLcd_Spi_WriteData(0x05);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xB3);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x08);
+ ret |= zDrvLcd_Spi_WriteData(0x05);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x08);
+ ret |= zDrvLcd_Spi_WriteData(0x05);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xB4); //Column inversion
+ ret |= zDrvLcd_Spi_WriteData(0x00); // Dot inversion in Normal mode
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xC0);
+ ret |= zDrvLcd_Spi_WriteData(0xA2);//a2
+ ret |= zDrvLcd_Spi_WriteData(0x02);
+ ret |= zDrvLcd_Spi_WriteData(0x84);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xC1);
+ ret |= zDrvLcd_Spi_WriteData(0xC5);//c5
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xC2);
+ ret |= zDrvLcd_Spi_WriteData(0x0A);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xC3);
+ ret |= zDrvLcd_Spi_WriteData(0x8A);
+ ret |= zDrvLcd_Spi_WriteData(0x2A);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xC4);
+ ret |= zDrvLcd_Spi_WriteData(0x8A);
+ ret |= zDrvLcd_Spi_WriteData(0xEE);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xC5); //VCOM
+ ret |= zDrvLcd_Spi_WriteData(0x0E);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0x36); //MX, MY, RGB mode
+ ret |= zDrvLcd_Spi_WriteData(LCD_MXMYRGB);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xE0);
+ ret |= zDrvLcd_Spi_WriteData(0x12);
+ ret |= zDrvLcd_Spi_WriteData(0x18);
+ ret |= zDrvLcd_Spi_WriteData(0x10);
+ ret |= zDrvLcd_Spi_WriteData(0x18);
+ ret |= zDrvLcd_Spi_WriteData(0x33);
+ ret |= zDrvLcd_Spi_WriteData(0x2c);
+ ret |= zDrvLcd_Spi_WriteData(0x25);
+ ret |= zDrvLcd_Spi_WriteData(0x28);
+ ret |= zDrvLcd_Spi_WriteData(0x28);
+ ret |= zDrvLcd_Spi_WriteData(0x27);
+ ret |= zDrvLcd_Spi_WriteData(0x2f);
+ ret |= zDrvLcd_Spi_WriteData(0x3c);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x03);
+ ret |= zDrvLcd_Spi_WriteData(0x03);
+ ret |= zDrvLcd_Spi_WriteData(0x10);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xE1);
+ ret |= zDrvLcd_Spi_WriteData(0x12);
+ ret |= zDrvLcd_Spi_WriteData(0x18);
+ ret |= zDrvLcd_Spi_WriteData(0x10);
+ ret |= zDrvLcd_Spi_WriteData(0x18);
+ ret |= zDrvLcd_Spi_WriteData(0x2d);
+ ret |= zDrvLcd_Spi_WriteData(0x28);
+ ret |= zDrvLcd_Spi_WriteData(0x23);
+ ret |= zDrvLcd_Spi_WriteData(0x28);
+ ret |= zDrvLcd_Spi_WriteData(0x28);
+ ret |= zDrvLcd_Spi_WriteData(0x26);
+ ret |= zDrvLcd_Spi_WriteData(0x2f);
+ ret |= zDrvLcd_Spi_WriteData(0x3b);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x03);
+ ret |= zDrvLcd_Spi_WriteData(0x03);
+ ret |= zDrvLcd_Spi_WriteData(0x10);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0x2A);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(var_screeninfo.xs);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(var_screeninfo.xe);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0x2B);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(var_screeninfo.ys);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(var_screeninfo.ye);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0x3A); //65k mode
+ ret |= zDrvLcd_Spi_WriteData(0x05);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0x29); //Display on
+ zDrvLcd_DelayMs(200); //Delay 200ms
+
+ ret |= zDrvLcd_Spi_WriteCmd(0x2C);
+ #else
+ //--------------------------------End ST7735S ResetSequence --------------------------------------//
+ ret |= zDrvLcd_Spi_WriteCmd(0x11); //Sleep out
+ zDrvLcd_DelayMs(150); //Delay 120ms
+ //------------------------------------ST7735S Framerate-----------------------------------------//
+ ret |= zDrvLcd_Spi_WriteCmd(0xB1); //Frame rate 80Hz
+ ret |= zDrvLcd_Spi_WriteData(0x02);
+ ret |= zDrvLcd_Spi_WriteData(0x35);
+ ret |= zDrvLcd_Spi_WriteData(0x36);
+ ret |= zDrvLcd_Spi_WriteCmd(0xB2); //Frame rate 80Hz
+ ret |= zDrvLcd_Spi_WriteData(0x02);
+ ret |= zDrvLcd_Spi_WriteData(0x35);
+ ret |= zDrvLcd_Spi_WriteData(0x36);
+ ret |= zDrvLcd_Spi_WriteCmd(0xB3); //Frame rate 80Hz
+ ret |= zDrvLcd_Spi_WriteData(0x02);
+ ret |= zDrvLcd_Spi_WriteData(0x35);
+ ret |= zDrvLcd_Spi_WriteData(0x36);
+ ret |= zDrvLcd_Spi_WriteData(0x02);
+ ret |= zDrvLcd_Spi_WriteData(0x35);
+ ret |= zDrvLcd_Spi_WriteData(0x36);
+ //------------------------------------End ST7735S Frame rate-----------------------------------------//
+ ret |= zDrvLcd_Spi_WriteCmd(0xB4); //Dot inversion
+ ret |= zDrvLcd_Spi_WriteData(0x03);
+ //------------------------------------ST7735S PowerSequence-----------------------------------------//
+ ret |= zDrvLcd_Spi_WriteCmd(0xC0);
+ ret |= zDrvLcd_Spi_WriteData(0xA2);
+ ret |= zDrvLcd_Spi_WriteData(0x02);
+ ret |= zDrvLcd_Spi_WriteData(0x84);
+ ret |= zDrvLcd_Spi_WriteCmd(0xC1);
+ ret |= zDrvLcd_Spi_WriteData(0xC5);
+ ret |= zDrvLcd_Spi_WriteCmd(0xC2);
+ ret |= zDrvLcd_Spi_WriteData(0x0D);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteCmd(0xC3);
+ ret |= zDrvLcd_Spi_WriteData(0x8D);
+ ret |= zDrvLcd_Spi_WriteData(0xEA);
+ ret |= zDrvLcd_Spi_WriteCmd(0xC4);
+ ret |= zDrvLcd_Spi_WriteData(0x8D);
+ ret |= zDrvLcd_Spi_WriteData(0xEE);
+ //---------------------------------End ST7735S Power Sequence-------------------------------------//
+ ret |= zDrvLcd_Spi_WriteCmd(0xC5); //VCOM
+ ret |= zDrvLcd_Spi_WriteData(0x05);
+ ret |= zDrvLcd_Spi_WriteCmd(0x36); //MX, MY, RGB mode
+ ret |= zDrvLcd_Spi_WriteData(0xC8);
+ //------------------------------------ST7735S GammaSequence-----------------------------------------
+ ret |= zDrvLcd_Spi_WriteCmd(0xE0);
+ ret |= zDrvLcd_Spi_WriteData(0x03);
+ ret |= zDrvLcd_Spi_WriteData(0x1B);
+ ret |= zDrvLcd_Spi_WriteData(0x09);
+ ret |= zDrvLcd_Spi_WriteData(0x0E);
+ ret |= zDrvLcd_Spi_WriteData(0x32);
+ ret |= zDrvLcd_Spi_WriteData(0x2D);
+ ret |= zDrvLcd_Spi_WriteData(0x28);
+ ret |= zDrvLcd_Spi_WriteData(0x2C);
+ ret |= zDrvLcd_Spi_WriteData(0x2B);
+ ret |= zDrvLcd_Spi_WriteData(0x29);
+ ret |= zDrvLcd_Spi_WriteData(0x30);
+ ret |= zDrvLcd_Spi_WriteData(0x3B);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+
+ ret |= zDrvLcd_Spi_WriteData(0x01);
+ ret |= zDrvLcd_Spi_WriteData(0x02);
+ ret |= zDrvLcd_Spi_WriteData(0x10);
+ ret |= zDrvLcd_Spi_WriteCmd(0xE1);
+ ret |= zDrvLcd_Spi_WriteData(0x03);
+ ret |= zDrvLcd_Spi_WriteData(0x1B);
+ ret |= zDrvLcd_Spi_WriteData(0x09);
+ ret |= zDrvLcd_Spi_WriteData(0x0E);
+ ret |= zDrvLcd_Spi_WriteData(0x32);
+ ret |= zDrvLcd_Spi_WriteData(0x2E);
+ ret |= zDrvLcd_Spi_WriteData(0x28);
+ ret |= zDrvLcd_Spi_WriteData(0x2C);
+ ret |= zDrvLcd_Spi_WriteData(0x2B);
+ ret |= zDrvLcd_Spi_WriteData(0x28);
+ ret |= zDrvLcd_Spi_WriteData(0x31);
+ ret |= zDrvLcd_Spi_WriteData(0x3C);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x02);
+ ret |= zDrvLcd_Spi_WriteData(0x10);
+ //------------------------------------End ST7735S Gamma Sequence---------------------------------
+ ret |= zDrvLcd_Spi_WriteCmd(0x3A); //65k mode
+ ret |= zDrvLcd_Spi_WriteData(0x05);
+ ret |= zDrvLcd_Spi_WriteCmd(0x11); //Sleep out
+ ret |= zDrvLcd_Spi_WriteCmd(0x29); //Display on
+ ret |= zDrvLcd_Spi_WriteCmd(0x21); //
+ #endif
+ }
+
+ // 0¹61¤70¯71¤70®2
+ #if 0
+ for (uiRow = 0; uiRow < var_screeninfo.width; uiRow++)
+ {
+ for (uiCol = 0; uiCol < var_screeninfo.height; uiCol++)
+ {
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ }
+ }
+ #endif
+#endif
+
+ return ret;
+}
+
+/**************************************************************************
+* Function: prj_lcd_get_info
+* Description: used to get the LCD device information.
+* Parameters:
+* (IN)
+* pInfo the pointer of LCD device information to store into
+* (OUT)
+* pInfo the pointer of LCD device information allready stored into
+* Returns:
+* DRV_SUCCESS: succeeded.
+* Others:
+* None.
+**************************************************************************/
+int prj_lcd_get_info(T_ZDrvLcd_Info* pInfo)
+{
+ unsigned char tmp;
+ char cmd[64] = {0};
+ unsigned char lcd_info[16] = {0};
+
+ sprintf(cmd, "fsload resource 0x%x %s", (ulong)(&lcd_info), ZSP_LCDINFO_PATH);
+ run_command(cmd, 0);
+ pInfo->width = lcd_info[0]<< 8 | lcd_info[1];//LCD_WIDTH;
+ pInfo->height = lcd_info[2]<< 8 | lcd_info[3];//LCD_HEIGHT;
+ printf("[LCD]fsload LCDINFO.bin sucess (%d %d)\n",pInfo->width,pInfo->height);
+
+ if(pInfo->width == 0 || pInfo->height == 0)
+ {
+ printf("[LCD]fsload LCDINFO.bin failed!!!!\n");
+ }
+
+ pInfo->bitsPerPixel = LCD_BITS_PER_PIXEL;
+ pInfo->rMask = 0xF800;
+ pInfo->gMask = 0x07E0;
+ pInfo->bMask = 0x001F;
+ pInfo->instance = g_sLcd_Instance;
+ pInfo->backlight = g_sLcd_Backlight;
+ pInfo->brightness = g_sLcd_Brightness;
+
+ tmp = read_st(0xda);//lcd module's manufacturer ID
+ pInfo->lcm_info.man_id = tmp;
+ tmp = read_st(0xdb);//lcd module's ID
+ pInfo->lcm_info.dev_id = tmp<<8;
+ tmp = read_st(0xdc);//lcd module's ID
+ pInfo->lcm_info.dev_id |= tmp;
+ if((pInfo->width == 128 && pInfo->height == 128) &&
+ (pInfo->lcm_info.man_id == LCM_ID_LEAD))
+ {
+ var_screeninfo.xs_offset = 0x02;
+ var_screeninfo.ys_offset = 0x03;
+ var_screeninfo.xs = var_screeninfo.xs_offset;
+ var_screeninfo.ys = var_screeninfo.ys_offset;
+ var_screeninfo.width = 128;
+ var_screeninfo.height = 128;
+ var_screeninfo.xe = var_screeninfo.width + var_screeninfo.xs - 1;
+ var_screeninfo.ye = var_screeninfo.height + var_screeninfo.ys - 1;
+ pInfo->lcm_info.lcd_item = LEAD_ST7735_128x128;
+ pInfo->lcm_info.name = "LEAD_ST7735_128x128";
+ }
+ else if(pInfo->width == 128 && pInfo->height == 64)
+ {
+ var_screeninfo.xs_offset = 0;
+ var_screeninfo.ys_offset = 0;
+ var_screeninfo.xs = var_screeninfo.xs_offset;
+ var_screeninfo.ys = var_screeninfo.ys_offset;
+ var_screeninfo.width = 128;
+ var_screeninfo.height = 64;
+ var_screeninfo.xe = var_screeninfo.width + var_screeninfo.xs - 1;
+ var_screeninfo.ye = var_screeninfo.height + var_screeninfo.ys - 1;
+
+ pInfo->width = 128;
+ pInfo->height = 64;
+ pInfo->lcm_info.lcd_item = ST7567_128x64;
+ pInfo->lcm_info.name = "ST7567_128x64";
+
+ }
+ else //default s93521a 128*160
+ {
+ var_screeninfo.xs_offset = 0;
+ var_screeninfo.ys_offset = 0;
+ var_screeninfo.xs = var_screeninfo.xs_offset;
+ var_screeninfo.ys = var_screeninfo.ys_offset;
+ var_screeninfo.width = 128;
+ var_screeninfo.height = 160;
+ var_screeninfo.xe = var_screeninfo.width + var_screeninfo.xs - 1;
+ var_screeninfo.ye = var_screeninfo.height + var_screeninfo.ys - 1;
+
+ pInfo->width = 128;
+ pInfo->height = 160;
+ pInfo->lcm_info.lcd_item = S93521A_128x128;
+ pInfo->lcm_info.name = "128*128 lcd no found,default S93521A";
+ }
+
+ BOOT_PRINTF(UBOOT_NOTICE, "%s init: lcd man_id = 0x%x, dev_id=0x%x\n", pInfo->lcm_info.name, pInfo->lcm_info.man_id,pInfo->lcm_info.dev_id);
+ return 0;
+}
+
+int update_rect(unsigned char *pBuf, unsigned short uiLeft, unsigned short uiTop, unsigned short uiWidth, unsigned short uiHeight)
+{
+#ifdef CONFIG_ZX297520V3E_FWP
+ return update_rect_bw(pBuf,uiLeft,uiTop,uiWidth,uiHeight);
+#else
+ return update_rect_color(pBuf,uiLeft,uiTop,uiWidth,uiHeight);
+#endif
+}
+
diff --git a/lynq/MD310EU/boot/common/src/uboot/drivers/lcd/lcd_prj_mifi_mini.c b/lynq/MD310EU/boot/common/src/uboot/drivers/lcd/lcd_prj_mifi_mini.c
new file mode 100755
index 0000000..4249bd3
--- /dev/null
+++ b/lynq/MD310EU/boot/common/src/uboot/drivers/lcd/lcd_prj_mifi_mini.c
@@ -0,0 +1,887 @@
+/***********************************************************************
+ * Copyright (C) 2014, ZTE Corporation.
+ *
+ * File Name: lcd_comm.c
+ * File Mark:
+ * Description: Lcd function implementation. Adapted to LCM MODEL - LEAD T15DS26.
+ * Others: this file is in BOOTLOADER procedure.
+ * This LCM MODEL uses SPI-4.
+ * NOTE: 4-lines-spi uses CS, CLK, D/CX and SDI. Do not using SDO instead of D/CX.
+ * Version: V1.0
+ * Author: qihongfang
+ * Date: 2017-9-18
+ *
+ * History 1:
+ * Date: 2015-1-16
+ * Version:
+ * Author: YinWenguan
+ * Modification: Add brightness setting.
+ *
+***********************************************************************/
+
+/*************************************************************************
+ * Include files
+ *************************************************************************/
+#include "../include/board.h"
+
+#include <common.h>
+#include <malloc.h>
+#include <asm/io.h>
+#include "../include/spi.h"
+#include "../include/ssp.h"
+#include <lcd.h>
+#include <drvs_gpio.h>
+#include <peripheral.h>
+
+/*************************************************************************
+ * Macro
+ *************************************************************************/
+ /* debug switch */
+
+//static unsigned char g_lcd_id=0;
+#define LCM_ID_LEAD 0x7C /*Öйâµçst7735s\ÈýÁúst7735s*/
+
+#define LCM_ID_BOE 0x7C // 128*128
+#define LCM_ID_BOE_7735S 0x89F0 // 128*128
+
+/* LCD Features */
+#define LCD_WIDTH 160
+#define LCD_HEIGHT 80
+
+#define LCD_RESOLUTION (LCD_WIDTH * LCD_HEIGHT)
+#define LCD_BITS_PER_PIXEL (5 + 6 + 5)
+#define LCD_PAGE_HEIGHT 8
+#define LCD_PAGE_NUM 8
+#define LCD_BPP (2)
+
+#define START_PAGE 0xB0
+#define START_HIGH_BIT 0x10
+#define START_LOW_BIT 0x00
+#define START_LOW_PY 1
+
+
+/* rotate display */
+//#define LCD_ROTATE_180
+
+#define LCD_XS 0x02
+#define LCD_XE ((LCD_WIDTH)+(LCD_XS)-1)
+#ifdef LCD_ROTATE_180
+#define LCD_MXMYRGB 0x1C
+#define LCD_YS 0x01
+#else
+#define LCD_MXMYRGB 0xA8
+#define LCD_YS 0x03
+#endif
+
+#define LCD_YE ((LCD_HEIGHT)+(LCD_YS)-1)
+
+struct lcd_var_screeninfo {
+ unsigned int xs; //xs_offset
+ unsigned int ys; //ys_offset
+ unsigned int width; //128 240
+ unsigned int height; //128 240
+ unsigned int xe; //width + xs - 1
+ unsigned int ye; //height + ys - 1
+ //unsigned int bits_per_pixel;
+};
+static struct lcd_var_screeninfo var_screeninfo = {0}; /* Current var */
+
+/**************************************************************************
+ * Types *
+ **************************************************************************/
+static volatile T_ZDrvLcd_Instance g_sLcd_Instance = {false, LCD_NORMAL, LCD_XFER_POLL, LCD_DCX_CMD};
+static volatile T_ZDrvLcd_BacklightStatus g_sLcd_Backlight = LCD_BACKLIGHT_OFF;
+static volatile T_ZDrvLcd_Brightness g_sLcd_Brightness = 255;
+
+/**************************************************************************
+ * Global Variable
+ **************************************************************************/
+extern volatile T_ZDrvLcd_Info s_lcd_info;
+extern int zDrvLcd_Spi_WriteCmd(unsigned char cmd);
+extern int zDrvLcd_Spi_WriteData(unsigned char data);
+
+static unsigned char g_sLcdHalDataBuf[LCD_WIDTH * LCD_PAGE_NUM] =
+{
+ 0,
+};
+
+static unsigned char g_sLcdHalDataBuf_reg[LCD_WIDTH *LCD_HEIGHT] =
+{
+ 0,
+};
+
+
+/**************************************************************************
+ * Function Implementation
+ **************************************************************************/
+void lcd_gpio_define(struct T_ZDrvLcd_gpio_define* config)
+{
+ config->spi_cs_gpio = GPIO25;
+ config->spi_scl_gpio = GPIO26;
+ config->spi_sda_gpio = GPIO28;
+ config->spi_dcx_gpio = GPIO27;
+
+ config->spi_cs_func_sel = GPIO25_SSP0_CS;
+ config->spi_scl_func_sel = GPIO26_SSP0_CLK;
+ config->spi_sda_func_sel = GPIO28_SSP0_TXD;
+ config->spi_dcx_func_sel = GPIO27_SSP0_RXD;
+
+ config->spi_cs_gpio_sel = GPIO25_GPIO25;
+ config->spi_scl_gpio_sel = GPIO26_GPIO26;
+ config->spi_sda_gpio_sel = GPIO28_GPIO28;
+ config->spi_dcx_gpio_sel = GPIO27_GPIO27;
+
+ config->lcd_reset_gpio = GPIO38;
+ config->lcd_reset_gpio_sel = GPIO38_GPIO38;
+
+ config->lcd_blg_gpio = GPIO130;
+ config->lcd_blg_gpio_sel = GPIO130_GPIO130;
+
+}
+
+#if KLOCWORK_BOOT
+/**************************************************************************
+* Function: zDrvLcd_SetRamAddr
+* Description: used to set specified start point of DISPLAY RAM for updating laterly
+* Parameters:
+* (IN)
+* uiLeft left postion
+* uiTop top postion
+* (OUT)
+* None.
+* Returns:
+* DRV_SUCCESS: successed.
+* DRV_ERROR: others error code. For more details, please refer to the source code.
+* Others:
+* None.
+**************************************************************************/
+int set_ram_addr_bw(unsigned short uiLeft, unsigned short uiTop)
+{
+ signed int ret = 0;
+
+ /*set column address*/
+ zDrvLcd_Spi_WriteCmd(START_HIGH_BIT |((uiLeft>>4) & 0x0F)); // ?4?
+ zDrvLcd_Spi_WriteCmd((START_LOW_BIT | (uiLeft & 0x0F))+START_LOW_PY); // ?4?
+
+ /*set page address*/
+ zDrvLcd_Spi_WriteCmd(START_PAGE | (uiTop & 0x0F));
+ return ret ;
+}
+uint32_t lcd_WritePixel(unsigned short rgb565, unsigned short uiRow, unsigned short uiCol)
+{
+ unsigned short page_index = uiRow / LCD_PAGE_HEIGHT;
+
+ unsigned short ram_offset = page_index * LCD_WIDTH + uiCol;
+
+ unsigned short bit_shift = uiRow % LCD_PAGE_HEIGHT;
+
+ if (rgb565 != 0 )
+ *(g_sLcdHalDataBuf + ram_offset) &= ~(0x01 << bit_shift);
+ else
+ *(g_sLcdHalDataBuf + ram_offset) |= (0x01 << bit_shift);
+
+ return 0;
+}
+/**************************************************************************
+* Function: zDrvLcd_UpdateRect
+* Description: used to update a specified rectangle area of the LCD device opened previously.
+* Parameters:
+* (IN)
+* pBuf data buffer
+* uiLeft left postion
+* uiTop top postion
+* uiWidth rectangle width
+* uiHeight rectangle height
+* (OUT)
+* None.
+* Returns:
+* DRV_SUCCESS: successed.
+* DRV_ERROR: others error code. For more details, please refer to the source code.
+* Others:
+* None.
+**************************************************************************/
+int update_rect_bw(unsigned char *pBuf, unsigned short uiLeft, unsigned short uiTop, unsigned short uiWidth, unsigned short uiHeight)
+{
+
+ unsigned short *pSrcBuf = (unsigned short *)pBuf;
+ unsigned short row,row_reg, col,col_reg, pixel_value;
+ unsigned short cur_page;
+
+ if((pBuf==NULL)|(LCD_WIDTH <=uiLeft)|(LCD_HEIGHT <=uiTop)|(LCD_WIDTH < uiLeft + uiWidth)| (LCD_HEIGHT < uiTop + uiHeight))
+ { return -1;}
+
+ for (row = uiTop,row_reg = 0; row <(uiTop + uiHeight); row++,row_reg++)
+ {
+ for (col = uiLeft,col_reg = 0; col < (uiLeft + uiWidth); col++,col_reg++)
+ {
+ g_sLcdHalDataBuf_reg[row * LCD_WIDTH + col] = *(pSrcBuf + row_reg * uiWidth + col_reg);
+ }
+ }
+
+ /* ???????RGB565??????,??RAM */
+
+ for (row = 0; row <LCD_HEIGHT; row++)
+ {
+ for (col = 0; col < LCD_WIDTH; col++)
+ {
+ pixel_value = g_sLcdHalDataBuf_reg[row * LCD_WIDTH + col];
+
+ lcd_WritePixel(pixel_value, row , col );
+ }
+ }
+
+
+ /* ??,?????,??RAM???,????page */
+
+ for ( cur_page =0; cur_page <LCD_PAGE_NUM; cur_page++ )
+ {
+ set_ram_addr_bw( 0, cur_page );
+ zDrvLcd_Spi_WriteDataBlock(g_sLcdHalDataBuf + cur_page* LCD_WIDTH, LCD_WIDTH);
+ }
+
+ return 0;
+
+}
+#endif
+
+/**************************************************************************
+* Function: zDrvLcd_Gpio_Init
+* Description: used to initialize GPIO usage.
+* Parameters:
+* (IN)
+*
+* (OUT)
+*
+* Returns:
+* DRV_SUCCESS: successed.
+* DRV_ERROR: others error code. For more details, please refer to the source code.
+* Others:
+**************************************************************************/
+int set_ram_addr_color(unsigned short uiLeft, unsigned short uiTop)
+{
+ int ret = DRV_SUCCESS;
+
+ ret |= zDrvLcd_Spi_WriteCmd(0x2A);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(var_screeninfo.xs);
+ ret |= zDrvLcd_Spi_WriteData((var_screeninfo.xe>>8));
+ ret |= zDrvLcd_Spi_WriteData((var_screeninfo.xe&0xff));
+
+
+ ret |= zDrvLcd_Spi_WriteCmd(0x2B);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(var_screeninfo.ys);
+ ret |= zDrvLcd_Spi_WriteData((var_screeninfo.ye>>8));
+ ret |= zDrvLcd_Spi_WriteData((var_screeninfo.ye&0xff));
+
+ return ret;
+}
+
+int update_rect_color(unsigned char *pBuf, unsigned short uiLeft, unsigned short uiTop, unsigned short uiWidth, unsigned short uiHeight)
+{
+ int ret = DRV_SUCCESS;
+
+ ret |= set_ram_addr_color(uiLeft, uiTop); // Ö¸¶¨Ë¢ÐÂµÄÆðʼµØÖ·
+
+ ret |= zDrvLcd_Spi_WriteCmd(0x2c);
+ ret = zDrvLcd_Spi_WriteDataBlock((unsigned char *) pBuf, uiWidth * uiHeight * 2);
+
+ return ret;
+}
+
+/**************************************************************************
+* Function: prj_lcm_init
+* Description: used to initialize SPI usage.
+* Parameters:
+* (IN)
+*
+* (OUT)
+*
+* Returns:
+* DRV_SUCCESS: successed.
+* DRV_ERROR: others error code. For more details, please refer to the source code.
+* Others:
+**************************************************************************/
+
+int prj_lcm_init(void)
+{
+ int ret = DRV_SUCCESS;
+ unsigned long uiRow, uiCol;
+ int i = 0;
+
+ if (s_lcd_info.lcm_info.lcd_item == LEAD_ST7735_128x128_F231E)
+ {
+ #if 0
+ zDrvLcd_Spi_WriteCmd(0x11); //Sleep out
+ zDrvLcd_DelayMs(120);
+
+ zDrvLcd_Spi_WriteCmd(0xB1); //Frame rate 80Hz
+ zDrvLcd_Spi_WriteData(0x02);
+ zDrvLcd_Spi_WriteData(0x35);
+ zDrvLcd_Spi_WriteData(0x36);
+
+ zDrvLcd_Spi_WriteCmd(0xB2); //Frame rate 80Hz
+ zDrvLcd_Spi_WriteData(0x02);
+ zDrvLcd_Spi_WriteData(0x35);
+ zDrvLcd_Spi_WriteData(0x36);
+
+ zDrvLcd_Spi_WriteCmd(0xB3); //Frame rate 80Hz
+ zDrvLcd_Spi_WriteData(0x02);
+ zDrvLcd_Spi_WriteData(0x35);
+ zDrvLcd_Spi_WriteData(0x36);
+ zDrvLcd_Spi_WriteData(0x02);
+ zDrvLcd_Spi_WriteData(0x35);
+ zDrvLcd_Spi_WriteData(0x36);
+
+ //------End ST7735S Frame rate----//
+ zDrvLcd_Spi_WriteCmd(0xB4); //Dot inversion
+ zDrvLcd_Spi_WriteData(0x03);
+
+ //---ST7735S Power Sequence----//
+ zDrvLcd_Spi_WriteCmd(0xC0);
+ zDrvLcd_Spi_WriteData(0xA2);
+ zDrvLcd_Spi_WriteData(0x02);
+ zDrvLcd_Spi_WriteData(0x84);
+ zDrvLcd_Spi_WriteCmd(0xC1);
+ zDrvLcd_Spi_WriteData(0xC5);
+ zDrvLcd_Spi_WriteCmd(0xC2);
+ zDrvLcd_Spi_WriteData(0x0D);
+ zDrvLcd_Spi_WriteData(0x00);
+ zDrvLcd_Spi_WriteCmd(0xC3);
+ zDrvLcd_Spi_WriteData(0x8D);
+ zDrvLcd_Spi_WriteData(0x2A);
+ zDrvLcd_Spi_WriteCmd(0xC4);
+ zDrvLcd_Spi_WriteData(0x8D);
+ zDrvLcd_Spi_WriteData(0xEE);
+
+ //--------End ST7735S Power Sequence-----//
+ zDrvLcd_Spi_WriteCmd(0xC5); //VCOM
+ zDrvLcd_Spi_WriteData(0x0a);
+
+ zDrvLcd_Spi_WriteCmd(0x36); //MX, MY, RGB mode
+ zDrvLcd_Spi_WriteData(0xC8);
+
+ //-------ST7735S Gamma Sequence---------//
+ zDrvLcd_Spi_WriteCmd(0xE0);
+ zDrvLcd_Spi_WriteData(0x12);
+ zDrvLcd_Spi_WriteData(0x1C);
+ zDrvLcd_Spi_WriteData(0x10);
+ zDrvLcd_Spi_WriteData(0x18);
+ zDrvLcd_Spi_WriteData(0x33);
+ zDrvLcd_Spi_WriteData(0x2C);
+ zDrvLcd_Spi_WriteData(0x25);
+ zDrvLcd_Spi_WriteData(0x28);
+ zDrvLcd_Spi_WriteData(0x28);
+ zDrvLcd_Spi_WriteData(0x27);
+ zDrvLcd_Spi_WriteData(0x2F);
+ zDrvLcd_Spi_WriteData(0x3C);
+ zDrvLcd_Spi_WriteData(0x00);
+ zDrvLcd_Spi_WriteData(0x03);
+ zDrvLcd_Spi_WriteData(0x03);
+ zDrvLcd_Spi_WriteData(0x10);
+ zDrvLcd_Spi_WriteCmd(0xE1);
+ zDrvLcd_Spi_WriteData(0x12);
+ zDrvLcd_Spi_WriteData(0x1C);
+ zDrvLcd_Spi_WriteData(0x10);
+ zDrvLcd_Spi_WriteData(0x18);
+ zDrvLcd_Spi_WriteData(0x2D);
+ zDrvLcd_Spi_WriteData(0x28);
+ zDrvLcd_Spi_WriteData(0x23);
+ zDrvLcd_Spi_WriteData(0x28);
+ zDrvLcd_Spi_WriteData(0x28);
+ zDrvLcd_Spi_WriteData(0x26);
+ zDrvLcd_Spi_WriteData(0x2F);
+ zDrvLcd_Spi_WriteData(0x3B);
+ zDrvLcd_Spi_WriteData(0x00);
+ zDrvLcd_Spi_WriteData(0x03);
+ zDrvLcd_Spi_WriteData(0x03);
+ zDrvLcd_Spi_WriteData(0x10);
+ //---End ST7735S Gamma Sequence------//
+ zDrvLcd_Spi_WriteCmd(0x3A); //65k mode
+ zDrvLcd_Spi_WriteData(0x05);
+ zDrvLcd_Spi_WriteCmd(0x29); //Display on
+ #else
+ ret |= zDrvLcd_Spi_WriteCmd(0x11); // Sleep out
+ zDrvLcd_DelayMs(120);
+ ret |= zDrvLcd_Spi_WriteCmd(0xB1);
+ ret |= zDrvLcd_Spi_WriteData(0x05);
+ ret |= zDrvLcd_Spi_WriteData(0x3A);
+ ret |= zDrvLcd_Spi_WriteData(0x3A);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xB2);
+ ret |= zDrvLcd_Spi_WriteData(0x05);
+ ret |= zDrvLcd_Spi_WriteData(0x3A);
+ ret |= zDrvLcd_Spi_WriteData(0x3A);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xB3);
+ ret |= zDrvLcd_Spi_WriteData(0x05);
+ ret |= zDrvLcd_Spi_WriteData(0x3A);
+ ret |= zDrvLcd_Spi_WriteData(0x3A);
+ ret |= zDrvLcd_Spi_WriteData(0x05);
+ ret |= zDrvLcd_Spi_WriteData(0x3A);
+ ret |= zDrvLcd_Spi_WriteData(0x3A);
+ //------------------------------------End ST7735S Frame Rate-----------------------------------------//
+ ret |= zDrvLcd_Spi_WriteCmd(0xB4); // Dot inversion
+ ret |= zDrvLcd_Spi_WriteData(0x03);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xC0);
+ ret |= zDrvLcd_Spi_WriteData(0x0E);
+ ret |= zDrvLcd_Spi_WriteData(0x0E);
+ ret |= zDrvLcd_Spi_WriteData(0x04);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xC1);
+ ret |= zDrvLcd_Spi_WriteData(0x06); // C0?C5
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xC2);
+ ret |= zDrvLcd_Spi_WriteData(0x0D);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xC3);
+ ret |= zDrvLcd_Spi_WriteData(0x8D);
+ ret |= zDrvLcd_Spi_WriteData(0x2A);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xC4);
+ ret |= zDrvLcd_Spi_WriteData(0x8D);
+ ret |= zDrvLcd_Spi_WriteData(0xEE); //---------------------------------End ST7735S Power Sequence-------------------------------------//
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xC5); // VCOM
+ ret |= zDrvLcd_Spi_WriteData(0x04); // 03
+
+ ret |= zDrvLcd_Spi_WriteCmd(0x36); // MX, MY, RGB mode
+ ret |= zDrvLcd_Spi_WriteData(LCD_MXMYRGB);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xE0);
+ ret |= zDrvLcd_Spi_WriteData(0x10);
+ ret |= zDrvLcd_Spi_WriteData(0x0E);
+ ret |= zDrvLcd_Spi_WriteData(0x02);
+ ret |= zDrvLcd_Spi_WriteData(0x03);
+ ret |= zDrvLcd_Spi_WriteData(0x0E);
+ ret |= zDrvLcd_Spi_WriteData(0x07);
+ ret |= zDrvLcd_Spi_WriteData(0x02);
+ ret |= zDrvLcd_Spi_WriteData(0x07);
+ ret |= zDrvLcd_Spi_WriteData(0x0A);
+ ret |= zDrvLcd_Spi_WriteData(0x12);
+ ret |= zDrvLcd_Spi_WriteData(0x27);
+ ret |= zDrvLcd_Spi_WriteData(0x37);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x0D);
+ ret |= zDrvLcd_Spi_WriteData(0x0E);
+ ret |= zDrvLcd_Spi_WriteData(0x10);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xE1);
+ ret |= zDrvLcd_Spi_WriteData(0x10);
+ ret |= zDrvLcd_Spi_WriteData(0x0E);
+ ret |= zDrvLcd_Spi_WriteData(0x03);
+ ret |= zDrvLcd_Spi_WriteData(0x03);
+ ret |= zDrvLcd_Spi_WriteData(0x0F);
+ ret |= zDrvLcd_Spi_WriteData(0x06);
+ ret |= zDrvLcd_Spi_WriteData(0x02);
+ ret |= zDrvLcd_Spi_WriteData(0x08);
+ ret |= zDrvLcd_Spi_WriteData(0x0A);
+ ret |= zDrvLcd_Spi_WriteData(0x13);
+ ret |= zDrvLcd_Spi_WriteData(0x26);
+ ret |= zDrvLcd_Spi_WriteData(0x36);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x0D);
+ ret |= zDrvLcd_Spi_WriteData(0x0E);
+ ret |= zDrvLcd_Spi_WriteData(0x10);
+ ret |= zDrvLcd_Spi_WriteCmd(0x3A); // 65k mode
+ ret |= zDrvLcd_Spi_WriteData(0x05);
+ ret |= zDrvLcd_Spi_WriteCmd(0x29);
+ ret |= zDrvLcd_Spi_WriteCmd(0x2A);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x18);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x67);
+ ret |= zDrvLcd_Spi_WriteCmd(0x2B);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x9f);
+ ret |= zDrvLcd_Spi_WriteCmd(0x2c);
+
+ #endif
+
+ }
+ else if (s_lcd_info.lcm_info.lcd_item == LCM_ID_LEAD)
+ {
+ ret |= zDrvLcd_Spi_WriteCmd(0x11); //Sleep out
+ zDrvLcd_DelayMs(120); //Delay 120ms
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xB1);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x08);
+ ret |= zDrvLcd_Spi_WriteData(0x05);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xB2);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x08);
+ ret |= zDrvLcd_Spi_WriteData(0x05);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xB3);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x08);
+ ret |= zDrvLcd_Spi_WriteData(0x05);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x08);
+ ret |= zDrvLcd_Spi_WriteData(0x05);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xB4); //Column inversion
+ ret |= zDrvLcd_Spi_WriteData(0x00); // Dot inversion in Normal mode
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xC0);
+ ret |= zDrvLcd_Spi_WriteData(0xA2);//a2
+ ret |= zDrvLcd_Spi_WriteData(0x02);
+ ret |= zDrvLcd_Spi_WriteData(0x84);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xC1);
+ ret |= zDrvLcd_Spi_WriteData(0xC5);//c5
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xC2);
+ ret |= zDrvLcd_Spi_WriteData(0x0A);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xC3);
+ ret |= zDrvLcd_Spi_WriteData(0x8A);
+ ret |= zDrvLcd_Spi_WriteData(0x2A);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xC4);
+ ret |= zDrvLcd_Spi_WriteData(0x8A);
+ ret |= zDrvLcd_Spi_WriteData(0xEE);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xC5); //VCOM
+ ret |= zDrvLcd_Spi_WriteData(0x0E);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0x36); //MX, MY, RGB mode
+ ret |= zDrvLcd_Spi_WriteData(LCD_MXMYRGB);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xE0);
+ ret |= zDrvLcd_Spi_WriteData(0x12);
+ ret |= zDrvLcd_Spi_WriteData(0x18);
+ ret |= zDrvLcd_Spi_WriteData(0x10);
+ ret |= zDrvLcd_Spi_WriteData(0x18);
+ ret |= zDrvLcd_Spi_WriteData(0x33);
+ ret |= zDrvLcd_Spi_WriteData(0x2c);
+ ret |= zDrvLcd_Spi_WriteData(0x25);
+ ret |= zDrvLcd_Spi_WriteData(0x28);
+ ret |= zDrvLcd_Spi_WriteData(0x28);
+ ret |= zDrvLcd_Spi_WriteData(0x27);
+ ret |= zDrvLcd_Spi_WriteData(0x2f);
+ ret |= zDrvLcd_Spi_WriteData(0x3c);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x03);
+ ret |= zDrvLcd_Spi_WriteData(0x03);
+ ret |= zDrvLcd_Spi_WriteData(0x10);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0xE1);
+ ret |= zDrvLcd_Spi_WriteData(0x12);
+ ret |= zDrvLcd_Spi_WriteData(0x18);
+ ret |= zDrvLcd_Spi_WriteData(0x10);
+ ret |= zDrvLcd_Spi_WriteData(0x18);
+ ret |= zDrvLcd_Spi_WriteData(0x2d);
+ ret |= zDrvLcd_Spi_WriteData(0x28);
+ ret |= zDrvLcd_Spi_WriteData(0x23);
+ ret |= zDrvLcd_Spi_WriteData(0x28);
+ ret |= zDrvLcd_Spi_WriteData(0x28);
+ ret |= zDrvLcd_Spi_WriteData(0x26);
+ ret |= zDrvLcd_Spi_WriteData(0x2f);
+ ret |= zDrvLcd_Spi_WriteData(0x3b);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x03);
+ ret |= zDrvLcd_Spi_WriteData(0x03);
+ ret |= zDrvLcd_Spi_WriteData(0x10);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0x2A);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(LCD_XS);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(LCD_XE);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0x2B);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(LCD_YS);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(LCD_YE);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0x3A); //65k mode
+ ret |= zDrvLcd_Spi_WriteData(0x05);
+
+ ret |= zDrvLcd_Spi_WriteCmd(0x29); //Display on
+ zDrvLcd_DelayMs(200); //Delay 200ms
+
+ ret |= zDrvLcd_Spi_WriteCmd(0x2C);
+ }
+ else
+ {
+ #if 0
+ zDrvLcd_Spi_WriteCmd(0x11); //Exit Sleep
+ zDrvLcd_DelayMs(150);
+
+ zDrvLcd_Spi_WriteCmd(0x26); //Set Default Gamma
+ zDrvLcd_Spi_WriteData(0x04);
+
+ zDrvLcd_Spi_WriteCmd(0xB1);
+ zDrvLcd_Spi_WriteData(0x0B);
+ zDrvLcd_Spi_WriteData(0x14);
+
+ zDrvLcd_Spi_WriteCmd(0xC0); //Set VRH1[4:0] & VC[2:0] for VCI1 & GVDD
+ zDrvLcd_Spi_WriteData(0x10);
+ zDrvLcd_Spi_WriteData(0x00);
+
+ zDrvLcd_Spi_WriteCmd(0xC1); //Set BT[2:0] for AVDD & VCL & VGH & VGL
+ zDrvLcd_Spi_WriteData(0x05);
+
+ zDrvLcd_Spi_WriteCmd(0xC5); //Set VMH[6:0] & VML[6:0] for VOMH & VCOML
+ zDrvLcd_Spi_WriteData(0x46);
+ zDrvLcd_Spi_WriteData(0x40);
+
+ zDrvLcd_Spi_WriteCmd(0xC7);
+ zDrvLcd_Spi_WriteData(0xBD);
+
+ zDrvLcd_Spi_WriteCmd(0xEC);
+ zDrvLcd_Spi_WriteData(0x0C);
+
+ zDrvLcd_Spi_WriteCmd(0x3a); //Set Color Format
+ zDrvLcd_Spi_WriteData(0x05);
+
+ zDrvLcd_Spi_WriteCmd(0x2A); //Set Column Address
+ zDrvLcd_Spi_WriteData(0x00);
+ zDrvLcd_Spi_WriteData(0x00);
+ zDrvLcd_Spi_WriteData(0x00);
+ zDrvLcd_Spi_WriteData(0x7F);
+
+ zDrvLcd_Spi_WriteCmd(0x2B); //Set Page Address
+ zDrvLcd_Spi_WriteData(0x00);
+ zDrvLcd_Spi_WriteData(0x00);
+ zDrvLcd_Spi_WriteData(0x00);
+ zDrvLcd_Spi_WriteData(0x9F);
+
+ zDrvLcd_Spi_WriteCmd(0x36); //Set Scanning Direction
+ zDrvLcd_Spi_WriteData(LCD_MXMYRGB);
+
+ zDrvLcd_Spi_WriteCmd(0xB7); //Set Source Output Direction
+ zDrvLcd_Spi_WriteData(0x00);
+
+ zDrvLcd_Spi_WriteCmd(0xf2); //Enable Gamma bit
+ zDrvLcd_Spi_WriteData(0x01);
+
+ zDrvLcd_Spi_WriteCmd(0xE0);
+ zDrvLcd_Spi_WriteData(0x3F);//p1
+ zDrvLcd_Spi_WriteData(0x29);//p2
+ zDrvLcd_Spi_WriteData(0x26);//p3
+ zDrvLcd_Spi_WriteData(0x26);//p4
+ zDrvLcd_Spi_WriteData(0x26);//p5
+ zDrvLcd_Spi_WriteData(0x0C);//p6
+ zDrvLcd_Spi_WriteData(0x51);//p7
+ zDrvLcd_Spi_WriteData(0xB8);//p8
+ zDrvLcd_Spi_WriteData(0x39);//p9
+ zDrvLcd_Spi_WriteData(0x17);//p10
+ zDrvLcd_Spi_WriteData(0x00);//p11
+ zDrvLcd_Spi_WriteData(0x00);//p12
+ zDrvLcd_Spi_WriteData(0x00);//p13
+ zDrvLcd_Spi_WriteData(0x00);//p14
+ zDrvLcd_Spi_WriteData(0x00);//p15
+
+ zDrvLcd_Spi_WriteCmd(0xE1);
+ zDrvLcd_Spi_WriteData(0x00);//p1
+ zDrvLcd_Spi_WriteData(0x16);//p2
+ zDrvLcd_Spi_WriteData(0x19);//p3
+ zDrvLcd_Spi_WriteData(0x19);//p4
+ zDrvLcd_Spi_WriteData(0x19);//p5
+ zDrvLcd_Spi_WriteData(0x13);//p6
+ zDrvLcd_Spi_WriteData(0x2E);//p7
+ zDrvLcd_Spi_WriteData(0x47);//p8
+ zDrvLcd_Spi_WriteData(0x46);//p9
+ zDrvLcd_Spi_WriteData(0x08);//p10
+ zDrvLcd_Spi_WriteData(0x3F);//p11
+ zDrvLcd_Spi_WriteData(0x3F);//p12
+ zDrvLcd_Spi_WriteData(0x3F);//p13
+ zDrvLcd_Spi_WriteData(0x3F);//p14
+ zDrvLcd_Spi_WriteData(0x3F);//p15
+
+ zDrvLcd_Spi_WriteCmd(0x29); // Display On
+
+ zDrvLcd_Spi_WriteCmd(0x2C);
+ #else
+ //--------------------------------End ST7735S ResetSequence --------------------------------------//
+ ret |= zDrvLcd_Spi_WriteCmd(0x11); //Sleep out
+ zDrvLcd_DelayMs(150); //Delay 120ms
+ //------------------------------------ST7735S Framerate-----------------------------------------//
+ ret |= zDrvLcd_Spi_WriteCmd(0xB1); //Frame rate 80Hz
+ ret |= zDrvLcd_Spi_WriteData(0x02);
+ ret |= zDrvLcd_Spi_WriteData(0x35);
+ ret |= zDrvLcd_Spi_WriteData(0x36);
+ ret |= zDrvLcd_Spi_WriteCmd(0xB2); //Frame rate 80Hz
+ ret |= zDrvLcd_Spi_WriteData(0x02);
+ ret |= zDrvLcd_Spi_WriteData(0x35);
+ ret |= zDrvLcd_Spi_WriteData(0x36);
+ ret |= zDrvLcd_Spi_WriteCmd(0xB3); //Frame rate 80Hz
+ ret |= zDrvLcd_Spi_WriteData(0x02);
+ ret |= zDrvLcd_Spi_WriteData(0x35);
+ ret |= zDrvLcd_Spi_WriteData(0x36);
+ ret |= zDrvLcd_Spi_WriteData(0x02);
+ ret |= zDrvLcd_Spi_WriteData(0x35);
+ ret |= zDrvLcd_Spi_WriteData(0x36);
+ //------------------------------------End ST7735S Frame rate-----------------------------------------//
+ ret |= zDrvLcd_Spi_WriteCmd(0xB4); //Dot inversion
+ ret |= zDrvLcd_Spi_WriteData(0x03);
+ //------------------------------------ST7735S PowerSequence-----------------------------------------//
+ ret |= zDrvLcd_Spi_WriteCmd(0xC0);
+ ret |= zDrvLcd_Spi_WriteData(0xA2);
+ ret |= zDrvLcd_Spi_WriteData(0x02);
+ ret |= zDrvLcd_Spi_WriteData(0x84);
+ ret |= zDrvLcd_Spi_WriteCmd(0xC1);
+ ret |= zDrvLcd_Spi_WriteData(0xC5);
+ ret |= zDrvLcd_Spi_WriteCmd(0xC2);
+ ret |= zDrvLcd_Spi_WriteData(0x0D);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteCmd(0xC3);
+ ret |= zDrvLcd_Spi_WriteData(0x8D);
+ ret |= zDrvLcd_Spi_WriteData(0xEA);
+ ret |= zDrvLcd_Spi_WriteCmd(0xC4);
+ ret |= zDrvLcd_Spi_WriteData(0x8D);
+ ret |= zDrvLcd_Spi_WriteData(0xEE);
+ //---------------------------------End ST7735S Power Sequence-------------------------------------//
+ ret |= zDrvLcd_Spi_WriteCmd(0xC5); //VCOM
+ ret |= zDrvLcd_Spi_WriteData(0x05);
+ ret |= zDrvLcd_Spi_WriteCmd(0x36); //MX, MY, RGB mode
+ ret |= zDrvLcd_Spi_WriteData(LCD_MXMYRGB);
+ //------------------------------------ST7735S GammaSequence-----------------------------------------
+ ret |= zDrvLcd_Spi_WriteCmd(0xE0);
+ ret |= zDrvLcd_Spi_WriteData(0x03);
+ ret |= zDrvLcd_Spi_WriteData(0x1B);
+ ret |= zDrvLcd_Spi_WriteData(0x09);
+ ret |= zDrvLcd_Spi_WriteData(0x0E);
+ ret |= zDrvLcd_Spi_WriteData(0x32);
+ ret |= zDrvLcd_Spi_WriteData(0x2D);
+ ret |= zDrvLcd_Spi_WriteData(0x28);
+ ret |= zDrvLcd_Spi_WriteData(0x2C);
+ ret |= zDrvLcd_Spi_WriteData(0x2B);
+ ret |= zDrvLcd_Spi_WriteData(0x29);
+ ret |= zDrvLcd_Spi_WriteData(0x30);
+ ret |= zDrvLcd_Spi_WriteData(0x3B);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+
+ ret |= zDrvLcd_Spi_WriteData(0x01);
+ ret |= zDrvLcd_Spi_WriteData(0x02);
+ ret |= zDrvLcd_Spi_WriteData(0x10);
+ ret |= zDrvLcd_Spi_WriteCmd(0xE1);
+ ret |= zDrvLcd_Spi_WriteData(0x03);
+ ret |= zDrvLcd_Spi_WriteData(0x1B);
+ ret |= zDrvLcd_Spi_WriteData(0x09);
+ ret |= zDrvLcd_Spi_WriteData(0x0E);
+ ret |= zDrvLcd_Spi_WriteData(0x32);
+ ret |= zDrvLcd_Spi_WriteData(0x2E);
+ ret |= zDrvLcd_Spi_WriteData(0x28);
+ ret |= zDrvLcd_Spi_WriteData(0x2C);
+ ret |= zDrvLcd_Spi_WriteData(0x2B);
+ ret |= zDrvLcd_Spi_WriteData(0x28);
+ ret |= zDrvLcd_Spi_WriteData(0x31);
+ ret |= zDrvLcd_Spi_WriteData(0x3C);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x02);
+ ret |= zDrvLcd_Spi_WriteData(0x10);
+ //------------------------------------End ST7735S Gamma Sequence---------------------------------
+ ret |= zDrvLcd_Spi_WriteCmd(0x3A); //65k mode
+ ret |= zDrvLcd_Spi_WriteData(0x05);
+ ret |= zDrvLcd_Spi_WriteCmd(0x11); //Sleep out
+ ret |= zDrvLcd_Spi_WriteCmd(0x29); //Display on
+ ret |= zDrvLcd_Spi_WriteCmd(0x21); //
+ #endif
+ }
+
+ #if 0
+ // 0¹61¤70¯71¤70®2
+ for (uiRow = 0; uiRow < LCD_WIDTH; uiRow++)
+ {
+ for (uiCol = 0; uiCol < LCD_HEIGHT; uiCol++)
+ {
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ ret |= zDrvLcd_Spi_WriteData(0x00);
+ }
+ }
+ #endif
+
+ return ret;
+}
+
+/**************************************************************************
+* Function: prj_lcd_get_info
+* Description: used to get the LCD device information.
+* Parameters:
+* (IN)
+* pInfo the pointer of LCD device information to store into
+* (OUT)
+* pInfo the pointer of LCD device information allready stored into
+* Returns:
+* DRV_SUCCESS: succeeded.
+* Others:
+* None.
+**************************************************************************/
+int prj_lcd_get_info(T_ZDrvLcd_Info* pInfo)
+{
+ unsigned char tmp;
+
+ pInfo->width = LCD_WIDTH;
+ pInfo->height = LCD_HEIGHT;
+ pInfo->bitsPerPixel = LCD_BITS_PER_PIXEL;
+ pInfo->rMask = 0xF800;
+ pInfo->gMask = 0x07E0;
+ pInfo->bMask = 0x001F;
+ pInfo->instance = g_sLcd_Instance;
+ pInfo->backlight = g_sLcd_Backlight;
+ pInfo->brightness = g_sLcd_Brightness;
+
+ tmp = read_st(0xda);//lcd module's manufacturer ID
+ pInfo->lcm_info.man_id = tmp;
+ tmp = read_st(0xdb);//lcd module's ID
+ pInfo->lcm_info.dev_id = tmp<<8;
+ tmp = read_st(0xdc);//lcd module's ID
+ pInfo->lcm_info.dev_id |= tmp;
+ ///Force the use of GD096QQ08B-A begin
+ pInfo->lcm_info.man_id = LCM_ID_LEAD;
+ ///Force the use of GD096QQ08B-A end
+ if(pInfo->lcm_info.man_id == LCM_ID_LEAD)
+ {
+#if 0
+ var_screeninfo.xs = 2;
+ #ifdef LCD_ROTATE_180
+ var_screeninfo.ys = 1;
+ #else
+ var_screeninfo.ys = 3;
+ #endif
+ var_screeninfo.width = 128;
+ var_screeninfo.height = 128;
+ var_screeninfo.xe = var_screeninfo.width + var_screeninfo.xs - 1;
+ var_screeninfo.ye = var_screeninfo.height + var_screeninfo.ys - 1;
+
+ pInfo->lcm_info.lcd_item = LEAD_ST7735_128x128;
+ pInfo->lcm_info.name = "LEAD_ST7735_128x128";
+#else
+ var_screeninfo.xs = 0;
+ var_screeninfo.ys = 32;
+ var_screeninfo.width = 80;
+ var_screeninfo.height = 160;
+ var_screeninfo.xe = var_screeninfo.width + var_screeninfo.xs - 1;
+ var_screeninfo.ye = var_screeninfo.height + var_screeninfo.ys - 1;
+
+ pInfo->lcm_info.lcd_item = LEAD_ST7735_128x128_F231E; //7C 89 F0
+ pInfo->lcm_info.name = "LEAD_ST7735_128x128_F231E";
+#endif
+ }
+ else //default s93521a 128*160
+ {
+ pInfo->lcm_info.lcd_item = S93521A_128x128;
+ pInfo->lcm_info.name = "128*128 lcd no found,default S93521A";
+ }
+
+ BOOT_PRINTF(UBOOT_NOTICE, "%s init: lcd man_id = 0x%x, dev_id=0x%x\n", pInfo->lcm_info.name, pInfo->lcm_info.man_id,pInfo->lcm_info.dev_id);
+ return 0;
+}
+
+int update_rect(unsigned char *pBuf, unsigned short uiLeft, unsigned short uiTop, unsigned short uiWidth, unsigned short uiHeight)
+{
+ return update_rect_color(pBuf,uiLeft,uiTop,uiWidth,uiHeight);
+}
+
diff --git a/lynq/MD310EU/boot/common/src/uboot/drivers/lcd/lcd_uboot_logo.h b/lynq/MD310EU/boot/common/src/uboot/drivers/lcd/lcd_uboot_logo.h
new file mode 100755
index 0000000..fe1f311
--- /dev/null
+++ b/lynq/MD310EU/boot/common/src/uboot/drivers/lcd/lcd_uboot_logo.h
@@ -0,0 +1,1602 @@
+const unsigned char gImage_lcd_uboot_logo[25600] = { /* 0X10,0X10,0X00,0XA0,0X00,0X50,0X01,0X1B, */
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X21,0XCA,0X22,0X2E,0X22,0X0E,0X21,0XEC,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X22,0X70,0X22,0XF5,0X22,0XD4,0X22,0X71,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X22,0X92,0X22,0XF5,0X22,0XD4,0X22,0X2F,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X22,0XB2,0X22,0XD4,0X22,0XB3,0X22,0X0E,0X21,0X04,0X21,0X04,0X21,0X04,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X22,0X0D,0X22,0XF5,0X22,0XD4,0X22,0XD4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X22,0X2E,0X22,0XF5,0X22,0XD4,0X22,0X92,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X22,0X50,0X22,0XF5,0X22,0XD4,0X22,0X71,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X21,0X89,0X21,0XEC,0X22,0X0C,0X22,0X0C,0X22,0X0C,0X22,0X0C,0X21,0XA9,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X1A,0X0B,0X1A,0X4D,
+0X1A,0X4D,0X22,0X4D,0X22,0X6D,0X22,0X6D,0X21,0XA8,0X22,0X2C,0X22,0X6D,0X22,0X6D,
+0X22,0X6E,0X22,0X8E,0X22,0X8E,0X22,0X8E,0X22,0X8E,0X22,0X8E,0X21,0XA8,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X21,0XEA,0X22,0X8E,0X22,0X8E,0X22,0X8E,0X22,0X8E,0X22,0X8E,0X22,0X8E,
+0X22,0X8E,0X22,0X8E,0X21,0XA8,0X20,0XE4,0X21,0X46,0X22,0X8E,0X22,0X8E,0X22,0X8E,
+0X22,0X8E,0X22,0X6E,0X22,0X6D,0X22,0X6D,0X1A,0X6D,0X21,0X25,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X1A,0X0B,0X1A,0X2D,
+0X1A,0X2D,0X1A,0X2D,0X1A,0X2D,0X1A,0X0C,0X22,0X0C,0X22,0X0C,0X21,0XA9,0X21,0X47,
+0X21,0XEC,0X21,0XEC,0X21,0XEC,0X21,0XEC,0X21,0XEC,0X21,0XEC,0X21,0XAA,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X22,0X70,0X23,0X15,0X23,0X15,0X23,0X35,0X23,0X35,0X23,0X36,0X22,0X2D,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X1B,0X34,0X1B,0XB7,
+0X1B,0XB7,0X1B,0XD7,0X1B,0XD7,0X1B,0XD7,0X22,0X0B,0X21,0X88,0X1B,0XD6,0X1B,0XF8,
+0X24,0X18,0X24,0X18,0X24,0X18,0X24,0X18,0X24,0X38,0X24,0X38,0X22,0X2C,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X22,0X2B,0X24,0X58,0X24,0X59,0X24,0X59,0X24,0X59,0X24,0X59,0X24,0X59,0X24,0X59,
+0X24,0X59,0X23,0X31,0X21,0X04,0X20,0XE4,0X21,0XEA,0X24,0X38,0X24,0X38,0X24,0X18,
+0X24,0X18,0X24,0X18,0X1C,0X18,0X1B,0XF8,0X1B,0XF8,0X21,0XEA,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X67,0X1B,0X96,0X1B,0X76,
+0X1B,0X76,0X1B,0X76,0X1B,0X56,0X1B,0X56,0X23,0X36,0X23,0X35,0X22,0X4E,0X21,0XCB,
+0X23,0X15,0X22,0XF5,0X22,0XF5,0X21,0X25,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X22,0X91,0X22,0XF5,0X23,0X15,0X23,0X15,0X23,0X35,0X23,0X35,0X21,0XEC,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X13,0X75,0X13,0XB7,
+0X1B,0XB7,0X1B,0XB7,0X1B,0XD7,0X1B,0XD7,0X21,0XCA,0X20,0XE4,0X21,0X88,0X1B,0XD6,
+0X1B,0XF8,0X1C,0X18,0X24,0X18,0X24,0X18,0X24,0X18,0X24,0X18,0X21,0XEA,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X22,0X2B,
+0X24,0X38,0X24,0X59,0X24,0X59,0X24,0X59,0X24,0X38,0X24,0X38,0X24,0X38,0X24,0X38,
+0X23,0X11,0X21,0X04,0X20,0XE4,0X20,0XE4,0X22,0X2B,0X24,0X18,0X24,0X18,0X24,0X18,
+0X24,0X18,0X1B,0XF8,0X1B,0XF8,0X1B,0XF8,0X23,0XF8,0X22,0XAF,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X1A,0X6F,0X1B,0X76,0X1B,0X76,
+0X1B,0X76,0X1B,0X56,0X1B,0X56,0X1B,0X56,0X23,0X35,0X23,0X35,0X22,0X0D,0X22,0X0C,
+0X23,0X15,0X22,0XF5,0X22,0XD4,0X21,0X04,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X22,0XB2,0X22,0XF5,0X23,0X15,0X23,0X15,0X23,0X15,0X23,0X35,0X21,0XCA,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X04,0X1B,0X96,0X13,0X97,
+0X13,0XB7,0X1B,0XB7,0X1B,0XB7,0X1B,0XD7,0X21,0X88,0X20,0XE4,0X20,0XE4,0X22,0X4C,
+0X1B,0XF8,0X1B,0XF8,0X1B,0XF8,0X24,0X18,0X24,0X18,0X24,0X18,0X21,0XA8,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X22,0X2B,0X24,0X38,
+0X24,0X38,0X24,0X38,0X24,0X38,0X24,0X38,0X24,0X38,0X24,0X38,0X24,0X38,0X23,0X11,
+0X21,0X04,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X22,0X6D,0X24,0X18,0X24,0X18,0X1B,0XF8,
+0X1B,0XF8,0X1B,0XF8,0X1B,0XF8,0X23,0XF8,0X1B,0XD7,0X1B,0X75,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X25,0X1B,0X55,0X1B,0X76,0X1B,0X76,
+0X1B,0X56,0X1B,0X56,0X1B,0X56,0X23,0X36,0X23,0X35,0X23,0X35,0X21,0XEB,0X22,0X2E,
+0X22,0XF5,0X22,0XF4,0X22,0XB3,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X22,0XD4,0X22,0XF5,0X22,0XF5,0X23,0X15,0X23,0X15,0X23,0X35,0X21,0X88,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X25,0X1B,0X96,0X1B,0X97,
+0X13,0X97,0X13,0XB7,0X13,0XB7,0X1B,0XB7,0X21,0X46,0X20,0XE4,0X20,0XE4,0X22,0X4D,
+0X23,0XF8,0X1B,0XF8,0X1B,0XF8,0X1B,0XF8,0X1B,0XF8,0X24,0X18,0X21,0X46,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X22,0X2B,0X24,0X18,0X24,0X38,
+0X24,0X38,0X24,0X38,0X24,0X38,0X24,0X38,0X24,0X38,0X24,0X38,0X23,0X53,0X21,0X04,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X22,0XAF,0X1B,0XF8,0X1B,0XF8,0X1B,0XF8,
+0X1B,0XF8,0X23,0XF8,0X1B,0XD7,0X1B,0XD7,0X1B,0XD7,0X1B,0XD7,0X21,0X46,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X1A,0X0C,0X1B,0X76,0X1B,0X76,0X1B,0X56,
+0X1B,0X56,0X1B,0X56,0X23,0X36,0X23,0X35,0X23,0X35,0X23,0X15,0X21,0XAA,0X21,0X04,
+0X21,0X05,0X21,0X05,0X21,0X05,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X04,
+0X22,0XD4,0X22,0XF5,0X22,0XF5,0X22,0XF5,0X23,0X15,0X23,0X15,0X21,0X47,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X67,0X1B,0X76,0X1B,0X96,
+0X1B,0X97,0X13,0X97,0X13,0XB7,0X13,0XB7,0X21,0X04,0X20,0XE4,0X20,0XE4,0X1A,0X8F,
+0X1B,0XD7,0X1B,0XD7,0X23,0XF8,0X1B,0XF8,0X1B,0XF8,0X1B,0XF8,0X21,0X04,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X22,0X2C,0X24,0X18,0X24,0X18,0X24,0X18,
+0X24,0X18,0X24,0X18,0X24,0X18,0X24,0X18,0X24,0X18,0X24,0X18,0X24,0X18,0X23,0XB6,
+0X22,0XAF,0X21,0X66,0X20,0XE4,0X20,0XE4,0X1A,0XF1,0X1B,0XF8,0X1B,0XF8,0X23,0XF8,
+0X1B,0XF8,0X1B,0XD7,0X1B,0XD7,0X1B,0XD7,0X1B,0XD7,0X1B,0XB7,0X1A,0X0B,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X1B,0X13,0X1B,0X76,0X1B,0X56,0X1B,0X56,
+0X1B,0X56,0X23,0X36,0X23,0X35,0X23,0X35,0X23,0X15,0X23,0X15,0X21,0X68,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X26,
+0X22,0XD4,0X22,0XD4,0X22,0XF5,0X22,0XF5,0X23,0X15,0X23,0X15,0X21,0X25,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0XA9,0X1B,0X76,0X1B,0X76,
+0X1B,0X96,0X1B,0X97,0X13,0X97,0X13,0X96,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X1A,0XD0,
+0X1B,0XD7,0X1B,0XD7,0X1B,0XD7,0X1B,0XD7,0X23,0XF8,0X1B,0XB6,0X21,0X04,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X22,0X2C,0X1B,0XF8,0X24,0X18,0X23,0XF7,0X22,0XF1,
+0X21,0XEA,0X21,0X87,0X21,0X46,0X21,0X46,0X21,0X46,0X21,0X87,0X21,0XC9,0X22,0X4D,
+0X1A,0XF1,0X1B,0XB6,0X1A,0XD0,0X21,0X25,0X23,0X32,0X23,0XF8,0X1B,0XF8,0X1B,0XD7,
+0X1B,0XD7,0X1B,0XD7,0X1B,0XD7,0X1B,0XB7,0X1B,0XB7,0X13,0XB7,0X1A,0XB0,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0XA9,0X1B,0X76,0X1B,0X56,0X1B,0X56,0X1B,0X56,
+0X23,0X36,0X23,0X35,0X23,0X35,0X23,0X15,0X23,0X15,0X23,0X15,0X21,0X46,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X47,
+0X22,0XB4,0X22,0XD4,0X22,0XD4,0X22,0XF5,0X22,0XF5,0X22,0XF5,0X21,0X04,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X19,0XCA,0X1B,0X76,0X1B,0X76,
+0X1B,0X76,0X1B,0X96,0X1B,0X96,0X1B,0X34,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X1B,0X12,
+0X1B,0XB7,0X1B,0XD7,0X1B,0XD7,0X1B,0XD7,0X1B,0XD7,0X1B,0X75,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X22,0X2C,0X1B,0XF8,0X1B,0XF8,0X1B,0X32,0X21,0X66,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X21,0X25,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X21,0X04,0X21,0XC9,0X22,0XD0,0X1B,0X96,0X1B,0XD7,0X1B,0XD7,0X1B,0XD7,
+0X1B,0XD7,0X1B,0XB7,0X1B,0XB7,0X13,0XB7,0X13,0XB7,0X13,0XB7,0X1B,0X55,0X21,0X04,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X1A,0XB1,0X1B,0X56,0X1B,0X56,0X1B,0X56,0X23,0X36,
+0X23,0X35,0X23,0X35,0X23,0X15,0X23,0X15,0X23,0X15,0X22,0XF5,0X21,0X25,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X69,
+0X22,0XB4,0X22,0XB4,0X22,0XD4,0X22,0XD5,0X22,0XF5,0X22,0XD4,0X21,0X26,0X21,0X26,
+0X21,0X26,0X21,0X26,0X21,0X26,0X21,0X46,0X21,0X46,0X1A,0X2D,0X1B,0X56,0X1B,0X76,
+0X1B,0X76,0X1B,0X76,0X1B,0X76,0X1A,0XF2,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X1B,0X34,
+0X13,0XB7,0X1B,0XB7,0X1B,0XB7,0X1B,0XD7,0X1B,0XD7,0X1B,0X33,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X22,0X2C,0X23,0XD7,0X23,0XF8,0X23,0X74,0X22,0X2C,0X22,0X6E,0X22,0XD0,
+0X23,0X53,0X1B,0X54,0X21,0XEA,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X1B,0X95,0X1B,0XD7,0X1B,0XD7,0X1B,0XB7,
+0X1B,0XB7,0X13,0XB7,0X13,0XB7,0X13,0XB7,0X13,0X97,0X1B,0X97,0X1B,0X96,0X21,0X67,
+0X20,0XE4,0X20,0XE4,0X21,0X46,0X1B,0X56,0X1B,0X56,0X1B,0X56,0X23,0X36,0X23,0X35,
+0X23,0X35,0X23,0X15,0X23,0X15,0X23,0X15,0X22,0XF5,0X22,0XD4,0X21,0X04,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X8A,
+0X22,0XB4,0X22,0XB4,0X22,0XD4,0X22,0XD4,0X22,0XD5,0X22,0XF5,0X22,0XF5,0X23,0X15,
+0X23,0X15,0X23,0X15,0X23,0X35,0X23,0X35,0X23,0X36,0X1B,0X56,0X1B,0X56,0X1B,0X56,
+0X1B,0X56,0X1B,0X76,0X1B,0X76,0X1A,0XB1,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X13,0X75,
+0X13,0XB7,0X13,0XB7,0X13,0XB7,0X1B,0XB7,0X1B,0XB7,0X1A,0XF1,0X20,0XE4,0X20,0XE4,
+0X22,0X2C,0X1B,0X54,0X22,0X6D,0X21,0XA9,0X21,0X66,0X21,0X46,0X21,0X46,0X21,0X66,
+0X21,0X67,0X21,0X04,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X04,0X1B,0XB7,0X1B,0XB7,0X1B,0XB7,0X13,0XB7,
+0X13,0XB7,0X13,0XB7,0X13,0X97,0X1B,0X97,0X1B,0X96,0X1B,0X96,0X1B,0X76,0X1A,0X0C,
+0X20,0XE4,0X20,0XE4,0X1A,0X4E,0X1B,0X56,0X1B,0X56,0X23,0X36,0X23,0X35,0X23,0X35,
+0X23,0X15,0X23,0X15,0X23,0X15,0X22,0XF5,0X22,0XF5,0X22,0XB3,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0XAB,
+0X22,0X94,0X22,0XB4,0X22,0XB4,0X22,0XD4,0X22,0XD4,0X22,0XF5,0X22,0XF5,0X22,0XF5,
+0X23,0X15,0X23,0X15,0X23,0X15,0X23,0X35,0X23,0X35,0X23,0X36,0X1B,0X56,0X1B,0X56,
+0X1B,0X56,0X1B,0X56,0X1B,0X76,0X1A,0X6F,0X20,0XE4,0X20,0XE4,0X21,0X04,0X1B,0X76,
+0X1B,0X97,0X13,0X97,0X13,0XB7,0X13,0XB7,0X13,0XB7,0X1A,0X8F,0X20,0XE4,0X21,0XC9,
+0X21,0XCA,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X25,0X1B,0XB7,0X13,0XB7,0X13,0XB7,0X13,0XB7,
+0X13,0X97,0X1B,0X13,0X1B,0X96,0X1B,0X96,0X1B,0X76,0X1B,0X76,0X1B,0X76,0X1A,0XB1,
+0X20,0XE4,0X21,0X04,0X1B,0X35,0X1B,0X56,0X23,0X36,0X23,0X35,0X23,0X35,0X22,0XB1,
+0X23,0X15,0X23,0X15,0X22,0XF5,0X22,0XF5,0X22,0XF5,0X22,0X91,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0XCD,
+0X22,0X94,0X22,0X94,0X22,0XB4,0X22,0XB4,0X22,0XD4,0X22,0XD4,0X22,0XF5,0X22,0XF5,
+0X22,0XF5,0X23,0X15,0X23,0X15,0X23,0X15,0X23,0X35,0X23,0X35,0X23,0X35,0X1B,0X36,
+0X1B,0X56,0X1B,0X56,0X1B,0X56,0X1A,0X2D,0X20,0XE4,0X20,0XE4,0X21,0X25,0X1B,0X76,
+0X1B,0X96,0X1B,0X96,0X1B,0X97,0X13,0X97,0X13,0XB7,0X1A,0X4E,0X21,0X46,0X21,0X46,
+0X21,0X25,0X21,0X25,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X67,0X13,0XB7,0X13,0XB7,0X13,0X97,0X1B,0X97,
+0X1B,0X97,0X1A,0X90,0X1A,0XF2,0X1B,0X76,0X1B,0X76,0X1B,0X76,0X1B,0X76,0X1B,0X55,
+0X21,0X04,0X21,0XEB,0X1B,0X56,0X23,0X36,0X23,0X35,0X23,0X35,0X23,0X15,0X21,0XCB,
+0X23,0X15,0X22,0XF5,0X22,0XF5,0X22,0XF5,0X22,0XD4,0X22,0X50,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0XEE,
+0X22,0X73,0X22,0X94,0X22,0X94,0X22,0XB4,0X22,0XB4,0X22,0XD4,0X22,0XD4,0X22,0XD5,
+0X22,0XF5,0X22,0XF5,0X23,0X15,0X23,0X15,0X23,0X15,0X23,0X35,0X23,0X35,0X23,0X35,
+0X23,0X36,0X1B,0X56,0X1B,0X56,0X19,0XEC,0X20,0XE4,0X20,0XE4,0X21,0X67,0X1B,0X76,
+0X1B,0X76,0X1B,0X76,0X1B,0X96,0X1B,0X96,0X1B,0X97,0X1A,0X0C,0X1A,0X2C,0X13,0X97,
+0X13,0XB7,0X13,0XB7,0X13,0X76,0X1A,0XF2,0X1A,0X2C,0X21,0X46,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X19,0XA8,0X1B,0X97,0X1B,0X97,0X1B,0X96,0X1B,0X96,
+0X1B,0X76,0X1A,0X4E,0X1A,0X4D,0X1B,0X76,0X1B,0X76,0X1B,0X56,0X1B,0X56,0X1B,0X56,
+0X21,0X88,0X22,0XD2,0X23,0X35,0X23,0X35,0X23,0X35,0X23,0X15,0X22,0X70,0X21,0XAA,
+0X22,0XF5,0X22,0XF5,0X22,0XF5,0X22,0XD4,0X22,0XD4,0X22,0X0E,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X22,0X0F,
+0X22,0X73,0X22,0X93,0X22,0X94,0X22,0X94,0X22,0XB4,0X22,0XB4,0X22,0XD4,0X22,0XD4,
+0X22,0XD5,0X22,0XF5,0X22,0XF5,0X22,0XF5,0X23,0X15,0X23,0X15,0X23,0X15,0X23,0X35,
+0X23,0X35,0X23,0X36,0X1B,0X56,0X21,0XCA,0X20,0XE4,0X20,0XE4,0X21,0X88,0X1B,0X76,
+0X1B,0X76,0X1B,0X76,0X1B,0X76,0X1B,0X76,0X1B,0X76,0X19,0XCA,0X20,0XE4,0X1A,0X8F,
+0X1B,0X97,0X13,0X97,0X13,0X97,0X13,0X97,0X13,0X97,0X13,0X96,0X1A,0XB0,0X21,0X46,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X19,0XCA,0X1B,0X96,0X1B,0X76,0X1B,0X76,0X1B,0X76,
+0X1B,0X76,0X1A,0X2C,0X21,0X88,0X1B,0X56,0X1B,0X56,0X1B,0X56,0X1B,0X56,0X1B,0X56,
+0X22,0XB1,0X23,0X35,0X23,0X35,0X23,0X15,0X23,0X15,0X23,0X15,0X21,0X68,0X21,0XCB,
+0X22,0XF5,0X22,0XF5,0X22,0XD4,0X22,0XD4,0X22,0XB4,0X21,0XED,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X22,0X11,
+0X22,0X73,0X22,0X73,0X22,0X93,0X22,0X94,0X22,0X94,0X21,0XED,0X21,0X68,0X21,0X89,
+0X21,0X89,0X21,0X89,0X21,0X89,0X21,0X89,0X21,0X89,0X22,0XF4,0X23,0X15,0X23,0X15,
+0X23,0X35,0X23,0X35,0X23,0X35,0X21,0X88,0X20,0XE4,0X20,0XE4,0X21,0XCA,0X1B,0X56,
+0X1B,0X56,0X1B,0X76,0X1B,0X76,0X1B,0X76,0X1B,0X76,0X21,0X88,0X20,0XE4,0X21,0X04,
+0X1A,0XB0,0X1B,0X96,0X1B,0X96,0X1B,0X96,0X1B,0X97,0X1B,0X97,0X1B,0X97,0X1B,0X76,
+0X1A,0X0B,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X1A,0X0C,0X1B,0X76,0X1B,0X76,0X1B,0X76,0X1B,0X76,
+0X1B,0X76,0X19,0XEB,0X21,0X04,0X1B,0X35,0X1B,0X56,0X1B,0X56,0X23,0X36,0X23,0X35,
+0X23,0X35,0X23,0X35,0X23,0X15,0X23,0X15,0X23,0X15,0X22,0X91,0X20,0XE4,0X22,0X0D,
+0X22,0XD5,0X22,0XD4,0X22,0XD4,0X22,0XB4,0X22,0XB4,0X21,0XCB,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X22,0X32,
+0X22,0X53,0X22,0X73,0X22,0X73,0X22,0X93,0X22,0X94,0X21,0X69,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X05,0X22,0XF5,0X23,0X15,0X23,0X15,
+0X23,0X15,0X23,0X15,0X23,0X35,0X21,0X47,0X20,0XE4,0X20,0XE4,0X21,0XEB,0X1B,0X56,
+0X1B,0X56,0X1B,0X56,0X1B,0X56,0X1B,0X56,0X1B,0X76,0X21,0X67,0X20,0XE4,0X20,0XE4,
+0X21,0X04,0X1A,0XD2,0X1B,0X76,0X1B,0X76,0X1B,0X76,0X1B,0X76,0X1B,0X76,0X1B,0X76,
+0X1B,0X96,0X1A,0XB0,0X21,0X04,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X1A,0X2D,0X1B,0X76,0X1B,0X76,0X1B,0X56,0X1B,0X56,
+0X1B,0X56,0X21,0XA9,0X20,0XE4,0X22,0X91,0X23,0X36,0X23,0X35,0X23,0X35,0X23,0X35,
+0X23,0X15,0X23,0X15,0X23,0X15,0X23,0X15,0X22,0XF5,0X21,0XAA,0X20,0XE4,0X22,0X2E,
+0X22,0XD4,0X22,0XD4,0X22,0XB4,0X22,0XB4,0X22,0X94,0X21,0X8A,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X04,0X22,0X33,
+0X22,0X53,0X22,0X53,0X22,0X73,0X22,0X73,0X22,0X93,0X21,0X47,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X46,0X22,0XF5,0X22,0XF5,0X22,0XF5,
+0X23,0X15,0X23,0X15,0X23,0X15,0X21,0X25,0X20,0XE4,0X20,0XE4,0X22,0X2D,0X23,0X36,
+0X1B,0X56,0X1B,0X56,0X1B,0X56,0X1B,0X56,0X1B,0X56,0X21,0X25,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X21,0X25,0X1A,0XF3,0X1B,0X76,0X1B,0X76,0X1B,0X76,0X1B,0X76,0X1B,0X76,
+0X1B,0X76,0X1B,0X76,0X1A,0XF3,0X21,0X25,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X1A,0X6F,0X1B,0X56,0X1B,0X56,0X1B,0X56,0X1B,0X56,
+0X1B,0X56,0X21,0X88,0X20,0XE4,0X21,0XEC,0X23,0X35,0X23,0X35,0X23,0X35,0X23,0X15,
+0X23,0X15,0X23,0X15,0X22,0XF5,0X22,0XF5,0X22,0XB3,0X21,0X04,0X20,0XE4,0X22,0X50,
+0X22,0XD4,0X22,0XB4,0X22,0XB4,0X22,0X94,0X22,0X94,0X21,0X68,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X05,0X22,0X33,
+0X22,0X33,0X22,0X53,0X22,0X53,0X22,0X73,0X22,0X73,0X21,0X26,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X67,0X22,0XD5,0X22,0XF5,0X22,0XF5,
+0X22,0XF5,0X23,0X15,0X22,0XF4,0X21,0X04,0X20,0XE4,0X20,0XE4,0X22,0X4E,0X23,0X35,
+0X23,0X35,0X23,0X36,0X23,0X36,0X1B,0X56,0X1B,0X35,0X21,0X04,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X21,0X25,0X1B,0X14,0X1B,0X56,0X1B,0X56,0X1B,0X76,0X1B,0X76,
+0X1B,0X76,0X1B,0X76,0X1B,0X76,0X1B,0X13,0X21,0X46,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X1A,0X90,0X1B,0X56,0X1B,0X56,0X1B,0X56,0X23,0X36,
+0X23,0X36,0X21,0X46,0X20,0XE4,0X21,0X47,0X23,0X35,0X23,0X15,0X23,0X15,0X23,0X15,
+0X23,0X15,0X22,0XF5,0X22,0XF5,0X22,0XF5,0X21,0XCB,0X20,0XE4,0X20,0XE4,0X22,0X71,
+0X22,0XB4,0X22,0XB4,0X22,0X94,0X22,0X94,0X22,0X93,0X21,0X47,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X26,0X22,0X13,
+0X22,0X33,0X22,0X33,0X22,0X53,0X22,0X53,0X22,0X73,0X21,0X04,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X89,0X22,0XD4,0X22,0XD4,0X22,0XF5,
+0X22,0XF5,0X22,0XF5,0X22,0XD3,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X22,0X70,0X23,0X15,
+0X23,0X35,0X23,0X35,0X23,0X35,0X23,0X35,0X23,0X14,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X46,0X1B,0X14,0X1B,0X56,0X1B,0X56,0X1B,0X56,
+0X1B,0X56,0X1B,0X56,0X1B,0X56,0X1B,0X56,0X1B,0X13,0X21,0X26,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X22,0XD2,0X23,0X36,0X23,0X36,0X23,0X35,0X23,0X35,
+0X23,0X35,0X21,0X25,0X20,0XE4,0X20,0XE4,0X22,0XD3,0X23,0X15,0X23,0X15,0X22,0XF5,
+0X22,0XF5,0X22,0XF5,0X22,0XF5,0X22,0XB3,0X21,0X04,0X20,0XE4,0X20,0XE4,0X22,0X93,
+0X22,0XB4,0X22,0X94,0X22,0X94,0X22,0X73,0X22,0X73,0X21,0X26,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X28,0X22,0X12,
+0X22,0X13,0X22,0X33,0X22,0X33,0X22,0X53,0X22,0X52,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0XAA,0X22,0XB4,0X22,0XD4,0X22,0XD4,
+0X22,0XD5,0X22,0XF5,0X22,0X92,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X22,0X91,0X23,0X15,
+0X23,0X15,0X23,0X15,0X23,0X35,0X23,0X35,0X22,0XD2,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X67,0X1B,0X35,0X1B,0X56,0X1B,0X56,
+0X1B,0X56,0X1B,0X56,0X1B,0X56,0X1B,0X56,0X1B,0X56,0X1A,0XF3,0X21,0X25,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X22,0XF3,0X23,0X35,0X23,0X35,0X23,0X35,0X23,0X35,
+0X23,0X15,0X21,0X04,0X20,0XE4,0X20,0XE4,0X22,0X4F,0X22,0XF5,0X22,0XF5,0X22,0XF5,
+0X22,0XF5,0X22,0XD5,0X22,0XD4,0X21,0XED,0X20,0XE4,0X20,0XE4,0X21,0X04,0X22,0X93,
+0X22,0X94,0X22,0X94,0X22,0X73,0X22,0X73,0X22,0X73,0X21,0X04,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X49,0X22,0X12,
+0X22,0X12,0X22,0X13,0X22,0X33,0X22,0X33,0X22,0X11,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0XCC,0X22,0XB4,0X22,0XB4,0X22,0XD4,
+0X22,0XD4,0X22,0XD4,0X22,0X50,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X22,0XB3,0X23,0X15,
+0X23,0X15,0X23,0X15,0X23,0X15,0X23,0X15,0X22,0X91,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X88,0X23,0X35,0X23,0X35,
+0X23,0X36,0X23,0X36,0X23,0X35,0X23,0X35,0X23,0X35,0X23,0X35,0X22,0XD2,0X21,0X05,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X23,0X14,0X23,0X35,0X23,0X15,0X23,0X15,0X23,0X15,
+0X22,0XF4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0XAA,0X22,0XF5,0X22,0XF5,0X22,0XD5,
+0X22,0XD4,0X22,0XD4,0X22,0XB4,0X21,0X25,0X20,0XE4,0X20,0XE4,0X21,0X25,0X22,0X94,
+0X22,0X94,0X22,0X73,0X22,0X73,0X22,0X73,0X22,0X52,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X6A,0X22,0X12,
+0X22,0X12,0X22,0X12,0X22,0X13,0X22,0X33,0X21,0XF0,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0XED,0X22,0X94,0X22,0XB4,0X22,0XB4,
+0X22,0XB4,0X22,0XD4,0X22,0X2E,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X22,0XD4,0X22,0XF5,
+0X22,0XF5,0X22,0XF5,0X23,0X15,0X23,0X15,0X22,0X4F,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0XAA,0X23,0X35,
+0X23,0X35,0X23,0X35,0X23,0X35,0X23,0X35,0X23,0X35,0X23,0X35,0X23,0X35,0X22,0X91,
+0X21,0X04,0X20,0XE4,0X21,0X04,0X23,0X15,0X23,0X15,0X23,0X15,0X23,0X15,0X23,0X15,
+0X22,0XB2,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X25,0X22,0XD4,0X22,0XD4,0X22,0XD4,
+0X22,0XD4,0X22,0XB4,0X22,0X0E,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X47,0X22,0X73,
+0X22,0X73,0X22,0X73,0X22,0X53,0X22,0X53,0X22,0X11,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X8B,0X22,0X12,
+0X22,0X12,0X22,0X12,0X22,0X12,0X22,0X13,0X21,0XCE,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X22,0X0E,0X22,0X94,0X22,0X94,0X22,0XB4,
+0X22,0XB4,0X22,0XB4,0X21,0XED,0X20,0XE4,0X20,0XE4,0X21,0X04,0X22,0XD4,0X22,0XF5,
+0X22,0XF5,0X22,0XF5,0X22,0XF5,0X22,0XF5,0X22,0X0D,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0XEB,
+0X23,0X15,0X23,0X15,0X23,0X15,0X23,0X15,0X23,0X15,0X23,0X15,0X23,0X15,0X23,0X15,
+0X22,0X70,0X21,0X04,0X21,0X26,0X23,0X15,0X23,0X15,0X22,0XF5,0X22,0XF5,0X22,0XF5,
+0X22,0X71,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X22,0X92,0X22,0XD4,0X22,0XB4,
+0X22,0XB4,0X22,0XB4,0X21,0X47,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X68,0X22,0X73,
+0X22,0X73,0X22,0X53,0X22,0X53,0X22,0X33,0X21,0XEF,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X48,0X21,0X8B,
+0X21,0X8B,0X21,0X8B,0X21,0X8B,0X21,0X8B,0X21,0X49,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X8A,0X21,0XCC,0X21,0XCC,0X21,0XCC,
+0X21,0XCC,0X21,0XCC,0X21,0X68,0X20,0XE4,0X20,0XE4,0X21,0X04,0X21,0XAB,0X21,0XCB,
+0X21,0XCB,0X21,0XCB,0X21,0XCB,0X21,0XCB,0X21,0X67,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X21,0XA9,0X21,0XCB,0X21,0XCB,0X21,0XCB,0X21,0XCB,0X21,0XCB,0X21,0XCB,0X21,0XCB,
+0X21,0XCB,0X21,0X46,0X21,0X25,0X21,0XCB,0X21,0XCB,0X21,0XCB,0X21,0XCB,0X21,0XCB,
+0X21,0X89,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X68,0X21,0XAB,0X21,0XAB,
+0X21,0XAB,0X21,0X8A,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X21,0X26,0X21,0X8A,
+0X21,0X8A,0X21,0X8A,0X21,0X8A,0X21,0X6A,0X21,0X48,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,0X20,0XE4,
+};
diff --git a/lynq/MD310EU/boot/common/src/uboot/drivers/peripheral/peripheral.c b/lynq/MD310EU/boot/common/src/uboot/drivers/peripheral/peripheral.c
new file mode 100644
index 0000000..f3fdd0a
--- /dev/null
+++ b/lynq/MD310EU/boot/common/src/uboot/drivers/peripheral/peripheral.c
@@ -0,0 +1,342 @@
+/*******************************************************************************
+ * Copyright (C) 2016, ZIXC Corporation.
+ *
+ * File Name: hal_led.c
+ * File Mark:
+ * Description: This file contains the hal layer routines for i2c driver.
+ * Others:
+ * Version: V1.0
+ * Author: yx
+ * Date: 2014-07-03
+ * History 1:
+ * Date:
+ * Version:
+ * Author:
+ * Modification:
+ * History 2:
+ ******************************************************************************/
+
+/****************************************************************************
+* Include files
+****************************************************************************/
+
+//#include "drvs_general.h"
+//#include "drvs_i2c.h"
+#include <linux/types.h>
+#include <zx234290.h>
+#include <led.h>
+#include "common.h"
+//#include <gpio.h>
+
+/****************************************************************************
+* Local Macros
+****************************************************************************/
+#define SD1_IO_1V8_EN 0x13c830
+#define REG32(x) (*(volatile u32*)(x))
+
+/****************************************************************************
+* Local Types
+****************************************************************************/
+
+/****************************************************************************
+* Local Constants
+****************************************************************************/
+
+
+/****************************************************************************
+ * Function: peripheral_init
+ * Description: init the peripheral include pmu\charger\led\lcd etc.
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ * Returns:
+ * int
+ *
+ *
+ * Others:
+ ***************************************************************************/
+int peripheral_init(void)
+{
+ int ret = 0;
+ ret = power_init();
+
+/*led*/
+
+/*lcd*/
+
+ /* jtagµ÷ÊÔ */
+#if 0
+ jtag_init();
+#endif
+
+#if 0//ref need ldo8 2.85V
+/*set mmc io and vccQ*/
+ zx234290_set_ldo8_voltage(VLDOD_1_800);
+ zx234290_set_ldo8_sleep_voltage(VLDOD_1_800);
+ zx234290_ldo8_enable(1);
+
+ REG32(SD1_IO_1V8_EN) |=(1<<1);
+#endif
+ zx234290_set_ldo10_voltage_2_800();
+ zx234502_charger_enable();
+
+ return ret ;
+}
+
+/****************************************************************************
+ * Function: Show_UpdateWait
+ * Description: show the logo when the local updataing through lcd/led etc.
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ *
+ * Returns:
+ * int
+ *
+ *
+ * Others:
+ ***************************************************************************/
+int Show_UpdateWait(void)
+{
+ int ret = 0;
+/*led*/
+
+/*lcd*/
+ ;
+ return ret;
+}
+
+/****************************************************************************
+ * Function: Show_UpdateSucc
+ * Description: show the logo when the local updataing through lcd/led etc.
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ *
+ * Returns:
+ * int
+ *
+ *
+ * Others:
+ ***************************************************************************/
+int Show_UpdateSucc(void)
+{
+ int ret = 0;
+/*led*/
+
+/*lcd*/
+ ;
+ return ret;
+}
+
+/****************************************************************************
+ * Function: Show_UpdateFail
+ * Description: show the logo when the local updataing through lcd/led etc.
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ *
+ * Returns:
+ * int
+ *
+ *
+ * Others:
+ ***************************************************************************/
+int Show_UpdateFail(void)
+{
+ int ret = 0;
+/*led*/
+
+/*lcd*/
+ ;
+ return ret;
+}
+
+/****************************************************************************
+ * Function: Show_LowPower
+ * Description: show the logo when the local updataing through lcd/led etc.
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ *
+ * Returns:
+ * int
+ *
+ *
+ * Others:
+ ***************************************************************************/
+int Show_LowPower(void)
+{
+ int ret = 0;
+/*led*/
+
+/*lcd*/
+ ;
+ return ret;
+}
+
+/****************************************************************************
+ * Function: Show_No_Battery
+ * Description: show the logo when the local updataing through lcd/led etc.
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ *
+ * Returns:
+ * int
+ *
+ *
+ * Others:
+ ***************************************************************************/
+int Show_No_Battery(void)
+{
+ int ret = 0;
+/*led*/
+
+/*lcd*/
+ ;
+ return ret;
+}
+
+/****************************************************************************
+ * Function: Show_PowerOn_Normal
+ * Description: show the logo when the local updataing through lcd/led etc.
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ *
+ * Returns:
+ * int
+ *
+ *
+ * Others:
+ ***************************************************************************/
+int Show_PowerOn_Normal(void)
+{
+ int ret = 0;
+/*led*/
+
+/*lcd*/
+ ;
+ return ret;
+}
+
+/****************************************************************************
+ * Function: Show_PowerOn_Normal
+ * Description: show the logo when the local updataing through lcd/led etc.
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ *
+ * Returns:
+ * int
+ *
+ *
+ * Others:
+ ***************************************************************************/
+
+int Show_PowerOn_Fota(void)
+{
+ int ret = 0;
+/*led*/
+
+/*lcd*/
+ ;
+ return ret;
+}
+
+
+/****************************************************************************
+ * Function: Show_Charging
+ * Description: show the logo when the local updataing through lcd/led etc.
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ *
+ * Returns:
+ * int
+ *
+ *
+ * Others:
+ ***************************************************************************/
+int Show_Charging(void)
+{
+ int ret = 0;
+/*led*/
+
+/*lcd*/
+ ;
+ return ret;
+}
+
+/****************************************************************************
+ * Function: zx_get_vbat_voltage
+ * Description: .
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ *
+ * Returns:
+ * int
+ *
+ *
+ * Others:
+ ***************************************************************************/
+int zx_get_vbat_voltage(void)
+{
+ // int ret = 0;
+
+ return zx234290_get_adc1_voltage();
+}
+
+/****************************************************************************
+ * Function: zx_get_battery_Status
+ * Description:
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ *
+ * Returns:
+ * int
+ *
+ *
+ * Others:
+ ***************************************************************************/
+unsigned int zx_get_battery_Status(void)
+{
+ int ret = 0;
+ int boost_flag = 1;
+
+ zx234502_battery_status(&boost_flag);
+ if(boost_flag){
+ return 0;/*battery uninstall*/
+ }
+ else
+ return 1;/*battery install*/
+}
+
+
+
+
diff --git a/lynq/MD310EU/boot/common/src/uboot/drivers/power/zx234290.c b/lynq/MD310EU/boot/common/src/uboot/drivers/power/zx234290.c
new file mode 100644
index 0000000..7b2c308
--- /dev/null
+++ b/lynq/MD310EU/boot/common/src/uboot/drivers/power/zx234290.c
@@ -0,0 +1,900 @@
+/*********************************************************************
+ Copyright 2016 by ZIXC Corporation.
+*
+* FileName:: zx234290.c
+* File Mark:
+* Description:
+* Others:
+* Version:
+* Author:
+* Date:
+
+* History 1:
+* Date:
+* Version:
+* Author:
+* Modification:
+* History 2:
+**********************************************************************/
+
+#include <common.h>
+#include <errno.h>
+#include <command.h>
+#include <malloc.h>
+#include <asm/io.h>
+#include <boot_mode.h>
+#include <i2c.h>
+#include <drvs_gpio.h>
+#include <power.h>
+#include <zx234290.h>
+#include <zx234502.h>
+
+
+int zx234290_write_flag(UINT8 val);
+
+#define PIN_PSHOLD_NUM GPIO24
+#define GPIO_PSHOLD_FUNC_SEL GPIO24_GPIO24
+
+static boot_reason_t s_boot_reason = UNKNOWN_BOOT_REASON;
+
+/*******************************************************************************
+ * Function: zx234290_i2c_read_reg
+ * Description:
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ * Returns:
+ *
+ *
+ * Others:
+ ********************************************************************************/
+int zx234290_i2c_read_reg(ushort reg, uchar *val)
+{
+ return i2c_read(0, ZX234290_I2C_SLAVE_ADDR, reg, 8, val, 1);
+}
+
+/*******************************************************************************
+ * Function: zx234290_i2c_write_reg
+ * Description:
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ * Returns:
+ *
+ *
+ * Others:
+ ********************************************************************************/
+int zx234290_i2c_write_reg(ushort reg, uchar *val)
+{
+ return i2c_write(0, ZX234290_I2C_SLAVE_ADDR, reg, 8, val, 1);
+}
+
+int zx234290_reset_flag(void)
+{
+#if 0
+ int ret = 0;
+ int val = 0;
+
+ /*
+ int val = 0xff;
+ ret = zx234290_i2c_write_reg(0x0f,&val);
+ */
+ ret = zx234290_i2c_read_reg(BUCK_MODE_CONTROL0, &val);
+ val &= (~0x30);
+ ret += zx234290_i2c_write_reg(BUCK_MODE_CONTROL0, &val);
+
+ return ret;
+#else
+ return zx234290_write_flag(ZX234290_USER_RST_UNDEFINE);
+#endif
+}
+
+int zx234290_write_flag(UINT8 val)
+{
+#if 0
+ int ret = 0;
+ int tmp = 0;
+
+ if(val > 3)
+ {
+ return -1;
+ }
+ ret = zx234290_i2c_read_reg(BUCK_MODE_CONTROL0, &tmp);
+ tmp &= (~0x30);
+ tmp |= (val<<4);
+ ret += zx234290_i2c_write_reg(BUCK_MODE_CONTROL0, &tmp);
+
+ return ret;
+#else
+ int ret = 0;
+ uchar tmp = 0;
+
+ /*
+ ret = zx234290_i2c_read_reg(ZX234290_REG_ADDR_USER_RESERVED, &tmp);
+ tmp &= ~(0x03<<2);
+ tmp |= (val<<2);
+ */
+ tmp = val;
+ ret |= zx234290_i2c_write_reg(ZX234290_REG_USER, &tmp);
+
+ return ret;
+#endif
+}
+
+/*******************************************************************************
+ * Function: zx234290_get_boot_reason
+ * Description:
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ * Returns:
+ *
+ *
+ * Others:
+ ********************************************************************************/
+int zx234290_get_boot_reason(boot_reason_t *boot_reason)
+{
+ if (boot_reason == NULL)
+ {
+ return -1;
+ }
+
+ if(s_boot_reason == UNKNOWN_BOOT_REASON)
+ {
+ return -EIO;
+ }
+ *boot_reason = s_boot_reason;
+
+ return 0;
+}
+
+/*******************************************************************************
+ * Function: zx234290_get_boot_reason
+ * Description:
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ * Returns:
+ *
+ *
+ * Others:
+ ********************************************************************************/
+static int zx234290_get_boot_reason_prev(void)
+{
+ int ret = 0;
+ uchar reg_user = ZX234290_USER_RST_UNDEFINE;
+ uchar reg_start = 0;
+ uchar reg_write = 0;
+
+ /* ¶Á²¢ÇåSTART_UP_STATUS */
+ ret = zx234290_i2c_read_reg(START_UP_STATUS, ®_start);
+ if( ret != 0 )
+ {
+ return -EIO;
+ }
+ printf( " [%s][START_UP_STATUS = 0x%X] ...\n", __FUNCTION__, reg_start);
+
+ /* ¶Á²¢ÇåZX234290_REG_USER */
+ ret = zx234290_i2c_read_reg(ZX234290_REG_USER, ®_user);
+ if(reg_user != ZX234290_USER_RST_UNDEFINE)
+ {
+ reg_write = ZX234290_USER_RST_UNDEFINE; /* write back the reset value */
+
+ ret |= zx234290_i2c_write_reg(ZX234290_REG_USER, ®_write);
+ }
+ if ( ret != 0 )
+ {
+ return -EIO;
+ }
+ printf( " [%s][USER_RESERVED = 0x%X] ...\n", __FUNCTION__, reg_user);
+
+ /* 1. Õý³£¿ª»ú¼ì²â */
+ if( reg_start & PWR_ON_START_UP )
+ /* ÏµÍ³ÖØÆô,Èç¹ûZX234290_REG_USER²»Îª³õÖµ£¬ÔòÎªÖØÆô */
+ {
+ s_boot_reason = RB_POWER_KEY;
+ return 0;
+ }
+ else if( reg_start & PS_HOLD_START_UP )
+ {
+ s_boot_reason = RB_USB_INSERT;
+
+ /* ZX234290_REG_USERΪÉϵ縴λֵ»ò·Ç·¨Öµ */
+ return 0;
+ }
+ else if( reg_start & RTC_ALARM_START_UP )
+ /* 2. Õý³£¿ª»ú¼ì²â */
+ {
+ uchar rtc_ctrl2 = 0xF0;
+
+ ret = zx234290_i2c_read_reg(ZX234290_REG_RTC_CONTROL2, &rtc_ctrl2);
+ printf( " [%s][RTC_CONTROL2 = 0x%X]\n", __FUNCTION__, rtc_ctrl2);
+
+ if (rtc_ctrl2 & RTC_CONTROL2_AF) {
+ s_boot_reason = RB_RTC;
+ } else if (rtc_ctrl2 & RTC_CONTROL2_TF) {
+ s_boot_reason = RB_RESET_NOMAL;
+ }
+
+ return ret;
+ }
+ else if( reg_start & LLP_RESTART_UP )
+ {
+ s_boot_reason = RB_POWER_KEY_LONG;
+ return 0;
+ }
+ /* reg_startΪ0£¬¼´reg_start¶ÁÇåÖ®ºóδµôµç£¬¼´ÏµÍ³ÖØÆô */
+
+ /* 2. ÖØÆô¼ì²â */
+
+ /* ÏµÍ³ÖØÆô,Èç¹ûZX234290_REG_USER²»Îª³õÖµ£¬ÔòÎªÖØÆô */
+ switch (reg_user)
+ {
+ case ZX234290_USER_RST_TO_NORMAL:
+ {
+ s_boot_reason = RB_RESET_NOMAL;
+ return 0;
+ }
+
+ case ZX234290_USER_RST_TO_CHARGER:
+ {
+ s_boot_reason = RB_RESET_USB_OFF;
+ return 0;
+ }
+
+ case ZX234290_USER_RST_TO_ALARM:
+ {
+ s_boot_reason = RB_RESET_ALARM;
+ return 0;
+ }
+
+ /* ZX234290_REG_USERΪÉϵ縴λֵ»ò·Ç·¨Öµ */
+ default:
+ {
+ if ((reg_user & 0xF0) == ZX234290_WDT_RST_FLAG) {
+ s_boot_reason = reg_user;
+ return 0;
+ }
+ break;
+ }
+ }
+
+ s_boot_reason = RB_USB_INSERT;
+
+ return 0;
+}
+
+/*******************************************************************************
+ * Function: zx234290_ps_hold_pull_on
+ * Description:
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ * Returns:
+ *
+ *
+ * Others:
+ ********************************************************************************/
+int zx234290_ps_hold_pull_on(void)
+{
+ zDrvGpio_PullUpDown(PIN_PSHOLD_NUM, 0);
+ //gpio_set_reuse(PS_HOLD_PIN, 0);
+ zDrvGpio_SetFunc(PIN_PSHOLD_NUM,GPIO_PSHOLD_FUNC_SEL);
+ zDrvGpio_SetDirection(PIN_PSHOLD_NUM,GPIO_IN); //set output;v3 gpio24(pshold) direction is reverse
+ zDrvGpio_SetOutputValue(PIN_PSHOLD_NUM,GPIO_HIGH);
+ return 0;
+}
+
+/*******************************************************************************
+ * Function: zx234290_ps_hold_pull_off
+ * Description:
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ * Returns:
+ *
+ *
+ * Others:
+ ********************************************************************************/
+int zx234290_ps_hold_pull_off(void)
+{
+ zDrvGpio_PullUpDown(PIN_PSHOLD_NUM, 0);
+ //gpio_set_reuse(PS_HOLD_PIN, 0);
+ //gpio_direction_output(PS_HOLD_PIN, GPIO_LOW);
+ zDrvGpio_SetFunc(PIN_PSHOLD_NUM,GPIO_PSHOLD_FUNC_SEL);
+ zDrvGpio_SetDirection(PIN_PSHOLD_NUM,GPIO_IN); //set output;v3 gpio24(pshold) direction is reverse
+ zDrvGpio_SetOutputValue(PIN_PSHOLD_NUM,GPIO_LOW);
+ return 0;
+}
+
+/*******************************************************************************
+ * Function: zx234290_power_off
+ * Description:
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ * Returns:
+ *
+ *
+ * Others:
+ ********************************************************************************/
+int zx234290_power_off(void)
+{
+ return zx234290_ps_hold_pull_off();
+}
+
+/*******************************************************************************
+ * Function:
+ * Description:
+ * Parameters:
+ * Input:
+ *
+ * Output:
+ *
+ * Returns:
+ *
+ *
+ * Others:
+ ********************************************************************************/
+int pmu_init(void)
+{
+ int ret = 0;
+ uchar reg_val = 0;
+ struct pmu_opt pmu = {NULL};
+
+ /* GPIO init */
+ //gpio_set_reuse(PS_HOLD_PIN, 0x0);
+ //gpio_direction_output(PS_HOLD_PIN,GPIO_LOW);
+
+ // gpio_set_reuse(POWER_KEY_PIN,0x0);
+ // gpio_direction_input(POWER_KEY_PIN);
+
+ // gpio_noaction(POWER_KEY_PIN);
+
+ /* register pmu opt */
+ pmu.read_reg = zx234290_i2c_read_reg;
+ pmu.write_reg = zx234290_i2c_write_reg;
+ pmu.get_boot_reason = zx234290_get_boot_reason;
+ pmu.ps_hold_pull_on = pmu_pull_on_ps_hold;
+ pmu.ps_hold_pull_off = pmu_pull_off_ps_hold;
+ pmu.power_off = zx234290_power_off;
+ ret = register_pmu_opt(&pmu);
+ if( ret != 0 )
+ {
+ return -EIO;
+ }
+
+ ret = zx234290_get_boot_reason_prev();
+ ret +=zx234290_i2c_read_reg(ZX234297_REG_ADDR_SINK_CONTROL,®_val);
+ if(reg_val==0x7f){//means 296G C
+ reg_val = 0xff;//define to 296
+ ret+=zx234290_i2c_write_reg(ZX234297_REG_ADDR_SINK_CONTROL,®_val);
+ }
+
+ if (ret != SUCCESS)
+ {
+ printf( "[%s]set 0x29 error ret=0x%x!\n", __FUNCTION__,ret);
+ }
+
+ return ret;
+}
+
+/* ================================================================================
+ * pmu_init:
+ */
+int pmu_pull_off_ps_hold(void)
+{
+ return zx234290_ps_hold_pull_off();
+}
+
+/* ================================================================================
+ * pmu_init:
+ */
+int pmu_pull_on_ps_hold(void)
+{
+ return zx234290_ps_hold_pull_on();
+}
+
+/* ================================================================================
+ * system_power_off:
+ */
+void system_power_off(void)
+{
+ zx234290_power_off();
+}
+
+int zx234290_get_adc2_voltage(void)
+{
+ int nTempAdc = 0, ret = -1;
+ int adcReadInt = -1;
+ int msb=0, lsb=0;
+ int num;
+ uchar status_a=0;
+ uchar adcEnable = 0x28;
+ uchar sys_ctrl;
+
+ ret = zx234290_i2c_read_reg(ZX234290_REG_SYS_CTRL, &sys_ctrl);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ sys_ctrl = (sys_ctrl & (1 << 7)) | adcEnable;
+
+ /*enable adc*/
+#if 0
+ ret = zx234290_i2c_write_reg(ZX234290_REG_SYS_CTRL,&sys_ctrl);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+#else
+ for(num=1; num <= 50; num++)
+ {
+ ret = zx234290_i2c_write_reg(ZX234290_REG_SYS_CTRL, &sys_ctrl);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ udelay((100000/3000)*5); /* delay 5ms */
+ ret = zx234290_i2c_read_reg(ZX234290_REG_ADDR_STSA, &status_a);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+
+ if(status_a & 0x04)
+ {
+ printf( "adc2 get adc,break num =%d ...\n", num);
+ break;
+ }
+ }
+#endif
+ udelay((100000/3000)*20); /* delay 20ms */
+
+ /*read adc*/
+ ret = zx234290_i2c_read_reg(ZX234290_REG_ADC_ADC2MSB, &msb);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ ret = zx234290_i2c_read_reg(ZX234290_REG_ADC_ADC2LSB, &lsb);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+
+ /*clear int*/
+ ret = zx234290_i2c_read_reg(ZX234290_REG_INTA, &adcReadInt);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ ret =zx234290_i2c_read_reg(ZX234290_REG_INTB, &adcReadInt);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+
+ nTempAdc = ((msb<<4)|(lsb>>4));
+
+ nTempAdc = (int)((double)(5000-0)*(nTempAdc)/4096);
+
+ return nTempAdc;
+}
+
+int zx234290_get_adc1_voltage(void) /*read adc1*/
+{
+ int nTempAdc = 0,adcEnable = 0,ret = -1;
+ int adcReadInt = -1;
+ int msb=0, lsb=0;
+ int num;
+ uchar status_a=0;
+ adcEnable = 0x30; /*read adc1*/
+ uchar sys_ctrl;
+
+ ret = zx234290_i2c_read_reg(ZX234290_REG_SYS_CTRL, &sys_ctrl);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ sys_ctrl = (sys_ctrl & (1 << 7)) | adcEnable;
+
+ /*enable adc*/
+#if 0
+ ret = zx234290_i2c_write_reg(ZX234290_REG_SYS_CTRL,&sys_ctrl);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+#else
+ for(num=1; num <= 50; num++)
+ {
+ ret = zx234290_i2c_write_reg(ZX234290_REG_SYS_CTRL, &sys_ctrl);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ udelay((100000/3000)*5); /* delay 5ms */
+ ret = zx234290_i2c_read_reg(ZX234290_REG_ADDR_STSA, &status_a);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ if(status_a & 0x04)
+ {
+ printf( "adc1 get adc,break num =%d ...\n", num);
+ break;
+ }
+ }
+#endif
+
+ udelay((100000/3000)*20); /* delay 20ms */
+
+ /*read adc*/
+ ret = zx234290_i2c_read_reg(ZX234290_REG_ADC_ADC1MSB, &msb);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ ret = zx234290_i2c_read_reg(ZX234290_REG_ADC_ADC1LSB, &lsb);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+
+ /*clear int*/
+ ret = zx234290_i2c_read_reg(ZX234290_REG_INTA, &adcReadInt);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ ret =zx234290_i2c_read_reg(ZX234290_REG_INTB, &adcReadInt);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+
+ nTempAdc = ((msb<<4)|(lsb>>4));
+
+ nTempAdc = (int)((double)(5000-0)*(nTempAdc)/4096);
+
+ return nTempAdc;
+}
+
+int zx234290_get_vbat_voltage(void)
+{
+ int nTempAdc = 0,adcEnable = 0,ret = -1;
+ int adcReadInt = -1;
+ int msb=0, lsb=0;
+ int num;
+ uchar status_a=0;
+ //adcEnable = 0x30;
+ adcEnable = 0x20;
+ uchar sys_ctrl;
+
+ ret = zx234290_i2c_read_reg(ZX234290_REG_SYS_CTRL, &sys_ctrl);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ sys_ctrl = (sys_ctrl & (1 << 7)) | adcEnable;
+
+#if 0
+ ret = zx234290_i2c_write_reg(ZX234290_REG_SYS_CTRL,&sys_ctrl);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+#else
+ for(num=1; num <= 50; num++)
+ {
+ ret = zx234290_i2c_write_reg(ZX234290_REG_SYS_CTRL, &sys_ctrl);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ udelay((100000/3000)*5); /* delay 5ms */
+ ret = zx234290_i2c_read_reg(ZX234290_REG_ADDR_STSA, &status_a);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ if(status_a & 0x04)
+ {
+ printf( "vbat get adc,break num =%d ...\n", num);
+ break;
+ }
+ }
+#endif
+ //ret = zx234290_i2c_read_reg(ZX234290_REG_ADC_ADC1MSB, &msb);
+ ret = zx234290_i2c_read_reg(ZX234290_REG_ADC_VBATMSB, &msb);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ //ret = zx234290_i2c_read_reg(ZX234290_REG_ADC_ADC1LSB, &lsb);
+ ret = zx234290_i2c_read_reg(ZX234290_REG_ADC_VBATLSB, &lsb);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ ret = zx234290_i2c_read_reg(ZX234290_REG_INTA, &adcReadInt);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ ret =zx234290_i2c_read_reg(ZX234290_REG_INTB, &adcReadInt);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ nTempAdc = ((msb<<4)|(lsb>>4));
+ nTempAdc = (int)((double)(5000-0)*(nTempAdc)/4096);
+ return nTempAdc;
+}
+
+int zx234290_set_llp_enable(void)
+{
+ int ret = -1;
+ ushort reg=ZX234290_REG_ADDR_PWRON;
+ uchar val=0x05;
+
+ ret = zx234290_i2c_write_reg(reg, &val);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ return ret;
+}
+
+/*get the poweron key state 0x1<<5: poweron press 0:poweron up*/
+int zx234290_get_poweron_state(void)
+{
+ int val = 0,ret = -1;
+ uchar reg = 0;
+
+ ret = zx234290_i2c_read_reg(STATUS_A,®);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ val = reg&STATUS_PWR_ON;
+ return val;
+}
+
+/* get the rtc_alarm status: bit0 in reg 0x05 */
+int zx234290_get_rtc_state(void)
+{
+ int val = 0,ret = -1;
+ uchar reg = 0;
+
+ ret = zx234290_i2c_read_reg(STATUS_B, ®);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ val = reg & STATUS_RTC_ALARM;
+ return val;
+}
+
+/* Set or clear SoftOn bit in ZX234290_REG_SYS_CTRL */
+int zx234290_set_softon(int on)
+{
+ uchar reg = 0;
+ int ret;
+
+ ret = zx234290_i2c_read_reg(ZX234290_REG_SYS_CTRL, ®);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+
+ if ((reg >> 7) != on) {
+ reg ^= (0x01<<7);
+ ret = zx234290_i2c_write_reg(ZX234290_REG_SYS_CTRL, ®);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ }
+ return 0;
+}
+
+/*set ldo8 SD VOL*/
+int zx234290_set_ldo8_voltage(T_ZDrvZx234290_VldoD vol)
+{
+ int ret = 0;
+ unsigned char reg_addr=0, reg_val=0;
+
+ if(vol > VLDOD_MAX)
+ {
+ return -EINVAL;
+ }
+ reg_addr = ZX234290_REG_ADDR_LDO78_VOL;
+ ret = zx234290_i2c_read_reg(reg_addr,®_val);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ reg_val &= ~(0xf<<ZX234290_LDO8_VSEL_LSH);
+ reg_val |= (vol<<ZX234290_LDO8_VSEL_LSH);
+
+ ret = zx234290_i2c_write_reg(reg_addr, ®_val);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+
+ return 0;
+}
+
+int zx234290_set_ldo8_sleep_voltage(T_ZDrvZx234290_VldoD vol)
+{
+ int ret = 0;
+ unsigned char reg_addr=0, reg_val=0;
+
+ if(vol > VLDOD_MAX)
+ {
+ return -EINVAL;
+ }
+ reg_addr = ZX234290_REG_ADDR_LDO78_VOL;
+ ret = zx234290_i2c_read_reg(reg_addr,®_val);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ reg_val &= ~(0xf<<ZX234290_LDO8_SLP_VSEL_LSH);
+ reg_val |= (vol<<ZX234290_LDO8_SLP_VSEL_LSH);
+
+ ret = zx234290_i2c_write_reg(reg_addr, ®_val);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+
+ return 0;
+}
+
+
+/* clear SoftOn bit in ZX234290_REG_SYS_CTRL bit7 */
+int zx234290_ldo8_enable(int enable)
+{
+ int ret = -1;
+ uchar reg = 0;
+
+ ret = zx234290_i2c_read_reg(ZX234290_REG_LDO_EN1, ®);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ reg &= ~(0x01<<7);
+ reg |= (enable<<7);
+ ret = zx234290_i2c_write_reg(ZX234290_REG_LDO_EN1, ®);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ return 0;
+}
+int zx234290_set_sink(T_ZX234290_SINK sink_num, int is_on, T_ZX234297_SINK_CURRENT sink_current)
+{
+ int ret = 0;
+ unsigned char lsh_on, lsh_current;
+ uchar reg = 0;
+
+ ret = zx234290_i2c_read_reg(ZX234297_REG_ADDR_SINK_CONTROL, ®);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ if(0xff==reg){
+ printf("pmu zx234296 no sink\n");
+ return SUCCESS;
+ }
+ if (sink_num == SINK_1) {
+ lsh_on = ZX234297_SINK1_ON_LSH;
+ lsh_current = ZX234297_SINK1_CURRENT_LSH;
+ } else if (sink_num == SINK_2) {
+ lsh_on = ZX234297_SINK2_ON_LSH;
+ lsh_current = ZX234297_SINK2_CURRENT_LSH;
+ } else
+ return -EINVAL;
+
+ if (is_on) {
+ if (sink_current >= SINK_CURRENT_MAX)
+ sink_current = SINK_CURRENT_120MA;
+
+ ret = zx234290_i2c_read_reg(ZX234297_REG_ADDR_SINK_CONTROL, ®);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ reg &= ~(0xf<<lsh_current);
+ reg |= (sink_current<<lsh_current);
+ ret = zx234290_i2c_write_reg(ZX234297_REG_ADDR_SINK_CONTROL, ®);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ }
+
+ is_on = !!is_on;
+ ret = zx234290_i2c_read_reg(ZX234290_REG_ADDR_LDO_EN2, ®);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ reg &= ~(0x1<<lsh_on);
+ reg |= (is_on<<lsh_on);
+ ret = zx234290_i2c_write_reg(ZX234290_REG_ADDR_LDO_EN2, ®);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+
+ return 0;
+}
+
+#if 0
+int zx234290_SetVldo8(Zx234290_VldoD vol)
+{
+ int reg = 0,val = 0,ret = -1;
+ ret = zx234290_i2c_read_reg(ZX234290_REG_LD78_VOL, ®);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ BOOT_PRINTF(UBOOT_ERR, "********First REG0x15=0x%x!!!\n",reg);
+ reg &= 0xf;/*00001111*/
+ reg |= (vol<<4);
+ ret = zx234290_i2c_write_reg(ZX234290_REG_LD78_VOL, ®);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ ret = zx234290_i2c_read_reg(ZX234290_REG_LD78_VOL, ®);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ BOOT_PRINTF(UBOOT_ERR, "********Last REG0x15=0x%x!!!\n",reg);
+ return 0;
+}
+
+#endif
+
+int zx234290_set_ldo10_voltage_2_800(void)
+{
+ uchar reg = 0;
+ int ret;
+ ret = zx234290_i2c_read_reg(0x17, ®); //LDO10RTCLDO_VOLT(0x17)
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ printf("ldo10 before set %02x\n", reg);
+ reg &=0xf0;
+ reg |= 0xd;
+ printf("ldo10 to set %02x\n", reg);
+ ret = zx234290_i2c_write_reg(0x17, ®);
+ if (ret != SUCCESS)
+ {
+ return -EIO;
+ }
+ return 0;
+}
+
diff --git a/lynq/MD310EU/boot/common/src/uboot/include/zx234290.h b/lynq/MD310EU/boot/common/src/uboot/include/zx234290.h
new file mode 100755
index 0000000..559fdb9
--- /dev/null
+++ b/lynq/MD310EU/boot/common/src/uboot/include/zx234290.h
@@ -0,0 +1,168 @@
+/*
+ * (C) Copyright 2016, ZIXC Corporation.
+ *
+ */
+
+#ifndef __ZX234290_H__
+#define __ZX234290_H__
+#include <drvs_gpio.h>
+//#define PS_HOLD_PIN GPIO51
+
+#define ZX234290_I2C_SLAVE_ADDR 0x12
+#define ZX234296_REG_PWRKEY_CTRL2 0x43
+#define ZX234290_REG_ADDR_STSA 0x04
+
+#define INTR_A 0x0
+#define INTR_B 0x1
+
+#define INTR_MASK_A 0x2
+#define INTR_EOADC (0x1 << 2)
+#define INTR_PWR_ON_SHORT_PRESS (0x1 << 3)
+#define INTR_PWR_ON_LONG_PRESS (0x1 << 4)
+#define INTR_PWR_ON (0x1 << 5)
+
+#define INTR_MASK_B 0x3
+
+#define STATUS_A 0x4
+#define STATUS_EOADC (0x1 << 2)
+#define STATUS_PWR_ON (0x1 << 5)
+#define STATUS_B 0x5
+#define STATUS_RTC_ALARM (0x1 << 0)
+
+#define START_UP_STATUS 0x6
+#define PWR_ON_START_UP (0x1 << 0)
+#define RTC_ALARM_START_UP (0x1 << 1)
+#define PS_HOLD_START_UP (0x1 << 2)
+#define LLP_RESTART_UP (0x1 << 3)
+
+#define SYS_CONTROL 0x7
+//#define SINK1_ENABLE (0x1 << 0)
+//#define SINK2_ENABLE (0x1 << 1)
+#define ADC1_ENABLE (0x1 << 3)
+#define ADC2_ENABLE (0x1 << 4)
+
+#define BUCK_MODE_CONTROL0 0xe
+#define BUCK_MODE_CONTROL1 0xf
+#define MMC_CTRL 0x15
+#define ZX234290_REG_ADDR_LDO78_VOL 0x15
+#define ZX234290_REG_ADDR_LDO78_SLPVOL 0x1B
+
+#define ZX234290_LDO8_VSEL_LSH (4)
+#define ZX234290_LDO8_SLP_VSEL_LSH (4)
+
+#define ZX234290_REG_LDO_EN1 0x21 /* LDO8-1 */
+#define ZX234290_REG_ADC_ADC2MSB 0x27 /* CHANNEL 2 */
+#define ZX234290_REG_ADC_ADC2LSB 0x28
+#define ZX234290_REG_ADC_ADC1MSB 0x25 /* CHANNEL 2 */
+#define ZX234290_REG_ADC_ADC1LSB 0x26
+#define ZX234290_REG_ADC_VBATMSB 0x23 /* CHANNEL 2 */
+#define ZX234290_REG_ADC_VBATLSB 0x24
+
+#define ZX234290_REG_RTC_CONTROL2 0x31
+#define RTC_CONTROL2_TIE (1 << 0)
+#define RTC_CONTROL2_AIE (1 << 1)
+#define RTC_CONTROL2_TF (1 << 2)
+#define RTC_CONTROL2_AF (1 << 3)
+
+#define ZX234290_REG_USER 0x50
+
+/*define reset flag*/
+#define ZX234290_USER_RST_FLAG (0x0<<4)/*0x00*/
+#define ZX234290_WDT_RST_FLAG (0x1<<4)/*0x10*/
+#define ZX234290_USER_RST_UNDEFINE (0x0<<0)/*0x0*/
+#define ZX234290_USER_RST_TO_NORMAL (0x1<<0)/*0x1*/
+#define ZX234290_USER_RST_TO_CHARGER (0x2<<0)/*0x2*/
+#define ZX234290_USER_RST_TO_ALARM (0x3<<0)/*0x3*/
+#define ZX234290_USER_RST_TO_EXCEPT (0x4<<0)/*0x4*/
+
+
+#define ZX234290_REG_INTA 0x00 /* INTERRUPT */
+#define ZX234290_REG_INTB 0x01
+
+
+#define ZX234290_REG_SYS_CTRL 0x07
+/* sink control */
+#define ZX234297_REG_ADDR_SINK_CONTROL 0x29
+#define ZX234290_REG_ADDR_LDO_EN2 0x22 /* [xx xx]BUCK4-1, [0xx0]LDO10-9*/
+
+/* 0x22 */
+#define ZX234297_SINK1_ON_LSH (2)
+#define ZX234297_SINK2_ON_LSH (3)
+#define ZX234297_SINK_ON_WID (1)
+/* 0x29 */
+#define ZX234297_SINK1_CURRENT_LSH (0)
+#define ZX234297_SINK2_CURRENT_LSH (4)
+#define ZX234297_SINK_CURRENT_WID (4)
+
+typedef enum _T_ZX234290_SINK
+{
+ SINK_1 = 0,
+ SINK_2 = 1,
+ SINK_MAX
+}T_ZX234290_SINK;
+
+typedef enum _T_ZX234290_SINK_CURRENT
+{
+ SINK_CURRENT_5MA,
+ SINK_CURRENT_10MA,
+ SINK_CURRENT_15MA,
+ SINK_CURRENT_20MA,
+ SINK_CURRENT_30MA,
+ SINK_CURRENT_40MA,
+ SINK_CURRENT_50MA,
+ SINK_CURRENT_60MA,
+ SINK_CURRENT_70MA,
+ SINK_CURRENT_80MA,
+ SINK_CURRENT_90MA,
+ SINK_CURRENT_100MA,
+ SINK_CURRENT_110MA,
+ SINK_CURRENT_120MA,
+
+ SINK_CURRENT_MAX
+}T_ZX234297_SINK_CURRENT;
+
+typedef enum _T_ZDrvZx234290_VldoD
+{
+ VLDOD_1_400 = 0,
+ VLDOD_1_500 = 1,
+ VLDOD_1_600 = 2,
+ VLDOD_1_800 = 3,
+ VLDOD_1_850 = 4,
+ VLDOD_2_000 = 5,
+ VLDOD_2_050 = 6,
+ VLDOD_2_500 = 7,
+ VLDOD_2_550 = 8,
+ VLDOD_2_700 = 9,
+ VLDOD_2_750 = 10,
+ VLDOD_2_800 = 11,
+ VLDOD_2_850 = 12,
+ VLDOD_2_900 = 13,
+ VLDOD_2_950 = 14,
+ VLDOD_3_000 = 15,
+
+ VLDOD_MAX
+
+}T_ZDrvZx234290_VldoD;
+
+
+/* pwr_on long pressed time */
+#define ZX234290_REG_ADDR_PWRON 0x42
+
+int zx234290_reset_flag(void);
+int zx234290_write_flag(UINT8 val);
+int pmu_pull_off_ps_hold(void);
+int pmu_pull_on_ps_hold(void);
+
+/*get the poweron key state 1: poweron press 0:poweron up*/
+int zx234290_get_poweron_state(void);
+int zx234290_get_rtc_state(void);
+int zx234290_get_adc1_voltage(void);
+int zx234290_get_adc2_voltage(void);
+int zx234290_get_vbat_voltage(void);
+int zx234290_set_softon(int on);
+int zx234290_ldo8_enable(int enable);
+int zx234290_set_ldo10_voltage_2_800(void);
+int zx234290_set_sink(T_ZX234290_SINK sink_num, int is_on, T_ZX234297_SINK_CURRENT sink_current);
+
+
+#endif /* __ZX234290_H__ */