Dozingfiretruck 2 лет назад
Родитель
Сommit
9e02e0b658

+ 21 - 0
components/nes/LICENSE

@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 Dozingfiretruck
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 64 - 0
components/nes/README.md

@@ -0,0 +1,64 @@
+**English** | [中文](./README_zh.md) 
+
+![github license](https://img.shields.io/github/license/Dozingfiretruck/nes)![linux](https://github.com/Dozingfiretruck/nes/actions/workflows/action.yml/badge.svg?branch=master)
+
+
+
+# nes
+
+#### Introduction
+The nes simulator implemented in c , requires c11
+
+**attention:**
+
+**This repository is only for the nes simulator and does not provide the game !!!**
+
+Support:
+
+- [x] CUP
+
+- [x] PPU
+
+- [ ] APU
+
+mapper  support:0,2
+
+#### Software Architecture
+The example is based on SDL2 for image and sound output, without special dependencies, and you can port to any hardware by yourself
+
+
+#### Compile Tutorial
+
+​	clone repository,install[xmake](https://github.com/xmake-io/xmake)  ,execute `xmake` directly to compile
+
+#### Instructions
+
+​	on linux enter  `./nes xxx.nes` load the game to run
+​	on windows enter `.\nes.exe xxx.nes` load the game to run
+
+
+
+Key mapping::
+
+​                                      up                                                    A            B
+
+​                           left  down  right	  select      start        
+
+P1:
+
+​                                      W                                                     J            K
+
+​                            A	    S	    D		      V             B        
+
+P2:
+
+​                                       ↑                                                      5            6
+
+​                             ←	  ↓	    →		    1             2        
+
+#### Literature reference
+
+https://www.nesdev.org/
+
+
+

+ 64 - 0
components/nes/README_zh.md

@@ -0,0 +1,64 @@
+[**English**](./README.md)  | **中文**
+
+![github license](https://img.shields.io/github/license/Dozingfiretruck/nes)![linux](https://github.com/Dozingfiretruck/nes/actions/workflows/action.yml/badge.svg?branch=master)
+
+
+
+# nes
+
+#### 介绍
+c语言实现的nes模拟器,要求c11
+
+**注意:**
+
+**本仓库仅为nes模拟器,不提供游戏本体!!!**
+
+支持情况:
+
+- [x] CUP
+
+- [x] PPU
+
+- [ ] APU
+
+mapper 支持:0,2
+
+#### 软件架构
+示例基于SDL2进行图像声音输出,没有特殊依赖,您可自行移植至任意硬件
+
+
+#### 编译教程
+
+​	克隆本仓库,安装[xmake](https://github.com/xmake-io/xmake)  ,直接执行 xmake 编译即可 
+
+#### 使用说明
+
+​	linux下输入 `./nes xxx.nes` 加载要运行的游戏
+​	windows下输入 `.\nes.exe xxx.nes` 加载要运行的游戏
+
+
+
+按键映射:
+
+​                                      上                                                    A            B
+
+​                           左	   下	    右		 选择        开始        
+
+P1:
+
+​                                      W                                                     J            K
+
+​                            A	    S	    D		      V             B        
+
+P2:
+
+​                                       ↑                                                      5            6
+
+​                             ←	  ↓	    →		    1             2        
+
+#### 文献参考
+
+https://www.nesdev.org/
+
+
+

+ 68 - 0
components/nes/inc/nes.h

@@ -0,0 +1,68 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022 Dozingfiretruck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#ifndef _NES_
+#define _NES_
+
+#include "nes_port.h"
+#include "nes_rom.h"
+#include "nes_cpu.h"
+#include "nes_ppu.h"
+#include "nes_apu.h"
+#include "nes_mapper.h"
+
+#ifdef __cplusplus
+    extern "C" {
+#endif
+
+#define NES_NAME                "NES"
+#define NES_WIDTH               256
+#define NES_HEIGHT              240
+
+#define NES_OK                  0 
+#define NES_ERROR               -1
+
+typedef struct nes{
+    uint8_t nes_quit;
+    nes_rom_info_t nes_rom;
+    nes_cpu_t nes_cpu;
+    nes_ppu_t nes_ppu;
+    nes_mapper_t nes_mapper;
+    nes_color_t nes_draw_data[NES_DRAW_SIZE];
+} nes_t;
+
+
+int nes_init(nes_t *nes);
+int nes_deinit(nes_t *nes);
+
+int nes_initex(nes_t* nes);
+int nes_deinitex(nes_t* nes);
+
+void nes_run(nes_t* nes);
+
+#ifdef __cplusplus          
+    }
+#endif
+
+#endif// _NES_

+ 42 - 0
components/nes/inc/nes_apu.h

@@ -0,0 +1,42 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022 Dozingfiretruck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#ifndef _NES_APU_
+#define _NES_APU_
+
+#ifdef __cplusplus
+    extern "C" {
+#endif
+
+struct nes;
+typedef struct nes nes_t;
+
+uint8_t nes_read_apu_register(nes_t *nes,uint16_t address);
+void nes_write_apu_register(nes_t* nes,uint16_t address,uint8_t data);
+
+#ifdef __cplusplus          
+    }
+#endif
+
+#endif// _NES_APU_

+ 114 - 0
components/nes/inc/nes_cpu.h

@@ -0,0 +1,114 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022 Dozingfiretruck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#ifndef _NES_CPU_
+#define _NES_CPU_
+
+#ifdef __cplusplus
+    extern "C" {
+#endif
+
+
+// https://www.nesdev.org/wiki/Controller_reading
+#define NES_CPU_RAM_SIZE        0x800   /*  2KB */
+
+struct nes;
+typedef struct nes nes_t;
+
+#define NES_VERCTOR_NMI         0xFFFA  /*  NMI vector (NMI=not maskable interupts) */
+#define NES_VERCTOR_RESET       0xFFFC  /*  Reset vector */
+#define NES_VERCTOR_IRQBRK      0xFFFE  /*  IRQ vector */
+
+/*
+Bit No. 15      14      13      12      11      10      9       8
+        A1      B1      Select1 Start1  Up1     Down1   Left1   Right1 
+Bit No. 7       6       5       4       3       2       1       0
+        A2      B2      Select2 Start2  Up2     Down2   Left2   Right2 
+*/
+typedef struct nes_joypad{
+    uint8_t offset1;
+    uint8_t offset2;
+    uint8_t mask;
+    union {
+        struct {
+            uint8_t R2:1;   
+            uint8_t L2:1;    
+            uint8_t D2:1;    
+            uint8_t U2:1;  
+            uint8_t ST2:1; 
+            uint8_t SE2:1;
+            uint8_t B2:1;    
+            uint8_t A2:1;
+            uint8_t R1:1;   
+            uint8_t L1:1;    
+            uint8_t D1:1;    
+            uint8_t U1:1;  
+            uint8_t ST1:1; 
+            uint8_t SE1:1;
+            uint8_t B1:1;    
+            uint8_t A1:1;  
+        };
+        uint16_t joypad;
+    };
+} nes_joypad_t;
+
+// https://www.nesdev.org/wiki/CPU_registers
+typedef struct nes_cpu{
+    /*  CPU registers */
+    uint8_t A;                          /*  Accumulator */
+    uint8_t X;                          /*  Indexes X */
+    uint8_t Y;                          /*  Indexes Y */
+    uint16_t PC;                        /*  Program Counter */
+    uint8_t SP;                         /*  Stack Pointer */
+    union {
+        struct {
+            uint8_t C:1;                /*  carry flag (1 on unsigned overflow) */
+            uint8_t Z:1;                /*  zero flag (1 when all bits of a result are 0) */
+            uint8_t I:1;                /*  IRQ flag (when 1, no interupts will occur (exceptions are IRQs forced by BRK and NMIs)) */
+            uint8_t D:1;                /*  decimal flag (1 when CPU in BCD mode) */
+            uint8_t B:1;                /*  break flag (1 when interupt was caused by a BRK) */
+            uint8_t U:1;                /*  unused (always 1) */
+            uint8_t V:1;                /*  overflow flag (1 on signed overflow) */
+            uint8_t N:1;                /*  negative flag (1 when result is negative) */
+        };
+        uint8_t P;                      /*  Status Register */
+    };
+    uint32_t cycles;  
+    uint8_t opcode;     
+    uint8_t cpu_ram[NES_CPU_RAM_SIZE];
+    uint8_t* prg_banks[4];              /*  4 bank ( 8Kb * 4 ) = 32KB  */
+    nes_joypad_t joypad;
+} nes_cpu_t;
+
+void nes_cpu_init(nes_t *nes);
+void nes_cpu_reset(nes_t* nes);
+
+void nes_nmi(nes_t* nes);
+void nes_opcode(nes_t* nes,uint16_t ticks);
+
+#ifdef __cplusplus          
+    }
+#endif
+
+#endif// _NES_CPU_

+ 68 - 0
components/nes/inc/nes_mapper.h

@@ -0,0 +1,68 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022 Dozingfiretruck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#ifndef _NES_MAPPER_
+#define _NES_MAPPER_
+
+#ifdef __cplusplus
+    extern "C" {
+#endif
+
+struct nes;
+typedef struct nes nes_t;
+
+typedef struct {
+    /* Initialize Mapper */
+    void (*mapper_init)(nes_t* nes);
+    /* Write to Mapper */
+    void (*mapper_write)(nes_t* nes,uint16_t write_addr, uint8_t data );
+    /* Write to SRAM */
+    void (*mapper_sram)( uint16_t write_addr, uint8_t data );
+    /* Write to Apu */
+    void (*mapper_apu)( uint16_t write_addr, uint8_t data );
+    /* Read from Apu */
+    uint8_t (*mapper_read_apu)( uint16_t write_addr );
+    /* Callback at VSync */
+    void (*mapper_vsync)(void);
+    /* Callback at HSync */
+    void (*mapper_hsync)(void);
+    /* Callback at PPU read/write */
+    void (*mapper_ppu)( uint16_t write_addr );
+    /* Callback at Rendering Screen 1:BG, 0:Sprite */
+    void (*mapper_render_screen)( uint8_t mode );
+} nes_mapper_t;
+
+/* mapper */
+int nes_load_mapper(nes_t* nes);
+void nes_load_prgrom_8k(nes_t* nes,int des, int src);
+void nes_load_chrrom_1k(nes_t* nes,int des, int src);
+int nes_mapper0_init(nes_t* nes);
+int nes_mapper1_init(nes_t* nes);
+int nes_mapper2_init(nes_t* nes);
+
+#ifdef __cplusplus          
+    }
+#endif
+
+#endif// _NES_MAPPER_

+ 184 - 0
components/nes/inc/nes_ppu.h

@@ -0,0 +1,184 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022 Dozingfiretruck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#ifndef _NES_PPU_
+#define _NES_PPU_
+
+#include "nes_conf.h"
+
+#ifdef __cplusplus
+    extern "C" {
+#endif
+
+#define NES_PPU_VRAM_SIZE       0x1000  /*  4KB */
+
+struct nes;
+typedef struct nes nes_t;
+
+// https://www.nesdev.org/wiki/PPU_OAM
+typedef struct{
+    uint8_t	y;		                    /*  Y position of top of sprite */
+    union {
+        struct {
+            uint8_t pattern_8x16:1;     /*  Bank ($0000 or $1000) of tiles */
+            uint8_t tile_index_8x16 :7; /*  Tile number of top of sprite (0 to 254; bottom half gets the next tile) */
+        };
+        uint8_t	tile_index_number;	    /*  Tile index number */
+    };
+    union {
+        struct {
+            uint8_t sprite_palette:2;   /*  Palette (4 to 7) of sprite */
+            uint8_t :3;                 /*  nimplemented (read 0) */
+            uint8_t priority :1;        /*  Priority (0: in front of background; 1: behind background) */
+            uint8_t flip_h :1;          /*  Flip sprite horizontally */
+            uint8_t flip_v :1;          /*  Flip sprite vertically */
+        };
+        uint8_t	attributes;	            /*  Attributes */
+    };
+    uint8_t	x;		                    /*  X position of left side of sprite. */
+} sprite_info_t;
+
+// https://www.nesdev.org/wiki/PPU_registers
+typedef struct nes_ppu{
+    union {
+        struct {
+            uint8_t ppu_vram0[NES_PPU_VRAM_SIZE / 4];
+            uint8_t ppu_vram1[NES_PPU_VRAM_SIZE / 4];
+            uint8_t ppu_vram2[NES_PPU_VRAM_SIZE / 4];
+            uint8_t ppu_vram3[NES_PPU_VRAM_SIZE / 4];
+        };
+        uint8_t ppu_vram[NES_PPU_VRAM_SIZE];
+    };
+    union {
+        struct {
+            uint8_t CTRL_N:2;           /*  Base nametable address (0 = $2000; 1 = $2400; 2 = $2800; 3 = $2C00) */
+            uint8_t CTRL_I:1;           /*  VRAM address increment per CPU read/write of PPUDATA (0: add 1, going across; 1: add 32, going down) */
+            uint8_t CTRL_S:1;           /*  Sprite pattern table address for 8x8 sprites (0: $0000; 1: $1000; ignored in 8x16 mode) */
+            uint8_t CTRL_B:1;           /*  Background pattern table address (0: $0000; 1: $1000) */
+            uint8_t CTRL_H:1;           /*  Sprite size (0: 8x8 pixels; 1: 8x16 pixels – see PPU OAM#Byte 1) */
+            uint8_t CTRL_P:1;           /*  (0: read backdrop from EXT pins; 1: output color on EXT pins) */
+            uint8_t CTRL_V:1;           /*  Generate an NMI at the start of the vertical blanking interval (0: off; 1: on) */
+        };
+        uint8_t ppu_ctrl;
+    };
+    union {
+        struct {
+            uint8_t MASK_Gr:1;          /*  Greyscale (0: normal color, 1: produce a greyscale display) */
+            uint8_t MASK_m:1;           /*  1: Show background in leftmost 8 pixels of screen, 0: Hide */
+            uint8_t MASK_M:1;           /*  1: Show sprites in leftmost 8 pixels of screen, 0: Hide */
+            uint8_t MASK_b:1;           /*  1: Show background */
+            uint8_t MASK_s:1;           /*  1: Show sprites */
+            uint8_t MASK_R:1;           /*  Emphasize red (green on PAL/Dendy) */
+            uint8_t MASK_G:1;           /*  Emphasize green (red on PAL/Dendy) */
+            uint8_t MASK_B:1;           /*  Emphasize blue */
+        };
+        uint8_t ppu_mask;
+    };
+    union {
+        struct {
+            uint8_t  :4;    
+            uint8_t STATUS_F:1;         /*  VRAM write flag: 0 = write valid, 1 = write ignored */
+            uint8_t STATUS_O:1;         /*  Sprite overflow. The intent was for this flag to be set
+                                            whenever more than eight sprites appear on a scanline, but a
+                                            hardware bug causes the actual behavior to be more complicated
+                                            and generate false positives as well as false negatives; see
+                                            PPU sprite evaluation. This flag is set during sprite
+                                            evaluation and cleared at dot 1 (the second dot) of the
+                                            pre-render line. */
+            uint8_t STATUS_S:1;         /*  Sprite 0 Hit.  Set when a nonzero pixel of sprite 0 overlaps
+                                            a nonzero background pixel; cleared at dot 1 of the pre-render
+                                            line.  Used for raster timing. */
+            uint8_t STATUS_V:1;         /*  Vertical blank has started (0: not in vblank; 1: in vblank).
+                                            Set at dot 1 of line 241 (the line *after* the post-render
+                                            line); cleared after reading $2002 and at dot 1 of the
+                                            pre-render line. */
+        };
+        uint8_t ppu_status;
+    };
+    union {
+        struct {
+            uint8_t* pattern_table[8];
+            uint8_t* name_table[4];
+        };
+        uint8_t* chr_banks[16];         /*  16k chr_banks,without background_palette and sprite_palette
+                                            0 - 3 pattern_table_0 4k
+                                            4 - 7 pattern_table_1 4k
+                                            8     name_table_0    1k
+                                            9     name_table_1    1k
+                                            10    name_table_2    1k
+                                            11    name_table_3    1k
+                                            12-15 mirrors */
+    };
+    union {
+		struct{ // Scroll
+			uint16_t coarse_x  : 5;     
+			uint16_t coarse_y  : 5;     
+			uint16_t nametable : 2;     
+			uint16_t fine_y    : 3;     
+			uint16_t           : 1;     
+		}v;
+        uint16_t v_reg;                 /*  Current VRAM address (15 bits) */
+    };
+    union {
+		struct{ // Scroll
+			uint16_t coarse_x  : 5;
+			uint16_t coarse_y  : 5;
+			uint16_t nametable : 2;
+			uint16_t fine_y    : 3;
+			uint16_t           : 1;
+		}t;
+        uint16_t t_reg;                 /*  Temporary VRAM address (15 bits); can also be thought of as the address of the top left onscreen tile. */
+    };
+    struct {
+        uint8_t x:3;                    /*  Fine X scroll (3 bits) */
+        uint8_t w:1;                    /*  First or second write toggle (1 bit) */
+        uint8_t :4;// 可利用做xxx标志位
+    };
+    uint8_t oam_addr;                   /*  OAM read/write address */
+    union {
+        sprite_info_t sprite_info[0x100 / 4];
+        uint8_t oam_data[0x100];        /*  OAM data read/write 
+                                            The OAM (Object Attribute Memory) is internal memory inside the PPU that contains a display list of up to 64 sprites, 
+                                            where each sprite's information occupies 4 bytes.*/
+    };
+    uint8_t buffer;                     /*  PPU internal buffer */
+    uint8_t palette_indexes[0x20];      /*  $3F00-$3F1F Palette RAM indexes */
+    union {
+        struct {
+            nes_color_t background_palette[0x10];
+            nes_color_t sprite_palette[0x10];
+        };
+        nes_color_t palette[0x20];
+    };
+} nes_ppu_t;
+
+void nes_ppu_init(nes_t *nes);
+uint8_t nes_read_ppu_register(nes_t *nes,uint16_t address);
+void nes_write_ppu_register(nes_t *nes,uint16_t address, uint8_t data);
+
+#ifdef __cplusplus          
+    }
+#endif
+
+#endif// _NES_PPU_

+ 123 - 0
components/nes/inc/nes_rom.h

@@ -0,0 +1,123 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022 Dozingfiretruck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#ifndef _NES_ROM_
+#define _NES_ROM_
+
+#ifdef __cplusplus
+    extern "C" {
+#endif
+
+struct nes;
+typedef struct nes nes_t;
+
+/* NES 2.0: https://wiki.nesdev.org/w/index.php/NES_2.0 */
+#define TRAINER_SIZE            (0x200)
+#define PRG_ROM_UNIT_SIZE       (0x4000)
+#define CHR_ROM_UNIT_SIZE       (0x2000)
+typedef struct {
+    uint8_t identification[4];          /*  0-3   Identification String. Must be "NES<EOF>". */
+    uint8_t prg_rom_size_l;             /*  4     PRG-ROM size LSB */
+    uint8_t chr_rom_size_l;             /*  5     CHR-ROM size LSB */
+    struct {
+        uint8_t mirroring:1;            /*  D0    Hard-wired nametable mirroring type        0: Horizontal or mapper-controlled 1: Vertical */
+        uint8_t save:1;                 /*  D1    "Battery" and other non-volatile memory    0: Not present 1: Present */
+        uint8_t trainer:1;              /*  D2    512-byte Trainer                           0: Not present 1: Present between Header and PRG-ROM data */
+        uint8_t four_screen:1;          /*  D3    Hard-wired four-screen mode                0: No 1: Yes */
+        uint8_t mapper_number_l:4;      /*  D4-7  Mapper Number D0..D3 */
+    };
+    struct {
+        uint8_t console_type:2;         /*  D0-1  Console type   0: Nintendo Entertainment System/Family Computer 1: Nintendo Vs. System 2: Nintendo Playchoice 10 3: Extended Console Type */
+        uint8_t identifier2:2;          /*  D2-3  NES 2.0 identifier */
+        uint8_t mapper_number_m:4;      /*  D4-7  Mapper Number D4..D7 */
+    }; 
+    struct {
+        uint8_t mapper_number_h:4;      /*  D0-3  Mapper number D8..D11 */
+        uint8_t submapper:4;            /*  D4-7  Submapper number */
+    };                                  /*  Mapper MSB/Submapper */
+    struct {
+        uint8_t prg_rom_size_m:4;       /*  D0-3  PRG-ROM size MSB */
+        uint8_t chr_rom_size_m:4;       /*  D4-7  CHR-ROM size MSB */
+    };                                  /*  PRG-ROM/CHR-ROM size MSB */
+    struct {
+        uint8_t prg_ram_size_m:4;       /*  D0-3  PRG-RAM (volatile) shift count */
+        uint8_t eeprom_size_m:4;        /*  D4-7  PRG-NVRAM/EEPROM (non-volatile) shift count */
+    };                                  /*  PRG-RAM/EEPROM size
+                                            If the shift count is zero, there is no PRG-(NV)RAM.
+                                            If the shift count is non-zero, the actual size is
+                                            "64 << shift count" bytes, i.e. 8192 bytes for a shift count of 7. */
+    struct {
+        uint8_t chr_ram_size_m:4;       /*  D0-3  CHR-RAM size (volatile) shift count */
+        uint8_t chr_nvram_size_m:4;     /*  D4-7  CHR-NVRAM size (non-volatile) shift count */
+    };                                  /*  CHR-RAM size
+                                            If the shift count is zero, there is no CHR-(NV)RAM.
+                                            If the shift count is non-zero, the actual size is
+                                            "64 << shift count" bytes, i.e. 8192 bytes for a shift count of 7. */
+    struct {
+        uint8_t timing_mode :2;         /*  D0-1    CPU/PPU timing mode 
+                                                    0: RP2C02 ("NTSC NES")
+                                                    1: RP2C07 ("Licensed PAL NES")
+                                                    2: Multiple-region
+                                                    3: UMC 6527P ("Dendy") */
+        uint8_t :6;
+    };                                  /*  CPU/PPU Timing */
+    struct {
+        uint8_t ppu_type:4;             /*  D0-3  Vs. PPU Type */
+        uint8_t hardware_type:4;        /*  D4-7  Vs. Hardware Type */
+    };                                  /*  When Byte 7 AND 3 =1: Vs. System Type
+                                            When Byte 7 AND 3 =3: Extended Console Type */
+    struct {
+        uint8_t miscellaneous_number:2; /*  D0-1  Number of miscellaneous ROMs present */
+        uint8_t :6;
+    };                                  /*  Miscellaneous ROMs */
+    struct {
+        uint8_t expansion_device:6;     /*  D0-5  Default Expansion Device */
+        uint8_t :2;
+    };                                  /*  Default Expansion Device */
+} nes_header_info_t;
+
+typedef struct nes_rom_info{
+    uint16_t prg_rom_size;
+    uint16_t chr_rom_size;
+    uint8_t* prg_rom;
+    uint8_t* chr_rom;
+    uint8_t* sram;
+    uint16_t mapper_number;             /*  Mapper Number */
+    uint8_t  mirroring_type;            /*  0: Horizontal or mapper-controlled 1: Vertical */
+    uint8_t  four_screen;               /*  0: No 1: Yes */
+    uint8_t  save_ram;                  /*  0: Not present 1: Present */
+} nes_rom_info_t;
+
+#if (NES_USE_FS == 1)
+nes_t* nes_load_file(const char* file_path);
+#endif
+
+nes_t* nes_load_rom(const uint8_t* nes_rom);
+int nes_rom_free(nes_t* nes);
+
+#ifdef __cplusplus          
+    }
+#endif
+
+#endif// _NES_ROM_

+ 2672 - 0
components/nes/luat_lib_nes.c

@@ -0,0 +1,2672 @@
+
+/*
+@module  nes
+@summary nes模拟器
+@version 1.0
+@date    2023.2.17
+*/
+
+#include "luat_base.h"
+#include "luat_rtos.h"
+#include "luat_lcd.h"
+#include "luat_malloc.h"
+#include "luat_rtos.h"
+
+#include "nes.h"
+#include "nes_port.h"
+
+#define LUAT_LOG_TAG "nes"
+#include "luat_log.h"
+
+enum {
+    Up = 1,
+    Down,
+    Left,
+    Right,
+    A,
+    B,
+    Start,
+    Select
+};
+
+static luat_rtos_queue_t nes_thread;
+static nes_t* nes = NULL;
+
+const uint8_t super_mario_rom[]= {
+    0x4e, 0x45, 0x53, 0x1a, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x78, 0xd8, 0xa9, 0x40, 0x8d, 0x00, 0x20, 0xa2, 0xff, 0x9a, 0xad, 0x02, 0x20, 0x10, 0xfb, 0xad, 
+    0x02, 0x20, 0x10, 0xfb, 0xa0, 0xfe, 0xa2, 0x05, 0xbd, 0xd7, 0x07, 0xc9, 0x0a, 0xb0, 0x0c, 0xca, 
+    0x10, 0xf6, 0xad, 0xff, 0x07, 0xc9, 0xa5, 0xd0, 0x02, 0xa0, 0xd6, 0x20, 0xcc, 0x90, 0x8d, 0x11, 
+    0x40, 0x8d, 0x70, 0x07, 0xa9, 0xa5, 0x8d, 0xff, 0x07, 0x8d, 0xa7, 0x07, 0xa9, 0x0f, 0x8d, 0x15, 
+    0x40, 0xa9, 0x06, 0x8d, 0x01, 0x20, 0x20, 0x20, 0x82, 0x20, 0x19, 0x8e, 0xee, 0x74, 0x07, 0xad, 
+    0x78, 0x07, 0x09, 0x80, 0x20, 0xed, 0x8e, 0x4c, 0x57, 0x80, 0x01, 0xa4, 0xc8, 0xec, 0x10, 0x00, 
+    0x41, 0x41, 0x4c, 0x34, 0x3c, 0x44, 0x54, 0x68, 0x7c, 0xa8, 0xbf, 0xde, 0xef, 0x03, 0x8c, 0x8c, 
+    0x8c, 0x8d, 0x03, 0x03, 0x03, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 
+    0x00, 0x40, 0xad, 0x78, 0x07, 0x29, 0x7f, 0x8d, 0x78, 0x07, 0x29, 0x7e, 0x8d, 0x00, 0x20, 0xad, 
+    0x79, 0x07, 0x29, 0xe6, 0xac, 0x74, 0x07, 0xd0, 0x05, 0xad, 0x79, 0x07, 0x09, 0x1e, 0x8d, 0x79, 
+    0x07, 0x29, 0xe7, 0x8d, 0x01, 0x20, 0xae, 0x02, 0x20, 0xa9, 0x00, 0x20, 0xe6, 0x8e, 0x8d, 0x03, 
+    0x20, 0xa9, 0x02, 0x8d, 0x14, 0x40, 0xae, 0x73, 0x07, 0xbd, 0x5a, 0x80, 0x85, 0x00, 0xbd, 0x6d, 
+    0x80, 0x85, 0x01, 0x20, 0xdd, 0x8e, 0xa0, 0x00, 0xae, 0x73, 0x07, 0xe0, 0x06, 0xd0, 0x01, 0xc8, 
+    0xbe, 0x80, 0x80, 0xa9, 0x00, 0x9d, 0x00, 0x03, 0x9d, 0x01, 0x03, 0x8d, 0x73, 0x07, 0xad, 0x79, 
+    0x07, 0x8d, 0x01, 0x20, 0x20, 0xd0, 0xf2, 0x20, 0x5c, 0x8e, 0x20, 0x82, 0x81, 0x20, 0x97, 0x8f, 
+    0xad, 0x76, 0x07, 0x4a, 0xb0, 0x25, 0xad, 0x47, 0x07, 0xf0, 0x05, 0xce, 0x47, 0x07, 0xd0, 0x19, 
+    0xa2, 0x14, 0xce, 0x7f, 0x07, 0x10, 0x07, 0xa9, 0x14, 0x8d, 0x7f, 0x07, 0xa2, 0x23, 0xbd, 0x80, 
+    0x07, 0xf0, 0x03, 0xde, 0x80, 0x07, 0xca, 0x10, 0xf5, 0xe6, 0x09, 0xa2, 0x00, 0xa0, 0x07, 0xad, 
+    0xa7, 0x07, 0x29, 0x02, 0x85, 0x00, 0xad, 0xa8, 0x07, 0x29, 0x02, 0x45, 0x00, 0x18, 0xf0, 0x01, 
+    0x38, 0x7e, 0xa7, 0x07, 0xe8, 0x88, 0xd0, 0xf9, 0xad, 0x22, 0x07, 0xf0, 0x1f, 0xad, 0x02, 0x20, 
+    0x29, 0x40, 0xd0, 0xf9, 0xad, 0x76, 0x07, 0x4a, 0xb0, 0x06, 0x20, 0x23, 0x82, 0x20, 0xc6, 0x81, 
+    0xad, 0x02, 0x20, 0x29, 0x40, 0xf0, 0xf9, 0xa0, 0x14, 0x88, 0xd0, 0xfd, 0xad, 0x3f, 0x07, 0x8d, 
+    0x05, 0x20, 0xad, 0x40, 0x07, 0x8d, 0x05, 0x20, 0xad, 0x78, 0x07, 0x48, 0x8d, 0x00, 0x20, 0xad, 
+    0x76, 0x07, 0x4a, 0xb0, 0x03, 0x20, 0x12, 0x82, 0xad, 0x02, 0x20, 0x68, 0x09, 0x80, 0x8d, 0x00, 
+    0x20, 0x40, 0xad, 0x70, 0x07, 0xc9, 0x02, 0xf0, 0x0b, 0xc9, 0x01, 0xd0, 0x38, 0xad, 0x72, 0x07, 
+    0xc9, 0x03, 0xd0, 0x31, 0xad, 0x77, 0x07, 0xf0, 0x04, 0xce, 0x77, 0x07, 0x60, 0xad, 0xfc, 0x06, 
+    0x29, 0x10, 0xf0, 0x19, 0xad, 0x76, 0x07, 0x29, 0x80, 0xd0, 0x1a, 0xa9, 0x2b, 0x8d, 0x77, 0x07, 
+    0xad, 0x76, 0x07, 0xa8, 0xc8, 0x84, 0xfa, 0x49, 0x01, 0x09, 0x80, 0xd0, 0x05, 0xad, 0x76, 0x07, 
+    0x29, 0x7f, 0x8d, 0x76, 0x07, 0x60, 0xac, 0x4e, 0x07, 0xa9, 0x28, 0x85, 0x00, 0xa2, 0x0e, 0xbd, 
+    0xe4, 0x06, 0xc5, 0x00, 0x90, 0x0f, 0xac, 0xe0, 0x06, 0x18, 0x79, 0xe1, 0x06, 0x90, 0x03, 0x18, 
+    0x65, 0x00, 0x9d, 0xe4, 0x06, 0xca, 0x10, 0xe7, 0xae, 0xe0, 0x06, 0xe8, 0xe0, 0x03, 0xd0, 0x02, 
+    0xa2, 0x00, 0x8e, 0xe0, 0x06, 0xa2, 0x08, 0xa0, 0x02, 0xb9, 0xe9, 0x06, 0x9d, 0xf1, 0x06, 0x18, 
+    0x69, 0x08, 0x9d, 0xf2, 0x06, 0x18, 0x69, 0x08, 0x9d, 0xf3, 0x06, 0xca, 0xca, 0xca, 0x88, 0x10, 
+    0xe8, 0x60, 0xad, 0x70, 0x07, 0x20, 0x04, 0x8e, 0x31, 0x82, 0xdc, 0xae, 0x8b, 0x83, 0x18, 0x92, 
+    0xa0, 0x00, 0x2c, 0xa0, 0x04, 0xa9, 0xf8, 0x99, 0x00, 0x02, 0xc8, 0xc8, 0xc8, 0xc8, 0xd0, 0xf7, 
+    0x60, 0xad, 0x72, 0x07, 0x20, 0x04, 0x8e, 0xcf, 0x8f, 0x67, 0x85, 0x61, 0x90, 0x45, 0x82, 0x04, 
+    0x20, 0x73, 0x01, 0x00, 0x00, 0xa0, 0x00, 0xad, 0xfc, 0x06, 0x0d, 0xfd, 0x06, 0xc9, 0x10, 0xf0, 
+    0x04, 0xc9, 0x90, 0xd0, 0x03, 0x4c, 0xd8, 0x82, 0xc9, 0x20, 0xf0, 0x1a, 0xae, 0xa2, 0x07, 0xd0, 
+    0x0b, 0x8d, 0x80, 0x07, 0x20, 0x6b, 0x83, 0xb0, 0x60, 0x4c, 0xc0, 0x82, 0xa2, 0x01, 0xea, 0xf0, 
+    0x4a, 0xc9, 0x40, 0xea, 0xea, 0xc8, 0xad, 0xa2, 0x07, 0xf0, 0x4e, 0xa9, 0x18, 0xea, 0xea, 0xea, 
+    0xad, 0x80, 0x07, 0xd0, 0x36, 0xa9, 0x10, 0x8d, 0x80, 0x07, 0xc0, 0x01, 0xf0, 0x0e, 0xad, 0x7a, 
+    0x07, 0x49, 0x01, 0x8d, 0x7a, 0x07, 0x20, 0x25, 0x83, 0x4c, 0xbb, 0x82, 0xae, 0x6b, 0x07, 0xad, 
+    0x3e, 0x01, 0xea, 0x20, 0xea, 0xff, 0x20, 0x0e, 0x83, 0xbd, 0x3f, 0x82, 0x9d, 0x00, 0x03, 0xe8, 
+    0xe0, 0x06, 0x30, 0xf5, 0xac, 0x5f, 0x07, 0xc8, 0x8c, 0x04, 0x03, 0xa9, 0x00, 0x8d, 0xfc, 0x06, 
+    0x20, 0xea, 0xae, 0xa5, 0x0e, 0xc9, 0x06, 0xd0, 0x44, 0xa9, 0x00, 0x8d, 0x70, 0x07, 0x8d, 0x72, 
+    0x07, 0x8d, 0x22, 0x07, 0xee, 0x74, 0x07, 0x60, 0xac, 0xa2, 0x07, 0xf0, 0xec, 0x0a, 0x90, 0x06, 
+    0xad, 0xfd, 0x07, 0x20, 0x0e, 0x83, 0x20, 0x03, 0x9c, 0xee, 0x5d, 0x07, 0xee, 0x64, 0x07, 0xee, 
+    0x57, 0x07, 0xee, 0x70, 0x07, 0xad, 0xfc, 0x07, 0x8d, 0x6a, 0x07, 0xa9, 0x00, 0x8d, 0x72, 0x07, 
+    0x8d, 0xa2, 0x07, 0xa2, 0x17, 0xa9, 0x00, 0x9d, 0xdd, 0x07, 0xca, 0x10, 0xfa, 0x60, 0x8d, 0x5f, 
+    0x07, 0x8d, 0x66, 0x07, 0xa2, 0x00, 0x8e, 0x60, 0x07, 0x8e, 0x67, 0x07, 0x60, 0x07, 0x22, 0x49, 
+    0x83, 0xce, 0x24, 0x24, 0x00, 0xa0, 0x07, 0xb9, 0x1d, 0x83, 0x99, 0x00, 0x03, 0x88, 0x10, 0xf7, 
+    0xad, 0x7a, 0x07, 0xf0, 0x0a, 0xa9, 0x24, 0x8d, 0x04, 0x03, 0xa9, 0xce, 0x8d, 0x06, 0x03, 0x60, 
+    0x01, 0x80, 0x02, 0x81, 0x41, 0x80, 0x01, 0x42, 0xc2, 0x02, 0x80, 0x41, 0xc1, 0x41, 0xc1, 0x01, 
+    0xc1, 0x01, 0x02, 0x80, 0x00, 0x9b, 0x10, 0x18, 0x05, 0x2c, 0x20, 0x24, 0x15, 0x5a, 0x10, 0x20, 
+    0x28, 0x30, 0x20, 0x10, 0x80, 0x20, 0x30, 0x30, 0x01, 0xff, 0x00, 0xae, 0x17, 0x07, 0xad, 0x18, 
+    0x07, 0xd0, 0x0d, 0xe8, 0xee, 0x17, 0x07, 0x38, 0xbd, 0x54, 0x83, 0x8d, 0x18, 0x07, 0xf0, 0x0a, 
+    0xbd, 0x3f, 0x83, 0x8d, 0xfc, 0x06, 0xce, 0x18, 0x07, 0x18, 0x60, 0x20, 0xa0, 0x83, 0xad, 0x72, 
+    0x07, 0xf0, 0x07, 0xa2, 0x00, 0x86, 0x08, 0x20, 0x47, 0xc0, 0x20, 0x2a, 0xf1, 0x4c, 0xe9, 0xee, 
+    0xad, 0x72, 0x07, 0x20, 0x04, 0x8e, 0xec, 0xcf, 0xb0, 0x83, 0xbd, 0x83, 0xf6, 0x83, 0x61, 0x84, 
+    0xae, 0x1b, 0x07, 0xe8, 0x86, 0x34, 0xa9, 0x08, 0x85, 0xfc, 0x4c, 0x4e, 0x87, 0xa0, 0x00, 0x84, 
+    0x35, 0xa5, 0x6d, 0xc5, 0x34, 0xd0, 0x06, 0xa5, 0x86, 0xc9, 0x60, 0xb0, 0x03, 0xe6, 0x35, 0xc8, 
+    0x98, 0x20, 0xe6, 0xb0, 0xad, 0x1a, 0x07, 0xc5, 0x34, 0xf0, 0x16, 0xad, 0x68, 0x07, 0x18, 0x69, 
+    0x80, 0x8d, 0x68, 0x07, 0xa9, 0x01, 0x69, 0x00, 0xa8, 0x20, 0xc4, 0xaf, 0x20, 0x6f, 0xaf, 0xe6, 
+    0x35, 0xa5, 0x35, 0xf0, 0x68, 0x60, 0xad, 0x49, 0x07, 0xd0, 0x48, 0xad, 0x19, 0x07, 0xf0, 0x18, 
+    0xc9, 0x09, 0xb0, 0x3f, 0xac, 0x5f, 0x07, 0xc0, 0x07, 0xd0, 0x09, 0xc9, 0x03, 0x90, 0x34, 0xe9, 
+    0x01, 0x4c, 0x18, 0x84, 0xc9, 0x02, 0x90, 0x2b, 0xa8, 0xd0, 0x08, 0xad, 0x53, 0x07, 0xf0, 0x14, 
+    0xc8, 0xd0, 0x11, 0xc8, 0xad, 0x5f, 0x07, 0xc9, 0x07, 0xf0, 0x09, 0x88, 0xc0, 0x04, 0xb0, 0x26, 
+    0xc0, 0x03, 0xb0, 0x0f, 0xc0, 0x03, 0xd0, 0x04, 0xa9, 0x04, 0x85, 0xfc, 0x98, 0x18, 0x69, 0x0c, 
+    0x8d, 0x73, 0x07, 0xad, 0x49, 0x07, 0x18, 0x69, 0x04, 0x8d, 0x49, 0x07, 0xad, 0x19, 0x07, 0x69, 
+    0x00, 0x8d, 0x19, 0x07, 0xc9, 0x07, 0x90, 0x08, 0xa9, 0x06, 0x8d, 0xa1, 0x07, 0xee, 0x72, 0x07, 
+    0x60, 0xad, 0xa1, 0x07, 0xd0, 0x20, 0xac, 0x5f, 0x07, 0xc0, 0x07, 0xb0, 0x1a, 0xa9, 0x00, 0x8d, 
+    0x60, 0x07, 0x8d, 0x5c, 0x07, 0x8d, 0x72, 0x07, 0xee, 0x5f, 0x07, 0x20, 0x03, 0x9c, 0xee, 0x57, 
+    0x07, 0xa9, 0x01, 0x8d, 0x70, 0x07, 0x60, 0xad, 0xfc, 0x06, 0x0d, 0xfd, 0x06, 0x29, 0x40, 0xf0, 
+    0x0d, 0xa9, 0x01, 0x8d, 0xfc, 0x07, 0xa9, 0xff, 0x8d, 0x5a, 0x07, 0x20, 0x48, 0x92, 0x60, 0xff, 
+    0xff, 0xf6, 0xfb, 0xf7, 0xfb, 0xf8, 0xfb, 0xf9, 0xfb, 0xfa, 0xfb, 0xf6, 0x50, 0xf7, 0x50, 0xf8, 
+    0x50, 0xf9, 0x50, 0xfa, 0x50, 0xfd, 0xfe, 0xff, 0x41, 0x42, 0x44, 0x45, 0x48, 0x31, 0x32, 0x34, 
+    0x35, 0x38, 0x00, 0xbd, 0x10, 0x01, 0xf0, 0xbe, 0xc9, 0x0b, 0x90, 0x05, 0xa9, 0x0b, 0x9d, 0x10, 
+    0x01, 0xa8, 0xbd, 0x2c, 0x01, 0xd0, 0x04, 0x9d, 0x10, 0x01, 0x60, 0xde, 0x2c, 0x01, 0xc9, 0x2b, 
+    0xd0, 0x1e, 0xc0, 0x0b, 0xd0, 0x07, 0xee, 0x5a, 0x07, 0xa9, 0x40, 0x85, 0xfe, 0xb9, 0xb7, 0x84, 
+    0x4a, 0x4a, 0x4a, 0x4a, 0xaa, 0xb9, 0xb7, 0x84, 0x29, 0x0f, 0x9d, 0x34, 0x01, 0x20, 0x27, 0xbc, 
+    0xbc, 0xe5, 0x06, 0xb5, 0x16, 0xc9, 0x12, 0xf0, 0x22, 0xc9, 0x0d, 0xf0, 0x1e, 0xc9, 0x05, 0xf0, 
+    0x12, 0xc9, 0x0a, 0xf0, 0x16, 0xc9, 0x0b, 0xf0, 0x12, 0xc9, 0x09, 0xb0, 0x06, 0xb5, 0x1e, 0xc9, 
+    0x02, 0xb0, 0x08, 0xae, 0xee, 0x03, 0xbc, 0xec, 0x06, 0xa6, 0x08, 0xbd, 0x1e, 0x01, 0xc9, 0x18, 
+    0x90, 0x05, 0xe9, 0x01, 0x9d, 0x1e, 0x01, 0xbd, 0x1e, 0x01, 0xe9, 0x08, 0x20, 0xc1, 0xe5, 0xbd, 
+    0x17, 0x01, 0x99, 0x03, 0x02, 0x18, 0x69, 0x08, 0x99, 0x07, 0x02, 0xa9, 0x02, 0x99, 0x02, 0x02, 
+    0x99, 0x06, 0x02, 0xbd, 0x10, 0x01, 0x0a, 0xaa, 0xbd, 0x9f, 0x84, 0x99, 0x01, 0x02, 0xbd, 0xa0, 
+    0x84, 0x99, 0x05, 0x02, 0xa6, 0x08, 0x60, 0xad, 0x3c, 0x07, 0x20, 0x04, 0x8e, 0x8b, 0x85, 0x9b, 
+    0x85, 0x52, 0x86, 0x5a, 0x86, 0x93, 0x86, 0x9d, 0x88, 0xa8, 0x86, 0x9d, 0x88, 0xe6, 0x86, 0xbf, 
+    0x85, 0xe3, 0x85, 0x43, 0x86, 0xff, 0x86, 0x32, 0x87, 0x49, 0x87, 0x20, 0x20, 0x82, 0x20, 0x19, 
+    0x8e, 0xad, 0x70, 0x07, 0xf0, 0x32, 0xa2, 0x03, 0x4c, 0xc5, 0x85, 0xad, 0x44, 0x07, 0x48, 0xad, 
+    0x56, 0x07, 0x48, 0xa9, 0x00, 0x8d, 0x56, 0x07, 0xa9, 0x02, 0x8d, 0x44, 0x07, 0x20, 0xf1, 0x85, 
+    0x68, 0x8d, 0x56, 0x07, 0x68, 0x8d, 0x44, 0x07, 0x4c, 0x45, 0x87, 0x01, 0x02, 0x03, 0x04, 0xac, 
+    0x4e, 0x07, 0xbe, 0xbb, 0x85, 0x8e, 0x73, 0x07, 0x4c, 0x45, 0x87, 0x00, 0x09, 0x0a, 0x04, 0x22, 
+    0x22, 0x0f, 0x0f, 0x0f, 0x22, 0x0f, 0x0f, 0x22, 0x16, 0x27, 0x18, 0x22, 0x30, 0x27, 0x19, 0x22, 
+    0x37, 0x27, 0x16, 0xac, 0x44, 0x07, 0xf0, 0x06, 0xb9, 0xc7, 0x85, 0x8d, 0x73, 0x07, 0xee, 0x3c, 
+    0x07, 0xae, 0x00, 0x03, 0xa0, 0x00, 0xad, 0x53, 0x07, 0xf0, 0x02, 0xa0, 0x04, 0xad, 0x56, 0x07, 
+    0xc9, 0x02, 0xd0, 0x02, 0xa0, 0x08, 0xa9, 0x03, 0x85, 0x00, 0xb9, 0xd7, 0x85, 0x9d, 0x04, 0x03, 
+    0xc8, 0xe8, 0xc6, 0x00, 0x10, 0xf4, 0xae, 0x00, 0x03, 0xac, 0x44, 0x07, 0xd0, 0x03, 0xac, 0x4e, 
+    0x07, 0xb9, 0xcf, 0x85, 0x9d, 0x04, 0x03, 0xa9, 0x3f, 0x9d, 0x01, 0x03, 0xa9, 0x10, 0x9d, 0x02, 
+    0x03, 0xa9, 0x04, 0x9d, 0x03, 0x03, 0xa9, 0x00, 0x9d, 0x08, 0x03, 0x8a, 0x18, 0x69, 0x07, 0x8d, 
+    0x00, 0x03, 0x60, 0xad, 0x33, 0x07, 0xc9, 0x01, 0xd0, 0x05, 0xa9, 0x0b, 0x8d, 0x73, 0x07, 0x4c, 
+    0x45, 0x87, 0xa9, 0x00, 0x20, 0x08, 0x88, 0x4c, 0x45, 0x87, 0x20, 0x30, 0xbc, 0xae, 0x00, 0x03, 
+    0xa9, 0x20, 0x9d, 0x01, 0x03, 0xa9, 0x73, 0x9d, 0x02, 0x03, 0xa9, 0x03, 0x9d, 0x03, 0x03, 0xac, 
+    0x5f, 0x07, 0xc8, 0x98, 0x9d, 0x04, 0x03, 0xa9, 0x28, 0x9d, 0x05, 0x03, 0xac, 0x5c, 0x07, 0xc8, 
+    0x98, 0x9d, 0x06, 0x03, 0xa9, 0x00, 0x9d, 0x07, 0x03, 0x8a, 0x18, 0x69, 0x06, 0x8d, 0x00, 0x03, 
+    0x4c, 0x45, 0x87, 0xad, 0x59, 0x07, 0xf0, 0x0a, 0xa9, 0x00, 0x8d, 0x59, 0x07, 0xa9, 0x02, 0x4c, 
+    0xc7, 0x86, 0xee, 0x3c, 0x07, 0x4c, 0x45, 0x87, 0xad, 0x70, 0x07, 0xf0, 0x33, 0xc9, 0x03, 0xf0, 
+    0x22, 0xad, 0x52, 0x07, 0xd0, 0x2a, 0xac, 0x4e, 0x07, 0xc0, 0x03, 0xf0, 0x05, 0xad, 0x69, 0x07, 
+    0xd0, 0x1e, 0x20, 0xa4, 0xef, 0xa9, 0x01, 0x20, 0x08, 0x88, 0x20, 0xa5, 0x88, 0xa9, 0x00, 0x8d, 
+    0x74, 0x07, 0x60, 0xa9, 0x12, 0x8d, 0xa0, 0x07, 0xa9, 0x03, 0x20, 0x08, 0x88, 0x4c, 0x4e, 0x87, 
+    0xa9, 0x08, 0x8d, 0x3c, 0x07, 0x60, 0xee, 0x74, 0x07, 0x20, 0xb0, 0x92, 0xad, 0x1f, 0x07, 0xd0, 
+    0xf8, 0xce, 0x1e, 0x07, 0x10, 0x03, 0xee, 0x3c, 0x07, 0xa9, 0x06, 0x8d, 0x73, 0x07, 0x60, 0xad, 
+    0x70, 0x07, 0xd0, 0x4a, 0xa9, 0x1e, 0x8d, 0x06, 0x20, 0xa9, 0xc0, 0x8d, 0x06, 0x20, 0xa9, 0x03, 
+    0x85, 0x01, 0xa0, 0x00, 0x84, 0x00, 0xad, 0x07, 0x20, 0xad, 0x07, 0x20, 0x91, 0x00, 0xc8, 0xd0, 
+    0x02, 0xe6, 0x01, 0xa5, 0x01, 0xc9, 0x04, 0xd0, 0xf0, 0xc0, 0x3a, 0x90, 0xec, 0xa9, 0x05, 0x4c, 
+    0x4c, 0x86, 0xad, 0x70, 0x07, 0xd0, 0x17, 0xa2, 0x00, 0x9d, 0x00, 0x03, 0x9d, 0x00, 0x04, 0xca, 
+    0xd0, 0xf7, 0x20, 0x25, 0x83, 0xee, 0x3c, 0x07, 0x60, 0xa9, 0xfa, 0x20, 0x36, 0xbc, 0xee, 0x72, 
+    0x07, 0x60, 0x20, 0x43, 0x05, 0x16, 0x0a, 0x1b, 0x12, 0x18, 0x20, 0x52, 0x0b, 0x20, 0x18, 0x1b, 
+    0x15, 0x0d, 0x24, 0x24, 0x1d, 0x12, 0x16, 0x0e, 0x20, 0x68, 0x05, 0x00, 0x24, 0x24, 0x2e, 0x29, 
+    0x23, 0xc0, 0x7f, 0xaa, 0x23, 0xc2, 0x01, 0xea, 0xff, 0x21, 0xcd, 0x07, 0x24, 0x24, 0x29, 0x24, 
+    0x24, 0x24, 0x24, 0x21, 0x4b, 0x09, 0x20, 0x18, 0x1b, 0x15, 0x0d, 0x24, 0x24, 0x28, 0x24, 0x22, 
+    0x0c, 0x47, 0x24, 0x23, 0xdc, 0x01, 0xba, 0xff, 0x21, 0xcd, 0x05, 0x16, 0x0a, 0x1b, 0x12, 0x18, 
+    0x22, 0x0c, 0x07, 0x1d, 0x12, 0x16, 0x0e, 0x24, 0x1e, 0x19, 0xff, 0x21, 0xcd, 0x05, 0x16, 0x0a, 
+    0x1b, 0x12, 0x18, 0x22, 0x0b, 0x09, 0x10, 0x0a, 0x16, 0x0e, 0x24, 0x18, 0x1f, 0x0e, 0x1b, 0xff, 
+    0x25, 0x84, 0x15, 0x20, 0x0e, 0x15, 0x0c, 0x18, 0x16, 0x0e, 0x24, 0x1d, 0x18, 0x24, 0x20, 0x0a, 
+    0x1b, 0x19, 0x24, 0x23, 0x18, 0x17, 0x0e, 0x2b, 0x26, 0x25, 0x01, 0x24, 0x26, 0x2d, 0x01, 0x24, 
+    0x26, 0x35, 0x01, 0x24, 0x27, 0xd9, 0x46, 0xaa, 0x27, 0xe1, 0x45, 0xaa, 0xff, 0x15, 0x1e, 0x12, 
+    0x10, 0x12, 0x04, 0x03, 0x02, 0x00, 0x24, 0x05, 0x24, 0x00, 0x08, 0x07, 0x06, 0x00, 0x00, 0x00, 
+    0x27, 0x27, 0x46, 0x4e, 0x59, 0x61, 0x6e, 0x6e, 0x48, 0x0a, 0xa8, 0xc0, 0x04, 0x90, 0x0c, 0xc0, 
+    0x08, 0x90, 0x02, 0xa0, 0x08, 0xad, 0x7a, 0x07, 0xd0, 0x01, 0xc8, 0xbe, 0xfe, 0x87, 0xa0, 0x00, 
+    0xbd, 0x52, 0x87, 0xc9, 0xff, 0xf0, 0x07, 0x99, 0x01, 0x03, 0xe8, 0xc8, 0xd0, 0xf2, 0xa9, 0x00, 
+    0x99, 0x01, 0x03, 0x68, 0xaa, 0xc9, 0x04, 0xb0, 0x49, 0xca, 0xd0, 0x23, 0xad, 0x5a, 0x07, 0x18, 
+    0x69, 0x01, 0xc9, 0x0a, 0x90, 0x07, 0xe9, 0x0a, 0xa0, 0x9f, 0x8c, 0x08, 0x03, 0x8d, 0x09, 0x03, 
+    0xac, 0x5f, 0x07, 0xc8, 0x8c, 0x14, 0x03, 0xac, 0x5c, 0x07, 0xc8, 0x8c, 0x16, 0x03, 0x60, 0xad, 
+    0x7a, 0x07, 0xf0, 0x1d, 0xad, 0x53, 0x07, 0xca, 0xd0, 0x09, 0xac, 0x70, 0x07, 0xc0, 0x03, 0xf0, 
+    0x02, 0x49, 0x01, 0x4a, 0x90, 0x0b, 0xa0, 0x04, 0xb9, 0xed, 0x87, 0x99, 0x04, 0x03, 0x88, 0x10, 
+    0xf7, 0x60, 0xe9, 0x04, 0x0a, 0x0a, 0xaa, 0xa0, 0x00, 0xbd, 0xf2, 0x87, 0x99, 0x1c, 0x03, 0xe8, 
+    0xc8, 0xc8, 0xc8, 0xc8, 0xc0, 0x0c, 0x90, 0xf1, 0xa9, 0x2c, 0x4c, 0x3f, 0x86, 0xad, 0xa0, 0x07, 
+    0xd0, 0x0b, 0x20, 0x20, 0x82, 0xa9, 0x07, 0x8d, 0xa0, 0x07, 0xee, 0x3c, 0x07, 0x60, 0xad, 0x26, 
+    0x07, 0x29, 0x01, 0x85, 0x05, 0xac, 0x40, 0x03, 0x84, 0x00, 0xad, 0x21, 0x07, 0x99, 0x42, 0x03, 
+    0xad, 0x20, 0x07, 0x99, 0x41, 0x03, 0xa9, 0x9a, 0x99, 0x43, 0x03, 0xa9, 0x00, 0x85, 0x04, 0xaa, 
+    0x86, 0x01, 0xbd, 0xa1, 0x06, 0x29, 0xc0, 0x85, 0x03, 0x0a, 0x2a, 0x2a, 0xa8, 0xb9, 0x08, 0x8b, 
+    0x85, 0x06, 0xb9, 0x0c, 0x8b, 0x85, 0x07, 0xbd, 0xa1, 0x06, 0x0a, 0x0a, 0x85, 0x02, 0xad, 0x1f, 
+    0x07, 0x29, 0x01, 0x49, 0x01, 0x0a, 0x65, 0x02, 0xa8, 0xa6, 0x00, 0xb1, 0x06, 0x9d, 0x44, 0x03, 
+    0xc8, 0xb1, 0x06, 0x9d, 0x45, 0x03, 0xa4, 0x04, 0xa5, 0x05, 0xd0, 0x0e, 0xa5, 0x01, 0x4a, 0xb0, 
+    0x19, 0x26, 0x03, 0x26, 0x03, 0x26, 0x03, 0x4c, 0x30, 0x89, 0xa5, 0x01, 0x4a, 0xb0, 0x0f, 0x46, 
+    0x03, 0x46, 0x03, 0x46, 0x03, 0x46, 0x03, 0x4c, 0x30, 0x89, 0x46, 0x03, 0x46, 0x03, 0xe6, 0x04, 
+    0xb9, 0xf9, 0x03, 0x05, 0x03, 0x99, 0xf9, 0x03, 0xe6, 0x00, 0xe6, 0x00, 0xa6, 0x01, 0xe8, 0xe0, 
+    0x0d, 0x90, 0x8d, 0xa4, 0x00, 0xc8, 0xc8, 0xc8, 0xa9, 0x00, 0x99, 0x41, 0x03, 0x8c, 0x40, 0x03, 
+    0xee, 0x21, 0x07, 0xad, 0x21, 0x07, 0x29, 0x1f, 0xd0, 0x0d, 0xa9, 0x80, 0x8d, 0x21, 0x07, 0xad, 
+    0x20, 0x07, 0x49, 0x04, 0x8d, 0x20, 0x07, 0x4c, 0xbd, 0x89, 0xad, 0x21, 0x07, 0x29, 0x1f, 0x38, 
+    0xe9, 0x04, 0x29, 0x1f, 0x85, 0x01, 0xad, 0x20, 0x07, 0xb0, 0x02, 0x49, 0x04, 0x29, 0x04, 0x09, 
+    0x23, 0x85, 0x00, 0xa5, 0x01, 0x4a, 0x4a, 0x69, 0xc0, 0x85, 0x01, 0xa2, 0x00, 0xac, 0x40, 0x03, 
+    0xa5, 0x00, 0x99, 0x41, 0x03, 0xa5, 0x01, 0x18, 0x69, 0x08, 0x99, 0x42, 0x03, 0x85, 0x01, 0xbd, 
+    0xf9, 0x03, 0x99, 0x44, 0x03, 0xa9, 0x01, 0x99, 0x43, 0x03, 0x4a, 0x9d, 0xf9, 0x03, 0xc8, 0xc8, 
+    0xc8, 0xc8, 0xe8, 0xe0, 0x07, 0x90, 0xd9, 0x99, 0x41, 0x03, 0x8c, 0x40, 0x03, 0xa9, 0x06, 0x8d, 
+    0x73, 0x07, 0x60, 0x27, 0x27, 0x27, 0x17, 0x07, 0x17, 0x3f, 0x0c, 0x04, 0xff, 0xff, 0xff, 0xff, 
+    0x00, 0x0f, 0x07, 0x12, 0x0f, 0x0f, 0x07, 0x17, 0x0f, 0x0f, 0x07, 0x17, 0x1c, 0x0f, 0x07, 0x17, 
+    0x00, 0xa5, 0x09, 0x29, 0x07, 0xd0, 0x51, 0xae, 0x00, 0x03, 0xe0, 0x31, 0xb0, 0x4a, 0xa8, 0xb9, 
+    0xc9, 0x89, 0x9d, 0x01, 0x03, 0xe8, 0xc8, 0xc0, 0x08, 0x90, 0xf4, 0xae, 0x00, 0x03, 0xa9, 0x03, 
+    0x85, 0x00, 0xad, 0x4e, 0x07, 0x0a, 0x0a, 0xa8, 0xb9, 0xd1, 0x89, 0x9d, 0x04, 0x03, 0xc8, 0xe8, 
+    0xc6, 0x00, 0x10, 0xf4, 0xae, 0x00, 0x03, 0xac, 0xd4, 0x06, 0xb9, 0xc3, 0x89, 0x9d, 0x05, 0x03, 
+    0xad, 0x00, 0x03, 0x18, 0x69, 0x07, 0x8d, 0x00, 0x03, 0xee, 0xd4, 0x06, 0xad, 0xd4, 0x06, 0xc9, 
+    0x06, 0x90, 0x05, 0xa9, 0x00, 0x8d, 0xd4, 0x06, 0x60, 0x45, 0x45, 0x47, 0x47, 0x47, 0x47, 0x47, 
+    0x47, 0x57, 0x58, 0x59, 0x5a, 0x24, 0x24, 0x24, 0x24, 0x26, 0x26, 0x26, 0x26, 0xa0, 0x41, 0xa9, 
+    0x03, 0xae, 0x4e, 0x07, 0xd0, 0x02, 0xa9, 0x04, 0x20, 0x97, 0x8a, 0xa9, 0x06, 0x8d, 0x73, 0x07, 
+    0x60, 0x20, 0x6d, 0x8a, 0xee, 0xf0, 0x03, 0xde, 0xec, 0x03, 0x60, 0xa9, 0x00, 0xa0, 0x03, 0xc9, 
+    0x00, 0xf0, 0x14, 0xa0, 0x00, 0xc9, 0x58, 0xf0, 0x0e, 0xc9, 0x51, 0xf0, 0x0a, 0xc8, 0xc9, 0x5d, 
+    0xf0, 0x05, 0xc9, 0x52, 0xf0, 0x01, 0xc8, 0x98, 0xac, 0x00, 0x03, 0xc8, 0x20, 0x97, 0x8a, 0x88, 
+    0x98, 0x18, 0x69, 0x0a, 0x4c, 0x3f, 0x86, 0x86, 0x00, 0x84, 0x01, 0x0a, 0x0a, 0xaa, 0xa0, 0x20, 
+    0xa5, 0x06, 0xc9, 0xd0, 0x90, 0x02, 0xa0, 0x24, 0x84, 0x03, 0x29, 0x0f, 0x0a, 0x85, 0x04, 0xa9, 
+    0x00, 0x85, 0x05, 0xa5, 0x02, 0x18, 0x69, 0x20, 0x0a, 0x26, 0x05, 0x0a, 0x26, 0x05, 0x65, 0x04, 
+    0x85, 0x04, 0xa5, 0x05, 0x69, 0x00, 0x18, 0x65, 0x03, 0x85, 0x05, 0xa4, 0x01, 0xbd, 0x39, 0x8a, 
+    0x99, 0x03, 0x03, 0xbd, 0x3a, 0x8a, 0x99, 0x04, 0x03, 0xbd, 0x3b, 0x8a, 0x99, 0x08, 0x03, 0xbd, 
+    0x3c, 0x8a, 0x99, 0x09, 0x03, 0xa5, 0x04, 0x99, 0x01, 0x03, 0x18, 0x69, 0x20, 0x99, 0x06, 0x03, 
+    0xa5, 0x05, 0x99, 0x00, 0x03, 0x99, 0x05, 0x03, 0xa9, 0x02, 0x99, 0x02, 0x03, 0x99, 0x07, 0x03, 
+    0xa9, 0x00, 0x99, 0x0a, 0x03, 0xa6, 0x00, 0x60, 0x10, 0xac, 0x64, 0x8c, 0x8b, 0x8b, 0x8c, 0x8c, 
+    0x24, 0x24, 0x24, 0x24, 0x27, 0x27, 0x27, 0x27, 0x24, 0x24, 0x24, 0x35, 0x36, 0x25, 0x37, 0x25, 
+    0x24, 0x38, 0x24, 0x24, 0x24, 0x30, 0x30, 0x26, 0x26, 0x26, 0x34, 0x26, 0x24, 0x31, 0x24, 0x32, 
+    0x33, 0x26, 0x24, 0x33, 0x34, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x24, 0xc0, 0x24, 0xc0, 
+    0x24, 0x7f, 0x7f, 0x24, 0xb8, 0xba, 0xb9, 0xbb, 0xb8, 0xbc, 0xb9, 0xbd, 0xba, 0xbc, 0xbb, 0xbd, 
+    0x60, 0x64, 0x61, 0x65, 0x62, 0x66, 0x63, 0x67, 0x60, 0x64, 0x61, 0x65, 0x62, 0x66, 0x63, 0x67, 
+    0x68, 0x68, 0x69, 0x69, 0x26, 0x26, 0x6a, 0x6a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4d, 0x4f, 0x4d, 0x4f, 
+    0x4d, 0x4e, 0x50, 0x51, 0x6b, 0x70, 0x2c, 0x2d, 0x6c, 0x71, 0x6d, 0x72, 0x6e, 0x73, 0x6f, 0x74, 
+    0x86, 0x8a, 0x87, 0x8b, 0x88, 0x8c, 0x88, 0x8c, 0x89, 0x8d, 0x69, 0x69, 0x8e, 0x91, 0x8f, 0x92, 
+    0x26, 0x93, 0x26, 0x93, 0x90, 0x94, 0x69, 0x69, 0xa4, 0xe9, 0xea, 0xeb, 0x24, 0x24, 0x24, 0x24, 
+    0x24, 0x2f, 0x24, 0x3d, 0xa2, 0xa2, 0xa3, 0xa3, 0x24, 0x24, 0x24, 0x24, 0xa2, 0xa2, 0xa3, 0xa3, 
+    0x99, 0x24, 0x99, 0x24, 0x24, 0xa2, 0x3e, 0x3f, 0x5b, 0x5c, 0x24, 0xa3, 0x24, 0x24, 0x24, 0x24, 
+    0x9d, 0x47, 0x9e, 0x47, 0x47, 0x47, 0x27, 0x27, 0x47, 0x47, 0x47, 0x47, 0x27, 0x27, 0x47, 0x47, 
+    0xa9, 0x47, 0xaa, 0x47, 0x9b, 0x27, 0x9c, 0x27, 0x27, 0x27, 0x27, 0x27, 0x52, 0x52, 0x52, 0x52, 
+    0x80, 0xa0, 0x81, 0xa1, 0xbe, 0xbe, 0xbf, 0xbf, 0x75, 0xba, 0x76, 0xbb, 0xba, 0xba, 0xbb, 0xbb, 
+    0x45, 0x47, 0x45, 0x47, 0x47, 0x47, 0x47, 0x47, 0x45, 0x47, 0x45, 0x47, 0xb4, 0xb6, 0xb5, 0xb7, 
+    0x45, 0x47, 0x45, 0x47, 0x45, 0x47, 0x45, 0x47, 0x45, 0x47, 0x45, 0x47, 0x45, 0x47, 0x45, 0x47, 
+    0x45, 0x47, 0x45, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 
+    0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 
+    0xab, 0xac, 0xad, 0xae, 0x5d, 0x5e, 0x5d, 0x5e, 0xc1, 0x24, 0xc1, 0x24, 0xc6, 0xc8, 0xc7, 0xc9, 
+    0xca, 0xcc, 0xcb, 0xcd, 0x2a, 0x2a, 0x40, 0x40, 0x24, 0x24, 0x24, 0x24, 0x24, 0x47, 0x24, 0x47, 
+    0x82, 0x83, 0x84, 0x85, 0x24, 0x47, 0x24, 0x47, 0x86, 0x8a, 0x87, 0x8b, 0x8e, 0x91, 0x8f, 0x92, 
+    0x24, 0x2f, 0x24, 0x3d, 0x24, 0x24, 0x24, 0x35, 0x36, 0x25, 0x37, 0x25, 0x24, 0x38, 0x24, 0x24, 
+    0x24, 0x24, 0x39, 0x24, 0x3a, 0x24, 0x3b, 0x24, 0x3c, 0x24, 0x24, 0x24, 0x41, 0x26, 0x41, 0x26, 
+    0x26, 0x26, 0x26, 0x26, 0xb0, 0xb1, 0xb2, 0xb3, 0x77, 0x79, 0x77, 0x79, 0x53, 0x55, 0x54, 0x56, 
+    0x53, 0x55, 0x54, 0x56, 0xa5, 0xa7, 0xa6, 0xa8, 0xc2, 0xc4, 0xc3, 0xc5, 0x57, 0x59, 0x58, 0x5a, 
+    0x7b, 0x7d, 0x7c, 0x7e, 0x3f, 0x00, 0x20, 0x0f, 0x15, 0x12, 0x25, 0x0f, 0x3a, 0x1a, 0x0f, 0x0f, 
+    0x30, 0x12, 0x0f, 0x0f, 0x27, 0x12, 0x0f, 0x22, 0x16, 0x27, 0x18, 0x0f, 0x10, 0x30, 0x27, 0x0f, 
+    0x16, 0x30, 0x27, 0x0f, 0x0f, 0x30, 0x10, 0x00, 0x3f, 0x00, 0x20, 0x0f, 0x29, 0x1a, 0x0f, 0x0f, 
+    0x36, 0x17, 0x0f, 0x0f, 0x30, 0x21, 0x0f, 0x0f, 0x27, 0x17, 0x0f, 0x0f, 0x16, 0x27, 0x18, 0x0f, 
+    0x1a, 0x30, 0x27, 0x0f, 0x16, 0x30, 0x27, 0x0f, 0x0f, 0x36, 0x17, 0x00, 0x3f, 0x00, 0x20, 0x0f, 
+    0x29, 0x1a, 0x09, 0x0f, 0x3c, 0x1c, 0x0f, 0x0f, 0x30, 0x21, 0x1c, 0x0f, 0x27, 0x17, 0x1c, 0x0f, 
+    0x16, 0x27, 0x18, 0x0f, 0x1c, 0x36, 0x17, 0x0f, 0x16, 0x30, 0x27, 0x0f, 0x0c, 0x3c, 0x1c, 0x00, 
+    0x3f, 0x00, 0x20, 0x0f, 0x30, 0x10, 0x00, 0x0f, 0x30, 0x10, 0x00, 0x0f, 0x30, 0x16, 0x00, 0x0f, 
+    0x27, 0x17, 0x00, 0x0f, 0x16, 0x27, 0x18, 0x0f, 0x1c, 0x36, 0x17, 0x0f, 0x16, 0x30, 0x27, 0x0f, 
+    0x00, 0x30, 0x10, 0x00, 0x3f, 0x00, 0x04, 0x22, 0x30, 0x00, 0x10, 0x00, 0x3f, 0x00, 0x04, 0x0f, 
+    0x30, 0x00, 0x10, 0x00, 0x3f, 0x00, 0x04, 0x22, 0x27, 0x16, 0x0f, 0x00, 0x3f, 0x14, 0x04, 0x0f, 
+    0x1a, 0x30, 0x27, 0x00, 0x25, 0x48, 0x10, 0x1d, 0x11, 0x0a, 0x17, 0x14, 0x24, 0x22, 0x18, 0x1e, 
+    0x24, 0x16, 0x0a, 0x1b, 0x12, 0x18, 0x2b, 0x00, 0x25, 0x48, 0x10, 0x1d, 0x11, 0x0a, 0x17, 0x14, 
+    0x24, 0x22, 0x18, 0x1e, 0x24, 0x15, 0x1e, 0x12, 0x10, 0x12, 0x2b, 0x00, 0x25, 0xc5, 0x16, 0x0b, 
+    0x1e, 0x1d, 0x24, 0x18, 0x1e, 0x1b, 0x24, 0x19, 0x1b, 0x12, 0x17, 0x0c, 0x0e, 0x1c, 0x1c, 0x24, 
+    0x12, 0x1c, 0x24, 0x12, 0x17, 0x26, 0x05, 0x0f, 0x0a, 0x17, 0x18, 0x1d, 0x11, 0x0e, 0x1b, 0x24, 
+    0x0c, 0x0a, 0x1c, 0x1d, 0x15, 0x0e, 0x2b, 0x00, 0x25, 0xa7, 0x13, 0x22, 0x18, 0x1e, 0x1b, 0x24, 
+    0x1a, 0x1e, 0x0e, 0x1c, 0x1d, 0x24, 0x12, 0x1c, 0x24, 0x18, 0x1f, 0x0e, 0x1b, 0xaf, 0x00, 0x25, 
+    0xe3, 0x1b, 0x20, 0x0e, 0x24, 0x19, 0x1b, 0x0e, 0x1c, 0x0e, 0x17, 0x1d, 0x24, 0x22, 0x18, 0x1e, 
+    0x24, 0x0a, 0x24, 0x17, 0x0e, 0x20, 0x24, 0x1a, 0x1e, 0x0e, 0x1c, 0x1d, 0xaf, 0x00, 0x26, 0x4a, 
+    0x0d, 0x19, 0x1e, 0x1c, 0x11, 0x24, 0x0b, 0x1e, 0x1d, 0x1d, 0x18, 0x17, 0x24, 0x0b, 0x00, 0x26, 
+    0x88, 0x11, 0x1d, 0x18, 0x24, 0x1c, 0x0e, 0x15, 0x0e, 0x0c, 0x1d, 0x24, 0x0a, 0x24, 0x20, 0x18, 
+    0x1b, 0x15, 0x0d, 0x00, 0x0a, 0xa8, 0x68, 0x85, 0x04, 0x68, 0x85, 0x05, 0xc8, 0xb1, 0x04, 0x85, 
+    0x06, 0xc8, 0xb1, 0x04, 0x85, 0x07, 0x6c, 0x06, 0x00, 0xad, 0x02, 0x20, 0xad, 0x78, 0x07, 0x09, 
+    0x10, 0x29, 0xf0, 0x20, 0xed, 0x8e, 0xa9, 0x24, 0x20, 0x2d, 0x8e, 0xa9, 0x20, 0x8d, 0x06, 0x20, 
+    0xa9, 0x00, 0x8d, 0x06, 0x20, 0xa2, 0x04, 0xa0, 0xc0, 0xa9, 0x24, 0x8d, 0x07, 0x20, 0x88, 0xd0, 
+    0xfa, 0xca, 0xd0, 0xf7, 0xa0, 0x40, 0x8a, 0x8d, 0x00, 0x03, 0x8d, 0x01, 0x03, 0x8d, 0x07, 0x20, 
+    0x88, 0xd0, 0xfa, 0x8d, 0x3f, 0x07, 0x8d, 0x40, 0x07, 0x4c, 0xe6, 0x8e, 0xa9, 0x01, 0x8d, 0x16, 
+    0x40, 0x4a, 0xaa, 0x8d, 0x16, 0x40, 0x20, 0x6a, 0x8e, 0xe8, 0xa0, 0x08, 0x48, 0xbd, 0x16, 0x40, 
+    0x85, 0x00, 0x4a, 0x05, 0x00, 0x4a, 0x68, 0x2a, 0x88, 0xd0, 0xf1, 0x9d, 0xfc, 0x06, 0x48, 0x29, 
+    0x30, 0x3d, 0x4a, 0x07, 0xf0, 0x07, 0x68, 0x29, 0xcf, 0x9d, 0xfc, 0x06, 0x60, 0x68, 0x9d, 0x4a, 
+    0x07, 0x60, 0x8d, 0x06, 0x20, 0xc8, 0xb1, 0x00, 0x8d, 0x06, 0x20, 0xc8, 0xb1, 0x00, 0x0a, 0x48, 
+    0xad, 0x78, 0x07, 0x09, 0x04, 0xb0, 0x02, 0x29, 0xfb, 0x20, 0xed, 0x8e, 0x68, 0x0a, 0x90, 0x03, 
+    0x09, 0x02, 0xc8, 0x4a, 0x4a, 0xaa, 0xb0, 0x01, 0xc8, 0xb1, 0x00, 0x8d, 0x07, 0x20, 0xca, 0xd0, 
+    0xf5, 0x38, 0x98, 0x65, 0x00, 0x85, 0x00, 0xa9, 0x00, 0x65, 0x01, 0x85, 0x01, 0xa9, 0x3f, 0x8d, 
+    0x06, 0x20, 0xa9, 0x00, 0x8d, 0x06, 0x20, 0x8d, 0x06, 0x20, 0x8d, 0x06, 0x20, 0xae, 0x02, 0x20, 
+    0xa0, 0x00, 0xb1, 0x00, 0xd0, 0xac, 0x8d, 0x05, 0x20, 0x8d, 0x05, 0x20, 0x60, 0x8d, 0x00, 0x20, 
+    0x8d, 0x78, 0x07, 0x60, 0xf0, 0x06, 0x62, 0x06, 0x62, 0x06, 0x6d, 0x02, 0x6d, 0x02, 0x7a, 0x03, 
+    0x06, 0x0c, 0x12, 0x18, 0x1e, 0x24, 0x85, 0x00, 0x20, 0x11, 0x8f, 0xa5, 0x00, 0x4a, 0x4a, 0x4a, 
+    0x4a, 0x18, 0x69, 0x01, 0x29, 0x0f, 0xc9, 0x06, 0xb0, 0x44, 0x48, 0x0a, 0xa8, 0xae, 0x00, 0x03, 
+    0xa9, 0x20, 0xc0, 0x00, 0xd0, 0x02, 0xa9, 0x22, 0x9d, 0x01, 0x03, 0xb9, 0xf4, 0x8e, 0x9d, 0x02, 
+    0x03, 0xb9, 0xf5, 0x8e, 0x9d, 0x03, 0x03, 0x85, 0x03, 0x86, 0x02, 0x68, 0xaa, 0xbd, 0x00, 0x8f, 
+    0x38, 0xf9, 0xf5, 0x8e, 0xa8, 0xa6, 0x02, 0xb9, 0xd7, 0x07, 0x9d, 0x04, 0x03, 0xe8, 0xc8, 0xc6, 
+    0x03, 0xd0, 0xf4, 0xa9, 0x00, 0x9d, 0x04, 0x03, 0xe8, 0xe8, 0xe8, 0x8e, 0x00, 0x03, 0x60, 0xad, 
+    0x70, 0x07, 0xc9, 0x00, 0xf0, 0x16, 0xa2, 0x05, 0xbd, 0x34, 0x01, 0x18, 0x79, 0xd7, 0x07, 0x30, 
+    0x16, 0xc9, 0x0a, 0xb0, 0x19, 0x99, 0xd7, 0x07, 0x88, 0xca, 0x10, 0xec, 0xa9, 0x00, 0xa2, 0x06, 
+    0x9d, 0x33, 0x01, 0xca, 0x10, 0xfa, 0x60, 0xde, 0x33, 0x01, 0xa9, 0x09, 0xd0, 0xe7, 0x38, 0xe9, 
+    0x0a, 0xfe, 0x33, 0x01, 0x4c, 0x75, 0x8f, 0xa2, 0x05, 0x20, 0x9e, 0x8f, 0xa2, 0x0b, 0xa0, 0x05, 
+    0x38, 0xbd, 0xdd, 0x07, 0xf9, 0xd7, 0x07, 0xca, 0x88, 0x10, 0xf6, 0x90, 0x0e, 0xe8, 0xc8, 0xbd, 
+    0xdd, 0x07, 0x99, 0xd7, 0x07, 0xe8, 0xc8, 0xc0, 0x06, 0x90, 0xf4, 0x60, 0x04, 0x30, 0x48, 0x60, 
+    0x78, 0x90, 0xa8, 0xc0, 0xd8, 0xe8, 0x24, 0xf8, 0xfc, 0x28, 0x2c, 0x18, 0xff, 0x23, 0x58, 0xa0, 
+    0x6f, 0x20, 0xcc, 0x90, 0xa0, 0x1f, 0x99, 0xb0, 0x07, 0x88, 0x10, 0xfa, 0xa9, 0x18, 0x8d, 0xa2, 
+    0x07, 0x20, 0x03, 0x9c, 0xa0, 0x4b, 0x20, 0xcc, 0x90, 0xa2, 0x21, 0xa9, 0x00, 0x9d, 0x80, 0x07, 
+    0xca, 0x10, 0xfa, 0xad, 0x5b, 0x07, 0xac, 0x52, 0x07, 0xf0, 0x03, 0xad, 0x51, 0x07, 0x8d, 0x1a, 
+    0x07, 0x8d, 0x25, 0x07, 0x8d, 0x28, 0x07, 0x20, 0x38, 0xb0, 0xa0, 0x20, 0x29, 0x01, 0xf0, 0x02, 
+    0xa0, 0x24, 0x8c, 0x20, 0x07, 0xa0, 0x80, 0x8c, 0x21, 0x07, 0x0a, 0x0a, 0x0a, 0x0a, 0x8d, 0xa0, 
+    0x06, 0xce, 0x30, 0x07, 0xce, 0x31, 0x07, 0xce, 0x32, 0x07, 0xa9, 0x0b, 0x8d, 0x1e, 0x07, 0x20, 
+    0x22, 0x9c, 0xad, 0x6a, 0x07, 0xd0, 0x10, 0xad, 0x5f, 0x07, 0xc9, 0x04, 0x90, 0x0c, 0xd0, 0x07, 
+    0xad, 0x5c, 0x07, 0xc9, 0x02, 0x90, 0x03, 0xee, 0xcc, 0x06, 0xad, 0x5b, 0x07, 0xf0, 0x05, 0xa9, 
+    0x02, 0x8d, 0x10, 0x07, 0xa9, 0x80, 0x85, 0xfb, 0xa9, 0x01, 0x8d, 0x74, 0x07, 0xee, 0x72, 0x07, 
+    0x60, 0xa9, 0x01, 0x8d, 0x57, 0x07, 0x8d, 0x54, 0x07, 0xa9, 0x02, 0x8d, 0x5a, 0x07, 0x8d, 0x61, 
+    0x07, 0xa9, 0x00, 0x8d, 0x74, 0x07, 0xa8, 0x99, 0x00, 0x03, 0xc8, 0xd0, 0xfa, 0x8d, 0x59, 0x07, 
+    0x8d, 0x69, 0x07, 0x8d, 0x28, 0x07, 0xa9, 0xff, 0x8d, 0xa0, 0x03, 0xad, 0x1a, 0x07, 0x4e, 0x78, 
+    0x07, 0x29, 0x01, 0x6a, 0x2e, 0x78, 0x07, 0x20, 0xed, 0x90, 0xa9, 0x38, 0x8d, 0xe3, 0x06, 0xa9, 
+    0x48, 0x8d, 0xe2, 0x06, 0xa9, 0x58, 0x8d, 0xe1, 0x06, 0xa2, 0x0e, 0xbd, 0xbc, 0x8f, 0x9d, 0xe4, 
+    0x06, 0xca, 0x10, 0xf7, 0xa0, 0x03, 0xb9, 0xcb, 0x8f, 0x99, 0x00, 0x02, 0x88, 0x10, 0xf7, 0x20, 
+    0xaf, 0x92, 0x20, 0xaa, 0x92, 0xee, 0x22, 0x07, 0xee, 0x72, 0x07, 0x60, 0xa2, 0x07, 0xa9, 0x00, 
+    0x85, 0x06, 0x86, 0x07, 0xe0, 0x01, 0xd0, 0x04, 0xc0, 0x30, 0xb0, 0x02, 0x91, 0x06, 0x88, 0xc0, 
+    0xff, 0xd0, 0xf1, 0xca, 0x10, 0xec, 0x60, 0x02, 0x01, 0x04, 0x08, 0x10, 0x20, 0xad, 0x70, 0x07, 
+    0xf0, 0x23, 0xad, 0x52, 0x07, 0xc9, 0x02, 0xf0, 0x0d, 0xa0, 0x05, 0xad, 0x10, 0x07, 0xc9, 0x06, 
+    0xf0, 0x0e, 0xc9, 0x07, 0xf0, 0x0a, 0xac, 0x4e, 0x07, 0xad, 0x43, 0x07, 0xf0, 0x02, 0xa0, 0x04, 
+    0xb9, 0xe7, 0x90, 0x85, 0xfb, 0x60, 0x28, 0x18, 0x38, 0x28, 0x08, 0x00, 0x00, 0x20, 0xb0, 0x50, 
+    0x00, 0x00, 0xb0, 0xb0, 0xf0, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x04, 0x03, 
+    0x02, 0xad, 0x1a, 0x07, 0x85, 0x6d, 0xa9, 0x28, 0x8d, 0x0a, 0x07, 0xa9, 0x01, 0x85, 0x33, 0x85, 
+    0xb5, 0xa9, 0x00, 0x85, 0x1d, 0xce, 0x90, 0x04, 0xa0, 0x00, 0x8c, 0x5b, 0x07, 0xad, 0x4e, 0x07, 
+    0xd0, 0x01, 0xc8, 0x8c, 0x04, 0x07, 0xae, 0x10, 0x07, 0xac, 0x52, 0x07, 0xf0, 0x07, 0xc0, 0x01, 
+    0xf0, 0x03, 0xbe, 0x18, 0x91, 0xb9, 0x16, 0x91, 0x85, 0x86, 0xbd, 0x1c, 0x91, 0x85, 0xce, 0xbd, 
+    0x25, 0x91, 0x8d, 0xc4, 0x03, 0x20, 0xf1, 0x85, 0xac, 0x15, 0x07, 0xf0, 0x1a, 0xad, 0x57, 0x07, 
+    0xf0, 0x15, 0xb9, 0x2d, 0x91, 0x8d, 0xf8, 0x07, 0xa9, 0x01, 0x8d, 0xfa, 0x07, 0x4a, 0x8d, 0xf9, 
+    0x07, 0x8d, 0x57, 0x07, 0x8d, 0x9f, 0x07, 0xac, 0x58, 0x07, 0xf0, 0x14, 0xa9, 0x03, 0x85, 0x1d, 
+    0xa2, 0x00, 0x20, 0x84, 0xbd, 0xa9, 0xf0, 0x85, 0xd7, 0xa2, 0x05, 0xa0, 0x00, 0x20, 0x1e, 0xb9, 
+    0xac, 0x4e, 0x07, 0xd0, 0x03, 0x20, 0x0b, 0xb7, 0xa9, 0x07, 0x85, 0x0e, 0x60, 0x56, 0x40, 0x65, 
+    0x70, 0x66, 0x40, 0x66, 0x40, 0x66, 0x40, 0x66, 0x60, 0x65, 0x70, 0x00, 0x00, 0xee, 0x74, 0x07, 
+    0xa9, 0x00, 0x8d, 0x22, 0x07, 0xa9, 0x80, 0x85, 0xfc, 0xce, 0x5a, 0x07, 0x10, 0x0b, 0xa9, 0x00, 
+    0x8d, 0x72, 0x07, 0xa9, 0x03, 0x8d, 0x70, 0x07, 0x60, 0xad, 0x5f, 0x07, 0x0a, 0xaa, 0xad, 0x5c, 
+    0x07, 0x29, 0x02, 0xf0, 0x01, 0xe8, 0xbc, 0xbd, 0x91, 0xad, 0x5c, 0x07, 0x4a, 0x98, 0xb0, 0x04, 
+    0x4a, 0x4a, 0x4a, 0x4a, 0x29, 0x0f, 0xcd, 0x1a, 0x07, 0xf0, 0x04, 0x90, 0x02, 0xa9, 0x00, 0x8d, 
+    0x5b, 0x07, 0x20, 0x82, 0x92, 0x4c, 0x64, 0x92, 0xad, 0x72, 0x07, 0x20, 0x04, 0x8e, 0x24, 0x92, 
+    0x67, 0x85, 0x37, 0x92, 0xa9, 0x00, 0x8d, 0x3c, 0x07, 0x8d, 0x22, 0x07, 0xa9, 0x02, 0x85, 0xfc, 
+    0xee, 0x74, 0x07, 0xee, 0x72, 0x07, 0x60, 0xa9, 0x00, 0x8d, 0x74, 0x07, 0xad, 0xfc, 0x06, 0x29, 
+    0x10, 0xd0, 0x05, 0xad, 0xa0, 0x07, 0xd0, 0x39, 0xa9, 0x80, 0x85, 0xfc, 0x20, 0x82, 0x92, 0x90, 
+    0x13, 0xad, 0x5f, 0x07, 0x8d, 0xfd, 0x07, 0xa9, 0x00, 0x0a, 0x8d, 0x72, 0x07, 0x8d, 0xa0, 0x07, 
+    0x8d, 0x70, 0x07, 0x60, 0x20, 0x03, 0x9c, 0xa9, 0x01, 0x8d, 0x54, 0x07, 0xee, 0x57, 0x07, 0xa9, 
+    0x00, 0x8d, 0x47, 0x07, 0x8d, 0x56, 0x07, 0x85, 0x0e, 0x8d, 0x72, 0x07, 0xa9, 0x01, 0x8d, 0x70, 
+    0x07, 0x60, 0x38, 0xad, 0x7a, 0x07, 0xf0, 0x21, 0xad, 0x61, 0x07, 0x30, 0x1c, 0xad, 0x53, 0x07, 
+    0x49, 0x01, 0x8d, 0x53, 0x07, 0xa2, 0x06, 0xbd, 0x5a, 0x07, 0x48, 0xbd, 0x61, 0x07, 0x9d, 0x5a, 
+    0x07, 0x68, 0x9d, 0x61, 0x07, 0xca, 0x10, 0xef, 0x18, 0x60, 0xa9, 0xff, 0x8d, 0xc9, 0x06, 0x60, 
+    0xac, 0x1f, 0x07, 0xd0, 0x05, 0xa0, 0x08, 0x8c, 0x1f, 0x07, 0x88, 0x98, 0x20, 0xc8, 0x92, 0xce, 
+    0x1f, 0x07, 0xd0, 0x03, 0x20, 0x6a, 0x89, 0x60, 0x20, 0x04, 0x8e, 0xdb, 0x92, 0xae, 0x88, 0xae, 
+    0x88, 0xfc, 0x93, 0xdb, 0x92, 0xae, 0x88, 0xae, 0x88, 0xfc, 0x93, 0xee, 0x26, 0x07, 0xad, 0x26, 
+    0x07, 0x29, 0x0f, 0xd0, 0x06, 0x8d, 0x26, 0x07, 0xee, 0x25, 0x07, 0xee, 0xa0, 0x06, 0xad, 0xa0, 
+    0x06, 0x29, 0x1f, 0x8d, 0xa0, 0x06, 0x60, 0x00, 0x30, 0x60, 0x93, 0x00, 0x00, 0x11, 0x12, 0x12, 
+    0x13, 0x00, 0x00, 0x51, 0x52, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x03, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x92, 0x93, 0x00, 0x00, 0x00, 0x00, 0x51, 0x52, 0x53, 
+    0x41, 0x42, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x92, 0x97, 0x87, 0x88, 0x89, 0x99, 0x00, 
+    0x00, 0x00, 0x11, 0x12, 0x13, 0xa4, 0xa5, 0xa5, 0xa5, 0xa6, 0x97, 0x98, 0x99, 0x01, 0x02, 0x03, 
+    0x00, 0xa4, 0xa5, 0xa6, 0x00, 0x11, 0x12, 0x12, 0x12, 0x13, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 
+    0x02, 0x03, 0x00, 0xa4, 0xa5, 0xa5, 0xa6, 0x00, 0x00, 0x00, 0x11, 0x12, 0x12, 0x13, 0x00, 0x00, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x8b, 0xaa, 0xaa, 0xaa, 0xaa, 0x11, 0x12, 0x13, 0x8b, 
+    0x00, 0x9c, 0x9c, 0x00, 0x00, 0x01, 0x02, 0x03, 0x11, 0x12, 0x12, 0x13, 0x00, 0x00, 0x00, 0x00, 
+    0xaa, 0xaa, 0x9c, 0xaa, 0x00, 0x8b, 0x00, 0x01, 0x02, 0x03, 0x80, 0x83, 0x00, 0x81, 0x84, 0x00, 
+    0x82, 0x85, 0x00, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x06, 0x07, 
+    0x06, 0x0a, 0x00, 0x08, 0x09, 0x4d, 0x00, 0x00, 0x0d, 0x0f, 0x4e, 0x0e, 0x4e, 0x4e, 0x00, 0x0d, 
+    0x1a, 0x86, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x69, 0x69, 0x00, 0x00, 
+    0x00, 0x00, 0x00, 0x45, 0x47, 0x47, 0x47, 0x47, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x87, 0x69, 0x54, 0x52, 0x62, 0x00, 0x00, 0x00, 0x18, 
+    0x01, 0x18, 0x07, 0x18, 0x0f, 0x18, 0xff, 0x18, 0x01, 0x1f, 0x07, 0x1f, 0x0f, 0x1f, 0x81, 0x1f, 
+    0x01, 0x00, 0x8f, 0x1f, 0xf1, 0x1f, 0xf9, 0x18, 0xf1, 0x18, 0xff, 0x1f, 0xad, 0x28, 0x07, 0xf0, 
+    0x03, 0x20, 0x08, 0x95, 0xa2, 0x0c, 0xa9, 0x00, 0x9d, 0xa1, 0x06, 0xca, 0x10, 0xfa, 0xac, 0x42, 
+    0x07, 0xf0, 0x42, 0xad, 0x25, 0x07, 0xc9, 0x03, 0x30, 0x05, 0x38, 0xe9, 0x03, 0x10, 0xf7, 0x0a, 
+    0x0a, 0x0a, 0x0a, 0x79, 0xf6, 0x92, 0x6d, 0x26, 0x07, 0xaa, 0xbd, 0xfa, 0x92, 0xf0, 0x26, 0x48, 
+    0x29, 0x0f, 0x38, 0xe9, 0x01, 0x85, 0x00, 0x0a, 0x65, 0x00, 0xaa, 0x68, 0x4a, 0x4a, 0x4a, 0x4a, 
+    0xa8, 0xa9, 0x03, 0x85, 0x00, 0xbd, 0x8a, 0x93, 0x99, 0xa1, 0x06, 0xe8, 0xc8, 0xc0, 0x0b, 0xf0, 
+    0x04, 0xc6, 0x00, 0xd0, 0xf0, 0xae, 0x41, 0x07, 0xf0, 0x13, 0xbc, 0xad, 0x93, 0xa2, 0x00, 0xb9, 
+    0xb1, 0x93, 0xf0, 0x03, 0x9d, 0xa1, 0x06, 0xc8, 0xe8, 0xe0, 0x0d, 0xd0, 0xf2, 0xac, 0x4e, 0x07, 
+    0xd0, 0x0c, 0xad, 0x5f, 0x07, 0xc9, 0x07, 0xd0, 0x05, 0xa9, 0x62, 0x4c, 0x88, 0x94, 0xb9, 0xd8, 
+    0x93, 0xac, 0x43, 0x07, 0xf0, 0x02, 0xa9, 0x88, 0x85, 0x07, 0xa2, 0x00, 0xad, 0x27, 0x07, 0x0a, 
+    0xa8, 0xb9, 0xdc, 0x93, 0x85, 0x00, 0xc8, 0x84, 0x01, 0xad, 0x43, 0x07, 0xf0, 0x0a, 0xe0, 0x00, 
+    0xf0, 0x06, 0xa5, 0x00, 0x29, 0x08, 0x85, 0x00, 0xa0, 0x00, 0xb9, 0x8a, 0xc6, 0x24, 0x00, 0xf0, 
+    0x05, 0xa5, 0x07, 0x9d, 0xa1, 0x06, 0xe8, 0xe0, 0x0d, 0xf0, 0x18, 0xad, 0x4e, 0x07, 0xc9, 0x02, 
+    0xd0, 0x08, 0xe0, 0x0b, 0xd0, 0x04, 0xa9, 0x54, 0x85, 0x07, 0xc8, 0xc0, 0x08, 0xd0, 0xdb, 0xa4, 
+    0x01, 0xd0, 0xbe, 0x20, 0x08, 0x95, 0xad, 0xa0, 0x06, 0x20, 0xe1, 0x9b, 0xa2, 0x00, 0xa0, 0x00, 
+    0x84, 0x00, 0xbd, 0xa1, 0x06, 0x29, 0xc0, 0x0a, 0x2a, 0x2a, 0xa8, 0xbd, 0xa1, 0x06, 0xd9, 0x04, 
+    0x95, 0xb0, 0x02, 0xa9, 0x00, 0xa4, 0x00, 0x91, 0x06, 0x98, 0x18, 0x69, 0x10, 0xa8, 0xe8, 0xe0, 
+    0x0d, 0x90, 0xdd, 0x60, 0x10, 0x51, 0x88, 0xc0, 0xa2, 0x02, 0x86, 0x08, 0xa9, 0x00, 0x8d, 0x29, 
+    0x07, 0xac, 0x2c, 0x07, 0xb1, 0xe7, 0xc9, 0xfd, 0xf0, 0x4b, 0xbd, 0x30, 0x07, 0x10, 0x46, 0xc8, 
+    0xb1, 0xe7, 0x0a, 0x90, 0x0b, 0xad, 0x2b, 0x07, 0xd0, 0x06, 0xee, 0x2b, 0x07, 0xee, 0x2a, 0x07, 
+    0x88, 0xb1, 0xe7, 0x29, 0x0f, 0xc9, 0x0d, 0xd0, 0x1b, 0xc8, 0xb1, 0xe7, 0x88, 0x29, 0x40, 0xd0, 
+    0x1c, 0xad, 0x2b, 0x07, 0xd0, 0x17, 0xc8, 0xb1, 0xe7, 0x29, 0x1f, 0x8d, 0x2a, 0x07, 0xee, 0x2b, 
+    0x07, 0x4c, 0x6e, 0x95, 0xc9, 0x0e, 0xd0, 0x05, 0xad, 0x28, 0x07, 0xd0, 0x08, 0xad, 0x2a, 0x07, 
+    0xcd, 0x25, 0x07, 0x90, 0x06, 0x20, 0x95, 0x95, 0x4c, 0x71, 0x95, 0xee, 0x29, 0x07, 0x20, 0x89, 
+    0x95, 0xa6, 0x08, 0xbd, 0x30, 0x07, 0x30, 0x03, 0xde, 0x30, 0x07, 0xca, 0x10, 0x8c, 0xad, 0x29, 
+    0x07, 0xd0, 0x85, 0xad, 0x28, 0x07, 0xd0, 0x80, 0x60, 0xee, 0x2c, 0x07, 0xee, 0x2c, 0x07, 0xa9, 
+    0x00, 0x8d, 0x2b, 0x07, 0x60, 0xbd, 0x30, 0x07, 0x30, 0x03, 0xbc, 0x2d, 0x07, 0xa2, 0x10, 0xb1, 
+    0xe7, 0xc9, 0xfd, 0xf0, 0xe3, 0x29, 0x0f, 0xc9, 0x0f, 0xf0, 0x08, 0xa2, 0x08, 0xc9, 0x0c, 0xf0, 
+    0x02, 0xa2, 0x00, 0x86, 0x07, 0xa6, 0x08, 0xc9, 0x0e, 0xd0, 0x08, 0xa9, 0x00, 0x85, 0x07, 0xa9, 
+    0x2e, 0xd0, 0x53, 0xc9, 0x0d, 0xd0, 0x1b, 0xa9, 0x22, 0x85, 0x07, 0xc8, 0xb1, 0xe7, 0x29, 0x40, 
+    0xf0, 0x63, 0xb1, 0xe7, 0x29, 0x7f, 0xc9, 0x4b, 0xd0, 0x03, 0xee, 0x45, 0x07, 0x29, 0x3f, 0x4c, 
+    0x16, 0x96, 0xc9, 0x0c, 0xb0, 0x27, 0xc8, 0xb1, 0xe7, 0x29, 0x70, 0xd0, 0x0b, 0xa9, 0x16, 0x85, 
+    0x07, 0xb1, 0xe7, 0x29, 0x0f, 0x4c, 0x16, 0x96, 0x85, 0x00, 0xc9, 0x70, 0xd0, 0x0a, 0xb1, 0xe7, 
+    0x29, 0x08, 0xf0, 0x04, 0xa9, 0x00, 0x85, 0x00, 0xa5, 0x00, 0x4c, 0x12, 0x96, 0xc8, 0xb1, 0xe7, 
+    0x29, 0x70, 0x4a, 0x4a, 0x4a, 0x4a, 0x85, 0x00, 0xbd, 0x30, 0x07, 0x10, 0x42, 0xad, 0x2a, 0x07, 
+    0xcd, 0x25, 0x07, 0xf0, 0x11, 0xac, 0x2c, 0x07, 0xb1, 0xe7, 0x29, 0x0f, 0xc9, 0x0e, 0xd0, 0x05, 
+    0xad, 0x28, 0x07, 0xd0, 0x21, 0x60, 0xad, 0x28, 0x07, 0xf0, 0x0b, 0xa9, 0x00, 0x8d, 0x28, 0x07, 
+    0x8d, 0x29, 0x07, 0x85, 0x08, 0x60, 0xac, 0x2c, 0x07, 0xb1, 0xe7, 0x29, 0xf0, 0x4a, 0x4a, 0x4a, 
+    0x4a, 0xcd, 0x26, 0x07, 0xd0, 0xdf, 0xad, 0x2c, 0x07, 0x9d, 0x2d, 0x07, 0x20, 0x89, 0x95, 0xa5, 
+    0x00, 0x18, 0x65, 0x07, 0x20, 0x04, 0x8e, 0xe5, 0x98, 0x40, 0x97, 0x2e, 0x9a, 0x3e, 0x9a, 0xf2, 
+    0x99, 0x50, 0x9a, 0x59, 0x9a, 0xe5, 0x98, 0x41, 0x9b, 0xba, 0x97, 0x79, 0x99, 0x7c, 0x99, 0x7f, 
+    0x99, 0x57, 0x99, 0x68, 0x99, 0x6b, 0x99, 0xd0, 0x99, 0xd7, 0x99, 0x06, 0x98, 0xb7, 0x9a, 0xab, 
+    0x98, 0x94, 0x99, 0x0e, 0x9b, 0x0e, 0x9b, 0x0e, 0x9b, 0x01, 0x9b, 0x19, 0x9b, 0x19, 0x9b, 0x19, 
+    0x9b, 0x14, 0x9b, 0x19, 0x9b, 0x6f, 0x98, 0x19, 0x9a, 0xd3, 0x9a, 0x82, 0x98, 0x9e, 0x99, 0x09, 
+    0x9a, 0x0e, 0x9a, 0x01, 0x9a, 0xf2, 0x96, 0x0d, 0x97, 0x0d, 0x97, 0x2b, 0x97, 0x2b, 0x97, 0x2b, 
+    0x97, 0x45, 0x96, 0xc5, 0x96, 0xbc, 0x2d, 0x07, 0xc8, 0xb1, 0xe7, 0x48, 0x29, 0x40, 0xd0, 0x12, 
+    0x68, 0x48, 0x29, 0x0f, 0x8d, 0x27, 0x07, 0x68, 0x29, 0x30, 0x4a, 0x4a, 0x4a, 0x4a, 0x8d, 0x42, 
+    0x07, 0x60, 0x68, 0x29, 0x07, 0xc9, 0x04, 0x90, 0x05, 0x8d, 0x44, 0x07, 0xa9, 0x00, 0x8d, 0x41, 
+    0x07, 0x60, 0xa2, 0x04, 0xad, 0x5f, 0x07, 0xf0, 0x08, 0xe8, 0xac, 0x4e, 0x07, 0x88, 0xd0, 0x01, 
+    0xe8, 0x8a, 0x8d, 0xd6, 0x06, 0x20, 0x08, 0x88, 0xa9, 0x0d, 0x20, 0x16, 0x97, 0xad, 0x23, 0x07, 
+    0x49, 0x01, 0x8d, 0x23, 0x07, 0x60, 0x85, 0x00, 0xa9, 0x00, 0xa2, 0x04, 0xb4, 0x16, 0xc4, 0x00, 
+    0xd0, 0x02, 0x95, 0x0f, 0xca, 0x10, 0xf5, 0x60, 0x14, 0x17, 0x18, 0xa6, 0x00, 0xbd, 0x20, 0x97, 
+    0xa0, 0x05, 0x88, 0x30, 0x07, 0xd9, 0x16, 0x00, 0xd0, 0xf8, 0xa9, 0x00, 0x8d, 0xcd, 0x06, 0x60, 
+    0xad, 0x33, 0x07, 0x20, 0x04, 0x8e, 0x4c, 0x97, 0x78, 0x97, 0x69, 0x9a, 0x20, 0xbb, 0x9b, 0xbd, 
+    0x30, 0x07, 0xf0, 0x1f, 0x10, 0x11, 0x98, 0x9d, 0x30, 0x07, 0xad, 0x25, 0x07, 0x0d, 0x26, 0x07, 
+    0xf0, 0x05, 0xa9, 0x16, 0x4c, 0xb0, 0x97, 0xa6, 0x07, 0xa9, 0x17, 0x9d, 0xa1, 0x06, 0xa9, 0x4c, 
+    0x4c, 0xaa, 0x97, 0xa9, 0x18, 0x4c, 0xb0, 0x97, 0x20, 0xac, 0x9b, 0x84, 0x06, 0x90, 0x0c, 0xbd, 
+    0x30, 0x07, 0x4a, 0x9d, 0x36, 0x07, 0xa9, 0x19, 0x4c, 0xb0, 0x97, 0xa9, 0x1b, 0xbc, 0x30, 0x07, 
+    0xf0, 0x1e, 0xbd, 0x36, 0x07, 0x85, 0x06, 0xa6, 0x07, 0xa9, 0x1a, 0x9d, 0xa1, 0x06, 0xc4, 0x06, 
+    0xd0, 0x2c, 0xe8, 0xa9, 0x4f, 0x9d, 0xa1, 0x06, 0xa9, 0x50, 0xe8, 0xa0, 0x0f, 0x4c, 0x7d, 0x9b, 
+    0xa6, 0x07, 0xa0, 0x00, 0x4c, 0x7d, 0x9b, 0x42, 0x41, 0x43, 0x20, 0xac, 0x9b, 0xa0, 0x00, 0xb0, 
+    0x07, 0xc8, 0xbd, 0x30, 0x07, 0xd0, 0x01, 0xc8, 0xb9, 0xb7, 0x97, 0x8d, 0xa1, 0x06, 0x60, 0x00, 
+    0x45, 0x45, 0x45, 0x00, 0x00, 0x48, 0x47, 0x46, 0x00, 0x45, 0x49, 0x49, 0x49, 0x45, 0x47, 0x47, 
+    0x4a, 0x47, 0x47, 0x47, 0x47, 0x4b, 0x47, 0x47, 0x49, 0x49, 0x49, 0x49, 0x49, 0x47, 0x4a, 0x47, 
+    0x4a, 0x47, 0x47, 0x4b, 0x47, 0x4b, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x4a, 0x47, 0x4a, 0x47, 
+    0x4a, 0x4b, 0x47, 0x4b, 0x47, 0x4b, 0x20, 0xbb, 0x9b, 0x84, 0x07, 0xa0, 0x04, 0x20, 0xaf, 0x9b, 
+    0x8a, 0x48, 0xbc, 0x30, 0x07, 0xa6, 0x07, 0xa9, 0x0b, 0x85, 0x06, 0xb9, 0xcf, 0x97, 0x9d, 0xa1, 
+    0x06, 0xe8, 0xa5, 0x06, 0xf0, 0x07, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc6, 0x06, 0xe0, 0x0b, 0xd0, 
+    0xea, 0x68, 0xaa, 0xad, 0x25, 0x07, 0xf0, 0x36, 0xbd, 0x30, 0x07, 0xc9, 0x01, 0xf0, 0x2a, 0xa4, 
+    0x07, 0xd0, 0x04, 0xc9, 0x03, 0xf0, 0x22, 0xc9, 0x02, 0xd0, 0x23, 0x20, 0xcb, 0x9b, 0x48, 0x20, 
+    0x4a, 0x99, 0x68, 0x95, 0x87, 0xad, 0x25, 0x07, 0x95, 0x6e, 0xa9, 0x01, 0x95, 0xb6, 0x95, 0x0f, 
+    0xa9, 0x90, 0x95, 0xcf, 0xa9, 0x31, 0x95, 0x16, 0x60, 0xa0, 0x52, 0x8c, 0xab, 0x06, 0x60, 0x20, 
+    0xbb, 0x9b, 0xbc, 0x30, 0x07, 0xa6, 0x07, 0xa9, 0x6b, 0x9d, 0xa1, 0x06, 0xa9, 0x6c, 0x9d, 0xa2, 
+    0x06, 0x60, 0xa0, 0x03, 0x20, 0xaf, 0x9b, 0xa0, 0x0a, 0x20, 0xb3, 0x98, 0xb0, 0x10, 0xa2, 0x06, 
+    0xa9, 0x00, 0x9d, 0xa1, 0x06, 0xca, 0x10, 0xf8, 0xb9, 0xdd, 0x98, 0x8d, 0xa8, 0x06, 0x60, 0x15, 
+    0x14, 0x00, 0x00, 0x15, 0x1e, 0x1d, 0x1c, 0x15, 0x21, 0x20, 0x1f, 0xa0, 0x03, 0x20, 0xaf, 0x9b, 
+    0x20, 0xbb, 0x9b, 0x88, 0x88, 0x84, 0x05, 0xbc, 0x30, 0x07, 0x84, 0x06, 0xa6, 0x05, 0xe8, 0xb9, 
+    0x9f, 0x98, 0xc9, 0x00, 0xf0, 0x08, 0xa2, 0x00, 0xa4, 0x05, 0x20, 0x7d, 0x9b, 0x18, 0xa4, 0x06, 
+    0xb9, 0xa3, 0x98, 0x9d, 0xa1, 0x06, 0xb9, 0xa7, 0x98, 0x9d, 0xa2, 0x06, 0x60, 0x11, 0x10, 0x15, 
+    0x14, 0x13, 0x12, 0x15, 0x14, 0x20, 0x39, 0x99, 0xa5, 0x00, 0xf0, 0x04, 0xc8, 0xc8, 0xc8, 0xc8, 
+    0x98, 0x48, 0xad, 0x60, 0x07, 0x0d, 0x5f, 0x07, 0xf0, 0x2b, 0xbc, 0x30, 0x07, 0xf0, 0x26, 0x20, 
+    0x4a, 0x99, 0xb0, 0x21, 0x20, 0xcb, 0x9b, 0x18, 0x69, 0x08, 0x95, 0x87, 0xad, 0x25, 0x07, 0x69, 
+    0x00, 0x95, 0x6e, 0xa9, 0x01, 0x95, 0xb6, 0x95, 0x0f, 0x20, 0xd3, 0x9b, 0x95, 0xcf, 0xa9, 0x0d, 
+    0x95, 0x16, 0x20, 0x87, 0xc7, 0x68, 0xa8, 0xa6, 0x07, 0xb9, 0xdd, 0x98, 0x9d, 0xa1, 0x06, 0xe8, 
+    0xb9, 0xdf, 0x98, 0xa4, 0x06, 0x88, 0x4c, 0x7d, 0x9b, 0xa0, 0x01, 0x20, 0xaf, 0x9b, 0x20, 0xbb, 
+    0x9b, 0x98, 0x29, 0x07, 0x85, 0x06, 0xbc, 0x30, 0x07, 0x60, 0xa2, 0x00, 0x18, 0xb5, 0x0f, 0xf0, 
+    0x05, 0xe8, 0xe0, 0x05, 0xd0, 0xf6, 0x60, 0x20, 0xac, 0x9b, 0xa9, 0x86, 0x8d, 0xab, 0x06, 0xa2, 
+    0x0b, 0xa0, 0x01, 0xa9, 0x87, 0x4c, 0x7d, 0x9b, 0xa9, 0x03, 0x2c, 0xa9, 0x07, 0x48, 0x20, 0xac, 
+    0x9b, 0x68, 0xaa, 0xa9, 0xc0, 0x9d, 0xa1, 0x06, 0x60, 0xa9, 0x06, 0x2c, 0xa9, 0x07, 0x2c, 0xa9, 
+    0x09, 0x48, 0x20, 0xac, 0x9b, 0x68, 0xaa, 0xa9, 0x0b, 0x9d, 0xa1, 0x06, 0xe8, 0xa0, 0x00, 0xa9, 
+    0x63, 0x4c, 0x7d, 0x9b, 0x20, 0xbb, 0x9b, 0xa2, 0x02, 0xa9, 0x6d, 0x4c, 0x7d, 0x9b, 0xa9, 0x24, 
+    0x8d, 0xa1, 0x06, 0xa2, 0x01, 0xa0, 0x08, 0xa9, 0x25, 0x20, 0x7d, 0x9b, 0xa9, 0x61, 0x8d, 0xab, 
+    0x06, 0x20, 0xcb, 0x9b, 0x38, 0xe9, 0x08, 0x85, 0x8c, 0xad, 0x25, 0x07, 0xe9, 0x00, 0x85, 0x73, 
+    0xa9, 0x30, 0x85, 0xd4, 0xa9, 0xb0, 0x8d, 0x0d, 0x01, 0xa9, 0x30, 0x85, 0x1b, 0xe6, 0x14, 0x60, 
+    0xa2, 0x00, 0xa0, 0x0f, 0x4c, 0xe9, 0x99, 0x8a, 0x48, 0xa2, 0x01, 0xa0, 0x0f, 0xa9, 0x44, 0x20, 
+    0x7d, 0x9b, 0x68, 0xaa, 0x20, 0xbb, 0x9b, 0xa2, 0x01, 0xa9, 0x40, 0x4c, 0x7d, 0x9b, 0xc3, 0xc2, 
+    0xc2, 0xc2, 0xac, 0x4e, 0x07, 0xb9, 0xee, 0x99, 0x4c, 0x44, 0x9a, 0x06, 0x07, 0x08, 0xc5, 0x0c, 
+    0x89, 0xa0, 0x0c, 0x20, 0xaf, 0x9b, 0x4c, 0x0e, 0x9a, 0xa9, 0x08, 0x8d, 0x73, 0x07, 0xa4, 0x00, 
+    0xbe, 0xf9, 0x99, 0xb9, 0xfc, 0x99, 0x4c, 0x20, 0x9a, 0x20, 0xbb, 0x9b, 0xa6, 0x07, 0xa9, 0xc4, 
+    0xa0, 0x00, 0x4c, 0x7d, 0x9b, 0x69, 0x61, 0x61, 0x62, 0x22, 0x51, 0x52, 0x52, 0x88, 0xac, 0x4e, 
+    0x07, 0xad, 0x43, 0x07, 0xf0, 0x02, 0xa0, 0x04, 0xb9, 0x29, 0x9a, 0x4c, 0x44, 0x9a, 0xac, 0x4e, 
+    0x07, 0xb9, 0x25, 0x9a, 0x48, 0x20, 0xac, 0x9b, 0xa6, 0x07, 0xa0, 0x00, 0x68, 0x4c, 0x7d, 0x9b, 
+    0xac, 0x4e, 0x07, 0xb9, 0x29, 0x9a, 0x4c, 0x5f, 0x9a, 0xac, 0x4e, 0x07, 0xb9, 0x25, 0x9a, 0x48, 
+    0x20, 0xbb, 0x9b, 0x68, 0xa6, 0x07, 0x4c, 0x7d, 0x9b, 0x20, 0xbb, 0x9b, 0xa6, 0x07, 0xa9, 0x64, 
+    0x9d, 0xa1, 0x06, 0xe8, 0x88, 0x30, 0x0e, 0xa9, 0x65, 0x9d, 0xa1, 0x06, 0xe8, 0x88, 0x30, 0x05, 
+    0xa9, 0x66, 0x20, 0x7d, 0x9b, 0xae, 0x6a, 0x04, 0x20, 0xd3, 0x9b, 0x9d, 0x77, 0x04, 0xad, 0x25, 
+    0x07, 0x9d, 0x6b, 0x04, 0x20, 0xcb, 0x9b, 0x9d, 0x71, 0x04, 0xe8, 0xe0, 0x06, 0x90, 0x02, 0xa2, 
+    0x00, 0x8e, 0x6a, 0x04, 0x60, 0x07, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x03, 0x03, 
+    0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x20, 0xac, 0x9b, 0x90, 0x05, 0xa9, 0x09, 0x8d, 0x34, 
+    0x07, 0xce, 0x34, 0x07, 0xac, 0x34, 0x07, 0xbe, 0xae, 0x9a, 0xb9, 0xa5, 0x9a, 0xa8, 0xa9, 0x61, 
+    0x4c, 0x7d, 0x9b, 0x20, 0xbb, 0x9b, 0x20, 0x4a, 0x99, 0x20, 0xcb, 0x9b, 0x95, 0x87, 0xad, 0x25, 
+    0x07, 0x95, 0x6e, 0x20, 0xd3, 0x9b, 0x95, 0xcf, 0x95, 0x58, 0xa9, 0x32, 0x95, 0x16, 0xa0, 0x01, 
+    0x94, 0xb6, 0xf6, 0x0f, 0xa6, 0x07, 0xa9, 0x67, 0x9d, 0xa1, 0x06, 0xa9, 0x68, 0x9d, 0xa2, 0x06, 
+    0x60, 0xad, 0x5d, 0x07, 0xf0, 0x36, 0xa9, 0x00, 0x8d, 0x5d, 0x07, 0x4c, 0x19, 0x9b, 0x20, 0x36, 
+    0x9b, 0x4c, 0x2c, 0x9b, 0xa9, 0x00, 0x8d, 0xbc, 0x06, 0x20, 0x36, 0x9b, 0x84, 0x07, 0xa9, 0x00, 
+    0xac, 0x4e, 0x07, 0x88, 0xf0, 0x02, 0xa9, 0x05, 0x18, 0x65, 0x07, 0xa8, 0xb9, 0xe8, 0xbd, 0x48, 
+    0x20, 0xbb, 0x9b, 0x4c, 0x48, 0x9a, 0xa5, 0x00, 0x38, 0xe9, 0x00, 0xa8, 0x60, 0x87, 0x00, 0x00, 
+    0x00, 0x20, 0xac, 0x9b, 0x90, 0x2d, 0xad, 0x4e, 0x07, 0xd0, 0x28, 0xae, 0x6a, 0x04, 0x20, 0xcb, 
+    0x9b, 0x38, 0xe9, 0x10, 0x9d, 0x71, 0x04, 0xad, 0x25, 0x07, 0xe9, 0x00, 0x9d, 0x6b, 0x04, 0xc8, 
+    0xc8, 0x98, 0x0a, 0x0a, 0x0a, 0x0a, 0x9d, 0x77, 0x04, 0xe8, 0xe0, 0x05, 0x90, 0x02, 0xa2, 0x00, 
+    0x8e, 0x6a, 0x04, 0xae, 0x4e, 0x07, 0xbd, 0x3d, 0x9b, 0xa2, 0x08, 0xa0, 0x0f, 0x8c, 0x35, 0x07, 
+    0xbc, 0xa1, 0x06, 0xf0, 0x18, 0xc0, 0x17, 0xf0, 0x17, 0xc0, 0x1a, 0xf0, 0x13, 0xc0, 0xc0, 0xf0, 
+    0x0c, 0xc0, 0xc0, 0xb0, 0x0b, 0xc0, 0x54, 0xd0, 0x04, 0xc9, 0x50, 0xf0, 0x03, 0x9d, 0xa1, 0x06, 
+    0xe8, 0xe0, 0x0d, 0xb0, 0x06, 0xac, 0x35, 0x07, 0x88, 0x10, 0xd2, 0x60, 0x20, 0xbb, 0x9b, 0xbd, 
+    0x30, 0x07, 0x18, 0x10, 0x05, 0x98, 0x9d, 0x30, 0x07, 0x38, 0x60, 0xbc, 0x2d, 0x07, 0xb1, 0xe7, 
+    0x29, 0x0f, 0x85, 0x07, 0xc8, 0xb1, 0xe7, 0x29, 0x0f, 0xa8, 0x60, 0xad, 0x26, 0x07, 0x0a, 0x0a, 
+    0x0a, 0x0a, 0x60, 0xa5, 0x07, 0x0a, 0x0a, 0x0a, 0x0a, 0x18, 0x69, 0x20, 0x60, 0x00, 0xd0, 0x05, 
+    0x05, 0x48, 0x4a, 0x4a, 0x4a, 0x4a, 0xa8, 0xb9, 0xdf, 0x9b, 0x85, 0x07, 0x68, 0x29, 0x0f, 0x18, 
+    0x79, 0xdd, 0x9b, 0x85, 0x06, 0x60, 0xff, 0xff, 0x12, 0x36, 0x0e, 0x0e, 0x0e, 0x32, 0x32, 0x32, 
+    0x0a, 0x26, 0x40, 0x20, 0x13, 0x9c, 0x8d, 0x50, 0x07, 0x29, 0x60, 0x0a, 0x2a, 0x2a, 0x2a, 0x8d, 
+    0x4e, 0x07, 0x60, 0xac, 0x5f, 0x07, 0xb9, 0xb4, 0x9c, 0x18, 0x6d, 0x60, 0x07, 0xa8, 0xb9, 0xbc, 
+    0x9c, 0x60, 0xad, 0x50, 0x07, 0x20, 0x09, 0x9c, 0xa8, 0xad, 0x50, 0x07, 0x29, 0x1f, 0x8d, 0x4f, 
+    0x07, 0xb9, 0xe0, 0x9c, 0x18, 0x6d, 0x4f, 0x07, 0xa8, 0xb9, 0xe4, 0x9c, 0x85, 0xe9, 0xb9, 0x06, 
+    0x9d, 0x85, 0xea, 0xac, 0x4e, 0x07, 0xb9, 0x28, 0x9d, 0x18, 0x6d, 0x4f, 0x07, 0xa8, 0xb9, 0x2c, 
+    0x9d, 0x85, 0xe7, 0xb9, 0x4e, 0x9d, 0x85, 0xe8, 0xa0, 0x00, 0xb1, 0xe7, 0x48, 0x29, 0x07, 0xc9, 
+    0x04, 0x90, 0x05, 0x8d, 0x44, 0x07, 0xa9, 0x00, 0x8d, 0x41, 0x07, 0x68, 0x48, 0x29, 0x38, 0x4a, 
+    0x4a, 0x4a, 0x8d, 0x10, 0x07, 0x68, 0x29, 0xc0, 0x18, 0x2a, 0x2a, 0x2a, 0x8d, 0x15, 0x07, 0xc8, 
+    0xb1, 0xe7, 0x48, 0x29, 0x0f, 0x8d, 0x27, 0x07, 0x68, 0x48, 0x29, 0x30, 0x4a, 0x4a, 0x4a, 0x4a, 
+    0x8d, 0x42, 0x07, 0x68, 0x29, 0xc0, 0x18, 0x2a, 0x2a, 0x2a, 0xc9, 0x03, 0xd0, 0x05, 0x8d, 0x43, 
+    0x07, 0xa9, 0x00, 0x8d, 0x33, 0x07, 0xa5, 0xe7, 0x18, 0x69, 0x02, 0x85, 0xe7, 0xa5, 0xe8, 0x69, 
+    0x00, 0x85, 0xe8, 0x60, 0x00, 0x05, 0x0a, 0x0e, 0x13, 0x17, 0x1b, 0x20, 0x25, 0x29, 0xc0, 0x26, 
+    0x60, 0x28, 0x29, 0x01, 0x27, 0x62, 0x24, 0x35, 0x20, 0x63, 0x22, 0x29, 0x41, 0x2c, 0x61, 0x2a, 
+    0x31, 0x26, 0x62, 0x2e, 0x23, 0x2d, 0x60, 0x33, 0x29, 0x01, 0x27, 0x64, 0x30, 0x32, 0x21, 0x65, 
+    0x1f, 0x06, 0x1c, 0x00, 0x70, 0x97, 0xb0, 0xdf, 0x0a, 0x1f, 0x59, 0x7e, 0x9b, 0xa9, 0xd0, 0x01, 
+    0x1f, 0x3c, 0x51, 0x7b, 0x7c, 0xa0, 0xa9, 0xce, 0xf1, 0xfa, 0xfb, 0x35, 0x60, 0x8e, 0xaa, 0xb3, 
+    0xd8, 0x05, 0x33, 0x60, 0x71, 0x9b, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 
+    0x9e, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0xa0, 0xa0, 0xa0, 
+    0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0x00, 0x03, 0x19, 0x1c, 0x06, 0x45, 0xc0, 0x6b, 
+    0xce, 0x37, 0x8a, 0x19, 0x8e, 0xf3, 0x48, 0xcd, 0x32, 0x3b, 0x7a, 0x8f, 0xf6, 0x5b, 0xce, 0xff, 
+    0x92, 0x05, 0x7e, 0xd7, 0x02, 0x35, 0xd8, 0x79, 0xaf, 0x10, 0x8f, 0x02, 0x6f, 0xfa, 0xae, 0xae, 
+    0xae, 0xa4, 0xa4, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6, 0xa7, 0xa7, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa9, 
+    0xa9, 0xa9, 0xaa, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xad, 0xa1, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 
+    0x76, 0xdd, 0xbb, 0x4c, 0xea, 0x1d, 0x1b, 0xcc, 0x56, 0x5d, 0x16, 0x9d, 0xc6, 0x1d, 0x36, 0x9d, 
+    0xc9, 0x1d, 0x04, 0xdb, 0x49, 0x1d, 0x84, 0x1b, 0xc9, 0x5d, 0x88, 0x95, 0x0f, 0x08, 0x30, 0x4c, 
+    0x78, 0x2d, 0xa6, 0x28, 0x90, 0xb5, 0xff, 0x0f, 0x03, 0x56, 0x1b, 0xc9, 0x1b, 0x0f, 0x07, 0x36, 
+    0x1b, 0xaa, 0x1b, 0x48, 0x95, 0x0f, 0x0a, 0x2a, 0x1b, 0x5b, 0x0c, 0x78, 0x2d, 0x90, 0xb5, 0xff, 
+    0x0b, 0x8c, 0x4b, 0x4c, 0x77, 0x5f, 0xeb, 0x0c, 0xbd, 0xdb, 0x19, 0x9d, 0x75, 0x1d, 0x7d, 0x5b, 
+    0xd9, 0x1d, 0x3d, 0xdd, 0x99, 0x1d, 0x26, 0x9d, 0x5a, 0x2b, 0x8a, 0x2c, 0xca, 0x1b, 0x20, 0x95, 
+    0x7b, 0x5c, 0xdb, 0x4c, 0x1b, 0xcc, 0x3b, 0xcc, 0x78, 0x2d, 0xa6, 0x28, 0x90, 0xb5, 0xff, 0x0b, 
+    0x8c, 0x3b, 0x1d, 0x8b, 0x1d, 0xab, 0x0c, 0xdb, 0x1d, 0x0f, 0x03, 0x65, 0x1d, 0x6b, 0x1b, 0x05, 
+    0x9d, 0x0b, 0x1b, 0x05, 0x9b, 0x0b, 0x1d, 0x8b, 0x0c, 0x1b, 0x8c, 0x70, 0x15, 0x7b, 0x0c, 0xdb, 
+    0x0c, 0x0f, 0x08, 0x78, 0x2d, 0xa6, 0x28, 0x90, 0xb5, 0xff, 0x27, 0xa9, 0x4b, 0x0c, 0x68, 0x29, 
+    0x0f, 0x06, 0x77, 0x1b, 0x0f, 0x0b, 0x60, 0x15, 0x4b, 0x8c, 0x78, 0x2d, 0x90, 0xb5, 0xff, 0x0f, 
+    0x03, 0x8e, 0x65, 0xe1, 0xbb, 0x38, 0x6d, 0xa8, 0x3e, 0xe5, 0xe7, 0x0f, 0x08, 0x0b, 0x02, 0x2b, 
+    0x02, 0x5e, 0x65, 0xe1, 0xbb, 0x0e, 0xdb, 0x0e, 0xbb, 0x8e, 0xdb, 0x0e, 0xfe, 0x65, 0xec, 0x0f, 
+    0x0d, 0x4e, 0x65, 0xe1, 0x0f, 0x0e, 0x4e, 0x02, 0xe0, 0x0f, 0x10, 0xfe, 0xe5, 0xe1, 0x1b, 0x85, 
+    0x7b, 0x0c, 0x5b, 0x95, 0x78, 0x2d, 0x90, 0xb5, 0xff, 0xa5, 0x86, 0xe4, 0x28, 0x18, 0xa8, 0x45, 
+    0x83, 0x69, 0x03, 0xc6, 0x29, 0x9b, 0x83, 0x16, 0xa4, 0x88, 0x24, 0xe9, 0x28, 0x05, 0xa8, 0x7b, 
+    0x28, 0x24, 0x8f, 0xc8, 0x03, 0xe8, 0x03, 0x46, 0xa8, 0x85, 0x24, 0xc8, 0x24, 0xff, 0xeb, 0x8e, 
+    0x0f, 0x03, 0xfb, 0x05, 0x17, 0x85, 0xdb, 0x8e, 0x0f, 0x07, 0x57, 0x05, 0x7b, 0x05, 0x9b, 0x80, 
+    0x2b, 0x85, 0xfb, 0x05, 0x0f, 0x0b, 0x1b, 0x05, 0x9b, 0x05, 0xff, 0x2e, 0xc2, 0x66, 0xe2, 0x11, 
+    0x0f, 0x07, 0x02, 0x11, 0x0f, 0x0c, 0x12, 0x11, 0xff, 0x0e, 0xc2, 0xa8, 0xab, 0x00, 0xbb, 0x8e, 
+    0x6b, 0x82, 0xde, 0x00, 0xa0, 0x33, 0x86, 0x43, 0x06, 0x3e, 0xb4, 0xa0, 0xcb, 0x02, 0x0f, 0x07, 
+    0x7e, 0x42, 0xa6, 0x83, 0x02, 0x0f, 0x0a, 0x3b, 0x02, 0xcb, 0x37, 0x0f, 0x0c, 0xe3, 0x0e, 0xff, 
+    0x9b, 0x8e, 0xca, 0x0e, 0xee, 0x42, 0x44, 0x5b, 0x86, 0x80, 0xb8, 0x1b, 0x80, 0x50, 0xba, 0x10, 
+    0xb7, 0x5b, 0x00, 0x17, 0x85, 0x4b, 0x05, 0xfe, 0x34, 0x40, 0xb7, 0x86, 0xc6, 0x06, 0x5b, 0x80, 
+    0x83, 0x00, 0xd0, 0x38, 0x5b, 0x8e, 0x8a, 0x0e, 0xa6, 0x00, 0xbb, 0x0e, 0xc5, 0x80, 0xf3, 0x00, 
+    0xff, 0x1e, 0xc2, 0x00, 0x6b, 0x06, 0x8b, 0x86, 0x63, 0xb7, 0x0f, 0x05, 0x03, 0x06, 0x23, 0x06, 
+    0x4b, 0xb7, 0xbb, 0x00, 0x5b, 0xb7, 0xfb, 0x37, 0x3b, 0xb7, 0x0f, 0x0b, 0x1b, 0x37, 0xff, 0x2b, 
+    0xd7, 0xe3, 0x03, 0xc2, 0x86, 0xe2, 0x06, 0x76, 0xa5, 0xa3, 0x8f, 0x03, 0x86, 0x2b, 0x57, 0x68, 
+    0x28, 0xe9, 0x28, 0xe5, 0x83, 0x24, 0x8f, 0x36, 0xa8, 0x5b, 0x03, 0xff, 0x0f, 0x02, 0x78, 0x40, 
+    0x48, 0xce, 0xf8, 0xc3, 0xf8, 0xc3, 0x0f, 0x07, 0x7b, 0x43, 0xc6, 0xd0, 0x0f, 0x8a, 0xc8, 0x50, 
+    0xff, 0x85, 0x86, 0x0b, 0x80, 0x1b, 0x00, 0xdb, 0x37, 0x77, 0x80, 0xeb, 0x37, 0xfe, 0x2b, 0x20, 
+    0x2b, 0x80, 0x7b, 0x38, 0xab, 0xb8, 0x77, 0x86, 0xfe, 0x42, 0x20, 0x49, 0x86, 0x8b, 0x06, 0x9b, 
+    0x80, 0x7b, 0x8e, 0x5b, 0xb7, 0x9b, 0x0e, 0xbb, 0x0e, 0x9b, 0x80, 0xff, 0x0b, 0x80, 0x60, 0x38, 
+    0x10, 0xb8, 0xc0, 0x3b, 0xdb, 0x8e, 0x40, 0xb8, 0xf0, 0x38, 0x7b, 0x8e, 0xa0, 0xb8, 0xc0, 0xb8, 
+    0xfb, 0x00, 0xa0, 0xb8, 0x30, 0xbb, 0xee, 0x42, 0x88, 0x0f, 0x0b, 0x2b, 0x0e, 0x67, 0x0e, 0xff, 
+    0x0a, 0xaa, 0x0e, 0x28, 0x2a, 0x0e, 0x31, 0x88, 0xff, 0xc7, 0x83, 0xd7, 0x03, 0x42, 0x8f, 0x7a, 
+    0x03, 0x05, 0xa4, 0x78, 0x24, 0xa6, 0x25, 0xe4, 0x25, 0x4b, 0x83, 0xe3, 0x03, 0x05, 0xa4, 0x89, 
+    0x24, 0xb5, 0x24, 0x09, 0xa4, 0x65, 0x24, 0xc9, 0x24, 0x0f, 0x08, 0x85, 0x25, 0xff, 0xcd, 0xa5, 
+    0xb5, 0xa8, 0x07, 0xa8, 0x76, 0x28, 0xcc, 0x25, 0x65, 0xa4, 0xa9, 0x24, 0xe5, 0x24, 0x19, 0xa4, 
+    0x0f, 0x07, 0x95, 0x28, 0xe6, 0x24, 0x19, 0xa4, 0xd7, 0x29, 0x16, 0xa9, 0x58, 0x29, 0x97, 0x29, 
+    0xff, 0x0f, 0x02, 0x02, 0x11, 0x0f, 0x07, 0x02, 0x11, 0xff, 0xff, 0x2b, 0x82, 0xab, 0x38, 0xde, 
+    0x42, 0xe2, 0x1b, 0xb8, 0xeb, 0x3b, 0xdb, 0x80, 0x8b, 0xb8, 0x1b, 0x82, 0xfb, 0xb8, 0x7b, 0x80, 
+    0xfb, 0x3c, 0x5b, 0xbc, 0x7b, 0xb8, 0x1b, 0x8e, 0xcb, 0x0e, 0x1b, 0x8e, 0x0f, 0x0d, 0x2b, 0x3b, 
+    0xbb, 0xb8, 0xeb, 0x82, 0x4b, 0xb8, 0xbb, 0x38, 0x3b, 0xb7, 0xbb, 0x02, 0x0f, 0x13, 0x1b, 0x00, 
+    0xcb, 0x80, 0x6b, 0xbc, 0xff, 0x7b, 0x80, 0xae, 0x00, 0x80, 0x8b, 0x8e, 0xe8, 0x05, 0xf9, 0x86, 
+    0x17, 0x86, 0x16, 0x85, 0x4e, 0x2b, 0x80, 0xab, 0x8e, 0x87, 0x85, 0xc3, 0x05, 0x8b, 0x82, 0x9b, 
+    0x02, 0xab, 0x02, 0xbb, 0x86, 0xcb, 0x06, 0xd3, 0x03, 0x3b, 0x8e, 0x6b, 0x0e, 0xa7, 0x8e, 0xff, 
+    0x29, 0x8e, 0x52, 0x11, 0x83, 0x0e, 0x0f, 0x03, 0x9b, 0x0e, 0x2b, 0x8e, 0x5b, 0x0e, 0xcb, 0x8e, 
+    0xfb, 0x0e, 0xfb, 0x82, 0x9b, 0x82, 0xbb, 0x02, 0xfe, 0x42, 0xe8, 0xbb, 0x8e, 0x0f, 0x0a, 0xab, 
+    0x0e, 0xcb, 0x0e, 0xf9, 0x0e, 0x88, 0x86, 0xa6, 0x06, 0xdb, 0x02, 0xb6, 0x8e, 0xff, 0xab, 0xce, 
+    0xde, 0x42, 0xc0, 0xcb, 0xce, 0x5b, 0x8e, 0x1b, 0xce, 0x4b, 0x85, 0x67, 0x45, 0x0f, 0x07, 0x2b, 
+    0x00, 0x7b, 0x85, 0x97, 0x05, 0x0f, 0x0a, 0x92, 0x02, 0xff, 0x0a, 0xaa, 0x0e, 0x24, 0x4a, 0x1e, 
+    0x23, 0xaa, 0xff, 0x1b, 0x80, 0xbb, 0x38, 0x4b, 0xbc, 0xeb, 0x3b, 0x0f, 0x04, 0x2b, 0x00, 0xab, 
+    0x38, 0xeb, 0x00, 0xcb, 0x8e, 0xfb, 0x80, 0xab, 0xb8, 0x6b, 0x80, 0xfb, 0x3c, 0x9b, 0xbb, 0x5b, 
+    0xbc, 0xfb, 0x00, 0x6b, 0xb8, 0xfb, 0x38, 0xff, 0x0b, 0x86, 0x1a, 0x06, 0xdb, 0x06, 0xde, 0xc2, 
+    0x02, 0xf0, 0x3b, 0xbb, 0x80, 0xeb, 0x06, 0x0b, 0x86, 0x93, 0x06, 0xf0, 0x39, 0x0f, 0x06, 0x60, 
+    0xb8, 0x1b, 0x86, 0xa0, 0xb9, 0xb7, 0x27, 0xbd, 0x27, 0x2b, 0x83, 0xa1, 0x26, 0xa9, 0x26, 0xee, 
+    0x25, 0x0b, 0x27, 0xb4, 0xff, 0x0f, 0x02, 0x1e, 0x2f, 0x60, 0xe0, 0x3a, 0xa5, 0xa7, 0xdb, 0x80, 
+    0x3b, 0x82, 0x8b, 0x02, 0xfe, 0x42, 0x68, 0x70, 0xbb, 0x25, 0xa7, 0x2c, 0x27, 0xb2, 0x26, 0xb9, 
+    0x26, 0x9b, 0x80, 0xa8, 0x82, 0xb5, 0x27, 0xbc, 0x27, 0xb0, 0xbb, 0x3b, 0x82, 0x87, 0x34, 0xee, 
+    0x25, 0x6b, 0xff, 0x1e, 0xa5, 0x0a, 0x2e, 0x28, 0x27, 0x2e, 0x33, 0xc7, 0x0f, 0x03, 0x1e, 0x40, 
+    0x07, 0x2e, 0x30, 0xe7, 0x0f, 0x05, 0x1e, 0x24, 0x44, 0x0f, 0x07, 0x1e, 0x22, 0x6a, 0x2e, 0x23, 
+    0xab, 0x0f, 0x09, 0x1e, 0x41, 0x68, 0x1e, 0x2a, 0x8a, 0x2e, 0x23, 0xa2, 0x2e, 0x32, 0xea, 0xff, 
+    0x3b, 0x87, 0x66, 0x27, 0xcc, 0x27, 0xee, 0x31, 0x87, 0xee, 0x23, 0xa7, 0x3b, 0x87, 0xdb, 0x07, 
+    0xff, 0x0f, 0x01, 0x2e, 0x25, 0x2b, 0x2e, 0x25, 0x4b, 0x4e, 0x25, 0xcb, 0x6b, 0x07, 0x97, 0x47, 
+    0xe9, 0x87, 0x47, 0xc7, 0x7a, 0x07, 0xd6, 0xc7, 0x78, 0x07, 0x38, 0x87, 0xab, 0x47, 0xe3, 0x07, 
+    0x9b, 0x87, 0x0f, 0x09, 0x68, 0x47, 0xdb, 0xc7, 0x3b, 0xc7, 0xff, 0x47, 0x9b, 0xcb, 0x07, 0xfa, 
+    0x1d, 0x86, 0x9b, 0x3a, 0x87, 0x56, 0x07, 0x88, 0x1b, 0x07, 0x9d, 0x2e, 0x65, 0xf0, 0xff, 0x9b, 
+    0x07, 0x05, 0x32, 0x06, 0x33, 0x07, 0x34, 0xce, 0x03, 0xdc, 0x51, 0xee, 0x07, 0x73, 0xe0, 0x74, 
+    0x0a, 0x7e, 0x06, 0x9e, 0x0a, 0xce, 0x06, 0xe4, 0x00, 0xe8, 0x0a, 0xfe, 0x0a, 0x2e, 0x89, 0x4e, 
+    0x0b, 0x54, 0x0a, 0x14, 0x8a, 0xc4, 0x0a, 0x34, 0x8a, 0x7e, 0x06, 0xc7, 0x0a, 0x01, 0xe0, 0x02, 
+    0x0a, 0x47, 0x0a, 0x81, 0x60, 0x82, 0x0a, 0xc7, 0x0a, 0x0e, 0x87, 0x7e, 0x02, 0xa7, 0x02, 0xb3, 
+    0x02, 0xd7, 0x02, 0xe3, 0x02, 0x07, 0x82, 0x13, 0x02, 0x3e, 0x06, 0x7e, 0x02, 0xae, 0x07, 0xfe, 
+    0x0a, 0x0d, 0xc4, 0xcd, 0x43, 0xce, 0x09, 0xde, 0x0b, 0xdd, 0x42, 0xfe, 0x02, 0x5d, 0xc7, 0xfd, 
+    0x5b, 0x07, 0x05, 0x32, 0x06, 0x33, 0x07, 0x34, 0x5e, 0x0a, 0x68, 0x64, 0x98, 0x64, 0xa8, 0x64, 
+    0xce, 0x06, 0xfe, 0x02, 0x0d, 0x01, 0x1e, 0x0e, 0x7e, 0x02, 0x94, 0x63, 0xb4, 0x63, 0xd4, 0x63, 
+    0xf4, 0x63, 0x14, 0xe3, 0x2e, 0x0e, 0x5e, 0x02, 0x64, 0x35, 0x88, 0x72, 0xbe, 0x0e, 0x0d, 0x04, 
+    0xae, 0x02, 0xce, 0x08, 0xcd, 0x4b, 0xfe, 0x02, 0x0d, 0x05, 0x68, 0x31, 0x7e, 0x0a, 0x96, 0x31, 
+    0xa9, 0x63, 0xa8, 0x33, 0xd5, 0x30, 0xee, 0x02, 0xe6, 0x62, 0xf4, 0x61, 0x04, 0xb1, 0x08, 0x3f, 
+    0x44, 0x33, 0x94, 0x63, 0xa4, 0x31, 0xe4, 0x31, 0x04, 0xbf, 0x08, 0x3f, 0x04, 0xbf, 0x08, 0x3f, 
+    0xcd, 0x4b, 0x03, 0xe4, 0x0e, 0x03, 0x2e, 0x01, 0x7e, 0x06, 0xbe, 0x02, 0xde, 0x06, 0xfe, 0x0a, 
+    0x0d, 0xc4, 0xcd, 0x43, 0xce, 0x09, 0xde, 0x0b, 0xdd, 0x42, 0xfe, 0x02, 0x5d, 0xc7, 0xfd, 0x9b, 
+    0x07, 0x05, 0x32, 0x06, 0x33, 0x07, 0x34, 0xfe, 0x00, 0x27, 0xb1, 0x65, 0x32, 0x75, 0x0a, 0x71, 
+    0x00, 0xb7, 0x31, 0x08, 0xe4, 0x18, 0x64, 0x1e, 0x04, 0x57, 0x3b, 0xbb, 0x0a, 0x17, 0x8a, 0x27, 
+    0x3a, 0x73, 0x0a, 0x7b, 0x0a, 0xd7, 0x0a, 0xe7, 0x3a, 0x3b, 0x8a, 0x97, 0x0a, 0xfe, 0x08, 0x24, 
+    0x8a, 0x2e, 0x00, 0x3e, 0x40, 0x38, 0x64, 0x6f, 0x00, 0x9f, 0x00, 0xbe, 0x43, 0xc8, 0x0a, 0xc9, 
+    0x63, 0xce, 0x07, 0xfe, 0x07, 0x2e, 0x81, 0x66, 0x42, 0x6a, 0x42, 0x79, 0x0a, 0xbe, 0x00, 0xc8, 
+    0x64, 0xf8, 0x64, 0x08, 0xe4, 0x2e, 0x07, 0x7e, 0x03, 0x9e, 0x07, 0xbe, 0x03, 0xde, 0x07, 0xfe, 
+    0x0a, 0x03, 0xa5, 0x0d, 0x44, 0xcd, 0x43, 0xce, 0x09, 0xdd, 0x42, 0xde, 0x0b, 0xfe, 0x02, 0x5d, 
+    0xc7, 0xfd, 0x9b, 0x07, 0x05, 0x32, 0x06, 0x33, 0x07, 0x34, 0xfe, 0x06, 0x0c, 0x81, 0x39, 0x0a, 
+    0x5c, 0x01, 0x89, 0x0a, 0xac, 0x01, 0xd9, 0x0a, 0xfc, 0x01, 0x2e, 0x83, 0xa7, 0x01, 0xb7, 0x00, 
+    0xc7, 0x01, 0xde, 0x0a, 0xfe, 0x02, 0x4e, 0x83, 0x5a, 0x32, 0x63, 0x0a, 0x69, 0x0a, 0x7e, 0x02, 
+    0xee, 0x03, 0xfa, 0x32, 0x03, 0x8a, 0x09, 0x0a, 0x1e, 0x02, 0xee, 0x03, 0xfa, 0x32, 0x03, 0x8a, 
+    0x09, 0x0a, 0x14, 0x42, 0x1e, 0x02, 0x7e, 0x0a, 0x9e, 0x07, 0xfe, 0x0a, 0x2e, 0x86, 0x5e, 0x0a, 
+    0x8e, 0x06, 0xbe, 0x0a, 0xee, 0x07, 0x3e, 0x83, 0x5e, 0x07, 0xfe, 0x0a, 0x0d, 0xc4, 0x41, 0x52, 
+    0x51, 0x52, 0xcd, 0x43, 0xce, 0x09, 0xde, 0x0b, 0xdd, 0x42, 0xfe, 0x02, 0x5d, 0xc7, 0xfd, 0x5b, 
+    0x07, 0x05, 0x32, 0x06, 0x33, 0x07, 0x34, 0xfe, 0x0a, 0xae, 0x86, 0xbe, 0x07, 0xfe, 0x02, 0x0d, 
+    0x02, 0x27, 0x32, 0x46, 0x61, 0x55, 0x62, 0x5e, 0x0e, 0x1e, 0x82, 0x68, 0x3c, 0x74, 0x3a, 0x7d, 
+    0x4b, 0x5e, 0x8e, 0x7d, 0x4b, 0x7e, 0x82, 0x84, 0x62, 0x94, 0x61, 0xa4, 0x31, 0xbd, 0x4b, 0xce, 
+    0x06, 0xfe, 0x02, 0x0d, 0x06, 0x34, 0x31, 0x3e, 0x0a, 0x64, 0x32, 0x75, 0x0a, 0x7b, 0x61, 0xa4, 
+    0x33, 0xae, 0x02, 0xde, 0x0e, 0x3e, 0x82, 0x64, 0x32, 0x78, 0x32, 0xb4, 0x36, 0xc8, 0x36, 0xdd, 
+    0x4b, 0x44, 0xb2, 0x58, 0x32, 0x94, 0x63, 0xa4, 0x3e, 0xba, 0x30, 0xc9, 0x61, 0xce, 0x06, 0xdd, 
+    0x4b, 0xce, 0x86, 0xdd, 0x4b, 0xfe, 0x02, 0x2e, 0x86, 0x5e, 0x02, 0x7e, 0x06, 0xfe, 0x02, 0x1e, 
+    0x86, 0x3e, 0x02, 0x5e, 0x06, 0x7e, 0x02, 0x9e, 0x06, 0xfe, 0x0a, 0x0d, 0xc4, 0xcd, 0x43, 0xce, 
+    0x09, 0xde, 0x0b, 0xdd, 0x42, 0xfe, 0x02, 0x5d, 0xc7, 0xfd, 0x5b, 0x06, 0x05, 0x32, 0x06, 0x33, 
+    0x07, 0x34, 0x5e, 0x0a, 0xae, 0x02, 0x0d, 0x01, 0x39, 0x73, 0x0d, 0x03, 0x39, 0x7b, 0x4d, 0x4b, 
+    0xde, 0x06, 0x1e, 0x8a, 0xae, 0x06, 0xc4, 0x33, 0x16, 0xfe, 0xa5, 0x77, 0xfe, 0x02, 0xfe, 0x82, 
+    0x0d, 0x07, 0x39, 0x73, 0xa8, 0x74, 0xed, 0x4b, 0x49, 0xfb, 0xe8, 0x74, 0xfe, 0x0a, 0x2e, 0x82, 
+    0x67, 0x02, 0x84, 0x7a, 0x87, 0x31, 0x0d, 0x0b, 0xfe, 0x02, 0x0d, 0x0c, 0x39, 0x73, 0x5e, 0x06, 
+    0xc6, 0x76, 0x45, 0xff, 0xbe, 0x0a, 0xdd, 0x48, 0xfe, 0x06, 0x3d, 0xcb, 0x46, 0x7e, 0xad, 0x4a, 
+    0xfe, 0x82, 0x39, 0xf3, 0xa9, 0x7b, 0x4e, 0x8a, 0x9e, 0x07, 0xfe, 0x0a, 0x0d, 0xc4, 0xcd, 0x43, 
+    0xce, 0x09, 0xde, 0x0b, 0xdd, 0x42, 0xfe, 0x02, 0x5d, 0xc7, 0xfd, 0x94, 0x11, 0x0f, 0x26, 0xfe, 
+    0x10, 0x28, 0x94, 0x65, 0x15, 0xeb, 0x12, 0xfa, 0x41, 0x4a, 0x96, 0x54, 0x40, 0xa4, 0x42, 0xb7, 
+    0x13, 0xe9, 0x19, 0xf5, 0x15, 0x11, 0x80, 0x47, 0x42, 0x71, 0x13, 0x80, 0x41, 0x15, 0x92, 0x1b, 
+    0x1f, 0x24, 0x40, 0x55, 0x12, 0x64, 0x40, 0x95, 0x12, 0xa4, 0x40, 0xd2, 0x12, 0xe1, 0x40, 0x13, 
+    0xc0, 0x2c, 0x17, 0x2f, 0x12, 0x49, 0x13, 0x83, 0x40, 0x9f, 0x14, 0xa3, 0x40, 0x17, 0x92, 0x83, 
+    0x13, 0x92, 0x41, 0xb9, 0x14, 0xc5, 0x12, 0xc8, 0x40, 0xd4, 0x40, 0x4b, 0x92, 0x78, 0x1b, 0x9c, 
+    0x94, 0x9f, 0x11, 0xdf, 0x14, 0xfe, 0x11, 0x7d, 0xc1, 0x9e, 0x42, 0xcf, 0x20, 0xfd, 0x90, 0xb1, 
+    0x0f, 0x26, 0x29, 0x91, 0x7e, 0x42, 0xfe, 0x40, 0x28, 0x92, 0x4e, 0x42, 0x2e, 0xc0, 0x57, 0x73, 
+    0xc3, 0x25, 0xc7, 0x27, 0x23, 0x84, 0x33, 0x20, 0x5c, 0x01, 0x77, 0x63, 0x88, 0x62, 0x99, 0x61, 
+    0xaa, 0x60, 0xbc, 0x01, 0xee, 0x42, 0x4e, 0xc0, 0x69, 0x11, 0x7e, 0x42, 0xde, 0x40, 0xf8, 0x62, 
+    0x0e, 0xc2, 0xae, 0x40, 0xd7, 0x63, 0xe7, 0x63, 0x33, 0xa7, 0x37, 0x27, 0x43, 0x04, 0xcc, 0x01, 
+    0xe7, 0x73, 0x0c, 0x81, 0x3e, 0x42, 0x0d, 0x0a, 0x5e, 0x40, 0x88, 0x72, 0xbe, 0x42, 0xe7, 0x87, 
+    0xfe, 0x40, 0x39, 0xe1, 0x4e, 0x00, 0x69, 0x60, 0x87, 0x60, 0xa5, 0x60, 0xc3, 0x31, 0xfe, 0x31, 
+    0x6d, 0xc1, 0xbe, 0x42, 0xef, 0x20, 0xfd, 0x52, 0x21, 0x0f, 0x20, 0x6e, 0x40, 0x58, 0xf2, 0x93, 
+    0x01, 0x97, 0x00, 0x0c, 0x81, 0x97, 0x40, 0xa6, 0x41, 0xc7, 0x40, 0x0d, 0x04, 0x03, 0x01, 0x07, 
+    0x01, 0x23, 0x01, 0x27, 0x01, 0xec, 0x03, 0xac, 0xf3, 0xc3, 0x03, 0x78, 0xe2, 0x94, 0x43, 0x47, 
+    0xf3, 0x74, 0x43, 0x47, 0xfb, 0x74, 0x43, 0x2c, 0xf1, 0x4c, 0x63, 0x47, 0x00, 0x57, 0x21, 0x5c, 
+    0x01, 0x7c, 0x72, 0x39, 0xf1, 0xec, 0x02, 0x4c, 0x81, 0xd8, 0x62, 0xec, 0x01, 0x0d, 0x0d, 0x0f, 
+    0x38, 0xc7, 0x07, 0xed, 0x4a, 0x1d, 0xc1, 0x5f, 0x26, 0xfd, 0x54, 0x21, 0x0f, 0x26, 0xa7, 0x22, 
+    0x37, 0xfb, 0x73, 0x20, 0x83, 0x07, 0x87, 0x02, 0x93, 0x20, 0xc7, 0x73, 0x04, 0xf1, 0x06, 0x31, 
+    0x39, 0x71, 0x59, 0x71, 0xe7, 0x73, 0x37, 0xa0, 0x47, 0x04, 0x86, 0x7c, 0xe5, 0x71, 0xe7, 0x31, 
+    0x33, 0xa4, 0x39, 0x71, 0xa9, 0x71, 0xd3, 0x23, 0x08, 0xf2, 0x13, 0x05, 0x27, 0x02, 0x49, 0x71, 
+    0x75, 0x75, 0xe8, 0x72, 0x67, 0xf3, 0x99, 0x71, 0xe7, 0x20, 0xf4, 0x72, 0xf7, 0x31, 0x17, 0xa0, 
+    0x33, 0x20, 0x39, 0x71, 0x73, 0x28, 0xbc, 0x05, 0x39, 0xf1, 0x79, 0x71, 0xa6, 0x21, 0xc3, 0x06, 
+    0xd3, 0x20, 0xdc, 0x00, 0xfc, 0x00, 0x07, 0xa2, 0x13, 0x21, 0x5f, 0x32, 0x8c, 0x00, 0x98, 0x7a, 
+    0xc7, 0x63, 0xd9, 0x61, 0x03, 0xa2, 0x07, 0x22, 0x74, 0x72, 0x77, 0x31, 0xe7, 0x73, 0x39, 0xf1, 
+    0x58, 0x72, 0x77, 0x73, 0xd8, 0x72, 0x7f, 0xb1, 0x97, 0x73, 0xb6, 0x64, 0xc5, 0x65, 0xd4, 0x66, 
+    0xe3, 0x67, 0xf3, 0x67, 0x8d, 0xc1, 0xcf, 0x26, 0xfd, 0x52, 0x31, 0x0f, 0x20, 0x6e, 0x66, 0x07, 
+    0x81, 0x36, 0x01, 0x66, 0x00, 0xa7, 0x22, 0x08, 0xf2, 0x67, 0x7b, 0xdc, 0x02, 0x98, 0xf2, 0xd7, 
+    0x20, 0x39, 0xf1, 0x9f, 0x33, 0xdc, 0x27, 0xdc, 0x57, 0x23, 0x83, 0x57, 0x63, 0x6c, 0x51, 0x87, 
+    0x63, 0x99, 0x61, 0xa3, 0x06, 0xb3, 0x21, 0x77, 0xf3, 0xf3, 0x21, 0xf7, 0x2a, 0x13, 0x81, 0x23, 
+    0x22, 0x53, 0x00, 0x63, 0x22, 0xe9, 0x0b, 0x0c, 0x83, 0x13, 0x21, 0x16, 0x22, 0x33, 0x05, 0x8f, 
+    0x35, 0xec, 0x01, 0x63, 0xa0, 0x67, 0x20, 0x73, 0x01, 0x77, 0x01, 0x83, 0x20, 0x87, 0x20, 0xb3, 
+    0x20, 0xb7, 0x20, 0xc3, 0x01, 0xc7, 0x00, 0xd3, 0x20, 0xd7, 0x20, 0x67, 0xa0, 0x77, 0x07, 0x87, 
+    0x22, 0xe8, 0x62, 0xf5, 0x65, 0x1c, 0x82, 0x7f, 0x38, 0x8d, 0xc1, 0xcf, 0x26, 0xfd, 0x50, 0x21, 
+    0x07, 0x81, 0x47, 0x24, 0x57, 0x00, 0x63, 0x01, 0x77, 0x01, 0xc9, 0x71, 0x68, 0xf2, 0xe7, 0x73, 
+    0x97, 0xfb, 0x06, 0x83, 0x5c, 0x01, 0xd7, 0x22, 0xe7, 0x00, 0x03, 0xa7, 0x6c, 0x02, 0xb3, 0x22, 
+    0xe3, 0x01, 0xe7, 0x07, 0x47, 0xa0, 0x57, 0x06, 0xa7, 0x01, 0xd3, 0x00, 0xd7, 0x01, 0x07, 0x81, 
+    0x67, 0x20, 0x93, 0x22, 0x03, 0xa3, 0x1c, 0x61, 0x17, 0x21, 0x6f, 0x33, 0xc7, 0x63, 0xd8, 0x62, 
+    0xe9, 0x61, 0xfa, 0x60, 0x4f, 0xb3, 0x87, 0x63, 0x9c, 0x01, 0xb7, 0x63, 0xc8, 0x62, 0xd9, 0x61, 
+    0xea, 0x60, 0x39, 0xf1, 0x87, 0x21, 0xa7, 0x01, 0xb7, 0x20, 0x39, 0xf1, 0x5f, 0x38, 0x6d, 0xc1, 
+    0xaf, 0x26, 0xfd, 0x90, 0x11, 0x0f, 0x26, 0xfe, 0x10, 0x2a, 0x93, 0x87, 0x17, 0xa3, 0x14, 0xb2, 
+    0x42, 0x0a, 0x92, 0x19, 0x40, 0x36, 0x14, 0x50, 0x41, 0x82, 0x16, 0x2b, 0x93, 0x24, 0x41, 0xbb, 
+    0x14, 0xb8, 0x00, 0xc2, 0x43, 0xc3, 0x13, 0x1b, 0x94, 0x67, 0x12, 0xc4, 0x15, 0x53, 0xc1, 0xd2, 
+    0x41, 0x12, 0xc1, 0x29, 0x13, 0x85, 0x17, 0x1b, 0x92, 0x1a, 0x42, 0x47, 0x13, 0x83, 0x41, 0xa7, 
+    0x13, 0x0e, 0x91, 0xa7, 0x63, 0xb7, 0x63, 0xc5, 0x65, 0xd5, 0x65, 0xdd, 0x4a, 0xe3, 0x67, 0xf3, 
+    0x67, 0x8d, 0xc1, 0xae, 0x42, 0xdf, 0x20, 0xfd, 0x90, 0x11, 0x0f, 0x26, 0x6e, 0x10, 0x8b, 0x17, 
+    0xaf, 0x32, 0xd8, 0x62, 0xe8, 0x62, 0xfc, 0x3f, 0xad, 0xc8, 0xf8, 0x64, 0x0c, 0xbe, 0x43, 0x43, 
+    0xf8, 0x64, 0x0c, 0xbf, 0x73, 0x40, 0x84, 0x40, 0x93, 0x40, 0xa4, 0x40, 0xb3, 0x40, 0xf8, 0x64, 
+    0x48, 0xe4, 0x5c, 0x39, 0x83, 0x40, 0x92, 0x41, 0xb3, 0x40, 0xf8, 0x64, 0x48, 0xe4, 0x5c, 0x39, 
+    0xf8, 0x64, 0x13, 0xc2, 0x37, 0x65, 0x4c, 0x24, 0x63, 0x00, 0x97, 0x65, 0xc3, 0x42, 0x0b, 0x97, 
+    0xac, 0x32, 0xf8, 0x64, 0x0c, 0xbe, 0x53, 0x45, 0x9d, 0x48, 0xf8, 0x64, 0x2a, 0xe2, 0x3c, 0x47, 
+    0x56, 0x43, 0xba, 0x62, 0xf8, 0x64, 0x0c, 0xb7, 0x88, 0x64, 0xbc, 0x31, 0xd4, 0x45, 0xfc, 0x31, 
+    0x3c, 0xb1, 0x78, 0x64, 0x8c, 0x38, 0x0b, 0x9c, 0x1a, 0x33, 0x18, 0x61, 0x28, 0x61, 0x39, 0x60, 
+    0x5d, 0x4a, 0xee, 0x11, 0x0f, 0xb8, 0x1d, 0xc1, 0x3e, 0x42, 0x6f, 0x20, 0xfd, 0x52, 0x31, 0x0f, 
+    0x20, 0x6e, 0x40, 0xf7, 0x20, 0x07, 0x84, 0x17, 0x20, 0x4f, 0x34, 0xc3, 0x03, 0xc7, 0x02, 0xd3, 
+    0x22, 0x27, 0xe3, 0x39, 0x61, 0xe7, 0x73, 0x5c, 0xe4, 0x57, 0x00, 0x6c, 0x73, 0x47, 0xa0, 0x53, 
+    0x06, 0x63, 0x22, 0xa7, 0x73, 0xfc, 0x73, 0x13, 0xa1, 0x33, 0x05, 0x43, 0x21, 0x5c, 0x72, 0xc3, 
+    0x23, 0xcc, 0x03, 0x77, 0xfb, 0xac, 0x02, 0x39, 0xf1, 0xa7, 0x73, 0xd3, 0x04, 0xe8, 0x72, 0xe3, 
+    0x22, 0x26, 0xf4, 0xbc, 0x02, 0x8c, 0x81, 0xa8, 0x62, 0x17, 0x87, 0x43, 0x24, 0xa7, 0x01, 0xc3, 
+    0x04, 0x08, 0xf2, 0x97, 0x21, 0xa3, 0x02, 0xc9, 0x0b, 0xe1, 0x69, 0xf1, 0x69, 0x8d, 0xc1, 0xcf, 
+    0x26, 0xfd, 0x38, 0x11, 0x0f, 0x26, 0xad, 0x40, 0x3d, 0xc7, 0xfd, 0x95, 0xb1, 0x0f, 0x26, 0x0d, 
+    0x02, 0xc8, 0x72, 0x1c, 0x81, 0x38, 0x72, 0x0d, 0x05, 0x97, 0x34, 0x98, 0x62, 0xa3, 0x20, 0xb3, 
+    0x06, 0xc3, 0x20, 0xcc, 0x03, 0xf9, 0x91, 0x2c, 0x81, 0x48, 0x62, 0x0d, 0x09, 0x37, 0x63, 0x47, 
+    0x03, 0x57, 0x21, 0x8c, 0x02, 0xc5, 0x79, 0xc7, 0x31, 0xf9, 0x11, 0x39, 0xf1, 0xa9, 0x11, 0x6f, 
+    0xb4, 0xd3, 0x65, 0xe3, 0x65, 0x7d, 0xc1, 0xbf, 0x26, 0xfd, 0x00, 0xc1, 0x4c, 0x00, 0xf4, 0x4f, 
+    0x0d, 0x02, 0x02, 0x42, 0x43, 0x4f, 0x52, 0xc2, 0xde, 0x00, 0x5a, 0xc2, 0x4d, 0xc7, 0xfd, 0x90, 
+    0x51, 0x0f, 0x26, 0xee, 0x10, 0x0b, 0x94, 0x33, 0x14, 0x42, 0x42, 0x77, 0x16, 0x86, 0x44, 0x02, 
+    0x92, 0x4a, 0x16, 0x69, 0x42, 0x73, 0x14, 0xb0, 0x00, 0xc7, 0x12, 0x05, 0xc0, 0x1c, 0x17, 0x1f, 
+    0x11, 0x36, 0x12, 0x8f, 0x14, 0x91, 0x40, 0x1b, 0x94, 0x35, 0x12, 0x34, 0x42, 0x60, 0x42, 0x61, 
+    0x12, 0x87, 0x12, 0x96, 0x40, 0xa3, 0x14, 0x1c, 0x98, 0x1f, 0x11, 0x47, 0x12, 0x9f, 0x15, 0xcc, 
+    0x15, 0xcf, 0x11, 0x05, 0xc0, 0x1f, 0x15, 0x39, 0x12, 0x7c, 0x16, 0x7f, 0x11, 0x82, 0x40, 0x98, 
+    0x12, 0xdf, 0x15, 0x16, 0xc4, 0x17, 0x14, 0x54, 0x12, 0x9b, 0x16, 0x28, 0x94, 0xce, 0x01, 0x3d, 
+    0xc1, 0x5e, 0x42, 0x8f, 0x20, 0xfd, 0x97, 0x11, 0x0f, 0x26, 0xfe, 0x10, 0x2b, 0x92, 0x57, 0x12, 
+    0x8b, 0x12, 0xc0, 0x41, 0xf7, 0x13, 0x5b, 0x92, 0x69, 0x0b, 0xbb, 0x12, 0xb2, 0x46, 0x19, 0x93, 
+    0x71, 0x00, 0x17, 0x94, 0x7c, 0x14, 0x7f, 0x11, 0x93, 0x41, 0xbf, 0x15, 0xfc, 0x13, 0xff, 0x11, 
+    0x2f, 0x95, 0x50, 0x42, 0x51, 0x12, 0x58, 0x14, 0xa6, 0x12, 0xdb, 0x12, 0x1b, 0x93, 0x46, 0x43, 
+    0x7b, 0x12, 0x8d, 0x49, 0xb7, 0x14, 0x1b, 0x94, 0x49, 0x0b, 0xbb, 0x12, 0xfc, 0x13, 0xff, 0x12, 
+    0x03, 0xc1, 0x2f, 0x15, 0x43, 0x12, 0x4b, 0x13, 0x77, 0x13, 0x9d, 0x4a, 0x15, 0xc1, 0xa1, 0x41, 
+    0xc3, 0x12, 0xfe, 0x01, 0x7d, 0xc1, 0x9e, 0x42, 0xcf, 0x20, 0xfd, 0x52, 0x21, 0x0f, 0x20, 0x6e, 
+    0x44, 0x0c, 0xf1, 0x4c, 0x01, 0xaa, 0x35, 0xd9, 0x34, 0xee, 0x20, 0x08, 0xb3, 0x37, 0x32, 0x43, 
+    0x04, 0x4e, 0x21, 0x53, 0x20, 0x7c, 0x01, 0x97, 0x21, 0xb7, 0x07, 0x9c, 0x81, 0xe7, 0x42, 0x5f, 
+    0xb3, 0x97, 0x63, 0xac, 0x02, 0xc5, 0x41, 0x49, 0xe0, 0x58, 0x61, 0x76, 0x64, 0x85, 0x65, 0x94, 
+    0x66, 0xa4, 0x22, 0xa6, 0x03, 0xc8, 0x22, 0xdc, 0x02, 0x68, 0xf2, 0x96, 0x42, 0x13, 0x82, 0x17, 
+    0x02, 0xaf, 0x34, 0xf6, 0x21, 0xfc, 0x06, 0x26, 0x80, 0x2a, 0x24, 0x36, 0x01, 0x8c, 0x00, 0xff, 
+    0x35, 0x4e, 0xa0, 0x55, 0x21, 0x77, 0x20, 0x87, 0x07, 0x89, 0x22, 0xae, 0x21, 0x4c, 0x82, 0x9f, 
+    0x34, 0xec, 0x01, 0x03, 0xe7, 0x13, 0x67, 0x8d, 0x4a, 0xad, 0x41, 0x0f, 0xa6, 0xfd, 0x10, 0x51, 
+    0x4c, 0x00, 0xc7, 0x12, 0xc6, 0x42, 0x03, 0x92, 0x02, 0x42, 0x29, 0x12, 0x63, 0x12, 0x62, 0x42, 
+    0x69, 0x14, 0xa5, 0x12, 0xa4, 0x42, 0xe2, 0x14, 0xe1, 0x44, 0xf8, 0x16, 0x37, 0xc1, 0x8f, 0x38, 
+    0x02, 0xbb, 0x28, 0x7a, 0x68, 0x7a, 0xa8, 0x7a, 0xe0, 0x6a, 0xf0, 0x6a, 0x6d, 0xc5, 0xfd, 0x92, 
+    0x31, 0x0f, 0x20, 0x6e, 0x40, 0x0d, 0x02, 0x37, 0x73, 0xec, 0x00, 0x0c, 0x80, 0x3c, 0x00, 0x6c, 
+    0x00, 0x9c, 0x00, 0x06, 0xc0, 0xc7, 0x73, 0x06, 0x83, 0x28, 0x72, 0x96, 0x40, 0xe7, 0x73, 0x26, 
+    0xc0, 0x87, 0x7b, 0xd2, 0x41, 0x39, 0xf1, 0xc8, 0xf2, 0x97, 0xe3, 0xa3, 0x23, 0xe7, 0x02, 0xe3, 
+    0x07, 0xf3, 0x22, 0x37, 0xe3, 0x9c, 0x00, 0xbc, 0x00, 0xec, 0x00, 0x0c, 0x80, 0x3c, 0x00, 0x86, 
+    0x21, 0xa6, 0x06, 0xb6, 0x24, 0x5c, 0x80, 0x7c, 0x00, 0x9c, 0x00, 0x29, 0xe1, 0xdc, 0x05, 0xf6, 
+    0x41, 0xdc, 0x80, 0xe8, 0x72, 0x0c, 0x81, 0x27, 0x73, 0x4c, 0x01, 0x66, 0x74, 0x0d, 0x11, 0x3f, 
+    0x35, 0xb6, 0x41, 0x2c, 0x82, 0x36, 0x40, 0x7c, 0x02, 0x86, 0x40, 0xf9, 0x61, 0x39, 0xe1, 0xac, 
+    0x04, 0xc6, 0x41, 0x0c, 0x83, 0x16, 0x41, 0x88, 0xf2, 0x39, 0xf1, 0x7c, 0x00, 0x89, 0x61, 0x9c, 
+    0x00, 0xa7, 0x63, 0xbc, 0x00, 0xc5, 0x65, 0xdc, 0x00, 0xe3, 0x67, 0xf3, 0x67, 0x8d, 0xc1, 0xcf, 
+    0x26, 0xfd, 0x55, 0xb1, 0x0f, 0x26, 0xcf, 0x33, 0x07, 0xb2, 0x15, 0x11, 0x52, 0x42, 0x99, 0x0b, 
+    0xac, 0x02, 0xd3, 0x24, 0xd6, 0x42, 0xd7, 0x25, 0x23, 0x84, 0xcf, 0x33, 0x07, 0xe3, 0x19, 0x61, 
+    0x78, 0x7a, 0xef, 0x33, 0x2c, 0x81, 0x46, 0x64, 0x55, 0x65, 0x65, 0x65, 0xec, 0x74, 0x47, 0x82, 
+    0x53, 0x05, 0x63, 0x21, 0x62, 0x41, 0x96, 0x22, 0x9a, 0x41, 0xcc, 0x03, 0xb9, 0x91, 0x39, 0xf1, 
+    0x63, 0x26, 0x67, 0x27, 0xd3, 0x06, 0xfc, 0x01, 0x18, 0xe2, 0xd9, 0x07, 0xe9, 0x04, 0x0c, 0x86, 
+    0x37, 0x22, 0x93, 0x24, 0x87, 0x84, 0xac, 0x02, 0xc2, 0x41, 0xc3, 0x23, 0xd9, 0x71, 0xfc, 0x01, 
+    0x7f, 0xb1, 0x9c, 0x00, 0xa7, 0x63, 0xb6, 0x64, 0xcc, 0x00, 0xd4, 0x66, 0xe3, 0x67, 0xf3, 0x67, 
+    0x8d, 0xc1, 0xcf, 0x26, 0xfd, 0x50, 0xb1, 0x0f, 0x26, 0xfc, 0x00, 0x1f, 0xb3, 0x5c, 0x00, 0x65, 
+    0x65, 0x74, 0x66, 0x83, 0x67, 0x93, 0x67, 0xdc, 0x73, 0x4c, 0x80, 0xb3, 0x20, 0xc9, 0x0b, 0xc3, 
+    0x08, 0xd3, 0x2f, 0xdc, 0x00, 0x2c, 0x80, 0x4c, 0x00, 0x8c, 0x00, 0xd3, 0x2e, 0xed, 0x4a, 0xfc, 
+    0x00, 0xd7, 0xa1, 0xec, 0x01, 0x4c, 0x80, 0x59, 0x11, 0xd8, 0x11, 0xda, 0x10, 0x37, 0xa0, 0x47, 
+    0x04, 0x99, 0x11, 0xe7, 0x21, 0x3a, 0x90, 0x67, 0x20, 0x76, 0x10, 0x77, 0x60, 0x87, 0x07, 0xd8, 
+    0x12, 0x39, 0xf1, 0xac, 0x00, 0xe9, 0x71, 0x0c, 0x80, 0x2c, 0x00, 0x4c, 0x05, 0xc7, 0x7b, 0x39, 
+    0xf1, 0xec, 0x00, 0xf9, 0x11, 0x0c, 0x82, 0x6f, 0x34, 0xf8, 0x11, 0xfa, 0x10, 0x7f, 0xb2, 0xac, 
+    0x00, 0xb6, 0x64, 0xcc, 0x01, 0xe3, 0x67, 0xf3, 0x67, 0x8d, 0xc1, 0xcf, 0x26, 0xfd, 0x52, 0xb1, 
+    0x0f, 0x20, 0x6e, 0x45, 0x39, 0x91, 0xb3, 0x04, 0xc3, 0x21, 0xc8, 0x11, 0xca, 0x10, 0x49, 0x91, 
+    0x7c, 0x73, 0xe8, 0x12, 0x88, 0x91, 0x8a, 0x10, 0xe7, 0x21, 0x05, 0x91, 0x07, 0x30, 0x17, 0x07, 
+    0x27, 0x20, 0x49, 0x11, 0x9c, 0x01, 0xc8, 0x72, 0x23, 0xa6, 0x27, 0x26, 0xd3, 0x03, 0xd8, 0x7a, 
+    0x89, 0x91, 0xd8, 0x72, 0x39, 0xf1, 0xa9, 0x11, 0x09, 0xf1, 0x63, 0x24, 0x67, 0x24, 0xd8, 0x62, 
+    0x28, 0x91, 0x2a, 0x10, 0x56, 0x21, 0x70, 0x04, 0x79, 0x0b, 0x8c, 0x00, 0x94, 0x21, 0x9f, 0x35, 
+    0x2f, 0xb8, 0x3d, 0xc1, 0x7f, 0x26, 0xfd, 0x06, 0xc1, 0x4c, 0x00, 0xf4, 0x4f, 0x0d, 0x02, 0x06, 
+    0x20, 0x24, 0x4f, 0x35, 0xa0, 0x36, 0x20, 0x53, 0x46, 0xd5, 0x20, 0xd6, 0x20, 0x34, 0xa1, 0x73, 
+    0x49, 0x74, 0x20, 0x94, 0x20, 0xb4, 0x20, 0xd4, 0x20, 0xf4, 0x20, 0x2e, 0x80, 0x59, 0x42, 0x4d, 
+    0xc7, 0xfd, 0x96, 0x31, 0x0f, 0x26, 0x0d, 0x03, 0x1a, 0x60, 0x77, 0x42, 0xc4, 0x00, 0xc8, 0x62, 
+    0xb9, 0xe1, 0xd3, 0x06, 0xd7, 0x07, 0xf9, 0x61, 0x0c, 0x81, 0x4e, 0xb1, 0x8e, 0xb1, 0xbc, 0x01, 
+    0xe4, 0x50, 0xe9, 0x61, 0x0c, 0x81, 0x0d, 0x0a, 0x84, 0x43, 0x98, 0x72, 0x0d, 0x0c, 0x0f, 0x38, 
+    0x1d, 0xc1, 0x5f, 0x26, 0xfd, 0x48, 0x0f, 0x0e, 0x01, 0x5e, 0x02, 0xa7, 0x00, 0xbc, 0x73, 0x1a, 
+    0xe0, 0x39, 0x61, 0x58, 0x62, 0x77, 0x63, 0x97, 0x63, 0xb8, 0x62, 0xd6, 0x07, 0xf8, 0x62, 0x19, 
+    0xe1, 0x75, 0x52, 0x86, 0x40, 0x87, 0x50, 0x95, 0x52, 0x93, 0x43, 0xa5, 0x21, 0xc5, 0x52, 0xd6, 
+    0x40, 0xd7, 0x20, 0xe5, 0x06, 0xe6, 0x51, 0x3e, 0x8d, 0x5e, 0x03, 0x67, 0x52, 0x77, 0x52, 0x7e, 
+    0x02, 0x9e, 0x03, 0xa6, 0x43, 0xa7, 0x23, 0xde, 0x05, 0xfe, 0x02, 0x1e, 0x83, 0x33, 0x54, 0x46, 
+    0x40, 0x47, 0x21, 0x56, 0x04, 0x5e, 0x02, 0x83, 0x54, 0x93, 0x52, 0x96, 0x07, 0x97, 0x50, 0xbe, 
+    0x03, 0xc7, 0x23, 0xfe, 0x02, 0x0c, 0x82, 0x43, 0x45, 0x45, 0x24, 0x46, 0x24, 0x90, 0x08, 0x95, 
+    0x51, 0x78, 0xfa, 0xd7, 0x73, 0x39, 0xf1, 0x8c, 0x01, 0xa8, 0x52, 0xb8, 0x52, 0xcc, 0x01, 0x5f, 
+    0xb3, 0x97, 0x63, 0x9e, 0x00, 0x0e, 0x81, 0x16, 0x24, 0x66, 0x04, 0x8e, 0x00, 0xfe, 0x01, 0x08, 
+    0xd2, 0x0e, 0x06, 0x6f, 0x47, 0x9e, 0x0f, 0x0e, 0x82, 0x2d, 0x47, 0x28, 0x7a, 0x68, 0x7a, 0xa8, 
+    0x7a, 0xae, 0x01, 0xde, 0x0f, 0x6d, 0xc5, 0xfd, 0x48, 0x0f, 0x0e, 0x01, 0x5e, 0x02, 0xbc, 0x01, 
+    0xfc, 0x01, 0x2c, 0x82, 0x41, 0x52, 0x4e, 0x04, 0x67, 0x25, 0x68, 0x24, 0x69, 0x24, 0xba, 0x42, 
+    0xc7, 0x04, 0xde, 0x0b, 0xb2, 0x87, 0xfe, 0x02, 0x2c, 0xe1, 0x2c, 0x71, 0x67, 0x01, 0x77, 0x00, 
+    0x87, 0x01, 0x8e, 0x00, 0xee, 0x01, 0xf6, 0x02, 0x03, 0x85, 0x05, 0x02, 0x13, 0x21, 0x16, 0x02, 
+    0x27, 0x02, 0x2e, 0x02, 0x88, 0x72, 0xc7, 0x20, 0xd7, 0x07, 0xe4, 0x76, 0x07, 0xa0, 0x17, 0x06, 
+    0x48, 0x7a, 0x76, 0x20, 0x98, 0x72, 0x79, 0xe1, 0x88, 0x62, 0x9c, 0x01, 0xb7, 0x73, 0xdc, 0x01, 
+    0xf8, 0x62, 0xfe, 0x01, 0x08, 0xe2, 0x0e, 0x00, 0x6e, 0x02, 0x73, 0x20, 0x77, 0x23, 0x83, 0x04, 
+    0x93, 0x20, 0xae, 0x00, 0xfe, 0x0a, 0x0e, 0x82, 0x39, 0x71, 0xa8, 0x72, 0xe7, 0x73, 0x0c, 0x81, 
+    0x8f, 0x32, 0xae, 0x00, 0xfe, 0x04, 0x04, 0xd1, 0x17, 0x04, 0x26, 0x49, 0x27, 0x29, 0xdf, 0x33, 
+    0xfe, 0x02, 0x44, 0xf6, 0x7c, 0x01, 0x8e, 0x06, 0xbf, 0x47, 0xee, 0x0f, 0x4d, 0xc7, 0x0e, 0x82, 
+    0x68, 0x7a, 0xae, 0x01, 0xde, 0x0f, 0x6d, 0xc5, 0xfd, 0x48, 0x01, 0x0e, 0x01, 0x00, 0x5a, 0x3e, 
+    0x06, 0x45, 0x46, 0x47, 0x46, 0x53, 0x44, 0xae, 0x01, 0xdf, 0x4a, 0x4d, 0xc7, 0x0e, 0x81, 0x00, 
+    0x5a, 0x2e, 0x04, 0x37, 0x28, 0x3a, 0x48, 0x46, 0x47, 0xc7, 0x07, 0xce, 0x0f, 0xdf, 0x4a, 0x4d, 
+    0xc7, 0x0e, 0x81, 0x00, 0x5a, 0x33, 0x53, 0x43, 0x51, 0x46, 0x40, 0x47, 0x50, 0x53, 0x04, 0x55, 
+    0x40, 0x56, 0x50, 0x62, 0x43, 0x64, 0x40, 0x65, 0x50, 0x71, 0x41, 0x73, 0x51, 0x83, 0x51, 0x94, 
+    0x40, 0x95, 0x50, 0xa3, 0x50, 0xa5, 0x40, 0xa6, 0x50, 0xb3, 0x51, 0xb6, 0x40, 0xb7, 0x50, 0xc3, 
+    0x53, 0xdf, 0x4a, 0x4d, 0xc7, 0x0e, 0x81, 0x00, 0x5a, 0x2e, 0x02, 0x36, 0x47, 0x37, 0x52, 0x3a, 
+    0x49, 0x47, 0x25, 0xa7, 0x52, 0xd7, 0x04, 0xdf, 0x4a, 0x4d, 0xc7, 0x0e, 0x81, 0x00, 0x5a, 0x3e, 
+    0x02, 0x44, 0x51, 0x53, 0x44, 0x54, 0x44, 0x55, 0x24, 0xa1, 0x54, 0xae, 0x01, 0xb4, 0x21, 0xdf, 
+    0x4a, 0xe5, 0x07, 0x4d, 0xc7, 0xfd, 0x41, 0x01, 0xb4, 0x34, 0xc8, 0x52, 0xf2, 0x51, 0x47, 0xd3, 
+    0x6c, 0x03, 0x65, 0x49, 0x9e, 0x07, 0xbe, 0x01, 0xcc, 0x03, 0xfe, 0x07, 0x0d, 0xc9, 0x1e, 0x01, 
+    0x6c, 0x01, 0x62, 0x35, 0x63, 0x53, 0x8a, 0x41, 0xac, 0x01, 0xb3, 0x53, 0xe9, 0x51, 0x26, 0xc3, 
+    0x27, 0x33, 0x63, 0x43, 0x64, 0x33, 0xba, 0x60, 0xc9, 0x61, 0xce, 0x0b, 0xe5, 0x09, 0xee, 0x0f, 
+    0x7d, 0xca, 0x7d, 0x47, 0xfd, 0x41, 0x01, 0xb8, 0x52, 0xea, 0x41, 0x27, 0xb2, 0xb3, 0x42, 0x16, 
+    0xd4, 0x4a, 0x42, 0xa5, 0x51, 0xa7, 0x31, 0x27, 0xd3, 0x08, 0xe2, 0x16, 0x64, 0x2c, 0x04, 0x38, 
+    0x42, 0x76, 0x64, 0x88, 0x62, 0xde, 0x07, 0xfe, 0x01, 0x0d, 0xc9, 0x23, 0x32, 0x31, 0x51, 0x98, 
+    0x52, 0x0d, 0xc9, 0x59, 0x42, 0x63, 0x53, 0x67, 0x31, 0x14, 0xc2, 0x36, 0x31, 0x87, 0x53, 0x17, 
+    0xe3, 0x29, 0x61, 0x30, 0x62, 0x3c, 0x08, 0x42, 0x37, 0x59, 0x40, 0x6a, 0x42, 0x99, 0x40, 0xc9, 
+    0x61, 0xd7, 0x63, 0x39, 0xd1, 0x58, 0x52, 0xc3, 0x67, 0xd3, 0x31, 0xdc, 0x06, 0xf7, 0x42, 0xfa, 
+    0x42, 0x23, 0xb1, 0x43, 0x67, 0xc3, 0x34, 0xc7, 0x34, 0xd1, 0x51, 0x43, 0xb3, 0x47, 0x33, 0x9a, 
+    0x30, 0xa9, 0x61, 0xb8, 0x62, 0xbe, 0x0b, 0xd5, 0x09, 0xde, 0x0f, 0x0d, 0xca, 0x7d, 0x47, 0xfd, 
+    0x49, 0x0f, 0x1e, 0x01, 0x39, 0x73, 0x5e, 0x07, 0xae, 0x0b, 0x1e, 0x82, 0x6e, 0x88, 0x9e, 0x02, 
+    0x0d, 0x04, 0x2e, 0x0b, 0x45, 0x09, 0x4e, 0x0f, 0xed, 0x47, 0xfd, 0xff, 0xad, 0x72, 0x07, 0x20, 
+    0x04, 0x8e, 0xe4, 0x8f, 0x67, 0x85, 0x71, 0x90, 0xea, 0xae, 0xae, 0x53, 0x07, 0xbd, 0xfc, 0x06, 
+    0x8d, 0xfc, 0x06, 0x20, 0x4a, 0xb0, 0xad, 0x72, 0x07, 0xc9, 0x03, 0xb0, 0x01, 0x60, 0x20, 0x24, 
+    0xb6, 0xa2, 0x00, 0x86, 0x08, 0x20, 0x47, 0xc0, 0x20, 0xc3, 0x84, 0xe8, 0xe0, 0x06, 0xd0, 0xf3, 
+    0x20, 0x80, 0xf1, 0x20, 0x2a, 0xf1, 0x20, 0xe9, 0xee, 0x20, 0xd4, 0xbe, 0xa2, 0x01, 0x86, 0x08, 
+    0x20, 0x70, 0xbe, 0xca, 0x86, 0x08, 0x20, 0x70, 0xbe, 0x20, 0x96, 0xbb, 0x20, 0xbc, 0xb9, 0x20, 
+    0xb8, 0xb7, 0x20, 0x55, 0xb8, 0x20, 0x4f, 0xb7, 0x20, 0xe1, 0x89, 0xa5, 0xb5, 0xc9, 0x02, 0x10, 
+    0x11, 0xad, 0x9f, 0x07, 0xf0, 0x1e, 0xc9, 0x04, 0xd0, 0x08, 0xad, 0x7f, 0x07, 0xd0, 0x03, 0x20, 
+    0xed, 0x90, 0xac, 0x9f, 0x07, 0xa5, 0x09, 0xc0, 0x08, 0xb0, 0x02, 0x4a, 0x4a, 0x4a, 0x20, 0x88, 
+    0xb2, 0x4c, 0x67, 0xaf, 0x20, 0x9a, 0xb2, 0xa5, 0x0a, 0x85, 0x0d, 0xa9, 0x00, 0x85, 0x0c, 0xad, 
+    0x73, 0x07, 0xc9, 0x06, 0xf0, 0x1c, 0xad, 0x1f, 0x07, 0xd0, 0x14, 0xad, 0x3d, 0x07, 0xc9, 0x20, 
+    0x30, 0x10, 0xad, 0x3d, 0x07, 0xe9, 0x20, 0x8d, 0x3d, 0x07, 0xa9, 0x00, 0x8d, 0x40, 0x03, 0x20, 
+    0xb0, 0x92, 0x60, 0xad, 0xff, 0x06, 0x18, 0x6d, 0xa1, 0x03, 0x8d, 0xff, 0x06, 0xad, 0x23, 0x07, 
+    0xd0, 0x59, 0xad, 0x55, 0x07, 0xc9, 0x50, 0x90, 0x52, 0xad, 0x85, 0x07, 0xd0, 0x4d, 0xac, 0xff, 
+    0x06, 0x88, 0x30, 0x47, 0xc8, 0xc0, 0x02, 0x90, 0x01, 0x88, 0xad, 0x55, 0x07, 0xc9, 0x70, 0x90, 
+    0x03, 0xac, 0xff, 0x06, 0x98, 0x8d, 0x75, 0x07, 0x18, 0x6d, 0x3d, 0x07, 0x8d, 0x3d, 0x07, 0x98, 
+    0x18, 0x6d, 0x1c, 0x07, 0x8d, 0x1c, 0x07, 0x8d, 0x3f, 0x07, 0xad, 0x1a, 0x07, 0x69, 0x00, 0x8d, 
+    0x1a, 0x07, 0x29, 0x01, 0x85, 0x00, 0xad, 0x78, 0x07, 0x29, 0xfe, 0x05, 0x00, 0x8d, 0x78, 0x07, 
+    0x20, 0x38, 0xb0, 0xa9, 0x08, 0x8d, 0x95, 0x07, 0x4c, 0x00, 0xb0, 0xa9, 0x00, 0x8d, 0x75, 0x07, 
+    0xa2, 0x00, 0x20, 0xf6, 0xf1, 0x85, 0x00, 0xa0, 0x00, 0x0a, 0xb0, 0x07, 0xc8, 0xa5, 0x00, 0x29, 
+    0x20, 0xf0, 0x1b, 0xb9, 0x1c, 0x07, 0x38, 0xf9, 0x34, 0xb0, 0x85, 0x86, 0xb9, 0x1a, 0x07, 0xe9, 
+    0x00, 0x85, 0x6d, 0xa5, 0x0c, 0xd9, 0x36, 0xb0, 0xf0, 0x04, 0xa9, 0x00, 0x85, 0x57, 0xa9, 0x00, 
+    0x8d, 0xa1, 0x03, 0x60, 0x00, 0x10, 0x01, 0x02, 0xad, 0x1c, 0x07, 0x18, 0x69, 0xff, 0x8d, 0x1d, 
+    0x07, 0xad, 0x1a, 0x07, 0x69, 0x00, 0x8d, 0x1b, 0x07, 0x60, 0xa5, 0x0e, 0x20, 0x04, 0x8e, 0x31, 
+    0x91, 0xc7, 0xb1, 0x06, 0xb2, 0xe5, 0xb1, 0xa4, 0xb2, 0xca, 0xb2, 0xcd, 0x91, 0x69, 0xb0, 0xe9, 
+    0xb0, 0x33, 0xb2, 0x45, 0xb2, 0x69, 0xb2, 0x7d, 0xb2, 0xad, 0x52, 0x07, 0xc9, 0x02, 0xf0, 0x2b, 
+    0xa9, 0x00, 0xa4, 0xce, 0xc0, 0x30, 0x90, 0x6e, 0xad, 0x10, 0x07, 0xc9, 0x06, 0xf0, 0x04, 0xc9, 
+    0x07, 0xd0, 0x50, 0xad, 0xc4, 0x03, 0xd0, 0x05, 0xa9, 0x01, 0x4c, 0xe6, 0xb0, 0x20, 0x1f, 0xb2, 
+    0xce, 0xde, 0x06, 0xd0, 0x50, 0xee, 0x69, 0x07, 0x4c, 0x15, 0xb3, 0xad, 0x58, 0x07, 0xd0, 0x0c, 
+    0xa9, 0xff, 0x20, 0x00, 0xb2, 0xa5, 0xce, 0xc9, 0x91, 0x90, 0x28, 0x60, 0xad, 0x99, 0x03, 0xc9, 
+    0x60, 0xd0, 0x32, 0xa5, 0xce, 0xc9, 0x99, 0xa0, 0x00, 0xa9, 0x01, 0x90, 0x0a, 0xa9, 0x03, 0x85, 
+    0x1d, 0xc8, 0xa9, 0x08, 0x8d, 0xb4, 0x05, 0x8c, 0x16, 0x07, 0x20, 0xe6, 0xb0, 0xa5, 0x86, 0xc9, 
+    0x48, 0x90, 0x12, 0xa9, 0x08, 0x85, 0x0e, 0xa9, 0x01, 0x85, 0x33, 0x4a, 0x8d, 0x52, 0x07, 0x8d, 
+    0x16, 0x07, 0x8d, 0x58, 0x07, 0x60, 0x8d, 0xfc, 0x06, 0xa5, 0x0e, 0xc9, 0x0b, 0xf0, 0x3c, 0xad, 
+    0x4e, 0x07, 0xd0, 0x10, 0xa4, 0xb5, 0x88, 0xd0, 0x06, 0xa5, 0xce, 0xc9, 0xd0, 0x90, 0x05, 0xa9, 
+    0x00, 0x8d, 0xfc, 0x06, 0xad, 0xfc, 0x06, 0x29, 0xc0, 0x85, 0x0a, 0xad, 0xfc, 0x06, 0x29, 0x03, 
+    0x85, 0x0c, 0xad, 0xfc, 0x06, 0x29, 0x0c, 0x85, 0x0b, 0x29, 0x04, 0xf0, 0x0e, 0xa5, 0x1d, 0xd0, 
+    0x0a, 0xa4, 0x0c, 0xf0, 0x06, 0xa9, 0x00, 0x85, 0x0c, 0x85, 0x0b, 0x20, 0x29, 0xb3, 0xa0, 0x01, 
+    0xad, 0x54, 0x07, 0xd0, 0x09, 0xa0, 0x00, 0xad, 0x14, 0x07, 0xf0, 0x02, 0xa0, 0x02, 0x8c, 0x99, 
+    0x04, 0xa9, 0x01, 0xa4, 0x57, 0xf0, 0x05, 0x10, 0x01, 0x0a, 0x85, 0x45, 0x20, 0x93, 0xaf, 0x20, 
+    0x80, 0xf1, 0x20, 0x2a, 0xf1, 0xa2, 0x00, 0x20, 0x9c, 0xe2, 0x20, 0x64, 0xdc, 0xa5, 0xce, 0xc9, 
+    0x40, 0x90, 0x16, 0xa5, 0x0e, 0xc9, 0x05, 0xf0, 0x10, 0xc9, 0x07, 0xf0, 0x0c, 0xc9, 0x04, 0x90, 
+    0x08, 0xad, 0xc4, 0x03, 0x29, 0xdf, 0x8d, 0xc4, 0x03, 0xa5, 0xb5, 0xc9, 0x02, 0x30, 0x3b, 0xa2, 
+    0x01, 0x8e, 0x23, 0x07, 0xa0, 0x04, 0x84, 0x07, 0xa2, 0x00, 0xac, 0x59, 0x07, 0xd0, 0x05, 0xac, 
+    0x43, 0x07, 0xd0, 0x16, 0xe8, 0xa4, 0x0e, 0xc0, 0x0b, 0xf0, 0x0f, 0xac, 0x12, 0x07, 0xd0, 0x06, 
+    0xc8, 0x84, 0xfc, 0x8c, 0x12, 0x07, 0xa0, 0x06, 0x84, 0x07, 0xc5, 0x07, 0x30, 0x0c, 0xca, 0x30, 
+    0x0a, 0xac, 0xb1, 0x07, 0xd0, 0x04, 0xa9, 0x06, 0x85, 0x0e, 0x60, 0xa9, 0x00, 0x8d, 0x58, 0x07, 
+    0x20, 0xdd, 0xb1, 0xee, 0x52, 0x07, 0x60, 0xa5, 0xb5, 0xd0, 0x06, 0xa5, 0xce, 0xc9, 0xe4, 0x90, 
+    0x0c, 0xa9, 0x08, 0x8d, 0x58, 0x07, 0xa0, 0x03, 0x84, 0x1d, 0x4c, 0xe6, 0xb0, 0xa9, 0x02, 0x8d, 
+    0x52, 0x07, 0x4c, 0x13, 0xb2, 0xa9, 0x01, 0x20, 0x00, 0xb2, 0x20, 0x93, 0xaf, 0xa0, 0x00, 0xad, 
+    0xd6, 0x06, 0xd0, 0x17, 0xc8, 0xad, 0x4e, 0x07, 0xc9, 0x03, 0xd0, 0x0f, 0xc8, 0x4c, 0x0b, 0xb2, 
+    0x18, 0x65, 0xce, 0x85, 0xce, 0x60, 0x20, 0x1f, 0xb2, 0xa0, 0x02, 0xce, 0xde, 0x06, 0xd0, 0x0e, 
+    0x8c, 0x52, 0x07, 0xee, 0x74, 0x07, 0xa9, 0x00, 0x8d, 0x72, 0x07, 0x8d, 0x22, 0x07, 0x60, 0xa9, 
+    0x08, 0x85, 0x57, 0xa0, 0x01, 0xa5, 0x86, 0x29, 0x0f, 0xd0, 0x03, 0x85, 0x57, 0xa8, 0x98, 0x20, 
+    0xe6, 0xb0, 0x60, 0xad, 0x47, 0x07, 0xc9, 0xf8, 0xd0, 0x03, 0x4c, 0x55, 0xb2, 0xc9, 0xc4, 0xd0, 
+    0x03, 0x20, 0x73, 0xb2, 0x60, 0xad, 0x47, 0x07, 0xc9, 0xf0, 0xb0, 0x07, 0xc9, 0xc8, 0xf0, 0x23, 
+    0x4c, 0xe9, 0xb0, 0xd0, 0x13, 0xac, 0x0b, 0x07, 0xd0, 0x0e, 0x8c, 0x0d, 0x07, 0xee, 0x0b, 0x07, 
+    0xad, 0x54, 0x07, 0x49, 0x01, 0x8d, 0x54, 0x07, 0x60, 0xad, 0x47, 0x07, 0xc9, 0xf0, 0xb0, 0x33, 
+    0x4c, 0xe9, 0xb0, 0xa9, 0x00, 0x8d, 0x47, 0x07, 0xa9, 0x08, 0x85, 0x0e, 0x60, 0xad, 0x47, 0x07, 
+    0xc9, 0xc0, 0xf0, 0x13, 0xa5, 0x09, 0x4a, 0x4a, 0x29, 0x03, 0x85, 0x00, 0xad, 0xc4, 0x03, 0x29, 
+    0xfc, 0x05, 0x00, 0x8d, 0xc4, 0x03, 0x60, 0x20, 0x73, 0xb2, 0xad, 0xc4, 0x03, 0x29, 0xfc, 0x8d, 
+    0xc4, 0x03, 0x60, 0x60, 0xa5, 0x1b, 0xc9, 0x30, 0xd0, 0x15, 0xad, 0x13, 0x07, 0x85, 0xff, 0xa9, 
+    0x00, 0x8d, 0x13, 0x07, 0xa4, 0xce, 0xc0, 0x9e, 0xb0, 0x02, 0xa9, 0x04, 0x4c, 0xe6, 0xb0, 0xe6, 
+    0x0e, 0x60, 0x15, 0x23, 0x16, 0x1b, 0x17, 0x18, 0x23, 0x63, 0xa9, 0x01, 0x20, 0xe6, 0xb0, 0xa5, 
+    0xce, 0xc9, 0xae, 0x90, 0x0e, 0xad, 0x23, 0x07, 0xf0, 0x09, 0xa9, 0x20, 0x85, 0xfc, 0xa9, 0x00, 
+    0x8d, 0x23, 0x07, 0xad, 0x90, 0x04, 0x4a, 0xb0, 0x0d, 0xad, 0x46, 0x07, 0xd0, 0x03, 0xee, 0x46, 
+    0x07, 0xa9, 0x20, 0x8d, 0xc4, 0x03, 0xad, 0x46, 0x07, 0xc9, 0x05, 0xd0, 0x2b, 0xee, 0x5c, 0x07, 
+    0xad, 0x5c, 0x07, 0xc9, 0x03, 0xd0, 0x0e, 0xac, 0x5f, 0x07, 0xad, 0x48, 0x07, 0xd9, 0xc2, 0xb2, 
+    0x90, 0x03, 0xee, 0x5d, 0x07, 0xee, 0x60, 0x07, 0x20, 0x03, 0x9c, 0xee, 0x57, 0x07, 0x20, 0x13, 
+    0xb2, 0x8d, 0x5b, 0x07, 0xa9, 0x80, 0x85, 0xfc, 0x60, 0xa9, 0x00, 0xac, 0x54, 0x07, 0xd0, 0x08, 
+    0xa5, 0x1d, 0xd0, 0x07, 0xa5, 0x0b, 0x29, 0x04, 0x8d, 0x14, 0x07, 0x20, 0x50, 0xb4, 0xad, 0x0b, 
+    0x07, 0xd0, 0x16, 0xa5, 0x1d, 0xc9, 0x03, 0xf0, 0x05, 0xa0, 0x18, 0x8c, 0x89, 0x07, 0x20, 0x04, 
+    0x8e, 0x5a, 0xb3, 0x76, 0xb3, 0x6d, 0xb3, 0xcf, 0xb3, 0x60, 0x20, 0x8f, 0xb5, 0xa5, 0x0c, 0xf0, 
+    0x02, 0x85, 0x33, 0x20, 0xcc, 0xb5, 0x20, 0x09, 0xbf, 0x8d, 0xff, 0x06, 0x60, 0xad, 0x0a, 0x07, 
+    0x8d, 0x09, 0x07, 0x4c, 0xac, 0xb3, 0xa4, 0x9f, 0x10, 0x13, 0xa5, 0x0a, 0x29, 0x80, 0x25, 0x0d, 
+    0xd0, 0x11, 0xad, 0x08, 0x07, 0x38, 0xe5, 0xce, 0xcd, 0x06, 0x07, 0x90, 0x06, 0xad, 0x0a, 0x07, 
+    0x8d, 0x09, 0x07, 0xad, 0x04, 0x07, 0xf0, 0x14, 0x20, 0x8f, 0xb5, 0xa5, 0xce, 0xc9, 0x14, 0xb0, 
+    0x05, 0xa9, 0x18, 0x8d, 0x09, 0x07, 0xa5, 0x0c, 0xf0, 0x02, 0x85, 0x33, 0xa5, 0x0c, 0xf0, 0x03, 
+    0x20, 0xcc, 0xb5, 0x20, 0x09, 0xbf, 0x8d, 0xff, 0x06, 0xa5, 0x0e, 0xc9, 0x0b, 0xd0, 0x05, 0xa9, 
+    0x28, 0x8d, 0x09, 0x07, 0x4c, 0x4d, 0xbf, 0x0e, 0x04, 0xfc, 0xf2, 0x00, 0x00, 0xff, 0xff, 0xad, 
+    0x16, 0x04, 0x18, 0x6d, 0x33, 0x04, 0x8d, 0x16, 0x04, 0xa0, 0x00, 0xa5, 0x9f, 0x10, 0x01, 0x88, 
+    0x84, 0x00, 0x65, 0xce, 0x85, 0xce, 0xa5, 0xb5, 0x65, 0x00, 0x85, 0xb5, 0xa5, 0x0c, 0x2d, 0x90, 
+    0x04, 0xf0, 0x2d, 0xac, 0x89, 0x07, 0xd0, 0x27, 0xa0, 0x18, 0x8c, 0x89, 0x07, 0xa2, 0x00, 0xa4, 
+    0x33, 0x4a, 0xb0, 0x02, 0xe8, 0xe8, 0x88, 0xf0, 0x01, 0xe8, 0xa5, 0x86, 0x18, 0x7d, 0xc7, 0xb3, 
+    0x85, 0x86, 0xa5, 0x6d, 0x7d, 0xcb, 0xb3, 0x85, 0x6d, 0xa5, 0x0c, 0x49, 0x03, 0x85, 0x33, 0x60, 
+    0x8d, 0x89, 0x07, 0x60, 0x20, 0x20, 0x1e, 0x28, 0x28, 0x0d, 0x04, 0x70, 0x70, 0x60, 0x90, 0x90, 
+    0x0a, 0x09, 0xfc, 0xfc, 0xfc, 0xfb, 0xfb, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 
+    0xd8, 0xe8, 0xf0, 0x28, 0x18, 0x10, 0x0c, 0xe4, 0x98, 0xd0, 0x00, 0xff, 0x01, 0x00, 0x20, 0xff, 
+    0xa5, 0x1d, 0xc9, 0x03, 0xd0, 0x23, 0xa0, 0x00, 0xa5, 0x0b, 0x2d, 0x90, 0x04, 0xf0, 0x06, 0xc8, 
+    0x29, 0x08, 0xd0, 0x01, 0xc8, 0xbe, 0x4d, 0xb4, 0x8e, 0x33, 0x04, 0xa9, 0x08, 0xbe, 0x4a, 0xb4, 
+    0x86, 0x9f, 0x30, 0x01, 0x4a, 0x8d, 0x0c, 0x07, 0x60, 0xad, 0x0e, 0x07, 0xd0, 0x0a, 0xa5, 0x0a, 
+    0x29, 0x80, 0xf0, 0x04, 0x25, 0x0d, 0xf0, 0x03, 0x4c, 0x1c, 0xb5, 0xa5, 0x1d, 0xf0, 0x11, 0xad, 
+    0x04, 0x07, 0xf0, 0xf4, 0xad, 0x82, 0x07, 0xd0, 0x07, 0xa5, 0x9f, 0x10, 0x03, 0x4c, 0x1c, 0xb5, 
+    0xa9, 0x20, 0x8d, 0x82, 0x07, 0xa0, 0x00, 0x8c, 0x16, 0x04, 0x8c, 0x33, 0x04, 0xa5, 0xb5, 0x8d, 
+    0x07, 0x07, 0xa5, 0xce, 0x8d, 0x08, 0x07, 0xa9, 0x01, 0x85, 0x1d, 0xad, 0x00, 0x07, 0xc9, 0x09, 
+    0x90, 0x10, 0xc8, 0xc9, 0x10, 0x90, 0x0b, 0xc8, 0xc9, 0x19, 0x90, 0x06, 0xc8, 0xc9, 0x1c, 0x90, 
+    0x01, 0xc8, 0xa9, 0x01, 0x8d, 0x06, 0x07, 0xad, 0x04, 0x07, 0xf0, 0x08, 0xa0, 0x05, 0xad, 0x7d, 
+    0x04, 0xf0, 0x01, 0xc8, 0xb9, 0x24, 0xb4, 0x8d, 0x09, 0x07, 0xb9, 0x2b, 0xb4, 0x8d, 0x0a, 0x07, 
+    0xb9, 0x39, 0xb4, 0x8d, 0x33, 0x04, 0xb9, 0x32, 0xb4, 0x85, 0x9f, 0xad, 0x04, 0x07, 0xf0, 0x11, 
+    0xa9, 0x04, 0x85, 0xff, 0xa5, 0xce, 0xc9, 0x14, 0xb0, 0x12, 0xa9, 0x00, 0x85, 0x9f, 0x4c, 0x1c, 
+    0xb5, 0xa9, 0x01, 0xac, 0x54, 0x07, 0xf0, 0x02, 0xa9, 0x80, 0x85, 0xff, 0xa0, 0x00, 0x84, 0x00, 
+    0xa5, 0x1d, 0xf0, 0x09, 0xad, 0x00, 0x07, 0xc9, 0x19, 0xb0, 0x33, 0x90, 0x18, 0xc8, 0xad, 0x4e, 
+    0x07, 0xf0, 0x12, 0x88, 0xa5, 0x0c, 0xc5, 0x45, 0xd0, 0x0b, 0xa5, 0x0a, 0x29, 0x40, 0xd0, 0x19, 
+    0xad, 0x83, 0x07, 0xd0, 0x19, 0xc8, 0xe6, 0x00, 0xad, 0x03, 0x07, 0xd0, 0x07, 0xad, 0x00, 0x07, 
+    0xc9, 0x21, 0x90, 0x0a, 0xe6, 0x00, 0x4c, 0x5e, 0xb5, 0xa9, 0x01, 0x8d, 0x83, 0x07, 0xb9, 0x40, 
+    0xb4, 0x8d, 0x50, 0x04, 0xa5, 0x0e, 0xc9, 0x07, 0xd0, 0x02, 0xa0, 0x03, 0xb9, 0x43, 0xb4, 0x8d, 
+    0x56, 0x04, 0xa4, 0x00, 0xb9, 0x47, 0xb4, 0x8d, 0x02, 0x07, 0xa9, 0x00, 0x8d, 0x01, 0x07, 0xa5, 
+    0x33, 0xc5, 0x45, 0xf0, 0x06, 0x0e, 0x02, 0x07, 0x2e, 0x01, 0x07, 0x60, 0x02, 0x04, 0x07, 0xa0, 
+    0x00, 0xad, 0x00, 0x07, 0xc9, 0x1c, 0xb0, 0x15, 0xc8, 0xc9, 0x0e, 0xb0, 0x01, 0xc8, 0xad, 0xfc, 
+    0x06, 0x29, 0x7f, 0xf0, 0x20, 0x29, 0x03, 0xc5, 0x45, 0xd0, 0x08, 0xa9, 0x00, 0x8d, 0x03, 0x07, 
+    0x4c, 0xc5, 0xb5, 0xad, 0x00, 0x07, 0xc9, 0x0b, 0xb0, 0x0b, 0xa5, 0x33, 0x85, 0x45, 0xa9, 0x00, 
+    0x85, 0x57, 0x8d, 0x05, 0x07, 0xb9, 0x8c, 0xb5, 0x8d, 0x0c, 0x07, 0x60, 0x2d, 0x90, 0x04, 0xc9, 
+    0x00, 0xd0, 0x08, 0xa5, 0x57, 0xf0, 0x49, 0x10, 0x23, 0x30, 0x03, 0x4a, 0x90, 0x1e, 0xad, 0x05, 
+    0x07, 0x18, 0x6d, 0x02, 0x07, 0x8d, 0x05, 0x07, 0xa5, 0x57, 0x6d, 0x01, 0x07, 0x85, 0x57, 0xcd, 
+    0x56, 0x04, 0x30, 0x23, 0xad, 0x56, 0x04, 0x85, 0x57, 0x4c, 0x20, 0xb6, 0xad, 0x05, 0x07, 0x38, 
+    0xed, 0x02, 0x07, 0x8d, 0x05, 0x07, 0xa5, 0x57, 0xed, 0x01, 0x07, 0x85, 0x57, 0xcd, 0x50, 0x04, 
+    0x10, 0x05, 0xad, 0x50, 0x04, 0x85, 0x57, 0xc9, 0x00, 0x10, 0x05, 0x49, 0xff, 0x18, 0x69, 0x01, 
+    0x8d, 0x00, 0x07, 0x60, 0xad, 0x56, 0x07, 0xc9, 0x02, 0x90, 0x43, 0xa5, 0x0a, 0x29, 0x40, 0xf0, 
+    0x33, 0x25, 0x0d, 0xd0, 0x2f, 0xad, 0xce, 0x06, 0x29, 0x01, 0xaa, 0xb5, 0x24, 0xd0, 0x25, 0xa4, 
+    0xb5, 0x88, 0xd0, 0x20, 0xad, 0x14, 0x07, 0xd0, 0x1b, 0xa5, 0x1d, 0xc9, 0x03, 0xf0, 0x15, 0xa9, 
+    0x20, 0x85, 0xff, 0xa9, 0x02, 0x95, 0x24, 0xac, 0x0c, 0x07, 0x8c, 0x11, 0x07, 0x88, 0x8c, 0x81, 
+    0x07, 0xee, 0xce, 0x06, 0xa2, 0x00, 0x20, 0x89, 0xb6, 0xa2, 0x01, 0x20, 0x89, 0xb6, 0xad, 0x4e, 
+    0x07, 0xd0, 0x13, 0xa2, 0x02, 0x86, 0x08, 0x20, 0xf9, 0xb6, 0x20, 0x31, 0xf1, 0x20, 0x91, 0xf1, 
+    0x20, 0xe1, 0xed, 0xca, 0x10, 0xef, 0x60, 0x40, 0xc0, 0x86, 0x08, 0xb5, 0x24, 0x0a, 0xb0, 0x63, 
+    0xb4, 0x24, 0xf0, 0x5e, 0x88, 0xf0, 0x27, 0xa5, 0x86, 0x69, 0x04, 0x95, 0x8d, 0xa5, 0x6d, 0x69, 
+    0x00, 0x95, 0x74, 0xa5, 0xce, 0x95, 0xd5, 0xa9, 0x01, 0x95, 0xbc, 0xa4, 0x33, 0x88, 0xb9, 0x87, 
+    0xb6, 0x95, 0x5e, 0xa9, 0x04, 0x95, 0xa6, 0xa9, 0x07, 0x9d, 0xa0, 0x04, 0xd6, 0x24, 0x8a, 0x18, 
+    0x69, 0x07, 0xaa, 0xa9, 0x50, 0x85, 0x00, 0xa9, 0x03, 0x85, 0x02, 0xa9, 0x00, 0x20, 0xd7, 0xbf, 
+    0x20, 0x0f, 0xbf, 0xa6, 0x08, 0x20, 0x3b, 0xf1, 0x20, 0x87, 0xf1, 0x20, 0x2d, 0xe2, 0x20, 0xc8, 
+    0xe1, 0xad, 0xd2, 0x03, 0x29, 0xcc, 0xd0, 0x06, 0x20, 0xd9, 0xd6, 0x4c, 0xde, 0xec, 0xa9, 0x00, 
+    0x95, 0x24, 0x60, 0x20, 0x3b, 0xf1, 0x4c, 0x09, 0xed, 0xbd, 0xa8, 0x07, 0x29, 0x01, 0x85, 0x07, 
+    0xb5, 0xe4, 0xc9, 0xf8, 0xd0, 0x2c, 0xad, 0x92, 0x07, 0xd0, 0x3f, 0xa0, 0x00, 0xa5, 0x33, 0x4a, 
+    0x90, 0x02, 0xa0, 0x08, 0x98, 0x65, 0x86, 0x95, 0x9c, 0xa5, 0x6d, 0x69, 0x00, 0x95, 0x83, 0xa5, 
+    0xce, 0x18, 0x69, 0x08, 0x95, 0xe4, 0xa9, 0x01, 0x95, 0xcb, 0xa4, 0x07, 0xb9, 0x4d, 0xb7, 0x8d, 
+    0x92, 0x07, 0xa4, 0x07, 0xbd, 0x2c, 0x04, 0x38, 0xf9, 0x4b, 0xb7, 0x9d, 0x2c, 0x04, 0xb5, 0xe4, 
+    0xe9, 0x00, 0xc9, 0x20, 0xb0, 0x02, 0xa9, 0xf8, 0x95, 0xe4, 0x60, 0xff, 0x50, 0x40, 0x20, 0xad, 
+    0x70, 0x07, 0xf0, 0x4f, 0xa5, 0x0e, 0xc9, 0x08, 0x90, 0x49, 0xc9, 0x0b, 0xf0, 0x45, 0xa5, 0xb5, 
+    0xc9, 0x02, 0xb0, 0x3f, 0xad, 0x87, 0x07, 0xd0, 0x3a, 0xad, 0xf8, 0x07, 0x0d, 0xf9, 0x07, 0x0d, 
+    0xfa, 0x07, 0xf0, 0x26, 0xac, 0xf8, 0x07, 0x88, 0xd0, 0x0c, 0xad, 0xf9, 0x07, 0x0d, 0xfa, 0x07, 
+    0xd0, 0x04, 0xa9, 0x40, 0x85, 0xfc, 0xa9, 0x18, 0x8d, 0x87, 0x07, 0xa0, 0x23, 0xa9, 0xff, 0x8d, 
+    0x39, 0x01, 0x20, 0x5f, 0x8f, 0xa9, 0xa4, 0x4c, 0x06, 0x8f, 0x8d, 0x56, 0x07, 0x20, 0x31, 0xd9, 
+    0xee, 0x59, 0x07, 0x60, 0xad, 0x23, 0x07, 0xf0, 0xfa, 0xa5, 0xce, 0x25, 0xb5, 0xd0, 0xf4, 0x8d, 
+    0x23, 0x07, 0xee, 0xd6, 0x06, 0x4c, 0x98, 0xc9, 0xad, 0x4e, 0x07, 0xd0, 0x37, 0x8d, 0x7d, 0x04, 
+    0xad, 0x47, 0x07, 0xd0, 0x2f, 0xa0, 0x04, 0xb9, 0x71, 0x04, 0x18, 0x79, 0x77, 0x04, 0x85, 0x02, 
+    0xb9, 0x6b, 0x04, 0xf0, 0x1c, 0x69, 0x00, 0x85, 0x01, 0xa5, 0x86, 0x38, 0xf9, 0x71, 0x04, 0xa5, 
+    0x6d, 0xf9, 0x6b, 0x04, 0x30, 0x0b, 0xa5, 0x02, 0x38, 0xe5, 0x86, 0xa5, 0x01, 0xe5, 0x6d, 0x10, 
+    0x04, 0x88, 0x10, 0xd3, 0x60, 0xb9, 0x77, 0x04, 0x4a, 0x85, 0x00, 0xb9, 0x71, 0x04, 0x18, 0x65, 
+    0x00, 0x85, 0x01, 0xb9, 0x6b, 0x04, 0x69, 0x00, 0x85, 0x00, 0xa5, 0x09, 0x4a, 0x90, 0x2c, 0xa5, 
+    0x01, 0x38, 0xe5, 0x86, 0xa5, 0x00, 0xe5, 0x6d, 0x10, 0x0e, 0xa5, 0x86, 0x38, 0xe9, 0x01, 0x85, 
+    0x86, 0xa5, 0x6d, 0xe9, 0x00, 0x4c, 0x39, 0xb8, 0xad, 0x90, 0x04, 0x4a, 0x90, 0x0d, 0xa5, 0x86, 
+    0x18, 0x69, 0x01, 0x85, 0x86, 0xa5, 0x6d, 0x69, 0x00, 0x85, 0x6d, 0xa9, 0x10, 0x85, 0x00, 0xa9, 
+    0x01, 0x8d, 0x7d, 0x04, 0x85, 0x02, 0x4a, 0xaa, 0x4c, 0xd7, 0xbf, 0x05, 0x02, 0x08, 0x04, 0x01, 
+    0x03, 0x03, 0x04, 0x04, 0x04, 0xa2, 0x05, 0x86, 0x08, 0xb5, 0x16, 0xc9, 0x30, 0xd0, 0x56, 0xa5, 
+    0x0e, 0xc9, 0x04, 0xd0, 0x31, 0xa5, 0x1d, 0xc9, 0x03, 0xd0, 0x2b, 0xb5, 0xcf, 0xc9, 0xaa, 0xb0, 
+    0x28, 0xa5, 0xce, 0xc9, 0xa2, 0xb0, 0x22, 0xbd, 0x17, 0x04, 0x69, 0xff, 0x9d, 0x17, 0x04, 0xb5, 
+    0xcf, 0x69, 0x01, 0x95, 0xcf, 0xad, 0x0e, 0x01, 0x38, 0xe9, 0xff, 0x8d, 0x0e, 0x01, 0xad, 0x0d, 
+    0x01, 0xe9, 0x01, 0x8d, 0x0d, 0x01, 0x4c, 0xac, 0xb8, 0xac, 0x0f, 0x01, 0xb9, 0x4b, 0xb8, 0xbe, 
+    0x50, 0xb8, 0x9d, 0x34, 0x01, 0x20, 0x27, 0xbc, 0xa9, 0x05, 0x85, 0x0e, 0x20, 0xaf, 0xf1, 0x20, 
+    0x52, 0xf1, 0x20, 0x4b, 0xe5, 0x60, 0x08, 0x10, 0x08, 0x00, 0x20, 0xaf, 0xf1, 0xad, 0x47, 0x07, 
+    0xd0, 0x40, 0xad, 0x0e, 0x07, 0xf0, 0x3b, 0xa8, 0x88, 0x98, 0x29, 0x02, 0xd0, 0x07, 0xe6, 0xce, 
+    0xe6, 0xce, 0x4c, 0xd9, 0xb8, 0xc6, 0xce, 0xc6, 0xce, 0xb5, 0x58, 0x18, 0x79, 0xb6, 0xb8, 0x95, 
+    0xcf, 0xc0, 0x01, 0x90, 0x0f, 0xa5, 0x0a, 0x29, 0x80, 0xf0, 0x09, 0x25, 0x0d, 0xd0, 0x05, 0xa9, 
+    0xf4, 0x8d, 0xdb, 0x06, 0xc0, 0x03, 0xd0, 0x0a, 0xad, 0xdb, 0x06, 0x85, 0x9f, 0xa9, 0x00, 0x8d, 
+    0x0e, 0x07, 0x20, 0x52, 0xf1, 0x20, 0x7d, 0xe8, 0x20, 0x7a, 0xd6, 0xad, 0x0e, 0x07, 0xf0, 0x0d, 
+    0xad, 0x86, 0x07, 0xd0, 0x08, 0xa9, 0x04, 0x8d, 0x86, 0x07, 0xee, 0x0e, 0x07, 0x60, 0xa9, 0x2f, 
+    0x95, 0x16, 0xa9, 0x01, 0x95, 0x0f, 0xb9, 0x76, 0x00, 0x95, 0x6e, 0xb9, 0x8f, 0x00, 0x95, 0x87, 
+    0xb9, 0xd7, 0x00, 0x95, 0xcf, 0xac, 0x98, 0x03, 0xd0, 0x03, 0x8d, 0x9d, 0x03, 0x8a, 0x99, 0x9a, 
+    0x03, 0xee, 0x98, 0x03, 0xa9, 0x04, 0x85, 0xfe, 0x60, 0x30, 0x60, 0xe0, 0x05, 0xd0, 0x68, 0xac, 
+    0x98, 0x03, 0x88, 0xad, 0x99, 0x03, 0xd9, 0x49, 0xb9, 0xf0, 0x0f, 0xa5, 0x09, 0x4a, 0x4a, 0x90, 
+    0x09, 0xa5, 0xd4, 0xe9, 0x01, 0x85, 0xd4, 0xee, 0x99, 0x03, 0xad, 0x99, 0x03, 0xc9, 0x08, 0x90, 
+    0x46, 0x20, 0x52, 0xf1, 0x20, 0xaf, 0xf1, 0xa0, 0x00, 0x20, 0x35, 0xe4, 0xc8, 0xcc, 0x98, 0x03, 
+    0xd0, 0xf7, 0xad, 0xd1, 0x03, 0x29, 0x0c, 0xf0, 0x10, 0x88, 0xbe, 0x9a, 0x03, 0x20, 0x98, 0xc9, 
+    0x88, 0x10, 0xf7, 0x8d, 0x98, 0x03, 0x8d, 0x99, 0x03, 0xad, 0x99, 0x03, 0xc9, 0x20, 0x90, 0x17, 
+    0xa2, 0x06, 0xa9, 0x01, 0xa0, 0x1b, 0x20, 0xf0, 0xe3, 0xa4, 0x02, 0xc0, 0xd0, 0xb0, 0x08, 0xb1, 
+    0x06, 0xd0, 0x04, 0xa9, 0x26, 0x91, 0x06, 0xa6, 0x08, 0x60, 0x0f, 0x07, 0xad, 0x4e, 0x07, 0xf0, 
+    0x6f, 0xa2, 0x02, 0x86, 0x08, 0xb5, 0x0f, 0xd0, 0x51, 0xbd, 0xa8, 0x07, 0xac, 0xcc, 0x06, 0x39, 
+    0xba, 0xb9, 0xc9, 0x06, 0xb0, 0x44, 0xa8, 0xb9, 0x6b, 0x04, 0xf0, 0x3e, 0xb9, 0x7d, 0x04, 0xf0, 
+    0x08, 0xe9, 0x00, 0x99, 0x7d, 0x04, 0x4c, 0x1a, 0xba, 0xad, 0x47, 0x07, 0xd0, 0x2c, 0xa9, 0x0e, 
+    0x99, 0x7d, 0x04, 0xb9, 0x6b, 0x04, 0x95, 0x6e, 0xb9, 0x71, 0x04, 0x95, 0x87, 0xb9, 0x77, 0x04, 
+    0x38, 0xe9, 0x08, 0x95, 0xcf, 0xa9, 0x01, 0x95, 0xb6, 0x95, 0x0f, 0x4a, 0x95, 0x1e, 0xa9, 0x09, 
+    0x9d, 0x9a, 0x04, 0xa9, 0x33, 0x95, 0x16, 0x4c, 0x2d, 0xba, 0xb5, 0x16, 0xc9, 0x33, 0xd0, 0x0d, 
+    0x20, 0x7a, 0xd6, 0xb5, 0x0f, 0xf0, 0x06, 0x20, 0xaf, 0xf1, 0x20, 0x33, 0xba, 0xca, 0x10, 0x93, 
+    0x60, 0x18, 0xe8, 0xad, 0x47, 0x07, 0xd0, 0x3e, 0xb5, 0x1e, 0xd0, 0x2e, 0xad, 0xd1, 0x03, 0x29, 
+    0x0c, 0xc9, 0x0c, 0xf0, 0x40, 0xa0, 0x01, 0x20, 0x43, 0xe1, 0x30, 0x01, 0xc8, 0x94, 0x46, 0x88, 
+    0xb9, 0x31, 0xba, 0x95, 0x58, 0xa5, 0x00, 0x69, 0x28, 0xc9, 0x50, 0x90, 0x28, 0xa9, 0x01, 0x95, 
+    0x1e, 0xa9, 0x0a, 0x9d, 0x8a, 0x07, 0xa9, 0x08, 0x85, 0xfe, 0xb5, 0x1e, 0x29, 0x20, 0xf0, 0x03, 
+    0x20, 0x63, 0xbf, 0x20, 0x02, 0xbf, 0x20, 0xaf, 0xf1, 0x20, 0x52, 0xf1, 0x20, 0x43, 0xe2, 0x20, 
+    0x53, 0xd8, 0x4c, 0x7d, 0xe8, 0x20, 0x98, 0xc9, 0x60, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x06, 
+    0x06, 0x06, 0x10, 0xf0, 0xad, 0xa8, 0x07, 0x29, 0x07, 0xd0, 0x05, 0xad, 0xa8, 0x07, 0x29, 0x08, 
+    0xa8, 0xb9, 0x2a, 0x00, 0xd0, 0x19, 0xbe, 0x89, 0xba, 0xb5, 0x0f, 0xd0, 0x12, 0xa6, 0x08, 0x8a, 
+    0x99, 0xae, 0x06, 0xa9, 0x90, 0x99, 0x2a, 0x00, 0xa9, 0x07, 0x99, 0xa2, 0x04, 0x38, 0x60, 0xa6, 
+    0x08, 0x18, 0x60, 0xad, 0x47, 0x07, 0xd0, 0x63, 0xb5, 0x2a, 0x29, 0x7f, 0xbc, 0xae, 0x06, 0xc9, 
+    0x02, 0xf0, 0x20, 0xb0, 0x34, 0x8a, 0x18, 0x69, 0x0d, 0xaa, 0xa9, 0x10, 0x85, 0x00, 0xa9, 0x0f, 
+    0x85, 0x01, 0xa9, 0x04, 0x85, 0x02, 0xa9, 0x00, 0x20, 0xd7, 0xbf, 0x20, 0x0f, 0xbf, 0xa6, 0x08, 
+    0x4c, 0x28, 0xbb, 0xa9, 0xfe, 0x95, 0xac, 0xb9, 0x1e, 0x00, 0x29, 0xf7, 0x99, 0x1e, 0x00, 0xb6, 
+    0x46, 0xca, 0xbd, 0x92, 0xba, 0xa6, 0x08, 0x95, 0x64, 0xd6, 0x2a, 0xb9, 0x87, 0x00, 0x18, 0x69, 
+    0x02, 0x95, 0x93, 0xb9, 0x6e, 0x00, 0x69, 0x00, 0x95, 0x7a, 0xb9, 0xcf, 0x00, 0x38, 0xe9, 0x0a, 
+    0x95, 0xdb, 0xa9, 0x01, 0x95, 0xc2, 0xd0, 0x03, 0x20, 0xc4, 0xd7, 0x20, 0x9b, 0xf1, 0x20, 0x48, 
+    0xf1, 0x20, 0x36, 0xe2, 0x20, 0xdc, 0xe4, 0x60, 0x20, 0x84, 0xbb, 0xb5, 0x76, 0x99, 0x7a, 0x00, 
+    0xb5, 0x8f, 0x09, 0x05, 0x99, 0x93, 0x00, 0xb5, 0xd7, 0xe9, 0x10, 0x99, 0xdb, 0x00, 0x4c, 0x6c, 
+    0xbb, 0x20, 0x84, 0xbb, 0xbd, 0xea, 0x03, 0x99, 0x7a, 0x00, 0xa5, 0x06, 0x0a, 0x0a, 0x0a, 0x0a, 
+    0x09, 0x05, 0x99, 0x93, 0x00, 0xa5, 0x02, 0x69, 0x20, 0x99, 0xdb, 0x00, 0xa9, 0xfb, 0x99, 0xac, 
+    0x00, 0xa9, 0x01, 0x99, 0xc2, 0x00, 0x99, 0x2a, 0x00, 0x85, 0xfe, 0x86, 0x08, 0x20, 0xfe, 0xbb, 
+    0xee, 0x48, 0x07, 0x60, 0xa0, 0x08, 0xb9, 0x2a, 0x00, 0xf0, 0x07, 0x88, 0xc0, 0x05, 0xd0, 0xf6, 
+    0xa0, 0x08, 0x8c, 0xb7, 0x06, 0x60, 0xa2, 0x08, 0x86, 0x08, 0xb5, 0x2a, 0xf0, 0x56, 0x0a, 0x90, 
+    0x06, 0x20, 0xc3, 0xba, 0x4c, 0xf4, 0xbb, 0xb4, 0x2a, 0x88, 0xf0, 0x1d, 0xf6, 0x2a, 0xb5, 0x93, 
+    0x18, 0x6d, 0x75, 0x07, 0x95, 0x93, 0xb5, 0x7a, 0x69, 0x00, 0x95, 0x7a, 0xb5, 0x2a, 0xc9, 0x30, 
+    0xd0, 0x26, 0xa9, 0x00, 0x95, 0x2a, 0x4c, 0xf4, 0xbb, 0x8a, 0x18, 0x69, 0x0d, 0xaa, 0xa9, 0x50, 
+    0x85, 0x00, 0xa9, 0x06, 0x85, 0x02, 0x4a, 0x85, 0x01, 0xa9, 0x00, 0x20, 0xd7, 0xbf, 0xa6, 0x08, 
+    0xb5, 0xac, 0xc9, 0x05, 0xd0, 0x02, 0xf6, 0x2a, 0x20, 0x48, 0xf1, 0x20, 0x9b, 0xf1, 0x20, 0x36, 
+    0xe2, 0x20, 0x86, 0xe6, 0xca, 0x10, 0xa1, 0x60, 0x17, 0x1d, 0x0b, 0x11, 0x02, 0x13, 0xa9, 0x01, 
+    0x8d, 0x39, 0x01, 0xae, 0x53, 0x07, 0xbc, 0xf8, 0xbb, 0x20, 0x5f, 0x8f, 0xee, 0x5e, 0x07, 0xad, 
+    0x5e, 0x07, 0xc9, 0x64, 0xd0, 0x0c, 0xa9, 0x00, 0x8d, 0x5e, 0x07, 0xee, 0x5a, 0x07, 0xa9, 0x40, 
+    0x85, 0xfe, 0xa9, 0x02, 0x8d, 0x38, 0x01, 0xae, 0x53, 0x07, 0xbc, 0xfa, 0xbb, 0x20, 0x5f, 0x8f, 
+    0xac, 0x53, 0x07, 0xb9, 0xfc, 0xbb, 0x20, 0x06, 0x8f, 0xac, 0x00, 0x03, 0xb9, 0xfb, 0x02, 0xd0, 
+    0x05, 0xa9, 0x24, 0x99, 0xfb, 0x02, 0xa6, 0x08, 0x60, 0xa9, 0x2e, 0x85, 0x1b, 0xb5, 0x76, 0x85, 
+    0x73, 0xb5, 0x8f, 0x85, 0x8c, 0xa9, 0x01, 0x85, 0xbb, 0xb5, 0xd7, 0x38, 0xe9, 0x08, 0x85, 0xd4, 
+    0xa9, 0x01, 0x85, 0x23, 0x85, 0x14, 0xa9, 0x03, 0x8d, 0x9f, 0x04, 0xa5, 0x39, 0xc9, 0x02, 0xb0, 
+    0x0a, 0xad, 0x56, 0x07, 0xc9, 0x02, 0x90, 0x01, 0x4a, 0x85, 0x39, 0xa9, 0x20, 0x8d, 0xca, 0x03, 
+    0xa9, 0x02, 0x85, 0xfe, 0x60, 0xa2, 0x05, 0x86, 0x08, 0xa5, 0x23, 0xf0, 0x5d, 0x0a, 0x90, 0x23, 
+    0xad, 0x47, 0x07, 0xd0, 0x43, 0xa5, 0x39, 0xf0, 0x11, 0xc9, 0x03, 0xf0, 0x0d, 0xc9, 0x02, 0xd0, 
+    0x37, 0x20, 0xf9, 0xca, 0x20, 0x63, 0xe1, 0x4c, 0xd8, 0xbc, 0x20, 0x77, 0xca, 0x20, 0xc1, 0xdf, 
+    0x4c, 0xd8, 0xbc, 0xa5, 0x09, 0x29, 0x03, 0xd0, 0x19, 0xc6, 0xd4, 0xa5, 0x23, 0xe6, 0x23, 0xc9, 
+    0x11, 0x90, 0x0f, 0xa9, 0x10, 0x95, 0x58, 0xa9, 0x80, 0x85, 0x23, 0x0a, 0x8d, 0xca, 0x03, 0x2a, 
+    0x95, 0x46, 0xa5, 0x23, 0xc9, 0x06, 0x90, 0x12, 0x20, 0x52, 0xf1, 0x20, 0xaf, 0xf1, 0x20, 0x43, 
+    0xe2, 0x20, 0xd2, 0xe6, 0x20, 0x53, 0xd8, 0x20, 0x7a, 0xd6, 0x60, 0x04, 0x12, 0x48, 0xa9, 0x11, 
+    0xae, 0xee, 0x03, 0xac, 0x54, 0x07, 0xd0, 0x02, 0xa9, 0x12, 0x95, 0x26, 0x20, 0x6b, 0x8a, 0xae, 
+    0xee, 0x03, 0xa5, 0x02, 0x9d, 0xe4, 0x03, 0xa8, 0xa5, 0x06, 0x9d, 0xe6, 0x03, 0xb1, 0x06, 0x20, 
+    0xf6, 0xbd, 0x85, 0x00, 0xac, 0x54, 0x07, 0xd0, 0x01, 0x98, 0x90, 0x25, 0xa0, 0x11, 0x94, 0x26, 
+    0xa9, 0xc4, 0xa4, 0x00, 0xc0, 0x58, 0xf0, 0x04, 0xc0, 0x5d, 0xd0, 0x15, 0xad, 0xbc, 0x06, 0xd0, 
+    0x08, 0xa9, 0x0b, 0x8d, 0x9d, 0x07, 0xee, 0xbc, 0x06, 0xad, 0x9d, 0x07, 0xd0, 0x02, 0xa0, 0xc4, 
+    0x98, 0x9d, 0xe8, 0x03, 0x20, 0x84, 0xbd, 0xa4, 0x02, 0xa9, 0x23, 0x91, 0x06, 0xa9, 0x10, 0x8d, 
+    0x84, 0x07, 0x68, 0x85, 0x05, 0xa0, 0x00, 0xad, 0x14, 0x07, 0xd0, 0x05, 0xad, 0x54, 0x07, 0xf0, 
+    0x01, 0xc8, 0xa5, 0xce, 0x18, 0x79, 0xeb, 0xbc, 0x29, 0xf0, 0x95, 0xd7, 0xb4, 0x26, 0xc0, 0x11, 
+    0xf0, 0x06, 0x20, 0x02, 0xbe, 0x4c, 0x7b, 0xbd, 0x20, 0x9b, 0xbd, 0xad, 0xee, 0x03, 0x49, 0x01, 
+    0x8d, 0xee, 0x03, 0x60, 0xa5, 0x86, 0x18, 0x69, 0x08, 0x29, 0xf0, 0x95, 0x8f, 0xa5, 0x6d, 0x69, 
+    0x00, 0x95, 0x76, 0x9d, 0xea, 0x03, 0xa5, 0xb5, 0x95, 0xbe, 0x60, 0x20, 0x1f, 0xbe, 0xa9, 0x02, 
+    0x85, 0xff, 0xa9, 0x00, 0x95, 0x60, 0x9d, 0x3c, 0x04, 0x85, 0x9f, 0xa9, 0xfe, 0x95, 0xa8, 0xa5, 
+    0x05, 0x20, 0xf6, 0xbd, 0x90, 0x31, 0x98, 0xc9, 0x09, 0x90, 0x02, 0xe9, 0x05, 0x20, 0x04, 0x8e, 
+    0xd2, 0xbd, 0x38, 0xbb, 0x38, 0xbb, 0xd8, 0xbd, 0xd2, 0xbd, 0xdf, 0xbd, 0xd5, 0xbd, 0x38, 0xbb, 
+    0xd8, 0xbd, 0xa9, 0x00, 0x2c, 0xa9, 0x02, 0x2c, 0xa9, 0x03, 0x85, 0x39, 0x4c, 0x49, 0xbc, 0xa2, 
+    0x05, 0xac, 0xee, 0x03, 0x20, 0x1e, 0xb9, 0x60, 0xc1, 0xc0, 0x5f, 0x60, 0x55, 0x56, 0x57, 0x58, 
+    0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0xa0, 0x0d, 0xd9, 0xe8, 0xbd, 0xf0, 0x04, 0x88, 0x10, 0xf8, 
+    0x18, 0x60, 0x20, 0x1f, 0xbe, 0xa9, 0x01, 0x9d, 0xec, 0x03, 0x85, 0xfd, 0x20, 0x41, 0xbe, 0xa9, 
+    0xfe, 0x85, 0x9f, 0xa9, 0x05, 0x8d, 0x39, 0x01, 0x20, 0x27, 0xbc, 0xae, 0xee, 0x03, 0x60, 0xae, 
+    0xee, 0x03, 0xa4, 0x02, 0xf0, 0x1a, 0x98, 0x38, 0xe9, 0x10, 0x85, 0x02, 0xa8, 0xb1, 0x06, 0xc9, 
+    0xc2, 0xd0, 0x0d, 0xa9, 0x00, 0x91, 0x06, 0x20, 0x4d, 0x8a, 0xae, 0xee, 0x03, 0x20, 0x51, 0xbb, 
+    0x60, 0xb5, 0x8f, 0x9d, 0xf1, 0x03, 0xa9, 0xf0, 0x95, 0x60, 0x95, 0x62, 0xa9, 0xfa, 0x95, 0xa8, 
+    0xa9, 0xfc, 0x95, 0xaa, 0xa9, 0x00, 0x9d, 0x3c, 0x04, 0x9d, 0x3e, 0x04, 0xb5, 0x76, 0x95, 0x78, 
+    0xb5, 0x8f, 0x95, 0x91, 0xb5, 0xd7, 0x18, 0x69, 0x08, 0x95, 0xd9, 0xa9, 0xfa, 0x95, 0xa8, 0x60, 
+    0xb5, 0x26, 0xf0, 0x5d, 0x29, 0x0f, 0x48, 0xa8, 0x8a, 0x18, 0x69, 0x09, 0xaa, 0x88, 0xf0, 0x33, 
+    0x20, 0xa4, 0xbf, 0x20, 0x0f, 0xbf, 0x8a, 0x18, 0x69, 0x02, 0xaa, 0x20, 0xa4, 0xbf, 0x20, 0x0f, 
+    0xbf, 0xa6, 0x08, 0x20, 0x59, 0xf1, 0x20, 0xb6, 0xf1, 0x20, 0x53, 0xec, 0x68, 0xb4, 0xbe, 0xf0, 
+    0x30, 0x48, 0xa9, 0xf0, 0xd5, 0xd9, 0xb0, 0x02, 0x95, 0xd9, 0xb5, 0xd7, 0xc9, 0xf0, 0x68, 0x90, 
+    0x20, 0xb0, 0x1c, 0x20, 0xa4, 0xbf, 0xa6, 0x08, 0x20, 0x59, 0xf1, 0x20, 0xb6, 0xf1, 0x20, 0xd1, 
+    0xeb, 0xb5, 0xd7, 0x29, 0x0f, 0xc9, 0x05, 0x68, 0xb0, 0x07, 0xa9, 0x01, 0x9d, 0xec, 0x03, 0xa9, 
+    0x00, 0x95, 0x26, 0x60, 0xa2, 0x01, 0x86, 0x08, 0xad, 0x01, 0x03, 0xd0, 0x21, 0xbd, 0xec, 0x03, 
+    0xf0, 0x1c, 0xbd, 0xe6, 0x03, 0x85, 0x06, 0xa9, 0x05, 0x85, 0x07, 0xbd, 0xe4, 0x03, 0x85, 0x02, 
+    0xa8, 0xbd, 0xe8, 0x03, 0x91, 0x06, 0x20, 0x61, 0x8a, 0xa9, 0x00, 0x9d, 0xec, 0x03, 0xca, 0x10, 
+    0xd5, 0x60, 0xe8, 0x20, 0x0f, 0xbf, 0xa6, 0x08, 0x60, 0xad, 0x0e, 0x07, 0xd0, 0x3e, 0xaa, 0xb5, 
+    0x57, 0x0a, 0x0a, 0x0a, 0x0a, 0x85, 0x01, 0xb5, 0x57, 0x4a, 0x4a, 0x4a, 0x4a, 0xc9, 0x08, 0x90, 
+    0x02, 0x09, 0xf0, 0x85, 0x00, 0xa0, 0x00, 0xc9, 0x00, 0x10, 0x01, 0x88, 0x84, 0x02, 0xbd, 0x00, 
+    0x04, 0x18, 0x65, 0x01, 0x9d, 0x00, 0x04, 0xa9, 0x00, 0x2a, 0x48, 0x6a, 0xb5, 0x86, 0x65, 0x00, 
+    0x95, 0x86, 0xb5, 0x6d, 0x65, 0x02, 0x95, 0x6d, 0x68, 0x18, 0x65, 0x00, 0x60, 0xa2, 0x00, 0xad, 
+    0x47, 0x07, 0xd0, 0x05, 0xad, 0x0e, 0x07, 0xd0, 0xf3, 0xad, 0x09, 0x07, 0x85, 0x00, 0xa9, 0x04, 
+    0x4c, 0xad, 0xbf, 0xa0, 0x3d, 0xb5, 0x1e, 0xc9, 0x05, 0xd0, 0x02, 0xa0, 0x20, 0x4c, 0x94, 0xbf, 
+    0xa0, 0x00, 0x4c, 0x77, 0xbf, 0xa0, 0x01, 0xe8, 0xa9, 0x03, 0x85, 0x00, 0xa9, 0x06, 0x85, 0x01, 
+    0xa9, 0x02, 0x85, 0x02, 0x98, 0x4c, 0xd1, 0xbf, 0xa0, 0x7f, 0xd0, 0x02, 0xa0, 0x0f, 0xa9, 0x02, 
+    0xd0, 0x04, 0xa0, 0x1c, 0xa9, 0x03, 0x84, 0x00, 0xe8, 0x20, 0xad, 0xbf, 0xa6, 0x08, 0x60, 0x06, 
+    0x08, 0xa0, 0x00, 0x2c, 0xa0, 0x01, 0xa9, 0x50, 0x85, 0x00, 0xb9, 0x9f, 0xbf, 0x85, 0x02, 0xa9, 
+    0x00, 0x4c, 0xd7, 0xbf, 0xa9, 0x00, 0x2c, 0xa9, 0x01, 0x48, 0xb4, 0x16, 0xe8, 0xa9, 0x05, 0xc0, 
+    0x29, 0xd0, 0x02, 0xa9, 0x09, 0x85, 0x00, 0xa9, 0x0a, 0x85, 0x01, 0xa9, 0x03, 0x85, 0x02, 0x68, 
+    0xa8, 0x20, 0xd7, 0xbf, 0xa6, 0x08, 0x60, 0x48, 0xbd, 0x16, 0x04, 0x18, 0x7d, 0x33, 0x04, 0x9d, 
+    0x16, 0x04, 0xa0, 0x00, 0xb5, 0x9f, 0x10, 0x01, 0x88, 0x84, 0x07, 0x75, 0xce, 0x95, 0xce, 0xb5, 
+    0xb5, 0x65, 0x07, 0x95, 0xb5, 0xbd, 0x33, 0x04, 0x18, 0x65, 0x00, 0x9d, 0x33, 0x04, 0xb5, 0x9f, 
+    0x69, 0x00, 0x95, 0x9f, 0xc5, 0x02, 0x30, 0x10, 0xbd, 0x33, 0x04, 0xc9, 0x80, 0x90, 0x09, 0xa5, 
+    0x02, 0x95, 0x9f, 0xa9, 0x00, 0x9d, 0x33, 0x04, 0x68, 0xf0, 0x2b, 0xa5, 0x02, 0x49, 0xff, 0xa8, 
+    0xc8, 0x84, 0x07, 0xbd, 0x33, 0x04, 0x38, 0xe5, 0x01, 0x9d, 0x33, 0x04, 0xb5, 0x9f, 0xe9, 0x00, 
+    0x95, 0x9f, 0xc5, 0x07, 0x10, 0x10, 0xbd, 0x33, 0x04, 0xc9, 0x80, 0xb0, 0x09, 0xa5, 0x07, 0x95, 
+    0x9f, 0xa9, 0xff, 0x9d, 0x33, 0x04, 0x60, 0xb5, 0x0f, 0x48, 0x0a, 0xb0, 0x12, 0x68, 0xf0, 0x03, 
+    0x4c, 0x82, 0xc8, 0xad, 0x1f, 0x07, 0x29, 0x07, 0xc9, 0x07, 0xf0, 0x0e, 0x4c, 0xcc, 0xc0, 0x68, 
+    0x29, 0x0f, 0xa8, 0xb9, 0x0f, 0x00, 0xd0, 0x02, 0x95, 0x0f, 0x60, 0x03, 0x03, 0x06, 0x06, 0x06, 
+    0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x05, 0x09, 0x04, 0x05, 0x06, 0x08, 0x09, 0x0a, 0x06, 0x0b, 
+    0x10, 0x40, 0xb0, 0xb0, 0x80, 0x40, 0x40, 0x80, 0x40, 0xf0, 0xf0, 0xf0, 0xa5, 0x6d, 0x38, 0xe9, 
+    0x04, 0x85, 0x6d, 0xad, 0x25, 0x07, 0x38, 0xe9, 0x04, 0x8d, 0x25, 0x07, 0xad, 0x1a, 0x07, 0x38, 
+    0xe9, 0x04, 0x8d, 0x1a, 0x07, 0xad, 0x1b, 0x07, 0x38, 0xe9, 0x04, 0x8d, 0x1b, 0x07, 0xad, 0x2a, 
+    0x07, 0x38, 0xe9, 0x04, 0x8d, 0x2a, 0x07, 0xa9, 0x00, 0x8d, 0x3b, 0x07, 0x8d, 0x2b, 0x07, 0x8d, 
+    0x39, 0x07, 0x8d, 0x3a, 0x07, 0xb9, 0xf8, 0x9b, 0x8d, 0x2c, 0x07, 0x60, 0xad, 0x45, 0x07, 0xf0, 
+    0x5e, 0xad, 0x26, 0x07, 0xd0, 0x59, 0xa0, 0x0b, 0x88, 0x30, 0x54, 0xad, 0x5f, 0x07, 0xd9, 0x6b, 
+    0xc0, 0xd0, 0xf5, 0xad, 0x25, 0x07, 0xd9, 0x76, 0xc0, 0xd0, 0xed, 0xa5, 0xce, 0xd9, 0x81, 0xc0, 
+    0xd0, 0x23, 0xa5, 0x1d, 0xc9, 0x00, 0xd0, 0x1d, 0xad, 0x5f, 0x07, 0xc9, 0x06, 0xd0, 0x23, 0xee, 
+    0xd9, 0x06, 0xee, 0xda, 0x06, 0xad, 0xda, 0x06, 0xc9, 0x03, 0xd0, 0x1e, 0xad, 0xd9, 0x06, 0xc9, 
+    0x03, 0xf0, 0x0f, 0xd0, 0x07, 0xad, 0x5f, 0x07, 0xc9, 0x06, 0xf0, 0xe6, 0x20, 0x8c, 0xc0, 0x20, 
+    0x71, 0xd0, 0xa9, 0x00, 0x8d, 0xda, 0x06, 0x8d, 0xd9, 0x06, 0xa9, 0x00, 0x8d, 0x45, 0x07, 0xad, 
+    0xcd, 0x06, 0xf0, 0x10, 0x95, 0x16, 0xa9, 0x01, 0x95, 0x0f, 0xa9, 0x00, 0x95, 0x1e, 0x8d, 0xcd, 
+    0x06, 0x4c, 0x26, 0xc2, 0xac, 0x39, 0x07, 0xb1, 0xe9, 0xc9, 0xff, 0xd0, 0x03, 0x4c, 0x16, 0xc2, 
+    0x29, 0x0f, 0xc9, 0x0e, 0xf0, 0x0e, 0xe0, 0x05, 0x90, 0x0a, 0xc8, 0xb1, 0xe9, 0x29, 0x3f, 0xc9, 
+    0x2e, 0xf0, 0x01, 0x60, 0xad, 0x1d, 0x07, 0x18, 0x69, 0x30, 0x29, 0xf0, 0x85, 0x07, 0xad, 0x1b, 
+    0x07, 0x69, 0x00, 0x85, 0x06, 0xac, 0x39, 0x07, 0xc8, 0xb1, 0xe9, 0x0a, 0x90, 0x0b, 0xad, 0x3b, 
+    0x07, 0xd0, 0x06, 0xee, 0x3b, 0x07, 0xee, 0x3a, 0x07, 0x88, 0xb1, 0xe9, 0x29, 0x0f, 0xc9, 0x0f, 
+    0xd0, 0x19, 0xad, 0x3b, 0x07, 0xd0, 0x14, 0xc8, 0xb1, 0xe9, 0x29, 0x3f, 0x8d, 0x3a, 0x07, 0xee, 
+    0x39, 0x07, 0xee, 0x39, 0x07, 0xee, 0x3b, 0x07, 0x4c, 0xcc, 0xc0, 0xad, 0x3a, 0x07, 0x95, 0x6e, 
+    0xb1, 0xe9, 0x29, 0xf0, 0x95, 0x87, 0xcd, 0x1d, 0x07, 0xb5, 0x6e, 0xed, 0x1b, 0x07, 0xb0, 0x0b, 
+    0xb1, 0xe9, 0x29, 0x0f, 0xc9, 0x0e, 0xf0, 0x69, 0x4c, 0x50, 0xc2, 0xa5, 0x07, 0xd5, 0x87, 0xa5, 
+    0x06, 0xf5, 0x6e, 0x90, 0x41, 0xa9, 0x01, 0x95, 0xb6, 0xb1, 0xe9, 0x0a, 0x0a, 0x0a, 0x0a, 0x95, 
+    0xcf, 0xc9, 0xe0, 0xf0, 0x4c, 0xc8, 0xb1, 0xe9, 0x29, 0x40, 0xf0, 0x05, 0xad, 0xcc, 0x06, 0xf0, 
+    0x6d, 0xb1, 0xe9, 0x29, 0x3f, 0xc9, 0x37, 0x90, 0x04, 0xc9, 0x3f, 0x90, 0x31, 0xc9, 0x06, 0xd0, 
+    0x07, 0xac, 0x6a, 0x07, 0xf0, 0x02, 0xa9, 0x02, 0x95, 0x16, 0xa9, 0x01, 0x95, 0x0f, 0x20, 0x26, 
+    0xc2, 0xb5, 0x0f, 0xd0, 0x49, 0x60, 0xad, 0xcb, 0x06, 0xd0, 0x09, 0xad, 0x98, 0x03, 0xc9, 0x01, 
+    0xd0, 0x0b, 0xa9, 0x2f, 0x95, 0x16, 0xa9, 0x00, 0x95, 0x1e, 0x20, 0x6c, 0xc2, 0x60, 0x4c, 0x1b, 
+    0xc7, 0xc8, 0xc8, 0xb1, 0xe9, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0xcd, 0x5f, 0x07, 0xd0, 0x0e, 0x88, 
+    0xb1, 0xe9, 0x8d, 0x50, 0x07, 0xc8, 0xb1, 0xe9, 0x29, 0x1f, 0x8d, 0x51, 0x07, 0x4c, 0x5b, 0xc2, 
+    0xac, 0x39, 0x07, 0xb1, 0xe9, 0x29, 0x0f, 0xc9, 0x0e, 0xd0, 0x03, 0xee, 0x39, 0x07, 0xee, 0x39, 
+    0x07, 0xee, 0x39, 0x07, 0xa9, 0x00, 0x8d, 0x3b, 0x07, 0xa6, 0x08, 0x60, 0xb5, 0x16, 0xc9, 0x15, 
+    0xb0, 0x0d, 0xa8, 0xb5, 0xcf, 0x69, 0x08, 0x95, 0xcf, 0xa9, 0x01, 0x9d, 0xd8, 0x03, 0x98, 0x20, 
+    0x04, 0x8e, 0x0e, 0xc3, 0x0e, 0xc3, 0x0e, 0xc3, 0x1e, 0xc3, 0xf0, 0xc2, 0x28, 0xc3, 0xf1, 0xc2, 
+    0x42, 0xc3, 0x6b, 0xc3, 0xf0, 0xc2, 0x75, 0xc3, 0x75, 0xc3, 0xf7, 0xc2, 0x87, 0xc7, 0xd1, 0xc7, 
+    0x4a, 0xc3, 0x3d, 0xc3, 0x85, 0xc3, 0xa0, 0xc7, 0xf0, 0xc2, 0xa0, 0xc7, 0xa0, 0xc7, 0xa0, 0xc7, 
+    0xa0, 0xc7, 0xb8, 0xc7, 0xf0, 0xc2, 0xf0, 0xc2, 0x5c, 0xc4, 0x5c, 0xc4, 0x5c, 0xc4, 0x5c, 0xc4, 
+    0x59, 0xc4, 0xf0, 0xc2, 0xf0, 0xc2, 0xf0, 0xc2, 0xf0, 0xc2, 0xdf, 0xc7, 0x12, 0xc8, 0x3f, 0xc8, 
+    0x45, 0xc8, 0x0b, 0xc8, 0x03, 0xc8, 0x0b, 0xc8, 0x4b, 0xc8, 0x57, 0xc8, 0x49, 0xc5, 0x60, 0xbc, 
+    0x1e, 0xb9, 0xf0, 0xc2, 0xf0, 0xc2, 0xf0, 0xc2, 0xf0, 0xc2, 0xf0, 0xc2, 0x07, 0xc3, 0x81, 0xc8, 
+    0x60, 0x20, 0x0e, 0xc3, 0x4c, 0x46, 0xc3, 0xa9, 0x02, 0x95, 0xb6, 0x95, 0xcf, 0x4a, 0x9d, 0x96, 
+    0x07, 0x4a, 0x95, 0x1e, 0x4c, 0x46, 0xc3, 0xa9, 0xb8, 0x95, 0xcf, 0x60, 0xf8, 0xf4, 0xa0, 0x01, 
+    0xad, 0x6a, 0x07, 0xd0, 0x01, 0x88, 0xb9, 0x0c, 0xc3, 0x95, 0x58, 0x4c, 0x5a, 0xc3, 0x20, 0x0e, 
+    0xc3, 0xa9, 0x01, 0x95, 0x1e, 0x60, 0x80, 0x50, 0xa9, 0x00, 0x9d, 0xa2, 0x03, 0x95, 0x58, 0xac, 
+    0xcc, 0x06, 0xb9, 0x26, 0xc3, 0x9d, 0x96, 0x07, 0xa9, 0x0b, 0x4c, 0x5c, 0xc3, 0xa9, 0x00, 0x4c, 
+    0x19, 0xc3, 0xa9, 0x00, 0x95, 0x58, 0xa9, 0x09, 0xd0, 0x12, 0xa0, 0x30, 0xb5, 0xcf, 0x9d, 0x01, 
+    0x04, 0x10, 0x02, 0xa0, 0xe0, 0x98, 0x75, 0xcf, 0x95, 0x58, 0xa9, 0x03, 0x9d, 0x9a, 0x04, 0xa9, 
+    0x02, 0x95, 0x46, 0xa9, 0x00, 0x95, 0xa0, 0x9d, 0x34, 0x04, 0x60, 0xa9, 0x02, 0x95, 0x46, 0xa9, 
+    0x09, 0x9d, 0x9a, 0x04, 0x60, 0x20, 0x46, 0xc3, 0xbd, 0xa7, 0x07, 0x29, 0x10, 0x95, 0x58, 0xb5, 
+    0xcf, 0x9d, 0x34, 0x04, 0x60, 0xad, 0xcb, 0x06, 0xd0, 0x0b, 0xa9, 0x00, 0x8d, 0xd1, 0x06, 0x20, 
+    0x3d, 0xc3, 0x4c, 0xd9, 0xc7, 0x4c, 0x98, 0xc9, 0x26, 0x2c, 0x32, 0x38, 0x20, 0x22, 0x24, 0x26, 
+    0x13, 0x14, 0x15, 0x16, 0xad, 0x8f, 0x07, 0xd0, 0x3c, 0xe0, 0x05, 0xb0, 0x38, 0xa9, 0x80, 0x8d, 
+    0x8f, 0x07, 0xa0, 0x04, 0xb9, 0x16, 0x00, 0xc9, 0x11, 0xf0, 0x2b, 0x88, 0x10, 0xf6, 0xee, 0xd1, 
+    0x06, 0xad, 0xd1, 0x06, 0xc9, 0x07, 0x90, 0x1d, 0xa2, 0x04, 0xb5, 0x0f, 0xf0, 0x05, 0xca, 0x10, 
+    0xf9, 0x30, 0x10, 0xa9, 0x00, 0x95, 0x1e, 0xa9, 0x11, 0x95, 0x16, 0x20, 0x8a, 0xc3, 0xa9, 0x20, 
+    0x20, 0xd8, 0xc5, 0xa6, 0x08, 0x60, 0xa5, 0xce, 0xc9, 0x2c, 0x90, 0xf9, 0xb9, 0x1e, 0x00, 0xd0, 
+    0xf4, 0xb9, 0x6e, 0x00, 0x95, 0x6e, 0xb9, 0x87, 0x00, 0x95, 0x87, 0xa9, 0x01, 0x95, 0xb6, 0xb9, 
+    0xcf, 0x00, 0x38, 0xe9, 0x08, 0x95, 0xcf, 0xbd, 0xa7, 0x07, 0x29, 0x03, 0xa8, 0xa2, 0x02, 0xb9, 
+    0x98, 0xc3, 0x95, 0x01, 0xc8, 0xc8, 0xc8, 0xc8, 0xca, 0x10, 0xf4, 0xa6, 0x08, 0x20, 0x6c, 0xcf, 
+    0xa4, 0x57, 0xc0, 0x08, 0xb0, 0x0e, 0xa8, 0xbd, 0xa8, 0x07, 0x29, 0x03, 0xf0, 0x05, 0x98, 0x49, 
+    0xff, 0xa8, 0xc8, 0x98, 0x20, 0x46, 0xc3, 0xa0, 0x02, 0x95, 0x58, 0xc9, 0x00, 0x30, 0x01, 0x88, 
+    0x94, 0x46, 0xa9, 0xfd, 0x95, 0xa0, 0xa9, 0x01, 0x95, 0x0f, 0xa9, 0x05, 0x95, 0x1e, 0x60, 0x28, 
+    0x38, 0x28, 0x38, 0x28, 0x00, 0x00, 0x10, 0x10, 0x00, 0x20, 0x75, 0xc5, 0xa9, 0x00, 0x95, 0x58, 
+    0xb5, 0x16, 0x38, 0xe9, 0x1b, 0xa8, 0xb9, 0x4f, 0xc4, 0x9d, 0x88, 0x03, 0xb9, 0x54, 0xc4, 0x95, 
+    0x34, 0xb5, 0xcf, 0x18, 0x69, 0x04, 0x95, 0xcf, 0xb5, 0x87, 0x18, 0x69, 0x04, 0x95, 0x87, 0xb5, 
+    0x6e, 0x69, 0x00, 0x95, 0x6e, 0x4c, 0xd9, 0xc7, 0x80, 0x30, 0x40, 0x80, 0x30, 0x50, 0x50, 0x70, 
+    0x20, 0x40, 0x80, 0xa0, 0x70, 0x40, 0x90, 0x68, 0x0e, 0x05, 0x06, 0x0e, 0x1c, 0x20, 0x10, 0x0c, 
+    0x1e, 0x22, 0x18, 0x14, 0x10, 0x60, 0x20, 0x48, 0xad, 0x8f, 0x07, 0xd0, 0xa1, 0x20, 0x46, 0xc3, 
+    0xbd, 0xa8, 0x07, 0x29, 0x03, 0xa8, 0xb9, 0xa4, 0xc4, 0x8d, 0x8f, 0x07, 0xa0, 0x03, 0xad, 0xcc, 
+    0x06, 0xf0, 0x01, 0xc8, 0x84, 0x00, 0xe4, 0x00, 0xb0, 0x84, 0xbd, 0xa7, 0x07, 0x29, 0x03, 0x85, 
+    0x00, 0x85, 0x01, 0xa9, 0xfb, 0x95, 0xa0, 0xa9, 0x00, 0xa4, 0x57, 0xf0, 0x07, 0xa9, 0x04, 0xc0, 
+    0x19, 0x90, 0x01, 0x0a, 0x48, 0x18, 0x65, 0x00, 0x85, 0x00, 0xbd, 0xa8, 0x07, 0x29, 0x03, 0xf0, 
+    0x07, 0xbd, 0xa9, 0x07, 0x29, 0x0f, 0x85, 0x00, 0x68, 0x18, 0x65, 0x01, 0xa8, 0xb9, 0x98, 0xc4, 
+    0x95, 0x58, 0xa9, 0x01, 0x95, 0x46, 0xa5, 0x57, 0xd0, 0x12, 0xa4, 0x00, 0x98, 0x29, 0x02, 0xf0, 
+    0x0b, 0xb5, 0x58, 0x49, 0xff, 0x18, 0x69, 0x01, 0x95, 0x58, 0xf6, 0x46, 0x98, 0x29, 0x02, 0xf0, 
+    0x0f, 0xa5, 0x86, 0x18, 0x79, 0x88, 0xc4, 0x95, 0x87, 0xa5, 0x6d, 0x69, 0x00, 0x4c, 0x3c, 0xc5, 
+    0xa5, 0x86, 0x38, 0xf9, 0x88, 0xc4, 0x95, 0x87, 0xa5, 0x6d, 0xe9, 0x00, 0x95, 0x6e, 0xa9, 0x01, 
+    0x95, 0x0f, 0x95, 0xb6, 0xa9, 0xf8, 0x95, 0xcf, 0x60, 0x20, 0x75, 0xc5, 0x8e, 0x68, 0x03, 0xa9, 
+    0x00, 0x8d, 0x63, 0x03, 0x8d, 0x69, 0x03, 0xb5, 0x87, 0x8d, 0x66, 0x03, 0xa9, 0xdf, 0x8d, 0x90, 
+    0x07, 0x95, 0x46, 0xa9, 0x20, 0x8d, 0x64, 0x03, 0x9d, 0x8a, 0x07, 0xa9, 0x05, 0x8d, 0x83, 0x04, 
+    0x4a, 0x8d, 0x65, 0x03, 0x60, 0xa0, 0xff, 0xc8, 0xb9, 0x0f, 0x00, 0xd0, 0xfa, 0x8c, 0xcf, 0x06, 
+    0x8a, 0x09, 0x80, 0x99, 0x0f, 0x00, 0xb5, 0x6e, 0x99, 0x6e, 0x00, 0xb5, 0x87, 0x99, 0x87, 0x00, 
+    0xa9, 0x01, 0x95, 0x0f, 0x99, 0xb6, 0x00, 0xb5, 0xcf, 0x99, 0xcf, 0x00, 0x60, 0x90, 0x80, 0x70, 
+    0x90, 0xff, 0x01, 0xad, 0x8f, 0x07, 0xd0, 0xf4, 0x9d, 0x34, 0x04, 0xa5, 0xfd, 0x09, 0x02, 0x85, 
+    0xfd, 0xac, 0x68, 0x03, 0xb9, 0x16, 0x00, 0xc9, 0x2d, 0xf0, 0x31, 0x20, 0xd9, 0xd1, 0x18, 0x69, 
+    0x20, 0xac, 0xcc, 0x06, 0xf0, 0x03, 0x38, 0xe9, 0x10, 0x8d, 0x8f, 0x07, 0xbd, 0xa7, 0x07, 0x29, 
+    0x03, 0x9d, 0x17, 0x04, 0xa8, 0xb9, 0x9d, 0xc5, 0x95, 0xcf, 0xad, 0x1d, 0x07, 0x18, 0x69, 0x20, 
+    0x95, 0x87, 0xad, 0x1b, 0x07, 0x69, 0x00, 0x95, 0x6e, 0x4c, 0x1f, 0xc6, 0xb9, 0x87, 0x00, 0x38, 
+    0xe9, 0x0e, 0x95, 0x87, 0xb9, 0x6e, 0x00, 0x95, 0x6e, 0xb9, 0xcf, 0x00, 0x18, 0x69, 0x08, 0x95, 
+    0xcf, 0xbd, 0xa7, 0x07, 0x29, 0x03, 0x9d, 0x17, 0x04, 0xa8, 0xb9, 0x9d, 0xc5, 0xa0, 0x00, 0xd5, 
+    0xcf, 0x90, 0x01, 0xc8, 0xb9, 0xa1, 0xc5, 0x9d, 0x34, 0x04, 0xa9, 0x00, 0x8d, 0xcb, 0x06, 0xa9, 
+    0x08, 0x9d, 0x9a, 0x04, 0xa9, 0x01, 0x95, 0xb6, 0x95, 0x0f, 0x4a, 0x9d, 0x01, 0x04, 0x95, 0x1e, 
+    0x60, 0x00, 0x30, 0x60, 0x60, 0x00, 0x20, 0x60, 0x40, 0x70, 0x40, 0x60, 0x30, 0xad, 0x8f, 0x07, 
+    0xd0, 0x47, 0xa9, 0x20, 0x8d, 0x8f, 0x07, 0xce, 0xd7, 0x06, 0xa0, 0x06, 0x88, 0xb9, 0x16, 0x00, 
+    0xc9, 0x31, 0xd0, 0xf8, 0xb9, 0x87, 0x00, 0x38, 0xe9, 0x30, 0x48, 0xb9, 0x6e, 0x00, 0xe9, 0x00, 
+    0x85, 0x00, 0xad, 0xd7, 0x06, 0x18, 0x79, 0x1e, 0x00, 0xa8, 0x68, 0x18, 0x79, 0x31, 0xc6, 0x95, 
+    0x87, 0xa5, 0x00, 0x69, 0x00, 0x95, 0x6e, 0xb9, 0x37, 0xc6, 0x95, 0xcf, 0xa9, 0x01, 0x95, 0xb6, 
+    0x95, 0x0f, 0x4a, 0x95, 0x58, 0xa9, 0x08, 0x95, 0xa0, 0x60, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 
+    0x40, 0x80, 0x40, 0x30, 0x90, 0x50, 0x20, 0x60, 0xa0, 0x70, 0x0a, 0x0b, 0xad, 0x8f, 0x07, 0xd0, 
+    0x6f, 0xad, 0x4e, 0x07, 0xd0, 0x57, 0xe0, 0x03, 0xb0, 0x66, 0xa0, 0x00, 0xbd, 0xa7, 0x07, 0xc9, 
+    0xaa, 0x90, 0x01, 0xc8, 0xad, 0x5f, 0x07, 0xc9, 0x01, 0xf0, 0x01, 0xc8, 0x98, 0x29, 0x01, 0xa8, 
+    0xb9, 0x9a, 0xc6, 0x95, 0x16, 0xad, 0xdd, 0x06, 0xc9, 0xff, 0xd0, 0x05, 0xa9, 0x00, 0x8d, 0xdd, 
+    0x06, 0xbd, 0xa7, 0x07, 0x29, 0x07, 0xa8, 0xb9, 0x8a, 0xc6, 0x2c, 0xdd, 0x06, 0xf0, 0x07, 0xc8, 
+    0x98, 0x29, 0x07, 0x4c, 0xd6, 0xc6, 0x0d, 0xdd, 0x06, 0x8d, 0xdd, 0x06, 0xb9, 0x92, 0xc6, 0x20, 
+    0xd8, 0xc5, 0x9d, 0x17, 0x04, 0xa9, 0x20, 0x8d, 0x8f, 0x07, 0x4c, 0x6c, 0xc2, 0xa0, 0xff, 0xc8, 
+    0xc0, 0x05, 0xb0, 0x0d, 0xb9, 0x0f, 0x00, 0xf0, 0xf6, 0xb9, 0x16, 0x00, 0xc9, 0x08, 0xd0, 0xef, 
+    0x60, 0xa5, 0xfe, 0x09, 0x08, 0x85, 0xfe, 0xa9, 0x08, 0xd0, 0xa8, 0xa0, 0x00, 0x38, 0xe9, 0x37, 
+    0x48, 0xc9, 0x04, 0xb0, 0x0b, 0x48, 0xa0, 0x06, 0xad, 0x6a, 0x07, 0xf0, 0x02, 0xa0, 0x02, 0x68, 
+    0x84, 0x01, 0xa0, 0xb0, 0x29, 0x02, 0xf0, 0x02, 0xa0, 0x70, 0x84, 0x00, 0xad, 0x1b, 0x07, 0x85, 
+    0x02, 0xad, 0x1d, 0x07, 0x85, 0x03, 0xa0, 0x02, 0x68, 0x4a, 0x90, 0x01, 0xc8, 0x8c, 0xd3, 0x06, 
+    0xa2, 0xff, 0xe8, 0xe0, 0x05, 0xb0, 0x2d, 0xb5, 0x0f, 0xd0, 0xf7, 0xa5, 0x01, 0x95, 0x16, 0xa5, 
+    0x02, 0x95, 0x6e, 0xa5, 0x03, 0x95, 0x87, 0x18, 0x69, 0x18, 0x85, 0x03, 0xa5, 0x02, 0x69, 0x00, 
+    0x85, 0x02, 0xa5, 0x00, 0x95, 0xcf, 0xa9, 0x01, 0x95, 0xb6, 0x95, 0x0f, 0x20, 0x6c, 0xc2, 0xce, 
+    0xd3, 0x06, 0xd0, 0xcc, 0x4c, 0x5e, 0xc2, 0xa9, 0x01, 0x95, 0x58, 0x4a, 0x95, 0x1e, 0x95, 0xa0, 
+    0xb5, 0xcf, 0x9d, 0x34, 0x04, 0x38, 0xe9, 0x18, 0x9d, 0x17, 0x04, 0xa9, 0x09, 0x4c, 0xdb, 0xc7, 
+    0xb5, 0x16, 0x8d, 0xcb, 0x06, 0x38, 0xe9, 0x12, 0x20, 0x04, 0x8e, 0xa4, 0xc3, 0xb7, 0xc7, 0xa8, 
+    0xc4, 0xa3, 0xc5, 0x3d, 0xc6, 0x9c, 0xc6, 0x60, 0xa0, 0x05, 0xb9, 0x16, 0x00, 0xc9, 0x11, 0xd0, 
+    0x05, 0xa9, 0x01, 0x99, 0x1e, 0x00, 0x88, 0x10, 0xf1, 0xa9, 0x00, 0x8d, 0xcb, 0x06, 0x95, 0x0f, 
+    0x60, 0xa9, 0x02, 0x95, 0x46, 0xa9, 0xf8, 0x95, 0x58, 0xa9, 0x03, 0x9d, 0x9a, 0x04, 0x60, 0xd6, 
+    0xcf, 0xd6, 0xcf, 0xac, 0xcc, 0x06, 0xd0, 0x05, 0xa0, 0x02, 0x20, 0x71, 0xc8, 0xa0, 0xff, 0xad, 
+    0xa0, 0x03, 0x95, 0x1e, 0x10, 0x02, 0x8a, 0xa8, 0x8c, 0xa0, 0x03, 0xa9, 0x00, 0x95, 0x46, 0xa8, 
+    0x20, 0x71, 0xc8, 0xa9, 0xff, 0x9d, 0xa2, 0x03, 0x4c, 0x28, 0xc8, 0xa9, 0x00, 0x95, 0x58, 0x4c, 
+    0x28, 0xc8, 0xa0, 0x40, 0xb5, 0xcf, 0x10, 0x07, 0x49, 0xff, 0x18, 0x69, 0x01, 0xa0, 0xc0, 0x9d, 
+    0x01, 0x04, 0x98, 0x18, 0x75, 0xcf, 0x95, 0x58, 0x20, 0x63, 0xc3, 0xa9, 0x05, 0xac, 0x4e, 0x07, 
+    0xc0, 0x03, 0xf0, 0x07, 0xac, 0xcc, 0x06, 0xd0, 0x02, 0xa9, 0x06, 0x9d, 0x9a, 0x04, 0x60, 0x20, 
+    0x4b, 0xc8, 0x4c, 0x48, 0xc8, 0x20, 0x57, 0xc8, 0x4c, 0x2b, 0xc8, 0xa9, 0x10, 0x9d, 0x34, 0x04, 
+    0xa9, 0xff, 0x95, 0xa0, 0x4c, 0x60, 0xc8, 0xa9, 0xf0, 0x9d, 0x34, 0x04, 0xa9, 0x00, 0x95, 0xa0, 
+    0xa0, 0x01, 0x20, 0x71, 0xc8, 0xa9, 0x04, 0x9d, 0x9a, 0x04, 0x60, 0x08, 0x0c, 0xf8, 0x00, 0x00, 
+    0xff, 0xb5, 0x87, 0x18, 0x79, 0x6b, 0xc8, 0x95, 0x87, 0xb5, 0x6e, 0x79, 0x6e, 0xc8, 0x95, 0x6e, 
+    0x60, 0x60, 0xa6, 0x08, 0xa9, 0x00, 0xb4, 0x16, 0xc0, 0x15, 0x90, 0x03, 0x98, 0xe9, 0x14, 0x20, 
+    0x04, 0x8e, 0xe0, 0xc8, 0x35, 0xc9, 0x95, 0xd2, 0xd6, 0xc8, 0xd6, 0xc8, 0xd6, 0xc8, 0xd6, 0xc8, 
+    0x47, 0xc9, 0x47, 0xc9, 0x47, 0xc9, 0x47, 0xc9, 0x47, 0xc9, 0x47, 0xc9, 0x47, 0xc9, 0x47, 0xc9, 
+    0xd6, 0xc8, 0x65, 0xc9, 0x65, 0xc9, 0x65, 0xc9, 0x65, 0xc9, 0x65, 0xc9, 0x65, 0xc9, 0x65, 0xc9, 
+    0x4d, 0xc9, 0x4d, 0xc9, 0x65, 0xd0, 0x85, 0xbc, 0x4b, 0xb9, 0xd6, 0xc8, 0xd9, 0xd2, 0xba, 0xb8, 
+    0xd6, 0xc8, 0xa4, 0xb7, 0xd7, 0xc8, 0x60, 0x20, 0xaf, 0xf1, 0x20, 0x52, 0xf1, 0x4c, 0x7d, 0xe8, 
+    0xa9, 0x00, 0x9d, 0xc5, 0x03, 0x20, 0xaf, 0xf1, 0x20, 0x52, 0xf1, 0x20, 0x7d, 0xe8, 0x20, 0x43, 
+    0xe2, 0x20, 0xc1, 0xdf, 0x20, 0x33, 0xda, 0x20, 0x53, 0xd8, 0xac, 0x47, 0x07, 0xd0, 0x03, 0x20, 
+    0x05, 0xc9, 0x4c, 0x7a, 0xd6, 0xb5, 0x16, 0x20, 0x04, 0x8e, 0x77, 0xca, 0x77, 0xca, 0x77, 0xca, 
+    0x77, 0xca, 0x77, 0xca, 0xd8, 0xc9, 0x77, 0xca, 0x89, 0xcb, 0x36, 0xcc, 0x34, 0xc9, 0x4a, 0xcc, 
+    0x4a, 0xcc, 0xb0, 0xc9, 0xb0, 0xd3, 0xf9, 0xca, 0xff, 0xca, 0x25, 0xcb, 0x28, 0xcf, 0x77, 0xca, 
+    0x34, 0xc9, 0xdf, 0xce, 0x60, 0x20, 0xeb, 0xd1, 0x20, 0xaf, 0xf1, 0x20, 0x52, 0xf1, 0x20, 0x43, 
+    0xe2, 0x20, 0x53, 0xd8, 0x4c, 0x7a, 0xd6, 0x20, 0x3c, 0xcd, 0x4c, 0x7a, 0xd6, 0x20, 0xaf, 0xf1, 
+    0x20, 0x52, 0xf1, 0x20, 0x4c, 0xe2, 0x20, 0x7b, 0xdb, 0x20, 0x52, 0xf1, 0x20, 0x66, 0xed, 0x20, 
+    0x55, 0xd6, 0x4c, 0x7a, 0xd6, 0x20, 0xaf, 0xf1, 0x20, 0x52, 0xf1, 0x20, 0x73, 0xe2, 0x20, 0x45, 
+    0xdb, 0xad, 0x47, 0x07, 0xd0, 0x03, 0x20, 0x82, 0xc9, 0x20, 0x52, 0xf1, 0x20, 0xc8, 0xe5, 0x4c, 
+    0x7a, 0xd6, 0xb5, 0x16, 0x38, 0xe9, 0x24, 0x20, 0x04, 0x8e, 0x32, 0xd4, 0xd3, 0xd5, 0x4f, 0xd6, 
+    0x4f, 0xd6, 0x07, 0xd6, 0x31, 0xd6, 0x3d, 0xd6, 0xa9, 0x00, 0x95, 0x0f, 0x95, 0x16, 0x95, 0x1e, 
+    0x9d, 0x10, 0x01, 0x9d, 0x96, 0x07, 0x9d, 0x25, 0x01, 0x9d, 0xc5, 0x03, 0x9d, 0x8a, 0x07, 0x60, 
+    0xbd, 0x96, 0x07, 0xd0, 0x16, 0x20, 0xf7, 0xc2, 0xbd, 0xa8, 0x07, 0x09, 0x80, 0x9d, 0x34, 0x04, 
+    0x29, 0x0f, 0x09, 0x06, 0x9d, 0x96, 0x07, 0xa9, 0xf9, 0x95, 0xa0, 0x4c, 0x92, 0xbf, 0x30, 0x1c, 
+    0x00, 0xe8, 0x00, 0x18, 0x08, 0xf8, 0x0c, 0xf4, 0xb5, 0x1e, 0x29, 0x20, 0xf0, 0x03, 0x4c, 0xe5, 
+    0xca, 0xb5, 0x3c, 0xf0, 0x2d, 0xd6, 0x3c, 0xad, 0xd1, 0x03, 0x29, 0x0c, 0xd0, 0x6a, 0xbd, 0xa2, 
+    0x03, 0xd0, 0x17, 0xac, 0xcc, 0x06, 0xb9, 0xce, 0xc9, 0x9d, 0xa2, 0x03, 0x20, 0x94, 0xba, 0x90, 
+    0x09, 0xb5, 0x1e, 0x09, 0x08, 0x95, 0x1e, 0x4c, 0x58, 0xca, 0xde, 0xa2, 0x03, 0x4c, 0x58, 0xca, 
+    0x20, 0x37, 0xb5, 0x1e, 0x29, 0x07, 0xc9, 0x01, 0xf0, 0x3e, 0xa9, 0x00, 0x85, 0x00, 0xa0, 0xfa, 
+    0xb5, 0xcf, 0x30, 0x13, 0xa0, 0xfd, 0xc9, 0x70, 0xe6, 0x00, 0x90, 0x0b, 0xc6, 0x00, 0xbd, 0xa8, 
+    0x07, 0x29, 0x01, 0xd0, 0x02, 0xa0, 0xfa, 0x94, 0xa0, 0xb5, 0x1e, 0x09, 0x01, 0x95, 0x1e, 0xa5, 
+    0x00, 0x3d, 0xa9, 0x07, 0xa8, 0xad, 0xcc, 0x06, 0xd0, 0x01, 0xa8, 0xb9, 0x10, 0xca, 0x9d, 0x8a, 
+    0x07, 0xbd, 0xa8, 0x07, 0x09, 0xc0, 0x95, 0x3c, 0xa0, 0xfc, 0xa5, 0x09, 0x29, 0x40, 0xd0, 0x02, 
+    0xa0, 0x04, 0x94, 0x58, 0xa0, 0x01, 0x20, 0x43, 0xe1, 0x30, 0x0a, 0xc8, 0xbd, 0x96, 0x07, 0xd0, 
+    0x04, 0xa9, 0xf8, 0x95, 0x58, 0x94, 0x46, 0xa0, 0x00, 0xb5, 0x1e, 0x29, 0x40, 0xd0, 0x19, 0xb5, 
+    0x1e, 0x0a, 0xb0, 0x30, 0xb5, 0x1e, 0x29, 0x20, 0xd0, 0x5b, 0xb5, 0x1e, 0x29, 0x07, 0xf0, 0x24, 
+    0xc9, 0x05, 0xf0, 0x04, 0xc9, 0x03, 0xb0, 0x30, 0x20, 0x63, 0xbf, 0xa0, 0x00, 0xb5, 0x1e, 0xc9, 
+    0x02, 0xf0, 0x0c, 0x29, 0x40, 0xf0, 0x0d, 0xb5, 0x16, 0xc9, 0x2e, 0xf0, 0x07, 0xd0, 0x03, 0x4c, 
+    0x02, 0xbf, 0xa0, 0x01, 0xb5, 0x58, 0x48, 0x10, 0x02, 0xc8, 0xc8, 0x18, 0x79, 0xd0, 0xc9, 0x95, 
+    0x58, 0x20, 0x02, 0xbf, 0x68, 0x95, 0x58, 0x60, 0xbd, 0x96, 0x07, 0xd0, 0x1e, 0x95, 0x1e, 0xa5, 
+    0x09, 0x29, 0x01, 0xa8, 0xc8, 0x94, 0x46, 0x88, 0xad, 0x6a, 0x07, 0xf0, 0x02, 0xc8, 0xc8, 0xb9, 
+    0xd4, 0xc9, 0x95, 0x58, 0x60, 0x20, 0x63, 0xbf, 0x4c, 0x02, 0xbf, 0xc9, 0x0e, 0xd0, 0x09, 0xb5, 
+    0x16, 0xc9, 0x06, 0xd0, 0x03, 0x20, 0x98, 0xc9, 0x60, 0x20, 0x92, 0xbf, 0x4c, 0x02, 0xbf, 0xb5, 
+    0xa0, 0x1d, 0x34, 0x04, 0xd0, 0x13, 0x9d, 0x17, 0x04, 0xb5, 0xcf, 0xdd, 0x01, 0x04, 0xb0, 0x09, 
+    0xa5, 0x09, 0x29, 0x07, 0xd0, 0x02, 0xf6, 0xcf, 0x60, 0xb5, 0xcf, 0xd5, 0x58, 0x90, 0x03, 0x4c, 
+    0x75, 0xbf, 0x4c, 0x70, 0xbf, 0x20, 0x45, 0xcb, 0x20, 0x66, 0xcb, 0xa0, 0x01, 0xa5, 0x09, 0x29, 
+    0x03, 0xd0, 0x11, 0xa5, 0x09, 0x29, 0x40, 0xd0, 0x02, 0xa0, 0xff, 0x84, 0x00, 0xb5, 0xcf, 0x18, 
+    0x65, 0x00, 0x95, 0xcf, 0x60, 0xa9, 0x13, 0x85, 0x01, 0xa5, 0x09, 0x29, 0x03, 0xd0, 0x0d, 0xb4, 
+    0x58, 0xb5, 0xa0, 0x4a, 0xb0, 0x0a, 0xc4, 0x01, 0xf0, 0x03, 0xf6, 0x58, 0x60, 0xf6, 0xa0, 0x60, 
+    0x98, 0xf0, 0xfa, 0xd6, 0x58, 0x60, 0xb5, 0x58, 0x48, 0xa0, 0x01, 0xb5, 0xa0, 0x29, 0x02, 0xd0, 
+    0x0b, 0xb5, 0x58, 0x49, 0xff, 0x18, 0x69, 0x01, 0x95, 0x58, 0xa0, 0x02, 0x94, 0x46, 0x20, 0x02, 
+    0xbf, 0x85, 0x00, 0x68, 0x95, 0x58, 0x60, 0x3f, 0x03, 0xb5, 0x1e, 0x29, 0x20, 0xd0, 0x4d, 0xac, 
+    0xcc, 0x06, 0xbd, 0xa8, 0x07, 0x39, 0x87, 0xcb, 0xd0, 0x12, 0x8a, 0x4a, 0x90, 0x04, 0xa4, 0x45, 
+    0xb0, 0x08, 0xa0, 0x02, 0x20, 0x43, 0xe1, 0x10, 0x01, 0x88, 0x94, 0x46, 0x20, 0xdf, 0xcb, 0xb5, 
+    0xcf, 0x38, 0xfd, 0x34, 0x04, 0xc9, 0x20, 0x90, 0x02, 0x95, 0xcf, 0xb4, 0x46, 0x88, 0xd0, 0x0e, 
+    0xb5, 0x87, 0x18, 0x75, 0x58, 0x95, 0x87, 0xb5, 0x6e, 0x69, 0x00, 0x95, 0x6e, 0x60, 0xb5, 0x87, 
+    0x38, 0xf5, 0x58, 0x95, 0x87, 0xb5, 0x6e, 0xe9, 0x00, 0x95, 0x6e, 0x60, 0x4c, 0x8c, 0xbf, 0xb5, 
+    0xa0, 0x29, 0x02, 0xd0, 0x37, 0xa5, 0x09, 0x29, 0x07, 0x48, 0xb5, 0xa0, 0x4a, 0xb0, 0x15, 0x68, 
+    0xd0, 0x11, 0xbd, 0x34, 0x04, 0x18, 0x69, 0x01, 0x9d, 0x34, 0x04, 0x95, 0x58, 0xc9, 0x02, 0xd0, 
+    0x02, 0xf6, 0xa0, 0x60, 0x68, 0xd0, 0x14, 0xbd, 0x34, 0x04, 0x38, 0xe9, 0x01, 0x9d, 0x34, 0x04, 
+    0x95, 0x58, 0xd0, 0x07, 0xf6, 0xa0, 0xa9, 0x02, 0x9d, 0x96, 0x07, 0x60, 0xbd, 0x96, 0x07, 0xf0, 
+    0x08, 0xa5, 0x09, 0x4a, 0xb0, 0x02, 0xf6, 0xcf, 0x60, 0xb5, 0xcf, 0x69, 0x10, 0xc5, 0xce, 0x90, 
+    0xf0, 0xa9, 0x00, 0x95, 0xa0, 0x60, 0xb5, 0x1e, 0x29, 0x20, 0xf0, 0x03, 0x4c, 0x92, 0xbf, 0xa9, 
+    0xe8, 0x95, 0x58, 0x4c, 0x02, 0xbf, 0x40, 0x80, 0x04, 0x04, 0xb5, 0x1e, 0x29, 0x20, 0xf0, 0x03, 
+    0x4c, 0x8c, 0xbf, 0x85, 0x03, 0xb5, 0x16, 0x38, 0xe9, 0x0a, 0xa8, 0xb9, 0x46, 0xcc, 0x85, 0x02, 
+    0xbd, 0x01, 0x04, 0x38, 0xe5, 0x02, 0x9d, 0x01, 0x04, 0xb5, 0x87, 0xe9, 0x00, 0x95, 0x87, 0xb5, 
+    0x6e, 0xe9, 0x00, 0x95, 0x6e, 0xa9, 0x20, 0x85, 0x02, 0xe0, 0x02, 0x90, 0x49, 0xb5, 0x58, 0xc9, 
+    0x10, 0x90, 0x16, 0xbd, 0x17, 0x04, 0x18, 0x65, 0x02, 0x9d, 0x17, 0x04, 0xb5, 0xcf, 0x65, 0x03, 
+    0x95, 0xcf, 0xb5, 0xb6, 0x69, 0x00, 0x4c, 0xac, 0xcc, 0xbd, 0x17, 0x04, 0x38, 0xe5, 0x02, 0x9d, 
+    0x17, 0x04, 0xb5, 0xcf, 0xe5, 0x03, 0x95, 0xcf, 0xb5, 0xb6, 0xe9, 0x00, 0x95, 0xb6, 0xa0, 0x00, 
+    0xb5, 0xcf, 0x38, 0xfd, 0x34, 0x04, 0x10, 0x07, 0xa0, 0x10, 0x49, 0xff, 0x18, 0x69, 0x01, 0xc9, 
+    0x0f, 0x90, 0x03, 0x98, 0x95, 0x58, 0x60, 0x00, 0x01, 0x03, 0x04, 0x05, 0x06, 0x07, 0x07, 0x08, 
+    0x00, 0x03, 0x06, 0x09, 0x0b, 0x0d, 0x0e, 0x0f, 0x10, 0x00, 0x04, 0x09, 0x0d, 0x10, 0x13, 0x16, 
+    0x17, 0x18, 0x00, 0x06, 0x0c, 0x12, 0x16, 0x1a, 0x1d, 0x1f, 0x20, 0x00, 0x07, 0x0f, 0x16, 0x1c, 
+    0x21, 0x25, 0x27, 0x28, 0x00, 0x09, 0x12, 0x1b, 0x21, 0x27, 0x2c, 0x2f, 0x30, 0x00, 0x0b, 0x15, 
+    0x1f, 0x27, 0x2e, 0x33, 0x37, 0x38, 0x00, 0x0c, 0x18, 0x24, 0x2d, 0x35, 0x3b, 0x3e, 0x40, 0x00, 
+    0x0e, 0x1b, 0x28, 0x32, 0x3b, 0x42, 0x46, 0x48, 0x00, 0x0f, 0x1f, 0x2d, 0x38, 0x42, 0x4a, 0x4e, 
+    0x50, 0x00, 0x11, 0x22, 0x31, 0x3e, 0x49, 0x51, 0x56, 0x58, 0x01, 0x03, 0x02, 0x00, 0x00, 0x09, 
+    0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f, 0x48, 0x51, 0x5a, 0x63, 0x0c, 0x18, 0x20, 0xaf, 0xf1, 0xad, 
+    0xd1, 0x03, 0x29, 0x08, 0xd0, 0x74, 0xad, 0x47, 0x07, 0xd0, 0x0a, 0xbd, 0x88, 0x03, 0x20, 0x10, 
+    0xd4, 0x29, 0x1f, 0x95, 0xa0, 0xb5, 0xa0, 0xb4, 0x16, 0xc0, 0x1f, 0x90, 0x0d, 0xc9, 0x08, 0xf0, 
+    0x04, 0xc9, 0x18, 0xd0, 0x05, 0x18, 0x69, 0x01, 0x95, 0xa0, 0x85, 0xef, 0x20, 0x52, 0xf1, 0x20, 
+    0x8e, 0xce, 0xbc, 0xe5, 0x06, 0xad, 0xb9, 0x03, 0x99, 0x00, 0x02, 0x85, 0x07, 0xad, 0xae, 0x03, 
+    0x99, 0x03, 0x02, 0x85, 0x06, 0xa9, 0x01, 0x85, 0x00, 0x20, 0x08, 0xce, 0xa0, 0x05, 0xb5, 0x16, 
+    0xc9, 0x1f, 0x90, 0x02, 0xa0, 0x0b, 0x84, 0xed, 0xa9, 0x00, 0x85, 0x00, 0xa5, 0xef, 0x20, 0x8e, 
+    0xce, 0x20, 0xbb, 0xcd, 0xa5, 0x00, 0xc9, 0x04, 0xd0, 0x08, 0xac, 0xcf, 0x06, 0xb9, 0xe5, 0x06, 
+    0x85, 0x06, 0xe6, 0x00, 0xa5, 0x00, 0xc5, 0xed, 0x90, 0xe2, 0x60, 0xa5, 0x03, 0x85, 0x05, 0xa4, 
+    0x06, 0xa5, 0x01, 0x46, 0x05, 0xb0, 0x04, 0x49, 0xff, 0x69, 0x01, 0x18, 0x6d, 0xae, 0x03, 0x99, 
+    0x03, 0x02, 0x85, 0x06, 0xcd, 0xae, 0x03, 0xb0, 0x09, 0xad, 0xae, 0x03, 0x38, 0xe5, 0x06, 0x4c, 
+    0xe6, 0xcd, 0x38, 0xed, 0xae, 0x03, 0xc9, 0x59, 0x90, 0x04, 0xa9, 0xf8, 0xd0, 0x15, 0xad, 0xb9, 
+    0x03, 0xc9, 0xf8, 0xf0, 0x0e, 0xa5, 0x02, 0x46, 0x05, 0xb0, 0x04, 0x49, 0xff, 0x69, 0x01, 0x18, 
+    0x6d, 0xb9, 0x03, 0x99, 0x00, 0x02, 0x85, 0x07, 0x20, 0xed, 0xec, 0x98, 0x48, 0xad, 0x9f, 0x07, 
+    0x0d, 0x47, 0x07, 0xd0, 0x70, 0x85, 0x05, 0xa4, 0xb5, 0x88, 0xd0, 0x69, 0xa4, 0xce, 0xad, 0x54, 
+    0x07, 0xd0, 0x05, 0xad, 0x14, 0x07, 0xf0, 0x09, 0xe6, 0x05, 0xe6, 0x05, 0x98, 0x18, 0x69, 0x18, 
+    0xa8, 0x98, 0x38, 0xe5, 0x07, 0x10, 0x05, 0x49, 0xff, 0x18, 0x69, 0x01, 0xc9, 0x08, 0xb0, 0x1c, 
+    0xa5, 0x06, 0xc9, 0xf0, 0xb0, 0x16, 0xad, 0x07, 0x02, 0x18, 0x69, 0x04, 0x85, 0x04, 0x38, 0xe5, 
+    0x06, 0x10, 0x05, 0x49, 0xff, 0x18, 0x69, 0x01, 0xc9, 0x08, 0x90, 0x13, 0xa5, 0x05, 0xc9, 0x02, 
+    0xf0, 0x23, 0xa4, 0x05, 0xa5, 0xce, 0x18, 0x79, 0x3a, 0xcd, 0xe6, 0x05, 0x4c, 0x32, 0xce, 0xa2, 
+    0x01, 0xa5, 0x04, 0xc5, 0x06, 0xb0, 0x01, 0xe8, 0x86, 0x46, 0xa2, 0x00, 0xa5, 0x00, 0x48, 0x20, 
+    0x2c, 0xd9, 0x68, 0x85, 0x00, 0x68, 0x18, 0x69, 0x04, 0x85, 0x06, 0xa6, 0x08, 0x60, 0x48, 0x29, 
+    0x0f, 0xc9, 0x09, 0x90, 0x05, 0x49, 0x0f, 0x18, 0x69, 0x01, 0x85, 0x01, 0xa4, 0x00, 0xb9, 0x2e, 
+    0xcd, 0x18, 0x65, 0x01, 0xa8, 0xb9, 0xc7, 0xcc, 0x85, 0x01, 0x68, 0x48, 0x18, 0x69, 0x08, 0x29, 
+    0x0f, 0xc9, 0x09, 0x90, 0x05, 0x49, 0x0f, 0x18, 0x69, 0x01, 0x85, 0x02, 0xa4, 0x00, 0xb9, 0x2e, 
+    0xcd, 0x18, 0x65, 0x02, 0xa8, 0xb9, 0xc7, 0xcc, 0x85, 0x02, 0x68, 0x4a, 0x4a, 0x4a, 0xa8, 0xb9, 
+    0x2a, 0xcd, 0x85, 0x03, 0x60, 0xf8, 0xa0, 0x70, 0xbd, 0x00, 0x20, 0x20, 0x20, 0x00, 0x00, 0xb5, 
+    0x1e, 0x29, 0x20, 0xf0, 0x08, 0xa9, 0x00, 0x9d, 0xc5, 0x03, 0x4c, 0x92, 0xbf, 0x20, 0x02, 0xbf, 
+    0xa0, 0x0d, 0xa9, 0x05, 0x20, 0x96, 0xbf, 0xbd, 0x34, 0x04, 0x4a, 0x4a, 0x4a, 0x4a, 0xa8, 0xb5, 
+    0xcf, 0x38, 0xf9, 0xd5, 0xce, 0x10, 0x05, 0x49, 0xff, 0x18, 0x69, 0x01, 0xc9, 0x08, 0xb0, 0x0e, 
+    0xbd, 0x34, 0x04, 0x18, 0x69, 0x10, 0x9d, 0x34, 0x04, 0x4a, 0x4a, 0x4a, 0x4a, 0xa8, 0xb9, 0xda, 
+    0xce, 0x9d, 0xc5, 0x03, 0x60, 0x15, 0x30, 0x40, 0xb5, 0x1e, 0x29, 0x20, 0xf0, 0x03, 0x4c, 0x63, 
+    0xbf, 0xb5, 0x1e, 0xf0, 0x0b, 0xa9, 0x00, 0x95, 0xa0, 0x8d, 0xcb, 0x06, 0xa9, 0x10, 0xd0, 0x13, 
+    0xa9, 0x12, 0x8d, 0xcb, 0x06, 0xa0, 0x02, 0xb9, 0x25, 0xcf, 0x99, 0x01, 0x00, 0x88, 0x10, 0xf7, 
+    0x20, 0x6c, 0xcf, 0x95, 0x58, 0xa0, 0x01, 0xb5, 0xa0, 0x29, 0x01, 0xd0, 0x0a, 0xb5, 0x58, 0x49, 
+    0xff, 0x18, 0x69, 0x01, 0x95, 0x58, 0xc8, 0x94, 0x46, 0x4c, 0x02, 0xbf, 0xa0, 0x00, 0x20, 0x43, 
+    0xe1, 0x10, 0x0a, 0xc8, 0xa5, 0x00, 0x49, 0xff, 0x18, 0x69, 0x01, 0x85, 0x00, 0xa5, 0x00, 0xc9, 
+    0x3c, 0x90, 0x1c, 0xa9, 0x3c, 0x85, 0x00, 0xb5, 0x16, 0xc9, 0x11, 0xd0, 0x12, 0x98, 0xd5, 0xa0, 
+    0xf0, 0x0d, 0xb5, 0xa0, 0xf0, 0x06, 0xd6, 0x58, 0xb5, 0x58, 0xd0, 0x40, 0x98, 0x95, 0xa0, 0xa5, 
+    0x00, 0x29, 0x3c, 0x4a, 0x4a, 0x85, 0x00, 0xa0, 0x00, 0xa5, 0x57, 0xf0, 0x24, 0xad, 0x75, 0x07, 
+    0xf0, 0x1f, 0xc8, 0xa5, 0x57, 0xc9, 0x19, 0x90, 0x08, 0xad, 0x75, 0x07, 0xc9, 0x02, 0x90, 0x01, 
+    0xc8, 0xb5, 0x16, 0xc9, 0x12, 0xd0, 0x04, 0xa5, 0x57, 0xd0, 0x06, 0xb5, 0xa0, 0xd0, 0x02, 0xa0, 
+    0x00, 0xb9, 0x01, 0x00, 0xa4, 0x00, 0x38, 0xe9, 0x01, 0x88, 0x10, 0xfa, 0x60, 0x1a, 0x58, 0x98, 
+    0x96, 0x94, 0x92, 0x90, 0x8e, 0x8c, 0x8a, 0x88, 0x86, 0x84, 0x82, 0x80, 0xae, 0x68, 0x03, 0xb5, 
+    0x16, 0xc9, 0x2d, 0xd0, 0x10, 0x86, 0x08, 0xb5, 0x1e, 0xf0, 0x1a, 0x29, 0x40, 0xf0, 0x06, 0xb5, 
+    0xcf, 0xc9, 0xe0, 0x90, 0x0a, 0xa9, 0x80, 0x85, 0xfc, 0xee, 0x72, 0x07, 0x4c, 0x71, 0xd0, 0x20, 
+    0x8c, 0xbf, 0x4c, 0x7b, 0xd1, 0xce, 0x64, 0x03, 0xd0, 0x44, 0xa9, 0x04, 0x8d, 0x64, 0x03, 0xad, 
+    0x63, 0x03, 0x49, 0x01, 0x8d, 0x63, 0x03, 0xa9, 0x22, 0x85, 0x05, 0xac, 0x69, 0x03, 0xb9, 0xdd, 
+    0xcf, 0x85, 0x04, 0xac, 0x00, 0x03, 0xc8, 0xa2, 0x0c, 0x20, 0xcd, 0x8a, 0xa6, 0x08, 0x20, 0x8f, 
+    0x8a, 0xa9, 0x08, 0x85, 0xfe, 0xa9, 0x01, 0x85, 0xfd, 0xee, 0x69, 0x03, 0xad, 0x69, 0x03, 0xc9, 
+    0x0f, 0xd0, 0x0b, 0x20, 0x63, 0xc3, 0xa9, 0x40, 0x95, 0x1e, 0xa9, 0x80, 0x85, 0xfe, 0x4c, 0x7b, 
+    0xd1, 0x21, 0x41, 0x11, 0x31, 0xb5, 0x1e, 0x29, 0x20, 0xf0, 0x14, 0xb5, 0xcf, 0xc9, 0xe0, 0x90, 
+    0x9e, 0xa2, 0x04, 0x20, 0x98, 0xc9, 0xca, 0x10, 0xfa, 0x8d, 0xcb, 0x06, 0xa6, 0x08, 0x60, 0xa9, 
+    0x00, 0x8d, 0xcb, 0x06, 0xad, 0x47, 0x07, 0xf0, 0x03, 0x4c, 0x39, 0xd1, 0xad, 0x63, 0x03, 0x10, 
+    0x03, 0x4c, 0x0f, 0xd1, 0xce, 0x64, 0x03, 0xd0, 0x0d, 0xa9, 0x20, 0x8d, 0x64, 0x03, 0xad, 0x63, 
+    0x03, 0x49, 0x01, 0x8d, 0x63, 0x03, 0xa5, 0x09, 0x29, 0x0f, 0xd0, 0x04, 0xa9, 0x02, 0x95, 0x46, 
+    0xbd, 0x8a, 0x07, 0xf0, 0x1c, 0x20, 0x43, 0xe1, 0x10, 0x17, 0xa9, 0x01, 0x95, 0x46, 0xa9, 0x02, 
+    0x8d, 0x65, 0x03, 0xa9, 0x20, 0x9d, 0x8a, 0x07, 0x8d, 0x90, 0x07, 0xb5, 0x87, 0xc9, 0xc8, 0xb0, 
+    0x3e, 0xa5, 0x09, 0x29, 0x03, 0xd0, 0x38, 0xb5, 0x87, 0xcd, 0x66, 0x03, 0xd0, 0x0c, 0xbd, 0xa7, 
+    0x07, 0x29, 0x03, 0xa8, 0xb9, 0x61, 0xd0, 0x8d, 0xdc, 0x06, 0xb5, 0x87, 0x18, 0x6d, 0x65, 0x03, 
+    0x95, 0x87, 0xb4, 0x46, 0xc0, 0x01, 0xf0, 0x17, 0xa0, 0xff, 0x38, 0xed, 0x66, 0x03, 0x10, 0x07, 
+    0x49, 0xff, 0x18, 0x69, 0x01, 0xa0, 0x01, 0xcd, 0xdc, 0x06, 0x90, 0x03, 0x8c, 0x65, 0x03, 0xbd, 
+    0x8a, 0x07, 0xd0, 0x28, 0x20, 0x8c, 0xbf, 0xad, 0x5f, 0x07, 0xc9, 0x05, 0x90, 0x09, 0xa5, 0x09, 
+    0x29, 0x03, 0xd0, 0x03, 0x20, 0x94, 0xba, 0xb5, 0xcf, 0xc9, 0x80, 0x90, 0x1c, 0xbd, 0xa7, 0x07, 
+    0x29, 0x03, 0xa8, 0xb9, 0x61, 0xd0, 0x9d, 0x8a, 0x07, 0x4c, 0x49, 0xd1, 0xc9, 0x01, 0xd0, 0x09, 
+    0xd6, 0xcf, 0x20, 0x63, 0xc3, 0xa9, 0xfe, 0x95, 0xa0, 0xad, 0x5f, 0x07, 0xc9, 0x07, 0xf0, 0x04, 
+    0xc9, 0x05, 0xb0, 0x27, 0xad, 0x90, 0x07, 0xd0, 0x22, 0xa9, 0x20, 0x8d, 0x90, 0x07, 0xad, 0x63, 
+    0x03, 0x49, 0x80, 0x8d, 0x63, 0x03, 0x30, 0xe1, 0x20, 0xd9, 0xd1, 0xac, 0xcc, 0x06, 0xf0, 0x03, 
+    0x38, 0xe9, 0x10, 0x8d, 0x90, 0x07, 0xa9, 0x15, 0x8d, 0xcb, 0x06, 0x20, 0xbc, 0xd1, 0xa0, 0x10, 
+    0xb5, 0x46, 0x4a, 0x90, 0x02, 0xa0, 0xf0, 0x98, 0x18, 0x75, 0x87, 0xac, 0xcf, 0x06, 0x99, 0x87, 
+    0x00, 0xb5, 0xcf, 0x18, 0x69, 0x08, 0x99, 0xcf, 0x00, 0xb5, 0x1e, 0x99, 0x1e, 0x00, 0xb5, 0x46, 
+    0x99, 0x46, 0x00, 0xa5, 0x08, 0x48, 0xae, 0xcf, 0x06, 0x86, 0x08, 0xa9, 0x2d, 0x95, 0x16, 0x20, 
+    0xbc, 0xd1, 0x68, 0x85, 0x08, 0xaa, 0xa9, 0x00, 0x8d, 0x6a, 0x03, 0x60, 0xee, 0x6a, 0x03, 0x20, 
+    0xd7, 0xc8, 0xb5, 0x1e, 0xd0, 0xf5, 0xa9, 0x0a, 0x9d, 0x9a, 0x04, 0x20, 0x43, 0xe2, 0x4c, 0x53, 
+    0xd8, 0xbf, 0x40, 0xbf, 0xbf, 0xbf, 0x40, 0x40, 0xbf, 0xac, 0x67, 0x03, 0xee, 0x67, 0x03, 0xad, 
+    0x67, 0x03, 0x29, 0x07, 0x8d, 0x67, 0x03, 0xb9, 0xd1, 0xd1, 0x60, 0xad, 0x47, 0x07, 0xd0, 0x30, 
+    0xa9, 0x40, 0xac, 0xcc, 0x06, 0xf0, 0x02, 0xa9, 0x60, 0x85, 0x00, 0xbd, 0x01, 0x04, 0x38, 0xe5, 
+    0x00, 0x9d, 0x01, 0x04, 0xb5, 0x87, 0xe9, 0x01, 0x95, 0x87, 0xb5, 0x6e, 0xe9, 0x00, 0x95, 0x6e, 
+    0xbc, 0x17, 0x04, 0xb5, 0xcf, 0xd9, 0x9d, 0xc5, 0xf0, 0x06, 0x18, 0x7d, 0x34, 0x04, 0x95, 0xcf, 
+    0x20, 0x52, 0xf1, 0xb5, 0x1e, 0xd0, 0xc3, 0xa9, 0x51, 0x85, 0x00, 0xa0, 0x02, 0xa5, 0x09, 0x29, 
+    0x02, 0xf0, 0x02, 0xa0, 0x82, 0x84, 0x01, 0xbc, 0xe5, 0x06, 0xa2, 0x00, 0xad, 0xb9, 0x03, 0x99, 
+    0x00, 0x02, 0xa5, 0x00, 0x99, 0x01, 0x02, 0xe6, 0x00, 0xa5, 0x01, 0x99, 0x02, 0x02, 0xad, 0xae, 
+    0x03, 0x99, 0x03, 0x02, 0x18, 0x69, 0x08, 0x8d, 0xae, 0x03, 0xc8, 0xc8, 0xc8, 0xc8, 0xe8, 0xe0, 
+    0x03, 0x90, 0xd9, 0xa6, 0x08, 0x20, 0xaf, 0xf1, 0xbc, 0xe5, 0x06, 0xad, 0xd1, 0x03, 0x4a, 0x48, 
+    0x90, 0x05, 0xa9, 0xf8, 0x99, 0x0c, 0x02, 0x68, 0x4a, 0x48, 0x90, 0x05, 0xa9, 0xf8, 0x99, 0x08, 
+    0x02, 0x68, 0x4a, 0x48, 0x90, 0x05, 0xa9, 0xf8, 0x99, 0x04, 0x02, 0x68, 0x4a, 0x90, 0x05, 0xa9, 
+    0xf8, 0x99, 0x00, 0x02, 0x60, 0xd6, 0xa0, 0xd0, 0x0c, 0xa9, 0x08, 0x95, 0xa0, 0xf6, 0x58, 0xb5, 
+    0x58, 0xc9, 0x03, 0xb0, 0x18, 0x20, 0x52, 0xf1, 0xad, 0xb9, 0x03, 0x8d, 0xba, 0x03, 0xad, 0xae, 
+    0x03, 0x8d, 0xaf, 0x03, 0xbc, 0xe5, 0x06, 0xb5, 0x58, 0x20, 0x17, 0xed, 0x60, 0xa9, 0x00, 0x95, 
+    0x0f, 0xa9, 0x08, 0x85, 0xfe, 0xa9, 0x05, 0x8d, 0x38, 0x01, 0x4c, 0x36, 0xd3, 0x00, 0x00, 0x08, 
+    0x08, 0x00, 0x08, 0x00, 0x08, 0x54, 0x55, 0x56, 0x57, 0xa9, 0x00, 0x8d, 0xcb, 0x06, 0xad, 0x46, 
+    0x07, 0xc9, 0x05, 0xb0, 0x2c, 0x20, 0x04, 0x8e, 0x11, 0xd3, 0xf2, 0xd2, 0x12, 0xd3, 0x4e, 0xd3, 
+    0xa2, 0xd3, 0xa0, 0x05, 0xad, 0xfa, 0x07, 0xc9, 0x01, 0xf0, 0x0e, 0xa0, 0x03, 0xc9, 0x03, 0xf0, 
+    0x08, 0xa0, 0x00, 0xc9, 0x06, 0xf0, 0x02, 0xa9, 0xff, 0x8d, 0xd7, 0x06, 0x94, 0x1e, 0xee, 0x46, 
+    0x07, 0x60, 0xad, 0xf8, 0x07, 0x0d, 0xf9, 0x07, 0x0d, 0xfa, 0x07, 0xf0, 0xf1, 0xa5, 0x09, 0x29, 
+    0x04, 0xf0, 0x04, 0xa9, 0x10, 0x85, 0xfe, 0xa0, 0x23, 0xa9, 0xff, 0x8d, 0x39, 0x01, 0x20, 0x5f, 
+    0x8f, 0xa9, 0x05, 0x8d, 0x39, 0x01, 0xa0, 0x0b, 0xad, 0x53, 0x07, 0xf0, 0x02, 0xa0, 0x11, 0x20, 
+    0x5f, 0x8f, 0xad, 0x53, 0x07, 0x0a, 0x0a, 0x0a, 0x0a, 0x09, 0x04, 0x4c, 0x36, 0xbc, 0xb5, 0xcf, 
+    0xc9, 0x72, 0x90, 0x05, 0xd6, 0xcf, 0x4c, 0x65, 0xd3, 0xad, 0xd7, 0x06, 0xf0, 0x38, 0x30, 0x36, 
+    0xa9, 0x16, 0x8d, 0xcb, 0x06, 0x20, 0x52, 0xf1, 0xbc, 0xe5, 0x06, 0xa2, 0x03, 0xad, 0xb9, 0x03, 
+    0x18, 0x7d, 0xcd, 0xd2, 0x99, 0x00, 0x02, 0xbd, 0xd5, 0xd2, 0x99, 0x01, 0x02, 0xa9, 0x22, 0x99, 
+    0x02, 0x02, 0xad, 0xae, 0x03, 0x18, 0x7d, 0xd1, 0xd2, 0x99, 0x03, 0x02, 0xc8, 0xc8, 0xc8, 0xc8, 
+    0xca, 0x10, 0xda, 0xa6, 0x08, 0x60, 0x20, 0x65, 0xd3, 0xa9, 0x06, 0x9d, 0x96, 0x07, 0xee, 0x46, 
+    0x07, 0x60, 0x20, 0x65, 0xd3, 0xbd, 0x96, 0x07, 0xd0, 0x05, 0xad, 0xb1, 0x07, 0xf0, 0xef, 0x60, 
+    0xb5, 0x1e, 0xd0, 0x56, 0xbd, 0x8a, 0x07, 0xd0, 0x51, 0xb5, 0xa0, 0xd0, 0x23, 0xb5, 0x58, 0x30, 
+    0x14, 0x20, 0x43, 0xe1, 0x10, 0x09, 0xa5, 0x00, 0x49, 0xff, 0x18, 0x69, 0x01, 0x85, 0x00, 0xa5, 
+    0x00, 0xc9, 0x21, 0x90, 0x35, 0xb5, 0x58, 0x49, 0xff, 0x18, 0x69, 0x01, 0x95, 0x58, 0xf6, 0xa0, 
+    0xbd, 0x34, 0x04, 0xb4, 0x58, 0x10, 0x03, 0xbd, 0x17, 0x04, 0x85, 0x00, 0xa5, 0x09, 0x4a, 0x90, 
+    0x19, 0xad, 0x47, 0x07, 0xd0, 0x14, 0xb5, 0xcf, 0x18, 0x75, 0x58, 0x95, 0xcf, 0xc5, 0x00, 0xd0, 
+    0x09, 0xa9, 0x00, 0x95, 0xa0, 0xa9, 0x40, 0x9d, 0x8a, 0x07, 0xa9, 0x20, 0x9d, 0xc5, 0x03, 0x60, 
+    0x85, 0x07, 0xb5, 0x34, 0xd0, 0x0e, 0xa0, 0x18, 0xb5, 0x58, 0x18, 0x65, 0x07, 0x95, 0x58, 0xb5, 
+    0xa0, 0x69, 0x00, 0x60, 0xa0, 0x08, 0xb5, 0x58, 0x38, 0xe5, 0x07, 0x95, 0x58, 0xb5, 0xa0, 0xe9, 
+    0x00, 0x60, 0xb5, 0xb6, 0xc9, 0x03, 0xd0, 0x03, 0x4c, 0x98, 0xc9, 0xb5, 0x1e, 0x10, 0x01, 0x60, 
+    0xa8, 0xbd, 0xa2, 0x03, 0x85, 0x00, 0xb5, 0x46, 0xf0, 0x03, 0x4c, 0xbb, 0xd5, 0xa9, 0x2d, 0xd5, 
+    0xcf, 0x90, 0x0f, 0xc4, 0x00, 0xf0, 0x08, 0x18, 0x69, 0x02, 0x95, 0xcf, 0x4c, 0xb1, 0xd5, 0x4c, 
+    0x98, 0xd5, 0xd9, 0xcf, 0x00, 0x90, 0x0d, 0xe4, 0x00, 0xf0, 0xf4, 0x18, 0x69, 0x02, 0x99, 0xcf, 
+    0x00, 0x4c, 0xb1, 0xd5, 0xb5, 0xcf, 0x48, 0xbd, 0xa2, 0x03, 0x10, 0x18, 0xbd, 0x34, 0x04, 0x18, 
+    0x69, 0x05, 0x85, 0x00, 0xb5, 0xa0, 0x69, 0x00, 0x30, 0x1a, 0xd0, 0x0c, 0xa5, 0x00, 0xc9, 0x0b, 
+    0x90, 0x0c, 0xb0, 0x04, 0xc5, 0x08, 0xf0, 0x0c, 0x20, 0xb7, 0xbf, 0x4c, 0xa7, 0xd4, 0x20, 0xb1, 
+    0xd5, 0x4c, 0xa7, 0xd4, 0x20, 0xb4, 0xbf, 0xb4, 0x1e, 0x68, 0x38, 0xf5, 0xcf, 0x18, 0x79, 0xcf, 
+    0x00, 0x99, 0xcf, 0x00, 0xbd, 0xa2, 0x03, 0x30, 0x04, 0xaa, 0x20, 0x21, 0xdc, 0xa4, 0x08, 0xb9, 
+    0xa0, 0x00, 0x19, 0x34, 0x04, 0xf0, 0x77, 0xae, 0x00, 0x03, 0xe0, 0x20, 0xb0, 0x70, 0xb9, 0xa0, 
+    0x00, 0x48, 0x48, 0x20, 0x41, 0xd5, 0xa5, 0x01, 0x9d, 0x01, 0x03, 0xa5, 0x00, 0x9d, 0x02, 0x03, 
+    0xa9, 0x02, 0x9d, 0x03, 0x03, 0xb9, 0xa0, 0x00, 0x30, 0x0d, 0xa9, 0xa2, 0x9d, 0x04, 0x03, 0xa9, 
+    0xa3, 0x9d, 0x05, 0x03, 0x4c, 0xff, 0xd4, 0xa9, 0x24, 0x9d, 0x04, 0x03, 0x9d, 0x05, 0x03, 0xb9, 
+    0x1e, 0x00, 0xa8, 0x68, 0x49, 0xff, 0x20, 0x41, 0xd5, 0xa5, 0x01, 0x9d, 0x06, 0x03, 0xa5, 0x00, 
+    0x9d, 0x07, 0x03, 0xa9, 0x02, 0x9d, 0x08, 0x03, 0x68, 0x10, 0x0d, 0xa9, 0xa2, 0x9d, 0x09, 0x03, 
+    0xa9, 0xa3, 0x9d, 0x0a, 0x03, 0x4c, 0x30, 0xd5, 0xa9, 0x24, 0x9d, 0x09, 0x03, 0x9d, 0x0a, 0x03, 
+    0xa9, 0x00, 0x9d, 0x0b, 0x03, 0xad, 0x00, 0x03, 0x18, 0x69, 0x0a, 0x8d, 0x00, 0x03, 0xa6, 0x08, 
+    0x60, 0x48, 0xb9, 0x87, 0x00, 0x18, 0x69, 0x08, 0xae, 0xcc, 0x06, 0xd0, 0x03, 0x18, 0x69, 0x10, 
+    0x48, 0xb9, 0x6e, 0x00, 0x69, 0x00, 0x85, 0x02, 0x68, 0x29, 0xf0, 0x4a, 0x4a, 0x4a, 0x85, 0x00, 
+    0xb6, 0xcf, 0x68, 0x10, 0x05, 0x8a, 0x18, 0x69, 0x08, 0xaa, 0x8a, 0xae, 0x00, 0x03, 0x0a, 0x2a, 
+    0x48, 0x2a, 0x29, 0x03, 0x09, 0x20, 0x85, 0x01, 0xa5, 0x02, 0x29, 0x01, 0x0a, 0x0a, 0x05, 0x01, 
+    0x85, 0x01, 0x68, 0x29, 0xe0, 0x18, 0x65, 0x00, 0x85, 0x00, 0xb9, 0xcf, 0x00, 0xc9, 0xe8, 0x90, 
+    0x06, 0xa5, 0x00, 0x29, 0xbf, 0x85, 0x00, 0x60, 0x98, 0xaa, 0x20, 0xaf, 0xf1, 0xa9, 0x06, 0x20, 
+    0x11, 0xda, 0xad, 0xad, 0x03, 0x9d, 0x17, 0x01, 0xa5, 0xce, 0x9d, 0x1e, 0x01, 0xa9, 0x01, 0x95, 
+    0x46, 0x20, 0x63, 0xc3, 0x99, 0xa0, 0x00, 0x99, 0x34, 0x04, 0x60, 0x98, 0x48, 0x20, 0x6b, 0xbf, 
+    0x68, 0xaa, 0x20, 0x6b, 0xbf, 0xa6, 0x08, 0xbd, 0xa2, 0x03, 0x30, 0x04, 0xaa, 0x20, 0x21, 0xdc, 
+    0xa6, 0x08, 0x60, 0xb5, 0xa0, 0x1d, 0x34, 0x04, 0xd0, 0x15, 0x9d, 0x17, 0x04, 0xb5, 0xcf, 0xdd, 
+    0x01, 0x04, 0xb0, 0x0b, 0xa5, 0x09, 0x29, 0x07, 0xd0, 0x02, 0xf6, 0xcf, 0x4c, 0xfe, 0xd5, 0xb5, 
+    0xcf, 0xd5, 0x58, 0x90, 0x06, 0x20, 0xb7, 0xbf, 0x4c, 0xfe, 0xd5, 0x20, 0xb4, 0xbf, 0xbd, 0xa2, 
+    0x03, 0x30, 0x03, 0x20, 0x21, 0xdc, 0x60, 0xa9, 0x0e, 0x20, 0x47, 0xcb, 0x20, 0x66, 0xcb, 0xbd, 
+    0xa2, 0x03, 0x30, 0x1c, 0xa5, 0x86, 0x18, 0x65, 0x00, 0x85, 0x86, 0xa5, 0x6d, 0xa4, 0x00, 0x30, 
+    0x05, 0x69, 0x00, 0x4c, 0x28, 0xd6, 0xe9, 0x00, 0x85, 0x6d, 0x8c, 0xa1, 0x03, 0x20, 0x21, 0xdc, 
+    0x60, 0xbd, 0xa2, 0x03, 0x30, 0x06, 0x20, 0x88, 0xbf, 0x20, 0x21, 0xdc, 0x60, 0x20, 0x02, 0xbf, 
+    0x85, 0x00, 0xbd, 0xa2, 0x03, 0x30, 0x07, 0xa9, 0x10, 0x95, 0x58, 0x20, 0x14, 0xd6, 0x60, 0x20, 
+    0x5b, 0xd6, 0x4c, 0xfe, 0xd5, 0x20, 0x5b, 0xd6, 0x4c, 0x71, 0xd6, 0xad, 0x47, 0x07, 0xd0, 0x19, 
+    0xbd, 0x17, 0x04, 0x18, 0x7d, 0x34, 0x04, 0x9d, 0x17, 0x04, 0xb5, 0xcf, 0x75, 0xa0, 0x95, 0xcf, 
+    0x60, 0xbd, 0xa2, 0x03, 0xf0, 0x03, 0x20, 0x19, 0xdc, 0x60, 0xb5, 0x16, 0xc9, 0x14, 0xf0, 0x55, 
+    0xad, 0x1c, 0x07, 0xb4, 0x16, 0xc0, 0x05, 0xf0, 0x04, 0xc0, 0x0d, 0xd0, 0x02, 0x69, 0x38, 0xe9, 
+    0x48, 0x85, 0x01, 0xad, 0x1a, 0x07, 0xe9, 0x00, 0x85, 0x00, 0xad, 0x1d, 0x07, 0x69, 0x48, 0x85, 
+    0x03, 0xad, 0x1b, 0x07, 0x69, 0x00, 0x85, 0x02, 0xb5, 0x87, 0xc5, 0x01, 0xb5, 0x6e, 0xe5, 0x00, 
+    0x30, 0x20, 0xb5, 0x87, 0xc5, 0x03, 0xb5, 0x6e, 0xe5, 0x02, 0x30, 0x19, 0xb5, 0x1e, 0xc9, 0x05, 
+    0xf0, 0x13, 0xc0, 0x0d, 0xf0, 0x0f, 0xc0, 0x30, 0xf0, 0x0b, 0xc0, 0x31, 0xf0, 0x07, 0xc0, 0x32, 
+    0xf0, 0x03, 0x20, 0x98, 0xc9, 0x60, 0xff, 0xff, 0xff, 0xb5, 0x24, 0xf0, 0x56, 0x0a, 0xb0, 0x53, 
+    0xa5, 0x09, 0x4a, 0xb0, 0x4e, 0x8a, 0x0a, 0x0a, 0x18, 0x69, 0x1c, 0xa8, 0xa2, 0x04, 0x86, 0x01, 
+    0x98, 0x48, 0xb5, 0x1e, 0x29, 0x20, 0xd0, 0x34, 0xb5, 0x0f, 0xf0, 0x30, 0xb5, 0x16, 0xc9, 0x24, 
+    0x90, 0x04, 0xc9, 0x2b, 0x90, 0x26, 0xc9, 0x06, 0xd0, 0x06, 0xb5, 0x1e, 0xc9, 0x02, 0xb0, 0x1c, 
+    0xbd, 0xd8, 0x03, 0xd0, 0x17, 0x8a, 0x0a, 0x0a, 0x18, 0x69, 0x04, 0xaa, 0x20, 0x27, 0xe3, 0xa6, 
+    0x08, 0x90, 0x09, 0xa9, 0x80, 0x95, 0x24, 0xa6, 0x01, 0x20, 0x3e, 0xd7, 0x68, 0xa8, 0xa6, 0x01, 
+    0xca, 0x10, 0xbb, 0xa6, 0x08, 0x60, 0x06, 0x00, 0x02, 0x12, 0x11, 0x07, 0x05, 0x2d, 0x20, 0x52, 
+    0xf1, 0xa6, 0x01, 0xb5, 0x0f, 0x10, 0x0b, 0x29, 0x0f, 0xaa, 0xb5, 0x16, 0xc9, 0x2d, 0xf0, 0x0c, 
+    0xa6, 0x01, 0xb5, 0x16, 0xc9, 0x02, 0xf0, 0x6b, 0xc9, 0x2d, 0xd0, 0x2d, 0xce, 0x83, 0x04, 0xd0, 
+    0x62, 0x20, 0x63, 0xc3, 0x95, 0x58, 0x8d, 0xcb, 0x06, 0xa9, 0xfe, 0x95, 0xa0, 0xac, 0x5f, 0x07, 
+    0xb9, 0x36, 0xd7, 0x95, 0x16, 0xa9, 0x20, 0xc0, 0x03, 0xb0, 0x02, 0x09, 0x03, 0x95, 0x1e, 0xa9, 
+    0x80, 0x85, 0xfe, 0xa6, 0x01, 0xa9, 0x09, 0xd0, 0x33, 0xc9, 0x08, 0xf0, 0x36, 0xc9, 0x0c, 0xf0, 
+    0x32, 0xc9, 0x15, 0xb0, 0x2e, 0xb5, 0x16, 0xc9, 0x0d, 0xd0, 0x06, 0xb5, 0xcf, 0x69, 0x18, 0x95, 
+    0xcf, 0x20, 0x1b, 0xe0, 0xb5, 0x1e, 0x29, 0x1f, 0x09, 0x20, 0x95, 0x1e, 0xa9, 0x02, 0xb4, 0x16, 
+    0xc0, 0x05, 0xd0, 0x02, 0xa9, 0x06, 0xc0, 0x06, 0xd0, 0x02, 0xa9, 0x01, 0x20, 0x11, 0xda, 0xa9, 
+    0x08, 0x85, 0xff, 0x60, 0xa5, 0x09, 0x4a, 0x90, 0x36, 0xad, 0x47, 0x07, 0x0d, 0xd6, 0x03, 0xd0, 
+    0x2e, 0x8a, 0x0a, 0x0a, 0x18, 0x69, 0x24, 0xa8, 0x20, 0x25, 0xe3, 0xa6, 0x08, 0x90, 0x1b, 0xbd, 
+    0xbe, 0x06, 0xd0, 0x1b, 0xa9, 0x01, 0x9d, 0xbe, 0x06, 0xb5, 0x64, 0x49, 0xff, 0x18, 0x69, 0x01, 
+    0x95, 0x64, 0xad, 0x9f, 0x07, 0xd0, 0x08, 0x4c, 0x2c, 0xd9, 0xa9, 0x00, 0x9d, 0xbe, 0x06, 0x60, 
+    0x20, 0x98, 0xc9, 0xa9, 0x06, 0x20, 0x11, 0xda, 0xa9, 0x20, 0x85, 0xfe, 0xa5, 0x39, 0xc9, 0x02, 
+    0x90, 0x0e, 0xc9, 0x03, 0xf0, 0x24, 0xa9, 0x23, 0x8d, 0x9f, 0x07, 0xa9, 0x40, 0x85, 0xfb, 0x60, 
+    0xad, 0x56, 0x07, 0xf0, 0x1b, 0xc9, 0x01, 0xd0, 0x23, 0xa6, 0x08, 0xa9, 0x02, 0x8d, 0x56, 0x07, 
+    0x20, 0xf1, 0x85, 0xa6, 0x08, 0xa9, 0x0c, 0x4c, 0x47, 0xd8, 0xa9, 0x0b, 0x9d, 0x10, 0x01, 0x60, 
+    0xa9, 0x01, 0x8d, 0x56, 0x07, 0xa9, 0x09, 0xa0, 0x00, 0x20, 0x48, 0xd9, 0x60, 0x18, 0xe8, 0x30, 
+    0xd0, 0x08, 0xf8, 0xa5, 0x09, 0x4a, 0xb0, 0xf4, 0x20, 0x41, 0xdc, 0xb0, 0x23, 0xbd, 0xd8, 0x03, 
+    0xd0, 0x1e, 0xa5, 0x0e, 0xc9, 0x08, 0xd0, 0x18, 0xb5, 0x1e, 0x29, 0x20, 0xd0, 0x12, 0x20, 0x52, 
+    0xdc, 0x20, 0x25, 0xe3, 0xa6, 0x08, 0xb0, 0x09, 0xbd, 0x91, 0x04, 0x29, 0xfe, 0x9d, 0x91, 0x04, 
+    0x60, 0xb4, 0x16, 0xc0, 0x2e, 0xd0, 0x03, 0x4c, 0x00, 0xd8, 0xad, 0x9f, 0x07, 0xf0, 0x06, 0x4c, 
+    0x95, 0xd7, 0x0a, 0x06, 0x04, 0xbd, 0x91, 0x04, 0x29, 0x01, 0x1d, 0xd8, 0x03, 0xd0, 0x59, 0xa9, 
+    0x01, 0x1d, 0x91, 0x04, 0x9d, 0x91, 0x04, 0xc0, 0x12, 0xf0, 0x4e, 0xc0, 0x0d, 0xf0, 0x7d, 0xc0, 
+    0x0c, 0xf0, 0x79, 0xc0, 0x33, 0xf0, 0x42, 0xc0, 0x15, 0xb0, 0x71, 0xad, 0x4e, 0x07, 0xf0, 0x6c, 
+    0xb5, 0x1e, 0x0a, 0xb0, 0x34, 0xb5, 0x1e, 0x29, 0x07, 0xc9, 0x02, 0x90, 0x2c, 0xb5, 0x16, 0xc9, 
+    0x06, 0xf0, 0x25, 0xa9, 0x08, 0x85, 0xff, 0xb5, 0x1e, 0x09, 0x80, 0x95, 0x1e, 0x20, 0x05, 0xda, 
+    0xb9, 0x4f, 0xd8, 0x95, 0x58, 0xa9, 0x03, 0x18, 0x6d, 0x84, 0x04, 0xbc, 0x96, 0x07, 0xc0, 0x03, 
+    0xb0, 0x03, 0xb9, 0x92, 0xd8, 0x20, 0x11, 0xda, 0x60, 0xa5, 0x9f, 0x30, 0x02, 0xd0, 0x6a, 0xb5, 
+    0x16, 0xc9, 0x07, 0x90, 0x09, 0xa5, 0xce, 0x18, 0x69, 0x0c, 0xd5, 0xcf, 0x90, 0x5b, 0xad, 0x91, 
+    0x07, 0xd0, 0x56, 0xad, 0x9e, 0x07, 0xd0, 0x3d, 0xad, 0xad, 0x03, 0xcd, 0xae, 0x03, 0x90, 0x03, 
+    0x4c, 0xf6, 0xd9, 0xb5, 0x46, 0xc9, 0x01, 0xd0, 0x03, 0x4c, 0xff, 0xd9, 0xad, 0x9e, 0x07, 0xd0, 
+    0x24, 0xae, 0x56, 0x07, 0xf0, 0x22, 0x8d, 0x56, 0x07, 0xa9, 0x08, 0x8d, 0x9e, 0x07, 0x0a, 0x85, 
+    0xff, 0x20, 0xf1, 0x85, 0xa9, 0x0a, 0xa0, 0x01, 0x85, 0x0e, 0x84, 0x1d, 0xa0, 0xff, 0x8c, 0x47, 
+    0x07, 0xc8, 0x8c, 0x75, 0x07, 0xa6, 0x08, 0x60, 0x86, 0x57, 0xe8, 0x86, 0xfc, 0xa9, 0xfc, 0x85, 
+    0x9f, 0xa9, 0x0b, 0xd0, 0xe1, 0x02, 0x06, 0x05, 0x06, 0xb5, 0x16, 0xc9, 0x12, 0xf0, 0xbd, 0xa9, 
+    0x04, 0x85, 0xff, 0xb5, 0x16, 0xa0, 0x00, 0xc9, 0x14, 0xf0, 0x1b, 0xc9, 0x08, 0xf0, 0x17, 0xc9, 
+    0x33, 0xf0, 0x13, 0xc9, 0x0c, 0xf0, 0x0f, 0xc8, 0xc9, 0x05, 0xf0, 0x0a, 0xc8, 0xc9, 0x11, 0xf0, 
+    0x05, 0xc8, 0xc9, 0x07, 0xd0, 0x1d, 0xb9, 0x65, 0xd9, 0x20, 0x11, 0xda, 0xb5, 0x46, 0x48, 0x20, 
+    0x2f, 0xe0, 0x68, 0x95, 0x46, 0xa9, 0x20, 0x95, 0x1e, 0x20, 0x63, 0xc3, 0x95, 0x58, 0xa9, 0xfd, 
+    0x85, 0x9f, 0x60, 0xc9, 0x09, 0x90, 0x1d, 0x29, 0x01, 0x95, 0x16, 0xa0, 0x00, 0x94, 0x1e, 0xa9, 
+    0x03, 0x20, 0x11, 0xda, 0x20, 0x63, 0xc3, 0x20, 0x05, 0xda, 0xb9, 0x51, 0xd8, 0x95, 0x58, 0x4c, 
+    0xf1, 0xd9, 0x10, 0x0b, 0xa9, 0x04, 0x95, 0x1e, 0xee, 0x84, 0x04, 0xad, 0x84, 0x04, 0x18, 0x6d, 
+    0x91, 0x07, 0x20, 0x11, 0xda, 0xee, 0x91, 0x07, 0xac, 0x6a, 0x07, 0xb9, 0xd2, 0xd9, 0x9d, 0x96, 
+    0x07, 0xa9, 0xfc, 0x85, 0x9f, 0x60, 0xb5, 0x46, 0xc9, 0x01, 0xd0, 0x03, 0x4c, 0x2c, 0xd9, 0x20, 
+    0x1c, 0xdb, 0x4c, 0x2c, 0xd9, 0xa0, 0x01, 0x20, 0x43, 0xe1, 0x10, 0x01, 0xc8, 0x94, 0x46, 0x88, 
+    0x60, 0x9d, 0x10, 0x01, 0xa9, 0x30, 0x9d, 0x2c, 0x01, 0xb5, 0xcf, 0x9d, 0x1e, 0x01, 0xad, 0xae, 
+    0x03, 0x9d, 0x17, 0x01, 0x60, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x7f, 0xbf, 0xdf, 0xef, 
+    0xf7, 0xfb, 0xfd, 0xa5, 0x09, 0x4a, 0x90, 0xec, 0xad, 0x4e, 0x07, 0xf0, 0xe7, 0xb5, 0x16, 0xc9, 
+    0x15, 0xb0, 0x6e, 0xc9, 0x11, 0xf0, 0x6a, 0xc9, 0x0d, 0xf0, 0x66, 0xbd, 0xd8, 0x03, 0xd0, 0x61, 
+    0x20, 0x52, 0xdc, 0xca, 0x30, 0x5b, 0x86, 0x01, 0x98, 0x48, 0xb5, 0x0f, 0xf0, 0x4c, 0xb5, 0x16, 
+    0xc9, 0x15, 0xb0, 0x46, 0xc9, 0x11, 0xf0, 0x42, 0xc9, 0x0d, 0xf0, 0x3e, 0xbd, 0xd8, 0x03, 0xd0, 
+    0x39, 0x8a, 0x0a, 0x0a, 0x18, 0x69, 0x04, 0xaa, 0x20, 0x27, 0xe3, 0xa6, 0x08, 0xa4, 0x01, 0x90, 
+    0x20, 0xb5, 0x1e, 0x19, 0x1e, 0x00, 0x29, 0x80, 0xd0, 0x11, 0xb9, 0x91, 0x04, 0x3d, 0x25, 0xda, 
+    0xd0, 0x18, 0xb9, 0x91, 0x04, 0x1d, 0x25, 0xda, 0x99, 0x91, 0x04, 0x20, 0xb4, 0xda, 0x4c, 0xaa, 
+    0xda, 0xb9, 0x91, 0x04, 0x3d, 0x2c, 0xda, 0x99, 0x91, 0x04, 0x68, 0xa8, 0xa6, 0x01, 0xca, 0x10, 
+    0xa5, 0xa6, 0x08, 0x60, 0xb9, 0x1e, 0x00, 0x15, 0x1e, 0x29, 0x20, 0xd0, 0x33, 0xb5, 0x1e, 0xc9, 
+    0x06, 0x90, 0x2e, 0xb5, 0x16, 0xc9, 0x05, 0xf0, 0x27, 0xb9, 0x1e, 0x00, 0x0a, 0x90, 0x0a, 0xa9, 
+    0x06, 0x20, 0x11, 0xda, 0x20, 0x95, 0xd7, 0xa4, 0x01, 0x98, 0xaa, 0x20, 0x95, 0xd7, 0xa6, 0x08, 
+    0xbd, 0x25, 0x01, 0x18, 0x69, 0x04, 0xa6, 0x01, 0x20, 0x11, 0xda, 0xa6, 0x08, 0xfe, 0x25, 0x01, 
+    0x60, 0xb9, 0x1e, 0x00, 0xc9, 0x06, 0x90, 0x1d, 0xb9, 0x16, 0x00, 0xc9, 0x05, 0xf0, 0xf1, 0x20, 
+    0x95, 0xd7, 0xa4, 0x01, 0xb9, 0x25, 0x01, 0x18, 0x69, 0x04, 0xa6, 0x08, 0x20, 0x11, 0xda, 0xa6, 
+    0x01, 0xfe, 0x25, 0x01, 0x60, 0x98, 0xaa, 0x20, 0x1c, 0xdb, 0xa6, 0x08, 0xb5, 0x16, 0xc9, 0x0d, 
+    0xf0, 0x22, 0xc9, 0x11, 0xf0, 0x1e, 0xc9, 0x05, 0xf0, 0x1a, 0xc9, 0x12, 0xf0, 0x08, 0xc9, 0x0e, 
+    0xf0, 0x04, 0xc9, 0x07, 0xb0, 0x0e, 0xb5, 0x58, 0x49, 0xff, 0xa8, 0xc8, 0x94, 0x58, 0xb5, 0x46, 
+    0x49, 0x03, 0x95, 0x46, 0x60, 0xa9, 0xff, 0x9d, 0xa2, 0x03, 0xad, 0x47, 0x07, 0xd0, 0x29, 0xb5, 
+    0x1e, 0x30, 0x25, 0xb5, 0x16, 0xc9, 0x24, 0xd0, 0x06, 0xb5, 0x1e, 0xaa, 0x20, 0x5f, 0xdb, 0x20, 
+    0x41, 0xdc, 0xb0, 0x14, 0x8a, 0x20, 0x54, 0xdc, 0xb5, 0xcf, 0x85, 0x00, 0x8a, 0x48, 0x20, 0x25, 
+    0xe3, 0x68, 0xaa, 0x90, 0x03, 0x20, 0xbc, 0xdb, 0xa6, 0x08, 0x60, 0xad, 0x47, 0x07, 0xd0, 0x37, 
+    0x9d, 0xa2, 0x03, 0x20, 0x41, 0xdc, 0xb0, 0x2f, 0xa9, 0x02, 0x85, 0x00, 0xa6, 0x08, 0x20, 0x52, 
+    0xdc, 0x29, 0x02, 0xd0, 0x22, 0xb9, 0xad, 0x04, 0xc9, 0x20, 0x90, 0x05, 0x20, 0x25, 0xe3, 0xb0, 
+    0x19, 0xb9, 0xad, 0x04, 0x18, 0x69, 0x80, 0x99, 0xad, 0x04, 0xb9, 0xaf, 0x04, 0x18, 0x69, 0x80, 
+    0x99, 0xaf, 0x04, 0xc6, 0x00, 0xd0, 0xd5, 0xa6, 0x08, 0x60, 0xa6, 0x08, 0xb9, 0xaf, 0x04, 0x38, 
+    0xed, 0xad, 0x04, 0xc9, 0x04, 0xb0, 0x08, 0xa5, 0x9f, 0x10, 0x04, 0xa9, 0x01, 0x85, 0x9f, 0xad, 
+    0xaf, 0x04, 0x38, 0xf9, 0xad, 0x04, 0xc9, 0x06, 0xb0, 0x1b, 0xa5, 0x9f, 0x30, 0x17, 0xa5, 0x00, 
+    0xb4, 0x16, 0xc0, 0x2b, 0xf0, 0x05, 0xc0, 0x2c, 0xf0, 0x01, 0x8a, 0xa6, 0x08, 0x9d, 0xa2, 0x03, 
+    0xa9, 0x00, 0x85, 0x1d, 0x60, 0xa9, 0x01, 0x85, 0x00, 0xad, 0xae, 0x04, 0x38, 0xf9, 0xac, 0x04, 
+    0xc9, 0x08, 0x90, 0x0d, 0xe6, 0x00, 0xb9, 0xae, 0x04, 0x18, 0xed, 0xac, 0x04, 0xc9, 0x09, 0xb0, 
+    0x03, 0x20, 0x4b, 0xdf, 0xa6, 0x08, 0x60, 0x80, 0x00, 0xa8, 0xb5, 0xcf, 0x18, 0x79, 0x16, 0xdc, 
+    0x2c, 0xb5, 0xcf, 0xa4, 0x0e, 0xc0, 0x0b, 0xf0, 0x17, 0xb4, 0xb6, 0xc0, 0x01, 0xd0, 0x11, 0x38, 
+    0xe9, 0x20, 0x85, 0xce, 0x98, 0xe9, 0x00, 0x85, 0xb5, 0xa9, 0x00, 0x85, 0x9f, 0x8d, 0x33, 0x04, 
+    0x60, 0xad, 0xd0, 0x03, 0xc9, 0xf0, 0xb0, 0x09, 0xa4, 0xb5, 0x88, 0xd0, 0x04, 0xa5, 0xce, 0xc9, 
+    0xd0, 0x60, 0xa5, 0x08, 0x0a, 0x0a, 0x18, 0x69, 0x04, 0xa8, 0xad, 0xd1, 0x03, 0x29, 0x0f, 0xc9, 
+    0x0f, 0x60, 0x20, 0x10, 0xad, 0x16, 0x07, 0xd0, 0x2e, 0xa5, 0x0e, 0xc9, 0x0b, 0xf0, 0x28, 0xc9, 
+    0x04, 0x90, 0x24, 0xa9, 0x01, 0xac, 0x04, 0x07, 0xd0, 0x0a, 0xa5, 0x1d, 0xf0, 0x04, 0xc9, 0x03, 
+    0xd0, 0x04, 0xa9, 0x02, 0x85, 0x1d, 0xa5, 0xb5, 0xc9, 0x01, 0xd0, 0x0b, 0xa9, 0xff, 0x8d, 0x90, 
+    0x04, 0xa5, 0xce, 0xc9, 0xcf, 0x90, 0x01, 0x60, 0xa0, 0x02, 0xad, 0x14, 0x07, 0xd0, 0x0c, 0xad, 
+    0x54, 0x07, 0xd0, 0x07, 0x88, 0xad, 0x04, 0x07, 0xd0, 0x01, 0x88, 0xb9, 0xad, 0xe3, 0x85, 0xeb, 
+    0xa8, 0xae, 0x54, 0x07, 0xad, 0x14, 0x07, 0xf0, 0x01, 0xe8, 0xa5, 0xce, 0xdd, 0x62, 0xdc, 0x90, 
+    0x35, 0x20, 0xe9, 0xe3, 0xf0, 0x30, 0x20, 0xa1, 0xdf, 0xb0, 0x4f, 0xa4, 0x9f, 0x10, 0x27, 0xa4, 
+    0x04, 0xc0, 0x04, 0x90, 0x21, 0x20, 0x8f, 0xdf, 0xb0, 0x10, 0xac, 0x4e, 0x07, 0xf0, 0x13, 0xac, 
+    0x84, 0x07, 0xd0, 0x0e, 0x20, 0xed, 0xbc, 0x4c, 0xf6, 0xdc, 0xc9, 0x26, 0xf0, 0x04, 0xa9, 0x02, 
+    0x85, 0xff, 0xa9, 0x01, 0x85, 0x9f, 0xa4, 0xeb, 0xa5, 0xce, 0xc9, 0xcf, 0xb0, 0x60, 0x20, 0xe8, 
+    0xe3, 0x20, 0xa1, 0xdf, 0xb0, 0x14, 0x48, 0x20, 0xe8, 0xe3, 0x85, 0x00, 0x68, 0x85, 0x01, 0xd0, 
+    0x0c, 0xa5, 0x00, 0xf0, 0x49, 0x20, 0xa1, 0xdf, 0x90, 0x03, 0x4c, 0x05, 0xde, 0x20, 0x9a, 0xdf, 
+    0xb0, 0x3c, 0xa4, 0x9f, 0x30, 0x38, 0xc9, 0xc5, 0xd0, 0x03, 0x4c, 0x0e, 0xde, 0x20, 0xbd, 0xde, 
+    0xf0, 0x2c, 0xac, 0x0e, 0x07, 0xd0, 0x23, 0xa4, 0x04, 0xc0, 0x05, 0x90, 0x07, 0xa5, 0x45, 0x85, 
+    0x00, 0x4c, 0x4b, 0xdf, 0x20, 0xc4, 0xde, 0xa9, 0xf0, 0x25, 0xce, 0x85, 0xce, 0x20, 0xe8, 0xde, 
+    0xa9, 0x00, 0x85, 0x9f, 0x8d, 0x33, 0x04, 0x8d, 0x84, 0x04, 0xa9, 0x00, 0x85, 0x1d, 0xa4, 0xeb, 
+    0xc8, 0xc8, 0xa9, 0x02, 0x85, 0x00, 0xc8, 0x84, 0xeb, 0xa5, 0xce, 0xc9, 0x20, 0x90, 0x16, 0xc9, 
+    0xe4, 0xb0, 0x28, 0x20, 0xec, 0xe3, 0xf0, 0x0d, 0xc9, 0x1c, 0xf0, 0x09, 0xc9, 0x6b, 0xf0, 0x05, 
+    0x20, 0x9a, 0xdf, 0x90, 0x17, 0xa4, 0xeb, 0xc8, 0xa5, 0xce, 0xc9, 0x08, 0x90, 0x0d, 0xc9, 0xd0, 
+    0xb0, 0x09, 0x20, 0xec, 0xe3, 0xd0, 0x05, 0xc6, 0x00, 0xd0, 0xcb, 0x60, 0x20, 0xbd, 0xde, 0xf0, 
+    0x61, 0x20, 0x9a, 0xdf, 0x90, 0x03, 0x4c, 0x2e, 0xde, 0x20, 0xa1, 0xdf, 0xb0, 0x57, 0x20, 0xdd, 
+    0xde, 0x90, 0x08, 0xad, 0x0e, 0x07, 0xd0, 0x4a, 0x4c, 0xff, 0xdd, 0xa4, 0x1d, 0xc0, 0x00, 0xd0, 
+    0x3e, 0xa4, 0x33, 0x88, 0xd0, 0x39, 0xc9, 0x6c, 0xf0, 0x04, 0xc9, 0x1f, 0xd0, 0x31, 0xad, 0xc4, 
+    0x03, 0xd0, 0x04, 0xa0, 0x10, 0x84, 0xff, 0x09, 0x20, 0x8d, 0xc4, 0x03, 0xa5, 0x86, 0x29, 0x0f, 
+    0xf0, 0x0e, 0xa0, 0x00, 0xad, 0x1a, 0x07, 0xf0, 0x01, 0xc8, 0xb9, 0x03, 0xde, 0x8d, 0xde, 0x06, 
+    0xa5, 0x0e, 0xc9, 0x07, 0xf0, 0x0c, 0xc9, 0x08, 0xd0, 0x08, 0xa9, 0x02, 0x85, 0x0e, 0x60, 0x20, 
+    0x4b, 0xdf, 0x60, 0xa0, 0x34, 0x20, 0x1c, 0xde, 0xee, 0x48, 0x07, 0x4c, 0xfe, 0xbb, 0xa9, 0x00, 
+    0x8d, 0x72, 0x07, 0xa9, 0x02, 0x8d, 0x70, 0x07, 0xa9, 0x18, 0x85, 0x57, 0xa4, 0x02, 0xa9, 0x00, 
+    0x91, 0x06, 0x4c, 0x4d, 0x8a, 0xf9, 0x07, 0xff, 0x00, 0x18, 0x22, 0x50, 0x68, 0x90, 0xa4, 0x04, 
+    0xc0, 0x06, 0x90, 0x04, 0xc0, 0x0a, 0x90, 0x01, 0x60, 0xc9, 0x24, 0xf0, 0x04, 0xc9, 0x25, 0xd0, 
+    0x39, 0xa5, 0x0e, 0xc9, 0x05, 0xf0, 0x41, 0xa9, 0x01, 0x85, 0x33, 0xee, 0x23, 0x07, 0xa5, 0x0e, 
+    0xc9, 0x04, 0xf0, 0x1f, 0xa9, 0x33, 0x20, 0x16, 0x97, 0xa9, 0x80, 0x85, 0xfc, 0x4a, 0x8d, 0x13, 
+    0x07, 0xa2, 0x04, 0xa5, 0xce, 0x8d, 0x0f, 0x07, 0xdd, 0x29, 0xde, 0xb0, 0x03, 0xca, 0xd0, 0xf8, 
+    0x8e, 0x0f, 0x01, 0xa9, 0x04, 0x85, 0x0e, 0x4c, 0x88, 0xde, 0xc9, 0x26, 0xd0, 0x0a, 0xa5, 0xce, 
+    0xc9, 0x20, 0xb0, 0x04, 0xa9, 0x01, 0x85, 0x0e, 0xa9, 0x03, 0x85, 0x1d, 0xa9, 0x00, 0x85, 0x57, 
+    0x8d, 0x05, 0x07, 0xa5, 0x86, 0x38, 0xed, 0x1c, 0x07, 0xc9, 0x10, 0xb0, 0x04, 0xa9, 0x02, 0x85, 
+    0x33, 0xa4, 0x33, 0xa5, 0x06, 0x0a, 0x0a, 0x0a, 0x0a, 0x18, 0x79, 0x24, 0xde, 0x85, 0x86, 0xa5, 
+    0x06, 0xd0, 0x09, 0xad, 0x1b, 0x07, 0x18, 0x79, 0x26, 0xde, 0x85, 0x6d, 0x60, 0xc9, 0x5f, 0xf0, 
+    0x02, 0xc9, 0x60, 0x60, 0x20, 0xdd, 0xde, 0x90, 0x13, 0xa9, 0x70, 0x8d, 0x09, 0x07, 0xa9, 0xf9, 
+    0x8d, 0xdb, 0x06, 0xa9, 0x03, 0x8d, 0x86, 0x07, 0x4a, 0x8d, 0x0e, 0x07, 0x60, 0xc9, 0x67, 0xf0, 
+    0x05, 0xc9, 0x68, 0x18, 0xd0, 0x01, 0x38, 0x60, 0xa5, 0x0b, 0x29, 0x04, 0xf0, 0x5c, 0xa5, 0x00, 
+    0xc9, 0x11, 0xd0, 0x56, 0xa5, 0x01, 0xc9, 0x10, 0xd0, 0x50, 0xa9, 0x30, 0x8d, 0xde, 0x06, 0xa9, 
+    0x03, 0x85, 0x0e, 0xa9, 0x10, 0x85, 0xff, 0xa9, 0x20, 0x8d, 0xc4, 0x03, 0xad, 0xd6, 0x06, 0xf0, 
+    0x39, 0x29, 0x03, 0x0a, 0x0a, 0xaa, 0xa5, 0x86, 0xc9, 0x60, 0x90, 0x06, 0xe8, 0xc9, 0xa0, 0x90, 
+    0x01, 0xe8, 0xbc, 0xf2, 0x87, 0x88, 0x8c, 0x5f, 0x07, 0xbe, 0xb4, 0x9c, 0xbd, 0xbc, 0x9c, 0x8d, 
+    0x50, 0x07, 0xa9, 0x80, 0x85, 0xfc, 0xa9, 0x00, 0x8d, 0x51, 0x07, 0x8d, 0x60, 0x07, 0x8d, 0x5c, 
+    0x07, 0x8d, 0x52, 0x07, 0xee, 0x5d, 0x07, 0xee, 0x57, 0x07, 0x60, 0xa9, 0x00, 0xa4, 0x57, 0xa6, 
+    0x00, 0xca, 0xd0, 0x0a, 0xe8, 0xc0, 0x00, 0x30, 0x28, 0xa9, 0xff, 0x4c, 0x66, 0xdf, 0xa2, 0x02, 
+    0xc0, 0x01, 0x10, 0x1d, 0xa9, 0x01, 0xa0, 0x10, 0x8c, 0x85, 0x07, 0xa0, 0x00, 0x84, 0x57, 0xc9, 
+    0x00, 0x10, 0x01, 0x88, 0x84, 0x00, 0x18, 0x65, 0x86, 0x85, 0x86, 0xa5, 0x6d, 0x65, 0x00, 0x85, 
+    0x6d, 0x8a, 0x49, 0xff, 0x2d, 0x90, 0x04, 0x8d, 0x90, 0x04, 0x60, 0x10, 0x61, 0x88, 0xc4, 0x20, 
+    0xb0, 0xdf, 0xdd, 0x8b, 0xdf, 0x60, 0x24, 0x6d, 0x8a, 0xc6, 0x20, 0xb0, 0xdf, 0xdd, 0x96, 0xdf, 
+    0x60, 0xc9, 0xc2, 0xf0, 0x06, 0xc9, 0xc3, 0xf0, 0x02, 0x18, 0x60, 0xa9, 0x01, 0x85, 0xfe, 0x60, 
+    0xa8, 0x29, 0xc0, 0x0a, 0x2a, 0x2a, 0xaa, 0x98, 0x60, 0x01, 0x01, 0x02, 0x02, 0x02, 0x05, 0x10, 
+    0xf0, 0xb5, 0x1e, 0x29, 0x20, 0xd0, 0xf1, 0x20, 0x5b, 0xe1, 0x90, 0xec, 0xb4, 0x16, 0xc0, 0x12, 
+    0xd0, 0x06, 0xb5, 0xcf, 0xc9, 0x25, 0x90, 0xe0, 0xc0, 0x0e, 0xd0, 0x03, 0x4c, 0x63, 0xe1, 0xc0, 
+    0x05, 0xd0, 0x03, 0x4c, 0x85, 0xe1, 0xc0, 0x12, 0xf0, 0x08, 0xc0, 0x2e, 0xf0, 0x04, 0xc0, 0x07, 
+    0xb0, 0x74, 0x20, 0xae, 0xe1, 0xd0, 0x03, 0x4c, 0xe2, 0xe0, 0x20, 0xb5, 0xe1, 0xf0, 0xf8, 0xc9, 
+    0x23, 0xd0, 0x64, 0xa4, 0x02, 0xa9, 0x00, 0x91, 0x06, 0xb5, 0x16, 0xc9, 0x15, 0xb0, 0x0c, 0xc9, 
+    0x06, 0xd0, 0x03, 0x20, 0x8e, 0xe1, 0xa9, 0x01, 0x20, 0x11, 0xda, 0xc9, 0x09, 0x90, 0x10, 0xc9, 
+    0x11, 0xb0, 0x0c, 0xc9, 0x0a, 0x90, 0x04, 0xc9, 0x0d, 0x90, 0x04, 0x29, 0x01, 0x95, 0x16, 0xb5, 
+    0x1e, 0x29, 0xf0, 0x09, 0x02, 0x95, 0x1e, 0xd6, 0xcf, 0xd6, 0xcf, 0xb5, 0x16, 0xc9, 0x07, 0xf0, 
+    0x07, 0xa9, 0xfd, 0xac, 0x4e, 0x07, 0xd0, 0x02, 0xa9, 0xff, 0x95, 0xa0, 0xa0, 0x01, 0x20, 0x43, 
+    0xe1, 0x10, 0x01, 0xc8, 0xb5, 0x16, 0xc9, 0x33, 0xf0, 0x06, 0xc9, 0x08, 0xf0, 0x02, 0x94, 0x46, 
+    0x88, 0xb9, 0xbf, 0xdf, 0x95, 0x58, 0x60, 0xa5, 0x04, 0x38, 0xe9, 0x08, 0xc9, 0x05, 0xb0, 0x72, 
+    0xb5, 0x1e, 0x29, 0x40, 0xd0, 0x57, 0xb5, 0x1e, 0x0a, 0x90, 0x03, 0x4c, 0xfe, 0xe0, 0xb5, 0x1e, 
+    0xf0, 0xf9, 0xc9, 0x05, 0xf0, 0x1f, 0xc9, 0x03, 0xb0, 0x1a, 0xb5, 0x1e, 0xc9, 0x02, 0xd0, 0x15, 
+    0xa9, 0x10, 0xb4, 0x16, 0xc0, 0x12, 0xd0, 0x02, 0xa9, 0x00, 0x9d, 0x96, 0x07, 0xa9, 0x03, 0x95, 
+    0x1e, 0x20, 0x4f, 0xe1, 0x60, 0xb5, 0x16, 0xc9, 0x06, 0xf0, 0x22, 0xc9, 0x12, 0xd0, 0x0e, 0xa9, 
+    0x01, 0x95, 0x46, 0xa9, 0x08, 0x95, 0x58, 0xa5, 0x09, 0x29, 0x07, 0xf0, 0x10, 0xa0, 0x01, 0x20, 
+    0x43, 0xe1, 0x10, 0x01, 0xc8, 0x98, 0xd5, 0x46, 0xd0, 0x03, 0x20, 0x24, 0xe1, 0x20, 0x4f, 0xe1, 
+    0xb5, 0x1e, 0x29, 0x80, 0xd0, 0x05, 0xa9, 0x00, 0x95, 0x1e, 0x60, 0xb5, 0x1e, 0x29, 0xbf, 0x95, 
+    0x1e, 0x60, 0xb5, 0x16, 0xc9, 0x03, 0xd0, 0x04, 0xb5, 0x1e, 0xf0, 0x38, 0xb5, 0x1e, 0xa8, 0x0a, 
+    0x90, 0x07, 0xb5, 0x1e, 0x09, 0x40, 0x4c, 0xfc, 0xe0, 0xb9, 0xb9, 0xdf, 0x95, 0x1e, 0xb5, 0xcf, 
+    0xc9, 0x20, 0x90, 0x1f, 0xa0, 0x16, 0xa9, 0x02, 0x85, 0xeb, 0xa5, 0xeb, 0xd5, 0x46, 0xd0, 0x0c, 
+    0xa9, 0x01, 0x20, 0x88, 0xe3, 0xf0, 0x05, 0x20, 0xb5, 0xe1, 0xd0, 0x08, 0xc6, 0xeb, 0xc8, 0xc0, 
+    0x18, 0x90, 0xe7, 0x60, 0xe0, 0x05, 0xf0, 0x09, 0xb5, 0x1e, 0x0a, 0x90, 0x04, 0xa9, 0x02, 0x85, 
+    0xff, 0xb5, 0x16, 0xc9, 0x05, 0xd0, 0x09, 0xa9, 0x00, 0x85, 0x00, 0xa0, 0xfa, 0x4c, 0x37, 0xca, 
+    0x4c, 0x36, 0xdb, 0xb5, 0x87, 0x38, 0xe5, 0x86, 0x85, 0x00, 0xb5, 0x6e, 0xe5, 0x6d, 0x60, 0x20, 
+    0x63, 0xc3, 0xb5, 0xcf, 0x29, 0xf0, 0x09, 0x08, 0x95, 0xcf, 0x60, 0xb5, 0xcf, 0x18, 0x69, 0x3e, 
+    0xc9, 0x44, 0x60, 0x20, 0x5b, 0xe1, 0x90, 0x1a, 0xb5, 0xa0, 0x18, 0x69, 0x02, 0xc9, 0x03, 0x90, 
+    0x11, 0x20, 0xae, 0xe1, 0xf0, 0x0c, 0x20, 0xb5, 0xe1, 0xf0, 0x07, 0x20, 0x4f, 0xe1, 0xa9, 0xfd, 
+    0x95, 0xa0, 0x4c, 0xfe, 0xe0, 0x20, 0xae, 0xe1, 0xf0, 0x1d, 0xc9, 0x23, 0xd0, 0x08, 0x20, 0x95, 
+    0xd7, 0xa9, 0xfc, 0x95, 0xa0, 0x60, 0xbd, 0x8a, 0x07, 0xd0, 0x0c, 0xb5, 0x1e, 0x29, 0x88, 0x95, 
+    0x1e, 0x20, 0x4f, 0xe1, 0x4c, 0xfe, 0xe0, 0xb5, 0x1e, 0x09, 0x01, 0x95, 0x1e, 0x60, 0xa9, 0x00, 
+    0xa0, 0x15, 0x4c, 0x88, 0xe3, 0xc9, 0x26, 0xf0, 0x0e, 0xc9, 0xc2, 0xf0, 0x0a, 0xc9, 0xc3, 0xf0, 
+    0x06, 0xc9, 0x5f, 0xf0, 0x02, 0xc9, 0x60, 0x60, 0xb5, 0xd5, 0xc9, 0x18, 0x90, 0x21, 0x20, 0x9c, 
+    0xe3, 0xf0, 0x1c, 0x20, 0xb5, 0xe1, 0xf0, 0x17, 0xb5, 0xa6, 0x30, 0x18, 0xb5, 0x3a, 0xd0, 0x14, 
+    0xa9, 0xfd, 0x95, 0xa6, 0xa9, 0x01, 0x95, 0x3a, 0xb5, 0xd5, 0x29, 0xf8, 0x95, 0xd5, 0x60, 0xa9, 
+    0x00, 0x95, 0x3a, 0x60, 0xa9, 0x80, 0x95, 0x24, 0xa9, 0x02, 0x85, 0xff, 0x60, 0x02, 0x08, 0x0e, 
+    0x20, 0x03, 0x14, 0x0d, 0x20, 0x02, 0x14, 0x0e, 0x20, 0x02, 0x09, 0x0e, 0x15, 0x00, 0x00, 0x18, 
+    0x06, 0x00, 0x00, 0x20, 0x0d, 0x00, 0x00, 0x30, 0x0d, 0x00, 0x00, 0x08, 0x08, 0x06, 0x04, 0x0a, 
+    0x08, 0x03, 0x0e, 0x0d, 0x14, 0x00, 0x02, 0x10, 0x15, 0x04, 0x04, 0x0c, 0x1c, 0x8a, 0x18, 0x69, 
+    0x07, 0xaa, 0xa0, 0x02, 0xd0, 0x07, 0x8a, 0x18, 0x69, 0x09, 0xaa, 0xa0, 0x06, 0x20, 0x9c, 0xe2, 
+    0x4c, 0xde, 0xe2, 0xa0, 0x48, 0x84, 0x00, 0xa0, 0x44, 0x4c, 0x52, 0xe2, 0xa0, 0x08, 0x84, 0x00, 
+    0xa0, 0x04, 0xb5, 0x87, 0x38, 0xed, 0x1c, 0x07, 0x85, 0x01, 0xb5, 0x6e, 0xed, 0x1a, 0x07, 0x30, 
+    0x06, 0x05, 0x01, 0xf0, 0x02, 0xa4, 0x00, 0x98, 0x2d, 0xd1, 0x03, 0x9d, 0xd8, 0x03, 0xd0, 0x19, 
+    0x4c, 0x7c, 0xe2, 0xe8, 0x20, 0xf6, 0xf1, 0xca, 0xc9, 0xfe, 0xb0, 0x0d, 0x8a, 0x18, 0x69, 0x01, 
+    0xaa, 0xa0, 0x01, 0x20, 0x9c, 0xe2, 0x4c, 0xde, 0xe2, 0x8a, 0x0a, 0x0a, 0xa8, 0xa9, 0xff, 0x99, 
+    0xb0, 0x04, 0x99, 0xb1, 0x04, 0x99, 0xb2, 0x04, 0x99, 0xb3, 0x04, 0x60, 0x86, 0x00, 0xb9, 0xb8, 
+    0x03, 0x85, 0x02, 0xb9, 0xad, 0x03, 0x85, 0x01, 0x8a, 0x0a, 0x0a, 0x48, 0xa8, 0xbd, 0x99, 0x04, 
+    0x0a, 0x0a, 0xaa, 0xa5, 0x01, 0x18, 0x7d, 0xfd, 0xe1, 0x99, 0xac, 0x04, 0xa5, 0x01, 0x18, 0x7d, 
+    0xff, 0xe1, 0x99, 0xae, 0x04, 0xe8, 0xc8, 0xa5, 0x02, 0x18, 0x7d, 0xfd, 0xe1, 0x99, 0xac, 0x04, 
+    0xa5, 0x02, 0x18, 0x7d, 0xff, 0xe1, 0x99, 0xae, 0x04, 0x68, 0xa8, 0xa6, 0x00, 0x60, 0xad, 0x1c, 
+    0x07, 0x18, 0x69, 0x80, 0x85, 0x02, 0xad, 0x1a, 0x07, 0x69, 0x00, 0x85, 0x01, 0xb5, 0x86, 0xc5, 
+    0x02, 0xb5, 0x6d, 0xe5, 0x01, 0x90, 0x15, 0xb9, 0xae, 0x04, 0x30, 0x0d, 0xa9, 0xff, 0xbe, 0xac, 
+    0x04, 0x30, 0x03, 0x99, 0xac, 0x04, 0x99, 0xae, 0x04, 0xa6, 0x08, 0x60, 0xb9, 0xac, 0x04, 0x10, 
+    0x11, 0xc9, 0xa0, 0x90, 0x0d, 0xa9, 0x00, 0xbe, 0xae, 0x04, 0x10, 0x03, 0x99, 0xae, 0x04, 0x99, 
+    0xac, 0x04, 0xa6, 0x08, 0x60, 0xa2, 0x00, 0x84, 0x06, 0xa9, 0x01, 0x85, 0x07, 0xb9, 0xac, 0x04, 
+    0xdd, 0xac, 0x04, 0xb0, 0x2a, 0xdd, 0xae, 0x04, 0x90, 0x12, 0xf0, 0x42, 0xb9, 0xae, 0x04, 0xd9, 
+    0xac, 0x04, 0x90, 0x3a, 0xdd, 0xac, 0x04, 0xb0, 0x35, 0xa4, 0x06, 0x60, 0xbd, 0xae, 0x04, 0xdd, 
+    0xac, 0x04, 0x90, 0x2a, 0xb9, 0xae, 0x04, 0xdd, 0xac, 0x04, 0xb0, 0x22, 0xa4, 0x06, 0x60, 0xdd, 
+    0xac, 0x04, 0xf0, 0x1a, 0xdd, 0xae, 0x04, 0x90, 0x15, 0xf0, 0x13, 0xd9, 0xae, 0x04, 0x90, 0x0a, 
+    0xf0, 0x08, 0xb9, 0xae, 0x04, 0xdd, 0xac, 0x04, 0xb0, 0x04, 0x18, 0xa4, 0x06, 0x60, 0xe8, 0xc8, 
+    0xc6, 0x07, 0x10, 0xa9, 0x38, 0xa4, 0x06, 0x60, 0x48, 0x8a, 0x18, 0x69, 0x01, 0xaa, 0x68, 0x4c, 
+    0xa5, 0xe3, 0x8a, 0x18, 0x69, 0x0d, 0xaa, 0xa0, 0x1b, 0x4c, 0xa3, 0xe3, 0xa0, 0x1a, 0x8a, 0x18, 
+    0x69, 0x07, 0xaa, 0xa9, 0x00, 0x20, 0xf0, 0xe3, 0xa6, 0x08, 0xc9, 0x00, 0x60, 0x00, 0x07, 0x0e, 
+    0x08, 0x03, 0x0c, 0x02, 0x02, 0x0d, 0x0d, 0x08, 0x03, 0x0c, 0x02, 0x02, 0x0d, 0x0d, 0x08, 0x03, 
+    0x0c, 0x02, 0x02, 0x0d, 0x0d, 0x08, 0x00, 0x10, 0x04, 0x14, 0x04, 0x04, 0x04, 0x20, 0x20, 0x08, 
+    0x18, 0x08, 0x18, 0x02, 0x20, 0x20, 0x08, 0x18, 0x08, 0x18, 0x12, 0x20, 0x20, 0x18, 0x18, 0x18, 
+    0x18, 0x18, 0x14, 0x14, 0x06, 0x06, 0x08, 0x10, 0xc8, 0xa9, 0x00, 0x2c, 0xa9, 0x01, 0xa2, 0x00, 
+    0x48, 0x84, 0x04, 0xb9, 0xb0, 0xe3, 0x18, 0x75, 0x86, 0x85, 0x05, 0xb5, 0x6d, 0x69, 0x00, 0x29, 
+    0x01, 0x4a, 0x05, 0x05, 0x6a, 0x4a, 0x4a, 0x4a, 0x20, 0xe1, 0x9b, 0xa4, 0x04, 0xb5, 0xce, 0x18, 
+    0x79, 0xcc, 0xe3, 0x29, 0xf0, 0x38, 0xe9, 0x20, 0x85, 0x02, 0xa8, 0xb1, 0x06, 0x85, 0x03, 0xa4, 
+    0x04, 0x68, 0xd0, 0x05, 0xb5, 0xce, 0x4c, 0x2b, 0xe4, 0xb5, 0x86, 0x29, 0x0f, 0x85, 0x04, 0xa5, 
+    0x03, 0x60, 0xff, 0x00, 0x30, 0x84, 0x00, 0xad, 0xb9, 0x03, 0x18, 0x79, 0x33, 0xe4, 0xbe, 0x9a, 
+    0x03, 0xbc, 0xe5, 0x06, 0x84, 0x02, 0x20, 0xae, 0xe4, 0xad, 0xae, 0x03, 0x99, 0x03, 0x02, 0x99, 
+    0x0b, 0x02, 0x99, 0x13, 0x02, 0x18, 0x69, 0x06, 0x99, 0x07, 0x02, 0x99, 0x0f, 0x02, 0x99, 0x17, 
+    0x02, 0xa9, 0x21, 0x99, 0x02, 0x02, 0x99, 0x0a, 0x02, 0x99, 0x12, 0x02, 0x09, 0x40, 0x99, 0x06, 
+    0x02, 0x99, 0x0e, 0x02, 0x99, 0x16, 0x02, 0xa2, 0x05, 0xa9, 0xe1, 0x99, 0x01, 0x02, 0xc8, 0xc8, 
+    0xc8, 0xc8, 0xca, 0x10, 0xf4, 0xa4, 0x02, 0xa5, 0x00, 0xd0, 0x05, 0xa9, 0xe0, 0x99, 0x01, 0x02, 
+    0xa2, 0x00, 0xad, 0x9d, 0x03, 0x38, 0xf9, 0x00, 0x02, 0xc9, 0x64, 0x90, 0x05, 0xa9, 0xf8, 0x99, 
+    0x00, 0x02, 0xc8, 0xc8, 0xc8, 0xc8, 0xe8, 0xe0, 0x06, 0xd0, 0xe7, 0xa4, 0x00, 0x60, 0xa2, 0x06, 
+    0x99, 0x00, 0x02, 0x18, 0x69, 0x08, 0xc8, 0xc8, 0xc8, 0xc8, 0xca, 0xd0, 0xf3, 0xa4, 0x02, 0x60, 
+    0x04, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x08, 0x00, 0x08, 0x00, 
+    0x80, 0x82, 0x81, 0x83, 0x81, 0x83, 0x80, 0x82, 0x03, 0x03, 0xc3, 0xc3, 0xbc, 0xf3, 0x06, 0xad, 
+    0x47, 0x07, 0xd0, 0x08, 0xb5, 0x2a, 0x29, 0x7f, 0xc9, 0x01, 0xf0, 0x04, 0xa2, 0x00, 0xf0, 0x07, 
+    0xa5, 0x09, 0x4a, 0x4a, 0x29, 0x03, 0xaa, 0xad, 0xbe, 0x03, 0x18, 0x7d, 0xc4, 0xe4, 0x99, 0x00, 
+    0x02, 0x18, 0x7d, 0xcc, 0xe4, 0x99, 0x04, 0x02, 0xad, 0xb3, 0x03, 0x18, 0x7d, 0xc0, 0xe4, 0x99, 
+    0x03, 0x02, 0x18, 0x7d, 0xc8, 0xe4, 0x99, 0x07, 0x02, 0xbd, 0xd0, 0xe4, 0x99, 0x01, 0x02, 0xbd, 
+    0xd4, 0xe4, 0x99, 0x05, 0x02, 0xbd, 0xd8, 0xe4, 0x99, 0x02, 0x02, 0x99, 0x06, 0x02, 0xa6, 0x08, 
+    0xad, 0xd6, 0x03, 0x29, 0xfc, 0xf0, 0x09, 0xa9, 0x00, 0x95, 0x2a, 0xa9, 0xf8, 0x20, 0xc1, 0xe5, 
+    0x60, 0xf9, 0x50, 0xf7, 0x50, 0xfa, 0xfb, 0xf8, 0xfb, 0xf6, 0xfb, 0xbc, 0xe5, 0x06, 0xad, 0xae, 
+    0x03, 0x99, 0x03, 0x02, 0x18, 0x69, 0x08, 0x99, 0x07, 0x02, 0x99, 0x0b, 0x02, 0x18, 0x69, 0x0c, 
+    0x85, 0x05, 0xb5, 0xcf, 0x20, 0xc1, 0xe5, 0x69, 0x08, 0x99, 0x08, 0x02, 0xad, 0x0d, 0x01, 0x85, 
+    0x02, 0xa9, 0x01, 0x85, 0x03, 0x85, 0x04, 0x99, 0x02, 0x02, 0x99, 0x06, 0x02, 0x99, 0x0a, 0x02, 
+    0xa9, 0x7e, 0x99, 0x01, 0x02, 0x99, 0x09, 0x02, 0xa9, 0x7f, 0x99, 0x05, 0x02, 0xad, 0x0f, 0x07, 
+    0xf0, 0x15, 0x98, 0x18, 0x69, 0x0c, 0xa8, 0xad, 0x0f, 0x01, 0x0a, 0xaa, 0xbd, 0x41, 0xe5, 0x85, 
+    0x00, 0xbd, 0x42, 0xe5, 0x20, 0xb2, 0xeb, 0xa6, 0x08, 0xbc, 0xe5, 0x06, 0xad, 0xd1, 0x03, 0x29, 
+    0x0e, 0xf0, 0x14, 0xa9, 0xf8, 0x99, 0x14, 0x02, 0x99, 0x10, 0x02, 0x99, 0x0c, 0x02, 0x99, 0x08, 
+    0x02, 0x99, 0x04, 0x02, 0x99, 0x00, 0x02, 0x60, 0xbc, 0xe5, 0x06, 0x84, 0x02, 0xc8, 0xc8, 0xc8, 
+    0xad, 0xae, 0x03, 0x20, 0xae, 0xe4, 0xa6, 0x08, 0xb5, 0xcf, 0x20, 0xbb, 0xe5, 0xac, 0x4e, 0x07, 
+    0xc0, 0x03, 0xf0, 0x05, 0xac, 0xcc, 0x06, 0xf0, 0x02, 0xa9, 0xf8, 0xbc, 0xe5, 0x06, 0x99, 0x10, 
+    0x02, 0x99, 0x14, 0x02, 0xa9, 0x5b, 0xae, 0x43, 0x07, 0xf0, 0x02, 0xa9, 0x75, 0xa6, 0x08, 0xc8, 
+    0x20, 0xb5, 0xe5, 0xa9, 0x02, 0xc8, 0x20, 0xb5, 0xe5, 0xe8, 0x20, 0xf6, 0xf1, 0xca, 0xbc, 0xe5, 
+    0x06, 0x0a, 0x48, 0x90, 0x05, 0xa9, 0xf8, 0x99, 0x00, 0x02, 0x68, 0x0a, 0x48, 0x90, 0x05, 0xa9, 
+    0xf8, 0x99, 0x04, 0x02, 0x68, 0x0a, 0x48, 0x90, 0x05, 0xa9, 0xf8, 0x99, 0x08, 0x02, 0x68, 0x0a, 
+    0x48, 0x90, 0x05, 0xa9, 0xf8, 0x99, 0x0c, 0x02, 0x68, 0x0a, 0x48, 0x90, 0x05, 0xa9, 0xf8, 0x99, 
+    0x10, 0x02, 0x68, 0x0a, 0x90, 0x05, 0xa9, 0xf8, 0x99, 0x14, 0x02, 0xad, 0xd1, 0x03, 0x0a, 0x90, 
+    0x03, 0x20, 0xb3, 0xe5, 0x60, 0xa5, 0x09, 0x4a, 0xb0, 0x02, 0xd6, 0xdb, 0xb5, 0xdb, 0x20, 0xc1, 
+    0xe5, 0xad, 0xb3, 0x03, 0x99, 0x03, 0x02, 0x18, 0x69, 0x08, 0x99, 0x07, 0x02, 0xa9, 0x02, 0x99, 
+    0x02, 0x02, 0x99, 0x06, 0x02, 0xa9, 0xf7, 0x99, 0x01, 0x02, 0xa9, 0xfb, 0x99, 0x05, 0x02, 0x4c, 
+    0xbd, 0xe6, 0x60, 0x61, 0x62, 0x63, 0xbc, 0xf3, 0x06, 0xb5, 0x2a, 0xc9, 0x02, 0xb0, 0xc6, 0xb5, 
+    0xdb, 0x99, 0x00, 0x02, 0x18, 0x69, 0x08, 0x99, 0x04, 0x02, 0xad, 0xb3, 0x03, 0x99, 0x03, 0x02, 
+    0x99, 0x07, 0x02, 0xa5, 0x09, 0x4a, 0x29, 0x03, 0xaa, 0xbd, 0x82, 0xe6, 0xc8, 0x20, 0xc1, 0xe5, 
+    0x88, 0xa9, 0x02, 0x99, 0x02, 0x02, 0xa9, 0x82, 0x99, 0x06, 0x02, 0xa6, 0x08, 0x60, 0x76, 0x77, 
+    0x78, 0x79, 0xd6, 0xd6, 0xd9, 0xd9, 0x8d, 0x8d, 0xe4, 0xe4, 0x76, 0x77, 0x78, 0x79, 0x02, 0x01, 
+    0x02, 0x01, 0xac, 0xea, 0x06, 0xad, 0xb9, 0x03, 0x18, 0x69, 0x08, 0x85, 0x02, 0xad, 0xae, 0x03, 
+    0x85, 0x05, 0xa6, 0x39, 0xbd, 0xce, 0xe6, 0x0d, 0xca, 0x03, 0x85, 0x04, 0x8a, 0x48, 0x0a, 0x0a, 
+    0xaa, 0xa9, 0x01, 0x85, 0x07, 0x85, 0x03, 0xbd, 0xbe, 0xe6, 0x85, 0x00, 0xbd, 0xbf, 0xe6, 0x20, 
+    0xb2, 0xeb, 0xc6, 0x07, 0x10, 0xf1, 0xac, 0xea, 0x06, 0x68, 0xf0, 0x2f, 0xc9, 0x03, 0xf0, 0x2b, 
+    0x85, 0x00, 0xa5, 0x09, 0x4a, 0x29, 0x03, 0x0d, 0xca, 0x03, 0x99, 0x02, 0x02, 0x99, 0x06, 0x02, 
+    0xa6, 0x00, 0xca, 0xf0, 0x06, 0x99, 0x0a, 0x02, 0x99, 0x0e, 0x02, 0xb9, 0x06, 0x02, 0x09, 0x40, 
+    0x99, 0x06, 0x02, 0xb9, 0x0e, 0x02, 0x09, 0x40, 0x99, 0x0e, 0x02, 0x4c, 0x64, 0xeb, 0xfc, 0xfc, 
+    0xaa, 0xab, 0xac, 0xad, 0xfc, 0xfc, 0xae, 0xaf, 0xb0, 0xb1, 0xfc, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 
+    0xfc, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0x69, 0xa5, 0x6a, 0xa7, 0xa8, 0xa9, 0x6b, 0xa0, 0x6c, 0xa2, 
+    0xa3, 0xa4, 0xfc, 0xfc, 0x96, 0x97, 0x98, 0x99, 0xfc, 0xfc, 0x9a, 0x9b, 0x9c, 0x9d, 0xfc, 0xfc, 
+    0x8f, 0x8e, 0x8e, 0x8f, 0xfc, 0xfc, 0x95, 0x94, 0x94, 0x95, 0xfc, 0xfc, 0xdc, 0xdc, 0xdf, 0xdf, 
+    0xdc, 0xdc, 0xdd, 0xdd, 0xde, 0xde, 0xfc, 0xfc, 0xb2, 0xb3, 0xb4, 0xb5, 0xfc, 0xfc, 0xb6, 0xb3, 
+    0xb7, 0xb5, 0xfc, 0xfc, 0x70, 0x71, 0x72, 0x73, 0xfc, 0xfc, 0x6e, 0x6e, 0x6f, 0x6f, 0xfc, 0xfc, 
+    0x6d, 0x6d, 0x6f, 0x6f, 0xfc, 0xfc, 0x6f, 0x6f, 0x6e, 0x6e, 0xfc, 0xfc, 0x6f, 0x6f, 0x6d, 0x6d, 
+    0xfc, 0xfc, 0xf4, 0xf4, 0xf5, 0xf5, 0xfc, 0xfc, 0xf4, 0xf4, 0xf5, 0xf5, 0xfc, 0xfc, 0xf5, 0xf5, 
+    0xf4, 0xf4, 0xfc, 0xfc, 0xf5, 0xf5, 0xf4, 0xf4, 0xfc, 0xfc, 0xfc, 0xfc, 0xef, 0xef, 0xb9, 0xb8, 
+    0xbb, 0xba, 0xbc, 0xbc, 0xfc, 0xfc, 0xbd, 0xbd, 0xbc, 0xbc, 0x7a, 0x7b, 0xda, 0xdb, 0xd8, 0xd8, 
+    0xcd, 0xcd, 0xce, 0xce, 0xcf, 0xcf, 0x7d, 0x7c, 0xd1, 0x8c, 0xd3, 0xd2, 0x7d, 0x7c, 0x89, 0x88, 
+    0x8b, 0x8a, 0xd5, 0xd4, 0xe3, 0xe2, 0xd3, 0xd2, 0xd5, 0xd4, 0xe3, 0xe2, 0x8b, 0x8a, 0xe5, 0xe5, 
+    0xe6, 0xe6, 0xeb, 0xeb, 0xec, 0xec, 0xed, 0xed, 0xee, 0xee, 0xfc, 0xfc, 0xd0, 0xd0, 0xd7, 0xd7, 
+    0xbf, 0xbe, 0xc1, 0xc0, 0xc2, 0xfc, 0xc4, 0xc3, 0xc6, 0xc5, 0xc8, 0xc7, 0xbf, 0xbe, 0xca, 0xc9, 
+    0xc2, 0xfc, 0xc4, 0xc3, 0xc6, 0xc5, 0xcc, 0xcb, 0xfc, 0xfc, 0xe8, 0xe7, 0xea, 0xe9, 0xf2, 0xf2, 
+    0xf3, 0xf3, 0xf2, 0xf2, 0xf1, 0xf1, 0xf1, 0xf1, 0xfc, 0xfc, 0xf0, 0xf0, 0xfc, 0xfc, 0xfc, 0xfc, 
+    0x0c, 0x0c, 0x00, 0x0c, 0x0c, 0xa8, 0x54, 0x3c, 0xea, 0x18, 0x48, 0x48, 0xcc, 0xc0, 0x18, 0x18, 
+    0x18, 0x90, 0x24, 0xff, 0x48, 0x9c, 0xd2, 0xd8, 0xf0, 0xf6, 0xfc, 0x01, 0x02, 0x03, 0x02, 0x01, 
+    0x01, 0x03, 0x03, 0x03, 0x01, 0x01, 0x02, 0x02, 0x21, 0x01, 0x02, 0x01, 0x01, 0x02, 0xff, 0x02, 
+    0x02, 0x01, 0x01, 0x02, 0x02, 0x02, 0x08, 0x18, 0x18, 0x19, 0x1a, 0x19, 0x18, 0xb5, 0xcf, 0x85, 
+    0x02, 0xad, 0xae, 0x03, 0x85, 0x05, 0xbc, 0xe5, 0x06, 0x84, 0xeb, 0xa9, 0x00, 0x8d, 0x09, 0x01, 
+    0xb5, 0x46, 0x85, 0x03, 0xbd, 0xc5, 0x03, 0x85, 0x04, 0xb5, 0x16, 0xc9, 0x0d, 0xd0, 0x0a, 0xb4, 
+    0x58, 0x30, 0x06, 0xbc, 0x8a, 0x07, 0xf0, 0x01, 0x60, 0xb5, 0x1e, 0x85, 0xed, 0x29, 0x1f, 0xa8, 
+    0xb5, 0x16, 0xc9, 0x35, 0xd0, 0x08, 0xa0, 0x00, 0xa9, 0x01, 0x85, 0x03, 0xa9, 0x15, 0xc9, 0x33, 
+    0xd0, 0x13, 0xc6, 0x02, 0xa9, 0x03, 0xbc, 0x8a, 0x07, 0xf0, 0x02, 0x09, 0x20, 0x85, 0x04, 0xa0, 
+    0x00, 0x84, 0xed, 0xa9, 0x08, 0xc9, 0x32, 0xd0, 0x08, 0xa0, 0x03, 0xae, 0x0e, 0x07, 0xbd, 0x78, 
+    0xe8, 0x85, 0xef, 0x84, 0xec, 0xa6, 0x08, 0xc9, 0x0c, 0xd0, 0x07, 0xb5, 0xa0, 0x30, 0x03, 0xee, 
+    0x09, 0x01, 0xad, 0x6a, 0x03, 0xf0, 0x09, 0xa0, 0x16, 0xc9, 0x01, 0xf0, 0x01, 0xc8, 0x84, 0xef, 
+    0xa4, 0xef, 0xc0, 0x06, 0xd0, 0x1d, 0xb5, 0x1e, 0xc9, 0x02, 0x90, 0x04, 0xa2, 0x04, 0x86, 0xec, 
+    0x29, 0x20, 0x0d, 0x47, 0x07, 0xd0, 0x0c, 0xa5, 0x09, 0x29, 0x08, 0xd0, 0x06, 0xa5, 0x03, 0x49, 
+    0x03, 0x85, 0x03, 0xb9, 0x5b, 0xe8, 0x05, 0x04, 0x85, 0x04, 0xb9, 0x40, 0xe8, 0xaa, 0xa4, 0xec, 
+    0xad, 0x6a, 0x03, 0xf0, 0x30, 0xc9, 0x01, 0xd0, 0x13, 0xad, 0x63, 0x03, 0x10, 0x02, 0xa2, 0xde, 
+    0xa5, 0xed, 0x29, 0x20, 0xf0, 0x03, 0x8e, 0x09, 0x01, 0x4c, 0x4b, 0xea, 0xad, 0x63, 0x03, 0x29, 
+    0x01, 0xf0, 0x02, 0xa2, 0xe4, 0xa5, 0xed, 0x29, 0x20, 0xf0, 0xee, 0xa5, 0x02, 0x38, 0xe9, 0x10, 
+    0x85, 0x02, 0x4c, 0x46, 0xe9, 0xe0, 0x24, 0xd0, 0x11, 0xc0, 0x05, 0xd0, 0x0a, 0xa2, 0x30, 0xa9, 
+    0x02, 0x85, 0x03, 0xa9, 0x05, 0x85, 0xec, 0x4c, 0xca, 0xe9, 0xe0, 0x90, 0xd0, 0x12, 0xa5, 0xed, 
+    0x29, 0x20, 0xd0, 0x09, 0xad, 0x8f, 0x07, 0xc9, 0x10, 0xb0, 0x02, 0xa2, 0x96, 0x4c, 0x37, 0xea, 
+    0xa5, 0xef, 0xc9, 0x04, 0xb0, 0x10, 0xc0, 0x02, 0x90, 0x0c, 0xa2, 0x5a, 0xa4, 0xef, 0xc0, 0x02, 
+    0xd0, 0x04, 0xa2, 0x7e, 0xe6, 0x02, 0xa5, 0xec, 0xc9, 0x04, 0xd0, 0x1e, 0xa2, 0x72, 0xe6, 0x02, 
+    0xa4, 0xef, 0xc0, 0x02, 0xf0, 0x04, 0xa2, 0x66, 0xe6, 0x02, 0xc0, 0x06, 0xd0, 0x0c, 0xa2, 0x54, 
+    0xa5, 0xed, 0x29, 0x20, 0xd0, 0x04, 0xa2, 0x8a, 0xc6, 0x02, 0xa4, 0x08, 0xa5, 0xef, 0xc9, 0x05, 
+    0xd0, 0x0c, 0xa5, 0xed, 0xf0, 0x24, 0x29, 0x08, 0xf0, 0x5d, 0xa2, 0xb4, 0xd0, 0x1c, 0xe0, 0x48, 
+    0xf0, 0x18, 0xb9, 0x96, 0x07, 0xc9, 0x05, 0xb0, 0x4e, 0xe0, 0x3c, 0xd0, 0x0d, 0xc9, 0x01, 0xf0, 
+    0x46, 0xe6, 0x02, 0xe6, 0x02, 0xe6, 0x02, 0x4c, 0x29, 0xea, 0xa5, 0xef, 0xc9, 0x06, 0xf0, 0x37, 
+    0xc9, 0x08, 0xf0, 0x33, 0xc9, 0x0c, 0xf0, 0x2f, 0xc9, 0x18, 0xb0, 0x2b, 0xa0, 0x00, 0xc9, 0x15, 
+    0xd0, 0x10, 0xc8, 0xad, 0x5f, 0x07, 0xc9, 0x07, 0xb0, 0x1d, 0xa2, 0xa2, 0xa9, 0x03, 0x85, 0xec, 
+    0xd0, 0x15, 0xa5, 0x09, 0x39, 0x76, 0xe8, 0xd0, 0x0e, 0xa5, 0xed, 0x29, 0xa0, 0x0d, 0x47, 0x07, 
+    0xd0, 0x05, 0x8a, 0x18, 0x69, 0x06, 0xaa, 0xa5, 0xed, 0x29, 0x20, 0xf0, 0x0e, 0xa5, 0xef, 0xc9, 
+    0x04, 0x90, 0x08, 0xa0, 0x01, 0x8c, 0x09, 0x01, 0x88, 0x84, 0xec, 0xa4, 0xeb, 0x20, 0xaa, 0xeb, 
+    0x20, 0xaa, 0xeb, 0x20, 0xaa, 0xeb, 0xa6, 0x08, 0xbc, 0xe5, 0x06, 0xa5, 0xef, 0xc9, 0x08, 0xd0, 
+    0x03, 0x4c, 0x64, 0xeb, 0xad, 0x09, 0x01, 0xf0, 0x3d, 0xb9, 0x02, 0x02, 0x09, 0x80, 0xc8, 0xc8, 
+    0x20, 0xb5, 0xe5, 0x88, 0x88, 0x98, 0xaa, 0xa5, 0xef, 0xc9, 0x05, 0xf0, 0x0d, 0xc9, 0x11, 0xf0, 
+    0x09, 0xc9, 0x15, 0xb0, 0x05, 0x8a, 0x18, 0x69, 0x08, 0xaa, 0xbd, 0x01, 0x02, 0x48, 0xbd, 0x05, 
+    0x02, 0x48, 0xb9, 0x11, 0x02, 0x9d, 0x01, 0x02, 0xb9, 0x15, 0x02, 0x9d, 0x05, 0x02, 0x68, 0x99, 
+    0x15, 0x02, 0x68, 0x99, 0x11, 0x02, 0xad, 0x6a, 0x03, 0xd0, 0xb6, 0xa5, 0xef, 0xa6, 0xec, 0xc9, 
+    0x05, 0xd0, 0x03, 0x4c, 0x64, 0xeb, 0xc9, 0x07, 0xf0, 0x1d, 0xc9, 0x0d, 0xf0, 0x19, 0xc9, 0x0c, 
+    0xf0, 0x15, 0xc9, 0x12, 0xd0, 0x04, 0xe0, 0x05, 0xd0, 0x48, 0xc9, 0x15, 0xd0, 0x05, 0xa9, 0x42, 
+    0x99, 0x16, 0x02, 0xe0, 0x02, 0x90, 0x3b, 0xad, 0x6a, 0x03, 0xd0, 0x36, 0xb9, 0x02, 0x02, 0x29, 
+    0xa3, 0x99, 0x02, 0x02, 0x99, 0x0a, 0x02, 0x99, 0x12, 0x02, 0x09, 0x40, 0xe0, 0x05, 0xd0, 0x02, 
+    0x09, 0x80, 0x99, 0x06, 0x02, 0x99, 0x0e, 0x02, 0x99, 0x16, 0x02, 0xe0, 0x04, 0xd0, 0x13, 0xb9, 
+    0x0a, 0x02, 0x09, 0x80, 0x99, 0x0a, 0x02, 0x99, 0x12, 0x02, 0x09, 0x40, 0x99, 0x0e, 0x02, 0x99, 
+    0x16, 0x02, 0xa5, 0xef, 0xc9, 0x11, 0xd0, 0x36, 0xad, 0x09, 0x01, 0xd0, 0x21, 0xb9, 0x12, 0x02, 
+    0x29, 0x81, 0x99, 0x12, 0x02, 0xb9, 0x16, 0x02, 0x09, 0x41, 0x99, 0x16, 0x02, 0xae, 0x8f, 0x07, 
+    0xe0, 0x10, 0xb0, 0x30, 0x99, 0x0e, 0x02, 0x29, 0x81, 0x99, 0x0a, 0x02, 0x90, 0x26, 0xb9, 0x02, 
+    0x02, 0x29, 0x81, 0x99, 0x02, 0x02, 0xb9, 0x06, 0x02, 0x09, 0x41, 0x99, 0x06, 0x02, 0xa5, 0xef, 
+    0xc9, 0x18, 0x90, 0x10, 0xa9, 0x82, 0x99, 0x0a, 0x02, 0x99, 0x12, 0x02, 0x09, 0x40, 0x99, 0x0e, 
+    0x02, 0x99, 0x16, 0x02, 0xa6, 0x08, 0xad, 0xd1, 0x03, 0x4a, 0x4a, 0x4a, 0x48, 0x90, 0x05, 0xa9, 
+    0x04, 0x20, 0xc1, 0xeb, 0x68, 0x4a, 0x48, 0x90, 0x05, 0xa9, 0x00, 0x20, 0xc1, 0xeb, 0x68, 0x4a, 
+    0x4a, 0x48, 0x90, 0x05, 0xa9, 0x10, 0x20, 0xb7, 0xeb, 0x68, 0x4a, 0x48, 0x90, 0x05, 0xa9, 0x08, 
+    0x20, 0xb7, 0xeb, 0x68, 0x4a, 0x90, 0x12, 0x20, 0xb7, 0xeb, 0xb5, 0x16, 0xc9, 0x0c, 0xf0, 0x09, 
+    0xb5, 0xb6, 0xc9, 0x02, 0xd0, 0x03, 0x20, 0x98, 0xc9, 0x60, 0xbd, 0x3e, 0xe7, 0x85, 0x00, 0xbd, 
+    0x3f, 0xe7, 0x85, 0x01, 0x4c, 0x82, 0xf2, 0x18, 0x7d, 0xe5, 0x06, 0xa8, 0xa9, 0xf8, 0x4c, 0xc1, 
+    0xe5, 0x18, 0x7d, 0xe5, 0x06, 0xa8, 0x20, 0x4a, 0xec, 0x99, 0x10, 0x02, 0x60, 0x85, 0x85, 0x86, 
+    0x86, 0xad, 0xbc, 0x03, 0x85, 0x02, 0xad, 0xb1, 0x03, 0x85, 0x05, 0xa9, 0x03, 0x85, 0x04, 0x4a, 
+    0x85, 0x03, 0xbc, 0xec, 0x06, 0xa2, 0x00, 0xbd, 0xcd, 0xeb, 0x85, 0x00, 0xbd, 0xce, 0xeb, 0x20, 
+    0xb2, 0xeb, 0xe0, 0x04, 0xd0, 0xf1, 0xa6, 0x08, 0xbc, 0xec, 0x06, 0xad, 0x4e, 0x07, 0xc9, 0x01, 
+    0xf0, 0x08, 0xa9, 0x86, 0x99, 0x01, 0x02, 0x99, 0x05, 0x02, 0xbd, 0xe8, 0x03, 0xc9, 0xc4, 0xd0, 
+    0x24, 0xa9, 0x87, 0xc8, 0x20, 0xbb, 0xe5, 0x88, 0xa9, 0x03, 0xae, 0x4e, 0x07, 0xca, 0xf0, 0x01, 
+    0x4a, 0xa6, 0x08, 0x99, 0x02, 0x02, 0x09, 0x40, 0x99, 0x06, 0x02, 0x09, 0x80, 0x99, 0x0e, 0x02, 
+    0x29, 0x83, 0x99, 0x0a, 0x02, 0xad, 0xd4, 0x03, 0x48, 0x29, 0x04, 0xf0, 0x08, 0xa9, 0xf8, 0x99, 
+    0x04, 0x02, 0x99, 0x0c, 0x02, 0x68, 0x29, 0x08, 0xf0, 0x08, 0xa9, 0xf8, 0x99, 0x00, 0x02, 0x99, 
+    0x08, 0x02, 0x60, 0xa9, 0x02, 0x85, 0x00, 0xa9, 0x75, 0xa4, 0x0e, 0xc0, 0x05, 0xf0, 0x06, 0xa9, 
+    0x03, 0x85, 0x00, 0xa9, 0x84, 0xbc, 0xec, 0x06, 0xc8, 0x20, 0xbb, 0xe5, 0xa5, 0x09, 0x0a, 0x0a, 
+    0x0a, 0x0a, 0x29, 0xc0, 0x05, 0x00, 0xc8, 0x20, 0xbb, 0xe5, 0x88, 0x88, 0xad, 0xbc, 0x03, 0x20, 
+    0xc1, 0xe5, 0xad, 0xb1, 0x03, 0x99, 0x03, 0x02, 0xbd, 0xf1, 0x03, 0x38, 0xed, 0x1c, 0x07, 0x85, 
+    0x00, 0x38, 0xed, 0xb1, 0x03, 0x65, 0x00, 0x69, 0x06, 0x99, 0x07, 0x02, 0xad, 0xbd, 0x03, 0x99, 
+    0x08, 0x02, 0x99, 0x0c, 0x02, 0xad, 0xb2, 0x03, 0x99, 0x0b, 0x02, 0xa5, 0x00, 0x38, 0xed, 0xb2, 
+    0x03, 0x65, 0x00, 0x69, 0x06, 0x99, 0x0f, 0x02, 0xad, 0xd4, 0x03, 0x20, 0x46, 0xec, 0xad, 0xd4, 
+    0x03, 0x0a, 0x90, 0x05, 0xa9, 0xf8, 0x20, 0xc1, 0xe5, 0xa5, 0x00, 0x10, 0x10, 0xb9, 0x03, 0x02, 
+    0xd9, 0x07, 0x02, 0x90, 0x08, 0xa9, 0xf8, 0x99, 0x04, 0x02, 0x99, 0x0c, 0x02, 0x60, 0xbc, 0xf1, 
+    0x06, 0xad, 0xba, 0x03, 0x99, 0x00, 0x02, 0xad, 0xaf, 0x03, 0x99, 0x03, 0x02, 0xa5, 0x09, 0x4a, 
+    0x4a, 0x48, 0x29, 0x01, 0x49, 0x64, 0x99, 0x01, 0x02, 0x68, 0x4a, 0x4a, 0xa9, 0x02, 0x90, 0x02, 
+    0x09, 0xc0, 0x99, 0x02, 0x02, 0x60, 0x68, 0x67, 0x66, 0xbc, 0xec, 0x06, 0xb5, 0x24, 0xf6, 0x24, 
+    0x4a, 0x29, 0x07, 0xc9, 0x03, 0xb0, 0x4a, 0xaa, 0xbd, 0x06, 0xed, 0xc8, 0x20, 0xbb, 0xe5, 0x88, 
+    0xa6, 0x08, 0xad, 0xba, 0x03, 0x38, 0xe9, 0x04, 0x99, 0x00, 0x02, 0x99, 0x08, 0x02, 0x18, 0x69, 
+    0x08, 0x99, 0x04, 0x02, 0x99, 0x0c, 0x02, 0xad, 0xaf, 0x03, 0x38, 0xe9, 0x04, 0x99, 0x03, 0x02, 
+    0x99, 0x07, 0x02, 0x18, 0x69, 0x08, 0x99, 0x0b, 0x02, 0x99, 0x0f, 0x02, 0xa9, 0x02, 0x99, 0x02, 
+    0x02, 0xa9, 0x82, 0x99, 0x06, 0x02, 0xa9, 0x42, 0x99, 0x0a, 0x02, 0xa9, 0xc2, 0x99, 0x0e, 0x02, 
+    0x60, 0xa9, 0x00, 0x95, 0x24, 0x60, 0xbc, 0xe5, 0x06, 0xa9, 0x5b, 0xc8, 0x20, 0xb5, 0xe5, 0xc8, 
+    0xa9, 0x02, 0x20, 0xb5, 0xe5, 0x88, 0x88, 0xad, 0xae, 0x03, 0x99, 0x03, 0x02, 0x99, 0x0f, 0x02, 
+    0x18, 0x69, 0x08, 0x99, 0x07, 0x02, 0x99, 0x13, 0x02, 0x18, 0x69, 0x08, 0x99, 0x0b, 0x02, 0x99, 
+    0x17, 0x02, 0xb5, 0xcf, 0xaa, 0x48, 0xe0, 0x20, 0xb0, 0x02, 0xa9, 0xf8, 0x20, 0xbe, 0xe5, 0x68, 
+    0x18, 0x69, 0x80, 0xaa, 0xe0, 0x20, 0xb0, 0x02, 0xa9, 0xf8, 0x99, 0x0c, 0x02, 0x99, 0x10, 0x02, 
+    0x99, 0x14, 0x02, 0xad, 0xd1, 0x03, 0x48, 0x29, 0x08, 0xf0, 0x08, 0xa9, 0xf8, 0x99, 0x00, 0x02, 
+    0x99, 0x0c, 0x02, 0x68, 0x48, 0x29, 0x04, 0xf0, 0x08, 0xa9, 0xf8, 0x99, 0x04, 0x02, 0x99, 0x10, 
+    0x02, 0x68, 0x29, 0x02, 0xf0, 0x08, 0xa9, 0xf8, 0x99, 0x08, 0x02, 0x99, 0x14, 0x02, 0xa6, 0x08, 
+    0x60, 0xa4, 0xb5, 0x88, 0xd0, 0x20, 0xad, 0xd3, 0x03, 0x29, 0x08, 0xd0, 0x19, 0xbc, 0xee, 0x06, 
+    0xad, 0xb0, 0x03, 0x99, 0x03, 0x02, 0xad, 0xbb, 0x03, 0x99, 0x00, 0x02, 0xa9, 0x74, 0x99, 0x01, 
+    0x02, 0xa9, 0x02, 0x99, 0x02, 0x02, 0x60, 0x20, 0x28, 0xc8, 0x18, 0x00, 0x40, 0x50, 0x58, 0x80, 
+    0x88, 0xb8, 0x78, 0x60, 0xa0, 0xb0, 0xb8, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 
+    0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 
+    0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x08, 
+    0x09, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x30, 0x2c, 0x2d, 0x08, 
+    0x09, 0x0a, 0x0b, 0x2e, 0x2f, 0x2c, 0x2d, 0x08, 0x09, 0x28, 0x29, 0x2a, 0x2b, 0x5c, 0x5d, 0x08, 
+    0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x5e, 0x5f, 0xfc, 0xfc, 0x08, 0x09, 0x58, 0x59, 0x5a, 0x5a, 0x08, 
+    0x09, 0x28, 0x29, 0x2a, 0x2b, 0x0e, 0x0f, 0xfc, 0xfc, 0xfc, 0xfc, 0x32, 0x33, 0x34, 0x35, 0xfc, 
+    0xfc, 0xfc, 0xfc, 0x36, 0x37, 0x38, 0x39, 0xfc, 0xfc, 0xfc, 0xfc, 0x3a, 0x37, 0x3b, 0x3c, 0xfc, 
+    0xfc, 0xfc, 0xfc, 0x3d, 0x3e, 0x3f, 0x40, 0xfc, 0xfc, 0xfc, 0xfc, 0x32, 0x41, 0x42, 0x43, 0xfc, 
+    0xfc, 0xfc, 0xfc, 0x32, 0x33, 0x44, 0x45, 0xfc, 0xfc, 0xfc, 0xfc, 0x32, 0x33, 0x44, 0x47, 0xfc, 
+    0xfc, 0xfc, 0xfc, 0x32, 0x33, 0x48, 0x49, 0xfc, 0xfc, 0xfc, 0xfc, 0x32, 0x33, 0x90, 0x91, 0xfc, 
+    0xfc, 0xfc, 0xfc, 0x3a, 0x37, 0x92, 0x93, 0xfc, 0xfc, 0xfc, 0xfc, 0x9e, 0x9e, 0x9f, 0x9f, 0xfc, 
+    0xfc, 0xfc, 0xfc, 0x3a, 0x37, 0x4f, 0x4f, 0xfc, 0xfc, 0x00, 0x01, 0x4c, 0x4d, 0x4e, 0x4e, 0x00, 
+    0x01, 0x4c, 0x4d, 0x4a, 0x4a, 0x4b, 0x4b, 0x31, 0x46, 0xad, 0x9e, 0x07, 0xf0, 0x05, 0xa5, 0x09, 
+    0x4a, 0xb0, 0x40, 0xa5, 0x0e, 0xc9, 0x0b, 0xf0, 0x47, 0xad, 0x0b, 0x07, 0xd0, 0x3c, 0xac, 0x04, 
+    0x07, 0xf0, 0x31, 0xa5, 0x1d, 0xc9, 0x00, 0xf0, 0x2b, 0x20, 0x34, 0xef, 0xa5, 0x09, 0x29, 0x04, 
+    0xd0, 0x21, 0xaa, 0xac, 0xe4, 0x06, 0xa5, 0x33, 0x4a, 0xb0, 0x04, 0xc8, 0xc8, 0xc8, 0xc8, 0xad, 
+    0x54, 0x07, 0xf0, 0x09, 0xb9, 0x19, 0x02, 0xcd, 0xb5, 0xee, 0xf0, 0x07, 0xe8, 0xbd, 0xe7, 0xee, 
+    0x99, 0x19, 0x02, 0x60, 0x20, 0xec, 0xef, 0x4c, 0x45, 0xef, 0x20, 0xb0, 0xf0, 0x4c, 0x45, 0xef, 
+    0xa0, 0x0e, 0xb9, 0x07, 0xee, 0x8d, 0xd5, 0x06, 0xa9, 0x04, 0x20, 0xbe, 0xef, 0x20, 0xe9, 0xf0, 
+    0xad, 0x11, 0x07, 0xf0, 0x25, 0xa0, 0x00, 0xad, 0x81, 0x07, 0xcd, 0x11, 0x07, 0x8c, 0x11, 0x07, 
+    0xb0, 0x18, 0x8d, 0x11, 0x07, 0xa0, 0x07, 0xb9, 0x07, 0xee, 0x8d, 0xd5, 0x06, 0xa0, 0x04, 0xa5, 
+    0x57, 0x05, 0x0c, 0xf0, 0x01, 0x88, 0x98, 0x20, 0xbe, 0xef, 0xad, 0xd0, 0x03, 0x4a, 0x4a, 0x4a, 
+    0x4a, 0x85, 0x00, 0xa2, 0x03, 0xad, 0xe4, 0x06, 0x18, 0x69, 0x18, 0xa8, 0xa9, 0xf8, 0x46, 0x00, 
+    0x90, 0x03, 0x20, 0xc1, 0xe5, 0x98, 0x38, 0xe9, 0x08, 0xa8, 0xca, 0x10, 0xef, 0x60, 0x58, 0x01, 
+    0x00, 0x60, 0xff, 0x04, 0xa2, 0x05, 0xbd, 0x9e, 0xef, 0x95, 0x02, 0xca, 0x10, 0xf8, 0xa2, 0xb8, 
+    0xa0, 0x04, 0x20, 0xdc, 0xef, 0xad, 0x26, 0x02, 0x09, 0x40, 0x8d, 0x22, 0x02, 0x60, 0x85, 0x07, 
+    0xad, 0xad, 0x03, 0x8d, 0x55, 0x07, 0x85, 0x05, 0xad, 0xb8, 0x03, 0x85, 0x02, 0xa5, 0x33, 0x85, 
+    0x03, 0xad, 0xc4, 0x03, 0x85, 0x04, 0xae, 0xd5, 0x06, 0xac, 0xe4, 0x06, 0xbd, 0x17, 0xee, 0x85, 
+    0x00, 0xbd, 0x18, 0xee, 0x20, 0xb2, 0xeb, 0xc6, 0x07, 0xd0, 0xf1, 0x60, 0xa5, 0x1d, 0xc9, 0x03, 
+    0xf0, 0x52, 0xc9, 0x02, 0xf0, 0x3e, 0xc9, 0x01, 0xd0, 0x11, 0xad, 0x04, 0x07, 0xd0, 0x51, 0xa0, 
+    0x06, 0xad, 0x14, 0x07, 0xd0, 0x22, 0xa0, 0x00, 0x4c, 0x28, 0xf0, 0xa0, 0x06, 0xad, 0x14, 0x07, 
+    0xd0, 0x16, 0xa0, 0x02, 0xa5, 0x57, 0x05, 0x0c, 0xf0, 0x0e, 0xad, 0x00, 0x07, 0xc9, 0x09, 0x90, 
+    0x1b, 0xa5, 0x45, 0x25, 0x33, 0xd0, 0x15, 0xc8, 0x20, 0x91, 0xf0, 0xa9, 0x00, 0x8d, 0x0d, 0x07, 
+    0xb9, 0x07, 0xee, 0x60, 0xa0, 0x04, 0x20, 0x91, 0xf0, 0x4c, 0x62, 0xf0, 0xa0, 0x04, 0x20, 0x91, 
+    0xf0, 0x4c, 0x68, 0xf0, 0xa0, 0x05, 0xa5, 0x9f, 0xf0, 0xde, 0x20, 0x91, 0xf0, 0x4c, 0x6d, 0xf0, 
+    0xa0, 0x01, 0x20, 0x91, 0xf0, 0xad, 0x82, 0x07, 0x0d, 0x0d, 0x07, 0xd0, 0x0b, 0xa5, 0x0a, 0x0a, 
+    0xb0, 0x06, 0xad, 0x0d, 0x07, 0x4c, 0xd0, 0xf0, 0xa9, 0x03, 0x4c, 0x6f, 0xf0, 0xa9, 0x02, 0x85, 
+    0x00, 0x20, 0x62, 0xf0, 0x48, 0xad, 0x81, 0x07, 0xd0, 0x15, 0xad, 0x0c, 0x07, 0x8d, 0x81, 0x07, 
+    0xad, 0x0d, 0x07, 0x18, 0x69, 0x01, 0xc5, 0x00, 0x90, 0x02, 0xa9, 0x00, 0x8d, 0x0d, 0x07, 0x68, 
+    0x60, 0xad, 0x54, 0x07, 0xf0, 0x05, 0x98, 0x18, 0x69, 0x08, 0xa8, 0x60, 0x00, 0x01, 0x00, 0x01, 
+    0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 
+    0xac, 0x0d, 0x07, 0xa5, 0x09, 0x29, 0x03, 0xd0, 0x0d, 0xc8, 0xc0, 0x0a, 0x90, 0x05, 0xa0, 0x00, 
+    0x8c, 0x0b, 0x07, 0x8c, 0x0d, 0x07, 0xad, 0x54, 0x07, 0xd0, 0x0c, 0xb9, 0x9c, 0xf0, 0xa0, 0x0f, 
+    0x0a, 0x0a, 0x0a, 0x79, 0x07, 0xee, 0x60, 0x98, 0x18, 0x69, 0x0a, 0xaa, 0xa0, 0x09, 0xbd, 0x9c, 
+    0xf0, 0xd0, 0x02, 0xa0, 0x01, 0xb9, 0x07, 0xee, 0x60, 0xac, 0xe4, 0x06, 0xa5, 0x0e, 0xc9, 0x0b, 
+    0xf0, 0x13, 0xad, 0xd5, 0x06, 0xc9, 0x50, 0xf0, 0x1e, 0xc9, 0xb8, 0xf0, 0x1a, 0xc9, 0xc0, 0xf0, 
+    0x16, 0xc9, 0xc8, 0xd0, 0x24, 0xb9, 0x12, 0x02, 0x29, 0x3f, 0x99, 0x12, 0x02, 0xb9, 0x16, 0x02, 
+    0x29, 0x3f, 0x09, 0x40, 0x99, 0x16, 0x02, 0xb9, 0x1a, 0x02, 0x29, 0x3f, 0x99, 0x1a, 0x02, 0xb9, 
+    0x1e, 0x02, 0x29, 0x3f, 0x09, 0x40, 0x99, 0x1e, 0x02, 0x60, 0xa2, 0x00, 0xa0, 0x00, 0x4c, 0x42, 
+    0xf1, 0xa0, 0x01, 0x20, 0xa8, 0xf1, 0xa0, 0x03, 0x4c, 0x42, 0xf1, 0xa0, 0x00, 0x20, 0xa8, 0xf1, 
+    0xa0, 0x02, 0x20, 0x71, 0xf1, 0xa6, 0x08, 0x60, 0xa0, 0x02, 0x20, 0xa8, 0xf1, 0xa0, 0x06, 0x4c, 
+    0x42, 0xf1, 0xa9, 0x01, 0xa0, 0x01, 0x4c, 0x65, 0xf1, 0xa9, 0x09, 0xa0, 0x04, 0x20, 0x65, 0xf1, 
+    0xe8, 0xe8, 0xa9, 0x09, 0xc8, 0x86, 0x00, 0x18, 0x65, 0x00, 0xaa, 0x20, 0x71, 0xf1, 0xa6, 0x08, 
+    0x60, 0xb5, 0xce, 0x99, 0xb8, 0x03, 0xb5, 0x86, 0x38, 0xed, 0x1c, 0x07, 0x99, 0xad, 0x03, 0x60, 
+    0xa2, 0x00, 0xa0, 0x00, 0x4c, 0xc0, 0xf1, 0xa0, 0x00, 0x20, 0xa8, 0xf1, 0xa0, 0x02, 0x4c, 0xc0, 
+    0xf1, 0xa0, 0x01, 0x20, 0xa8, 0xf1, 0xa0, 0x03, 0x4c, 0xc0, 0xf1, 0xa0, 0x02, 0x20, 0xa8, 0xf1, 
+    0xa0, 0x06, 0x4c, 0xc0, 0xf1, 0x07, 0x16, 0x0d, 0x8a, 0x18, 0x79, 0xa5, 0xf1, 0xaa, 0x60, 0xa9, 
+    0x01, 0xa0, 0x01, 0x4c, 0xba, 0xf1, 0xa9, 0x09, 0xa0, 0x04, 0x86, 0x00, 0x18, 0x65, 0x00, 0xaa, 
+    0x98, 0x48, 0x20, 0xd7, 0xf1, 0x0a, 0x0a, 0x0a, 0x0a, 0x05, 0x00, 0x85, 0x00, 0x68, 0xa8, 0xa5, 
+    0x00, 0x99, 0xd0, 0x03, 0xa6, 0x08, 0x60, 0x20, 0xf6, 0xf1, 0x4a, 0x4a, 0x4a, 0x4a, 0x85, 0x00, 
+    0x4c, 0x39, 0xf2, 0x7f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 
+    0xfc, 0xfe, 0xff, 0x07, 0x0f, 0x07, 0x86, 0x04, 0xa0, 0x01, 0xb9, 0x1c, 0x07, 0x38, 0xf5, 0x86, 
+    0x85, 0x07, 0xb9, 0x1a, 0x07, 0xf5, 0x6d, 0xbe, 0xf3, 0xf1, 0xc9, 0x00, 0x30, 0x10, 0xbe, 0xf4, 
+    0xf1, 0xc9, 0x01, 0x10, 0x09, 0xa9, 0x38, 0x85, 0x06, 0xa9, 0x08, 0x20, 0x6d, 0xf2, 0xbd, 0xe3, 
+    0xf1, 0xa6, 0x04, 0xc9, 0x00, 0xd0, 0x03, 0x88, 0x10, 0xd0, 0x60, 0x00, 0x08, 0x0c, 0x0e, 0x0f, 
+    0x07, 0x03, 0x01, 0x00, 0x04, 0x00, 0x04, 0xff, 0x00, 0x86, 0x04, 0xa0, 0x01, 0xb9, 0x37, 0xf2, 
+    0x38, 0xf5, 0xce, 0x85, 0x07, 0xa9, 0x01, 0xf5, 0xb5, 0xbe, 0x34, 0xf2, 0xc9, 0x00, 0x30, 0x10, 
+    0xbe, 0x35, 0xf2, 0xc9, 0x01, 0x10, 0x09, 0xa9, 0x20, 0x85, 0x06, 0xa9, 0x04, 0x20, 0x6d, 0xf2, 
+    0xbd, 0x2b, 0xf2, 0xa6, 0x04, 0xc9, 0x00, 0xd0, 0x03, 0x88, 0x10, 0xd1, 0x60, 0x85, 0x05, 0xa5, 
+    0x07, 0xc5, 0x06, 0xb0, 0x0c, 0x4a, 0x4a, 0x4a, 0x29, 0x07, 0xc0, 0x01, 0xb0, 0x02, 0x65, 0x05, 
+    0xaa, 0x60, 0xa5, 0x03, 0x4a, 0x4a, 0xa5, 0x00, 0x90, 0x0c, 0x99, 0x05, 0x02, 0xa5, 0x01, 0x99, 
+    0x01, 0x02, 0xa9, 0x40, 0xd0, 0x0a, 0x99, 0x01, 0x02, 0xa5, 0x01, 0x99, 0x05, 0x02, 0xa9, 0x00, 
+    0x05, 0x04, 0x99, 0x02, 0x02, 0x99, 0x06, 0x02, 0xa5, 0x02, 0x99, 0x00, 0x02, 0x99, 0x04, 0x02, 
+    0xa5, 0x05, 0x99, 0x03, 0x02, 0x18, 0x69, 0x08, 0x99, 0x07, 0x02, 0xa5, 0x02, 0x18, 0x69, 0x08, 
+    0x85, 0x02, 0x98, 0x18, 0x69, 0x08, 0xa8, 0xe8, 0xe8, 0x60, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0xad, 0x70, 0x07, 0xd0, 0x04, 0x8d, 0x15, 0x40, 0x60, 0xa9, 0xff, 0x8d, 0x17, 0x40, 0xa9, 0x0f, 
+    0x8d, 0x15, 0x40, 0xad, 0xc6, 0x07, 0xd0, 0x06, 0xa5, 0xfa, 0xc9, 0x01, 0xd0, 0x5d, 0xad, 0xb2, 
+    0x07, 0xd0, 0x23, 0xa5, 0xfa, 0xf0, 0x66, 0x8d, 0xb2, 0x07, 0x8d, 0xc6, 0x07, 0xa9, 0x00, 0x8d, 
+    0x15, 0x40, 0x85, 0xf1, 0x85, 0xf2, 0x85, 0xf3, 0xa9, 0x0f, 0x8d, 0x15, 0x40, 0xa9, 0x2a, 0x8d, 
+    0xbb, 0x07, 0xa9, 0x44, 0xd0, 0x11, 0xad, 0xbb, 0x07, 0xc9, 0x24, 0xf0, 0x08, 0xc9, 0x1e, 0xf0, 
+    0xf1, 0xc9, 0x18, 0xd0, 0x09, 0xa9, 0x64, 0xa2, 0x84, 0xa0, 0x7f, 0x20, 0x88, 0xf3, 0xce, 0xbb, 
+    0x07, 0xd0, 0x2a, 0xa9, 0x00, 0x8d, 0x15, 0x40, 0xad, 0xb2, 0x07, 0xc9, 0x02, 0xd0, 0x05, 0xa9, 
+    0x00, 0x8d, 0xc6, 0x07, 0xa9, 0x00, 0x8d, 0xb2, 0x07, 0xf0, 0x12, 0x20, 0x1b, 0xf4, 0x20, 0x7c, 
+    0xf5, 0x20, 0x67, 0xf6, 0x20, 0x94, 0xf6, 0xa9, 0x00, 0x85, 0xfb, 0x85, 0xfc, 0xa9, 0x00, 0x85, 
+    0xff, 0x85, 0xfe, 0x85, 0xfd, 0x85, 0xfa, 0xac, 0xc0, 0x07, 0xa5, 0xf4, 0x29, 0x03, 0xf0, 0x07, 
+    0xee, 0xc0, 0x07, 0xc0, 0x30, 0x90, 0x06, 0x98, 0xf0, 0x03, 0xce, 0xc0, 0x07, 0x8c, 0x11, 0x40, 
+    0x60, 0x8c, 0x01, 0x40, 0x8e, 0x00, 0x40, 0x60, 0x20, 0x81, 0xf3, 0xa2, 0x00, 0xa8, 0xb9, 0x01, 
+    0xff, 0xf0, 0x0b, 0x9d, 0x02, 0x40, 0xb9, 0x00, 0xff, 0x09, 0x08, 0x9d, 0x03, 0x40, 0x60, 0x8e, 
+    0x04, 0x40, 0x8c, 0x05, 0x40, 0x60, 0x20, 0x9f, 0xf3, 0xa2, 0x04, 0xd0, 0xe0, 0xa2, 0x08, 0xd0, 
+    0xdc, 0x9f, 0x9b, 0x98, 0x96, 0x95, 0x94, 0x92, 0x90, 0x90, 0x9a, 0x97, 0x95, 0x93, 0x92, 0xa9, 
+    0x40, 0x8d, 0xbb, 0x07, 0xa9, 0x62, 0x20, 0x8b, 0xf3, 0xa2, 0x99, 0xd0, 0x25, 0xa9, 0x26, 0xd0, 
+    0x02, 0xa9, 0x18, 0xa2, 0x82, 0xa0, 0xa7, 0x20, 0x88, 0xf3, 0xa9, 0x28, 0x8d, 0xbb, 0x07, 0xad, 
+    0xbb, 0x07, 0xc9, 0x25, 0xd0, 0x06, 0xa2, 0x5f, 0xa0, 0xf6, 0xd0, 0x08, 0xc9, 0x20, 0xd0, 0x29, 
+    0xa2, 0x48, 0xa0, 0xbc, 0x20, 0x81, 0xf3, 0xd0, 0x20, 0xa9, 0x05, 0xa0, 0x99, 0xd0, 0x04, 0xa9, 
+    0x0a, 0xa0, 0x93, 0xa2, 0x9e, 0x8d, 0xbb, 0x07, 0xa9, 0x0c, 0x20, 0x88, 0xf3, 0xad, 0xbb, 0x07, 
+    0xc9, 0x06, 0xd0, 0x05, 0xa9, 0xbb, 0x8d, 0x01, 0x40, 0xd0, 0x60, 0xa4, 0xff, 0xf0, 0x20, 0x84, 
+    0xf1, 0x30, 0xaa, 0x46, 0xff, 0xb0, 0xaa, 0x46, 0xff, 0xb0, 0xd4, 0x46, 0xff, 0xb0, 0x2c, 0x46, 
+    0xff, 0xb0, 0x4a, 0x46, 0xff, 0xb0, 0x7f, 0x46, 0xff, 0xb0, 0xbe, 0x46, 0xff, 0xb0, 0x80, 0xa5, 
+    0xf1, 0xf0, 0x17, 0x30, 0x9a, 0x4a, 0xb0, 0x97, 0x4a, 0xb0, 0xc2, 0x4a, 0xb0, 0x1b, 0x4a, 0xb0, 
+    0x3c, 0x4a, 0xb0, 0x67, 0x4a, 0xb0, 0xb6, 0x4a, 0xb0, 0x48, 0x60, 0xa9, 0x0e, 0x8d, 0xbb, 0x07, 
+    0xa0, 0x9c, 0xa2, 0x9e, 0xa9, 0x26, 0x20, 0x88, 0xf3, 0xac, 0xbb, 0x07, 0xb9, 0xb0, 0xf3, 0x8d, 
+    0x00, 0x40, 0xc0, 0x06, 0xd0, 0x05, 0xa9, 0x9e, 0x8d, 0x02, 0x40, 0xd0, 0x25, 0xa9, 0x0e, 0xa0, 
+    0xcb, 0xa2, 0x9f, 0x8d, 0xbb, 0x07, 0xa9, 0x28, 0x20, 0x88, 0xf3, 0xd0, 0x15, 0xac, 0xbb, 0x07, 
+    0xc0, 0x08, 0xd0, 0x09, 0xa9, 0xa0, 0x8d, 0x02, 0x40, 0xa9, 0x9f, 0xd0, 0x02, 0xa9, 0x90, 0x8d, 
+    0x00, 0x40, 0xce, 0xbb, 0x07, 0xd0, 0x0e, 0xa2, 0x00, 0x86, 0xf1, 0xa2, 0x0e, 0x8e, 0x15, 0x40, 
+    0xa2, 0x0f, 0x8e, 0x15, 0x40, 0x60, 0xa9, 0x2f, 0x8d, 0xbb, 0x07, 0xad, 0xbb, 0x07, 0x4a, 0xb0, 
+    0x10, 0x4a, 0xb0, 0x0d, 0x29, 0x02, 0xf0, 0x09, 0xa0, 0x91, 0xa2, 0x9a, 0xa9, 0x44, 0x20, 0x88, 
+    0xf3, 0x4c, 0xa2, 0xf4, 0x58, 0x02, 0x54, 0x56, 0x4e, 0x44, 0x4c, 0x52, 0x4c, 0x48, 0x3e, 0x36, 
+    0x3e, 0x36, 0x30, 0x28, 0x4a, 0x50, 0x4a, 0x64, 0x3c, 0x32, 0x3c, 0x32, 0x2c, 0x24, 0x3a, 0x64, 
+    0x3a, 0x34, 0x2c, 0x22, 0x2c, 0x22, 0x1c, 0x14, 0x14, 0x04, 0x22, 0x24, 0x16, 0x04, 0x24, 0x26, 
+    0x18, 0x04, 0x26, 0x28, 0x1a, 0x04, 0x28, 0x2a, 0x1c, 0x04, 0x2a, 0x2c, 0x1e, 0x04, 0x2c, 0x2e, 
+    0x20, 0x04, 0x2e, 0x30, 0x22, 0x04, 0x30, 0x32, 0xa9, 0x35, 0xa2, 0x8d, 0xd0, 0x04, 0xa9, 0x06, 
+    0xa2, 0x98, 0x8d, 0xbd, 0x07, 0xa0, 0x7f, 0xa9, 0x42, 0x20, 0xa6, 0xf3, 0xad, 0xbd, 0x07, 0xc9, 
+    0x30, 0xd0, 0x05, 0xa9, 0x54, 0x8d, 0x06, 0x40, 0xd0, 0x2e, 0xa9, 0x20, 0x8d, 0xbd, 0x07, 0xa0, 
+    0x94, 0xa9, 0x5e, 0xd0, 0x0b, 0xad, 0xbd, 0x07, 0xc9, 0x18, 0xd0, 0x1c, 0xa0, 0x93, 0xa9, 0x18, 
+    0xd0, 0x7f, 0xa9, 0x36, 0x8d, 0xbd, 0x07, 0xad, 0xbd, 0x07, 0x4a, 0xb0, 0x0b, 0xa8, 0xb9, 0xd9, 
+    0xf4, 0xa2, 0x5d, 0xa0, 0x7f, 0x20, 0xa6, 0xf3, 0xce, 0xbd, 0x07, 0xd0, 0x0e, 0xa2, 0x00, 0x86, 
+    0xf2, 0xa2, 0x0d, 0x8e, 0x15, 0x40, 0xa2, 0x0f, 0x8e, 0x15, 0x40, 0x60, 0xa5, 0xf2, 0x29, 0x40, 
+    0xd0, 0x65, 0xa4, 0xfe, 0xf0, 0x20, 0x84, 0xf2, 0x30, 0x3e, 0x46, 0xfe, 0xb0, 0x8a, 0x46, 0xfe, 
+    0xb0, 0x6a, 0x46, 0xfe, 0xb0, 0x6a, 0x46, 0xfe, 0xb0, 0xa0, 0x46, 0xfe, 0xb0, 0x80, 0x46, 0xfe, 
+    0xb0, 0xb0, 0x46, 0xfe, 0xb0, 0x3c, 0xa5, 0xf2, 0xf0, 0x17, 0x30, 0x27, 0x4a, 0xb0, 0x13, 0x4a, 
+    0xb0, 0x5d, 0x4a, 0xb0, 0x5a, 0x4a, 0xb0, 0x8d, 0x4a, 0xb0, 0x07, 0x4a, 0xb0, 0x99, 0x4a, 0xb0, 
+    0x26, 0x60, 0x4c, 0x2c, 0xf5, 0x4c, 0x68, 0xf5, 0xa9, 0x38, 0x8d, 0xbd, 0x07, 0xa0, 0xc4, 0xa9, 
+    0x18, 0xd0, 0x0b, 0xad, 0xbd, 0x07, 0xc9, 0x08, 0xd0, 0x8e, 0xa0, 0xa4, 0xa9, 0x5a, 0xa2, 0x9f, 
+    0xd0, 0x83, 0xa9, 0x30, 0x8d, 0xbd, 0x07, 0xad, 0xbd, 0x07, 0xa2, 0x03, 0x4a, 0xb0, 0xd6, 0xca, 
+    0xd0, 0xfa, 0xa8, 0xb9, 0xd3, 0xf4, 0xa2, 0x82, 0xa0, 0x7f, 0xd0, 0xe4, 0xa9, 0x10, 0xd0, 0x02, 
+    0xa9, 0x20, 0x8d, 0xbd, 0x07, 0xa9, 0x7f, 0x8d, 0x05, 0x40, 0xa9, 0x00, 0x8d, 0xbe, 0x07, 0xee, 
+    0xbe, 0x07, 0xad, 0xbe, 0x07, 0x4a, 0xa8, 0xcc, 0xbd, 0x07, 0xf0, 0x0c, 0xa9, 0x9d, 0x8d, 0x04, 
+    0x40, 0xb9, 0xf8, 0xf4, 0x20, 0xa9, 0xf3, 0x60, 0x4c, 0x6d, 0xf5, 0x01, 0x0e, 0x0e, 0x0d, 0x0b, 
+    0x06, 0x0c, 0x0f, 0x0a, 0x09, 0x03, 0x0d, 0x08, 0x0d, 0x06, 0x0c, 0xa9, 0x20, 0x8d, 0xbf, 0x07, 
+    0xad, 0xbf, 0x07, 0x4a, 0x90, 0x12, 0xa8, 0xbe, 0x2b, 0xf6, 0xb9, 0xea, 0xff, 0x8d, 0x0c, 0x40, 
+    0x8e, 0x0e, 0x40, 0xa9, 0x18, 0x8d, 0x0f, 0x40, 0xce, 0xbf, 0x07, 0xd0, 0x09, 0xa9, 0xf0, 0x8d, 
+    0x0c, 0x40, 0xa9, 0x00, 0x85, 0xf3, 0x60, 0xa4, 0xfd, 0xf0, 0x0a, 0x84, 0xf3, 0x46, 0xfd, 0xb0, 
+    0xca, 0x46, 0xfd, 0xb0, 0x0b, 0xa5, 0xf3, 0xf0, 0x06, 0x4a, 0xb0, 0xc4, 0x4a, 0xb0, 0x06, 0x60, 
+    0xa9, 0x40, 0x8d, 0xbf, 0x07, 0xad, 0xbf, 0x07, 0x4a, 0xa8, 0xa2, 0x0f, 0xb9, 0xc9, 0xff, 0xd0, 
+    0xbc, 0x4c, 0x3a, 0xf7, 0xa5, 0xfc, 0xd0, 0x0c, 0xa5, 0xfb, 0xd0, 0x2c, 0xad, 0xb1, 0x07, 0x05, 
+    0xf4, 0xd0, 0xee, 0x60, 0x8d, 0xb1, 0x07, 0xc9, 0x01, 0xd0, 0x06, 0x20, 0xa7, 0xf4, 0x20, 0x71, 
+    0xf5, 0xa6, 0xf4, 0x8e, 0xc5, 0x07, 0xa0, 0x00, 0x8c, 0xc4, 0x07, 0x84, 0xf4, 0xc9, 0x40, 0xd0, 
+    0x30, 0xa2, 0x08, 0x8e, 0xc4, 0x07, 0xd0, 0x29, 0xc9, 0x04, 0xd0, 0x03, 0x20, 0xa7, 0xf4, 0xa0, 
+    0x10, 0x8c, 0xc7, 0x07, 0xa0, 0x00, 0x8c, 0xb1, 0x07, 0x85, 0xf4, 0xc9, 0x01, 0xd0, 0x0e, 0xee, 
+    0xc7, 0x07, 0xac, 0xc7, 0x07, 0xc0, 0x32, 0xd0, 0x0c, 0xa0, 0x11, 0xd0, 0xe4, 0xa0, 0x08, 0x84, 
+    0xf7, 0xc8, 0x4a, 0x90, 0xfc, 0xb9, 0x0c, 0xf9, 0xa8, 0xb9, 0x0d, 0xf9, 0x85, 0xf0, 0xb9, 0x0e, 
+    0xf9, 0x85, 0xf5, 0xb9, 0x0f, 0xf9, 0x85, 0xf6, 0xb9, 0x10, 0xf9, 0x85, 0xf9, 0xb9, 0x11, 0xf9, 
+    0x85, 0xf8, 0xb9, 0x12, 0xf9, 0x8d, 0xb0, 0x07, 0x8d, 0xc1, 0x07, 0xa9, 0x01, 0x8d, 0xb4, 0x07, 
+    0x8d, 0xb6, 0x07, 0x8d, 0xb9, 0x07, 0x8d, 0xba, 0x07, 0xa9, 0x00, 0x85, 0xf7, 0x8d, 0xca, 0x07, 
+    0xa9, 0x0b, 0x8d, 0x15, 0x40, 0xa9, 0x0f, 0x8d, 0x15, 0x40, 0xce, 0xb4, 0x07, 0xd0, 0x5f, 0xa4, 
+    0xf7, 0xe6, 0xf7, 0xb1, 0xf5, 0xf0, 0x04, 0x10, 0x3d, 0xd0, 0x2f, 0xad, 0xb1, 0x07, 0xc9, 0x40, 
+    0xd0, 0x05, 0xad, 0xc5, 0x07, 0xd0, 0x1d, 0x29, 0x04, 0xd0, 0x1c, 0xa5, 0xf4, 0x29, 0x5f, 0xd0, 
+    0x13, 0xa9, 0x00, 0x85, 0xf4, 0x8d, 0xb1, 0x07, 0x8d, 0x08, 0x40, 0xa9, 0x90, 0x8d, 0x00, 0x40, 
+    0x8d, 0x04, 0x40, 0x60, 0x4c, 0xd4, 0xf6, 0x4c, 0xa4, 0xf6, 0x20, 0xcb, 0xf8, 0x8d, 0xb3, 0x07, 
+    0xa4, 0xf7, 0xe6, 0xf7, 0xb1, 0xf5, 0xa6, 0xf2, 0xd0, 0x0e, 0x20, 0xa9, 0xf3, 0xf0, 0x03, 0x20, 
+    0xd8, 0xf8, 0x8d, 0xb5, 0x07, 0x20, 0x9f, 0xf3, 0xad, 0xb3, 0x07, 0x8d, 0xb4, 0x07, 0xa5, 0xf2, 
+    0xd0, 0x1a, 0xad, 0xb1, 0x07, 0x29, 0x91, 0xd0, 0x13, 0xac, 0xb5, 0x07, 0xf0, 0x03, 0xce, 0xb5, 
+    0x07, 0x20, 0xf4, 0xf8, 0x8d, 0x04, 0x40, 0xa2, 0x7f, 0x8e, 0x05, 0x40, 0xa4, 0xf8, 0xf0, 0x5a, 
+    0xce, 0xb6, 0x07, 0xd0, 0x32, 0xa4, 0xf8, 0xe6, 0xf8, 0xb1, 0xf5, 0xd0, 0x0f, 0xa9, 0x83, 0x8d, 
+    0x00, 0x40, 0xa9, 0x94, 0x8d, 0x01, 0x40, 0x8d, 0xca, 0x07, 0xd0, 0xe9, 0x20, 0xc5, 0xf8, 0x8d, 
+    0xb6, 0x07, 0xa4, 0xf1, 0xd0, 0x34, 0x8a, 0x29, 0x3e, 0x20, 0x8b, 0xf3, 0xf0, 0x03, 0x20, 0xd8, 
+    0xf8, 0x8d, 0xb7, 0x07, 0x20, 0x81, 0xf3, 0xa5, 0xf1, 0xd0, 0x1f, 0xad, 0xb1, 0x07, 0x29, 0x91, 
+    0xd0, 0x0e, 0xac, 0xb7, 0x07, 0xf0, 0x03, 0xce, 0xb7, 0x07, 0x20, 0xf4, 0xf8, 0x8d, 0x00, 0x40, 
+    0xad, 0xca, 0x07, 0xd0, 0x02, 0xa9, 0x7f, 0x8d, 0x01, 0x40, 0xa5, 0xf9, 0xce, 0xb9, 0x07, 0xd0, 
+    0x4c, 0xa4, 0xf9, 0xe6, 0xf9, 0xb1, 0xf5, 0xf0, 0x41, 0x10, 0x13, 0x20, 0xcb, 0xf8, 0x8d, 0xb8, 
+    0x07, 0xa9, 0x1f, 0x8d, 0x08, 0x40, 0xa4, 0xf9, 0xe6, 0xf9, 0xb1, 0xf5, 0xf0, 0x2c, 0x20, 0xad, 
+    0xf3, 0xae, 0xb8, 0x07, 0x8e, 0xb9, 0x07, 0xad, 0xb1, 0x07, 0x29, 0x6e, 0xd0, 0x06, 0xa5, 0xf4, 
+    0x29, 0x0a, 0xf0, 0x19, 0x8a, 0xc9, 0x12, 0xb0, 0x0f, 0xad, 0xb1, 0x07, 0x29, 0x08, 0xf0, 0x04, 
+    0xa9, 0x0f, 0xd0, 0x06, 0xa9, 0x1f, 0xd0, 0x02, 0xa9, 0xff, 0x8d, 0x08, 0x40, 0xa5, 0xf4, 0x29, 
+    0xf3, 0xf0, 0x51, 0xce, 0xba, 0x07, 0xd0, 0x4c, 0xac, 0xb0, 0x07, 0xee, 0xb0, 0x07, 0xb1, 0xf5, 
+    0xd0, 0x08, 0xad, 0xc1, 0x07, 0x8d, 0xb0, 0x07, 0xd0, 0xee, 0x20, 0xc5, 0xf8, 0x8d, 0xba, 0x07, 
+    0x8a, 0x29, 0x3e, 0xf0, 0x24, 0xc9, 0x30, 0xf0, 0x18, 0xc9, 0x20, 0xf0, 0x0c, 0x29, 0x10, 0xf0, 
+    0x18, 0xa9, 0x1c, 0xa2, 0x03, 0xa0, 0x18, 0xd0, 0x12, 0xa9, 0x1c, 0xa2, 0x0c, 0xa0, 0x18, 0xd0, 
+    0x0a, 0xa9, 0x1c, 0xa2, 0x03, 0xa0, 0x58, 0xd0, 0x02, 0xa9, 0x10, 0x8d, 0x0c, 0x40, 0x8e, 0x0e, 
+    0x40, 0x8c, 0x0f, 0x40, 0x60, 0xaa, 0x6a, 0x8a, 0x2a, 0x2a, 0x2a, 0x29, 0x07, 0x18, 0x65, 0xf0, 
+    0x6d, 0xc4, 0x07, 0xa8, 0xb9, 0x66, 0xff, 0x60, 0xad, 0xb1, 0x07, 0x29, 0x08, 0xf0, 0x04, 0xa9, 
+    0x04, 0xd0, 0x0c, 0xa5, 0xf4, 0x29, 0x7d, 0xf0, 0x04, 0xa9, 0x08, 0xd0, 0x02, 0xa9, 0x28, 0xa2, 
+    0x82, 0xa0, 0x7f, 0x60, 0xad, 0xb1, 0x07, 0x29, 0x08, 0xf0, 0x04, 0xb9, 0x96, 0xff, 0x60, 0xa5, 
+    0xf4, 0x29, 0x7d, 0xf0, 0x04, 0xb9, 0x9a, 0xff, 0x60, 0xb9, 0xa2, 0xff, 0x60, 0xa5, 0x59, 0x54, 
+    0x64, 0x59, 0x3c, 0x31, 0x4b, 0x69, 0x5e, 0x46, 0x4f, 0x36, 0x8d, 0x36, 0x4b, 0x8d, 0x69, 0x69, 
+    0x6f, 0x75, 0x6f, 0x7b, 0x6f, 0x75, 0x6f, 0x7b, 0x81, 0x87, 0x81, 0x8d, 0x69, 0x69, 0x93, 0x99, 
+    0x93, 0x9f, 0x93, 0x99, 0x93, 0x9f, 0x81, 0x87, 0x81, 0x8d, 0x93, 0x99, 0x93, 0x9f, 0x08, 0x72, 
+    0xfc, 0x27, 0x18, 0x20, 0xb8, 0xf9, 0x2e, 0x1a, 0x40, 0x20, 0xb0, 0xfc, 0x3d, 0x21, 0x20, 0xc4, 
+    0xfc, 0x3f, 0x1d, 0x18, 0x11, 0xfd, 0x00, 0x00, 0x08, 0x1c, 0xfa, 0x00, 0x00, 0xa4, 0xfb, 0x93, 
+    0x62, 0x10, 0xc8, 0xfe, 0x24, 0x14, 0x18, 0x45, 0xfc, 0x1e, 0x14, 0x08, 0x52, 0xfd, 0xa0, 0x70, 
+    0x68, 0x08, 0x51, 0xfe, 0x4c, 0x24, 0x18, 0x01, 0xfa, 0x2d, 0x1c, 0xb8, 0x18, 0x49, 0xfa, 0x20, 
+    0x12, 0x70, 0x18, 0x75, 0xfa, 0x1b, 0x10, 0x44, 0x18, 0x9d, 0xfa, 0x11, 0x0a, 0x1c, 0x18, 0xc2, 
+    0xfa, 0x2d, 0x10, 0x58, 0x18, 0xdb, 0xfa, 0x14, 0x0d, 0x3f, 0x18, 0xf9, 0xfa, 0x15, 0x0d, 0x21, 
+    0x18, 0x25, 0xfb, 0x18, 0x10, 0x7a, 0x18, 0x4b, 0xfb, 0x19, 0x0f, 0x54, 0x18, 0x74, 0xfb, 0x1e, 
+    0x12, 0x2b, 0x18, 0x72, 0xfb, 0x1e, 0x0f, 0x2d, 0x84, 0x2c, 0x2c, 0x2c, 0x82, 0x04, 0x2c, 0x04, 
+    0x85, 0x2c, 0x84, 0x2c, 0x2c, 0x2a, 0x2a, 0x2a, 0x82, 0x04, 0x2a, 0x04, 0x85, 0x2a, 0x84, 0x2a, 
+    0x2a, 0x00, 0x1f, 0x1f, 0x1f, 0x98, 0x1f, 0x1f, 0x98, 0x9e, 0x98, 0x1f, 0x1d, 0x1d, 0x1d, 0x94, 
+    0x1d, 0x1d, 0x94, 0x9c, 0x94, 0x1d, 0x86, 0x18, 0x85, 0x26, 0x30, 0x84, 0x04, 0x26, 0x30, 0x86, 
+    0x14, 0x85, 0x22, 0x2c, 0x84, 0x04, 0x22, 0x2c, 0x21, 0xd0, 0xc4, 0xd0, 0x31, 0xd0, 0xc4, 0xd0, 
+    0x00, 0x85, 0x2c, 0x22, 0x1c, 0x84, 0x26, 0x2a, 0x82, 0x28, 0x26, 0x04, 0x87, 0x22, 0x34, 0x3a, 
+    0x82, 0x40, 0x04, 0x36, 0x84, 0x3a, 0x34, 0x82, 0x2c, 0x30, 0x85, 0x2a, 0x00, 0x5d, 0x55, 0x4d, 
+    0x15, 0x19, 0x96, 0x15, 0xd5, 0xe3, 0xeb, 0x2d, 0xa6, 0x2b, 0x27, 0x9c, 0x9e, 0x59, 0x85, 0x22, 
+    0x1c, 0x14, 0x84, 0x1e, 0x22, 0x82, 0x20, 0x1e, 0x04, 0x87, 0x1c, 0x2c, 0x34, 0x82, 0x36, 0x04, 
+    0x30, 0x34, 0x04, 0x2c, 0x04, 0x26, 0x2a, 0x85, 0x22, 0x84, 0x04, 0x82, 0x3a, 0x38, 0x36, 0x32, 
+    0x04, 0x34, 0x04, 0x24, 0x26, 0x2c, 0x04, 0x26, 0x2c, 0x30, 0x00, 0x05, 0xb4, 0xb2, 0xb0, 0x2b, 
+    0xac, 0x84, 0x9c, 0x9e, 0xa2, 0x84, 0x94, 0x9c, 0x9e, 0x85, 0x14, 0x22, 0x84, 0x2c, 0x85, 0x1e, 
+    0x82, 0x2c, 0x84, 0x2c, 0x1e, 0x84, 0x04, 0x82, 0x3a, 0x38, 0x36, 0x32, 0x04, 0x34, 0x04, 0x64, 
+    0x04, 0x64, 0x86, 0x64, 0x00, 0x05, 0xb4, 0xb2, 0xb0, 0x2b, 0xac, 0x84, 0x37, 0xb6, 0xb6, 0x45, 
+    0x85, 0x14, 0x1c, 0x82, 0x22, 0x84, 0x2c, 0x4e, 0x82, 0x4e, 0x84, 0x4e, 0x22, 0x84, 0x04, 0x85, 
+    0x32, 0x85, 0x30, 0x86, 0x2c, 0x04, 0x00, 0x05, 0xa4, 0x05, 0x9e, 0x05, 0x9d, 0x85, 0x84, 0x14, 
+    0x85, 0x24, 0x28, 0x2c, 0x82, 0x22, 0x84, 0x22, 0x14, 0x21, 0xd0, 0xc4, 0xd0, 0x31, 0xd0, 0xc4, 
+    0xd0, 0x00, 0x82, 0x2c, 0x84, 0x2c, 0x2c, 0x82, 0x2c, 0x30, 0x04, 0x34, 0x2c, 0x04, 0x26, 0x86, 
+    0x22, 0x00, 0xa4, 0x25, 0x25, 0xa4, 0x29, 0xa2, 0x1d, 0x9c, 0x95, 0x82, 0x2c, 0x2c, 0x04, 0x2c, 
+    0x04, 0x2c, 0x30, 0x85, 0x34, 0x04, 0x04, 0x00, 0xa4, 0x25, 0x25, 0xa4, 0xa8, 0x63, 0x04, 0x85, 
+    0x0e, 0x1a, 0x84, 0x24, 0x85, 0x22, 0x14, 0x84, 0x0c, 0x82, 0x34, 0x84, 0x34, 0x34, 0x82, 0x2c, 
+    0x84, 0x34, 0x86, 0x3a, 0x04, 0x00, 0xa0, 0x21, 0x21, 0xa0, 0x21, 0x2b, 0x05, 0xa3, 0x82, 0x18, 
+    0x84, 0x18, 0x18, 0x82, 0x18, 0x18, 0x04, 0x86, 0x3a, 0x22, 0x31, 0x90, 0x31, 0x90, 0x31, 0x71, 
+    0x31, 0x90, 0x90, 0x90, 0x00, 0x82, 0x34, 0x84, 0x2c, 0x85, 0x22, 0x84, 0x24, 0x82, 0x26, 0x36, 
+    0x04, 0x36, 0x86, 0x26, 0x00, 0xac, 0x27, 0x5d, 0x1d, 0x9e, 0x2d, 0xac, 0x9f, 0x85, 0x14, 0x82, 
+    0x20, 0x84, 0x22, 0x2c, 0x1e, 0x1e, 0x82, 0x2c, 0x2c, 0x1e, 0x04, 0x87, 0x2a, 0x40, 0x40, 0x40, 
+    0x3a, 0x36, 0x82, 0x34, 0x2c, 0x04, 0x26, 0x86, 0x22, 0x00, 0xe3, 0xf7, 0xf7, 0xf7, 0xf5, 0xf1, 
+    0xac, 0x27, 0x9e, 0x9d, 0x85, 0x18, 0x82, 0x1e, 0x84, 0x22, 0x2a, 0x22, 0x22, 0x82, 0x2c, 0x2c, 
+    0x22, 0x04, 0x86, 0x04, 0x82, 0x2a, 0x36, 0x04, 0x36, 0x87, 0x36, 0x34, 0x30, 0x86, 0x2c, 0x04, 
+    0x00, 0x00, 0x68, 0x6a, 0x6c, 0x45, 0xa2, 0x31, 0xb0, 0xf1, 0xed, 0xeb, 0xa2, 0x1d, 0x9c, 0x95, 
+    0x86, 0x04, 0x85, 0x22, 0x82, 0x22, 0x87, 0x22, 0x26, 0x2a, 0x84, 0x2c, 0x22, 0x86, 0x14, 0x51, 
+    0x90, 0x31, 0x11, 0x00, 0x80, 0x22, 0x28, 0x22, 0x26, 0x22, 0x24, 0x22, 0x26, 0x22, 0x28, 0x22, 
+    0x2a, 0x22, 0x28, 0x22, 0x26, 0x22, 0x28, 0x22, 0x26, 0x22, 0x24, 0x22, 0x26, 0x22, 0x28, 0x22, 
+    0x2a, 0x22, 0x28, 0x22, 0x26, 0x20, 0x26, 0x20, 0x24, 0x20, 0x26, 0x20, 0x28, 0x20, 0x26, 0x20, 
+    0x28, 0x20, 0x26, 0x20, 0x24, 0x20, 0x26, 0x20, 0x24, 0x20, 0x26, 0x20, 0x28, 0x20, 0x26, 0x20, 
+    0x28, 0x20, 0x26, 0x20, 0x24, 0x28, 0x30, 0x28, 0x32, 0x28, 0x30, 0x28, 0x2e, 0x28, 0x30, 0x28, 
+    0x2e, 0x28, 0x2c, 0x28, 0x2e, 0x28, 0x30, 0x28, 0x32, 0x28, 0x30, 0x28, 0x2e, 0x28, 0x30, 0x28, 
+    0x2e, 0x28, 0x2c, 0x28, 0x2e, 0x00, 0x04, 0x70, 0x6e, 0x6c, 0x6e, 0x70, 0x72, 0x70, 0x6e, 0x70, 
+    0x6e, 0x6c, 0x6e, 0x70, 0x72, 0x70, 0x6e, 0x6e, 0x6c, 0x6e, 0x70, 0x6e, 0x70, 0x6e, 0x6c, 0x6e, 
+    0x6c, 0x6e, 0x70, 0x6e, 0x70, 0x6e, 0x6c, 0x76, 0x78, 0x76, 0x74, 0x76, 0x74, 0x72, 0x74, 0x76, 
+    0x78, 0x76, 0x74, 0x76, 0x74, 0x72, 0x74, 0x84, 0x1a, 0x83, 0x18, 0x20, 0x84, 0x1e, 0x83, 0x1c, 
+    0x28, 0x26, 0x1c, 0x1a, 0x1c, 0x82, 0x2c, 0x04, 0x04, 0x22, 0x04, 0x04, 0x84, 0x1c, 0x87, 0x26, 
+    0x2a, 0x26, 0x84, 0x24, 0x28, 0x24, 0x80, 0x22, 0x00, 0x9c, 0x05, 0x94, 0x05, 0x0d, 0x9f, 0x1e, 
+    0x9c, 0x98, 0x9d, 0x82, 0x22, 0x04, 0x04, 0x1c, 0x04, 0x04, 0x84, 0x14, 0x86, 0x1e, 0x80, 0x16, 
+    0x80, 0x14, 0x81, 0x1c, 0x30, 0x04, 0x30, 0x30, 0x04, 0x1e, 0x32, 0x04, 0x32, 0x32, 0x04, 0x20, 
+    0x34, 0x04, 0x34, 0x34, 0x04, 0x36, 0x04, 0x84, 0x36, 0x00, 0x46, 0xa4, 0x64, 0xa4, 0x48, 0xa6, 
+    0x66, 0xa6, 0x4a, 0xa8, 0x68, 0xa8, 0x6a, 0x44, 0x2b, 0x81, 0x2a, 0x42, 0x04, 0x42, 0x42, 0x04, 
+    0x2c, 0x64, 0x04, 0x64, 0x64, 0x04, 0x2e, 0x46, 0x04, 0x46, 0x46, 0x04, 0x22, 0x04, 0x84, 0x22, 
+    0x87, 0x04, 0x06, 0x0c, 0x14, 0x1c, 0x22, 0x86, 0x2c, 0x22, 0x87, 0x04, 0x60, 0x0e, 0x14, 0x1a, 
+    0x24, 0x86, 0x2c, 0x24, 0x87, 0x04, 0x08, 0x10, 0x18, 0x1e, 0x28, 0x86, 0x30, 0x30, 0x80, 0x64, 
+    0x00, 0xcd, 0xd5, 0xdd, 0xe3, 0xed, 0xf5, 0xbb, 0xb5, 0xcf, 0xd5, 0xdb, 0xe5, 0xed, 0xf3, 0xbd, 
+    0xb3, 0xd1, 0xd9, 0xdf, 0xe9, 0xf1, 0xf7, 0xbf, 0xff, 0xff, 0xff, 0x34, 0x00, 0x86, 0x04, 0x87, 
+    0x14, 0x1c, 0x22, 0x86, 0x34, 0x84, 0x2c, 0x04, 0x04, 0x04, 0x87, 0x14, 0x1a, 0x24, 0x86, 0x32, 
+    0x84, 0x2c, 0x04, 0x86, 0x04, 0x87, 0x18, 0x1e, 0x28, 0x86, 0x36, 0x87, 0x30, 0x30, 0x30, 0x80, 
+    0x2c, 0x82, 0x14, 0x2c, 0x62, 0x26, 0x10, 0x28, 0x80, 0x04, 0x82, 0x14, 0x2c, 0x62, 0x26, 0x10, 
+    0x28, 0x80, 0x04, 0x82, 0x08, 0x1e, 0x5e, 0x18, 0x60, 0x1a, 0x80, 0x04, 0x82, 0x08, 0x1e, 0x5e, 
+    0x18, 0x60, 0x1a, 0x86, 0x04, 0x83, 0x1a, 0x18, 0x16, 0x84, 0x14, 0x1a, 0x18, 0x0e, 0x0c, 0x16, 
+    0x83, 0x14, 0x20, 0x1e, 0x1c, 0x28, 0x26, 0x87, 0x24, 0x1a, 0x12, 0x10, 0x62, 0x0e, 0x80, 0x04, 
+    0x04, 0x00, 0x82, 0x18, 0x1c, 0x20, 0x22, 0x26, 0x28, 0x81, 0x2a, 0x2a, 0x2a, 0x04, 0x2a, 0x04, 
+    0x83, 0x2a, 0x82, 0x22, 0x86, 0x34, 0x32, 0x34, 0x81, 0x04, 0x22, 0x26, 0x2a, 0x2c, 0x30, 0x86, 
+    0x34, 0x83, 0x32, 0x82, 0x36, 0x84, 0x34, 0x85, 0x04, 0x81, 0x22, 0x86, 0x30, 0x2e, 0x30, 0x81, 
+    0x04, 0x22, 0x26, 0x2a, 0x2c, 0x2e, 0x86, 0x30, 0x83, 0x22, 0x82, 0x36, 0x84, 0x34, 0x85, 0x04, 
+    0x81, 0x22, 0x86, 0x3a, 0x3a, 0x3a, 0x82, 0x3a, 0x81, 0x40, 0x82, 0x04, 0x81, 0x3a, 0x86, 0x36, 
+    0x36, 0x36, 0x82, 0x36, 0x81, 0x3a, 0x82, 0x04, 0x81, 0x36, 0x86, 0x34, 0x82, 0x26, 0x2a, 0x36, 
+    0x81, 0x34, 0x34, 0x85, 0x34, 0x81, 0x2a, 0x86, 0x2c, 0x00, 0x84, 0x90, 0xb0, 0x84, 0x50, 0x50, 
+    0xb0, 0x00, 0x98, 0x96, 0x94, 0x92, 0x94, 0x96, 0x58, 0x58, 0x58, 0x44, 0x5c, 0x44, 0x9f, 0xa3, 
+    0xa1, 0xa3, 0x85, 0xa3, 0xe0, 0xa6, 0x23, 0xc4, 0x9f, 0x9d, 0x9f, 0x85, 0x9f, 0xd2, 0xa6, 0x23, 
+    0xc4, 0xb5, 0xb1, 0xaf, 0x85, 0xb1, 0xaf, 0xad, 0x85, 0x95, 0x9e, 0xa2, 0xaa, 0x6a, 0x6a, 0x6b, 
+    0x5e, 0x9d, 0x84, 0x04, 0x04, 0x82, 0x22, 0x86, 0x22, 0x82, 0x14, 0x22, 0x2c, 0x12, 0x22, 0x2a, 
+    0x14, 0x22, 0x2c, 0x1c, 0x22, 0x2c, 0x14, 0x22, 0x2c, 0x12, 0x22, 0x2a, 0x14, 0x22, 0x2c, 0x1c, 
+    0x22, 0x2c, 0x18, 0x22, 0x2a, 0x16, 0x20, 0x28, 0x18, 0x22, 0x2a, 0x12, 0x22, 0x2a, 0x18, 0x22, 
+    0x2a, 0x12, 0x22, 0x2a, 0x14, 0x22, 0x2c, 0x0c, 0x22, 0x2c, 0x14, 0x22, 0x34, 0x12, 0x22, 0x30, 
+    0x10, 0x22, 0x2e, 0x16, 0x22, 0x34, 0x18, 0x26, 0x36, 0x16, 0x26, 0x36, 0x14, 0x26, 0x36, 0x12, 
+    0x22, 0x36, 0x5c, 0x22, 0x34, 0x0c, 0x22, 0x22, 0x81, 0x1e, 0x1e, 0x85, 0x1e, 0x81, 0x12, 0x86, 
+    0x14, 0x81, 0x2c, 0x22, 0x1c, 0x2c, 0x22, 0x1c, 0x85, 0x2c, 0x04, 0x81, 0x2e, 0x24, 0x1e, 0x2e, 
+    0x24, 0x1e, 0x85, 0x2e, 0x04, 0x81, 0x32, 0x28, 0x22, 0x32, 0x28, 0x22, 0x85, 0x32, 0x87, 0x36, 
+    0x36, 0x36, 0x84, 0x3a, 0x00, 0x5c, 0x54, 0x4c, 0x5c, 0x54, 0x4c, 0x5c, 0x1c, 0x1c, 0x5c, 0x5c, 
+    0x5c, 0x5c, 0x5e, 0x56, 0x4e, 0x5e, 0x56, 0x4e, 0x5e, 0x1e, 0x1e, 0x5e, 0x5e, 0x5e, 0x5e, 0x62, 
+    0x5a, 0x50, 0x62, 0x5a, 0x50, 0x62, 0x22, 0x22, 0x62, 0xe7, 0xe7, 0xe7, 0x2b, 0x86, 0x14, 0x81, 
+    0x14, 0x80, 0x14, 0x14, 0x81, 0x14, 0x14, 0x14, 0x14, 0x86, 0x16, 0x81, 0x16, 0x80, 0x16, 0x16, 
+    0x81, 0x16, 0x16, 0x16, 0x16, 0x81, 0x28, 0x22, 0x1a, 0x28, 0x22, 0x1a, 0x28, 0x80, 0x28, 0x28, 
+    0x81, 0x28, 0x87, 0x2c, 0x2c, 0x2c, 0x84, 0x30, 0x83, 0x04, 0x84, 0x0c, 0x83, 0x62, 0x10, 0x84, 
+    0x12, 0x83, 0x1c, 0x22, 0x1e, 0x22, 0x26, 0x18, 0x1e, 0x04, 0x1c, 0x00, 0xe3, 0xe1, 0xe3, 0x1d, 
+    0xde, 0xe0, 0x23, 0xec, 0x75, 0x74, 0xf0, 0xf4, 0xf6, 0xea, 0x31, 0x2d, 0x83, 0x12, 0x14, 0x04, 
+    0x18, 0x1a, 0x1c, 0x14, 0x26, 0x22, 0x1e, 0x1c, 0x18, 0x1e, 0x22, 0x0c, 0x14, 0xff, 0xff, 0xff, 
+    0x00, 0x88, 0x00, 0x2f, 0x00, 0x00, 0x02, 0xa6, 0x02, 0x80, 0x02, 0x5c, 0x02, 0x3a, 0x02, 0x1a, 
+    0x01, 0xdf, 0x01, 0xc4, 0x01, 0xab, 0x01, 0x93, 0x01, 0x7c, 0x01, 0x67, 0x01, 0x53, 0x01, 0x40, 
+    0x01, 0x2e, 0x01, 0x1d, 0x01, 0x0d, 0x00, 0xfe, 0x00, 0xef, 0x00, 0xe2, 0x00, 0xd5, 0x00, 0xc9, 
+    0x00, 0xbe, 0x00, 0xb3, 0x00, 0xa9, 0x00, 0xa0, 0x00, 0x97, 0x00, 0x8e, 0x00, 0x86, 0x00, 0x77, 
+    0x00, 0x7e, 0x00, 0x71, 0x00, 0x54, 0x00, 0x64, 0x00, 0x5f, 0x00, 0x59, 0x00, 0x50, 0x00, 0x47, 
+    0x00, 0x43, 0x00, 0x3b, 0x00, 0x35, 0x00, 0x2a, 0x00, 0x23, 0x04, 0x75, 0x03, 0x57, 0x02, 0xf9, 
+    0x02, 0xcf, 0x01, 0xfc, 0x00, 0x6a, 0x05, 0x0a, 0x14, 0x28, 0x50, 0x1e, 0x3c, 0x02, 0x04, 0x08, 
+    0x10, 0x20, 0x40, 0x18, 0x30, 0x0c, 0x03, 0x06, 0x0c, 0x18, 0x30, 0x12, 0x24, 0x08, 0x36, 0x03, 
+    0x09, 0x06, 0x12, 0x1b, 0x24, 0x0c, 0x24, 0x02, 0x06, 0x04, 0x0c, 0x12, 0x18, 0x08, 0x12, 0x01, 
+    0x03, 0x02, 0x06, 0x09, 0x0c, 0x04, 0x98, 0x99, 0x9a, 0x9b, 0x90, 0x94, 0x94, 0x95, 0x95, 0x96, 
+    0x97, 0x98, 0x90, 0x91, 0x92, 0x92, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x95, 
+    0x95, 0x95, 0x95, 0x95, 0x95, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 
+    0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x95, 0x95, 0x94, 0x93, 0x15, 0x16, 0x16, 0x17, 0x17, 0x18, 
+    0x19, 0x19, 0x1a, 0x1a, 0x1c, 0x1d, 0x1d, 0x1e, 0x1e, 0x1f, 0x1f, 0x1f, 0x1f, 0x1e, 0x1d, 0x1c, 
+    0x1e, 0x1f, 0x1f, 0x1e, 0x1d, 0x1c, 0x1a, 0x18, 0x16, 0x14, 0xc9, 0x5a, 0xf0, 0x04, 0x8d, 0x6b, 
+    0x07, 0x60, 0xa9, 0x00, 0x60, 0xee, 0xff, 0x1e, 0x1e, 0x1f, 0x82, 0x80, 0x00, 0x80, 0xf0, 0xff, 
+    0x03, 0x0f, 0x1f, 0x1f, 0x1c, 0x24, 0x26, 0x66, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x3f, 0x7f, 
+    0xe0, 0xc0, 0x80, 0xfc, 0x80, 0xc0, 0x00, 0x20, 0x00, 0x20, 0x60, 0x00, 0xf0, 0xfc, 0xfe, 0xfe, 
+    0x60, 0x70, 0x18, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0x7f, 0x7f, 0x1f, 0x07, 0x00, 0x1e, 0x3f, 0x7f, 
+    0xfc, 0x7c, 0x00, 0x00, 0xe0, 0xf0, 0xf8, 0xf8, 0xfc, 0xfc, 0xf8, 0xc0, 0xc2, 0x67, 0x2f, 0x37, 
+    0x7f, 0x7f, 0xff, 0xff, 0x07, 0x07, 0x0f, 0x0f, 0x7f, 0x7e, 0xfc, 0xf0, 0xf8, 0xf8, 0xf0, 0x70, 
+    0xfd, 0xfe, 0xb4, 0xf8, 0xf8, 0xf9, 0xfb, 0xff, 0x37, 0x36, 0x5c, 0x00, 0x00, 0x01, 0x03, 0x1f, 
+    0x1f, 0x3f, 0xff, 0xff, 0xfc, 0x70, 0x70, 0x38, 0x08, 0x24, 0xe3, 0xf0, 0xf8, 0x70, 0x70, 0x38, 
+    0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 
+    0x00, 0x00, 0x01, 0x07, 0x0f, 0x0f, 0x0e, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x1f, 
+    0x00, 0x00, 0xf0, 0xe0, 0xc0, 0xfe, 0x40, 0x60, 0x00, 0x00, 0x00, 0x10, 0x30, 0x00, 0xf8, 0xfe, 
+    0x13, 0x33, 0x30, 0x18, 0x04, 0x0f, 0x1f, 0x1f, 0x1f, 0x3f, 0x3f, 0x1f, 0x07, 0x08, 0x17, 0x17, 
+    0x00, 0x10, 0x7e, 0x3e, 0x00, 0x00, 0xc0, 0xe0, 0xff, 0xff, 0xfe, 0xfe, 0xfc, 0xe0, 0x40, 0xa0, 
+    0x3f, 0x3f, 0x3f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x37, 0x27, 0x23, 0x03, 0x01, 0x00, 0x00, 0x00, 
+    0xf0, 0xf0, 0xf0, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xcc, 0xff, 0xff, 0xff, 0xff, 0x70, 0x00, 0x08, 
+    0xff, 0xff, 0xff, 0xfe, 0xf0, 0xc0, 0x80, 0x00, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xc0, 0x80, 0x00, 
+    0xfc, 0xfc, 0xf8, 0x78, 0x78, 0x78, 0x7e, 0x7e, 0x10, 0x60, 0x80, 0x00, 0x78, 0x78, 0x7e, 0x7e, 
+    0x00, 0x03, 0x0f, 0x1f, 0x1f, 0x1c, 0x24, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x3f, 
+    0x00, 0xe0, 0xc0, 0x80, 0xfc, 0x80, 0xc0, 0x00, 0x00, 0x00, 0x20, 0x60, 0x00, 0xf0, 0xfc, 0xfe, 
+    0x66, 0x60, 0x30, 0x18, 0x0f, 0x1f, 0x3f, 0x3f, 0x7f, 0x7f, 0x3f, 0x1f, 0x00, 0x16, 0x2f, 0x2f, 
+    0x20, 0xfc, 0x7c, 0x00, 0x00, 0xe0, 0xe0, 0xf0, 0xfe, 0xfc, 0xfc, 0xf8, 0xc0, 0x60, 0x20, 0x30, 
+    0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x1f, 0x2f, 0x2f, 0x2f, 0x0f, 0x07, 0x03, 0x00, 0x00, 
+    0xf0, 0x90, 0x00, 0x08, 0x0c, 0x1c, 0xfc, 0xf8, 0x10, 0xf0, 0xf0, 0xf0, 0xf0, 0xe0, 0xc0, 0xe0, 
+    0x0f, 0x0f, 0x07, 0x07, 0x07, 0x0f, 0x0f, 0x03, 0x01, 0x03, 0x01, 0x04, 0x07, 0x0f, 0x0f, 0x03, 
+    0xf8, 0xf0, 0xe0, 0xf0, 0xb0, 0x80, 0xe0, 0xe0, 0xf8, 0xf0, 0xe0, 0x70, 0xb0, 0x80, 0xe0, 0xe0, 
+    0x03, 0x3f, 0x7f, 0x19, 0x09, 0x09, 0x28, 0x5c, 0x00, 0x30, 0x70, 0x7f, 0xff, 0xff, 0xf7, 0xf3, 
+    0xf8, 0xe0, 0xe0, 0xfc, 0x26, 0x30, 0x80, 0x10, 0x00, 0x18, 0x10, 0x00, 0xf8, 0xf8, 0xfe, 0xff, 
+    0x3e, 0x1e, 0x3f, 0x38, 0x30, 0x30, 0x00, 0x3a, 0xe7, 0x0f, 0x0f, 0x1f, 0x1f, 0x1f, 0x0f, 0x07, 
+    0x78, 0x1e, 0x80, 0xfe, 0x7e, 0x7e, 0x7f, 0x7f, 0xff, 0xfe, 0xfc, 0xc6, 0x8e, 0xee, 0xff, 0xff, 
+    0x3c, 0x3f, 0x1f, 0x0f, 0x07, 0x3f, 0x21, 0x20, 0x03, 0x00, 0x00, 0x0e, 0x07, 0x3f, 0x3f, 0x3f, 
+    0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfc, 0x70, 0xff, 0x7f, 0x3f, 0x0e, 0xc0, 0xc0, 0xe0, 0xe0, 
+    0x0f, 0x9f, 0xcf, 0xff, 0x7f, 0x3f, 0x1e, 0x0e, 0x00, 0x80, 0xc8, 0xfe, 0x7f, 0x3f, 0x1e, 0x0e, 
+    0x20, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x00, 0x00, 0x03, 0x0f, 0x1f, 0x1f, 0x1c, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 
+    0x00, 0x04, 0xe6, 0xe0, 0xff, 0xff, 0x8f, 0x83, 0x0e, 0x1f, 0x1f, 0x1f, 0x1f, 0x03, 0xff, 0xff, 
+    0x26, 0x26, 0x60, 0x78, 0x18, 0x0f, 0x7f, 0xff, 0x3f, 0x3f, 0x7f, 0x7f, 0x1f, 0x00, 0x7e, 0xff, 
+    0x01, 0x21, 0xfe, 0x7a, 0x06, 0xfe, 0xfc, 0xfc, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xde, 0x5c, 0x6c, 
+    0xff, 0xcf, 0x87, 0x07, 0x07, 0x0f, 0x1f, 0x1f, 0xff, 0xff, 0xfe, 0xfc, 0xf8, 0xb0, 0x60, 0x00, 
+    0xf8, 0xf8, 0xf0, 0xb8, 0xf8, 0xf9, 0xfb, 0xff, 0x28, 0x30, 0x18, 0x40, 0x00, 0x01, 0x03, 0x0f, 
+    0x1f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xc0, 0x80, 0x10, 0xec, 0xe3, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 
+    0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 
+    0x13, 0x33, 0x30, 0x18, 0x04, 0x0f, 0x1f, 0x1f, 0x1f, 0x3f, 0x3f, 0x1f, 0x07, 0x09, 0x13, 0x17, 
+    0x00, 0x10, 0x7e, 0x30, 0xe0, 0xf0, 0xf0, 0xe0, 0xff, 0xff, 0xfe, 0xff, 0xfe, 0xfc, 0xf8, 0xe0, 
+    0x1f, 0x1f, 0x0f, 0x0f, 0x0f, 0x1f, 0x1f, 0x1f, 0x17, 0x17, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xf0, 0xf0, 0xf8, 0xf8, 0xb8, 0xf8, 0xf8, 0xf8, 0xd0, 0x90, 0x18, 0x08, 0x40, 0x00, 0x00, 0x00, 
+    0x3f, 0xff, 0xff, 0xff, 0xf6, 0xc6, 0x84, 0x00, 0x30, 0xf0, 0xf0, 0xf1, 0xf6, 0xc6, 0x84, 0x00, 
+    0xf0, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x1f, 0x1f, 0x3f, 0x3f, 0x1f, 0x0f, 0x0f, 0x1f, 0x1f, 0x1f, 0x3f, 0x3e, 0x7c, 0x78, 0xf0, 0xe0, 
+    0xf0, 0xf0, 0xf8, 0xf8, 0xb8, 0xf8, 0xf8, 0xf0, 0xb0, 0x90, 0x18, 0x08, 0x40, 0x00, 0x00, 0x00, 
+    0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf8, 0xf0, 0xc0, 0xe0, 0xfc, 0xfe, 0xff, 0x7f, 0x03, 0x00, 
+    0x1f, 0x1f, 0x1f, 0x3f, 0x3e, 0x3c, 0x38, 0x18, 0x00, 0x00, 0x10, 0x38, 0x3e, 0x3c, 0x38, 0x18, 
+    0x00, 0x03, 0x07, 0x07, 0x0a, 0x0b, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0f, 0x03, 
+    0x00, 0xe0, 0xfc, 0x20, 0x20, 0x10, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xfc, 0xfe, 0xfc, 0xf8, 
+    0x07, 0x07, 0x07, 0x1f, 0x1f, 0x3e, 0x21, 0x01, 0x07, 0x0f, 0x1b, 0x18, 0x10, 0x30, 0x21, 0x01, 
+    0xe0, 0xe0, 0xe0, 0xf0, 0xf0, 0xe0, 0xc0, 0xe0, 0xa8, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0xc0, 0xe0, 
+    0x07, 0x0f, 0x0e, 0x14, 0x16, 0x18, 0x00, 0x3f, 0x00, 0x00, 0x0f, 0x1f, 0x1f, 0x1f, 0x07, 0x3c, 
+    0xc0, 0xf8, 0x40, 0x40, 0x20, 0x78, 0x00, 0xc0, 0x00, 0x00, 0xe0, 0xf8, 0xfc, 0xf8, 0xf0, 0xc0, 
+    0x3f, 0x0e, 0x0f, 0x1f, 0x3f, 0x7c, 0x70, 0x38, 0xfc, 0xed, 0xc0, 0x00, 0x00, 0x60, 0x70, 0x38, 
+    0xf0, 0xf8, 0xe4, 0xfc, 0xfc, 0x7c, 0x00, 0x00, 0x7e, 0x1e, 0x04, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 
+    0x07, 0x0f, 0x0e, 0x14, 0x16, 0x18, 0x00, 0x0f, 0x00, 0x00, 0x0f, 0x1f, 0x1f, 0x1f, 0x07, 0x0d, 
+    0x1f, 0x1f, 0x1f, 0x1c, 0x0c, 0x07, 0x07, 0x07, 0x1e, 0x1c, 0x1e, 0x0f, 0x07, 0x00, 0x07, 0x07, 
+    0xe0, 0x60, 0xf0, 0x70, 0xe0, 0xe0, 0xf0, 0x80, 0x60, 0x90, 0x00, 0x80, 0x00, 0xe0, 0xf0, 0x80, 
+    0x07, 0x1f, 0x3f, 0x12, 0x13, 0x08, 0x1f, 0x31, 0x00, 0x10, 0x3f, 0x7f, 0x7f, 0x3f, 0x03, 0x0f, 
+    0xc0, 0xf0, 0x40, 0x00, 0x30, 0x18, 0xc0, 0xf8, 0x00, 0x00, 0xe0, 0xf8, 0xfc, 0xf8, 0xb0, 0x38, 
+    0x31, 0x39, 0x1f, 0x1f, 0x0f, 0x5f, 0x7e, 0x3c, 0x1f, 0x07, 0x00, 0x0e, 0x0f, 0x53, 0x7c, 0x3c, 
+    0xf8, 0xf8, 0xf0, 0xe0, 0xe0, 0xc0, 0x00, 0x00, 0xf8, 0xf8, 0xf0, 0x00, 0x00, 0x80, 0x00, 0x00, 
+    0x00, 0xe0, 0xfc, 0x27, 0x27, 0x11, 0x3e, 0x04, 0x07, 0x07, 0x03, 0xf7, 0xff, 0xff, 0xfe, 0xfc, 
+    0x3f, 0x7f, 0x3f, 0x0f, 0x1f, 0x3f, 0x7f, 0x4f, 0x3e, 0x7f, 0xff, 0xe2, 0x50, 0x38, 0x70, 0x40, 
+    0xf8, 0xf9, 0xf9, 0xb7, 0xff, 0xff, 0xe0, 0x00, 0xe8, 0x71, 0x01, 0x4b, 0x03, 0x03, 0x00, 0x00, 
+    0x07, 0x07, 0x0f, 0x3f, 0x3f, 0x3f, 0x26, 0x04, 0x05, 0x03, 0x01, 0x30, 0x30, 0x30, 0x26, 0x04, 
+    0xf0, 0xf0, 0xf0, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0xfe, 0xfc, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x07, 0x07, 0x0f, 0x1f, 0x3f, 0x0f, 0x1c, 0x18, 0x05, 0x03, 0x01, 0x10, 0x30, 0x0c, 0x1c, 0x18, 
+    0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0xc0, 0xe0, 0xf0, 0x78, 0x18, 0x08, 0x00, 0x00, 
+    0x07, 0x0f, 0x1f, 0x0f, 0x3f, 0x0f, 0x1c, 0x18, 0x07, 0x0f, 0x3e, 0x7c, 0x30, 0x0c, 0x1c, 0x18, 
+    0xe0, 0xe0, 0xe0, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x60, 0x60, 0x60, 0x80, 0x00, 0x00, 0x00, 0x00, 
+    0x7f, 0xff, 0xff, 0xfb, 0x0f, 0x0f, 0x0f, 0x1f, 0x73, 0xf3, 0xf0, 0xf4, 0xf0, 0xf0, 0x70, 0x60, 
+    0x3f, 0x7e, 0x7c, 0x7c, 0x3c, 0x3c, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0xfc, 0xfc, 
+    0x60, 0x70, 0x18, 0x08, 0x0f, 0x1f, 0x3f, 0x7f, 0x7f, 0x7f, 0x1f, 0x07, 0x0b, 0x1b, 0x3b, 0x7b, 
+    0xfc, 0x7c, 0x00, 0x20, 0xf0, 0xf8, 0xfc, 0xfe, 0xfc, 0xfc, 0xf8, 0xe0, 0xd0, 0xd8, 0xdc, 0xde, 
+    0x0b, 0x0f, 0x1f, 0x1e, 0x3c, 0x3c, 0x3c, 0x7c, 0xc4, 0xe0, 0xe0, 0x40, 0x00, 0x3c, 0x3c, 0x7c, 
+    0x1f, 0x3f, 0x0d, 0x07, 0x0f, 0x0e, 0x1c, 0x3c, 0x1d, 0x3c, 0x3a, 0x38, 0x30, 0x00, 0x1c, 0x3c, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x55, 0x55, 0x55, 0x55, 0x55, 0x77, 0x22, 
+    0x00, 0x07, 0x1f, 0xff, 0x07, 0x1f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x76, 0x00, 0x00, 0xcf, 0x07, 0x7f, 0x00, 0x00, 0x00, 
+    0x20, 0xf8, 0xff, 0xc3, 0xfd, 0xfe, 0xf0, 0x40, 0x00, 0x00, 0x3c, 0xfc, 0xfe, 0xe0, 0x00, 0x00, 
+    0x40, 0xe0, 0x40, 0x40, 0x41, 0x41, 0x4f, 0x47, 0x40, 0xe0, 0x40, 0x3f, 0x3e, 0x3e, 0x30, 0x38, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0xf8, 0x18, 0x38, 
+    0x43, 0x46, 0x44, 0x40, 0x40, 0x40, 0x40, 0x40, 0x3c, 0x39, 0x3b, 0x3f, 0x00, 0x00, 0x00, 0x00, 
+    0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x38, 0xb8, 0xf8, 0x00, 0x00, 0x00, 0x00, 
+    0x31, 0x30, 0x38, 0x7c, 0x7f, 0xff, 0xff, 0xfb, 0x3f, 0x3f, 0x0f, 0x77, 0x77, 0xf7, 0xf7, 0xf7, 
+    0x10, 0x7e, 0x3e, 0x00, 0x1e, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfa, 0xfa, 0xf3, 0xe7, 
+    0xff, 0xff, 0xe3, 0xc3, 0x87, 0x48, 0x3c, 0xfc, 0xf0, 0xf8, 0xfc, 0x7c, 0x78, 0x38, 0x3c, 0xfc, 
+    0x00, 0xff, 0xc3, 0x83, 0x83, 0xff, 0xff, 0xff, 0xff, 0x00, 0xc3, 0x81, 0x81, 0xc3, 0xff, 0x00, 
+    0x1f, 0x1f, 0x0f, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xf0, 0xfb, 0xff, 0xff, 0xfe, 0x3e, 0x0c, 0x04, 0x00, 0x0b, 0x1f, 0x1f, 0x1e, 0x3e, 0x0c, 0x04, 
+    0x1f, 0x1f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xfb, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 
+    0x00, 0x18, 0x3c, 0x7e, 0x6e, 0xdf, 0xdf, 0xdf, 0x00, 0x18, 0x3c, 0x7e, 0x76, 0xfb, 0xfb, 0xfb, 
+    0x00, 0x18, 0x18, 0x3c, 0x3c, 0x3c, 0x3c, 0x1c, 0x00, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 
+    0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 
+    0x00, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x10, 0x10, 0x38, 0x38, 0x38, 0x38, 0x38, 
+    0x3c, 0x7e, 0x77, 0xfb, 0x9f, 0x5f, 0x8e, 0x20, 0x00, 0x18, 0x3c, 0x0e, 0x0e, 0x04, 0x00, 0x00, 
+    0x5c, 0x2e, 0x8f, 0x3f, 0x7b, 0x77, 0x7e, 0x3c, 0x00, 0x00, 0x04, 0x06, 0x1e, 0x3c, 0x18, 0x00, 
+    0x13, 0x4f, 0x3f, 0xbf, 0x3f, 0x7a, 0xf8, 0xf8, 0x00, 0x00, 0x01, 0x0a, 0x17, 0x0f, 0x2f, 0x1f, 
+    0x00, 0x08, 0x05, 0x0f, 0x2f, 0x1d, 0x1c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x05, 0x07, 0x0f, 0x07, 
+    0x00, 0x00, 0x00, 0x00, 0x02, 0x0b, 0x07, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0x00, 0x60, 0xf0, 0xf8, 0x7c, 0x3e, 0x7e, 0x7f, 
+    0x02, 0x02, 0x02, 0x05, 0x71, 0x7f, 0x7f, 0x7f, 0x3f, 0x5f, 0x7f, 0x3e, 0x0e, 0x0a, 0x51, 0x20, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x1f, 
+    0x02, 0x02, 0x00, 0x01, 0x13, 0x3f, 0x7f, 0x7f, 0x3f, 0x7f, 0x7f, 0xfe, 0xec, 0xca, 0x51, 0x20, 
+    0x00, 0x40, 0x60, 0x70, 0x73, 0x27, 0x0f, 0x1f, 0x00, 0x40, 0x63, 0x77, 0x7c, 0x38, 0xf8, 0xe4, 
+    0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0f, 0x1f, 0x00, 0x00, 0x03, 0x07, 0x0c, 0x18, 0xf8, 0xe4, 
+    0x7f, 0x7f, 0x3f, 0x3f, 0x1f, 0x1f, 0x0f, 0x07, 0x03, 0x44, 0x28, 0x10, 0x08, 0x04, 0x03, 0x04, 
+    0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x77, 0x77, 0xf5, 0x03, 0x07, 0x0f, 0x1f, 0x27, 0x7b, 0x78, 0xfb, 
+    0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xee, 0xee, 0xaf, 0xc0, 0xe0, 0xf0, 0xf8, 0xe4, 0xde, 0x1e, 0xdf, 
+    0xf1, 0xff, 0x78, 0x00, 0x00, 0x18, 0x1c, 0x0e, 0xff, 0xff, 0x7f, 0x0f, 0x0f, 0x07, 0x03, 0x00, 
+    0x8f, 0xff, 0x1e, 0x00, 0x0c, 0x3e, 0x7e, 0x7c, 0xff, 0xff, 0xfe, 0xf0, 0xf0, 0xc0, 0x80, 0x00, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x24, 0x24, 0x18, 0x00, 0x00, 
+    0x00, 0x02, 0x41, 0x41, 0x61, 0x33, 0x06, 0x3c, 0x3c, 0x7e, 0xff, 0xff, 0xff, 0xff, 0x7e, 0x3c, 
+    0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0x7f, 0xff, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x63, 0x41, 0xc1, 
+    0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xfe, 0xff, 0xc0, 0x80, 0x00, 0x00, 0x8c, 0xfe, 0xfe, 0xf3, 
+    0xff, 0xff, 0xff, 0x78, 0x00, 0x00, 0x00, 0x00, 0xc1, 0xe3, 0xff, 0x47, 0x0f, 0x0f, 0x0f, 0x07, 
+    0xff, 0xff, 0xff, 0x1e, 0x00, 0x20, 0x20, 0x40, 0xf1, 0xf9, 0xff, 0xe2, 0xf0, 0xf0, 0xf0, 0xe0, 
+    0x16, 0x1f, 0x3f, 0x7f, 0x3d, 0x1d, 0x3f, 0x1f, 0x16, 0x1f, 0x00, 0x00, 0x05, 0x0d, 0x3f, 0x1f, 
+    0x80, 0x80, 0xc0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf8, 0x80, 0x80, 0x00, 0x00, 0x00, 0xa0, 0xa0, 0xe0, 
+    0x3c, 0xfa, 0xb1, 0x72, 0xf2, 0xdb, 0xdf, 0x5f, 0x00, 0x04, 0x4e, 0x8c, 0x0c, 0x7f, 0xff, 0xff, 
+    0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x06, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x7f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 
+    0x00, 0x7c, 0xd6, 0x92, 0xba, 0xee, 0xfe, 0x38, 0xff, 0x83, 0x29, 0x6d, 0x45, 0x11, 0x01, 0xc7, 
+    0x00, 0x15, 0x3f, 0x62, 0x5f, 0xff, 0x9f, 0x7d, 0x08, 0x08, 0x02, 0x1f, 0x22, 0x02, 0x02, 0x00, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 
+    0x2f, 0x1e, 0x2f, 0x2f, 0x2f, 0x15, 0x0d, 0x0e, 0x10, 0x1e, 0x10, 0x50, 0x10, 0x08, 0x00, 0x00, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 
+    0x1c, 0x3e, 0x7f, 0xff, 0xff, 0xfe, 0x7c, 0x38, 0x1c, 0x2a, 0x77, 0xee, 0xdd, 0xaa, 0x74, 0x28, 
+    0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0x00, 0xef, 0xef, 0xef, 0x00, 
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0x00, 0xef, 0xef, 0xef, 0x00, 
+    0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x7f, 0x5f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 
+    0x68, 0x4e, 0xe0, 0xe0, 0xe0, 0xf0, 0xf8, 0xfc, 0xb8, 0x9e, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0x7c, 
+    0x3f, 0x5c, 0x39, 0x3b, 0xbb, 0xf9, 0xfc, 0xfe, 0x00, 0x23, 0x57, 0x4f, 0x57, 0x27, 0xc3, 0x21, 
+    0xc0, 0xf0, 0xf0, 0xf0, 0xf0, 0xe0, 0xc0, 0x00, 0x00, 0x30, 0x70, 0x70, 0xf0, 0xe0, 0xc0, 0x00, 
+    0xfe, 0xfc, 0x61, 0x0f, 0xff, 0xfe, 0xf0, 0xe0, 0x13, 0x0f, 0x1e, 0xf0, 0xfc, 0xf8, 0xf0, 0xe0, 
+    0x6e, 0x40, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xbe, 0x90, 0x80, 0xc0, 0xc0, 0x80, 0x00, 0x00, 
+    0x01, 0x01, 0x03, 0x03, 0x07, 0x7f, 0x7f, 0x3f, 0x01, 0x01, 0x03, 0x03, 0x07, 0x7f, 0x7d, 0x3d, 
+    0x06, 0x07, 0x3f, 0x3c, 0x19, 0x7b, 0x7f, 0x3f, 0x06, 0x04, 0x30, 0x23, 0x06, 0x64, 0x60, 0x00, 
+    0x3f, 0x7f, 0x7f, 0x1f, 0x3f, 0x3f, 0x07, 0x06, 0x00, 0x60, 0x60, 0x00, 0x20, 0x30, 0x04, 0x06, 
+    0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x03, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xf8, 0xf8, 0xf8, 0xa0, 0xe1, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0x40, 0x01, 0x03, 0x03, 0x03, 
+    0x0f, 0x0f, 0x0f, 0x1f, 0x1f, 0x1f, 0x0f, 0x07, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xe0, 0xf8, 0xf8, 0xf8, 0xff, 0xfe, 0xf0, 0xc0, 0xe0, 0xfe, 0xff, 0x7f, 0x03, 0x02, 0x00, 0x00, 
+    0x01, 0x0f, 0x0f, 0x1f, 0x39, 0x33, 0x37, 0x7f, 0x01, 0x0d, 0x08, 0x00, 0x36, 0x2c, 0x08, 0x60, 
+    0x7f, 0x3f, 0x3f, 0x3f, 0x1f, 0x0f, 0x0f, 0x01, 0x60, 0x00, 0x20, 0x30, 0x00, 0x08, 0x0d, 0x01, 
+    0x00, 0x00, 0x03, 0x03, 0x47, 0x67, 0x77, 0x77, 0x01, 0x01, 0x03, 0x43, 0x67, 0x77, 0x7b, 0x78, 
+    0x00, 0x00, 0x00, 0x00, 0x88, 0x98, 0xf8, 0xf0, 0x00, 0x00, 0x80, 0x84, 0xcc, 0xdc, 0xbc, 0x3c, 
+    0x7e, 0x7f, 0xff, 0x1f, 0x07, 0x30, 0x1c, 0x0c, 0x33, 0x07, 0x07, 0xe3, 0x38, 0x3f, 0x1c, 0x0c, 
+    0x7e, 0x38, 0xf6, 0xed, 0xdf, 0x38, 0x70, 0x60, 0x98, 0xc7, 0xc8, 0x92, 0x30, 0xf8, 0x70, 0x60, 
+    0x00, 0x00, 0x00, 0x03, 0x03, 0x47, 0x67, 0x77, 0x00, 0x01, 0x01, 0x03, 0x43, 0x67, 0x77, 0x7b, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x98, 0xf8, 0x00, 0x00, 0x00, 0x80, 0x84, 0xcc, 0xdc, 0xbc, 
+    0x77, 0x7e, 0x7f, 0xff, 0x1f, 0x07, 0x70, 0xf0, 0x78, 0x33, 0x07, 0x07, 0xe3, 0x38, 0x7f, 0xf0, 
+    0xf0, 0x7e, 0x38, 0xf6, 0xed, 0xdf, 0x38, 0x3c, 0x3c, 0x98, 0xc7, 0xc8, 0x92, 0x30, 0xf8, 0x3c, 
+    0x03, 0x07, 0x0a, 0x1a, 0x1c, 0x1e, 0x0b, 0x08, 0x00, 0x10, 0x7f, 0x7f, 0x7f, 0x1f, 0x0f, 0x0f, 
+    0x1c, 0x3f, 0x3f, 0x3d, 0x3f, 0x1f, 0x00, 0x00, 0x03, 0x33, 0x39, 0x3a, 0x38, 0x18, 0x00, 0x00, 
+    0x00, 0x00, 0x04, 0x4c, 0x4e, 0x4e, 0x46, 0x6f, 0x10, 0x38, 0x3c, 0x74, 0x76, 0x76, 0x7e, 0x7d, 
+    0x00, 0x1f, 0x3f, 0x3f, 0x4f, 0x5f, 0x7f, 0x7f, 0x00, 0x00, 0x11, 0x0a, 0x34, 0x2a, 0x51, 0x20, 
+    0x7f, 0x67, 0xa3, 0xb0, 0xd8, 0xde, 0xdc, 0xc8, 0x7f, 0x67, 0x63, 0x70, 0x38, 0x3e, 0x7c, 0xb8, 
+    0x7f, 0x7f, 0x7f, 0x1f, 0x47, 0x70, 0x70, 0x39, 0x51, 0x0a, 0x04, 0xea, 0x79, 0x7f, 0x70, 0x39, 
+    0xe8, 0xe8, 0xe0, 0xc0, 0x10, 0x70, 0xe0, 0xc0, 0x58, 0x38, 0x10, 0x30, 0xf0, 0xf0, 0xe0, 0xc0, 
+    0x00, 0x00, 0x00, 0x20, 0x66, 0x66, 0x66, 0x62, 0x00, 0x08, 0x1c, 0x3c, 0x7a, 0x7a, 0x7a, 0x7e, 
+    0x00, 0x00, 0x1f, 0x3f, 0x7f, 0x4f, 0x5f, 0x7f, 0x00, 0x00, 0x00, 0x11, 0x0a, 0x34, 0x2a, 0x51, 
+    0x77, 0x7f, 0x3f, 0xb7, 0xb3, 0xdb, 0xda, 0xd8, 0x7f, 0x7d, 0x3f, 0x37, 0x33, 0x3b, 0x3a, 0x78, 
+    0x7f, 0x7f, 0x7f, 0x7f, 0x1f, 0x07, 0x70, 0xf0, 0x20, 0x51, 0x0a, 0x04, 0xea, 0x39, 0x7f, 0xf0, 
+    0xcc, 0xe8, 0xe8, 0xe0, 0xc0, 0x18, 0x7c, 0x3e, 0xbc, 0x58, 0x38, 0x10, 0x30, 0xf8, 0xfc, 0x3e, 
+    0x03, 0x0f, 0x1f, 0x3f, 0x3b, 0x3f, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x06, 0x0e, 0x0c, 0x00, 0x00, 
+    0x80, 0xf0, 0xf8, 0xfc, 0xfe, 0xfe, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x18, 
+    0x7f, 0x7f, 0x7f, 0x7f, 0xff, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x3e, 0x3b, 0x18, 
+    0xfe, 0xfb, 0xff, 0xff, 0xf6, 0xe0, 0xc0, 0x00, 0x10, 0x14, 0x10, 0x10, 0x38, 0x78, 0xf8, 0x30, 
+    0x00, 0x03, 0x0f, 0x1f, 0x3f, 0x3b, 0x3f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0e, 0x0c, 0x00, 
+    0x00, 0xc0, 0xf0, 0xf8, 0xfc, 0xfe, 0xfe, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 
+    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0xff, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7e, 0xf3, 
+    0xfe, 0xfe, 0xfb, 0xff, 0xff, 0xf6, 0xe0, 0xc0, 0x18, 0x10, 0x14, 0x10, 0x10, 0x38, 0x7c, 0xde, 
+    0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x08, 0x00, 0x0d, 0x1e, 0x1e, 0x1e, 0x1f, 0x0f, 0x07, 
+    0x78, 0xf0, 0xf8, 0xe4, 0xc0, 0xca, 0xca, 0xc0, 0x78, 0xf0, 0x00, 0x1a, 0x3f, 0x35, 0x35, 0x3f, 
+    0x0f, 0x1f, 0x9f, 0xff, 0xff, 0x7f, 0x74, 0x20, 0x00, 0x00, 0x80, 0xe0, 0xe0, 0x70, 0x73, 0x21, 
+    0xe4, 0xff, 0xfe, 0xfc, 0x9c, 0x1e, 0x00, 0x00, 0x1a, 0x07, 0x0c, 0x18, 0x78, 0xfe, 0xfc, 0xf0, 
+    0x00, 0x01, 0x03, 0x03, 0x07, 0x03, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x38, 0x7c, 0x7e, 0x3f, 
+    0x00, 0x5f, 0x7f, 0x7f, 0x3f, 0x3f, 0x14, 0x00, 0x3f, 0x40, 0x60, 0x60, 0x20, 0x30, 0x13, 0x01, 
+    0xc0, 0xe0, 0xf0, 0x30, 0x38, 0x3c, 0x3c, 0xfc, 0xc0, 0xe0, 0x30, 0xd0, 0xd0, 0xd0, 0xd0, 0x00, 
+    0x07, 0x0f, 0x1f, 0x22, 0x20, 0x25, 0x25, 0x1f, 0x07, 0x0f, 0x02, 0x1d, 0x1f, 0x1a, 0x1a, 0x02, 
+    0xfe, 0xfe, 0x7e, 0x3a, 0x02, 0x01, 0x41, 0x41, 0x38, 0x7c, 0xfc, 0xfc, 0xfc, 0xfe, 0xbe, 0xbe, 
+    0x1f, 0x3f, 0x7e, 0x5c, 0x40, 0x80, 0x82, 0x82, 0x1c, 0x3e, 0x3f, 0x3f, 0x3f, 0x7f, 0x7d, 0x7d, 
+    0x82, 0x80, 0xa0, 0x44, 0x43, 0x40, 0x21, 0x1e, 0x7d, 0x7f, 0x5f, 0x3b, 0x3c, 0x3f, 0x1e, 0x00, 
+    0x1c, 0x3f, 0x3e, 0x3c, 0x40, 0x80, 0x82, 0x82, 0x1c, 0x3e, 0x3f, 0x1f, 0x3f, 0x7f, 0x7d, 0x7d, 
+    0x00, 0x00, 0x80, 0x80, 0x92, 0x9d, 0xc7, 0xef, 0x00, 0x00, 0x00, 0x60, 0x62, 0x65, 0x3f, 0x1f, 
+    0x00, 0x23, 0x33, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x70, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x02, 0x07, 
+    0xfe, 0xf8, 0xa0, 0x00, 0x00, 0x00, 0x80, 0x80, 0xcf, 0x7a, 0x5a, 0x10, 0x00, 0x00, 0xc0, 0x80, 
+    0x7e, 0x7f, 0x7d, 0x3f, 0x1e, 0x8f, 0x8f, 0x19, 0x85, 0x84, 0x86, 0xc6, 0xe7, 0x73, 0x73, 0xe1, 
+    0xe0, 0x0e, 0x73, 0xf3, 0xf9, 0xf9, 0xf8, 0x70, 0x80, 0x4e, 0x77, 0xf3, 0xfb, 0xf9, 0xfa, 0x78, 
+    0x0e, 0x66, 0xe2, 0xf6, 0xff, 0xff, 0x1f, 0x98, 0x11, 0x39, 0x7d, 0x39, 0x00, 0x00, 0xe0, 0xe7, 
+    0x00, 0x00, 0x00, 0x04, 0x0f, 0x0f, 0x1f, 0x07, 0x00, 0x00, 0x07, 0x07, 0x16, 0x10, 0x00, 0x38, 
+    0xf3, 0xe7, 0xee, 0xec, 0xcd, 0xcf, 0xcf, 0xdf, 0xcf, 0x1f, 0x17, 0x10, 0x33, 0x30, 0x30, 0x20, 
+    0x27, 0x3f, 0x3f, 0x78, 0x3c, 0x1f, 0x1f, 0x73, 0x38, 0x30, 0x40, 0xc7, 0x07, 0x66, 0xe0, 0x6c, 
+    0x9f, 0x3e, 0x7c, 0xfc, 0xf8, 0xf8, 0xc0, 0x40, 0x60, 0xc0, 0x80, 0x04, 0x9e, 0xff, 0xf0, 0xf8, 
+    0x7f, 0x7e, 0x78, 0x01, 0x07, 0x1f, 0x3c, 0x7c, 0x24, 0x01, 0x07, 0xfe, 0xff, 0x7f, 0x3f, 0x7f, 
+    0xfc, 0xf8, 0xa0, 0xfe, 0xfc, 0xf0, 0x80, 0x00, 0xcf, 0x7a, 0x0a, 0xfe, 0xfc, 0x00, 0x00, 0x00, 
+    0x7e, 0x7f, 0x7f, 0x3f, 0x1f, 0x8f, 0x8f, 0x18, 0x85, 0x86, 0x83, 0xc3, 0xe1, 0x70, 0x70, 0xe0, 
+    0x9f, 0x3e, 0x7c, 0xf8, 0xf8, 0x3c, 0x18, 0xf8, 0x60, 0xc0, 0x80, 0x00, 0x98, 0xfc, 0xfe, 0xff, 
+    0x7f, 0x7f, 0x78, 0x01, 0x07, 0x13, 0xf1, 0x03, 0x24, 0x00, 0x07, 0xfe, 0xff, 0x7f, 0xff, 0x03, 
+    0x00, 0x00, 0x1c, 0x1d, 0x1b, 0xc3, 0xe3, 0xe1, 0x03, 0x0f, 0x23, 0x62, 0x64, 0x3c, 0x1c, 0x1e, 
+    0xe0, 0xcd, 0x1d, 0x4f, 0xee, 0xff, 0x3f, 0x3f, 0x1f, 0x3d, 0x6d, 0x4f, 0xee, 0xf3, 0x20, 0x03, 
+    0x3f, 0x3f, 0x00, 0x00, 0x70, 0xb8, 0xfc, 0xfc, 0x07, 0x07, 0x1f, 0x3f, 0x0f, 0x47, 0x03, 0x00, 
+    0x07, 0x0f, 0x1f, 0x3f, 0x3e, 0x7c, 0x78, 0x78, 0x00, 0x00, 0x03, 0x07, 0x0f, 0x0f, 0x1f, 0x1f, 
+    0x3f, 0x5c, 0x39, 0x3b, 0xbf, 0xff, 0xfe, 0xfe, 0x00, 0x23, 0x57, 0x4f, 0x57, 0x2f, 0xdf, 0x21, 
+    0xc0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 
+    0xfe, 0xfc, 0x61, 0x0f, 0x7f, 0x3f, 0x1f, 0x1e, 0x23, 0x0f, 0x1e, 0xf0, 0x1c, 0x3f, 0x1f, 0x1e, 
+    0xf0, 0x78, 0xe4, 0xc8, 0xcc, 0xbe, 0xbe, 0x3e, 0x00, 0x80, 0x18, 0x30, 0x34, 0xfe, 0xfe, 0xfe, 
+    0x00, 0x01, 0x00, 0x07, 0x07, 0x07, 0x07, 0x1f, 0x00, 0x00, 0x01, 0x04, 0x06, 0x06, 0x07, 0x07, 
+    0x00, 0x00, 0x0f, 0x3f, 0x3f, 0x0f, 0x00, 0x00, 0x0f, 0x3f, 0x7f, 0xf8, 0xf8, 0x7f, 0x3f, 0x0f, 
+    0x78, 0x7c, 0x7e, 0x7f, 0x3f, 0x3f, 0x1b, 0x09, 0x1f, 0x1f, 0x1f, 0x0b, 0x01, 0x01, 0x00, 0x00, 
+    0x0c, 0x00, 0x00, 0x00, 0x07, 0x7f, 0x7c, 0x00, 0x03, 0x1f, 0x3f, 0x3f, 0x78, 0x00, 0x03, 0xff, 
+    0x01, 0xe1, 0x71, 0x79, 0x3d, 0x3d, 0x1f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x3f, 0x3f, 0x1f, 0x1b, 0x36, 0x30, 0x7f, 0x3f, 0x23, 0x27, 0x1f, 0x07, 0x0f, 0x1f, 0x7f, 0x3f, 
+    0xf8, 0xf8, 0xf8, 0xb8, 0x18, 0xd8, 0xd8, 0xb8, 0xe0, 0x80, 0x80, 0x40, 0xe0, 0xe0, 0xe0, 0xc0, 
+    0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff, 0x1f, 
+    0x00, 0x0f, 0x13, 0x0d, 0x0d, 0x13, 0x0c, 0x20, 0x1f, 0x10, 0x0c, 0x12, 0x12, 0x2c, 0x3f, 0x3f, 
+    0x00, 0x24, 0x00, 0x24, 0x00, 0x04, 0x00, 0x00, 0x37, 0x36, 0x36, 0x36, 0x16, 0x16, 0x12, 0x02, 
+    0x0f, 0x41, 0x00, 0x88, 0x00, 0x44, 0x00, 0x00, 0x10, 0x7e, 0xff, 0xff, 0xf6, 0x76, 0x3a, 0x1a, 
+    0x38, 0x7c, 0xfe, 0xfe, 0x3b, 0x03, 0x03, 0x03, 0x00, 0x00, 0x38, 0x04, 0x00, 0x00, 0x00, 0x00, 
+    0x03, 0x33, 0x7b, 0x7f, 0xff, 0xfb, 0x03, 0x03, 0x00, 0x00, 0x00, 0x38, 0x40, 0x00, 0x00, 0x00, 
+    0xdc, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0xfc, 0xa0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 
+    0x3f, 0x5f, 0x3f, 0x3f, 0xbb, 0xf8, 0xfe, 0xfe, 0x07, 0x27, 0x57, 0x4f, 0x57, 0x27, 0xc1, 0x21, 
+    0x1f, 0x0f, 0x0f, 0x1f, 0x1f, 0x1e, 0x38, 0x30, 0x1d, 0x0f, 0x0f, 0x1f, 0x1f, 0x1e, 0x38, 0x30, 
+    0x00, 0x20, 0x60, 0x60, 0x70, 0xf0, 0xf8, 0xf8, 0x00, 0x00, 0x38, 0x10, 0x4c, 0x18, 0x86, 0x24, 
+    0xf8, 0xfc, 0xfc, 0x7e, 0x7e, 0x3e, 0x1f, 0x07, 0x00, 0x42, 0x0a, 0x40, 0x10, 0x02, 0x08, 0x02, 
+    0x00, 0xc0, 0x70, 0xb8, 0xf4, 0xf2, 0xf5, 0x7b, 0x00, 0x00, 0x80, 0x40, 0x08, 0x0c, 0x0a, 0x84, 
+    0x00, 0xdf, 0x10, 0xff, 0xdf, 0xff, 0xff, 0xf9, 0x00, 0x00, 0xcf, 0x20, 0x20, 0x20, 0x26, 0x2e, 
+    0x1f, 0x1f, 0x3e, 0xfc, 0xf8, 0xf0, 0xc0, 0x00, 0xe0, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xf8, 0xfc, 0xfe, 0xff, 0xff, 0xdf, 0xdf, 0x00, 0x2f, 0x23, 0x21, 0x20, 0x20, 0x00, 0x00, 0x00, 
+    0xc1, 0xf1, 0x79, 0x7d, 0x3d, 0x3f, 0x1f, 0x03, 0xc1, 0xb1, 0x59, 0x6d, 0x35, 0x3b, 0x1f, 0x03, 
+    0x02, 0x06, 0x0e, 0x0e, 0x1e, 0x1e, 0x3e, 0x3e, 0x00, 0x02, 0x00, 0x08, 0x02, 0x00, 0x28, 0x00, 
+    0x3e, 0x3e, 0x3e, 0x3e, 0x1e, 0x1e, 0x0e, 0x02, 0x04, 0x10, 0x02, 0x10, 0x04, 0x00, 0x0a, 0x00, 
+    0xc1, 0xf1, 0x79, 0x7d, 0x3d, 0x3f, 0x1f, 0x03, 0xc1, 0xb1, 0x59, 0x6d, 0x35, 0x3b, 0x1f, 0x03, 
+    0x7c, 0x00, 0x00, 0xff, 0xc3, 0x7f, 0x1f, 0x03, 0x00, 0x0f, 0x1f, 0xff, 0xfc, 0x63, 0x1f, 0x03, 
+    0xff, 0xff, 0x7c, 0x00, 0x00, 0x7c, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 
+    0xff, 0xff, 0x00, 0x04, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x00, 0x06, 0x06, 0x0c, 0x18, 0x70, 0x60, 
+    0xff, 0xff, 0x00, 0x04, 0x04, 0x04, 0x08, 0x08, 0x00, 0x00, 0x06, 0x06, 0x04, 0x04, 0x08, 0x08, 
+    0x08, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x08, 0x08, 0x10, 0x30, 0x30, 0x30, 0x30, 0x10, 0x08, 
+    0x7f, 0x3f, 0x3f, 0x3e, 0x1f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 
+    0x03, 0x0f, 0xff, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x03, 0x0e, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x65, 0x25, 0x25, 0x25, 0x25, 0x77, 0x72, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x95, 0x15, 0x25, 0x45, 0x85, 0xf7, 0xf2, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0xa5, 0xa5, 0xa5, 0xf5, 0xf5, 0x27, 0x22, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x85, 0x85, 0xe5, 0x15, 0x15, 0xf7, 0xe2, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x95, 0x55, 0x65, 0xb5, 0x95, 0x97, 0x62, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x50, 0x50, 0x50, 0x50, 0x50, 0x70, 0x20, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0xe6, 0x66, 0x66, 0x66, 0x67, 0xf3, 0x00, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x59, 0x59, 0x59, 0x5e, 0xd8, 0x98, 0x00, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x00, 
+    0x38, 0x4c, 0xc6, 0xc6, 0xc6, 0x64, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x18, 0x38, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x7c, 0xc6, 0x0e, 0x3c, 0x78, 0xe0, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x7e, 0x0c, 0x18, 0x3c, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x1c, 0x3c, 0x6c, 0xcc, 0xfe, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xfc, 0xc0, 0xfc, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x3c, 0x60, 0xc0, 0xfc, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xfe, 0xc6, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x7c, 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x7c, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xfc, 0xc6, 0xc6, 0xfc, 0xc6, 0xc6, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x3c, 0x66, 0xc0, 0xc0, 0xc0, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xf8, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xfe, 0xc0, 0xc0, 0xfc, 0xc0, 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xfe, 0xc0, 0xc0, 0xfc, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x3e, 0x60, 0xc0, 0xce, 0xc6, 0x66, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x1e, 0x06, 0x06, 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xc6, 0xcc, 0xd8, 0xf0, 0xf8, 0xdc, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xfc, 0xc6, 0xc6, 0xc6, 0xfc, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x7c, 0xc6, 0xc6, 0xc6, 0xde, 0xcc, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xfc, 0xc6, 0xc6, 0xce, 0xf8, 0xdc, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x78, 0xcc, 0xc0, 0x7c, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xc6, 0xc6, 0xc6, 0xee, 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xc6, 0xc6, 0xd6, 0xfe, 0xfe, 0xee, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xc6, 0xee, 0x7c, 0x38, 0x7c, 0xee, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x66, 0x66, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xfe, 0x0e, 0x1c, 0x38, 0x70, 0xe0, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x00, 0x00, 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 
+    0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xff, 0x7f, 0x7f, 0x7f, 0x7f, 0xff, 0xe3, 0xc1, 0xff, 0x80, 0x80, 0x80, 0x80, 0x00, 0x1c, 0x3e, 
+    0x80, 0x80, 0x80, 0xc1, 0xe3, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x7f, 0x3e, 0x1c, 0x00, 0x00, 0xff, 
+    0x38, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x38, 0x00, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x00, 
+    0x03, 0x06, 0x0c, 0x0c, 0x08, 0x08, 0x04, 0x03, 0x03, 0x05, 0x0b, 0x0b, 0x0f, 0x0f, 0x07, 0x03, 
+    0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x38, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3f, 0xff, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfc, 0xff, 
+    0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, 
+    0x04, 0x0e, 0x0e, 0x0e, 0x6e, 0x64, 0x60, 0x60, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0x07, 0x0f, 0x1f, 0x1f, 0x7f, 0xff, 0xff, 0x7f, 0x07, 0x08, 0x10, 0x00, 0x60, 0x80, 0x80, 0x40, 
+    0x03, 0x07, 0x1f, 0x3f, 0x3f, 0x3f, 0x79, 0xf7, 0x03, 0x04, 0x18, 0x20, 0x20, 0x20, 0x46, 0x88, 
+    0xc0, 0xe0, 0xf0, 0xf4, 0xfe, 0xbf, 0xdf, 0xff, 0xc0, 0x20, 0x10, 0x14, 0x0a, 0x41, 0x21, 0x01, 
+    0x90, 0xb8, 0xf8, 0xfa, 0xff, 0xff, 0xff, 0xfe, 0x90, 0xa8, 0x48, 0x0a, 0x05, 0x01, 0x01, 0x02, 
+    0x3b, 0x1d, 0x0e, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x24, 0x12, 0x09, 0x08, 0x07, 0x00, 0x00, 0x00, 
+    0xff, 0xbf, 0x1c, 0xc0, 0xf3, 0xff, 0x7e, 0x1c, 0x00, 0x40, 0xe3, 0x3f, 0x0c, 0x81, 0x62, 0x1c, 
+    0xbf, 0x7f, 0x3d, 0x83, 0xc7, 0xff, 0xff, 0x3c, 0x40, 0x80, 0xc2, 0x7c, 0x38, 0x00, 0xc3, 0x3c, 
+    0xfc, 0xfe, 0xff, 0xfe, 0xfe, 0xf8, 0x60, 0x00, 0x04, 0x02, 0x01, 0x00, 0x06, 0x98, 0x60, 0x00, 
+    0xc0, 0x20, 0x10, 0x10, 0x10, 0x10, 0x20, 0xc0, 0xc0, 0xe0, 0xf0, 0xf0, 0xf0, 0xf0, 0xe0, 0xc0, 
+    0x00, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x3e, 
+    0x88, 0x9c, 0x88, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7f, 0x7f, 0x3e, 0x1c, 0x00, 0x00, 0x00, 
+    0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0x08, 0x14, 0x24, 0xc4, 0x03, 0x40, 0xa1, 0x26, 0x00, 0x08, 0x18, 0x38, 0xfc, 0xbf, 0x5e, 0xd9, 
+    0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x7f, 0x7f, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 
+    0x7f, 0x80, 0x80, 0x98, 0x9c, 0x8c, 0x80, 0x80, 0x00, 0x7f, 0x7f, 0x67, 0x67, 0x7f, 0x7f, 0x7f, 
+    0xff, 0x01, 0x01, 0xff, 0x10, 0x10, 0x10, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 
+    0x01, 0x01, 0x01, 0xff, 0x10, 0x10, 0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0xfe, 0x01, 0x01, 0x19, 0x1d, 0x0d, 0x01, 0x01, 0x00, 0xff, 0xff, 0xe7, 0xe7, 0xff, 0xff, 0xff, 
+    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0x3f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x60, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x80, 
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7e, 0x3c, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x42, 0x3c, 
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x82, 0x7c, 
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x83, 0xff, 
+    0xf8, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7e, 0x3c, 0x01, 0x01, 0x01, 0x01, 0x01, 0x81, 0x42, 0x3c, 
+    0x00, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0x00, 0x7f, 0x7f, 0x78, 0x73, 0x73, 0x73, 0x7f, 0x7f, 0x80, 0xa0, 0x87, 0x8f, 0x8e, 0x8e, 0x86, 
+    0x00, 0xff, 0xff, 0x3f, 0x9f, 0x9f, 0x9f, 0x1f, 0xfe, 0x01, 0x05, 0xc1, 0xe1, 0x71, 0x71, 0xf1, 
+    0x7e, 0x7e, 0x7f, 0x7e, 0x7e, 0x7f, 0x7f, 0xff, 0x81, 0x81, 0x80, 0x81, 0x81, 0xa0, 0x80, 0xff, 
+    0x7f, 0x7f, 0xff, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xf1, 0xc1, 0xc1, 0x81, 0xc1, 0xc5, 0x01, 0xff, 
+    0x7f, 0x80, 0xa0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0xfe, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0x80, 0x80, 0x80, 0x80, 0x80, 0xa0, 0x80, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 
+    0x01, 0x01, 0x01, 0x01, 0x01, 0x05, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 
+    0x00, 0x00, 0x00, 0x00, 0xfc, 0xfe, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x7c, 
+    0x11, 0x39, 0x11, 0x01, 0x01, 0x01, 0x01, 0x01, 0xfe, 0xfe, 0xfe, 0x7c, 0x38, 0x00, 0x00, 0x00, 
+    0xef, 0x28, 0x28, 0x28, 0x28, 0x28, 0xef, 0x00, 0x20, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xef, 0x00, 
+    0xfe, 0x82, 0x82, 0x82, 0x82, 0x82, 0xfe, 0x00, 0x02, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0xfe, 0x00, 
+    0x80, 0x80, 0x80, 0x98, 0x9c, 0x8c, 0x80, 0x7f, 0x7f, 0x7f, 0x7f, 0x67, 0x67, 0x7f, 0x7f, 0x7f, 
+    0xff, 0xff, 0x83, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xff, 0x80, 0xfc, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 
+    0xff, 0xff, 0xf0, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xff, 0x00, 0x0f, 0x09, 0x09, 0x09, 0x09, 0x09, 
+    0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0xff, 0xff, 0x01, 0x57, 0x2f, 0x57, 0x2f, 0x57, 0xff, 0x01, 0xff, 0xa9, 0xd1, 0xa9, 0xd1, 0xa9, 
+    0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xff, 0x3f, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0xff, 0x3f, 
+    0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xff, 0xff, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0xff, 0xff, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0x2f, 0x57, 0x2f, 0x57, 0x2f, 0x57, 0xff, 0xfc, 0xd1, 0xa9, 0xd1, 0xa9, 0xd1, 0xa9, 0xff, 0xfc, 
+    0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 
+    0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 
+    0xbc, 0x5c, 0xbc, 0x5c, 0xbc, 0x5c, 0xbc, 0x5c, 0x44, 0xa4, 0x44, 0xa4, 0x44, 0xa4, 0x44, 0xa4, 
+    0x1f, 0x20, 0x40, 0x40, 0x80, 0x80, 0x80, 0x81, 0x1f, 0x3f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xfe, 
+    0xff, 0x80, 0x80, 0xc0, 0xff, 0xff, 0xfe, 0xfe, 0xff, 0x7f, 0x7f, 0x3f, 0x00, 0x00, 0x01, 0x01, 
+    0xff, 0x7f, 0x7f, 0xff, 0xff, 0x07, 0x03, 0x03, 0xff, 0x80, 0x80, 0x00, 0x00, 0xf8, 0xfc, 0xfc, 
+    0xff, 0x00, 0x00, 0x00, 0x00, 0x81, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7e, 0x3c, 0x00, 
+    0xf8, 0xfc, 0xfe, 0xfe, 0xe3, 0xc1, 0x81, 0x81, 0xf8, 0x04, 0x02, 0x02, 0x1d, 0x3f, 0x7f, 0x7f, 
+    0x83, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x1f, 0xfc, 0x80, 0x80, 0x80, 0x80, 0x80, 0x60, 0x1f, 
+    0xfc, 0xfc, 0xfc, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0xff, 
+    0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfc, 0xfc, 0xf8, 0xff, 
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 
+    0x81, 0xc1, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0x3f, 0x1d, 0x01, 0x01, 0x01, 0x03, 0xfe, 
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xb5, 0xce, 0x80, 0x80, 0x80, 0x80, 0x80, 0x84, 0xca, 0xb1, 
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xad, 0x73, 0x01, 0x01, 0x01, 0x01, 0x01, 0x21, 0x53, 0x8d, 
+    0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x77, 0xff, 0xff, 0xff, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0x77, 0x77, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x77, 0x77, 0x77, 0x77, 0x77, 
+    0x01, 0x01, 0x01, 0x19, 0x1d, 0x0d, 0x01, 0xfe, 0xff, 0xff, 0xff, 0xe7, 0xe7, 0xff, 0xff, 0xfe, 
+    0x20, 0x78, 0x7f, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x21, 0x21, 0x41, 0x41, 0x41, 0x41, 0x41, 
+    0x04, 0x9a, 0xfa, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 
+    0x7e, 0x38, 0x21, 0x00, 0x01, 0x00, 0x01, 0x00, 0x21, 0x21, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 
+    0xfa, 0x8a, 0x84, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 
+    0x02, 0x04, 0x00, 0x10, 0x00, 0x40, 0x80, 0x00, 0x01, 0x01, 0x06, 0x08, 0x18, 0x20, 0x20, 0xc0, 
+    0x0b, 0x0b, 0x3b, 0x0b, 0xfb, 0x0b, 0x0b, 0x0a, 0x04, 0x04, 0xc4, 0xf4, 0xf4, 0x04, 0x04, 0x05, 
+    0x90, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x90, 0x70, 0xf0, 0xf0, 0xff, 0xff, 0xf0, 0xf0, 0x70, 
+    0x3f, 0x78, 0xe7, 0xcf, 0x58, 0x58, 0x50, 0x90, 0xc0, 0x87, 0x18, 0xb0, 0xe7, 0xe7, 0xef, 0xef, 
+    0xb0, 0xfc, 0xe2, 0xc1, 0xc1, 0x83, 0x8f, 0x7e, 0x6f, 0x43, 0x5d, 0x3f, 0x3f, 0x7f, 0x7f, 0xff, 
+    0xfe, 0x03, 0x0f, 0x91, 0x70, 0x60, 0x20, 0x31, 0x03, 0xff, 0xf1, 0x6e, 0xcf, 0xdf, 0xff, 0xff, 
+    0x3f, 0x3f, 0x1d, 0x39, 0x7b, 0xf3, 0x86, 0xfe, 0xfd, 0xfb, 0xfb, 0xf7, 0xf7, 0x0f, 0x7f, 0xff, 
+    0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x80, 0xff, 0xff, 0x80, 0x80, 0x80, 0x80, 0xff, 0xff, 0x80, 
+    0xfe, 0xff, 0xff, 0xff, 0xff, 0x03, 0x03, 0xff, 0xfe, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff, 0x03, 
+    0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 
+    0x3c, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0x04, 0x04, 0x23, 0xf3, 0x0b, 0x0b, 0x0b, 0x07, 0xff, 0xff, 
+    0xff, 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff, 0x80, 0x80, 0x80, 0x80, 0xff, 0x80, 0x80, 0x80, 
+    0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0x03, 0x03, 0x03, 0x03, 0xff, 0x03, 0x03, 0x03, 
+    0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 
+    0xfc, 0xfc, 0xfe, 0xfe, 0xfe, 0x02, 0xfe, 0xfe, 0x07, 0x07, 0x03, 0x03, 0x03, 0xff, 0x03, 0x03, 
+    0xff, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0x80, 0x80, 0xaa, 0xd5, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd5, 0xaa, 0xd5, 0x80, 0x80, 0xff, 
+    0x03, 0x03, 0xab, 0x57, 0xab, 0xff, 0xff, 0xfe, 0xff, 0xff, 0x57, 0xab, 0x57, 0x03, 0x03, 0xfe, 
+    0x00, 0x55, 0xaa, 0x55, 0xff, 0xff, 0xff, 0x00, 0xff, 0xaa, 0x55, 0xaa, 0x00, 0x00, 0xff, 0x00, 
+    0x04, 0x54, 0xac, 0x5c, 0xfc, 0xfc, 0xfc, 0x3c, 0xff, 0xaf, 0x57, 0xab, 0x0b, 0x0b, 0xf3, 0x23, 
+    0x3f, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0x7e, 0x7c, 0x7c, 0x78, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0x1f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0xfe, 0xfc, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x07, 0x1f, 0x3f, 0xff, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0xe1, 0xf9, 0xfd, 0xff, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0xf0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xff, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 
+    0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xff, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 
+    0x92, 0x92, 0x92, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x48, 0x48, 0x6c, 0x00, 0x00, 0x00, 0xfe, 0x00, 
+    0x0a, 0x0a, 0x3a, 0x0a, 0xfb, 0x0b, 0x0b, 0x0b, 0x05, 0x05, 0xc5, 0xf5, 0xf4, 0x04, 0x04, 0x04, 
+    0x90, 0x90, 0x9f, 0x90, 0x9f, 0x90, 0x90, 0x90, 0x70, 0x70, 0x70, 0x7f, 0x7f, 0x70, 0x70, 0x70, 
+    0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x08, 0x88, 0x91, 0xd1, 0x53, 0x53, 0x73, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xbe, 0xce, 
+    0x00, 0x00, 0x07, 0x0f, 0x0c, 0x1b, 0x1b, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, 
+    0x00, 0x00, 0xe0, 0xf0, 0xf0, 0xf8, 0xf8, 0xf8, 0x00, 0x00, 0x60, 0x30, 0x30, 0x98, 0x98, 0x98, 
+    0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x0f, 0x0f, 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x00, 0x00, 
+    0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf0, 0xf0, 0xe0, 0x98, 0x98, 0x98, 0x98, 0x98, 0x30, 0x30, 0x60, 
+    0xf1, 0x11, 0x11, 0x1f, 0x10, 0x10, 0x10, 0xff, 0x0f, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xe0, 
+    0x1f, 0x10, 0x10, 0xf0, 0x10, 0x10, 0x10, 0xff, 0xe0, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0x0f, 
+    0x7f, 0xbf, 0xdf, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0x80, 0x40, 0x20, 0x10, 0x0f, 0x0f, 0x0f, 0x0f, 
+    0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x1f, 0x3f, 0x7f, 0xff, 
+    0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x03, 0x07, 0x0f, 0xff, 0xff, 0xff, 0xff, 
+    0x0f, 0x0f, 0x0f, 0x0f, 0xf7, 0xfb, 0xfd, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x1f, 0x3f, 0x7f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0x1f, 0x20, 0x40, 0x40, 0x40, 0x80, 0x82, 0x82, 
+    0xff, 0xff, 0xff, 0x7f, 0x7f, 0x7f, 0x3f, 0x1e, 0x82, 0x80, 0xa0, 0x44, 0x43, 0x40, 0x21, 0x1e, 
+    0xf8, 0xfc, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xf8, 0x04, 0x02, 0x02, 0x02, 0x01, 0x41, 0x41, 
+    0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfc, 0x78, 0x41, 0x01, 0x05, 0x22, 0xc2, 0x02, 0x84, 0x78, 
+    0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 
+    0xde, 0x61, 0x61, 0x61, 0x71, 0x5e, 0x7f, 0x61, 0x61, 0xdf, 0xdf, 0xdf, 0xdf, 0xff, 0xc1, 0xdf, 
+    0x80, 0x80, 0xc0, 0xf0, 0xbf, 0x8f, 0x81, 0x7e, 0x7f, 0x7f, 0xff, 0x3f, 0x4f, 0x71, 0x7f, 0xff, 
+    0x61, 0x61, 0xc1, 0xc1, 0x81, 0x81, 0x83, 0xfe, 0xdf, 0xdf, 0xbf, 0xbf, 0x7f, 0x7f, 0x7f, 0x7f, 
+    0x00, 0x00, 0x03, 0x0f, 0x1f, 0x3f, 0x7f, 0x7f, 0x00, 0x00, 0x03, 0x0c, 0x10, 0x20, 0x40, 0x40, 
+    0x00, 0x00, 0xc0, 0xf0, 0xf8, 0xfc, 0xfe, 0xfe, 0x00, 0x00, 0xc0, 0x30, 0x08, 0x04, 0x02, 0x02, 
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 
+    0x7f, 0x7f, 0x7f, 0x3f, 0x3f, 0x1f, 0x0f, 0x07, 0x40, 0x40, 0x40, 0x20, 0x30, 0x1c, 0x0f, 0x07, 
+    0xfe, 0xfe, 0xfe, 0xfc, 0xfc, 0xf8, 0xf0, 0xf0, 0x02, 0x02, 0x02, 0x04, 0x0c, 0x38, 0xf0, 0xf0, 
+    0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0c, 0x05, 0x0a, 
+    0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xe0, 0xf0, 0x10, 0x50, 0x50, 0x50, 0x50, 0x30, 0xa0, 0x50, 
+    0x81, 0xc1, 0xa3, 0xa3, 0x9d, 0x81, 0x81, 0x81, 0x00, 0x41, 0x22, 0x22, 0x1c, 0x00, 0x00, 0x00, 
+    0xe3, 0xf7, 0xc1, 0xc1, 0xc1, 0xc1, 0xf7, 0xe3, 0xe3, 0x14, 0x3e, 0x3e, 0x3e, 0x3e, 0x14, 0xe3, 
+    0x00, 0x00, 0x07, 0x0f, 0x0c, 0x1b, 0x1b, 0x1b, 0xff, 0xff, 0xf8, 0xf0, 0xf0, 0xe0, 0xe0, 0xe0, 
+    0x00, 0x00, 0xe0, 0xf0, 0xf0, 0xf8, 0xf8, 0xf8, 0xff, 0xff, 0x7f, 0x3f, 0x3f, 0x9f, 0x9f, 0x9f, 
+    0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x0f, 0x0f, 0x07, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf3, 0xf0, 0xf8, 
+    0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf0, 0xf0, 0xe0, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x3f, 0x3f, 0x7f, 
+    0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x70, 0x1f, 0x10, 0x70, 0x7f, 0x7f, 0x7f, 
+    0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x03, 0xf8, 0x00, 0x03, 0xfb, 0xfb, 0xfb, 
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xef, 0x7c, 0x7b, 0x76, 0x75, 0x75, 0x77, 0x17, 0x67, 
+    0xff, 0xdf, 0xef, 0xaf, 0xaf, 0x6f, 0xef, 0xe7, 0x3b, 0xfb, 0x7b, 0xfb, 0xfb, 0xf3, 0xf8, 0xf3, 
+    0x1f, 0x1f, 0x3f, 0x3f, 0x70, 0x63, 0xe7, 0xe5, 0x0f, 0x0f, 0x1f, 0x1f, 0x3f, 0x3c, 0x78, 0x7a, 
+    0xf0, 0xf0, 0xf8, 0xf8, 0x0c, 0xc4, 0xe4, 0xa6, 0xf8, 0xf8, 0xfc, 0xfc, 0xfe, 0x3e, 0x1e, 0x5f, 
+    0xe9, 0xe9, 0xe9, 0xef, 0xe2, 0xe3, 0xf0, 0xff, 0x76, 0x76, 0x76, 0x70, 0x7d, 0x7c, 0x7f, 0x7f, 
+    0x96, 0x96, 0x96, 0xf6, 0x46, 0xc6, 0x0e, 0xfe, 0x6f, 0x6f, 0x6f, 0x0f, 0xbf, 0x3f, 0xff, 0xff, 
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x3c, 0x3c, 0x7e, 0x7e, 0xff, 0xff, 0xff, 0x42, 0x00, 
+    0x3c, 0x42, 0x99, 0xa1, 0xa1, 0x99, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    0x0f, 0x1f, 0x1f, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0xf0, 0xe0, 0xe0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 
+    0xf0, 0xf8, 0xf8, 0xfc, 0xfc, 0xfe, 0xfe, 0xfe, 0x0f, 0x07, 0x07, 0x03, 0x03, 0x01, 0x01, 0x01, 
+    0x7f, 0x7f, 0x3f, 0x3f, 0x3f, 0x3f, 0x1f, 0x1f, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xf8, 0xfe, 0xff, 
+    0xfe, 0xff, 0xff, 0xff, 0xfc, 0xfc, 0xfe, 0xfe, 0xff, 0x7f, 0x1f, 0x07, 0x03, 0x03, 0x01, 0x81, 
+    0x7f, 0x7f, 0x7f, 0x3f, 0x3f, 0x3f, 0x3f, 0x1f, 0x80, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0xf0, 
+    0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0f, 
+    0x1f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0xfe, 0xfc, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0f, 
+    0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 
+    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 
+    0xff, 0xff, 0xff, 0xff, 0xfc, 0xfe, 0xfe, 0x7e, 0xff, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 
+    0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x01, 0x01, 0x01, 0x03, 0x07, 0x03, 0x01, 0x01, 
+    0x7e, 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 
+    0x3f, 0x3f, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0x7e, 0x7c, 0x7c, 0x78, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+    0xfe, 0xfe, 0xff, 0xff, 0x7f, 0x7f, 0x7f, 0x7f, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 
+    0x7f, 0x7f, 0x3f, 0x3f, 0x3f, 0x3f, 0x1f, 0x1f, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xf8, 0xfe, 0xff, 
+    0x3f, 0xbf, 0xff, 0xff, 0xfc, 0xfc, 0xfe, 0xfe, 0xff, 0x7f, 0x1f, 0x07, 0x03, 0x03, 0x01, 0x81, 
+    0x7f, 0x7f, 0x7e, 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 
+    0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 
+    0x81, 0xc3, 0xc3, 0xe7, 0xe7, 0xff, 0xff, 0xff, 0x7e, 0x3c, 0x3c, 0x18, 0x18, 0x00, 0x00, 0x00, 
+    0x0f, 0x43, 0x5b, 0x53, 0x31, 0x19, 0x0f, 0x07, 0xf2, 0xfe, 0xfe, 0xff, 0xff, 0xef, 0xf7, 0xf8, 
+    0xc1, 0xc3, 0xc6, 0x84, 0xfc, 0xfc, 0x0e, 0x02, 0xbf, 0xbe, 0xbd, 0x7b, 0x7b, 0x07, 0xf3, 0xfd, 
+    0x10, 0x20, 0x22, 0xba, 0xe6, 0xe1, 0xc0, 0xc0, 0xff, 0xff, 0xff, 0x67, 0x59, 0x9e, 0xbf, 0xbf, 
+    0x20, 0xa6, 0x54, 0x26, 0x20, 0xc6, 0x54, 0x26, 0x20, 0xe6, 0x54, 0x26, 0x21, 0x06, 0x54, 0x26, 
+    0x20, 0x85, 0x01, 0x44, 0x20, 0x86, 0x54, 0x48, 0x20, 0x9a, 0x01, 0x49, 0x20, 0xa5, 0xc9, 0x46, 
+    0x20, 0xba, 0xc9, 0x4a, 0x20, 0xa6, 0x0a, 0xd0, 0xd1, 0xd8, 0xd8, 0xde, 0xd1, 0xd0, 0xda, 0xde, 
+    0xd1, 0x20, 0xc6, 0x0a, 0xd2, 0xd3, 0xdb, 0xdb, 0xdb, 0xd9, 0xdb, 0xdc, 0xdb, 0xdf, 0x20, 0xe6, 
+    0x0a, 0xd4, 0xd5, 0xd4, 0xd9, 0xdb, 0xe2, 0xd4, 0xda, 0xdb, 0xe0, 0x21, 0x06, 0x0a, 0xd6, 0xd7, 
+    0xd6, 0xd7, 0xe1, 0x26, 0xd6, 0xdd, 0xe1, 0xe1, 0x21, 0x26, 0x14, 0xd0, 0xe8, 0xd1, 0xd0, 0xd1, 
+    0xde, 0xd1, 0xd8, 0xd0, 0xd1, 0x26, 0xde, 0xd1, 0xde, 0xd1, 0xd0, 0xd1, 0xd0, 0xd1, 0x26, 0x21, 
+    0x46, 0x14, 0xdb, 0x42, 0x42, 0xdb, 0x42, 0xdb, 0x42, 0xdb, 0xdb, 0x42, 0x26, 0xdb, 0x42, 0xdb, 
+    0x42, 0xdb, 0x42, 0xdb, 0x42, 0x26, 0x21, 0x66, 0x46, 0xdb, 0x21, 0x6c, 0x0e, 0xdf, 0xdb, 0xdb, 
+    0xdb, 0x26, 0xdb, 0xdf, 0xdb, 0xdf, 0xdb, 0xdb, 0xe4, 0xe5, 0x26, 0x21, 0x86, 0x14, 0xdb, 0xdb, 
+    0xdb, 0xde, 0x43, 0xdb, 0xe0, 0xdb, 0xdb, 0xdb, 0x26, 0xdb, 0xe3, 0xdb, 0xe0, 0xdb, 0xdb, 0xe6, 
+    0xe3, 0x26, 0x21, 0xa6, 0x14, 0xdb, 0xdb, 0xdb, 0xdb, 0x42, 0xdb, 0xdb, 0xdb, 0xd4, 0xd9, 0x26, 
+    0xdb, 0xd9, 0xdb, 0xdb, 0xd4, 0xd9, 0xd4, 0xd9, 0xe7, 0x21, 0xc5, 0x16, 0x5f, 0x95, 0x95, 0x95, 
+    0x95, 0x95, 0x95, 0x95, 0x95, 0x97, 0x98, 0x78, 0x95, 0x96, 0x95, 0x95, 0x97, 0x98, 0x97, 0x98, 
+    0x95, 0x7a, 0x21, 0xed, 0x0e, 0xcf, 0x01, 0x09, 0x08, 0x05, 0x24, 0x17, 0x12, 0x17, 0x1d, 0x0e, 
+    0x17, 0x0d, 0x18, 0x22, 0x4b, 0x0d, 0x01, 0x24, 0x19, 0x15, 0x0a, 0x22, 0x0e, 0x1b, 0x24, 0x10, 
+    0x0a, 0x16, 0x0e, 0x22, 0x8b, 0x0d, 0x02, 0x24, 0x19, 0x15, 0x0a, 0x22, 0x0e, 0x1b, 0x24, 0x10, 
+    0x0a, 0x16, 0x0e, 0x22, 0xec, 0x04, 0x1d, 0x18, 0x19, 0x28, 0x22, 0xf6, 0x01, 0x00, 0x23, 0xc9, 
+    0x56, 0x55, 0x23, 0xe2, 0x04, 0x99, 0xaa, 0xaa, 0xaa, 0x23, 0xea, 0x04, 0x99, 0xaa, 0xaa, 0xaa, 
+    0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+};
+
+
+void nes_task(void *param){
+    nes_run(nes);
+}
+
+static int l_nes_init(lua_State *L) {
+    size_t nes_rom_len;
+    const char* nes_rom = luaL_checklstring(L, 1, &nes_rom_len);
+    nes = nes_load_rom(super_mario_rom);
+    // nes = nes_load_rom((const uint8_t *)nes_rom);
+    if (!nes){
+        return 0;
+    }
+    if (luat_rtos_task_create(&nes_thread, 4*1024, 50, "nes", nes_task, nes, 0)){
+        return 0;
+    }
+    lua_pushboolean(L, 1);
+    return 1;
+}
+
+static int l_nes_key(lua_State *L) {
+    int key = luaL_checkinteger(L, 1);
+    int val = luaL_checkinteger(L, 2);
+    switch (key){
+        case Up:
+            nes->nes_cpu.joypad.U1 = val;
+            break;
+        case Down:
+            nes->nes_cpu.joypad.D1 = val;
+            break;
+        case Left:
+            nes->nes_cpu.joypad.L1 = val;
+            break;
+        case Right:
+            nes->nes_cpu.joypad.R1 = val;
+            break;
+        case A:
+            nes->nes_cpu.joypad.A1 = val;
+            break;
+        case B:
+            nes->nes_cpu.joypad.B1 = val;
+            break;
+        case Start:
+            nes->nes_cpu.joypad.ST1 = val;
+            break;
+        case Select:
+            nes->nes_cpu.joypad.SE1 = val;
+            break;
+        default:
+            break;
+    }
+    return 0;
+}
+
+#include "rotable2.h"
+static const rotable_Reg_t reg_nes[] =
+{
+    {"init",    ROREG_FUNC(l_nes_init)  },
+    {"key",     ROREG_FUNC(l_nes_key)   },
+
+    { "Up",     ROREG_INT(Up)           },
+    { "Down",   ROREG_INT(Down)         },
+    { "Left",   ROREG_INT(Left)         },
+    { "Right",  ROREG_INT(Right)        },
+    { "A",      ROREG_INT(A)            },
+    { "B",      ROREG_INT(B)            },
+    { "Start",  ROREG_INT(Start)        },
+    { "Select", ROREG_INT(Select)       },
+	{ NULL,     ROREG_INT(0)}
+};
+LUAMOD_API int luaopen_nes( lua_State *L ) {
+    luat_newlib2(L, reg_nes);
+    return 1;
+}

+ 83 - 0
components/nes/port/nes_conf.h

@@ -0,0 +1,83 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022 Dozingfiretruck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#ifndef _NES_CONF_
+#define _NES_CONF_
+
+#ifdef __cplusplus
+    extern "C" {
+#endif
+
+#define NES_FRAME_SKIP          2
+
+#define NES_USE_SRAM            0
+#define NES_COLOR_DEPTH         16
+#define NES_COLOR_SWAP          1
+#define NES_RAM_LACK            1
+
+#define NES_USE_FS              1
+
+#ifndef NES_USE_FS
+#define NES_USE_FS              0
+#endif
+
+#ifndef NES_FRAME_SKIP
+#define NES_FRAME_SKIP          0
+#endif
+
+#ifndef NES_RAM_LACK
+#define NES_RAM_LACK            0
+#endif
+
+#if (NES_RAM_LACK == 1)
+#define NES_DRAW_SIZE         (NES_WIDTH * NES_HEIGHT / 2) 
+#else
+#define NES_DRAW_SIZE         (NES_WIDTH * NES_HEIGHT)
+#endif
+
+#ifndef NES_COLOR_SWAP
+#define NES_COLOR_SWAP         0
+#endif
+
+/* Color depth:
+ * - 16: RGB565
+ * - 32: ARGB8888
+ */
+#ifndef NES_COLOR_DEPTH
+#define NES_COLOR_DEPTH         32
+#endif
+
+#if (NES_COLOR_DEPTH == 32)
+#define nes_color_t uint32_t
+#elif (NES_COLOR_DEPTH == 16)
+#define nes_color_t uint16_t
+#else
+#error "no supprt color depth"
+#endif
+
+#ifdef __cplusplus          
+    }
+#endif
+
+#endif// _NES_CONF_

+ 96 - 0
components/nes/port/nes_port.c

@@ -0,0 +1,96 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022 Dozingfiretruck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#include "nes.h"
+
+#include "luat_base.h"
+#include "luat_malloc.h"
+#include "luat_timer.h"
+#include "luat_fs.h"
+#include "luat_lcd.h"
+
+/* memory */
+void *nes_malloc(int num){
+    return luat_heap_malloc(num);
+}
+
+void nes_free(void *address){
+    luat_heap_free(address);
+}
+
+void *nes_memcpy(void *str1, const void *str2, size_t n){
+    return memcpy(str1, str2, n);
+}
+
+void *nes_memset(void *str, int c, size_t n){
+    return memset(str,c,n);
+}
+
+int nes_memcmp(const void *str1, const void *str2, size_t n){
+    return memcmp(str1,str2,n);
+}
+
+#if (NES_USE_FS == 1)
+/* io */
+FILE *nes_fopen( const char * filename, const char * mode ){
+    return luat_fs_fopen(filename,mode);
+}
+
+size_t nes_fread(void *ptr, size_t size_of_elements, size_t number_of_elements, FILE *a_file){
+    return luat_fs_fread(ptr, size_of_elements, number_of_elements,a_file);
+}
+
+int nes_fseek(FILE *stream, long int offset, int whence){
+    return luat_fs_fseek(stream,offset,whence);
+}
+
+int nes_fclose( FILE *fp ){
+    return luat_fs_fclose(fp);
+}
+#endif
+
+/* wait */
+void nes_wait(uint32_t ms){
+    luat_timer_mdelay(ms);
+}
+
+static luat_lcd_conf_t* nes_lcd_conf;
+
+int nes_initex(nes_t *nes){
+    nes_lcd_conf = luat_lcd_get_default();
+    return 0;
+}
+
+int nes_deinitex(nes_t *nes){
+    return 0;
+}
+
+int nes_draw(size_t x1, size_t y1, size_t x2, size_t y2, nes_color_t* color_data){
+    return luat_lcd_draw(nes_lcd_conf, x1, y1, x2, y2, color_data);
+}
+
+void nes_frame(void){
+    luat_timer_us_delay(10);
+}
+

+ 71 - 0
components/nes/port/nes_port.h

@@ -0,0 +1,71 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022 Dozingfiretruck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#ifndef _NES_PORT_
+#define _NES_PORT_
+
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "nes_conf.h"
+
+#ifdef __cplusplus
+    extern "C" {
+#endif
+
+/* log */
+#ifdef __DEBUG__
+#define nes_printf(...)  printf(__VA_ARGS__)
+#else
+#define nes_printf(...)
+#endif
+
+/* memory */
+void *nes_malloc(int num);
+void nes_free(void *address);
+void *nes_memcpy(void *str1, const void *str2, size_t n);
+void *nes_memset(void *str, int c, size_t n);
+int nes_memcmp(const void *str1, const void *str2, size_t n);
+
+#if (NES_USE_FS == 1)
+/* io */
+FILE *nes_fopen( const char * filename, const char * mode );
+size_t nes_fread(void *ptr, size_t size_of_elements, size_t number_of_elements, FILE *a_file);
+int nes_fseek(FILE *stream, long int offset, int whence);
+int nes_fclose( FILE *fp );
+#endif
+
+void nes_wait(uint32_t ms);
+
+void nes_frame(void);
+
+int nes_draw(size_t x1, size_t y1, size_t x2, size_t y2, nes_color_t* color_data);
+
+
+#ifdef __cplusplus          
+    }
+#endif
+
+#endif// _NES_PORT_

+ 386 - 0
components/nes/src/nes.c

@@ -0,0 +1,386 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022 Dozingfiretruck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+
+#include "nes.h"
+
+#define NES_PPU_CPU_CLOCKS		113
+
+int nes_init(nes_t *nes){
+    nes_initex(nes);
+    nes_cpu_init(nes);
+    nes_ppu_init(nes);
+    return 0;
+}
+
+int nes_deinit(nes_t *nes){
+    nes->nes_quit = 1;
+    nes_deinitex(nes);
+    return 0;
+}
+
+extern nes_color_t nes_palette[];
+
+static inline void nes_palette_generate(nes_t* nes){
+    for (size_t i = 0; i < 32; i++) {
+        nes->nes_ppu.palette[i] = nes_palette[nes->nes_ppu.palette_indexes[i]];
+    }
+    for (size_t i = 1; i < 8; i++){
+        nes->nes_ppu.palette[4 * i] = nes->nes_ppu.palette[0];
+    }
+}
+
+static void nes_render_background_line(nes_t* nes,uint16_t scanline,nes_color_t* draw_data){
+    uint8_t p = 0;
+    int8_t m = 7 - nes->nes_ppu.x;
+    const uint8_t dx = (const uint8_t)nes->nes_ppu.v.coarse_x;
+    const uint8_t dy = (const uint8_t)nes->nes_ppu.v.fine_y;
+    const uint8_t tile_y = (const uint8_t)nes->nes_ppu.v.coarse_y;
+    uint8_t nametable_id = (uint8_t)nes->nes_ppu.v.nametable;
+    for (uint8_t tile_x = dx; tile_x < 32; tile_x++){
+        uint32_t pattern_id = nes->nes_ppu.name_table[nametable_id][tile_x + (tile_y << 5)];
+        const uint8_t* bit0_p = nes->nes_ppu.pattern_table[nes->nes_ppu.CTRL_B ? 4 : 0] + pattern_id * 16;
+        const uint8_t* bit1_p = bit0_p + 8;
+        const uint8_t bit0 = bit0_p[dy];
+        const uint8_t bit1 = bit1_p[dy];
+        uint8_t attribute = nes->nes_ppu.name_table[nametable_id][960 + ((tile_y >> 2) << 3) + (tile_x >> 2)];
+        // 1:D4-D5/D6-D7 0:D0-D1/D2-D3
+        // 1:D2-D3/D6-D7 0:D0-D1/D4-D5
+        const uint8_t high_bit = ((attribute >> (((tile_y & 2) << 1) | (tile_x & 2))) & 3) << 2;
+        for (; m >= 0; m--){
+            uint8_t low_bit = ((bit0 >> m) & 0x01) | ((bit1 >> m)<<1 & 0x02);
+            uint8_t palette_index = (high_bit & 0x0c) | low_bit;
+            draw_data[p++] = nes->nes_ppu.background_palette[palette_index];
+        }
+        m = 7;
+    }
+    nametable_id ^= nes->nes_rom.mirroring_type ? 1:2;
+    for (uint8_t tile_x = 0; tile_x <= dx; tile_x++){
+        uint32_t pattern_id = nes->nes_ppu.name_table[nametable_id][tile_x + (tile_y << 5)];
+        const uint8_t* bit0_p = nes->nes_ppu.pattern_table[nes->nes_ppu.CTRL_B ? 4 : 0] + pattern_id * 16;
+        const uint8_t* bit1_p = bit0_p + 8;
+        const uint8_t bit0 = bit0_p[dy];
+        const uint8_t bit1 = bit1_p[dy];
+        uint8_t attribute = nes->nes_ppu.name_table[nametable_id][960 + ((tile_y >> 2) << 3) + (tile_x >> 2)];
+        // 1:D4-D5/D6-D7 0:D0-D1/D2-D3
+        // 1:D2-D3/D6-D7 0:D0-D1/D4-D5
+        const uint8_t high_bit = ((attribute >> (((tile_y & 2) << 1) | (tile_x & 2))) & 3) << 2;
+        uint8_t skew = 0;
+        if (tile_x == dx){
+            if (nes->nes_ppu.x){
+                skew = 8 - nes->nes_ppu.x;
+            }else
+                break;
+        }
+        for (; m >= skew; m--){
+            uint8_t low_bit = ((bit0 >> m) & 0x01) | ((bit1 >> m)<<1 & 0x02);
+            uint8_t palette_index = (high_bit & 0x0c) | low_bit;
+            draw_data[p++] = nes->nes_ppu.background_palette[palette_index];
+        }
+        m = 7;
+    }
+}
+
+static void nes_render_sprite_line(nes_t* nes,uint16_t scanline,nes_color_t* draw_data){
+    nes_color_t background_color = nes->nes_ppu.background_palette[0];
+    uint8_t sprite_number = 0;
+    uint8_t sprite_size = nes->nes_ppu.CTRL_H?16:8;
+    
+    for (uint8_t i = 63; i > 0 ; i--){
+        if (nes->nes_ppu.sprite_info[i].y >= 0xEF)
+            continue;
+        uint8_t sprite_y = (uint8_t)(nes->nes_ppu.sprite_info[i].y + 1);
+        if (scanline < sprite_y || scanline >= sprite_y + sprite_size)
+            continue;
+        sprite_number ++;
+        if(sprite_number > 8 ){
+            nes->nes_ppu.STATUS_O = 1;
+            goto sprite0;
+        }
+
+        const uint8_t* sprite_bit0_p = nes->nes_ppu.pattern_table[nes->nes_ppu.CTRL_H?((nes->nes_ppu.sprite_info[i].pattern_8x16)?4:0):(nes->nes_ppu.CTRL_S?4:0)] \
+                                        + (nes->nes_ppu.CTRL_H?(nes->nes_ppu.sprite_info[i].tile_index_8x16 << 1 ):(nes->nes_ppu.sprite_info[i].tile_index_number)) * 16;
+        const uint8_t* sprite_bit1_p = sprite_bit0_p + 8;
+
+        uint8_t dy = scanline - sprite_y;
+
+        if (nes->nes_ppu.CTRL_H){
+            if (nes->nes_ppu.sprite_info[i].flip_v){
+                if (dy < 8){
+                    sprite_bit0_p +=16;
+                    sprite_bit1_p +=16;
+                    dy = sprite_size - dy - 1 -8;
+                }else{
+                    dy = sprite_size - dy - 1;
+                }
+            }else{
+                if (dy > 7){
+                    sprite_bit0_p +=16;
+                    sprite_bit1_p +=16;
+                    dy-=8;
+                }
+            }
+        }else{
+            if (nes->nes_ppu.sprite_info[i].flip_v){
+                dy = sprite_size - dy - 1;
+            }
+        }
+
+        const uint8_t sprite_bit0 = sprite_bit0_p[dy];
+        const uint8_t sprite_bit1 = sprite_bit1_p[dy];
+
+        uint8_t p = nes->nes_ppu.sprite_info[i].x;
+        if (nes->nes_ppu.sprite_info[i].flip_h){
+            for (int8_t m = 0; m <= 7; m++){
+                uint8_t low_bit = ((sprite_bit0 >> m) & 0x01) | ((sprite_bit1 >> m)<<1 & 0x02);
+                uint8_t palette_index = (nes->nes_ppu.sprite_info[i].sprite_palette << 2) | low_bit;
+                if (palette_index%4 != 0){
+                    if (nes->nes_ppu.sprite_info[i].priority){
+                        if (draw_data[p] == background_color){
+                            draw_data[p] = nes->nes_ppu.sprite_palette[palette_index];
+                        }
+                    }else{
+                        draw_data[p] = nes->nes_ppu.sprite_palette[palette_index];
+                    }
+                }
+                if (p == 255)
+                    break;
+                p++;
+            }
+        }else{
+            for (int8_t m = 7; m >= 0; m--){
+                uint8_t low_bit = ((sprite_bit0 >> m) & 0x01) | ((sprite_bit1 >> m)<<1 & 0x02);
+                uint8_t palette_index = (nes->nes_ppu.sprite_info[i].sprite_palette << 2) | low_bit;
+                if (palette_index%4 != 0){
+                    if (nes->nes_ppu.sprite_info[i].priority){
+                        if (draw_data[p] == background_color){
+                            draw_data[p] = nes->nes_ppu.sprite_palette[palette_index];
+                        }
+                    }else{
+                        draw_data[p] = nes->nes_ppu.sprite_palette[palette_index];
+                    }
+                }
+                if (p == 255)
+                    break;
+                p++;
+            }
+        }
+    }
+sprite0:
+    // sprite 0
+    if (nes->nes_ppu.sprite_info[0].y >= 0xEF)
+        return;
+    uint8_t sprite_y = (uint8_t)(nes->nes_ppu.sprite_info[0].y + 1);
+    if (scanline < sprite_y || scanline >= sprite_y + sprite_size)
+        return;
+    sprite_number ++;
+    if(sprite_number > 8 ){
+        nes->nes_ppu.STATUS_O = 1;
+    }
+
+    const uint8_t* sprite_bit0_p = nes->nes_ppu.pattern_table[nes->nes_ppu.CTRL_H?((nes->nes_ppu.sprite_info[0].pattern_8x16)?4:0):(nes->nes_ppu.CTRL_S?4:0)] \
+                                    + (nes->nes_ppu.CTRL_H?(nes->nes_ppu.sprite_info[0].tile_index_8x16 << 1 ):(nes->nes_ppu.sprite_info[0].tile_index_number)) * 16;
+    const uint8_t* sprite_bit1_p = sprite_bit0_p + 8;
+
+    uint8_t dy = scanline - sprite_y;
+
+    if (nes->nes_ppu.CTRL_H){
+        if (nes->nes_ppu.sprite_info[0].flip_v){
+            if (dy < 8){
+                sprite_bit0_p +=16;
+                sprite_bit1_p +=16;
+                dy = sprite_size - dy - 1 -8;
+            }else{
+                dy = sprite_size - dy - 1;
+            }
+        }else{
+            if (dy > 7){
+                sprite_bit0_p +=16;
+                sprite_bit1_p +=16;
+                dy-=8;
+            }
+        }
+    }else{
+        if (nes->nes_ppu.sprite_info[0].flip_v){
+            dy = sprite_size - dy - 1;
+        }
+    }
+    
+    const uint8_t sprite_bit0 = sprite_bit0_p[dy];
+    const uint8_t sprite_bit1 = sprite_bit1_p[dy];
+
+    const uint8_t sprite_date = sprite_bit0 | sprite_bit1;
+    if (sprite_date && nes->nes_ppu.MASK_b && nes->nes_ppu.STATUS_S == 0){
+        uint8_t nametable_id = (uint8_t)nes->nes_ppu.v.nametable;
+        const uint8_t tile_x = (nes->nes_ppu.sprite_info[0].x) >> 3;
+        const uint8_t tile_y = scanline >> 3;
+        uint32_t pattern_id = nes->nes_ppu.name_table[nametable_id][tile_x + (tile_y << 5)];
+        const uint8_t* bit0_p = nes->nes_ppu.pattern_table[nes->nes_ppu.CTRL_B ? 4 : 0] + pattern_id * 16;
+        const uint8_t* bit1_p = bit0_p + 8;
+        uint8_t background_date = bit0_p[dy] | bit1_p[dy]<<1;
+        if (sprite_date == background_date){
+            nes->nes_ppu.STATUS_S = 1;
+        }
+    }
+    if (nes->nes_ppu.STATUS_O == 1){
+        return;
+    }
+    
+    uint8_t p = nes->nes_ppu.sprite_info[0].x;
+    if (nes->nes_ppu.sprite_info[0].flip_h){
+        for (int8_t m = 0; m <= 7; m++){
+            uint8_t low_bit = ((sprite_bit0 >> m) & 0x01) | ((sprite_bit1 >> m)<<1 & 0x02);
+            uint8_t palette_index = (nes->nes_ppu.sprite_info[0].sprite_palette << 2) | low_bit;
+            if (palette_index%4 != 0){
+                if (nes->nes_ppu.sprite_info[0].priority){
+                    if (draw_data[p] == background_color){
+                        draw_data[p] = nes->nes_ppu.sprite_palette[palette_index];
+                    }
+                }else{
+                    draw_data[p] = nes->nes_ppu.sprite_palette[palette_index];
+                }
+            }
+            if (p == 255)
+                break;
+            p++;
+        }
+    }else{
+        for (int8_t m = 7; m >= 0; m--){
+            uint8_t low_bit = ((sprite_bit0 >> m) & 0x01) | ((sprite_bit1 >> m)<<1 & 0x02);
+            uint8_t palette_index = (nes->nes_ppu.sprite_info[0].sprite_palette << 2) | low_bit;
+            if (palette_index%4 != 0){
+                if (nes->nes_ppu.sprite_info[0].priority){
+                    if (draw_data[p] == background_color){
+                        draw_data[p] = nes->nes_ppu.sprite_palette[palette_index];
+                    }
+                }else{
+                    draw_data[p] = nes->nes_ppu.sprite_palette[palette_index];
+                }
+            }
+            if (p == 255)
+                break;
+            p++;
+        }
+    }
+}
+
+
+void nes_run(nes_t* nes){
+    // nes_printf("mapper:%03d\n",nes->nes_rom.mapper_number);
+    // nes_printf("prg_rom_size:%d*16kb\n",nes->nes_rom.prg_rom_size);
+    // nes_printf("chr_rom_size:%d*8kb\n",nes->nes_rom.chr_rom_size);
+    nes_cpu_reset(nes);
+    // nes->nes_cpu.PC = 0xC000;
+    // printf("nes->nes_cpu.PC %02X",nes->nes_cpu.PC);
+    uint64_t frame_cnt = 0;
+    uint16_t scanline = 0;
+
+    while (!nes->nes_quit){
+        frame_cnt++;
+        nes_palette_generate(nes);
+
+        if (nes->nes_ppu.MASK_b == 0){
+#if (NES_RAM_LACK == 1)
+            for (size_t i = 0; i < NES_HEIGHT * NES_WIDTH / 2; i++){
+                nes->nes_draw_data[i] = nes->nes_ppu.background_palette[0];
+            }
+#else
+            for (size_t i = 0; i < NES_HEIGHT * NES_WIDTH; i++){
+                nes->nes_draw_data[i] = nes->nes_ppu.background_palette[0];
+            }
+#endif
+        }
+        
+        for(scanline = 0; scanline < NES_HEIGHT; scanline++) { // 0-239 Visible frame
+            if (nes->nes_ppu.MASK_b){
+#if (NES_RAM_LACK == 1)
+                nes_render_background_line(nes,scanline,nes->nes_draw_data + scanline%(NES_HEIGHT/2) * NES_WIDTH);
+#else
+                nes_render_background_line(nes,scanline,nes->nes_draw_data + scanline * NES_WIDTH);
+#endif
+            }
+            if (nes->nes_ppu.MASK_s){
+#if (NES_RAM_LACK == 1)
+                nes_render_sprite_line(nes,scanline,nes->nes_draw_data + scanline%(NES_HEIGHT/2) * NES_WIDTH);
+#else
+                nes_render_sprite_line(nes,scanline,nes->nes_draw_data + scanline * NES_WIDTH);
+#endif
+            }
+            nes_opcode(nes,NES_PPU_CPU_CLOCKS);
+            if (nes->nes_ppu.MASK_b){
+                if ((nes->nes_ppu.v.fine_y) < 7) {
+                    nes->nes_ppu.v.fine_y++;
+                }else {
+                    nes->nes_ppu.v.fine_y = 0;
+                    uint8_t y = (uint8_t)(nes->nes_ppu.v.coarse_y);
+                    if (y == 29) {
+                        y = 0;
+                        nes->nes_ppu.v_reg ^= 0x0800;
+                    }else if (y == 31) {
+                        y = 0;
+                    }else {
+                        y++;
+                    }
+                    nes->nes_ppu.v.coarse_y = y;
+                }
+                // v: ....A.. ...BCDEF <- t: ....A.. ...BCDEF
+                nes->nes_ppu.v_reg = (nes->nes_ppu.v_reg & (uint16_t)0xFBE0) | (nes->nes_ppu.t_reg & (uint16_t)0x041F);
+            }
+            
+#if (NES_RAM_LACK == 1)
+            if((frame_cnt % (NES_FRAME_SKIP+1))==0){
+                if (scanline == NES_HEIGHT/2-1){
+                    nes_draw(0, 0, NES_WIDTH-1, NES_HEIGHT/2-1, nes->nes_draw_data);
+                }else if(scanline == NES_HEIGHT-1){
+                    nes_draw(0, NES_HEIGHT/2, NES_WIDTH-1, NES_HEIGHT-1, nes->nes_draw_data);
+                }
+            }
+#endif
+        }
+#if (NES_RAM_LACK == 0)
+        if((frame_cnt % (NES_FRAME_SKIP+1))==0){
+            nes_draw(0, 0, NES_WIDTH-1, NES_HEIGHT-1, nes->nes_draw_data);
+        }
+#endif
+        nes_opcode(nes,NES_PPU_CPU_CLOCKS); //240 Post-render line
+
+        nes->nes_ppu.STATUS_V = 1;// Set VBlank flag
+        if (nes->nes_ppu.CTRL_V) {
+            nes_nmi(nes);
+        }
+        for(; scanline < 261; scanline++){ // 241-260行 垂直空白行 x20
+            nes_opcode(nes,NES_PPU_CPU_CLOCKS);
+        }
+
+        nes->nes_ppu.ppu_status &= 0x10; // Clear:VBlank,Sprite 0,Overflow
+        nes_opcode(nes,NES_PPU_CPU_CLOCKS); // 261 Pre-render line
+        //do more
+        if (nes->nes_ppu.MASK_b){
+            // v: GHIA.BC DEF..... <- t: GHIA.BC DEF.....
+            nes->nes_ppu.v_reg = (nes->nes_ppu.v_reg & (uint16_t)0x841F) | (nes->nes_ppu.t_reg & (uint16_t)0x7BE0);
+        }
+        // nes_frame();
+    }
+}
+

+ 36 - 0
components/nes/src/nes_apu.c

@@ -0,0 +1,36 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022 Dozingfiretruck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+
+#include "nes.h"
+
+uint8_t nes_read_apu_register(nes_t *nes,uint16_t address){
+    uint8_t data = 0;
+    nes_printf("nes_read apu %04X %02X\n",address,data);
+    return data;
+}
+
+void nes_write_apu_register(nes_t* nes,uint16_t address,uint8_t data){
+    nes_printf("nes_write apu %04X %02X\n",address,data);
+}

+ 1381 - 0
components/nes/src/nes_cpu.c

@@ -0,0 +1,1381 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022 Dozingfiretruck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+
+#include "nes.h"
+
+typedef struct {
+    void (*instruction)(nes_t* nes);      //instructions 
+    uint16_t (*addressing_mode)(nes_t* nes);  //addressing_mode
+    uint8_t	ticks;
+} nes_opcode_t;
+
+static nes_opcode_t nes_opcode_table[256];
+
+static inline uint8_t nes_read_joypad(nes_t* nes,uint16_t address){
+    uint8_t state = 0;
+    if (address == 0x4016){
+        state = (nes->nes_cpu.joypad.joypad & (0x8000 >> (nes->nes_cpu.joypad.offset1 & nes->nes_cpu.joypad.mask))) ? 1 : 0;
+        nes->nes_cpu.joypad.offset1++;
+    }else if(address == 0x4017){
+        state = (nes->nes_cpu.joypad.joypad & (0x80 >> (nes->nes_cpu.joypad.offset2 & nes->nes_cpu.joypad.mask))) ? 1 : 0;
+        nes->nes_cpu.joypad.offset2++;
+    }
+    // nes_printf("nes_read joypad %04X %d %02X %d\n",address,nes->nes_cpu.joypad.mask,nes->nes_cpu.joypad.joypad,state);
+    return state;
+}
+
+static inline void nes_write_joypad(nes_t* nes,uint8_t data){
+    nes->nes_cpu.joypad.mask = (data & 1)?0x00:0x07;
+    if (data & 1)
+        nes->nes_cpu.joypad.offset1 = nes->nes_cpu.joypad.offset2 = 0;
+    // nes_printf("nes_write joypad %04X %02X %d\n",address,data,nes->nes_cpu.joypad.mask);
+}
+
+static uint8_t nes_read_cpu(nes_t* nes,uint16_t address){
+    switch (address >> 13){
+        case 0://$0000-$1FFF 2KB internal RAM + Mirrors of $0000-$07FF
+            return nes->nes_cpu.cpu_ram[address & (uint16_t)0x07ff];
+        case 1://$2000-$3FFF NES PPU registers + Mirrors of $2000-2007 (repeats every 8 bytes)
+            return nes_read_ppu_register(nes,address);
+        case 2://$4000-$5FFF NES APU and I/O registers
+            if (address == 0x4016 || address == 0x4017)
+                return nes_read_joypad(nes, address);
+            else if (address < 0x4016){
+                return nes_read_apu_register(nes, address);
+            }else
+                nes_printf("nes_read address %04X not sPport\n",address);
+            return 0;
+        case 3://$6000-$7FFF SRAM
+#if (NES_USE_SRAM == 1)
+            return nes->nes_rom.sram[address & (uint16_t)0x1fff];
+#endif
+            return 0;
+        case 4: case 5: case 6: case 7:
+            return nes->nes_cpu.prg_banks[(address >> 13)-4][address & (uint16_t)0x1fff];
+        default :
+            nes_printf("nes_read_cpu error %04X\n",address);
+            return -1;
+    }
+    return 0;
+}
+
+static inline const uint8_t* nes_get_dma_address(nes_t* nes,uint8_t data) {
+    switch (data >> 5)
+    {
+    default:
+    case 1:
+        // PPU寄存器
+        nes_printf("PPU REG!");
+    case 2:
+        // 扩展区
+        nes_printf("TODO");
+    case 0:
+        // 系统内存
+        return nes->nes_cpu.cpu_ram + ((uint16_t)(data & 0x07) << 8);
+    // case 3:
+    //     // 存档 SRAM区
+    //     return famicom->save_ram + ((uint16_t)(data & 0x1f) << 8);
+    case 4: case 5: case 6: case 7:
+        // 高一位为1, [$8000, $10000) 程序PRG-ROM区
+        return nes->nes_cpu.prg_banks[data >> 4] + ((uint16_t)(data & 0x0f) << 8);
+    }
+}
+
+static void nes_write_cpu(nes_t* nes,uint16_t address, uint8_t data){
+    switch (address >> 13){
+        case 0://$0000-$1FFF 2KB internal RAM + Mirrors of $0000-$07FF
+            nes->nes_cpu.cpu_ram[address & (uint16_t)0x07ff] = data;
+            return;
+        case 1://$2000-$3FFF NES PPU registers + Mirrors of $2000-2007 (repeats every 8 bytes)
+            nes_write_ppu_register(nes,address, data);
+            return;
+        case 2://$4000-$5FFF NES APU and I/O registers
+            if (address == 0x4016 || address == 0x4017)
+                nes_write_joypad(nes,data);
+            else if (address == 0x4014){
+                // nes_printf("nes_write DMA %04X %02X\n",address,data);
+                if (nes->nes_ppu.oam_addr) {
+                    uint8_t* dst = nes->nes_ppu.oam_data;
+                    const uint8_t len = nes->nes_ppu.oam_addr;
+                    const uint8_t* src = nes_get_dma_address(nes,data);
+                    memcpy(dst, src + len, len);
+                    memcpy(dst + len, src, 256 - len);
+                } else 
+                    memcpy(nes->nes_ppu.oam_data, nes_get_dma_address(nes,data), 256);
+                nes->nes_cpu.cycles += 513;
+                nes->nes_cpu.cycles += nes->nes_cpu.cycles & 1;
+            }else if (address < 0x4016){
+                nes_write_apu_register(nes, address,data);
+            }else
+                nes_printf("nes_write address %04X not sPport\n",address);
+            return;
+        case 3://$6000-$7FFF SRAM
+#if (NES_USE_SRAM == 1)
+            nes->nes_rom.sram[address & (uint16_t)0x1fff] = data;
+#endif
+            return;
+        case 4: case 5: case 6: case 7:
+            nes->nes_mapper.mapper_write(nes, address, data);
+            // nes->nes_cpu.prg_banks[(address >> 13)-4][address & (uint16_t)0x1fff] = data;
+            return;
+        default :
+            nes_printf("nes_write_ppu_register error %04X %02X\n",address,data);
+            return;
+    }
+}
+
+#define NES_PUSH(nes,a)     nes_write_cpu(nes,0x100 + nes->nes_cpu.SP--,(a))
+#define NES_PUSHW(nes,a)    NES_PUSH(nes, (a) >> 8 ); NES_PUSH(nes, (a) & 0xff)
+
+#define NES_POP(nes)        nes_read_cpu(nes, 0x100 + ++(nes->nes_cpu.SP))
+
+#define NES_CHECK_N(x)      nes->nes_cpu.N = ((uint8_t)(x) & 0x80)>>7
+#define NES_CHECK_Z(x)      nes->nes_cpu.Z = ((uint8_t)(x) == 0)
+
+
+/* Adressing modes */
+
+//#Immediate
+static uint16_t nes_imm(nes_t* nes){
+    return nes->nes_cpu.PC++;
+}
+
+static uint16_t nes_rel(nes_t* nes){
+    const uint8_t data = nes_read_cpu(nes,nes->nes_cpu.PC++);
+    const uint16_t address = nes->nes_cpu.PC + (int8_t)data;
+    return address;
+}
+
+//ABS
+static uint16_t nes_abs(nes_t* nes){
+    uint16_t address = nes_read_cpu(nes,nes->nes_cpu.PC)|(uint16_t)nes_read_cpu(nes,nes->nes_cpu.PC + 1) << 8;
+    nes->nes_cpu.PC += 2;
+    return address;
+}
+
+//ABX
+static uint16_t nes_abx(nes_t* nes){
+    uint16_t address = nes_read_cpu(nes,nes->nes_cpu.PC)|(uint16_t)nes_read_cpu(nes,nes->nes_cpu.PC + 1) << 8;
+    nes->nes_cpu.PC += 2;
+    if (nes_opcode_table[nes->nes_cpu.opcode].ticks==4){
+        if ((address>>8) != ((address+nes->nes_cpu.X)>>8))nes->nes_cpu.cycles++;
+    }
+    return address + nes->nes_cpu.X;
+}
+
+//ABY
+static uint16_t nes_aby(nes_t* nes){
+    uint16_t address = nes_read_cpu(nes,nes->nes_cpu.PC)|(uint16_t)nes_read_cpu(nes,nes->nes_cpu.PC + 1) << 8;
+    nes->nes_cpu.PC += 2;
+    if (nes_opcode_table[nes->nes_cpu.opcode].ticks==4){
+        if ((address>>8) != ((address+nes->nes_cpu.Y)>>8))nes->nes_cpu.cycles++;
+    }
+    return address + nes->nes_cpu.Y;
+}
+
+static uint16_t nes_zp(nes_t* nes){
+    return (uint16_t)nes_read_cpu(nes,nes->nes_cpu.PC++);
+}
+
+static uint16_t nes_zpx(nes_t* nes){
+    uint16_t address = (uint16_t)nes_read_cpu(nes,nes->nes_cpu.PC++) + nes->nes_cpu.X;
+    return address & 0xFF;
+}
+
+static uint16_t nes_zpy(nes_t* nes){
+    uint16_t address = nes_read_cpu(nes,nes->nes_cpu.PC++) + nes->nes_cpu.Y;
+    return address & 0xFF;
+}
+
+static uint16_t nes_izx(nes_t* nes){
+    uint8_t address = nes_read_cpu(nes,nes->nes_cpu.PC++);
+    address += nes->nes_cpu.X;
+    return nes_read_cpu(nes,address)|(uint16_t)nes_read_cpu(nes,(uint8_t)(address + 1)) << 8;
+}
+
+static uint16_t nes_izy(nes_t* nes){
+    uint8_t value = nes_read_cpu(nes,nes->nes_cpu.PC++);
+    uint16_t address = nes_read_cpu(nes,value)|(uint16_t)nes_read_cpu(nes,(uint8_t)(value + 1)) << 8;
+    if (nes_opcode_table[nes->nes_cpu.opcode].ticks==5){
+        if ((address>>8) != ((address+nes->nes_cpu.Y)>>8))nes->nes_cpu.cycles++;
+    }
+    return address + nes->nes_cpu.Y;
+}
+
+static uint16_t nes_ind(nes_t* nes){
+    uint16_t value1 = nes_read_cpu(nes,nes->nes_cpu.PC)|(uint16_t)nes_read_cpu(nes,(nes->nes_cpu.PC + 1)) << 8;
+    // 6502 BUG
+    const uint16_t value2 = (value1 & (uint16_t)0xFF00)| ((value1 + 1) & (uint16_t)0x00FF);
+
+    uint16_t address = nes_read_cpu(nes,value1)|(uint16_t)nes_read_cpu(nes,value2) << 8;
+    nes->nes_cpu.PC+=2;
+    return address;
+}
+
+
+/* Logical and arithmetic commands: */
+
+/* 
+    and accumulator A<--A&M NZ
+    A := A & {adr}
+    N  V  U  B  D  I  Z  C
+    *                 *
+*/
+static void nes_and(nes_t* nes){
+    nes->nes_cpu.A &= nes_read_cpu(nes,nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes));
+    NES_CHECK_N(nes->nes_cpu.A);
+    NES_CHECK_Z(nes->nes_cpu.A);
+}
+
+/* 
+    or accumulator A<--A|M NZ
+    A :=A or {adr}
+    N  V  U  B  D  I  Z  C
+    *                 *
+*/
+static void nes_ora(nes_t* nes){
+    nes->nes_cpu.A |= nes_read_cpu(nes,nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes));
+    NES_CHECK_N(nes->nes_cpu.A);
+    NES_CHECK_Z(nes->nes_cpu.A);
+}
+
+/* 
+    exclusive-or accumulator A<--A^M NZ
+    A := A exor {adr}
+    N  V  U  B  D  I  Z  C
+    *                 *
+*/
+static void nes_eor(nes_t* nes){
+    nes->nes_cpu.A ^= nes_read_cpu(nes,nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes));
+    NES_CHECK_N(nes->nes_cpu.A);
+    NES_CHECK_Z(nes->nes_cpu.A);
+}
+
+// A:=A+{adr}
+// N  V  U  B  D  I  Z  C
+// *  *              *  *
+static void nes_adc(nes_t* nes){
+    const uint8_t src = nes_read_cpu(nes,nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes));
+    const uint16_t result16 = nes->nes_cpu.A + src + nes->nes_cpu.C;
+    if (result16 >> 8)nes->nes_cpu.C = 1;
+    else nes->nes_cpu.C = 0;
+    const uint8_t result8 = (uint8_t)result16;
+    if (!((nes->nes_cpu.A ^ src) & 0x80) && ((nes->nes_cpu.A ^ result8) & 0x80)) nes->nes_cpu.V = 1;
+    else nes->nes_cpu.V = 0;
+    nes->nes_cpu.A = result8;
+    NES_CHECK_N(nes->nes_cpu.A);
+    NES_CHECK_Z(nes->nes_cpu.A);
+}
+
+// A:=A-{adr}
+
+// EB
+// SBC (SBC) [SBC]
+// The same as the legal opcode $E9 (SBC #byte)
+// Status flags: N,V,Z,C
+
+// N  V  U  B  D  I  Z  C
+// *  *              *  *
+static void nes_sbc(nes_t* nes){
+    const uint8_t src = nes_read_cpu(nes,nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes));
+    const uint16_t result16 = nes->nes_cpu.A - src - !nes->nes_cpu.C;
+    if (!(result16 >> 8))nes->nes_cpu.C = 1;
+    else nes->nes_cpu.C = 0;
+    const uint8_t result8 = (uint8_t)result16;
+    if (((nes->nes_cpu.A ^ src) & 0x80) && ((nes->nes_cpu.A ^ result8) & 0x80)) nes->nes_cpu.V = 1;
+    else nes->nes_cpu.V = 0;
+    nes->nes_cpu.A = result8;
+    NES_CHECK_N(nes->nes_cpu.A);
+    NES_CHECK_Z(nes->nes_cpu.A);
+}
+
+// A-{adr}
+// N  V  U  B  D  I  Z  C
+// *                 *  *
+static void nes_cmp(nes_t* nes){
+    const uint16_t value = (uint16_t)nes->nes_cpu.A - (uint16_t)nes_read_cpu(nes,nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes));
+    if (!(value & 0x8000))nes->nes_cpu.C = 1;
+    else nes->nes_cpu.C = 0;
+    NES_CHECK_N((uint8_t)value);
+    NES_CHECK_Z((uint8_t)value);
+}
+
+// X-{adr}
+// N  V  U  B  D  I  Z  C
+// *                 *  *
+static void nes_cpx(nes_t* nes){
+    const uint16_t value = (uint16_t)nes->nes_cpu.X - (uint16_t)nes_read_cpu(nes,nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes));
+    if (!(value & 0x8000))nes->nes_cpu.C = 1;
+    else nes->nes_cpu.C = 0;
+    NES_CHECK_N((uint8_t)value);
+    NES_CHECK_Z((uint8_t)value);
+}
+
+// Y-{adr}
+// N  V  U  B  D  I  Z  C
+// *                 *  *
+static void nes_cpy(nes_t* nes){
+    const uint16_t value = (uint16_t)nes->nes_cpu.Y - (uint16_t)nes_read_cpu(nes,nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes));
+    if (!(value & 0x8000))nes->nes_cpu.C = 1;
+    else nes->nes_cpu.C = 0;
+    NES_CHECK_N((uint8_t)value);
+    NES_CHECK_Z((uint8_t)value);
+}
+
+// {adr}:={adr}-1
+// N  V  U  B  D  I  Z  C
+// *                 *  
+static void nes_dec(nes_t* nes){
+    uint16_t address = nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    uint8_t data = nes_read_cpu(nes,address);
+    data--;
+    nes_write_cpu(nes,address, data);
+    NES_CHECK_N(data);
+    NES_CHECK_Z(data);
+}
+
+// X:=X-1
+// N  V  U  B  D  I  Z  C
+// *                 *  
+static void nes_dex(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    NES_CHECK_N(--nes->nes_cpu.X);
+    NES_CHECK_Z(nes->nes_cpu.X);
+}
+
+// Y:=Y-1
+// N  V  U  B  D  I  Z  C
+// *                 *  
+static void nes_dey(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    NES_CHECK_N(--nes->nes_cpu.Y);
+    NES_CHECK_Z(nes->nes_cpu.Y);
+}
+
+// {adr}:={adr}+1
+// N  V  U  B  D  I  Z  C
+// *                 *  
+static void nes_inc(nes_t* nes){
+    uint16_t address = nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    uint8_t data = nes_read_cpu(nes,address);
+    nes_write_cpu(nes,address,++data);
+    NES_CHECK_N(data);
+    NES_CHECK_Z(data);
+}
+
+// X:=X+1
+// N  V  U  B  D  I  Z  C
+// *                 *  
+static void nes_inx(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    NES_CHECK_N(++nes->nes_cpu.X);
+    NES_CHECK_Z(nes->nes_cpu.X);
+}
+
+// Y:=Y+1
+// N  V  U  B  D  I  Z  C
+// *                 *  
+static void nes_iny(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    NES_CHECK_N(++nes->nes_cpu.Y);
+    NES_CHECK_Z(nes->nes_cpu.Y);
+}
+
+// {adr}:={adr}*2
+// N  V  U  B  D  I  Z  C
+// *                 *  *
+static void nes_asl(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode){
+        uint16_t address = nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+        uint8_t value = nes_read_cpu(nes,address);
+        if (value & 0x80)nes->nes_cpu.C = 1;
+        else nes->nes_cpu.C = 0;
+        value <<= 1;
+        nes_write_cpu(nes,address,value);
+        NES_CHECK_N(value);
+        NES_CHECK_Z(value);
+    }else{
+        if (nes->nes_cpu.A&0x80)nes->nes_cpu.C = 1;
+        else nes->nes_cpu.C = 0;
+        nes->nes_cpu.A <<= 1;
+        NES_CHECK_N(nes->nes_cpu.A);
+        NES_CHECK_Z(nes->nes_cpu.A);
+    }
+}
+
+// {adr}:={adr}*2+C
+// N  V  U  B  D  I  Z  C
+// *                 *  *
+static void nes_rol(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode){
+        uint16_t address = nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+        uint8_t saveflags=nes->nes_cpu.C;
+        uint8_t value = nes_read_cpu(nes,address);
+        nes->nes_cpu.P= (nes->nes_cpu.P & 0xfe) | ((value>>7) & 0x01);
+        value <<= 1;
+        value |= saveflags;
+        nes_write_cpu(nes,address,value);
+        NES_CHECK_N(value);
+        NES_CHECK_Z(value);
+    }else{
+        uint8_t saveflags=nes->nes_cpu.C;
+        nes->nes_cpu.P= (nes->nes_cpu.P & 0xfe) | ((nes->nes_cpu.A>>7) & 0x01);
+        nes->nes_cpu.A <<= 1;
+        nes->nes_cpu.A |= saveflags;
+        NES_CHECK_N(nes->nes_cpu.A);
+        NES_CHECK_Z(nes->nes_cpu.A);
+    }
+}
+
+// {adr}:={adr}/2
+// N  V  U  B  D  I  Z  C
+// *                 *  *
+static void nes_lsr(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode){
+        uint16_t address = nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+        uint8_t value = nes_read_cpu(nes,address);
+        if (value & 1)nes->nes_cpu.C = 1;
+        else nes->nes_cpu.C = 0;
+        value >>= 1;
+        nes_write_cpu(nes,address,value);
+        NES_CHECK_N(value);
+        NES_CHECK_Z(value);
+    }else{
+        if (nes->nes_cpu.A & 1)nes->nes_cpu.C = 1;
+        else nes->nes_cpu.C = 0;
+        nes->nes_cpu.A >>= 1;
+        NES_CHECK_N(nes->nes_cpu.A);
+        NES_CHECK_Z(nes->nes_cpu.A);
+    }
+}
+
+// {adr}:={adr}/2+C*128
+// N  V  U  B  D  I  Z  C
+// *                 *  *
+static void nes_ror(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) {
+        uint16_t address = nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+        uint8_t saveflags=nes->nes_cpu.C;
+        uint8_t value = nes_read_cpu(nes,address);
+        nes->nes_cpu.P= (nes->nes_cpu.P & 0xfe) | (value & 0x01);
+        value >>= 1;
+        if (saveflags) value |= 0x80;
+        nes_write_cpu(nes,address,value);
+        NES_CHECK_N(value);
+        NES_CHECK_Z(value);  
+    }else{
+        uint8_t saveflags=nes->nes_cpu.C;
+        nes->nes_cpu.P= (nes->nes_cpu.P & 0xfe) | (nes->nes_cpu.A & 0x01);
+        nes->nes_cpu.A >>= 1;
+        if (saveflags) nes->nes_cpu.A |= 0x80;
+        NES_CHECK_N(nes->nes_cpu.A);
+        NES_CHECK_Z(nes->nes_cpu.A);
+    }
+}
+
+/* Move commands: */
+
+// A:={adr}
+// N  V  U  B  D  I  Z  C
+// *                 *  
+static void nes_lda(nes_t* nes){
+    nes->nes_cpu.A = nes_read_cpu(nes,nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes));
+    NES_CHECK_N(nes->nes_cpu.A);
+    NES_CHECK_Z(nes->nes_cpu.A);
+}
+
+// {adr}:=A
+static void nes_sta(nes_t* nes){
+    nes_write_cpu(nes,nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes),nes->nes_cpu.A);
+}
+
+// X:={adr}
+// N  V  U  B  D  I  Z  C
+// *                 *  
+static void nes_ldx(nes_t* nes){
+    nes->nes_cpu.X = nes_read_cpu(nes,nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes));
+    NES_CHECK_N(nes->nes_cpu.X);
+    NES_CHECK_Z(nes->nes_cpu.X);
+}
+
+// {adr}:=X
+static void nes_stx(nes_t* nes){
+    nes_write_cpu(nes,nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes),nes->nes_cpu.X);
+}
+
+// Y:={adr}
+// N  V  U  B  D  I  Z  C
+// *                 *  
+static void nes_ldy(nes_t* nes){
+    nes->nes_cpu.Y = nes_read_cpu(nes,nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes));
+    NES_CHECK_N(nes->nes_cpu.Y);
+    NES_CHECK_Z(nes->nes_cpu.Y);
+}
+
+// {adr}:=Y
+static void nes_sty(nes_t* nes){
+    nes_write_cpu(nes,nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes),nes->nes_cpu.Y);
+}
+
+// X:=A
+// N  V  U  B  D  I  Z  C
+// *                 *  
+static void nes_tax(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    nes->nes_cpu.X=nes->nes_cpu.A;
+    NES_CHECK_N(nes->nes_cpu.X);
+    NES_CHECK_Z(nes->nes_cpu.X);
+}
+
+// A:=X
+// N  V  U  B  D  I  Z  C
+// *                 *  
+static void nes_txa(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    nes->nes_cpu.A=nes->nes_cpu.X;
+    NES_CHECK_N(nes->nes_cpu.A);
+    NES_CHECK_Z(nes->nes_cpu.A);
+}
+
+// Y:=A
+// N  V  U  B  D  I  Z  C
+// *                 *  
+static void nes_tay(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    nes->nes_cpu.Y=nes->nes_cpu.A;
+    NES_CHECK_N(nes->nes_cpu.Y);
+    NES_CHECK_Z(nes->nes_cpu.Y);
+}
+
+// A:=Y
+// N  V  U  B  D  I  Z  C
+// *                 *  
+static void nes_tya(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    nes->nes_cpu.A=nes->nes_cpu.Y;
+    NES_CHECK_N(nes->nes_cpu.A);
+    NES_CHECK_Z(nes->nes_cpu.A);
+}
+
+// X:=S
+// N  V  U  B  D  I  Z  C
+// *                 *  
+static void nes_tsx(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    nes->nes_cpu.X=nes->nes_cpu.SP;
+    NES_CHECK_N(nes->nes_cpu.X);
+    NES_CHECK_Z(nes->nes_cpu.X);
+}
+
+// S:=X
+static void nes_txs(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    nes->nes_cpu.SP=nes->nes_cpu.X;
+}
+
+// A:=+(S)
+// N  V  U  B  D  I  Z  C
+// *                 *  
+static void nes_pla(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    nes->nes_cpu.A = NES_POP(nes);
+    NES_CHECK_N(nes->nes_cpu.A);
+    NES_CHECK_Z(nes->nes_cpu.A);
+}
+
+// (S)-:=A
+static void nes_pha(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    NES_PUSH(nes,nes->nes_cpu.A);
+}
+
+// P:=+(S)
+// N  V  U  B  D  I  Z  C
+// *  *        *  *  *  *
+static void nes_plp(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    nes->nes_cpu.P = NES_POP(nes);
+    // nes->nes_cpu.B=0;
+}
+
+// (S)-:=P
+static void nes_php(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    NES_PUSH(nes,nes->nes_cpu.P);
+}
+
+// Jump/Flag commands:
+static inline void nes_branch(nes_t* nes) {
+    const uint16_t pc_old = nes->nes_cpu.PC;
+    nes->nes_cpu.PC = nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    nes->nes_cpu.cycles++;
+    nes->nes_cpu.cycles += (nes->nes_cpu.PC ^ pc_old) >> 8 & 1;
+}
+
+// branch on N=0
+static void nes_bpl(nes_t* nes){
+    if (nes->nes_cpu.N==0){
+        nes_branch(nes);
+    } else nes->nes_cpu.PC++;
+}
+
+// branch on N=1
+static void nes_bmi(nes_t* nes){
+    if (nes->nes_cpu.N){
+        nes_branch(nes);
+    } else nes->nes_cpu.PC++;
+}
+
+// branch on V=0
+static void nes_bvc(nes_t* nes){
+    if (nes->nes_cpu.V==0){
+        nes_branch(nes);
+    } else nes->nes_cpu.PC++;
+}
+
+// branch on V=1
+static void nes_bvs(nes_t* nes){
+    if (nes->nes_cpu.V){
+        nes_branch(nes);
+    } else nes->nes_cpu.PC++;
+}
+
+// branch on C=0
+static void nes_bcc(nes_t* nes){
+    if (nes->nes_cpu.C==0){
+        nes_branch(nes);
+    } else nes->nes_cpu.PC++;
+}
+
+// branch on C=1
+static void nes_bcs(nes_t* nes){
+    if (nes->nes_cpu.C){
+        nes_branch(nes);
+    } else nes->nes_cpu.PC++;
+}
+
+// branch on Z=0
+static void nes_bne(nes_t* nes){
+    if (nes->nes_cpu.Z==0){
+        nes_branch(nes);
+    } else nes->nes_cpu.PC++;
+}
+
+// branch on Z=1
+static void nes_beq(nes_t* nes){
+    if (nes->nes_cpu.Z){
+        nes_branch(nes);
+    } else nes->nes_cpu.PC++;
+}
+
+// (S)-:=PC,P PC:=($FFFE)
+// N  V  U  B  D  I  Z  C
+//          1     1
+static void nes_brk(nes_t* nes){
+    nes->nes_cpu.PC ++;
+    if (nes->nes_cpu.I==0){
+        NES_PUSHW(nes,nes->nes_cpu.PC-1);
+        NES_PUSH(nes,nes->nes_cpu.P);
+        // nes->nes_cpu.B = 1;
+        nes->nes_cpu.I = 1;
+        nes->nes_cpu.PC = nes_read_cpu(nes,NES_VERCTOR_IRQBRK)|(uint16_t)nes_read_cpu(nes,NES_VERCTOR_IRQBRK + 1) << 8;
+    }
+}
+
+// P,PC:=+(S)
+// N  V  U  B  D  I  Z  C
+// *  *        *  *  *  *
+static void nes_rti(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    nes->nes_cpu.P = NES_POP(nes);
+    nes->nes_cpu.U = 1;
+    nes->nes_cpu.B = 0;
+    nes->nes_cpu.PC = (uint16_t)NES_POP(nes);
+    nes->nes_cpu.PC |= (uint16_t)NES_POP(nes) << 8;
+}
+
+// (S)-:=PC PC:={adr}
+static void nes_jsr(nes_t* nes){
+    uint16_t address = nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    NES_PUSHW(nes,nes->nes_cpu.PC-1);
+    nes->nes_cpu.PC = address;
+}
+
+// PC:=+(S)
+static void nes_rts(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    nes->nes_cpu.PC = (uint16_t)NES_POP(nes);
+    nes->nes_cpu.PC |= (uint16_t)NES_POP(nes) << 8;
+    nes->nes_cpu.PC++;
+}
+
+// PC:={adr}
+static void nes_jmp(nes_t* nes){
+    nes->nes_cpu.PC=nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+}
+
+// N:=b7 V:=b6 Z:=A&{adr}
+// N  V  U  B  D  I  Z  C
+// *  *              *  
+static void nes_bit(nes_t* nes){
+    const uint8_t value = nes_read_cpu(nes,nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes));
+    NES_CHECK_Z(value & nes->nes_cpu.A);
+    if (value & (uint8_t)(1 << 6)) nes->nes_cpu.V = 1;
+    else nes->nes_cpu.V = 0;
+    NES_CHECK_N(value);
+}
+
+// C:=0
+// N  V  U  B  D  I  Z  C
+//                      0
+static void nes_clc(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    nes->nes_cpu.C=0;
+}
+
+// C:=1
+// N  V  U  B  D  I  Z  C
+//                      1
+static void nes_sec(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    nes->nes_cpu.C=1;
+}
+
+// D:=0
+// N  V  U  B  D  I  Z  C
+//             0         
+static void nes_cld(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    nes->nes_cpu.D=0;
+}
+
+// D:=1
+// N  V  U  B  D  I  Z  C
+//             1         
+static void nes_sed(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    nes->nes_cpu.D=1;
+}
+
+// I:=0
+// N  V  U  B  D  I  Z  C
+//                0      
+static void nes_cli(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    nes->nes_cpu.I=0;
+}
+
+// I:=1
+// N  V  U  B  D  I  Z  C
+//                1      
+static void nes_sei(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    nes->nes_cpu.I=1;
+}
+
+// V:=0
+// N  V  U  B  D  I  Z  C
+//    0                  
+static void nes_clv(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    nes->nes_cpu.V=0;
+}
+
+// DOP (NOP) [SKB] TOP (NOP) [SKW]
+// No operation . The argument has no signifi-cance. Status
+// flags: -
+static void nes_nop(nes_t* nes){
+    if (nes_opcode_table[nes->nes_cpu.opcode].addressing_mode) nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+}
+
+
+// Illegal opcodes:
+
+// {adr}:={adr}*2 A:=A or {adr}	
+// SLO (SLO) [ASO]
+// Shift left one bit in memory, then OR accumulator with memory. =
+// Status flags: N,Z,C
+// N  V  U  B  D  I  Z  C
+// *                 *  *
+static void nes_slo(nes_t* nes){
+    uint16_t address = nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    uint8_t data = nes_read_cpu(nes,address);
+    if (data & 0x80)nes->nes_cpu.C = 1;
+    else nes->nes_cpu.C = 0;
+    data <<= 1;
+    nes_write_cpu(nes,address,data);
+
+    nes->nes_cpu.A |= data;
+    NES_CHECK_N(nes->nes_cpu.A);
+    NES_CHECK_Z(nes->nes_cpu.A);
+}
+
+// {adr}:={adr}rol A:=A and {adr}
+// RLA (RLA) [RLA]
+// Rotate one bit left in memory, then AND accumulator with memory. Status
+// flags: N,Z,C
+// N  V  U  B  D  I  Z  C
+// *                 *  *
+static void nes_rla(nes_t* nes){
+    uint16_t address = nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    uint8_t saveflags=nes->nes_cpu.C;
+    uint8_t value = nes_read_cpu(nes,address);
+    nes->nes_cpu.P= (nes->nes_cpu.P & 0xfe) | ((value>>7) & 0x01);
+    value <<= 1;
+    value |= saveflags;
+    nes_write_cpu(nes,address,value);
+
+    nes->nes_cpu.A &= value;
+    NES_CHECK_N(nes->nes_cpu.A);
+    NES_CHECK_Z(nes->nes_cpu.A);
+}
+
+// {adr}:={adr}/2 A:=A exor {adr}
+// SRE (SRE) [LSE]
+// Shift right one bit in memory, then EOR accumulator with memory. Status
+// flags: N,Z,C
+// N  V  U  B  D  I  Z  C
+// *                 *  *
+static void nes_sre(nes_t* nes){
+    uint16_t address = nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    uint8_t data = nes_read_cpu(nes,address);
+    if (data & 1)nes->nes_cpu.C = 1;
+    else nes->nes_cpu.C = 0;
+    data >>= 1;
+    nes_write_cpu(nes,address,data);
+
+    nes->nes_cpu.A ^= data;
+    NES_CHECK_N(nes->nes_cpu.A);
+    NES_CHECK_Z(nes->nes_cpu.A);
+}
+
+// {adr}:={adr}ror A:=A adc {adr}
+// RRA (RRA) [RRA]
+// Rotate one bit right in memory, then add memory to accumulator (with
+// carry).
+// Status flags: N,V,Z,C
+// N  V  U  B  D  I  Z  C
+// *  *              *  *
+static void nes_rra(nes_t* nes){
+    uint16_t address = nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    uint8_t saveflags=nes->nes_cpu.C;
+    uint8_t value = nes_read_cpu(nes,address);
+    nes->nes_cpu.P= (nes->nes_cpu.P & 0xfe) | (value & 0x01);
+    value >>= 1;
+    if (saveflags) value |= 0x80;
+    nes_write_cpu(nes,address,value);
+
+    const uint16_t result16 = nes->nes_cpu.A + value + nes->nes_cpu.C;
+    if (result16 >> 8)nes->nes_cpu.C = 1;
+    else nes->nes_cpu.C = 0;
+    const uint8_t result8 = (uint8_t)result16;
+    if (!((nes->nes_cpu.A ^ value) & 0x80) && ((nes->nes_cpu.A ^ result8) & 0x80)) nes->nes_cpu.V = 1;
+    else nes->nes_cpu.V = 0;
+    nes->nes_cpu.A = result8;
+    NES_CHECK_N(nes->nes_cpu.A);
+    NES_CHECK_Z(nes->nes_cpu.A);
+}
+
+// {adr}:=A&X
+// AAX (SAX) [AXS]
+// AND X register with accumulator and store result in memory. Status
+// flags: N,Z
+
+static void nes_sax(nes_t* nes){
+    nes_write_cpu(nes,nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes),nes->nes_cpu.A & nes->nes_cpu.X);
+}
+
+// A,X:={adr}
+
+// AB
+// ATX (LXA) [OAL]
+// AND byte with accumulator, then transfer accumulator to X register.
+// Status flags: N,Z
+
+// A7
+// LAX (LAX) [LAX]
+// Load accumulator and X register with memory.
+// Status flags: N,Z
+// N  V  U  B  D  I  Z  C
+// *                 *  
+static void nes_lax(nes_t* nes){
+    nes->nes_cpu.A = nes_read_cpu(nes,nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes));
+    nes->nes_cpu.X = nes->nes_cpu.A;
+    NES_CHECK_N(nes->nes_cpu.A);
+    NES_CHECK_Z(nes->nes_cpu.A);
+}
+
+// {adr}:={adr}-1 A-{adr}
+// DCP (DCP) [DCM]
+// Subtract 1 from memory (without borrow).
+// Status flags: C
+// N  V  U  B  D  I  Z  C
+// *                 *  *
+static void nes_dcp(nes_t* nes){
+    uint16_t address = nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    uint8_t data = nes_read_cpu(nes,address);
+    data--;
+    nes_write_cpu(nes,address,data);
+    const uint16_t result16 = (uint16_t)nes->nes_cpu.A - (uint16_t)data;
+
+    if (!(result16 & (uint16_t)0x8000))nes->nes_cpu.C = 1;
+    else nes->nes_cpu.C = 0;
+
+    NES_CHECK_N((uint8_t)result16);
+    NES_CHECK_Z((uint8_t)result16);
+}
+
+// {adr}:={adr}+1 A:=A-{adr}
+// ISC (ISB) [INS]
+// Increase memory by one, then subtract memory from accu-mulator (with
+// borrow). Status flags: N,V,Z,C
+// N  V  U  B  D  I  Z  C
+// *  *              *  *
+static void nes_isc(nes_t* nes){
+    uint16_t address = nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+    uint8_t data = nes_read_cpu(nes,address);
+    data++;
+    nes_write_cpu(nes,address,data);
+
+    const uint16_t result16 = nes->nes_cpu.A - data - !nes->nes_cpu.C;
+    if (!(result16 >> 8))nes->nes_cpu.C = 1;
+    else nes->nes_cpu.C = 0;
+    const uint8_t result8 = (uint8_t)result16;
+    if (((nes->nes_cpu.A ^ data) & 0x80) && ((nes->nes_cpu.A ^ result8) & 0x80)) nes->nes_cpu.V = 1;
+    else nes->nes_cpu.V = 0;
+    nes->nes_cpu.A = result8;
+    NES_CHECK_Z(nes->nes_cpu.A);
+    NES_CHECK_N(nes->nes_cpu.A);
+}
+
+// A:=A&#{imm}
+// AAC (ANC) [ANC]
+// AND byte with accumulator. If result is negative then carry is set.
+// Status flags: N,Z,C
+// N  V  U  B  D  I  Z  C
+// *                 *  *
+static void nes_anc(nes_t* nes){
+    nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+}
+
+// A:=(A&#{imm})/2
+// ASR (ASR) [ALR]
+// AND byte with accumulator, then shift right one bit in accumu-lator.
+// Status flags: N,Z,C
+// N  V  U  B  D  I  Z  C
+// *                 *  *
+static void nes_alr(nes_t* nes){
+    nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+}
+
+// A:=(A&#{imm})/2
+// ARR (ARR) [ARR]
+// AND byte with accumulator, then rotate one bit right in accu-mulator and
+// check bit 5 and 6:
+// If both bits are 1: set C, clear V.
+// If both bits are 0: clear C and V.
+// If only bit 5 is 1: set V, clear C.
+// If only bit 6 is 1: set C and V.
+// Status flags: N,V,Z,C
+// alr
+// N  V  U  B  D  I  Z  C
+// *                 *  *
+// arr
+// N  V  U  B  D  I  Z  C
+// *  *              *  *
+static void nes_arr(nes_t* nes){
+    nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+}
+
+// A:=X&#{imm}
+// XAA (ANE) [XAA]
+// Exact operation unknown. Read the referenced documents for more
+// information and observations.
+// N  V  U  B  D  I  Z  C
+// *                 *  
+static void nes_xaa(nes_t* nes){
+    nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+}
+
+// X:=A&X-#{imm}
+// AXS (SBX) [SAX]
+// AND X register with accumulator and store result in X regis-ter, then
+// subtract byte from X register (without borrow).
+// Status flags: N,Z,C
+// N  V  U  B  D  I  Z  C
+// *                 *  *
+static void nes_axs(nes_t* nes){
+    nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+}
+
+
+// {adr}:=A&X&H
+// AXA (SHA) [AXA]
+// AND X register with accumulator then AND result with 7 and store in
+// memory. Status flags: -
+static void nes_ahx(nes_t* nes){
+    nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+}
+
+// {adr}:=Y&H
+// SYA (SHY) [SAY]
+// AND Y register with the high byte of the target address of the argument
+// + 1. Store the result in memory.
+// M =3D Y AND HIGH(arg) + 1
+// Status flags: -
+static void nes_shy(nes_t* nes){
+    nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+}
+
+// {adr}:=X&H
+// SXA (SHX) [XAS]
+// AND X register with the high byte of the target address of the argument
+// + 1. Store the result in memory.
+// M =3D X AND HIGH(arg) + 1
+// Status flags: -
+static void nes_shx(nes_t* nes){
+    nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+}
+
+// S:=A&X {adr}:=S&H
+// XAS (SHS) [TAS]
+// AND X register with accumulator and store result in stack pointer, then
+// AND stack pointer with the high byte of the target address of the
+// argument + 1. Store result in memory.
+// S =3D X AND A, M =3D S AND HIGH(arg) + 1
+// Status flags: -
+static void nes_tas(nes_t* nes){
+    nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+}
+
+// A,X,S:={adr}&S
+// LAR (LAE) [LAS]
+// AND memory with stack pointer, transfer result to accu-mulator, X
+// register and stack pointer.
+// Status flags: N,Z
+// N  V  U  B  D  I  Z  C
+// *                 *  
+static void nes_las(nes_t* nes){
+    nes_opcode_table[nes->nes_cpu.opcode].addressing_mode(nes);
+}
+
+// KIL (JAM) [HLT]
+// Stop program counter (processor lock P).
+// Status flags: -
+
+void nes_nmi(nes_t* nes){
+    NES_PUSHW(nes,nes->nes_cpu.PC);
+    NES_PUSH(nes,nes->nes_cpu.P);
+    nes->nes_cpu.I = 1;
+    nes->nes_cpu.PC = nes_read_cpu(nes,NES_VERCTOR_NMI)|(uint16_t)nes_read_cpu(nes,NES_VERCTOR_NMI + 1) << 8;
+    nes->nes_cpu.cycles += 7;
+}
+
+void nes_cpu_reset(nes_t* nes){
+    nes->nes_cpu.A = nes->nes_cpu.X = nes->nes_cpu.Y = nes->nes_cpu.P = 0;
+    nes->nes_cpu.U = 1;
+    // nes->nes_cpu.B = 1;
+    
+    nes->nes_cpu.P = 0x34;
+
+    nes->nes_cpu.SP = 0xFD;
+    nes->nes_cpu.PC = nes_read_cpu(nes,NES_VERCTOR_RESET)|(uint16_t)nes_read_cpu(nes,NES_VERCTOR_RESET + 1) << 8;
+    nes->nes_cpu.cycles = 7;
+}
+
+void nes_cpu_init(nes_t* nes){
+
+}
+
+static nes_opcode_t nes_opcode_table[] = {
+    {nes_brk,	NULL,	    7   },      // 0x00     BRK             7
+    {nes_ora,   nes_izx,    6   },      // 0x01     ORA     izx     6
+    {NULL,	    NULL,	    0   },      // 0x02     KIL
+    {nes_slo,	nes_izx,	8   },      // 0x03     SLO     izx     8
+    {nes_nop,	nes_zp,	    3   },      // 0x04     NOP     zp      3
+    {nes_ora,	nes_zp,	    3   },      // 0x05     ORA     zp      3
+    {nes_asl,	nes_zp,	    5   },      // 0x06     ASL     zp      5
+    {nes_slo,	nes_zp,	    5   },      // 0x07     SLO     zp      5
+    {nes_php,	NULL,	    3   },      // 0x08     PHP             3
+    {nes_ora,	nes_imm,	2   },      // 0x09     ORA     imm     2
+    {nes_asl,	NULL,	    2   },      // 0x0A     ASL             2
+    {nes_anc,	nes_imm,	2   },      // 0x0B     ANC     imm     2
+    {nes_nop,	nes_abs,	4   },      // 0x0C     NOP     abs     4
+    {nes_ora,	nes_abs,	4   },      // 0x0D     ORA     abs     4
+    {nes_asl,	nes_abs,	6   },      // 0x0E     ASL     abs     6
+    {nes_slo,	nes_abs,	6   },      // 0x0F     SLO     abs     6
+    {nes_bpl,	nes_rel,	2   },      // 0x10     BPL     rel     2*
+    {nes_ora,   nes_izy,    5   },      // 0x11     ORA     izy     5*
+    {NULL,      NULL,	    0   },      // 0x12     KIL
+    {nes_slo,	nes_izy,	8   },      // 0x13     SLO     izy     8
+    {nes_nop,	nes_zpx,	4   },      // 0x14     NOP     zpx     4
+    {nes_ora,	nes_zpx,	4   },      // 0x15     ORA     zpx     4
+    {nes_asl,	nes_zpx,	6   },      // 0x16     ASL     zpx     6
+    {nes_slo,	nes_zpx,	6   },      // 0x17     SLO     zpx     6
+    {nes_clc,	NULL,	    2   },      // 0x18     CLC             2
+    {nes_ora,	nes_aby,	4   },      // 0x19     ORA     aby     4*
+    {nes_nop,	NULL,	    2   },      // 0x1A     NOP             2
+    {nes_slo,	nes_aby,	7   },      // 0x1B     SLO     aby     7
+    {nes_nop,	nes_abx,	4   },      // 0x1C     NOP     abx     4*
+    {nes_ora,	nes_abx,	4   },      // 0x1D     ORA     abx     4*
+    {nes_asl,	nes_abx,	7   },      // 0x1E     ASL     abx     7
+    {nes_slo,	nes_abx,	7   },      // 0x1F     SLO     abx     7
+    {nes_jsr,	nes_abs,	6   },      // 0x20     JSR     abs     6
+    {nes_and,   nes_izx,    6   },      // 0x21     AND     izx     6
+    {NULL,      NULL,	    0   },      // 0x22     KIL
+    {nes_rla,	nes_izx,	8   },      // 0x23     RLA     izx     8
+    {nes_bit,	nes_zp,	    3   },      // 0x24     BIT     zp      3
+    {nes_and,	nes_zp,     3   },      // 0x25     AND     zp      3
+    {nes_rol,	nes_zp,     5   },      // 0x26     ROL     zp      5
+    {nes_rla,	nes_zp,     5   },      // 0x27     RLA     zp      5
+    {nes_plp,	NULL,	    4   },      // 0x28     PLP             4
+    {nes_and,	nes_imm,	2   },      // 0x29     AND     imm     2
+    {nes_rol,	NULL,	    2   },      // 0x2A     ROL             2
+    {nes_anc,	nes_imm,	2   },      // 0x2B     ANC     imm     2
+    {nes_bit,	nes_abs,	4   },      // 0x2C     BIT     abs     4
+    {nes_and,	nes_abs,	4   },      // 0x2D     AND     abs     4
+    {nes_rol,	nes_abs,	6   },      // 0x2E     ROL     abs     6
+    {nes_rla,	nes_abs,	6   },      // 0x2F     RLA     abs     6
+    {nes_bmi,	nes_rel,	2   },      // 0x30     BMI     rel     2*
+    {nes_and,   nes_izy,    5   },      // 0x31     AND     izy     5*
+    {NULL,      NULL,	    0   },      // 0x32     KIL
+    {nes_rla,	nes_izy,	8   },      // 0x33     RLA     izy     8
+    {nes_nop,	nes_zpx,	4   },      // 0x34     NOP     zpx     4
+    {nes_and,	nes_zpx,    4   },      // 0x35     AND     zpx     4
+    {nes_rol,	nes_zpx,    6   },      // 0x36     ROL     zpx     6
+    {nes_rla,	nes_zpx,    6   },      // 0x37     RLA     zpx     6
+    {nes_sec,	NULL,	    2   },      // 0x38     SEC             2
+    {nes_and,	nes_aby,	4   },      // 0x39     AND     aby     4*
+    {nes_nop,	NULL,	    2   },      // 0x3A     NOP             2
+    {nes_rla,	nes_aby,	7   },      // 0x3B     RLA     aby     7
+    {nes_nop,	nes_abx,	4   },      // 0x3C     NOP     abx     4*
+    {nes_and,	nes_abx,	4   },      // 0x3D     AND     abx     4*
+    {nes_rol,	nes_abx,	7   },      // 0x3E     ROL     abx     7
+    {nes_rla,	nes_abx,	7   },      // 0x3F     RLA     abx     7
+    {nes_rti,	NULL,	    6   },      // 0x40     RTI             6
+    {nes_eor,   nes_izx,    6   },      // 0x41     EOR     izx     6
+    {NULL,      NULL,	    0   },      // 0x42     KIL
+    {nes_sre,	nes_izx,	8   },      // 0x43     SRE     izx     8
+    {nes_nop,	nes_zp,	    3   },      // 0x44     NOP     zp      3
+    {nes_eor,	nes_zp,     3   },      // 0x45     EOR     zp      3
+    {nes_lsr,	nes_zp,     5   },      // 0x46     LSR     zp      5
+    {nes_sre,	nes_zp,     5   },      // 0x47     SRE     zp      5
+    {nes_pha,	NULL,	    3   },      // 0x48     PHA             3
+    {nes_eor,	nes_imm,	2   },      // 0x49     EOR     imm     2
+    {nes_lsr,	NULL,	    2   },      // 0x4A     LSR             2
+    {nes_alr,	nes_imm,	2   },      // 0x4B     ALR     imm     2
+    {nes_jmp,	nes_abs,	3   },      // 0x4C     JMP     abs     3
+    {nes_eor,	nes_abs,	4   },      // 0x4D     EOR     abs     4
+    {nes_lsr,	nes_abs,	6   },      // 0x4E     LSR     abs     6
+    {nes_sre,	nes_abs,	6   },      // 0x4F     SRE     abs     6
+    {nes_bvc,	nes_rel,	2   },      // 0x50     BVC     rel     2*
+    {nes_eor,   nes_izy,    5   },      // 0x51     EOR     izy     5*
+    {NULL,      NULL,	    0   },      // 0x52     KIL
+    {nes_sre,	nes_izy,	8   },      // 0x53     SRE     izy     8
+    {nes_nop,	nes_zpx,	4   },      // 0x54     NOP     zpx     4
+    {nes_eor,	nes_zpx,    4   },      // 0x55     EOR     zpx     4
+    {nes_lsr,	nes_zpx,    6   },      // 0x56     LSR     zpx     6
+    {nes_sre,	nes_zpx,    6   },      // 0x57     SRE     zpx     6
+    {nes_cli,	NULL,	    2   },      // 0x58     CLI             2
+    {nes_eor,	nes_aby,	4   },      // 0x59     EOR     aby     4*
+    {nes_nop,	NULL,	    2   },      // 0x5A     NOP             2
+    {nes_sre,	nes_aby,	7   },      // 0x5B     SRE     aby     7
+    {nes_nop,	nes_abx,	4   },      // 0x5C     NOP     abx     4*
+    {nes_eor,	nes_abx,	4   },      // 0x5D     EOR     abx     4*
+    {nes_lsr,	nes_abx,	7   },      // 0x5E     LSR     abx     7
+    {nes_sre,	nes_abx,	7   },      // 0x5F     SRE     abx     7
+    {nes_rts,	NULL,   	6   },      // 0x60     RTS             6
+    {nes_adc,   nes_izx,    6   },      // 0x61     ADC     izx     6
+    {NULL,      NULL,	    0   },      // 0x62     KIL
+    {nes_rra,	nes_izx,	8   },      // 0x63     RRA     izx     8
+    {nes_nop,	nes_zp,	    3   },      // 0x64     NOP     zp      3
+    {nes_adc,	nes_zp,     3   },      // 0x65     ADC     zp      3
+    {nes_ror,	nes_zp,     5   },      // 0x66     ROR     zp      5
+    {nes_rra,	nes_zp,     5   },      // 0x67     RRA     zp      5
+    {nes_pla,	NULL,	    4   },      // 0x68     PLA             4
+    {nes_adc,	nes_imm,	2   },      // 0x69     ADC     imm     2
+    {nes_ror,	NULL,	    2   },      // 0x6A     ROR             2
+    {nes_arr,	nes_imm,	2   },      // 0x6B     ARR     imm     2
+    {nes_jmp,	nes_ind,	5   },      // 0x6C     JMP     ind     5
+    {nes_adc,	nes_abs,	4   },      // 0x6D     ADC     abs     4
+    {nes_ror,	nes_abs,	6   },      // 0x6E     ROR     abs     6
+    {nes_rra,	nes_abs,	6   },      // 0x6F     RRA     abs     6
+    {nes_bvs,	nes_rel,   	2   },      // 0x70     BVS     rel     2*
+    {nes_adc,   nes_izy,    5   },      // 0x71     ADC     izy     5*
+    {NULL,      NULL,	    0   },      // 0x72     KIL
+    {nes_rra,	nes_izy,	8   },      // 0x73     RRA     izy     8
+    {nes_nop,	nes_zpx,	4   },      // 0x74     NOP     zpx     4
+    {nes_adc,	nes_zpx,    4   },      // 0x75     ADC     zpx     4
+    {nes_ror,	nes_zpx,    6   },      // 0x76     ROR     zpx     6
+    {nes_rra,	nes_zpx,    6   },      // 0x77     RRA     zpx     6
+    {nes_sei,	NULL,	    2   },      // 0x78     SEI             2
+    {nes_adc,	nes_aby,	4   },      // 0x79     ADC     aby     4*
+    {nes_nop,	NULL,	    2   },      // 0x7A     NOP             2
+    {nes_rra,	nes_aby,	7   },      // 0x7B     RRA     aby     7
+    {nes_nop,	nes_abx,	4   },      // 0x7C     NOP     abx     4*
+    {nes_adc,	nes_abx,	4   },      // 0x7D     ADC     abx     4*
+    {nes_ror,	nes_abx,	7   },      // 0x7E     ROR     abx     7
+    {nes_rra,	nes_abx,	7   },      // 0x7F     RRA     abx     7
+    {nes_nop,	nes_imm,   	2   },      // 0x80     NOP     imm     2
+    {nes_sta,   nes_izx,    6   },      // 0x81     STA     izx     6
+    {nes_nop,   nes_imm,	2   },      // 0x82     NOP     imm     2
+    {nes_sax,	nes_izx,	6   },      // 0x83     SAX     izx     6
+    {nes_sty,	nes_zp,	    3   },      // 0x84     STY     zp      3
+    {nes_sta,	nes_zp,     3   },      // 0x85     STA     zp      3
+    {nes_stx,	nes_zp,     3   },      // 0x86     STX     zp      3
+    {nes_sax,	nes_zp,     3   },      // 0x87     SAX     zp      3
+    {nes_dey,	NULL,	    2   },      // 0x88     DEY             2
+    {nes_nop,	nes_imm,	2   },      // 0x89     NOP     imm     2
+    {nes_txa,	NULL,	    2   },      // 0x8A     TXA             2
+    {nes_xaa,	nes_imm,	2   },      // 0x8B     XAA     imm     2
+    {nes_sty,	nes_abs,	4   },      // 0x8C     STY     abs     4
+    {nes_sta,	nes_abs,	4   },      // 0x8D     STA     abs     4
+    {nes_stx,	nes_abs,	4   },      // 0x8E     STX     abs     4
+    {nes_sax,	nes_abs,	4   },      // 0x8F     SAX     abs     4
+    {nes_bcc,	nes_rel,   	2   },      // 0x90     BCC     rel     2*
+    {nes_sta,   nes_izy,    6   },      // 0x91     STA     izy     6
+    {NULL,      NULL,	    0   },      // 0x92     KIL
+    {nes_ahx,	nes_izy,	6   },      // 0x93     AHX     izy     6
+    {nes_sty,	nes_zpx,	4   },      // 0x94     STY     zpx     4
+    {nes_sta,	nes_zpx,    4   },      // 0x95     STA     zpx     4
+    {nes_stx,	nes_zpy,    4   },      // 0x96     STX     zpy     4
+    {nes_sax,	nes_zpy,    4   },      // 0x97     SAX     zpy     4
+    {nes_tya,	NULL,	    2   },      // 0x98     TYA             2
+    {nes_sta,	nes_aby,	5   },      // 0x99     STA     aby     5
+    {nes_txs,	NULL,	    2   },      // 0x9A     TXS             2
+    {nes_tas,	nes_aby,	5   },      // 0x9B     TAS     aby     5
+    {nes_shy,	nes_abx,	5   },      // 0x9C     SHY     abx     5
+    {nes_sta,	nes_abx,	5   },      // 0x9D     STA     abx     5
+    {nes_shx,	nes_aby,	5   },      // 0x9E     SHX     aby     5
+    {nes_ahx,	nes_aby,	5   },      // 0x9F     AHX     aby     5
+    {nes_ldy,	nes_imm,   	2   },      // 0xA0     LDY     imm     2
+    {nes_lda,   nes_izx,    6   },      // 0xA1     LDA     izx     6
+    {nes_ldx,   nes_imm,	2   },      // 0xA2     LDX     imm     2
+    {nes_lax,	nes_izx,	6   },      // 0xA3     LAX     izx     6
+    {nes_ldy,	nes_zp,	    3   },      // 0xA4     LDY     zp      3
+    {nes_lda,	nes_zp,     3   },      // 0xA5     LDA     zp      3
+    {nes_ldx,	nes_zp,     3   },      // 0xA6     LDX     zp      3
+    {nes_lax,	nes_zp,     3   },      // 0xA7     LAX     zp      3
+    {nes_tay,	NULL,	    2   },      // 0xA8     TAY             2
+    {nes_lda,	nes_imm,	2   },      // 0xA9     LDA     imm     2
+    {nes_tax,	NULL,	    2   },      // 0xAA     TAX             2
+    {nes_lax,	nes_imm,	2   },      // 0xAB     LAX     imm     2
+    {nes_ldy,	nes_abs,	4   },      // 0xAC     LDY     abs     4
+    {nes_lda,	nes_abs,	4   },      // 0xAD     LDA     abs     4
+    {nes_ldx,	nes_abs,	4   },      // 0xAE     LDX     abs     4
+    {nes_lax,	nes_abs,	4   },      // 0xAF     LAX     abs     4
+    {nes_bcs,	nes_rel,   	2   },      // 0xB0     BCS     rel     2*
+    {nes_lda,   nes_izy,    5   },      // 0xB1     LDA     izy     5*
+    {NULL,      NULL,	    0   },      // 0xB2     KIL
+    {nes_lax,	nes_izy,	5   },      // 0xB3     LAX     izy     5*
+    {nes_ldy,	nes_zpx,	4   },      // 0xB4     LDY     zpx     4
+    {nes_lda,	nes_zpx,    4   },      // 0xB5     LDA     zpx     4
+    {nes_ldx,	nes_zpy,    4   },      // 0xB6     LDX     zpy     4
+    {nes_lax,	nes_zpy,    4   },      // 0xB7     LAX     zpy     4
+    {nes_clv,	NULL,	    2   },      // 0xB8     CLV             2
+    {nes_lda,	nes_aby,	4   },      // 0xB9     LDA     aby     4*
+    {nes_tsx,	NULL,	    2   },      // 0xBA     TSX             2
+    {nes_las,	nes_aby,	4   },      // 0xBB     LAS     aby     4*
+    {nes_ldy,	nes_abx,	4   },      // 0xBC     LDY     abx     4*
+    {nes_lda,	nes_abx,	4   },      // 0xBD     LDA     abx     4*
+    {nes_ldx,	nes_aby,	4   },      // 0xBE     LDX     aby     4*
+    {nes_lax,	nes_aby,	4   },      // 0xBF     LAX     aby     4*
+    {nes_cpy,	nes_imm,   	2   },      // 0xC0     CPY     imm     2
+    {nes_cmp,   nes_izx,    6   },      // 0xC1     CMP     izx     6
+    {nes_nop,   nes_imm,	2   },      // 0xC2     NOP     imm     2
+    {nes_dcp,	nes_izx,	8   },      // 0xC3     DCP     izx     8
+    {nes_cpy,	nes_zp,  	3   },      // 0xC4     CPY     zp      3
+    {nes_cmp,	nes_zp,     3   },      // 0xC5     CMP     zp      3
+    {nes_dec,	nes_zp,     5   },      // 0xC6     DEC     zp      5
+    {nes_dcp,	nes_zp,     5   },      // 0xC7     DCP     zp      5
+    {nes_iny,	NULL,	    2   },      // 0xC8     INY             2
+    {nes_cmp,	nes_imm,	2   },      // 0xC9     CMP     imm     2
+    {nes_dex,	NULL,	    2   },      // 0xCA     DEX             2
+    {nes_axs,	nes_imm,	2   },      // 0xCB     AXS     imm     2
+    {nes_cpy,	nes_abs,	4   },      // 0xCC     CPY     abs     4
+    {nes_cmp,	nes_abs,	4   },      // 0xCD     CMP     abs     4
+    {nes_dec,	nes_abs,	6   },      // 0xCE     DEC     abs     6
+    {nes_dcp,	nes_abs,	6   },      // 0xCF     DCP     abs     6
+    {nes_bne,	nes_rel,   	2   },      // 0xD0     BNE     rel     2*
+    {nes_cmp,   nes_izy,    5   },      // 0xD1     CMP     izy     5*
+    {NULL,      NULL,	    0   },      // 0xD2     KIL
+    {nes_dcp,	nes_izy,	8   },      // 0xD3     DCP     izy     8
+    {nes_nop,	nes_zpx,  	4   },      // 0xD4     NOP     zpx     4
+    {nes_cmp,	nes_zpx,    4   },      // 0xD5     CMP     zpx     4
+    {nes_dec,	nes_zpx,    6   },      // 0xD6     DEC     zpx     6
+    {nes_dcp,	nes_zpx,    6   },      // 0xD7     DCP     zpx     6
+    {nes_cld,	NULL,	    2   },      // 0xD8     CLD             2
+    {nes_cmp,	nes_aby,	4   },      // 0xD9     CMP     aby     4*
+    {nes_nop,	NULL,	    2   },      // 0xDA     NOP             2
+    {nes_dcp,	nes_aby,	7   },      // 0xDB     DCP     aby     7
+    {nes_nop,	nes_abx,	4   },      // 0xDC     NOP     abx     4*
+    {nes_cmp,	nes_abx,	4   },      // 0xDD     CMP     abx     4*
+    {nes_dec,	nes_abx,	7   },      // 0xDE     DEC     abx     7
+    {nes_dcp,	nes_abx,	7   },      // 0xDF     DCP     abx     7
+    {nes_cpx,	nes_imm,   	2   },      // 0xE0     CPX     imm     2
+    {nes_sbc,   nes_izx,    6   },      // 0xE1     SBC     izx     6
+    {nes_nop,   nes_imm,	2   },      // 0xE2     NOP     imm     2
+    {nes_isc,	nes_izx,	8   },      // 0xE3     ISC     izx     8
+    {nes_cpx,	nes_zp,  	3   },      // 0xE4     CPX     zp      3
+    {nes_sbc,	nes_zp,     3   },      // 0xE5     SBC     zp      3
+    {nes_inc,	nes_zp,     5   },      // 0xE6     INC     zp      5
+    {nes_isc,	nes_zp,     5   },      // 0xE7     ISC     zp      5
+    {nes_inx,	NULL,	    2   },      // 0xE8     INX             2
+    {nes_sbc,	nes_imm,	2   },      // 0xE9     SBC     imm     2
+    {nes_nop,	NULL,	    2   },      // 0xEA     NOP             2
+    {nes_sbc,	nes_imm,	2   },      // 0xEB     SBC     imm     2
+    {nes_cpx,	nes_abs,	4   },      // 0xEC     CPX     abs     4
+    {nes_sbc,	nes_abs,	4   },      // 0xED     SBC     abs     4
+    {nes_inc,	nes_abs,	6   },      // 0xEE     INC     abs     6
+    {nes_isc,	nes_abs,	6   },      // 0xEF     ISC     abs     6
+    {nes_beq,	nes_rel,   	2   },      // 0xF0     BEQ     rel     2*
+    {nes_sbc,   nes_izy,    5   },      // 0xF1     SBC     izy     5*
+    {NULL,      NULL,	    0   },      // 0xF2     KIL
+    {nes_isc,	nes_izy,	8   },      // 0xF3     ISC     izy     8
+    {nes_nop,	nes_zpx,  	4   },      // 0xF4     NOP     zpx     4
+    {nes_sbc,	nes_zpx,    4   },      // 0xF5     SBC     zpx     4
+    {nes_inc,	nes_zpx,    6   },      // 0xF6     INC     zpx     6
+    {nes_isc,	nes_zpx,    6   },      // 0xF7     ISC     zpx     6
+    {nes_sed,	NULL,	    2   },      // 0xF8     SED             2
+    {nes_sbc,	nes_aby,	4   },      // 0xF9     SBC     aby     4*
+    {nes_nop,	NULL,	    2   },      // 0xFA     NOP             2
+    {nes_isc,	nes_aby,	7   },      // 0xFB     ISC     aby     7
+    {nes_nop,	nes_abx,	4   },      // 0xFC     NOP     abx     4*
+    {nes_sbc,	nes_abx,	4   },      // 0xFD     SBC     abx     4*
+    {nes_inc,	nes_abx,	7   },      // 0xFE     INC     abx     7
+    {nes_isc,	nes_abx,	7   },      // 0xFF     ISC     abx     7
+};
+
+
+void nes_opcode(nes_t* nes,uint16_t ticks){
+    while (ticks > nes->nes_cpu.cycles){
+        nes->nes_cpu.opcode = nes_read_cpu(nes,nes->nes_cpu.PC++);
+        nes_opcode_table[nes->nes_cpu.opcode].instruction(nes);
+        nes->nes_cpu.cycles += nes_opcode_table[nes->nes_cpu.opcode].ticks;
+    }
+    nes->nes_cpu.cycles -= ticks;
+}
+
+

+ 46 - 0
components/nes/src/nes_mapper.c

@@ -0,0 +1,46 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022 Dozingfiretruck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+
+#include "nes.h"
+
+void nes_load_prgrom_8k(nes_t* nes,int des, int src) {
+    nes->nes_cpu.prg_banks[des] = nes->nes_rom.prg_rom + 8 * 1024 * src;
+}
+
+void nes_load_chrrom_1k(nes_t* nes,int des, int src) {
+    nes->nes_ppu.pattern_table[des] = nes->nes_rom.chr_rom + 1024 * src;
+}
+
+int nes_load_mapper(nes_t* nes){
+    switch (nes->nes_rom.mapper_number){
+        case 0 :
+            return nes_mapper0_init(nes);
+        case 2 :
+            return nes_mapper2_init(nes);
+        default :
+            nes_printf("mapper:%03d is unsupported\n",nes->nes_rom.mapper_number);
+            return NES_ERROR;
+    }
+}

+ 44 - 0
components/nes/src/nes_mapper/nes_mapper0.c

@@ -0,0 +1,44 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022 Dozingfiretruck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+
+#include "nes.h"
+
+static void nes_mapper_init(nes_t* nes){
+    const int mirror = nes->nes_rom.prg_rom_size & 2;
+    nes_load_prgrom_8k(nes,0, 0);
+    nes_load_prgrom_8k(nes,1, 1);
+    nes_load_prgrom_8k(nes,2, mirror+0);
+    nes_load_prgrom_8k(nes,3, mirror+1);
+
+    for (int i = 0; i < 8; i++){
+        nes_load_chrrom_1k(nes,i,i);
+    }
+}
+
+int nes_mapper0_init(nes_t* nes){
+    nes->nes_mapper.mapper_init = nes_mapper_init;
+    return 0;
+}
+

+ 54 - 0
components/nes/src/nes_mapper/nes_mapper2.c

@@ -0,0 +1,54 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022 Dozingfiretruck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+
+#include "nes.h"
+
+
+static void nes_mapper_init(nes_t* nes){
+    const int mirror = nes->nes_rom.prg_rom_size * 2;
+    nes_load_prgrom_8k(nes,0, 0);
+    nes_load_prgrom_8k(nes,1, 1);
+    nes_load_prgrom_8k(nes,2, mirror-2);
+    nes_load_prgrom_8k(nes,3, mirror-1);
+
+    for (int i = 0; i < 8; i++){
+        nes_load_chrrom_1k(nes,i,i);
+    }
+}
+
+static void nes_mapper_write(nes_t* nes, uint16_t address, uint8_t date) {
+    const int bank = (date % nes->nes_rom.prg_rom_size) * 2;
+    nes_load_prgrom_8k(nes, 0, bank + 0);
+    nes_load_prgrom_8k(nes, 1, bank + 1);
+}
+
+
+
+int nes_mapper2_init(nes_t* nes){
+    nes->nes_mapper.mapper_init = nes_mapper_init;
+    nes->nes_mapper.mapper_write = nes_mapper_write;
+    return 0;
+}
+

+ 202 - 0
components/nes/src/nes_ppu.c

@@ -0,0 +1,202 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022 Dozingfiretruck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+
+#include "nes.h"
+
+//https://www.nesdev.org/pal.txt
+#if (NES_COLOR_DEPTH == 32)
+// ARGB8888
+nes_color_t nes_palette[]={
+    0xFF757575, 0xFF271B8F, 0xFF0000AB, 0xFF47009F, 0xFF8F0077, 0xFFB0013, 0xFFA70000, 0xFF7F0B00,0xFF432F00, 0xFF004700, 0xFF005100, 0xFF003F17, 0xFF1B3F5F, 0xFF000000, 0xFF000000, 0xFF000000,
+    0xFFBCBCBC, 0xFF0073EF, 0xFF233BEF, 0xFF8300F3, 0xFFBF00BF, 0xFF7005B, 0xFFDB2B00, 0xFFCB4F0F,0xFF8B7300, 0xFF009700, 0xFF00AB00, 0xFF00933B, 0xFF00838B, 0xFF000000, 0xFF000000, 0xFF000000,
+    0xFFFFFFFF, 0xFF3FBFFF, 0xFF5F97FF, 0xFFA78BFD, 0xFFF77BFF, 0xFFF77B7, 0xFFFF7763, 0xFFFF9B3B,0xFFF3BF3F, 0xFF83D313, 0xFF4FDF4B, 0xFF58F898, 0xFF00EBDB, 0xFF000000, 0xFF000000, 0xFF000000,
+    0xFFFFFFFF, 0xFFABE7FF, 0xFFC7D7FF, 0xFFD7CBFF, 0xFFFFC7FF, 0xFFFC7DB, 0xFFFFBFB3, 0xFFFFDBAB,0xFFFFE7A3, 0xFFE3FFA3, 0xFFABF3BF, 0xFFB3FFCF, 0xFF9FFFF3, 0xFF000000, 0xFF000000, 0xFF000000,
+};
+#elif (NES_COLOR_DEPTH == 16)
+#if (NES_COLOR_SWAP == 0)
+// RGB565
+nes_color_t nes_palette[]={
+    0x73AE, 0x20D1, 0x0015, 0x4013, 0x880E, 0x0802, 0xA000, 0x7840,0x4160, 0x0220, 0x0280, 0x01E2, 0x19EB, 0x0000, 0x0000, 0x0000,
+    0xBDF7, 0x039D, 0x21DD, 0x801E, 0xB817, 0x000B, 0xD940, 0xCA61,0x8B80, 0x04A0, 0x0540, 0x0487, 0x0411, 0x0000, 0x0000, 0x0000,
+    0xFFFF, 0x3DFF, 0x5CBF, 0xA45F, 0xF3DF, 0x0BB6, 0xFBAC, 0xFCC7,0xF5E7, 0x8682, 0x4EE9, 0x5FD3, 0x075B, 0x0000, 0x0000, 0x0000,
+    0xFFFF, 0xAF3F, 0xC6BF, 0xD65F, 0xFE3F, 0x0E3B, 0xFDF6, 0xFED5,0xFF34, 0xE7F4, 0xAF97, 0xB7F9, 0x9FFE, 0x0000, 0x0000, 0x0000,
+};
+#else
+// RGB565_SWAP
+nes_color_t nes_palette[]={
+    0xAE73, 0xD120, 0x1500, 0x1340, 0x0E88, 0x0208, 0x00A0, 0x4078,0x6041, 0x2002, 0x8002, 0xE201, 0xEB19, 0x0000, 0x0000, 0x0000,
+    0xF7BD, 0x9D03, 0xDD21, 0x1E80, 0x17B8, 0x0B00, 0x40D9, 0x61CA,0x808B, 0xA004, 0x4005, 0x8704, 0x1104, 0x0000, 0x0000, 0x0000,
+    0xFFFF, 0xFF3D, 0xBF5C, 0x5FA4, 0xDFF3, 0xB60B, 0xACFB, 0xC7FC,0xE7F5, 0x8286, 0xE94E, 0xD35F, 0x5B07, 0x0000, 0x0000, 0x0000,
+    0xFFFF, 0x3FAF, 0xBFC6, 0x5FD6, 0x3FFE, 0x3B0E, 0xF6FD, 0xD5FE,0x34FF, 0xF4E7, 0x97AF, 0xF9B7, 0xFE9F, 0x0000, 0x0000, 0x0000,
+};
+#endif
+#endif
+
+static inline uint8_t nes_read_ppu_memory(nes_t* nes){
+    const uint16_t address = nes->nes_ppu.v_reg & (uint16_t)0x3FFF;
+    const uint16_t index = address >> 10;
+    const uint16_t offset = address & (uint16_t)0x3FF;
+    if (address < (uint16_t)0x3F00) {
+        uint8_t data = nes->nes_ppu.buffer;
+        nes->nes_ppu.buffer = nes->nes_ppu.chr_banks[index][offset];
+        return data;
+    } else {
+        nes->nes_ppu.buffer = nes->nes_ppu.chr_banks[index][offset];
+        return nes->nes_ppu.palette_indexes[address & (uint16_t)0x1f];
+    }
+}
+
+static inline void nes_write_ppu_memory(nes_t* nes,uint8_t data){
+    const uint16_t address = nes->nes_ppu.v_reg & (uint16_t)0x3FFF;
+    if (address < (uint16_t)0x3F00) {
+        const uint16_t index = address >> 10;
+        const uint16_t offset = address & (uint16_t)0x3FF;
+        nes->nes_ppu.chr_banks[index][offset] = data;
+    } else {
+        if (address & (uint16_t)0x03) {
+            nes->nes_ppu.palette_indexes[address & (uint16_t)0x1f] = data;
+        } else {
+            const uint16_t offset = address & (uint16_t)0x0f;
+            nes->nes_ppu.palette_indexes[offset] = data;
+            nes->nes_ppu.palette_indexes[offset | (uint16_t)0x10] = data;
+        }
+    }
+}
+
+// https://www.nesdev.org/wiki/PPU_registers
+uint8_t nes_read_ppu_register(nes_t* nes,uint16_t address){
+    uint8_t data = 0;
+    switch (address & (uint16_t)0x07){
+        case 2://Status ($2002) < read
+            // w:                  <- 0
+            data = nes->nes_ppu.ppu_status;
+            nes->nes_ppu.STATUS_V = 0;
+            nes->nes_ppu.w = 0;
+            break;
+        case 4://OAM data ($2004) <> read/write
+            data = nes->nes_ppu.oam_data[nes->nes_ppu.oam_addr];
+            break;
+        case 7://Data ($2007) <> read/write
+            data = nes_read_ppu_memory(nes);
+            nes->nes_ppu.v_reg += (uint16_t)((nes->nes_ppu.CTRL_I) ? 32 : 1);
+            break;
+        default :
+            nes_printf("nes_read_ppu_register error %04X\n",address);
+            return -1;
+    }
+    // nes_printf("nes_read_ppu_register %04X %02X\n",address,data);
+    return data;
+}
+
+void nes_write_ppu_register(nes_t* nes,uint16_t address, uint8_t data){
+    // nes_printf("nes_write_ppu_register %04X %02X\n",address,data);
+    switch (address & (uint16_t)0x07){
+        case 0://Controller ($2000) > write
+            // t: ...GH.. ........ <- d: ......GH
+            //    <used elsewhere> <- d: ABCDEF..
+            nes->nes_ppu.ppu_ctrl = data;
+            nes->nes_ppu.t.nametable = (data & 0x03);
+            break;
+        case 1://Mask ($2001) > write
+            nes->nes_ppu.ppu_mask = data;
+            break;
+        case 3://OAM address ($2003) > write
+            nes->nes_ppu.oam_addr = data;
+            break;
+        case 4://OAM data ($2004) <> read/write
+            nes->nes_ppu.oam_data[nes->nes_ppu.oam_addr++] = data;
+            break;
+        case 5://Scroll ($2005) >> write x2
+            if (nes->nes_ppu.w) {   // w is 1
+                // t: FGH..AB CDE..... <- d: ABCDEFGH
+                // w:                  <- 0
+                nes->nes_ppu.t.fine_y = (data & 0x07);
+                nes->nes_ppu.t.coarse_y = (data & 0xF8)>>3;
+                nes->nes_ppu.w = 0;
+            } else {                // w is 0
+                // t: ....... ...ABCDE <- d: ABCDE...
+                // x:              FGH <- d: .....FGH
+                // w:                  <- 1
+                nes->nes_ppu.t.coarse_x = (data & 0xF8)>>3;
+                nes->nes_ppu.x = (data & 0x07);
+                nes->nes_ppu.w = 1;
+            }
+            break;
+        case 6://Address ($2006) >> write x2
+            if (nes->nes_ppu.w) {   // w is 1
+                // t: ....... ABCDEFGH <- d: ABCDEFGH
+                // v: <...all bits...> <- t: <...all bits...>
+                // w:                  <- 0
+                nes->nes_ppu.t_reg = (nes->nes_ppu.t_reg & (uint16_t)0xFF00) | (uint16_t)data;
+                nes->nes_ppu.v_reg = nes->nes_ppu.t_reg;
+                nes->nes_ppu.w = 0;
+            } else {                // w is 0
+                // t: .CDEFGH ........ <- d: ..CDEFGH
+                //        <unused>     <- d: AB......
+                // t: Z...... ........ <- 0 (bit Z is cleared)
+                // w:                  <- 1
+                nes->nes_ppu.t_reg = (nes->nes_ppu.t_reg & (uint16_t)0xFF) | (((uint16_t)data & 0x3F) << 8);
+                nes->nes_ppu.w = 1;
+            }
+            break;
+        case 7://Data ($2007) <> read/write
+            nes_write_ppu_memory(nes,data);
+            nes->nes_ppu.v_reg += (uint16_t)((nes->nes_ppu.CTRL_I) ? 32 : 1);
+            break;
+        default :
+            nes_printf("nes_write_ppu_register error %04X %02X\n",address,data);
+            return;
+    }
+}
+
+void nes_ppu_init(nes_t *nes){
+    // four_screen
+    if (nes->nes_rom.four_screen) { 
+        nes->nes_ppu.name_table[0] = nes->nes_ppu.ppu_vram0;
+        nes->nes_ppu.name_table[1] = nes->nes_ppu.ppu_vram1;
+        nes->nes_ppu.name_table[2] = nes->nes_ppu.ppu_vram2;
+        nes->nes_ppu.name_table[3] = nes->nes_ppu.ppu_vram3;
+    }
+    // Vertical
+    else if (nes->nes_rom.mirroring_type) {
+        nes->nes_ppu.name_table[0] = nes->nes_ppu.ppu_vram0;
+        nes->nes_ppu.name_table[1] = nes->nes_ppu.ppu_vram1;
+        nes->nes_ppu.name_table[2] = nes->nes_ppu.ppu_vram0;
+        nes->nes_ppu.name_table[3] = nes->nes_ppu.ppu_vram1;
+    }
+    // Horizontal or mapper-controlled
+    else {
+        nes->nes_ppu.name_table[0] = nes->nes_ppu.ppu_vram0;
+        nes->nes_ppu.name_table[1] = nes->nes_ppu.ppu_vram0;
+        nes->nes_ppu.name_table[2] = nes->nes_ppu.ppu_vram1;
+        nes->nes_ppu.name_table[3] = nes->nes_ppu.ppu_vram1;
+    }
+    // mirrors
+    nes->nes_ppu.chr_banks[12] = nes->nes_ppu.name_table[0];
+    nes->nes_ppu.chr_banks[13] = nes->nes_ppu.name_table[1];
+    nes->nes_ppu.chr_banks[14] = nes->nes_ppu.name_table[2];
+    nes->nes_ppu.chr_banks[15] = nes->nes_ppu.name_table[3];
+}
+

+ 168 - 0
components/nes/src/nes_rom.c

@@ -0,0 +1,168 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022 Dozingfiretruck
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+
+#include "nes.h"
+
+#if (NES_USE_SRAM == 1)
+    #define SRAM_SIZE           (0x2000)
+#endif
+
+#if (NES_USE_FS == 1)
+nes_t* nes_load_file(const char* file_path ){
+    nes_header_info_t nes_header_info = {0};
+    nes_t* nes = NULL;
+
+    FILE* nes_file = nes_fopen(file_path, "rb");
+    if (!nes_file){
+        goto error;
+    } 
+    nes = (nes_t *)nes_malloc(sizeof(nes_t));
+    if (nes == NULL) {
+        goto error;
+    }
+    memset(nes, 0, sizeof(nes_t));
+
+#if (NES_USE_SRAM == 1)
+    nes->nes_rom.sram = (uint8_t*)nes_malloc(SRAM_SIZE);
+#endif
+    if (nes_fread(&nes_header_info, sizeof(nes_header_info), 1, nes_file)) {
+        if ( nes_memcmp( nes_header_info.identification, "NES\x1a", 4 )){
+            goto error;
+        }
+        if (nes_header_info.trainer){
+#if (NES_USE_SRAM == 1)
+            if (nes_fread(nes->nes_rom.sram, TRAINER_SIZE, 1, nes_file)==0){
+                goto error;
+            }
+#else
+            nes_fseek(nes_file, TRAINER_SIZE, SEEK_CUR);
+#endif
+        }
+        nes->nes_rom.prg_rom_size = ((nes_header_info.prg_rom_size_m << 8) & 0xF00) | nes_header_info.prg_rom_size_l;
+        nes->nes_rom.chr_rom_size = ((nes_header_info.prg_rom_size_m << 8) & 0xF00) | nes_header_info.chr_rom_size_l;
+        nes->nes_rom.mapper_number = ((nes_header_info.mapper_number_h << 8) & 0xF00) | ((nes_header_info.mapper_number_m << 4) & 0xF0) | (nes_header_info.mapper_number_l & 0x0F);
+        nes->nes_rom.mirroring_type = (nes_header_info.mirroring);
+        nes->nes_rom.four_screen = (nes_header_info.four_screen);
+        nes->nes_rom.save_ram = (nes_header_info.save);
+
+        nes->nes_rom.prg_rom = (uint8_t*)nes_malloc(PRG_ROM_UNIT_SIZE * nes->nes_rom.prg_rom_size);
+        if (nes->nes_rom.prg_rom == NULL) {
+            goto error;
+        }
+        if (nes_fread(nes->nes_rom.prg_rom, PRG_ROM_UNIT_SIZE, nes->nes_rom.prg_rom_size, nes_file)==0){
+            goto error;
+        }
+        nes->nes_rom.chr_rom = (uint8_t*)nes_malloc(CHR_ROM_UNIT_SIZE * (nes->nes_rom.chr_rom_size ? nes->nes_rom.chr_rom_size : 1));
+        if (nes->nes_rom.chr_rom == NULL) {
+            goto error;
+        }
+        if (nes->nes_rom.chr_rom_size){
+            if (nes_fread(nes->nes_rom.chr_rom, CHR_ROM_UNIT_SIZE, (nes->nes_rom.chr_rom_size), nes_file)==0){
+                goto error;
+            }
+        }
+    }else{
+        goto error;
+    }
+    nes_fclose(nes_file);
+    nes_init(nes);
+    nes_load_mapper(nes);
+    nes->nes_mapper.mapper_init(nes);
+    return nes;
+error:
+    if (nes_file){
+        nes_fclose(nes_file);
+    }
+    if (nes){
+        nes_rom_free(nes);
+    }
+    return NULL;
+}
+#endif
+
+// release
+int nes_rom_free(nes_t* nes){
+    if (nes->nes_rom.prg_rom){
+        nes_free(nes->nes_rom.prg_rom);
+    }
+    if (nes->nes_rom.chr_rom){
+        nes_free(nes->nes_rom.chr_rom);
+    }
+    if (nes->nes_rom.sram){
+        nes_free(nes->nes_rom.sram);
+    }
+    if (nes){
+        nes_free(nes);
+    }
+    return NES_OK;
+}
+
+nes_t* nes_load_rom(const uint8_t* nes_rom){
+    nes_t* nes = (nes_t *)nes_malloc(sizeof(nes_t));
+    if (nes == NULL) {
+        goto error;
+    }
+    memset(nes, 0, sizeof(nes_t));
+
+    nes_header_info_t* nes_header_info = (nes_header_info_t*)nes_rom;
+
+#if (NES_USE_SRAM == 1)
+    nes->nes_rom.sram = (uint8_t*)nes_malloc(SRAM_SIZE);
+#endif
+        if ( nes_memcmp( nes_header_info->identification, "NES\x1a", 4 )){
+            goto error;
+        }
+        uint8_t* nes_bin = nes_rom + sizeof(nes_header_info_t);
+        if (nes_header_info->trainer){
+#if (NES_USE_SRAM == 1)
+#else
+#endif
+            nes_bin += TRAINER_SIZE;
+        }
+        nes->nes_rom.prg_rom_size = ((nes_header_info->prg_rom_size_m << 8) & 0xF00) | nes_header_info->prg_rom_size_l;
+        nes->nes_rom.chr_rom_size = ((nes_header_info->prg_rom_size_m << 8) & 0xF00) | nes_header_info->chr_rom_size_l;
+        nes->nes_rom.mapper_number = ((nes_header_info->mapper_number_h << 8) & 0xF00) | ((nes_header_info->mapper_number_m << 4) & 0xF0) | (nes_header_info->mapper_number_l & 0x0F);
+        nes->nes_rom.mirroring_type = (nes_header_info->mirroring);
+        nes->nes_rom.four_screen = (nes_header_info->four_screen);
+        nes->nes_rom.save_ram = (nes_header_info->save);
+
+        nes->nes_rom.prg_rom = nes_bin;
+        nes_bin += PRG_ROM_UNIT_SIZE * nes->nes_rom.prg_rom_size;
+
+        if (nes->nes_rom.chr_rom_size){
+            nes->nes_rom.chr_rom = nes_bin;
+        }
+    nes_init(nes);
+    nes_load_mapper(nes);
+    nes->nes_mapper.mapper_init(nes);
+    return nes;
+error:
+    if (nes){
+        nes_rom_free(nes);
+    }
+    return NULL;
+}
+
+