Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/nes2wii.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--defines.h36
-rw-r--r--main.c90
-rw-r--r--nes2wii.h68
-rw-r--r--nes2wii.hex481
4 files changed, 376 insertions, 299 deletions
diff --git a/defines.h b/defines.h
index 4240b86..fe9039e 100644
--- a/defines.h
+++ b/defines.h
@@ -1,42 +1,42 @@
+#ifndef _DEFINES_H_
+#define _DEFINES_H_
+
#define F_CPU 20000000L
-#define twi_port PORTC
-#define twi_ddr DDRC
-#define twi_scl_pin 0
-#define twi_sda_pin 1
+#define TWI_PORT C
+#define TWI_SCL_PIN 0
+#define TWI_SDA_PIN 1
#define N64_ENABLED
-#define N64_PORT PORTD
-#define N64_PORT_DDR DDRD
-#define N64_PORT_PIN PIND
+#define N64_PORT D
#define N64_DATA_PIN 3
#define NES_ENABLED
-#define NES_PORT PORTA
-#define NES_PORT_DDR DDRA
-#define NES_PORT_PIN PINA
+#define NES_PORT A
#define NES_LATCH_PIN 0
#define NES_CLOCK_PIN 1
#define NES_DATA_PIN 2
#define SNES_ENABLED
-#define SNES_PORT PORTA
-#define SNES_PORT_DDR DDRA
-#define SNES_PORT_PIN PINA
+#define SNES_PORT A
#define SNES_LATCH_PIN 4
#define SNES_CLOCK_PIN 5
#define SNES_DATA_PIN 6
#define SMD_ENABLED
-#define SMD_SELECT_PORT PORTA
-#define SMD_SELECT_PORT_DDR DDRA
+#define SMD_SELECT_PORT A
#define SMD_SELECT_PIN 7
-#define SMD_DATA_PORT PORTC
-#define SMD_DATA_PORT_DDR DDRC
-#define SMD_DATA_PORT_PIN PINC
+#define SMD_DATA_PORT C
#define SMD_DATA0_PIN 2
#define SMD_DATA1_PIN 3
#define SMD_DATA2_PIN 4
#define SMD_DATA3_PIN 5
#define SMD_DATA4_PIN 6
#define SMD_DATA5_PIN 7
+
+#define RED_LED_PORT B
+#define RED_LED_PIN 4
+#define GREEN_LED_PORT B
+#define GREEN_LED_PIN 3
+
+#endif
diff --git a/main.c b/main.c
index 5fcf45e..55fda96 100644
--- a/main.c
+++ b/main.c
@@ -1,31 +1,8 @@
+#include "nes2wii.h"
#include "defines.h"
#include <util/delay.h>
#include "wiimote.h"
-#define WAIT(t) {TCNT0=0; while(TCNT0 < (F_CPU / 1000000UL) * t);}
-
-#define N64SEND(t) {N64_PORT_DDR |= (1<<N64_DATA_PIN); WAIT(t); N64_PORT_DDR &= ~(1<<N64_DATA_PIN);}
-#define N64SEND_1 {N64SEND(1); WAIT(3);}
-#define N64SEND_0 {N64SEND(3); WAIT(1);}
-#define N64SEND_STOP {N64SEND(1); WAIT(2);}
-#define N64SIGNAL (!((N64_PORT_PIN>>N64_DATA_PIN)&1))
-
-#define PRESS_A but_dat[5] &= 0b11101111; // BZL BB BY BA BX BZR BDL BDU
-#define PRESS_B but_dat[5] &= 0b10111111; // BZL BB BY BA BX BZR BDL BDU
-#define PRESS_X but_dat[5] &= 0b11110111; // BZL BB BY BA BX BZR BDL BDU
-#define PRESS_Y but_dat[5] &= 0b11011111; // BZL BB BY BA BX BZR BDL BDU
-#define PRESS_L but_dat[4] &= 0b11011111; // BDR BDD BLT B- BH B+ BRT 1
-#define PRESS_R but_dat[4] &= 0b11111101; // BDR BDD BLT B- BH B+ BRT 1
-#define PRESS_ZL but_dat[5] &= 0b01111111; // BZL BB BY BA BX BZR BDL BDU
-#define PRESS_ZR but_dat[5] &= 0b11111011; // BZL BB BY BA BX BZR BDL BDU
-#define PRESS_SELECT but_dat[4] &= 0b11101111; // BDR BDD BLT B- BH B+ BRT 1
-#define PRESS_START but_dat[4] &= 0b11111011; // BDR BDD BLT B- BH B+ BRT 1
-#define PRESS_UP but_dat[5] &= 0b11111110; // BZL BB BY BA BX BZR BDL BDU
-#define PRESS_DOWN but_dat[4] &= 0b10111111; // BDR BDD BLT B- BH B+ BRT 1
-#define PRESS_LEFT but_dat[5] &= 0b11111101; // BZL BB BY BA BX BZR BDL BDU
-#define PRESS_RIGHT but_dat[4] &= 0b01111111; // BDR BDD BLT B- BH B+ BRT 1
-
-
// classic controller id
const unsigned char classic_controller_id[6] = {0x00, 0x00, 0xA4, 0x20, 0x01, 0x01};
@@ -41,37 +18,39 @@ const unsigned char cal_data[32] = {
0x00, 0x00, 0x00, 0x00
};
+volatile int red_led_timer = 0;
+
uint8_t get_nes_gamepad()
{
uint8_t gamepad_data = 0;
- NES_PORT &= ~(1<<NES_LATCH_PIN); // Latch
+ NES_PORT_PORT &= ~(1<<NES_LATCH_PIN); // Latch
int b;
for (b = 0; b < 8; b++)
{
- NES_PORT &= ~(1<<NES_CLOCK_PIN); // Clock
+ NES_PORT_PORT &= ~(1<<NES_CLOCK_PIN); // Clock
_delay_us(10);
gamepad_data |= (((NES_PORT_PIN>>NES_DATA_PIN)&1)<<b);
- NES_PORT |= 1<<NES_CLOCK_PIN; // Clock
+ NES_PORT_PORT |= 1<<NES_CLOCK_PIN; // Clock
_delay_us(10);
}
- NES_PORT |= 1<<NES_LATCH_PIN; // Latch
+ NES_PORT_PORT |= 1<<NES_LATCH_PIN; // Latch
return gamepad_data;
}
uint16_t get_snes_gamepad()
{
uint16_t gamepad_data = 0;
- SNES_PORT &= ~(1<<SNES_LATCH_PIN); // Latch
+ SNES_PORT_PORT &= ~(1<<SNES_LATCH_PIN); // Latch
int b;
for (b = 0; b < 16; b++)
{
- SNES_PORT &= ~(1<<SNES_CLOCK_PIN); // Clock
+ SNES_PORT_PORT &= ~(1<<SNES_CLOCK_PIN); // Clock
_delay_us(10);
gamepad_data |= ((uint16_t)((SNES_PORT_PIN>>SNES_DATA_PIN)&1)<<b);
- SNES_PORT |= 1<<SNES_CLOCK_PIN; // Clock
+ SNES_PORT_PORT |= 1<<SNES_CLOCK_PIN; // Clock
_delay_us(10);
}
- SNES_PORT |= 1<<SNES_LATCH_PIN; // Latch
+ SNES_PORT_PORT |= 1<<SNES_LATCH_PIN; // Latch
return gamepad_data;
}
@@ -99,7 +78,7 @@ uint16_t get_smd_gamepad()
{
uint8_t gamepad_data_low = 0;
uint8_t gamepad_data_high = 0;
- SMD_SELECT_PORT &= ~(1<<SMD_SELECT_PIN); // Select - low
+ SMD_SELECT_PORT_PORT &= ~(1<<SMD_SELECT_PIN); // Select - low
_delay_us(50);
gamepad_data_low = ((SMD_DATA_PORT_PIN>>SMD_DATA0_PIN)&1)
| (((SMD_DATA_PORT_PIN>>SMD_DATA1_PIN)&1)<<1)
@@ -107,7 +86,7 @@ uint16_t get_smd_gamepad()
| (((SMD_DATA_PORT_PIN>>SMD_DATA3_PIN)&1)<<3)
| (((SMD_DATA_PORT_PIN>>SMD_DATA4_PIN)&1)<<4)
| (((SMD_DATA_PORT_PIN>>SMD_DATA5_PIN)&1)<<5);
- SMD_SELECT_PORT |= 1<<SMD_SELECT_PIN; // Select - high
+ SMD_SELECT_PORT_PORT |= 1<<SMD_SELECT_PIN; // Select - high
_delay_us(50);
gamepad_data_high = ((SMD_DATA_PORT_PIN>>SMD_DATA0_PIN)&1)
| (((SMD_DATA_PORT_PIN>>SMD_DATA1_PIN)&1)<<1)
@@ -120,24 +99,29 @@ uint16_t get_smd_gamepad()
void wiimote_query()
{
+ RED_ON;
+ red_led_timer = 0;
}
int main()
{
+ RED_LED_PORT_DDR |= (1<<RED_LED_PIN); // Red led, output
+ GREEN_LED_PORT_DDR |= (1<<GREEN_LED_PIN); // Red led, output
+ RED_ON;
TCCR0 |= _BV(CS00); // Timer
#ifdef N64_ENABLED
N64_PORT_DDR &= ~(1<<N64_DATA_PIN); // Input
- N64_PORT &= ~(1<<N64_DATA_PIN); // No pull-up (using external resistor)
+ N64_PORT_PORT &= ~(1<<N64_DATA_PIN); // No pull-up (using external resistor)
#endif
#ifdef SNES_ENABLED
SNES_PORT_DDR |= 1<<SNES_LATCH_PIN; // Latch, output
SNES_PORT_DDR |= 1<<SNES_CLOCK_PIN; // Clock, output
- SNES_PORT |= 1<<SNES_DATA_PIN; // Data, pull-up
+ SNES_PORT_PORT |= 1<<SNES_DATA_PIN; // Data, pull-up
#endif
#ifdef NES_ENABLED
NES_PORT_DDR |= 1<<NES_LATCH_PIN; // Latch, output
NES_PORT_DDR |= 1<<NES_CLOCK_PIN; // Clock, output
- NES_PORT |= 1<<NES_DATA_PIN; // Data, pull-up
+ NES_PORT_PORT |= 1<<NES_DATA_PIN; // Data, pull-up
#endif
#ifdef SMD_ENABLED
SMD_SELECT_PORT_DDR |= 1<<SMD_SELECT_PIN; // Select, output
@@ -147,12 +131,12 @@ int main()
SMD_DATA_PORT_DDR &= ~(1<<SMD_DATA3_PIN); // Data 3, input
SMD_DATA_PORT_DDR &= ~(1<<SMD_DATA4_PIN); // Data 4, input
SMD_DATA_PORT_DDR &= ~(1<<SMD_DATA5_PIN); // Data 5, input
- SMD_DATA_PORT |= 1<<SMD_DATA0_PIN; // Data 0, pull-up
- SMD_DATA_PORT |= 1<<SMD_DATA1_PIN; // Data 1, pull-up
- SMD_DATA_PORT |= 1<<SMD_DATA2_PIN; // Data 2, pull-up
- SMD_DATA_PORT |= 1<<SMD_DATA3_PIN; // Data 3, pull-up
- SMD_DATA_PORT |= 1<<SMD_DATA4_PIN; // Data 4, pull-up
- SMD_DATA_PORT |= 1<<SMD_DATA5_PIN; // Data 5, pull-up
+ SMD_DATA_PORT_PORT |= 1<<SMD_DATA0_PIN; // Data 0, pull-up
+ SMD_DATA_PORT_PORT |= 1<<SMD_DATA1_PIN; // Data 1, pull-up
+ SMD_DATA_PORT_PORT |= 1<<SMD_DATA2_PIN; // Data 2, pull-up
+ SMD_DATA_PORT_PORT |= 1<<SMD_DATA3_PIN; // Data 3, pull-up
+ SMD_DATA_PORT_PORT |= 1<<SMD_DATA4_PIN; // Data 4, pull-up
+ SMD_DATA_PORT_PORT |= 1<<SMD_DATA5_PIN; // Data 5, pull-up
#endif
unsigned char but_dat[6]; // struct containing button data
@@ -176,6 +160,7 @@ int main()
int x = 0;
int y = 0;
int b, c;
+ GREEN_OFF;
#ifdef N64_ENABLED
uint8_t n64_data[4];
@@ -189,6 +174,7 @@ int main()
{
if (((n64_data[0]>>(7-b))&1))
{
+ GREEN_ON;
switch (b)
{
case 0: // A
@@ -222,6 +208,7 @@ int main()
{
if (((n64_data[1]>>(7-b))&1))
{
+ GREEN_ON;
switch (b)
{
case 2: // L
@@ -262,6 +249,7 @@ int main()
{
if (!((snes_gamepad_data>>b)&1))
{
+ GREEN_ON;
switch (b)
{
case 0: // B
@@ -310,6 +298,7 @@ int main()
{
if (!((nes_gamepad_data>>b)&1))
{
+ GREEN_ON;
switch (b)
{
case 0: // A
@@ -354,27 +343,35 @@ int main()
{
case 0: // Up
y = 30;
+ GREEN_ON;
break;
case 1: // Down
y = -30;
+ GREEN_ON;
break;
case 4: // A(SMD)/Y(Classic)
PRESS_Y;
+ GREEN_ON;
break;
case 5: // Start
PRESS_START;
+ GREEN_ON;
break;
case 10: // Left
x = -30;
+ GREEN_ON;
break;
case 11: // Right
x = 30;
+ GREEN_ON;
break;
case 12: // B(SMD)/A(Classic)
PRESS_A;
+ GREEN_ON;
break;
case 13: // C(SMD)/B(Classic)
PRESS_B;
+ GREEN_ON;
break;
}
}
@@ -388,21 +385,27 @@ int main()
{
case 4: // A(SMD)/Y(Classic)
PRESS_Y;
+ GREEN_ON;
break;
case 5: // Start
PRESS_START;
+ GREEN_ON;
break;
case 8: // Z(SMD)/R(Classic)
PRESS_R;
+ GREEN_ON;
break;
case 9: // Y(SMD)/X(Classic)
PRESS_X;
+ GREEN_ON;
break;
case 10: // X(SMD)/L(Classic)
PRESS_L;
+ GREEN_ON;
break;
case 11: // Mode(SMD)/Select(Classic)
PRESS_SELECT;
+ GREEN_ON;
break;
}
}
@@ -415,6 +418,7 @@ int main()
wm_newaction(but_dat);
_delay_us(10);
+ if (++red_led_timer >= 10) RED_OFF;
}
return 0;
}
diff --git a/nes2wii.h b/nes2wii.h
new file mode 100644
index 0000000..aaedabe
--- /dev/null
+++ b/nes2wii.h
@@ -0,0 +1,68 @@
+#ifndef _NES2WII_H_
+#define _NES2WII_H_
+
+#include "defines.h"
+
+#define GLUE(a,b) a##b
+#define DDR(p) GLUE(DDR,p)
+#define PORT(p) GLUE(PORT,p)
+#define PIN(p) GLUE(PIN,p)
+
+#define twi_port PORT(TWI_PORT)
+#define twi_ddr DDR(TWI_PORT)
+#define twi_scl_pin TWI_SCL_PIN
+#define twi_sda_pin TWI_SDA_PIN
+
+#define N64_PORT_PORT PORT(N64_PORT)
+#define N64_PORT_DDR DDR(N64_PORT)
+#define N64_PORT_PIN PIN(N64_PORT)
+#define N64_DATA_PIN 3
+
+#define NES_PORT_PORT PORT(NES_PORT)
+#define NES_PORT_DDR DDR(NES_PORT)
+#define NES_PORT_PIN PIN(NES_PORT)
+
+#define SNES_PORT_PORT PORT(NES_PORT)
+#define SNES_PORT_DDR DDR(NES_PORT)
+#define SNES_PORT_PIN PIN(NES_PORT)
+
+#define SMD_SELECT_PORT_PORT PORT(SMD_SELECT_PORT)
+#define SMD_SELECT_PORT_DDR DDR(SMD_SELECT_PORT)
+#define SMD_DATA_PORT_PORT PORT(SMD_DATA_PORT)
+#define SMD_DATA_PORT_DDR DDR(SMD_DATA_PORT)
+#define SMD_DATA_PORT_PIN PIN(SMD_DATA_PORT)
+
+#define RED_LED_PORT_PORT PORT(RED_LED_PORT)
+#define RED_LED_PORT_DDR DDR(RED_LED_PORT)
+#define GREEN_LED_PORT_PORT PORT(GREEN_LED_PORT)
+#define GREEN_LED_PORT_DDR DDR(GREEN_LED_PORT)
+
+#define WAIT(t) {TCNT0=0; while(TCNT0 < (F_CPU / 1000000UL) * t);}
+
+#define N64SEND(t) {N64_PORT_DDR |= (1<<N64_DATA_PIN); WAIT(t); N64_PORT_DDR &= ~(1<<N64_DATA_PIN);}
+#define N64SEND_1 {N64SEND(1); WAIT(3);}
+#define N64SEND_0 {N64SEND(3); WAIT(1);}
+#define N64SEND_STOP {N64SEND(1); WAIT(2);}
+#define N64SIGNAL (!((N64_PORT_PIN>>N64_DATA_PIN)&1))
+
+#define PRESS_A but_dat[5] &= 0b11101111; // BZL BB BY BA BX BZR BDL BDU
+#define PRESS_B but_dat[5] &= 0b10111111; // BZL BB BY BA BX BZR BDL BDU
+#define PRESS_X but_dat[5] &= 0b11110111; // BZL BB BY BA BX BZR BDL BDU
+#define PRESS_Y but_dat[5] &= 0b11011111; // BZL BB BY BA BX BZR BDL BDU
+#define PRESS_L but_dat[4] &= 0b11011111; // BDR BDD BLT B- BH B+ BRT 1
+#define PRESS_R but_dat[4] &= 0b11111101; // BDR BDD BLT B- BH B+ BRT 1
+#define PRESS_ZL but_dat[5] &= 0b01111111; // BZL BB BY BA BX BZR BDL BDU
+#define PRESS_ZR but_dat[5] &= 0b11111011; // BZL BB BY BA BX BZR BDL BDU
+#define PRESS_SELECT but_dat[4] &= 0b11101111; // BDR BDD BLT B- BH B+ BRT 1
+#define PRESS_START but_dat[4] &= 0b11111011; // BDR BDD BLT B- BH B+ BRT 1
+#define PRESS_UP but_dat[5] &= 0b11111110; // BZL BB BY BA BX BZR BDL BDU
+#define PRESS_DOWN but_dat[4] &= 0b10111111; // BDR BDD BLT B- BH B+ BRT 1
+#define PRESS_LEFT but_dat[5] &= 0b11111101; // BZL BB BY BA BX BZR BDL BDU
+#define PRESS_RIGHT but_dat[4] &= 0b01111111; // BDR BDD BLT B- BH B+ BRT 1
+
+#define RED_ON RED_LED_PORT_PORT |= (1<<RED_LED_PIN);
+#define RED_OFF RED_LED_PORT_PORT &= ~(1<<RED_LED_PIN);
+#define GREEN_ON GREEN_LED_PORT_PORT |= (1<<GREEN_LED_PIN);
+#define GREEN_OFF GREEN_LED_PORT_PORT &= ~(1<<GREEN_LED_PIN);
+
+#endif \ No newline at end of file
diff --git a/nes2wii.hex b/nes2wii.hex
index 9706a93..a42fcea 100644
--- a/nes2wii.hex
+++ b/nes2wii.hex
@@ -2,7 +2,7 @@
:100010000C945C050C945C050C945C050C945C05DC
:100020000C945C050C945C050C945C050C945C05CC
:100030000C945C050C945C050C945C050C945C05BC
-:100040000C945C050C94D50C0C945C050C945C052C
+:100040000C945C050C94030D0C945C050C945C05FD
:100050000C945C05A877A6E0F7435A3585E27297C1
:100060008FB71A6287380D67C7BE4F3E2076378F2D
:1000700068B7A9263F2B10E3307E900E850A705199
@@ -167,9 +167,9 @@
:100A60000000000000000000000000000000000086
:100A70000000000000000000000000000000112441
:100A80001FBECFE5D4E0DEBFCDBF10E0A0E6B0E0F2
-:100A9000E2E0FCE102C005900D92A638B107D9F75B
-:100AA00011E0A6E8B0E001C01D92AC3AB107E1F751
-:100AB0000E94D7060C94FF0D0C940000D89840E0DB
+:100A9000EEE5FCE102C005900D92A638B107D9F74A
+:100AA00011E0A6E8B0E001C01D92AE3AB107E1F74F
+:100AB0000E94DC060C942D0E0C940000D89840E0A7
:100AC00020E030E052E4D998852F8A95F1F789B378
:100AD0008695869590E081709070022E02C0880FF6
:100AE000991F0A94E2F7482BD99A852F8A95F1F736
@@ -216,238 +216,243 @@
:100D7000A694A69433E0A322BB2421E0A222BB24A4
:100D8000A294B29420EFB222BA24A222BA246A29F1
:100D900070E0682B792BCB011F910F91FF90EF90A2
-:100DA000DF90CF90BF90AF909F90089508952F92BD
-:100DB0003F924F925F926F927F928F929F92AF92EB
-:100DC000BF92CF92DF92EF92FF920F931F93DF9328
-:100DD000CF93CDB7DEB72A970FB6F894DEBF0FBE1C
-:100DE000CDBF83B7816083BF8B989398D49AD59AEF
-:100DF000DE9AD09AD19ADA9AD79AA298A398A49810
-:100E0000A598A698A798AA9AAB9AAC9AAD9AAE9ACA
-:100E1000AF9A8FE58D838FED8E838FE88F83188651
-:100E20008FEF89878A87B5E06B2E712C6C0E7D1E43
-:100E300080E690E0B30146E650E026ED36E00E9401
-:100E4000F5094E010894811C911CAFE55A2EFFED67
-:100E50004F2EEFE83E2E22242A9478E0A72EB12CC4
-:100E60005D824E823F82188629862A86F894C401C4
-:100E70000E94A6057894892B09F083C1CC24DD2437
-:100E8000EE24FF240E948005BC0141E050E016C022
-:100E90002230310509F459C1233031050CF042C02C
-:100EA0002115310509F45DC12130310509F455C121
-:100EB000403151050CF042C04F5F5F4F9A01215005
-:100EC0003040CB01022E02C0969587950A94E2F736
-:100ED00080FDEECF2530310509F42EC126303105D5
-:100EE000BCF22830310509F434C1293031055CF4F5
-:100EF0002630310509F417C127303105C9F6FEE166
-:100F0000CF2ED12CD9CF2A30310509F408C12A308F
-:100F100031050CF416C12B30310551F689858D7FD2
-:100F20008987CACF2330310509F402C12430310545
-:100F300009F0BECFAEE1EA2EF12CBECF0E945E05D5
-:100F4000682F70E041E050E015C02330310509F40E
-:100F5000C1C1243031050CF0C3C02130310509F482
-:100F6000C7C1223031050CF4F9C189858F7E89878C
-:100F70004F5F5F4F9A0121503040CB01022E02C0DB
-:100F8000959587950A94E2F780FFDFCF48305105A9
-:100F90007CF300E010E00E943006BC018F7090707E
-:100FA000892B09F048C0023011050CF444C045E01B
-:100FB00050E00DC02430310509F4ADC025303105B5
-:100FC00009F4A5C04C3051051CF54F5F5F4F9A01E5
-:100FD00021503040CB01022E02C0969587950A948D
-:100FE000E2F780FDEFCF2830310509F48CC02930BD
-:100FF000310504F32A30310509F47DC02A3031056A
-:101000000CF47DC02B303105E9F689858F7E898708
-:101010000F5F1F4F0430110509F0BDCF8D818C0D7E
-:101020008D838E818E0D8E83C3010E94EC0982E434
-:101030008A95F1F715CF41E050E015C02530310514
-:1010400009F441C026303105F4F42130310509F4AA
-:1010500042C024303105D9F1232B89F4EEE1EE2E84
-:10106000F12C4F5F5F4F9A0121503040CB01022E8F
-:1010700002C0969587950A94E2F780FFDFCF4E3045
-:1010800051057CF3C5CF2B303105C9F02C3031052B
-:1010900044F42A30310599F782EEC82E8FEFD82E0E
-:1010A000E0CF2C30310539F02D30310541F78A85FC
-:1010B0008F7B8A87ADCF8A858F7E8A87D2CFBEE12C
-:1010C000CB2ED12CCECF89858B7F8987CACF8A85BD
-:1010D0008F7D8A87C6CF92EEE92E9FEFF92EC1CF82
-:1010E0002530310509F4FFC025303105F4F5FEE166
-:1010F000EF2EF12C3DCF89858F7D898766CF8A853C
-:10110000877F8A8762CF89858D7F89875ECF898532
-:101110008B7F89875ACF8A858F7D8A8756CF89852D
-:101120008F7D8987C9CEA2EECA2EAFEFDA2EC4CE4C
-:1011300089858B7F8987C0CEB2EEEB2EBFEFFB2E69
-:10114000BBCE8A85877F8A87B7CE89858F7E898740
-:10115000B3CE8A858F7E8A87AFCE8A858F7D8A8738
-:10116000ABCE8A858F7B8A87A7CE2630310509F4DE
-:10117000B5C02730310509F009CF3EE1C32ED12C8F
-:1011800008CF8981682F70E041E050E015C023301E
-:10119000310509F4DBC0243031050CF090C021305A
-:1011A000310509F4D7C0223031050CF4DEC08A8540
-:1011B0008F778A874F5F5F4F9A0121503040C5017A
-:1011C000841B950BFB0102C0F595E7958A95E2F724
-:1011D000E0FDDDCF483051056CF38A81682F70E067
-:1011E00041E050E00DC02230310509F498C02330B1
-:1011F000310509F490C04830510544F54F5F5F4F09
-:101200009A0121503040C501841B950BFB0102C09F
-:10121000F595E7958A95E2F7E0FFEDCF24303105AB
-:1012200009F475C025303105F4F22630310509F492
-:1012300063C0263031050CF466C027303105D9F67D
-:101240008D81806C8D838E81806C8E838B81282F25
-:1012500030E02038310514F0205031408C81E82FE7
-:10126000F0E0E038F10514F0E050F140C901880FDA
-:10127000991F820F931F9C01220F331F220F331FD0
-:10128000280F391F220F331FC90160E570E00E944B
-:10129000CB0D6B01CF01880F991F8E0F9F1F9C01F3
-:1012A000220F331F220F331F280F391F220F331F26
-:1012B000C90160E570E00E94CB0D7B01E3CD2530D4
-:1012C000310509F43FC0253031056CF58A858E7FE4
-:1012D0008A8770CF89858B7F89874ACE22EEC22E7E
-:1012E0002FEFD22E45CEE2EEEE2EEFEFFE2E40CEC9
-:1012F0008A858F7B8A873CCE8D818F738D838E818B
-:101300008F738E837BCF8F81807E8F8377CF8F810A
-:101310008F618F8373CF89858D7F89876FCF898513
-:101320008F7D89876BCF2630310541F0273031051D
-:1013300009F050CF89858F7789874FCF8A858D7F38
-:101340008A8738CF89858F7B898734CF89858B7F42
-:10135000898730CF8A858F7B8A872CCF232B09F012
-:1013600015CE8A858F7E8A8703CE232B09F032CF54
-:101370008A858F7E8A871ECF1092A9011092A801BC
-:10138000880F82B985E486BF78940895882319F47C
-:1013900085E886BF089585EC86BF0895282F30E044
-:1013A00070E088E090E0861B970BA90102C0440F13
-:1013B000551F8A95E2F7CA0102C0359527956A95AF
-:1013C000E2F7822B0895863008F00895E0918600B8
-:1013D000F091870009950895A8EAB0E0FC0186E045
-:1013E00001900D928150E1F708950F931F93182FEC
-:1013F000092F3093870020938600A8EAB0E0FB0114
-:1014000086E001900D928150E1F710929801812FB2
-:10141000902F9C01D9012AEF30E08D91F901E85518
-:10142000FF4F80832F5F3F4F81E020303807A9F7BF
-:10143000DA0120E230E08D91F901E855FF4F808319
-:101440002F5F3F4F26323105B1F7A898A998109227
-:10145000A9011092A80184EA82B985E486BF789434
-:101460001F910F9108952F923F924F925F926F922A
-:101470007F928F929F92AF92BF92CF92DF92EF9224
-:10148000FF920F931F93DF93CF93CDB7DEB76A9789
-:101490000FB6F894DEBF0FBECDBF44E5642E40E02A
-:1014A000742E88249E01295F3F4F388F2F8B3DE09B
-:1014B000232E312C2C0E3D1E28E0422E512CDE0115
-:1014C0001196F30184918D9331964F89588DA4170D
-:1014D000B507C1F780E090E0FC01E857FF4FE081DD
-:1014E000F0E0E258FF4FE491D101A80FB91FEC934F
-:1014F00001968A30910581F7AA88CF8429812A250F
-:1015000030E04C2D477050E09E88B988C201841BA2
-:10151000950BB90102C0660F771F8A95E2F7CB01E0
-:1015200002C0359527954A95E2F7822B89198B25BC
-:101530008F83EE84DD842A812E2530E04D2D477087
-:1015400050E0AC89C201841B950BF90102C0EE0F7B
-:10155000FF1F8A95E2F7CF0102C0359527954A957E
-:10156000E2F7822B8A198A278887EB892B812E271D
-:1015700030E00D89077010E0B201601B710BC901EA
-:10158000062E02C0880F991F0A94E2F7002E02C0AF
-:10159000359527950A94E2F7822B8C198D2589873A
-:1015A0002C812B2530E04A2F4770842F90E09A8FB2
-:1015B000898FD888C201498D5A8D841B950BA9014A
-:1015C00002C0440F551F8A95E2F7CA01098C02C078
-:1015D000359527950A94E2F7822B8D198C258A87F9
-:1015E0008D81E826FF24E770F0E0C2018E1B9F0B7F
-:1015F000970102C0220F331F8A95E2F7C90102C08A
-:10160000F594E794EA95E2F78E298D198B258B875F
-:101610008E81A827B0E0AD0102C0440F551F6A9526
-:10162000E2F7BA0102C0B595A7950A95E2F76A2BD1
-:101630006A1969256C87CE01079662E970E046E079
-:1016400050E00E94F20D009749F0839466E070E04C
-:10165000660E771E77E0871609F031CF282D30E02F
-:101660002F5F3F4F522F442780919600FA01E80FD9
-:10167000F11DE258FF4F94912F5F3F4F322F2227E9
-:1016800080918B00F901E80FF11DE258FF4FE491C2
-:10169000E927E093980080919400FA01E80FF11D8A
-:1016A000E258FF4F949180918D00F901E80FF11DF0
-:1016B000E258FF4FE491E927E09399008091970069
-:1016C000FA01E80FF11DE258FF4F949180918F00CD
-:1016D000F901E80FF11DE258FF4FE491E927E0938B
-:1016E0009A0080919200FA01E80FF11DE258FF4F35
-:1016F000949180918A00F901E80FF11DE258FF4FA3
-:10170000E491E927E0939B0080919300FA01E80FB0
-:10171000F11DE258FF4F949180918C00F901E80F80
-:10172000F11DE258FF4FE491E927E0939C0080917E
-:101730009500FA01E80FF11DE258FF4F9491809156
-:101740009100F901E80FF11DE258FF4FE491E927FC
-:10175000E0939D0080918800FA01E80FF11DE258A6
-:10176000FF4F949180918E00F901E80FF11DE2582E
-:10177000FF4FE491E927E0939E0080918900FA01F0
-:10178000E80FF11DE258FF4F949180919000F9010C
-:10179000E80FF11DE258FF4FE491E927E0939F0025
-:1017A00080919200FA01E80FF11DE258FF4F9491E9
-:1017B00080918900F901E80FF11DE258FF4FE49193
-:1017C000E927E093A00080919700FA01E80FF11D4E
-:1017D000E258FF4F949180918C00F901E80FF11DC0
-:1017E000E258FF4FE491E927E093A1008091950032
-:1017F000FA01E80FF11DE258FF4F949180918800A3
-:10180000F901E80FF11DE258FF4FE491E927E09359
-:10181000A20080919400FA01E80FF11DE258FF4FF9
-:10182000949180919100F901E80FF11DE258FF4F6A
-:10183000E491E927E093A30080919600FA01E80F74
-:10184000F11DE258FF4F949180918F00F901E80F4C
-:10185000F11DE258FF4FE491E927E093A400809145
-:101860009300FA01E80FF11DE258FF4F9491809127
-:101870009000F901E80FF11DE258FF4FE491E927CC
-:10188000E093A50080918B00FA01E80FF11DE2586A
-:10189000FF4F949180918D00F901E80FF11DE258FE
-:1018A000FF4FE491E927E093A60080918A00480F5A
-:1018B000511D42585F4FFA01949180918E00280F7C
-:1018C000311D22583F4FF901849189278093A70049
-:1018D0006A960FB6F894DEBF0FBECDBFCF91DF91F1
-:1018E0001F910F91FF90EF90DF90CF90BF90AF903E
-:1018F0009F908F907F906F905F904F903F902F9030
-:101900000895982F80548630A0F420E430E049E414
-:1019100050E0FA01E21BF30BD901A855BF4F8C919F
-:10192000E857FF4F80832F5F3F4F2634310589F7FB
-:101930000895892F86548630C8F48091EE008093F4
-:101940008B008091EF0080938A008091F00080935B
-:1019500089008091F100809388008091F20080934B
-:1019600097008091F300809396000895892F8C54FE
-:101970008430B8F48091F400809395008091F50054
-:10198000809394008091F600809393008091F700FB
-:1019900080939200892F90E0860F911D80359105EC
-:1019A00009F008950E94330A08951F920F920FB60E
-:1019B0000F9211242F933F934F935F936F937F93D5
-:1019C0008F939F93AF93BF93EF93FF9381B190E079
-:1019D000887F90708039910509F480C08139910524
-:1019E00014F1803B910509F462C0813B910584F5B7
-:1019F000803A910509F464C0883A910509F457C00A
-:101A000085E886BFFF91EF91BF91AF919F918F9134
-:101A10007F916F915F914F913F912F910F900FBEEA
-:101A20000F901F9018958037910569F081379105C7
-:101A3000B4F18038910509F451C08838910501F35B
-:101A400088379105E9F61092AA0185EC86BFDACFB6
-:101A5000803C910509F1883C9105F1F0883B9105A6
-:101A600079F6809198018A3A09F449C0E091A80179
-:101A7000F091A901E855FF4F808183B98091A801B9
-:101A80009091A90101969093A9018093A80180915A
-:101A9000AB018F5F8093AB0185EC86BFB3CF8036FF
-:101AA000910589F28836910509F0AACFCCCF8091B3
-:101AB000A8019091A9010E94E3091092AB01D1CF36
-:101AC0008091A8019091A9012091AB016091AB0197
-:101AD000821B0E94810C85EC86BF94CF8091AA0165
-:101AE000882351F123B1809198018A3A89F1E091DC
-:101AF000A801F091A901E855FF4F2083BFCFE091E5
-:101B0000A801F091A901E855FF4F8081E091A8015B
-:101B1000F091A901E770F070E856FF4F2081E09145
-:101B2000A801F091A901E770F070E056FF4F908195
-:101B3000821B892783B9A2CF83B190E09093A9013A
-:101B40008093A80181E08093AA011092AB01A4CFF9
-:101B50008091A8019091A901803F910541F2A09147
-:101B6000A801B091A901E091A801F091A901E77045
-:101B7000F070E056FF4F8081E091A801F091A9013B
-:101B8000E770F070E856FF4F90818227890FA855C3
-:101B9000BF4F8C9373CF97FB092E07260AD077FD92
-:101BA00004D00CD006D000201AF4709561957F4FB8
-:101BB0000895F6F7909581959F4F0895AA1BBB1B3A
-:101BC00051E107C0AA1FBB1FA617B70710F0A61B3D
-:101BD000B70B881F991F5A95A9F780959095BC015E
-:101BE000CD010895FB01DC0104C08D9101908019A5
-:101BF00021F441505040C8F7881B990B0895F89480
-:021C0000FFCF14
-:101C02000000A4200101000000000000000000000C
-:101C120000000000000000000000000000000000C2
-:061C2200000000000000BC
+:100DA000DF90CF90BF90AF909F900895C49A10921B
+:100DB00087001092860008952F923F924F925F9283
+:100DC0006F927F928F929F92AF92BF92CF92DF925B
+:100DD000EF92FF920F931F93DF93CF93CDB7DEB7C0
+:100DE0002A970FB6F894DEBF0FBECDBFBC9ABB9A50
+:100DF000C49A83B7816083BF8B989398D49AD59A0D
+:100E0000DE9AD09AD19ADA9AD79AA298A398A498FF
+:100E1000A598A698A798AA9AAB9AAC9AAD9AAE9ABA
+:100E2000AF9A8FE58D838FED8E838FE88F83188641
+:100E30008FEF89878A87B5E06B2E712C6C0E7D1E33
+:100E400080E690E0B30146E650E026ED36E00E94F1
+:100E5000230A4E010894811C911CAFE55A2EFFED28
+:100E60004F2EEFE83E2E22242A9478E0A72EB12CB4
+:100E70005D824E823F82188629862A86C398F8941E
+:100E8000C4010E94A6057894892B09F0A6C1CC2440
+:100E9000DD24EE24FF240E948005BC0141E050E0E7
+:100EA00016C02230310509F47CC1233031050CF025
+:100EB00043C02115310509F480C12130310509F401
+:100EC00078C1403151050CF043C04F5F5F4F9A012C
+:100ED00021503040CB01022E02C0969587950A948E
+:100EE000E2F780FDEECFC39A2530310509F450C1F9
+:100EF00026303105B4F22830310509F456C12930C5
+:100F000031055CF42630310509F439C1273031054B
+:100F1000C1F6FEE1CF2ED12CD8CF2A30310509F40D
+:100F20002AC12A3031050CF438C12B30310549F67D
+:100F300089858D7F8987C9CF2330310509F424C184
+:100F40002430310509F0BDCFFEE1EF2EF12CBDCFED
+:100F50000E945E05682F70E041E050E016C0C39A21
+:100F60002330310509F4E4C1243031050CF0DEC032
+:100F70002130310509F4EAC1223031050CF41CC2DC
+:100F800089858F7E89874F5F5F4F9A01215030405E
+:100F9000CB01022E02C0959587950A94E2F780FF57
+:100FA000DECF483051057CF300E010E00E943006AF
+:100FB000BC018F709070892B09F05AC00230110566
+:100FC0000CF456C045E050E00DC02430310509F462
+:100FD000CDC02530310509F4C4C04C30510524F58D
+:100FE0004F5F5F4F9A0121503040CB01022E02C06B
+:100FF000969587950A94E2F780FDEFCF283031056A
+:1010000009F4AAC02930310504F32A30310509F466
+:1010100099C02A3031050CF49AC02B303105E9F61D
+:1010200089858F7E8987C39A0F5F1F4F0430110512
+:1010300009F0BCCF8D818C0D8D838E818E0D8E83BA
+:10104000C3010E941A0A82E48A95F1F78091860012
+:1010500090918700019690938700809386008091FD
+:101060008600909187000A970CF402CFC49800CFB5
+:1010700041E050E017C02530310509F447C0263063
+:10108000310504F52130310509F44AC02430310519
+:1010900009F441C0232B91F4C39A9EE1E92EF12C6F
+:1010A0004F5F5F4F9A0121503040CB01022E02C0AA
+:1010B000969587950A94E2F780FFDDCF4E30510573
+:1010C0007CF3B2CF2B303105E1F02C3031054CF4FC
+:1010D0002A30310599F7C39AB2EECB2EBFEFDB2E43
+:1010E000DFCF2C30310541F02D30310539F78A85BD
+:1010F0008F7B8A87C39A98CF8A858F7E8A87C39A87
+:10110000CFCFC39AAEE1CA2ED12CCACF89858B7FAF
+:101110008987C39AC5CF8A858F7D8A87C39AC0CFB6
+:10112000C39A82EEE82E8FEFF82EBACF2530310524
+:1011300009F407C1253031050CF043C0EEE1EE2E75
+:10114000F12C21CF89858F7D8987C39A49CF8A85E4
+:10115000877F8A87C39A44CF89858D7F8987C39A81
+:101160003FCF89858B7F8987C39A3ACF8A858F7DC8
+:101170008A87C39A35CF89858F7D8987A6CEA2EECF
+:10118000CA2EAFEFDA2EA1CE89858B7F89879DCEBF
+:10119000B2EEEB2EBFEFFB2E98CE8A85877F8A8733
+:1011A00094CE89858F7E898790CE8A858F7E8A8727
+:1011B0008CCE8A858F7D8A8788CE8A858F7B8A8729
+:1011C00084CE2630310509F4B7C02730310509F047
+:1011D000E8CE3EE1C32ED12CE7CE8981682F70E0A6
+:1011E00041E050E016C0C39A2330310509F4DCC059
+:1011F000243031050CF091C02130310509F4D8C0FC
+:10120000223031050CF4DFC08A858F778A874F5FE3
+:101210005F4F9A0121503040C501841B950BFB01A3
+:1012200002C0F595E7958A95E2F7E0FDDCCF4830FE
+:1012300051056CF38A81682F70E041E050E00DC0E9
+:101240002230310509F499C02330310509F491C0E9
+:10125000483051054CF54F5F5F4F9A0121503040A7
+:10126000C501841B950BFB0102C0F595E7958A9596
+:10127000E2F7E0FFEDCFC39A2430310509F475C0E1
+:1012800025303105ECF22630310509F463C02630F3
+:1012900031050CF466C027303105D1F68D81806CA4
+:1012A0008D838E81806C8E838B81282F30E0203857
+:1012B000310514F0205031408C81E82FF0E0E03807
+:1012C000F10514F0E050F140C901880F991F820F19
+:1012D000931F9C01220F331F220F331F280F391F2A
+:1012E000220F331FC90160E570E00E94F90D6B0108
+:1012F000CF01880F991F8E0F9F1F9C01220F331F54
+:10130000220F331F280F391F220F331FC90160E539
+:1013100070E00E94F90D7B01BECD2530310509F446
+:101320003FC0253031056CF58A858E7F8A876FCF67
+:1013300089858B7F898727CE22EEC22E2FEFD22E72
+:1013400022CEE2EEEE2EEFEFFE2E1DCE8A858F7BB3
+:101350008A8719CE8D818F738D838E818F738E8353
+:101360007ACF8F81807E8F8376CF8F818F618F83BD
+:1013700072CF89858D7F89876ECF89858F7D89879B
+:101380006ACF2630310541F02730310509F04FCFC3
+:1013900089858F7789874ECF8A858D7F8A8737CFDA
+:1013A00089858F7B898733CF89858B7F89872FCFED
+:1013B0008A858F7B8A872BCF232B09F0F2CD8A85F4
+:1013C0008F7E8A87E0CD232B09F031CF8A858F7EEF
+:1013D0008A871DCF1092AB011092AA01880F82B9A3
+:1013E00085E486BF78940895882319F485E886BF3C
+:1013F000089585EC86BF0895282F30E070E088E0DE
+:1014000090E0861B970BA90102C0440F551F8A95D7
+:10141000E2F7CA0102C0359527956A95E2F7822B5B
+:101420000895863008F00895E0918800F0918900D1
+:1014300009950895AAEAB0E0FC0186E001900D92BA
+:101440008150E1F708950F931F93182F092F3093C0
+:10145000890020938800AAEAB0E0FB0186E00190B1
+:101460000D928150E1F710929A01812F902F9C01EB
+:10147000D9012AEF30E08D91F901E655FF4F8083C5
+:101480002F5F3F4F81E020303807A9F7DA0120E2D3
+:1014900030E08D91F901E655FF4F80832F5F3F4F7C
+:1014A00026323105B1F7A898A9981092AB01109295
+:1014B000AA0184EA82B985E486BF78941F910F91CE
+:1014C00008952F923F924F925F926F927F928F92E8
+:1014D0009F92AF92BF92CF92DF92EF92FF920F93C3
+:1014E0001F93DF93CF93CDB7DEB76A970FB6F8940B
+:1014F000DEBF0FBECDBF44E5642E40E0742E8824CD
+:101500009E01295F3F4F388F2F8B3DE0232E312CDA
+:101510002C0E3D1E28E0422E512CDE011196F301C7
+:1015200084918D9331964F89588DA417B507C1F7D3
+:1015300080E090E0FC01E657FF4FE081F0E0E258E8
+:10154000FF4FE491D101A80FB91FEC9301968A30A7
+:10155000910581F7AA88CF8429812A2530E04C2D76
+:10156000477050E09E88B988C201841B950BB90171
+:1015700002C0660F771F8A95E2F7CB0102C035954E
+:1015800027954A95E2F7822B89198B258F83EE8464
+:10159000DD842A812E2530E04D2D477050E0AC8946
+:1015A000C201841B950BF90102C0EE0FFF1F8A9543
+:1015B000E2F7CF0102C0359527954A95E2F7822BD5
+:1015C0008A198A278887EB892B812E2730E00D899D
+:1015D000077010E0B201601B710BC901062E02C03A
+:1015E000880F991F0A94E2F7002E02C035952795BF
+:1015F0000A94E2F7822B8C198D2589872C812B2563
+:1016000030E04A2F4770842F90E09A8F898FD888D6
+:10161000C201498D5A8D841B950BA90102C0440F4C
+:10162000551F8A95E2F7CA01098C02C035952795A6
+:101630000A94E2F7822B8D198C258A878D81E82602
+:10164000FF24E770F0E0C2018E1B9F0B970102C0E0
+:10165000220F331F8A95E2F7C90102C0F594E7947F
+:10166000EA95E2F78E298D198B258B878E81A82725
+:10167000B0E0AD0102C0440F551F6A95E2F7BA0110
+:1016800002C0B595A7950A95E2F76A2B6A196925F4
+:101690006C87CE01079664E970E046E050E00E9456
+:1016A000200E009749F0839466E070E0660E771E86
+:1016B00077E0871609F031CF282D30E02F5F3F4FBC
+:1016C000522F442780919800FA01E80FF11DE2584B
+:1016D000FF4F94912F5F3F4F322F222780918D0033
+:1016E000F901E80FF11DE258FF4FE491E927E0937B
+:1016F0009A0080919600FA01E80FF11DE258FF4F21
+:10170000949180918F00F901E80FF11DE258FF4F8D
+:10171000E491E927E0939B0080919900FA01E80F9A
+:10172000F11DE258FF4F949180919100F901E80F6B
+:10173000F11DE258FF4FE491E927E0939C0080916E
+:101740009400FA01E80FF11DE258FF4F9491809147
+:101750008C00F901E80FF11DE258FF4FE491E927F1
+:10176000E0939D0080919500FA01E80FF11DE25889
+:10177000FF4F949180918E00F901E80FF11DE2581E
+:10178000FF4FE491E927E0939E0080919700FA01D2
+:10179000E80FF11DE258FF4F949180919300F901F9
+:1017A000E80FF11DE258FF4FE491E927E0939F0015
+:1017B00080918A00FA01E80FF11DE258FF4F9491E1
+:1017C00080919000F901E80FF11DE258FF4FE4917C
+:1017D000E927E093A00080918B00FA01E80FF11D4A
+:1017E000E258FF4F949180919200F901E80FF11DAA
+:1017F000E258FF4FE491E927E093A1008091940023
+:10180000FA01E80FF11DE258FF4F949180918B008F
+:10181000F901E80FF11DE258FF4FE491E927E09349
+:10182000A20080919900FA01E80FF11DE258FF4FE4
+:10183000949180918E00F901E80FF11DE258FF4F5D
+:10184000E491E927E093A30080919700FA01E80F63
+:10185000F11DE258FF4F949180918A00F901E80F41
+:10186000F11DE258FF4FE491E927E093A400809135
+:101870009600FA01E80FF11DE258FF4F9491809114
+:101880009300F901E80FF11DE258FF4FE491E927B9
+:10189000E093A50080919800FA01E80FF11DE2584D
+:1018A000FF4F949180919100F901E80FF11DE258EA
+:1018B000FF4FE491E927E093A60080919500FA019B
+:1018C000E80FF11DE258FF4F949180919200F901C9
+:1018D000E80FF11DE258FF4FE491E927E093A700DC
+:1018E00080918D00FA01E80FF11DE258FF4F9491AD
+:1018F00080918F00F901E80FF11DE258FF4FE4914C
+:10190000E927E093A80080918C00480F511D4258B0
+:101910005F4FFA01949180919000280F311D225859
+:101920003F4FF901849189278093A9006A960FB6E9
+:10193000F894DEBF0FBECDBFCF91DF911F910F9105
+:10194000FF90EF90DF90CF90BF90AF909F908F90DF
+:101950007F906F905F904F903F902F900895982FB9
+:1019600080548630A0F420E430E049E450E0FA01ED
+:10197000E21BF30BD901A655BF4F8C91E657FF4FE1
+:1019800080832F5F3F4F2634310589F70895892FD3
+:1019900086548630C8F48091F00080938D00809149
+:1019A000F10080938C008091F20080938B008091F5
+:1019B000F30080938A008091F400809399008091D5
+:1019C000F500809398000895892F8C548430B8F4E2
+:1019D0008091F600809397008091F70080939600A5
+:1019E0008091F800809395008091F9008093940095
+:1019F000892F90E0860F911D8035910509F008959B
+:101A00000E94610A08951F920F920FB60F9211243F
+:101A10002F933F934F935F936F937F938F939F93F6
+:101A2000AF93BF93EF93FF9381B190E0887F907065
+:101A30008039910509F480C08139910514F1803B0A
+:101A4000910509F462C0813B910584F5803A9105C6
+:101A500009F464C0883A910509F457C085E886BF47
+:101A6000FF91EF91BF91AF919F918F917F916F9176
+:101A70005F914F913F912F910F900FBE0F901F904C
+:101A800018958037910569F081379105B4F1803858
+:101A9000910509F451C08838910501F38837910503
+:101AA000E9F61092AC0185EC86BFDACF803C910557
+:101AB00009F1883C9105F1F0883B910579F6809118
+:101AC0009A018A3A09F449C0E091AA01F091AB0168
+:101AD000E655FF4F808183B98091AA019091AB01B7
+:101AE00001969093AB018093AA018091AD018F5F25
+:101AF0008093AD0185EC86BFB3CF8036910589F226
+:101B00008836910509F0AACFCCCF8091AA01909197
+:101B1000AB010E94110A1092AD01D1CF8091AA01B0
+:101B20009091AB012091AD016091AD01821B0E94AB
+:101B3000AF0C85EC86BF94CF8091AC01882351F126
+:101B400023B180919A018A3A89F1E091AA01F0913A
+:101B5000AB01E655FF4F2083BFCFE091AA01F09182
+:101B6000AB01E655FF4F8081E091AA01F091AB01F6
+:101B7000E770F070E656FF4F2081E091AA01F091E6
+:101B8000AB01E770F070EE55FF4F9081821B892703
+:101B900083B9A2CF83B190E09093AB018093AA0167
+:101BA00081E08093AC011092AD01A4CF8091AA0195
+:101BB0009091AB01803F910541F2A091AA01B091B3
+:101BC000AB01E091AA01F091AB01E770F070EE5526
+:101BD000FF4F8081E091AA01F091AB01E770F070B6
+:101BE000E656FF4F90818227890FA655BF4F8C93F1
+:101BF00073CF97FB092E07260AD077FD04D00CD0AF
+:101C000006D000201AF4709561957F4F0895F6F77D
+:101C1000909581959F4F0895AA1BBB1B51E107C06A
+:101C2000AA1FBB1FA617B70710F0A61BB70B881F6C
+:101C3000991F5A95A9F780959095BC01CD010895FB
+:101C4000FB01DC0104C08D910190801921F4415009
+:0E1C50005040C8F7881B990B0895F894FFCFF9
+:101C5E000000A420010100000000000000000000B0
+:101C6E000000000000000000000000000000000066
+:061C7E0000000000000060
:00000001FF