Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 897 → Rev 898

/branches/V0.68d CRK HexaLotte/FlightCtrl.aps
0,0 → 1,0
<AVRStudio><MANAGEMENT><ProjectName>FlightCtrl</ProjectName><Created>15-May-2007 11:20:41</Created><LastEdit>21-Mar-2008 18:51:49</LastEdit><ICON>241</ICON><ProjectType>0</ProjectType><Created>15-May-2007 11:20:41</Created><Version>4</Version><Build>4, 13, 0, 528</Build><ProjectTypeName>AVR GCC</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>default\Flight-Ctrl.elf</ObjectFile><EntryFile></EntryFile><SaveFolder>E:\Daten\Bastelprojekte\Mikrokopter\Software\Soucen\FlightCtrl\V0.68d Code Redesign killagreg\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>AVR Simulator</CURRENT_TARGET><CURRENT_PART>ATmega644.xml</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><HIDE>false</HIDE></IO_EXPAND><REGISTERNAMES><Register>R00</Register><Register>R01</Register><Register>R02</Register><Register>R03</Register><Register>R04</Register><Register>R05</Register><Register>R06</Register><Register>R07</Register><Register>R08</Register><Register>R09</Register><Register>R10</Register><Register>R11</Register><Register>R12</Register><Register>R13</Register><Register>R14</Register><Register>R15</Register><Register>R16</Register><Register>R17</Register><Register>R18</Register><Register>R19</Register><Register>R20</Register><Register>R21</Register><Register>R22</Register><Register>R23</Register><Register>R24</Register><Register>R25</Register><Register>R26</Register><Register>R27</Register><Register>R28</Register><Register>R29</Register><Register>R30</Register><Register>R31</Register></REGISTERNAMES><COM>Auto</COM><COMType>0</COMType><WATCHNUM>0</WATCHNUM><WATCHNAMES><Pane0></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><Debugger><Triggers></Triggers></Debugger><AVRGCCPLUGIN><FILES><SOURCEFILE>uart.c</SOURCEFILE><SOURCEFILE>analog.c</SOURCEFILE><SOURCEFILE>eeprom.c</SOURCEFILE><SOURCEFILE>fc.c</SOURCEFILE><SOURCEFILE>GPS.c</SOURCEFILE><SOURCEFILE>main.c</SOURCEFILE><SOURCEFILE>menu.c</SOURCEFILE><SOURCEFILE>printf_P.c</SOURCEFILE><SOURCEFILE>rc.c</SOURCEFILE><SOURCEFILE>timer0.c</SOURCEFILE><SOURCEFILE>twimaster.c</SOURCEFILE><SOURCEFILE>ubx.c</SOURCEFILE><SOURCEFILE>cmps03.c</SOURCEFILE><SOURCEFILE>fifo.c</SOURCEFILE><SOURCEFILE>mm3.c</SOURCEFILE><SOURCEFILE>mymath.c</SOURCEFILE><SOURCEFILE>spi.c</SOURCEFILE><SOURCEFILE>timer2.c</SOURCEFILE><SOURCEFILE>uart1.c</SOURCEFILE><SOURCEFILE>led.c</SOURCEFILE><HEADERFILE>uart.h</HEADERFILE><HEADERFILE>_Settings.h</HEADERFILE><HEADERFILE>analog.h</HEADERFILE><HEADERFILE>fc.h</HEADERFILE><HEADERFILE>gps.h</HEADERFILE><HEADERFILE>main.h</HEADERFILE><HEADERFILE>menu.h</HEADERFILE><HEADERFILE>old_macros.h</HEADERFILE><HEADERFILE>printf_P.h</HEADERFILE><HEADERFILE>rc.h</HEADERFILE><HEADERFILE>timer0.h</HEADERFILE><HEADERFILE>twimaster.h</HEADERFILE><HEADERFILE>cmps03.h</HEADERFILE><HEADERFILE>eeprom.h</HEADERFILE><HEADERFILE>fifo.h</HEADERFILE><HEADERFILE>led.h</HEADERFILE><HEADERFILE>mm3.h</HEADERFILE><HEADERFILE>mymath.h</HEADERFILE><HEADERFILE>spi.h</HEADERFILE><HEADERFILE>timer2.h</HEADERFILE><HEADERFILE>uart1.h</HEADERFILE><HEADERFILE>ubx.h</HEADERFILE><OTHERFILE>makefile</OTHERFILE></FILES><CONFIGS><CONFIG><NAME>default</NAME><USESEXTERNALMAKEFILE>YES</USESEXTERNALMAKEFILE><EXTERNALMAKEFILE>makefile</EXTERNALMAKEFILE><PART>atmega644</PART><HEX>1</HEX><LIST>1</LIST><MAP>1</MAP><OUTPUTFILENAME>Flight-Ctrl.elf</OUTPUTFILENAME><OUTPUTDIR>default\</OUTPUTDIR><ISDIRTY>1</ISDIRTY><OPTIONS><OPTION><FILE>GPS.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>analog.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>cmps03.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>eeprom.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>fc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>fifo.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>led.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>main.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>menu.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>mm3.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>mymath.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>printf_P.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>rc.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>spi.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>timer0.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>timer2.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>twimaster.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>uart.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>uart1.c</FILE><OPTIONLIST></OPTIONLIST></OPTION><OPTION><FILE>ubx.c</FILE><OPTIONLIST></OPTIONLIST></OPTION></OPTIONS><INCDIRS/><LIBDIRS/><LIBS><LIB>libc.a</LIB><LIB>libm.a</LIB></LIBS><LINKOBJECTS/><OPTIONSFORALL>-Wall -gdwarf-2 -Wstrict-prototypes -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums</OPTIONSFORALL><LINKEROPTIONS></LINKEROPTIONS><SEGMENTS/></CONFIG></CONFIGS><LASTCONFIG>default</LASTCONFIG><USES_WINAVR>1</USES_WINAVR><GCC_LOC>C:\Programme\Winavr\bin\avr-gcc.exe</GCC_LOC><MAKE_LOC>C:\Programme\Winavr\utils\bin\make.exe</MAKE_LOC></AVRGCCPLUGIN><IOView><usergroups/></IOView><Files><File00000><FileId>00000</FileId><FileName>main.c</FileName><Status>1</Status></File00000><File00001><FileId>00001</FileId><FileName>uart.c</FileName><Status>1</Status></File00001><File00002><FileId>00002</FileId><FileName>menu.c</FileName><Status>1</Status></File00002><File00003><FileId>00003</FileId><FileName>timer0.c</FileName><Status>1</Status></File00003><File00004><FileId>00004</FileId><FileName>fc.c</FileName><Status>1</Status></File00004><File00005><FileId>00005</FileId><FileName>fc.h</FileName><Status>1</Status></File00005><File00006><FileId>00006</FileId><FileName>menu.h</FileName><Status>1</Status></File00006><File00007><FileId>00007</FileId><FileName>TWIMASTER.C</FileName><Status>1</Status></File00007><File00008><FileId>00008</FileId><FileName>twimaster.h</FileName><Status>1</Status></File00008><File00009><FileId>00009</FileId><FileName>uart.h</FileName><Status>1</Status></File00009><File00010><FileId>00010</FileId><FileName>_Settings.h</FileName><Status>1</Status></File00010><File00011><FileId>00011</FileId><FileName>analog.h</FileName><Status>1</Status></File00011><File00012><FileId>00012</FileId><FileName>gps.h</FileName><Status>1</Status></File00012><File00013><FileId>00013</FileId><FileName>main.h</FileName><Status>1</Status></File00013><File00014><FileId>00014</FileId><FileName>old_macros.h</FileName><Status>1</Status></File00014><File00015><FileId>00015</FileId><FileName>printf_P.h</FileName><Status>1</Status></File00015><File00016><FileId>00016</FileId><FileName>rc.h</FileName><Status>1</Status></File00016><File00017><FileId>00017</FileId><FileName>timer0.h</FileName><Status>1</Status></File00017><File00018><FileId>00018</FileId><FileName>makefile</FileName><Status>1</Status></File00018></Files><Workspace><File00000><Position>251 96 720 458</Position><LineCol>0 0</LineCol></File00000><File00001><Position>273 118 734 450</Position><LineCol>0 0</LineCol></File00001><File00002><Position>295 140 756 472</Position><LineCol>0 0</LineCol></File00002><File00003><Position>317 162 778 494</Position><LineCol>0 0</LineCol></File00003><File00004><Position>339 184 800 516</Position><LineCol>0 0</LineCol></File00004><File00005><Position>361 206 822 538</Position><LineCol>0 0</LineCol></File00005><File00006><Position>383 228 844 560</Position><LineCol>0 0</LineCol></File00006><File00007><Position>405 250 866 582</Position><LineCol>0 0</LineCol></File00007><File00008><Position>251 96 712 428</Position><LineCol>0 0</LineCol></File00008><File00009><Position>273 118 734 450</Position><LineCol>0 0</LineCol></File00009><File00010><Position>295 140 756 472</Position><LineCol>0 0</LineCol></File00010><File00011><Position>317 162 778 494</Position><LineCol>0 0</LineCol></File00011><File00012><Position>339 184 800 516</Position><LineCol>0 0</LineCol></File00012><File00013><Position>361 206 822 538</Position><LineCol>0 0</LineCol></File00013><File00014><Position>383 228 844 560</Position><LineCol>0 0</LineCol></File00014><File00015><Position>405 250 866 582</Position><LineCol>0 0</LineCol></File00015><File00016><Position>251 96 712 428</Position><LineCol>0 0</LineCol></File00016><File00017><Position>273 118 734 450</Position><LineCol>0 0</LineCol></File00017><File00018><Position>295 140 756 472</Position><LineCol>0 0</LineCol></File00018></Workspace><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio>
/branches/V0.68d CRK HexaLotte/GPS.c
0,0 → 1,381
#include <inttypes.h>
#include <stdlib.h>
#include "fc.h"
#include "ubx.h"
#include "mymath.h"
#include "timer0.h"
#include "uart.h"
#include "rc.h"
#include "eeprom.h"
 
#define TSK_IDLE 0
#define TSK_HOLD 1
#define TSK_HOME 2
 
#define GPS_STICK_SENSE 15 // must be at least in a range where 90% of the trimming does not switch of the GPS function
#define GPS_STICK_LIMIT 35 // limit of gps stick control to avoid critical flight attitudes
#define GPS_POSDEV_INTEGRAL_LIMIT 32000 // limit for the position error integral
#define MAX_VELOCITY 700 // max ground speed in cm/s during position control
 
 
int16_t GPS_Pitch = 0, GPS_Roll = 0;
uint8_t GPS_P_Factor = 0, GPS_I_Factor = 0, GPS_D_Factor = 0;
 
 
 
typedef struct
{
int32_t Longitude;
int32_t Latitude;
int32_t Altitude;
uint8_t Status;
} GPS_Pos_t;
 
// GPS coordinates for hold position
GPS_Pos_t HoldPosition = {0,0,0,INVALID};
// GPS coordinates for home position
GPS_Pos_t HomePosition = {0,0,0,INVALID};
 
 
// ---------------------------------------------------------------------------------
 
// checks pitch and roll sticks for manual control
uint8_t IsManualControlled(void)
{
if ( (abs(PPM_in[ParamSet.ChannelAssignment[CH_PITCH]]) < GPS_STICK_SENSE) && (abs(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]]) < GPS_STICK_SENSE)) return 0;
else return 1;
}
 
// set home position to current positon
void GPS_SetHomePosition(void)
{
if( ((GPSInfo.status == VALID) || (GPSInfo.status == PROCESSED)) && GPSInfo.satfix == SATFIX_3D)
{
HomePosition.Longitude = GPSInfo.longitude;
HomePosition.Latitude = GPSInfo.latitude;
HomePosition.Altitude = GPSInfo.altitude;
HomePosition.Status = VALID;
BeepTime = 1000; // signal if new home position was set
}
else
{
HomePosition.Status = INVALID;
}
}
 
// set hold position to current positon
void GPS_SetHoldPosition(void)
{
if( ((GPSInfo.status == VALID) || (GPSInfo.status == PROCESSED)) && GPSInfo.satfix == SATFIX_3D)
{
HoldPosition.Longitude = GPSInfo.longitude;
HoldPosition.Latitude = GPSInfo.latitude;
HoldPosition.Altitude = GPSInfo.altitude;
HoldPosition.Status = VALID;
}
else
{
HoldPosition.Status = INVALID;
}
}
 
// clear home position
void GPS_ClearHomePosition(void)
{
HomePosition.Status = INVALID;
}
 
// disable GPS control sticks
void GPS_Neutral(void)
{
GPS_Pitch = 0;
GPS_Roll = 0;
}
 
// calculates the GPS control stick values from the deviation to target position
// if the pointer to the target positin is NULL or is the target position invalid
// then the P part of the controller is deactivated.
void GPS_PIDController(GPS_Pos_t *pTargetPos)
{
int32_t temp, temp1, PID_Pitch, PID_Roll;
int32_t coscompass, sincompass;
int32_t GPSPosDev_North, GPSPosDev_East; // Position deviation in cm
int32_t P_North = 0, D_North = 0, P_East = 0, D_East = 0, I_North = 0, I_East = 0;
int32_t PID_North = 0, PID_East = 0;
static int32_t cos_target_latitude = 1;
static int32_t GPSPosDevIntegral_North = 0, GPSPosDevIntegral_East = 0;
static GPS_Pos_t *pLastTargetPos = 0;
 
// if GPS data and Compass are ok
if((GPSInfo.status == VALID) && (GPSInfo.satfix == SATFIX_3D) && (CompassHeading >= 0) )
{
 
if(pTargetPos != NULL) // if there is a target position
{
if(pTargetPos->Status != INVALID) // and the position data are valid
{
// if the target data are updated or the target pointer has changed
if ((pTargetPos->Status != PROCESSED) || (pTargetPos != pLastTargetPos) )
{
// reset error integral
GPSPosDevIntegral_North = 0;
GPSPosDevIntegral_East = 0;
// recalculate latitude projection
cos_target_latitude = (int32_t)c_cos_8192((int16_t)(pTargetPos->Latitude/10000000L));
// remember last target pointer
pLastTargetPos = pTargetPos;
// mark data as processed
pTargetPos->Status = PROCESSED;
}
// calculate position deviation from latitude and longitude differences
GPSPosDev_North = (GPSInfo.latitude - pTargetPos->Latitude); // to calculate real cm we would need *111/100 additionally
GPSPosDev_East = (GPSInfo.longitude - pTargetPos->Longitude); // to calculate real cm we would need *111/100 additionally
// calculate latitude projection
GPSPosDev_East *= cos_target_latitude;
GPSPosDev_East /= 8192;
 
//DebugOut.Analog[12] = GPSPosDev_North;
//DebugOut.Analog[13] = GPSPosDev_East;
//DebugOut.Analog[12] = GPSInfo.velnorth;
//DebugOut.Analog[13] = GPSInfo.veleast;
}
else // no valid target position available
{
// reset error
GPSPosDev_North = 0;
GPSPosDev_East = 0;
// reset error integral
GPSPosDevIntegral_North = 0;
GPSPosDevIntegral_East = 0;
}
}
else // no target position available
{
// reset error
GPSPosDev_North = 0;
GPSPosDev_East = 0;
// reset error integral
GPSPosDevIntegral_North = 0;
GPSPosDevIntegral_East = 0;
}
 
//Calculate PID-components of the controller (negative sign for compensation)
 
// P-Part
P_North = -((int32_t)GPS_P_Factor * GPSPosDev_North)/2048;
P_East = -((int32_t)GPS_P_Factor * GPSPosDev_East)/2048;
 
// I-Part
I_North = -((int32_t)GPS_I_Factor * GPSPosDevIntegral_North)/8192;
I_East = -((int32_t)GPS_I_Factor * GPSPosDevIntegral_East)/8192;
 
// combine P- & I-Part
PID_North = P_North + I_North;
PID_East = P_East + I_East;
 
//limit PI-Part to limit the max velocity
temp1 = ((int32_t)GPS_D_Factor * MAX_VELOCITY)/512; // the PI-Part limit
temp = (int32_t)c_sqrt(PID_North*PID_North + PID_East*PID_East); // the current PI-Part
if(temp > temp1) // P-Part limit is reached
{
// normalize P-part components to the P-Part limit
PID_North = (PID_North * temp1)/temp;
PID_East = (PID_East * temp1) /temp;
}
else // PI-Part under its limit
{
// update position error integrals
GPSPosDevIntegral_North += GPSPosDev_North/16;
if( GPSPosDevIntegral_North > GPS_POSDEV_INTEGRAL_LIMIT) GPSPosDevIntegral_North = GPS_POSDEV_INTEGRAL_LIMIT;
else if (GPSPosDevIntegral_North < -GPS_POSDEV_INTEGRAL_LIMIT) GPSPosDevIntegral_North = -GPS_POSDEV_INTEGRAL_LIMIT;
GPSPosDevIntegral_East += GPSPosDev_East/16;
if( GPSPosDevIntegral_East > GPS_POSDEV_INTEGRAL_LIMIT) GPSPosDevIntegral_East = GPS_POSDEV_INTEGRAL_LIMIT;
else if (GPSPosDevIntegral_East < -GPS_POSDEV_INTEGRAL_LIMIT) GPSPosDevIntegral_East = -GPS_POSDEV_INTEGRAL_LIMIT;
}
 
// D-Part
D_North = -((int32_t)GPS_D_Factor * GPSInfo.velnorth)/512;
D_East = -((int32_t)GPS_D_Factor * GPSInfo.veleast)/512;
 
 
// combine PI- and D-Part
PID_North += D_North;
PID_East += D_East;
 
// GPS to pitch and roll settings
 
// A positive pitch angle moves head downwards (flying forward).
// A positive roll angle tilts left side downwards (flying left).
// If compass heading is 0 the head of the copter is in north direction.
// A positive pitch angle will fly to north and a positive roll angle will fly to west.
// In case of a positive north deviation/velocity the
// copter should fly to south (negative pitch).
// In case of a positive east position deviation and a positive east velocity the
// copter should fly to west (positive roll).
// The influence of the GPS_Pitch and GPS_Roll variable is contrarily to the stick values
// in the fc.c. Therefore a positive north deviation/velocity should result in a positive
// GPS_Pitch and a positive east deviation/velocity should result in a negative GPS_Roll.
 
coscompass = (int32_t)c_cos_8192(CompassHeading);
sincompass = (int32_t)c_sin_8192(CompassHeading);
PID_Roll = (coscompass * PID_East - sincompass * PID_North) / 8192;
PID_Pitch = -1*((sincompass * PID_East + coscompass * PID_North) / 8192);
 
// limit resulting GPS control vector
temp = (int32_t)c_sqrt(PID_Roll*PID_Roll + PID_Pitch*PID_Pitch);
if (temp > GPS_STICK_LIMIT)
{
// normalize control vector components to the limit
PID_Roll = (PID_Roll * GPS_STICK_LIMIT)/temp;
PID_Pitch = (PID_Pitch * GPS_STICK_LIMIT)/temp;
}
 
GPS_Roll = (int16_t)PID_Roll;
GPS_Pitch = (int16_t)PID_Pitch;
 
}
else // invalid GPS data or bad compass reading
{
GPS_Neutral(); // do nothing
// reset error integral
GPSPosDevIntegral_North = 0;
GPSPosDevIntegral_East = 0;
}
}
 
 
 
 
void GPS_Main(uint8_t ctrl)
{
static uint8_t GPS_Task = TSK_IDLE;
static uint8_t GPS_P_Delay = 0;
int16_t satbeep;
 
// ctrl enables the gps feature
if(ctrl < 70) GPS_Task = TSK_IDLE;
else if (ctrl < 160) GPS_Task = TSK_HOLD;
else GPS_Task = TSK_HOME; // ctrl >= 160
 
 
switch(GPSInfo.status)
{
case INVALID: // invalid gps data
GPS_Neutral();
if(GPS_Task != TSK_IDLE)
{
BeepTime = 100; // beep if signal is neccesary
}
break;
case PROCESSED: // if gps data are already processed do nothing
// downcount timeout
if(GPSTimeout) GPSTimeout--;
// if no new data arrived within timeout set current data invalid
// and therefore disable GPS
else
{
GPS_Neutral();
GPSInfo.status = INVALID;
}
break;
case VALID: // new valid data from gps device
// if the gps data quality is good
if (GPSInfo.satfix == SATFIX_3D)
{
switch(GPS_Task) // check what's to do
{
case TSK_IDLE:
// update hold position to current gps position
GPS_SetHoldPosition(); // can get invalid if gps signal is bad
// disable gps control
GPS_Neutral();
break; // eof TSK_IDLE
case TSK_HOLD:
if(HoldPosition.Status != INVALID)
{
if( IsManualControlled() ) // MK controlled by user
{
// update hold point to current gps position
GPS_SetHoldPosition();
// disable gps control
GPS_Neutral();
GPS_P_Delay = 0;
}
else // GPS control active
{
if(GPS_P_Delay<7)
{ // delayed activation of P-Part for 8 cycles (8*0.25s = 2s)
GPS_P_Delay++;
GPS_SetHoldPosition(); // update hold point to current gps position
GPS_PIDController(NULL); // activates only the D-Part
}
else GPS_PIDController(&HoldPosition);// activates the P&D-Part
}
}
else // invalid Hold Position
{ // try to catch a valid hold position from gps data input
GPS_SetHoldPosition();
GPS_Neutral();
}
break; // eof TSK_HOLD
case TSK_HOME:
if(HomePosition.Status != INVALID)
{
// update hold point to current gps position
// to avoid a flight back if home comming is deactivated
GPS_SetHoldPosition();
if( IsManualControlled() ) // MK controlled by user
{
GPS_Neutral();
}
else // GPS control active
{
GPS_PIDController(&HomePosition);
}
}
else // bad home position
{
BeepTime = 50; // signal invalid home position
// try to hold at least the position as a fallback option
 
if (HoldPosition.Status != INVALID)
{
if( IsManualControlled() ) // MK controlled by user
{
GPS_Neutral();
}
else // GPS control active
{
GPS_PIDController(&HoldPosition);
}
}
else
{ // try to catch a valid hold position
GPS_SetHoldPosition();
GPS_Neutral();
}
}
break; // eof TSK_HOME
default: // unhandled task
GPS_Neutral();
break; // eof default
} // eof switch GPS_Task
} // eof 3D-FIX
else // no 3D-SATFIX
{ // disable gps control
GPS_Neutral();
if(GPS_Task != TSK_IDLE)
{
satbeep = 1600 - (int16_t)GPSInfo.satnum * 200; // is zero at 8 sats
if (satbeep < 0) satbeep = 0;
BeepTime = 50 + (uint16_t)satbeep; // max 1650 * 0.1 ms =
}
}
// set current data as processed to avoid further calculations on the same gps data
GPSInfo.status = PROCESSED;
break;
} // eof GPSInfo.status
//DebugOut.Analog[14] = GPS_Pitch;
//DebugOut.Analog[15] = GPS_Roll;
}
 
/branches/V0.68d CRK HexaLotte/Hex-Files/BootLoader_MEGA644_20MHZ_V0_1.hex
0,0 → 1,64
:10F8000011241FBECFEFD0E1DEBFCDBF11E0A0E0DD
:10F81000B1E0E0EEFBEF02C005900D92A030B10721
:10F82000D9F712E0A0E0B1E001C01D92A230B1070B
:10F83000E1F70C943B7C0C941D7C0895982F8091EB
:10F84000C00085FFFCCF9093C60008958091C00052
:10F850008823E4F78091C600992708958DE40E94DB
:10F860001E7C8BE40E941E7C82E40E941E7C8CE441
:10F870000E941E7C0895CFEFD0E1DEBFCDBFE0E057
:10F88000F0E014915F01772474BE98E10FB6F8940C
:10F8900090936000109260000FBE7092C5008AE2E3
:10F8A0008093C4008091C00082608093C0009093D8
:10F8B000C10086E08093C200EF01072D8091C00057
:10F8C00087FF0DC0013031F48091C6008A3AB1F152
:10F8D00000E005C08091C6008B3109F401E0CE0143
:10F8E00021968436910528F11F3F41F0112331F014
:10F8F000E0910001F091010109951BC01092C50033
:10F900008AE28093C4008AE00E941E7C8DE00E94FF
:10F910001E7C86E50E941E7C80E30E941E7C8EE297
:10F920000E941E7C81E30E941E7C8AE30E941E7C52
:10F9300005C080E593EC0197F1F7C0CF0E942E7CC3
:10F940000E94267C813611F489E547C1813471F427
:10F950000E94267CA82EBB24BA2CAA240E94267CB6
:10F960009927A82AB92AB694A79406C1823629F401
:10F9700089E50E941E7C81E00BC1823409F083C0BE
:10F980000E94267C9927D82FCC270E94267C992775
:10F99000C82BD92B0E94267C082F12E0812E11E063
:10F9A000912EEE24FF2464010894811C911CEC1616
:10F9B000FD0618F40E94267C01C08FEFD6018C93BF
:10F9C0000894E11CF11CBFEFEB16F10461F358F34E
:10F9D000E4E77E1609F0DEC0063409F03DC0FFEF13
:10F9E000AF16F7EFBF0608F033C0DE01A5016627AA
:10F9F0007727440F551F661F771F6A017B01C2E0FE
:10FA0000D1E001E08991992729913327322F2227CC
:10FA1000822B932B0C01FA0100935700E8951124D7
:10FA20004E5F5F4F6F4F7F4F129761F785E0F60192
:10FA300080935700E89507B600FCFDCF81E18093E5
:10FA40005700E89576956795579547955A0194C064
:10FA500080E00E941E7C90C0053409F08DC0F50145
:10FA60009E01A2E0B1E0E1BD8F2F992782BD8D916B
:10FA700080BD3196FA9AF99AF999FECF215030401B
:10FA800091F75F0179C0873609F047C00E94267C54
:10FA90009927D82ECC240E94267C9927C82AD92AB7
:10FAA0000E94267C863411F5E6016501EE24FF24D0
:10FAB000CC0CDD1CEE1CFF1CF60105911491802F6F
:10FAC0000E941E7C812F99270E941E7C82E090E07C
:10FAD000A0E0B0E0C80ED91EEA1EFB1E229761F717
:10FAE000F694E794D794C79456012ACF853409F049
:10FAF00027CF7501E1BC8F2D992782BDF89A089414
:10FB0000E11CF11C80B50E941E7C0894C108D1083C
:10FB1000C114D10479F7570113CF853601F594E765
:10FB2000791651F580E090E0A0E0B0E023E0FC0120
:10FB300020935700E89507B600FCFDCF80509F4FFB
:10FB4000AF4FBF4F8F3FE7EF9E07E0E0AE07E0E02B
:10FB5000BE0768F381E180935700E8950DC08534B6
:10FB600069F488E190E02CE00FB6F894A8958093B2
:10FB700060000FBE209360008DE02FC08035E1F360
:10FB80008C34D1F3803711F483E527C0843721F416
:10FB90000E941E7C80E021C0843521F40E94267CD6
:10FBA000782EEACF8B3109F4C9CE8A3A09F4C6CE51
:10FBB000863529F480E30E941E7C81E30EC08337E2
:10FBC00041F489E00E941E7C86E90E941E7C8EE141
:10FBD00004C08B3109F4B4CE8FE30E941E7CB0CEFA
:040000030000F80001
:00000001FF
/branches/V0.68d CRK HexaLotte/Hex-Files/Conrad LEA-4H Config-4Hz.txt
0,0 → 1,58
MON-VER - 0A 04 46 00 35 2E 30 30 20 20 20 20 4A 75 6C 20 31 37 20 32 30 30 36 20 31 35 3A 30 38 3A 31 30 00 01 30 30 30 34 30 30 30 31 00 00 4D 34 48 31 2E 31 43 20 4A 75 6C 20 31 37 20 32 30 30 36 20 31 36 3A 34 32 3A 33 30 00 00
CFG-ANT - 06 13 04 00 0B 00 0F 38
CFG-DAT - 06 06 02 00 00 00
CFG-FXN - 06 0E 24 00 12 00 00 00 C0 D4 01 00 C0 D4 01 00 C0 27 09 00 C0 27 09 00 A0 8C 00 00 40 77 1B 00 00 00 00 00 00 00 00 00
CFG-INF - 06 02 08 00 00 00 00 00 00 87 00 00
CFG-INF - 06 02 08 00 01 00 00 00 00 00 00 87
CFG-INF - 06 02 08 00 03 00 00 00 00 00 00 00
CFG-MSG - 06 01 06 00 01 01 00 00 00 00
CFG-MSG - 06 01 06 00 01 02 00 01 00 00
CFG-MSG - 06 01 06 00 01 03 00 00 00 00
CFG-MSG - 06 01 06 00 01 04 00 00 00 00
CFG-MSG - 06 01 06 00 01 06 00 01 00 00
CFG-MSG - 06 01 06 00 01 08 00 00 00 00
CFG-MSG - 06 01 06 00 01 11 00 00 00 00
CFG-MSG - 06 01 06 00 01 12 00 01 00 00
CFG-MSG - 06 01 06 00 01 20 00 00 00 00
CFG-MSG - 06 01 06 00 01 21 00 00 00 00
CFG-MSG - 06 01 06 00 01 22 00 00 00 00
CFG-MSG - 06 01 06 00 01 30 00 00 00 00
CFG-MSG - 06 01 06 00 01 31 00 00 00 00
CFG-MSG - 06 01 06 00 01 32 00 00 00 00
CFG-MSG - 06 01 06 00 02 10 00 00 00 00
CFG-MSG - 06 01 06 00 02 11 00 00 00 00
CFG-MSG - 06 01 06 00 02 20 00 00 00 00
CFG-MSG - 06 01 06 00 0A 01 00 00 00 00
CFG-MSG - 06 01 06 00 0A 02 00 00 00 00
CFG-MSG - 06 01 06 00 0A 03 00 00 00 00
CFG-MSG - 06 01 06 00 0A 06 00 00 00 00
CFG-MSG - 06 01 06 00 0A 07 00 00 00 00
CFG-MSG - 06 01 06 00 0A 08 00 00 00 00
CFG-MSG - 06 01 06 00 0A 09 00 00 00 00
CFG-MSG - 06 01 06 00 0B 00 00 00 00 00
CFG-MSG - 06 01 06 00 0B 30 00 00 00 00
CFG-MSG - 06 01 06 00 0B 31 00 00 00 00
CFG-MSG - 06 01 06 00 0D 01 00 00 00 00
CFG-MSG - 06 01 06 00 0D 03 00 00 00 00
CFG-MSG - 06 01 06 00 F0 00 00 00 00 01
CFG-MSG - 06 01 06 00 F0 01 00 00 00 01
CFG-MSG - 06 01 06 00 F0 02 00 00 00 01
CFG-MSG - 06 01 06 00 F0 03 00 00 00 01
CFG-MSG - 06 01 06 00 F0 04 00 00 00 01
CFG-MSG - 06 01 06 00 F0 05 00 00 00 01
CFG-MSG - 06 01 06 00 F0 06 00 00 00 00
CFG-MSG - 06 01 06 00 F0 07 00 00 00 00
CFG-MSG - 06 01 06 00 F0 08 00 00 00 01
CFG-MSG - 06 01 06 00 F1 00 00 00 00 00
CFG-MSG - 06 01 06 00 F1 01 00 00 00 00
CFG-MSG - 06 01 06 00 F1 03 00 00 00 00
CFG-MSG - 06 01 06 00 F1 04 00 00 00 00
CFG-NAV2 - 06 1A 28 00 03 00 00 00 03 03 10 02 50 C3 00 00 0F 0A 05 3C 00 01 00 00 FA 00 FA 00 64 00 2C 01 00 00 00 00 00 00 00 00 00 00 00 00
CFG-NMEA - 06 17 04 00 00 23 00 02
CFG-PRT - 06 00 14 00 01 00 00 00 D0 08 08 00 00 E1 00 00 01 00 01 00 00 00 00 00
CFG-PRT - 06 00 14 00 02 00 00 00 D0 08 08 00 00 E1 00 00 01 00 01 00 00 00 00 00
CFG-PRT - 06 00 14 00 03 00 00 00 00 00 00 00 00 00 00 00 03 00 03 00 00 00 00 00
CFG-RATE - 06 08 06 00 FA 00 01 00 00 00
CFG-RXM - 06 11 02 00 03 00
CFG-SBAS - 06 16 08 00 00 00 01 00 00 00 00 00
CFG-TP - 06 07 14 00 40 42 0F 00 A0 86 01 00 01 01 00 00 32 00 34 03 00 00 00 00
/branches/V0.68d CRK HexaLotte/Hex-Files/Conrad LEA-4H Config-5Hz.txt
0,0 → 1,58
MON-VER - 0A 04 46 00 35 2E 30 30 20 20 20 20 4A 75 6C 20 31 37 20 32 30 30 36 20 31 35 3A 30 38 3A 31 30 00 01 30 30 30 34 30 30 30 31 00 00 4D 34 48 31 2E 31 43 20 4A 75 6C 20 31 37 20 32 30 30 36 20 31 36 3A 34 32 3A 33 30 00 00
CFG-ANT - 06 13 04 00 0B 00 0F 38
CFG-DAT - 06 06 02 00 00 00
CFG-FXN - 06 0E 24 00 12 00 00 00 C0 D4 01 00 C0 D4 01 00 C0 27 09 00 C0 27 09 00 A0 8C 00 00 40 77 1B 00 00 00 00 00 00 00 00 00
CFG-INF - 06 02 08 00 00 00 00 00 00 87 00 00
CFG-INF - 06 02 08 00 01 00 00 00 00 00 00 87
CFG-INF - 06 02 08 00 03 00 00 00 00 00 00 00
CFG-MSG - 06 01 06 00 01 01 00 00 00 00
CFG-MSG - 06 01 06 00 01 02 00 01 00 00
CFG-MSG - 06 01 06 00 01 03 00 00 00 00
CFG-MSG - 06 01 06 00 01 04 00 00 00 00
CFG-MSG - 06 01 06 00 01 06 00 01 00 00
CFG-MSG - 06 01 06 00 01 08 00 00 00 00
CFG-MSG - 06 01 06 00 01 11 00 00 00 00
CFG-MSG - 06 01 06 00 01 12 00 01 00 00
CFG-MSG - 06 01 06 00 01 20 00 00 00 00
CFG-MSG - 06 01 06 00 01 21 00 00 00 00
CFG-MSG - 06 01 06 00 01 22 00 00 00 00
CFG-MSG - 06 01 06 00 01 30 00 00 00 00
CFG-MSG - 06 01 06 00 01 31 00 00 00 00
CFG-MSG - 06 01 06 00 01 32 00 00 00 00
CFG-MSG - 06 01 06 00 02 10 00 00 00 00
CFG-MSG - 06 01 06 00 02 11 00 00 00 00
CFG-MSG - 06 01 06 00 02 20 00 00 00 00
CFG-MSG - 06 01 06 00 0A 01 00 00 00 00
CFG-MSG - 06 01 06 00 0A 02 00 00 00 00
CFG-MSG - 06 01 06 00 0A 03 00 00 00 00
CFG-MSG - 06 01 06 00 0A 06 00 00 00 00
CFG-MSG - 06 01 06 00 0A 07 00 00 00 00
CFG-MSG - 06 01 06 00 0A 08 00 00 00 00
CFG-MSG - 06 01 06 00 0A 09 00 00 00 00
CFG-MSG - 06 01 06 00 0B 00 00 00 00 00
CFG-MSG - 06 01 06 00 0B 30 00 00 00 00
CFG-MSG - 06 01 06 00 0B 31 00 00 00 00
CFG-MSG - 06 01 06 00 0D 01 00 00 00 00
CFG-MSG - 06 01 06 00 0D 03 00 00 00 00
CFG-MSG - 06 01 06 00 F0 00 00 00 00 01
CFG-MSG - 06 01 06 00 F0 01 00 00 00 01
CFG-MSG - 06 01 06 00 F0 02 00 00 00 01
CFG-MSG - 06 01 06 00 F0 03 00 00 00 01
CFG-MSG - 06 01 06 00 F0 04 00 00 00 01
CFG-MSG - 06 01 06 00 F0 05 00 00 00 01
CFG-MSG - 06 01 06 00 F0 06 00 00 00 00
CFG-MSG - 06 01 06 00 F0 07 00 00 00 00
CFG-MSG - 06 01 06 00 F0 08 00 00 00 01
CFG-MSG - 06 01 06 00 F1 00 00 00 00 00
CFG-MSG - 06 01 06 00 F1 01 00 00 00 00
CFG-MSG - 06 01 06 00 F1 03 00 00 00 00
CFG-MSG - 06 01 06 00 F1 04 00 00 00 00
CFG-NAV2 - 06 1A 28 00 03 00 00 00 03 03 10 02 50 C3 00 00 0F 0A 05 3C 00 01 00 00 FA 00 FA 00 64 00 2C 01 00 00 00 00 00 00 00 00 00 00 00 00
CFG-NMEA - 06 17 04 00 00 23 00 02
CFG-PRT - 06 00 14 00 01 00 00 00 D0 08 08 00 00 E1 00 00 01 00 01 00 00 00 00 00
CFG-PRT - 06 00 14 00 02 00 00 00 D0 08 08 00 00 E1 00 00 01 00 01 00 00 00 00 00
CFG-PRT - 06 00 14 00 03 00 00 00 00 00 00 00 00 00 00 00 03 00 03 00 00 00 00 00
CFG-RATE - 06 08 06 00 64 00 02 00 00 00
CFG-RXM - 06 11 02 00 03 00
CFG-SBAS - 06 16 08 00 00 00 01 00 00 00 00 00
CFG-TP - 06 07 14 00 40 42 0F 00 A0 86 01 00 01 01 00 00 32 00 34 03 00 00 00 00
/branches/V0.68d CRK HexaLotte/Hex-Files/Flight-Ctrl_MEGA644_CMPS03_V0_68d.hex
0,0 → 1,2348
:100000000C94B3030C94D0030C94D0030C94D00341
:100010000C94D0030C94D0030C94D0030C94D00314
:100020000C94D0030C947D0D0C94D0030C94D0034D
:100030000C94AE180C94D0030C94D0030C94731849
:100040000C94D0030C94D0030C94A60C0C94D00305
:100050000C94C0080C94D0030C94D6050C94D003D7
:100060000C94520E0C94D0030C94BB170C94D00338
:100070000A0A0D004E65757472616C004865616412
:10008000696E67486F6C64000A0D436F6E74726F1F
:100090006C3A20000A0D537570706F727420666F91
:1000A000722047505320617420317374205541529F
:1000B00054004F4B0A0D000A0D43616C6962726176
:1000C00074696E67206169722070726573737572EE
:1000D000652073656E736F722E2E000A0D53757056
:1000E000706F727420666F7220436F6D70617373EE
:1000F000204D6F64756C6520434D50533033000ABA
:100100000D414343206E6F742063616C69627261BC
:1001100074656421000A0D3D3D3D3D3D3D3D3D3D45
:100120003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DFF
:100130003D3D3D3D3D000A0D466C69676874436F67
:100140006E74726F6C0A0D48617264776172653A01
:1001500025642E25640A0D536F6674776172653AC3
:100160005625642E2564256320002E00416C743AC8
:100170002025642E252E3364206D004C61743A20B6
:1001800025642E252E3364252E3364206465670094
:100190004C6F6E3A2025642E252E3364252E336451
:1001A0002064656700536174733A202564204669B2
:1001B000783A203F3F00536174733A20256420460B
:1001C00069783A20334400536174733A20256420DF
:1001D0004669783A20324400536174733A202564AA
:1001E000204669783A204E6F004E6F20646174613A
:1001F00020617661696C61626C65210048693A250D
:100200003469202043663A253469200047733A2533
:100210003469202059613A253469200050693A2513
:1002200034692020526F3A2534692000457874657E
:10023000726E436F6E74726F6C20200052616E6735
:10024000653A2533692D25336900506F73697469E8
:100250006F6E3A2025336900536574706F696E7450
:10026000202025336900536572766F202000506F7F
:10027000343A2025336920506F383A2025336900FD
:10028000506F333A2025336920506F373A20253399
:100290006900506F323A2025336920506F363A207A
:1002A00025336900506F313A2025336920506F356E
:1002B0003A20253369004F6666436F757273653A5D
:1002C000202535690048656164696E673A20202001
:1002D00025356900436F757273653A20202020250B
:1002E000356900436F6D70617373202020202020DA
:1002F000200052432D4C6576656C3A202535690007
:10030000566F6C746167653A202025356900486531
:1003100069676874202534692028253369290052CB
:100320006F6C6C2020202534692028253369290032
:100330005069746368202025346920282533692991
:1003400000414343202D2053656E736F7200596145
:100350007720202025346920282533692900526F11
:100360006C6C2020253469202825336929005069C8
:100370007463682025346920282533692900596170
:100380007720202025346920282533692900526FE1
:100390006C6C202025346920282533692900506998
:1003A000746368202534692028253369290047793A
:1003B000726F202D2053656E736F720050333A2593
:1003C0003469202050343A253469200050313A25D0
:1003D0003469202050323A253469200047733A2589
:1003E0003469202059613A253469200050693A2542
:1003F00034692020526F3A253469200043373A256A
:100400003469202043383A253469200043353A25A1
:100410003469202043363A253469200043333A2595
:100420003469202043343A253469200043313A2589
:100430003469202043323A2534692000436F6D70BF
:100440006173733A20202025356900526F6C6C3A35
:100450002020202020202535690050697463683AE7
:10046000202020202025356900417474697475644A
:10047000650048656967687420436F6E74726F6CBD
:10048000004E6F20004F6666736574202020203A6E
:10049000253569004169722050726573732E3A25C3
:1004A00035690053657420506F696E743A202535A4
:1004B00069004865696768743A20202020253569FD
:1004C0000028632920486F6C67657220427573733A
:1004D0000053657474696E673A202564200048579C
:1004E0003A5625642E25642053573A25642E2564F8
:1004F0002563002B204D696B726F4B6F70746572B2
:10050000202B005B25695D005B25695D000A0D55A8
:1005100073696E6720506172616D657465722053F6
:100520006574202564000A0D496E69742E204545C6
:1005300050524F4D3A2047656E65726174696E671F
:100540002044656661756C742D506172616D6574CF
:1005500065722E2E2E0000008F001E01AD013B02A1
:10056000CA025803E603740402058F051B06A7069A
:100570003307BE074808D2085B09E3096B0AF20A91
:10058000780BFD0B810C040D860D070E870E060FF0
:10059000840F00107B10F5106E11E5115B12CF1265
:1005A0004213B31323149214FE146A15D3153B1689
:1005B000A11605176717C81727188318DE183719EB
:1005C0008E19E319361A871AD61A231B6E1BB61B0F
:1005D000FD1B411C831CC31C001D3C1D751DAB1D58
:1005E000E01D121E421E6F1E9A1EC31EE91E0D1F25
:1005F0002E1F4D1F691F841F9B1FB01FC31FD31FBA
:10060000E11FEC1FF51FFB1FFF1F0020000102036D
:10061000040405060708090A0B0B0C0D0E0F101138
:1006200011121314151516171818191A1B1B1C1D57
:100630001D1E1F1F20212122232324242525262798
:1006400027282829292A2A2B2B2C2C2D2D2D2E2EFC
:100650002F2F30303031313232323333333434347F
:10066000353535363636373737373838383939391A
:10067000393A3A3A3A3B3B3B3B3C3C3C3C3C3D3DC7
:100680003D3D3E3E3E3E3E3F3F3F3F3F3F40404080
:100690004040404141414141414242424242424246
:1006A0004343434343434344444444444444444510
:1006B00045454545454545454646464646464646E2
:1006C00046474747474747474747474748484848B7
:1006D0004848484848484849494949494949494991
:1006E00049494949494A4A4A4A4A4A4A4A4A4A4A6F
:1006F0004A4A4A4B4B4B4B4B4B4B4B4B4B4B4B4B4D
:100700004B4B4B4B4C4C4C4C4C4C4C4C4C4C4C4C2D
:100710004C4C4C4C4C4C4C4D4D4D4D4D4D4D4D4D10
:100720004D4D4D4D4D4D4D4D4D4D4D4D4D4E4E4EF6
:100730004E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4ED9
:100740004E4E4E4E4E4E4E4F4F4F4F4F4F4F4F4FC0
:100750004F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4FA9
:100760004F4F4F4F4F4F11241FBECFEFD0E1DEBF91
:10077000CDBF14E0A0E0B1E0E4EEFEE802C00590D9
:100780000D92AA3BB107D9F718E0AAEBB4E001C07B
:100790001D92AE3FB107E1F70E94D2030C9471475E
:1007A0000C940000CF93DF93F89414B815B8189BFD
:1007B00002C08BE001C08AE08093000184B18360B5
:1007C00084B9209100012A3011F4289A01C0289898
:1007D000299884B7877F84BF809160008861809367
:1007E00060001092600080ED97E09093D8048093B1
:1007F000D70410923D0810923C0810926E0510929A
:100800006D0510926C0510926B0510926A0510929E
:1008100069052A3011F4289801C0289A0E940B1704
:100820000E945C0C0E945A0D0E947C050E943F1899
:100830000E94350E0E9464170E941742789410920D
:100840003E0784E480933F0787E080934007209130
:100850000001822F6AE00E94A246492F50E0822FB9
:100860000E94A24690E024E630E03F932F9324E4D8
:1008700030E03F932F931F921F925F934F939F936C
:100880008F9386E391E09F938F931F920E94B80904
:1008900085E191E09F938F931F920E94B809299A56
:1008A0000E94983E84E00E94983C2DB73EB7205F9E
:1008B0003F4F0FB6F8943EBF0FBE2DBF80509440FF
:1008C00050F08FEF90E09F938F931F920E94B80992
:1008D0000F900F900F9084EF91E00E94910CEC012B
:1008E000CE010E949A0C8823D9F38BED90E09F9360
:1008F0008F931F920E94B8098091C0080F900F90AB
:100900000F9080FF20C087EB90E09F938F931F9202
:100910000E94B80988EE93E00E94910CEC010E94BD
:10092000D6100F900F900F90CE010E949A0C882342
:10093000D9F382EB90E09F938F931F920E94B809A6
:100940000F900F900F9084E990E09F938F931F92E8
:100950000E94B8090E9408220F900F900F9080917A
:1009600000018A3011F4289801C0289A80ED97E0A0
:100970009093D8048093D70485E58093480788E84E
:1009800090E09F938F931F920E94B8098091C008B6
:100990000F900F900F9082FF03C08CE790E002C091
:1009A00084E790E09F938F931F920E94B8090F9065
:1009B0000F900F9080E790E09F938F931F920E947B
:1009C000B8090E94161188E893E190936D03809313
:1009D0006C030F900F900F908091D4048823E1F363
:1009E0001092D4040E945A230E94DD21209100011C
:1009F0002A3011F4289801C0289A80910301882395
:100A000021F081508093030112C01092C60410920D
:100A1000C704109252071092760510927505109235
:100A200078051092770510927A05109279058091D9
:100A30006C0390916D03892B01F585E090E0909314
:100A40006D0380936C030E948B1780910403909137
:100A500005038F5F9F4FF9F4809157058823D9F0E4
:100A600080E197E29093D8048093D70480E890E0E7
:100A700090930503809304030EC080916C039091C2
:100A80006D03019790936D0380936C032A3011F4EA
:100A9000289801C0289A8091D404882311F40E94D8
:100AA0000D070E94B507CE010E949A0C882309F415
:100AB00093CF20910803309109038091D00890E0F2
:100AC000281739079CF480910403909105038F5FE8
:100AD0009F4F61F480E797E19093D8048093D70407
:100AE00080E093E0909305038093040384E690E014
:100AF0000E94910CEC0170CF9FB7F8948091C100D7
:100B00008F778093C1008091C1008F7B8093C1005B
:100B1000589A5098599A519A1092C5008AE2809337
:100B2000C4008091C00082608093C00088E18093FF
:100B3000C1008091C2008F778093C2008091C20073
:100B40008F7B8093C2008091C2008F7D8093C20012
:100B50008091C2008F7E8093C2008091C200877F07
:100B60008093C2008091C1008B7F8093C1008091EF
:100B7000C20084608093C2008091C2008260809332
:100B8000C20002C08091C6008091C00087FDFACFEC
:100B90008091C10080688093C1008091C100806411
:100BA0008093C1001092BE049FBF08951F920F92C0
:100BB0000FB60F9211248F939F93EF93FF93809121
:100BC00001018823E1F48091D0049091D104019631
:100BD0009093D1048093D004FC01EB56F84FE08150
:100BE000ED3019F08639910539F41092D104109244
:100BF000D00481E080930101E093C60004C010920C
:100C0000D1041092D004FF91EF919F918F910F909A
:100C10000FBE0F901F901895DC0120E030E040E0FF
:100C200050E008C0FA01EB56F84F8081280F311DC3
:100C30004F5F5F4F4A175B07A9F73F70C90136E066
:100C4000969587953A95E1F7835CFD01EB56F84F51
:100C5000808311962F73235CFD01EB56F84F2083A0
:100C6000AA56B84F8DE08C931092010180919507A0
:100C70008093C60008951F93CF93DF93EA01722FEC
:100C800093E2909395076093960780939707A3E06C
:100C9000B0E060E04FC0FE01E60FF11D90816F5F94
:100CA000715019F410E040E00FC0FE01E60FF11D95
:100CB00040816F5F715011F410E006C0FE01E60F35
:100CC000F11D10816F5F7150892F86958695835C29
:100CD000FD01EB56F84F808350E09A0184E0369591
:100CE00027958A95E1F7892F90E083709070F4E062
:100CF000880F991FFA95E1F7282B235CFD01EA562E
:100D0000F84F2083812F82958695869583704F704A
:100D10005070440F551F440F551F842B835CFD01F9
:100D2000E956F84F80831F73135CFD01E856F84FB6
:100D300010831496772309F0AECFCD010E940C06E4
:100D4000DF91CF911F9108951F93CF93DF93EC0113
:100D500070E0A22FB0E0129748C0E42FF0E0E85511
:100D6000F94F30814F5FE42FF0E0E855F94F5081A3
:100D70004F5FE42FF0E0E855F94F10814F5FE42F0B
:100D8000F0E0E855F94F20814F5F842F90E0A817DD
:100D9000B90774F15D53FE01E70FF11D852F8295B0
:100DA0008F703D53330F330F382B3083613001F197
:100DB000912F9D537F5FFE01E70FF11D71505295FA
:100DC000507F892F86958695582B508363506F3FAF
:100DD00079F07E5FFE01E70FF11D9295990F990F53
:100DE000907C2D53922B90837F5F662309F0B5CFC3
:100DF000DF91CF911F9108951F93182F8A3019F416
:100E00008DE00E94FC068091C00085FFFCCF10930E
:100E1000C60080E090E01F91089580910101882331
:100E200009F4A2C08091BA04882371F08091010175
:100E3000882351F06091CA042BE048E457E087E42E
:100E40000E943B061092BA048091CB049091CC048E
:100E50000E949A0C882321F48091BC048823B1F06D
:100E600080910101882391F06091CA0422E443E556
:100E700057E084E40E943B061092BC0484EF91E0AA
:100E80000E94910C9093CC048093CB04609102015A
:100E90006F3F89F0462F50E094E0440F551F9A951C
:100EA000E1F74C5F5E4F605D20E181E40E943B060C
:100EB0008FEF8093020190912B089923A1F08091EC
:100EC0000101882381F083E2809395079093960730
:100ED0008DE0809397071092010110922B0880916A
:100EE00095078093C6008091BB04882359F18091B7
:100EF0000101882339F10E941F111092BB04309127
:100F0000C004932F9F5F9093C004943021F0809190
:100F1000C104882359F02EE148E358E060E084E3FF
:100F20000E943B068FEF8093C0040CC044E1949F65
:100F3000A0011124465E5C4F24E160E0832F8F5CAA
:100F40000E943B068091BD04882371F080910101CD
:100F5000882351F06091CA042AE04EE357E086E509
:100F60000E943B061092BD0408951F93CF93DF9318
:100F7000CDB7DEB722970FB6F894DEBF0FBECDBF58
:100F80008091BE04882309F4F1C08FEF80930301A0
:100F90008091AA068B3609F479C08C3688F48336A2
:100FA000D1F1843630F48136C1F0823609F0DCC0EC
:100FB00020C0873609F47BC0883609F0D5C042C00E
:100FC000813709F478C0813708F49BC0843709F46D
:100FD00054C0863709F0C8C066C02091BF0443E002
:100FE00062E0CE0101960E94A406898180930201ED
:100FF000BBC02091BF0443E06BE088E497E00E940F
:10100000A4068091FA0490914A07892B8093FA04F0
:101010008091510745C02091BF0443E06BE088E414
:1010200097E00E94A4068091FA0490914A07892BC8
:101030008093FA048091510780932B0881E080937C
:10104000BC0492C02091BF0443E062E0CE0101964F
:101050000E94A4068091FA049981892B8093FA0456
:101060008A818F3F21F481E08093C10402C01092F5
:10107000C10481E08093BB0477C02091BF0443E0AA
:1010800064E082EC94E00E94A4066EC02091BF044C
:1010900043E064E086EC94E00E94A4068091C904D9
:1010A00080932B0861C081E08093BD045DC081E026
:1010B0008093BA0459C02091BF0443E062E0CE019E
:1010C00001960E94A40689818F3F71F0863010F04E
:1010D00085E0898389810E94C63C6091CA04898128
:1010E00026E448EB58E009C01091CA0482E00E944F
:1010F000873C26E448EB58E0612F855B0E943B0665
:1011000033C02091BF0443E066E488EB98E00E947E
:10111000A4068091AA068B560E94B13C6091E30818
:1011200070E080E090E024EC39E040E050E00E9484
:101130008346609372037093730380937403909358
:1011400075036091E40870E080E090E00E948346BF
:101150006093760370937703809378039093790379
:101160000E94893E0E9445231092BE0422960FB62B
:10117000F894DEBF0FBECDBFDF91CF911F910895D0
:101180001F920F920FB60F9211241F932F933F932C
:101190004F935F936F937F938F939F93AF93BF937F
:1011A000CF93DF93EF93FF931091C600812F0E949E
:1011B000CE408091BE04882309F06DC06091CD04BB
:1011C000662371F4133279F41093A80681E08093BA
:1011D000CD0483E290E09093CF048093CE045BC073
:1011E000663908F054C0A62FB0E02091CE043091AB
:1011F000CF041D3069F0A855B94F1C936F5F609301
:10120000CD04210F311D3093CF042093CE0443C071
:10121000FD01EA55F94F9081ED01C955D94F8881FB
:10122000A901491B5109481B51095F705093CF0414
:101230004093CE042081CA0136E0969587953A9571
:10124000E1F7835C8217F1F49881842F8F73835CBC
:101250008917C1F481E08093BE046093BF04A85550
:10126000B94F1C938091AA06823571F488E190E011
:101270002CE00FB6F894A895809360000FBE2093E1
:10128000600002C01092BE041092CD0404C01092FF
:10129000CD041092BE04FF91EF91DF91CF91BF91E9
:1012A000AF919F918F917F916F915F914F913F91FE
:1012B0002F911F910F900FBE0F901F901895982F90
:1012C00080912C08813069F48091F904E82FF0E0D6
:1012D000E65EFC4F90838F5F8093F90421E030E05D
:1012E00005C0892F0E94FC06282F30E0C90108950F
:1012F0001F93182F04C080E30E945F09115011163C
:10130000D4F31F9108951F93182F04C080E20E9408
:101310005F0911501116D4F31F9108950F931F9375
:10132000CF93DF938C01EB0108C0F8010F5F1F4FD3
:10133000E4918E2F0E945F0921972097B1F7DF91EA
:10134000CF911F910F9108950F931F93CF93DF9328
:101350008C01EB0106C0F80181918F010E945F09A9
:1013600021972097C1F7DF91CF911F910F91089599
:101370002F923F924F925F926F927F928F929F92A5
:10138000AF92BF92CF92DF92EF92FF920F931F9393
:10139000CF93DF93CDB7DEB7E5970FB6F894DEBFF6
:1013A0000FBECDBF2B968FAD2B9780932C08CE010F
:1013B000835B9F4F9B838A832D964EAC5FAC2D97AA
:1013C0001EA61FA618AA19AA9E01225D3F4F3DAB7B
:1013D0002CAB820102C00F5F1F4FF801F490FF2079
:1013E00019F0F5E2FF16B9F7B8016419750919F09B
:1013F000C2010E948E09FF2009F445C22801089409
:10140000411C511C1982AA81BB8133241BAA2FEFD6
:101410002AABF2010894411C511CB490632D70E07A
:101420006170707035E7B31621F08B2D80628837BC
:10143000C9F46115710559F02D913D914D915C9163
:1014400013972EA73FA748AB59AB14960BC08D91AD
:101450009C9111979C0140E050E02EA73FA748AB1C
:1014600059AB129630E2B31621F48981882389F6AC
:101470001CC043E2B41611F458E055C08AE2B81615
:1014800021F09DE2B91671F408C0FD011296E081C9
:10149000EBABE7FFBECFE195EBABE0E13E2AFFED22
:1014A0003F22B7CF2BE2B21611F4B982B2CF3EE29F
:1014B000B31699F5F2010894411C511C84918A32AB
:1014C00021F0B82E20E030E01DC0FD0112964081D1
:1014D000518157FF02C04FEF5FEF4AAB9ACFC9016E
:1014E00053E0880F991F5A95E1F7220F331F280FF9
:1014F000391F2B0D311D20533040F2010894411C3F
:10150000511CB4908B2D80538A3048F3A90137FFCA
:1015100002C04FEF5FEF4AAB85CF40E3B41629F42A
:1015200034FC77CF50E2352A74CF8B2D815389302C
:10153000D8F420E030E0C90103E0880F991F0A9534
:10154000E1F7220F331F280F391F2B0D311D2053B8
:101550003040F2010894411C511CB4908B2D8053F3
:101560008A3048F32BAB5ECF88E6B81619F494E0C6
:10157000392A4FCFECE6BE1619F4F1E03F2A49CFE5
:10158000BB83AA8323E6B21639F41296BB83AA83DF
:1015900012978C918E8322C134E4B31639F044E65D
:1015A000B41631F059E6B516A9F502C081E0382A23
:1015B00030FE08C01496BB83AA835E914E913E9183
:1015C0002E910AC01296BB83AA839E918E919C0194
:1015D000442737FD4095542F2EA73FA748AB59AB62
:1015E0008EA59FA5A8A9B9A9BB238CF42EA53FA5BC
:1015F00048A959A950954095309521953F4F4F4F97
:101600005F4F2EA73FA748AB59AB8DE28983BAE065
:101610002B2E80C03FE4B31621F04FE6B41631F410
:1016200002C051E0352AA8E02A2E73C080E7B81620
:1016300089F41296BB83AA839E918E919C0140E00F
:1016400050E02EA73FA748AB59AB30E4332AF8E768
:10165000BF2E5DC043E7B416D1F51296BB83AA83B3
:10166000DE90CE90C114D10489F488E28E838EE698
:101670008F8385E788878CE689878A8789E28B87CD
:101680001C86E6E0CE2ED12CCC0EDD1E5AA957FDCD
:1016900014C0452F552747FD509560E070E0C60106
:1016A0000E945B44009711F4FAA80EC0F82EFC18B3
:1016B0008AA98F154CF4F82E07C0F601019000207E
:1016C000E9F73197FE2EFC18198240E090C095E5AD
:1016D000B91621F0A5E7BA1631F402C0B1E03B2AF1
:1016E0007AE0272E16C0E8E5BE1621F0F8E7BF160F
:1016F00009F070C033FE0BC02EA53FA548A959A91B
:10170000211531054105510511F030E4332A60E11E
:10171000262E19824AA947FD02C05FED35228EA50B
:101720009FA5A8A9B9A90097A105B10549F49AA94F
:10173000992331F45EE2C52ED12CCC0EDD1E46C0BD
:101740006EA47FA488A899A84EE2C42ED12CCC0EFA
:10175000DD1EE22CFF2400E010E06EA57FA588A925
:1017600099A9A80197010E94D5466A3020F430E378
:10177000A32EA60E08C027E5A22EA60EA8E5BA162F
:1017800011F4BFEDAB22F601A2926F016EA57FA509
:1017900088A999A9A80197010E94D5462EA73FA71D
:1017A00048AB59AB6E147F048006910618F03901DE
:1017B0004A01D3CFF8E02F1649F433FE07C020E3E7
:1017C000A21621F080E3D6018E936D01FCA8FC18CF
:1017D0004AA90DC0BB2009F456C0BE82198296E00A
:1017E000C92ED12CCC0EDD1E40E0FF24F394E42E54
:1017F000EF18E7FCEE248981882319F08F2D8F5F85
:1018000006C036FC02C08F2D02C08F2D8E5FA82E21
:10181000AE0C032D10E080E3882E912C80229122C3
:101820008114910421F48BA98A190E94830989816A
:10183000882329F061E070E0CE01019609C006FF1F
:1018400009C080E38C83BD8262E070E0CE01049623
:101850000E94A409B0E28B16910421F48BA98A1985
:101860000E9478098E2D0E9478096F2D772767FDD9
:101870007095C6010E94A40904FFABCD8BA98A19FB
:101880000E948309A6CDE5960FB6F894DEBF0FBE81
:10189000CDBFDF91CF911F910F91FF90EF90DF901F
:1018A000CF90BF90AF909F908F907F906F905F9000
:1018B0004F903F902F9008952FB7F894909100018A
:1018C0009A3019F4529A5A9802C03F9A479884B1B4
:1018D000886184B985B1877E85B99A3019F4529AA6
:1018E0005A9802C03F9A479884B58F7A84BD84B5D0
:1018F000836A84BD85B5877385BD85B5887F826021
:1019000085BD17BC88E788BD16BC80916E00897FB5
:1019100080936E0080916E00816080936E002FBF77
:1019200008952091D2043091D3042F5F3F4F820F4E
:10193000931F08952091D2043091D304821B930BFE
:10194000892F99278695807490E008951F920F92B1
:101950000FB60F9211242F933F934F935F936F9382
:101960007F938F939F93AF93BF93EF93FF93809158
:10197000D90481508093D9048F3FB9F489E08093D2
:10198000D904809106038F5F8170809306038823BA
:1019900019F481E08093D4048091D2049091D3040F
:1019A00001969093D3048093D2048091D7049091B0
:1019B000D804892BB1F08091D7049091D804019775
:1019C0009093D8048093D7042091D7043091D80401
:1019D000809104039091050382239323892BE1F4E2
:1019E00006C08FEF9FEF90930503809304038091CF
:1019F00000018A3039F404C05A9A05C0479A03C0DE
:101A00005A9801C047988091C00883FD02C085FFA5
:101A100008C00E941C4205C0809100018A3071F705
:101A2000EBCFFF91EF91BF91AF919F918F917F91FC
:101A30006F915F914F913F912F910F900FBE0F903B
:101A40001F901895AC012091D2043091D3042F5FE0
:101A50003F4F05C080917A00886C80937A00809116
:101A6000D2049091D304B901681B790BCB01840F88
:101A7000951F80709078892F99278695882351F338
:101A80000895AC012091D2043091D3042F5F3F4FD1
:101A90008091D2049091D304B901681B790BCB01DA
:101AA000840F951F80709078892F992786958823B9
:101AB00079F308959FB7F894579A5F9AE0EBF0E0B6
:101AC00080818F788083808183688083E1EBF0E080
:101AD0008081867380838081866080838AE08093A2
:101AE000B3001092B200E0E7F0E080818A7F80834B
:101AF0008081826080839FBF08951F920F920FB6EE
:101B00000F921124FF920F931F932F933F934F93A4
:101B10005F936F937F938F939F93AF93BF93EF9355
:101B2000FF93809107038150809307038F3F09F053
:101B300082C08091B0008093B0008091B000806836
:101B40008093B0008091910390E09093DB048093A8
:101B5000DA048091ED08F090DA0880FF23C000914C
:101B6000DA041091DB0460912105709122058091C7
:101B700023059091240520E830E040E050E00E94E9
:101B8000F746CA01B9012F2D30E040E050E00E9435
:101B9000834620E032E040E050E00E94F746020F2A
:101BA000131F22C00091DA041091DB04609121051B
:101BB00070912205809123059091240520E830E062
:101BC00040E050E00E94F746CA01B9012F2D30E0F5
:101BD00040E050E00E94834620E032E040E050E0E8
:101BE0000E94F746021B130B1093DB040093DA04E8
:101BF0002091DA043091DB048091DB0890E0281713
:101C0000390754F02091DA043091DB048091DC082C
:101C100090E08217930724F49093DB048093DA0416
:101C20008091DA049091DB048093B3008091DD0809
:101C30008093070306C08091B0008F738093B0003B
:101C40005F98FF91EF91BF91AF919F918F917F919D
:101C50006F915F914F913F912F911F910F91FF9045
:101C60000F900FBE0F901F9018959FB7F89411B862
:101C700012B88FEF80937E00ECE7F0E080818F71E7
:101C800080838081807E8083AAE7B0E087E28C93A6
:101C9000EBE7F0E08081887F80838C91886C8C9367
:101CA0009FBF08951F920F920FB60F921124EF92CB
:101CB000FF920F931F932F933F934F935F936F93D5
:101CC0007F938F939F93AF93BF93CF93DF93EF93C4
:101CD000FF9380917A00877380937A008091F70454
:101CE0008F5F8093F7048150853009F47EC0863081
:101CF00090F4823009F440C0833030F48823F1F04E
:101D0000813009F027C22FC0833009F441C08430EC
:101D100009F020C25AC0883009F4B2C0893038F4C2
:101D2000863009F473C0873009F014C28CC0893042
:101D300009F4C3C08A3009F00DC29EC180917800B9
:101D4000909179009093F6048093F50481E080935C
:101D5000F8048091EC049091ED0401969093ED04C9
:101D60008093EC04FBC1809178009091790090936E
:101D7000F4048093F30482C08091780090917900FC
:101D80009093F2048093F10484E08093F804E6C118
:101D90004091080350910903809178009091790057
:101DA0009A01220F331F240F351F63E070E00E9459
:101DB000AE46260F371F36952795369527953093D3
:101DC00009032093080386E0E0CF80911B059091E2
:101DD0001C052091780030917900821B930B909321
:101DE000E5048093E40487E0D0CF8091780090915F
:101DF00079002091190530911A05821B930B90935D
:101E0000E7048093E6041092F804A8C180910001D1
:101E10002091F5043091F6048A3049F480917800DD
:101E200090917900820F931F9695879506C08091B7
:101E3000780090917900820F931F9093E304809330
:101E4000E20481E0A2CF809100012091F30430915F
:101E5000F4048A3049F48091780090917900820FDF
:101E6000931F9695879506C0809178009091790090
:101E7000820F931F9093E1048093E00482E085CF6A
:101E8000809100012091F1043091F2048A3049F4EC
:101E90008091780090917900820F931F9695879595
:101EA00006C08091780090917900820F931F9093E3
:101EB000DF048093DE0485E068CF60917800709144
:101EC0007900E0901D05F0901E0500911F0510910E
:101ED0002005882777FD8095982F0E946845A801E6
:101EE00097010E9468440E9435457093E90460930D
:101EF000E804E091E804F091E9048091E60490910F
:101F0000E704C091E404D091E50497FF03C09095E5
:101F100081959F4F64E070E00E94C2469B01CE0114
:101F2000D7FF03C0909581959F4F64E070E00E94B9
:101F3000C246260F371FE20FF31FF093E904E09328
:101F4000E8048091E8049091E904029704F160911B
:101F50001D0570911E0580911F059091200520E0C0
:101F600030E048E454E40E94A34588230CF03CC0D0
:101F700060911D0570911E0580911F0590912005AF
:101F80002AE037ED43EA5CE30E94694425C0809172
:101F9000E8049091E9048F5F9F4F34F560911D052F
:101FA00070911E0580911F059091200520E030E082
:101FB00046E154E40E94A7451816B4F460911D054B
:101FC00070911E0580911F05909120052AE037ED44
:101FD00043EA5CE30E94684460931D0570931E050C
:101FE00080931F059093200580917800909179004F
:101FF0009093DD048093DC042091510530915205CB
:1020000040915305509154058091E8049091E90462
:10201000AA2797FDA095BA2F820F931FA41FB51F63
:102020008093510590935205A0935305B0935405A6
:10203000E0905105F0905205009153051091540520
:10204000609151057091520580915305909154050E
:1020500020E034E040E050E00E94F746E21AF30A44
:10206000040B150BE0925105F092520500935305B5
:102070001093540583E089CE6091780070917900C7
:102080008091EE049091EF04680F791F7093EF0434
:102090006093EE048091F0048F5F8093F0048530AC
:1020A00008F458C0809178009091790090930F03C4
:1020B00080930E0380912D0890912E08861B970B1C
:1020C00020917B0530917C05821B930B9093EB0450
:1020D0008093EA04E0900A03F0900B0300910C0354
:1020E00010910D03882777FD8095982FA8019701FF
:1020F000220F331F441F551F2E0D3F1D401F511F20
:10210000620F731F841F951F24E030E040E050E011
:102110000E94F74620930A0330930B0340930C036D
:1021200050930D0320912D0830912E0880910A03C1
:1021300090910B03A0910C03B0910D03281B390B58
:1021400030937C0520937B051092F0041092EF04ED
:102150001092EE041092F8041092F70480917C0023
:10216000807E9091F804892B80937C008091F70405
:10217000882329F080917A00886C80937A00FF91FF
:10218000EF91DF91CF91BF91AF919F918F917F910F
:102190006F915F914F913F912F911F910F91FF9000
:1021A000EF900F900FBE0F901F9018951F93CF9335
:1021B000DF9383E00E94873C182F853108F01A5086
:1021C00017BD84E690E00E94220D80910E0390914D
:1021D0000F0382559340C0F410E016C017BD82E390
:1021E00090E00E94220DDF93CF931F920E94B809C6
:1021F00080910E0390910F030F900F900F908458D1
:10220000934030F01F5F02C0CAE6D1E01A3F30F3BE
:10221000612F83E00E94903C10932F088CE291E0A4
:102220000E94220DDF91CF911F910895EAE1F3E022
:1022300080E2819383E0EA36F807D1F708959F9210
:10224000AF92BF92CF92DF92EF92FF920F931F93C4
:10225000CF93DF938091FA04282F30E0C901817079
:102260009070682F8823A9F08091FB04882311F0D7
:10227000815002C080916A038093FB04EAE1F3E09D
:1022800080E2819383E0EA36F807D1F78FEF8093FD
:10229000C004A9014270507021FF17C09091FB0447
:1022A00080916A03981719F41092FB0403C09F5F92
:1022B0009093FB04EAE1F3E080E2819393E0EA3655
:1022C000F907D1F78FEF8093C004662321F0452BE7
:1022D00011F01092FB048091FB04282F30E08A302B
:1022E00040F481E18093F9043F932F9388E095E0D7
:1022F00007C080E18093F9043F932F9383E095E03A
:102300009F938F9381E08F930E94B8090F900F9055
:102310000F900F900F901091FB04163009F4BDC27E
:10232000173090F4123009F4D0C0133030F4112378
:1023300009F1113009F05CC565C0143009F46FC1B2
:10234000153008F0F0C117C1193009F457C31A301D
:1023500038F4173009F4EFC2183009F049C510C33A
:102360001B3009F4DDC31B3008F49CC31C3009F09A
:102370003FC528C41092F90483EF94E09F938F9394
:1023800011E01F930E94B80984E18093F904209121
:102390000001822F6AE00E94A246492F50E0822F5E
:1023A0000E94A24690E024E630E03F932F9324E47D
:1023B00030E03F932F931F921F925F934F939F9311
:1023C0008F938EED94E09F938F931F930E94B80993
:1023D00088E28093F9040E94893E90E09F938F9356
:1023E00081ED94E09F938F931F930E94B8098CE333
:1023F0008093F90481EC94E09F938F931F930E9444
:10240000B809DCC38091C00880FF47C01092F9046E
:1024100080917B0590917C059F938F9382EB94E054
:102420009F938F931F930E94B80984E18093F904CE
:1024300080917D0590917E059F938F9383EA94E030
:102440009F938F931F930E94B80988E28093F904A9
:1024500080910E0390910F039F938F9384E994E0F2
:102460009F938F931F930E94B8098CE38093F90484
:1024700080912F0890E09F938F9385E894E09F933D
:102480008F931F930E94B8098DB79EB744960FB6DD
:10249000F8949EBF0FBE8DBFB0C484E18093F90451
:1024A00081E894E09F938F931F930E94B80988E27C
:1024B0008093F90482E794E09F938F931F930E9487
:1024C000B8098DB79EB70696E2CF1092F90489E657
:1024D00094E09F938F9311E01F930E94B80984E1C9
:1024E0008093F90460912105709122058091230564
:1024F0009091240520E034E040E050E00E94F7464F
:102500005F934F933F932F938AE594E09F938F932C
:102510001F930E94B80988E28093F904609129050D
:1025200070912A0580912B0590912C0520E034E0D4
:1025300040E050E00E94F7465F934F933F932F9304
:102540008BE494E09F938F931F930E94B8098CE3D0
:102550008093F90480916E0390916F039F938F9302
:102560008CE394E09F938F931F930E94B8098DB7DB
:102570009EB746968CCF1092F90480913C089091BA
:102580003D0820913A0830913B089F938F933F93E9
:102590002F938CE294E09F938F9311E01F930E94FE
:1025A000B80984E18093F904809140089091410832
:1025B00020913E0830913F089F938F933F932F9334
:1025C0008CE194E09F938F931F930E94B80988E257
:1025D0008093F90480914408909145082091420825
:1025E000309143089F938F933F932F938CE094E017
:1025F0009F938F931F930E94B8098CE38093F904F3
:1026000080914808909149082091460830914708E8
:102610009F938F933F932F938CEF93E07BC0109207
:10262000F904E091B908F0E0EE0FFF1FE85CF74F06
:1026300020813181E091B808F0E0EE0FFF1FE85CE7
:10264000F74F808191813F932F939F938F938CEECF
:1026500093E09F938F9311E01F930E94B80984E148
:102660008093F904E091BB08F0E0EE0FFF1FE85CF7
:10267000F74F20813181E091BA08F0E0EE0FFF1FA3
:10268000E85CF74F808191813F932F939F938F93C5
:102690008CED93E09F938F931F930E94B80988E27B
:1026A0008093F904E091BD08F0E0EE0FFF1FE85CB5
:1026B000F74F20813181E091BC08F0E0EE0FFF1F61
:1026C000E85CF74F808191813F932F939F938F9385
:1026D0008CEC93E09F938F931F930E94B8098CE337
:1026E0008093F904E091BF08F0E0EE0FFF1FE85C73
:1026F000F74F20813181E091BE08F0E0EE0FFF1F1F
:10270000E85CF74F808191813F932F939F938F9344
:102710008CEB93E09F938F931F930E94B8098DB722
:102720009EB74C96B4CE1092F9048EEA93E09F9334
:102730008F9311E01F930E94B8090F900F900F9094
:10274000809100018A3009F04AC084E18093F90445
:1027500040910F05509110058091DE049091DF04A7
:1027600020910F0530911005821B930B5F934F93BF
:102770009F938F938EE993E09F938F931F930E9473
:10278000B80988E28093F90440911105509112052F
:102790008091E0049091E10420911105309112059F
:1027A000821B930B5F934F939F938F938EE893E0DD
:1027B0009F938F931F930E94B8098CE38093F90431
:1027C000809113059091140520918A0830918B080F
:1027D0009F938F933F932F938EE793E055C084E1AF
:1027E0008093F90480910F059091100562E070E0EC
:1027F0000E94C2468091DE049091DF0420910F0573
:1028000030911005821B930B7F936F939F938F934F
:102810008EE693E09F938F931F930E94B80988E2FE
:102820008093F904809111059091120562E070E0A7
:102830000E94C2468091E0049091E104209111052C
:1028400030911205821B930B7F936F939F938F930D
:102850008EE593E09F938F931F930E94B8098CE3BA
:102860008093F904809113059091140562E070E063
:102870000E94C24680918A0890918B087F936F9343
:102880009F938F938EE493E09F938F931F930E9467
:10289000B8098DB79EB74596FACD1092F90481E438
:1028A00093E09F938F9311E01F930E94B80984E1F6
:1028B0008093F9048091190590911A052091E604FE
:1028C0003091E7049F938F933F932F9380E393E09E
:1028D0009F938F931F930E94B80988E28093F90415
:1028E00080911B0590911C052091E4043091E50432
:1028F0009F938F933F932F938FE193E09F938F93B9
:102900001F930E94B8098CE38093F90460911D0520
:1029100070911E0580911F05909120050E943545FC
:1029200020917F08309180087F936F933F932F937E
:102930008EE093E03EC184E18093F9048091080326
:10294000909109039F938F9380E093E09F938F93DF
:1029500011E01F930E94B80988E28093F9048091E6
:102960000705909108059F938F9382EF92E09F93C4
:102970008F931F930E94B8098DB79EB70A9687CD93
:102980001092F90483EE92E09F938F9311E01F93CE
:102990000E94B80984E18093F904809170039091BA
:1029A00071039F938F9384ED92E09F938F931F9376
:1029B0000E94B80988E28093F90480916E03909197
:1029C0006F039F938F9385EC92E09F938F931F9358
:1029D0000E94B8098CE38093F90480915505909189
:1029E00056059F938F9386EB92E09F938F931F934F
:1029F0000E94B8098DB79EB7429649CD1092F9044E
:102A000080916105909162052091590530915A0598
:102A10009F938F933F932F9384EA92E09F938F939A
:102A200011E01F930E94B80984E18093F90480911A
:102A300063059091640520915B0530915C059F933F
:102A40008F933F932F9382E992E09F938F931F93ED
:102A50000E94B80988E28093F904809165059091FD
:102A6000660520915D0530915E059F938F933F939E
:102A70002F9380E892E09F938F931F930E94B80951
:102A80008CE38093F904809167059091680520910B
:102A90005F05309160059F938F933F932F938EE650
:102AA00092E038CE1092F90486E692E09F938F93DD
:102AB00011E01F930E94B80984E18093F90480918A
:102AC000910390E09F938F9388E592E09F938F937B
:102AD0001F930E94B80988E28093F9048091DA0478
:102AE0009091DB049F938F938AE492E09F938F935E
:102AF0001F930E94B8098CE38093F9042091DC08AD
:102B000030E08091DB0890E03F932F939F938F9369
:102B10008CE392E09F938F931F930E94B809B4CCEB
:102B20001092F9048CE292E09F938F9311E01F932F
:102B30000E94B80984E18093F90420914C0733275F
:102B400027FD309580914B07992787FD90953F93FE
:102B50002F939F938F938CE192E09F938F931F937A
:102B60000E94B80988E28093F90420914D07332729
:102B700027FD309580914E0790E03F932F939F93D0
:102B80008F938CE092E09F938F931F930E94B809DC
:102B90008CE38093F9042091520730E080914F0735
:102BA000992787FD90953F932F939F938F938CEF59
:102BB00091E09F938F931F930E94B8098DB79EB7A2
:102BC000489665CC80917606882371F41092F904BA
:102BD00089EE91E09F938F9381E08F930E94B809D3
:102BE0000F900F900F9009C120917806223071F05C
:102BF0002330B1F0809177062223E1F41092F9049A
:102C000090E09F938F9388ED91E01BC01092F904A0
:102C10008091770690E09F938F9387EC91E011C0AD
:102C20001092F9048091770690E09F938F9386EB42
:102C300091E007C01092F90490E09F938F9385EA8A
:102C400091E09F938F9381E08F930E94B8090F903A
:102C50000F900F900F900F90E0907906F0907A0609
:102C600000917B0610917C06C801B70120E836E987
:102C700048E950E00E94F74659016A01C801B701CE
:102C800020E836E948E950E00E94F7467B018C01D4
:102C900020E137E240E050E00E94F746E90137FFCB
:102CA00003C0D095C195DF4FC801B70120E137E2DD
:102CB00040E050E00E94F7462AE030E040E050E07B
:102CC0000E94F746B90137FF03C0709561957F4FA9
:102CD00084E18093F9047F936F93DF93CF93BF9246
:102CE000AF9280E991E09F938F93992493949F9260
:102CF0000E94B809E0907D06F0907E0600917F0664
:102D000010918006C801B70120E836E948E950E093
:102D10000E94F74659016A01C801B70120E836E967
:102D200048E950E00E94F7467B018C0120E137E240
:102D300040E050E00E94F746E90137FF03C0D0951C
:102D4000C195DF4FC801B70120E137E240E050E014
:102D50000E94F7462AE030E040E050E00E94F7464B
:102D6000B90137FF03C0709561957F4F88E280936A
:102D7000F9047F936F93DF93CF93BF92AF928BE76A
:102D800091E09F938F939F920E94B809E0908106F3
:102D9000F09082060091830610918406C801B70165
:102DA00028EE33E040E050E00E94F74659016A0106
:102DB000C801B70128EE33E040E050E00E94F7463A
:102DC0009B0177FF03C0309521953F4F8CE38093A3
:102DD000F9043F932F93BF92AF928CE691E09F93BB
:102DE0008F939F920E94B8098DB79EB749964FCB9B
:102DF000115010936A031092FB041092FA04DF91B1
:102E0000CF911F910F91FF90EF90DF90CF90BF90E7
:102E1000AF909F90089587B18C6087B9429843988E
:102E200008954091FC045091FD044431510500F196
:102E30004C3D5105E8F42091020530910305C9018C
:102E4000880F991F8417950710F4429A01C0429881
:102E50002F5F3F4F309303052093020521503040F0
:102E60002417350730F0109203051092020501C0B7
:102E7000429A4091FE045091FF044431510510F4F0
:102E8000439808954C3D5105E8F420910005309198
:102E90000105C901880F991F8417950710F4439AFB
:102EA00001C043982F5F3F4F3093010520930005E9
:102EB000215030402417350730F010920105109250
:102EC00000050895439808959FB7F8943998389A63
:102ED00088B1836088B9E9EBF0E080818C7F8083E2
:102EE0008AE28093B8009FBF089585EA8093BC0072
:102EF000089584E98093BC0008958093BB0085E821
:102F00008093BC00089585EC8093BC00089585E80B
:102F10008093BC000895EF92FF920F931F938CEB68
:102F2000E82EF12C84E9F7018083109204050BEB65
:102F300010E0F8018081809305051092050580E876
:102F4000F70180831092BD001092BA00F801108240
:102F50001092B9001092B8000E94641785EAF70138
:102F60008083F801108285E8F70180831F910F911B
:102F7000FF90EF9008951F920F920FB60F921124B9
:102F80008F939F93EF93FF93809104058F5F8093BE
:102F9000040581508330D1F1843028F4813081F0F0
:102FA000823060F508C08530C1F18530A0F18630EF
:102FB00009F04FC03EC080910505880F8E5A12C09F
:102FC000809105058F5F809305058150813069F000
:102FD000813030F0823061F0833009F047C00BC09F
:102FE000809176088093BB0020C080918C08FACF36
:102FF00080918108F7CF80919708F4CF80910505E3
:10300000843010F41092040585EA10C08091060502
:10301000880F8D5AE7CF85EC09C0E0910605F0E0F6
:103020008091BB00E05DF74F808385E88093BC0012
:103030001DC080910605E82FF0E09091BB00EC5C8C
:10304000F74F90838F5F80930605843010F01092C5
:10305000060584E98093BC00109204058AE090E0A4
:1030600090936D0380936C0310920505FF91EF918F
:103070009F918F910F900FBE0F901F9018959FB743
:10308000F89456985E9A8AB180638AB98BB18F7C26
:103090008BB9809100018A3011F4539A5B9880912A
:1030A00080008C708093800080918100837E80936B
:1030B000810080918100836C8093810080918200E7
:1030C0008F738093820080916F00897F80936F005F
:1030D00080916F00816280936F00109208051092BA
:1030E00007059FBF08951F920F920FB60F921124EC
:1030F0002F933F935F936F937F938F939F93AF93A0
:10310000BF93209186003091870080910D059091AA
:103110000E058217930761F48091070590910805C9
:1031200062E070E00E94C246709308056093070554
:10313000809186009091870090930E0580930D05F5
:10314000BF91AF919F918F917F916F915F913F91CF
:103150002F910F900FBE0F901F9018951F920F92F6
:103160000FB60F9211240F931F932F933F934F93FA
:103170005F936F937F938F939F93AF93BF93CF93FF
:10318000DF93EF93FF932091860030918700809129
:10319000090590910A05281B390B809186009091B2
:1031A000870090930A0580930905C9018D549440C6
:1031B00000910B0510910C05835F9A4160F4043077
:1031C000110514F010926B0381E090E090930C05D0
:1031D00080930B0598C00E3011050CF094C0C90106
:1031E0008B5F9040845B914008F072C0E901C25D42
:1031F000D140F801EE0FFF1FE85CF74F808191810D
:103200009E01281B390BC90137FF03C0909581959A
:103210009F4F069784F48091070590910805883C9C
:1032200091054CF480910705909108050A969093BA
:10323000080580930705F801EE0FFF1FE85CF74FC4
:1032400020813181C901880F991F820F931F8C0F34
:103250009D1F64E070E00E94C2469B01CE01019672
:10326000861797071CF42150304006C021976C1731
:103270007D0714F42F5F3F4F80910705909108055B
:10328000E801CC0FDD1F833C9105BCF0FE01E85C3A
:10329000F74F80819181A901481B590BCA0163E056
:1032A00070E00E94C246CB01880F991F860F971FBE
:1032B000CA5AD74F9983888304C0CA5AD74F1982F4
:1032C0001882F801EE0FFF1FE85CF74F318320836F
:1032D000F8013196F0930C05E0930B05E530F1050C
:1032E00011F45D9A06C05D98E630F10511F45C9A20
:1032F00001C05C98809100018A3029F4379711F45D
:103300005B9A01C05B988091070590910805892B15
:1033100049F0809107059091080501979093080561
:1033200080930705FF91EF91DF91CF91BF91AF910E
:103330009F918F917F916F915F914F913F912F91CD
:103340001F910F910F900FBE0F901F9018952F9205
:103350003F924F925F926F927F928F929F92AF9225
:10336000BF92CF92DF92EF92FF920F931F93CF9372
:10337000DF93CDB7DEB722970FB6F894DEBF0FBE4E
:10338000CDBF80911305909114052091E2043091F6
:10339000E304821B930B90938B0880938A0880919F
:1033A000E0049091E1042091110530911205821BF7
:1033B000930B90938708809386088091DE04909108
:1033C000DF0420910F0530911005821B930B909321
:1033D0008908809388088091880890918908909343
:1033E0008A07809389078091860890918708909337
:1033F0008E0780938D07E0908D08F0908E08609185
:10340000E6047091E704882777FD8095982F2CE0DB
:1034100030E040E050E00E9483460027F7FC009532
:10342000102FE60EF71E081F191FC801B70122E072
:1034300030E040E050E00E94F74630938E08209341
:103440008D08E0909108F09092086091E4047091EA
:10345000E504882777FD8095982F2CE030E040E048
:1034600050E00E9483460027F7FC0095102FE60EDF
:10347000F71E081F191FC801B70122E030E040E025
:1034800050E00E94F74630939208209391082091D3
:103490007F08309180086091E8047091E9048827E2
:1034A00077FD8095982F442737FD4095542F620F64
:1034B000731F841F951F22E030E040E050E00E941F
:1034C000F7463093800820937F084091490550913A
:1034D0004A0560914B0570914C052091E6043091AE
:1034E000E704C901880F991F820F931F880F991F46
:1034F000880F991FAA2797FDA095BA2F840F951FB3
:10350000A61FB71F8093490590934A05A0934B05CA
:10351000B0934C0540914D0550914E0560914F057B
:10352000709150052091E4043091E504C901880FA1
:10353000991F820F931F880F991F880F991FAA2721
:1035400097FDA095BA2F840F951FA61FB71F8093D4
:103550004D0590934E05A0934F05B09350052091D3
:1035600045053091460540914705509148058091A9
:103570008A0890918B08AA2797FDA095BA2F820FF1
:10358000931FA41FB51F8093450590934605A093F4
:103590004705B0934805209183052A83222309F02B
:1035A00069C080918405882309F064C08091C008B7
:1035B00086FF60C0609135057091360580913705B2
:1035C00090913805E0908A08F0908B08A0909303C2
:1035D000BB24CC24DD240027F7FC0095102F20E02D
:1035E00030E140E050E00E94F746C801B7010E9478
:1035F0008346A60195010E94834620E038E040E022
:1036000050E00E94F7462093C5053093C6054093CD
:10361000C7055093C80560913D0570913E058091A6
:103620003F0590914005E0908A08F0908B0820E0DB
:1036300030E140E050E00E94F746CA01B901A6011E
:1036400095010E9483460027F7FC0095102FA801E2
:1036500097010E94834620E038E040E050E00E945D
:10366000F7462093C1053093C2054093C30550939C
:10367000C40510C01092C1051092C2051092C30576
:103680001092C4051092C5051092C6051092C70588
:103690001092C80580918608909187082090C505F2
:1036A0003090C6054090C7055090C805820D931D07
:1036B0009093870880938608009186081091870868
:1036C000A090C105B090C205C090C305D090C405BC
:1036D00080919403682E772488249924C401B3012F
:1036E000A60195010E94834620E032E040E050E0D0
:1036F0000E94F746020F131F109387080093860855
:103700002091410530914205409143055091440577
:103710008091860890918708AA2797FDA095BA2FD7
:10372000820F931FA41FB51F8093410590934205FC
:10373000A0934305B093440540913D0550913E054B
:1037400060913F05709140058091860890918708AF
:1037500020917F0530918005821B930BAA2797FD4E
:10376000A095BA2F840F951FA61FB71F80933D0504
:1037700090933E05A0933F05B093400580913D0591
:1037800090913E05A0913F05B0914005E0907603F1
:10379000F09077030091780310917903E816F90609
:1037A0000A071B0704F580E197E2A0E0B0E08E195C
:1037B0009F09A00BB10B80933D0590933E05A0930C
:1037C0003F05B093400580913D0590913E05A09145
:1037D0003F05B09140058093410590934205A09329
:1037E0004305B093440520913D0530913E0540913D
:1037F0003F055091400588279927DC018E199F09C4
:10380000A00BB10B281739074A075B0704F580EFB7
:1038100098EDAFEFBFEFE80EF91E0A1F1B1FE092F5
:103820003D05F0923E0500933F05109340058091C1
:103830003D0590913E05A0913F05B09140058093D4
:10384000410590934205A0934305B09344058091B0
:10385000E0049091E1040F9734F488E19CEF909399
:103860008708809386088091E0049091E10407978F
:1038700034F480E398EF90938708809386089091C2
:10388000000199839A30A9F48091E0049091E104B9
:10389000835F934034F088EE93E0909387088093A1
:1038A00086088091E0049091E1048A5F9340DCF007
:1038B00014C08091E0049091E104855E974034F05B
:1038C00088EE93E090938708809386088091E004C7
:1038D0009091E104835F974034F080ED97E09093FE
:1038E00087088093860880918808909189088A19B2
:1038F0009B0990938908809388080091880810910B
:103900008908C401B301A20191010E94834620E00D
:1039100032E040E050E00E94F746021B130B109388
:103920008908009388082091390530913A05409123
:103930003B0550913C058091880890918908AA2701
:1039400097FDA095BA2F820F931FA41FB51F8093D8
:10395000390590933A05A0933B05B0933C054091FF
:103960003505509136056091370570913805809185
:103970008808909189082091810530918205821BE9
:10398000930BAA2797FDA095BA2F840F951FA61F0A
:10399000B71F8093350590933605A0933705B093F4
:1039A00038058091350590913605A0913705B09185
:1039B0003805E0907203F090730300917403109146
:1039C0007503E816F9060A071B0704F580E197E27C
:1039D000A0E0B0E08E199F09A00BB10B80933505D4
:1039E00090933605A0933705B0933805809135053F
:1039F00090913605A0913705B0913805809339052F
:103A000090933A05A0933B05B0933C052091350572
:103A10003091360540913705509138058827992710
:103A2000DC018E199F09A00BB10B281739074A0733
:103A30005B0704F580EF98EDAFEFBFEFE80EF91EDE
:103A40000A1F1B1FE0923505F092360500933705DB
:103A5000109338058091350590913605A091370572
:103A6000B09138058093390590933A05A0933B05B2
:103A7000B0933C058091DE049091DF040F9734F4FD
:103A800088E19CEF90938908809388088091DE04F8
:103A90009091DF04079734F480E398EF90938908BE
:103AA0008093880899819A30A9F48091DE049091DE
:103AB000DF04835F934034F088EE93E090938908AD
:103AC000809388088091DE049091DF048A5F9340A0
:103AD000DCF014C08091DE049091DF04855E974095
:103AE00034F088EE93E09093890880938808809161
:103AF000DE049091DF04835F974034F080ED97E01F
:103B0000909389088093880880917A00886C8093CC
:103B10007A008091450590914605A0914705B091A6
:103B200048058093310590933205A0933305B093F7
:103B300034058091350590913605A0913705B091F7
:103B400038058093210590932205A0932305B09317
:103B5000240580913D0590913E05A0913F05B091CF
:103B600040058093290590932A05A0932B05B093D7
:103B70002C058091390590913A05A0913B05B091B3
:103B80003C058093250590932605A0932705B093C7
:103B900028058091410590914205A0914305B0917F
:103BA000440580932D0590932E05A0932F05B09387
:103BB00030058091C00887FF63C02A81222309F065
:103BC0005FC080918405882309F05AC080918808DD
:103BD00090918908893C91055CF02091880830918A
:103BE000890880918808909189082052334011C03B
:103BF000809188089091890888539F4FA4F4209160
:103C00008808309189088091880890918908205E01
:103C10003C4F880F991F880F991F280F391F309329
:103C20008908209388088091860890918708893CAC
:103C300091055CF020918608309187088091860874
:103C4000909187082052334011C08091860890914E
:103C5000870888539F4FA4F42091860830918708E5
:103C60008091860890918708205E3C4F880F991FAD
:103C7000880F991F280F391F3093870820938608D3
:103C800022960FB6F894DEBF0FBECDBFDF91CF9165
:103C90001F910F91FF90EF90DF90CF90BF90AF906A
:103CA0009F908F907F906F905F904F903F902F905C
:103CB00008950F931F930AE710E0F801808187733E
:103CC00080838091DE049091DF0490938908809333
:103CD00088088091E0049091E10490938708809394
:103CE00086088091E2049091E30490938B0880937E
:103CF0008A086091E6047091E704882777FD809533
:103D0000982F2CE030E040E050E00E948346709312
:103D10008E0860938D086091E4047091E504882713
:103D200077FD8095982F0E94834670939208609348
:103D300091088091E8049091E90490938008809321
:103D40007F08F8018081886C80836091E30870E0CF
:103D500080E090E024EC39E040E050E00E948346AF
:103D6000609372037093730380937403909375034D
:103D70006091E40870E080E090E00E9483466093E8
:103D800076037093770380937803909379031F9160
:103D90000F9108958091070590910805813A91054A
:103DA0000CF40AC38091C3088B3F98F08B3F19F441
:103DB000809159050EC08C3F19F480915B0509C0B4
:103DC0008D3F19F480915D0504C08E3F21F48091F0
:103DD0005F058093810380918103882319F41092F9
:103DE000810304C08F3F11F4809381038091C20846
:103DF0008B3F98F08B3F19F4809159050EC08C3F92
:103E000019F480915B0509C08D3F19F480915D051F
:103E100004C08E3F21F480915F05809380038091E0
:103E20008003882319F41092800305C0843618F0AB
:103E300084E6809380038091C4088B3F98F08B3F89
:103E400019F4809159050EC08C3F19F480915B05DF
:103E500009C08D3F19F480915D0504C08E3F21F4A7
:103E600080915F058093820380918203882319F4F7
:103E70001092820305C0843618F084E68093820392
:103E80008091C6088B3F98F08B3F19F480915905BB
:103E90000EC08C3F19F480915B0509C08D3F19F469
:103EA00080915D0504C08E3F21F480915F05809371
:103EB000830380918303882319F41092830304C041
:103EC0008F3F11F4809383038091CD088B3F98F04E
:103ED0008B3F19F4809159050EC08C3F19F48091E5
:103EE0005B0509C08D3F19F480915D0504C08E3FCC
:103EF00021F480915F05809384038091840388235B
:103F000019F41092840304C08F3F11F4809384034A
:103F10008091CE088B3F98F08B3F19F48091590522
:103F20000EC08C3F19F480915B0509C08D3F19F4D8
:103F300080915D0504C08E3F21F480915F058093E0
:103F40008503809185038B3010F48AE002C08F3F97
:103F500011F4809385038091CF088B3F98F08B3FBD
:103F600019F4809159050EC08C3F19F480915B05BE
:103F700009C08D3F19F480915D0504C08E3F21F486
:103F800080915F058093860380918603882319F4CE
:103F90001092860304C08F3F11F4809386038091B2
:103FA000D4088B3F98F08B3F19F4809159050EC0CF
:103FB0008C3F19F480915B0509C08D3F19F4809105
:103FC0005D0504C08E3F21F480915F0580938803D6
:103FD00080918803882319F41092880304C08F3FCE
:103FE00011F4809388038091D5088B3F98F08B3F24
:103FF00019F4809159050EC08C3F19F480915B052E
:1040000009C08D3F19F480915D0504C08E3F21F4F5
:1040100080915F058093890380918903882319F437
:104020001092890304C08F3F11F48093890380911B
:10403000D6088B3F98F08B3F19F4809159050EC03C
:104040008C3F19F480915B0509C08D3F19F4809174
:104050005D0504C08E3F21F480915F0580938A0343
:1040600080918A03882319F410928A0304C08F3F39
:1040700011F480938A038091D7088B3F98F08B3F8F
:1040800019F4809159050EC08C3F19F480915B059D
:1040900009C08D3F19F480915D0504C08E3F21F465
:1040A00080915F0580938B0380918B03882319F4A3
:1040B00010928B0304C08F3F11F480938B03809187
:1040C000D8088B3F98F08B3F19F4809159050EC0AA
:1040D0008C3F19F480915B0509C08D3F19F48091E4
:1040E0005D0504C08E3F21F480915F0580938C03B1
:1040F00080918C03882319F410928C0304C08F3FA5
:1041000011F480938C038091E8088B3F98F08B3FEB
:1041100019F4809159050EC08C3F19F480915B050C
:1041200009C08D3F19F480915D0504C08E3F21F4D4
:1041300080915F0580938D0380918D03882319F40E
:1041400010928D0304C08F3F11F480938D038091F2
:10415000E9088B3F98F08B3F19F4809159050EC008
:104160008C3F19F480915B0509C08D3F19F4809153
:104170005D0504C08E3F21F480915F0580938E031E
:1041800080918E03882319F410928E0304C08F3F10
:1041900011F480938E038091EA088B3F98F08B3F57
:1041A00019F4809159050EC08C3F19F480915B057C
:1041B00009C08D3F19F480915D0504C08E3F21F444
:1041C00080915F0580938F0380918F03882319F47A
:1041D00010928F0304C08F3F11F480938F0380915E
:1041E000EB088B3F98F08B3F19F4809159050EC076
:1041F0008C3F19F480915B0509C08D3F19F48091C3
:104200005D0504C08E3F21F480915F05809390038B
:1042100080919003882319F41092900304C08F3F7B
:1042200011F4809390038091D9088B3F98F08B3FD5
:1042300019F4809159050EC08C3F19F480915B05EB
:1042400009C08D3F19F480915D0504C08E3F21F4B3
:1042500080915F058093910380919103882319F4E5
:104260001092910304C08F3F11F4809391038091C9
:10427000DE088B3F98F08B3F19F4809159050EC0F2
:104280008C3F19F480915B0509C08D3F19F4809132
:104290005D0504C08E3F21F480915F0580939203F9
:1042A00080919203882319F41092920304C08F3FE7
:1042B00011F4809392038091E1088B3F98F08B3F3B
:1042C00019F4809159050EC08C3F19F480915B055B
:1042D00009C08D3F19F480915D0504C08E3F21F423
:1042E00080915F058093930380919303882319F451
:1042F0001092930304C08F3F11F480939303809135
:10430000E2088B3F98F08B3F19F4809159050EC05D
:104310008C3F19F480915B0509C08D3F19F48091A1
:104320005D0504C08E3F21F480915F058093940366
:1043300080919403882319F41092940304C08F3F52
:1043400011F4809394038091E7088B3F98F08B3FA2
:1043500019F4809159050EC08C3F19F480915B05CA
:1043600009C08D3F19F480915D0504C08E3F21F492
:1043700080915F058093950380919503882319F4BC
:104380001092950304C08F3F11F4809395036091C0
:10439000880370E080E090E00E94BB4227E137EBA9
:1043A00041ED58E30E94204660937C0370937D03A7
:1043B00080937E0390937F0308958091570588230F
:1043C00001F510928C0810927608109281081092D4
:1043D00097088091C204882311F080937608809119
:1043E000C304882311F080938C088091C40488232F
:1043F00011F0809397088091C504882311F0809371
:10440000810810920405109205050E947517089501
:1044100010921A051092190510921C0510921B0596
:1044200080E090E0A0E0B0E080931D0590931E0531
:10443000A0931F05B09320051092100510920F0550
:104440001092120510921105109214051092130586
:1044500010929303109294030E94591E84E690E0F8
:104460000E94220D0E94591E8091C00880FF10C03A
:1044700080910E0390910F03875B934038F48091F5
:104480000E0390910F038E5E924010F40E94D6109E
:104490008091DE049091DF049093100580930F05C6
:1044A0008091E0049091E1049093120580931105AE
:1044B0008091E2049091E304909314058093130596
:1044C0008091110590911205909316058093150522
:1044D00080910F0590911005909318058093170512
:1044E00084E00E94983C8050944058F1809191085B
:1044F0009091920897FF03C0909581959F4F6CE033
:1045000070E00E94C24670931C0560931B05809169
:104510008D0890918E0897FF03C0909581959F4FCD
:104520006CE070E00E94C24670931A056093190512
:104530006091DC047091DD04882777FD8095982FC9
:1045400017C084E00E94983C90931A058093190547
:1045500086E00E94983C90931C0580931B0588E0A0
:104560000E94983CAA2797FDA095BA2FBC01CD01C7
:104570000E94684560931D0570931E0580931F057A
:10458000909320051092350510923605109237054C
:10459000109238051092390510923A0510923B0599
:1045A00010923C0510923D0510923E0510923F0579
:1045B0001092400510924105109242051092430559
:1045C0001092440510924505109246051092470539
:1045D0001092480510928908109288081092870856
:1045E0001092860810928B0810928A0880910A0314
:1045F00090910B03A0910C03B0910D0390932E08A2
:1046000080932D081092EB041092EA041092510549
:1046100010925205109253051092540580916E032A
:1046200090916F03909371038093700382E390E005
:104630009093D8048093D7046091E30870E080E001
:1046400090E024EC39E040E050E00E948346609323
:104650007203709373038093740390937503609156
:10466000E40870E080E090E00E9483466093760367
:1046700070937703809378039093790310927B0370
:1046800010927A030E94073908951F93182F0EC0C5
:1046900080915705882361F484E690E09093D804D4
:1046A0008093D7048AEF90E00E94410D115080F76B
:1046B0001F9108952F923F924F925F926F927F9237
:1046C0008F929F92AF92BF92CF92DF92EF92FF9222
:1046D0000F931F93CF93DF93CDB7DEB7A2970FB69B
:1046E000F894DEBF0FBECDBF0E94A719299A209073
:1046F0006F053090700537FE02C02224332480916C
:10470000070590910805883791050CF071C08091DC
:104710000301882399F480910403909105038F5F2E
:104720009F4F61F488E99AE39093D8048093D7046B
:1047300080E09CE090930503809304038091AB0597
:104740009091AC05009731F001979093AC05809360
:10475000AB0504C0109257051092580580910001D6
:104760008A3011F4289A01C028988091A60590916A
:10477000A705815D9740C8F18091D108282E332488
:1047800081E080935805E091B8082E2F30E0220F89
:10479000331FF901EA5AF74F11821082A091B9082C
:1047A000B0E0AA0FBB1FFD01EA5AF74F1182108239
:1047B000E091BB084E2F50E0440F551FCA018A5AA2
:1047C000974FFC0111821082285C374FF90111824A
:1047D0001082A85CB74F11961C921E92485C574FEE
:1047E000DA0111961C921E92BCC310925705B9C3F0
:1047F0008091070590910805873991050CF4B1C3A4
:10480000109258058091D20822E3829FC0011124A2
:104810009093AC058093AB05B9E22B1631046CF094
:104820008091A6059091A705EFEF8F3F9E0729F095
:1048300001969093A7058093A6058091A605909177
:10484000A705883C910520F0F8E22F163104C4F446
:104850001092BD051092BE051092BF051092C005C2
:104860001092B9051092BA051092BB051092BC05C2
:104870001092450510924605109247051092480582
:104880002091590530915A058091BC08E82FF0E03D
:10489000EE0FFF1FE85CF74F8081918182599F4F97
:1048A000281739071CF42F5F3F4F0CC0808191817E
:1048B00082599F4F821793074CF42115310531F02F
:1048C0002150304030935A052093590520915B05C3
:1048D00030915C058091BD08E82FF0E0EE0FFF1FDE
:1048E000E85CF74F8081918182599F4F28173907E3
:1048F0001CF42F5F3F4F0CC08081918182599F4FE4
:10490000821793074CF42115310531F021503040C6
:1049100030935C0520935B0520915D0530915E0529
:104920008091BE08E82FF0E0EE0FFF1FE85CF74F24
:104930008081918182599F4F281739071CF42F5F7E
:104940003F4F0CC08081918182599F4F82179307FE
:104950004CF42115310531F02150304030935E0583
:1049600020935D0520915F05309160058091BF081F
:10497000E82FF0E0EE0FFF1FE85CF74F8081918198
:1049800082599F4F281739071CF42F5F3F4F0CC0E7
:104990008081918182599F4F821793074CF4211592
:1049A000310531F0215030403093600520935F0590
:1049B000209161053091620580914A0890914B08E1
:1049C00082599F4F281739071CF42F5F3F4F0EC0A5
:1049D00080914A0890914B0882599F4F8217930704
:1049E0004CF42115310531F02150304030936205EF
:1049F00020936105209163053091640580914C08F6
:104A000090914D0882599F4F281739071CF42F5F4A
:104A10003F4F0EC080914C0890914D0882599F4F96
:104A2000821793074CF42115310531F021503040A5
:104A300030936405209363052091650530916605E8
:104A400080914E0890914F0882599F4F281739073F
:104A50001CF42F5F3F4F0EC080914E0890914F087D
:104A600082599F4F821793074CF42115310531F07D
:104A700021503040309366052093650520916705ED
:104A800030916805809150089091510882599F4F4C
:104A9000281739071CF42F5F3F4F0EC08091500834
:104AA0009091510882599F4F821793074CF421151A
:104AB000310531F02150304030936805209367056F
:104AC0008091590590915A0597FF05C010925A059B
:104AD000109259050AC08F3F910539F034F08FEFDD
:104AE00090E090935A058093590580915B059091D1
:104AF0005C0597FF05C010925C0510925B050AC02B
:104B00008F3F910539F034F08FEF90E090935C0582
:104B100080935B0580915D0590915E0597FF05C0D0
:104B200010925E0510925D050AC08F3F910539F025
:104B300034F08FEF90E090935E0580935D05809157
:104B40005F059091600597FF05C010926005109277
:104B50005F050AC08F3F910539F034F08FEF90E088
:104B60009093600580935F05809161059091620547
:104B700097FF05C010926205109261050AC08F3F31
:104B8000910539F034F08FEF90E0909362058093B7
:104B90006105809163059091640597FF05C01092AF
:104BA0006405109263050AC08F3F910539F034F017
:104BB0008FEF90E090936405809363058091650585
:104BC0009091660597FF05C01092660510926505E5
:104BD0000AC08F3F910539F034F08FEF90E0909349
:104BE000660580936505809167059091680597FF3C
:104BF00005C010926805109267050AC08F3F9105A5
:104C000039F034F08FEF90E090936805809367055A
:104C1000E091BA08F0E0EE0FFF1FE85CF74F8081EB
:104C20009181813591050CF4F0C08091570588235E
:104C300009F0EBC08091BB08E82FF0E0EE0FFF1FFA
:104C4000E85CF74F808191818C3491050CF4A1C010
:104C50008091AA058F5F8093AA05893C08F4D5C08E
:104C60001092AA0529981092A7051092A605809186
:104C7000B808282F30E0F901EE0FFF1FE85CF74F6E
:104C800080819181873491059CF4E091B908F0E02E
:104C9000EE0FFF1FE85CF74F0190F081E02DF7FF6A
:104CA00003C0F095E195FF4FE734F1050CF46AC0BD
:104CB0008091B908682F70E0DB01AA0FBB1FA85CC8
:104CC000B74F8D919C911197873491053CF0F90174
:104CD000EE0FFF1FE85CF74F808191818D919C91D1
:104CE0008734910564F0F901EE0FFF1FE85CF74F80
:104CF000808191818734910514F042E001C041E048
:104D0000FB01EE0FFF1FE85CF74F80819181863435
:104D100091055CF4F901EE0FFF1FE85CF74F80810D
:104D20009181873491050CF043E0FB01EE0FFF1FEA
:104D3000E85CF74F808191818A5B9F4F5CF4F901B9
:104D4000EE0FFF1FE85CF74F80819181873491055A
:104D50000CF044E0660F771F685C774FDB018D91A4
:104D60009C918A5B9F4F5CF4220F331F285C374F66
:104D7000F90180819181863491050CF445E0842FFE
:104D80000E94A83C0E94893E0E94C63C0E940822C4
:104D900035C080819181855B9F4FACF58091AA05DC
:104DA0008F5F8093AA05893C80F11092AA0529980B
:104DB0006FEF7FEF84E00E94A03C1092A705109255
:104DC000A6050E9408226091190570911A0584E0D9
:104DD0000E94A03C60911B0570911C0586E00E941A
:104DE000A03C60911D0570911E0580911F0590915A
:104DF00020050E943A4588E00E94A03C0E94893E1E
:104E00000E94452302C01092AA05E091BA08F0E082
:104E1000EE0FFF1FE85CF74F808191818B5A9F4F07
:104E20000CF09FC0E091BB08F0E0EE0FFF1FE85CC4
:104E3000F74F80819181855B9F4F0CF06BC0809113
:104E4000A9058F5F8093A905893C08F465C088ECAB
:104E50008093A90581E090E09093A7058093A60533
:104E600081E0809357051092B5051092B605109217
:104E7000B7051092B805109245051092460510929C
:104E8000470510924805109235051092360510928C
:104E900037051092380510923D0510923E0510928C
:104EA0003F05109240058091210590912205A09127
:104EB0002305B09124058093390590933A05A0937A
:104EC0003B05B0933C058091290590912A05A0915E
:104ED0002B05B0912C058093410590934205A0933A
:104EE0004305B09344051092BD051092BE05109283
:104EF000BF051092C0051092B9051092BA05109224
:104F0000BB051092BC058091C00885FF05C00E94BA
:104F10007E3802C01092A905E091BB08F0E0EE0FC8
:104F2000FF1FE85CF74F808191818C349105BCF0C4
:104F30008091A8058F5F8093A805893C90F088EC4C
:104F40008093A8051092A7051092A6051092570508
:104F50008091C00885FF05C00E94043902C01092EC
:104F6000A80580916B03815080936B0380916B0344
:104F70008F3F29F080915805882309F456C30E9479
:104F8000CA1E4091690550916A055E8F4D8F8091D0
:104F9000B808E82EFF24D701AA0FBB1FAD01485C5B
:104FA000574FFA010190F081E02DFC8FEB8F80913B
:104FB000C708882E9924AA5AB74F0D90BC91A02DEE
:104FC000BA8FA98F8091C808282F30E0388F2F8B97
:104FD00060916B0570916C057E8B6D8B8091B9082B
:104FE000082F10E0C801880F991FDC01A85CB74F9B
:104FF0000D90BC91A02DBC8BAB8B8A5A974FDC01D6
:105000008D919C919A8B898BE091BB08AE2FB0E07B
:10501000AA0FBB1FA85CB74F0D90BC91A02DB88BF9
:10502000AF87E091BA08F0E0EE0FFF1FE85CF74FA2
:10503000A080B180E8E7F0E0AE0EBF1EB092700530
:10504000A0926F05DA018D919C91209171053091AC
:10505000720597FF03C0909581959F4F28173907D8
:105060008CF4FA018081918190937205809371058F
:1050700097FF0EC0909581959F4F909372058093F6
:10508000710506C0215030403093720520937105A0
:10509000F801EE0FFF1FE85CF74F808191812091AE
:1050A00073053091740597FF03C0909581959F4FCC
:1050B0002817390784F48081918190937405809337
:1050C000730597FF0EC0909581959F4F909374053F
:1050D0008093730506C021503040309374052093AF
:1050E00073056091850370E080E090E00E94BB4210
:1050F00020E030E040E251E40E94694420E030E0EA
:1051000040E85BE30E9420462B013C01609393083A
:105110007093940880939508909396086091860305
:1051200070E080E090E00E94BB4220E030EE4BE275
:1051300057E40E94CD446093820870938308809363
:105140008408909385082091C704222331F08AE0D7
:1051500090E09093D8048093D704E22F22FF09C0F7
:1051600080918903482F50E0440F551F440F551F6D
:1051700010C023FD03C040E050E00BC080918903C4
:1051800090E0880F991F880F991F44275527481BC7
:10519000590B2091750530917605C901F3E0880F10
:1051A000991FFA95E1F7821B930B840F951F68E016
:1051B00070E00E94C2466B0170937605609375059E
:1051C000E4FF09C080918903482F50E0440F551F28
:1051D000440F551F10C0E5FD03C040E050E00BC078
:1051E0008091890390E0880F991F880F991F4427A9
:1051F0005527481B590B80917705909178059C01A4
:1052000063E0220F331F6A95E1F7281B390BCA01AF
:10521000820F931F68E070E00E94C24678A36F8FF0
:1052200070937805609377058091C604282F83FFDB
:1052300003C082E390E004C082FF07C08EEC9FEFC2
:1052400090937A058093790504C010927A051092A4
:10525000790521FF09C080917A0390917B03019623
:1052600090937B0380937A0324FF09C080917A0393
:1052700090917B03019790937B0380937A032B8D0E
:105280003C8D289DC001299D900D389D900D1124C5
:105290002D8D3E8D220F331F4D8D5E8D240F351FBA
:1052A000820F931F64E070E00E94C2467AA369A354
:1052B000698D7A8DAF89B88D6A9FC0016B9F900D03
:1052C0007A9F900D1124E9A1FAA1E80FF91FC601F8
:1052D00068E070E00E94C246E60FF71FFAA3E9A358
:1052E000F0936A05E09369052B893C89289DC001EC
:1052F000299D900D389D900D11242D893E89220FF6
:10530000331F4D895E89240F351F820F931F64E080
:1053100070E00E94C2469B0169897A89AF89B88D85
:105320006A9FC0016B9F900D7A9F900D1124280FEA
:10533000391F8F8D98A168E070E00E94C246260F49
:10534000371F30936C0520936B0540917905509180
:105350007A05EF85F8894E1B5F0B50936E054093DD
:105360006D058091520780FF56C080918903813876
:1053700008F451C080914B07992787FD9095BC0197
:10538000689DC001699D900D789D900D1124A9A183
:10539000BAA1A80FB91FB0936A05A09369058091BF
:1053A0004C07992787FD9095FC01E89DC001E99D78
:1053B000900DF89D900D1124280F391F30936C0526
:1053C00020936B0580914D07992787FD9095480F95
:1053D000591F50936E0540936D052091C50830E02C
:1053E00080914F07992787FD9095AC01249FC001BC
:1053F000259F900D349F900D112490937B038093F3
:105400007A0380914E0790E08A159B0524F49093CF
:10541000700580936F058091C00882FF0CC080E00A
:1054200090E0A0E0B0E08093820890938308A0937E
:105430008408B093850820E030E040E050E0C301EC
:10544000B2010E94A345882364F480E090E0A0E0CC
:10545000B0E08093930890939408A0939508B0933C
:10546000960820E030E040E050E0609182087091C2
:10547000830880918408909185080E94A345882321
:1054800064F480E090E0A0E0B0E080938208909324
:105490008308A0938408B0938508F801EE0FFF1FDE
:1054A000E85CF74F208131818091DF08482F50E080
:1054B0004217530744F48091EC0882FF04C081E056
:1054C0008093850515C080918505882389F0F801B2
:1054D000EE0FFF1FE85CF74F208131818091E008DB
:1054E000BA01681B71092617370714F41092850555
:1054F000F801EE0FFF1FE85CF74F8081918166276E
:105500007727641B750B8617970744F48091EC0886
:1055100083FF04C081E08093860515C080918605D5
:10552000882389F0000F111F085C174FD8012D91B7
:105530003C918091E00890E0841B950B82179307C3
:1055400014F410928605F701EE0FFF1FE85CF74F89
:10555000808191814817590744F48091EC0880FFBD
:1055600004C081E08093880515C080918805882358
:1055700089F0F701EE0FFF1FE85CF74F20813181C2
:105580008091E008FA01E81BF1092E173F0714F497
:1055900010928805F701EE0FFF1FE85CF74F80813E
:1055A00091818617970744F48091EC0881FF04C02D
:1055B00081E08093870517C080918705882399F043
:1055C000EE0CFF1C28E338E0E20EF31ED7012D910C
:1055D0003C918091E00890E0841B950B8217930723
:1055E00014F41092870580918505882321F4809119
:1055F0008605882321F081E08093840502C0109203
:10560000840580918805882321F48091870588236B
:1056100051F081E0809383051092840510928505F6
:105620001092860502C0109283058091840588231C
:1056300011F40C94313884E690E09093D804809370
:10564000D7048091DE0890E0821593050CF41C01CC
:1056500080918F0390E09093FD048093FC048091EF
:10566000900390E09093FF048093FE040E94111732
:1056700080915805882381F110926E0510926D0576
:1056800010926A051092690510926C0510926B05D4
:1056900080E090E0A0E0BFE38093930890939408AB
:1056A000A0939508B093960886EA9BE9A4E4BBE32F
:1056B0008093820890938308A0938408B093850810
:1056C0001092840510928305109272051092710554
:1056D000109274051092730520917B0830917C081C
:1056E00040917D0850917E0880912105909122057E
:1056F000A0912305B0912405820F931FA41FB51F0D
:1057000080937B0890937C08A0937D08B0937E08DB
:1057100020917708309178084091790850917A0863
:105720008091290590912A05A0912B05B0912C0517
:10573000820F931FA41FB51F80937708909378085A
:10574000A0937908B0937A0850908305552029F4E6
:1057500080918405882309F44FC01092ED041092C3
:10576000EC041092490510924A0510924B051092D4
:105770004C0510924D0510924E0510924F05109257
:10578000500510927B0810927C0810927D081092B0
:105790007E0810927708109278081092790810927B
:1057A0007A088091350590913605A0913705B09122
:1057B00038058093390590933A05A0933B05B09343
:1057C0003C0580913D0590913E05A0913F05B0912B
:1057D00040058093410590934205A0934305B09303
:1057E0004405109282051092810510928005109256
:1057F0007F05552009F0F5C080918405882309F0C4
:10580000F0C060912105709122058091230590914F
:105810002405A090CC08BB24CC24DD24E0908D0886
:10582000F0908E08A60195010E94F7460027F7FC2C
:105830000095102F2E193F09400B510BCA01B901D9
:1058400020E130E040E050E00E94F74639014A0193
:105850006091290570912A0580912B0590912C0566
:10586000E0909108F0909208A60195010E94F746F9
:105870000027F7FC0095102F2E193F09400B510B04
:10588000CA01B90120E130E040E050E00E94F74653
:1058900079018A018091710590917205409734F4E5
:1058A00080917305909174054097A4F0C401B301F1
:1058B00023E030E040E050E00E94F74639014A0121
:1058C000C801B70123E030E040E050E00E94F74615
:1058D00079018A01E091BB08F0E0EE0FFF1FE85C60
:1058E000F74F0190F081E02DF7FF03C0F095E195AF
:1058F000FF4F7A97A4F0C401B30123E030E040E009
:1059000050E00E94F74639014A01C801B70123E07F
:1059100030E040E050E00E94F74679018A01B1E2B0
:105920006B1671048104910434F0B0E26B2E712C7B
:10593000812C912C11C0E0EE6E16EFEF7E06EFEF9A
:105940008E06EFEF9E0644F4A0EE6A2EAFEF7A2E9D
:10595000AFEF8A2EAFEF9A2EF1E2EF16F1040105B8
:10596000110534F0F0E2EF2EF12C012D112D11C0B4
:1059700020EEE2162FEFF2062FEF02072FEF1207AD
:1059800044F4E0EEEE2EEFEFFE2EEFEF0E2FEFEFF2
:105990001E2F8091350590913605A0913705B09165
:1059A000380586199709A809B90980933505909398
:1059B0003605A0933705B093380580913D05909149
:1059C0003E05A0913F05B09140058E199F09A00B9F
:1059D000B10B80933D0590933E05A0933F05B09396
:1059E00040058091EC049091ED048F3F910509F002
:1059F00008F4ABC4552009F044C480918405882381
:105A000009F03FC460917B0870917C0880917D080B
:105A100090917E0820E031E040E050E00E94F7469F
:105A200020937B0830937C0840937D0850937E0838
:105A300060917708709178088091790890917A0840
:105A400020E031E040E050E00E94F74620937708E4
:105A5000309378084093790850937A08E090CC0806
:105A6000FF2400E010E02091490530914A05409163
:105A70004B0550914C05C801B7010E94834620E0B8
:105A800031E040E050E00E94F74620934905309312
:105A90004A0540934B0550934C0520914D0530919C
:105AA0004E0540914F0550915005C801B7010E9425
:105AB000834620E031E040E050E00E94F74620932A
:105AC0004D0530934E0540934F055093500560911E
:105AD0007B0870917C0880917D0890917E082091D0
:105AE000490530914A0540914B0550914C05621B88
:105AF000730B840B950B6093B1057093B205809383
:105B0000B3059093B405E090E508FF2400E010E0B1
:105B1000A80197010E94F746CA01B90120E031E0CF
:105B200040E050E00E94F7464901309382052093FF
:105B3000810560917708709178088091790890913B
:105B40007A0820914D0530914E0540914F055091B6
:105B50005005621B730B840B950B6093AD0570931E
:105B6000AE058093AF059093B005A80197010E9400
:105B7000F74659016A01CA01B90120E031E040E06D
:105B800050E00E94F74689013093800520937F05FD
:105B900080917105909172054097BCF480917305D6
:105BA0009091740540978CF4E091BB08F0E0EE0F03
:105BB000FF1FE85CF74F0190F081E02DF7FF03C075
:105BC000F095E195FF4F7A9794F0C40162E070E0A0
:105BD0000E94C2467093820560938105C80162E00D
:105BE00070E00E94C2467093800560937F05E0904C
:105BF0002505F09026050091270510912805809134
:105C0000210590912205A0912305B0912405E81A61
:105C1000F90A0A0B1B0BE092B105F092B205009352
:105C2000B3051093B4058091390590913A05A09180
:105C30003B05B0913C058E199F09A00BB10B8093D9
:105C4000390590933A05A0933B05B0933C056090CD
:105C50002D0570902E0580902F0590903005809135
:105C6000290590912A05A0912B05B0912C05681A61
:105C7000790A8A0A9B0A6092AD057092AE058092FD
:105C8000AF059092B0058091410590914205A09199
:105C90004305B091440586199709A809B90980936D
:105CA000410590934205A0934305B093440560914C
:105CB000490570914A0580914B0590914C052AE168
:105CC00030E040E050E00E94F746309378072093A0
:105CD000770760914D0570914E0580914F05909129
:105CE00050052AE130E040E050E00E94F746309352
:105CF0007A0720937907F0927C07E0927B077092F5
:105D00007E0760927D0760917B0870917C0880918E
:105D10007D0890917E082AE130E040E050E00E944A
:105D2000F7463093800720937F0760917708709142
:105D300078088091790890917A082AE130E040E073
:105D400050E00E94F7463093820720938107B0927B
:105D50009007A0928F07C0907F05D0908005C60164
:105D6000880F991F960153E0220F331F5A95E1F7D0
:105D7000820F931F909392078093910781E090E0A8
:105D8000909397058093960510929C0510929D051F
:105D900010929E0510929F0580917B0890917C083F
:105DA000A0917D08B0917E0820918E0530918F05DD
:105DB0004091900550919105281B390B4A0B5B0BC4
:105DC00057FF07C050954095309521953F4F4F4F55
:105DD0005F4F20523E44404050400CF0C1C071E043
:105DE000E71670E1F70670E0070770E017070CF49C
:105DF00052C080919505882309F449C0D801C70194
:105E00004CE0B595A795979587954A95D1F701965A
:105E10009093970580939605D801C70133E0B59517
:105E2000A795979587953A95D1F780939C05909380
:105E30009D05A0939E05B0939F0589589341A0406E
:105E4000B04064F088E893E1A0E0B0E080939C0566
:105E500090939D05A0939E05B0939F0560919C052E
:105E600070919D0580919E0590919F0520E031E005
:105E700040E050E00E94F7468091810590918205B4
:105E8000820F931F909382058093810566C081E005
:105E90008093950562C010929505F0E0EF16F0EF43
:105EA000FF06FFEF0F07FFEF1F070CF056C08091B2
:105EB0009405882309F44DC088279927DC018E19A1
:105EC0009F09A00BB10B2CE0B595A79597958795E9
:105ED0002A95D1F701969093970580939605C8016E
:105EE000B70128E030E040E050E00E94F746209300
:105EF0009C0530939D0540939E0550939F05285720
:105F00003C4E4F4F5F4F64F488E79CEEAFEFBFEF1E
:105F100080939C0590939D05A0939E05B0939F054B
:105F200060919C0570919D0580919E0590919F05C3
:105F300020E031E040E050E00E94F746809181058A
:105F400090918205820F931F909382058093810523
:105F50000BC081E08093940507C01092940504C0A3
:105F600010929705109296058091E608482E5524C8
:105F700080919605909197054816590624F4509201
:105F800097054092960571E0E71674E0F70670E019
:105F9000070770E0170774F080910F0590911005C6
:105FA0002091960530919705820F931F90931005CD
:105FB00080930F0580E0E8168CEFF8068FEF080756
:105FC0008FEF180774F480910F05909110052091C0
:105FD000960530919705821B930B90931005809343
:105FE0000F0581E090E090939705809396051092BD
:105FF00098051092990510929A0510929B05809130
:10600000770890917808A0917908B0917A0820914A
:106010008A0530918B0540918C0550918D05281B88
:10602000390B4A0B5B0B57FF07C0509540953095D5
:1060300021953F4F4F4F5F4F20523E4440405040CC
:106040000CF0B9C0A1E06A16A0E17A06A0E08A06C9
:10605000A0E09A060CF44EC080919305882309F4C1
:1060600045C0D401C301FCE0B595A79597958795E8
:10607000FA95D1F701969093970580939605D401F0
:10608000C301E3E0B595A79597958795EA95D1F774
:106090008093980590939905A0939A05B0939B05DA
:1060A00089589341A040B04064F088E893E1A0E0B3
:1060B000B0E08093980590939905A0939A05B093CA
:1060C0009B05609198057091990580919A05909132
:1060D0009B0520E031E040E050E00E94F746C20E10
:1060E000D31ED0928005C0927F0562C081E080936C
:1060F00093055EC010929305F0E06F16F0EF7F06F7
:10610000FFEF8F06FFEF9F060CF052C080919205C3
:10611000882309F449C088279927DC018619970943
:10612000A809B9097CE0B595A795979587957A95C3
:10613000D1F701969093970580939605C401B3011A
:1061400028E030E040E050E00E94F74620939805B8
:106150003093990540939A0550939B0528573C4EE0
:106160004F4F5F4F64F488E79CEEAFEFBFEF809333
:10617000980590939905A0939A05B0939B0560911B
:1061800098057091990580919A0590919B0520E062
:1061900031E040E050E00E94F746C20ED31ED0929C
:1061A0008005C0927F050BC081E08093920507C0F7
:1061B0001092920504C01092970510929605809156
:1061C0009605909197054816590624F45092970524
:1061D0004092960571E0671674E0770670E08706D6
:1061E00070E0970674F0809111059091120520914E
:1061F000960530919705820F931F90931205809317
:10620000110580E068168CEF78068FEF88068FEF17
:10621000980674F4809111059091120520919605CD
:1062200030919705821B930B909312058093110573
:10623000809198059091990590938C0780938B0796
:1062400080910F05909110059093840780938307A8
:106250008091110590911205209115053091160538
:10626000821B930B9C0163E0220F331F6A95E1F7B9
:10627000880F991F820F931F90938607809385073D
:1062800008C01092800510927F051092820510922E
:10629000810520E030E040E050E06091820870919C
:1062A000830880918408909185080E94A3458823E3
:1062B00041F41092800510927F0510928205109291
:1062C000810580917B0890917C08A0917D08B09118
:1062D0007E0880938E0590938F05A0939005B093D0
:1062E00091058091770890917808A0917908B091F4
:1062F0007A0880938A0590938B05A0938C05B093C0
:106300008D051092490510924A0510924B05109286
:106310004C0510924D0510924E0510924F051092AB
:10632000500510927B0810927C0810927D08109204
:106330007E081092770810927808109279081092CF
:106340007A081092ED041092EC0480906D05909004
:106350006E05840197FE04C000271127081919094A
:106360000531110554F08091C00884FD06C081E01C
:1063700090E09093A1058093A005E090C908B40136
:10638000882777FD8095982F2E2D30E040E050E053
:106390000E9483469801442737FD4095542F0E9460
:1063A000834620E032E040E050E00E94F746890159
:1063B0009A01FF24E89CC001E99C900DF89C900D87
:1063C000112464E070E00E94C246600F711F8827AC
:1063D00077FD8095982F6093B5057093B6058093EF
:1063E000B7059093B8052091450530914605409139
:1063F000470550914805261B370B480B590B209336
:1064000045053093460540934705509348058091D4
:10641000450590914605A0914705B09148058155E5
:10642000934CA040B04064F080E593ECA0E0B0E075
:106430008093450590934605A0934705B093480582
:106440008091450590914605A0914705B09148057A
:10645000805B9C43AF4FBF4F64F480EB9CE3AFEF96
:10646000BFEF8093450590934605A0934705B093F1
:1064700048058091C00883FD02C085FF82C08091DD
:1064800089058150809389058F3F51F581E3809381
:1064900089050E94694290936F0380936E038091F7
:1064A0006E0390916F0397FF05C0109256051092EE
:1064B000550516C080916E0390916F032091700373
:1064C00030917103845E9D4F821B930B68E671E0EF
:1064D0000E94C246845B9040909356058093550578
:1064E00080917105909172058B3491050CF049C033
:1064F00080917305909174058B3491050CF041C027
:106500008091A0059091A105892B81F01092A105A1
:106510001092A00580916E0390916F039093710388
:10652000809370031092560510925505E090450532
:10653000F0904605009147051091480520915505BA
:10654000309156058091840390E0AC01429FC001D8
:10655000439F900D529F900D112460E170E00E94C6
:10656000C246882777FD8095982F6E0D7F1D801F6E
:10657000911F60934505709346058093470590935E
:1065800048058091C00885FF17C080918A038093D9
:10659000D10580918D038093CD0580918E038093EA
:1065A000D50580915805882311F086EE02C08091B0
:1065B0005D050E94BA3B02C00E9407398091A20586
:1065C00081508093A2058F3F09F07AC088E18093C3
:1065D000A20560912105709122058091230590917B
:1065E0002405E090CC08FF2400E010E0A80197010A
:1065F0000E94F7463093560720935507609129056E
:1066000070912A0580912B0590912C05A801970186
:106610000E94F746309358072093570780918D08C2
:1066200090918E0890935A07809359078091910812
:106630009091920890935C0780935B0780918A0801
:1066400090918B0890935E0780935D0780917B0506
:1066500090917C059093600780935F07609151054E
:1066600070915205809153059091540520E032E0DD
:1066700040E050E00E94F7463093620720936107A4
:1066800080916E0390916F039093660780936507E6
:10669000809108039091090390936807809367079E
:1066A000809107059091080590936A078093690788
:1066B00080917F089091800890937607809375076A
:1066C000809183058823A9F06091880870918908DA
:1066D000882777FD8095982F0E9468452091930820
:1066E0003091940840919508509196080E94204658
:1066F00032C060912105709122058091230590910F
:106700002405E0908808F09089080E94684520914F
:1067100082083091830840918408509185080E9436
:1067200020465B016C010027F7FC0095102FC80183
:10673000B7010E94684520919308309194084091D8
:106740009508509196080E9420469B01AC01C60115
:10675000B5010E9469440E94354570938908609391
:106760008808809184058823A9F06091860870913B
:106770008708882777FD8095982F0E94684520918B
:1067800093083091940840919508509196080E9482
:10679000204632C06091290570912A0580912B0511
:1067A00090912C05E0908608F09087080E9468453B
:1067B0002091820830918308409184085091850887
:1067C0000E9420465B016C010027F7FC0095102F0A
:1067D000C801B7010E946845209193083091940840
:1067E00040919508509196080E9420469B01AC016B
:1067F000C601B5010E9469440E943545709387081F
:106800006093860860918A0870918B08A09031058A
:10681000B0903205C0903305D09034058091820845
:1068200090918308A0918408B091850889839A8308
:10683000AB83BC83882777FD8095982F0E9468459D
:106840007B018C0160919308709194088091950868
:10685000909196089B01AC010E9469449B01AC0198
:10686000C801B7010E9420467B018C01C601B50119
:106870000E94684529813A814B815C810E942046B3
:1068800020E030E040E05FE30E9420469B01AC0145
:10689000C801B7010E9469440E94354570938B0876
:1068A00060938A086091290570912A0580912B05D3
:1068B00090912C050E94684529813A814B815C8129
:1068C0000E9420460E943A4570938807609387078C
:1068D000A0916B05B0916C05BE83AD83B093940716
:1068E000A0939307809186089091870890938E07D4
:1068F00080938D07809188089091890881509840F5
:1069000034F080E098E09093890880938808809123
:106910008808909189088050984F34F480E098EF6F
:1069200090938908809388088091860890918708C1
:106930008150984034F080E098E0909387088093ED
:10694000860880918608909187088050984F34F48B
:1069500080E098EF909387088093860880918A085A
:1069600090918B088150984034F080E098E09093AB
:106970008B0880938A0880918A0890918B088050B8
:10698000984F34F480E098EF90938B0880938A08B6
:106990008091C008282F80FFCFC0809158058823A0
:1069A00009F0CAC08091810321FF0EC0823310F527
:1069B00080917B0590917C05449790937E05809310
:1069C0007D051092A50519C020917A0330917B03B3
:1069D000280F311D8091C50890E0BC01269FC001A1
:1069E000279F900D369F900D1124449790937E051C
:1069F00080937D0581E08093A50580907B05909034
:106A00007C0560907D0570907E05681479040CF01B
:106A100093C08091A505882309F48EC0B0908203AD
:106A2000C090EA04D090EB04A090800360915105DF
:106A3000709152058091530590915405E090830325
:106A4000FF2400E010E020E032E040E050E00E944F
:106A5000F746C801B7010E94834620E230E040E0DB
:106A600050E00E94F7468901233331051CF002E310
:106A700010E005C02E5C3F4F14F40EEC1FEF8B2D81
:106A800090E086189708DC01A89DC001A99D900D93
:106A9000B89D900D112460E170E00E94C246F101A2
:106AA000E61BF70B8091A3059091A4059C0144E09F
:106AB000220F331F4A95E1F7281B390B8A2D90E0EE
:106AC000AC014C9DC0014D9D900D5C9D900D11241D
:106AD00068E070E00E94C246261B370B2E0F3F1F56
:106AE000C901801B910B60E170E00E94C246709367
:106AF000A4056093A3058091C10890E06817790709
:106B000064F4281639062CF09093A4058093A3050D
:106B100004C03092A4052092A3058091A305909112
:106B2000A4052816390624F43092A4052092A30562
:106B30002090A3053090A4058091CB08482E5524C1
:106B4000C20144973101821593050CF43C01709207
:106B500064076092630720918A0830918B088091C6
:106B6000B5059091B605A091B705B091B80554E16F
:106B7000651671041CF41A86198628C0281B390B67
:106B8000C901930135952795821793070CF49C0151
:106B9000C30162E070E00E94C246709561957F4F2C
:106BA000C901261737070CF4CB01920126193709C2
:106BB000281739070CF4C9019301241935099A875C
:106BC00089878217930714F43A87298720918808C8
:106BD000309189088090690590906A058091C90577
:106BE0009091CA05881A990A281939093093900892
:106BF00020938F0820E030E040E050E069817A8106
:106C00008B819C810E94A3458823F1F1E0902105AE
:106C1000F090220500912305109124056091BD0597
:106C20007091BE058091BF059091C0050E94684596
:106C30005B016C01C801B7010E94684529813A8156
:106C40004B815C810E9420467B018C01B401882726
:106C500077FD8095982F0E9468459B01AC01C80183
:106C6000B7010E9468449B01AC01C601B5010E94B6
:106C700069440E9435456093BD057093BE058093BD
:106C8000BF059093C0051CC020918F0830919008DB
:106C9000442737FD4095542F8091BD059091BE0546
:106CA000A091BF05B091C005820F931FA41FB51F0F
:106CB0008093BD059093BE05A093BF05B093C0051A
:106CC0008091BD059091BE05A091BF05B091C00512
:106CD00081589E43A040B04064F080E89EE3A0E06D
:106CE000B0E08093BD059093BE05A093BF05B0931F
:106CF000C0058091BD059091BE05A091BF05B091E2
:106D0000C0058058914CAF4FBF4F64F480E891ECC0
:106D1000AFEFBFEF8093BD059093BE05A093BF0575
:106D2000B093C00560918F087091900880917C03AA
:106D300090917D03A0917E03B0917F038B879C8708
:106D4000AD87BE87882777FD8095982F0E9468457C
:106D50007B018C016091BD057091BE058091BF05DE
:106D60009091C0050E9468459B01AC016B857C85B4
:106D70008D859E850E9420469B01AC01C801B7010C
:106D80000E9469440E9435457B018C016B01898515
:106D90009A8597FF03C0909581959F4F62E070E0C0
:106DA0000E94C246660D771D882777FD8095982F33
:106DB0002091950330E040E050E00E94834620E4BB
:106DC00030E040E050E00E94F74638872F83C2163B
:106DD000D3060CF497012F80388430942194310825
:106DE0003394221533050CF4910149855A85460DDB
:106DF000571DCA01820F931F97FF03C060E070E028
:106E000005C0BC01481659060CF4B2018091CA08AD
:106E1000E82FF0E0F8A3EF8FCB016E177F070CF49B
:106E2000CF0180937608421B530B9A0157FF03C092
:106E300020E030E004C0441655060CF492014F8D5A
:106E400058A1241735070CF49A0120938C088091DF
:106E50008608909187082091CB053091CC058D80D4
:106E60009E80821A930A88199909909375088093D5
:106E7000740820E030E040E050E069817A818B8145
:106E80009C810E94A3458823F1F1E0902905F090B0
:106E90002A0500912B0510912C056091B905709180
:106EA000BA058091BB059091BC050E9468455B01C5
:106EB0006C01C801B7010E94684529813A814B8164
:106EC0005C810E9420467B018C01B401882777FDFC
:106ED0008095982F0E9468459B01AC01C801B701BD
:106EE0000E9468449B01AC01C601B5010E9469443F
:106EF0000E9435456093B9057093BA058093BB0530
:106F00009093BC051CC020917408309175084427EB
:106F100037FD4095542F8091B9059091BA05A09105
:106F2000BB05B091BC05820F931FA41FB51F8093B2
:106F3000B9059093BA05A093BB05B093BC058091A9
:106F4000B9059091BA05A091BB05B091BC058158D7
:106F50009E43A040B04064F080E89EE3A0E0B0E033
:106F60008093B9059093BA05A093BB05B093BC0577
:106F70008091B9059091BA05A091BB05B091BC056F
:106F80008058914CAF4FBF4F64F480E891ECAFEF65
:106F9000BFEF8093B9059093BA05A093BB05B0935A
:106FA000BC056091740870917508882777FD8095FD
:106FB000982F0E9468457B018C016091B905709102
:106FC000BA058091BB059091BC050E9468459B0164
:106FD000AC016B857C858D859E850E9420469B013A
:106FE000AC01C801B7010E9469440E9435452F8158
:106FF0003885621773070CF49B01C1012216330612
:107000000CF4C9019301A985BA852A1B3B0B280FF3
:10701000391F37FF03C020E030E004C0421653069A
:107020000CF49201EF8DF8A12E173F070CF49F018D
:1070300020939708681A790AC30129853A85821B2B
:10704000930B97FF03C080E090E004C048165906F8
:107050000CF4C2014F8D58A18417950754F4CA014E
:1070600008C080918305882311F00C94212B0C9487
:10707000282B80938108A2960FB6F894DEBF0FBE2E
:10708000CDBFDF91CF911F910F91FF90EF90DF90D7
:10709000CF90BF90AF909F908F907F906F905F90B8
:1070A0004F903F902F900895E091B808F0E0EE0FD8
:1070B000FF1FE85CF74F0190F081E02DF7FF03C060
:1070C000F095E195FF4F74971CF081E090E00895F2
:1070D000E091B908F0E0EE0FFF1FE85CF74F808108
:1070E000918120E030E097FF03C0909581959F4FFC
:1070F000449714F021E030E0C901089580917606AC
:1071000081508230F0F5809178068330D1F58091FE
:10711000790690917A06A0917B06B0917C068093C7
:10712000E6059093E705A093E805B093E905809103
:107130007D0690917E06A0917F06B0918006809397
:10714000EA059093EB05A093EC05B093ED058091D3
:10715000810690918206A0918306B0918406809367
:10716000EE059093EF05A093F005B093F10581E053
:107170008093F20588EE93E09093D8048093D7042F
:1071800008951092F205089580917606815082301C
:10719000C0F5809178068330A1F5809179069091B1
:1071A0007A06A0917B06B0917C068093D9059093D6
:1071B000DA05A093DB05B093DC0580917D06909104
:1071C0007E06A0917F06B09180068093DD059093A6
:1071D000DE05A093DF05B093E005809181069091D4
:1071E0008206A0918306B09184068093E105909376
:1071F000E205A093E305B093E40581E08093E50503
:1072000008951092E50508951092F20508951092E0
:10721000CA051092C9051092CC051092CB050895AD
:107220002F923F924F925F926F927F928F929F9296
:10723000AF92BF92CF92DF92EF92FF920F931F9384
:10724000CF93DF93CDB7DEB762970FB6F894DEBF6A
:107250000FBECDBF8C0180917606813009F059C2F6
:1072600080917806833009F054C280916E0390912A
:107270006F0397FD4EC20115110509F486C0F80190
:107280008485882309F481C0823039F48091F50522
:107290009091F6050817190791F11092FB051092CD
:1072A000FC051092FD051092FE051092F705109254
:1072B000F8051092F9051092FA05F80164817581BC
:1072C0008681978120E836E948E950E00E94F74638
:1072D000DA01C9010E94393FAA2797FDA095BA2F6C
:1072E0008093960390939703A0939803B093990388
:1072F0001093F6050093F50582E0F801848720914C
:107300007D0630917E0640917F0650918006F801FF
:1073100084819581A681B781281B390B4A0B5B0BB1
:107320002D833E834F8358876091790670917A064A
:1073300080917B0690917C0620813181428153812E
:10734000621B730B840B950B20919603309197036E
:1073500040919803509199030E94834620E030E2C7
:1073600040E050E00E94F74629833A834B835C83D8
:107370002D813E8130936E0720936D0749815A819C
:107380005093700740936F0718C01092FB0510923E
:10739000FC051092FD051092FE051092F705109263
:1073A000F8051092F9051092FA051D821E821F82BF
:1073B000188619821A821B821C828091CD059091B9
:1073C000CE05A091CF05B091D0058D879E87AF8760
:1073D000B88B2090D1053090D2054090D3055090C5
:1073E000D405A090D505B090D605C090D705D09013
:1073F000D8052091890630918A0640918B065091DC
:107400008C06C601B5010E94834620E032E040E0D0
:1074100050E00E94F74679018A012091FB053091E6
:10742000FC054091FD055091FE05C201B1010E948D
:10743000834620E030E240E050E00E94F746390108
:107440004A019094809470946094611C711C811C1A
:10745000911C6E187F08800A910A6D817E818F8150
:1074600098852D853E854F8558890E94834620E06A
:1074700038E040E050E00E94F746621A730A840A3E
:10748000950A20918D0630918E0640918F0650917D
:107490009006C601B5010E94834620E032E040E03C
:1074A00050E00E94F74679018A012091F70530915A
:1074B000F8054091F9055091FA05C201B1010E9409
:1074C000834620E030E240E050E00E94F746590158
:1074D0006A01D094C094B094A094A11CB11CC11CAA
:1074E000D11CAE18BF08C00AD10A69817A818B818C
:1074F0009C812D853E854F8558890E94834620E0DA
:1075000038E040E050E00E94F746A21AB30AC40AED
:10751000D50A80916E0390916F030E94393F1C0140
:10752000442437FC4094542C80916E0390916F0357
:107530000E94F03E9C01442737FD4095542F298737
:107540003A874B875C87C601B501A20191010E9471
:1075500083467B018C01C401B30129853A854B85A3
:107560005C850E948346E61AF70A080B190BC801CE
:10757000B70120E030E240E050E00E94F7463A8B4D
:10758000298B3093CC052093CB05C401B301A20114
:1075900091010E9483467B018C01C601B5012985BA
:1075A0003A854B855C850E948346E60EF71E081FD0
:1075B000191FC801B70120E030E240E050E00E940E
:1075C000F746309521953F4F3093CA052093C90562
:1075D0002E3231051CF08DE290E007C0235D3F4F55
:1075E00014F080E007C083ED9FEF9093CA0580936D
:1075F000C90581E0A989BA899E971CF08DE290E0C7
:1076000007C0E989FA89E35DFF4F3CF483ED9FEF02
:107610009093CC058093CB0594C0882309F091C04A
:107620006D817E818F81988520E130E040E050E0DF
:107630000E94F7468091FB059091FC05A091FD0505
:10764000B091FE05280F391F4A1F5B1F2093FB05D1
:107650003093FC054093FD055093FE0521308DE7E6
:10766000380780E0480780E058072CF080E09DE76D
:10767000A0E0B0E009C0205033484F4F5F4F64F4A2
:1076800080E093E8AFEFBFEF8093FB059093FC059C
:10769000A093FD05B093FE0569817A818B819C8161
:1076A00020E130E040E050E00E94F7468091F7058D
:1076B0009091F805A091F905B091FA05280F391FAE
:1076C0004A1F5B1F2093F7053093F8054093F90597
:1076D0005093FA052130ADE73A07A0E04A07A0E051
:1076E0005A072CF080E09DE7A0E0B0E009C02050F0
:1076F00033484F4F5F4F2CF580E093E8AFEFBFEF7B
:107700008093F7059093F805A093F905B093FA05D7
:1077100018C01092CA051092C9051092CC0510929B
:10772000CB051092FB051092FC051092FD051092FE
:10773000FE051092F7051092F8051092F9051092C7
:10774000FA0562960FB6F894DEBF0FBECDBFDF918B
:10775000CF911F910F91FF90EF90DF90CF90BF904E
:10776000AF909F908F907F906F905F904F903F90E1
:107770002F900895863418F41092F40507C0803ACB
:1077800010F481E001C082E08093F40580917606D8
:10779000813079F1813020F0823009F0A7C014C027
:1077A0001092CA051092C9051092CC051092CB0513
:1077B0008091F405882309F499C084E690E09093C1
:1077C000D8048093D70492C080919906882331F021
:1077D0008091990681508093990688C01092CA05BD
:1077E0001092C9051092CC051092CB051092760626
:1077F0007DC0809178069091F405833009F055C0E2
:10780000913039F0913008F445C0923009F044C00D
:1078100021C08091E5058823E9F10E94543888232E
:1078200069F00E94C4381092CA051092C9051092DE
:10783000CC051092CB051092F30555C08091F3054D
:10784000873018F58F5F8093F3050E94C43880E07D
:1078500090E01DC08091F205882349F00E94C43851
:107860000E9454388823C1F486EE95E010C082E36C
:1078700090E09093D8048093D7048091E505882305
:1078800049F00E945438882339F489ED95E00E942C
:10789000103929C00E94C4381092CA051092C90537
:1078A0001092CC051092CB051EC01092CA05109202
:1078B000C9051092CC051092CB059923A1F08091B7
:1078C000770628EC829FC001112420E436E0281BB3
:1078D000390B37FF02C020E030E02E5C3F4F309381
:1078E000D8042093D70482E0809376068091C9055E
:1078F0009091CA0590937207809371078091CB0590
:107900009091CC0590937407809373070895A0E03D
:10791000B0E0A80FB11D0E944947802D90E0089566
:10792000A0E0B0E0A80FB11D062E0E945B470895AD
:10793000A0E0B0E0A80FB11D0E945647CF01089506
:10794000A0E0B0E0A80FB11D0B010E9467470895A9
:10795000863008F085E0A2E0B0E0082E0E945B4788
:107960000895982F863008F095E086E4989FD0011E
:107970001124AC59BF4FE8EBF8E0182E0E946C4779
:10798000A2E0B0E0092E0E945B470895982F863050
:1079900008F095E086E4989FD0011124AC59BF4FC0
:1079A000E8EBF8E0182E0E945147089581E080939B
:1079B000B80822E02093B90883E08093BA0854E025
:1079C0005093BB0845E04093BC0836E03093BD08B7
:1079D00087E08093BE0888E08093BF0880EC8093A6
:1079E000C0089EE19093C1088BEF8093C3088AE0A2
:1079F0008093C4089093C2089093C6082093C5084A
:107A00002093C7085093C8083093C9088FE080932B
:107A1000CA088AEF8093CB089093CC0880E88093C3
:107A2000CD0824E62093CE088CE88093CF088EE51D
:107A30008093D00883E28093D10884E18093D208B8
:107A40001092D30880E18093D40880E58093D50814
:107A50001092D6081092D7081092D8081092E80811
:107A60001092E9081092EA081092EB082093D908C6
:107A700088E28093DA081092ED0892E39093DB0895
:107A800086E98093DC084093DD089093DE088AE560
:107A90008093DF089093E0081092EC088093E1084F
:107AA0004093E2082093E3082093E40880E2809367
:107AB000E5085093E6089093E708A2EFB8E0ECE9F8
:107AC000F3E089E001900D928150E1F7089581E0A3
:107AD0008093B80882E08093B90823E02093BA0825
:107AE00054E05093BB0845E04093BC0836E0309327
:107AF000BD0887E08093BE0888E08093BF0880E4DB
:107B00008093C0089EE19093C1088BEF8093C308D7
:107B10008AE08093C4089093C2089093C60820938B
:107B2000C5082093C7085093C8083093C9088FE050
:107B30008093CA088AEF8093CB089093CC0880E8A2
:107B40008093CD0890E59093CE0888E78093CF0886
:107B50008EE58093D00883E28093D10884E18093FE
:107B6000D2081092D30830E23093D4089093D5080D
:107B70001092D6081092D7081092D8081092E808F0
:107B80001092E9081092EA081092EB0824E620937C
:107B9000D90888E28093DA081092ED0892E3909376
:107BA000DB0886E98093DC084093DD089093DE08CB
:107BB0008AE58093DF089093E0081092EC088093A8
:107BC000E1084093E2082093E3082093E40830930F
:107BD000E5085093E6088BE48093E708A2EFB8E04D
:107BE000E6EAF3E087E001900D928150E1F7089515
:107BF00081E08093B80882E08093B90883E08093A5
:107C0000BA0834E03093BB0845E04093BC0886E0F6
:107C10008093BD0887E08093BE0828E02093BF08CA
:107C200080E48093C0089EE19093C1088BEF80931D
:107C3000C3088AE08093C4089093C2089093C60852
:107C40003093C5083093C7082093C8088CE0809310
:107C5000C9088FE08093CA088AEF8093CB0890937D
:107C6000CC0890E89093CD0880E58093CE0856E943
:107C70005093CF088EE58093D00883E28093D1089B
:107C800084E18093D2081092D30880E28093D408D4
:107C90009093D5081092D6081092D7081092D80861
:107CA0001092E8081092E9081092EA081092EB0886
:107CB00024E62093D90888E28093DA081092ED0830
:107CC00082E38093DB085093DC084093DD088093C7
:107CD000DE089AE59093DF088093E0081092EC08A4
:107CE0009093E1084093E2082093E3082093E4088E
:107CF00080E18093E5083093E6082093E708A2EF3F
:107D0000B8E0EEEAF3E086E001900D928150E1F7F1
:107D1000089522E030E0D9010E944947802D863045
:107D200028F082E0D901082E0E945B4790E0089578
:107D30000F931F93CF93DF93A1E0B0E00E944947D8
:107D4000802D853469F186E295E09F938F931F9291
:107D50000E94B8090E94F83DC0E0D0E00F900F905B
:107D60000F900C2FC23039F0C33019F40E94D63C6A
:107D700004C0C43010F00E94673D802F0E94B13CC7
:107D80002196C630D10569F7A2E0B0E083E0082E65
:107D90000E945B47A1E0B0E085E4082E0E945B47AB
:107DA00002E010E0D8010E944947802D0E94C63CA5
:107DB000D8010E944947802D90E09F938F938DE0DA
:107DC00095E09F938F931F920E94B8090F900F9098
:107DD0000F900F900F90DF91CF911F910F91089509
:107DE00097FD02C041E004C0909581959F4F4FEFF1
:107DF00068E671E00E94C246FC018B35910554F0A3
:107E00008B5590408A35910538F484EB90E08E1BB9
:107E10009F0BFC0181E00FC0CF01855B90408A354C
:107E2000910518F4E45BF04005C088E691E08E1BF4
:107E30009F0BFC018FEFEE0FFF1FEA5AFA4F2591BF
:107E40003491992787FD9095B901689F9001699FAA
:107E5000300D789F300D1124842F992787FD909540
:107E6000AC01249FC001259F900D349F900D1124DB
:107E700008952AE530E0281B390BC9010E94F03E25
:107E800008951F93CF93DF93EB01672B29F400979D
:107E900019F480E090E091C097FF02C01FEF01C08D
:107EA00011E0209729F48AE51802C001112485C049
:107EB0009C01B901882777FD8095982F26E0660FF1
:107EC000771F881F991F2A95D1F79E01442737FDF8
:107ED0004095542F0E94F746F90137FF03C0F095F3
:107EE000E195FF4F31E0EA35F30734F4E45FF94FF1
:107EF0008491282F30E047C04CE1E73AF4071CF0AA
:107F00002AE530E040C059E0ED38F5071CF029E5DE
:107F100030E039C085E0EA3BF8071CF028E530E0A6
:107F200032C024E0E731F2071CF027E530E02BC037
:107F300033E0EE32F3071CF026E530E024C042E0E7
:107F4000E939F4071CF025E530E01DC052E0E233CA
:107F5000F5071CF024E530E016C081E0E73EF807A5
:107F60001CF023E530E00FC021E0ED3AF2071CF0F1
:107F700022E530E008C0EF57F1401CF021E530E089
:107F800002C020E530E01C161D066CF4812F9927F5
:107F900087FD9095AC01249FC001259F900D349FD3
:107FA000900D11240AC011162CF484EB90E0821B72
:107FB000930B03C0C901845B9040DF91CF911F9167
:107FC00008959F92AF92BF92CF92DF92EF92FF926D
:107FD0000F931F937B018C015B016C019924C601F7
:107FE000B501A80197010E94D5462E0D3F1D401FE7
:107FF000511F5695479537952795E21AF30A040BBA
:10800000150B82E0E816F1040105110538F0939490
:1080100088E2981619F079018A01E1CFCA01B90105
:108020001F910F91FF90EF90DF90CF90BF90AF9096
:108030009F90089580913306813059F5809109060B
:108040008093780680912E0680937706809117069C
:1080500090911806A0911906B0911A068093850692
:1080600090938606A0938706B09388068091270692
:1080700090912806A0912906B0912A068093950632
:1080800090939606A0939706B093980682E080930B
:10809000330680915006813099F580913806909191
:1080A0003906A0913A06B0913B06809379069093E9
:1080B0007A06A0937B06B0937C0680913C06909153
:1080C0003D06A0913E06B0913F0680937D069093B9
:1080D0007E06A0937F06B093800680914006909123
:1080E0004106A0914206B091430680938106909389
:1080F0008206A0938306B093840682E080935006A4
:10810000809175068130D1F58091590690915A067B
:10811000A0915B06B0915C0680938D0690938E06CD
:10812000A0938F06B09390068091550690915606C5
:10813000A0915706B09158068093890690938A06BD
:10814000A0938B06B0938C0680915D0690915E069D
:10815000A0915F06B0916006B095A095909581952D
:108160009F4FAF4FBF4F8093910690939206A0937D
:108170009306B093940682E080937506809133064F
:10818000882359F080915006882339F08091750634
:10819000882319F081E0809376060895482F809116
:1081A000A406843009F461C0853050F48130D1F0E8
:1081B000813098F08230D9F0833009F0D6C01CC0ED
:1081C000863009F487C0863008F461C0873009F42E
:1081D000A8C0883009F0C9C0B1C0453B09F0C2C091
:1081E00081E0A4C0423609F0BDC082E09FC04130AA
:1081F00009F0B8C083E09AC0463061F04231D9F04E
:10820000423009F584E396E090939F0680939E06A2
:108210004D9607C08FEF95E090939F0680939E0642
:10822000C59690939D0680939C06019790939B061C
:1082300080939A060AC081E596E090939F0680930A
:108240009E068596EECF1092A4068091A406882300
:1082500009F48DC084E08093A406842F8F5F8093FF
:10826000A3068F5F8093A2060895842F90E09093D9
:10827000A1068093A0069091A306940F9093A30665
:108280008091A206890F8093A20685E04FC0242F1B
:1082900030E0322F22278091A0069091A106820F14
:1082A000931F9093A1068093A0069091A306940F2C
:1082B0009093A3068091A206890F8093A206E09175
:1082C0009A06F0919B068081813009F44BC01082A0
:1082D00086E02CC0E0919E06F0919F0680919C065E
:1082E00090919D06E817F90728F44193F0939F06B3
:1082F000E0939E069091A306940F9093A30680911D
:10830000A206890F8093A2068091A0069091A106F3
:1083100001979093A1068093A006892B41F587E0F1
:1083200005C08091A306481721F488E08093A40635
:108330000895E0919A06F0919B0613C08091A206E1
:10834000E0919A06F0919B06481759F481E08083EA
:1083500095B1982795B90E941A408FEF809399069E
:1083600001C010821092A40608951092A4060895E8
:10837000CF93DF93DC01EC01EA81FB8121918E81B7
:10838000815019F48981E81BF109ED01FB83EA832F
:108390008E839FB7F8948C9181508C939FBF822FCE
:1083A00090E0DF91CF910895FC0110827583648382
:1083B000738362834183478346830895CF93DF931A
:1083C000DC019C91ED018981981718F080E090E024
:1083D00016C0ED01EC81FD8161938F81815019F40C
:1083E0008981E81BF109ED018F83FD83EC839FB741
:1083F000F8948C918F5F8C939FBF81E090E0DF9128
:10840000CF910895FC0180818823E9F3CF010E9478
:10841000B84190E00895FC018081882319F48FEF22
:108420009FEF0895CF010E94B84190E008953C98D5
:10843000449A1092A50608956091A6067091A70629
:10844000349B15C0CB0101969093A7068093A60696
:1084500081599140E8F18091A506882319F0815057
:108460008093A5061092A7061092A6060895CB0148
:1084700001978F58914040F56930710548F410928A
:10848000B5031092B6031092B7031092B80319C047
:108490006950704080E090E029E134E040E050E035
:1084A0000E9483462AE096958795779567952A9549
:1084B000D1F76093B5037093B6038093B70390939D
:1084C000B8038CE08093A5061092A7061092A6062A
:1084D0000895CF93DF938091A5068823D9F1609109
:1084E000210570912205809123059091240520E0BB
:1084F00032E040E050E00E94F746E90137FF03C058
:10850000D095C195DF4F6091290570912A05809122
:108510002B0590912C0520E032E040E050E00E94D5
:10852000F746C90137FF03C0909581959F4F8C177F
:108530009D070CF4CE018397CCF48091B503909104
:10854000B60397FF02C088599E4F68E671E00E940B
:10855000C2460EC08091D7049091D804892B31F483
:1085600084E690E09093D8048093D7048FEF9FEF38
:10857000DF91CF910895A8E0B0E0E1ECF2E40C9433
:108580001C477B018C01611571058105910519F46A
:1085900082E089835AC083E089838EE1C82ED12C82
:1085A000DC82CB82ED82FE820F831887C801B7017F
:1085B0000E942E43BC016150704077FF33C0EE270C
:1085C000FF27E61BF70B20E030E040E050E081E0C1
:1085D00090E0A0E0B0E00E2E04C0880F991FAA1F03
:1085E000BB1F0A94D2F70197A109B1098E219F21DF
:1085F000A023B1230097A105B10521F021E030E0CF
:1086000040E050E004C016950795F794E794EA958A
:10861000D2F72E293F29402B512B2D833E834F83A8
:1086200058870FC06115710581F0062E04C0EE0C4D
:10863000FF1C001F111F0A94D2F7ED82FE820F83E8
:108640001887C61AD70ADC82CB821A82CE0101961D
:108650000E947B43E8E028960C943847EF92FF9203
:108660000F931F939B01AC01203080E0380781E01D
:10867000480780E0580780F42F3F31054105510538
:1086800009F020F4EE24FF24870119C068E0E62EEB
:10869000F12C012D112D13C0203080E0380780E02F
:1086A000480781E0580730F490E1E92EF12C012DC4
:1086B000112D05C088E1E82EF12C012D112D80E24D
:1086C00090E0A0E0B0E08E199F09A00BB10B04C0B0
:1086D0005695479537952795EA94D2F7F901E754CF
:1086E000FC4F2081821B9109A109B1091F910F91B3
:1086F000FF90EF9008959F92AF92BF92CF92DF923A
:10870000EF92FF920F931F93EE24FF248701FC0149
:10871000248135814681578191808081823010F497
:108720004061A2C0843009F49BC0823029F420E06B
:1087300030E040E050E005C021153105410551050C
:1087400019F4E0E0F0E092C0828193816FEF82380B
:1087500096070CF05AC062E87FEF681B790B6A310C
:1087600071052CF020E030E040E050E02AC0AA245F
:10877000BB24650181E090E0A0E0B0E0062E04C0DB
:10878000880F991FAA1FBB1F0A94D2F70197A1094E
:10879000B10982239323A423B5230097A105B10532
:1087A00029F071E0A72EB12CC12CD12C04C0569514
:1087B0004795379527956A95D2F72A293B294C2961
:1087C0005D29DA01C9018F779070A070B070803494
:1087D0009105A105B10539F427FF09C0205C3F4F81
:1087E0004F4F5F4F04C0215C3F4F4F4F5F4F80E0C2
:1087F00090E0203060E0360760E0460760E456070E
:1088000010F081E090E0FC0123C08038910544F530
:10881000FC01E158FF4FDA01C9018F779070A07019
:10882000B07080349105A105B10539F427FF09C066
:10883000205C3F4F4F4F5F4F04C0215C3F4F4F4F75
:108840005F4F57FF05C05695479537952795319649
:1088500087E056954795379527958A95D1F706C0B5
:1088600020E030E040E050E0EFEFF0E0E22EF32EC9
:10887000942F9F77802F8078892B9E2F979599270B
:1088800097958F77082F092B9E2F9695812F8078AB
:10889000892B9794992497948F77182F1929C801B9
:1088A000B7011F910F91FF90EF90DF90CF90BF9095
:1088B000AF909F900895FC014150504030F00190DE
:1088C0000616D1F73197CF01089588279927089583
:1088D0005058BB27AA270ED079C16AD130F06FD18A
:1088E00020F031F49F3F11F41EF45FC10EF4E095C7
:1088F000E7FB55C1E92F7BD180F3BA1762077307F5
:108900008407950718F071F49EF593C10EF4E09575
:108910000B2EBA2FA02D0B01B90190010C01CA0139
:10892000A0011124FF27591B99F0593F50F4503EE4
:1089300068F11A16F040A22F232F342F4427585FD6
:10894000F3CF469537952795A795F0405395C9F7EE
:108950007EF41F16BA0B620B730B840BBAF09150A6
:10896000A1F0FF0FBB1F661F771F881FC2F70EC045
:10897000BA0F621F731F841F48F487957795679518
:10898000B795F7959E3F08F0B3CF9395880F08F001
:108990009927EE0F9795879508950CD017C10FD1A1
:1089A00040F006D130F021F45F3F19F0F8C05111CA
:1089B00041C1FBC01CD198F39923C9F35523B1F3EE
:1089C000951B550BBB27AA2762177307840738F03E
:1089D0009F5F5F4F220F331F441FAA1FA9F333D09D
:1089E0000E2E3AF0E0E830D091505040E695001C51
:1089F000CAF729D0FE2F27D0660F771F881FBB1F0D
:108A0000261737074807AB07B0E809F0BB0B802DE6
:108A1000BF01FF2793585F4F2AF09E3F510568F032
:108A2000BEC008C15F3FECF3983EDCF386957795B6
:108A30006795B795F7959F5FC9F7880F911D969534
:108A4000879597F90895E1E0660F771F881FBB1F90
:108A5000621773078407BA0720F0621B730B840B3D
:108A6000BA0BEE1F88F7E095089504D06894B11111
:108A7000E1C00895C4D088F09F5790F0B92F99278E
:108A8000B751A0F0D1F0660F771F881F991F1AF019
:108A9000BA95C9F712C0B13081F0CBD0B1E00895DA
:108AA000C8C0672F782F8827B85F39F0B93FCCF35B
:108AB000869577956795B395D9F73EF4909580950F
:108AC000709561957F4F8F4F9F4F0895E89409C02F
:108AD00097FB3EF490958095709561957F4F8F4FF1
:108AE0009F4F9923A9F0F92F96E9BB279395F69507
:108AF000879577956795B795F111F8CFFAF4BB0F85
:108B000011F460FF1BC06F5F7F4F8F4F9F4F16C0E8
:108B1000882311F096E911C0772321F09EE8872F72
:108B2000762F05C0662371F096E8862F70E060E02E
:108B30002AF09A95660F771F881FDAF7880F9695A7
:108B4000879597F9089507D008F481E0089503D038
:108B500008F48FEF0895990F0008550FAA0BE0E86D
:108B6000FEEF16161706E807F907C0F012161306EF
:108B7000E407F50798F0621B730B840B950B39F42F
:108B80000A2661F0232B242B252B21F408950A2695
:108B900009F4A140A6958FEF811D811D089597F9D5
:108BA0009F6780E870E060E008959FEF80EC089593
:108BB00000240A94161617061806090608950024BC
:108BC0000A9412161306140605060895092E039436
:108BD000000C11F4882352F0BB0F40F4BF2B11F4AA
:108BE00060FF04C06F5F7F4F8F4F9F4F089557FD09
:108BF0009058440F551F59F05F3F71F04795880F0B
:108C000097FB991F61F09F3F79F0879508951216A1
:108C100013061406551FF2CF4695F1DF08C016164D
:108C200017061806991FF1CF8695710561050894FE
:108C30000895E894BB2766277727CB0197F9089515
:108C40000BD0C4CFB5DF28F0BADF18F0952309F0B8
:108C5000A6CFABCF1124EECFCADFA0F3959FD1F3FF
:108C6000950F50E0551F629FF001729FBB27F00DDA
:108C7000B11D639FAA27F00DB11DAA1F649F66272F
:108C8000B00DA11D661F829F2227B00DA11D621F7E
:108C9000739FB00DA11D621F839FA00D611D221F38
:108CA000749F3327A00D611D231F849F600D211D1C
:108CB000822F762F6A2F11249F5750408AF0E1F0BF
:108CC00088234AF0EE0FFF1FBB1F661F771F881F08
:108CD00091505040A9F79E3F510570F060CFAACF48
:108CE0005F3FECF3983EDCF3869577956795B795F3
:108CF000F795E7959F5FC1F7FE2B880F911D96951D
:108D0000879597F90895629FD001739FF001829F24
:108D1000E00DF11D649FE00DF11D929FF00D839F0A
:108D2000F00D749FF00D659FF00D9927729FB00DA7
:108D3000E11DF91F639FB00DE11DF91FBD01CF01BA
:108D400011240895991B79E004C0991F961708F023
:108D5000961B881F7A95C9F780950895AA1BBB1B9F
:108D600051E107C0AA1FBB1FA617B70710F0A61B2B
:108D7000B70B881F991F5A95A9F780959095BC014C
:108D8000CD01089597FB092E07260AD077FD04D060
:108D9000E5DF06D000201AF4709561957F4F0895A5
:108DA000F6F7909581959F4F0895A1E21A2EAA1B80
:108DB000BB1BFD010DC0AA1FBB1FEE1FFF1FA2178B
:108DC000B307E407F50720F0A21BB30BE40BF50B88
:108DD000661F771F881F991F1A9469F76095709511
:108DE000809590959B01AC01BD01CF01089597FB43
:108DF000092E05260ED057FD04D0D7DF0AD0001C5F
:108E000038F450954095309521953F4F4F4F5F4F27
:108E10000895F6F790958095709561957F4F8F4FE7
:108E20009F4F08952F923F924F925F926F927F9241
:108E30008F929F92AF92BF92CF92DF92EF92FF926A
:108E40000F931F93CF93DF93CDB7DEB7CA1BDB0B16
:108E50000FB6F894DEBF0FBECDBF09942A883988BB
:108E600048885F846E847D848C849B84AA84B984C2
:108E7000C884DF80EE80FD800C811B81AA81B981CE
:108E8000CE0FD11D0FB6F894DEBF0FBECDBFED01E2
:108E90000895F999FECFB2BDA1BDF89A119600B41C
:108EA0000895F7DF01921A94E1F70895F2DFE02DBB
:108EB000F0DFF02D0895F999FECFB2BDA1BD00BC41
:108EC00011960FB6F894FA9AF99A0FBE0895F3DF47
:108ED000012CF1DF112408950190EDDF1A94E1F7E0
:048EE0000895FFCF23
:108EE4000A01FF64496E74656772616C506974634A
:108EF40068202020496E74656772616C526F6C6CD7
:108F0400202020204163635069746368202020205E
:108F140020202020416363526F6C6C20202020208D
:108F2400202020204779726F59617720202020204B
:108F34002020202052656164696E6748656967680E
:108F4400742020204163635A2020202020202020E8
:108F54002020202054687275737420202020202043
:108F640020202020436F6D706173734865616469CC
:108F74006E672020566F6C74616765202020202066
:108F8400202020205265636569766572204C6576E1
:108F9400656C2020416E616C6F674F7574313120B0
:108FA400202020204750534465764E6F7274682009
:108FB4002020202047505344657645617374202057
:108FC400202020204750535F50697463682020207C
:108FD400202020204750535F526F6C6C20202020AB
:108FE400202020204163635F5A202020202020205D
:108FF400202020204D65616E41636350697463686D
:10900400202020204D65616E416363526F6C6C209B
:1090140020202020496E74656772616C457272501D
:1090240069746368496E74656772616C45727252E3
:109034006F6C6C204D65616E496E74506974636821
:10904400202020204D65616E496E74526F6C6C094E
:10905400200000004E65757472616C506974636819
:1090640020202020526F6C6C4F666673657420203C
:1090740020202020496E74526F6C6C2A4661637400
:109084006F72202052656164696E674779726F5010
:1090940069746368446972656374436F7272526F72
:1090A4006C6C202052656164696E674779726F52F7
:1090B4006F6C6C20436F7272656374696F6E526F6C
:1090C4006C6C2020492D417474526F6C6C202020EC
:1090D40020202020537469636B526F6C6C20202015
:1090E40020202020FFFF010A6400007D0000FF0310
:1090F4000102030405060708090A48656C6C6F2021
:10910400576F726C64000000000000000000000053
:10911400000000000000000000000000000000004B
:10912400000000000000000000000000000000003B
:10913400000000000000000000000000000000002B
:10914400000000000000000000000C016400FFFFAC
:10915400FFFF90D0030090D00300ECFF17B7D13885
:1091640030FB103A409696020A000000000000000E
:10917400006446000064010000009A0842656769C3
:109184006E6E657200004E6F726D616C00005370FC
:109194006F72740000FFFFFFFF000102020303036C
:1091A4000304040404040404040505050505050575
:1091B4000505050505050505050606060606060654
:1091C400060606060606060606060606060606063B
:1091D4000606060606060606060707070707070724
:1091E400070707070707070707070707070707070B
:1091F40007070707070707070707070707070707FB
:1092040007070707070707070707070707070707EA
:1092140007070707070707070708080808080808D3
:1092240008080808080808080808080808080808BA
:1092340008080808080808080808080808080808AA
:10924400080808080808080808080808080808089A
:10925400080808080808080808080808080808088A
:10926400080808080808080808080808080808087A
:10927400080808080808080808080808080808086A
:10928400080808080808080808080808080808085A
:0A9294000808080808080808080088
:00000001FF
/branches/V0.68d CRK HexaLotte/Hex-Files/Flight-Ctrl_MEGA644_MM3_V0_68d.hex
0,0 → 1,2483
:100000000C9411040C942E040C942E040C942E04C5
:100010000C942E040C942E040C942E040C942E0498
:100020000C942E040C94FF0D0C942E040C942E04AE
:100030000C94A0190C942E040C942E040C946519A5
:100040000C942E040C942E040C94280D0C9409434B
:100050000C9442090C942E040C9458060C942E0413
:100060000C94D40E0C942E040C94AD180C942E0405
:100070000A0A0D004E65757472616C004865616412
:10008000696E67486F6C64000A0D436F6E74726F1F
:100090006C3A20000A0D537570706F727420666F91
:1000A000722047505320617420317374205541529F
:1000B00054004F4B0A0D000A0D43616C6962726176
:1000C00074696E67206169722070726573737572EE
:1000D000652073656E736F722E2E000A0D43616C7E
:1000E0006962726174696E6720436F6D70617373CA
:1000F000000A0D537570706F727420666F72204322
:100100006F6D70617373204D6F64756C65204D4D1C
:1001100033000A0D414343206E6F742063616C69A4
:1001200062726174656421000A0D3D3D3D3D3D3DB7
:100130003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DEF
:100140003D3D3D3D3D3D3D3D000A0D466C696768C6
:1001500074436F6E74726F6C0A0D486172647761DC
:1001600072653A25642E25640A0D536F66747761B3
:1001700072653A5625642E2564256320002E005AA8
:100180005F52616E67653A202025346900595F52DD
:10019000616E67653A202025346900585F52616EB0
:1001A00067653A2020253469004D4D332052616E39
:1001B0006765005A5F4F66667365743A2020253381
:1001C0006900595F4F66667365743A20202533696C
:1001D00000585F4F66667365743A202025336900C6
:1001E0004D4D33204F666673657400416C743A2040
:1001F00025642E252E3364206D004C61743A202531
:10020000642E252E3364252E336420646567004CEC
:100210006F6E3A2025642E252E3364252E336420FC
:1002200064656700536174733A20256420466978D9
:100230003A203F3F00536174733A20256420466999
:10024000783A20334400536174733A202564204681
:1002500069783A20324400536174733A202564204F
:100260004669783A204E6F004E6F206461746120B9
:10027000617661696C61626C65210048693A253478
:1002800069202043663A253469200047733A2534B3
:1002900069202059613A253469200050693A253493
:1002A000692020526F3A25346920004578746572C0
:1002B0006E436F6E74726F6C20200052616E6765C2
:1002C0003A2533692D25336900506F736974696F5E
:1002D0006E3A2025336900536574706F696E74201F
:1002E0002025336900536572766F202000506F34EB
:1002F0003A2025336920506F383A20253369005061
:100300006F333A2025336920506F373A20253369FF
:1003100000506F323A2025336920506F363A20253D
:10032000336900506F313A2025336920506F353AD8
:1003300020253369004F6666436F757273653A20F6
:100340002535690048656164696E673A202020257B
:10035000356900436F757273653A2020202025357A
:100360006900436F6D70617373202020202020206E
:100370000052432D4C6576656C3A20253569005650
:100380006F6C746167653A2020253569004865699E
:100390006768742025346920282533692900526F45
:1003A0006C6C2020202534692028253369290050D1
:1003B0006974636820202534692028253369290061
:1003C000414343202D2053656E736F72005961774E
:1003D00020202025346920282533692900526F6C9C
:1003E0006C20202534692028253369290050697440
:1003F00063682025346920282533692900596177ED
:1004000020202025346920282533692900526F6C6B
:100410006C2020253469202825336929005069740F
:1004200063682025346920282533692900477972BB
:100430006F202D2053656E736F720050333A253450
:1004400069202050343A253469200050313A25344F
:1004500069202050323A253469200047733A253408
:1004600069202059613A253469200050693A2534C1
:10047000692020526F3A253469200043373A2534E9
:1004800069202043383A253469200043353A253421
:1004900069202043363A253469200043333A253415
:1004A00069202043343A253469200043313A253409
:1004B00069202043323A2534692000436F6D706112
:1004C00073733A20202025356900526F6C6C3A20F6
:1004D00020202020202535690050697463683A2067
:1004E0002020202025356900417474697475646585
:1004F0000048656967687420436F6E74726F6C00A2
:100500004E6F20004F6666736574202020203A25C8
:100510003569004169722050726573732E3A253532
:10052000690053657420506F696E743A20253569EF
:10053000004865696768743A2020202025356900E5
:1005400028632920486F6C676572204275737300B9
:1005500053657474696E673A202564200048573AE1
:100560005625642E25642053573A25642E2564258C
:1005700063002B204D696B726F4B6F707465722036
:100580002B005B25695D005B25695D000A0D5573D5
:10059000696E6720506172616D6574657220536584
:1005A00074202564000A0D496E69742E204545505B
:1005B000524F4D3A2047656E65726174696E6720CF
:1005C00044656661756C742D506172616D6574650A
:1005D000722E2E2E0000008F001E01AD013B02CABC
:1005E000025803E603740402058F051B06A70633B1
:1005F00007BE074808D2085B09E3096B0AF20A78CC
:100600000BFD0B810C040D860D070E870E060F8463
:100610000F00107B10F5106E11E5115B12CF124226
:1006200013B31323149214FE146A15D3153B16A1A9
:100630001605176717C81727188318DE1837198E7D
:1006400019E319361A871AD61A231B6E1BB61BFD1F
:100650001B411C831CC31C001D3C1D751DAB1DE0F4
:100660001D121E421E6F1E9A1EC31EE91E0D1F2E56
:100670001F4D1F691F841F9B1FB01FC31FD31FE186
:100680001FEC1FF51FFB1FFF1F00200001020304CA
:100690000405060708090A0B0B0C0D0E0F101111AB
:1006A000121314151516171818191A1B1B1C1D1DCB
:1006B0001E1F1F202121222323242425252627270E
:1006C000282829292A2A2B2B2C2C2D2D2D2E2E2F74
:1006D0002F303030313132323233333334343435F9
:1006E0003535363636373737373838383939393996
:1006F0003A3A3A3A3B3B3B3B3C3C3C3C3C3D3D3D43
:100700003D3E3E3E3E3E3F3F3F3F3F3F40404040FC
:1007100040404141414141414242424242424243C2
:10072000434343434343444444444444444445458D
:100730004545454545454546464646464646464660
:100740004747474747474747474747484848484834
:10075000484848484848494949494949494949490F
:10076000494949494A4A4A4A4A4A4A4A4A4A4A4AED
:100770004A4A4B4B4B4B4B4B4B4B4B4B4B4B4B4BCB
:100780004B4B4B4C4C4C4C4C4C4C4C4C4C4C4C4CAC
:100790004C4C4C4C4C4C4D4D4D4D4D4D4D4D4D4D8F
:1007A0004D4D4D4D4D4D4D4D4D4D4D4D4E4E4E4E75
:1007B0004E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E59
:1007C0004E4E4E4E4E4E4F4F4F4F4F4F4F4F4F4F3F
:1007D0004F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F29
:1007E0004F4F4F4F4F0A0D584D696E3A2534642CC8
:1007F00020584D61783A2534642C20594D696E3A61
:100800002534642C20594D61783A2534642C205AC3
:100810004D696E3A2534642C205A4D61783A25345E
:10082000640011241FBECFEFD0E1DEBFCDBF14E0C6
:10083000A0E0B1E0E8E5F7E902C005900D92A63B23
:10084000B107D9F719E0A6EBB4E001C01D92AD30B5
:10085000B107E1F70E9430040C94AB4B0C940000FC
:10086000CF93DF93F89414B815B8189B02C08BE0AF
:1008700001C08AE08093000184B1836084B9209133
:1008800000012A3011F4289A01C02898299884B7C9
:10089000877F84BF809160008861809360001092A0
:1008A000600080ED97E09093D4048093D30410927D
:1008B00039081092380810926A0510926905109252
:1008C00068051092670510926605109265052A303A
:1008D00011F4289801C0289A0E94FD170E94DE0C8E
:1008E0000E94DC0D0E94FE050E9431190E94B70E85
:1008F0000E9456180E94B546789410923A0784E4F4
:1009000080933B0787E080933C0720910001822F72
:100910006AE00E94DC4A492F50E0822F0E94DC4AA4
:1009200090E024E630E03F932F9324E430E03F93BF
:100930002F931F921F925F934F939F938F9389E4FE
:1009400091E09F938F931F920E943A0A88E291E070
:100950009F938F931F920E943A0A299A0E948A3F7E
:1009600084E00E948A3D2DB73EB7205F3F4F0FB60F
:10097000F8943EBF0FBE2DBF8050944050F082E1EE
:1009800091E09F938F931F920E943A0A0F900F90CD
:100990000F9084EF91E00E94130DEC01CE010E94B4
:1009A0001C0D8823D9F381EF90E09F938F931F92C2
:1009B0000E943A0AE091B608F0E0EE0FFF1FEC5CEF
:1009C000F74F808191810F900F900F9085369105A0
:1009D000C4F0E091B708F0E0EE0FFF1FEC5CF74FBA
:1009E000808191818536910564F08BED90E09F9335
:1009F0008F931F920E943A0A0E9474450F900F90A5
:100A00000F908091BC0880FF20C087EB90E09F93FF
:100A10008F931F920E943A0A88EE93E00E94130D72
:100A2000EC010E9458110F900F900F90CE010E9480
:100A30001C0D8823D9F382EB90E09F938F931F9234
:100A40000E943A0A0F900F900F9084E990E09F93D4
:100A50008F931F920E943A0A0E94FA220F900F90E1
:100A60000F90809100018A3011F4289801C0289AD3
:100A700080ED97E09093D4048093D30485E5809330
:100A8000440788E890E09F938F931F920E943A0A50
:100A90008091BC080F900F900F9082FF03C08CE7ED
:100AA00090E002C084E790E09F938F931F920E9492
:100AB0003A0A0F900F900F9080E790E09F938F93EA
:100AC0001F920E943A0A0E94981188E893E190933D
:100AD0006D0380936C030F900F900F908091D00462
:100AE0008823E1F31092D0040E944C240E94CF226C
:100AF000209100012A3011F4289801C0289A809191
:100B00000301882321F081508093030112C01092C9
:100B1000C2041092C30410924E07109272051092F4
:100B2000710510927405109273051092760510925B
:100B3000750580916C0390916D03892B01F585E01B
:100B400090E090936D0380936C030E947D188091D8
:100B50000403909105038F5F9F4FF9F48091530533
:100B60008823D9F080E197E29093D4048093D30452
:100B700080E890E090930503809304030EC0809179
:100B80006C0390916D03019790936D0380936C03B8
:100B90002A3011F4289801C0289A8091D004882323
:100BA00011F40E948F070E943708CE010E941C0D8D
:100BB000882309F493CF2091080330910903809191
:100BC000CC0890E0281739079CF480910403909199
:100BD00005038F5F9F4F61F480E797E19093D40402
:100BE0008093D30480E093E0909305038093040303
:100BF00084E690E00E94130DEC0170CF9FB7F8944B
:100C00008091C1008F778093C1008091C1008F7B5C
:100C10008093C100589A5098599A519A1092C500E1
:100C20008AE28093C4008091C00082608093C000FB
:100C300088E18093C1008091C2008F778093C200C9
:100C40008091C2008F7B8093C2008091C2008F7D13
:100C50008093C2008091C2008F7E8093C2008091F9
:100C6000C200877F8093C2008091C1008B7F8093F8
:100C7000C1008091C20084608093C2008091C20054
:100C800082608093C20002C08091C6008091C00043
:100C900087FDFACF8091C10080688093C100809168
:100CA000C10080648093C1001092BA049FBF089570
:100CB0001F920F920FB60F9211248F939F93EF9371
:100CC000FF93809101018823E1F48091CC049091FD
:100CD000CD0401969093CD048093CC04FC01EF5693
:100CE000F84FE081ED3019F08639910539F4109212
:100CF000CD041092CC0481E080930101E093C60002
:100D000004C01092CD041092CC04FF91EF919F91FA
:100D10008F910F900FBE0F901F901895DC0120E06F
:100D200030E040E050E008C0FA01EF56F84F808113
:100D3000280F311D4F5F5F4F4A175B07A9F73F70C0
:100D4000C90136E0969587953A95E1F7835CFD01F8
:100D5000EF56F84F808311962F73235CFD01EF56F9
:100D6000F84F2083AE56B84F8DE08C93109201015E
:100D7000809191078093C60008951F93CF93DF93CE
:100D8000EA01722F93E29093910760939207809308
:100D90009307A3E0B0E060E04FC0FE01E60FF11D55
:100DA00090816F5F715019F410E040E00FC0FE01B8
:100DB000E60FF11D40816F5F715011F410E006C025
:100DC000FE01E60FF11D10816F5F7150892F86952E
:100DD0008695835CFD01EF56F84F808350E09A01C1
:100DE00084E0369527958A95E1F7892F90E0837006
:100DF0009070F4E0880F991FFA95E1F7282B235C97
:100E0000FD01EE56F84F2083812F829586958695B9
:100E100083704F705070440F551F440F551F842B23
:100E2000835CFD01ED56F84F80831F73135CFD0159
:100E3000EC56F84F10831496772309F0AECFCD010E
:100E40000E948E06DF91CF911F9108951F93CF933B
:100E5000DF93EC0170E0A22FB0E0129748C0E42FBE
:100E6000F0E0EC55F94F30814F5FE42FF0E0EC55A6
:100E7000F94F50814F5FE42FF0E0EC55F94F1081AE
:100E80004F5FE42FF0E0EC55F94F20814F5F842F46
:100E900090E0A817B90774F15D53FE01E70FF11D4B
:100EA000852F82958F703D53330F330F382B30834E
:100EB000613001F1912F9D537F5FFE01E70FF11D1E
:100EC00071505295507F892F86958695582B508367
:100ED00063506F3F79F07E5FFE01E70FF11D929541
:100EE000990F990F907C2D53922B90837F5F6623EF
:100EF00009F0B5CFDF91CF911F9108951F93182F5F
:100F00008A3019F48DE00E947E078091C00085FF31
:100F1000FCCF1093C60080E090E01F91089580916F
:100F20000101882309F4A2C08091B604882371F0DE
:100F300080910101882351F06091C6042BE044E4C4
:100F400057E087E40E94BD061092B6048091C70462
:100F50009091C8040E941C0D882321F48091B8044C
:100F60008823B1F080910101882391F06091C6043B
:100F700022E44FE457E084E40E94BD061092B804D6
:100F800084EF91E00E94130D9093C8048093C704EE
:100F9000609102016F3F89F0462F50E094E0440FCA
:100FA000551F9A95E1F74C5F5E4F605D20E181E44B
:100FB0000E94BD068FEF809302019091270899232C
:100FC000A1F080910101882381F083E28093910751
:100FD000909392078DE080939307109201011092F5
:100FE0002708809191078093C6008091B7048823D9
:100FF00059F180910101882339F10E94A1111092C9
:10100000B7043091BC04932F9F5F9093BC0494303D
:1010100021F08091BD04882359F02EE144E358E08B
:1010200060E084E30E94BD068FEF8093BC040CC097
:1010300044E1949FA0011124465E5C4F24E160E0EE
:10104000832F8F5C0E94BD068091B904882371F0C4
:1010500080910101882351F06091C6042AE04AE39F
:1010600057E086E50E94BD061092B90408951F93CB
:10107000CF93DF93CDB7DEB722970FB6F894DEBFDC
:101080000FBECDBF8091BA04882309F4F1C08FEF61
:10109000809303018091A6068B3609F479C08C36C3
:1010A00088F48336D1F1843630F48136C1F082364B
:1010B00009F0DCC020C0873609F47BC0883609F00F
:1010C000D5C042C0813709F478C0813708F49BC08D
:1010D000843709F454C0863709F0C8C066C020912F
:1010E000BB0443E062E0CE0101960E94260789819D
:1010F00080930201BBC02091BB0443E06BE084E419
:1011000097E00E9426078091F60490914607892B6C
:101110008093F60480914D0745C02091BB0443E0C5
:101120006BE084E497E00E9426078091F60490919A
:101130004607892B8093F60480914D0780932708FA
:1011400081E08093B80492C02091BB0443E062E048
:10115000CE0101960E9426078091F6049981892B81
:101160008093F6048A818F3F21F481E08093BD044F
:1011700002C01092BD0481E08093B70477C0209133
:10118000BB0443E064E08EEB94E00E9426076EC04F
:101190002091BB0443E064E082EC94E00E942607C7
:1011A0008091C5048093270861C081E08093B904D1
:1011B0005DC081E08093B60459C02091BB0443E038
:1011C00062E0CE0101960E94260789818F3F71F06F
:1011D000863010F085E0898389810E94B83D609156
:1011E000C604898126E444EB58E009C01091C60486
:1011F00082E00E94793D26E444EB58E0612F855B54
:101200000E94BD0633C02091BB0443E066E484EB3A
:1012100098E00E9426078091A6068B560E94A33D67
:101220006091DF0870E080E090E024EC39E040E07D
:1012300050E00E94BD4A60937203709373038093E1
:101240007403909375036091E00870E080E090E093
:101250000E94BD4A6093760370937703809378036E
:10126000909379030E947B3F0E9437241092BA0426
:1012700022960FB6F894DEBF0FBECDBFDF91CF919F
:101280001F9108951F920F920FB60F9211241F9372
:101290002F933F934F935F936F937F938F939F937E
:1012A000AF93BF93CF93DF93EF93FF931091C6005B
:1012B000812F0E94C0418091BA04882309F06DC03B
:1012C0006091C904662371F4133279F41093A40673
:1012D00081E08093C90483E290E09093CB048093F3
:1012E000CA045BC0663908F054C0A62FB0E0209154
:1012F000CA043091CB041D3069F0AC55B94F1C9332
:101300006F5F6093C904210F311D3093CB0420938C
:10131000CA0443C0FD01EE55F94F9081ED01CD5552
:10132000D94F8881A901491B5109481B51095F7098
:101330005093CB044093CA042081CA0136E09695AD
:1013400087953A95E1F7835C8217F1F49881842FB1
:101350008F73835C8917C1F481E08093BA04609332
:10136000BB04AC55B94F1C938091A606823571F42D
:1013700088E190E02CE00FB6F894A8958093600087
:101380000FBE2093600002C01092BA041092C904EC
:1013900004C01092C9041092BA04FF91EF91DF913A
:1013A000CF91BF91AF919F918F917F916F915F91FD
:1013B0004F913F912F911F910F900FBE0F901F9053
:1013C0001895982F80912808813069F48091F50450
:1013D000E82FF0E0E65EFC4F90838F5F8093F5048A
:1013E00021E030E005C0892F0E947E07282F30E0E1
:1013F000C90108951F93182F04C080E30E94E109DA
:1014000011501116D4F31F9108951F93182F04C083
:1014100080E20E94E10911501116D4F31F91089542
:101420000F931F93CF93DF938C01EB0108C0F8015A
:101430000F5F1F4FE4918E2F0E94E10921972097A3
:10144000B1F7DF91CF911F910F9108950F931F93E3
:10145000CF93DF938C01EB0106C0F80181918F01DE
:101460000E94E10921972097C1F7DF91CF911F9149
:101470000F9108952F923F924F925F926F927F92B9
:101480008F929F92AF92BF92CF92DF92EF92FF9294
:101490000F931F93CF93DF93CDB7DEB7E5970FB6CA
:1014A000F894DEBF0FBECDBF2B968FAD2B978093E8
:1014B0002808CE01835B9F4F9B838A832D964EAC79
:1014C0005FAC2D971EA61FA618AA19AA9E01225D21
:1014D0003F4F3DAB2CAB820102C00F5F1F4FF801A5
:1014E000F490FF2019F0F5E2FF16B9F7B80164197E
:1014F000750919F0C2010E94100AFF2009F445C2C3
:1015000028010894411C511C1982AA81BB813324F3
:101510001BAA2FEF2AABF2010894411C511CB49076
:10152000632D70E06170707035E7B31621F08B2D7C
:1015300080628837C9F46115710559F02D913D918C
:101540004D915C9113972EA73FA748AB59AB1496CA
:101550000BC08D919C9111979C0140E050E02EA70B
:101560003FA748AB59AB129630E2B31621F48981FC
:10157000882389F61CC043E2B41611F458E055C024
:101580008AE2B81621F09DE2B91671F408C0FD0197
:101590001296E081EBABE7FFBECFE195EBABE0E16C
:1015A0003E2AFFED3F22B7CF2BE2B21611F4B982EB
:1015B000B2CF3EE2B31699F5F2010894411C511CDA
:1015C00084918A3221F0B82E20E030E01DC0FD0168
:1015D00012964081518157FF02C04FEF5FEF4AAB37
:1015E0009ACFC90153E0880F991F5A95E1F7220F4E
:1015F000331F280F391F2B0D311D20533040F201AE
:101600000894411C511CB4908B2D80538A3048F3B0
:10161000A90137FF02C04FEF5FEF4AAB85CF40E330
:10162000B41629F434FC77CF50E2352A74CF8B2DD1
:1016300081538930D8F420E030E0C90103E0880FFD
:10164000991F0A95E1F7220F331F280F391F2B0D21
:10165000311D20533040F2010894411C511CB490BC
:101660008B2D80538A3048F32BAB5ECF88E6B816BB
:1016700019F494E0392A4FCFECE6BE1619F4F1E0E4
:101680003F2A49CFBB83AA8323E6B21639F41296C8
:10169000BB83AA8312978C918E8322C134E4B31644
:1016A00039F044E6B41631F059E6B516A9F502C092
:1016B00081E0382A30FE08C01496BB83AA835E916D
:1016C0004E913E912E910AC01296BB83AA839E91A1
:1016D0008E919C01442737FD4095542F2EA73FA79C
:1016E00048AB59AB8EA59FA5A8A9B9A9BB238CF47B
:1016F0002EA53FA548A959A950954095309521950B
:101700003F4F4F4F5F4F2EA73FA748AB59AB8DE2DE
:101710008983BAE02B2E80C03FE4B31621F04FE658
:10172000B41631F402C051E0352AA8E02A2E73C065
:1017300080E7B81689F41296BB83AA839E918E9196
:101740009C0140E050E02EA73FA748AB59AB30E4E6
:10175000332AF8E7BF2E5DC043E7B416D1F51296E1
:10176000BB83AA83DE90CE90C114D10489F488E2B1
:101770008E838EE68F8385E788878CE689878A87C4
:1017800089E28B871C86E6E0CE2ED12CCC0EDD1EA6
:101790005AA957FD14C0452F552747FD509560E0C5
:1017A00070E0C6010E949548009711F4FAA80EC097
:1017B000F82EFC188AA98F154CF4F82E07C0F601F4
:1017C00001900020E9F73197FE2EFC18198240E0C5
:1017D00090C095E5B91621F0A5E7BA1631F402C01C
:1017E000B1E03B2A7AE0272E16C0E8E5BE1621F0CC
:1017F000F8E7BF1609F070C033FE0BC02EA53FA559
:1018000048A959A9211531054105510511F030E4C8
:10181000332A60E1262E19824AA947FD02C05FEDF6
:1018200035228EA59FA5A8A9B9A90097A105B10544
:1018300049F49AA9992331F45EE2C52ED12CCC0E3D
:10184000DD1E46C06EA47FA488A899A84EE2C42ECF
:10185000D12CCC0EDD1EE22CFF2400E010E06EA5A2
:101860007FA588A999A9A80197010E940F4B6A300A
:1018700020F430E3A32EA60E08C027E5A22EA60E64
:10188000A8E5BA1611F4BFEDAB22F601A2926F01E2
:101890006EA57FA588A999A9A80197010E940F4B61
:1018A0002EA73FA748AB59AB6E147F048006910664
:1018B00018F039014A01D3CFF8E02F1649F433FE6E
:1018C00007C020E3A21621F080E3D6018E936D01BC
:1018D000FCA8FC184AA90DC0BB2009F456C0BE8262
:1018E000198296E0C92ED12CCC0EDD1E40E0FF24DB
:1018F000F394E42EEF18E7FCEE248981882319F095
:101900008F2D8F5F06C036FC02C08F2D02C08F2D39
:101910008E5FA82EAE0C032D10E080E3882E912C54
:10192000802291228114910421F48BA98A190E94AA
:10193000050A8981882329F061E070E0CE010196D3
:1019400009C006FF09C080E38C83BD8262E070E0BD
:10195000CE0104960E94260AB0E28B16910421F46F
:101960008BA98A190E94FA098E2D0E94FA096F2DFF
:10197000772767FD7095C6010E94260A04FFABCD4C
:101980008BA98A190E94050AA6CDE5960FB6F89490
:10199000DEBF0FBECDBFDF91CF911F910F91FF90A2
:1019A000EF90DF90CF90BF90AF909F908F907F90FF
:1019B0006F905F904F903F902F9008952FB7F894BD
:1019C000909100019A3019F4529A5A9802C03F9AA5
:1019D000479884B1886184B985B1877E85B99A308A
:1019E00019F4529A5A9802C03F9A479884B58F7A50
:1019F00084BD84B5836A84BD85B5877385BD85B58F
:101A0000887F826085BD17BC88E788BD16BC809141
:101A10006E00897F80936E0080916E00816080935C
:101A20006E002FBF08952091CE043091CF042F5F18
:101A30003F4F820F931F08952091CE043091CF0421
:101A4000821B930B892F99278695807490E00895C7
:101A50001F920F920FB60F9211242F933F934F9323
:101A60005F936F937F938F939F93AF93BF93EF9306
:101A7000FF938091D50481508093D5048F3FB9F4B2
:101A800089E08093D504809106038F5F81708093F5
:101A90000603882319F481E08093D0048091CE045A
:101AA0009091CF0401969093CF048093CE048091BF
:101AB000D3049091D404892BB1F08091D3049091F8
:101AC000D40401979093D4048093D3042091D30439
:101AD0003091D404809104039091050382239323D1
:101AE000892BE1F406C08FEF9FEF9093050380935D
:101AF0000403809100018A3039F404C05A9A05C069
:101B0000479A03C05A9801C047988091BC0883FD4A
:101B100002C085FF08C00E94394505C080910001C0
:101B20008A3071F7EBCFFF91EF91BF91AF919F9109
:101B30008F917F916F915F914F913F912F910F9076
:101B40000FBE0F901F901895AC012091CE043091DC
:101B5000CF042F5F3F4F05C080917A00886C80933F
:101B60007A008091CE049091CF04B901681B790B63
:101B7000CB01840F951F80709078892F99278695C7
:101B8000882351F30895AC012091CE043091CF0405
:101B90002F5F3F4F8091CE049091CF04B901681B15
:101BA000790BCB01840F951F80709078892F99272E
:101BB0008695882379F308959FB7F894579A5F9A8A
:101BC000E0EBF0E080818F78808380818368808380
:101BD000E1EBF0E080818673808380818660808382
:101BE0008AE08093B3001092B200E0E7F0E08081D9
:101BF0008A7F80838081826080839FBF08951F9247
:101C00000F920FB60F921124FF920F931F932F93F1
:101C10003F934F935F936F937F938F939F93AF9374
:101C2000BF93EF93FF938091070381508093070345
:101C30008F3F09F082C08091B0008093B000809106
:101C4000B00080688093B0008091910390E0909301
:101C5000D7048093D6048091E908F090D60880FFDD
:101C600023C00091D6041091D70460911D05709196
:101C70001E0580911F059091200520E830E040E08E
:101C800050E00E94314BCA01B9012F2D30E040E0F5
:101C900050E00E94BD4A20E032E040E050E00E9467
:101CA000314B020F131F22C00091D6041091D704AC
:101CB00060911D0570911E0580911F059091200572
:101CC00020E830E040E050E00E94314BCA01B90109
:101CD0002F2D30E040E050E00E94BD4A20E032E08D
:101CE00040E050E00E94314B021B130B1093D704CD
:101CF0000093D6042091D6043091D7048091D70860
:101D000090E02817390754F02091D6043091D70479
:101D10008091D80890E08217930724F49093D70419
:101D20008093D6048091D6049091D7048093B30019
:101D30008091D9088093070306C08091B0008F730B
:101D40008093B0005F98FF91EF91BF91AF919F9109
:101D50008F917F916F915F914F913F912F911F9143
:101D60000F91FF900F900FBE0F901F9018959FB787
:101D7000F89411B812B88FEF80937E00ECE7F0E092
:101D800080818F7180838081807E8083AAE7B0E02C
:101D900087E28C93EBE7F0E08081887F80838C91F1
:101DA000886C8C939FBF08951F920F920FB60F926D
:101DB0001124EF92FF920F931F932F933F934F9312
:101DC0005F936F937F938F939F93AF93BF93CF93C3
:101DD000DF93EF93FF9380917A00877380937A006B
:101DE0008091F3048F5F8093F3048150853009F470
:101DF0007EC0863090F4823009F440C0833030F4E5
:101E00008823F1F0813009F027C22FC0833009F414
:101E100041C0843009F020C25AC0883009F4B2C0F1
:101E2000893038F4863009F473C0873009F014C261
:101E30008CC0893009F4C3C08A3009F00DC29EC13C
:101E400080917800909179009093F2048093F1044E
:101E500081E08093F4048091E8049091E904019674
:101E60009093E9048093E804FBC1809178009091FD
:101E700079009093F0048093EF0482C08091780001
:101E8000909179009093EE048093ED0484E0809328
:101E9000F404E6C140910803509109038091780051
:101EA000909179009A01220F331F240F351F63E0B0
:101EB00070E00E94E84A260F371F36952795369521
:101EC0002795309309032093080386E0E0CF8091A3
:101ED0001705909118052091780030917900821BA8
:101EE000930B9093E1048093E00487E0D0CF80913E
:101EF0007800909179002091150530911605821B8C
:101F0000930B9093E3048093E2041092F404A8C12D
:101F1000809100012091F1043091F2048A3049F45B
:101F20008091780090917900820F931F9695879504
:101F300006C08091780090917900820F931F909352
:101F4000DF048093DE0481E0A2CF80910001209124
:101F5000EF043091F0048A3049F480917800909138
:101F60007900820F931F9695879506C0809178001F
:101F700090917900820F931F9093DD048093DC048D
:101F800082E085CF809100012091ED043091EE0434
:101F90008A3049F48091780090917900820F931FE4
:101FA0009695879506C08091780090917900820F70
:101FB000931F9093DB048093DA0485E068CF6091EF
:101FC000780070917900E0901905F0901A05009161
:101FD0001B0510911C05882777FD8095982F0E947E
:101FE000A249A80197010E94A2480E946F497093DC
:101FF000E5046093E404E091E404F091E504809149
:10200000E2049091E304C091E004D091E10497FFD1
:1020100003C0909581959F4F64E070E00E94FC4A58
:102020009B01CE01D7FF03C0909581959F4F64E03F
:1020300070E00E94FC4A260F371FE20FF31FF09357
:10204000E504E093E4048091E4049091E5040297B0
:1020500004F16091190570911A0580911B0590910A
:102060001C0520E030E048E454E40E94DD49882368
:102070000CF03CC06091190570911A0580911B0508
:1020800090911C052AE037ED43EA5CE30E94A348E7
:1020900025C08091E4049091E5048F5F9F4F34F553
:1020A0006091190570911A0580911B0590911C058E
:1020B00020E030E046E154E40E94E1491816B4F40F
:1020C0006091190570911A0580911B0590911C056E
:1020D0002AE037ED43EA5CE30E94A24860931905C9
:1020E00070931A0580931B0590931C0580917800CE
:1020F000909179009093D9048093D80420914D0554
:1021000030914E0540914F05509150058091E40467
:102110009091E504AA2797FDA095BA2F820F931FEF
:10212000A41FB51F80934D0590934E05A0934F05B6
:10213000B0935005E0904D05F0904E0500914F058D
:102140001091500560914D0570914E0580914F059D
:102150009091500520E034E040E050E00E94314B87
:10216000E21AF30A040B150BE0924D05F0924E05AE
:1021700000934F051093500583E089CE609178005D
:10218000709179008091EA049091EB04680F791FB7
:102190007093EB046093EA048091EC048F5F80936A
:1021A000EC04853008F458C0809178009091790053
:1021B00090930F0380930E038091290890912A0831
:1021C000861B970B2091770530917805821B930B26
:1021D0009093E7048093E604E0900A03F0900B03E9
:1021E00000910C0310910D03882777FD8095982F9F
:1021F000A8019701220F331F441F551F2E0D3F1DAD
:10220000401F511F620F731F841F951F24E030E091
:1022100040E050E00E94314B20930A0330930B03BF
:1022200040930C0350930D032091290830912A0804
:1022300080910A0390910B03A0910C03B0910D03C0
:10224000281B390B30937805209377051092EC0406
:102250001092EB041092EA041092F4041092F3042A
:1022600080917C00807E9091F404892B80937C0087
:102270008091F304882329F080917A00886C809300
:102280007A00FF91EF91DF91CF91BF91AF919F9134
:102290008F917F916F915F914F913F912F911F91FE
:1022A0000F91FF90EF900F900FBE0F901F90189519
:1022B0001F93CF93DF9383E00E94793D182F8531E0
:1022C00008F01A5017BD84E690E00E94A40D80919A
:1022D0000E0390910F0382559340C0F410E016C096
:1022E00017BD82E390E00E94A40DDF93CF931F926D
:1022F0000E943A0A80910E0390910F030F900F9065
:102300000F908458934030F01F5F02C0CDE7D1E0BA
:102310001A3F30F3612F83E00E94823D10932B0817
:102320008CE291E00E94A40DDF91CF911F9108955E
:10233000EAE1F3E080E2819383E0EA36F807D1F73F
:1023400008959F92AF92BF92CF92DF92EF92FF9249
:102350000F931F93CF93DF938091F604282F30E0E3
:10236000C90181709070682F8823A9F08091F704CB
:10237000882311F0815002C080916A038093F70492
:10238000EAE1F3E080E2819383E0EA36F807D1F7EF
:102390008FEF8093BC04A9014270507021FF17C0D9
:1023A0009091F70480916A03981719F41092F7043A
:1023B00003C09F5F9093F704EAE1F3E080E281932A
:1023C00093E0EA36F907D1F78FEF8093BC046623D8
:1023D00021F0452B11F01092F7048091F704282F7B
:1023E00030E08A3040F481E18093F5043F932F93ED
:1023F00087E895E007C080E18093F5043F932F9331
:1024000082E895E09F938F9381E08F930E943A0A30
:102410000F900F900F900F900F901091F7041730BE
:1024200009F40CC3183098F4133009F427C11430A0
:1024300038F4113009F469C0123008F0C9C01DC069
:10244000153009F4F3C1163008F0AAC26BC11B3075
:1024500009F4E1C31C3038F4193009F44AC31A30C6
:1024600008F09BC310C31D3009F43DC51D3008F4AE
:1024700024C41E3009F0AEC56FC51092F50482E782
:1024800095E09F938F9311E01F930E943A0A84E195
:102490008093F50420910001822F6AE00E94DC4ABB
:1024A000492F50E0822F0E94DC4A90E024E630E081
:1024B0003F932F9324E430E03F932F931F921F927A
:1024C0005F934F939F938F938DE595E09F938F93A9
:1024D0001F930E943A0A88E28093F5040E947B3F92
:1024E00090E09F938F9380E595E09F938F931F9348
:1024F0000E943A0A8CE38093F50480E495E09F9370
:102500008F931F930E943A0AD4C38091BC0880FF26
:1025100047C01092F50480917705909178059F93BC
:102520008F9381E395E09F938F931F930E943A0AC4
:1025300084E18093F5048091790590917A059F93C9
:102540008F9382E295E09F938F931F930E943A0AA4
:1025500088E28093F50480910E0390910F039F937E
:102560008F9383E195E09F938F931F930E943A0A84
:102570008CE38093F50480912B0890E09F938F93D8
:1025800084E095E09F938F931F930E943A0A8DB742
:102590009EB744960FB6F8949EBF0FBE8DBF1FC561
:1025A00084E18093F50480E095E09F938F931F93DF
:1025B0000E943A0A88E28093F50481EF94E09F93A9
:1025C0008F931F930E943A0A8DB79EB70696E2CF6B
:1025D0001092F50488EE94E09F938F9311E01F937F
:1025E0000E943A0A84E18093F50460911D05709180
:1025F0001E0580911F059091200520E034E040E009
:1026000050E00E94314B5F934F933F932F9389ED9E
:1026100094E09F938F931F930E943A0A88E28093DD
:10262000F50460912505709126058091270590910C
:10263000280520E034E040E050E00E94314B5F93F9
:102640004F933F932F938AEC94E09F938F931F9324
:102650000E943A0A8CE38093F50480916E03909176
:102660006F039F938F938BEB94E09F938F931F93B4
:102670000E943A0A8DB79EB746968CCF1092F50409
:1026800080913808909139082091360830913708A8
:102690009F938F933F932F938BEA94E09F938F9315
:1026A00011E01F930E943A0A84E18093F50480911F
:1026B0003C0890913D0820913A0830913B089F9347
:1026C0008F933F932F938BE994E09F938F931F9366
:1026D0000E943A0A88E28093F50480914008909124
:1026E000410820913E0830913F089F938F933F937C
:1026F0002F938BE894E09F938F931F930E943A0A45
:102700008CE38093F50480914408909145082091D2
:102710004208309143089F938F933F932F938BE709
:1027200094E07BC01092F504E091B508F0E0EE0F64
:10273000FF1FEC5CF74F20813181E091B408F0E09D
:10274000EE0FFF1FEC5CF74F808191813F932F9339
:102750009F938F938BE694E09F938F9311E01F9349
:102760000E943A0A84E18093F504E091B708F0E012
:10277000EE0FFF1FEC5CF74F20813181E091B6082E
:10278000F0E0EE0FFF1FEC5CF74F808191813F93EB
:102790002F939F938F938BE594E09F938F931F9339
:1027A0000E943A0A88E28093F504E091B908F0E0CB
:1027B000EE0FFF1FEC5CF74F20813181E091B808EC
:1027C000F0E0EE0FFF1FEC5CF74F808191813F93AB
:1027D0002F939F938F938BE494E09F938F931F93FA
:1027E0000E943A0A8CE38093F504E091BB08F0E084
:1027F000EE0FFF1FEC5CF74F20813181E091BA08AA
:10280000F0E0EE0FFF1FEC5CF74F808191813F936A
:102810002F939F938F938BE394E09F938F931F93BA
:102820000E943A0A8DB79EB74C96B4CE1092F5042A
:102830008DE294E09F938F9311E01F930E943A0AD8
:102840000F900F900F90809100018A3009F04AC0DC
:1028500084E18093F50440910B0550910C05809123
:10286000DA049091DB0420910B0530910C05821B5A
:10287000930B5F934F939F938F938DE194E09F937E
:102880008F931F930E943A0A88E28093F504409147
:102890000D0550910E058091DC049091DD0420918E
:1028A0000D0530910E05821B930B5F934F939F9301
:1028B0008F938DE094E09F938F931F930E943A0A29
:1028C0008CE38093F50480910F0590911005209181
:1028D0008608309187089F938F933F932F938DEFB6
:1028E00093E055C084E18093F50480910B059091AD
:1028F0000C0562E070E00E94FC4A8091DA0490913D
:10290000DB0420910B0530910C05821B930B7F9308
:102910006F939F938F938DEE93E09F938F931F936D
:102920000E943A0A88E28093F50480910D05909107
:102930000E0562E070E00E94FC4A8091DC049091F8
:10294000DD0420910D0530910E05821B930B7F93C2
:102950006F939F938F938DED93E09F938F931F932E
:102960000E943A0A8CE38093F50480910F059091C0
:10297000100562E070E00E94FC4A80918608909108
:1029800087087F936F939F938F938DEC93E09F9332
:102990008F931F930E943A0A8DB79EB74596FACD42
:1029A0001092F50480EC93E09F938F9311E01F93B6
:1029B0000E943A0A84E18093F50480911505909174
:1029C00016052091E2043091E3049F938F933F9387
:1029D0002F938FEA93E09F938F931F930E943A0A5D
:1029E00088E28093F5048091170590911805209155
:1029F000E0043091E1049F938F933F932F938EE9EE
:102A000093E09F938F931F930E943A0A8CE38093E5
:102A1000F5046091190570911A0580911B0590913C
:102A20001C050E946F4920917B0830917C087F93A0
:102A30006F933F932F938DE893E036C184E18093A9
:102A4000F50480910803909109039F938F938FE77A
:102A500093E09F938F9311E01F930E943A0A88E2BC
:102A60008093F50480910305909104059F938F93C3
:102A700081E793E09F938F931F930E943A0A8DB74B
:102A80009EB70A9687CD1092F50482E693E09F9355
:102A90008F9311E01F930E943A0A84E18093F5041A
:102AA00080917003909171039F938F9383E593E0DE
:102AB0009F938F931F930E943A0A88E28093F504B4
:102AC00080916E0390916F039F938F9384E493E0C2
:102AD0009F938F931F930E943A0A8CE38093F5048F
:102AE00080915105909152059F938F9385E393E0D8
:102AF00068C21092F50480915D0590915E05209169
:102B00005505309156059F938F933F932F9383E202
:102B100093E09F938F9311E01F930E943A0A84E100
:102B20008093F50480915F05909160052091570591
:102B3000309158059F938F933F932F9381E193E0BA
:102B40009F938F931F930E943A0A88E28093F50423
:102B500080916105909162052091590530915A0547
:102B60009F938F933F932F938FEF92E09F938F9339
:102B70001F930E943A0A8CE38093F50480916305C9
:102B80009091640520915B0530915C059F938F9334
:102B90003F932F938DEE92E040CE1092F50485EE98
:102BA00092E09F938F9311E01F930E943A0A84E171
:102BB0008093F5048091910390E09F938F9387ED2C
:102BC00092E09F938F931F930E943A0A88E280932A
:102BD000F5048091D6049091D7049F938F9389EC4C
:102BE00092E09F938F931F930E943A0A8CE3809305
:102BF000F5042091D80830E08091D70890E03F9309
:102C00002F939F938F938BEB92E09F938F931F93C0
:102C10000E943A0ABCCC1092F5048BEA92E09F9392
:102C20008F9311E01F930E943A0A84E18093F50488
:102C300020914807332727FD309580914707992732
:102C400087FD90953F932F939F938F938BE992E00D
:102C50009F938F931F930E943A0A88E28093F50412
:102C600020914907332727FD309580914A0790E04E
:102C70003F932F939F938F938BE892E09F938F9333
:102C80001F930E943A0A8CE38093F50420914E072B
:102C900030E080914B07992787FD90953F932F93C4
:102CA0009F938F938BE792E09F938F931F930E9444
:102CB0003A0A8DB79EB748966DCC809172068823EC
:102CC00071F41092F50488E692E09F938F9381E06F
:102CD0008F930E943A0A0F900F900F9080C120911D
:102CE0007406223071F02330B1F0809173062223F4
:102CF000E1F41092F50490E09F938F9387E592E0C2
:102D00001BC01092F5048091730690E09F938F93FF
:102D100086E492E011C01092F5048091730690E071
:102D20009F938F9385E392E007C01092F50490E0A3
:102D30009F938F9384E292E09F938F9381E08F9390
:102D40000E943A0A0F900F900F900F900F90E09012
:102D50007506F09076060091770610917806C80106
:102D6000B70120E836E948E950E00E94314B5901AB
:102D70006A01C801B70120E836E948E950E00E943D
:102D8000314B7B018C0120E137E240E050E00E94B2
:102D9000314BE90137FF03C0D095C195DF4FC80122
:102DA000B70120E137E240E050E00E94314B2AE0D9
:102DB00030E040E050E00E94314BB90137FF03C0E2
:102DC000709561957F4F84E18093F5047F936F93B5
:102DD000DF93CF93BF92AF928FE092E09F938F9358
:102DE000992493949F920E943A0AE0907906F09079
:102DF0007A0600917B0610917C06C801B70120E895
:102E000036E948E950E00E94314B59016A01C80196
:102E1000B70120E836E948E950E00E94314B7B01D8
:102E20008C0120E137E240E050E00E94314BE901A3
:102E300037FF03C0D095C195DF4FC801B70120E12E
:102E400037E240E050E00E94314B2AE030E040E0C1
:102E500050E00E94314BB90137FF03C07095619576
:102E60007F4F88E28093F5047F936F93DF93CF9336
:102E7000BF92AF928AEF91E09F938F939F920E94AF
:102E80003A0AE0907D06F0907E0600917F06109150
:102E90008006C801B70128EE33E040E050E00E9410
:102EA000314B59016A01C801B70128EE33E040E017
:102EB00050E00E94314B9B0177FF03C03095219574
:102EC0003F4F8CE38093F5043F932F93BF92AF92D3
:102ED0008BEE91E09F938F939F920E943A0A8DB759
:102EE0009EB7499657CB1092F50480EE91E09F93E0
:102EF0008F9311E01F930E943A0A84E18093F504B6
:102F00008091FA08992787FD90959F938F9381ED83
:102F100091E09F938F931F930E943A0A88E28093D7
:102F2000F5048091FB08992787FD90959F938F93D7
:102F300082EC91E09F938F931F930E943A0A8CE357
:102F40008093F5048091FC08992787FD90959F93C5
:102F50008F9383EB91E035C01092F50489EA91E0FC
:102F60009F938F9311E01F930E943A0A84E180930C
:102F7000F5048091FD089091FE089F938F938BE953
:102F800091E09F938F931F930E943A0A88E2809367
:102F9000F5048091FF08909100099F938F938DE82D
:102FA00091E09F938F931F930E943A0A8CE3809342
:102FB000F50480910109909102099F938F938FE707
:102FC00091E09F938F931F930E943A0A8DB79EB70B
:102FD0004296E0CA115010936A031092F7041092BF
:102FE000F604DF91CF911F910F91FF90EF90DF904A
:102FF000CF90BF90AF909F90089587B18C6087B9B4
:103000004298439808954091F8045091F90444314E
:10301000510500F14C3D5105E8F42091FE0430913A
:10302000FF04C901880F991F8417950710F4429A6D
:1030300001C042982F5F3F4F3093FF042093FE045E
:10304000215030402417350730F01092FF041092C1
:10305000FE0401C0429A4091FA045091FB044431AD
:10306000510510F4439808954C3D5105E8F4209122
:10307000FC043091FD04C901880F991F841795073E
:1030800010F4439A01C043982F5F3F4F3093FD04E3
:103090002093FC04215030402417350730F0109263
:1030A000FD041092FC040895439808959FB7F89486
:1030B0003998389A88B1836088B9E9EBF0E080816B
:1030C0008C7F80838AE28093B8009FBF089585EA51
:1030D0008093BC00089584E98093BC000895809398
:1030E000BB0085E88093BC00089585EC8093BC000C
:1030F000089585E88093BC000895EF92FF920F93A6
:103100001F938CEBE82EF12C84E9F7018083109259
:1031100000050BEB10E0F80180818093010510920F
:10312000010580E8F70180831092BD001092BA007B
:10313000F80110821092B9001092B8000E9456183F
:1031400085EAF7018083F801108285E8F701808322
:103150001F910F91FF90EF9008951F920F920FB65D
:103160000F9211248F939F93EF93FF93809100050B
:103170008F5F8093000581508330D1F1843028F433
:10318000813081F0823060F508C08530C1F1853032
:10319000A0F1863009F04FC03EC080910105880F34
:1031A0008E5A12C0809101058F5F80930105815076
:1031B000813069F0813030F0823061F0833009F085
:1031C00047C00BC0809172088093BB0020C08091E3
:1031D0008808FACF80917D08F7CF80919308F4CFCB
:1031E00080910105843010F41092000585EA10C02A
:1031F00080910205880F8D5AE7CF85EC09C0E091D8
:103200000205F0E08091BB00E45DF74F808385E824
:103210008093BC001DC080910205E82FF0E09091E2
:10322000BB00E05DF74F90838F5F80930205843091
:1032300010F01092020584E98093BC001092000502
:103240008AE090E090936D0380936C0310920105E7
:10325000FF91EF919F918F910F900FBE0F901F9054
:1032600018959FB7F89456985E9A8AB180638AB988
:103270008BB18F7C8BB9809100018A3011F4539A05
:103280005B98809180008C70809380008091810099
:10329000837E8093810080918100836C8093810084
:1032A000809182008F738093820080916F00897F6C
:1032B00080936F0080916F00816280936F00109205
:1032C0000405109203059FBF08951F920F920FB639
:1032D0000F9211242F933F935F936F937F938F935C
:1032E0009F93AF93BF932091860030918700809188
:1032F000090590910A058217930761F480910305EF
:103300009091040562E070E00E94FC4A709304050D
:1033100060930305809186009091870090930A0541
:1033200080930905BF91AF919F918F917F916F918C
:103330005F913F912F910F900FBE0F901F901895A6
:103340001F920F920FB60F9211240F931F932F937A
:103350003F934F935F936F937F938F939F93AF931D
:10336000BF93CF93DF93EF93FF932091860030912B
:1033700087008091050590910605281B390B8091E7
:103380008600909187009093060580930505C901FA
:103390008D5494400091070510910805835F9A4170
:1033A00060F40430110514F010926B0381E090E09A
:1033B000909308058093070598C00E3011050CF016
:1033C00094C0C9018B5F9040845B914008F072C04B
:1033D000E901C25DD140F801EE0FFF1FEC5CF74F31
:1033E000808191819E01281B390BC90137FF03C0E1
:1033F000909581959F4F069784F480910305909155
:103400000405883C91054CF48091030590910405D6
:103410000A969093040580930305F801EE0FFF1FB1
:10342000EC5CF74F20813181C901880F991F820F11
:10343000931F8C0F9D1F64E070E00E94FC4A9B016B
:10344000CE010196861797071CF42150304006C024
:1034500021976C177D0714F42F5F3F4F8091030570
:1034600090910405E801CC0FDD1F833C9105BCF071
:10347000FE01EC5CF74F80819181A901481B590B3B
:10348000CA0163E070E00E94FC4ACB01880F991FDB
:10349000860F971FCE5AD74F9983888304C0CE5A80
:1034A000D74F19821882F801EE0FFF1FEC5CF74F1F
:1034B00031832083F8013196F0930805E0930705E6
:1034C000E530F10511F45D9A06C05D98E630F1052E
:1034D00011F45C9A01C05C98809100018A3029F453
:1034E000379711F45B9A01C05B9880910305909126
:1034F0000405892B49F080910305909104050197FB
:103500009093040580930305FF91EF91DF91CF9194
:10351000BF91AF919F918F917F916F915F914F91EB
:103520003F912F911F910F910F900FBE0F901F9001
:1035300018952F923F924F925F926F927F928F9247
:103540009F92AF92BF92CF92DF92EF92FF920F9332
:103550001F93CF93DF93CDB7DEB722970FB6F894C2
:10356000DEBF0FBECDBF80910F0590911005209159
:10357000DE043091DF04821B930B909387088093C5
:1035800086088091DC049091DD0420910D05309136
:103590000E05821B930B9093830880938208809181
:1035A000DA049091DB0420910B0530910C05821B0D
:1035B000930B909385088093840880918408909160
:1035C0008508909386078093850780918208909163
:1035D000830890938A0780938907E0908908F09088
:1035E0008A086091E2047091E304882777FD809552
:1035F000982F2CE030E040E050E00E94BD4A0027C8
:10360000F7FC0095102FE60EF71E081F191FC801C2
:10361000B70122E030E040E050E00E94314B3093AF
:103620008A0820938908E0908D08F0908E086091B8
:10363000E0047091E104882777FD8095982F2CE0B5
:1036400030E040E050E00E94BD4A0027F7FC0095C2
:10365000102FE60EF71E081F191FC801B70122E040
:1036600030E040E050E00E94314B30938E082093D0
:103670008D0820917B0830917C086091E404709162
:10368000E504882777FD8095982F442737FD4095DE
:10369000542F620F731F841F951F22E030E040E01B
:1036A00050E00E94314B30937C0820937B0840917E
:1036B0004505509146056091470570914805209158
:1036C000E2043091E304C901880F991F820F931F10
:1036D000880F991F880F991FAA2797FDA095BA2FC9
:1036E000840F951FA61FB71F80934505909346052D
:1036F000A0934705B09348054091490550914A056C
:1037000060914B0570914C052091E0043091E104EB
:10371000C901880F991F820F931F880F991F880F67
:10372000991FAA2797FDA095BA2F840F951FA61F52
:10373000B71F8093490590934A05A0934B05B0931A
:103740004C0520914105309142054091430550912F
:1037500044058091860890918708AA2797FDA09537
:10376000BA2F820F931FA41FB51F8093410590931A
:103770004205A0934305B093440520917F052A8319
:10378000222309F069C080918005882309F064C074
:103790008091BC0886FF60C0609131057091320550
:1037A0008091330590913405E0908608F090870869
:1037B000A0909303BB24CC24DD240027F7FC0095C4
:1037C000102F20E030E140E050E00E94314BC80172
:1037D000B7010E94BD4AA60195010E94BD4A20E0A2
:1037E00038E040E050E00E94314B2093C105309317
:1037F000C2054093C3055093C4056091390570918B
:103800003A0580913B0590913C05E0908608F09048
:10381000870820E030E140E050E00E94314BCA01CF
:10382000B901A60195010E94BD4A0027F7FC009549
:10383000102FA80197010E94BD4A20E038E040E027
:1038400050E00E94314B2093BD053093BE0540935C
:10385000BF055093C00510C01092BD051092BE0563
:103860001092BF051092C0051092C1051092C205BA
:103870001092C3051092C40580918208909183082C
:103880002090C1053090C2054090C3055090C405FA
:10389000820D931D90938308809382080091820883
:1038A00010918308A090BD05B090BE05C090BF05E3
:1038B000D090C00580919403682E772488249924A1
:1038C000C401B301A60195010E94BD4A20E032E087
:1038D00040E050E00E94314B020F131F1093830809
:1038E0000093820820913D0530913E0540913F05AF
:1038F000509140058091820890918308AA2797FDF6
:10390000A095BA2F820F931FA41FB51F80933D056A
:1039100090933E05A0933F05B09340054091390533
:1039200050913A0560913B0570913C058091820869
:103930009091830820917B0530917C05821B930B2D
:10394000AA2797FDA095BA2F840F951FA61FB71F12
:103950008093390590933A05A0933B05B0933C05BD
:103960008091390590913A05A0913B05B0913C05B5
:10397000E0907603F090770300917803109179033B
:10398000E816F9060A071B0704F580E197E2A0E0B4
:10399000B0E08E199F09A00BB10B8093390590936D
:1039A0003A05A0933B05B0933C0580913905909171
:1039B0003A05A0913B05B0913C0580933D0590935D
:1039C0003E05A0933F05B093400520913905309105
:1039D0003A0540913B0550913C0588279927DC0129
:1039E0008E199F09A00BB10B281739074A075B07EF
:1039F00004F580EF98EDAFEFBFEFE80EF91E0A1F58
:103A00001B1FE0923905F0923A0500933B05109395
:103A10003C058091390590913A05A0913B05B09104
:103A20003C0580933D0590933E05A0933F05B093E0
:103A300040058091DC049091DD040F9734F488E117
:103A40009CEF90938308809382088091DC0490918E
:103A5000DD04079734F480E398EF90938308809314
:103A600082089091000199839A30A9F48091DC0436
:103A70009091DD04835F934034F088EE93E090935F
:103A80008308809382088091DC049091DD048A5F32
:103A90009340DCF014C08091DC049091DD04855EDD
:103AA000974034F088EE93E09093830880938208E7
:103AB0008091DC049091DD04835F974034F080EDC9
:103AC00097E0909383088093820880918408909176
:103AD00085088A199B099093850880938408009132
:103AE000840810918508C401B301A20191010E94CC
:103AF000BD4A20E032E040E050E00E94314B021B22
:103B0000130B10938508009384082091350530919C
:103B10003605409137055091380580918408909181
:103B20008508AA2797FDA095BA2F820F931FA41F7F
:103B3000B51F8093350590933605A0933705B09354
:103B400038054091310550913205609133057091EF
:103B50003405809184089091850820917D053091ED
:103B60007E05821B930BAA2797FDA095BA2F840F81
:103B7000951FA61FB71F8093310590933205A09320
:103B80003305B09334058091310590913205A091B1
:103B90003305B0913405E0907203F0907303009107
:103BA000740310917503E816F9060A071B0704F55C
:103BB00080E197E2A0E0B0E08E199F09A00BB10B65
:103BC0008093310590933205A0933305B09334056B
:103BD0008091310590913205A0913305B091340563
:103BE0008093350590933605A0933705B09338053B
:103BF00020913105309132054091330550913405C3
:103C000088279927DC018E199F09A00BB10B281773
:103C100039074A075B0704F580EF98EDAFEFBFEF78
:103C2000E80EF91E0A1F1B1FE0923105F0923205C3
:103C3000009333051093340580913105909132053E
:103C4000A0913305B09134058093350590933605E6
:103C5000A0933705B09338058091DA049091DB0486
:103C60000F9734F488E19CEF909385088093840843
:103C70008091DA049091DB04079734F480E398EFA5
:103C8000909385088093840899819A30A9F4809153
:103C9000DA049091DB04835F934034F088EE93E084
:103CA00090938508809384088091DA049091DB04D6
:103CB0008A5F9340DCF014C08091DA049091DB04B9
:103CC000855E974034F088EE93E09093850880936A
:103CD00084088091DA049091DB04835F974034F08C
:103CE00080ED97E0909385088093840880917A0016
:103CF000886C80937A008091410590914205A09153
:103D00004305B091440580932D0590932E05A09313
:103D10002F05B09330058091310590913205A09127
:103D20003305B091340580931D0590931E05A09333
:103D30001F05B09320058091390590913A05A09117
:103D40003B05B0913C058093250590932605A093F3
:103D50002705B09328058091350590913605A091EF
:103D60003705B09138058093210590932205A093E3
:103D70002305B093240580913D0590913E05A091C7
:103D80003F05B09140058093290590932A05A093A3
:103D90002B05B0932C058091BC0887FF63C02A8156
:103DA000222309F05FC080918005882309F05AC062
:103DB0008091840890918508893C91055CF0209160
:103DC000840830918508809184089091850820525C
:103DD000334011C0809184089091850888539F4F8B
:103DE000A4F42091840830918508809184089091F2
:103DF0008508205E3C4F880F991F880F991F280F58
:103E0000391F30938508209384088091820890910F
:103E10008308893C91055CF02091820830918308E9
:103E200080918208909183082052334011C0809184
:103E300082089091830888539F4FA4F420918208B0
:103E4000309183088091820890918308205E3C4FD6
:103E5000880F991F880F991F280F391F30938308E7
:103E60002093820822960FB6F894DEBF0FBECDBF16
:103E7000DF91CF911F910F91FF90EF90DF90CF9046
:103E8000BF90AF909F908F907F906F905F904F907A
:103E90003F902F9008950F931F930AE710E0F801C9
:103EA0008081877380838091DA049091DB04909302
:103EB0008508809384088091DC049091DD049093C0
:103EC0008308809382088091DE049091DF049093B0
:103ED0008708809386086091E2047091E304882744
:103EE00077FD8095982F2CE030E040E050E00E9474
:103EF000BD4A70938A08609389086091E0047091CC
:103F0000E104882777FD8095982F0E94BD4A709321
:103F10008E0860938D088091E4049091E50490935D
:103F20007C0880937B08F8018081886C8083609195
:103F3000DF0870E080E090E024EC39E040E050E001
:103F40000E94BD4A6093720370937303809374035D
:103F5000909375036091E00870E080E090E00E942B
:103F6000BD4A6093760370937703809378039093B0
:103F700079031F910F910895809103059091040595
:103F8000813A91050CF40AC38091BF088B3F98F0E9
:103F90008B3F19F4809155050EC08C3F19F4809128
:103FA000570509C08D3F19F48091590504C08E3F13
:103FB00021F480915B0580938103809181038823A4
:103FC00019F41092810304C08F3F11F48093810390
:103FD0008091BE088B3F98F08B3F19F48091550576
:103FE0000EC08C3F19F48091570509C08D3F19F41C
:103FF0008091590504C08E3F21F480915B05809328
:10400000800380918003882319F41092800305C0F7
:10401000843618F084E6809380038091C0088B3F3B
:1040200098F08B3F19F4809155050EC08C3F19F420
:104030008091570509C08D3F19F48091590504C03E
:104040008E3F21F480915B058093820380918203EF
:10405000882319F41092820305C0843618F084E690
:10406000809382038091C2088B3F98F08B3F19F4B4
:10407000809155050EC08C3F19F48091570509C0F9
:104080008D3F19F48091590504C08E3F21F4809131
:104090005B058093830380918303882319F4109236
:1040A000830304C08F3F11F4809383038091C90878
:1040B0008B3F98F08B3F19F4809155050EC08C3FD3
:1040C00019F48091570509C08D3F19F48091590565
:1040D00004C08E3F21F480915B058093840380911E
:1040E0008403882319F41092840304C08F3F11F4D1
:1040F000809384038091CA088B3F98F08B3F19F41A
:10410000809155050EC08C3F19F48091570509C068
:104110008D3F19F48091590504C08E3F21F48091A0
:104120005B0580938503809185038B3010F48AE0D2
:1041300002C08F3F11F4809385038091CB088B3FA1
:1041400098F08B3F19F4809155050EC08C3F19F4FF
:104150008091570509C08D3F19F48091590504C01D
:104160008E3F21F480915B058093860380918603C6
:10417000882319F41092860304C08F3F11F48093B2
:1041800086038091D0088B3F98F08B3F19F4809183
:1041900055050EC08C3F19F48091570509C08D3F1D
:1041A00019F48091590504C08E3F21F480915B057C
:1041B0008093880380918803882319F410928803E0
:1041C00004C08F3F11F4809388038091D1088B3F06
:1041D00098F08B3F19F4809155050EC08C3F19F46F
:1041E0008091570509C08D3F19F48091590504C08D
:1041F0008E3F21F480915B05809389038091890330
:10420000882319F41092890304C08F3F11F480931E
:1042100089038091D2088B3F98F08B3F19F48091ED
:1042200055050EC08C3F19F48091570509C08D3F8C
:1042300019F48091590504C08E3F21F480915B05EB
:1042400080938A0380918A03882319F410928A0349
:1042500004C08F3F11F480938A038091D3088B3F71
:1042600098F08B3F19F4809155050EC08C3F19F4DE
:104270008091570509C08D3F19F48091590504C0FC
:104280008E3F21F480915B0580938B0380918B039B
:10429000882319F410928B0304C08F3F11F480938C
:1042A0008B038091D4088B3F98F08B3F19F4809159
:1042B00055050EC08C3F19F48091570509C08D3FFC
:1042C00019F48091590504C08E3F21F480915B055B
:1042D00080938C0380918C03882319F410928C03B3
:1042E00004C08F3F11F480938C038091E4088B3FCE
:1042F00098F08B3F19F4809155050EC08C3F19F44E
:104300008091570509C08D3F19F48091590504C06B
:104310008E3F21F480915B0580938D0380918D0306
:10432000882319F410928D0304C08F3F11F48093F9
:104330008D038091E5088B3F98F08B3F19F48091B5
:1043400055050EC08C3F19F48091570509C08D3F6B
:1043500019F48091590504C08E3F21F480915B05CA
:1043600080938E0380918E03882319F410928E031C
:1043700004C08F3F11F480938E038091E6088B3F39
:1043800098F08B3F19F4809155050EC08C3F19F4BD
:104390008091570509C08D3F19F48091590504C0DB
:1043A0008E3F21F480915B0580938F0380918F0372
:1043B000882319F410928F0304C08F3F11F4809367
:1043C0008F038091E7088B3F98F08B3F19F4809121
:1043D00055050EC08C3F19F48091570509C08D3FDB
:1043E00019F48091590504C08E3F21F480915B053A
:1043F0008093900380919003882319F41092900386
:1044000004C08F3F11F4809390038091D5088B3FB7
:1044100098F08B3F19F4809155050EC08C3F19F42C
:104420008091570509C08D3F19F48091590504C04A
:104430008E3F21F480915B058093910380919103DD
:10444000882319F41092910304C08F3F11F48093D4
:1044500091038091DA088B3F98F08B3F19F480919B
:1044600055050EC08C3F19F48091570509C08D3F4A
:1044700019F48091590504C08E3F21F480915B05A9
:104480008093920380919203882319F410929203EF
:1044900004C08F3F11F4809392038091DD088B3F1D
:1044A00098F08B3F19F4809155050EC08C3F19F49C
:1044B0008091570509C08D3F19F48091590504C0BA
:1044C0008E3F21F480915B05809393038091930349
:1044D000882319F41092930304C08F3F11F4809342
:1044E00093038091DE088B3F98F08B3F19F4809105
:1044F00055050EC08C3F19F48091570509C08D3FBA
:1045000019F48091590504C08E3F21F480915B0518
:104510008093940380919403882319F41092940358
:1045200004C08F3F11F4809394038091E3088B3F84
:1045300098F08B3F19F4809155050EC08C3F19F40B
:104540008091570509C08D3F19F48091590504C029
:104550008E3F21F480915B058093950380919503B4
:10456000882319F41092950304C08F3F11F48093AF
:1045700095036091880370E080E090E00E94F5462A
:1045800027E137EB41ED58E30E945A4A60937C03E0
:1045900070937D0380937E0390937F0308958091B1
:1045A0005305882301F51092880810927208109222
:1045B0007D08109293088091BE04882311F08093A7
:1045C00072088091BF04882311F08093880880913D
:1045D000C004882311F0809393088091C10488233C
:1045E00011F080937D0810920005109201050E9441
:1045F0006718089510921605109215051092180567
:104600001092170580E090E0A0E0B0E080931905DB
:1046100090931A05A0931B05B0931C0510920C05EE
:1046200010920B0510920E0510920D0510921005B8
:1046300010920F0510929303109294030E944B1F47
:1046400084E690E00E94A40D0E944B1F8091BC085C
:1046500080FF10C080910E0390910F03875B934001
:1046600038F480910E0390910F038E5E924010F407
:104670000E9458118091DA049091DB0490930C050C
:1046800080930B058091DC049091DD0490930E05DE
:1046900080930D058091DE049091DF0490931005C6
:1046A00080930F0580910D0590910E059093120552
:1046B0008093110580910B0590910C059093140542
:1046C0008093130584E00E948A3D8050944058F105
:1046D00080918D0890918E0897FF03C090958195E9
:1046E0009F4F6CE070E00E94FC4A70931805609345
:1046F00017058091890890918A0897FF03C09095CB
:1047000081959F4F6CE070E00E94FC4A7093160503
:10471000609315056091D8047091D904882777FDBE
:104720008095982F17C084E00E948A3D90931605CB
:104730008093150586E00E948A3D9093180580932A
:10474000170588E00E948A3DAA2797FDA095BA2FF9
:10475000BC01CD010E94A2496093190570931A050E
:1047600080931B0590931C05109231051092320521
:1047700010923305109234051092350510923605CB
:1047800010923705109238051092390510923A05AB
:1047900010923B0510923C0510923D0510923E058B
:1047A00010923F051092400510924105109242056B
:1047B00010924305109244051092850810928408C7
:1047C000109283081092820810928708109286082F
:1047D00080910A0390910B03A0910C03B0910D03FB
:1047E00090932A08809329081092E7041092E60417
:1047F00010924D0510924E0510924F0510925005E3
:1048000080916E0390916F03909371038093700376
:1048100082E390E09093D4048093D3046091DF0806
:1048200070E080E090E024EC39E040E050E00E944D
:10483000BD4A6093720370937303809374039093E3
:1048400075036091E00870E080E090E00E94BD4A4E
:104850006093760370937703809378039093790342
:1048600010927B0310927A030E94F93908951F93E6
:10487000182F0EC080915305882361F484E690E0E0
:104880009093D4048093D3048AEF90E00E94C30DE8
:10489000115080F71F9108952F923F924F925F928F
:1048A0006F927F928F929F92AF92BF92CF92DF9240
:1048B000EF92FF920F931F93CF93DF93CDB7DEB7A5
:1048C000A2970FB6F894DEBF0FBECDBF0E94991A13
:1048D000299A20906B0530906C0537FE02C0222487
:1048E00033248091030590910405883791050CF0DD
:1048F00071C080910301882399F480910403909101
:1049000005038F5F9F4F61F488E99AE39093D40485
:104910008093D30480E09CE090930503809304038C
:104920008091A7059091A805009731F00197909389
:10493000A8058093A70504C0109253051092540552
:10494000809100018A3011F4289A01C02898809142
:10495000A2059091A305815D9740C8F18091CD0893
:10496000282E332481E080935405E091B4082E2F43
:1049700030E0220F331FF901EE5AF74F11821082F7
:10498000A091B508B0E0AA0FBB1FFD01EE5AF74F8A
:1049900011821082E091B7084E2F50E0440F551F4E
:1049A000CA018E5A974FFC01118210822C5C374F3E
:1049B000F90111821082AC5CB74F11961C921E92C5
:1049C0004C5C574FDA0111961C921E92BCC3109298
:1049D0005305B9C38091030590910405873991056A
:1049E0000CF4B1C3109254058091CE0822E3829F4B
:1049F000C00111249093A8058093A705B9E22B1656
:104A000031046CF08091A2059091A305EFEF8F3FE8
:104A10009E0729F001969093A3058093A2058091AB
:104A2000A2059091A305883C910520F0F8E22F168D
:104A30003104C4F41092B9051092BA051092BB0566
:104A40001092BC051092B5051092B6051092B705EC
:104A50001092B8051092410510924205109243053C
:104A60001092440520915505309156058091B80863
:104A7000E82FF0E0EE0FFF1FEC5CF74F8081918193
:104A800082599F4F281739071CF42F5F3F4F0CC0E6
:104A90008081918182599F4F821793074CF4211591
:104AA000310531F0215030403093560520935505A3
:104AB00020915705309158058091B908E82FF0E012
:104AC000EE0FFF1FEC5CF74F8081918182599F4F61
:104AD000281739071CF42F5F3F4F0CC0808191814C
:104AE00082599F4F821793074CF42115310531F0FD
:104AF0002150304030935805209357052091590597
:104B000030915A058091BA08E82FF0E0EE0FFF1FB0
:104B1000EC5CF74F8081918182599F4F28173907AC
:104B20001CF42F5F3F4F0CC08081918182599F4FB1
:104B3000821793074CF42115310531F02150304094
:104B400030935A052093590520915B0530915C05FF
:104B50008091BB08E82FF0E0EE0FFF1FEC5CF74FF1
:104B60008081918182599F4F281739071CF42F5F4C
:104B70003F4F0CC08081918182599F4F82179307CC
:104B80004CF42115310531F02150304030935C0553
:104B900020935B0520915D0530915E05809146086C
:104BA0009091470882599F4F281739071CF42F5FAF
:104BB0003F4F0EC0809146089091470882599F4F01
:104BC000821793074CF42115310531F02150304004
:104BD00030935E0520935D0520915F05309160055F
:104BE000809148089091490882599F4F28173907AA
:104BF0001CF42F5F3F4F0EC08091480890914908E8
:104C000082599F4F821793074CF42115310531F0DB
:104C1000215030403093600520935F05209161055D
:104C20003091620580914A0890914B0882599F4FBC
:104C3000281739071CF42F5F3F4F0EC080914A0898
:104C400090914B0882599F4F821793074CF421157E
:104C5000310531F0215030403093620520936105D9
:104C6000209163053091640580914C0890914D0826
:104C700082599F4F281739071CF42F5F3F4F0EC0F2
:104C800080914C0890914D0882599F4F821793074D
:104C90004CF42115310531F021503040309364053A
:104CA00020936305809155059091560597FF05C0A7
:104CB00010925605109255050AC08F3F910539F0A4
:104CC00034F08FEF90E090935605809355058091D6
:104CD00057059091580597FF05C0109258051092FE
:104CE00057050AC08F3F910539F034F08FEF90E0FF
:104CF00090935805809357058091590590915A05D6
:104D000097FF05C010925A05109259050AC08F3FAF
:104D1000910539F034F08FEF90E090935A0580932D
:104D2000590580915B0590915C0597FF05C0109235
:104D30005C0510925B050AC08F3F910539F034F095
:104D40008FEF90E090935C0580935B0580915D050B
:104D500090915E0597FF05C010925E0510925D056B
:104D60000AC08F3F910539F034F08FEF90E09093B7
:104D70005E0580935D0580915F059091600597FFCA
:104D800005C01092600510925F050AC08F3F910523
:104D900039F034F08FEF90E09093600580935F05D9
:104DA000809161059091620597FF05C010926205A0
:104DB000109261050AC08F3F910539F034F08FEFF2
:104DC00090E09093620580936105809163059091D6
:104DD000640597FF05C010926405109263050AC030
:104DE0008F3F910539F034F08FEF90E09093640598
:104DF00080936305E091B608F0E0EE0FFF1FEC5CD6
:104E0000F74F80819181813591050CF4F0C080913C
:104E10005305882309F0EBC08091B708E82FF0E034
:104E2000EE0FFF1FEC5CF74F808191818C34910570
:104E30000CF4A1C08091A6058F5F8093A605893CE4
:104E400008F4D5C01092A60529981092A3051092D7
:104E5000A2058091B408282F30E0F901EE0FFF1F62
:104E6000EC5CF74F80819181873491059CF4E0914F
:104E7000B508F0E0EE0FFF1FEC5CF74F0190F081FA
:104E8000E02DF7FF03C0F095E195FF4FE734F10502
:104E90000CF46AC08091B508682F70E0DB01AA0F9E
:104EA000BB1FAC5CB74F8D919C91119787349105D6
:104EB0003CF0F901EE0FFF1FEC5CF74F8081918110
:104EC0008D919C918734910564F0F901EE0FFF1FDD
:104ED000EC5CF74F808191818734910514F042E0BA
:104EE00001C041E0FB01EE0FFF1FEC5CF74F80813A
:104EF0009181863491055CF4F901EE0FFF1FEC5CA3
:104F0000F74F80819181873491050CF043E0FB01DC
:104F1000EE0FFF1FEC5CF74F808191818A5B9F4F02
:104F20005CF4F901EE0FFF1FEC5CF74F808191817B
:104F3000873491050CF044E0660F771F6C5C774F67
:104F4000DB018D919C918A5B9F4F5CF4220F331F94
:104F50002C5C374FF90180819181863491050CF4E6
:104F600045E0842F0E949A3D0E947B3F0E94B83DFD
:104F70000E94FA2235C080819181855B9F4FACF5FC
:104F80008091A6058F5F8093A605893C80F11092E1
:104F9000A60529986FEF7FEF84E00E94923D109262
:104FA000A3051092A2050E94FA2260911505709146
:104FB000160584E00E94923D6091170570911805D6
:104FC00086E00E94923D6091190570911A058091CA
:104FD0001B0590911C050E94744988E00E94923D37
:104FE0000E947B3F0E94372402C01092A605E091E8
:104FF000B608F0E0EE0FFF1FEC5CF74F8081918167
:105000008B5A9F4F0CF09FC0E091B708F0E0EE0F75
:10501000FF1FEC5CF74F80819181855B9F4F0CF007
:105020006BC08091A5058F5F8093A505893C08F42E
:1050300065C088EC8093A50581E090E09093A3057E
:105040008093A20581E0809353051092B1051092E0
:10505000B2051092B3051092B4051092410510925A
:1050600042051092430510924405109231051092AA
:1050700032051092330510923405109239051092C2
:105080003A0510923B0510923C0580911D059091C8
:105090001E05A0911F05B0912005809335059093C2
:1050A0003605A0933705B09338058091250590917A
:1050B0002605A0912705B091280580933D05909382
:1050C0003E05A0933F05B09340051092B90510929C
:1050D000BA051092BB051092BC051092B50510924E
:1050E000B6051092B7051092B8058091BC0885FFEF
:1050F00005C00E94703902C01092A505E091B70862
:10510000F0E0EE0FFF1FEC5CF74F808191818C3453
:105110009105BCF08091A4058F5F8093A405893C24
:1051200090F088EC8093A4051092A3051092A2053C
:10513000109253058091BC0885FF05C00E94F63986
:1051400002C01092A40580916B03815080936B0381
:1051500080916B038F3F29F080915405882309F4D7
:1051600056C30E94BC1F40916505509166055E8F35
:105170004D8F8091B408E82EFF24D701AA0FBB1FE2
:10518000AD014C5C574FFA010190F081E02DFC8F8E
:10519000EB8F8091C308882E9924AE5AB74F0D909B
:1051A000BC91A02DBA8FA98F8091C408282F30E020
:1051B000388F2F8B60916705709168057E8B6D8BA2
:1051C0008091B508082F10E0C801880F991FDC01F5
:1051D000AC5CB74F0D90BC91A02DBC8BAB8B8E5AA5
:1051E000974FDC018D919C919A8B898BE091B70848
:1051F000AE2FB0E0AA0FBB1FAC5CB74F0D90BC91B7
:10520000A02DB88BAF87E091B608F0E0EE0FFF1F3E
:10521000EC5CF74FA080B180E8E7F0E0AE0EBF1E77
:10522000B0926C05A0926B05DA018D919C91209152
:105230006D0530916E0597FF03C0909581959F4F46
:10524000281739078CF4FA018081918190936E05BB
:1052500080936D0597FF0EC0909581959F4F909319
:105260006E0580936D0506C02150304030936E0569
:1052700020936D05F801EE0FFF1FEC5CF74F808166
:10528000918120916F053091700597FF03C0909533
:1052900081959F4F2817390784F4808191819093DD
:1052A000700580936F0597FF0EC0909581959F4F75
:1052B0009093700580936F0506C021503040309365
:1052C000700520936F056091850370E080E090E0A9
:1052D0000E94F54620E030E040E251E40E94A348FD
:1052E00020E030E040E85BE30E945A4A2B013C0199
:1052F00060938F0870939008809391089093920820
:105300006091860370E080E090E00E94F54620E026
:1053100030EE4BE257E40E94074960937E08709399
:105320007F0880938008909381082091C3042223F2
:1053300031F08AE090E09093D4048093D304E22F7C
:1053400022FF09C080918903482F50E0440F551F68
:10535000440F551F10C023FD03C040E050E00BC0B8
:105360008091890390E0880F991F880F991F442727
:105370005527481B590B2091710530917205C901C1
:10538000F3E0880F991FFA95E1F7821B930B840FC6
:10539000951F68E070E00E94FC4A6B0170937205F3
:1053A00060937105E4FF09C080918903482F50E0A4
:1053B000440F551F440F551F10C0E5FD03C040E0CA
:1053C00050E00BC08091890390E0880F991F880FEF
:1053D000991F44275527481B590B809173059091BD
:1053E00074059C0163E0220F331F6A95E1F7281BC7
:1053F000390BCA01820F931F68E070E00E94FC4ADB
:1054000078A36F8F70937405609373058091C204C5
:10541000282F83FF03C082E390E004C082FF07C00F
:105420008EEC9FEF909376058093750504C01092E3
:1054300076051092750521FF09C080917A0390913D
:105440007B03019690937B0380937A0324FF09C02A
:1054500080917A0390917B03019790937B038093D3
:105460007A032B8D3C8D289DC001299D900D389D80
:10547000900D11242D8D3E8D220F331F4D8D5E8D8D
:10548000240F351F820F931F64E070E00E94FC4AD6
:105490007AA369A3698D7A8DAF89B88D6A9FC0019F
:1054A0006B9F900D7A9F900D1124E9A1FAA1E80F4E
:1054B000F91FC60168E070E00E94FC4AE60FF71F82
:1054C000FAA3E9A3F0936605E09365052B893C896F
:1054D000289DC001299D900D389D900D11242D8986
:1054E0003E89220F331F4D895E89240F351F820F9D
:1054F000931F64E070E00E94FC4A9B0169897A89ED
:10550000AF89B88D6A9FC0016B9F900D7A9F900DF7
:105510001124280F391F8F8D98A168E070E00E9438
:10552000FC4A260F371F309368052093670540918A
:10553000750550917605EF85F8894E1B5F0B5093EA
:105540006A054093690580914E0780FF56C080919F
:105550008903813808F451C080914707992787FD56
:105560009095BC01689DC001699D900D789D900D3E
:105570001124A9A1BAA1A80FB91FB0936605A093E1
:10558000650580914807992787FD9095FC01E89D66
:10559000C001E99D900DF89D900D1124280F391F31
:1055A000309368052093670580914907992787FD07
:1055B0009095480F591F50936A05409369052091B3
:1055C000C10830E080914B07992787FD9095AC0189
:1055D000249FC001259F900D349F900D112490931E
:1055E0007B0380937A0380914A0790E08A159B059C
:1055F00024F490936C0580936B058091BC0882FF26
:105600000CC080E090E0A0E0B0E080937E08909332
:105610007F08A0938008B093810820E030E040E04C
:1056200050E0C301B2010E94DD49882364F480E0A8
:1056300090E0A0E0B0E080938F0890939008A09352
:105640009108B093920820E030E040E050E0609193
:105650007E0870917F0880918008909181080E9457
:10566000DD49882364F480E090E0A0E0B0E080931E
:105670007E0890937F08A0938008B0938108F8017A
:10568000EE0FFF1FEC5CF74F208131818091DB082A
:10569000482F50E04217530744F48091E80882FFF6
:1056A00004C081E08093810515C080918105882325
:1056B00089F0F801EE0FFF1FEC5CF74F208131817C
:1056C0008091DC08BA01681B71092617370714F4AA
:1056D00010928105F801EE0FFF1FEC5CF74F8081FF
:1056E000918166277727641B750B8617970744F40B
:1056F0008091E80883FF04C081E08093820515C093
:1057000080918205882389F0000F111F0C5C174FD0
:10571000D8012D913C918091DC0890E0841B950B81
:105720008217930714F410928205F701EE0FFF1F02
:10573000EC5CF74F808191814817590744F48091C0
:10574000E80880FF04C081E08093840515C0809143
:105750008405882389F0F701EE0FFF1FEC5CF74FFB
:10576000208131818091DC08FA01E81BF1092E17B4
:105770003F0714F410928405F701EE0FFF1FEC5C55
:10578000F74F808191818617970744F48091E8084C
:1057900081FF04C081E08093830517C08091830559
:1057A000882399F0EE0CFF1C24E338E0E20EF31E90
:1057B000D7012D913C918091DC0890E0841B950BE2
:1057C0008217930714F41092830580918105882332
:1057D00021F480918205882321F081E08093800567
:1057E00002C01092800580918405882321F4809165
:1057F0008305882351F081E080937F051092800516
:10580000109281051092820502C010927F0580914E
:105810008005882311F40C94233984E690E090935A
:10582000D4048093D3048091DA0890E08215930524
:105830000CF41C0180918F0390E09093F904809305
:10584000F8048091900390E09093FB048093FA0415
:105850000E94031880915405882381F110926A05F3
:105860001092690510926605109265051092680500
:105870001092670580E090E0A0E0BFE380938F087E
:1058800090939008A0939108B093920886EA9BE9C0
:10589000A4E4BBE380937E0890937F08A0938008E4
:1058A000B09381081092800510927F0510926E05CA
:1058B00010926D051092700510926F052091770877
:1058C000309178084091790850917A0880911D05AF
:1058D00090911E05A0911F05B0912005820F931F86
:1058E000A41FB51F8093770890937808A093790838
:1058F000B0937A082091730830917408409175082C
:10590000509176088091250590912605A091270554
:10591000B0912805820F931FA41FB51F80937308B1
:1059200090937408A0937508B093760850907F0503
:10593000552029F480918005882309F44FC01092E6
:10594000E9041092E8041092450510924605109261
:105950004705109248051092490510924A05109289
:105960004B0510924C05109277081092780810920F
:10597000790810927A0810927308109274081092A5
:105980007508109276088091310590913205A091AA
:105990003305B09134058093350590933605A09377
:1059A0003705B09338058091390590913A05A0915B
:1059B0003B05B0913C0580933D0590933E05A09337
:1059C0003F05B093400510927E0510927D05109220
:1059D0007C0510927B05552009F0F5C0809180056B
:1059E000882309F0F0C060911D0570911E0580911B
:1059F0001F0590912005A090C808BB24CC24DD246D
:105A0000E0908908F0908A08A60195010E94314B28
:105A10000027F7FC0095102F2E193F09400B510B62
:105A2000CA01B90120E130E040E050E00E94314B72
:105A300039014A016091250570912605809127055D
:105A400090912805E0908D08F0908E08A6019501B0
:105A50000E94314B0027F7FC0095102F2E193F09AB
:105A6000400B510BCA01B90120E130E040E050E0A9
:105A70000E94314B79018A0180916D0590916E05EC
:105A8000409734F480916F05909170054097A4F091
:105A9000C401B30123E030E040E050E00E94314B0C
:105AA00039014A01C801B70123E030E040E050E08D
:105AB0000E94314B79018A01E091B708F0E0EE0FC6
:105AC000FF1FEC5CF74F0190F081E02DF7FF03C062
:105AD000F095E195FF4F7A97A4F0C401B30123E05C
:105AE00030E040E050E00E94314B39014A01C801EA
:105AF000B70123E030E040E050E00E94314B7901F3
:105B00008A01B1E26B1671048104910434F0B0E2B1
:105B10006B2E712C812C912C11C0E0EE6E16EFEFE4
:105B20007E06EFEF8E06EFEF9E0644F4A0EE6A2E9F
:105B3000AFEF7A2EAFEF8A2EAFEF9A2EF1E2EF168B
:105B4000F1040105110534F0F0E2EF2EF12C012DE6
:105B5000112D11C020EEE2162FEFF2062FEF0207F3
:105B60002FEF120744F4E0EEEE2EEFEFFE2EEFEFF4
:105B70000E2FEFEF1E2F8091310590913205A091ED
:105B80003305B091340586199709A809B90980939E
:105B9000310590933205A0933305B093340580917D
:105BA000390590913A05A0913B05B0913C058E19BD
:105BB0009F09A00BB10B8093390590933A05A093F0
:105BC0003B05B0933C058091E8049091E9048F3F38
:105BD000910509F008F4ABC4552009F044C4809144
:105BE0008005882309F03FC4609177087091780898
:105BF0008091790890917A0820E031E040E050E00F
:105C00000E94314B209377083093780840937908AD
:105C100050937A08609173087091740880917508A8
:105C20009091760820E031E040E050E00E94314B56
:105C30002093730830937408409375085093760846
:105C4000E090C808FF2400E010E020914505309165
:105C500046054091470550914805C801B7010E948B
:105C6000BD4A20E031E040E050E00E94314B2093FB
:105C700045053093460540934705509348052091CC
:105C8000490530914A0540914B0550914C05C8019A
:105C9000B7010E94BD4A20E031E040E050E00E94A0
:105CA000314B2093490530934A0540934B0550935F
:105CB0004C056091770870917808809179089091EF
:105CC0007A0820914505309146054091470550914D
:105CD0004805621B730B840B950B6093AD057093A5
:105CE000AE058093AF059093B005E090E108FF24E6
:105CF00000E010E0A80197010E94314BCA01B901F0
:105D000020E031E040E050E00E94314B4901309307
:105D10007E0520937D0560917308709174088091D1
:105D20007508909176082091490530914A05409177
:105D30004B0550914C05621B730B840B950B6093C4
:105D4000A9057093AA058093AB059093AC05A801B3
:105D500097010E94314B59016A01CA01B90120E043
:105D600031E040E050E00E94314B890130937C05E6
:105D700020937B0580916D0590916E054097BCF452
:105D800080916F059091700540978CF4E091B70871
:105D9000F0E0EE0FFF1FEC5CF74F0190F081E02D7B
:105DA000F7FF03C0F095E195FF4F7A9794F0C40197
:105DB00062E070E00E94FC4A70937E0560937D056E
:105DC000C80162E070E00E94FC4A70937C05609319
:105DD0007B05E0902105F0902205009123051091AC
:105DE000240580911D0590911E05A0911F05B0917D
:105DF0002005E81AF90A0A0B1B0BE092AD05F09298
:105E0000AE050093AF051093B005809135059091D4
:105E10003605A0913705B09138058E199F09A00B62
:105E2000B10B8093350590933605A0933705B09359
:105E300038056090290570902A0580902B05909078
:105E40002C058091250590912605A0912705B091FC
:105E50002805681A790A8A0A9B0A6092A905709235
:105E6000AA058092AB059092AC0580913D0590917A
:105E70003E05A0913F05B091400586199709A809F4
:105E8000B90980933D0590933E05A0933F05B093DB
:105E900040056091450570914605809147059091B8
:105EA00048052AE130E040E050E00E94314B309359
:105EB0007407209373076091490570914A0580919A
:105EC0004B0590914C052AE130E040E050E00E9403
:105ED000314B3093760720937507F0927807E09264
:105EE000770770927A0760927907609177087091CE
:105EF00078088091790890917A082AE130E040E0B2
:105F000050E00E94314B30937C0720937B076091D7
:105F100073087091740880917508909176082AE151
:105F200030E040E050E00E94314B30937E072093F8
:105F30007D07B0928C07A0928B07C0907B05D09014
:105F40007C05C601880F991F960153E0220F331F6D
:105F50005A95E1F7820F931F90938E0780938D07D8
:105F600081E090E0909393058093920510929805BC
:105F70001092990510929A0510929B0580917708CE
:105F800090917808A0917908B0917A0820918A05BB
:105F900030918B0540918C0550918D05281B390B54
:105FA0004A0B5B0B57FF07C05095409530952195E4
:105FB0003F4F4F4F5F4F20523E44404050400CF007
:105FC000C1C071E0E71670E1F70670E0070770E006
:105FD00017070CF452C080919105882309F449C039
:105FE000D801C7014CE0B595A795979587954A9537
:105FF000D1F701969093930580939205D801C7013C
:1060000033E0B595A795979587953A95D1F7809305
:10601000980590939905A0939A05B0939B0589588C
:106020009341A040B04064F088E893E1A0E0B0E084
:106030008093980590939905A0939A05B0939B053A
:10604000609198057091990580919A0590919B05B2
:1060500020E031E040E050E00E94314B80917D052E
:1060600090917E05820F931F90937E0580937D050E
:1060700066C081E08093910562C010929105F0E0C6
:10608000EF16F0EFFF06FFEF0F07FFEF1F070CF013
:1060900056C080919005882309F44DC08827992720
:1060A000DC018E199F09A00BB10B2CE0B595A795CB
:1060B000979587952A95D1F70196909393058093AC
:1060C0009205C801B70128E030E040E050E00E94AE
:1060D000314B209398053093990540939A0550933E
:1060E0009B0528573C4E4F4F5F4F64F488E79CEE6A
:1060F000AFEFBFEF8093980590939905A0939A0511
:10610000B0939B05609198057091990580919A05CF
:1061100090919B0520E031E040E050E00E94314B3F
:1061200080917D0590917E05820F931F90937E054F
:1061300080937D050BC081E08093900507C010928D
:10614000900504C010929305109292058091E20888
:10615000482E552480919205909193054816590632
:1061600024F4509293054092920571E0E71674E092
:10617000F70670E0070770E0170774F080910B05D1
:1061800090910C052091920530919305820F931FF9
:1061900090930C0580930B0580E0E8168CEFF806D1
:1061A0008FEF08078FEF180774F480910B0590911B
:1061B0000C052091920530919305821B930B9093CF
:1061C0000C0580930B0581E090E0909393058093FC
:1061D00092051092940510929505109296051092D2
:1061E00097058091730890917408A0917508B091FB
:1061F0007608209186053091870540918805509159
:106200008905281B390B4A0B5B0B57FF07C05095BC
:106210004095309521953F4F4F4F5F4F20523E4460
:10622000404050400CF0B9C0A1E06A16A0E17A06E7
:10623000A0E08A06A0E09A060CF44EC080918F057B
:10624000882309F445C0D401C301FCE0B595A795A6
:1062500097958795FA95D1F701969093930580933A
:106260009205D401C301E3E0B595A795979587956D
:10627000EA95D1F78093940590939505A0939605A0
:10628000B093970589589341A040B04064F088E8E6
:1062900093E1A0E0B0E08093940590939505A093DE
:1062A0009605B0939705609194057091950580913E
:1062B00096059091970520E031E040E050E00E9483
:1062C000314BC20ED31ED0927C05C0927B0562C0BA
:1062D00081E080938F055EC010928F05F0E06F160D
:1062E000F0EF7F06FFEF8F06FFEF9F060CF052C026
:1062F00080918E05882309F449C088279927DC01FD
:1063000086199709A809B9097CE0B595A7959795CD
:1063100087957A95D1F7019690939305809392058E
:10632000C401B30128E030E040E050E00E94314B6E
:1063300020939405309395054093960550939705C7
:1063400028573C4E4F4F5F4F64F488E79CEEAFEF09
:10635000BFEF8093940590939505A0939605B09315
:10636000970560919405709195058091960590919F
:10637000970520E031E040E050E00E94314BC20E32
:10638000D31ED0927C05C0927B050BC081E0809328
:106390008E0507C010928E0504C0109293051092CE
:1063A000920580919205909193054816590624F420
:1063B000509293054092920571E0671674E077065B
:1063C00070E0870670E0970674F080910D0590915B
:1063D0000E052091920530919305820F931F9093A3
:1063E0000E0580930D0580E068168CEF78068FEF20
:1063F00088068FEF980674F480910D0590910E0534
:106400002091920530919305821B930B90930E057A
:1064100080930D0580919405909195059093880740
:106420008093870780910B0590910C0590938007CE
:1064300080937F0780910D0590910E0520911105A5
:1064400030911205821B930B9C0163E0220F331FD6
:106450006A95E1F7880F991F820F931F9093820727
:106460008093810708C010927C0510927B051092E2
:106470007E0510927D0520E030E040E050E0609124
:106480007E0870917F0880918008909181080E9419
:10649000DD49882341F410927C0510927B0510920F
:1064A0007E0510927D058091770890917808A091E3
:1064B0007908B0917A0880938A0590938B05A09310
:1064C0008C05B0938D058091730890917408A0910C
:1064D0007508B09176088093860590938705A09300
:1064E0008805B093890510924505109246051092D3
:1064F0004705109248051092490510924A051092DE
:106500004B0510924C051092770810927808109263
:10651000790810927A0810927308109274081092F9
:106520007508109276081092E9041092E8048090A1
:10653000690590906A05840197FE04C00027112721
:10654000081919090531110554F08091BC0884FD22
:1065500006C081E090E090939D0580939C05E090BB
:10656000C508B401882777FD8095982F2E2D30E03F
:1065700040E050E00E94BD4A9801442737FD409515
:10658000542F0E94BD4A20E032E040E050E00E94DB
:10659000314B89019A01FF24E89CC001E99C900DD0
:1065A000F89C900D112464E070E00E94FC4A600F9A
:1065B000711F882777FD8095982F6093B1057093A0
:1065C000B2058093B3059093B405209141053091B5
:1065D00042054091430550914405261B370B480B5B
:1065E000590B209341053093420540934305509346
:1065F00044058091410590914205A0914305B091D9
:1066000044058155934CA040B04064F080E593EC84
:10661000A0E0B0E08093410590934205A09343052C
:10662000B09344058091410590914205A0914305A6
:10663000B0914405805B9C43AF4FBF4F64F480EB47
:106640009CE3AFEFBFEF8093410590934205A09389
:106650004305B09344058091BC0883FD02C085FFCB
:1066600082C0809185058150809385058F3F51F5CB
:1066700081E3809385050E948E4390936F038093FE
:106680006E0380916E0390916F0397FF05C0109287
:1066900052051092510516C080916E0390916F03C0
:1066A0002091700330917103845E9D4F821B930B88
:1066B00068E671E00E94FC4A845B9040909352052A
:1066C0008093510580916D0590916E058B349105F5
:1066D0000CF049C080916F05909170058B34910545
:1066E0000CF041C080919C0590919D05892B81F013
:1066F00010929D0510929C0580916E0390916F03FE
:10670000909371038093700310925205109251057B
:10671000E0904105F0904205009143051091440539
:1067200020915105309152058091840390E0AC0195
:10673000429FC001439F900D529F900D112460E134
:1067400070E00E94FC4A882777FD8095982F6E0D97
:106750007F1D801F911F60934105709342058093B8
:106760004305909344058091BC0885FF17C0809134
:106770008A038093CD0580918D038093C905809114
:106780008E038093D10580915405882311F086EE05
:1067900002C0809159050E94AC3C02C00E94F939A8
:1067A00080919E05815080939E058F3F09F07AC0AD
:1067B00088E180939E0560911D0570911E05809172
:1067C0001F0590912005E090C808FF2400E010E02C
:1067D000A80197010E94314B309352072093510733
:1067E00060912505709126058091270590912805D7
:1067F000A80197010E94314B30935407209353070F
:106800008091890890918A08909356078093550744
:1068100080918D0890918E08909358078093570728
:10682000809186089091870890935A078093590722
:10683000809177059091780590935C0780935B0732
:1068400060914D0570914E0580914F0590915005D6
:1068500020E032E040E050E00E94314B30935E0790
:1068600020935D0780916E0390916F039093620770
:1068700080936107809108039091090390936407C6
:1068800080936307809103059091040590936607B8
:106890008093650780917B0890917C0890937207A4
:1068A0008093710780917F058823A9F06091840807
:1068B00070918508882777FD8095982F0E94A249BE
:1068C00020918F0830919008409191085091920842
:1068D0000E945A4A32C060911D0570911E05809138
:1068E0001F0590912005E0908408F09085080E9493
:1068F000A24920917E0830917F08409180085091F4
:1069000081080E945A4A5B016C010027F7FC009540
:10691000102FC801B7010E94A24920918F08309121
:10692000900840919108509192080E945A4A9B0108
:10693000AC01C601B5010E94A3480E946F49709343
:10694000850860938408809180058823A9F0609170
:10695000820870918308882777FD8095982F0E9480
:10696000A24920918F083091900840919108509150
:1069700092080E945A4A32C06091250570912605FE
:106980008091270590912805E0908208F090830877
:106990000E94A24920917E0830917F084091800892
:1069A000509181080E945A4A5B016C010027F7FC54
:1069B0000095102FC801B7010E94A24920918F08AD
:1069C0003091900840919108509192080E945A4A43
:1069D0009B01AC01C601B5010E94A3480E946F490A
:1069E000709383086093820860918608709187088D
:1069F000A0902D05B0902E05C0902F05D0903005A9
:106A000080917E0890917F08A0918008B0918108C4
:106A100089839A83AB83BC83882777FD8095982FE1
:106A20000E94A2497B018C0160918F0870919008AF
:106A300080919108909192089B01AC010E94A3481B
:106A40009B01AC01C801B7010E945A4A7B018C012D
:106A5000C601B5010E94A24929813A814B815C811E
:106A60000E945A4A20E030E040E05FE30E945A4A28
:106A70009B01AC01C801B7010E94A3480E946F4965
:106A800070938708609386086091250570912605AC
:106A900080912705909128050E94A24929813A8179
:106AA0004B815C810E945A4A0E947449709384070A
:106AB00060938307A0916705B0916805BE83AD839D
:106AC000B0939007A0938F078091820890918308DC
:106AD00090938A0780938907809184089091850814
:106AE0008150984034F080E098E09093850880933E
:106AF000840880918408909185088050984F34F4E0
:106B000080E098EF909385088093840880918208B4
:106B1000909183088150984034F080E098E0909301
:106B20008308809382088091820890918308805026
:106B3000984F34F480E098EF909383088093820814
:106B400080918608909187088150984034F080E0C9
:106B500098E09093870880938608809186089091AA
:106B600087088050984F34F480E098EF909387081E
:106B7000809386088091BC08282F80FFCFC0809129
:106B80005405882309F0CAC08091810321FF0EC0FB
:106B9000823310F580917705909178054497909312
:106BA0007A05809379051092A10519C020917A0386
:106BB00030917B03280F311D8091C10890E0BC010A
:106BC000269FC001279F900D369F900D112444975A
:106BD00090937A058093790581E08093A105809058
:106BE0007705909078056090790570907A05681423
:106BF00079040CF093C08091A105882309F48EC01C
:106C0000B0908203C090E604D090E704A090800387
:106C100060914D0570914E0580914F059091500502
:106C2000E0908303FF2400E010E020E032E040E049
:106C300050E00E94314BC801B7010E94BD4A20E2DA
:106C400030E040E050E00E94314B890123333105B0
:106C50001CF002E310E005C02E5C3F4F14F40EEC74
:106C60001FEF8B2D90E086189708DC01A89DC001CE
:106C7000A99D900DB89D900D112460E170E00E94D7
:106C8000FC4AF101E61BF70B80919F059091A0054E
:106C90009C0144E0220F331F4A95E1F7281B390B72
:106CA0008A2D90E0AC014C9DC0014D9D900D5C9DE6
:106CB000900D112468E070E00E94FC4A261B370BFF
:106CC0002E0F3F1FC901801B910B60E170E00E94F5
:106CD000FC4A7093A00560939F058091BD0890E0E9
:106CE0006817790764F4281639062CF09093A005EC
:106CF00080939F0504C03092A00520929F0580914B
:106D00009F059091A0052816390624F43092A0051D
:106D100020929F0520909F053090A0058091C70884
:106D2000482E5524C20144973101821593050CF475
:106D30003C017092600760925F0720918608309155
:106D400087088091B1059091B205A091B305B091EB
:106D5000B40554E1651671041CF41A86198628C01E
:106D6000281B390BC9019301359527958217930785
:106D70000CF49C01C30162E070E00E94FC4A709533
:106D800061957F4FC901261737070CF4CB0192019B
:106D900026193709281739070CF4C901930124195A
:106DA00035099A8789878217930714F43A872987C8
:106DB0002091840830918508809065059090660543
:106DC0008091C5059091C605881A990A2819390934
:106DD00030938C0820938B0820E030E040E050E0B6
:106DE00069817A818B819C810E94DD498823F1F140
:106DF000E0901D05F0901E0500911F0510912005E3
:106E00006091B9057091BA058091BB059091BC0560
:106E10000E94A2495B016C01C801B7010E94A2490E
:106E200029813A814B815C810E945A4A7B018C0105
:106E3000B401882777FD8095982F0E94A2499B0175
:106E4000AC01C801B7010E94A2489B01AC01C60178
:106E5000B5010E94A3480E946F496093B9057093E1
:106E6000BA058093BB059093BC051CC020918B088C
:106E700030918C08442737FD4095542F8091B905F7
:106E80009091BA05A091BB05B091BC05820F931FEC
:106E9000A41FB51F8093B9059093BA05A093BB05B5
:106EA000B093BC058091B9059091BA05A091BB053E
:106EB000B091BC0581589E43A040B04064F080E88A
:106EC0009EE3A0E0B0E08093B9059093BA05A0934B
:106ED000BB05B093BC058091B9059091BA05A0910E
:106EE000BB05B091BC058058914CAF4FBF4F64F4C7
:106EF00080E891ECAFEFBFEF8093B9059093BA05AE
:106F0000A093BB05B093BC0560918B0870918C0871
:106F100080917C0390917D03A0917E03B0917F03CB
:106F20008B879C87AD87BE87882777FD8095982FB4
:106F30000E94A2497B018C016091B9057091BA054C
:106F40008091BB059091BC050E94A2499B01AC01B8
:106F50006B857C858D859E850E945A4A9B01AC017C
:106F6000C801B7010E94A3480E946F497B018C01B0
:106F70006B0189859A8597FF03C0909581959F4FF6
:106F800062E070E00E94FC4A660D771D882777FD5D
:106F90008095982F2091950330E040E050E00E94CA
:106FA000BD4A20E430E040E050E00E94314B388799
:106FB0002F83C216D3060CF497012F8038843094A7
:106FC000219431083394221533050CF4910149853D
:106FD0005A85460D571DCA01820F931F97FF03C0A4
:106FE00060E070E005C0BC01481659060CF4B2011F
:106FF0008091C608E82FF0E0F8A3EF8FCB016E1761
:107000007F070CF4CF0180937208421B530B9A0147
:1070100057FF03C020E030E004C0441655060CF4CE
:1070200092014F8D58A1241735070CF49A01209333
:10703000880880918208909183082091C70530913B
:10704000C8058D809E80821A930A881999099093A9
:1070500071088093700820E030E040E050E06981E2
:107060007A818B819C810E94DD498823F1F1E09037
:107070002505F090260500912705109128056091BF
:10708000B5057091B6058091B7059091B8050E943D
:10709000A2495B016C01C801B7010E94A249298184
:1070A0003A814B815C810E945A4A7B018C01B40178
:1070B000882777FD8095982F0E94A2499B01AC01FB
:1070C000C801B7010E94A2489B01AC01C601B501ED
:1070D0000E94A3480E946F496093B5057093B6055E
:1070E0008093B7059093B8051CC02091700830912B
:1070F0007108442737FD4095542F8091B505909134
:10710000B605A091B705B091B805820F931FA41FD3
:10711000B51F8093B5059093B605A093B705B093BE
:10712000B8058091B5059091B605A091B705B091CD
:10713000B80581589E43A040B04064F080E89EE3CB
:10714000A0E0B0E08093B5059093B605A093B70595
:10715000B093B8058091B5059091B605A091B7059B
:10716000B091B8058058914CAF4FBF4F64F480E8A0
:1071700091ECAFEFBFEF8093B5059093B605A09368
:10718000B705B093B80560917008709171088827B1
:1071900077FD8095982F0E94A2497B018C01609118
:1071A000B5057091B6058091B7059091B8050E941C
:1071B000A2499B01AC016B857C858D859E850E94D3
:1071C0005A4A9B01AC01C801B7010E94A3480E9422
:1071D0006F492F813885621773070CF49B01C10139
:1071E000221633060CF4C9019301A985BA852A1B1E
:1071F0003B0B280F391F37FF03C020E030E004C0ED
:10720000421653060CF49201EF8DF8A12E173F079A
:107210000CF49F0120939308681A790AC301298509
:107220003A85821B930B97FF03C080E090E004C077
:10723000481659060CF4C2014F8D58A184179507C2
:1072400054F4CA0108C080917F05882311F00C9482
:10725000132C0C941A2C80937D08A2960FB6F894E8
:10726000DEBF0FBECDBFDF91CF911F910F91FF9079
:10727000EF90DF90CF90BF90AF909F908F907F90D6
:107280006F905F904F903F902F900895E091B408D9
:10729000F0E0EE0FFF1FEC5CF74F0190F081E02D66
:1072A000F7FF03C0F095E195FF4F74971CF081E064
:1072B00090E00895E091B508F0E0EE0FFF1FEC5C60
:1072C000F74F8081918120E030E097FF03C09095D7
:1072D00081959F4F449714F021E030E0C901089553
:1072E0008091720681508230F0F58091740683306F
:1072F000D1F58091750690917606A0917706B091B0
:1073000078068093E2059093E305A093E405B0939B
:10731000E5058091790690917A06A0917B06B0915F
:107320007C068093E6059093E705A093E805B0936B
:10733000E90580917D0690917E06A0917F06B0912F
:1073400080068093EA059093EB05A093EC05B0933B
:10735000ED0581E08093EE0588EE93E09093D404F0
:107360008093D30408951092EE05089580917206DB
:1073700081508230C0F5809174068330A1F58091F0
:10738000750690917606A0917706B0917806809365
:10739000D5059093D605A093D705B093D8058091D5
:1073A000790690917A06A0917B06B0917C06809335
:1073B000D9059093DA05A093DB05B093DC058091A5
:1073C0007D0690917E06A0917F06B0918006809305
:1073D000DD059093DE05A093DF05B093E00581E025
:1073E0008093E10508951092E10508951092EE054D
:1073F00008951092C6051092C5051092C805109206
:10740000C70508952F923F924F925F926F927F929D
:107410008F929F92AF92BF92CF92DF92EF92FF92A4
:107420000F931F93CF93DF93CDB7DEB762970FB65D
:10743000F894DEBF0FBECDBF8C0180917206813003
:1074400009F059C280917406833009F054C28091CA
:107450006E0390916F0397FD4EC20115110509F45B
:1074600086C0F8018485882309F481C0823039F40C
:107470008091F1059091F2050817190791F110928A
:10748000F7051092F8051092F9051092FA0510927E
:10749000F3051092F4051092F5051092F605F80127
:1074A000648175818681978120E836E948E950E05A
:1074B0000E94314BDA01C9010E942B40AA2797FD97
:1074C000A095BA2F8093960390939703A093980367
:1074D000B09399031093F2050093F10582E0F8014F
:1074E00084872091790630917A0640917B065091ED
:1074F0007C06F80184819581A681B781281B390B10
:107500004A0B5B0B2D833E834F8358876091750632
:10751000709176068091770690917806208131816E
:1075200042815381621B730B840B950B2091960350
:107530003091970340919803509199030E94BD4A5E
:1075400020E030E240E050E00E94314B29833A8352
:107550004B835C832D813E8130936A0720936907BA
:1075600049815A8150936C0740936B0718C0109261
:10757000F7051092F8051092F9051092FA0510928D
:10758000F3051092F4051092F5051092F6051D8290
:107590001E821F82188619821A821B821C82809189
:1075A000C9059091CA05A091CB05B091CC058D87F6
:1075B0009E87AF87B88B2090CD053090CE05409048
:1075C000CF055090D005A090D105B090D205C090C5
:1075D000D305D090D4052091850630918606409140
:1075E000870650918806C601B5010E94BD4A20E079
:1075F00032E040E050E00E94314B79018A01209155
:10760000F7053091F8054091F9055091FA05C2014E
:10761000B1010E94BD4A20E030E240E050E00E940B
:10762000314B39014A019094809470946094611CAC
:10763000711C811C911C6E187F08800A910A6D8153
:107640007E818F8198852D853E854F8558890E9442
:10765000BD4A20E038E040E050E00E94314B621A21
:10766000730A840A950A2091890630918A0640910E
:107670008B0650918C06C601B5010E94BD4A20E0E0
:1076800032E040E050E00E94314B79018A012091C4
:10769000F3053091F4054091F5055091F605C201CE
:1076A000B1010E94BD4A20E030E240E050E00E947B
:1076B000314B59016A01D094C094B094A094A11C9C
:1076C000B11CC11CD11CAE18BF08C00AD10A698107
:1076D0007A818B819C812D853E854F8558890E94BA
:1076E000BD4A20E038E040E050E00E94314BA21A51
:1076F000B30AC40AD50A80916E0390916F030E9469
:107700002B401C01442437FC4094542C80916E0380
:1077100090916F030E94E23F9C01442737FD409502
:10772000542F29873A874B875C87C601B501A20190
:1077300091010E94BD4A7B018C01C401B3012985DE
:107740003A854B855C850E94BD4AE61AF70A080B0C
:10775000190BC801B70120E030E240E050E00E9480
:10776000314B3A8B298B3093C8052093C705C40150
:10777000B301A20191010E94BD4A7B018C01C601A7
:10778000B50129853A854B855C850E94BD4AE60E88
:10779000F71E081F191FC801B70120E030E240E0C2
:1077A00050E00E94314B309521953F4F3093C605F4
:1077B0002093C5052E3231051CF08DE290E007C004
:1077C000235D3F4F14F080E007C083ED9FEF90935F
:1077D000C6058093C50581E0A989BA899E971CF0EA
:1077E0008DE290E007C0E989FA89E35DFF4F3CF440
:1077F00083ED9FEF9093C8058093C70594C08823BD
:1078000009F091C06D817E818F81988520E130E003
:1078100040E050E00E94314B8091F7059091F805CF
:10782000A091F905B091FA05280F391F4A1F5B1F77
:107830002093F7053093F8054093F9055093FA0526
:1078400021308DE7380780E0480780E058072CF0AA
:1078500080E09DE7A0E0B0E009C0205033484F4FE2
:107860005F4F64F480E093E8AFEFBFEF8093F705DC
:107870009093F805A093F905B093FA0569817A8190
:107880008B819C8120E130E040E050E00E94314B50
:107890008091F3059091F405A091F505B091F6055E
:1078A000280F391F4A1F5B1F2093F3053093F405FF
:1078B0004093F5055093F6052130ADE73A07A0E077
:1078C0004A07A0E05A072CF080E09DE7A0E0B0E076
:1078D00009C0205033484F4F5F4F2CF580E093E8AC
:1078E000AFEFBFEF8093F3059093F405A093F505F8
:1078F000B093F60518C01092C6051092C5051092F7
:10790000C8051092C7051092F7051092F80510925D
:10791000F9051092FA051092F3051092F4051092F1
:10792000F5051092F60562960FB6F894DEBF0FBE0D
:10793000CDBFDF91CF911F910F91FF90EF90DF901E
:10794000CF90BF90AF909F908F907F906F905F90FF
:107950004F903F902F900895863418F41092F005C0
:1079600007C0803A10F481E001C082E08093F00506
:1079700080917206813079F1813020F0823009F0F7
:10798000A7C014C01092C6051092C5051092C80574
:107990001092C7058091F005882309F499C084E608
:1079A00090E09093D4048093D30492C08091950684
:1079B000882331F08091950681508093950688C088
:1079C0001092C6051092C5051092C8051092C70501
:1079D000109272067DC0809174069091F0058330FC
:1079E00009F055C0913039F0913008F445C092301B
:1079F00009F044C021C08091E1058823E9F10E948B
:107A00004639882369F00E94B6391092C605109253
:107A1000C5051092C8051092C7051092EF0555C014
:107A20008091EF05873018F58F5F8093EF050E94F6
:107A3000B63980E090E01DC08091EE05882349F0C2
:107A40000E94B6390E9446398823C1F482EE95E03F
:107A500010C082E390E09093D4048093D30480918B
:107A6000E105882349F00E944639882339F485EDE1
:107A700095E00E94023A29C00E94B6391092C605CC
:107A80001092C5051092C8051092C7051EC010922D
:107A9000C6051092C5051092C8051092C705992316
:107AA000A1F08091730628EC829FC001112420E48C
:107AB00036E0281B390B37FF02C020E030E02E5C97
:107AC0003F4F3093D4042093D30482E08093720616
:107AD0008091C5059091C60590936E0780936D07C0
:107AE0008091C7059091C8059093700780936F07A8
:107AF0000895A0E0B0E0A80FB11D0E94834B802D37
:107B000090E00895A0E0B0E0A80FB11D062E0E94FD
:107B1000954B0895A0E0B0E0A80FB11D0E94904BD6
:107B2000CF010895A0E0B0E0A80FB11D0B010E94A5
:107B3000A14B0895863008F085E0A2E0B0E0082E61
:107B40000E94954B0895982F863008F095E086E4C2
:107B5000989FD0011124AC59BF4FE4EBF8E0182EE8
:107B60000E94A64BA2E0B0E0092E0E94954B08951A
:107B7000982F863008F095E086E4989FD001112474
:107B8000AC59BF4FE4EBF8E0182E0E948B4B0895E0
:107B900081E08093B40822E02093B50883E08093CD
:107BA000B60854E05093B70845E04093B80836E073
:107BB0003093B90887E08093BA0888E08093BB08C7
:107BC00080EC8093BC089EE19093BD088BEF80937E
:107BD000BF088AE08093C0089093BE089093C208C3
:107BE0002093C1082093C3085093C4083093C5085C
:107BF0008FE08093C6088AEF8093C7089093C808E7
:107C000080E88093C90824E62093CA088CE8809312
:107C1000CB088EE58093CC0883E28093CD0884E185
:107C20008093CE081092CF0880E18093D00880E541
:107C30008093D1081092D2081092D3081092D408E1
:107C40001092E4081092E5081092E6081092E708F6
:107C50002093D50888E28093D6081092E90892E331
:107C60009093D70886E98093D8084093D9089093D9
:107C7000DA088AE58093DB089093DC081092E80824
:107C80008093DD084093DE082093DF082093E0080E
:107C900080E28093E1085093E2089093E308AEEE0F
:107CA000B8E0ECE9F3E089E001900D928150E1F752
:107CB000089581E08093B40882E08093B50823E0C2
:107CC0002093B60854E05093B70845E04093B808B5
:107CD00036E03093B90887E08093BA0888E0809353
:107CE000BB0880E48093BC089EE19093BD088BEFB5
:107CF0008093BF088AE08093C0089093BE08909359
:107D0000C2082093C1082093C3085093C40830933D
:107D1000C5088FE08093C6088AEF8093C7089093C8
:107D2000C80880E88093C90890E59093CA0888E75E
:107D30008093CB088EE58093CC0883E28093CD08B6
:107D400084E18093CE081092CF0830E23093D008BF
:107D50009093D1081092D2081092D3081092D408B0
:107D60001092E4081092E5081092E6081092E708D5
:107D700024E62093D50888E28093D6081092E9087B
:107D800092E39093D70886E98093D8084093D90866
:107D90009093DA088AE58093DB089093DC081092D0
:107DA000E8088093DD084093DE082093DF082093E5
:107DB000E0083093E1085093E2088BE48093E308F5
:107DC000AEEEB8E0E6EAF3E087E001900D92815074
:107DD000E1F7089581E08093B40882E08093B508CC
:107DE00083E08093B60834E03093B70845E04093D1
:107DF000B80886E08093B90887E08093BA0828E045
:107E00002093BB0880E48093BC089EE19093BD085A
:107E10008BEF8093BF088AE08093C0089093BE08E0
:107E20009093C2083093C1083093C3082093C408CC
:107E30008CE08093C5088FE08093C6088AEF80931A
:107E4000C7089093C80890E89093C90880E580938C
:107E5000CA0856E95093CB088EE58093CC0883E29C
:107E60008093CD0884E18093CE081092CF0880E201
:107E70008093D0089093D1081092D2081092D30822
:107E80001092D4081092E4081092E5081092E608C7
:107E90001092E70824E62093D50888E28093D6085C
:107EA0001092E90882E38093D7085093D808409352
:107EB000D9088093DA089AE59093DB088093DC0870
:107EC0001092E8089093DD084093DE082093DF08C5
:107ED0002093E00880E18093E1083093E20820934A
:107EE000E308AEEEB8E0EEEAF3E086E001900D9232
:107EF0008150E1F7089522E030E0D9010E94834BE0
:107F0000802D863028F082E0D901082E0E94954B02
:107F100090E008950F931F93CF93DF93A1E0B0E01B
:107F20000E94834B802D853469F185EA95E09F930B
:107F30008F931F920E943A0A0E94EA3EC0E0D0E06E
:107F40000F900F900F900C2FC23039F0C33019F4FE
:107F50000E94C83D04C0C43010F00E94593E802FDA
:107F60000E94A33D2196C630D10569F7A2E0B0E09A
:107F700083E0082E0E94954BA1E0B0E085E4082E36
:107F80000E94954B02E010E0D8010E94834B802DA7
:107F90000E94B83DD8010E94834B802D90E09F93B2
:107FA0008F938CE895E09F938F931F920E943A0ADB
:107FB0000F900F900F900F900F90DF91CF911F9126
:107FC0000F91089597FD02C041E004C090958195FE
:107FD0009F4F4FEF68E671E00E94FC4AFC018B3531
:107FE000910554F08B5590408A35910538F484EB17
:107FF00090E08E1B9F0BFC0181E00FC0CF01855BE1
:1080000090408A35910518F4E45BF04005C088E69D
:1080100091E08E1B9F0BFC018FEFEE0FFF1FEB52C9
:10802000FA4F25913491992787FD9095B901689F62
:108030009001699F300D789F300D1124842F99276E
:1080400087FD9095AC01249FC001259F900D349F22
:10805000900D112408952AE530E0281B390BC90141
:108060000E94E23F08951F93CF93DF93EB01672BAC
:1080700029F4009719F480E090E091C097FF02C0C6
:108080001FEF01C011E0209729F48AE51802C00112
:10809000112485C09C01B901882777FD8095982F10
:1080A00026E0660F771F881F991F2A95D1F79E013A
:1080B000442737FD4095542F0E94314BF90137FF7B
:1080C00003C0F095E195FF4F31E0EA35F30734F452
:1080D000E557F94F8491282F30E047C04CE1E73A4B
:1080E000F4071CF02AE530E040C059E0ED38F50710
:1080F0001CF029E530E039C085E0EA3BF8071CF0C8
:1081000028E530E032C024E0E731F2071CF027E533
:1081100030E02BC033E0EE32F3071CF026E530E010
:1081200024C042E0E939F4071CF025E530E01DC029
:1081300052E0E233F5071CF024E530E016C081E0A0
:10814000E73EF8071CF023E530E00FC021E0ED3AF0
:10815000F2071CF022E530E008C0EF57F1401CF0B8
:1081600021E530E002C020E530E01C161D066CF46D
:10817000812F992787FD9095AC01249FC001259FF1
:10818000900D349F900D11240AC011162CF484EB2D
:1081900090E0821B930B03C0C901845B9040DF9188
:1081A000CF911F9108959F92AF92BF92CF92DF928D
:1081B000EF92FF920F931F937B018C015B016C0187
:1081C0009924C601B501A80197010E940F4B2E0DFD
:1081D0003F1D401F511F5695479537952795E21A29
:1081E000F30A040B150B82E0E816F10401051105F2
:1081F00038F0939488E2981619F079018A01E1CF5A
:10820000CA01B9011F910F91FF90EF90DF90CF90BD
:10821000BF90AF909F90089580912F06813059F5BF
:10822000809105068093740680912A0680937306D8
:108230008091130690911406A0911506B091160630
:108240008093810690938206A0938306B093840660
:108250008091230690912406A0912506B0912606D0
:108260008093910690939206A0939306B093940600
:1082700082E080932F0680914C06813099F58091A1
:10828000340690913506A0913606B091370680935A
:10829000750690937606A0937706B0937806809142
:1082A000380690913906A0913A06B0913B0680932A
:1082B000790690937A06A0937B06B0937C06809112
:1082C0003C0690913D06A0913E06B0913F068093FA
:1082D0007D0690937E06A0937F06B093800682E091
:1082E00080934C06809171068130D1F580915506BE
:1082F00090915606A0915706B09158068093890632
:1083000090938A06A0938B06B0938C0680915106B9
:1083100090915206A0915306B09154068093850621
:1083200090938606A0938706B0938806809159069D
:1083300090915A06A0915B06B0915C06B095A0950D
:10834000909581959F4FAF4FBF4F80938D0690932F
:108350008E06A0938F06B093900682E080937106FC
:1083600080912F06882359F080914C06882339F09C
:1083700080917106882319F081E080937206089538
:10838000482F8091A006843009F461C0853050F4F4
:108390008130D1F0813098F08230D9F0833009F00B
:1083A000D6C01CC0863009F487C0863008F461C08E
:1083B000873009F4A8C0883009F0C9C0B1C0453B76
:1083C00009F0C2C081E0A4C0423609F0BDC082E01D
:1083D0009FC0413009F0B8C083E09AC0463061F0D8
:1083E0004231D9F0423009F580E396E090939B0644
:1083F00080939A064D9607C08BEF95E090939B066D
:1084000080939A06C5969093990680939806019753
:1084100090939706809396060AC08DE496E0909319
:108420009B0680939A068596EECF1092A0068091C7
:10843000A006882309F48DC084E08093A006842FD1
:108440008F5F80939F068F5F80939E060895842F91
:1084500090E090939D0680939C0690919F06940FC8
:1084600090939F0680919E06890F80939E0685E0DB
:108470004FC0242F30E0322F222780919C0690910C
:108480009D06820F931F90939D0680939C0690916A
:108490009F06940F90939F0680919E06890F80936C
:1084A0009E06E0919606F09197068081813009F44E
:1084B0004BC0108286E02CC0E0919A06F0919B069A
:1084C0008091980690919906E817F90728F441934E
:1084D000F0939B06E0939A0690919F06940F9093D9
:1084E0009F0680919E06890F80939E0680919C0630
:1084F00090919D06019790939D0680939C06892BF1
:1085000041F587E005C080919F06481721F488E077
:108510008093A0060895E0919606F091970613C007
:1085200080919E06E0919606F0919706481759F4BF
:1085300081E0808395B1982795B90E940C418FEF17
:108540008093950601C010821092A00608951092A3
:10855000A0060895CF93DF93DC01EC01EA81FB8153
:1085600021918E81815019F48981E81BF109ED0177
:10857000FB83EA838E839FB7F8948C9181508C9310
:108580009FBF822F90E0DF91CF910895FC01108270
:10859000758364837383628341834783468308952D
:1085A000CF93DF93DC019C91ED018981981718F03E
:1085B00080E090E016C0ED01EC81FD8161938F8138
:1085C000815019F48981E81BF109ED018F83FD8346
:1085D000EC839FB7F8948C918F5F8C939FBF81E061
:1085E00090E0DF91CF910895FC0180818823E9F329
:1085F000CF010E94AA4290E00895FC018081882367
:1086000019F48FEF9FEF0895CF010E94AA4290E0E6
:1086100008951F920F920FB60F9211242F933F933C
:108620004F938F939F9380910309833021F084307F
:1086300009F06AC008C08EB58093A3061EBC84E012
:108640008093030961C08091A306992787FD9095C7
:10865000382F22278EB590E0282B392BC9018D5059
:108660009E4F875E9340D8F480910609823051F086
:10867000833071F0813081F4309308092093070929
:1086800082E00BC030930A092093090983E005C0FA
:1086900030930C0920930B0981E080930609449ADA
:1086A0001092030920910709309108098091090966
:1086B00090910A0928173907B1F4209107093091E0
:1086C000080980910B0990910C092817390759F472
:1086D0002091090930910A0980910B0990910C09A8
:1086E0002817390741F08091A106843168F4809100
:1086F000A1068F5F07C08091A106882329F0809191
:10870000A10681508093A1069F918F914F913F9137
:108710002F910F900FBE0F901F9018952F923F92A0
:108720004F925F926F927F928F929F92AF92BF9281
:10873000CF92DF92EF92FF920F931F93CF93DF932D
:10874000CDB7DEB766970FB6F894DEBF0FBECDBFCC
:108750008091A106882309F465C160910709709191
:1087600008092091FA08332727FD3095621B730B07
:10877000882777FD8095982FEAE0660F771F881F7E
:10878000991FEA95D1F72091FD083091FE08442702
:1087900037FD4095542F0E94314B29873A874B87EC
:1087A0005C876091090970910A092091FB083327C1
:1087B00027FD3095621B730B882777FD8095982FD6
:1087C0005AE0660F771F881F991F5A95D1F720919D
:1087D000FF0830910009442737FD4095542F0E942F
:1087E000314B2D873E874F87588B60910B097091D5
:1087F0000C092091FC08332727FD3095621B730B71
:10880000882777FD8095982F4AE0660F771F881F8D
:10881000991F4A95D1F72091010930910209442707
:1088200037FD4095542F0E94314B298B3A8B4B8B4F
:108830005C8B8091D40890E0845E9D4F68E671E087
:108840000E94FC4A8C010E94E23F9C01442737FDB4
:108850004095542F2D833E834F835887C8010E9433
:108860002B409C01442737FD4095542F29833A83A0
:108870004B835C8360911D0570911E0580911F05DF
:1088800090912005E090D308FF2433E0EE0CFF1C0C
:108890003A95E1F700E010E0A80197010E94314B02
:1088A00059016A01C9010E94E23F3C01C5010E94D1
:1088B0002B405C016091250570912605809127056C
:1088C00090912805A80197010E94314B79018A01F6
:1088D000C9010E94E23F9E8B8D8BC7010E942B40F5
:1088E0001C0169817A818B819C8129853A854B8520
:1088F0005C850E94BD4A7B018C016D817E818F81E8
:1089000098852D853E854F8558890E94BD4AE61A77
:10891000F70A080B190BC801B70120E030E240E06C
:1089200050E00E94314BCC24B7FCC094DC2CCA012F
:10893000B901A60195010E94BD4A5B016C01882422
:1089400077FC8094982CC401B30129893A894B891A
:108950005C890E94BD4AA61AB70AC80AD90A698169
:108960007A818B819C812D853E854F8558890E9417
:10897000BD4A7B018C016D817E818F81988529851F
:108980003A854B855C850E94BD4AE60EF71E081F9E
:10899000191FC801B70120E030E240E050E00E941A
:1089A000314B442437FC4094542CCA01B901A20134
:1089B00091010E94BD4A7B018C014D895E89BA01FB
:1089C000882777FD8095982F29893A894B895C897A
:1089D0000E94BD4AE60EF71E081F191FC601B50109
:1089E00020E030E240E050E00E94314B59016A0142
:1089F000C801B70120E030E240E050E00E94314B76
:108A0000DA01C901B5010E9433409C0197FF05C0FE
:108A100088279927821B930B13C088E691E0821B5D
:108A2000930B0EC08091D3049091D404892B31F420
:108A300084E690E09093D4048093D3048FEF9FEF6B
:108A400066960FB6F894DEBF0FBECDBFDF91CF9113
:108A50001F910F91FF90EF90DF90CF90BF90AF905C
:108A60009F908F907F906F905F904F903F902F904E
:108A7000089590910309913049F0913018F09230A7
:108A800091F525C04498459A81E01EC04598809193
:108A90000609823031F0833031F0813031F481E3E6
:108AA00009C082E307C083E305C0909306091092D2
:108AB000030908958EBD88E090E00E94130D909305
:108AC00005098093040982E0809303090895809149
:108AD0000409909105090E941C0D882321F01EBCF9
:108AE00083E08093030908952F923F924F925F9203
:108AF0006F927F928F929F92AF92BF92CF92DF92AE
:108B0000EF92FF920F931F93CF93DF93299A809157
:108B100000018A3011F4289801C0289A662477242D
:108B2000CC24DD2488249924EE24FF24AA24BB2409
:108B300000E010E022E3422E552495EE292E97E026
:108B4000392EE091B708F0E0EE0FFF1FEC5CF74F15
:108B5000808191818536910564F066247724CC2448
:108B6000DD2488249924EE24FF24AA24BB2400E0D9
:108B700010E08091070990910809C816D9062CF4D5
:108B8000C0900709D09008090BC080910709909107
:108B900008098615970524F4609007097090080964
:108BA0008091090990910A09E816F9062CF4E090E1
:108BB0000909F0900A090BC08091090990910A09EE
:108BC0008815990524F48090090990900A098091EC
:108BD0000B0990910C09081719072CF400910B0947
:108BE00010910C090BC080910B0990910C098A150A
:108BF0009B0524F4A0900B09B0900C09552081F43A
:108C000085B191E0892785B985B192E0892785B939
:108C100082E390E09093D4048093D304B2E35B2E7C
:108C20008AE090E00E94130DEC01CE010E941C0D21
:108C30008823D9F38091A2068F5F8093A20681508A
:108C40008F31D8F01F930F93BF92AF92FF92EF92A4
:108C50009F928F92DF92CF927F926F923F922F924C
:108C60001F920E943A0A1092A2068DB79EB70F96E5
:108C70000FB6F8949EBF0FBE8DBFE091B608F0E02E
:108C8000EE0FFF1FEC5CF74F8081918184369105D8
:108C90000CF44A94442011F05A9453CFC60186191B
:108CA00097099093FE088093FD08C70188199909D8
:108CB000909300098093FF08C8018A199B0990933B
:108CC000020980930109C3018C0D9D1D62E070E0D3
:108CD0000E94FC4A9B016093FA08C701880D991D08
:108CE00062E070E00E94FC4A6093FB08C8018A0DB4
:108CF0009B1D62E070E00E94FC4A6093FC08622FBA
:108D00008AE00E94823D6091FB088BE00E94823DD8
:108D10006091FC088CE00E94823D6091FD0870919A
:108D2000FE088DE00E94923D6091FF08709100095D
:108D30008FE00E94923D609101097091020981E1EA
:108D40000E94923DDF91CF911F910F91FF90EF9084
:108D5000DF90CF90BF90AF909F908F907F906F905B
:108D60005F904F903F902F9008951F931FB7F894F6
:108D700084B1806A84B9269887B1806387B988B145
:108D80008F7C88B983ED8CBD8DB58E7F8DBD81E0E4
:108D900080930609109203098AE00E94793D80932E
:108DA000FA088BE00E94793D8093FB088CE00E94DA
:108DB000793D8093FC088DE00E948A3D9093FE08E7
:108DC0008093FD088FE00E948A3D90930009809374
:108DD000FF0881E10E948A3D909302098093010976
:108DE0001092A1061FBF1F910895A8E0B0E0EBEF1D
:108DF000F6E40C94564B7B018C01611571058105DD
:108E0000910519F482E089835AC083E089838EE159
:108E1000C82ED12CDC82CB82ED82FE820F83188794
:108E2000C801B7010E946847BC016150704077FFDC
:108E300033C0EE27FF27E61BF70B20E030E040E0D1
:108E400050E081E090E0A0E0B0E00E2E04C0880F7A
:108E5000991FAA1FBB1F0A94D2F70197A109B10954
:108E60008E219F21A023B1230097A105B10521F0F8
:108E700021E030E040E050E004C016950795F794FB
:108E8000E794EA95D2F72E293F29402B512B2D83C9
:108E90003E834F8358870FC06115710581F0062E00
:108EA00004C0EE0CFF1C001F111F0A94D2F7ED82C4
:108EB000FE820F831887C61AD70ADC82CB821A82F9
:108EC000CE0101960E94B547E8E028960C94724BBB
:108ED000EF92FF920F931F939B01AC01203080E033
:108EE000380781E0480780E0580780F42F3F3105BC
:108EF0004105510509F020F4EE24FF24870119C033
:108F000068E0E62EF12C012D112D13C0203080E0F9
:108F1000380780E0480781E0580730F490E1E92EF7
:108F2000F12C012D112D05C088E1E82EF12C012D29
:108F3000112D80E290E0A0E0B0E08E199F09A00B17
:108F4000B10B04C05695479537952795EA94D2F70B
:108F5000F901EB54FC4F2081821B9109A109B10951
:108F60001F910F91FF90EF9008959F92AF92BF9243
:108F7000CF92DF92EF92FF920F931F93EE24FF2484
:108F80008701FC0124813581468157819180808150
:108F9000823010F44061A2C0843009F49BC082305A
:108FA00029F420E030E040E050E005C02115310513
:108FB0004105510519F4E0E0F0E092C0828193810F
:108FC0006FEF823896070CF05AC062E87FEF681B9B
:108FD000790B6A3171052CF020E030E040E050E080
:108FE0002AC0AA24BB24650181E090E0A0E0B0E0A3
:108FF000062E04C0880F991FAA1FBB1F0A94D2F720
:109000000197A109B10982239323A423B5230097D3
:10901000A105B10529F071E0A72EB12CC12CD12CEE
:1090200004C056954795379527956A95D2F72A2912
:109030003B294C295D29DA01C9018F779070A07016
:10904000B07080349105A105B10539F427FF09C03E
:10905000205C3F4F4F4F5F4F04C0215C3F4F4F4F4D
:109060005F4F80E090E0203060E0360760E0460728
:1090700060E4560710F081E090E0FC0123C08038E6
:10908000910544F5FC01E158FF4FDA01C9018F77E2
:109090009070A070B07080349105A105B10539F4CD
:1090A00027FF09C0205C3F4F4F4F5F4F04C0215C3A
:1090B0003F4F4F4F5F4F57FF05C056954795379528
:1090C0002795319687E056954795379527958A9548
:1090D000D1F706C020E030E040E050E0EFEFF0E0F4
:1090E000E22EF32E942F9F77802F8078892B9E2F4E
:1090F0009795992797958F77082F092B9E2F9695EF
:10910000812F8078892B9794992497948F77182FA3
:109110001929C801B7011F910F91FF90EF90DF90BF
:10912000CF90BF90AF909F900895FC014150504068
:1091300030F001900616D1F73197CF0108958827B6
:10914000992708955058BB27AA270ED079C16AD114
:1091500030F06FD120F031F49F3F11F41EF45FC165
:109160000EF4E095E7FB55C1E92F7BD180F3BA17E8
:10917000620773078407950718F071F49EF593C191
:109180000EF4E0950B2EBA2FA02D0B01B901900122
:109190000C01CA01A0011124FF27591B99F0593F66
:1091A00050F4503E68F11A16F040A22F232F342FAE
:1091B0004427585FF3CF469537952795A795F040FC
:1091C0005395C9F77EF41F16BA0B620B730B840B11
:1091D000BAF09150A1F0FF0FBB1F661F771F881FC9
:1091E000C2F70EC0BA0F621F731F841F48F4879521
:1091F00077956795B795F7959E3F08F0B3CF939510
:10920000880F08F09927EE0F9795879508950CD051
:1092100017C10FD140F006D130F021F45F3F19F0B3
:10922000F8C0511141C1FBC01CD198F39923C9F377
:109230005523B1F3951B550BBB27AA27621773075C
:10924000840738F09F5F5F4F220F331F441FAA1F10
:10925000A9F333D00E2E3AF0E0E830D091505040D0
:10926000E695001CCAF729D0FE2F27D0660F771F7E
:10927000881FBB1F261737074807AB07B0E809F060
:10928000BB0B802DBF01FF2793585F4F2AF09E3FF5
:10929000510568F0BEC008C15F3FECF3983EDCF3B7
:1092A000869577956795B795F7959F5FC9F7880F6E
:1092B000911D9695879597F90895E1E0660F771FC0
:1092C000881FBB1F621773078407BA0720F0621B51
:1092D000730B840BBA0BEE1F88F7E095089504D04A
:1092E0006894B111E1C00895C4D088F09F5790F000
:1092F000B92F9927B751A0F0D1F0660F771F881FBB
:10930000991F1AF0BA95C9F712C0B13081F0CBD0CD
:10931000B1E00895C8C0672F782F8827B85F39F06B
:10932000B93FCCF3869577956795B395D9F73EF419
:1093300090958095709561957F4F8F4F9F4F0895C1
:10934000E89409C097FB3EF49095809570956195DF
:109350007F4F8F4F9F4F9923A9F0F92F96E9BB2795
:109360009395F695879577956795B795F111F8CF11
:10937000FAF4BB0F11F460FF1BC06F5F7F4F8F4F7C
:109380009F4F16C0882311F096E911C0772321F072
:109390009EE8872F762F05C0662371F096E8862F0A
:1093A00070E060E02AF09A95660F771F881FDAF761
:1093B000880F9695879597F9089507D008F481E06E
:1093C000089503D008F48FEF0895990F0008550F02
:1093D000AA0BE0E8FEEF16161706E807F907C0F03B
:1093E00012161306E407F50798F0621B730B840B43
:1093F000950B39F40A2661F0232B242B252B21F41D
:1094000008950A2609F4A140A6958FEF811D811DBC
:10941000089597F99F6780E870E060E008959FEFF6
:1094200080EC089500240A941616170618060906FB
:10943000089500240A9412161306140605060895CA
:10944000092E0394000C11F4882352F0BB0F40F452
:10945000BF2B11F460FF04C06F5F7F4F8F4F9F4F92
:10946000089557FD9058440F551F59F05F3F71F014
:109470004795880F97FB991F61F09F3F79F087957B
:109480000895121613061406551FF2CF4695F1DF04
:1094900008C0161617061806991FF1CF8695710594
:1094A000610508940895E894BB2766277727CB01C8
:1094B00097F908950BD0C4CFB5DF28F0BADF18F0C4
:1094C000952309F0A6CFABCF1124EECFCADFA0F3CE
:1094D000959FD1F3950F50E0551F629FF001729F49
:1094E000BB27F00DB11D639FAA27F00DB11DAA1F68
:1094F000649F6627B00DA11D661F829F2227B00DB5
:10950000A11D621F739FB00DA11D621F839FA00D3F
:10951000611D221F749F3327A00D611D231F849F8F
:10952000600D211D822F762F6A2F11249F575040E6
:109530008AF0E1F088234AF0EE0FFF1FBB1F661F81
:10954000771F881F91505040A9F79E3F510570F03A
:1095500060CFAACF5F3FECF3983EDCF3869577951A
:109560006795B795F795E7959F5FC1F7FE2B880F35
:10957000911D9695879597F90895629FD001739FE5
:10958000F001829FE00DF11D649FE00DF11D929F9F
:10959000F00D839FF00D749FF00D659FF00D9927DE
:1095A000729FB00DE11DF91F639FB00DE11DF91F02
:1095B000BD01CF0111240895991B79E004C0991FC2
:1095C000961708F0961B881F7A95C9F7809508951D
:1095D000AA1BBB1B51E107C0AA1FBB1FA617B707D9
:1095E00010F0A61BB70B881F991F5A95A9F78095F5
:1095F0009095BC01CD01089597FB092E07260AD04E
:1096000077FD04D0E5DF06D000201AF4709561954F
:109610007F4F0895F6F7909581959F4F0895A1E2A9
:109620001A2EAA1BBB1BFD010DC0AA1FBB1FEE1FDC
:10963000FF1FA217B307E407F50720F0A21BB30B27
:10964000E40BF50B661F771F881F991F1A9469F7A3
:1096500060957095809590959B01AC01BD01CF01FF
:10966000089597FB092E05260ED057FD04D0D7DFAD
:109670000AD0001C38F450954095309521953F4F05
:109680004F4F5F4F0895F6F79095809570956195CF
:109690007F4F8F4F9F4F08952F923F924F925F922F
:1096A0006F927F928F929F92AF92BF92CF92DF92F2
:1096B000EF92FF920F931F93CF93DF93CDB7DEB757
:1096C000CA1BDB0B0FB6F894DEBF0FBECDBF0994EB
:1096D0002A88398848885F846E847D848C849B8442
:1096E000AA84B984C884DF80EE80FD800C811B8150
:1096F000AA81B981CE0FD11D0FB6F894DEBF0FBE7F
:10970000CDBFED010895F999FECFB2BDA1BDF89A84
:10971000119600B40895F7DF01921A94E1F70895C5
:10972000F2DFE02DF0DFF02D0895F999FECFB2BD04
:10973000A1BD00BC11960FB6F894FA9AF99A0FBE23
:109740000895F3DF012CF1DF112408950190EDDF7E
:089750001A94E1F70895FFCF20
:109758000A01FF64496E74656772616C50697463CD
:1097680068202020496E74656772616C526F6C6C5A
:1097780020202020416363506974636820202020E2
:1097880020202020416363526F6C6C202020202011
:10979800202020204779726F5961772020202020CF
:1097A8002020202052656164696E67486569676892
:1097B800742020204163635A20202020202020206C
:1097C80020202020546872757374202020202020C7
:1097D80020202020436F6D70617373486561646950
:1097E8006E672020566F6C746167652020202020EA
:1097F800202020205265636569766572204C657665
:10980800656C2020416E616C6F674F757431312033
:10981800202020204750534465764E6F727468208C
:1098280020202020475053446576456173742020DA
:10983800202020204750535F5069746368202020FF
:10984800202020204750535F526F6C6C202020202E
:10985800202020204163635F5A20202020202020E0
:10986800202020204D65616E4163635069746368F0
:10987800202020204D65616E416363526F6C6C201F
:1098880020202020496E74656772616C45727250A1
:1098980069746368496E74656772616C4572725267
:1098A8006F6C6C204D65616E496E745069746368A5
:1098B800202020204D65616E496E74526F6C6C09D2
:1098C800200000004E65757472616C50697463689D
:1098D80020202020526F6C6C4F66667365742020C0
:1098E80020202020496E74526F6C6C2A4661637484
:1098F8006F72202052656164696E674779726F5094
:1099080069746368446972656374436F7272526FF5
:109918006C6C202052656164696E674779726F527A
:109928006F6C6C20436F7272656374696F6E526FEF
:109938006C6C2020492D417474526F6C6C2020206F
:1099480020202020537469636B526F6C6C20202098
:1099580020202020FFFF010A6400007D0000FF0393
:109968000102030405060708090A48656C6C6F20A4
:10997800576F726C640000000000000000000000D7
:1099880000000000000000000000000000000000CF
:1099980000000000000000000000000000000000BF
:1099A80000000000000000000000000000000000AF
:1099B800000000000000000000000E016400FFFF2E
:1099C800FFFF90D0030090D00300ECFF17B7D13809
:1099D80030FB103A409696020A0000000000000092
:1099E800006446000064010000009608426567694B
:1099F8006E6E657200004E6F726D616C0000537080
:109A08006F727400000001020203030303040404DC
:109A180004040404040505050505050505050505F3
:109A280005050505050606060606060606060606D3
:109A380006060606060606060606060606060606BE
:109A480006060606060707070707070707070707A3
:109A5800070707070707070707070707070707078E
:109A6800070707070707070707070707070707077E
:109A7800070707070707070707070707070707076E
:109A88000707070707080808080808080808080853
:109A9800080808080808080808080808080808083E
:109AA800080808080808080808080808080808082E
:109AB800080808080808080808080808080808081E
:109AC800080808080808080808080808080808080E
:109AD80008080808080808080808080808080808FE
:109AE80008080808080808080808080808080808EE
:109AF80008080808080808080808080808080808DE
:069B08000808080808002F
:00000001FF
/branches/V0.68d CRK HexaLotte/Hex-Files/Flight-Ctrl_MEGA644p_CMPS03_V0_68d.hex
0,0 → 1,2369
:100000000C94C8030C94E5030C94E5030C94E503ED
:100010000C94E5030C94E5030C94E5030C94E503C0
:100020000C94E5030C94A30D0C94E5030C94E503E8
:100030000C94D4180C94E5030C94E5030C949918D3
:100040000C94E5030C94E5030C94CC0C0C94E503A0
:100050000C94E2080C94E5030C94F8050C94E50369
:100060000C94780E0C94E5030C94E1170C94E503C2
:100070000C949A420C94E5030C94E5030A0A0D00D3
:100080004E65757472616C0048656164696E67489D
:100090006F6C64000A0D436F6E74726F6C3A2000CF
:1000A0000A0D537570706F727420666F722047501E
:1000B0005320617420326E642055415254000A0D61
:1000C000537570706F727420666F722047505320A2
:1000D0006174203173742055415254004F4B0A0D06
:1000E000000A0D43616C6962726174696E67206118
:1000F00069722070726573737572652073656E73B3
:100100006F722E2E000A0D537570706F7274206618
:100110006F7220436F6D70617373204D6F64756CE7
:100120006520434D50533033000A0D414343206E48
:100130006F742063616C6962726174656421000A86
:100140000D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D0F
:100150003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D000C
:100160000A0D466C69676874436F6E74726F6C0A2F
:100170000D48617264776172653A25642E25640AC0
:100180000D536F6674776172653A5625642E256447
:10019000256320002E00416C743A2025642E252E04
:1001A0003364206D004C61743A2025642E252E3373
:1001B00064252E336420646567004C6F6E3A2025F9
:1001C000642E252E3364252E336420646567005326
:1001D0006174733A202564204669783A203F3F00D5
:1001E000536174733A202564204669783A20334479
:1001F00000536174733A202564204669783A2032AE
:100200004400536174733A202564204669783A208B
:100210004E6F004E6F206461746120617661696C7D
:1002200061626C65210048693A2534692020436683
:100230003A253469200047733A25346920205961F2
:100240003A253469200050693A2534692020526FDC
:100250003A253469200045787465726E436F6E7478
:10026000726F6C20200052616E67653A2533692DEC
:1002700025336900506F736974696F6E3A202533B6
:100280006900536574706F696E74202025336900AE
:10029000536572766F202000506F343A2025336901
:1002A00020506F383A2025336900506F333A2025AB
:1002B000336920506F373A2025336900506F323A46
:1002C0002025336920506F363A2025336900506F5E
:1002D000313A2025336920506F353A2025336900A3
:1002E0004F6666436F757273653A2025356900481D
:1002F000656164696E673A20202025356900436F87
:10030000757273653A2020202025356900436F6D92
:1003100070617373202020202020200052432D4C38
:100320006576656C3A2025356900566F6C74616797
:10033000653A20202535690048656967687420257D
:10034000346920282533692900526F6C6C202020E5
:100350002534692028253369290050697463682091
:100360002025346920282533692900414343202D65
:100370002053656E736F72005961772020202534F9
:100380006920282533692900526F6C6C20202534A0
:100390006920282533692900506974636820253451
:1003A00069202825336929005961772020202534C8
:1003B0006920282533692900526F6C6C2020253470
:1003C0006920282533692900506974636820253421
:1003D00069202825336929004779726F202D205321
:1003E000656E736F720050333A25346920205034A3
:1003F0003A253469200050313A25346920205032A2
:100400003A253469200047733A2534692020596120
:100410003A253469200050693A2534692020526F0A
:100420003A253469200043373A253469202043387F
:100430003A253469200043353A2534692020433673
:100440003A253469200043333A2534692020433467
:100450003A253469200043313A253469202043325B
:100460003A2534692000436F6D706173733A202020
:100470002025356900526F6C6C3A20202020202006
:100480002535690050697463683A202020202025B2
:1004900035690041747469747564650048656967FD
:1004A000687420436F6E74726F6C004E6F20004F43
:1004B0006666736574202020203A253569004169FD
:1004C000722050726573732E3A2535690053657436
:1004D00020506F696E743A20253569004865696758
:1004E00068743A2020202025356900286329204897
:1004F0006F6C67657220427573730053657474691D
:100500006E673A202564200048573A5625642E2508
:10051000642053573A25642E25642563002B204D13
:10052000696B726F4B6F70746572202B005B25696D
:100530005D005B25695D000A0D5573696E6720508B
:100540006172616D65746572205365742025640065
:100550000A0D496E69742E20454550524F4D3A2080
:1005600047656E65726174696E6720446566617582
:100570006C742D506172616D657465722E2E2E0043
:1005800000008F001E01AD013B02CA025803E603C2
:10059000740402058F051B06A7063307BE0748082B
:1005A000D2085B09E3096B0AF20A780BFD0B810C98
:1005B000040D860D070E870E060F840F00107B10AA
:1005C000F5106E11E5115B12CF124213B313231411
:1005D0009214FE146A15D3153B16A116051767175A
:1005E000C81727188318DE1837198E19E319361A19
:1005F000871AD61A231B6E1BB61BFD1B411C831CBE
:10060000C31C001D3C1D751DAB1DE01D121E421EAE
:100610006F1E9A1EC31EE91E0D1F2E1F4D1F691F40
:10062000841F9B1FB01FC31FD31FE11FEC1FF51FAB
:10063000FB1FFF1F0020000102030404050607083A
:10064000090A0B0B0C0D0E0F1011111213141515B6
:1006500016171818191A1B1B1C1D1D1E1F1F2021E1
:100660002122232324242525262727282829292A2F
:100670002A2B2B2C2C2D2D2D2E2E2F2F30303031A0
:10068000313232323333333434343535353636362D
:1006900037373737383838393939393A3A3A3A3BCF
:1006A0003B3B3B3C3C3C3C3C3D3D3D3D3E3E3E3E81
:1006B0003E3F3F3F3F3F3F4040404040404141413F
:1006C0004141414242424242424243434343434307
:1006D00043444444444444444445454545454545D4
:1006E00045454646464646464646464747474747A7
:1006F0004747474747474848484848484848484880
:100700004849494949494949494949494949494A59
:100710004A4A4A4A4A4A4A4A4A4A4A4A4A4B4B4B36
:100720004B4B4B4B4B4B4B4B4B4B4B4B4B4B4C4C17
:100730004C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4CF9
:100740004C4D4D4D4D4D4D4D4D4D4D4D4D4D4D4DDA
:100750004D4D4D4D4D4D4D4E4E4E4E4E4E4E4E4EC0
:100760004E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4EA9
:100770004E4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F8A
:100780004F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F79
:1007900011241FBECFEFD0E1DEBFCDBF14E0A0E03B
:1007A000B1E0E0E4F0E902C005900D92AA3BB10788
:1007B000D9F719E0AAEBB4E001C01D92AC39B1073A
:1007C000E1F70E94E7030C941F480C940000CF93BC
:1007D000DF93F89414B815B8189B02C08BE001C0E1
:1007E0008AE08093000184B1836084B92091000184
:1007F0002A3011F4289A01C02898299884B7877F55
:1008000084BF8091600088618093600010926000D6
:1008100080ED97E09093D8048093D70410923D0820
:1008200010923C0810926E0510926D0510926C05A6
:1008300010926B0510926A05109269052A3011F426
:10084000289801C0289A0E9431170E94820C0E94A9
:10085000800D0E949E05809100018B3011F40E9452
:100860003D420E9465180E945B0E0E948A170E94FA
:10087000C542789410923E0784E480933F0787E056
:100880008093400720910001822F6AE00E94504728
:10089000492F50E0822F0E94504790E024E630E03C
:1008A0003F932F9324E430E03F932F931F921F92A6
:1008B0005F934F939F938F9380E691E09F938F93E5
:1008C0001F920E94DE098FE391E09F938F931F9206
:1008D0000E94DE09299A0E94BE3E84E00E94BE3C2E
:1008E0002DB73EB7205F3F4F0FB6F8943EBF0FBE07
:1008F0002DBF8050944050F089E291E09F938F93F8
:100900001F920E94DE090F900F900F9084EF91E0EC
:100910000E94B70CEC01CE010E94C00C8823D9F3D1
:1009200085E091E09F938F931F920E94DE09809152
:10093000C0080F900F900F9080FF20C081EE90E0D4
:100940009F938F931F920E94DE0988EE93E00E948E
:10095000B70CEC010E94FC100F900F900F90CE018D
:100960000E94C00C8823D9F38CED90E09F938F9365
:100970001F920E94DE090F900F900F90809100014E
:100980008A3019F48EEB90E002C080EA90E09F93E9
:100990008F931F920E94DE090F900F900F900E947C
:1009A0002E22809100018A3011F4289801C0289AE3
:1009B00080ED97E09093D8048093D70485E58093E9
:1009C000480784E990E09F938F931F920E94DE096D
:1009D0008091C0080F900F900F9082FF03C088E8AD
:1009E00090E002C080E890E09F938F931F920E9456
:1009F000DE090F900F900F908CE790E09F938F93FC
:100A00001F920E94DE090E943C1188E893E19093B6
:100A10006D0380936C030F900F900F908091D4041E
:100A20008823E1F31092D4040E9480230E940322C1
:100A3000209100012A3011F4289801C0289A809151
:100A40000301882321F081508093030112C010928A
:100A5000C6041092C70410925207109276051092A5
:100A60007505109278051092770510927A0510920C
:100A7000790580916C0390916D03892B01F585E0D8
:100A800090E090936D0380936C030E94B117809166
:100A90000403909105038F5F9F4FF9F480915705F0
:100AA0008823D9F080E197E29093D8048093D7040B
:100AB00080E890E090930503809304030EC080913A
:100AC0006C0390916D03019790936D0380936C0379
:100AD0002A3011F4289801C0289A8091D4048823E0
:100AE00011F40E942F070E94D707CE010E94C00C6C
:100AF000882309F493CF2091080330910903809152
:100B0000D00890E0281739079CF480910403909155
:100B100005038F5F9F4F61F480E797E19093D804BE
:100B20008093D70480E093E09093050380930403BF
:100B300084E690E00E94B70CEC0170CF9FB7F89468
:100B40008091C1008F778093C1008091C1008F7B1D
:100B50008093C100589A5098599A519A1092C500A2
:100B60008AE28093C4008091C00082608093C000BC
:100B700088E18093C1008091C2008F778093C2008A
:100B80008091C2008F7B8093C2008091C2008F7DD4
:100B90008093C2008091C2008F7E8093C2008091BA
:100BA000C200877F8093C2008091C1008B7F8093B9
:100BB000C1008091C20084608093C2008091C20015
:100BC00082608093C20002C08091C6008091C00004
:100BD00087FDFACF8091C10080688093C100809129
:100BE000C10080648093C1001092BE049FBF08952D
:100BF0001F920F920FB60F9211248F939F93EF9332
:100C0000FF93809101018823E1F48091D0049091B9
:100C1000D10401969093D1048093D004FC01EB564B
:100C2000F84FE081ED3019F08639910539F41092D2
:100C3000D1041092D00481E080930101E093C600BA
:100C400004C01092D1041092D004FF91EF919F91B3
:100C50008F910F900FBE0F901F901895DC0120E030
:100C600030E040E050E008C0FA01EB56F84F8081D8
:100C7000280F311D4F5F5F4F4A175B07A9F73F7081
:100C8000C90136E0969587953A95E1F7835CFD01B9
:100C9000EB56F84F808311962F73235CFD01EB56C2
:100CA000F84F2083AA56B84F8DE08C931092010123
:100CB000809195078093C60008951F93CF93DF938B
:100CC000EA01722F93E290939507609396078093C1
:100CD0009707A3E0B0E060E04FC0FE01E60FF11D12
:100CE00090816F5F715019F410E040E00FC0FE0179
:100CF000E60FF11D40816F5F715011F410E006C0E6
:100D0000FE01E60FF11D10816F5F7150892F8695EE
:100D10008695835CFD01EB56F84F808350E09A0185
:100D200084E0369527958A95E1F7892F90E08370C6
:100D30009070F4E0880F991FFA95E1F7282B235C57
:100D4000FD01EA56F84F2083812F8295869586957E
:100D500083704F705070440F551F440F551F842BE4
:100D6000835CFD01E956F84F80831F73135CFD011E
:100D7000E856F84F10831496772309F0AECFCD01D3
:100D80000E942E06DF91CF911F9108951F93CF935C
:100D9000DF93EC0170E0A22FB0E0129748C0E42F7F
:100DA000F0E0E855F94F30814F5FE42FF0E0E8556F
:100DB000F94F50814F5FE42FF0E0E855F94F108173
:100DC0004F5FE42FF0E0E855F94F20814F5F842F0B
:100DD00090E0A817B90774F15D53FE01E70FF11D0C
:100DE000852F82958F703D53330F330F382B30830F
:100DF000613001F1912F9D537F5FFE01E70FF11DDF
:100E000071505295507F892F86958695582B508327
:100E100063506F3F79F07E5FFE01E70FF11D929501
:100E2000990F990F907C2D53922B90837F5F6623AF
:100E300009F0B5CFDF91CF911F9108951F93182F1F
:100E40008A3019F48DE00E941E078091C00085FF52
:100E5000FCCF1093C60080E090E01F910895809130
:100E60000101882309F4A2C08091BA04882371F09B
:100E700080910101882351F06091CA042BE048E47D
:100E800057E087E40E945D061092BA048091CB047B
:100E90009091CC040E94C00C882321F48091BC0462
:100EA0008823B1F080910101882391F06091CA04F8
:100EB00022E443E557E084E40E945D061092BC04FE
:100EC00084EF91E00E94B70C9093CC048093CB0404
:100ED000609102016F3F89F0462F50E094E0440F8B
:100EE000551F9A95E1F74C5F5E4F605D20E181E40C
:100EF0000E945D068FEF8093020190912B08992349
:100F0000A1F080910101882381F083E2809395070D
:100F1000909396078DE080939707109201011092AD
:100F20002B08809195078093C6008091BB0488238D
:100F300059F180910101882339F10E9445111092E5
:100F4000BB043091C004932F9F5F9093C0049430F2
:100F500021F08091C104882359F02EE148E358E044
:100F600060E084E30E945D068FEF8093C0040CC0B4
:100F700044E1949FA0011124465E5C4F24E160E0AF
:100F8000832F8F5C0E945D068091BD04882371F0E1
:100F900080910101882351F06091CA042AE04EE358
:100FA00057E086E50E945D061092BD0408951F93E8
:100FB000CF93DF93CDB7DEB722970FB6F894DEBF9D
:100FC0000FBECDBF8091BE04882309F4F1C08FEF1E
:100FD000809303018091AA068B3609F479C08C3680
:100FE00088F48336D1F1843630F48136C1F082360C
:100FF00009F0DCC020C0873609F47BC0883609F0D0
:10100000D5C042C0813709F478C0813708F49BC04D
:10101000843709F454C0863709F0C8C066C02091EF
:10102000BF0443E062E0CE0101960E94C6068981BA
:1010300080930201BBC02091BF0443E06BE088E4D1
:1010400097E00E94C6068091FA0490914A07892B86
:101050008093FA048091510745C02091BF0443E07A
:101060006BE088E497E00E94C6068091FA049091B4
:101070004A07892B8093FA048091510780932B08AB
:1010800081E08093BC0492C02091BF0443E062E001
:10109000CE0101960E94C6068091FA049981892B9F
:1010A0008093FA048A818F3F21F481E08093C10408
:1010B00002C01092C10481E08093BB0477C02091EC
:1010C000BF0443E064E082EC94E00E94C6066EC078
:1010D0002091BF0443E064E086EC94E00E94C606E1
:1010E0008091C90480932B0861C081E08093BD0486
:1010F0005DC081E08093BA0459C02091BF0443E0F1
:1011000062E0CE0101960E94C60689818F3F71F090
:10111000863010F085E0898389810E94EC3C6091E3
:10112000CA04898126E448EB58E009C01091CA043A
:1011300082E00E94AD3C26E448EB58E0612F855BDD
:101140000E945D0633C02091BF0443E066E488EB53
:1011500098E00E94C6068091AA068B560E94D73C52
:101160006091E30870E080E090E024EC39E040E03A
:1011700050E00E9431476093720370937303809331
:101180007403909375036091E40870E080E090E050
:101190000E943147609376037093770380937803BE
:1011A000909379030E94AF3E0E946B231092BE047D
:1011B00022960FB6F894DEBF0FBECDBFDF91CF9160
:1011C0001F9108951F920F920FB60F9211241F9333
:1011D0002F933F934F935F936F937F938F939F933F
:1011E000AF93BF93CF93DF93EF93FF931091C6001C
:1011F000809100018A3019F4812F0E94F44080917F
:10120000BE04882309F06DC06091CD04662371F49B
:10121000133279F41093A80681E08093CD0483E221
:1012200090E09093CF048093CE045BC0663908F0C1
:1012300054C0A62FB0E02091CE043091CF041D30D1
:1012400069F0A855B94F1C936F5F6093CD04210FCF
:10125000311D3093CF042093CE0443C0FD01EA55E5
:10126000F94F9081ED01C955D94F8881A901491BDA
:101270005109481B51095F705093CF044093CE042D
:101280002081CA0136E0969587953A95E1F7835C0F
:101290008217F1F49881842F8F73835C8917C1F4CE
:1012A00081E08093BE046093BF04A855B94F1C939E
:1012B0008091AA06823571F488E190E02CE00FB6A7
:1012C000F894A895809360000FBE2093600002C040
:1012D0001092BE041092CD0404C01092CD0410925E
:1012E000BE04FF91EF91DF91CF91BF91AF919F919C
:1012F0008F917F916F915F914F913F912F911F91AE
:101300000F900FBE0F901F901895982F80912C086A
:10131000813069F48091F904E82FF0E0E65EFC4F3B
:1013200090838F5F8093F90421E030E005C0892F1E
:101330000E941E07282F30E0C90108951F93182F1F
:1013400004C080E30E94850911501116D4F31F9147
:1013500008951F93182F04C080E20E948509115040
:101360001116D4F31F9108950F931F93CF93DF931A
:101370008C01EB0108C0F8010F5F1F4FE4918E2F25
:101380000E94850921972097B1F7DF91CF911F9196
:101390000F9108950F931F93CF93DF938C01EB016F
:1013A00006C0F80181918F010E948509219720973D
:1013B000C1F7DF91CF911F910F9108952F923F9226
:1013C0004F925F926F927F928F929F92AF92BF9255
:1013D000CF92DF92EF92FF920F931F93CF93DF9301
:1013E000CDB7DEB7E5970FB6F894DEBF0FBECDBF21
:1013F0002B968FAD2B9780932C08CE01835B9F4F4C
:101400009B838A832D964EAC5FAC2D971EA61FA69C
:1014100018AA19AA9E01225D3F4F3DAB2CAB820159
:1014200002C00F5F1F4FF801F490FF2019F0F5E2A2
:10143000FF16B9F7B8016419750919F0C2010E94C5
:10144000B409FF2009F445C228010894411C511C2D
:101450001982AA81BB8133241BAA2FEF2AABF20188
:101460000894411C511CB490632D70E06170707041
:1014700035E7B31621F08B2D80628837C9F46115EA
:10148000710559F02D913D914D915C9113972EA7C7
:101490003FA748AB59AB14960BC08D919C91119707
:1014A0009C0140E050E02EA73FA748AB59AB1296F5
:1014B00030E2B31621F48981882389F61CC043E207
:1014C000B41611F458E055C08AE2B81621F09DE236
:1014D000B91671F408C0FD011296E081EBABE7FF8D
:1014E000BECFE195EBABE0E13E2AFFED3F22B7CF67
:1014F0002BE2B21611F4B982B2CF3EE2B31699F5DF
:10150000F2010894411C511C84918A3221F0B82EBA
:1015100020E030E01DC0FD0112964081518157FF4F
:1015200002C04FEF5FEF4AAB9ACFC90153E0880F7B
:10153000991F5A95E1F7220F331F280F391F2B0DE2
:10154000311D20533040F2010894411C511CB490CD
:101550008B2D80538A3048F3A90137FF02C04FEF2B
:101560005FEF4AAB85CF40E3B41629F434FC77CF64
:1015700050E2352A74CF8B2D81538930D8F420E086
:1015800030E0C90103E0880F991F0A95E1F7220FA7
:10159000331F280F391F2B0D311D20533040F2010E
:1015A0000894411C511CB4908B2D80538A3048F311
:1015B0002BAB5ECF88E6B81619F494E0392A4FCFEA
:1015C000ECE6BE1619F4F1E03F2A49CFBB83AA83AB
:1015D00023E6B21639F41296BB83AA8312978C9134
:1015E0008E8322C134E4B31639F044E6B41631F0E8
:1015F00059E6B516A9F502C081E0382A30FE08C0C8
:101600001496BB83AA835E914E913E912E910AC09F
:101610001296BB83AA839E918E919C01442737FD2D
:101620004095542F2EA73FA748AB59AB8EA59FA539
:10163000A8A9B9A9BB238CF42EA53FA548A959A9EF
:1016400050954095309521953F4F4F4F5F4F2EA7B6
:101650003FA748AB59AB8DE28983BAE02B2E80C0FF
:101660003FE4B31621F04FE6B41631F402C051E066
:10167000352AA8E02A2E73C080E7B81689F412969E
:10168000BB83AA839E918E919C0140E050E02EA7DF
:101690003FA748AB59AB30E4332AF8E7BF2E5DC013
:1016A00043E7B416D1F51296BB83AA83DE90CE90A1
:1016B000C114D10489F488E28E838EE68F8385E796
:1016C00088878CE689878A8789E28B871C86E6E093
:1016D000CE2ED12CCC0EDD1E5AA957FD14C0452F9D
:1016E000552747FD509560E070E0C6010E9409450E
:1016F000009711F4FAA80EC0F82EFC188AA98F15CD
:101700004CF4F82E07C0F60101900020E9F731975C
:10171000FE2EFC18198240E090C095E5B91621F024
:10172000A5E7BA1631F402C0B1E03B2A7AE0272ED1
:1017300016C0E8E5BE1621F0F8E7BF1609F070C044
:1017400033FE0BC02EA53FA548A959A92115310587
:101750004105510511F030E4332A60E1262E19824B
:101760004AA947FD02C05FED35228EA59FA5A8A915
:10177000B9A90097A105B10549F49AA9992331F4B3
:101780005EE2C52ED12CCC0EDD1E46C06EA47FA419
:1017900088A899A84EE2C42ED12CCC0EDD1EE22CD6
:1017A000FF2400E010E06EA57FA588A999A9A801F3
:1017B00097010E9483476A3020F430E3A32EA60EDF
:1017C00008C027E5A22EA60EA8E5BA1611F4BFEDB3
:1017D000AB22F601A2926F016EA57FA588A999A9F7
:1017E000A80197010E9483472EA73FA748AB59AB9A
:1017F0006E147F048006910618F039014A01D3CF98
:10180000F8E02F1649F433FE07C020E3A21621F0BA
:1018100080E3D6018E936D01FCA8FC184AA90DC087
:10182000BB2009F456C0BE82198296E0C92ED12C85
:10183000CC0EDD1E40E0FF24F394E42EEF18E7FC0D
:10184000EE248981882319F08F2D8F5F06C036FC26
:1018500002C08F2D02C08F2D8E5FA82EAE0C032DDF
:1018600010E080E3882E912C802291228114910433
:1018700021F48BA98A190E94A9098981882329F05A
:1018800061E070E0CE01019609C006FF09C080E367
:101890008C83BD8262E070E0CE0104960E94CA098A
:1018A000B0E28B16910421F48BA98A190E949E093B
:1018B0008E2D0E949E096F2D772767FD7095C601BA
:1018C0000E94CA0904FFABCD8BA98A190E94A909FD
:1018D000A6CDE5960FB6F894DEBF0FBECDBFDF9163
:1018E000CF911F910F91FF90EF90DF90CF90BF901D
:1018F000AF909F908F907F906F905F904F903F90B0
:101900002F9008952FB7F894909100019A3019F410
:10191000529A5A9802C03F9A479884B1886184B914
:1019200085B1877E85B99A3019F4529A5A9802C0C7
:101930003F9A479884B58F7A84BD84B5836A84BD05
:1019400085B5877385BD85B5887F826085BD17BCE9
:1019500088E788BD16BC80916E00897F80936E00F9
:1019600080916E00816080936E002FBF089520915A
:10197000D2043091D3042F5F3F4F820F931F0895FD
:101980002091D2043091D304821B930B892F992785
:101990008695807490E008951F920F920FB60F9273
:1019A00011242F933F934F935F936F937F938F9364
:1019B0009F93AF93BF93EF93FF938091D90481508E
:1019C0008093D9048F3FB9F489E08093D904809142
:1019D00006038F5F817080930603882319F481E0EA
:1019E0008093D4048091D2049091D3040196909373
:1019F000D3048093D2048091D7049091D804892B8A
:101A0000B1F08091D7049091D80401979093D804B5
:101A10008093D7042091D7043091D8048091040397
:101A20009091050382239323892BE1F406C08FEF65
:101A30009FEF9093050380930403809100018A3007
:101A400039F404C05A9A05C0479A03C05A9801C095
:101A500047988091C00883FD02C085FF08C00E949E
:101A6000CA4205C0809100018A3071F7EBCFFF9127
:101A7000EF91BF91AF919F918F917F916F915F9106
:101A80004F913F912F910F900FBE0F901F9018957F
:101A9000AC012091D2043091D3042F5F3F4F05C099
:101AA00080917A00886C80937A008091D204909122
:101AB000D304B901681B790BCB01840F951F80708B
:101AC0009078892F99278695882351F30895AC0142
:101AD0002091D2043091D3042F5F3F4F8091D204E4
:101AE0009091D304B901681B790BCB01840F951F2A
:101AF00080709078892F99278695882379F30895A7
:101B00009FB7F894579A5F9AE0EBF0E080818F7866
:101B10008083808183688083E1EBF0E0808186733D
:101B200080838081866080838AE08093B3001092F6
:101B3000B200E0E7F0E080818A7F8083808182606C
:101B400080839FBF08951F920F920FB60F921124AA
:101B5000FF920F931F932F933F934F935F936F9336
:101B60007F938F939F93AF93BF93EF93FF93809156
:101B700007038150809307038F3F09F082C0809153
:101B8000B0008093B0008091B00080688093B00076
:101B90008091910390E09093DB048093DA0480912C
:101BA000ED08F090DA0880FF23C00091DA0410916C
:101BB000DB046091210570912205809123059091AD
:101BC000240520E830E040E050E00E94A547CA012B
:101BD000B9012F2D30E040E050E00E94314720E075
:101BE00032E040E050E00E94A547020F131F22C0E0
:101BF0000091DA041091DB046091210570912205B7
:101C0000809123059091240520E830E040E050E0E9
:101C10000E94A547CA01B9012F2D30E040E050E0F5
:101C20000E94314720E032E040E050E00E94A547AA
:101C3000021B130B1093DB040093DA042091DA04E7
:101C40003091DB048091DB0890E02817390754F0CD
:101C50002091DA043091DB048091DC0890E0821757
:101C6000930724F49093DB048093DA048091DA04E0
:101C70009091DB048093B3008091DD08809307038B
:101C800006C08091B0008F738093B0005F98FF9181
:101C9000EF91BF91AF919F918F917F916F915F91E4
:101CA0004F913F912F911F910F91FF900F900FBE79
:101CB0000F901F9018959FB7F89411B812B88FEF36
:101CC00080937E00ECE7F0E080818F7180838081DB
:101CD000807E8083AAE7B0E087E28C93EBE7F0E0B8
:101CE0008081887F80838C91886C8C939FBF0895BE
:101CF0001F920F920FB60F921124EF92FF920F9343
:101D00001F932F933F934F935F936F937F938F9383
:101D10009F93AF93BF93CF93DF93EF93FF93809104
:101D20007A00877380937A008091F7048F5F8093A5
:101D3000F7048150853009F47EC0863090F48230FB
:101D400009F440C0833030F48823F1F0813009F089
:101D500027C22FC0833009F441C0843009F020C26B
:101D60005AC0883009F4B2C0893038F4863009F49A
:101D700073C0873009F014C28CC0893009F4C3C025
:101D80008A3009F00DC29EC180917800909179004F
:101D90009093F6048093F50481E08093F804809199
:101DA000EC049091ED0401969093ED048093EC0483
:101DB000FBC180917800909179009093F404809316
:101DC000F30482C080917800909179009093F2049E
:101DD0008093F10484E08093F804E6C14091080305
:101DE0005091090380917800909179009A01220F17
:101DF000331F240F351F63E070E00E945C47260FFD
:101E0000371F3695279536952795309309032093EC
:101E1000080386E0E0CF80911B0590911C0520917E
:101E2000780030917900821B930B9093E5048093A6
:101E3000E40487E0D0CF80917800909179002091E0
:101E4000190530911A05821B930B9093E704809338
:101E5000E6041092F804A8C1809100012091F504D5
:101E60003091F6048A3049F480917800909179009D
:101E7000820F931F9695879506C080917800909168
:101E80007900820F931F9093E3048093E20481E032
:101E9000A2CF809100012091F3043091F4048A30A4
:101EA00049F48091780090917900820F931F969564
:101EB000879506C08091780090917900820F931FDA
:101EC0009093E1048093E00482E085CF809100014B
:101ED0002091F1043091F2048A3049F48091780025
:101EE00090917900820F931F9695879506C08091F7
:101EF000780090917900820F931F9093DF04809374
:101F0000DE0485E068CF6091780070917900E09000
:101F10001D05F0901E0500911F05109120058827D2
:101F200077FD8095982F0E941646A80197010E9480
:101F300016450E94E3457093E9046093E804E0913C
:101F4000E804F091E9048091E6049091E704C091DF
:101F5000E404D091E50497FF03C0909581959F4FCD
:101F600064E070E00E9470479B01CE01D7FF03C080
:101F7000909581959F4F64E070E00E947047260F16
:101F8000371FE20FF31FF093E904E093E804809118
:101F9000E8049091E904029704F160911D057091A5
:101FA0001E0580911F059091200520E030E048E457
:101FB00054E40E94514688230CF03CC060911D05FA
:101FC00070911E0580911F05909120052AE037ED44
:101FD00043EA5CE30E94174525C08091E804909194
:101FE000E9048F5F9F4F34F560911D0570911E05C8
:101FF00080911F059091200520E030E046E154E4F7
:102000000E9455461816B4F460911D0570911E0586
:1020100080911F05909120052AE037ED43EA5CE3AB
:102020000E94164560931D0570931E0580931F0541
:102030009093200580917800909179009093DD0431
:102040008093DC0420915105309152054091530555
:10205000509154058091E8049091E904AA2797FDD6
:10206000A095BA2F820F931FA41FB51F809351050F
:1020700090935205A0935305B0935405E0905105F9
:10208000F09052050091530510915405609151054F
:1020900070915205809153059091540520E034E0F1
:1020A00040E050E00E94A547E21AF30A040B150B2A
:1020B000E0925105F0925205009353051093540598
:1020C00083E089CE60917800709179008091EE0470
:1020D0009091EF04680F791F7093EF046093EE0402
:1020E0008091F0048F5F8093F004853008F458C02D
:1020F000809178009091790090930F0380930E0364
:1021000080912D0890912E08861B970B20917B05BE
:1021100030917C05821B930B9093EB048093EA042F
:10212000E0900A03F0900B0300910C0310910D0353
:10213000882777FD8095982FA8019701220F331FDC
:10214000441F551F2E0D3F1D401F511F620F731F4F
:10215000841F951F24E030E040E050E00E94A54736
:1021600020930A0330930B0340930C0350930D0309
:1021700020912D0830912E0880910A0390910B0335
:10218000A0910C03B0910D03281B390B30937C05F3
:1021900020937B051092F0041092EF041092EE044D
:1021A0001092F8041092F70480917C00807E909148
:1021B000F804892B80937C008091F704882329F010
:1021C00080917A00886C80937A00FF91EF91DF9183
:1021D000CF91BF91AF919F918F917F916F915F91BF
:1021E0004F913F912F911F910F91FF90EF900F9082
:1021F0000FBE0F901F9018951F93CF93DF9383E02E
:102200000E94AD3C182F853108F01A5017BD84E6A6
:1022100090E00E94480D80910E0390910F0382552B
:102220009340C0F410E016C017BD82E390E00E9416
:10223000480DDF93CF931F920E94DE0980910E0319
:1022400090910F030F900F900F908458934030F0AF
:102250001F5F02C0C4E9D1E01A3F30F3612F83E071
:102260000E94B63C10932F088CE291E00E94480D2A
:10227000DF91CF911F910895EAE1F3E080E281932D
:1022800083E0EA36F807D1F708959F92AF92BF92A4
:10229000CF92DF92EF92FF920F931F93CF93DF9332
:1022A0008091FA04282F30E0C90181709070682F66
:1022B0008823A9F08091FB04882311F0815002C08B
:1022C00080916A038093FB04EAE1F3E080E281936A
:1022D00083E0EA36F807D1F78FEF8093C004A901B5
:1022E0004270507021FF17C09091FB0480916A03E7
:1022F000981719F41092FB0403C09F5F9093FB049E
:10230000EAE1F3E080E2819393E0EA36F907D1F75E
:102310008FEF8093C004662321F0452B11F01092BB
:10232000FB048091FB04282F30E08A3040F481E1E7
:102330008093F9043F932F9382E395E007C080E1F7
:102340008093F9043F932F938DE295E09F938F93B1
:1023500081E08F930E94DE090F900F900F900F90F5
:102360000F901091FB04163009F4BDC2173090F4A1
:10237000123009F4D0C0133030F4112309F11130B8
:1023800009F05CC565C0143009F46FC1153008F060
:10239000F0C117C1193009F457C31A3038F4173097
:1023A00009F4EFC2183009F049C510C31B3009F415
:1023B000DDC31B3008F49CC31C3009F03FC528C4A2
:1023C0001092F9048DE195E09F938F9311E01F9394
:1023D0000E94DE0984E18093F90420910001822F9C
:1023E0006AE00E945047492F50E0822F0E945047D8
:1023F00090E024E630E03F932F9324E430E03F93D5
:102400002F931F921F925F934F939F938F9388E018
:1024100095E09F938F931F930E94DE0988E280933B
:10242000F9040E94AF3E90E09F938F938BEF94E06E
:102430009F938F931F930E94DE098CE38093F9048E
:102440008BEE94E09F938F931F930E94DE09DCC371
:102450008091C00880FF47C01092F90480917B05ED
:1024600090917C059F938F938CED94E09F938F9335
:102470001F930E94DE0984E18093F90480917D0519
:1024800090917E059F938F938DEC94E09F938F9313
:102490001F930E94DE0988E28093F90480910E0365
:1024A00090910F039F938F938EEB94E09F938F9364
:1024B0001F930E94DE098CE38093F90480912F081A
:1024C00090E09F938F938FEA94E09F938F931F9355
:1024D0000E94DE098DB79EB744960FB6F8949EBF52
:1024E0000FBE8DBFB0C484E18093F9048BEA94E001
:1024F0009F938F931F930E94DE0988E28093F904D3
:102500008CE994E09F938F931F930E94DE098DB70F
:102510009EB70696E2CF1092F90483E994E09F9368
:102520008F9311E01F930E94DE0984E18093F904E8
:1025300060912105709122058091230590912405D9
:1025400020E034E040E050E00E94A5475F934F93C5
:102550003F932F9384E894E09F938F931F930E945F
:10256000DE0988E28093F9046091290570912A05BB
:1025700080912B0590912C0520E034E040E050E064
:102580000E94A5475F934F933F932F9385E794E075
:102590009F938F931F930E94DE098CE38093F9042D
:1025A00080916E0390916F039F938F9386E694E0E2
:1025B0009F938F931F930E94DE098DB79EB7469617
:1025C0008CCF1092F90480913C0890913D082091A5
:1025D0003A0830913B089F938F933F932F9386E562
:1025E00094E09F938F9311E01F930E94DE0984E192
:1025F0008093F904809140089091410820913E0811
:1026000030913F089F938F933F932F9386E494E0FC
:102610009F938F931F930E94DE0988E28093F904B1
:1026200080914408909145082091420830914308D8
:102630009F938F933F932F9386E394E09F938F9381
:102640001F930E94DE098CE38093F904809148086F
:102650009091490820914608309147089F938F93A5
:102660003F932F9386E294E07BC01092F904E091AF
:10267000B908F0E0EE0FFF1FE85CF74F20813181D1
:10268000E091B808F0E0EE0FFF1FE85CF74F8081A3
:1026900091813F932F939F938F9386E194E09F9333
:1026A0008F9311E01F930E94DE0984E18093F90467
:1026B000E091BB08F0E0EE0FFF1FE85CF74F2081D0
:1026C0003181E091BA08F0E0EE0FFF1FE85CF74FB0
:1026D000808191813F932F939F938F9386E094E025
:1026E0009F938F931F930E94DE0988E28093F904E1
:1026F000E091BD08F0E0EE0FFF1FE85CF74F20818E
:102700003181E091BC08F0E0EE0FFF1FE85CF74F6D
:10271000808191813F932F939F938F9386EF93E0D6
:102720009F938F931F930E94DE098CE38093F9049B
:10273000E091BF08F0E0EE0FFF1FE85CF74F20814B
:102740003181E091BE08F0E0EE0FFF1FE85CF74F2B
:10275000808191813F932F939F938F9386EE93E097
:102760009F938F931F930E94DE098DB79EB74C965F
:10277000B4CE1092F90488ED93E09F938F9311E00B
:102780001F930E94DE090F900F900F90809100011F
:102790008A3009F04AC084E18093F90440910F0522
:1027A000509110058091DE049091DF0420910F0577
:1027B00030911005821B930B5F934F939F938F93E0
:1027C00088EC93E09F938F931F930E94DE0988E229
:1027D0008093F90440911105509112058091E00415
:1027E0009091E1042091110530911205821B930B09
:1027F0005F934F939F938F9388EB93E09F938F9377
:102800001F930E94DE098CE38093F90480911305E5
:102810009091140520918A0830918B089F938F9393
:102820003F932F9388EA93E055C084E18093F904A5
:1028300080910F059091100562E070E00E94704752
:102840008091DE049091DF0420910F0530911005F6
:10285000821B930B7F936F939F938F9388E993E0F1
:102860009F938F931F930E94DE0988E28093F9045F
:10287000809111059091120562E070E00E9470470E
:102880008091E0049091E1042091110530911205AE
:10289000821B930B7F936F939F938F9388E893E0B2
:1028A0009F938F931F930E94DE098CE38093F9041A
:1028B000809113059091140562E070E00E947047CA
:1028C00080918A0890918B087F936F939F938F9349
:1028D00088E793E09F938F931F930E94DE098DB743
:1028E0009EB74596FACD1092F9048BE693E09F933C
:1028F0008F9311E01F930E94DE0984E18093F90415
:102900008091190590911A052091E6043091E70411
:102910009F938F933F932F938AE593E09F938F9399
:102920001F930E94DE0988E28093F90480911B05C1
:1029300090911C052091E4043091E5049F938F93BE
:102940003F932F9389E493E09F938F931F930E946B
:10295000DE098CE38093F90460911D0570911E05DA
:1029600080911F05909120050E94E34520917F08EA
:10297000309180087F936F933F932F9388E393E088
:102980003EC184E18093F90480910803909109038A
:102990009F938F938AE293E09F938F9311E01F930D
:1029A0000E94DE0988E28093F904809107059091E6
:1029B00008059F938F938CE193E09F938F931F93D0
:1029C0000E94DE098DB79EB70A9687CD1092F90452
:1029D0008DE093E09F938F9311E01F930E94DE0997
:1029E00084E18093F90480917003909171039F9327
:1029F0008F938EEF92E09F938F931F930E94DE0937
:102A000088E28093F90480916E0390916F039F9305
:102A10008F938FEE92E09F938F931F930E94DE0916
:102A20008CE38093F90480915505909156059F930E
:102A30008F9380EE92E09F938F931F930E94DE0905
:102A40008DB79EB7429649CD1092F90480916105E9
:102A5000909162052091590530915A059F938F936B
:102A60003F932F938EEC92E09F938F9311E01F93EF
:102A70000E94DE0984E18093F904809163059091BE
:102A8000640520915B0530915C059F938F933F9384
:102A90002F938CEB92E09F938F931F930E94DE09FC
:102AA00088E28093F90480916505909166052091F4
:102AB0005D0530915E059F938F933F932F938AEA34
:102AC00092E09F938F931F930E94DE098CE3809383
:102AD000F904809167059091680520915F05309118
:102AE00060059F938F933F932F9388E992E038CEB0
:102AF0001092F90480E992E09F938F9311E01F9365
:102B00000E94DE0984E18093F9048091910390E0B2
:102B10009F938F9382E892E09F938F931F930E94DD
:102B2000DE0988E28093F9048091DA049091DB0455
:102B30009F938F9384E792E09F938F931F930E94BC
:102B4000DE098CE38093F9042091DC0830E0809169
:102B5000DB0890E03F932F939F938F9386E692E05C
:102B60009F938F931F930E94DE09B4CC1092F904B7
:102B700086E592E09F938F9311E01F930E94DE09F8
:102B800084E18093F90420914C07332727FD309589
:102B900080914B07992787FD90953F932F939F93A3
:102BA0008F9386E492E09F938F931F930E94DE0998
:102BB00088E28093F90420914D07332727FD309553
:102BC00080914E0790E03F932F939F938F9386E3DE
:102BD00092E09F938F931F930E94DE098CE3809372
:102BE000F9042091520730E080914F07992787FD23
:102BF00090953F932F939F938F9386E292E09F93BC
:102C00008F931F930E94DE098DB79EB7489665CCBF
:102C100080917606882371F41092F90483E192E0A2
:102C20009F938F9381E08F930E94DE090F900F9006
:102C30000F9009C120917806223071F02330B1F055
:102C4000809177062223E1F41092F90490E09F939B
:102C50008F9382E092E01BC01092F9048091770676
:102C600090E09F938F9381EF91E011C01092F9044F
:102C70008091770690E09F938F9380EE91E007C05C
:102C80001092F90490E09F938F938FEC91E09F93C3
:102C90008F9381E08F930E94DE090F900F900F9029
:102CA0000F900F90E0907906F0907A0600917B06E5
:102CB00010917C06C801B70120E836E948E950E0E8
:102CC0000E94A54759016A01C801B70120E836E909
:102CD00048E950E00E94A5477B018C0120E137E2E2
:102CE00040E050E00E94A547E90137FF03C0D095BE
:102CF000C195DF4FC801B70120E137E240E050E065
:102D00000E94A5472AE030E040E050E00E94A5473D
:102D1000B90137FF03C0709561957F4F84E18093BF
:102D2000F9047F936F93DF93CF93BF92AF928AEBB7
:102D300091E09F938F93992493949F920E94DE0930
:102D4000E0907D06F0907E0600917F06109180064F
:102D5000C801B70120E836E948E950E00E94A547DC
:102D600059016A01C801B70120E836E948E950E095
:102D70000E94A5477B018C0120E137E240E050E052
:102D80000E94A547E90137FF03C0D095C195DF4FE9
:102D9000C801B70120E137E240E050E00E94A547BA
:102DA0002AE030E040E050E00E94A547B90137FF3B
:102DB00003C0709561957F4F88E28093F9047F93FB
:102DC0006F93DF93CF93BF92AF9285EA91E09F9389
:102DD0008F939F920E94DE09E0908106F090820618
:102DE0000091830610918406C801B70128EE33E0F4
:102DF00040E050E00E94A54759016A01C801B701AF
:102E000028EE33E040E050E00E94A5479B0177FFA9
:102E100003C0309521953F4F8CE38093F9043F9395
:102E20002F93BF92AF9286E991E09F938F939F92E9
:102E30000E94DE098DB79EB749964FCB1150109373
:102E40006A031092FB041092FA04DF91CF911F9154
:102E50000F91FF90EF90DF90CF90BF90AF909F9039
:102E6000089587B18C6087B942984398089540913E
:102E7000FC045091FD044431510500F14C3D5105D5
:102E8000E8F42091020530910305C901880F991FCC
:102E90008417950710F4429A01C042982F5F3F4F64
:102EA0003093030520930205215030402417350745
:102EB00030F0109203051092020501C0429A409131
:102EC000FE045091FF044431510510F443980895D5
:102ED0004C3D5105E8F42091000530910105C901F0
:102EE000880F991F8417950710F4439A01C04398DF
:102EF0002F5F3F4F30930105209300052150304054
:102F00002417350730F0109201051092000508953E
:102F1000439808959FB7F8943998389A88B1836098
:102F200088B9E9EBF0E080818C7F80838AE280932E
:102F3000B8009FBF089585EA8093BC00089584E996
:102F40008093BC0008958093BB0085E88093BC000B
:102F5000089585EC8093BC00089585E88093BC00BB
:102F60000895EF92FF920F931F938CEBE82EF12CB4
:102F700084E9F7018083109204050BEB10E0F8015F
:102F80008081809305051092050580E8F701808314
:102F90001092BD001092BA00F80110821092B90090
:102FA0001092B8000E948A1785EAF7018083F80121
:102FB000108285E8F70180831F910F91FF90EF90B9
:102FC00008951F920F920FB60F9211248F939F9323
:102FD000EF93FF93809104058F5F809304058150E8
:102FE0008330D1F1843028F4813081F0823060F573
:102FF00008C08530C1F18530A0F1863009F04FC09E
:103000003EC080910505880F8E5A12C0809105053B
:103010008F5F809305058150813069F0813030F0F9
:10302000823061F0833009F047C00BC08091760890
:103030008093BB0020C080918C08FACF80918108DA
:10304000F7CF80919708F4CF80910505843010F474
:103050001092040585EA10C080910605880F8D5AEC
:10306000E7CF85EC09C0E0910605F0E08091BB0058
:10307000E05DF74F808385E88093BC001DC08091A0
:103080000605E82FF0E09091BB00EC5CF74F9083D1
:103090008F5F80930605843010F01092060584E956
:1030A0008093BC00109204058AE090E090936D0339
:1030B00080936C0310920505FF91EF919F918F9182
:1030C0000F900FBE0F901F9018959FB7F8945698C9
:1030D0005E9A8AB180638AB98BB18F7C8BB98091FB
:1030E00000018A3011F4539A5B98809180008C70B3
:1030F0008093800080918100837E80938100809105
:103100008100836C80938100809182008F73809313
:10311000820080916F00897F80936F0080916F00A3
:10312000816280936F0010920805109207059FBF7F
:1031300008951F920F920FB60F9211242F933F9371
:103140005F936F937F938F939F93AF93BF932091E0
:1031500086003091870080910D0590910E058217B1
:10316000930761F4809107059091080562E070E093
:103170000E94704770930805609307058091860050
:103180009091870090930E0580930D05BF91AF91AC
:103190009F918F917F916F915F913F912F910F90B0
:1031A0000FBE0F901F9018951F920F920FB60F929F
:1031B00011240F931F932F933F934F935F936F931C
:1031C0007F938F939F93AF93BF93CF93DF93EF93AF
:1031D000FF9320918600309187008091090590919E
:1031E0000A05281B390B80918600909187009093E7
:1031F0000A0580930905C9018D54944000910B057F
:1032000010910C05835F9A4160F40430110514F0AD
:1032100010926B0381E090E090930C0580930B0576
:1032200098C00E3011050CF094C0C9018B5F90401E
:10323000845B914008F072C0E901C25DD140F801A1
:10324000EE0FFF1FE85CF74F808191819E01281BE4
:10325000390BC90137FF03C0909581959F4F0697A1
:1032600084F48091070590910805883C91054CF401
:1032700080910705909108050A9690930805809320
:103280000705F801EE0FFF1FE85CF74F2081318141
:10329000C901880F991F820F931F8C0F9D1F64E037
:1032A00070E00E9470479B01CE0101968617970738
:1032B0001CF42150304006C021976C177D0714F490
:1032C0002F5F3F4F8091070590910805E801CC0FD3
:1032D000DD1F833C9105BCF0FE01E85CF74F808167
:1032E0009181A901481B590BCA0163E070E00E945B
:1032F0007047CB01880F991F860F971FCA5AD74F67
:103300009983888304C0CA5AD74F19821882F8015A
:10331000EE0FFF1FE85CF74F31832083F8013196F1
:10332000F0930C05E0930B05E530F10511F45D9A7F
:1033300006C05D98E630F10511F45C9A01C05C9816
:10334000809100018A3029F4379711F45B9A01C00B
:103350005B988091070590910805892B49F0809131
:10336000070590910805019790930805809307053C
:10337000FF91EF91DF91CF91BF91AF919F918F918D
:103380007F916F915F914F913F912F911F910F917D
:103390000F900FBE0F901F9018952F923F924F9253
:1033A0005F926F927F928F929F92AF92BF92CF92D5
:1033B000DF92EF92FF920F931F93CF93DF93CDB7DE
:1033C000DEB722970FB6F894DEBF0FBECDBF809157
:1033D0001305909114052091E2043091E304821BBF
:1033E000930B90938B0880938A088091E0049091CE
:1033F000E1042091110530911205821B930B9093EB
:103400008708809386088091DE049091DF042091E4
:103410000F0530911005821B930B909389088093C0
:103420008808809188089091890890938A078093F2
:103430008907809186089091870890938E078093E2
:103440008D07E0908D08F0908E086091E6047091F1
:10345000E704882777FD8095982F2CE030E040E046
:1034600050E00E9431470027F7FC0095102FE60E30
:10347000F71E081F191FC801B70122E030E040E025
:1034800050E00E94A54730938E0820938D08E0906D
:103490009108F09092086091E4047091E504882707
:1034A00077FD8095982F2CE030E040E050E00E94BE
:1034B00031470027F7FC0095102FE60EF71E081F76
:1034C000191FC801B70122E030E040E050E00E943F
:1034D000A547309392082093910820917F0830915E
:1034E00080086091E8047091E904882777FD809551
:1034F000982F442737FD4095542F620F731F841F68
:10350000951F22E030E040E050E00E94A547309354
:10351000800820937F084091490550914A056091A9
:103520004B0570914C052091E6043091E704C901E8
:10353000880F991F820F931F880F991F880F991F5B
:10354000AA2797FDA095BA2F840F951FA61FB71F16
:103550008093490590934A05A0934B05B0934C0581
:1035600040914D0550914E0560914F057091500569
:103570002091E4043091E504C901880F991F820F5E
:10358000931F880F991F880F991FAA2797FDA09551
:10359000BA2F840F951FA61FB71F80934D059093D8
:1035A0004E05A0934F05B0935005209145053091ED
:1035B0004605409147055091480580918A089091B1
:1035C0008B08AA2797FDA095BA2F820F931FA41FDF
:1035D000B51F8093450590934605A0934705B0938A
:1035E0004805209183052A83222309F069C0809130
:1035F0008405882309F064C08091C00886FF60C0FC
:1036000060913505709136058091370590913805A8
:10361000E0908A08F0908B08A0909303BB24CC2400
:10362000DD240027F7FC0095102F20E030E140E07A
:1036300050E00E94A547C801B7010E943147A6018A
:1036400095010E94314720E038E040E050E00E94C0
:10365000A5472093C5053093C6054093C7055093F1
:10366000C80560913D0570913E0580913F059091A0
:103670004005E0908A08F0908B0820E030E140E0BF
:1036800050E00E94A547CA01B901A60195010E9418
:1036900031470027F7FC0095102FA80197010E94E1
:1036A000314720E038E040E050E00E94A5472093F9
:1036B000C1053093C2054093C3055093C40510C0A3
:1036C0001092C1051092C2051092C3051092C40554
:1036D0001092C5051092C6051092C7051092C80534
:1036E00080918608909187082090C5053090C60586
:1036F0004090C7055090C805820D931D9093870890
:10370000809386080091860810918708A090C105D3
:10371000B090C205C090C305D090C40580919403B9
:10372000682E772488249924C401B301A601950149
:103730000E94314720E032E040E050E00E94A5477F
:10374000020F131F109387080093860820914105EC
:10375000309142054091430550914405809186087F
:1037600090918708AA2797FDA095BA2F820F931FE3
:10377000A41FB51F8093410590934205A093430574
:10378000B093440540913D0550913E0560913F0541
:1037900070914005809186089091870820917F055F
:1037A00030918005821B930BAA2797FDA095BA2F15
:1037B000840F951FA61FB71F80933D0590933E056C
:1037C000A0933F05B093400580913D0590913E0543
:1037D000A0913F05B0914005E0907603F09077030B
:1037E0000091780310917903E816F9060A071B0780
:1037F00004F580E197E2A0E0B0E08E199F09A00BEC
:10380000B10B80933D0590933E05A0933F05B09387
:10381000400580913D0590913E05A0913F05B091F6
:1038200040058093410590934205A0934305B093D2
:10383000440520913D0530913E0540913F05509152
:10384000400588279927DC018E199F09A00BB10B31
:10385000281739074A075B0704F580EF98EDAFEFAB
:10386000BFEFE80EF91E0A1F1B1FE0923D05F09204
:103870003E0500933F051093400580913D059091D2
:103880003E05A0913F05B09140058093410590937E
:103890004205A0934305B09344058091E0049091C4
:1038A000E1040F9734F488E19CEF909387088093AC
:1038B00086088091E0049091E104079734F480E356
:1038C00098EF9093870880938608909100019983E0
:1038D0009A30A9F48091E0049091E104835F9340D1
:1038E00034F088EE93E09093870880938608809167
:1038F000E0049091E1048A5F9340DCF014C0809171
:10390000E0049091E104855E974034F088EE93E006
:1039100090938708809386088091E0049091E10459
:10392000835F974034F080ED97E090938708809311
:10393000860880918808909189088A199B0990933C
:103940008908809388080091880810918908C4012B
:10395000B301A20191010E94314720E032E040E032
:1039600050E00E94A547021B130B10938908009397
:1039700088082091390530913A0540913B055091D6
:103980003C058091880890918908AA2797FDA09509
:10399000BA2F820F931FA41FB51F809339059093F0
:1039A0003A05A0933B05B0933C05409135055091F5
:1039B000360560913705709138058091880890919F
:1039C00089082091810530918205821B930BAA27DB
:1039D00097FDA095BA2F840F951FA61FB71F809340
:1039E000350590933605A0933705B093380580913F
:1039F000350590913605A0913705B0913805E090D6
:103A00007203F09073030091740310917503E8162C
:103A1000F9060A071B0704F580E197E2A0E0B0E091
:103A20008E199F09A00BB10B809335059093360535
:103A3000A0933705B09338058091350590913605F0
:103A4000A0913705B09138058093390590933A05D8
:103A5000A0933B05B0933C05209135053091360588
:103A6000409137055091380588279927DC018E1938
:103A70009F09A00BB10B281739074A075B0704F50C
:103A800080EF98EDAFEFBFEFE80EF91E0A1F1B1F86
:103A9000E0923505F092360500933705109338050E
:103AA0008091350590913605A0913705B091380584
:103AB0008093390590933A05A0933B05B0933C055C
:103AC0008091DE049091DF040F9734F488E19CEF3D
:103AD00090938908809388088091DE049091DF0498
:103AE000079734F480E398EF9093890880938808CF
:103AF00099819A30A9F48091DE049091DF04835F6C
:103B0000934034F088EE93E090938908809388087E
:103B10008091DE049091DF048A5F9340DCF014C052
:103B20008091DE049091DF04855E974034F088EE4A
:103B300093E090938908809388088091DE049091A7
:103B4000DF04835F974034F080ED97E0909389081D
:103B50008093880880917A00886C80937A008091A5
:103B6000450590914605A0914705B0914805809381
:103B7000310590933205A0933305B09334058091BD
:103B8000350590913605A0913705B09138058093A1
:103B9000210590932205A0932305B09324058091DD
:103BA0003D0590913E05A0913F05B0914005809361
:103BB000290590932A05A0932B05B0932C0580919D
:103BC000390590913A05A0913B05B0913C05809351
:103BD000250590932605A0932705B093280580918D
:103BE000410590914205A0914305B0914405809311
:103BF0002D0590932E05A0932F05B093300580914D
:103C0000C00887FF63C02A81222309F05FC080912A
:103C10008405882309F05AC080918808909189080A
:103C2000893C91055CF02091880830918908809149
:103C30008808909189082052334011C080918808EB
:103C40009091890888539F4FA4F42091880830915F
:103C500089088091880890918908205E3C4F880FE0
:103C6000991F880F991F280F391F309389082093B7
:103C700088088091860890918708893C91055CF0BE
:103C80002091860830918708809186089091870856
:103C90002052334011C08091860890918708885344
:103CA0009F4FA4F420918608309187088091860860
:103CB00090918708205E3C4F880F991F880F991FAD
:103CC000280F391F309387082093860822960FB655
:103CD000F894DEBF0FBECDBFDF91CF911F910F9142
:103CE000FF90EF90DF90CF90BF90AF909F908F901C
:103CF0007F906F905F904F903F902F9008950F931B
:103D00001F930AE710E0F801808187738083809118
:103D1000DE049091DF049093890880938808809155
:103D2000E0049091E1049093870880938608809145
:103D3000E2049091E30490938B0880938A08609149
:103D4000E6047091E704882777FD8095982F2CE092
:103D500030E040E050E00E94314770938E0860935D
:103D60008D086091E4047091E504882777FD8095C3
:103D7000982F0E9431477093920860939108809128
:103D8000E8049091E9049093800880937F08F801FB
:103D90008081886C80836091E30870E080E090E02F
:103DA00024EC39E040E050E00E9431476093720318
:103DB0007093730380937403909375036091E40888
:103DC00070E080E090E00E9431476093760370934A
:103DD000770380937803909379031F910F9108954F
:103DE0008091070590910805813A91050CF40AC36A
:103DF0008091C3088B3F98F08B3F19F4809159054F
:103E00000EC08C3F19F480915B0509C08D3F19F4F9
:103E100080915D0504C08E3F21F480915F05809301
:103E2000810380918103882319F41092810304C0D7
:103E30008F3F11F4809381038091C2088B3F98F0EB
:103E40008B3F19F4809159050EC08C3F19F4809175
:103E50005B0509C08D3F19F480915D0504C08E3F5C
:103E600021F480915F0580938003809180038823F3
:103E700019F41092800305C0843618F084E680930C
:103E800080038091C4088B3F98F08B3F19F4809198
:103E900059050EC08C3F19F480915B0509C08D3F18
:103EA00019F480915D0504C08E3F21F480915F0577
:103EB0008093820380918203882319F410928203F5
:103EC00005C0843618F084E6809382038091C6088A
:103ED0008B3F98F08B3F19F4809159050EC08C3FB1
:103EE00019F480915B0509C08D3F19F480915D053F
:103EF00004C08E3F21F480915F05809383038091FD
:103F00008303882319F41092830304C08F3F11F4B4
:103F1000809383038091CD088B3F98F08B3F19F4F9
:103F2000809159050EC08C3F19F480915B0509C042
:103F30008D3F19F480915D0504C08E3F21F480917E
:103F40005F058093840380918403882319F4109281
:103F5000840304C08F3F11F4809384038091CE08C2
:103F60008B3F98F08B3F19F4809159050EC08C3F20
:103F700019F480915B0509C08D3F19F480915D05AE
:103F800004C08E3F21F480915F058093850380916A
:103F900085038B3010F48AE002C08F3F11F48093C8
:103FA00085038091CF088B3F98F08B3F19F4809167
:103FB00059050EC08C3F19F480915B0509C08D3FF7
:103FC00019F480915D0504C08E3F21F480915F0556
:103FD0008093860380918603882319F410928603C8
:103FE00004C08F3F11F4809386038091D4088B3FE7
:103FF00098F08B3F19F4809159050EC08C3F19F44D
:1040000080915B0509C08D3F19F480915D0504C066
:104010008E3F21F480915F0580938803809188030F
:10402000882319F41092880304C08F3F11F4809301
:1040300088038091D5088B3F98F08B3F19F48091CD
:1040400059050EC08C3F19F480915B0509C08D3F66
:1040500019F480915D0504C08E3F21F480915F05C5
:104060008093890380918903882319F4109289032E
:1040700004C08F3F11F4809389038091D6088B3F51
:1040800098F08B3F19F4809159050EC08C3F19F4BC
:1040900080915B0509C08D3F19F480915D0504C0D6
:1040A0008E3F21F480915F0580938A0380918A037B
:1040B000882319F410928A0304C08F3F11F480936F
:1040C0008A038091D7088B3F98F08B3F19F4809139
:1040D00059050EC08C3F19F480915B0509C08D3FD6
:1040E00019F480915D0504C08E3F21F480915F0535
:1040F00080938B0380918B03882319F410928B0398
:1041000004C08F3F11F480938B038091D8088B3FBC
:1041100098F08B3F19F4809159050EC08C3F19F42B
:1041200080915B0509C08D3F19F480915D0504C045
:104130008E3F21F480915F0580938C0380918C03E6
:10414000882319F410928C0304C08F3F11F48093DC
:104150008C038091E8088B3F98F08B3F19F4809195
:1041600059050EC08C3F19F480915B0509C08D3F45
:1041700019F480915D0504C08E3F21F480915F05A4
:1041800080938D0380918D03882319F410928D0301
:1041900004C08F3F11F480938D038091E9088B3F19
:1041A00098F08B3F19F4809159050EC08C3F19F49B
:1041B00080915B0509C08D3F19F480915D0504C0B5
:1041C0008E3F21F480915F0580938E0380918E0352
:1041D000882319F410928E0304C08F3F11F480934A
:1041E0008E038091EA088B3F98F08B3F19F4809101
:1041F00059050EC08C3F19F480915B0509C08D3FB5
:1042000019F480915D0504C08E3F21F480915F0513
:1042100080938F0380918F03882319F410928F036A
:1042200004C08F3F11F480938F038091EB088B3F84
:1042300098F08B3F19F4809159050EC08C3F19F40A
:1042400080915B0509C08D3F19F480915D0504C024
:104250008E3F21F480915F058093900380919003BD
:10426000882319F41092900304C08F3F11F48093B7
:1042700090038091D9088B3F98F08B3F19F480917F
:1042800059050EC08C3F19F480915B0509C08D3F24
:1042900019F480915D0504C08E3F21F480915F0583
:1042A0008093910380919103882319F410929103D4
:1042B00004C08F3F11F4809391038091DE088B3FFF
:1042C00098F08B3F19F4809159050EC08C3F19F47A
:1042D00080915B0509C08D3F19F480915D0504C094
:1042E0008E3F21F480915F05809392038091920329
:1042F000882319F41092920304C08F3F11F4809325
:1043000092038091E1088B3F98F08B3F19F48091E4
:1043100059050EC08C3F19F480915B0509C08D3F93
:1043200019F480915D0504C08E3F21F480915F05F2
:104330008093930380919303882319F4109293033D
:1043400004C08F3F11F4809393038091E2088B3F68
:1043500098F08B3F19F4809159050EC08C3F19F4E9
:1043600080915B0509C08D3F19F480915D0504C003
:104370008E3F21F480915F05809394038091940394
:10438000882319F41092940304C08F3F11F4809392
:1043900094038091E7088B3F98F08B3F19F480914C
:1043A00059050EC08C3F19F480915B0509C08D3F03
:1043B00019F480915D0504C08E3F21F480915F0562
:1043C0008093950380919503882319F410929503A7
:1043D00004C08F3F11F4809395036091880370E0CF
:1043E00080E090E00E94694327E137EB41ED58E31C
:1043F0000E94CE4660937C0370937D0380937E037E
:1044000090937F03089580915705882301F51092BA
:104410008C0810927608109281081092970880916B
:10442000C204882311F0809376088091C304882306
:1044300011F080938C088091C404882311F080933C
:1044400097088091C504882311F080938108109209
:104450000405109205050E949B17089510921A05F5
:104460001092190510921C0510921B0580E090E037
:10447000A0E0B0E080931D0590931E05A0931F055A
:10448000B09320051092100510920F05109212059E
:1044900010921105109214051092130510929303B7
:1044A000109294030E947F1E84E690E00E94480DC3
:1044B0000E947F1E8091C00880FF10C080910E0373
:1044C00090910F03875B934038F480910E03909195
:1044D0000F038E5E924010F40E94FC108091DE0467
:1044E0009091DF049093100580930F058091E00474
:1044F0009091E10490931205809311058091E2045C
:104500009091E30490931405809313058091110515
:1045100090911205909316058093150580910F05D3
:1045200090911005909318058093170584E00E94E0
:10453000BE3C8050944058F180919108909192082F
:1045400097FF03C0909581959F4F6CE070E00E94AB
:10455000704770931C0560931B0580918D089091A6
:104560008E0897FF03C0909581959F4F6CE070E097
:104570000E94704770931A05609319056091DC04DE
:104580007091DD04882777FD8095982F17C084E00F
:104590000E94BE3C90931A058093190586E00E9404
:1045A000BE3C90931C0580931B0588E00E94BE3C96
:1045B000AA2797FDA095BA2FBC01CD010E941646EF
:1045C00060931D0570931E0580931F059093200531
:1045D0001092350510923605109237051092380565
:1045E0001092390510923A0510923B0510923C0545
:1045F00010923D0510923E0510923F051092400525
:104600001092410510924205109243051092440504
:1046100010924505109246051092470510924805E4
:1046200010928908109288081092870810928608C4
:1046300010928B0810928A0880910A0390910B03C4
:10464000A0910C03B0910D0390932E0880932D0838
:104650001092EB041092EA04109251051092520548
:10466000109253051092540580916E0390916F0340
:10467000909371038093700382E390E09093D80449
:104680008093D7046091E30870E080E090E024EC30
:1046900039E040E050E00E9431476093720370932C
:1046A000730380937403909375036091E40870E042
:1046B00080E090E00E943147609376037093770327
:1046C000809378039093790310927B0310927A037E
:1046D0000E942D3908951F93182F0EC08091570501
:1046E000882361F484E690E09093D8048093D70403
:1046F0008AEF90E00E94670D115080F71F91089596
:104700002F923F924F925F926F927F928F929F92E1
:10471000AF92BF92CF92DF92EF92FF920F931F93CF
:10472000CF93DF93CDB7DEB7A2970FB6F894DEBF75
:104730000FBECDBF0E94CD19299A20906F053090F1
:10474000700537FE02C02224332480910705909122
:104750000805883791050CF071C08091030188230A
:1047600099F480910403909105038F5F9F4F61F44A
:1047700088E99AE39093D8048093D70480E09CE082
:1047800090930503809304038091AB059091AC0551
:10479000009731F001979093AC058093AB0504C06E
:1047A0001092570510925805809100018A3011F43B
:1047B000289A01C028988091A6059091A705815D4F
:1047C0009740C8F18091D108282E332481E080934E
:1047D0005805E091B8082E2F30E0220F331FF90161
:1047E000EA5AF74F11821082A091B908B0E0AA0FDF
:1047F000BB1FFD01EA5AF74F11821082E091BB08FE
:104800004E2F50E0440F551FCA018A5A974FFC01A2
:1048100011821082285C374FF90111821082A85C46
:10482000B74F11961C921E92485C574FDA011196B1
:104830001C921E92BCC310925705B9C38091070504
:1048400090910805873991050CF4B1C31092580571
:104850008091D20822E3829FC00111249093AC057D
:104860008093AB05B9E22B1631046CF08091A6055C
:104870009091A705EFEF8F3F9E0729F00196909347
:10488000A7058093A6058091A6059091A705883C71
:10489000910520F0F8E22F163104C4F41092BD0502
:1048A0001092BE051092BF051092C0051092B90576
:1048B0001092BA051092BB051092BC0510924505E6
:1048C000109246051092470510924805209159050F
:1048D00030915A058091BC08E82FF0E0EE0FFF1FE1
:1048E000E85CF74F8081918182599F4F28173907E3
:1048F0001CF42F5F3F4F0CC08081918182599F4FE4
:10490000821793074CF42115310531F021503040C6
:1049100030935A052093590520915B0530915C0531
:104920008091BD08E82FF0E0EE0FFF1FE85CF74F25
:104930008081918182599F4F281739071CF42F5F7E
:104940003F4F0CC08081918182599F4F82179307FE
:104950004CF42115310531F02150304030935C0585
:1049600020935B0520915D0530915E058091BE0826
:10497000E82FF0E0EE0FFF1FE85CF74F8081918198
:1049800082599F4F281739071CF42F5F3F4F0CC0E7
:104990008081918182599F4F821793074CF4211592
:1049A000310531F02150304030935E0520935D0594
:1049B00020915F05309160058091BF08E82FF0E0FD
:1049C000EE0FFF1FE85CF74F8081918182599F4F66
:1049D000281739071CF42F5F3F4F0CC0808191814D
:1049E00082599F4F821793074CF42115310531F0FE
:1049F000215030403093600520935F052091610580
:104A00003091620580914A0890914B0882599F4FDE
:104A1000281739071CF42F5F3F4F0EC080914A08BA
:104A200090914B0882599F4F821793074CF42115A0
:104A3000310531F0215030403093620520936105FB
:104A4000209163053091640580914C0890914D0848
:104A500082599F4F281739071CF42F5F3F4F0EC014
:104A600080914C0890914D0882599F4F821793076F
:104A70004CF42115310531F021503040309364055C
:104A800020936305209165053091660580914E085D
:104A900090914F0882599F4F281739071CF42F5FB8
:104AA0003F4F0EC080914E0890914F0882599F4F02
:104AB000821793074CF42115310531F02150304015
:104AC0003093660520936505209167053091680550
:104AD000809150089091510882599F4F28173907AB
:104AE0001CF42F5F3F4F0EC08091500890915108E9
:104AF00082599F4F821793074CF42115310531F0ED
:104B00002150304030936805209367058091590506
:104B100090915A0597FF05C010925A0510925905B9
:104B20000AC08F3F910539F034F08FEF90E09093F9
:104B30005A058093590580915B0590915C0597FF1C
:104B400005C010925C0510925B050AC08F3F91056D
:104B500039F034F08FEF90E090935C0580935B0523
:104B600080915D0590915E0597FF05C010925E05EE
:104B700010925D050AC08F3F910539F034F08FEF38
:104B800090E090935E0580935D0580915F05909124
:104B9000600597FF05C01092600510925F050AC07E
:104BA0008F3F910539F034F08FEF90E090936005DE
:104BB00080935F05809161059091620597FF05C024
:104BC00010926205109261050AC08F3F910539F07D
:104BD00034F08FEF90E090936205809361058091AF
:104BE00063059091640597FF05C0109264051092CB
:104BF00063050AC08F3F910539F034F08FEF90E0E4
:104C00009093640580936305809165059091660596
:104C100097FF05C010926605109265050AC08F3F88
:104C2000910539F034F08FEF90E090936605809312
:104C30006505809167059091680597FF05C0109202
:104C40006805109267050AC08F3F910539F034F06E
:104C50008FEF90E09093680580936705E091BA0824
:104C6000F0E0EE0FFF1FE85CF74F80819181813506
:104C700091050CF4F0C080915705882309F0EBC032
:104C80008091BB08E82FF0E0EE0FFF1FE85CF74FC4
:104C9000808191818C3491050CF4A1C08091AA058A
:104CA0008F5F8093AA05893C08F4D5C01092AA05AD
:104CB00029981092A7051092A6058091B808282F70
:104CC00030E0F901EE0FFF1FE85CF74F8081918122
:104CD000873491059CF4E091B908F0E0EE0FFF1FD6
:104CE000E85CF74F0190F081E02DF7FF03C0F095ED
:104CF000E195FF4FE734F1050CF46AC08091B908E3
:104D0000682F70E0DB01AA0FBB1FA85CB74F8D9125
:104D10009C911197873491053CF0F901EE0FFF1F2C
:104D2000E85CF74F808191818D919C91873491054A
:104D300064F0F901EE0FFF1FE85CF74F808191816D
:104D40008734910514F042E001C041E0FB01EE0F11
:104D5000FF1FE85CF74F80819181863491055CF4F8
:104D6000F901EE0FFF1FE85CF74F808191818734D6
:104D700091050CF043E0FB01EE0FFF1FE85CF74FDD
:104D8000808191818A5B9F4F5CF4F901EE0FFF1FD8
:104D9000E85CF74F80819181873491050CF044E005
:104DA000660F771F685C774FDB018D919C918A5B62
:104DB0009F4F5CF4220F331F285C374FF90180812D
:104DC0009181863491050CF445E0842F0E94CE3CFD
:104DD0000E94AF3E0E94EC3C0E942E2235C0808192
:104DE0009181855B9F4FACF58091AA058F5F809381
:104DF000AA05893C80F11092AA0529986FEF7FEFF0
:104E000084E00E94C63C1092A7051092A6050E945D
:104E10002E226091190570911A0584E00E94C63C0B
:104E200060911B0570911C0586E00E94C63C609154
:104E30001D0570911E0580911F05909120050E940F
:104E4000E84588E00E94C63C0E94AF3E0E946B236A
:104E500002C01092AA05E091BA08F0E0EE0FFF1F21
:104E6000E85CF74F808191818B5A9F4F0CF09FC077
:104E7000E091BB08F0E0EE0FFF1FE85CF74F808188
:104E80009181855B9F4F0CF06BC08091A9058F5F6E
:104E90008093A905893C08F465C088EC8093A90536
:104EA00081E090E09093A7058093A60581E0809330
:104EB00057051092B5051092B6051092B7051092DD
:104EC000B8051092450510924605109247051092BC
:104ED000480510923505109236051092370510924C
:104EE000380510923D0510923E0510923F05109234
:104EF00040058091210590912205A0912305B09154
:104F000024058093390590933A05A0933B05B0930F
:104F10003C058091290590912A05A0912B05B0911F
:104F20002C058093410590934205A0934305B093CF
:104F300044051092BD051092BE051092BF05109257
:104F4000C0051092B9051092BA051092BB051092D7
:104F5000BC058091C00885FF05C00E94A43802C02E
:104F60001092A905E091BB08F0E0EE0FFF1FE85C8E
:104F7000F74F808191818C349105BCF08091A80518
:104F80008F5F8093A805893C90F088EC8093A805FA
:104F90001092A7051092A605109257058091C0089F
:104FA00085FF05C00E942A3902C01092A805809191
:104FB0006B03815080936B0380916B038F3F29F0CB
:104FC00080915805882309F456C30E94F01E409131
:104FD000690550916A055E8F4D8F8091B808E82E63
:104FE000FF24D701AA0FBB1FAD01485C574FFA0140
:104FF0000190F081E02DFC8FEB8F8091C708882E07
:105000009924AA5AB74F0D90BC91A02DBA8FA98FA1
:105010008091C808282F30E0388F2F8B60916B0566
:1050200070916C057E8B6D8B8091B908082F10E014
:10503000C801880F991FDC01A85CB74F0D90BC9187
:10504000A02DBC8BAB8B8A5A974FDC018D919C9124
:105050009A8B898BE091BB08AE2FB0E0AA0FBB1FE3
:10506000A85CB74F0D90BC91A02DB88BAF87E09195
:10507000BA08F0E0EE0FFF1FE85CF74FA080B180A8
:10508000E8E7F0E0AE0EBF1EB0927005A0926F058B
:10509000DA018D919C91209171053091720597FFF5
:1050A00003C0909581959F4F281739078CF4FA011A
:1050B00080819181909372058093710597FF0EC056
:1050C000909581959F4F909372058093710506C0CE
:1050D000215030403093720520937105F801EE0F96
:1050E000FF1FE85CF74F808191812091730530911B
:1050F000740597FF03C0909581959F4F2817390736
:1051000084F480819181909374058093730597FF57
:105110000EC0909581959F4F909374058093730571
:1051200006C0215030403093740520937305609180
:10513000850370E080E090E00E94694320E030E069
:1051400040E251E40E94174520E030E040E85BE394
:105150000E94CE462B013C01609393087093940803
:1051600080939508909396086091860370E080E0A4
:1051700090E00E94694320E030EE4BE257E40E9449
:105180007B45609382087093830880938408909392
:1051900085082091C704222331F08AE090E09093A3
:1051A000D8048093D704E22F22FF09C0809189039D
:1051B000482F50E0440F551F440F551F10C023FDCA
:1051C00003C040E050E00BC08091890390E0880F5D
:1051D000991F880F991F44275527481B590B209169
:1051E000750530917605C901F3E0880F991FFA958E
:1051F000E1F7821B930B840F951F68E070E00E941B
:1052000070476B017093760560937505E4FF09C0E4
:1052100080918903482F50E0440F551F440F551FBC
:1052200010C0E5FD03C040E050E00BC08091890351
:1052300090E0880F991F880F991F44275527481B16
:10524000590B80917705909178059C0163E0220FBE
:10525000331F6A95E1F7281B390BCA01820F931F90
:1052600068E070E00E94704778A36F8F70937805B4
:10527000609377058091C604282F83FF03C082E3E3
:1052800090E004C082FF07C08EEC9FEF90937A05F8
:105290008093790504C010927A051092790521FF58
:1052A00009C080917A0390917B03019690937B03D0
:1052B00080937A0324FF09C080917A0390917B0345
:1052C000019790937B0380937A032B8D3C8D289DCF
:1052D000C001299D900D389D900D11242D8D3E8D7E
:1052E000220F331F4D8D5E8D240F351F820F931FAC
:1052F00064E070E00E9470477AA369A3698D7A8D9B
:10530000AF89B88D6A9FC0016B9F900D7A9F900DF9
:105310001124E9A1FAA1E80FF91FC60168E070E0C5
:105320000E947047E60FF71FFAA3E9A3F0936A05FE
:10533000E09369052B893C89289DC001299D900D2A
:10534000389D900D11242D893E89220F331F4D89E0
:105350005E89240F351F820F931F64E070E00E9466
:1053600070479B0169897A89AF89B88D6A9FC001AE
:105370006B9F900D7A9F900D1124280F391F8F8DF0
:1053800098A168E070E00E947047260F371F3093A5
:105390006C0520936B054091790550917A05EF8556
:1053A000F8894E1B5F0B50936E0540936D058091FD
:1053B000520780FF56C080918903813808F451C09C
:1053C00080914B07992787FD9095BC01689DC0018E
:1053D000699D900D789D900D1124A9A1BAA1A80FE7
:1053E000B91FB0936A05A093690580914C0799276E
:1053F00087FD9095FC01E89DC001E99D900DF89D09
:10540000900D1124280F391F30936C0520936B05E4
:1054100080914D07992787FD9095480F591F50930C
:105420006E0540936D052091C50830E080914F07CF
:10543000992787FD9095AC01249FC001259F900D71
:10544000349F900D112490937B0380937A03809175
:105450004E0790E08A159B0524F490937005809385
:105460006F058091C00882FF0CC080E090E0A0E052
:10547000B0E08093820890938308A0938408B0934F
:10548000850820E030E040E050E0C301B2010E9416
:105490005146882364F480E090E0A0E0B0E080937F
:1054A000930890939408A0939508B093960820E0F1
:1054B00030E040E050E06091820870918308809174
:1054C0008408909185080E945146882364F480E006
:1054D00090E0A0E0B0E08093820890938308A093CE
:1054E0008408B0938508F801EE0FFF1FE85CF74FC2
:1054F000208131818091DF08482F50E04217530707
:1055000044F48091EC0882FF04C081E0809385051B
:1055100015C080918505882389F0F801EE0FFF1FE3
:10552000E85CF74F208131818091E008BA01681B67
:1055300071092617370714F410928505F801EE0F4C
:10554000FF1FE85CF74F8081918166277727641BF6
:10555000750B8617970744F48091EC0883FF04C00D
:1055600081E08093860515C080918605882389F0A7
:10557000000F111F085C174FD8012D913C918091AD
:10558000E00890E0841B950B8217930714F41092A7
:105590008605F701EE0FFF1FE85CF74F80819181D0
:1055A0004817590744F48091EC0880FF04C081E05B
:1055B0008093880515C080918805882389F0F701BC
:1055C000EE0FFF1FE85CF74F208131818091E008EA
:1055D000FA01E81BF1092E173F0714F41092880511
:1055E000F701EE0FFF1FE85CF74F8081918186176E
:1055F000970744F48091EC0881FF04C081E0809318
:10560000870517C080918705882399F0EE0CFF1C51
:1056100028E338E0E20EF31ED7012D913C918091F2
:10562000E00890E0841B950B8217930714F4109206
:10563000870580918505882321F48091860588233C
:1056400021F081E08093840502C01092840580914E
:105650008805882321F480918705882351F081E013
:10566000809383051092840510928505109286051B
:1056700002C01092830580918405882311F40C9454
:10568000573884E690E09093D8048093D7048091B3
:10569000DE0890E0821593050CF41C0180918F03C5
:1056A00090E09093FD048093FC048091900390E03F
:1056B0009093FF048093FE040E9437178091580551
:1056C000882381F110926E0510926D0510926A0583
:1056D0001092690510926C0510926B0580E090E0C5
:1056E000A0E0BFE38093930890939408A09395085B
:1056F000B093960886EA9BE9A4E4BBE38093820812
:1057000090938308A0938408B09385081092840531
:105710001092830510927205109271051092740513
:105720001092730520917B0830917C0840917D0890
:1057300050917E088091210590912205A09123052A
:10574000B0912405820F931FA41FB51F80937B087F
:1057500090937C08A0937D08B0937E0820917708F1
:10576000309178084091790850917A088091290504
:1057700090912A05A0912B05B0912C05820F931FC3
:10578000A41FB51F8093770890937808A093790899
:10579000B0937A0850908305552029F480918405B0
:1057A000882309F44FC01092ED041092EC0410927B
:1057B000490510924A0510924B0510924C05109223
:1057C0004D0510924E0510924F0510925005109203
:1057D0007B0810927C0810927D0810927E0810922F
:1057E0007708109278081092790810927A088091C0
:1057F000350590913605A0913705B0913805809315
:10580000390590933A05A0933B05B0933C058091F0
:105810003D0590913E05A0913F05B09140058093D4
:10582000410590934205A0934305B093440510921F
:105830008205109281051092800510927F055520F7
:1058400009F0F5C080918405882309F0F0C06091CB
:105850002105709122058091230590912405A09047
:10586000CC08BB24CC24DD24E0908D08F0908E0879
:10587000A60195010E94A5470027F7FC0095102F6F
:105880002E193F09400B510BCA01B90120E130E04C
:1058900040E050E00E94A54739014A016091290586
:1058A00070912A0580912B0590912C05E09091082C
:1058B000F0909208A60195010E94A5470027F7FCE9
:1058C0000095102F2E193F09400B510BCA01B90149
:1058D00020E130E040E050E00E94A54779018A01D4
:1058E0008091710590917205409734F48091730511
:1058F000909174054097A4F0C401B30123E030E017
:1059000040E050E00E94A54739014A01C801B701B3
:1059100023E030E040E050E00E94A54779018A0191
:10592000E091BB08F0E0EE0FFF1FE85CF74F01903D
:10593000F081E02DF7FF03C0F095E195FF4F7A97D6
:10594000A4F0C401B30123E030E040E050E00E9445
:10595000A54739014A01C801B70123E030E040E022
:1059600050E00E94A54779018A01B1E26B167104EB
:105970008104910434F0B0E26B2E712C812C912CB7
:1059800011C0E0EE6E16EFEF7E06EFEF8E06EFEF42
:105990009E0644F4A0EE6A2EAFEF7A2EAFEF8A2E69
:1059A000AFEF9A2EF1E2EF16F1040105110534F084
:1059B000F0E2EF2EF12C012D112D11C020EEE21698
:1059C0002FEFF2062FEF02072FEF120744F4E0EE5D
:1059D000EE2EEFEFFE2EEFEF0E2FEFEF1E2F80914A
:1059E000350590913605A0913705B0913805861997
:1059F0009709A809B9098093350590933605A093B6
:105A00003705B093380580913D0590913E05A091F2
:105A10003F05B09140058E199F09A00BB10B8093F3
:105A20003D0590933E05A0933F05B09340058091BE
:105A3000EC049091ED048F3F910509F008F4ABC49C
:105A4000552009F044C480918405882309F03FC49F
:105A500060917B0870917C0880917D0890917E0810
:105A600020E031E040E050E00E94A54720937B0811
:105A700030937C0840937D0850937E0860917708AE
:105A8000709178088091790890917A0820E031E04F
:105A900040E050E00E94A5472093770830937808B3
:105AA0004093790850937A08E090CC08FF2400E0F6
:105AB00010E02091490530914A0540914B055091E5
:105AC0004C05C801B7010E94314720E031E040E0B9
:105AD00050E00E94A5472093490530934A05409322
:105AE0004B0550934C0520914D0530914E0540914A
:105AF0004F0550915005C801B7010E94314720E081
:105B000031E040E050E00E94A54720934D053093DE
:105B10004E0540934F055093500560917B0870915E
:105B20007C0880917D0890917E08209149053091F4
:105B30004A0540914B0550914C05621B730B840B39
:105B4000950B6093B1057093B2058093B305909364
:105B5000B405E090E508FF2400E010E0A8019701FB
:105B60000E94A547CA01B90120E031E040E050E0C1
:105B70000E94A547490130938205209381056091D9
:105B80007708709178088091790890917A0820912F
:105B90004D0530914E0540914F0550915005621BC7
:105BA000730B840B950B6093AD057093AE058093DA
:105BB000AF059093B005A80197010E94A547590130
:105BC0006A01CA01B90120E031E040E050E00E94E2
:105BD000A54789013093800520937F058091710549
:105BE000909172054097BCF4809173059091740573
:105BF00040978CF4E091BB08F0E0EE0FFF1FE85CEB
:105C0000F74F0190F081E02DF7FF03C0F095E1958B
:105C1000FF4F7A9794F0C40162E070E00E947047F1
:105C20007093820560938105C80162E070E00E9474
:105C300070477093800560937F05E0902505F09094
:105C40002605009127051091280580912105909146
:105C50002205A0912305B0912405E81AF90A0A0B40
:105C60001B0BE092B105F092B2050093B3051093BF
:105C7000B4058091390590913A05A0913B05B0910A
:105C80003C058E199F09A00BB10B809339059093A9
:105C90003A05A0933B05B0933C0560902D057090AC
:105CA0002E0580902F0590903005809129059091C8
:105CB0002A05A0912B05B0912C05681A790A8A0A49
:105CC0009B0A6092AD057092AE058092AF059092EE
:105CD000B0058091410590914205A0914305B09196
:105CE000440586199709A809B9098093410590933D
:105CF0004205A0934305B093440560914905709116
:105D00004A0580914B0590914C052AE130E040E036
:105D100050E00E94A5473093780720937707609161
:105D20004D0570914E0580914F05909150052AE1E7
:105D300030E040E050E00E94A54730937A0720937E
:105D40007907F0927C07E0927B0770927E07609261
:105D50007D0760917B0870917C0880917D0890910F
:105D60007E082AE130E040E050E00E94A5473093F1
:105D7000800720937F076091770870917808809161
:105D8000790890917A082AE130E040E050E00E94E2
:105D9000A5473093820720938107B0929007A09285
:105DA0008F07C0907F05D0908005C601880F991F8E
:105DB000960153E0220F331F5A95E1F7820F931F8C
:105DC000909392078093910781E090E090939705DC
:105DD0008093960510929C0510929D0510929E0549
:105DE00010929F0580917B0890917C08A0917D087E
:105DF000B0917E0820918E0530918F0540919005DD
:105E000050919105281B390B4A0B5B0B57FF07C0BC
:105E100050954095309521953F4F4F4F5F4F205201
:105E20003E44404050400CF0C1C071E0E71670E1C4
:105E3000F70670E0070770E017070CF452C0809176
:105E40009505882309F449C0D801C7014CE0B595F0
:105E5000A795979587954A95D1F7019690939705C1
:105E600080939605D801C70133E0B595A79597951E
:105E700087953A95D1F780939C0590939D05A093C3
:105E80009E05B0939F0589589341A040B04064F0AF
:105E900088E893E1A0E0B0E080939C0590939D0595
:105EA000A0939E05B0939F0560919C0570919D0500
:105EB00080919E0590919F0520E031E040E050E008
:105EC0000E94A5478091810590918205820F931FC2
:105ED000909382058093810566C081E0809395054B
:105EE00062C010929505F0E0EF16F0EFFF06FFEFAD
:105EF0000F07FFEF1F070CF056C080919405882311
:105F000009F44DC088279927DC018E199F09A00B41
:105F1000B10B2CE0B595A795979587952A95D1F764
:105F200001969093970580939605C801B70128E0E4
:105F300030E040E050E00E94A54720939C0530935C
:105F40009D0540939E0550939F0528573C4E4F4F0B
:105F50005F4F64F488E79CEEAFEFBFEF80939C0542
:105F600090939D05A0939E05B0939F0560919C051D
:105F700070919D0580919E0590919F0520E031E0F4
:105F800040E050E00E94A5478091810590918205F4
:105F9000820F931F90938205809381050BC081E04F
:105FA0008093940507C01092940504C01092970541
:105FB000109296058091E608482E5524809196050A
:105FC000909197054816590624F4509297054092EF
:105FD000960571E0E71674E0F70670E0070770E0D9
:105FE000170774F080910F05909110052091960588
:105FF00030919705820F931F9093100580930F05A2
:1060000080E0E8168CEFF8068FEF08078FEF18078F
:1060100074F480910F0590911005209196053091B0
:106020009705821B930B9093100580930F0581E0D9
:1060300090E09093970580939605109298051092A2
:10604000990510929A0510929B058091770890917E
:106050007808A0917908B0917A0820918A0530914A
:106060008B0540918C0550918D05281B390B4A0BEF
:106070005B0B57FF07C050954095309521953F4FDA
:106080004F4F5F4F20523E44404050400CF0B9C04B
:10609000A1E06A16A0E17A06A0E08A06A0E09A06CE
:1060A0000CF44EC080919305882309F445C0D401B7
:1060B000C301FCE0B595A79597958795FA95D1F71B
:1060C00001969093970580939605D401C301E3E070
:1060D000B595A79597958795EA95D1F780939805FB
:1060E00090939905A0939A05B0939B058958934185
:1060F000A040B04064F088E893E1A0E0B0E0809375
:10610000980590939905A0939A05B0939B0560918B
:1061100098057091990580919A0590919B0520E0D2
:1061200031E040E050E00E94A547C20ED31ED0925D
:106130008005C0927F0562C081E0809393055EC0B8
:1061400010929305F0E06F16F0EF7F06FFEF8F06D9
:10615000FFEF9F060CF052C080919205882309F44E
:1061600049C088279927DC0186199709A809B90928
:106170007CE0B595A795979587957A95D1F7019687
:106180009093970580939605C401B30128E030E011
:1061900040E050E00E94A547209398053093990570
:1061A00040939A0550939B0528573C4E4F4F5F4FA5
:1061B00064F488E79CEEAFEFBFEF8093980590936F
:1061C0009905A0939A05B0939B05609198057091ED
:1061D000990580919A0590919B0520E031E040E07F
:1061E00050E00E94A547C20ED31ED0928005C092F7
:1061F0007F050BC081E08093920507C01092920545
:1062000004C0109297051092960580919605909182
:1062100097054816590624F4509297054092960522
:1062200071E0671674E0770670E0870670E0970605
:1062300074F080911105909112052091960530918E
:106240009705820F931F909312058093110580E0AC
:1062500068168CEF78068FEF88068FEF980674F437
:106260008091110590911205209196053091970526
:10627000821B930B909312058093110580919805D2
:106280009091990590938C0780938B0780910F05CF
:106290009091100590938407809383078091110556
:1062A000909112052091150530911605821B930BD4
:1062B0009C0163E0220F331F6A95E1F7880F991F55
:1062C000820F931F909386078093850708C01092D2
:1062D000800510927F05109282051092810520E0C2
:1062E00030E040E050E06091820870918308809136
:1062F0008408909185080E945146882341F41092A9
:10630000800510927F051092820510928105809180
:106310007B0890917C08A0917D08B0917E088093C5
:106320008E0590938F05A0939005B0939105809171
:10633000770890917808A0917908B0917A088093B5
:106340008A0590938B05A0938C05B0938D051092D0
:10635000490510924A0510924B0510924C05109277
:106360004D0510924E0510924F0510925005109257
:106370007B0810927C0810927D0810927E08109283
:106380007708109278081092790810927A08109283
:10639000ED041092EC0480906D0590906E058401E0
:1063A00097FE04C0002711270819190905311105A6
:1063B00054F08091C00884FD06C081E090E0909385
:1063C000A1058093A005E090C908B401882777FD56
:1063D0008095982F2E2D30E040E050E00E9431470C
:1063E0009801442737FD4095542F0E94314720E003
:1063F00032E040E050E00E94A54789019A01FF2465
:10640000E89CC001E99C900DF89C900D112464E07B
:1064100070E00E947047600F711F882777FD80959C
:10642000982F6093B5057093B6058093B705909348
:10643000B80520914505309146054091470550919A
:106440004805261B370B480B590B20934505309305
:106450004605409347055093480580914505909126
:106460004605A0914705B09148058155934CA04041
:10647000B04064F080E593ECA0E0B0E08093450587
:1064800090934605A0934705B09348058091450534
:1064900090914605A0914705B0914805805B9C43CB
:1064A000AF4FBF4F64F480EB9CE3AFEFBFEF80933F
:1064B000450590934605A0934705B0934805809104
:1064C000C00883FD02C085FF82C08091890581508C
:1064D000809389058F3F51F581E3809389050E9460
:1064E000174390936F0380936E0380916E03909196
:1064F0006F0397FF05C0109256051092550516C000
:1065000080916E0390916F0320917003309171031D
:10651000845E9D4F821B930B68E671E00E9470477A
:10652000845B90409093560580935505809171054A
:10653000909172058B3491050CF049C080917305E0
:10654000909174058B3491050CF041C08091A005A9
:106550009091A105892B81F01092A1051092A005C0
:1065600080916E0390916F039093710380937003F9
:106570001092560510925505E0904505F09046059D
:106580000091470510914805209155053091560519
:106590008091840390E0AC01429FC001439F900D25
:1065A000529F900D112460E170E00E94704788278F
:1065B00077FD8095982F6E0D7F1D801F911F609332
:1065C0004505709346058093470590934805809153
:1065D000C00885FF17C080918A038093D105809100
:1065E0008D038093CD0580918E038093D505809196
:1065F0005805882311F086EE02C080915D050E9447
:10660000E03B02C00E942D398091A2058150809309
:10661000A2058F3F09F07AC088E18093A2056091BE
:106620002105709122058091230590912405E09029
:10663000CC08FF2400E010E0A80197010E94A547C4
:1066400030935607209355076091290570912A05CC
:1066500080912B0590912C05A80197010E94A547D8
:10666000309358072093570780918D0890918E089A
:1066700090935A07809359078091910890919208BE
:1066800090935C0780935B0780918A0890918B08B8
:1066900090935E0780935D0780917B0590917C05C8
:1066A0009093600780935F07609151057091520548
:1066B000809153059091540520E032E040E050E095
:1066C0000E94A547309362072093610780916E0373
:1066D00090916F03909366078093650780910803FC
:1066E000909109039093680780936707809107054D
:1066F0009091080590936A078093690780917F08BD
:106700009091800890937607809375078091830518
:106710008823A9F06091880870918908882777FDFF
:106720008095982F0E9416462091930830919408E6
:1067300040919508509196080E94CE4632C06091D3
:106740002105709122058091230590912405E09008
:106750008808F09089080E9416462091820830919E
:10676000830840918408509185080E94CE465B01C1
:106770006C010027F7FC0095102FC801B7010E949B
:1067800016462091930830919408409195085091B5
:1067900096080E94CE469B01AC01C601B5010E943D
:1067A00017450E94E345709389086093880880919B
:1067B00084058823A9F0609186087091870888274E
:1067C00077FD8095982F0E9416462091930830916E
:1067D000940840919508509196080E94CE4632C088
:1067E0006091290570912A0580912B0590912C05C7
:1067F000E0908608F09087080E9416462091820853
:106800003091830840918408509185080E94CE46BB
:106810005B016C010027F7FC0095102FC801B70140
:106820000E94164620919308309194084091950853
:10683000509196080E94CE469B01AC01C601B5015D
:106840000E9417450E94E34570938708609386086D
:1068500060918A0870918B08A0903105B090320544
:10686000C0903305D09034058091820890918308C0
:10687000A0918408B091850889839A83AB83BC83F7
:10688000882777FD8095982F0E9416467B018C0102
:106890006091930870919408809195089091960862
:1068A0009B01AC010E9417459B01AC01C801B701D7
:1068B0000E94CE467B018C01C601B5010E9416469E
:1068C00029813A814B815C810E94CE4620E030E0F4
:1068D00040E05FE30E94CE469B01AC01C801B701D6
:1068E0000E9417450E94E34570938B0860938A08C5
:1068F0006091290570912A0580912B0590912C05B6
:106900000E94164629813A814B815C810E94CE46C5
:106910000E94E8457093880760938707A0916B05F4
:10692000B0916C05BE83AD83B0939407A093930799
:10693000809186089091870890938E0780938D07A9
:1069400080918808909189088150984034F080E0C7
:1069500098E09093890880938808809188089091A6
:1069600089088050984F34F480E098EF909389081C
:10697000809388088091860890918708815098407C
:1069800034F080E098E090938708809386088091A7
:106990008608909187088050984F34F480E098EFF3
:1069A000909387088093860880918A0890918B083D
:1069B0008150984034F080E098E090938B08809369
:1069C0008A0880918A0890918B088050984F34F4FF
:1069D00080E098EF90938B0880938A088091C0089C
:1069E000282F80FFCFC080915805882309F0CAC0A6
:1069F0008091810321FF0EC0823310F580917B05C9
:106A000090917C05449790937E0580937D0510922C
:106A1000A50519C020917A0330917B03280F311D01
:106A20008091C50890E0BC01269FC001279F900D72
:106A3000369F900D1124449790937E0580937D0599
:106A400081E08093A50580907B0590907C05609007
:106A50007D0570907E05681479040CF093C08091D8
:106A6000A505882309F48EC0B0908203C090EA0483
:106A7000D090EB04A0908003609151057091520575
:106A80008091530590915405E0908303FF2400E02A
:106A900010E020E032E040E050E00E94A547C8014D
:106AA000B7010E94314720E230E040E050E00E9410
:106AB000A5478901233331051CF002E310E005C02E
:106AC0002E5C3F4F14F40EEC1FEF8B2D90E08618D8
:106AD0009708DC01A89DC001A99D900DB89D900D5F
:106AE000112460E170E00E947047F101E61BF70B92
:106AF0008091A3059091A4059C0144E0220F331FCF
:106B00004A95E1F7281B390B8A2D90E0AC014C9D8A
:106B1000C0014D9D900D5C9D900D112468E070E0CA
:106B20000E947047261B370B2E0F3F1FC901801B89
:106B3000910B60E170E00E9470477093A405609330
:106B4000A3058091C10890E06817790764F42816BE
:106B500039062CF09093A4058093A30504C03092CD
:106B6000A4052092A3058091A3059091A405281661
:106B7000390624F43092A4052092A3052090A305A1
:106B80003090A4058091CB08482E5524C20144972B
:106B90003101821593050CF43C01709264076092F8
:106BA000630720918A0830918B088091B5059091F8
:106BB000B605A091B705B091B80554E1651671040A
:106BC0001CF41A86198628C0281B390BC9019301A9
:106BD00035952795821793070CF49C01C30162E059
:106BE00070E00E947047709561957F4FC90126172C
:106BF00037070CF4CB0192012619370928173907FA
:106C00000CF4C9019301241935099A8789878217E1
:106C1000930714F43A8729872091880830918908CE
:106C20008090690590906A058091C9059091CA0588
:106C3000881A990A281939093093900820938F08E7
:106C400020E030E040E050E069817A818B819C81D6
:106C50000E9451468823F1F1E0902105F090220531
:106C600000912305109124056091BD057091BE052A
:106C70008091BF059091C0050E9416465B016C0192
:106C8000C801B7010E94164629813A814B815C8177
:106C90000E94CE467B018C01B401882777FD809548
:106CA000982F0E9416469B01AC01C801B7010E94B3
:106CB00016459B01AC01C601B5010E9417450E9413
:106CC000E3456093BD057093BE058093BF05909327
:106CD000C0051CC020918F0830919008442737FDD3
:106CE0004095542F8091BD059091BE05A091BF05A0
:106CF000B091C005820F931FA41FB51F8093BD05DF
:106D00009093BE05A093BF05B093C0058091BD05CB
:106D10009091BE05A091BF05B091C00581589E43DA
:106D2000A040B04064F080E89EE3A0E0B0E0809333
:106D3000BD059093BE05A093BF05B093C00580919B
:106D4000BD059091BE05A091BF05B091C0058058CA
:106D5000914CAF4FBF4F64F480E891ECAFEFBFEFC1
:106D60008093BD059093BE05A093BF05B093C00569
:106D700060918F087091900880917C0390917D03C1
:106D8000A0917E03B0917F038B879C87AD87BE87E0
:106D9000882777FD8095982F0E9416467B018C01ED
:106DA0006091BD057091BE058091BF059091C005B1
:106DB0000E9416469B01AC016B857C858D859E8566
:106DC0000E94CE469B01AC01C801B7010E94174545
:106DD0000E94E3457B018C016B0189859A8597FFB1
:106DE00003C0909581959F4F62E070E00E947047CC
:106DF000660D771D882777FD8095982F2091950344
:106E000030E040E050E00E94314720E430E040E0D4
:106E100050E00E94A54738872F83C216D3060CF492
:106E200097012F80388430942194310833942215AF
:106E300033050CF4910149855A85460D571DCA0149
:106E4000820F931F97FF03C060E070E005C0BC0194
:106E5000481659060CF4B2018091CA08E82FF0E0F8
:106E6000F8A3EF8FCB016E177F070CF4CF0180934F
:106E70007608421B530B9A0157FF03C020E030E015
:106E800004C0441655060CF492014F8D58A12417E6
:106E900035070CF49A0120938C0880918608909114
:106EA00087082091CB053091CC058D809E80821A79
:106EB000930A88199909909375088093740820E0C3
:106EC00030E040E050E069817A818B819C810E94B2
:106ED00051468823F1F1E0902905F0902A050091B0
:106EE0002B0510912C056091B9057091BA05809120
:106EF000BB059091BC050E9416465B016C01C80160
:106F0000B7010E94164629813A814B815C810E941B
:106F1000CE467B018C01B401882777FD8095982FA0
:106F20000E9416469B01AC01C801B7010E9416459C
:106F30009B01AC01C601B5010E9417450E94E345C3
:106F40006093B9057093BA058093BB059093BC0517
:106F50001CC02091740830917508442737FD409576
:106F6000542F8091B9059091BA05A091BB05B091BD
:106F7000BC05820F931FA41FB51F8093B905909382
:106F8000BA05A093BB05B093BC058091B90590915B
:106F9000BA05A091BB05B091BC0581589E43A040A5
:106FA000B04064F080E89EE3A0E0B0E08093B905D3
:106FB0009093BA05A093BB05B093BC058091B90529
:106FC0009091BA05A091BB05B091BC058058914C39
:106FD000AF4FBF4F64F480E891ECAFEFBFEF809309
:106FE000B9059093BA05A093BB05B093BC05609119
:106FF000740870917508882777FD8095982F0E94F6
:1070000016467B018C016091B9057091BA0580919B
:10701000BB059091BC050E9416469B01AC016B8597
:107020007C858D859E850E94CE469B01AC01C80162
:10703000B7010E9417450E94E3452F8138856217EA
:1070400073070CF49B01C101221633060CF4C9012D
:107050009301A985BA852A1B3B0B280F391F37FFDF
:1070600003C020E030E004C0421653060CF4920145
:10707000EF8DF8A12E173F070CF49F01209397087E
:10708000681A790AC30129853A85821B930B97FFF9
:1070900003C080E090E004C0481659060CF4C20119
:1070A0004F8D58A18417950754F4CA0108C08091E8
:1070B0008305882311F00C94472B0C944E2B80935E
:1070C0008108A2960FB6F894DEBF0FBECDBFDF9148
:1070D000CF911F910F91FF90EF90DF90CF90BF90D5
:1070E000AF909F908F907F906F905F904F903F9068
:1070F0002F900895E091B808F0E0EE0FFF1FE85CD4
:10710000F74F0190F081E02DF7FF03C0F095E19576
:10711000FF4F74971CF081E090E00895E091B9086A
:10712000F0E0EE0FFF1FE85CF74F8081918120E0D7
:1071300030E097FF03C0909581959F4F449714F0DE
:1071400021E030E0C90108958091760681508230B7
:10715000F0F5809178068330D1F580917906909191
:107160007A06A0917B06B0917C068093E605909309
:10717000E705A093E805B093E90580917D0690911D
:107180007E06A0917F06B09180068093EA059093D9
:10719000EB05A093EC05B093ED05809181069091ED
:1071A0008206A0918306B09184068093EE059093A9
:1071B000EF05A093F005B093F10581E08093F2050F
:1071C00088EE93E09093D8048093D70408951092AA
:1071D000F20508958091760681508230C0F5809145
:1071E00078068330A1F58091790690917A06A09176
:1071F0007B06B0917C068093D9059093DA05A09325
:10720000DB05B093DC0580917D0690917E06A09110
:107210007F06B09180068093DD059093DE05A093F4
:10722000DF05B093E0058091810690918206A091E0
:107230008306B09184068093E1059093E205A093C4
:10724000E305B093E40581E08093E505089510928D
:10725000E50508951092F20508951092CA0510925E
:10726000C9051092CC051092CB0508952F923F923C
:107270004F925F926F927F928F929F92AF92BF9246
:10728000CF92DF92EF92FF920F931F93CF93DF93F2
:10729000CDB7DEB762970FB6F894DEBF0FBECDBF95
:1072A0008C0180917606813009F059C28091780670
:1072B000833009F054C280916E0390916F0397FD63
:1072C0004EC20115110509F486C0F8018485882392
:1072D00009F481C0823039F48091F5059091F6056A
:1072E0000817190791F11092FB051092FC051092F6
:1072F000FD051092FE051092F7051092F805109208
:10730000F9051092FA05F8016481758186819781EB
:1073100020E836E948E950E00E94A547DA01C901B2
:107320000E945F3FAA2797FDA095BA2F80939603EE
:1073300090939703A0939803B09399031093F60545
:107340000093F50582E0F801848720917D06309155
:107350007E0640917F0650918006F80184819581D8
:10736000A681B781281B390B4A0B5B0B2D833E830B
:107370004F8358876091790670917A0680917B06D9
:1073800090917C062081318142815381621B730B75
:10739000840B950B209196033091970340919803AD
:1073A000509199030E94314720E030E240E050E0E4
:1073B0000E94A54729833A834B835C832D813E81BC
:1073C00030936E0720936D0749815A81509370075F
:1073D00040936F0718C01092FB051092FC051092A5
:1073E000FD051092FE051092F7051092F805109217
:1073F000F9051092FA051D821E821F8218861982D5
:107400001A821B821C828091CD059091CE05A0919D
:10741000CF05B091D0058D879E87AF87B88B209020
:10742000D1053090D2054090D3055090D405A0905E
:10743000D505B090D605C090D705D090D80520913D
:10744000890630918A0640918B0650918C06C601C0
:10745000B5010E94314720E032E040E050E00E9458
:10746000A54779018A012091FB053091FC054091E7
:10747000FD055091FE05C201B1010E94314720E097
:1074800030E240E050E00E94A54739014A01909463
:10749000809470946094611C711C811C911C6E1806
:1074A0007F08800A910A6D817E818F8198852D8564
:1074B0003E854F8558890E94314720E038E040E002
:1074C00050E00E94A547621A730A840A950A209127
:1074D0008D0630918E0640918F0650919006C60120
:1074E000B5010E94314720E032E040E050E00E94C8
:1074F000A54779018A012091F7053091F80540915F
:10750000F9055091FA05C201B1010E94314720E00E
:1075100030E240E050E00E94A54759016A01D09452
:10752000C094B094A094A11CB11CC11CD11CAE1875
:10753000BF08C00AD10A69817A818B819C812D851F
:107540003E854F8558890E94314720E038E040E071
:1075500050E00E94A547A21AB30AC40AD50A809136
:107560006E0390916F030E945F3F1C01442437FC1F
:107570004094542C80916E0390916F030E94163FAB
:107580009C01442737FD4095542F29873A874B8724
:107590005C87C601B501A20191010E9431477B01C0
:1075A0008C01C401B30129853A854B855C850E9415
:1075B0003147E61AF70A080B190BC801B70120E09A
:1075C00030E240E050E00E94A5473A8B298B30938F
:1075D000CC052093CB05C401B301A20191010E9407
:1075E00031477B018C01C601B50129853A854B8560
:1075F0005C850E943147E60EF71E081F191FC8015F
:10760000B70120E030E240E050E00E94A54730950D
:1076100021953F4F3093CA052093C9052E3231057D
:107620001CF08DE290E007C0235D3F4F14F080E036
:1076300007C083ED9FEF9093CA058093C90581E051
:10764000A989BA899E971CF08DE290E007C0E9896C
:10765000FA89E35DFF4F3CF483ED9FEF9093CC05F7
:107660008093CB0594C0882309F091C06D817E8101
:107670008F81988520E130E040E050E00E94A547EE
:107680008091FB059091FC05A091FD05B091FE0550
:10769000280F391F4A1F5B1F2093FB053093FC0501
:1076A0004093FD055093FE0521308DE7380780E0BB
:1076B000480780E058072CF080E09DE7A0E0B0E0AC
:1076C00009C0205033484F4F5F4F64F480E093E887
:1076D000AFEFBFEF8093FB059093FC05A093FD05F2
:1076E000B093FE0569817A818B819C8120E130E035
:1076F00040E050E00E94A5478091F7059091F80581
:10770000A091F905B091FA05280F391F4A1F5B1F98
:107710002093F7053093F8054093F9055093FA0547
:107720002130ADE73A07A0E04A07A0E05A072CF065
:1077300080E09DE7A0E0B0E009C0205033484F4F03
:107740005F4F2CF580E093E8AFEFBFEF8093F70534
:107750009093F805A093F905B093FA0518C010921C
:10776000CA051092C9051092CC051092CB05109253
:10777000FB051092FC051092FD051092FE0510927B
:10778000F7051092F8051092F9051092FA05629625
:107790000FB6F894DEBF0FBECDBFDF91CF911F9122
:1077A0000F91FF90EF90DF90CF90BF90AF909F90A0
:1077B0008F907F906F905F904F903F902F900895A3
:1077C000863418F41092F40507C0803A10F481E072
:1077D00001C082E08093F40580917606813079F1D2
:1077E000813020F0823009F0A7C014C01092CA0581
:1077F0001092C9051092CC051092CB058091F4052A
:10780000882309F499C084E690E09093D80480938B
:10781000D70492C080919906882331F0809199060F
:1078200081508093990688C01092CA051092C905AC
:107830001092CC051092CB05109276067DC08091F7
:1078400078069091F405833009F055C0913039F0F5
:10785000913008F445C0923009F044C021C08091B5
:10786000E5058823E9F10E947A38882369F00E94AF
:10787000EA381092CA051092C9051092CC051092F0
:10788000CB051092F30555C08091F305873018F5AC
:107890008F5F8093F3050E94EA3880E090E01DC07E
:1078A0008091F205882349F00E94EA380E947A38D4
:1078B0008823C1F486EE95E010C082E390E09093B7
:1078C000D8048093D7048091E505882349F00E946D
:1078D0007A38882339F489ED95E00E94363929C039
:1078E0000E94EA381092CA051092C9051092CC0580
:1078F0001092CB051EC01092CA051092C9051092B5
:10790000CC051092CB059923A1F08091770628EC45
:10791000829FC001112420E436E0281B390B37FF79
:1079200002C020E030E02E5C3F4F3093D80420931B
:10793000D70482E0809376068091C9059091CA05AC
:1079400090937207809371078091CB059091CC053D
:1079500090937407809373070895A0E0B0E0A80F98
:10796000B11D0E94F747802D90E00895A0E0B0E09F
:10797000A80FB11D062E0E9409480895A0E0B0E0AE
:10798000A80FB11D0E940448CF010895A0E0B0E007
:10799000A80FB11D0B010E9415480895863008F00C
:1079A00085E0A2E0B0E0082E0E9409480895982FD3
:1079B000863008F095E086E4989FD0011124AC59F8
:1079C000BF4FE8EBF8E0182E0E941A48A2E0B0E0A2
:1079D000092E0E9409480895982F863008F095E0F6
:1079E00086E4989FD0011124AC59BF4FE8EBF8E032
:1079F000182E0E94FF47089581E08093B80822E086
:107A00002093B90883E08093BA0854E05093BB08F0
:107A100045E04093BC0836E03093BD0887E0809392
:107A2000BE0888E08093BF0880EC8093C0089EE188
:107A30009093C1088BEF8093C3088AE08093C408B9
:107A40009093C2089093C6082093C5082093C70856
:107A50005093C8083093C9088FE08093CA088AEF12
:107A60008093CB089093CC0880E88093CD0824E6DF
:107A70002093CE088CE88093CF088EE58093D008C1
:107A800083E28093D10884E18093D2081092D308D6
:107A900080E18093D40880E58093D5081092D608C1
:107AA0001092D7081092D8081092E8081092E908AE
:107AB0001092EA081092EB082093D90888E280938C
:107AC000DA081092ED0892E39093DB0886E9809340
:107AD000DC084093DD089093DE088AE58093DF0898
:107AE0009093E0081092EC088093E1084093E2083C
:107AF0002093E3082093E40880E28093E508509304
:107B0000E6089093E708A2EFB8E0ECE9F3E089E03B
:107B100001900D928150E1F7089581E08093B808BB
:107B200082E08093B90823E02093BA0854E0509390
:107B3000BB0845E04093BC0836E03093BD0887E0C1
:107B40008093BE0888E08093BF0880E48093C008DB
:107B50009EE19093C1088BEF8093C3088AE08093E5
:107B6000C4089093C2089093C6082093C508209338
:107B7000C7085093C8083093C9088FE08093CA089B
:107B80008AEF8093CB089093CC0880E88093CD084F
:107B900090E59093CE0888E78093CF088EE5809398
:107BA000D00883E28093D10884E18093D2081092B8
:107BB000D30830E23093D4089093D5081092D608B9
:107BC0001092D7081092D8081092E8081092E9088D
:107BD0001092EA081092EB0824E62093D90888E274
:107BE0008093DA081092ED0892E39093DB0886E91F
:107BF0008093DC084093DD089093DE088AE580934B
:107C0000DF089093E0081092EC088093E10840931D
:107C1000E2082093E3082093E4083093E5085093AA
:107C2000E6088BE48093E708A2EFB8E0E6EAF3E029
:107C300087E001900D928150E1F7089581E08093F3
:107C4000B80882E08093B90883E08093BA0834E0F2
:107C50003093BB0845E04093BC0886E08093BD08A4
:107C600087E08093BE0828E02093BF0880E48093DB
:107C7000C0089EE19093C1088BEF8093C3088AE00F
:107C80008093C4089093C2089093C6083093C508A7
:107C90003093C7082093C8088CE08093C9088FE010
:107CA0008093CA088AEF8093CB089093CC0890E821
:107CB0009093CD0880E58093CE0856E95093CF0885
:107CC0008EE58093D00883E28093D10884E180938D
:107CD000D2081092D30880E28093D4089093D508FC
:107CE0001092D6081092D7081092D8081092E8087F
:107CF0001092E9081092EA081092EB0824E620930B
:107D0000D90888E28093DA081092ED0882E3809324
:107D1000DB085093DC084093DD088093DE089AE589
:107D20009093DF088093E0081092EC089093E108AC
:107D30004093E2082093E3082093E40880E18093D5
:107D4000E5083093E6082093E708A2EFB8E0EEEAF2
:107D5000F3E086E001900D928150E1F7089522E072
:107D600030E0D9010E94F747802D863028F082E06C
:107D7000D901082E0E94094890E008950F931F939F
:107D8000CF93DF93A1E0B0E00E94F747802D8534C8
:107D900069F180E595E09F938F931F920E94DE0921
:107DA0000E941E3EC0E0D0E00F900F900F900C2F6D
:107DB000C23039F0C33019F40E94FC3C04C0C43016
:107DC00010F00E948D3D802F0E94D73C2196C63036
:107DD000D10569F7A2E0B0E083E0082E0E940948CF
:107DE000A1E0B0E085E4082E0E94094802E010E01E
:107DF000D8010E94F747802D0E94EC3CD8010E94D8
:107E0000F747802D90E09F938F9387E395E09F93B2
:107E10008F931F920E94DE090F900F900F900F908A
:107E20000F90DF91CF911F910F91089597FD02C0A0
:107E300041E004C0909581959F4F4FEF68E671E057
:107E40000E947047FC018B35910554F08B55904092
:107E50008A35910538F484EB90E08E1B9F0BFC0172
:107E600081E00FC0CF01855B90408A35910518F401
:107E7000E45BF04005C088E691E08E1B9F0BFC019F
:107E80008FEFEE0FFF1FE058FA4F2591349199279D
:107E900087FD9095B901689F9001699F300D789F8B
:107EA000300D1124842F992787FD9095AC01249FD4
:107EB000C001259F900D349F900D112408952AE54F
:107EC00030E0281B390BC9010E94163F08951F930B
:107ED000CF93DF93EB01672B29F4009719F480E02F
:107EE00090E091C097FF02C01FEF01C011E0209702
:107EF00029F48AE51802C001112485C09C01B9014A
:107F0000882777FD8095982F26E0660F771F881FBA
:107F1000991F2A95D1F79E01442737FD4095542F8C
:107F20000E94A547F90137FF03C0F095E195FF4F87
:107F300031E0EA35F30734F4EA5CF94F8491282FF5
:107F400030E047C04CE1E73AF4071CF02AE530E0A6
:107F500040C059E0ED38F5071CF029E530E039C0A4
:107F600085E0EA3BF8071CF028E530E032C024E069
:107F7000E731F2071CF027E530E02BC033E0EE32AA
:107F8000F3071CF026E530E024C042E0E939F407AD
:107F90001CF025E530E01DC052E0E233F5071CF08F
:107FA00024E530E016C081E0E73EF8071CF023E549
:107FB00030E00FC021E0ED3AF2071CF022E530E09E
:107FC00008C0EF57F1401CF021E530E002C020E589
:107FD00030E01C161D066CF4812F992787FD9095C3
:107FE000AC01249FC001259F900D349F900D11245A
:107FF0000AC011162CF484EB90E0821B930B03C093
:10800000C901845B9040DF91CF911F9108959F92A9
:10801000AF92BF92CF92DF92EF92FF920F931F9396
:108020007B018C015B016C019924C601B501A8019B
:1080300097010E9483472E0D3F1D401F511F5695EB
:10804000479537952795E21AF30A040B150B82E042
:10805000E816F1040105110538F0939488E29816AA
:1080600019F079018A01E1CFCA01B9011F910F917D
:10807000FF90EF90DF90CF90BF90AF909F900895CA
:1080800080913306813059F58091090680937806F6
:1080900080912E068093770680911706909118069E
:1080A000A0911906B0911A068093850690938606D2
:1080B000A0938706B09388068091270690912806A2
:1080C000A0912906B0912A06809395069093960672
:1080D000A0939706B093980682E080933306809130
:1080E0005006813099F58091380690913906A0911B
:1080F0003A06B0913B068093790690937A06A09356
:108100007B06B0937C0680913C0690913D06A09141
:108110003E06B0913F0680937D0690937E06A09325
:108120007F06B09380068091400690914106A09111
:108130004206B09143068093810690938206A093F5
:108140008306B093840682E0809350068091750682
:108150008130D1F58091590690915A06A0915B0625
:10816000B0915C0680938D0690938E06A0938F0647
:10817000B09390068091550690915606A0915706AF
:10818000B09158068093890690938A06A0938B0637
:10819000B0938C0680915D0690915E06A0915F067B
:1081A000B0916006B095A095909581959F4FAF4F87
:1081B000BF4F8093910690939206A0939306B0933D
:1081C000940682E08093750680913306882359F0E7
:1081D00080915006882339F080917506882319F024
:1081E00081E0809376060895482F8091A40684301C
:1081F00009F461C0853050F48130D1F0813098F0BD
:108200008230D9F0833009F0D6C01CC0863009F422
:1082100087C0863008F461C0873009F4A8C0883070
:1082200009F0C9C0B1C0453B09F0C2C081E0A4C09B
:10823000423609F0BDC082E09FC0413009F0B8C0AD
:1082400083E09AC0463061F04231D9F0423009F5FE
:1082500084E396E090939F0680939E064D9607C018
:108260008FEF95E090939F0680939E06C59690931E
:108270009D0680939C06019790939B0680939A0697
:108280000AC081E596E090939F0680939E068596AE
:10829000EECF1092A4068091A406882309F48DC025
:1082A00084E08093A406842F8F5F8093A3068F5F62
:1082B0008093A2060895842F90E09093A106809366
:1082C000A0069091A306940F9093A3068091A20616
:1082D000890F8093A20685E04FC0242F30E0322F13
:1082E00022278091A0069091A106820F931F909360
:1082F000A1068093A0069091A306940F9093A306E5
:108300008091A206890F8093A206E0919A06F091CF
:108310009B068081813009F44BC0108286E02CC01E
:10832000E0919E06F0919F0680919C0690919D069B
:10833000E817F90728F44193F0939F06E0939E060F
:108340009091A306940F9093A3068091A206890FA3
:108350008093A2068091A0069091A1060197909328
:10836000A1068093A006892B41F587E005C0809186
:10837000A306481721F488E08093A4060895E091AD
:108380009A06F0919B0613C08091A206E0919A068E
:10839000F0919B06481759F481E0808395B19827A6
:1083A00095B90E9440408FEF8093990601C01082DA
:1083B0001092A40608951092A4060895CF93DF9317
:1083C000DC01EC01EA81FB8121918E81815019F45D
:1083D0008981E81BF109ED01FB83EA838E839FB756
:1083E000F8948C9181508C939FBF822F90E0DF9105
:1083F000CF910895FC011082758364837383628337
:108400004183478346830895CF93DF93DC019C919A
:10841000ED018981981718F080E090E016C0ED0119
:10842000EC81FD8161938F81815019F48981E81B72
:10843000F109ED018F83FD83EC839FB7F8948C9154
:108440008F5F8C939FBF81E090E0DF91CF91089583
:10845000FC0180818823E9F3CF010E94DE4190E096
:108460000895FC018081882319F48FEF9FEF089510
:10847000CF010E94DE4190E008959FB7F89480916B
:10848000C9008F778093C9008091C9008F7B80934A
:10849000C9008091C9008F7D8093C9005A9A529873
:1084A0005B9A539A1092CD008AE28093CC0080911F
:1084B000C80082608093C80088E18093C9008091E1
:1084C000CA008F778093CA008091CA008F7B809307
:1084D000CA008091CA008F7D8093CA008091CA0033
:1084E0008F7E8093CA008091CA00877F8093CA00E4
:1084F0008091C9008B7F8093C9008091CA008460FD
:108500008093CA008091CA0082608093CA0002C032
:108510008091CE008091C80087FDFACF8091C9007C
:1085200080688093C9008091C90080648093C900ED
:108530009FBF08951F920F920FB60F9211242F9391
:108540003F934F935F936F937F938F939F93AF93DB
:10855000BF93EF93FF939091CE00809100018B30F9
:1085600019F4892F0E94F440FF91EF91BF91AF91D0
:108570009F918F917F916F915F914F913F912F913B
:108580000F900FBE0F901F9018953C98449A109230
:10859000A50608956091A6067091A706349B15C0A4
:1085A000CB0101969093A7068093A606815991402E
:1085B000E8F18091A506882319F081508093A506E3
:1085C0001092A7061092A6060895CB0101978F5826
:1085D000914040F56930710548F41092B50310924E
:1085E000B6031092B7031092B80319C069507040D7
:1085F00080E090E029E134E040E050E00E94314723
:108600002AE096958795779567952A95D1F7609397
:10861000B5037093B6038093B7039093B8038CE0CF
:108620008093A5061092A7061092A6060895CF93F0
:10863000DF938091A5068823D9F16091210570917F
:108640002205809123059091240520E032E040E04E
:1086500050E00E94A547E90137FF03C0D095C195BE
:10866000DF4F6091290570912A0580912B0590912B
:108670002C0520E032E040E050E00E94A547C9010F
:1086800037FF03C0909581959F4F8C179D070CF481
:10869000CE018397CCF48091B5039091B60397FFF8
:1086A00002C088599E4F68E671E00E9470470EC074
:1086B0008091D7049091D804892B31F484E690E01E
:1086C0009093D8048093D7048FEF9FEFDF91CF91E1
:1086D0000895A8E0B0E0EFE6F3E40C94CA477B010C
:1086E0008C01611571058105910519F482E089837A
:1086F0005AC083E089838EE1C82ED12CDC82CB82E4
:10870000ED82FE820F831887C801B7010E94DC4307
:10871000BC016150704077FF33C0EE27FF27E61B96
:10872000F70B20E030E040E050E081E090E0A0E096
:10873000B0E00E2E04C0880F991FAA1FBB1F0A9419
:10874000D2F70197A109B1098E219F21A023B1235E
:108750000097A105B10521F021E030E040E050E0B4
:1087600004C016950795F794E794EA95D2F72E2959
:108770003F29402B512B2D833E834F8358870FC0B9
:108780006115710581F0062E04C0EE0CFF1C001F60
:10879000111F0A94D2F7ED82FE820F831887C61A42
:1087A000D70ADC82CB821A82CE0101960E9429442C
:1087B000E8E028960C94E647EF92FF920F931F9300
:1087C0009B01AC01203080E0380781E0480780E061
:1087D000580780F42F3F31054105510509F020F479
:1087E000EE24FF24870119C068E0E62EF12C012D4C
:1087F000112D13C0203080E0380780E0480781E069
:10880000580730F490E1E92EF12C012D112D05C00F
:1088100088E1E82EF12C012D112D80E290E0A0E0FE
:10882000B0E08E199F09A00BB10B04C05695479577
:1088300037952795EA94D2F7F901E754FC4F208148
:10884000821B9109A109B1091F910F91FF90EF902F
:1088500008959F92AF92BF92CF92DF92EF92FF92D4
:108860000F931F93EE24FF248701FC01248135819F
:108870004681578191808081823010F44061A2C08E
:10888000843009F49BC0823029F420E030E040E0DD
:1088900050E005C0211531054105510519F4E0E00E
:1088A000F0E092C0828193816FEF823896070CF0DE
:1088B0005AC062E87FEF681B790B6A3171052CF0B2
:1088C00020E030E040E050E02AC0AA24BB2465014B
:1088D00081E090E0A0E0B0E0062E04C0880F991F70
:1088E000AA1FBB1F0A94D2F70197A109B1098223DD
:1088F0009323A423B5230097A105B10529F071E0C6
:10890000A72EB12CC12CD12C04C056954795379574
:1089100027956A95D2F72A293B294C295D29DA0146
:10892000C9018F779070A070B07080349105A10557
:10893000B10539F427FF09C0205C3F4F4F4F5F4F0F
:1089400004C0215C3F4F4F4F5F4F80E090E02030EC
:1089500060E0360760E0460760E4560710F081E00B
:1089600090E0FC0123C08038910544F5FC01E158FA
:10897000FF4FDA01C9018F779070A070B07080341A
:108980009105A105B10539F427FF09C0205C3F4FCF
:108990004F4F5F4F04C0215C3F4F4F4F5F4F57FF1A
:1089A00005C05695479537952795319687E056959A
:1089B0004795379527958A95D1F706C020E030E096
:1089C00040E050E0EFEFF0E0E22EF32E942F9F779F
:1089D000802F8078892B9E2F9795992797958F7751
:1089E000082F092B9E2F9695812F8078892B97949D
:1089F000992497948F77182F1929C801B7011F91CF
:108A00000F91FF90EF90DF90CF90BF90AF909F902D
:108A10000895FC014150504030F001900616D1F706
:108A20003197CF0108958827992708955058BB277B
:108A3000AA270ED079C16AD130F06FD120F031F47D
:108A40009F3F11F41EF45FC10EF4E095E7FB55C1A2
:108A5000E92F7BD180F3BA17620773078407950764
:108A600018F071F49EF593C10EF4E0950B2EBA2F19
:108A7000A02D0B01B90190010C01CA01A001112424
:108A8000FF27591B99F0593F50F4503E68F11A16D0
:108A9000F040A22F232F342F4427585FF3CF469561
:108AA00037952795A795F0405395C9F77EF41F1683
:108AB000BA0B620B730B840BBAF09150A1F0FF0F4D
:108AC000BB1F661F771F881FC2F70EC0BA0F621F39
:108AD000731F841F48F4879577956795B795F79529
:108AE0009E3F08F0B3CF9395880F08F09927EE0FBB
:108AF0009795879508950CD017C10FD140F006D1F6
:108B000030F021F45F3F19F0F8C0511141C1FBC0B2
:108B10001CD198F39923C9F35523B1F3951B550B39
:108B2000BB27AA2762177307840738F09F5F5F4F40
:108B3000220F331F441FAA1FA9F333D00E2E3AF081
:108B4000E0E830D091505040E695001CCAF729D09B
:108B5000FE2F27D0660F771F881FBB1F26173707EA
:108B60004807AB07B0E809F0BB0B802DBF01FF271A
:108B700093585F4F2AF09E3F510568F0BEC008C170
:108B80005F3FECF3983EDCF3869577956795B79554
:108B9000F7959F5FC9F7880F911D9695879597F96F
:108BA0000895E1E0660F771F881FBB1F62177307E8
:108BB0008407BA0720F0621B730B840BBA0BEE1FFD
:108BC00088F7E095089504D06894B111E1C0089544
:108BD000C4D088F09F5790F0B92F9927B751A0F0D3
:108BE000D1F0660F771F881F991F1AF0BA95C9F741
:108BF00012C0B13081F0CBD0B1E00895C8C0672F6A
:108C0000782F8827B85F39F0B93FCCF386957795F0
:108C10006795B395D9F73EF49095809570956195D9
:108C20007F4F8F4F9F4F0895E89409C097FB3EF404
:108C300090958095709561957F4F8F4F9F4F9923A9
:108C4000A9F0F92F96E9BB279395F6958795779527
:108C50006795B795F111F8CFFAF4BB0F11F460FFE7
:108C60001BC06F5F7F4F8F4F9F4F16C0882311F03F
:108C700096E911C0772321F09EE8872F762F05C053
:108C8000662371F096E8862F70E060E02AF09A95EE
:108C9000660F771F881FDAF7880F9695879597F9E3
:108CA000089507D008F481E0089503D008F48FEF09
:108CB0000895990F0008550FAA0BE0E8FEEF16166D
:108CC0001706E807F907C0F012161306E407F507C0
:108CD00098F0621B730B840B950B39F40A2661F034
:108CE000232B242B252B21F408950A2609F4A140D7
:108CF000A6958FEF811D811D089597F99F6780E8E4
:108D000070E060E008959FEF80EC089500240A94DD
:108D10001616170618060906089500240A94121656
:108D20001306140605060895092E0394000C11F489
:108D3000882352F0BB0F40F4BF2B11F460FF04C036
:108D40006F5F7F4F8F4F9F4F089557FD9058440F8F
:108D5000551F59F05F3F71F04795880F97FB991F9A
:108D600061F09F3F79F08795089512161306140657
:108D7000551FF2CF4695F1DF08C0161617061806E4
:108D8000991FF1CF86957105610508940895E894BF
:108D9000BB2766277727CB0197F908950BD0C4CF5F
:108DA000B5DF28F0BADF18F0952309F0A6CFABCFD6
:108DB0001124EECFCADFA0F3959FD1F3950F50E0B9
:108DC000551F629FF001729FBB27F00DB11D639F7D
:108DD000AA27F00DB11DAA1F649F6627B00DA11D23
:108DE000661F829F2227B00DA11D621F739FB00DC9
:108DF000A11D621F839FA00D611D221F749F332739
:108E0000A00D611D231F849F600D211D822F762FD1
:108E10006A2F11249F5750408AF0E1F088234AF0CE
:108E2000EE0FFF1FBB1F661F771F881F915050401A
:108E3000A9F79E3F510570F060CFAACF5F3FECF3DA
:108E4000983EDCF3869577956795B795F795E79506
:108E50009F5FC1F7FE2B880F911D9695879597F917
:108E60000895629FD001739FF001829FE00DF11D74
:108E7000649FE00DF11D929FF00D839FF00D749F94
:108E8000F00D659FF00D9927729FB00DE11DF91F40
:108E9000639FB00DE11DF91FBD01CF01112408959D
:108EA000991B79E004C0991F961708F0961B881F3C
:108EB0007A95C9F780950895AA1BBB1B51E107C09D
:108EC000AA1FBB1FA617B70710F0A61BB70B881F5A
:108ED000991F5A95A9F780959095BC01CD010895E9
:108EE00097FB092E07260AD077FD04D0E5DF06D0D0
:108EF00000201AF4709561957F4F0895F6F79095CC
:108F000081959F4F0895A1E21A2EAA1BBB1BFD015C
:108F10000DC0AA1FBB1FEE1FFF1FA217B307E40758
:108F2000F50720F0A21BB30BE40BF50B661F771FB0
:108F3000881F991F1A9469F7609570958095909590
:108F40009B01AC01BD01CF01089597FB092E0526B9
:108F50000ED057FD04D0D7DF0AD0001C38F450954E
:108F60004095309521953F4F4F4F5F4F0895F6F74D
:108F700090958095709561957F4F8F4F9F4F089585
:108F80002F923F924F925F926F927F928F929F9219
:108F9000AF92BF92CF92DF92EF92FF920F931F9307
:108FA000CF93DF93CDB7DEB7CA1BDB0B0FB6F894B8
:108FB000DEBF0FBECDBF09942A88398848885F84F8
:108FC0006E847D848C849B84AA84B984C884DF8069
:108FD000EE80FD800C811B81AA81B981CE0FD11D4D
:108FE0000FB6F894DEBF0FBECDBFED010895F9991D
:108FF000FECFB2BDA1BDF89A119600B40895F7DF77
:1090000001921A94E1F70895F2DFE02DF0DFF02DE0
:109010000895F999FECFB2BDA1BD00BC11960FB65F
:10902000F894FA9AF99A0FBE0895F3DF012CF1DF54
:10903000112408950190EDDF1A94E1F70895FFCF10
:109040000A01FF64496E74656772616C50697463EC
:1090500068202020496E74656772616C526F6C6C79
:109060002020202041636350697463682020202001
:1090700020202020416363526F6C6C202020202030
:10908000202020204779726F5961772020202020EE
:109090002020202052656164696E674865696768B1
:1090A000742020204163635A20202020202020208B
:1090B00020202020546872757374202020202020E6
:1090C00020202020436F6D7061737348656164696F
:1090D0006E672020566F6C74616765202020202009
:1090E000202020205265636569766572204C657684
:1090F000656C2020416E616C6F674F757431312053
:10910000202020204750534465764E6F72746820AB
:1091100020202020475053446576456173742020F9
:10912000202020204750535F50697463682020201E
:10913000202020204750535F526F6C6C202020204D
:10914000202020204163635F5A20202020202020FF
:10915000202020204D65616E41636350697463680F
:10916000202020204D65616E416363526F6C6C203E
:1091700020202020496E74656772616C45727250C0
:1091800069746368496E74656772616C4572725286
:109190006F6C6C204D65616E496E745069746368C4
:1091A000202020204D65616E496E74526F6C6C09F1
:1091B000200000004E65757472616C5069746368BC
:1091C00020202020526F6C6C4F66667365742020DF
:1091D00020202020496E74526F6C6C2A46616374A3
:1091E0006F72202052656164696E674779726F50B3
:1091F00069746368446972656374436F7272526F15
:109200006C6C202052656164696E674779726F5299
:109210006F6C6C20436F7272656374696F6E526F0E
:109220006C6C2020492D417474526F6C6C2020208E
:1092300020202020537469636B526F6C6C202020B7
:1092400020202020FFFF010A6400007D0000FF03B2
:109250000102030405060708090A48656C6C6F20C3
:10926000576F726C640000000000000000000000F6
:1092700000000000000000000000000000000000EE
:1092800000000000000000000000000000000000DE
:1092900000000000000000000000000000000000CE
:1092A000000000000000000000000C016400FFFF4F
:1092B000FFFF90D0030090D00300ECFF17B7D13828
:1092C00030FB103A409696020A00000000000000B1
:1092D000006446000064010000009A084265676966
:1092E0006E6E657200004E6F726D616C000053709F
:1092F0006F72740000FFFFFFFF000102020303030F
:109300000304040404040404040505050505050517
:1093100005050505050505050506060606060606F6
:1093200006060606060606060606060606060606DD
:1093300006060606060606060607070707070707C6
:1093400007070707070707070707070707070707AD
:10935000070707070707070707070707070707079D
:10936000070707070707070707070707070707078D
:109370000707070707070707070808080808080876
:10938000080808080808080808080808080808085D
:10939000080808080808080808080808080808084D
:1093A000080808080808080808080808080808083D
:1093B000080808080808080808080808080808082D
:1093C000080808080808080808080808080808081D
:1093D000080808080808080808080808080808080D
:1093E00008080808080808080808080808080808FD
:0A93F000080808080808080808002B
:00000001FF
/branches/V0.68d CRK HexaLotte/Hex-Files/Flight-Ctrl_MEGA644p_MM3_V0_68d.hex
0,0 → 1,2505
:100000000C9426040C9443040C9443040C94430471
:100010000C9443040C9443040C9443040C94430444
:100020000C9443040C94250E0C9443040C94430448
:100030000C94C6190C9443040C9443040C948B192F
:100040000C9443040C9443040C944E0D0C94B7434D
:100050000C9464090C9443040C947A060C944304A5
:100060000C94FA0E0C9443040C94D3180C9443048F
:100070000C948C430C9443040C9443040A0A0D0022
:100080004E65757472616C0048656164696E67489D
:100090006F6C64000A0D436F6E74726F6C3A2000CF
:1000A0000A0D537570706F727420666F722047501E
:1000B0005320617420326E642055415254000A0D61
:1000C000537570706F727420666F722047505320A2
:1000D0006174203173742055415254004F4B0A0D06
:1000E000000A0D43616C6962726174696E67206118
:1000F00069722070726573737572652073656E73B3
:100100006F722E2E000A0D43616C69627261746910
:100110006E6720436F6D70617373000A0D537570C5
:10012000706F727420666F7220436F6D70617373AD
:10013000204D6F64756C65204D4D33000A0D4143B1
:1001400043206E6F742063616C69627261746564D0
:1001500021000A0D3D3D3D3D3D3D3D3D3D3D3D3D8B
:100160003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DBF
:100170003D3D000A0D466C69676874436F6E74728A
:100180006F6C0A0D48617264776172653A25642E5E
:1001900025640A0D536F6674776172653A5625645B
:1001A0002E2564256320002E005A5F52616E67651C
:1001B0003A202025346900595F52616E67653A2004
:1001C0002025346900585F52616E67653A2020250A
:1001D0003469004D4D332052616E6765005A5F4FA0
:1001E00066667365743A202025336900595F4F664F
:1001F000667365743A202025336900585F4F666640
:100200007365743A2020253369004D4D33204F66C5
:100210006673657400416C743A2025642E252E3374
:1002200064206D004C61743A2025642E252E3364C1
:10023000252E336420646567004C6F6E3A20256478
:100240002E252E3364252E336420646567005361A8
:1002500074733A202564204669783A203F3F005362
:100260006174733A202564204669783A203344004B
:10027000536174733A202564204669783A203244E9
:1002800000536174733A202564204669783A204E01
:100290006F004E6F206461746120617661696C61EA
:1002A000626C65210048693A253469202043663A2A
:1002B000253469200047733A253469202059613A72
:1002C000253469200050693A2534692020526F3A5C
:1002D000253469200045787465726E436F6E7472C0
:1002E0006F6C20200052616E67653A2533692D25B9
:1002F000336900506F736974696F6E3A20253369F2
:1003000000536574706F696E742020253369005343
:100310006572766F202000506F343A2025336920B3
:10032000506F383A2025336900506F333A20253317
:100330006920506F373A2025336900506F323A20D8
:1003400025336920506F363A2025336900506F31CC
:100350003A2025336920506F353A20253369004F04
:100360006666436F757273653A2025356900486586
:100370006164696E673A20202025356900436F75F6
:100380007273653A2020202025356900436F6D7017
:10039000617373202020202020200052432D4C65C3
:1003A00076656C3A2025356900566F6C7461676517
:1003B0003A2020253569004865696768742025342E
:1003C0006920282533692900526F6C6C2020202574
:1003D0003469202825336929005069746368202016
:1003E00025346920282533692900414343202D20E5
:1003F00053656E736F720059617720202025346930
:1004000020282533692900526F6C6C20202534691F
:1004100020282533692900506974636820253469D0
:100420002028253369290059617720202025346947
:1004300020282533692900526F6C6C2020253469EF
:1004400020282533692900506974636820253469A0
:10045000202825336929004779726F202D205365A4
:100460006E736F720050333A253469202050343A4D
:10047000253469200050313A253469202050323A21
:10048000253469200047733A253469202059613AA0
:10049000253469200050693A2534692020526F3A8A
:1004A000253469200043373A253469202043383AFF
:1004B000253469200043353A253469202043363AF3
:1004C000253469200043333A253469202043343AE7
:1004D000253469200043313A253469202043323ADB
:1004E0002534692000436F6D706173733A202020BA
:1004F00025356900526F6C6C3A2020202020202581
:1005000035690050697463683A2020202020253521
:100510006900417474697475646500486569676849
:100520007420436F6E74726F6C004E6F20004F66C4
:1005300066736574202020203A2535690041697270
:100540002050726573732E3A253569005365742007
:10055000506F696E743A202535690048656967688F
:10056000743A202020202535690028632920486F0F
:100570006C67657220427573730053657474696E9D
:10058000673A202564200048573A5625642E256492
:100590002053573A25642E25642563002B204D698E
:1005A0006B726F4B6F70746572202B005B25695DF9
:1005B000005B25695D000A0D5573696E6720506107
:1005C00072616D6574657220536574202564000A3C
:1005D0000D496E69742E20454550524F4D3A2047C3
:1005E000656E65726174696E672044656661756CDD
:1005F000742D506172616D657465722E2E2E00002F
:10060000008F001E01AD013B02CA025803E60374CD
:100610000402058F051B06A7063307BE074808D24C
:10062000085B09E3096B0AF20A780BFD0B810C04E5
:100630000D860D070E870E060F840F00107B10F538
:10064000106E11E5115B12CF124213B313231492F3
:1006500014FE146A15D3153B16A11605176717C8A3
:100660001727188318DE1837198E19E319361A87D9
:100670001AD61A231B6E1BB61BFD1B411C831CC301
:100680001C001D3C1D751DAB1DE01D121E421E6F82
:100690001E9A1EC31EE91E0D1F2E1F4D1F691F84AB
:1006A0001F9B1FB01FC31FD31FE11FEC1FF51FFBB4
:1006B0001FFF1F00200001020304040506070809AC
:1006C0000A0B0B0C0D0E0F10111112131415151629
:1006D000171818191A1B1B1C1D1D1E1F1F20212156
:1006E00022232324242525262727282829292A2AA6
:1006F0002B2B2C2C2D2D2D2E2E2F2F303030313119
:1007000032323233333334343435353536363637A6
:10071000373737383838393939393A3A3A3A3B3B4A
:100720003B3B3C3C3C3C3C3D3D3D3D3E3E3E3E3EFD
:100730003F3F3F3F3F3F40404040404041414141BB
:100740004141424242424242424343434343434384
:100750004444444444444444454545454545454551
:100760004546464646464646464647474747474724
:1007700047474747474848484848484848484848FE
:1007800049494949494949494949494949494A4AD7
:100790004A4A4A4A4A4A4A4A4A4A4A4A4B4B4B4BB5
:1007A0004B4B4B4B4B4B4B4B4B4B4B4B4B4C4C4C96
:1007B0004C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C79
:1007C0004D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D59
:1007D0004D4D4D4D4D4D4E4E4E4E4E4E4E4E4E4E3F
:1007E0004E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E29
:1007F0004F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F09
:100800004F4F4F4F4F4F4F4F4F4F4F4F4F4F4F0A3D
:100810000D584D696E3A2534642C20584D61783A54
:100820002534642C20594D696E3A2534642C2059A6
:100830004D61783A2534642C205A4D696E3A25343E
:10084000642C205A4D61783A2534640011241FBE6F
:10085000CFEFD0E1DEBFCDBF14E0A0E0B1E0E4EB2C
:10086000F8E902C005900D92A63BB107D9F719E04F
:10087000A6EBB4E001C01D92AB3AB107E1F70E94CC
:1008800045040C94594C0C940000CF93DF93F894DA
:1008900014B815B8189B02C08BE001C08AE08093A1
:1008A000000184B1836084B9209100012A3011F4E1
:1008B000289A01C02898299884B7877F84BF80919F
:1008C00060008861809360001092600080ED97E086
:1008D0009093D4048093D30410923908109238086E
:1008E00010926A05109269051092680510926705CA
:1008F00010926605109265052A3011F4289801C0FF
:10090000289A0E9423180E94040D0E94020E0E9441
:100910002006809100018B3011F40E942F430E9429
:1009200057190E94DD0E0E947C180E94634778943C
:1009300010923A0784E480933B0787E080933C075A
:1009400020910001822F6AE00E948A4B492F50E0DB
:10095000822F0E948A4B90E024E630E03F932F9351
:1009600024E430E03F932F931F921F925F934F93A5
:100970009F938F9383E791E09F938F931F920E94A1
:10098000600A82E591E09F938F931F920E94600A14
:10099000299A0E94B03F84E00E94B03D2DB73EB737
:1009A000205F3F4F0FB6F8943EBF0FBE2DBF805063
:1009B000944050F08CE391E09F938F931F920E949C
:1009C000600A0F900F900F9084EF91E00E94390D14
:1009D000EC01CE010E94420D8823D9F38BE191E016
:1009E0009F938F931F920E94600AE091B608F0E0F7
:1009F000EE0FFF1FEC5CF74F808191810F900F90FD
:100A00000F9085369105C4F0E091B708F0E0EE0F45
:100A1000FF1FEC5CF74F808191818536910564F072
:100A200085E091E09F938F931F920E94600A0E943D
:100A300022460F900F900F908091BC0880FF20C03D
:100A400081EE90E09F938F931F920E94600A88EE40
:100A500093E00E94390DEC010E947E110F900F90DF
:100A60000F90CE010E94420D8823D9F38CED90E0C7
:100A70009F938F931F920E94600A0F900F900F9088
:100A8000809100018A3019F48EEB90E002C080EA78
:100A900090E09F938F931F920E94600A0F900F9097
:100AA0000F900E942023809100018A3011F4289831
:100AB00001C0289A80ED97E09093D4048093D304EA
:100AC00085E58093440784E990E09F938F931F927C
:100AD0000E94600A8091BC080F900F900F9082FFD7
:100AE00003C088E890E002C080E890E09F938F9375
:100AF0001F920E94600A0F900F900F908CE790E079
:100B00009F938F931F920E94600A0E94BE1188E8F3
:100B100093E190936D0380936C030F900F900F906F
:100B20008091D0048823E1F31092D0040E947224B3
:100B30000E94F522209100012A3011F4289801C06A
:100B4000289A80910301882321F08150809303012A
:100B500012C01092C2041092C30410924E07109259
:100B6000720510927105109274051092730510921F
:100B700076051092750580916C0390916D03892B19
:100B800001F585E090E090936D0380936C030E94E3
:100B9000A31880910403909105038F5F9F4FF9F490
:100BA000809153058823D9F080E197E29093D40493
:100BB0008093D30480E890E090930503809304032E
:100BC0000EC080916C0390916D03019790936D031B
:100BD00080936C032A3011F4289801C0289A8091E0
:100BE000D004882311F40E94B1070E945908CE0155
:100BF0000E94420D882309F493CF2091080330917D
:100C000009038091CC0890E0281739079CF4809163
:100C10000403909105038F5F9F4F61F480E797E194
:100C20009093D4048093D30480E093E090930503E1
:100C30008093040384E690E00E94390DEC0170CFAC
:100C40009FB7F8948091C1008F778093C100809105
:100C5000C1008F7B8093C100589A5098599A519A3D
:100C60001092C5008AE28093C4008091C000826027
:100C70008093C00088E18093C1008091C2008F778B
:100C80008093C2008091C2008F7B8093C2008091CC
:100C9000C2008F7D8093C2008091C2008F7E8093BE
:100CA000C2008091C200877F8093C2008091C10002
:100CB0008B7F8093C1008091C20084608093C200CA
:100CC0008091C20082608093C20002C08091C60001
:100CD0008091C00087FDFACF8091C1008068809329
:100CE000C1008091C10080648093C1001092BA0459
:100CF0009FBF08951F920F920FB60F9211248F93EA
:100D00009F93EF93FF93809101018823E1F48091F9
:100D1000CC049091CD0401969093CD048093CC04A3
:100D2000FC01EF56F84FE081ED3019F0863991055E
:100D300039F41092CD041092CC0481E0809301012B
:100D4000E093C60004C01092CD041092CC04FF9131
:100D5000EF919F918F910F900FBE0F901F9018955C
:100D6000DC0120E030E040E050E008C0FA01EF563E
:100D7000F84F8081280F311D4F5F5F4F4A175B0787
:100D8000A9F73F70C90136E0969587953A95E1F746
:100D9000835CFD01EF56F84F808311962F73235C1F
:100DA000FD01EF56F84F2083AE56B84F8DE08C937F
:100DB00010920101809191078093C60008951F93BE
:100DC000CF93DF93EA01722F93E2909391076093A0
:100DD000920780939307A3E0B0E060E04FC0FE016C
:100DE000E60FF11D90816F5F715019F410E040E043
:100DF0000FC0FE01E60FF11D40816F5F715011F4CD
:100E000010E006C0FE01E60FF11D10816F5F71500A
:100E1000892F86958695835CFD01EF56F84F808378
:100E200050E09A0184E0369527958A95E1F7892F5D
:100E300090E083709070F4E0880F991FFA95E1F7C5
:100E4000282B235CFD01EE56F84F2083812F8295DD
:100E50008695869583704F705070440F551F440FD0
:100E6000551F842B835CFD01ED56F84F80831F7363
:100E7000135CFD01EC56F84F10831496772309F0AC
:100E8000AECFCD010E94B006DF91CF911F910895A2
:100E90001F93CF93DF93EC0170E0A22FB0E0129785
:100EA00048C0E42FF0E0EC55F94F30814F5FE42F5C
:100EB000F0E0EC55F94F50814F5FE42FF0E0EC5536
:100EC000F94F10814F5FE42FF0E0EC55F94F20818E
:100ED0004F5F842F90E0A817B90774F15D53FE01AE
:100EE000E70FF11D852F82958F703D53330F330F20
:100EF000382B3083613001F1912F9D537F5FFE01CC
:100F0000E70FF11D71505295507F892F8695869578
:100F1000582B508363506F3F79F07E5FFE01E70FDF
:100F2000F11D9295990F990F907C2D53922B9083E0
:100F30007F5F662309F0B5CFDF91CF911F910895B0
:100F40001F93182F8A3019F48DE00E94A00780911A
:100F5000C00085FFFCCF1093C60080E090E01F9199
:100F6000089580910101882309F4A2C08091B604FC
:100F7000882371F080910101882351F06091C604AB
:100F80002BE044E457E087E40E94DF061092B604A9
:100F90008091C7049091C8040E94420D882321F4D7
:100FA0008091B8048823B1F080910101882391F0E9
:100FB0006091C60422E44FE457E084E40E94DF0617
:100FC0001092B80484EF91E00E94390D9093C80408
:100FD0008093C704609102016F3F89F0462F50E073
:100FE00094E0440F551F9A95E1F74C5F5E4F605DAA
:100FF00020E181E40E94DF068FEF8093020190914F
:1010000027089923A1F080910101882381F083E2D0
:1010100080939107909392078DE0809393071092AD
:10102000010110922708809191078093C60080915A
:10103000B704882359F180910101882339F10E9476
:10104000C7111092B7043091BC04932F9F5F909307
:10105000BC04943021F08091BD04882359F02EE126
:1010600044E358E060E084E30E94DF068FEF809362
:10107000BC040CC044E1949FA0011124465E5C4F67
:1010800024E160E0832F8F5C0E94DF068091B90429
:10109000882371F080910101882351F06091C6048A
:1010A0002AE04AE357E086E50E94DF061092B90481
:1010B00008951F93CF93DF93CDB7DEB722970FB676
:1010C000F894DEBF0FBECDBF8091BA04882309F427
:1010D000F1C08FEF809303018091A6068B3609F44F
:1010E00079C08C3688F48336D1F1843630F4813679
:1010F000C1F0823609F0DCC020C0873609F47BC01D
:10110000883609F0D5C042C0813709F478C08137EC
:1011100008F49BC0843709F454C0863709F0C8C06E
:1011200066C02091BB0443E062E0CE0101960E94BC
:101130004807898180930201BBC02091BB0443E032
:101140006BE084E497E00E9448078091F604909158
:101150004607892B8093F60480914D0745C0209166
:10116000BB0443E06BE084E497E00E944807809171
:10117000F60490914607892B8093F60480914D07E1
:101180008093270881E08093B80492C02091BB042B
:1011900043E062E0CE0101960E9448078091F60488
:1011A0009981892B8093F6048A818F3F21F481E015
:1011B0008093BD0402C01092BD0481E08093B70407
:1011C00077C02091BB0443E064E08EEB94E00E9482
:1011D00048076EC02091BB0443E064E082EC94E0D9
:1011E0000E9448078091C5048093270861C081E070
:1011F0008093B9045DC081E08093B60459C020910A
:10120000BB0443E062E0CE0101960E944807898159
:101210008F3F71F0863010F085E0898389810E94CC
:10122000DE3D6091C604898126E444EB58E009C0A4
:101230001091C60482E00E949F3D26E444EB58E0F2
:10124000612F855B0E94DF0633C02091BB0443E021
:1012500066E484EB98E00E9448078091A6068B56CE
:101260000E94C93D6091DF0870E080E090E024ECCE
:1012700039E040E050E00E946B4B60937203709342
:10128000730380937403909375036091E00870E09A
:1012900080E090E00E946B4B60937603709377033D
:1012A00080937803909379030E94A13F0E945D246C
:1012B0001092BA0422960FB6F894DEBF0FBECDBFCF
:1012C000DF91CF911F9108951F920F920FB60F9249
:1012D00011241F932F933F934F935F936F937F93AB
:1012E0008F939F93AF93BF93CF93DF93EF93FF932E
:1012F0001091C600809100018A3019F4812F0E945C
:10130000E6418091BA04882309F06DC06091C90458
:10131000662371F4133279F41093A40681E080936C
:10132000C90483E290E09093CB048093CA045BC02D
:10133000663908F054C0A62FB0E02091CA0430915D
:10134000CB041D3069F0AC55B94F1C936F5F6093AF
:10135000C904210F311D3093CB042093CA0443C02C
:10136000FD01EE55F94F9081ED01CD55D94F8881A2
:10137000A901491B5109481B51095F705093CB04C7
:101380004093CA042081CA0136E0969587953A9524
:10139000E1F7835C8217F1F49881842F8F73835C6B
:1013A0008917C1F481E08093BA046093BB04AC5503
:1013B000B94F1C938091A606823571F488E190E0C4
:1013C0002CE00FB6F894A895809360000FBE209390
:1013D000600002C01092BA041092C90404C01092B6
:1013E000C9041092BA04FF91EF91DF91CF91BF91A0
:1013F000AF919F918F917F916F915F914F913F91AD
:101400002F911F910F900FBE0F901F901895982F3E
:1014100080912808813069F48091F504E82FF0E08C
:10142000E65EFC4F90838F5F8093F50421E030E00F
:1014300005C0892F0E94A007282F30E0C901089518
:101440001F93182F04C080E30E94070A1150111641
:10145000D4F31F9108951F93182F04C080E20E94B7
:10146000070A11501116D4F31F9108950F931F937B
:10147000CF93DF938C01EB0108C0F8010F5F1F4F82
:10148000E4918E2F0E94070A21972097B1F7DF91F0
:10149000CF911F910F9108950F931F93CF93DF93D7
:1014A0008C01EB0106C0F80181918F010E94070AAF
:1014B00021972097C1F7DF91CF911F910F91089548
:1014C0002F923F924F925F926F927F928F929F9254
:1014D000AF92BF92CF92DF92EF92FF920F931F9342
:1014E000CF93DF93CDB7DEB7E5970FB6F894DEBFA5
:1014F0000FBECDBF2B968FAD2B9780932808CE01C2
:10150000835B9F4F9B838A832D964EAC5FAC2D9758
:101510001EA61FA618AA19AA9E01225D3F4F3DAB29
:101520002CAB820102C00F5F1F4FF801F490FF2027
:1015300019F0F5E2FF16B9F7B8016419750919F049
:10154000C2010E94360AFF2009F445C2280108940E
:10155000411C511C1982AA81BB8133241BAA2FEF85
:101560002AABF2010894411C511CB490632D70E029
:101570006170707035E7B31621F08B2D806288376B
:10158000C9F46115710559F02D913D914D915C9112
:1015900013972EA73FA748AB59AB14960BC08D915C
:1015A0009C9111979C0140E050E02EA73FA748ABCB
:1015B00059AB129630E2B31621F48981882389F65B
:1015C0001CC043E2B41611F458E055C08AE2B816C4
:1015D00021F09DE2B91671F408C0FD011296E08178
:1015E000EBABE7FFBECFE195EBABE0E13E2AFFEDD1
:1015F0003F22B7CF2BE2B21611F4B982B2CF3EE24E
:10160000B31699F5F2010894411C511C84918A3259
:1016100021F0B82E20E030E01DC0FD01129640817F
:10162000518157FF02C04FEF5FEF4AAB9ACFC9011C
:1016300053E0880F991F5A95E1F7220F331F280FA7
:10164000391F2B0D311D20533040F2010894411CED
:10165000511CB4908B2D80538A3048F3A90137FF79
:1016600002C04FEF5FEF4AAB85CF40E3B41629F4D9
:1016700034FC77CF50E2352A74CF8B2D81538930DB
:10168000D8F420E030E0C90103E0880F991F0A95E3
:10169000E1F7220F331F280F391F2B0D311D205367
:1016A0003040F2010894411C511CB4908B2D8053A2
:1016B0008A3048F32BAB5ECF88E6B81619F494E075
:1016C000392A4FCFECE6BE1619F4F1E03F2A49CF94
:1016D000BB83AA8323E6B21639F41296BB83AA838E
:1016E00012978C918E8322C134E4B31639F044E60C
:1016F000B41631F059E6B516A9F502C081E0382AD2
:1017000030FE08C01496BB83AA835E914E913E9131
:101710002E910AC01296BB83AA839E918E919C0142
:10172000442737FD4095542F2EA73FA748AB59AB10
:101730008EA59FA5A8A9B9A9BB238CF42EA53FA56A
:1017400048A959A950954095309521953F4F4F4F45
:101750005F4F2EA73FA748AB59AB8DE28983BAE014
:101760002B2E80C03FE4B31621F04FE6B41631F4BF
:1017700002C051E0352AA8E02A2E73C080E7B816CF
:1017800089F41296BB83AA839E918E919C0140E0BE
:1017900050E02EA73FA748AB59AB30E4332AF8E717
:1017A000BF2E5DC043E7B416D1F51296BB83AA8362
:1017B000DE90CE90C114D10489F488E28E838EE647
:1017C0008F8385E788878CE689878A8789E28B877C
:1017D0001C86E6E0CE2ED12CCC0EDD1E5AA957FD7C
:1017E00014C0452F552747FD509560E070E0C601B5
:1017F0000E944349009711F4FAA80EC0F82EFC1875
:101800008AA98F154CF4F82E07C0F601019000202C
:10181000E9F73197FE2EFC18198240E090C095E55B
:10182000B91621F0A5E7BA1631F402C0B1E03B2A9F
:101830007AE0272E16C0E8E5BE1621F0F8E7BF16BD
:1018400009F070C033FE0BC02EA53FA548A959A9C9
:10185000211531054105510511F030E4332A60E1CD
:10186000262E19824AA947FD02C05FED35228EA5BA
:101870009FA5A8A9B9A90097A105B10549F49AA9FE
:10188000992331F45EE2C52ED12CCC0EDD1E46C06C
:101890006EA47FA488A899A84EE2C42ED12CCC0EA9
:1018A000DD1EE22CFF2400E010E06EA57FA588A9D4
:1018B00099A9A80197010E94BD4B6A3020F430E33A
:1018C000A32EA60E08C027E5A22EA60EA8E5BA16DE
:1018D00011F4BFEDAB22F601A2926F016EA57FA5B8
:1018E00088A999A9A80197010E94BD4B2EA73FA7DF
:1018F00048AB59AB6E147F048006910618F039018D
:101900004A01D3CFF8E02F1649F433FE07C020E395
:10191000A21621F080E3D6018E936D01FCA8FC187D
:101920004AA90DC0BB2009F456C0BE82198296E0B8
:10193000C92ED12CCC0EDD1E40E0FF24F394E42E02
:10194000EF18E7FCEE248981882319F08F2D8F5F33
:1019500006C036FC02C08F2D02C08F2D8E5FA82ED0
:10196000AE0C032D10E080E3882E912C8022912272
:101970008114910421F48BA98A190E942B0A898170
:10198000882329F061E070E0CE01019609C006FFCE
:1019900009C080E38C83BD8262E070E0CE010496D2
:1019A0000E944C0AB0E28B16910421F48BA98A198B
:1019B0000E94200A8E2D0E94200A6F2D772767FD36
:1019C0007095C6010E944C0A04FFABCD8BA98A1901
:1019D0000E942B0AA6CDE5960FB6F894DEBF0FBE87
:1019E000CDBFDF91CF911F910F91FF90EF90DF90CE
:1019F000CF90BF90AF909F908F907F906F905F90AF
:101A00004F903F902F9008952FB7F8949091000138
:101A10009A3019F4529A5A9802C03F9A479884B162
:101A2000886184B985B1877E85B99A3019F4529A54
:101A30005A9802C03F9A479884B58F7A84BD84B57E
:101A4000836A84BD85B5877385BD85B5887F8260CF
:101A500085BD17BC88E788BD16BC80916E00897F64
:101A600080936E0080916E00816080936E002FBF26
:101A700008952091CE043091CF042F5F3F4F820F05
:101A8000931F08952091CE043091CF04821B930BB5
:101A9000892F99278695807490E008951F920F9260
:101AA0000FB60F9211242F933F934F935F936F9331
:101AB0007F938F939F93AF93BF93EF93FF93809107
:101AC000D50481508093D5048F3FB9F489E0809389
:101AD000D504809106038F5F81708093060388236D
:101AE00019F481E08093D0048091CE049091CF04CA
:101AF00001969093CF048093CE048091D30490916B
:101B0000D404892BB1F08091D3049091D40401972F
:101B10009093D4048093D3042091D3043091D404BF
:101B2000809104039091050382239323892BE1F490
:101B300006C08FEF9FEF909305038093040380917D
:101B400000018A3039F404C05A9A05C0479A03C08C
:101B50005A9801C047988091BC0883FD02C085FF58
:101B600008C00E94E74505C0809100018A3071F7E6
:101B7000EBCFFF91EF91BF91AF919F918F917F91AB
:101B80006F915F914F913F912F910F900FBE0F90EA
:101B90001F901895AC012091CE043091CF042F5F97
:101BA0003F4F05C080917A00886C80937A008091C5
:101BB000CE049091CF04B901681B790BCB01840F3F
:101BC000951F80709078892F99278695882351F3E7
:101BD0000895AC012091CE043091CF042F5F3F4F88
:101BE0008091CE049091CF04B901681B790BCB0191
:101BF000840F951F80709078892F99278695882368
:101C000079F308959FB7F894579A5F9AE0EBF0E064
:101C100080818F788083808183688083E1EBF0E02E
:101C20008081867380838081866080838AE0809350
:101C3000B3001092B200E0E7F0E080818A7F8083F9
:101C40008081826080839FBF08951F920F920FB69C
:101C50000F921124FF920F931F932F933F934F9353
:101C60005F936F937F938F939F93AF93BF93EF9304
:101C7000FF93809107038150809307038F3F09F002
:101C800082C08091B0008093B0008091B0008068E5
:101C90008093B0008091910390E09093D70480935B
:101CA000D6048091E908F090D60880FF23C0009107
:101CB000D6041091D70460911D0570911E05809186
:101CC0001F059091200520E830E040E050E00E94A0
:101CD000DF4BCA01B9012F2D30E040E050E00E94F7
:101CE0006B4B20E032E040E050E00E94DF4B020FFF
:101CF000131F22C00091D6041091D70460911D05D6
:101D000070911E0580911F059091200520E830E01C
:101D100040E050E00E94DF4BCA01B9012F2D30E0B6
:101D200040E050E00E946B4B20E032E040E050E0A9
:101D30000E94DF4B021B130B1093D7040093D604B1
:101D40002091D6043091D7048091D70890E02817CD
:101D5000390754F02091D6043091D7048091D808E7
:101D600090E08217930724F49093D7048093D604CD
:101D70008091D6049091D7048093B3008091D908C4
:101D80008093070306C08091B0008F738093B000EA
:101D90005F98FF91EF91BF91AF919F918F917F914C
:101DA0006F915F914F913F912F911F910F91FF90F4
:101DB0000F900FBE0F901F9018959FB7F89411B811
:101DC00012B88FEF80937E00ECE7F0E080818F7196
:101DD00080838081807E8083AAE7B0E087E28C9355
:101DE000EBE7F0E08081887F80838C91886C8C9316
:101DF0009FBF08951F920F920FB60F921124EF927A
:101E0000FF920F931F932F933F934F935F936F9383
:101E10007F938F939F93AF93BF93CF93DF93EF9372
:101E2000FF9380917A00877380937A008091F30406
:101E30008F5F8093F3048150853009F47EC0863033
:101E400090F4823009F440C0833030F48823F1F0FC
:101E5000813009F027C22FC0833009F441C084309B
:101E600009F020C25AC0883009F4B2C0893038F471
:101E7000863009F473C0873009F014C28CC08930F1
:101E800009F4C3C08A3009F00DC29EC18091780068
:101E9000909179009093F2048093F10481E0809313
:101EA000F4048091E8049091E90401969093E90488
:101EB0008093E804FBC18091780090917900909321
:101EC000F0048093EF0482C08091780090917900B3
:101ED0009093EE048093ED0484E08093F404E6C1D3
:101EE0004091080350910903809178009091790006
:101EF0009A01220F331F240F351F63E070E00E9408
:101F0000964B260F371F3695279536952795309394
:101F100009032093080386E0E0CF80911705909194
:101F200018052091780030917900821B930B9093D3
:101F3000E1048093E00487E0D0CF80917800909115
:101F400079002091150530911605821B930B909313
:101F5000E3048093E2041092F404A8C1809100018C
:101F60002091F1043091F2048A3049F48091780094
:101F700090917900820F931F9695879506C0809166
:101F8000780090917900820F931F9093DF048093E3
:101F9000DE0481E0A2CF809100012091EF04309116
:101FA000F0048A3049F48091780090917900820F92
:101FB000931F9695879506C080917800909179003F
:101FC000820F931F9093DD048093DC0482E085CF21
:101FD000809100012091ED043091EE048A3049F4A3
:101FE0008091780090917900820F931F9695879544
:101FF00006C08091780090917900820F931F909392
:10200000DB048093DA0485E068CF609178007091FA
:102010007900E0901905F0901A0500911B051091C8
:102020001C05882777FD8095982F0E94504AA801AB
:1020300097010E9450490E941D4A7093E5046093E5
:10204000E404E091E404F091E5048091E2049091CD
:10205000E304C091E004D091E10497FF03C09095A0
:1020600081959F4F64E070E00E94AA4B9B01CE01D6
:10207000D7FF03C0909581959F4F64E070E00E9468
:10208000AA4B260F371FE20FF31FF093E504E093EE
:10209000E4048091E4049091E504029704F16091D6
:1020A000190570911A0580911B0590911C0520E07F
:1020B00030E048E454E40E948B4A88230CF03CC092
:1020C0006091190570911A0580911B0590911C056E
:1020D0002AE037ED43EA5CE30E94514925C0809134
:1020E000E4049091E5048F5F9F4F34F560911905EA
:1020F00070911A0580911B0590911C0520E030E03D
:1021000046E154E40E948F4A1816B4F46091190510
:1021100070911A0580911B0590911C052AE037EDFE
:1021200043EA5CE30E9450496093190570931A05D5
:1021300080931B0590931C05809178009091790005
:102140009093D9048093D80420914D0530914E0589
:1021500040914F05509150058091E4049091E50421
:10216000AA2797FDA095BA2F820F931FA41FB51F12
:1021700080934D0590934E05A0934F05B093500565
:10218000E0904D05F0904E0500914F0510915005DF
:1021900060914D0570914E0580914F0590915005CD
:1021A00020E034E040E050E00E94DF4BE21AF30A06
:1021B000040B150BE0924D05F0924E0500934F0570
:1021C0001093500583E089CE60917800709179007A
:1021D0008091EA049091EB04680F791F7093EB04EF
:1021E0006093EA048091EC048F5F8093EC04853067
:1021F00008F458C0809178009091790090930F0373
:1022000080930E038091290890912A08861B970BD2
:102210002091770530917805821B930B9093E7040A
:102220008093E604E0900A03F0900B0300910C0306
:1022300010910D03882777FD8095982FA8019701AD
:10224000220F331F441F551F2E0D3F1D401F511FCE
:10225000620F731F841F951F24E030E040E050E0C0
:102260000E94DF4B20930A0330930B0340930C032F
:1022700050930D032091290830912A0880910A0378
:1022800090910B03A0910C03B0910D03281B390B07
:1022900030937805209377051092EC041092EB04AC
:1022A0001092EA041092F4041092F30480917C00DE
:1022B000807E9091F404892B80937C008091F304BC
:1022C000882329F080917A00886C80937A00FF91AE
:1022D000EF91DF91CF91BF91AF919F918F917F91BE
:1022E0006F915F914F913F912F911F910F91FF90AF
:1022F000EF900F900FBE0F901F9018951F93CF93E4
:10230000DF9383E00E949F3D182F853108F01A501B
:1023100017BD84E690E00E94CA0D80910E03909153
:102320000F0382559340C0F410E016C017BD82E33E
:1023300090E00E94CA0DDF93CF931F920E94600A23
:1023400080910E0390910F030F900F900F9084587F
:10235000934030F01F5F02C0C7EAD1E01A3F30F36C
:10236000612F83E00E94A83D10932B088CE291E03E
:102370000E94CA0DDF91CF911F910895EAE1F3E029
:1023800080E2819383E0EA36F807D1F708959F92BF
:10239000AF92BF92CF92DF92EF92FF920F931F9373
:1023A000CF93DF938091F604282F30E0C90181702C
:1023B0009070682F8823A9F08091F704882311F08A
:1023C000815002C080916A038093F704EAE1F3E050
:1023D00080E2819383E0EA36F807D1F78FEF8093AC
:1023E000BC04A9014270507021FF17C09091F704FE
:1023F00080916A03981719F41092F70403C09F5F45
:102400009093F704EAE1F3E080E2819393E0EA3607
:10241000F907D1F78FEF8093BC04662321F0452B99
:1024200011F01092F7048091F704282F30E08A30E1
:1024300040F481E18093F5043F932F9381EB95E085
:1024400007C080E18093F5043F932F938CEA95E0D9
:102450009F938F9381E08F930E94600A0F900F905B
:102460000F900F900F901091F704173009F40CC3E0
:10247000183098F4133009F427C1143038F41130AF
:1024800009F469C0123008F0C9C01DC0153009F444
:10249000F3C1163008F0AAC26BC11B3009F4E1C3C6
:1024A0001C3038F4193009F44AC31A3008F09BC3C1
:1024B00010C31D3009F43DC51D3008F424C41E307E
:1024C00009F0AEC56FC51092F5048CE995E09F93B5
:1024D0008F9311E01F930E94600A84E18093F504BA
:1024E00020910001822F6AE00E948A4B492F50E020
:1024F000822F0E948A4B90E024E630E03F932F9396
:1025000024E430E03F932F931F921F925F934F93E9
:102510009F938F9387E895E09F938F931F930E94DB
:10252000600A88E28093F5040E94A13F90E09F93A7
:102530008F938AE795E09F938F931F930E94600A81
:102540008CE38093F5048AE695E09F938F931F9325
:102550000E94600AD4C38091BC0880FF47C01092DB
:10256000F50480917705909178059F938F938BE583
:1025700095E09F938F931F930E94600A84E180935C
:10258000F5048091790590917A059F938F938CE45F
:1025900095E09F938F931F930E94600A88E2809337
:1025A000F50480910E0390910F039F938F938DE319
:1025B00095E09F938F931F930E94600A8CE3809312
:1025C000F50480912B0890E09F938F938EE295E025
:1025D0009F938F931F930E94600A8DB79EB7449676
:1025E0000FB6F8949EBF0FBE8DBF1FC584E18093C8
:1025F000F5048AE295E09F938F931F930E94600AEF
:1026000088E28093F5048BE195E09F938F931F936D
:102610000E94600A8DB79EB70696E2CF1092F5042D
:1026200082E195E09F938F9311E01F930E94600ACF
:1026300084E18093F50460911D0570911E058091E1
:102640001F059091200520E034E040E050E00E941A
:10265000DF4B5F934F933F932F9383E095E09F93DE
:102660008F931F930E94600A88E28093F504609123
:10267000250570912605809127059091280520E079
:1026800034E040E050E00E94DF4B5F934F933F9374
:102690002F9384EF94E09F938F931F930E94600A7F
:1026A0008CE38093F50480916E0390916F039F9368
:1026B0008F9385EE94E09F938F931F930E94600AFF
:1026C0008DB79EB746968CCF1092F504809138084E
:1026D0009091390820913608309137089F938F9355
:1026E0003F932F9385ED94E09F938F9311E01F9379
:1026F0000E94600A84E18093F50480913C089091E7
:102700003D0820913A0830913B089F938F933F9367
:102710002F9385EC94E09F938F931F930E94600A00
:1027200088E28093F50480914008909141082091BF
:102730003E0830913F089F938F933F932F9385EBF3
:1027400094E09F938F931F930E94600A8CE3809381
:10275000F5048091440890914508209142083091F9
:1027600043089F938F933F932F9385EA94E07BC018
:102770001092F504E091B508F0E0EE0FFF1FEC5C5D
:10278000F74F20813181E091B408F0E0EE0FFF1F98
:10279000EC5CF74F808191813F932F939F938F93B0
:1027A00085E994E09F938F9311E01F930E94600A44
:1027B00084E18093F504E091B708F0E0EE0FFF1F8D
:1027C000EC5CF74F20813181E091B608F0E0EE0F2C
:1027D000FF1FEC5CF74F808191813F932F939F9374
:1027E0008F9385E894E09F938F931F930E94600AD4
:1027F00088E28093F504E091B908F0E0EE0FFF1F46
:10280000EC5CF74F20813181E091B808F0E0EE0FE9
:10281000FF1FEC5CF74F808191813F932F939F9333
:102820008F9385E794E09F938F931F930E94600A94
:102830008CE38093F504E091BB08F0E0EE0FFF1FFE
:10284000EC5CF74F20813181E091BA08F0E0EE0FA7
:10285000FF1FEC5CF74F808191813F932F939F93F3
:102860008F9385E694E09F938F931F930E94600A55
:102870008DB79EB74C96B4CE1092F50487E594E0E0
:102880009F938F9311E01F930E94600A0F900F9007
:102890000F90809100018A3009F04AC084E1809352
:1028A000F50440910B0550910C058091DA0490914C
:1028B000DB0420910B0530910C05821B930B5F9379
:1028C0004F939F938F9387E494E09F938F931F93ED
:1028D0000E94600A88E28093F50440910D055091B2
:1028E0000E058091DC049091DD0420910D0530915E
:1028F0000E05821B930B5F934F939F938F9387E3F8
:1029000094E09F938F931F930E94600A8CE38093BF
:10291000F50480910F059091100520918608309163
:1029200087089F938F933F932F9387E294E055C03E
:1029300084E18093F50480910B0590910C0562E091
:1029400070E00E94AA4B8091DA049091DB04209100
:102950000B0530910C05821B930B7F936F939F9314
:102960008F9387E194E09F938F931F930E94600A57
:1029700088E28093F50480910D0590910E0562E048
:1029800070E00E94AA4B8091DC049091DD042091BC
:102990000D0530910E05821B930B7F936F939F93D0
:1029A0008F9387E094E09F938F931F930E94600A18
:1029B0008CE38093F50480910F059091100562E0FF
:1029C00070E00E94AA4B80918608909187087F93BF
:1029D0006F939F938F9387EF93E09F938F931F93B2
:1029E0000E94600A8DB79EB74596FACD1092F50405
:1029F0008AEE93E09F938F9311E01F930E94600AE9
:102A000084E18093F504809115059091160520913D
:102A1000E2043091E3049F938F933F932F9389EDCA
:102A200093E09F938F931F930E94600A88E28093A4
:102A3000F50480911705909118052091E0043091DC
:102A4000E1049F938F933F932F9388EC93E09F93A0
:102A50008F931F930E94600A8CE38093F50460912A
:102A6000190570911A0580911B0590911C050E9413
:102A70001D4A20917B0830917C087F936F933F9390
:102A80002F9387EB93E036C184E18093F504809126
:102A90000803909109039F938F9389EA93E09F9392
:102AA0008F9311E01F930E94600A88E28093F504DF
:102AB00080910305909104059F938F938BE993E098
:102AC0009F938F931F930E94600A8DB79EB70A96BB
:102AD00087CD1092F5048CE893E09F938F9311E0DB
:102AE0001F930E94600A84E18093F5048091700333
:102AF000909171039F938F938DE793E09F938F93B2
:102B00001F930E94600A88E28093F50480916E030F
:102B100090916F039F938F938EE693E09F938F9393
:102B20001F930E94600A8CE38093F5048091510505
:102B3000909152059F938F938FE593E068C2109216
:102B4000F50480915D0590915E05209155053091C9
:102B500056059F938F933F932F938DE493E09F931C
:102B60008F9311E01F930E94600A84E18093F50423
:102B700080915F059091600520915705309158052F
:102B80009F938F933F932F938BE393E09F938F9328
:102B90001F930E94600A88E28093F504809161058A
:102BA000909162052091590530915A059F938F931A
:102BB0003F932F9389E293E09F938F931F930E94FB
:102BC000600A8CE38093F50480916305909164051D
:102BD00020915B0530915C059F938F933F932F93DA
:102BE00087E193E040CE1092F5048FE093E09F934D
:102BF0008F9311E01F930E94600A84E18093F50493
:102C00008091910390E09F938F9381E093E09F9355
:102C10008F931F930E94600A88E28093F50480914D
:102C2000D6049091D7049F938F9383EF92E09F9364
:102C30008F931F930E94600A8CE38093F504209188
:102C4000D80830E08091D70890E03F932F939F936E
:102C50008F9385EE92E09F938F931F930E94600A5B
:102C6000BCCC1092F50485ED92E09F938F9311E018
:102C70001F930E94600A84E18093F5042091480725
:102C8000332727FD309580914707992787FD909539
:102C90003F932F939F938F9385EC92E09F938F9315
:102CA0001F930E94600A88E28093F50420914907EF
:102CB000332727FD309580914A0790E03F932F936B
:102CC0009F938F9385EB92E09F938F931F930E9426
:102CD000600A8CE38093F50420914E0730E08091E8
:102CE0004B07992787FD90953F932F939F938F9341
:102CF00085EA92E09F938F931F930E94600A8DB79D
:102D00009EB748966DCC80917206882371F410921C
:102D1000F50482E992E09F938F9381E08F930E9464
:102D2000600A0F900F900F9080C12091740622309E
:102D300071F02330B1F0809173062223E1F41092F8
:102D4000F50490E09F938F9381E892E01BC010926E
:102D5000F5048091730690E09F938F9380E792E053
:102D600011C01092F5048091730690E09F938F93A9
:102D70008FE592E007C01092F50490E09F938F9347
:102D80008EE492E09F938F9381E08F930E94600A7C
:102D90000F900F900F900F900F90E0907506F090AD
:102DA00076060091770610917806C801B70120E8F1
:102DB00036E948E950E00E94DF4B59016A01C80139
:102DC000B70120E836E948E950E00E94DF4B7B017B
:102DD0008C0120E137E240E050E00E94DF4BE90146
:102DE00037FF03C0D095C195DF4FC801B70120E17F
:102DF00037E240E050E00E94DF4B2AE030E040E064
:102E000050E00E94DF4BB90137FF03C07095619518
:102E10007F4F84E18093F5047F936F93DF93CF938B
:102E2000BF92AF9289E392E09F938F9399249394FA
:102E30009F920E94600AE0907906F0907A060091D5
:102E40007B0610917C06C801B70120E836E948E905
:102E500050E00E94DF4B59016A01C801B70120E828
:102E600036E948E950E00E94DF4B7B018C0120E10C
:102E700037E240E050E00E94DF4BE90137FF03C03A
:102E8000D095C195DF4FC801B70120E137E240E09E
:102E900050E00E94DF4B2AE030E040E050E00E942A
:102EA000DF4BB90137FF03C0709561957F4F88E212
:102EB0008093F5047F936F93DF93CF93BF92AF928C
:102EC00084E292E09F938F939F920E94600AE09029
:102ED0007D06F0907E0600917F0610918006C80165
:102EE000B70128EE33E040E050E00E94DF4B59018B
:102EF0006A01C801B70128EE33E040E050E00E94CB
:102F0000DF4B9B0177FF03C0309521953F4F8CE34A
:102F10008093F5043F932F93BF92AF9285E192E0A7
:102F20009F938F939F920E94600A8DB79EB7499698
:102F300057CB1092F5048AE092E09F938F9311E0B3
:102F40001F930E94600A84E18093F50480919809A0
:102F5000992787FD90959F938F938BEF91E09F9397
:102F60008F931F930E94600A88E28093F5048091FA
:102F70009909992787FD90959F938F938CEE91E007
:102F80009F938F931F930E94600A8CE38093F504B4
:102F900080919A09992787FD90959F938F938DED46
:102FA00091E035C01092F50483ED91E09F938F93EB
:102FB00011E01F930E94600A84E18093F5048091E0
:102FC0009B0990919C099F938F9385EC91E09F932F
:102FD0008F931F930E94600A88E28093F50480918A
:102FE0009D0990919E099F938F9387EB91E09F930A
:102FF0008F931F930E94600A8CE38093F504809165
:103000009F099091A0099F938F9389EA91E09F93E4
:103010008F931F930E94600A8DB79EB74296E0CAB5
:10302000115010936A031092F7041092F604DF9186
:10303000CF911F910F91FF90EF90DF90CF90BF90B5
:10304000AF909F90089587B18C6087B9429843985C
:1030500008954091F8045091F9044431510500F16C
:103060004C3D5105E8F42091FE043091FF04C90164
:10307000880F991F8417950710F4429A01C042984F
:103080002F5F3F4F3093FF042093FE0421503040C8
:103090002417350730F01092FF041092FE0401C08F
:1030A000429A4091FA045091FB044431510510F4C6
:1030B000439808954C3D5105E8F42091FC0430916B
:1030C000FD04C901880F991F8417950710F4439ACE
:1030D00001C043982F5F3F4F3093FD042093FC04C1
:1030E000215030402417350730F01092FD04109223
:1030F000FC040895439808959FB7F8943998389A36
:1031000088B1836088B9E9EBF0E080818C7F8083AF
:103110008AE28093B8009FBF089585EA8093BC003F
:10312000089584E98093BC0008958093BB0085E8EE
:103130008093BC00089585EC8093BC00089585E8D9
:103140008093BC000895EF92FF920F931F938CEB36
:10315000E82EF12C84E9F7018083109200050BEB37
:1031600010E0F8018081809301051092010580E84C
:10317000F70180831092BD001092BA00F80110820E
:103180001092B9001092B8000E947C1885EAF701ED
:103190008083F801108285E8F70180831F910F91E9
:1031A000FF90EF9008951F920F920FB60F92112487
:1031B0008F939F93EF93FF93809100058F5F809390
:1031C000000581508330D1F1843028F4813081F0C2
:1031D000823060F508C08530C1F18530A0F18630BD
:1031E00009F04FC03EC080910105880F8E5A12C071
:1031F000809101058F5F809301058150813069F0D6
:10320000813030F0823061F0833009F047C00BC06C
:10321000809172088093BB0020C080918808FACF0B
:1032200080917D08F7CF80919308F4CF80910105BC
:10323000843010F41092000585EA10C080910205D8
:10324000880F8D5AE7CF85EC09C0E0910205F0E0C8
:103250008091BB00E45DF74F808385E88093BC00DC
:103260001DC080910205E82FF0E09091BB00E05D69
:10327000F74F90838F5F80930205843010F0109297
:10328000020584E98093BC00109200058AE090E07A
:1032900090936D0380936C0310920105FF91EF9161
:1032A0009F918F910F900FBE0F901F9018959FB711
:1032B000F89456985E9A8AB180638AB98BB18F7CF4
:1032C0008BB9809100018A3011F4539A5B988091F8
:1032D00080008C708093800080918100837E809339
:1032E000810080918100836C8093810080918200B5
:1032F0008F738093820080916F00897F80936F002D
:1033000080916F00816280936F001092040510928B
:1033100003059FBF08951F920F920FB60F921124BD
:103320002F933F935F936F937F938F939F93AF936D
:10333000BF9320918600309187008091090590917C
:103340000A058217930761F48091030590910405A3
:1033500062E070E00E94AA4B70930405609303053D
:10336000809186009091870090930A0580930905CB
:10337000BF91AF919F918F917F916F915F913F919D
:103380002F910F900FBE0F901F9018951F920F92C4
:103390000FB60F9211240F931F932F933F934F93C8
:1033A0005F936F937F938F939F93AF93BF93CF93CD
:1033B000DF93EF93FF9320918600309187008091F7
:1033C000050590910605281B390B80918600909188
:1033D00087009093060580930505C9018D5494409C
:1033E0000091070510910805835F9A4160F404304D
:1033F000110514F010926B0381E090E090930805A2
:103400008093070598C00E3011050CF094C0C901D7
:103410008B5F9040845B914008F072C0E901C25D0F
:10342000D140F801EE0FFF1FEC5CF74F80819181D6
:103430009E01281B390BC90137FF03C09095819568
:103440009F4F069784F48091030590910405883C72
:1034500091054CF480910305909104050A96909390
:10346000040580930305F801EE0FFF1FEC5CF74F96
:1034700020813181C901880F991F820F931F8C0F02
:103480009D1F64E070E00E94AA4B9B01CE01019653
:10349000861797071CF42150304006C021976C17FF
:1034A0007D0714F42F5F3F4F809103059091040531
:1034B000E801CC0FDD1F833C9105BCF0FE01EC5C04
:1034C000F74F80819181A901481B590BCA0163E024
:1034D00070E00E94AA4BCB01880F991F860F971F9F
:1034E000CE5AD74F9983888304C0CE5AD74F1982BA
:1034F0001882F801EE0FFF1FEC5CF74F3183208339
:10350000F8013196F0930805E0930705E530F105E1
:1035100011F45D9A06C05D98E630F10511F45C9AED
:1035200001C05C98809100018A3029F4379711F42A
:103530005B9A01C05B988091030590910405892BEB
:1035400049F080910305909104050197909304053B
:1035500080930305FF91EF91DF91CF91BF91AF91E0
:103560009F918F917F916F915F914F913F912F919B
:103570001F910F910F900FBE0F901F9018952F92D3
:103580003F924F925F926F927F928F929F92AF92F3
:10359000BF92CF92DF92EF92FF920F931F93CF9340
:1035A000DF93CDB7DEB722970FB6F894DEBF0FBE1C
:1035B000CDBF80910F05909110052091DE043091D0
:1035C000DF04821B930B9093870880938608809179
:1035D000DC049091DD0420910D0530910E05821BD5
:1035E000930B90938308809382088091DA049091E2
:1035F000DB0420910B0530910C05821B930B9093FB
:103600008508809384088091840890918508909320
:103610008607809385078091820890918308909314
:103620008A0780938907E0908908F0908A08609162
:10363000E2047091E304882777FD8095982F2CE0B1
:1036400030E040E050E00E946B4B0027F7FC009513
:10365000102FE60EF71E081F191FC801B70122E040
:1036600030E040E050E00E94DF4B30938A08209326
:103670008908E0908D08F0908E086091E0047091C8
:10368000E104882777FD8095982F2CE030E040E01A
:1036900050E00E946B4B0027F7FC0095102FE60EC0
:1036A000F71E081F191FC801B70122E030E040E0F3
:1036B00050E00E94DF4B30938E0820938D082091BC
:1036C0007B0830917C086091E4047091E5048827C0
:1036D00077FD8095982F442737FD4095542F620F32
:1036E000731F841F951F22E030E040E050E00E94ED
:1036F000DF4B30937C0820937B0840914505509127
:10370000460560914705709148052091E20430918B
:10371000E304C901880F991F820F931F880F991F17
:10372000880F991FAA2797FDA095BA2F840F951F80
:10373000A61FB71F8093450590934605A0934705A4
:10374000B09348054091490550914A0560914B0559
:1037500070914C052091E0043091E104C901880F7B
:10376000991F820F931F880F991F880F991FAA27EF
:1037700097FDA095BA2F840F951FA61FB71F8093A2
:10378000490590934A05A0934B05B0934C052091B1
:103790004105309142054091430550914405809187
:1037A000860890918708AA2797FDA095BA2F820FC7
:1037B000931FA41FB51F8093410590934205A093CA
:1037C0004305B093440520917F052A83222309F005
:1037D00069C080918005882309F064C08091BC088D
:1037E00086FF60C06091310570913205809133058C
:1037F00090913405E0908608F0908708A09093039C
:10380000BB24CC24DD240027F7FC0095102F20E0FA
:1038100030E140E050E00E94DF4BC801B7010E9458
:103820006B4BA60195010E946B4B20E038E040E015
:1038300050E00E94DF4B2093C1053093C2054093B6
:10384000C3055093C4056091390570913A05809184
:103850003B0590913C05E0908608F090870820E0B9
:1038600030E140E050E00E94DF4BCA01B901A601FF
:1038700095010E946B4B0027F7FC0095102FA801C3
:1038800097010E946B4B20E038E040E050E00E943E
:10389000DF4B2093BD053093BE054093BF05509389
:1038A000C00510C01092BD051092BE051092BF0554
:1038B0001092C0051092C1051092C2051092C30566
:1038C0001092C40580918208909183082090C105D0
:1038D0003090C2054090C3055090C405820D931DE1
:1038E0009093830880938208009182081091830846
:1038F000A090BD05B090BE05C090BF05D090C0059A
:1039000080919403682E772488249924C401B301FC
:10391000A60195010E946B4B20E032E040E050E0B0
:103920000E94DF4B020F131F10938308009382083D
:1039300020913D0530913E0540913F055091400555
:103940008091820890918308AA2797FDA095BA2FAD
:10395000820F931FA41FB51F80933D0590933E05D2
:10396000A0933F05B09340054091390550913A0529
:1039700060913B0570913C0580918208909183088D
:1039800020917B0530917C05821B930BAA2797FD24
:10399000A095BA2F840F951FA61FB71F80933905D6
:1039A00090933A05A0933B05B0933C05809139056F
:1039B00090913A05A0913B05B0913C05E0907603CB
:1039C000F09077030091780310917903E816F906D7
:1039D0000A071B0704F580E197E2A0E0B0E08E192A
:1039E0009F09A00BB10B8093390590933A05A093E2
:1039F0003B05B0933C058091390590913A05A09123
:103A00003B05B0913C0580933D0590933E05A09306
:103A10003F05B09340052091390530913A0540911A
:103A20003B0550913C0588279927DC018E199F0999
:103A3000A00BB10B281739074A075B0704F580EF85
:103A400098EDAFEFBFEFE80EF91E0A1F1B1FE092C3
:103A50003905F0923A0500933B0510933C0580919F
:103A6000390590913A05A0913B05B0913C058093B2
:103A70003D0590933E05A0933F05B093400580918E
:103A8000DC049091DD040F9734F488E19CEF90936F
:103A90008308809382088091DC049091DD0407976D
:103AA00034F480E398EF9093830880938208909198
:103AB000000199839A30A9F48091DC049091DD048F
:103AC000835F934034F088EE93E090938308809373
:103AD00082088091DC049091DD048A5F9340DCF0E1
:103AE00014C08091DC049091DD04855E974034F031
:103AF00088EE93E090938308809382088091DC04A1
:103B00009091DD04835F974034F080ED97E09093CF
:103B100083088093820880918408909185088A198F
:103B20009B099093850880938408009184081091E4
:103B30008508C401B301A20191010E946B4B20E0F2
:103B400032E040E050E00E94DF4B021B130B109369
:103B50008508009384082091350530913605409101
:103B60003705509138058091840890918508AA27DF
:103B700097FDA095BA2F820F931FA41FB51F8093A6
:103B8000350590933605A0933705B09338054091DD
:103B90003105509132056091330570913405809163
:103BA00084089091850820917D0530917E05821BC7
:103BB000930BAA2797FDA095BA2F840F951FA61FD8
:103BC000B71F8093310590933205A0933305B093CE
:103BD00034058091310590913205A0913305B09163
:103BE0003405E0907203F090730300917403109118
:103BF0007503E816F9060A071B0704F580E197E24A
:103C0000A0E0B0E08E199F09A00BB10B80933105A5
:103C100090933205A0933305B0933405809131051C
:103C200090913205A0913305B0913405809335050C
:103C300090933605A0933705B09338052091310550
:103C400030913205409133055091340588279927EA
:103C5000DC018E199F09A00BB10B281739074A0701
:103C60005B0704F580EF98EDAFEFBFEFE80EF91EAC
:103C70000A1F1B1FE0923105F092320500933305B5
:103C8000109334058091310590913205A091330550
:103C9000B09134058093350590933605A093370590
:103CA000B09338058091DA049091DB040F9734F4D7
:103CB00088E19CEF90938508809384088091DA04D2
:103CC0009091DB04079734F480E398EF9093850894
:103CD0008093840899819A30A9F48091DA049091B4
:103CE000DB04835F934034F088EE93E09093850883
:103CF000809384088091DA049091DB048A5F93407A
:103D0000DCF014C08091DA049091DB04855E97406A
:103D100034F088EE93E09093850880938408809136
:103D2000DA049091DB04835F974034F080ED97E0F4
:103D3000909385088093840880917A00886C8093A2
:103D40007A008091410590914205A0914305B09180
:103D5000440580932D0590932E05A0932F05B093D5
:103D600030058091310590913205A0913305B091D5
:103D7000340580931D0590931E05A0931F05B093F5
:103D800020058091390590913A05A0913B05B091AD
:103D90003C058093250590932605A0932705B093B5
:103DA00028058091350590913605A0913705B09191
:103DB00038058093210590932205A0932305B093A5
:103DC000240580913D0590913E05A0913F05B0915D
:103DD00040058093290590932A05A0932B05B09365
:103DE0002C058091BC0887FF63C02A81222309F03B
:103DF0005FC080918005882309F05AC080918408B3
:103E000090918508893C91055CF02091840830915F
:103E1000850880918408909185082052334011C014
:103E2000809184089091850888539F4FA4F4209135
:103E30008408309185088091840890918508205EDF
:103E40003C4F880F991F880F991F280F391F3093F7
:103E50008508209384088091820890918308893C8A
:103E600091055CF02091820830918308809182084E
:103E7000909183082052334011C080918208909124
:103E8000830888539F4FA4F42091820830918308BF
:103E90008091820890918308205E3C4F880F991F83
:103EA000880F991F280F391F3093830820938208A9
:103EB00022960FB6F894DEBF0FBECDBFDF91CF9133
:103EC0001F910F91FF90EF90DF90CF90BF90AF9038
:103ED0009F908F907F906F905F904F903F902F902A
:103EE00008950F931F930AE710E0F801808187730C
:103EF00080838091DA049091DB049093850880930D
:103F000084088091DC049091DD0490938308809371
:103F100082088091DE049091DF049093870880935B
:103F200086086091E2047091E304882777FD80950C
:103F3000982F2CE030E040E050E00E946B4B7093F3
:103F40008A08609389086091E0047091E1048827F1
:103F500077FD8095982F0E946B4B70938E0860932D
:103F60008D088091E4049091E50490937C088093FF
:103F70007B08F8018081886C80836091DF0870E0A5
:103F800080E090E024EC39E040E050E00E946B4B90
:103F9000609372037093730380937403909375031B
:103FA0006091E00870E080E090E00E946B4B6093CD
:103FB00076037093770380937803909379031F912E
:103FC0000F9108958091030590910405813A910520
:103FD0000CF40AC38091BF088B3F98F08B3F19F413
:103FE000809155050EC08C3F19F48091570509C08A
:103FF0008D3F19F48091590504C08E3F21F48091C2
:104000005B058093810380918103882319F41092CA
:10401000810304C08F3F11F4809381038091BE0817
:104020008B3F98F08B3F19F4809155050EC08C3F63
:1040300019F48091570509C08D3F19F480915905F5
:1040400004C08E3F21F480915B05809380038091B2
:104050008003882319F41092800305C0843618F079
:1040600084E6809380038091C0088B3F98F08B3F5B
:1040700019F4809155050EC08C3F19F480915705B5
:1040800009C08D3F19F48091590504C08E3F21F479
:1040900080915B058093820380918203882319F4C9
:1040A0001092820305C0843618F084E68093820360
:1040B0008091C2088B3F98F08B3F19F48091550591
:1040C0000EC08C3F19F48091570509C08D3F19F43B
:1040D0008091590504C08E3F21F480915B05809347
:1040E000830380918303882319F41092830304C00F
:1040F0008F3F11F4809383038091C9088B3F98F020
:104100008B3F19F4809155050EC08C3F19F48091B6
:10411000570509C08D3F19F48091590504C08E3FA1
:1041200021F480915B05809384038091840388232C
:1041300019F41092840304C08F3F11F48093840318
:104140008091CA088B3F98F08B3F19F480915505F8
:104150000EC08C3F19F48091570509C08D3F19F4AA
:104160008091590504C08E3F21F480915B058093B6
:104170008503809185038B3010F48AE002C08F3F65
:1041800011F4809385038091CB088B3F98F08B3F8F
:1041900019F4809155050EC08C3F19F48091570594
:1041A00009C08D3F19F48091590504C08E3F21F458
:1041B00080915B058093860380918603882319F4A0
:1041C0001092860304C08F3F11F480938603809180
:1041D000D0088B3F98F08B3F19F4809155050EC0A5
:1041E0008C3F19F48091570509C08D3F19F48091D7
:1041F000590504C08E3F21F480915B0580938803AC
:1042000080918803882319F41092880304C08F3F9B
:1042100011F4809388038091D1088B3F98F08B3FF5
:1042200019F4809155050EC08C3F19F48091570503
:1042300009C08D3F19F48091590504C08E3F21F4C7
:1042400080915B058093890380918903882319F409
:104250001092890304C08F3F11F4809389038091E9
:10426000D2088B3F98F08B3F19F4809155050EC012
:104270008C3F19F48091570509C08D3F19F4809146
:10428000590504C08E3F21F480915B0580938A0319
:1042900080918A03882319F410928A0304C08F3F07
:1042A00011F480938A038091D3088B3F98F08B3F61
:1042B00019F4809155050EC08C3F19F48091570573
:1042C00009C08D3F19F48091590504C08E3F21F437
:1042D00080915B0580938B0380918B03882319F475
:1042E00010928B0304C08F3F11F480938B03809155
:1042F000D4088B3F98F08B3F19F4809155050EC080
:104300008C3F19F48091570509C08D3F19F48091B5
:10431000590504C08E3F21F480915B0580938C0386
:1043200080918C03882319F410928C0304C08F3F72
:1043300011F480938C038091E4088B3F98F08B3FBD
:1043400019F4809155050EC08C3F19F480915705E2
:1043500009C08D3F19F48091590504C08E3F21F4A6
:1043600080915B0580938D0380918D03882319F4E0
:1043700010928D0304C08F3F11F480938D038091C0
:10438000E5088B3F98F08B3F19F4809155050EC0DE
:104390008C3F19F48091570509C08D3F19F4809125
:1043A000590504C08E3F21F480915B0580938E03F4
:1043B00080918E03882319F410928E0304C08F3FDE
:1043C00011F480938E038091E6088B3F98F08B3F29
:1043D00019F4809155050EC08C3F19F48091570552
:1043E00009C08D3F19F48091590504C08E3F21F416
:1043F00080915B0580938F0380918F03882319F44C
:1044000010928F0304C08F3F11F480938F0380912B
:10441000E7088B3F98F08B3F19F4809155050EC04B
:104420008C3F19F48091570509C08D3F19F4809194
:10443000590504C08E3F21F480915B058093900361
:1044400080919003882319F41092900304C08F3F49
:1044500011F4809390038091D5088B3F98F08B3FA7
:1044600019F4809155050EC08C3F19F480915705C1
:1044700009C08D3F19F48091590504C08E3F21F485
:1044800080915B058093910380919103882319F4B7
:104490001092910304C08F3F11F480939103809197
:1044A000DA088B3F98F08B3F19F4809155050EC0C8
:1044B0008C3F19F48091570509C08D3F19F4809104
:1044C000590504C08E3F21F480915B0580939203CF
:1044D00080919203882319F41092920304C08F3FB5
:1044E00011F4809392038091DD088B3F98F08B3F0D
:1044F00019F4809155050EC08C3F19F48091570531
:1045000009C08D3F19F48091590504C08E3F21F4F4
:1045100080915B058093930380919303882319F422
:104520001092930304C08F3F11F480939303809102
:10453000DE088B3F98F08B3F19F4809155050EC033
:104540008C3F19F48091570509C08D3F19F4809173
:10455000590504C08E3F21F480915B05809394033C
:1045600080919403882319F41092940304C08F3F20
:1045700011F4809394038091E3088B3F98F08B3F74
:1045800019F4809155050EC08C3F19F480915705A0
:1045900009C08D3F19F48091590504C08E3F21F464
:1045A00080915B058093950380919503882319F48E
:1045B0001092950304C08F3F11F48093950360918E
:1045C000880370E080E090E00E94A34727E137EB8A
:1045D00041ED58E30E94084B60937C0370937D0388
:1045E00080937E0390937F030895809153058823E1
:1045F00001F5109288081092720810927D081092AE
:1046000093088091BE04882311F0809372088091F2
:10461000BF04882311F0809388088091C004882308
:1046200011F0809393088091C104882311F0809346
:104630007D0810920005109201050E948D180895C2
:104640001092160510921505109218051092170574
:1046500080E090E0A0E0B0E08093190590931A0507
:10466000A0931B05B0931C0510920C0510920B052E
:1046700010920E0510920D051092100510920F0564
:1046800010929303109294030E94711F84E690E0AD
:104690000E94CA0D0E94711F8091BC0880FF10C04B
:1046A00080910E0390910F03875B934038F48091C3
:1046B0000E0390910F038E5E924010F40E947E11C3
:1046C0008091DA049091DB0490930C0580930B05A4
:1046D0008091DC049091DD0490930E0580930D058C
:1046E0008091DE049091DF049093100580930F0574
:1046F00080910D0590910E05909312058093110500
:1047000080910B0590910C059093140580931305EF
:1047100084E00E94B03D8050944058F180918D0813
:1047200090918E0897FF03C0909581959F4F6CE004
:1047300070E00E94AA4B7093180560931705809152
:10474000890890918A0897FF03C0909581959F4FA3
:104750006CE070E00E94AA4B7093160560931505FB
:104760006091D8047091D904882777FD8095982F9F
:1047700017C084E00E94B03D909316058093150504
:1047800086E00E94B03D909318058093170588E05D
:104790000E94B03DAA2797FDA095BA2FBC01CD017C
:1047A0000E94504A6093190570931A0580931B0567
:1047B00090931C051092310510923205109233052A
:1047C0001092340510923505109236051092370577
:1047D000109238051092390510923A0510923B0557
:1047E00010923C0510923D0510923E0510923F0537
:1047F0001092400510924105109242051092430517
:104800001092440510928508109284081092830833
:1048100010928208109287081092860880910A03ED
:1048200090910B03A0910C03B0910D0390932A0873
:10483000809329081092E7041092E60410924D0527
:1048400010924E0510924F051092500580916E0304
:1048500090916F03909371038093700382E390E0D3
:104860009093D4048093D3046091DF0870E080E0DB
:1048700090E024EC39E040E050E00E946B4B609304
:104880007203709373038093740390937503609124
:10489000E00870E080E090E00E946B4B609376034C
:1048A00070937703809378039093790310927B033E
:1048B00010927A030E941F3A08951F93182F0EC07A
:1048C00080915305882361F484E690E09093D404AA
:1048D0008093D3048AEF90E00E94E90D115080F795
:1048E0001F9108952F923F924F925F926F927F9205
:1048F0008F929F92AF92BF92CF92DF92EF92FF92F0
:104900000F931F93CF93DF93CDB7DEB7A2970FB668
:10491000F894DEBF0FBECDBF0E94BF1A299A209027
:104920006B0530906C0537FE02C022243324809141
:10493000030590910405883791050CF071C08091B2
:104940000301882399F480910403909105038F5FFC
:104950009F4F61F488E99AE39093D4048093D30441
:1049600080E09CE090930503809304038091A70569
:104970009091A805009731F001979093A805809336
:10498000A70504C0109253051092540580910001B0
:104990008A3011F4289A01C028988091A20590913C
:1049A000A305815D9740C8F18091CD08282E33245E
:1049B00081E080935405E091B4082E2F30E0220F5F
:1049C000331FF901EE5AF74F11821082A091B508FA
:1049D000B0E0AA0FBB1FFD01EE5AF74F1182108203
:1049E000E091B7084E2F50E0440F551FCA018E5A70
:1049F000974FFC01118210822C5C374FF901118214
:104A00001082AC5CB74F11961C921E924C5C574FB3
:104A1000DA0111961C921E92BCC310925305B9C3C1
:104A20008091030590910405873991050CF4B1C379
:104A3000109254058091CE0822E3829FC001112478
:104A40009093A8058093A705B9E22B1631046CF06A
:104A50008091A2059091A305EFEF8F3F9E0729F06B
:104A600001969093A3058093A2058091A205909151
:104A7000A305883C910520F0F8E22F163104C4F418
:104A80001092B9051092BA051092BB051092BC05A0
:104A90001092B5051092B6051092B7051092B805A0
:104AA0001092410510924205109243051092440560
:104AB00020915505309156058091B808E82FF0E017
:104AC000EE0FFF1FEC5CF74F8081918182599F4F61
:104AD000281739071CF42F5F3F4F0CC0808191814C
:104AE00082599F4F821793074CF42115310531F0FD
:104AF000215030403093560520935505209157059D
:104B0000309158058091B908E82FF0E0EE0FFF1FB3
:104B1000EC5CF74F8081918182599F4F28173907AC
:104B20001CF42F5F3F4F0CC08081918182599F4FB1
:104B3000821793074CF42115310531F02150304094
:104B400030935805209357052091590530915A0507
:104B50008091BA08E82FF0E0EE0FFF1FEC5CF74FF2
:104B60008081918182599F4F281739071CF42F5F4C
:104B70003F4F0CC08081918182599F4F82179307CC
:104B80004CF42115310531F02150304030935A0555
:104B90002093590520915B0530915C058091BB08FD
:104BA000E82FF0E0EE0FFF1FEC5CF74F8081918162
:104BB00082599F4F281739071CF42F5F3F4F0CC0B5
:104BC0008081918182599F4F821793074CF4211560
:104BD000310531F02150304030935C0520935B0566
:104BE00020915D0530915E058091460890914708BF
:104BF00082599F4F281739071CF42F5F3F4F0EC073
:104C0000809146089091470882599F4F82179307D9
:104C10004CF42115310531F02150304030935E05C0
:104C200020935D0520915F053091600580914808D3
:104C30009091490882599F4F281739071CF42F5F1C
:104C40003F4F0EC0809148089091490882599F4F6C
:104C5000821793074CF42115310531F02150304073
:104C60003093600520935F052091610530916205C6
:104C700080914A0890914B0882599F4F2817390715
:104C80001CF42F5F3F4F0EC080914A0890914B0853
:104C900082599F4F821793074CF42115310531F04B
:104CA00021503040309362052093610520916305C7
:104CB0003091640580914C0890914D0882599F4F26
:104CC000281739071CF42F5F3F4F0EC080914C0806
:104CD00090914D0882599F4F821793074CF42115EC
:104CE000310531F021503040309364052093630545
:104CF000809155059091560597FF05C01092560575
:104D0000109255050AC08F3F910539F034F08FEFAE
:104D100090E09093560580935505809157059091AA
:104D2000580597FF05C010925805109257050AC004
:104D30008F3F910539F034F08FEF90E09093580554
:104D4000809357058091590590915A0597FF05C0AA
:104D500010925A05109259050AC08F3F910539F0FB
:104D600034F08FEF90E090935A058093590580912D
:104D70005B0590915C0597FF05C010925C05109251
:104D80005B050AC08F3F910539F034F08FEF90E05A
:104D900090935C0580935B0580915D0590915E0525
:104DA00097FF05C010925E0510925D050AC08F3F07
:104DB000910539F034F08FEF90E090935E05809389
:104DC0005D0580915F059091600597FF05C0109289
:104DD000600510925F050AC08F3F910539F034F0ED
:104DE0008FEF90E09093600580935F05809161055F
:104DF0009091620597FF05C01092620510926105BF
:104E00000AC08F3F910539F034F08FEF90E0909316
:104E1000620580936105809163059091640597FF19
:104E200005C010926405109263050AC08F3F91057A
:104E300039F034F08FEF90E0909364058093630530
:104E4000E091B608F0E0EE0FFF1FEC5CF74F8081B9
:104E50009181813591050CF4F0C080915305882330
:104E600009F0EBC08091B708E82FF0E0EE0FFF1FCC
:104E7000EC5CF74F808191818C3491050CF4A1C0DA
:104E80008091A6058F5F8093A605893C08F4D5C064
:104E90001092A60529981092A3051092A205809160
:104EA000B408282F30E0F901EE0FFF1FEC5CF74F3C
:104EB00080819181873491059CF4E091B508F0E000
:104EC000EE0FFF1FEC5CF74F0190F081E02DF7FF34
:104ED00003C0F095E195FF4FE734F1050CF46AC08B
:104EE0008091B508682F70E0DB01AA0FBB1FAC5C96
:104EF000B74F8D919C911197873491053CF0F90142
:104F0000EE0FFF1FEC5CF74F808191818D919C919A
:104F10008734910564F0F901EE0FFF1FEC5CF74F49
:104F2000808191818734910514F042E001C041E015
:104F3000FB01EE0FFF1FEC5CF74F808191818634FF
:104F400091055CF4F901EE0FFF1FEC5CF74F8081D7
:104F50009181873491050CF043E0FB01EE0FFF1FB8
:104F6000EC5CF74F808191818A5B9F4F5CF4F90183
:104F7000EE0FFF1FEC5CF74F808191818734910524
:104F80000CF044E0660F771F6C5C774FDB018D916E
:104F90009C918A5B9F4F5CF4220F331F2C5C374F30
:104FA000F90180819181863491050CF445E0842FCC
:104FB0000E94C03D0E94A13F0E94DE3D0E9420232E
:104FC00035C080819181855B9F4FACF58091A605AE
:104FD0008F5F8093A605893C80F11092A6052998E1
:104FE0006FEF7FEF84E00E94B83D1092A30510920E
:104FF000A2050E942023609115057091160584E09A
:105000000E94B83D609117057091180586E00E94D6
:10501000B83D6091190570911A0580911B0590911A
:105020001C050E94224A88E00E94B83D0E94A13FD0
:105030000E945D2402C01092A605E091B608F0E03F
:10504000EE0FFF1FEC5CF74F808191818B5A9F4FD1
:105050000CF09FC0E091B708F0E0EE0FFF1FEC5C92
:10506000F74F80819181855B9F4F0CF06BC08091E1
:10507000A5058F5F8093A505893C08F465C088EC81
:105080008093A50581E090E09093A3058093A2050D
:1050900081E0809353051092B1051092B2051092F1
:1050A000B3051092B405109241051092420510927A
:1050B000430510924405109231051092320510926A
:1050C0003305109234051092390510923A0510926A
:1050D0003B0510923C0580911D0590911E05A09105
:1050E0001F05B09120058093350590933605A09358
:1050F0003705B09338058091250590912605A0913C
:105100002705B091280580933D0590933E05A09317
:105110003F05B09340051092B9051092BA05109260
:10512000BB051092BC051092B5051092B605109201
:10513000B7051092B8058091BC0885FF05C00E9494
:10514000963902C01092A505E091B708F0E0EE0F85
:10515000FF1FEC5CF74F808191818C349105BCF08E
:105160008091A4058F5F8093A405893C90F088EC22
:105170008093A4051092A3051092A20510925305E6
:105180008091BC0885FF05C00E941C3A02C01092A5
:10519000A40580916B03815080936B0380916B0316
:1051A0008F3F29F080915405882309F456C30E944B
:1051B000E21F40916505509166055E8F4D8F80918D
:1051C000B408E82EFF24D701AA0FBB1FAD014C5C29
:1051D000574FFA010190F081E02DFC8FEB8F809109
:1051E000C308882E9924AE5AB74F0D90BC91A02DBC
:1051F000BA8FA98F8091C408282F30E0388F2F8B69
:1052000060916705709168057E8B6D8B8091B50804
:10521000082F10E0C801880F991FDC01AC5CB74F64
:105220000D90BC91A02DBC8BAB8B8E5A974FDC019F
:105230008D919C919A8B898BE091B708AE2FB0E04D
:10524000AA0FBB1FAC5CB74F0D90BC91A02DB88BC3
:10525000AF87E091B608F0E0EE0FFF1FEC5CF74F70
:10526000A080B180E8E7F0E0AE0EBF1EB0926C0502
:10527000A0926B05DA018D919C9120916D05309182
:105280006E0597FF03C0909581959F4F28173907AA
:105290008CF4FA018081918190936E0580936D0565
:1052A00097FF0EC0909581959F4F90936E058093C8
:1052B0006D0506C02150304030936E0520936D057A
:1052C000F801EE0FFF1FEC5CF74F80819181209178
:1052D0006F053091700597FF03C0909581959F4FA2
:1052E0002817390784F48081918190937005809309
:1052F0006F0597FF0EC0909581959F4F9093700515
:1053000080936F0506C02150304030937005209384
:105310006F056091850370E080E090E00E94A347F4
:1053200020E030E040E251E40E94514920E030E0CA
:1053300040E85BE30E94084B2B013C0160938F081F
:1053400070939008809391089093920860918603DF
:1053500070E080E090E00E94A34720E030EE4BE256
:1053600057E40E94B54960937E0870937F0880934C
:105370008008909381082091C304222331F08AE0B1
:1053800090E09093D4048093D304E22F22FF09C0CD
:1053900080918903482F50E0440F551F440F551F3B
:1053A00010C023FD03C040E050E00BC08091890392
:1053B00090E0880F991F880F991F44275527481B95
:1053C000590B2091710530917205C901F3E0880FE6
:1053D000991FFA95E1F7821B930B840F951F68E0E4
:1053E00070E00E94AA4B6B01709372056093710587
:1053F000E4FF09C080918903482F50E0440F551FF6
:10540000440F551F10C0E5FD03C040E050E00BC045
:105410008091890390E0880F991F880F991F442776
:105420005527481B590B80917305909174059C0179
:1054300063E0220F331F6A95E1F7281B390BCA017D
:10544000820F931F68E070E00E94AA4B78A36F8FD1
:1054500070937405609373058091C204282F83FFB5
:1054600003C082E390E004C082FF07C08EEC9FEF90
:10547000909376058093750504C01092760510927E
:10548000750521FF09C080917A0390917B030196F5
:1054900090937B0380937A0324FF09C080917A0361
:1054A00090917B03019790937B0380937A032B8DDC
:1054B0003C8D289DC001299D900D389D900D112493
:1054C0002D8D3E8D220F331F4D8D5E8D240F351F88
:1054D000820F931F64E070E00E94AA4B7AA369A335
:1054E000698D7A8DAF89B88D6A9FC0016B9F900DD1
:1054F0007A9F900D1124E9A1FAA1E80FF91FC601C6
:1055000068E070E00E94AA4BE60FF71FFAA3E9A338
:10551000F0936605E09365052B893C89289DC001C1
:10552000299D900D389D900D11242D893E89220FC3
:10553000331F4D895E89240F351F820F931F64E04E
:1055400070E00E94AA4B9B0169897A89AF89B88D66
:105550006A9FC0016B9F900D7A9F900D1124280FB8
:10556000391F8F8D98A168E070E00E94AA4B260F2A
:10557000371F30936805209367054091750550915A
:105580007605EF85F8894E1B5F0B50936A054093B3
:10559000690580914E0780FF56C08091890381384C
:1055A00008F451C080914707992787FD9095BC0169
:1055B000689DC001699D900D789D900D1124A9A151
:1055C000BAA1A80FB91FB0936605A0936505809195
:1055D0004807992787FD9095FC01E89DC001E99D4A
:1055E000900DF89D900D1124280F391F30936805F8
:1055F0002093670580914907992787FD9095480F6B
:10560000591F50936A05409369052091C10830E005
:1056100080914B07992787FD9095AC01249FC0018D
:10562000259F900D349F900D112490937B038093C0
:105630007A0380914A0790E08A159B0524F49093A1
:105640006C0580936B058091BC0882FF0CC080E0E4
:1056500090E0A0E0B0E080937E0890937F08A09354
:105660008008B093810820E030E040E050E0C301C2
:10567000B2010E948B4A882364F480E090E0A0E0AD
:10568000B0E080938F0890939008A0939108B09316
:10569000920820E030E040E050E060917E08709198
:1056A0007F0880918008909181080E948B4A88230E
:1056B00064F480E090E0A0E0B0E080937E089093F6
:1056C0007F08A0938008B0938108F801EE0FFF1FB8
:1056D000EC5CF74F208131818091DB08482F50E04E
:1056E0004217530744F48091E80882FF04C081E028
:1056F0008093810515C080918105882389F0F80188
:10570000EE0FFF1FEC5CF74F208131818091DC08A8
:10571000BA01681B71092617370714F41092810526
:10572000F801EE0FFF1FEC5CF74F80819181662737
:105730007727641B750B8617970744F48091E80858
:1057400083FF04C081E08093820515C080918205AB
:10575000882389F0000F111F0C5C174FD8012D9181
:105760003C918091DC0890E0841B950B8217930795
:1057700014F410928205F701EE0FFF1FEC5CF74F57
:10578000808191814817590744F48091E80880FF8F
:1057900004C081E08093840515C08091840588232E
:1057A00089F0F701EE0FFF1FEC5CF74F208131818C
:1057B0008091DC08FA01E81BF1092E173F0714F469
:1057C00010928405F701EE0FFF1FEC5CF74F80810C
:1057D00091818617970744F48091E80881FF04C0FF
:1057E00081E08093830517C080918305882399F019
:1057F000EE0CFF1C24E338E0E20EF31ED7012D91DE
:105800003C918091DC0890E0841B950B82179307F4
:1058100014F41092830580918105882321F48091EE
:105820008205882321F081E08093800502C01092D8
:10583000800580918405882321F480918305882345
:1058400051F081E080937F051092800510928105D0
:105850001092820502C010927F05809180058823F6
:1058600011F40C94493984E690E09093D404809329
:10587000D3048091DA0890E0821593050CF41C01A2
:1058800080918F0390E09093F9048093F8048091C5
:10589000900390E09093FB048093FA040E942918EF
:1058A00080915405882381F110926A051092690550
:1058B00010926605109265051092680510926705B2
:1058C00080E090E0A0E0BFE380938F089093900881
:1058D000A0939108B093920886EA9BE9A4E4BBE305
:1058E00080937E0890937F08A0938008B0938108EE
:1058F0001092800510927F0510926E0510926D0532
:105900001092700510926F052091770830917808F9
:105910004091790850917A0880911D0590911E055B
:10592000A0911F05B0912005820F931FA41FB51FE2
:105930008093770890937808A0937908B0937A08B9
:105940002091730830917408409175085091760841
:105950008091250590912605A0912705B0912805F5
:10596000820F931FA41FB51F809373089093740830
:10597000A0937508B093760850907F05552029F4C0
:1059800080918005882309F44FC01092E904109299
:10599000E8041092450510924605109247051092B2
:1059A00048051092490510924A0510924B05109235
:1059B0004C0510927708109278081092790810928E
:1059C0007A08109273081092740810927508109259
:1059D00076088091310590913205A0913305B09100
:1059E00034058093350590933605A0933705B09321
:1059F00038058091390590913A05A0913B05B09109
:105A00003C0580933D0590933E05A0933F05B093E0
:105A1000400510927E0510927D0510927C05109233
:105A20007B05552009F0F5C080918005882309F099
:105A3000F0C060911D0570911E0580911F05909129
:105A40002005A090C808BB24CC24DD24E090890860
:105A5000F0908A08A60195010E94DF4B0027F7FC11
:105A60000095102F2E193F09400B510BCA01B901A7
:105A700020E130E040E050E00E94DF4B39014A0174
:105A80006091250570912605809127059091280544
:105A9000E0908D08F0908E08A60195010E94DF4BE2
:105AA0000027F7FC0095102F2E193F09400B510BD2
:105AB000CA01B90120E130E040E050E00E94DF4B34
:105AC00079018A0180916D0590916E05409734F4BB
:105AD00080916F05909170054097A4F0C401B301C7
:105AE00023E030E040E050E00E94DF4B39014A0102
:105AF000C801B70123E030E040E050E00E94DF4BF6
:105B000079018A01E091B708F0E0EE0FFF1FEC5C2D
:105B1000F74F0190F081E02DF7FF03C0F095E1957C
:105B2000FF4F7A97A4F0C401B30123E030E040E0D6
:105B300050E00E94DF4B39014A01C801B70123E060
:105B400030E040E050E00E94DF4B79018A01B1E291
:105B50006B1671048104910434F0B0E26B2E712C49
:105B6000812C912C11C0E0EE6E16EFEF7E06EFEF68
:105B70008E06EFEF9E0644F4A0EE6A2EAFEF7A2E6B
:105B8000AFEF8A2EAFEF9A2EF1E2EF16F104010586
:105B9000110534F0F0E2EF2EF12C012D112D11C082
:105BA00020EEE2162FEFF2062FEF02072FEF12077B
:105BB00044F4E0EEEE2EEFEFFE2EEFEF0E2FEFEFC0
:105BC0001E2F8091310590913205A0913305B0913F
:105BD000340586199709A809B9098093310590936E
:105BE0003205A0933305B093340580913905909127
:105BF0003A05A0913B05B0913C058E199F09A00B79
:105C0000B10B8093390590933A05A0933B05B0936F
:105C10003C058091E8049091E9048F3F910509F0DB
:105C200008F4ABC4552009F044C480918005882352
:105C300009F03FC4609177087091780880917908E5
:105C400090917A0820E031E040E050E00E94DF4B84
:105C500020937708309378084093790850937A0816
:105C6000609173087091740880917508909176081E
:105C700020E031E040E050E00E94DF4B20937308C9
:105C8000309374084093750850937608E090C808E4
:105C9000FF2400E010E02091450530914605409139
:105CA000470550914805C801B7010E946B4B20E0A1
:105CB00031E040E050E00E94DF4B209345053093F7
:105CC000460540934705509348052091490530917A
:105CD0004A0540914B0550914C05C801B7010E94FF
:105CE0006B4B20E031E040E050E00E94DF4B20931E
:105CF000490530934A0540934B0550934C056091FC
:105D00007708709178088091790890917A082091AD
:105D10004505309146054091470550914805621B65
:105D2000730B840B950B6093AD057093AE05809358
:105D3000AF059093B005E090E108FF2400E010E08B
:105D4000A80197010E94DF4BCA01B90120E031E0B0
:105D500040E050E00E94DF4B490130937E052093E4
:105D60007D05609173087091740880917508909119
:105D700076082091490530914A0540914B05509194
:105D80004C05621B730B840B950B6093A9057093F4
:105D9000AA058093AB059093AC05A80197010E94DA
:105DA000DF4B59016A01CA01B90120E031E040E04E
:105DB00050E00E94DF4B890130937C0520937B05E6
:105DC00080916D0590916E054097BCF480916F05B0
:105DD0009091700540978CF4E091B708F0E0EE0FD9
:105DE000FF1FEC5CF74F0190F081E02DF7FF03C03F
:105DF000F095E195FF4F7A9794F0C40162E070E06E
:105E00000E94AA4B70937E0560937D05C80162E0F5
:105E100070E00E94AA4B70937C0560937B05E09034
:105E20002105F09022050091230510912405809111
:105E30001D0590911E05A0911F05B0912005E81A3F
:105E4000F90A0A0B1B0BE092AD05F092AE05009328
:105E5000AF051093B0058091350590913605A0915E
:105E60003705B09138058E199F09A00BB10B8093AF
:105E7000350590933605A0933705B09338056090AB
:105E8000290570902A0580902B0590902C05809113
:105E9000250590912605A0912705B0912805681A3F
:105EA000790A8A0A9B0A6092A9057092AA058092D3
:105EB000AB059092AC0580913D0590913E05A09177
:105EC0003F05B091400586199709A809B909809343
:105ED0003D0590933E05A0933F05B093400560912A
:105EE00045057091460580914705909148052AE146
:105EF00030E040E050E00E94DF4B30937407209385
:105F000073076091490570914A0580914B05909106
:105F10004C052AE130E040E050E00E94DF4B309336
:105F2000760720937507F0927807E09277077092D2
:105F30007A0760927907609177087091780880916C
:105F4000790890917A082AE130E040E050E00E9420
:105F5000DF4B30937C0720937B076091730870912F
:105F6000740880917508909176082AE130E040E04D
:105F700050E00E94DF4B30937E0720937D07B09264
:105F80008C07A0928B07C0907B05D0907C05C60142
:105F9000880F991F960153E0220F331F5A95E1F79E
:105FA000820F931F90938E0780938D0781E090E07E
:105FB00090939305809392051092980510929905FD
:105FC00010929A0510929B0580917708909178081D
:105FD000A0917908B0917A0820918A0530918B05BB
:105FE00040918C0550918D05281B390B4A0B5B0B9A
:105FF00057FF07C050954095309521953F4F4F4F23
:106000005F4F20523E44404050400CF0C1C071E010
:10601000E71670E1F70670E0070770E017070CF469
:1060200052C080919105882309F449C0D801C70165
:106030004CE0B595A795979587954A95D1F7019628
:106040009093930580939205D801C70133E0B595ED
:10605000A795979587953A95D1F780939805909352
:106060009905A0939A05B0939B0589589341A04048
:10607000B04064F088E893E1A0E0B0E08093980538
:1060800090939905A0939A05B0939B05609198050C
:106090007091990580919A0590919B0520E031E0DF
:1060A00040E050E00E94DF4B80917D0590917E059D
:1060B000820F931F90937E0580937D0566C081E0DB
:1060C0008093910562C010929105F0E0EF16F0EF19
:1060D000FF06FFEF0F07FFEF1F070CF056C0809180
:1060E0009005882309F44DC088279927DC018E1973
:1060F0009F09A00BB10B2CE0B595A79597958795B7
:106100002A95D1F701969093930580939205C80143
:10611000B70128E030E040E050E00E94DF4B2093E0
:1061200098053093990540939A0550939B052857FD
:106130003C4E4F4F5F4F64F488E79CEEAFEFBFEFEC
:106140008093980590939905A0939A05B0939B0529
:10615000609198057091990580919A0590919B05A1
:1061600020E031E040E050E00E94DF4B80917D056F
:1061700090917E05820F931F90937E0580937D05FD
:106180000BC081E08093900507C01092900504C079
:1061900010929305109292058091E208482E5524A2
:1061A00080919205909193054816590624F45092D7
:1061B00093054092920571E0E71674E0F70670E0EF
:1061C000070770E0170774F080910B0590910C059C
:1061D0002091920530919305820F931F90930C05A7
:1061E00080930B0580E0E8168CEFF8068FEF080728
:1061F0008FEF180774F480910B0590910C05209196
:10620000920530919305821B930B90930C0580931C
:106210000B0581E090E09093930580939205109296
:10622000940510929505109296051092970580910D
:10623000730890917408A0917508B0917608209128
:106240008605309187054091880550918905281B66
:10625000390B4A0B5B0B57FF07C0509540953095A3
:1062600021953F4F4F4F5F4F20523E44404050409A
:106270000CF0B9C0A1E06A16A0E17A06A0E08A0697
:10628000A0E09A060CF44EC080918F05882309F493
:1062900045C0D401C301FCE0B595A79597958795B6
:1062A000FA95D1F701969093930580939205D401C6
:1062B000C301E3E0B595A79597958795EA95D1F742
:1062C0008093940590939505A0939605B0939705B8
:1062D00089589341A040B04064F088E893E1A0E081
:1062E000B0E08093940590939505A0939605B093A4
:1062F0009705609194057091950580919605909110
:10630000970520E031E040E050E00E94DF4BC20EF4
:10631000D31ED0927C05C0927B0562C081E0809341
:106320008F055EC010928F05F0E06F16F0EF7F06CC
:10633000FFEF8F06FFEF9F060CF052C080918E0595
:10634000882309F449C088279927DC018619970911
:10635000A809B9097CE0B595A795979587957A9591
:10636000D1F701969093930580939205C401B301F0
:1063700028E030E040E050E00E94DF4B209394059D
:1063800030939505409396055093970528573C4EBA
:106390004F4F5F4F64F488E79CEEAFEFBFEF809301
:1063A000940590939505A0939605B09397056091F9
:1063B000940570919505809196059091970520E040
:1063C00031E040E050E00E94DF4BC20ED31ED0927D
:1063D0007C05C0927B050BC081E080938E0507C0D1
:1063E00010928E0504C01092930510929205809130
:1063F0009205909193054816590624F450929305FE
:106400004092920571E0671674E0770670E08706A7
:1064100070E0970674F080910D0590910E05209123
:10642000920530919305820F931F90930E058093F0
:106430000D0580E068168CEF78068FEF88068FEFE9
:10644000980674F480910D0590910E0520919205A7
:1064500030919305821B930B90930E0580930D054D
:106460008091940590919505909388078093870774
:1064700080910B0590910C059093800780937F0786
:1064800080910D0590910E05209111053091120516
:10649000821B930B9C0163E0220F331F6A95E1F787
:1064A000880F991F820F931F909382078093810713
:1064B00008C010927C0510927B0510927E05109208
:1064C0007D0520E030E040E050E060917E08709172
:1064D0007F0880918008909181080E948B4A8823D0
:1064E00041F410927C0510927B0510927E0510926B
:1064F0007D058091770890917808A0917908B091F6
:106500007A0880938A0590938B05A0938C05B093AD
:106510008D058091730890917408A0917508B091D1
:1065200076088093860590938705A0938805B0939D
:106530008905109245051092460510924705109264
:1065400048051092490510924A0510924B05109289
:106550004C051092770810927808109279081092E2
:106560007A081092730810927408109275081092AD
:1065700076081092E9041092E804809069059090E2
:106580006A05840197FE04C000271127081919091C
:106590000531110554F08091BC0884FD06C081E0EE
:1065A00090E090939D0580939C05E090C508B40110
:1065B000882777FD8095982F2E2D30E040E050E021
:1065C0000E946B4B9801442737FD4095542F0E9441
:1065D0006B4B20E032E040E050E00E94DF4B89014D
:1065E0009A01FF24E89CC001E99C900DF89C900D55
:1065F000112464E070E00E94AA4B600F711F88278D
:1066000077FD8095982F6093B1057093B2058093C4
:10661000B3059093B4052091410530914205409116
:10662000430550914405261B370B480B590B20930B
:1066300041053093420540934305509344058091B2
:10664000410590914205A0914305B09144058155C3
:10665000934CA040B04064F080E593ECA0E0B0E043
:106660008093410590934205A0934305B093440560
:106670008091410590914205A0914305B091440558
:10668000805B9C43AF4FBF4F64F480EB9CE3AFEF64
:10669000BFEF8093410590934205A0934305B093CB
:1066A00044058091BC0883FD02C085FF82C08091B3
:1066B00085058150809385058F3F51F581E3809357
:1066C00085050E943C4490936F0380936E038091F4
:1066D0006E0390916F0397FF05C0109252051092C0
:1066E000510516C080916E0390916F032091700345
:1066F00030917103845E9D4F821B930B68E671E0BD
:106700000E94AA4B845B9040909352058093510560
:1067100080916D0590916E058B3491050CF049C008
:1067200080916F05909170058B3491050CF041C0FC
:1067300080919C0590919D05892B81F010929D057B
:1067400010929C0580916E0390916F03909371035A
:10675000809370031092520510925105E09041050C
:10676000F090420500914305109144052091510598
:10677000309152058091840390E0AC01429FC001AA
:10678000439F900D529F900D112460E170E00E9494
:10679000AA4B882777FD8095982F6E0D7F1D801F4F
:1067A000911F609341057093420580934305909338
:1067B00044058091BC0885FF17C080918A038093AF
:1067C000CD0580918D038093C90580918E038093C0
:1067D000D10580915405882311F086EE02C0809186
:1067E00059050E94D23C02C00E941F3A80919E052A
:1067F000815080939E058F3F09F07AC088E1809395
:106800009E0560911D0570911E0580911F05909158
:106810002005E090C808FF2400E010E0A8019701DF
:106820000E94DF4B3093520720935107609125055A
:10683000709126058091270590912805A801970160
:106840000E94DF4B309354072093530780918908AF
:1068500090918A08909356078093550780918D08F0
:1068600090918E08909358078093570780918608DF
:106870009091870890935A078093590780917705E4
:106880009091780590935C0780935B0760914D052C
:1068900070914E0580914F059091500520E032E0B7
:1068A00040E050E00E94DF4B30935E0720935D078D
:1068B00080916E0390916F039093620780936107BC
:1068C0008091080390910903909364078093630774
:1068D0008091030590910405909366078093650766
:1068E00080917B0890917C08909372078093710748
:1068F00080917F058823A9F06091840870918508B4
:10690000882777FD8095982F0E94504A20918F0804
:106910003091900840919108509192080E94084B44
:1069200032C060911D0570911E0580911F059091E8
:106930002005E0908408F09085080E94504A20913C
:106940007E0830917F0840918008509181080E9414
:10695000084B5B016C010027F7FC0095102FC80164
:10696000B7010E94504A20918F08309190084091C1
:106970009108509192080E94084B9B01AC01C601FE
:10698000B5010E9451490E941D4A70938508609389
:106990008408809180058823A9F060918208709115
:1069A0008308882777FD8095982F0E94504A209170
:1069B0008F083091900840919108509192080E9460
:1069C000084B32C0609125057091260580912705FE
:1069D00090912805E0908208F09083080E94504A28
:1069E00020917E0830917F08409180085091810865
:1069F0000E94084B5B016C010027F7FC0095102FEB
:106A0000C801B7010E94504A20918F083091900828
:106A100040919108509192080E94084B9B01AC0153
:106A2000C601B5010E9451490E941D4A7093830816
:106A3000609382086091860870918708A0902D0568
:106A4000B0902E05C0902F05D090300580917E0823
:106A500090917F08A0918008B091810889839A83E2
:106A6000AB83BC83882777FD8095982F0E94504A7E
:106A70007B018C0160918F08709190088091910842
:106A8000909192089B01AC010E9451499B01AC017D
:106A9000C801B7010E94084B7B018C01C601B501FA
:106AA0000E94504A29813A814B815C810E94084BA7
:106AB00020E030E040E05FE30E94084B9B01AC0126
:106AC000C801B7010E9451490E941D4A709387086E
:106AD00060938608609125057091260580912705B1
:106AE000909128050E94504A29813A814B815C810E
:106AF0000E94084B0E94224A709384076093830788
:106B0000A0916705B0916805BE83AD83B0939007EF
:106B1000A0938F07809182089091830890938A07B1
:106B200080938907809184089091850881509840CE
:106B300034F080E098E090938508809384088091F9
:106B40008408909185088050984F34F480E098EF45
:106B5000909385088093840880918208909183089F
:106B60008150984034F080E098E0909383088093BF
:106B7000820880918208909183088050984F34F465
:106B800080E098EF90938308809382088091860834
:106B9000909187088150984034F080E098E090937D
:106BA0008708809386088091860890918708805096
:106BB000984F34F480E098EF90938708809386088C
:106BC0008091BC08282F80FFCFC080915405882376
:106BD00009F0CAC08091810321FF0EC0823310F5F5
:106BE0008091770590917805449790937A058093EA
:106BF00079051092A10519C020917A0330917B0389
:106C0000280F311D8091C10890E0BC01269FC00172
:106C1000279F900D369F900D1124449790937A05ED
:106C20008093790581E08093A1058090770590900D
:106C300078056090790570907A05681479040CF0F5
:106C400093C08091A105882309F48EC0B09082037F
:106C5000C090E604D090E704A090800360914D05B9
:106C600070914E0580914F0590915005E0908303FF
:106C7000FF2400E010E020E032E040E050E00E941D
:106C8000DF4BC801B7010E946B4B20E230E040E0CF
:106C900050E00E94DF4B8901233331051CF002E3F1
:106CA00010E005C02E5C3F4F14F40EEC1FEF8B2D4F
:106CB00090E086189708DC01A89DC001A99D900D61
:106CC000B89D900D112460E170E00E94AA4BF10183
:106CD000E61BF70B80919F059091A0059C0144E075
:106CE000220F331F4A95E1F7281B390B8A2D90E0BC
:106CF000AC014C9DC0014D9D900D5C9D900D1124EB
:106D000068E070E00E94AA4B261B370B2E0F3F1F36
:106D1000C901801B910B60E170E00E94AA4B709347
:106D2000A00560939F058091BD0890E068177907E2
:106D300064F4281639062CF09093A00580939F05E3
:106D400004C03092A00520929F0580919F059091EC
:106D5000A0052816390624F43092A00520929F053C
:106D600020909F053090A0058091C708482E55249B
:106D7000C20144973101821593050CF43C017092D5
:106D8000600760925F0720918608309187088091A4
:106D9000B1059091B205A091B305B091B40554E14D
:106DA000651671041CF41A86198628C0281B390B35
:106DB000C901930135952795821793070CF49C011F
:106DC000C30162E070E00E94AA4B709561957F4F0D
:106DD000C901261737070CF4CB0192012619370990
:106DE000281739070CF4C9019301241935099A872A
:106DF00089878217930714F43A872987209184089A
:106E00003091850880906505909066058091C50554
:106E10009091C605881A990A2819390930938C0867
:106E200020938B0820E030E040E050E069817A81D7
:106E30008B819C810E948B4A8823F1F1E0901D0593
:106E4000F0901E0500911F05109120056091B90575
:106E50007091BA058091BB059091BC050E94504A83
:106E60005B016C01C801B7010E94504A29813A8137
:106E70004B815C810E94084B7B018C01B401882707
:106E800077FD8095982F0E94504A9B01AC01C80164
:106E9000B7010E9450499B01AC01C601B5010E9497
:106EA00051490E941D4A6093B9057093BA058093B9
:106EB000BB059093BC051CC020918B0830918C08B9
:106EC000442737FD4095542F8091B9059091BA051C
:106ED000A091BB05B091BC05820F931FA41FB51FE5
:106EE0008093B9059093BA05A093BB05B093BC05F8
:106EF0008091B9059091BA05A091BB05B091BC05F0
:106F000081589E43A040B04064F080E89EE3A0E03A
:106F1000B0E08093B9059093BA05A093BB05B093F8
:106F2000BC058091B9059091BA05A091BB05B091BF
:106F3000BC058058914CAF4FBF4F64F480E891EC92
:106F4000AFEFBFEF8093B9059093BA05A093BB054F
:106F5000B093BC0560918B0870918C0880917C0384
:106F600090917D03A0917E03B0917F038B879C87D6
:106F7000AD87BE87882777FD8095982F0E94504A5D
:106F80007B018C016091B9057091BA058091BB05B8
:106F90009091BC050E94504A9B01AC016B857C8599
:106FA0008D859E850E94084B9B01AC01C801B701ED
:106FB0000E9451490E941D4A7B018C016B01898509
:106FC0009A8597FF03C0909581959F4F62E070E08E
:106FD0000E94AA4B660D771D882777FD8095982F14
:106FE0002091950330E040E050E00E946B4B20E49C
:106FF00030E040E050E00E94DF4B38872F83C2161C
:10700000D3060CF497012F803884309421943108F2
:107010003394221533050CF4910149855A85460DA8
:10702000571DCA01820F931F97FF03C060E070E0F5
:1070300005C0BC01481659060CF4B2018091C6087F
:10704000E82FF0E0F8A3EF8FCB016E177F070CF469
:10705000CF0180937208421B530B9A0157FF03C064
:1070600020E030E004C0441655060CF492014F8D28
:1070700058A1241735070CF49A01209388088091B1
:107080008208909183082091C7053091C8058D80B2
:107090009E80821A930A88199909909371088093A7
:1070A000700820E030E040E050E069817A818B8117
:1070B0009C810E948B4A8823F1F1E0902505F09095
:1070C000260500912705109128056091B50570915E
:1070D000B6058091B7059091B8050E94504A5B01B2
:1070E0006C01C801B7010E94504A29813A814B8145
:1070F0005C810E94084B7B018C01B401882777FDDD
:107100008095982F0E94504A9B01AC01C801B7019D
:107110000E9450499B01AC01C601B5010E94514932
:107120000E941D4A6093B5057093B6058093B7051C
:107130009093B8051CC020917008309171084427C5
:1071400037FD4095542F8091B5059091B605A091DB
:10715000B705B091B805820F931FA41FB51F809388
:10716000B5059093B605A093B705B093B805809187
:10717000B5059091B605A091B705B091B8058158B5
:107180009E43A040B04064F080E89EE3A0E0B0E001
:107190008093B5059093B605A093B705B093B80555
:1071A0008091B5059091B605A091B705B091B8054D
:1071B0008058914CAF4FBF4F64F480E891ECAFEF33
:1071C000BFEF8093B5059093B605A093B705B09334
:1071D000B8056091700870917108882777FD8095D7
:1071E000982F0E94504A7B018C016091B5057091E7
:1071F000B6058091B7059091B8050E94504A9B0151
:10720000AC016B857C858D859E850E94084B9B011A
:10721000AC01C801B7010E9451490E941D4A2F814B
:107220003885621773070CF49B01C10122163306DF
:107230000CF4C9019301A985BA852A1B3B0B280FC1
:10724000391F37FF03C020E030E004C04216530668
:107250000CF49201EF8DF8A12E173F070CF49F015B
:1072600020939308681A790AC30129853A85821BFD
:10727000930B97FF03C080E090E004C048165906C6
:107280000CF4C2014F8D58A18417950754F4CA011C
:1072900008C080917F05882311F00C94392C0C9440
:1072A000402C80937D08A2960FB6F894DEBF0FBEE7
:1072B000CDBFDF91CF911F910F91FF90EF90DF90A5
:1072C000CF90BF90AF909F908F907F906F905F9086
:1072D0004F903F902F900895E091B408F0E0EE0FAA
:1072E000FF1FEC5CF74F0190F081E02DF7FF03C02A
:1072F000F095E195FF4F74971CF081E090E00895C0
:10730000E091B508F0E0EE0FFF1FEC5CF74F8081D5
:10731000918120E030E097FF03C0909581959F4FC9
:10732000449714F021E030E0C9010895809172067D
:1073300081508230F0F5809174068330D1F58091D0
:10734000750690917606A0917706B09178068093A5
:10735000E2059093E305A093E405B093E5058091E1
:10736000790690917A06A0917B06B0917C06809375
:10737000E6059093E705A093E805B093E9058091B1
:107380007D0690917E06A0917F06B0918006809345
:10739000EA059093EB05A093EC05B093ED0581E031
:1073A0008093EE0588EE93E09093D4048093D30409
:1073B00008951092EE0508958091720681508230F2
:1073C000C0F5809174068330A1F580917506909187
:1073D0007606A0917706B09178068093D5059093B4
:1073E000D605A093D705B093D805809179069091E2
:1073F0007A06A0917B06B0917C068093D905909384
:10740000DA05A093DB05B093DC0580917D069091B1
:107410007E06A0917F06B09180068093DD05909353
:10742000DE05A093DF05B093E00581E08093E105E0
:1074300008951092E10508951092EE0508951092B6
:10744000C6051092C5051092C8051092C70508958B
:107450002F923F924F925F926F927F928F929F9264
:10746000AF92BF92CF92DF92EF92FF920F931F9352
:10747000CF93DF93CDB7DEB762970FB6F894DEBF38
:107480000FBECDBF8C0180917206813009F059C2C8
:1074900080917406833009F054C280916E039091FC
:1074A0006F0397FD4EC20115110509F486C0F8015E
:1074B0008485882309F481C0823039F48091F105F4
:1074C0009091F2050817190791F11092F7051092A3
:1074D000F8051092F9051092FA051092F305109232
:1074E000F4051092F5051092F605F8016481758196
:1074F0008681978120E836E948E950E00E94DF4B19
:10750000DA01C9010E945140AA2797FDA095BA2F20
:107510008093960390939703A0939803B093990355
:107520001093F2050093F10582E0F8018487209121
:10753000790630917A0640917B0650917C06F801DD
:1075400084819581A681B781281B390B4A0B5B0B7F
:107550002D833E834F835887609175067091760620
:107560008091770690917806208131814281538104
:10757000621B730B840B950B20919603309197033C
:1075800040919803509199030E946B4B20E030E2A8
:1075900040E050E00E94DF4B29833A834B835C83B9
:1075A0002D813E8130936A072093690749815A8172
:1075B00050936C0740936B0718C01092F705109218
:1075C000F8051092F9051092FA051092F305109241
:1075D000F4051092F5051092F6051D821E821F8299
:1075E000188619821A821B821C828091C90590918B
:1075F000CA05A091CB05B091CC058D879E87AF873A
:10760000B88B2090CD053090CE054090CF0550909E
:10761000D005A090D105B090D205C090D305D090F0
:10762000D4052091850630918606409187065091B9
:107630008806C601B5010E946B4B20E032E040E0B5
:1076400050E00E94DF4B79018A012091F7053091CB
:10765000F8054091F9055091FA05C201B1010E9467
:107660006B4B20E030E240E050E00E94DF4B3901FC
:107670004A019094809470946094611C711C811CE8
:10768000911C6E187F08800A910A6D817E818F811E
:1076900098852D853E854F8558890E946B4B20E04B
:1076A00038E040E050E00E94DF4B621A730A840A1F
:1076B000950A2091890630918A0640918B06509157
:1076C0008C06C601B5010E946B4B20E032E040E021
:1076D00050E00E94DF4B79018A012091F30530913F
:1076E000F4054091F5055091F605C201B1010E94E3
:1076F0006B4B20E030E240E050E00E94DF4B59014C
:107700006A01D094C094B094A094A11CB11CC11C77
:10771000D11CAE18BF08C00AD10A69817A818B8159
:107720009C812D853E854F8558890E946B4B20E0BA
:1077300038E040E050E00E94DF4BA21AB30AC40ACE
:10774000D50A80916E0390916F030E9451401C01F5
:10775000442437FC4094542C80916E0390916F0325
:107760000E9408409C01442737FD4095542F2987EB
:107770003A874B875C87C601B501A20191010E943F
:107780006B4B7B018C01C401B30129853A854B8584
:107790005C850E946B4BE61AF70A080B190BC801AF
:1077A000B70120E030E240E050E00E94DF4B3A8B2E
:1077B000298B3093C8052093C705C401B301A201EA
:1077C00091010E946B4B7B018C01C601B50129859B
:1077D0003A854B855C850E946B4BE60EF71E081FB1
:1077E000191FC801B70120E030E240E050E00E94DC
:1077F000DF4B309521953F4F3093C6052093C5054B
:107800002E3231051CF08DE290E007C0235D3F4F22
:1078100014F080E007C083ED9FEF9093C60580933E
:10782000C50581E0A989BA899E971CF08DE290E098
:1078300007C0E989FA89E35DFF4F3CF483ED9FEFD0
:107840009093C8058093C70594C0882309F091C020
:107850006D817E818F81988520E130E040E050E0AD
:107860000E94DF4B8091F7059091F805A091F905F2
:10787000B091FA05280F391F4A1F5B1F2093F705A7
:107880003093F8054093F9055093FA0521308DE7C0
:10789000380780E0480780E058072CF080E09DE73B
:1078A000A0E0B0E009C0205033484F4F5F4F64F470
:1078B00080E093E8AFEFBFEF8093F7059093F80572
:1078C000A093F905B093FA0569817A818B819C8137
:1078D00020E130E040E050E00E94DF4B8091F30572
:1078E0009091F405A091F505B091F605280F391F88
:1078F0004A1F5B1F2093F3053093F4054093F50571
:107900005093F6052130ADE73A07A0E04A07A0E022
:107910005A072CF080E09DE7A0E0B0E009C02050BD
:1079200033484F4F5F4F2CF580E093E8AFEFBFEF48
:107930008093F3059093F405A093F505B093F605B5
:1079400018C01092C6051092C5051092C805109275
:10795000C7051092F7051092F8051092F9051092DC
:10796000FA051092F3051092F4051092F5051092A5
:10797000F60562960FB6F894DEBF0FBECDBFDF915D
:10798000CF911F910F91FF90EF90DF90CF90BF901C
:10799000AF909F908F907F906F905F904F903F90AF
:1079A0002F900895863418F41092F00507C0803A9D
:1079B00010F481E001C082E08093F00580917206AE
:1079C000813079F1813020F0823009F0A7C014C0F5
:1079D0001092C6051092C5051092C8051092C705F1
:1079E0008091F005882309F499C084E690E0909393
:1079F000D4048093D30492C080919506882331F0FB
:107A00008091950681508093950688C01092C60596
:107A10001092C5051092C8051092C7051092720603
:107A20007DC0809174069091F005833009F055C0B7
:107A3000913039F0913008F445C0923009F044C0DB
:107A400021C08091E1058823E9F10E946C398823E7
:107A500069F00E94DC391092C6051092C50510929B
:107A6000C8051092C7051092EF0555C08091EF052B
:107A7000873018F58F5F8093EF050E94DC3980E036
:107A800090E01DC08091EE05882349F00E94DC390A
:107A90000E946C398823C1F482EE95E010C082E325
:107AA00090E09093D4048093D3048091E1058823DF
:107AB00049F00E946C39882339F485ED95E00E94E5
:107AC000283A29C00E94DC391092C6051092C505DB
:107AD0001092C8051092C7051EC01092C6051092DC
:107AE000C5051092C8051092C7059923A1F0809191
:107AF000730628EC829FC001112420E436E0281B85
:107B0000390B37FF02C020E030E02E5C3F4F30934E
:107B1000D4042093D30482E0809372068091C5053B
:107B20009091C60590936E0780936D078091C7056D
:107B30009091C8059093700780936F070895A0E017
:107B4000B0E0A80FB11D0E94314C802D90E0089547
:107B5000A0E0B0E0A80FB11D062E0E94434C08958E
:107B6000A0E0B0E0A80FB11D0E943E4CCF010895E7
:107B7000A0E0B0E0A80FB11D0B010E944F4C08958A
:107B8000863008F085E0A2E0B0E0082E0E94434C69
:107B90000895982F863008F095E086E4989FD001EC
:107BA0001124AC59BF4FE4EBF8E0182E0E94544C5E
:107BB000A2E0B0E0092E0E94434C0895982F863031
:107BC00008F095E086E4989FD0011124AC59BF4F8E
:107BD000E4EBF8E0182E0E94394C089581E0809380
:107BE000B40822E02093B50883E08093B60854E0FF
:107BF0005093B70845E04093B80836E03093B90891
:107C000087E08093BA0888E08093BB0880EC80937B
:107C1000BC089EE19093BD088BEF8093BF088AE07B
:107C20008093C0089093BE089093C2082093C10827
:107C30002093C3085093C4083093C5088FE0809305
:107C4000C6088AEF8093C7089093C80880E880939D
:107C5000C90824E62093CA088CE88093CB088EE5F7
:107C60008093CC0883E28093CD0884E18093CE0892
:107C70001092CF0880E18093D00880E58093D108EE
:107C80001092D2081092D3081092D4081092E408EF
:107C90001092E5081092E6081092E7082093D508A4
:107CA00088E28093D6081092E90892E39093D7086F
:107CB00086E98093D8084093D9089093DA088AE53A
:107CC0008093DB089093DC081092E8088093DD082D
:107CD0004093DE082093DF082093E00880E2809341
:107CE000E1085093E2089093E308AEEEB8E0ECE9C7
:107CF000F3E089E001900D928150E1F7089581E071
:107D00008093B40882E08093B50823E02093B608FE
:107D100054E05093B70845E04093B80836E03093FC
:107D2000B90887E08093BA0888E08093BB0880E4B4
:107D30008093BC089EE19093BD088BEF8093BF08B1
:107D40008AE08093C0089093BE089093C208209365
:107D5000C1082093C3085093C4083093C5088FE02E
:107D60008093C6088AEF8093C7089093C80880E87C
:107D70008093C90890E59093CA0888E78093CB0860
:107D80008EE58093CC0883E28093CD0884E18093D4
:107D9000CE081092CF0830E23093D0089093D108EB
:107DA0001092D2081092D3081092D4081092E408CE
:107DB0001092E5081092E6081092E70824E6209356
:107DC000D50888E28093D6081092E90892E3909350
:107DD000D70886E98093D8084093D9089093DA08A9
:107DE0008AE58093DB089093DC081092E808809382
:107DF000DD084093DE082093DF082093E0083093ED
:107E0000E1085093E2088BE48093E308AEEEB8E01B
:107E1000E6EAF3E087E001900D928150E1F70895E2
:107E200081E08093B40882E08093B50883E080937A
:107E3000B60834E03093B70845E04093B80886E0D0
:107E40008093B90887E08093BA0828E02093BB08A4
:107E500080E48093BC089EE19093BD088BEF8093F3
:107E6000BF088AE08093C0089093BE089093C20830
:107E70003093C1083093C3082093C4088CE08093EA
:107E8000C5088FE08093C6088AEF8093C708909357
:107E9000C80890E89093C90880E58093CA0856E91D
:107EA0005093CB088EE58093CC0883E28093CD0875
:107EB00084E18093CE081092CF0880E28093D008AE
:107EC0009093D1081092D2081092D3081092D4083F
:107ED0001092E4081092E5081092E6081092E70864
:107EE00024E62093D50888E28093D6081092E9080A
:107EF00082E38093D7085093D8084093D9088093A1
:107F0000DA089AE59093DB088093DC081092E80881
:107F10009093DD084093DE082093DF082093E0086B
:107F200080E18093E1083093E2082093E308AEEE0D
:107F3000B8E0EEEAF3E086E001900D928150E1F7BF
:107F4000089522E030E0D9010E94314C802D863026
:107F500028F082E0D901082E0E94434C90E0089559
:107F60000F931F93CF93DF93A1E0B0E00E94314CB9
:107F7000802D853469F18FEC95E09F938F931F924C
:107F80000E94600A0E94103FC0E0D0E00F900F9066
:107F90000F900C2FC23039F0C33019F40E94EE3D1F
:107FA00004C0C43010F00E947F3E802F0E94C93D63
:107FB0002196C630D10569F7A2E0B0E083E0082E33
:107FC0000E94434CA1E0B0E085E4082E0E94434C9F
:107FD00002E010E0D8010E94314C802D0E94DE3D6D
:107FE000D8010E94314C802D90E09F938F9386EBB7
:107FF00095E09F938F931F920E94600A0F900F90BD
:108000000F900F900F90DF91CF911F910F910895D6
:1080100097FD02C041E004C0909581959F4F4FEFBE
:1080200068E671E00E94AA4BFC018B35910554F083
:108030008B5590408A35910538F484EB90E08E1B87
:108040009F0BFC0181E00FC0CF01855B90408A351A
:10805000910518F4E45BF04005C088E691E08E1BC2
:108060009F0BFC018FEFEE0FFF1FE150FA4F2591A0
:108070003491992787FD9095B901689F9001699F78
:10808000300D789F300D1124842F992787FD90950E
:10809000AC01249FC001259F900D349F900D1124A9
:1080A00008952AE530E0281B390BC9010E940840D9
:1080B00008951F93CF93DF93EB01672B29F400976B
:1080C00019F480E090E091C097FF02C01FEF01C05B
:1080D00011E0209729F48AE51802C001112485C017
:1080E0009C01B901882777FD8095982F26E0660FBF
:1080F000771F881F991F2A95D1F79E01442737FDC6
:108100004095542F0E94DF4BF90137FF03C0F095D3
:10811000E195FF4F31E0EA35F30734F4EB54F94FC2
:108120008491282F30E047C04CE1E73AF4071CF077
:108130002AE530E040C059E0ED38F5071CF029E5AC
:1081400030E039C085E0EA3BF8071CF028E530E074
:1081500032C024E0E731F2071CF027E530E02BC005
:1081600033E0EE32F3071CF026E530E024C042E0B5
:10817000E939F4071CF025E530E01DC052E0E23398
:10818000F5071CF024E530E016C081E0E73EF80773
:108190001CF023E530E00FC021E0ED3AF2071CF0BF
:1081A00022E530E008C0EF57F1401CF021E530E057
:1081B00002C020E530E01C161D066CF4812F9927C3
:1081C00087FD9095AC01249FC001259F900D349FA1
:1081D000900D11240AC011162CF484EB90E0821B40
:1081E000930B03C0C901845B9040DF91CF911F9135
:1081F00008959F92AF92BF92CF92DF92EF92FF923B
:108200000F931F937B018C015B016C019924C601C4
:10821000B501A80197010E94BD4B2E0D3F1D401FC7
:10822000511F5695479537952795E21AF30A040B87
:10823000150B82E0E816F1040105110538F093945E
:1082400088E2981619F079018A01E1CFCA01B901D3
:108250001F910F91FF90EF90DF90CF90BF90AF9064
:108260009F90089580912F06813059F580910506E1
:108270008093740680912A0680937306809113067A
:1082800090911406A0911506B09116068093810670
:1082900090938206A0938306B09384068091230670
:1082A00090912406A0912506B09126068093910610
:1082B00090939206A0939306B093940682E08093E5
:1082C0002F0680914C06813099F58091340690916B
:1082D0003506A0913606B0913706809375069093C7
:1082E0007606A0937706B093780680913806909131
:1082F0003906A0913A06B0913B0680937906909397
:108300007A06A0937B06B0937C0680913C06909100
:108310003D06A0913E06B0913F0680937D06909366
:108320007E06A0937F06B093800682E080934C0681
:10833000809171068130D1F5809155069091560655
:10834000A0915706B09158068093890690938A06AB
:10835000A0938B06B0938C068091510690915206A3
:10836000A0915306B091540680938506909386069B
:10837000A0938706B09388068091590690915A067B
:10838000A0915B06B0915C06B095A0959095819503
:108390009F4FAF4FBF4F80938D0690938E06A09353
:1083A0008F06B093900682E08093710680912F062D
:1083B000882359F080914C06882339F0809171060A
:1083C000882319F081E0809372060895482F8091E8
:1083D000A006843009F461C0853050F48130D1F0BA
:1083E000813098F08230D9F0833009F0D6C01CC0BB
:1083F000863009F487C0863008F461C0873009F4FC
:10840000A8C0883009F0C9C0B1C0453B09F0C2C05E
:1084100081E0A4C0423609F0BDC082E09FC0413077
:1084200009F0B8C083E09AC0463061F04231D9F01B
:10843000423009F580E396E090939B0680939A067C
:108440004D9607C08BEF95E090939B0680939A061C
:10845000C5969093990680939806019790939706F6
:10846000809396060AC08DE496E090939B068093D5
:108470009A068596EECF1092A0068091A0068823DA
:1084800009F48DC084E08093A006842F8F5F8093D1
:108490009F068F5F80939E060895842F90E09093AF
:1084A0009D0680939C0690919F06940F90939F0643
:1084B00080919E06890F80939E0685E04FC0242FF1
:1084C00030E0322F222780919C0690919D06820FEA
:1084D000931F90939D0680939C0690919F06940F06
:1084E00090939F0680919E06890F80939E06E0914F
:1084F0009606F09197068081813009F44BC0108276
:1085000086E02CC0E0919A06F0919B068091980637
:1085100090919906E817F90728F44193F0939B0688
:10852000E0939A0690919F06940F90939F068091F6
:108530009E06890F80939E0680919C0690919D06D1
:10854000019790939D0680939C06892B41F587E0C7
:1085500005C080919F06481721F488E08093A0060B
:108560000895E0919606F091970613C080919E06BB
:10857000E0919606F0919706481759F481E08083C0
:1085800095B1982795B90E9432418FEF8093950657
:1085900001C010821092A00608951092A0060895BE
:1085A000CF93DF93DC01EC01EA81FB8121918E8185
:1085B000815019F48981E81BF109ED01FB83EA83FD
:1085C0008E839FB7F8948C9181508C939FBF822F9C
:1085D00090E0DF91CF910895FC0110827583648350
:1085E000738362834183478346830895CF93DF93E8
:1085F000DC019C91ED018981981718F080E090E0F2
:1086000016C0ED01EC81FD8161938F81815019F4D9
:108610008981E81BF109ED018F83FD83EC839FB70E
:10862000F8948C918F5F8C939FBF81E090E0DF91F5
:10863000CF910895FC0180818823E9F3CF010E9446
:10864000D04290E00895FC018081882319F48FEFD7
:108650009FEF0895CF010E94D04290E008959FB708
:10866000F8948091C9008F778093C9008091C900E8
:108670008F7B8093C9008091C9008F7D8093C90052
:108680005A9A52985B9A539A1092CD008AE280933C
:10869000CC008091C80082608093C80088E18093FC
:1086A000C9008091CA008F778093CA008091CA0068
:1086B0008F7B8093CA008091CA008F7D8093CA000F
:1086C0008091CA008F7E8093CA008091CA00877F04
:1086D0008093CA008091C9008B7F8093C9008091EC
:1086E000CA0084608093CA008091CA00826080932F
:1086F000CA0002C08091CE008091C80087FDFACFE9
:108700008091C90080688093C9008091C90080640D
:108710008093C9009FBF08951F920F920FB60F92CA
:1087200011242F933F934F935F936F937F938F9376
:108730009F93AF93BF93EF93FF939091CE0080915F
:1087400000018B3019F4892F0E94E641FF91EF91CF
:10875000BF91AF919F918F917F916F915F914F9159
:108760003F912F910F900FBE0F901F9018951F9261
:108770000F920FB60F9211242F933F934F938F9325
:108780009F938091A109833021F0843009F06AC061
:1087900008C08EB58093A3061EBC84E08093A10917
:1087A00061C08091A306992787FD9095382F2227D5
:1087B0008EB590E0282B392BC9018D509E4F875ED6
:1087C0009340D8F48091A409823051F0833071F045
:1087D000813081F43093A6092093A50982E00BC073
:1087E0003093A8092093A70983E005C03093AA0914
:1087F0002093A90981E08093A409449A1092A109C9
:108800002091A5093091A6098091A7099091A80906
:1088100028173907B1F42091A5093091A609809154
:10882000A9099091AA092817390759F42091A70995
:108830003091A8098091A9099091AA0928173907B0
:1088400041F08091A106843168F48091A1068F5F88
:1088500007C08091A106882329F08091A10681504C
:108860008093A1069F918F914F913F912F910F90EF
:108870000FBE0F901F9018952F923F924F925F92CC
:108880006F927F928F929F92AF92BF92CF92DF9220
:10889000EF92FF920F931F93CF93DF93CDB7DEB785
:1088A00066970FB6F894DEBF0FBECDBF8091A106CC
:1088B000882309F465C16091A5097091A6092091EA
:1088C0009809332727FD3095621B730B882777FDA6
:1088D0008095982FEAE0660F771F881F991FEA9509
:1088E000D1F720919B0930919C09442737FD409591
:1088F000542F0E94DF4B29873A874B875C87609112
:10890000A7097091A80920919909332727FD30956F
:10891000621B730B882777FD8095982F5AE0660FAE
:10892000771F881F991F5A95D1F720919D09309183
:108930009E09442737FD4095542F0E94DF4B2D8719
:108940003E874F87588B6091A9097091AA092091A1
:108950009A09332727FD3095621B730B882777FD13
:108960008095982F4AE0660F771F881F991F4A95B8
:10897000D1F720919F093091A009442737FD4095F8
:10898000542F0E94DF4B298B3A8B4B8B5C8B809151
:10899000D40890E0845E9D4F68E671E00E94AA4B87
:1089A0008C010E9408409C01442737FD4095542FBC
:1089B0002D833E834F835887C8010E9451409C01FC
:1089C000442737FD4095542F29833A834B835C839A
:1089D00060911D0570911E0580911F0590912005E5
:1089E000E090D308FF2433E0EE0CFF1C3A95E1F74A
:1089F00000E010E0A80197010E94DF4B59016A01D5
:108A0000C9010E9408403C01C5010E9451405C011F
:108A10006091250570912605809127059091280584
:108A2000A80197010E94DF4B79018A01C9010E94C8
:108A300008409E8B8D8BC7010E9451401C016981AB
:108A40007A818B819C8129853A854B855C850E9442
:108A50006B4B7B018C016D817E818F8198852D858B
:108A60003E854F8558890E946B4BE61AF70A080B22
:108A7000190BC801B70120E030E240E050E00E944D
:108A8000DF4BCC24B7FCC094DC2CCA01B901A60191
:108A900095010E946B4B5B016C01882477FC8094EC
:108AA000982CC401B30129893A894B895C890E94B9
:108AB0006B4BA61AB70AC80AD90A69817A818B81D9
:108AC0009C812D853E854F8558890E946B4B7B018B
:108AD0008C016D817E818F81988529853A854B85B2
:108AE0005C850E946B4BE60EF71E081F191FC8011C
:108AF000B70120E030E240E050E00E94DF4B442428
:108B000037FC4094542CCA01B901A20191010E9482
:108B10006B4B7B018C014D895E89BA01882777FDFB
:108B20008095982F29893A894B895C890E946B4BE3
:108B3000E60EF71E081F191FC601B50120E030E23E
:108B400040E050E00E94DF4B59016A01C801B701C3
:108B500020E030E240E050E00E94DF4BDA01C90142
:108B6000B5010E9459409C0197FF05C088279927AD
:108B7000821B930B13C088E691E0821B930B0EC0FF
:108B80008091D3049091D404892B31F484E690E051
:108B90009093D4048093D3048FEF9FEF66960FB623
:108BA000F894DEBF0FBECDBFDF91CF911F910F9123
:108BB000FF90EF90DF90CF90BF90AF909F908F90FD
:108BC0007F906F905F904F903F902F90089590917D
:108BD000A109913049F0913018F0923091F525C0FB
:108BE0004498459A81E01EC045988091A40982303E
:108BF00031F0833031F0813031F481E309C082E318
:108C000007C083E305C09093A4091092A1090895B9
:108C10008EBD88E090E00E94390D9093A309809367
:108C2000A20982E08093A10908958091A209909100
:108C3000A3090E94420D882321F01EBC83E080938B
:108C4000A10908952F923F924F925F926F927F9267
:108C50008F929F92AF92BF92CF92DF92EF92FF924C
:108C60000F931F93CF93DF93299A809100018A304D
:108C700011F4289801C0289A66247724CC24DD2496
:108C800088249924EE24FF24AA24BB2400E010E0C9
:108C900022E3422E55249FE0292E98E0392EE091C0
:108CA000B708F0E0EE0FFF1FEC5CF74F8081918179
:108CB0008536910564F066247724CC24DD2488244D
:108CC0009924EE24FF24AA24BB2400E010E0809124
:108CD000A5099091A609C816D9062CF4C090A5093B
:108CE000D090A6090BC08091A5099091A609861580
:108CF000970524F46090A5097090A6098091A709B2
:108D00009091A809E816F9062CF4E090A709F090D4
:108D1000A8090BC08091A7099091A8098815990509
:108D200024F48090A7099090A8098091A9099091B6
:108D3000AA09081719072CF40091A9091091AA098A
:108D40000BC08091A9099091AA098A159B0524F46A
:108D5000A090A909B090AA09552081F485B191E0AD
:108D6000892785B985B192E0892785B982E390E0AA
:108D70009093D4048093D304B2E35B2E8AE090E016
:108D80000E94390DEC01CE010E94420D8823D9F3D7
:108D90008091A2068F5F8093A20681508F31D8F018
:108DA0001F930F93BF92AF92FF92EF929F928F9279
:108DB000DF92CF927F926F923F922F921F920E94EA
:108DC000600A1092A2068DB79EB70F960FB6F89460
:108DD0009EBF0FBE8DBFE091B608F0E0EE0FFF1F03
:108DE000EC5CF74F80819181843691050CF44A94B4
:108DF000442011F05A9453CFC601861997099093D5
:108E00009C0980939B09C7018819990990939E0931
:108E100080939D09C8018A199B099093A0098093AA
:108E20009F09C3018C0D9D1D62E070E00E94AA4B5A
:108E30009B0160939809C701880D991D62E070E05D
:108E40000E94AA4B60939909C8018A0D9B1D62E09C
:108E500070E00E94AA4B60939A09622F8AE00E94F8
:108E6000A83D609199098BE00E94A83D60919A0904
:108E70008CE00E94A83D60919B0970919C098DE057
:108E80000E94B83D60919D0970919E098FE00E94FB
:108E9000B83D60919F097091A00981E10E94B83DA1
:108EA000DF91CF911F910F91FF90EF90DF90CF90C6
:108EB000BF90AF909F908F907F906F905F904F90FA
:108EC0003F902F9008951F931FB7F89484B1806A44
:108ED00084B9269887B1806387B988B18F7C88B9B7
:108EE00083ED8CBD8DB58E7F8DBD81E08093A4090F
:108EF0001092A1098AE00E949F3D809398098BE01F
:108F00000E949F3D809399098CE00E949F3D809331
:108F10009A098DE00E94B03D90939C0980939B0933
:108F20008FE00E94B03D90939E0980939D0981E15E
:108F30000E94B03D9093A00980939F091092A106D2
:108F40001FBF1F910895A8E0B0E0E9EAF7E40C9490
:108F5000044C7B018C01611571058105910519F4A3
:108F600082E089835AC083E089838EE1C82ED12CA8
:108F7000DC82CB82ED82FE820F831887C801B701A5
:108F80000E941648BC016150704077FF33C0EE2745
:108F9000FF27E61BF70B20E030E040E050E081E0E7
:108FA00090E0A0E0B0E00E2E04C0880F991FAA1F29
:108FB000BB1F0A94D2F70197A109B1098E219F2105
:108FC000A023B1230097A105B10521F021E030E0F5
:108FD00040E050E004C016950795F794E794EA95B1
:108FE000D2F72E293F29402B512B2D833E834F83CF
:108FF00058870FC06115710581F0062E04C0EE0C74
:10900000FF1C001F111F0A94D2F7ED82FE820F830E
:109010001887C61AD70ADC82CB821A82CE01019643
:109020000E946348E8E028960C94204CEF92FF924F
:109030000F931F939B01AC01203080E0380781E043
:10904000480780E0580780F42F3F3105410551055E
:1090500009F020F4EE24FF24870119C068E0E62E11
:10906000F12C012D112D13C0203080E0380780E055
:10907000480781E0580730F490E1E92EF12C012DEA
:10908000112D05C088E1E82EF12C012D112D80E273
:1090900090E0A0E0B0E08E199F09A00BB10B04C0D6
:1090A0005695479537952795EA94D2F7F901EB54F1
:1090B000FC4F2081821B9109A109B1091F910F91D9
:1090C000FF90EF9008959F92AF92BF92CF92DF9260
:1090D000EF92FF920F931F93EE24FF248701FC0170
:1090E000248135814681578191808081823010F4BE
:1090F0004061A2C0843009F49BC0823029F420E092
:1091000030E040E050E005C0211531054105510532
:1091100019F4E0E0F0E092C0828193816FEF823831
:1091200096070CF05AC062E87FEF681B790B6A3132
:1091300071052CF020E030E040E050E02AC0AA2485
:10914000BB24650181E090E0A0E0B0E0062E04C001
:10915000880F991FAA1FBB1F0A94D2F70197A10974
:10916000B10982239323A423B5230097A105B10558
:1091700029F071E0A72EB12CC12CD12C04C056953A
:109180004795379527956A95D2F72A293B294C2987
:109190005D29DA01C9018F779070A070B0708034BA
:1091A0009105A105B10539F427FF09C0205C3F4FA7
:1091B0004F4F5F4F04C0215C3F4F4F4F5F4F80E0E8
:1091C00090E0203060E0360760E0460760E4560734
:1091D00010F081E090E0FC0123C08038910544F557
:1091E000FC01E158FF4FDA01C9018F779070A07040
:1091F000B07080349105A105B10539F427FF09C08D
:10920000205C3F4F4F4F5F4F04C0215C3F4F4F4F9B
:109210005F4F57FF05C0569547953795279531966F
:1092200087E056954795379527958A95D1F706C0DB
:1092300020E030E040E050E0EFEFF0E0E22EF32EEF
:10924000942F9F77802F8078892B9E2F9795992731
:1092500097958F77082F092B9E2F9695812F8078D1
:10926000892B9794992497948F77182F1929C801DF
:10927000B7011F910F91FF90EF90DF90CF90BF90BB
:10928000AF909F900895FC014150504030F0019004
:109290000616D1F73197CF010895882799270895A9
:1092A0005058BB27AA270ED079C16AD130F06FD1B0
:1092B00020F031F49F3F11F41EF45FC10EF4E095ED
:1092C000E7FB55C1E92F7BD180F3BA17620773071B
:1092D0008407950718F071F49EF593C10EF4E0959C
:1092E0000B2EBA2FA02D0B01B90190010C01CA0160
:1092F000A0011124FF27591B99F0593F50F4503E0B
:1093000068F11A16F040A22F232F342F4427585FFC
:10931000F3CF469537952795A795F0405395C9F714
:109320007EF41F16BA0B620B730B840BBAF09150CC
:10933000A1F0FF0FBB1F661F771F881FC2F70EC06B
:10934000BA0F621F731F841F48F48795779567953E
:10935000B795F7959E3F08F0B3CF9395880F08F027
:109360009927EE0F9795879508950CD017C10FD1C7
:1093700040F006D130F021F45F3F19F0F8C05111F0
:1093800041C1FBC01CD198F39923C9F35523B1F314
:10939000951B550BBB27AA2762177307840738F064
:1093A0009F5F5F4F220F331F441FAA1FA9F333D0C3
:1093B0000E2E3AF0E0E830D091505040E695001C77
:1093C000CAF729D0FE2F27D0660F771F881FBB1F33
:1093D000261737074807AB07B0E809F0BB0B802D0D
:1093E000BF01FF2793585F4F2AF09E3F510568F059
:1093F000BEC008C15F3FECF3983EDCF386957795DD
:109400006795B795F7959F5FC9F7880F911D96955A
:10941000879597F90895E1E0660F771F881FBB1FB6
:10942000621773078407BA0720F0621B730B840B63
:10943000BA0BEE1F88F7E095089504D06894B11137
:10944000E1C00895C4D088F09F5790F0B92F9927B4
:10945000B751A0F0D1F0660F771F881F991F1AF03F
:10946000BA95C9F712C0B13081F0CBD0B1E0089500
:10947000C8C0672F782F8827B85F39F0B93FCCF381
:10948000869577956795B395D9F73EF49095809535
:10949000709561957F4F8F4F9F4F0895E89409C055
:1094A00097FB3EF490958095709561957F4F8F4F17
:1094B0009F4F9923A9F0F92F96E9BB279395F6952D
:1094C000879577956795B795F111F8CFFAF4BB0FAB
:1094D00011F460FF1BC06F5F7F4F8F4F9F4F16C00F
:1094E000882311F096E911C0772321F09EE8872F99
:1094F000762F05C0662371F096E8862F70E060E055
:109500002AF09A95660F771F881FDAF7880F9695CD
:10951000879597F9089507D008F481E0089503D05E
:1095200008F48FEF0895990F0008550FAA0BE0E893
:10953000FEEF16161706E807F907C0F01216130615
:10954000E407F50798F0621B730B840B950B39F455
:109550000A2661F0232B242B252B21F408950A26BB
:1095600009F4A140A6958FEF811D811D089597F9FB
:109570009F6780E870E060E008959FEF80EC0895B9
:1095800000240A94161617061806090608950024E2
:109590000A9412161306140605060895092E03945C
:1095A000000C11F4882352F0BB0F40F4BF2B11F4D0
:1095B00060FF04C06F5F7F4F8F4F9F4F089557FD2F
:1095C0009058440F551F59F05F3F71F04795880F31
:1095D00097FB991F61F09F3F79F0879508951216C8
:1095E00013061406551FF2CF4695F1DF08C0161674
:1095F00017061806991FF1CF869571056105089425
:109600000895E894BB2766277727CB0197F908953B
:109610000BD0C4CFB5DF28F0BADF18F0952309F0DE
:10962000A6CFABCF1124EECFCADFA0F3959FD1F325
:10963000950F50E0551F629FF001729FBB27F00D00
:10964000B11D639FAA27F00DB11DAA1F649F662755
:10965000B00DA11D661F829F2227B00DA11D621FA4
:10966000739FB00DA11D621F839FA00D611D221F5E
:10967000749F3327A00D611D231F849F600D211D42
:10968000822F762F6A2F11249F5750408AF0E1F0E5
:1096900088234AF0EE0FFF1FBB1F661F771F881F2E
:1096A00091505040A9F79E3F510570F060CFAACF6E
:1096B0005F3FECF3983EDCF3869577956795B79519
:1096C000F795E7959F5FC1F7FE2B880F911D969543
:1096D000879597F90895629FD001739FF001829F4B
:1096E000E00DF11D649FE00DF11D929FF00D839F31
:1096F000F00D749FF00D659FF00D9927729FB00DCE
:10970000E11DF91F639FB00DE11DF91FBD01CF01E0
:1097100011240895991B79E004C0991F961708F049
:10972000961B881F7A95C9F780950895AA1BBB1BC5
:1097300051E107C0AA1FBB1FA617B70710F0A61B51
:10974000B70B881F991F5A95A9F780959095BC0172
:10975000CD01089597FB092E07260AD077FD04D086
:10976000E5DF06D000201AF4709561957F4F0895CB
:10977000F6F7909581959F4F0895A1E21A2EAA1BA6
:10978000BB1BFD010DC0AA1FBB1FEE1FFF1FA217B1
:10979000B307E407F50720F0A21BB30BE40BF50BAE
:1097A000661F771F881F991F1A9469F76095709537
:1097B000809590959B01AC01BD01CF01089597FB69
:1097C000092E05260ED057FD04D0D7DF0AD0001C85
:1097D00038F450954095309521953F4F4F4F5F4F4E
:1097E0000895F6F790958095709561957F4F8F4F0E
:1097F0009F4F08952F923F924F925F926F927F9268
:109800008F929F92AF92BF92CF92DF92EF92FF9290
:109810000F931F93CF93DF93CDB7DEB7CA1BDB0B3C
:109820000FB6F894DEBF0FBECDBF09942A883988E1
:1098300048885F846E847D848C849B84AA84B984E8
:10984000C884DF80EE80FD800C811B81AA81B981F4
:10985000CE0FD11D0FB6F894DEBF0FBECDBFED0108
:109860000895F999FECFB2BDA1BDF89A119600B442
:109870000895F7DF01921A94E1F70895F2DFE02DE1
:10988000F0DFF02D0895F999FECFB2BDA1BD00BC67
:1098900011960FB6F894FA9AF99A0FBE0895F3DF6D
:1098A000012CF1DF112408950190EDDF1A94E1F706
:0498B0000895FFCF49
:1098B4000A01FF64496E74656772616C5069746370
:1098C40068202020496E74656772616C526F6C6CFD
:1098D4002020202041636350697463682020202085
:1098E40020202020416363526F6C6C2020202020B4
:1098F400202020204779726F596177202020202072
:109904002020202052656164696E67486569676834
:10991400742020204163635A20202020202020200E
:109924002020202054687275737420202020202069
:1099340020202020436F6D706173734865616469F2
:109944006E672020566F6C7461676520202020208C
:10995400202020205265636569766572204C657607
:10996400656C2020416E616C6F674F7574313120D6
:10997400202020204750534465764E6F727468202F
:10998400202020204750534465764561737420207D
:10999400202020204750535F5069746368202020A2
:1099A400202020204750535F526F6C6C20202020D1
:1099B400202020204163635F5A2020202020202083
:1099C400202020204D65616E416363506974636893
:1099D400202020204D65616E416363526F6C6C20C2
:1099E40020202020496E74656772616C4572725044
:1099F40069746368496E74656772616C457272520A
:109A04006F6C6C204D65616E496E74506974636847
:109A1400202020204D65616E496E74526F6C6C0974
:109A2400200000004E65757472616C50697463683F
:109A340020202020526F6C6C4F6666736574202062
:109A440020202020496E74526F6C6C2A4661637426
:109A54006F72202052656164696E674779726F5036
:109A640069746368446972656374436F7272526F98
:109A74006C6C202052656164696E674779726F521D
:109A84006F6C6C20436F7272656374696F6E526F92
:109A94006C6C2020492D417474526F6C6C20202012
:109AA40020202020537469636B526F6C6C2020203B
:109AB40020202020FFFF010A6400007D0000FF0336
:109AC4000102030405060708090A48656C6C6F2047
:109AD400576F726C6400000000000000000000007A
:109AE4000000000000000000000000000000000072
:109AF4000000000000000000000000000000000062
:109B04000000000000000000000000000000000051
:109B1400000000000000000000000E016400FFFFD0
:109B2400FFFF90D0030090D00300ECFF17B7D138AB
:109B340030FB103A409696020A0000000000000034
:109B440000644600006401000000960842656769ED
:109B54006E6E657200004E6F726D616C0000537022
:109B64006F7274000000010202030303030404047F
:109B74000404040404050505050505050505050596
:109B84000505050505060606060606060606060676
:109B94000606060606060606060606060606060661
:109BA4000606060606070707070707070707070746
:109BB4000707070707070707070707070707070731
:109BC4000707070707070707070707070707070721
:109BD4000707070707070707070707070707070711
:109BE40007070707070808080808080808080808F6
:109BF40008080808080808080808080808080808E1
:109C040008080808080808080808080808080808D0
:109C140008080808080808080808080808080808C0
:109C240008080808080808080808080808080808B0
:109C340008080808080808080808080808080808A0
:109C44000808080808080808080808080808080890
:109C54000808080808080808080808080808080880
:069C6400080808080800D2
:00000001FF
/branches/V0.68d CRK HexaLotte/Hex-Files/Flight-Ctrl_MEGA644p_MM3_WALTER_V0_68d.hex
0,0 → 1,2407
:100000000C9426040C9443040C9443040C94430471
:100010000C9443040C9443040C9443040C94430444
:100020000C9443040C94190E0C9443040C94430454
:100030000C94B0190C9443040C9443040C94871949
:100040000C9443040C9443040C944F0D0C942144E1
:100050000C9464090C9443040C947C060C944304A3
:100060000C94F20E0C9443040C94CF180C9443049B
:100070000C94F6430C9443040C9443040A0A0D00B8
:100080004E65757472616C0048656164696E67489D
:100090006F6C64000A0D436F6E74726F6C3A2000CF
:1000A0000A0D537570706F727420666F722047501E
:1000B0005320617420326E642055415254000A0D61
:1000C000537570706F727420666F722047505320A2
:1000D0006174203173742055415254004F4B0A0D06
:1000E000000A0D43616C6962726174696E67206118
:1000F00069722070726573737572652073656E73B3
:100100006F722E2E000A0D43616C69627261746910
:100110006E6720436F6D70617373000A0D537570C5
:10012000706F727420666F7220436F6D70617373AD
:10013000204D6F64756C65204D4D33000A0D4143B1
:1001400043206E6F742063616C69627261746564D0
:1001500021000A0D3D3D3D3D3D3D3D3D3D3D3D3D8B
:100160003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DBF
:100170003D3D000A0D466C69676874436F6E74728A
:100180006F6C0A0D48617264776172653A25642E5E
:1001900025640A0D536F6674776172653A5625645B
:1001A0002E2564256320002E005A5F52616E67651C
:1001B0003A202025346900595F52616E67653A2004
:1001C0002025346900585F52616E67653A2020250A
:1001D0003469004D4D332052616E6765005A5F4FA0
:1001E00066667365743A202025336900595F4F664F
:1001F000667365743A202025336900585F4F666640
:100200007365743A2020253369004D4D33204F66C5
:100210006673657400416C743A2025642E252E3374
:1002200064206D004C61743A2025642E252E3364C1
:10023000252E336420646567004C6F6E3A20256478
:100240002E252E3364252E336420646567005361A8
:1002500074733A202564204669783A203F3F005362
:100260006174733A202564204669783A203344004B
:10027000536174733A202564204669783A203244E9
:1002800000536174733A202564204669783A204E01
:100290006F004E6F206461746120617661696C61EA
:1002A000626C65210048693A253469202043663A2A
:1002B000253469200047733A253469202059613A72
:1002C000253469200050693A2534692020526F3A5C
:1002D000253469200045787465726E436F6E7472C0
:1002E0006F6C20200052616E67653A2533692D25B9
:1002F000336900506F736974696F6E3A20253369F2
:1003000000536574706F696E742020253369005343
:100310006572766F202000506F343A2025336920B3
:10032000506F383A2025336900506F333A20253317
:100330006920506F373A2025336900506F323A20D8
:1003400025336920506F363A2025336900506F31CC
:100350003A2025336920506F353A20253369004F04
:100360006666436F757273653A2025356900486586
:100370006164696E673A20202025356900436F75F6
:100380007273653A2020202025356900436F6D7017
:10039000617373202020202020200052432D4C65C3
:1003A00076656C3A2025356900566F6C7461676517
:1003B0003A2020253569004865696768742025342E
:1003C0006920282533692900526F6C6C2020202574
:1003D0003469202825336929005069746368202016
:1003E00025346920282533692900414343202D20E5
:1003F00053656E736F720059617720202025346930
:1004000020282533692900526F6C6C20202534691F
:1004100020282533692900506974636820253469D0
:100420002028253369290059617720202025346947
:1004300020282533692900526F6C6C2020253469EF
:1004400020282533692900506974636820253469A0
:10045000202825336929004779726F202D205365A4
:100460006E736F720050333A253469202050343A4D
:10047000253469200050313A253469202050323A21
:10048000253469200047733A253469202059613AA0
:10049000253469200050693A2534692020526F3A8A
:1004A000253469200043373A253469202043383AFF
:1004B000253469200043353A253469202043363AF3
:1004C000253469200043333A253469202043343AE7
:1004D000253469200043313A253469202043323ADB
:1004E0002534692000436F6D706173733A202020BA
:1004F00025356900526F6C6C3A2020202020202581
:1005000035690050697463683A2020202020253521
:100510006900417474697475646500486569676849
:100520007420436F6E74726F6C004E6F20004F66C4
:1005300066736574202020203A2535690041697270
:100540002050726573732E3A253569005365742007
:10055000506F696E743A202535690048656967688F
:10056000743A202020202535690028632920486F0F
:100570006C67657220427573730053657474696E9D
:10058000673A202564200048573A5625642E256492
:100590002053573A25642E25642563002B204D698E
:1005A0006B726F4B6F70746572202B005B25695DF9
:1005B000005B25695D000A0D5573696E6720506107
:1005C00072616D6574657220536574202564000A3C
:1005D0000D496E69742E20454550524F4D3A2047C3
:1005E000656E65726174696E672044656661756CDD
:1005F000742D506172616D657465722E2E2E00002F
:10060000008F001E01AD013B02CA025803E60374CD
:100610000402058F051B06A7063307BE074808D24C
:10062000085B09E3096B0AF20A780BFD0B810C04E5
:100630000D860D070E870E060F840F00107B10F538
:10064000106E11E5115B12CF124213B313231492F3
:1006500014FE146A15D3153B16A11605176717C8A3
:100660001727188318DE1837198E19E319361A87D9
:100670001AD61A231B6E1BB61BFD1B411C831CC301
:100680001C001D3C1D751DAB1DE01D121E421E6F82
:100690001E9A1EC31EE91E0D1F2E1F4D1F691F84AB
:1006A0001F9B1FB01FC31FD31FE11FEC1FF51FFBB4
:1006B0001FFF1F00200001020304040506070809AC
:1006C0000A0B0B0C0D0E0F10111112131415151629
:1006D000171818191A1B1B1C1D1D1E1F1F20212156
:1006E00022232324242525262727282829292A2AA6
:1006F0002B2B2C2C2D2D2D2E2E2F2F303030313119
:1007000032323233333334343435353536363637A6
:10071000373737383838393939393A3A3A3A3B3B4A
:100720003B3B3C3C3C3C3C3D3D3D3D3E3E3E3E3EFD
:100730003F3F3F3F3F3F40404040404041414141BB
:100740004141424242424242424343434343434384
:100750004444444444444444454545454545454551
:100760004546464646464646464647474747474724
:1007700047474747474848484848484848484848FE
:1007800049494949494949494949494949494A4AD7
:100790004A4A4A4A4A4A4A4A4A4A4A4A4B4B4B4BB5
:1007A0004B4B4B4B4B4B4B4B4B4B4B4B4B4C4C4C96
:1007B0004C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C79
:1007C0004D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D59
:1007D0004D4D4D4D4D4D4E4E4E4E4E4E4E4E4E4E3F
:1007E0004E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E29
:1007F0004F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F09
:100800004F4F4F4F4F4F4F4F4F4F4F4F4F4F4F0A3D
:100810000D584D696E3A2534642C20584D61783A54
:100820002534642C20594D696E3A2534642C2059A6
:100830004D61783A2534642C205A4D696E3A25343E
:10084000642C205A4D61783A2534640011241FBE6F
:10085000CFEFD0E1DEBFCDBF13E0A0E0B1E0EEE925
:10086000F3E902C005900D92A63BB107D9F718E055
:10087000A6EBB3E001C01D92AD39B107E1F70E94CC
:1008800045040C94CE490C940000CF93DF93F89468
:1008900014B815B8189B08C08BE08093000184B190
:1008A000836084B9289807C08AE08093000184B1EE
:1008B000836084B9289A299884B7877F84BF809100
:1008C00060008861809360001092600080ED97E086
:1008D0009093D4038093D30310922B0710922A078E
:1008E00010926A04109269041092680410926704CE
:1008F0001092660410926504809100018A3011F410
:10090000289801C0289A0E941F180E94020D0E9478
:10091000F60D0E942206809100018B3011F40E9496
:1009200099430E9453190E94D50E0E9478180E9484
:100930006447789410922C0684E480932D0687E017
:1009400080932E062091000184E690E09F938F9380
:1009500084E490E09F938F931F921F92822F6AE00E
:100960000E943649892F99279F938F93822F0E9447
:10097000364999279F938F9383E791E09F938F93B5
:100980001F920E94600A82E591E09F938F931F92CD
:100990000E94600A299A0E941F4084E00E941F3E24
:1009A0002DB73EB7205F3F4F0FB6F8943EBF0FBE46
:1009B0002DBF8050944050F08CE391E09F938F9333
:1009C0001F920E94600A0F900F900F9084EF91E0A9
:1009D0000E943A0DEC01CE010E94430D8823D9F309
:1009E0008BE191E09F938F931F920E94600AE091A8
:1009F000A807FF27EE0FFF1FEA5DF84F8081918166
:100A00000F900F900F9085369105C4F0E091A907E3
:100A1000FF27EE0FFF1FEA5DF84F80819181853639
:100A2000910564F085E091E09F938F931F920E945F
:100A3000600A0E9429460F900F900F908091AE0798
:100A400080FF20C081EE90E09F938F931F920E94C1
:100A5000600A88EE93E00E943A0DEC010E947D113D
:100A60000F900F900F90CE010E94430D8823D9F371
:100A70008CED90E09F938F931F920E94600A0F90DD
:100A80000F900F90809100018A3019F48EEB90E066
:100A900002C080EA90E09F938F931F920E94600AA9
:100AA0000F900F900F900E943F23809100018A3099
:100AB00011F4289801C0289A80ED97E09093D40310
:100AC0008093D30385E58093360684E990E09F9375
:100AD0008F931F920E94600A8091AE070F900F9033
:100AE0000F9082FF03C088E890E002C080E890E0A9
:100AF0009F938F931F920E94600A0F900F900F9008
:100B00008CE790E09F938F931F920E94600A0E944F
:100B1000B81188E893E190936D0380936C030F9074
:100B20000F900F908091D0038823E1F31092D003AF
:100B30000E9491240E941423209100012A3011F474
:100B4000289801C0289A80910301882321F08150C0
:100B50008093030112C01092C2031092C30310923B
:100B60004006109272041092710410927404109254
:100B70007304109276041092750480916C03909126
:100B80006D03892B01F585E090E090936D038093D0
:100B90006C030E949F1880910403909105038F5F5E
:100BA0009F4FF9F4809153048823D9F080E197E2B4
:100BB0009093D4038093D30380E890E0909305034F
:100BC000809304030EC080916C0390916D03019794
:100BD00090936D0380936C032A3011F4289801C020
:100BE000289A8091D003882311F40E94B1070E94B3
:100BF0005908CE010E94430D882309F493CF209118
:100C00000803309109038091BE07992728173907F7
:100C10009CF480910403909105038F5F9F4F61F4D2
:100C200080E797E19093D4038093D30380E093E02F
:100C3000909305038093040384E690E00E943A0DAC
:100C4000EC0170CF9FB7F8948091C1008F778093AB
:100C5000C1008091C1008F7B8093C100589A509849
:100C6000599A519A1092C5008AE28093C4008091EB
:100C7000C00082608093C00088E18093C1008091B1
:100C8000C2008F778093C2008091C2008F7B8093D7
:100C9000C2008091C2008F7D8093C2008091C2000B
:100CA0008F7E8093C2008091C200877F8093C200B4
:100CB0008091C1008B7F8093C1008091C2008460CD
:100CC0008093C2008091C20082608093C20002C003
:100CD0008091C6008091C00087FDFACF8091C1004D
:100CE00080688093C1008091C10080648093C100BE
:100CF0001092BA039FBF08951F920F920FB60F92E2
:100D000011248F939F93EF93FF9380910101882388
:100D1000E1F48091CC039091CD0301969093CD03A3
:100D20008093CC03FC01ED57F94FE081ED3019F0D1
:100D30008639910539F41092CD031092CC0381E0ED
:100D400080930101E093C60004C01092CD0310927D
:100D5000CC03FF91EF919F918F910F900FBE0F9059
:100D60001F901895DC0120E030E040E050E0E3E81F
:100D7000F6E005C08191280F311D4F5F5F4F4A1784
:100D80005B07C1F73F70C90136E0969587953A95A4
:100D9000E1F7835CFD01ED57F94F808311962F73C6
:100DA000235CFD01ED57F94F2083AC57B94F8DE01F
:100DB0008C9310920101809183068093C600089560
:100DC000EF92FF920F931F93CF93DF937A01722FCD
:100DD00093E290938306609384068093850603E0F4
:100DE00010E060E0A6E8B6E046C0F701E60FF11DAE
:100DF00090816F5F715019F4E0E040E00FC0F7019F
:100E0000E60FF11D40816F5F715011F4E0E006C004
:100E1000F701E60FF11DE0816F5F7150892F869514
:100E20008695835C8C935527892F992783709070C2
:100E300024E0880F991F2A95E1F79A0194E03695EE
:100E400027959A95E1F7822B835CED0189834F709A
:100E50005070440F551F440F551F8E2F8295869555
:100E600086958370842B835C8A83EF73E35CEB83CA
:100E70000C5F1F4F1496772309F0B7CFC8010E946B
:100E8000B206DF91CF911F910F91FF90EF900895DF
:100E90001F93CF93DF93EC0170E0A22FBB27129733
:100EA00048C0E42FFF27EA56FA4F30814F5FE42F06
:100EB000FF27EA56FA4F50814F5FE42FFF27EA568B
:100EC000FA4F10814F5FE42FFF27EA56FA4F208137
:100ED0004F5F842F9927A817B90774F15D53FE015E
:100EE000E70FF11D3D53330F330F852F82958F7020
:100EF000382B3083613001F1912F9D537F5FFE01CC
:100F0000E70FF11D71505295507F892F8695869578
:100F1000582B508363506F3F79F07E5FFE01E70FDF
:100F2000F11D9295990F990F907C2D53922B9083E0
:100F30007F5F662309F0B5CFDF91CF911F910895B0
:100F40001F93182F8A3019F48DE00E94A00780911A
:100F5000C00085FFFCCF1093C60080E090E01F9199
:100F6000089580910101882309F4A2C08091B603FD
:100F7000882371F080910101882351F02BE046E332
:100F800056E06091C60387E40E94E0061092B60323
:100F90008091C7039091C8030E94430D882321F4D8
:100FA0008091B8038823B1F080910101882391F0EA
:100FB00022E441E456E06091C60384E40E94E00626
:100FC0001092B80384EF91E00E943A0D9093C80309
:100FD0008093C703609102016F3F89F0462F552728
:100FE00034E0440F551F3A95E1F74C5F5E4F605D6A
:100FF00020E181E40E94E0068FEF8093020190914E
:1010000019079923A1F080910101882381F083E2DF
:1010100080938306909384068DE0809385061092DA
:10102000010110921907809183068093C600809178
:10103000B703882359F180910101882339F10E9477
:10104000C1111092B7033091BC03932F9F5F90930F
:10105000BC03943021F08091BD03882359F02EE128
:1010600046E257E060E084E30E94E0068FEF809361
:10107000BC030CC044E1949FA0011124465E5C4F68
:1010800024E160E0832F8F5C0E94E0068091B90329
:10109000882371F080910101882351F02AE04CE20D
:1010A00056E06091C60386E50E94E0061092B903FF
:1010B00008951F93CF93DF93CDB7DEB722970FB676
:1010C000F894DEBF0FBECDBF8091BA03882309F428
:1010D000F1C08FEF80930301809198058B3609F45E
:1010E00079C08C3688F48336D1F1843630F4813679
:1010F000C1F0823609F0DCC020C0873609F47BC01D
:10110000883609F0D5C042C0813709F478C08137EC
:1011100008F49BC0843709F454C0863709F0C8C06E
:1011200066C02091BB0343E062E0CE0101960E94BD
:101130004807898180930201BBC02091BB0343E033
:101140006BE086E396E00E9448078091F603909159
:101150003806892B8093F60380913F0645C0209185
:10116000BB0343E06BE086E396E00E944807809172
:10117000F60390913806892B8093F60380913F0601
:101180008093190781E08093B80392C02091BB033C
:1011900043E062E0CE0101960E9448078091F60389
:1011A0009981892B8093F6038A818F3F21F481E016
:1011B0008093BD0302C01092BD0381E08093B7030A
:1011C00077C02091BB0343E064E08EEB93E00E9484
:1011D00048076EC02091BB0343E064E082EC93E0DB
:1011E0000E9448078091C5038093190761C081E080
:1011F0008093B9035DC081E08093B60359C020910C
:10120000BB0343E062E0CE0101960E94480789815A
:101210008F3F71F0863010F085E0898389810E94CC
:101220004D3E898126E446EA57E06091C60309C035
:101230001091C60382E00E940E3E26E446EA57E083
:10124000612F855B0E94E00633C02091BB0343E021
:1012500066E486EA97E00E944807809198058B56DD
:101260000E94383E6091D10777278827992724EC80
:1012700039E040E050E00E94174960937203709398
:10128000730380937403909375036091D20777275B
:10129000882799270E9417496093760370937703F4
:1012A00080937803909379030E9410400E947C24DD
:1012B0001092BA0322960FB6F894DEBF0FBECDBFD0
:1012C000DF91CF911F9108951F920F920FB60F9249
:1012D00011241F932F933F934F935F936F937F93AB
:1012E0008F939F93AF93BF93CF93DF93EF93FF932E
:1012F0001091C600809100018A3019F4812F0E945C
:1013000057428091BA03882309F06DC06091C903E8
:10131000662371F4133279F41093960581E080937B
:10132000C90383E290E09093CB038093CA035BC030
:10133000663908F054C0A62FBB272091CA0330910C
:10134000CB031D3069F0AA56BA4F1C936F5F6093B0
:10135000C903210F311D3093CB032093CA0343C02F
:10136000FD01EC56FA4F9081ED01CB56DA4F8881A2
:10137000A901491B5109481B51095F705093CB03C8
:101380004093CA032081CA0156E0969587955A95E5
:10139000E1F7835C8217F1F49881842F8F73835C6B
:1013A0008917C1F481E08093BA036093BB03AA5606
:1013B000BA4F1C9380919805823571F488E190E0D2
:1013C0002CE00FB6F894A895809360000FBE209390
:1013D000600002C01092BA031092C90304C01092B8
:1013E000C9031092BA03FF91EF91DF91CF91BF91A2
:1013F000AF919F918F917F916F915F914F913F91AD
:101400002F911F910F900FBE0F901F901895982F3E
:1014100080911A07813069F48091F503E82FFF2746
:10142000E65EFC4F90838F5F8093F50321E030E010
:1014300005C0892F0E94A007282F3327C9010895CE
:101440001F93182F04C080E30E94070A1150111641
:10145000D4F31F9108951F93182F04C080E20E94B7
:10146000070A11501116D4F31F9108950F931F937B
:10147000CF93DF938C01EB0108C0F8010F5F1F4F82
:10148000E4918E2F0E94070A21972097B1F7DF91F0
:10149000CF911F910F9108950F931F93CF93DF93D7
:1014A0008C01EB0106C0F80181918F010E94070AAF
:1014B00021972097C1F7DF91CF911F910F91089548
:1014C0002F923F924F925F926F927F928F929F9254
:1014D000AF92BF92CF92DF92EF92FF920F931F9342
:1014E000CF93DF93CDB7DEB7E3970FB6F894DEBFA7
:1014F0000FBECDBF29968FAD299780931A07CE01D5
:10150000855B9F4F9D838C832B968EAD9FAD2B97D4
:101510009FA78EA722243324210102C01301240196
:101520000EA51FA502C00F5F1F4FF801F490FF200A
:1015300019F0F5E2FF16B9F7B8018EA59FA5681B53
:10154000790B11F00E94360AFF2009F442C20F5FA6
:101550001F4F1FA70EA71982AC81BD811BAA1AAA13
:101560009FEF99ABEEA5FFA5CF0101969FA78EA790
:10157000B49095E7B91621F08B2D8062883789F4F5
:10158000EBA9E0FF07C02D903D904D905C90139724
:10159000149607C08D919C9111971C0144245524E9
:1015A0001296F0E2BF1621F489818823D9F685C00E
:1015B00083E2B81609F483C09AE2B91621F0EDE28D
:1015C000BE1669F408C0FD011296E081EAABE7FFA0
:1015D000C9CFE195EAABFBA9F061FF7D72C08BE258
:1015E000B81609F46AC09EE2B916B1F52EA53FA55A
:1015F0002F5F3F4FEEA5FFA584918A3221F0B82ED0
:1016000020E030E01BC0FD0112964081518157FF60
:1016100002C04FEF5FEF49AB3FA72EA7A3CFC90191
:1016200003E0880F991F0A95E1F7220F331F280F57
:10163000391F2B0D311D20533040B49031968B2D26
:1016400080538A3060F3FFA7EEA7A90137FF02C0DD
:101650004FEF5FEF49AB8DCFF0E3BF1631F48BA9AD
:1016600084FD80CF80628BAB7DCF8B2D8153893001
:10167000E8F420E030E0C901F3E0880F991FFA9503
:10168000E1F7220F331F280F391F2B0D311D205377
:101690003040EEA5FFA5CF0101969FA78EA7B4907D
:1016A0008B2D80538A3038F32AAB63CF98E6B91676
:1016B00051F4EBA9E460EBAB55CFB98253CFFBA952
:1016C000F860FBAB4FCF8CE6B81621F49BA9916074
:1016D0009BAB48CFBD83AC83E3E6BE1639F41296CC
:1016E000BD83AC8312978C918E8318C1F4E4BF162E
:1016F00039F084E6B81639F099E6B91659F503C001
:10170000EBA9E160EBABFBA9F0FF08C01496BD8329
:10171000AC835E904E903E902E900AC01296BD8390
:10172000AC839E918E911C01442437FC4094542C30
:1017300057FC03C08AE088AB92C050944094309428
:101740002094211C311C411C511C8DE289839AE09C
:1017500098AB85C0EFE4BE1629F0FFE6BF1639F45A
:1017600088E061C09BA991609BABE8E056C0F0E7C0
:10177000BF1671F41296BD83AC839E918E911C01AD
:10178000442455248BA980648BAB78E7B72E5EC0C8
:10179000E3E7BE16D9F51296BD83AC83DE90CE90FA
:1017A000C114D10489F488E28E838EE68F8385E7A5
:1017B00088878CE689878A8789E28B871C8666E022
:1017C000C62ED12CCC0EDD1EF9A9F7FD13C04F2F6C
:1017D000552747FD509560E070E0C6010E94A24782
:1017E000009711F419A90DC08C1919A981174CF48F
:1017F000182F07C0F60101900020E9F731971E2F3E
:101800001C1919824201310140E094C085E5B816E7
:1018100031F095E7B91649F4EAE0E8AB1FC0FBA93F
:10182000F160FBAB8AE088AB19C098E5B91621F0EE
:10183000E8E7BE1609F06EC0FBA9F3FD02C080E127
:10184000F2CF211431044104510419F490E198AB12
:1018500005C0EBA9E064EBABF0E1F8AB198289A914
:1018600087FD03C09BA99F7D9BAB211431044104DC
:10187000510461F4E9A9EE2349F466247724430175
:101880005EE2C52ED12CCC0EDD1E3EC04EE2C42E33
:10189000D12CCC0EDD1EF8A9EF2EFF240027112736
:1018A000C201B101A80197010E9469496A3020F480
:1018B00030E3A32EA60E08C027E5A22EA60E88E5CB
:1018C000B81611F49FEDA922F601A2926F01C20190
:1018D000B101A80197010E94694939014A012E14FA
:1018E0003F044006510618F019012A01D9CFF8A982
:1018F000F83051F48BA983FF07C090E3A91621F0BB
:1019000080E3F60182936F01CE018C19182F125DCE
:1019100049A910C0BB2009F45CC0BE8219824201F3
:10192000310100E096E0C92ED12CCC0EDD1E11E075
:1019300021E005C0212F042F011B07FD00E0898154
:10194000882319F0812F8F5F07C09BA996FD02C0E5
:10195000812F02C0822F8E5FA82EA00EEBA9EE2E43
:10196000FF2480E3482E512C4E205F204114510467
:1019700021F48AA98A190E942B0A8981882329F0D7
:1019800061E070E0CE01019609C0E6FE09C080E387
:101990008A83BB8262E070E0CE0102960E944C0A0C
:1019A000F0E24F16510421F48AA98A190E94200AF4
:1019B000802F0E94200A612F772767FD7095C6014E
:1019C0000E944C0AE4FEAACD8AA98A190E942B0A19
:1019D000A5CDE3960FB6F894DEBF0FBECDBFDF9165
:1019E000CF911F910F91FF90EF90DF90CF90BF901C
:1019F000AF909F908F907F906F905F904F903F90AF
:101A00002F9008959FB7F894809100018A3059F47F
:101A1000529A5A9884B1886184B985B1877E85B914
:101A2000529A5A980AC03F9A479884B1886184B9FB
:101A300085B1877E85B93F9A479884B58F7A84BDF2
:101A400084B5836A84BD85B5877385BD85B5887F78
:101A5000826085BD17BC88E788BD16BC80916E008A
:101A6000897F80936E0080916E00816080936E000C
:101A70009FBF08952091CE033091CF032F5F3F4F3A
:101A8000820F931F08952091CE033091CF03821BC4
:101A9000930B892F992786958074992708951F9213
:101AA0000F920FB60F9211242F933F934F935F9392
:101AB0006F937F938F939F93AF93BF93EF93FF9316
:101AC0008091D50381508093D5038F3FB9F489E08D
:101AD0008093D503809106038F5F81708093060306
:101AE000882319F481E08093D0038091CE039091F4
:101AF000CF0301969093CF038093CE038091D303BD
:101B00009091D403892BB1F08091D3039091D403A9
:101B100001979093D4038093D3038091D303909142
:101B2000D403209104033091050382239323892B4E
:101B3000E9F406C08FEF9FEF9093050380930403B1
:101B4000809100018A3039F404C05A9A05C0479A3E
:101B500003C05A9801C047988091AE07992783FD2A
:101B600002C085FF08C00E94EE4505C080910001BB
:101B70008A3069F7EACFFF91EF91BF91AF919F91C2
:101B80008F917F916F915F914F913F912F910F9026
:101B90000FBE0F901F9018952091CE033091CF0368
:101BA0002F5F3F4F280F391F05C080917A00886C46
:101BB00080937A008091CE039091CF03A901481BB6
:101BC000590B57FFF2CF08952091CE033091CF03E8
:101BD0002F5F3F4F280F391F8091CE039091CF0385
:101BE000A901481B590B57FFF7CF08959FB7F894E9
:101BF000579A5F9AE0EBF0E080818F788083808154
:101C000083688083E1EBF0E080818673808380814C
:101C1000866080838AE08093B3001092B200E0E790
:101C2000F0E080818A7F80838081826080839FBF93
:101C300008951F920F920FB60F921124CF92DF9248
:101C4000EF92FF920F931F932F933F934F935F93C6
:101C50006F937F938F939F93AF93BF93EF93FF9374
:101C6000809107038150809307038F3F09F080C064
:101C70008091B0008093B0008091B0008068809324
:101C8000B0008091910399279093D7038093D60356
:101C90008091DB07E090C80780FF22C0C090D60388
:101CA000D090D70360911D0470911E0480911F0491
:101CB00090912004FF240027112720E830E040E025
:101CC00050E00E948B49C801B7010E94174920E0EB
:101CD00032E040E050E00E948B49C20ED31E21C08A
:101CE000C090D603D090D70360911D0470911E045C
:101CF00080911F0490912004FF240027112720E8E1
:101D000030E040E050E00E948B49C801B7010E94DA
:101D1000174920E032E040E050E00E948B49C21AAF
:101D2000D30AD092D703C092D6032091D603309124
:101D3000D7038091C90799272817390754F02091B4
:101D4000D6033091D7038091CA079927821793074A
:101D500024F49093D7038093D6038091D603909177
:101D6000D7038093B3008091CB078093070306C00D
:101D70008091B0008F738093B0005F98FF91EF91D6
:101D8000BF91AF919F918F917F916F915F914F9193
:101D90003F912F911F910F91FF90EF90DF90CF9087
:101DA0000F900FBE0F901F9018959FB7F89411B821
:101DB00012B88FEF80937E00ECE7F0E080818F71A6
:101DC00080838081807E8083AAE7B0E087E28C9365
:101DD000EBE7F0E08081887F80838C91886C8C9326
:101DE0009FBF08951F920F920FB60F921124DF929A
:101DF000EF92FF920F931F932F933F934F935F9315
:101E00006F937F938F939F93AF93BF93CF93DF9302
:101E1000EF93FF9380917A00877380937A0080918B
:101E2000F303D82ED394D092F303853009F47CC009
:101E3000863090F4823009F440C0833030F4882337
:101E4000F1F0813009F038C22FC0833009F43FC06F
:101E5000843009F031C258C0883009F4B0C08930EC
:101E600038F4863009F471C0873009F025C28AC081
:101E7000893009F4C1C08A3009F01EC29EC1809128
:101E80007800909179009093F2038093F10381E0C0
:101E90008093F4038091E8039091E9030196909375
:101EA000E9038093E803F8C180917800909179006C
:101EB0009093F0038093EF0380C08091780090911D
:101EC00079009093EE038093ED0384E073C1409119
:101ED00008035091090380917800909179009A014C
:101EE000220F331F240F351F63E070E00E94424928
:101EF000260F371F3695279536952795309309037A
:101F00002093080386E056C180911704909118042D
:101F10002091780030917900821B930B9093E1031C
:101F20008093E00387E046C180917800909179002A
:101F30002091150430911604821B930B9093E303B8
:101F40008093E2031092F403A7C1809100012091D5
:101F5000F1033091F2038A3049F480917800909136
:101F60007900820F931F9695879506C0809178001F
:101F700090917900820F931F9093DF038093DE038B
:101F800081E018C1809100012091EF033091F003AE
:101F90008A3049F48091780090917900820F931FE4
:101FA0009695879506C08091780090917900820F70
:101FB000931F9093DD038093DC0382E0FBC080914C
:101FC00000012091ED033091EE038A3049F48091B5
:101FD000780090917900820F931F9695879506C09F
:101FE0008091780090917900820F931F9093DB038A
:101FF0008093DA0385E0DEC060917800709179000B
:10200000E0901904F0901A0400911B0410911C0434
:10201000882777FD8095982F0E945548A801970141
:102020000E94AF470E9438487093E5036093E40331
:102030002091E4033091E503E091E203F091E303A2
:102040008091E0039091E10397FF03C09095819503
:102050009F4F64E070E00E945649EB01CF01F7FF0B
:1020600003C0909581959F4F64E070E00E945649AF
:10207000260F371F2C0F3D1F3093E5032093E403F9
:102080008091E4039091E503029704F160911904B3
:1020900070911A0480911B0490911C0420E030E0A0
:1020A00048E454E40E945F4888230CF03CC06091EF
:1020B000190470911A0480911B0490911C042AE069
:1020C00037ED43EA5CE30E94B04725C08091E4030A
:1020D0009091E5038F5F9F4F34F5609119047091E3
:1020E0001A0480911B0490911C0420E030E046E12A
:1020F00054E40E9462481816B4F460911904709177
:102100001A0480911B0490911C042AE037ED43EAE5
:102110005CE30E94AF476093190470931A048093A4
:102120001B0490931C048091780090917900909307
:10213000D9038093D80320914D0430914E044091EF
:102140004F04509150048091E4039091E503AA2735
:1021500097FDA095BA2F280F391F4A1F5B1F2093A8
:102160004D0430934E0440934F0450935004E0903C
:102170004D04F0904E0400914F0410915004609172
:102180004D0470914E0480914F049091500420E0D2
:1021900034E040E050E00E948B49E21AF30A040B5D
:1021A000150BE0924D04F0924E0400934F041093EF
:1021B000500483E08093F4036FC0609178007091C5
:1021C00079008091EA039091EB03680F791F709377
:1021D000EB036093EA038091EC038F5F8093EC0341
:1021E000853008F469C080917800909179009093CF
:1021F0000F0380930E0380911B0790911C07861B91
:10220000970B2091770430917804821B930B909365
:10221000E7038093E603E0900A03F0900B0300913C
:102220000C0310910D03882777FD8095982FA80146
:102230009701220F331F441F551F2E0D3F1D401FB6
:10224000511F620F731F841F951F24E030E040E090
:1022500050E00E948B4920930A0330930B03409374
:102260000C0350930D0320911B0730911C078091A4
:102270000A0390910B03A0910C03B0910D03281B4E
:10228000390B30937804209377041092EC0310926A
:10229000EB031092EA0310C080917C00807E909145
:1022A000F403892B80937C00DD2079F080917A0003
:1022B000886C80937A0009C01092F4031092F303A3
:1022C00080917C00807E80937C00FF91EF91DF9174
:1022D000CF91BF91AF919F918F917F916F915F91BE
:1022E0004F913F912F911F910F91FF90EF90DF90B1
:1022F0000F900FBE0F901F9018951F9383E00E94C0
:102300000E3E182F853108F01A5017BD84E690E074
:102310000E94CC0D80910E0390910F038255934043
:10232000C8F410E017C017BD82E390E00E94CC0D06
:1023300087EA91E09F938F931F920E94600A809199
:102340000E0390910F030F900F900F9084589340BD
:1023500018F01F5F1A3F38F3612F83E00E94173E89
:1023600010931D078CE291E00E94CC0D1F910895FF
:10237000EAE1F3E080E2819393E0EA36F907D9F7E6
:1023800008959F92AF92BF92CF92DF92EF92FF9209
:102390000F931F938091F603282F3327C901817073
:1023A0009070682F8823A9F08091F703882311F09B
:1023B000815002C080916A038093F703EAE1F3E061
:1023C00080E2819393E0EA36F907D9F78FEF8093A3
:1023D000BC03A9014270507021FF17C09091F70310
:1023E00080916A03981719F41092F70303C09F5F56
:1023F0009093F703EAE1F3E080E2819393E0EA3619
:10240000F907D9F78FEF8093BC03662331F0452B92
:1024100021F01092F70390E004C09091F7039A30F6
:1024200050F481E18093F503892F99279F938F932F
:1024300081EB95E009C080E18093F503892F99270E
:102440009F938F938CEA95E09F938F9381E08F9376
:102450000E94600A0F900F900F900F900F901091B4
:10246000F703173009F408C3183098F4133009F44F
:1024700027C1143038F4113009F469C0123008F063
:10248000C9C01DC0153009F4EBC1163008F0A2C256
:102490006BC11B3009F4E5C31C3038F4193009F462
:1024A00046C31A3008F09FC30CC31D3009F43FC562
:1024B0001D3008F428C41E3009F0B0C571C5109253
:1024C000F5038CE995E09F938F9311E01F930E9491
:1024D000600A84E18093F5032091000184E690E096
:1024E0009F938F9384E490E09F938F931F921F920A
:1024F000822F6AE00E943649892F99279F938F93F4
:10250000822F0E94364999279F938F9387E895E001
:102510009F938F931F930E94600A88E28093F50334
:102520000E94104099279F938F938AE795E09F938D
:102530008F931F930E94600A8CE38093F5038AE6D1
:1025400095E09F938F931F930E94600AD8C3809158
:10255000AE0780FF47C01092F503809177049091F9
:1025600078049F938F938BE595E09F938F931F93B0
:102570000E94600A84E18093F50380917904909130
:102580007A049F938F938CE495E09F938F931F938E
:102590000E94600A88E28093F50380910E03909177
:1025A0000F039F938F938DE395E09F938F931F93DA
:1025B0000E94600A8CE38093F50380911D079927A0
:1025C0009F938F938EE295E09F938F931F930E942A
:1025D000600A8DB79EB744960FB6F8949EBF0FBEA3
:1025E0008DBF21C584E18093F5038AE295E09F9336
:1025F0008F931F930E94600A88E28093F5038BE11A
:1026000095E09F938F931F930E94600A8DB79EB7AA
:102610000696E2CF1092F50382E195E09F938F93A7
:1026200011E01F930E94600A84E18093F50360919A
:102630001D0470911E0480911F049091200420E0DD
:1026400034E040E050E00E948B495F934F933F930A
:102650002F9383E095E09F938F931F930E94600ACE
:1026600088E28093F503609125047091260480919F
:1026700027049091280420E034E040E050E00E94DC
:102680008B495F934F933F932F9384EF94E09F93F5
:102690008F931F930E94600A8CE38093F5038091CF
:1026A0006E0390916F039F938F9385EE94E09F93B9
:1026B0008F931F930E94600A8DB79EB746968CCF6A
:1026C0001092F50380912A0790912B0720912807FB
:1026D000309129079F938F933F932F9385ED94E03B
:1026E0009F938F9311E01F930E94600A84E180936F
:1026F000F50380912E0790912F0720912C073091A0
:102700002D079F938F933F932F9385EC94E09F9396
:102710008F931F930E94600A88E28093F503809153
:1027200032079091330720913007309131079F9302
:102730008F933F932F9385EB94E09F938F931F93F9
:102740000E94600A8CE38093F50380913607909194
:10275000370720913407309135079F938F933F932C
:102760002F9385EA94E036C21092F503E091A70713
:10277000FF27EE0FFF1FEA5DF84F20813181E091C6
:10278000A607FF27EE0FFF1FEA5DF84F80819181BA
:102790003F932F939F938F9385E994E09F938F931B
:1027A00011E01F930E94600A84E18093F503E09199
:1027B000A907FF27EE0FFF1FEA5DF84F2081318147
:1027C000E091A807FF27EE0FFF1FEA5DF84F808119
:1027D00091813F932F939F938F9385E894E09F93EC
:1027E0008F931F930E94600A88E28093F503E09123
:1027F000AB07FF27EE0FFF1FEA5DF84F2081318105
:10280000E091AA07FF27EE0FFF1FEA5DF84F8081D6
:1028100091813F932F939F938F9385E794E09F93AC
:102820008F931F930E94600A8CE38093F503E091DD
:10283000AD07FF27EE0FFF1FEA5DF84F20813181C2
:10284000E091AC07FF27EE0FFF1FEA5DF84F808194
:1028500091813F932F939F938F9385E694E0BAC124
:102860001092F50387E594E09F938F9311E01F93F7
:102870000E94600A0F900F900F90809100018A30A3
:1028800009F04AC084E18093F50340910B04509114
:102890000C048091DA039091DB0320910B043091BA
:1028A0000C045F934F93821B930B9F938F9387E44A
:1028B00094E09F938F931F930E94600A88E2809315
:1028C000F50340910D0450910E048091DC0390912A
:1028D000DD0320910D0430910E045F934F93821B12
:1028E000930B9F938F9387E394E09F938F931F9312
:1028F0000E94600A8CE38093F50380910F0490910D
:10290000100420917807309179079F938F933F931C
:102910002F9387E294E055C084E18093F503809182
:102920000B0490910C042091DA033091DB03E091C9
:102930000B04F0910C0462E070E00E9456497F9312
:102940006F932E1B3F0B3F932F9387E194E09F9350
:102950008F931F930E94600A88E28093F503809111
:102960000D0490910E042091DC033091DD03E09181
:102970000D04F0910E0462E070E00E9456497F93CE
:102980006F932E1B3F0B3F932F9387E094E09F9311
:102990008F931F930E94600A8CE38093F5038091CC
:1029A0000F0490911004209178073091790762E02C
:1029B00070E00E9456497F936F933F932F9387EF68
:1029C00093E09F938F931F930E94600A8DB79EB7E9
:1029D000459602CE1092F5038AEE93E09F938F9373
:1029E00091E0F92EFF920E94600A84E18093F50342
:1029F00080911504909116042091E2033091E30335
:102A00009F938F933F932F9389ED93E09F938F93A1
:102A1000FF920E94600A88E28093F5038091170478
:102A2000909118042091E0033091E1039F938F93DC
:102A30003F932F9388EC93E09F938F93FF920E9494
:102A4000600A8CE38093F5036091190470911A0475
:102A500080911B0490911C0400916D0710916E07EA
:102A60000E9438487F936F931F930F9387EB93E0F7
:102A70009F938F93FF9241C184E18093F5038091EE
:102A80000803909109039F938F9389EA93E09F93A2
:102A90008F9311E01F930E94600A88E28093F503F0
:102AA00080910304909104049F938F938BE993E0AA
:102AB0009F938F931F930E94600A8DB79EB70A96CB
:102AC0008BCD1092F5038CE893E09F938F9311E0E8
:102AD0001F930E94600A84E18093F5038091700344
:102AE000909171039F938F938DE793E09F938F93C2
:102AF0001F930E94600A88E28093F50380916E0321
:102B000090916F039F938F938EE693E09F938F93A3
:102B10001F930E94600A8CE38093F5038091510417
:102B2000909152049F938F938FE593E06EC2109221
:102B3000F50380915D0490915E049F938F93809143
:102B40005504909156049F938F938DE493E09F9347
:102B50008F9311E01F930E94600A84E18093F50334
:102B600080915F04909160049F938F9380915704AC
:102B7000909158049F938F938BE393E09F938F934F
:102B80001F930E94600A88E28093F503809161049C
:102B9000909162049F938F938091590490915A046D
:102BA0009F938F9389E293E09F938F931F930E944B
:102BB000600A8CE38093F503809163049091640430
:102BC0009F938F9380915B0490915C049F938F936C
:102BD00087E193E09F938F931F930E94600A8DB7C4
:102BE0009EB74C96F9CC1092F5038FE093E09F933B
:102BF0008F9311E01F930E94600A84E18093F50394
:102C00008091910399279F938F9381E093E09F9305
:102C10008F931F930E94600A88E28093F50380914E
:102C2000D6039091D7039F938F9383EF92E09F9366
:102C30008F931F930E94600A8CE38093F503809129
:102C4000CA0799279F938F938091C90799279F93CC
:102C50008F9385EE92E09F938F931F930E94600A5B
:102C6000B8CC1092F50385ED92E09F938F9311E01D
:102C70001F930E94600A84E18093F50380913A06D5
:102C8000992787FD90959F938F9380913906992777
:102C900087FD90959F938F9385EC92E09F938F9300
:102CA0001F930E94600A88E28093F50380913B069F
:102CB000992787FD90959F938F9380913C06992744
:102CC0009F938F9385EB92E09F938F931F930E9426
:102CD000600A8CE38093F5038091400699279F93C7
:102CE0008F9380913D06992787FD90959F938F93B1
:102CF00085EA92E09F938F931F930E94600A8DB79D
:102D00009EB7489669CC80916405882371F410922F
:102D1000F50382E992E09F938F9381E08F930E9465
:102D2000600A0F900F900F907EC1209166052230AF
:102D300071F02330B1F0809165052223E1F4109207
:102D4000F50399279F938F9381E892E01BC010921F
:102D5000F5038091650599279F938F9380E792E013
:102D600011C01092F5038091650599279F938F9369
:102D70008FE592E007C01092F50399279F938F93F8
:102D80008EE492E09F938F9381E08F930E94600A7C
:102D90000F900F900F900F900F90A0906705B0903C
:102DA0006805C0906905D0906A05C601B50120E8A4
:102DB00036E948E950E00E948B497B018C0184E1AF
:102DC0008093F503C801B70120E137E240E050E00D
:102DD0000E948B492AE030E040E050E00E948B499D
:102DE000C90137FF03C0909581959F4F9F938F93A3
:102DF000C801B70120E137E240E050E00E948B4972
:102E0000C90137FF03C0909581959F4F9F938F9382
:102E1000C601B50120E836E948E950E00E948B4937
:102E20003F932F9389E392E09F938F9381E0982EB5
:102E30009F920E94600AA0906B05B0906C05C090B4
:102E40006D05D0906E05C601B50120E836E948E968
:102E500050E00E948B497B018C0188E28093F5034E
:102E6000C801B70120E137E240E050E00E948B4901
:102E70002AE030E040E050E00E948B49C90137FF72
:102E800003C0909581959F4F9F938F93C801B70181
:102E900020E137E240E050E00E948B49C90137FF52
:102EA00003C0909581959F4F9F938F93C601B50165
:102EB00020E836E948E950E00E948B493F932F9380
:102EC00084E292E09F938F939F920E94600AE09029
:102ED0006F05F090700500917105109172058CE3FB
:102EE0008093F503C801B70128EE33E040E050E0DD
:102EF0000E948B499B0177FF03C0309521953F4F7E
:102F00003F932F93C801B70128EE33E040E050E033
:102F10000E948B493F932F9385E192E09F938F937B
:102F20009F920E94600A8DB79EB7499655CB10922A
:102F3000F5038AE092E09F938F9311E01F930E9424
:102F4000600A84E18093F50380918A08992787FDC0
:102F500090959F938F938BEF91E09F938F931F9307
:102F60000E94600A88E28093F50380918B0899277C
:102F700087FD90959F938F938CEE91E09F938F9315
:102F80001F930E94600A8CE38093F50380918C0864
:102F9000992787FD90959F938F938DED91E035C094
:102FA0001092F50383ED91E09F938F9311E01F93AF
:102FB0000E94600A84E18093F50380918D089091CE
:102FC0008E089F938F9385EC91E09F938F931F932F
:102FD0000E94600A88E28093F50380918F089091A7
:102FE00090089F938F9387EB91E09F938F931F930C
:102FF0000E94600A8CE38093F50380919108909180
:1030000092089F938F9389EA91E09F938F931F93E8
:103010000E94600A8DB79EB74296DECA1150109387
:103020006A031092F7031092F6031F910F91FF901D
:10303000EF90DF90CF90BF90AF909F90089587B1B1
:103040008C6087B94298439808954091F803509155
:10305000F9034431510500F14C3D5105E8F420914C
:10306000FE033091FF03C901880F991F841795074C
:1030700010F4429A01C042982F5F3F4F3093FF03F4
:103080002093FE03215030402417350730F0109272
:10309000FF031092FE0301C0429A4091FA0350913F
:1030A000FB034431510510F4439808954C3D5105FC
:1030B000E8F42091FC033091FD03C901880F991FAA
:1030C0008417950710F4439A01C043982F5F3F4F30
:1030D0003093FD032093FC03215030402417350723
:1030E00030F01092FD031092FC0308954398089568
:1030F0009FB7F8943998389A88B1836088B9E9EB1A
:10310000F0E080818C7F80838AE28093B8009FBF4B
:10311000089585EA8093BC00089584E98093BC00FB
:1031200008958093BB0085E88093BC00089585ECEA
:103130008093BC00089585E88093BC000895EF92C9
:10314000FF920F931F938CEBE82EF12C84E9F7018B
:103150008083109200040BEB10E0F80180818093D3
:1031600001041092010480E8F70180831092BD00F1
:103170001092BA00F80110821092B9001092B800B3
:103180000E94781885EAF7018083F801108285E8AB
:10319000F70180831F910F91FF90EF9008951F9288
:1031A0000F920FB60F9211248F939F93EF93FF937B
:1031B000809100048F5F8093000481508330E9F197
:1031C000843028F4813081F0823078F508C0853071
:1031D000D9F18530B8F1863009F04FC03EC08091FA
:1031E0000104880F8E5A12C0809101048F5F809372
:1031F00001048150813081F0813030F0823079F0EB
:10320000833009F047C00EC0809164078093BB00F3
:1032100085E88093BC003EC080917A07F7CF80910B
:103220006F07F4CF80918507F1CF8091010484303E
:1032300010F41092000485EAECCF80910204880F0C
:103240008D5AE4CF85ECE5CFE0910204FF27809111
:10325000BB00E25EF84F8083DBCF80910204E82F51
:10326000FF279091BB00EE5DF84F90838F5F8093B6
:103270000204843010F01092020484E98093BC00B0
:10328000109200048AE090E090936D0380936C03A9
:1032900010920104FF91EF919F918F910F900FBEBB
:1032A0000F901F9018959FB7F89456985E9A8AB120
:1032B00080638AB98BB18F7C8BB9809100018A3091
:1032C00011F4539A5B98809180008C7080938000F9
:1032D00080918100837E8093810080918100836C46
:1032E00080938100809182008F738093820080910F
:1032F0006F00897F80936F0080916F00816280935F
:103300006F0010920404109203049FBF08951F924F
:103310000F920FB60F9211242F933F938F939F9389
:1033200020918600309187008091090490910A04D1
:103330008217930721F410920404109203048091E1
:1033400086009091870090930A04809309049F91CE
:103350008F913F912F910F900FBE0F901F90189556
:103360001F920F920FB60F9211240F931F932F935A
:103370003F934F935F936F937F938F939F93AF93FD
:10338000BF93CF93DF93EF93FF932091860030910B
:1033900087008091050490910604281B390B8091C9
:1033A00086009091870090930604809305044FE176
:1033B000213434076CF0809103049091040462E09E
:1033C00070E00E9456497093040460930304BBC0EC
:1033D000C9018D5494400091070410910804835F43
:1033E0009A4160F40430110514F010926B0381E0EF
:1033F00090E09093080480930704A5C00E30110557
:103400000CF0A1C0C9018B5F9040845B914008F033
:1034100073C0E901C25DD140F801EE0FFF1FEA5D04
:10342000F84F808191819E01281B390BC90137FF1C
:1034300003C0909581959F4F069784F48091030473
:1034400090910404883C91054CF480910304909180
:1034500004040A969093040480930304F801EE0F89
:10346000FF1FEA5DF84F20813181C901880F991F44
:10347000820F931F8C0F9D1F64E070E00E945649DD
:103480009B01CE010196861797071CF4215030400E
:1034900006C021976C177D0714F42F5F3F4F809172
:1034A000030490910404E801CC0FDD1F833C9105D7
:1034B000BCF0FE01EA5DF84F80819181A901481BB3
:1034C000590BCA0163E070E00E945649CB01880F96
:1034D000991F860F971FCC5BD84F9983888304C0B0
:1034E000CC5BD84F19821882F801EE0FFF1FEA5DFE
:1034F000F84F318320830CC0809103049091040421
:1035000062E070E00E9456497093040460930304E3
:10351000F8013196F0930804E0930704E530F105D3
:1035200011F45D9A06C05D98E630F10511F45C9ADD
:1035300001C05C98809100018A3029F4379711F41A
:103540005B9A01C05B988091030490910404892BDD
:1035500049F080910304909104040197909304042E
:1035600080930304FF91EF91DF91CF91BF91AF91D1
:103570009F918F917F916F915F914F913F912F918B
:103580001F910F910F900FBE0F901F9018952F92C3
:103590003F924F925F926F927F928F929F92AF92E3
:1035A000BF92CF92DF92EF92FF920F931F93CF9330
:1035B000DF93CDB7DEB722970FB6F894DEBF0FBE0C
:1035C000CDBF80910F04909110042091DE033091C3
:1035D000DF03821B930B9093790780937807809188
:1035E000DC039091DD0320910D0430910E04821BC9
:1035F000930B90937507809374078091DA039091F1
:10360000DB0320910B0430910C04821B930B9093ED
:10361000770780937607809176079091770790934C
:103620007806809377068091740790917507909340
:103630007C0680937B06E0907B07F0907C0760918E
:10364000E2037091E3030027F7FC0095102F882711
:1036500077FD8095982F2CE030E040E050E00E940C
:103660001749E60EF71E081F191FC801B70122E00F
:1036700030E040E050E00E948B4930937C0720937B
:103680007B07E0907F07F09080076091E0037091E6
:10369000E1030027F7FC0095102F882777FD809520
:1036A000982F2CE030E040E050E00E941749E60EF1
:1036B000F71E081F191FC801B70122E030E040E0E3
:1036C00050E00E948B493093800720937F076091E0
:1036D0006D0770916E072091E4033091E503882710
:1036E00077FD8095982F442737FD4095542F620F22
:1036F000731F841F951F22E030E040E050E00E94DD
:103700008B4930936E0720936D07209145043091CB
:10371000460440914704509148046091E20370913F
:10372000E303CB01880F991F860F971F880F991FFE
:10373000880F991FAA2797FDA095BA2F280F391F28
:103740004A1F5B1F2093450430934604409347046F
:10375000509348042091490430914A0440914B040D
:1037600050914C046091E0037091E103CB01880F0C
:10377000991F860F971F880F991F880F991FAA27D7
:1037800097FDA095BA2F280F391F4A1F5B1F209362
:10379000490430934A0440934B0450934C042091C5
:1037A000410430914204409143045091440480917B
:1037B000780790917907AA2797FDA095BA2F280F2F
:1037C000391F4A1F5B1F20934104309342044093EA
:1037D00043045093440420917F042A83222309F058
:1037E0006BC080918004882309F066C08091AE0789
:1037F00086FF62C06091310470913204809133047D
:1038000090913404E0907807F0907907A0909303AA
:10381000BB24CC24DD2420E030E140E050E00E94D5
:103820008B490027F7FC0095102FCA01B901A801A8
:1038300097010E941749A60195010E94174920E0AF
:1038400038E040E050E00E948B492093C10430935F
:10385000C2044093C3045093C4046091390470912E
:103860003A0480913B0490913C04E0907807F090FA
:10387000790720E030E140E050E00E948B490027CA
:10388000F7FC0095102FCA01B901A80197010E9409
:103890001749A60195010E94174920E038E040E051
:1038A00050E00E948B492093BD043093BE044093A6
:1038B000BF045093C00410C01092BD041092BE0407
:1038C0001092BF041092C0041092C1041092C2045E
:1038D0001092C3041092C4048091740790917507EC
:1038E0002090C1043090C2044090C3045090C4049E
:1038F000820D931D90937507809374070091740750
:1039000010917507A090BD04B090BE04C090BF0494
:10391000D090C00480919403682E77248824992441
:10392000C601B501A40193010E94174920E032E0CD
:1039300040E050E00E948B49020F131F109375075F
:103940000093740720913D0430913E0440913F0460
:10395000509140048091740790917507AA2797FDB4
:10396000A095BA2F280F391F4A1F5B1F20933D04D3
:1039700030933E0440933F04509340042091390417
:1039800030913A0440913B0450913C04809174077B
:103990009091750760917B0470917C04861B970B56
:1039A000AA2797FDA095BA2F280F391F4A1F5B1F22
:1039B0002093390430933A0440933B0450933C04E1
:1039C0008091390490913A04A0913B04B0913C0459
:1039D000E0907603F09077030091780310917903DB
:1039E000E816F9060A071B0704F580E197E2A0E054
:1039F000B0E08E199F09A00BB10B8093390490930E
:103A00003A04A0933B04B0933C0480913904909114
:103A10003A04A0913B04B0913C0480933D04909300
:103A20003E04A0933F04B0934004209139043091A8
:103A30003A0440913B0450913C0488279927DC01CB
:103A40008E199F09A00BB10B281739074A075B078E
:103A500004F580EF98EDAFEFBFEFE80EF91E0A1FF7
:103A60001B1FE0923904F0923A0400933B04109338
:103A70003C048091390490913A04A0913B04B091A8
:103A80003C0480933D0490933E04A0933F04B09384
:103A900040048091DC039091DD030F9734F488E1BA
:103AA0009CEF90937507809374078091DC0390914D
:103AB000DD03079734F480E398EF909375078093C4
:103AC00074079091000199839A30A9F48091DC03E6
:103AD0009091DD03835F934034F088EE93E0909300
:103AE0007507809374078091DC039091DD038A5FF2
:103AF0009340DCF014C08091DC039091DD03855E7F
:103B0000974034F088EE93E09093750780937407A4
:103B10008091DC039091DD03835F974034F080ED6A
:103B200097E0909375078093740780917607909142
:103B300077078A199B0990937707809376070091FE
:103B4000760710917707C201B101A40193010E9489
:103B5000174920E032E040E050E00E948B49021B10
:103B6000130B10937707009376072091350430915B
:103B70003604409137045091380480917607909133
:103B80007707AA2797FDA095BA2F280F391F4A1F3C
:103B90005B1F2093350430933604409337045093D1
:103BA0003804209131043091320440913304509113
:103BB0003404809176079091770760917D0470912D
:103BC0007E04861B970BAA2797FDA095BA2F280F76
:103BD000391F4A1F5B1F20933104309332044093F6
:103BE0003304509334048091310490913204A091B5
:103BF0003304B0913404E0907203F09073030091A9
:103C0000740310917503E816F9060A071B0704F5FB
:103C100080E197E2A0E0B0E08E199F09A00BB10B04
:103C20008093310490933204A0933304B09334040E
:103C30008091310490913204A0913304B091340406
:103C40008093350490933604A0933704B0933804DE
:103C50002091310430913204409133045091340466
:103C600088279927DC018E199F09A00BB10B281713
:103C700039074A075B0704F580EF98EDAFEFBFEF18
:103C8000E80EF91E0A1F1B1FE0923104F092320465
:103C900000933304109334048091310490913204E2
:103CA000A0913304B091340480933504909336048A
:103CB000A0933704B09338048091DA039091DB032A
:103CC0000F9734F488E19CEF909377078093760701
:103CD0008091DA039091DB03079734F480E398EF47
:103CE000909377078093760799819A30A9F4809111
:103CF000DA039091DB03835F934034F088EE93E026
:103D000090937707809376078091DA039091DB0395
:103D10008A5F9340DCF014C08091DA039091DB035A
:103D2000855E974034F088EE93E090937707809318
:103D300076078091DA039091DB03835F974034F03C
:103D400080ED97E0909377078093760780917A00D3
:103D5000886C80937A008091410490914204A091F4
:103D60004304B091440480932D0490932E04A093B7
:103D70002F04B09330048091310490913204A091CB
:103D80003304B091340480931D0490931E04A093D7
:103D90001F04B09320048091390490913A04A091BB
:103DA0003B04B0913C048093250490932604A09397
:103DB0002704B09328048091350490913604A09193
:103DC0003704B09138048093210490932204A09387
:103DD0002304B093240480913D0490913E04A0916B
:103DE0003F04B09140048093290490932A04A09347
:103DF0002B04B0932C048091AE0787FF6BC02A81FF
:103E0000222309F067C080918004882309F062C0F2
:103E10008091760790917707893C91057CF02091FD
:103E20007607309177078091760790917707880F12
:103E3000991F880F991F2052334015C08091760733
:103E40009091770788539F4FA4F420917607309183
:103E500077078091760790917707880F991F880FD1
:103E6000991F205E3C4F820F931F9093770780939A
:103E700076078091740790917507893C91057CF0D5
:103E800020917407309175078091740790917507A0
:103E9000880F991F880F991F2052334015C08091B9
:103EA00074079091750788539F4FA4F4209174076D
:103EB000309175078091740790917507880F991F4D
:103EC000880F991F205E3C4F820F931F90937507B8
:103ED0008093740722960FB6F894DEBF0FBECDBF55
:103EE000DF91CF911F910F91FF90EF90DF90CF90D6
:103EF000BF90AF909F908F907F906F905F904F900A
:103F00003F902F9008950F931F930AE710E0F80158
:103F10008081877380838091DA039091DB03909393
:103F20007707809376078091DC039091DD0390936F
:103F30007507809374078091DE039091DF0390935F
:103F40007907809378076091E2037091E3038827F3
:103F500077FD8095982F2CE030E040E050E00E9403
:103F6000174970937C0760937B076091E003709121
:103F7000E103882777FD8095982F0E941749709359
:103F8000800760937F078091E4039091E50390930D
:103F90006E0780936D07F8018081886C8083609143
:103FA000D10777278827992724EC39E040E050E0B3
:103FB0000E94174960937203709373038093740394
:103FC000909375036091D2077727882799270E94DD
:103FD00017496093760370937703809378039093E7
:103FE00079031F910F9108951F938091030490917D
:103FF0000404813A91050CF415C38091B1078B3FFD
:1040000098F08B3F19F4809155040EC08C3F19F441
:104010008091570409C08D3F19F48091590404C060
:104020008E3F21F480915B04809381038091810312
:10403000882319F41092810304C08F3F11F48093F8
:1040400081038091B0078B3F98F08B3F19F48091EA
:1040500055040EC08C3F19F48091570409C08D3F60
:1040600019F48091590404C08E3F21F480915B04BF
:104070008093800380918003882319F41092800339
:1040800005C0843618F084E6809380038091B207DF
:104090008B3F98F08B3F19F4809155040EC08C3FF4
:1040A00019F48091570409C08D3F19F48091590487
:1040B00004C08E3F21F480915B0480938203809141
:1040C0008203882319F41092820305C0843618F005
:1040D00084E6809382038091B4078B3F98F08B3FF6
:1040E00019F4809155040EC08C3F19F48091570447
:1040F00009C08D3F19F48091590404C08E3F21F40A
:1041000080915B048093830380918303882319F457
:104110001092830304C08F3F11F480938303809136
:10412000BB078B3F98F08B3F19F4809155040EC06C
:104130008C3F19F48091570409C08D3F19F4809188
:10414000590404C08E3F21F480915B048093840362
:1041500080918403882319F41092840304C08F3F54
:1041600011F4809384038091BC078B3F98F08B3FC0
:1041700019F4809155040EC08C3F19F480915704B6
:1041800009C08D3F19F48091590404C08E3F21F479
:1041900080915B0480938503809185038B3010F4BC
:1041A0008AE002C08F3F11F4809385038091BD07A0
:1041B0008B3F98F08B3F19F4809155040EC08C3FD3
:1041C00019F48091570409C08D3F19F48091590466
:1041D00004C08E3F21F480915B048093860380911C
:1041E0008603882319F41092860304C08F3F11F4CC
:1041F000809386038091C2078B3F98F08B3F19F420
:10420000809155040EC08C3F19F48091570409C069
:104210008D3F19F48091590404C08E3F21F48091A0
:104220005B048093880380918803882319F410929B
:10423000880304C08F3F11F4809388038091C307E3
:104240008B3F98F08B3F19F4809155040EC08C3F42
:1042500019F48091570409C08D3F19F480915904D5
:1042600004C08E3F21F480915B0480938903809188
:104270008903882319F41092890304C08F3F11F435
:10428000809389038091C4078B3F98F08B3F19F48A
:10429000809155040EC08C3F19F48091570409C0D9
:1042A0008D3F19F48091590404C08E3F21F4809110
:1042B0005B0480938A0380918A03882319F4109207
:1042C0008A0304C08F3F11F480938A038091C5074D
:1042D0008B3F98F08B3F19F4809155040EC08C3FB2
:1042E00019F48091570409C08D3F19F48091590445
:1042F00004C08E3F21F480915B0480938B038091F6
:104300008B03882319F410928B0304C08F3F11F4A0
:1043100080938B038091C6078B3F98F08B3F19F4F5
:10432000809155040EC08C3F19F48091570409C048
:104330008D3F19F48091590404C08E3F21F480917F
:104340005B0480938C0380918C03882319F4109272
:104350008C0304C08F3F11F480938C038091D607A7
:104360008B3F98F08B3F19F4809155040EC08C3F21
:1043700019F48091570409C08D3F19F480915904B4
:1043800004C08E3F21F480915B0480938D03809163
:104390008D03882319F410928D0304C08F3F11F40C
:1043A00080938D038091D7078B3F98F08B3F19F452
:1043B000809155040EC08C3F19F48091570409C0B8
:1043C0008D3F19F48091590404C08E3F21F48091EF
:1043D0005B0480938E0380918E03882319F41092DE
:1043E0008E0304C08F3F11F480938E038091D80711
:1043F0008B3F98F08B3F19F4809155040EC08C3F91
:1044000019F48091570409C08D3F19F48091590423
:1044100004C08E3F21F480915B0480938F038091D0
:104420008F03882319F410928F0304C08F3F11F477
:1044300080938F038091D9078B3F98F08B3F19F4BD
:10444000809155040EC08C3F19F48091570409C027
:104450008D3F19F48091590404C08E3F21F480915E
:104460005B048093900380919003882319F4109249
:10447000900304C08F3F11F4809390038091C7078D
:104480008B3F98F08B3F19F4809155040EC08C3F00
:1044900019F48091570409C08D3F19F48091590493
:1044A00004C08E3F21F480915B048093910380913E
:1044B0009103882319F41092910304C08F3F11F4E3
:1044C000809391038091CC078B3F98F08B3F19F438
:1044D000809155040EC08C3F19F48091570409C097
:1044E0008D3F19F48091590404C08E3F21F48091CE
:1044F0005B048093920380919203882319F41092B5
:10450000920304C08F3F11F4809392038091CF07F0
:104510008B3F98F08B3F19F4809155040EC08C3F6F
:1045200019F48091570409C08D3F19F48091590402
:1045300004C08E3F21F480915B04809393038091AB
:104540009303882319F41092930304C08F3F11F44E
:10455000809393038091D0078B3F98F08B3F19F4A1
:10456000809155040EC08C3F19F48091570409C006
:104570008D3F19F48091590404C08E3F21F480913D
:104580005B048093940380919403882319F4109220
:10459000940304C08F3F11F4809394038091D50756
:1045A0008B3F98F08B3F19F4809155040EC08C3FDF
:1045B00019F48091570409C08D3F19F48091590472
:1045C00004C08E3F21F480915B0480939503809119
:1045D0009503882319F41092950304C08F3F11F4BA
:1045E0008093950310918803612F772767FD70955D
:1045F000872F972F0E94554817FF06C020E030E014
:1046000040E853E40E94B04727E137EB41ED58E31F
:104610000E94CF4860937C0370937D0380937E0358
:1046200090937F031F91089580915304882301F58F
:1046300010927A071092640710926F071092850704
:104640008091BE03882311F0809364078091BF039B
:10465000882311F080937A078091C003882311F09A
:10466000809385078091C103882311F080936F07A1
:1046700010920004109201040E948918089510926B
:10468000160410921504109218041092170480E07A
:1046900090E0A0E0B0E08093190490931A04A093F6
:1046A0001B04B0931C0410920C0410920B04109283
:1046B0000E0410920D041092100410920F04109228
:1046C0009303109294030E94831F84E690E00E945B
:1046D000CC0D0E94831F8091AE0780FF10C0809197
:1046E0000E0390910F03875B934038F480910E0383
:1046F00090910F038E5E924010F40E947D11809184
:10470000DA039091DB0390930C0480930B04809167
:10471000DC039091DD0390930E0480930D0480914F
:10472000DE039091DF039093100480930F04809137
:104730000D0490910E0490931204809311048091C3
:104740000B0490910C04909314048093130484E060
:104750000E941F3E8050944058F180917F079091B5
:10476000800797FF03C0909581959F4F6CE070E0A4
:104770000E945649709318046093170480917B0738
:1047800090917C0797FF03C0909581959F4F6CE0B7
:1047900070E00E945649709316046093150460916E
:1047A000D8037091D903882777FD8095982F17C07B
:1047B00084E00E941F3E909316048093150486E0C7
:1047C0000E941F3E909318048093170488E00E9473
:1047D0001F3EAA2797FDA095BA2FBC01CD010E94CC
:1047E00055486093190470931A0480931B049093A6
:1047F0001C0410923104109232041092330410926F
:10480000340410923504109236041092370410923A
:1048100038041092390410923A0410923B0410921A
:104820003C0410923D0410923E0410923F041092FA
:1048300040041092410410924204109243041092DA
:104840004404109277071092760710927507109221
:104850007407109279071092780780910A0390915B
:104860000B03A0910C03B0910D0390931C07809350
:104870001B071092E7031092E60310924D0410926A
:104880004E0410924F041092500480916E03909148
:104890006F03909371038093700382E390E0909391
:1048A000D4038093D3036091D10777278827992772
:1048B00024EC39E040E050E00E9417496093720315
:1048C0007093730380937403909375036091D20780
:1048D0007727882799270E9417496093760370935A
:1048E0007703809378039093790310927B0310925F
:1048F0007A030E94EE3A08951F93182F0EC08091FC
:104900005304882361F484E690E09093D403809369
:10491000D3038AEF90E00E94E40D115080F71F91BD
:1049200008952F923F924F925F926F927F928F9253
:104930009F92AF92BF92CF92DF92EF92FF920F932E
:104940001F93CF93DF93CDB7DEB7A1970FB6F8943F
:10495000DEBF0FBECDBF0E94C71A299A20916B04FB
:1049600030916C043C832B8337FF02C01C821B8276
:104970008091030490910404883791050CF073C072
:1049800080910301882399F4809104039091050399
:104990008F5F9F4F61F488E99AE39093D4038093EB
:1049A000D30380E09CE090930503809304038091FF
:1049B000A7049091A804009731F001979093A80460
:1049C0008093A70404C01092530410925404809161
:1049D00000018A3011F4289A01C028988091A2041D
:1049E0009091A304815D9740D8F18091BF07682F13
:1049F00077277C836B8381E080935404E091A60742
:104A00002E2F3327220F331FF901EC5BF84F118251
:104A10001082A091A707BB27AA0FBB1FFD01EC5B6B
:104A2000F84F11821082E091A9074E2F5527440FAD
:104A3000551FCA018C5B984FFC01118210822A5DC0
:104A4000384FF90111821082AA5DB84F11961C925D
:104A50001E924A5D584FDA0111961C921E92BDC3F8
:104A600010925304BAC380910304909104048739CF
:104A700091050CF4B2C3109254048091C00722E354
:104A8000829FC00111249093A8048093A704EB8116
:104A9000FC81B9976CF08091A2049091A304FFEF80
:104AA0008F3F9F0749F101969093A3048093A2043E
:104AB0008091A2049091A304883C910528F02B8159
:104AC0003C8128323105C4F41092B9041092BA0422
:104AD0001092BB041092BC041092B5041092B6045C
:104AE0001092B7041092B80410924104109242043C
:104AF00010924304109244042091550430915604BE
:104B00008091AA07E82FFF27EE0FFF1FEA5DF84FFD
:104B10008081918182599F4F281739071CF42F5F9C
:104B20003F4F0CC08081918182599F4F821793071C
:104B30004CF42115310531F02150304030935604AA
:104B40002093550420915704309158048091AB076D
:104B5000E82FFF27EE0FFF1FEA5DF84F808191815C
:104B600082599F4F281739071CF42F5F3F4F0CC005
:104B70008081918182599F4F821793074CF42115B0
:104B8000310531F0215030403093580420935704C0
:104B90002091590430915A048091AC07E82FFF27E7
:104BA000EE0FFF1FEA5DF84F8081918182599F4F80
:104BB000281739071CF42F5F3F4F0CC0808191816B
:104BC00082599F4F821793074CF42115310531F01C
:104BD0002150304030935A042093590420915B04B3
:104BE00030915C048091AD07E82FFF27EE0FFF1F87
:104BF000EA5DF84F8081918182599F4F28173907CC
:104C00001CF42F5F3F4F0CC08081918182599F4FD0
:104C1000821793074CF42115310531F021503040B3
:104C200030935C0420935B0420915D0430915E041A
:104C3000809138079091390782599F4F281739077B
:104C40001CF42F5F3F4F0EC08091380790913907B9
:104C500082599F4F821793074CF42115310531F08B
:104C60002150304030935E0420935D0420915F0416
:104C70003091600480913A0790913B0782599F4F91
:104C8000281739071CF42F5F3F4F0EC080913A0759
:104C900090913B0782599F4F821793074CF421153F
:104CA000310531F0215030403093600420935F048F
:104CB000209161043091620480913C0790913D07FE
:104CC00082599F4F281739071CF42F5F3F4F0EC0A2
:104CD00080913C0790913D0782599F4F821793071F
:104CE0004CF42115310531F02150304030936204ED
:104CF00020936104209163043091640480913E0705
:104D000090913F0782599F4F281739071CF42F5F56
:104D10003F4F0EC080913E0790913F0782599F4FB1
:104D2000821793074CF42115310531F021503040A2
:104D30003093640420936304809155049091560449
:104D400097FF05C010925604109255040AC08F3F79
:104D5000910539F034F08FEF90E0909356048093F2
:104D60005504809157049091580497FF05C0109204
:104D70005804109257040AC08F3F910539F034F05F
:104D80008FEF90E0909358048093570480915904DA
:104D900090915A0497FF05C010925A04109259043A
:104DA0000AC08F3F910539F034F08FEF90E0909377
:104DB0005A048093590480915B0490915C0497FF9E
:104DC00005C010925C0410925B040AC08F3F9105ED
:104DD00039F034F08FEF90E090935C0480935B04A3
:104DE00080915D0490915E0497FF05C010925E046F
:104DF00010925D040AC08F3F910539F034F08FEFB7
:104E000090E090935E0480935D0480915F049091A4
:104E1000600497FF05C01092600410925F040AC0FE
:104E20008F3F910539F034F08FEF90E0909360045C
:104E300080935F04809161049091620497FF05C0A4
:104E400010926204109261040AC08F3F910539F0FC
:104E500034F08FEF90E0909362048093610480912E
:104E600063049091640497FF05C01092640410924B
:104E700063040AC08F3F910539F034F08FEF90E062
:104E80009093640480936304E091A807FF27EE0FDA
:104E9000FF1FEA5DF84F80819181813591050CF407
:104EA000F0C080915304882309F0EBC08091A907DA
:104EB000E82FFF27EE0FFF1FEA5DF84F80819181F9
:104EC0008C3491050CF4A1C08091A6048F5F80936F
:104ED000A604893C08F4D5C01092A6042998109223
:104EE000A3041092A2048091A607282F3327F9016A
:104EF000EE0FFF1FEA5DF84F8081918187349105A5
:104F00009CF4E091A707FF27EE0FFF1FEA5DF84F23
:104F10000190F081E02DF7FF03C0F095E195FF4F80
:104F2000E734F1050CF46AC08091A707682F772752
:104F3000DB01AA0FBB1FAA5DB84F8D919C91119701
:104F4000873491053CF0F901EE0FFF1FEA5DF84F41
:104F5000808191818D919C918734910564F0F90154
:104F6000EE0FFF1FEA5DF84F808191818734910534
:104F700014F042E001C041E0FB01EE0FFF1FEA5DCB
:104F8000F84F80819181863491055CF4F901EE0F30
:104F9000FF1FEA5DF84F80819181873491050CF005
:104FA00043E0FB01EE0FFF1FEA5DF84F8081918126
:104FB0008A5B9F4F5CF4F901EE0FFF1FEA5DF84F2B
:104FC00080819181873491050CF044E0660F771F52
:104FD0006A5D784FDB018D919C918A5B9F4F5CF4F9
:104FE000220F331F2A5D384FF90180819181863469
:104FF00091050CF445E0842F0E942F3E0E94104042
:105000000E944D3E0E943F2335C080819181855B87
:105010009F4FACF58091A6048F5F8093A604893CD6
:1050200080F11092A60429986FEF7FEF84E00E9430
:10503000273E1092A3041092A2040E943F23609185
:1050400015047091160484E00E94273E60911704B5
:105050007091180486E00E94273E609119047091B7
:105060001A0480911B0490911C040E94384888E027
:105070000E94273E0E9410400E947C2402C0109291
:10508000A604E091A807FF27EE0FFF1FEA5DF84F87
:10509000808191818B5A9F4F0CF09FC0E091A907AE
:1050A000FF27EE0FFF1FEA5DF84F80819181855B3E
:1050B0009F4F0CF06BC08091A5048F5F8093A50477
:1050C000893C08F465C088EC8093A50481E090E0F9
:1050D0009093A3048093A20481E0809353041092E0
:1050E000B1041092B2041092B3041092B40410925E
:1050F000410410924204109243041092440410920E
:10510000310410923204109233041092340410923D
:10511000390410923A0410923B0410923C0480919E
:105120001D0490911E04A0911F04B091200480934F
:10513000350490933604A0933704B09338048091DB
:10514000250490912604A0912704B091280480930F
:105150003D0490933E04A0933F04B093400410920A
:10516000B9041092BA041092BB041092BC041092BD
:10517000B5041092B6041092B7041092B80480914E
:10518000AE0785FF05C00E94653A02C01092A504D3
:10519000E091A907FF27EE0FFF1FEA5DF84F80811E
:1051A00091818C349105BCF08091A4048F5F809331
:1051B000A404893C90F088EC8093A4041092A3048A
:1051C0001092A204109253048091AE0785FF05C08F
:1051D0000E94EB3A02C01092A40480916B038150AC
:1051E00080936B0380916B038F3F29F0809154046F
:1051F000882309F464C30E94F41F20906504309052
:1052000066048091A607C82EDD24D601AA0FBB1F15
:10521000AD014A5D584FFA010190F081E02DFF8FFA
:10522000EE8F8091B507882E9924AC5BB84F0D9016
:10523000BC91A02DBD8FAC8F8091B607282F33274E
:105240003B8F2A8F60916704709168047A83698329
:105250008091A707E82EFF24C701880F991FDC0162
:10526000AA5DB84F0D90BC91A02DBF8BAE8B8C5B0F
:10527000984FDC018D919C919D8B8C8BE091A907BF
:10528000AE2FBB27AA0FBB1FAA5DB84F0D90BC91D4
:10529000A02DBB8BAA8BE091A807FF27EE0FFF1F65
:1052A000EA5DF84FA080B180E8E7F0E0AE0EBF1EE7
:1052B000B0926C04A0926B04DA018D919C912091C4
:1052C0006D0430916E0497FF03C0909581959F4FB8
:1052D000281739078CF4FA018081918190936E042C
:1052E00080936D0497FF0EC0909581959F4F90938A
:1052F0006E0480936D0406C02150304030936E04DC
:1053000020936D04F701EE0FFF1FEA5DF84F8081D7
:10531000918120916F043091700497FF03C09095A4
:1053200081959F4F2817390784F48081918190934C
:10533000700480936F0497FF0EC0909581959F4FE6
:105340009093700480936F0406C0215030403093D6
:10535000700420936F0410918503612F772767FDF8
:105360007095872F972F0E94554817FF06C020E0A1
:1053700030E040E853E40E94B04720E030E040E2F3
:1053800051E40E94B04720E030E040E85BE30E9437
:10539000CF482B013C016093810770938207809373
:1053A00083079093840710918603612F772767FD09
:1053B0007095872F972F0E94554817FF06C020E051
:1053C00030E040E853E40E94B04720E030EE4BE28A
:1053D00057E40E94F24760937007709371078093BF
:1053E0007207909373072091C303222311F40C9446
:1053F00059398AE090E09093D4038093D303E22F4D
:10540000FF27E2FF09C080918903482F5527440FE9
:10541000551F440F551F10C0E3FD03C040E050E08E
:105420000BC0809189039927880F991F880F991FB6
:1054300044275527481B590B209171043091720461
:10544000C901F3E0880F991FFA95E1F7821B930BCE
:10545000840F951F68E070E00E94564979A368A305
:105460007093720460937104E4FF09C08091890312
:10547000482F5527440F551F440F551F0FC0E5FDFA
:1054800002C00C946F39809189039927880F991F66
:10549000880F991F44275527481B590B20917304E7
:1054A00030917404C90163E0880F991F6A95E1F790
:1054B000821B930B840F951F68E070E00E94564991
:1054C0008B0170937404609373048091C203282F3E
:1054D000332723FF03C082E390E004C022FF07C00C
:1054E0008EEC9FEF909376048093750404C0109225
:1054F00076041092750421FF09C080917A0390917F
:105500007B03019690937B0380937A0324FF09C069
:1055100080917A0390917B03019790937B03809312
:105520007A03C101880F991F820D931D4E8D5F8DE7
:10553000489D9001499D300D589D300D1124820FDA
:10554000931F64E070E00E9456491B016C8D7D8DB5
:10555000AA8DBB8D6A9FC0016B9F900D7A9F900DA5
:105560001124280E391E88A199A168E070E00E94DC
:105570005649260E371E30926604209265048981B2
:105580009A81880F991FE981FA818E0F9F1F4E899A
:105590005F89489D9001499D300D589D300D112423
:1055A000820F931F64E070E00E9456499B016C8952
:1055B0007D89AA8DBB8D6A9FC0016B9F900D7A9FDC
:1055C000900D1124280F391FC80168E070E00E9477
:1055D0005649260F371F3093680420936704409183
:1055E000750450917604EA89FB894E1B5F0B50933A
:1055F0006A04409369048091400680FF54C0809102
:105600008903813808F44FC080913906992787FDB6
:105610009095BC01689DC001699D900D789D900D8D
:105620001124280E391E3092660420926504809160
:105630003A06992787FD9095DC01A89DC001A99D98
:10564000900DB89D900D1124280F391F30936804D8
:105650002093670480913B06992787FD9095480F1A
:10566000591F50936A044093690420913D063327E3
:1056700027FD30958091B3079927FC012E9FC0012B
:105680002F9F900D3E9F900D112490937B0380934C
:105690007A0380913C0699278A159B0524F4909300
:1056A0006C0480936B048091AE0782FF0CC080E095
:1056B00090E0A0E0B0E08093700790937107A09312
:1056C0007207B093730720E030E040E050E0C30180
:1056D000B2010E945F48882364F480E090E0A0E07B
:1056E000B0E08093810790938207A0938307B093E3
:1056F000840720E030E040E050E060917007709156
:10570000710780917207909173070E945F48882308
:1057100064F480E090E0A0E0B0E0809370079093A4
:105720007107A0937207B0937307F701EE0FFF1F85
:10573000EA5DF84F208131818091CD07482F5527B0
:105740004217530744F48091DA0782FF04C081E0D6
:105750008093810415C080918104882389F0F7012A
:10576000EE0FFF1FEA5DF84F208131818091CE0757
:10577000BA01681B71092617370714F410928104C7
:10578000F701EE0FFF1FEA5DF84F808191816627D8
:105790007727641B750B8617970744F48091DA0707
:1057A00083FF04C081E08093820417C0809182044B
:1057B000882399F0EE0CFF1C86E297E0E80EF91EB4
:1057C000D7012D913C918091CE079927841B950B91
:1057D0008217930714F410928204F601EE0FFF1F54
:1057E000EA5DF84F808191814817590744F4809110
:1057F000DA0780FF04C081E08093840415C08091A3
:105800008404882389F0F601EE0FFF1FEA5DF84F4C
:10581000208131818091CE07FA01E81BF1092E1712
:105820003F0714F410928404F601EE0FFF1FEA5DA7
:10583000F84F808191818617970744F48091DA07A9
:1058400081FF04C081E08093830417C080918304AA
:10585000882399F0CC0CDD1C26E237E0C20ED31E63
:10586000D6012D913C918091CE079927841B950BF1
:105870008217930714F41092830480918104882383
:1058800021F480918204882321F081E080938004B8
:1058900002C01092800480918404882321F48091B6
:1058A0008304882351F081E080937F041092800468
:1058B00010928104109282040EC010927F04809195
:1058C0008004882311F40C94733984E690E090935B
:1058D000D4038093D3038091CC079927EB81FC817B
:1058E0008E179F0714F49C838B8380918F039927D5
:1058F0009093F9038093F8038091900399279093F4
:10590000FB038093FA030E94251880915404882396
:1059100009F46BC010926A04109269041092660434
:1059200010926504109268041092670480E090E081
:10593000A0E0BFE38093810790938207A093830741
:10594000B093840786EA9BE9A4E4BBE380937007E5
:1059500090937107A0937207B0937307109280041D
:1059600010927F0410926E0410926D0410927004D5
:1059700010926F048091690790916A07A0916B075C
:10598000B0916C0720911D0430911E0440911F04BA
:1059900050912004820F931FA41FB51F80936907A5
:1059A00090936A07A0936B07B0936C07809165078B
:1059B00090916607A0916707B09168072091250430
:1059C000309126044091270450912804820F931FA0
:1059D000A41FB51F8093650790936607A093670780
:1059E000B09368071D860C947B398091690790916C
:1059F0006A07A0916B07B0916C0720911D0430914C
:105A00001E0440911F0450912004820F931FA41F75
:105A1000B51F8093690790936A07A0936B07B093B3
:105A20006C078091650790916607A0916707B09118
:105A30006807209125043091260440912704509155
:105A40002804820F931FA41FB51F809365079093AE
:105A50006607A0936707B0936807F0917F04FD87FE
:105A6000FF2311F00C94D23980918004882311F027
:105A70000C94D2390C947B3980916F04909170040E
:105A80004097A4F0C201B10123E030E040E050E0D3
:105A90000E948B4939014A01C601B50123E030E07B
:105AA00040E050E00E948B4979018A01E091A9070A
:105AB000FF27EE0FFF1FEA5DF84F0190F081E02D08
:105AC000F7FF03C0F095E195FF4F7A97A4F0C4016A
:105AD000B30123E030E040E050E00E948B493901FF
:105AE0004A01C801B70123E030E040E050E00E94E5
:105AF0008B4979018A0121E26216710481049104C3
:105B000034F0B0E26B2E712C812C912C11C030EE50
:105B100063163FEF73063FEF83063FEF930644F4AF
:105B2000A0EE6A2EAFEF7A2EAFEF8A2EAFEF9A2E4D
:105B300041E2E416F1040105110534F0F0E2EF2E24
:105B4000F12C012D112D11C050EEE5165FEFF50679
:105B50005FEF05075FEF150744F4E0EEEE2EEFEF81
:105B6000FE2EEFEF0E2FEFEF1E2F8091310490915C
:105B70003204A0913304B091340486199709A8091E
:105B8000B9098093310490933204A0933304B09305
:105B900034048091390490913A04A0913B04B0916F
:105BA0003C048E199F09A00BB10B8093390490938C
:105BB0003A04A0933B04B0933C048091E803909195
:105BC000E9038F3F910509F008F4A6C46D856623AB
:105BD00009F03EC480918004882309F039C46091A3
:105BE000690770916A0780916B0790916C0720E0BC
:105BF00031E040E050E00E948B49209369073093E8
:105C00006A0740936B0750936C076091650770912A
:105C10006607809167079091680720E031E040E0D7
:105C200050E00E948B4920936507309366074093AC
:105C3000670750936807E090BA07FF2400271127F1
:105C40002091450430914604409147045091480406
:105C5000C801B7010E94174920E031E040E050E060
:105C60000E948B4920934504309346044093470497
:105C7000509348042091490430914A0440914B04C8
:105C800050914C04C801B7010E94174920E031E04F
:105C900040E050E00E948B492093490430934A042D
:105CA00040934B0450934C046091690770916A07CC
:105CB00080916B0790916C072091450430914604C8
:105CC0004091470450914804621B730B840B950B61
:105CD0006093AD047093AE048093AF049093B004CE
:105CE000E090D307FF2400271127A80197010E9405
:105CF0008B49CA01B90120E031E040E050E00E9448
:105D00008B49690130937E0420937D04609165077F
:105D10007091660780916707909168072091490408
:105D200030914A0440914B0450914C04621B730B18
:105D3000840B950B6093A9047093AA048093AB0421
:105D40009093AC04A80197010E948B4939014A0144
:105D5000CA01B90120E031E040E050E00E948B49E7
:105D6000890130937C0420937B0480916D04909191
:105D70006E044097BCF480916F049091700440973A
:105D80008CF4E091A907FF27EE0FFF1FEA5DF84FA3
:105D90000190F081E02DF7FF03C0F095E195FF4FF2
:105DA0007A9794F0C60162E070E00E9456497093C1
:105DB0007E0460937D04C80162E070E00E94564951
:105DC00070937C0460937B04E0902104F0902204A3
:105DD000009123041091240480911D0490911E04CD
:105DE000A0911F04B0912004E81AF90A0A0B1B0BBA
:105DF000E092AD04F092AE040093AF041093B004AF
:105E00008091350490913604A0913704B091380404
:105E10008E199F09A00BB10B809335049093360423
:105E2000A0933704B0933804A0902904B0902A04BA
:105E3000C0902B04D0902C048091250490912604CE
:105E4000A0912704B0912804A81AB90ACA0ADB0A4B
:105E5000A092A904B092AA04C092AB04D092AC0460
:105E600080913D0490913E04A0913F04B091400484
:105E70008A199B09AC09BD0980933D0490933E04A7
:105E8000A0933F04B0934004609145047091460490
:105E900080914704909148042AE130E040E050E0CE
:105EA0000E948B49309366062093650660914904F1
:105EB00070914A0480914B0490914C042AE130E0A7
:105EC00040E050E00E948B493093680620936706BB
:105ED000F0926A06E0926906B0926C06A0926B0698
:105EE0006091690770916A0780916B0790916C07C8
:105EF0002AE130E040E050E00E948B4930936E068A
:105F000020936D0660916507709166078091670721
:105F1000909168072AE130E040E050E00E948B4910
:105F20003093700620936F0670927E0660927D0615
:105F300060907B0470907C04C301880F991F9301CB
:105F400053E0220F331F5A95E1F7820F931F90936E
:105F5000800680937F0681E090E090939304809385
:105F60009204109298041092990410929A0410923C
:105F70009B048091690790916A07A0916B07B0918B
:105F80006C0720918A0430918B0440918C045091CD
:105F90008D04281B390B4A0B5B0B57FF07C050952C
:105FA0004095309521953F4F4F4F5F4F20523E44D3
:105FB000404050400CF0C1C081E0E81680E1F80696
:105FC00080E0080780E018070CF452C0809191042B
:105FD000882309F449C0D801C7014CE0B595A795BD
:105FE000979587954A95D1F701969093930480935E
:105FF0009204D801C70133E0B595A7959795879589
:106000003A95D1F78093980490939904A0939A04B9
:10601000B0939B0489589341A040B04064F088E855
:1060200093E1A0E0B0E08093980490939904A0934A
:106030009A04B0939B0460919804709199048091A4
:106040009A0490919B0420E031E040E050E00E94EF
:106050008B4980917D0490917E04820F931F9093D1
:106060007E0480937D0466C081E08093910462C0C9
:1060700010929104F0E0EF16F0EFFF06FFEF0F072C
:10608000FFEF1F070CF056C080919004882309F49D
:106090004DC088279927DC018E199F09A00BB10BF1
:1060A0002CE0B595A795979587952A95D1F70196F8
:1060B0009093930480939204C801B70128E030E0E4
:1060C00040E050E00E948B4920939804309399045B
:1060D00040939A0450939B0428573C4E4F4F5F4F78
:1060E00064F488E79CEEAFEFBFEF80939804909341
:1060F0009904A0939A04B0939B04609198047091C2
:10610000990480919A0490919B0420E031E040E052
:1061100050E00E948B4980917D0490917E04820F13
:10612000931F90937E0480937D040BC081E0809345
:10613000900407C01092900404C01092930410922F
:1061400092048091D407882E992480919204909192
:1061500093048816990624F49092930480929204F2
:1061600071E0E71674E0F70670E0070770E01707C4
:106170005CF080910B0490910C042091920430917A
:106180009304820F931F13C080E0E8168CEFF8068B
:106190008FEF08078FEF180774F480910B0490912C
:1061A0000C042091920430919304821B930B9093E2
:1061B0000C0480930B0481E090E09093930480930F
:1061C00092041092940410929504109296041092E6
:1061D00097048091650790916607A0916707B09139
:1061E000680720918604309187044091880450917B
:1061F0008904281B390B4A0B5B0B57FF07C05095CE
:106200004095309521953F4F4F4F5F4F20523E4470
:10621000404050400CF0B9C0A1E0AA16A0E1BA0677
:10622000A0E0CA06A0E0DA060CF44EC080918F040C
:10623000882309F445C0D601C5010CE0B595A795A2
:10624000979587950A95D1F701969093930480933B
:106250009204D601C50113E0B595A795979587954A
:106260001A95D1F78093940490939504A093960483
:10627000B093970489589341A040B04064F088E8F7
:1062800093E1A0E0B0E08093940490939504A093F0
:106290009604B09397046091940470919504809152
:1062A00096049091970420E031E040E050E00E9495
:1062B0008B49620E731E70927C0460927B0462C0F4
:1062C00081E080938F045EC010928F04F0E0AF16DF
:1062D000F0EFBF06FFEFCF06FFEFDF060CF052C076
:1062E00080918E04882309F449C088279927DC010E
:1062F0008A199B09AC09BD09FCE0B595A79597954E
:106300008795FA95D1F70196909393048093920420
:10631000C601B50128E030E040E050E00E948B4922
:1063200020939404309395044093960450939704DB
:1063300028573C4E4F4F5F4F64F488E79CEEAFEF19
:10634000BFEF8093940490939504A0939604B09328
:1063500097046091940470919504809196049091B3
:10636000970420E031E040E050E00E948B49620E4B
:10637000731E70927C0460927B040BC081E080935A
:106380008E0407C010928E0404C0109293041092E1
:10639000920480919204909193048816990624F4B3
:1063A000909293048092920471E0A71674E0B7066D
:1063B00070E0C70670E0D7065CF080910D04909104
:1063C0000E042091920430919304820F931F13C006
:1063D00080E0A8168CEFB8068FEFC8068FEFD806BE
:1063E00074F480910D0490910E04209192043091E8
:1063F0009304821B930B90930E0480930D04809161
:1064000094049091950490937A06809379068091F4
:106410000B0490910C049093720680937106809106
:106420000D0490910E042091110430911204821BEE
:10643000930B9C01E3E0220F331FEA95E1F7880FED
:10644000991F820F931F909374068093730608C060
:1064500010927C0410927B0410927E0410927D04B2
:1064600020E030E040E050E06091700770917107EB
:1064700080917207909173070E945F48882341F4CE
:1064800010927C0410927B0410927E0410927D0482
:106490008091690790916A07A0916B07B0916C0792
:1064A00080938A0490938B04A0938C04B0938D0402
:1064B0008091650790916607A0916707B091680782
:1064C0008093860490938704A0938804B0938904F2
:1064D000109245041092460410924704109248040A
:1064E0001092490410924A0410924B0410924C04EA
:1064F0001092690710926A0710926B0710926C074E
:10650000109265071092660710926707109268074D
:106510001092E9031092E8038090690490906A0455
:10652000940197FE04C02227332728193909253101
:10653000310554F08091AE0784FD06C081E090E003
:1065400090939D0480939C04E090B7075901CC245C
:10655000B7FCC094DC2CB401882777FD8095982F78
:106560002E2D3327442755270E9417499B01AC0144
:10657000C601B5010E94174920E032E040E050E03A
:106580000E948B4989019A01FF24E89CC001E99C83
:10659000900DF89C900D112464E070E00E94564923
:1065A000600F711F882777FD8095982F6093B10445
:1065B0007093B2048093B3049093B4042091410487
:1065C000309142044091430450914404261B370B00
:1065D000480B590B209341043093420440934304E9
:1065E000509344048091410490914204A09143044B
:1065F000B09144048155934CA040B04064F080E5D4
:1066000093ECA0E0B0E08093410490934204A09307
:106610004304B09344048091410490914204A091BA
:106620004304B0914404805B9C43AF4FBF4F64F47C
:1066300080EB9CE3AFEFBFEF809341049093420463
:10664000A0934304B09344048091AE07992783FD3F
:1066500002C085FF99C08091850481508093850494
:106660008F3F51F581E3809385040E94A644909367
:106670006F0380936E0380916E0390916F0397FF79
:1066800005C0109252041092510416C080916E03FE
:1066900090916F032091700330917103821B930BD3
:1066A000845E9D4F68E671E00E945649845B90408D
:1066B000909352048093510480916D0490916E04E4
:1066C0008B3491050CF049C080916F049091700457
:1066D0008B3491050CF041C080919C0490919D04F5
:1066E000892B81F010929D0410929C0480916E037E
:1066F00090916F03909371038093700310925204F2
:1067000010925104009141041091420420914304DD
:10671000309144044091510450915204809184037B
:106720009927BC01469FC001479F900D569F900D31
:10673000112460E170E00E945649882777FD80951A
:10674000982F060F171F281F391F0093410410931D
:10675000420420934304309344048091AE0785FFA4
:1067600013C080918D038093C90480918E03809320
:10677000CD0480915404882311F086EE02C08091EC
:1067800059040E94403D02C00E94EE3A80919E044E
:10679000815080939E048F3F09F07AC088E18093F6
:1067A0009E0460911D0470911E0480911F049091BD
:1067B0002004E090BA07FF2400271127A8019701C1
:1067C0000E948B4930934406209343066091250430
:1067D000709126048091270490912804A8019701C4
:1067E0000E948B49309346062093450680917B0793
:1067F00090917C07909348068093470680917F078D
:106800009091800790934A0680934906809178077B
:106810009091790790934C0680934B068091770472
:106820009091780490934E0680934D0660914D04AC
:1068300070914E0480914F049091500420E032E01A
:1068400040E050E00E948B493093500620934F0661
:1068500080916E0390916F0390935406809353063A
:1068600080910803909109039093560680935506F2
:1068700080910304909104049093580680935706E6
:1068800080916D0790916E079093640680936306E4
:1068900080917F048823A9F0609176077091770733
:1068A000882777FD8095982F0E9455482091810771
:1068B0003091820740918307509184070E94CF480E
:1068C00032C060911D0470911E0480911F0490914C
:1068D0002004E0907607F09077070E9455482091B9
:1068E00070073091710740917207509173070E94B1
:1068F000CF485B016C010027F7FC0095102FC80101
:10690000B7010E945548209181073091820740913C
:106910008307509184070E94CF489B01AC01C601B8
:10692000B5010E94B0470E94384870937707609382
:106930007607809180048823A9F060917407709194
:106940007507882777FD8095982F0E9455482091DC
:1069500081073091820740918307509184070E94FC
:10696000CF4832C06091250470912604809127049D
:1069700090912804E0907407F09075070E945548A4
:106980002091700730917107409172075091730701
:106990000E94CF485B016C010027F7FC0095102F87
:1069A000C801B7010E9455482091810730918207A4
:1069B00040918307509184070E94CF489B01AC010E
:1069C000C601B5010E94B0470E9438487093750710
:1069D000609374076091780770917907A0902D04F7
:1069E000B0902E04C0902F04D09030048091700796
:1069F00090917107A0917207B09173078E879F875E
:106A0000A88BB98B882777FD8095982F0E945548D1
:106A10007B018C01609181077091820780918307CF
:106A2000909184079B01AC010E94B0479B01AC018F
:106A3000C801B7010E94CF487B018C01C601B50196
:106A40000E9455482E853F85488959890E94CF4824
:106A500020E030E040E05FE30E94CF489B01AC01C2
:106A6000C801B7010E94B0470E9438487093790767
:106A70006093780760912504709126048091270423
:106A8000909128040E9455482E853F854889598950
:106A90000E94CF480E94384870937606609375062E
:106AA000A0916704B0916804B98FA88FB093820653
:106AB000A0938106809174079091750790937C064E
:106AC00080937B068091760790917707815098405C
:106AD00034F080E098E09093770780937607809178
:106AE0007607909177078050984F34F480E098EFC4
:106AF000909377078093760780917407909175073C
:106B00008150984034F080E098E09093750780932E
:106B1000740780917407909175078050984F34F4F2
:106B200080E098EF909375078093740780917807C1
:106B3000909179078150984034F080E098E09093EC
:106B40007907809378078091780790917907805032
:106B5000984F34F480E098EF90937907809378070A
:106B60008091AE07282F332720FFDBC0809154048B
:106B7000882309F0D6C08091810321FF0EC08233A3
:106B800010F58091770490917804449790937A045B
:106B9000809379041092A10419C020917A03309156
:106BA0007B03280F311D8091B3079927BC01269FD5
:106BB000C001279F900D369F900D1124449790930C
:106BC0007A048093790481E08093A1040091770492
:106BD00010917804E0907904F0907A04E016F106C0
:106BE0000CF09FC08091A104882309F49AC0B09052
:106BF0008203C090E603D090E703A09080036091E9
:106C00004D0470914E0480914F049091500420E007
:106C100032E040E050E00E948B49CA01B901209166
:106C200083033327442755270E94174920E230E089
:106C300040E050E00E948B4949012333310524F0A4
:106C400062E3862E912C07C02E5C3F4F24F45EEC4D
:106C5000852E5FEF952E0E191F098B2D9927DC01CC
:106C60000A9FC0010B9F900D1A9F900D112460E1A7
:106C700070E00E9456490B811C81061B170B8A2D60
:106C80009927FC01CE9EC001CF9E900DDE9E900DF7
:106C9000112468E070E00E945649061B170B2091F2
:106CA0009F043091A004C90144E0880F991F4A95C0
:106CB000E1F7821B930B08191909800F911F60E1FE
:106CC00070E00E9456497093A00460939F048091E5
:106CD000AF079927681779078CF42B813C81281717
:106CE00039072CF09093A00480939F0407C04B8138
:106CF0005C815093A00440939F040DC080919F0439
:106D00009091A0046B817C816817790724F47093BB
:106D1000A00460939F0480919F049091A0049C83A1
:106D20008B838091B907682E77240CEE802E0FEFAD
:106D3000902E860C971CAB81BC81A815B9050CF46C
:106D40004D019092520680925106E0917807F091A1
:106D500079070091B1041091B2042091B3043091ED
:106D6000B404B4E18B1691041CF41E821D8225C06C
:106D7000C40162E070E00E9456499F01201B310B64
:106D8000CB01261737070CF4C901709561957F4F29
:106D9000681779070CF4BC01C301881999096817B1
:106DA00079070CF4CB01F401E619F709FE83ED83B2
:106DB000E817F90714F49E838D83209176073091AC
:106DC000770740906504509066048091C5049091C7
:106DD000C604481A590A2419350930937E072093AE
:106DE0007D0720E030E040E050E06E857F858889B7
:106DF00099890E945F488823F1F1E0901D04F0908A
:106E00001E0400911F04109120046091B904709138
:106E1000BA048091BB049091BC040E9455485B0168
:106E20006C01C801B7010E9455482E853F854889ED
:106E300059890E94CF487B018C01B201882777FDD8
:106E40008095982F0E9455489B01AC01C801B7015D
:106E50000E94AF479B01AC01C601B5010E94B0473B
:106E60000E9438486093B9047093BA048093BB04BD
:106E70009093BC041CC020917D0730917E0744276D
:106E800037FD4095542F8091B9049091BA04A09198
:106E9000BB04B091BC04820F931FA41FB51F809345
:106EA000B9049093BA04A093BB04B093BC0480913E
:106EB000B9049091BA04A091BB04B091BC0481388C
:106EC000FEE39F07F0E0AF07F0E0BF072CF080E89B
:106ED0009EE3A0E0B0E009C08058914CAF4FBF4F97
:106EE00064F480E891ECAFEFBFEF8093B904909326
:106EF000BA04A093BB04B093BC0460917D07709169
:106F00007E0780917C0390917D03A0917E03B091D8
:106F10007F0389879A87AB87BC87882777FD809511
:106F2000982F0E9455487B018C016091B9047091A3
:106F3000BA048091BB049091BC040E9455489B0107
:106F4000AC0169857A858B859C850E94CF489B0121
:106F5000AC01C801B7010E94B0470E9438485B01EC
:106F60006C012B0180919503E82EFF240027112747
:106F70008D819E8197FF03C0909581959F4F62E020
:106F800070E00E9456499B01280D391D442737FDAA
:106F90004095542FC801B7010E94174920E430E002
:106FA00040E050E00E948B491901421653060CF450
:106FB0009501442455244218530858864F8242169E
:106FC00053060CF429018091740790917507209164
:106FD000C7043091C804A88DB98DA21BB30BB9A307
:106FE000A8A38A1B9B0B909363078093620720E002
:106FF00030E040E050E06E857F85888999890E9465
:107000005F48882309F440C0E0902504F0902604EE
:1070100000912704109128046091B5047091B60482
:107020008091B7049091B8040E9455485B016C01AF
:10703000C801B7010E9455482E853F854889598966
:107040000E94CF487B018C01E8A1F9A1BF018827EC
:1070500077FD8095982F0E9455489B01AC01C8018F
:10706000B7010E94AF479B01AC01C601B5010E9468
:10707000B0470E9438486093B5047093B60480937B
:10708000B7049093B8041CC0209162073091630745
:10709000442737FD4095542F8091B5049091B60454
:1070A000A091B704B091B804820F931FA41FB51F1D
:1070B0008093B5049093B604A093B704B093B8043A
:1070C0008091B5049091B604A091B704B091B80432
:1070D0008138FEE39F07F0E0AF07F0E0BF072CF038
:1070E00080E89EE3A0E0B0E009C08058914CAF4F2B
:1070F000BF4F64F480E891ECAFEFBFEF8093B5042D
:107100009093B604A093B704B093B804609162075B
:1071100070916307882777FD8095982F0E945548C6
:107120007B018C016091B5047091B6048091B70425
:107130009091B8040E9455489B01AC0169857A85FD
:107140008B859C850E94CF489B01AC01C801B7018B
:107150000E94B0470E9438489101621573050CF4F3
:107160009B010F811885021713070CF48901F09019
:10717000C607FF2011F492011AC0B801882777FDD5
:107180008095982F9201442737FD4095542F620F28
:10719000731F841F951F22E83AE540E050E00E94EB
:1071A000174920E030E840E050E00E948B498D8193
:1071B0009E81820F931F880D991D97FF03C060E089
:1071C00070E005C0B301861597050CF4BC018091F1
:1071D000B807C82EDD24C601C616D7060CF4CB01AD
:1071E00080936407A401421B530B9A016D817E8139
:1071F000260F371F37FF03C040E050E005C0A30152
:10720000261537050CF4A901C601C416D5060CF4E1
:10721000CA0180937A07FF2011F498011AC0B801BF
:10722000882777FD8095982F9201442737FD409558
:10723000542F621B730B840B950B22E83AE540E058
:1072400050E00E94174920E030E840E050E00E9402
:107250008B498401020F131F8D819E81081B190B1E
:1072600017FF03C0A0E0B0E005C0D3010615170565
:107270000CF4D801F601CA16DB060CF4FD01E0930C
:107280008507821A930A9401AD81BE812A1B3B0BAC
:1072900037FF03C040E050E005C0A30126153705C5
:1072A0000CF4A901C601C416D5060CF0C9C0CA0168
:1072B000C7C02091710430917204C90113E0880F96
:1072C000991F1A95E1F7821B930B68E070E00E940A
:1072D000564979A368A3709372046093710440E0E7
:1072E00050E00C944E2A80917F04882311F40C9472
:1072F000752C0C946B2C60911D0470911E04809170
:107300001F0490912004A090BA07BB24CC24DD2454
:10731000E0907B07F0907C07A60195010E948B49C5
:107320000027F7FC0095102F2E193F09400B510B39
:10733000CA01B90120E130E040E050E00E948B49F1
:1073400019012A0139014A0160912504709126042E
:107350008091270490912804E0907F07F0908007A7
:10736000A60195010E948B490027F7FC0095102F7C
:107370002E193F09400B510BCA01B90120E130E041
:1073800040E050E00E948B4959016A0179018A016D
:1073900080916D0490916E04409714F00C94422DEE
:1073A0000C943C2D1092E9031092E80310924504CE
:1073B0001092460410924704109248041092490417
:1073C00010924A0410924B0410924C0410926907D8
:1073D00010926A0710926B0710926C071092650763
:1073E0001092660710926707109268078091310427
:1073F00090913204A0913304B09134048093350409
:1074000090933604A0933704B093380480913904E4
:1074100090913A04A0913B04B0913C0480933D04C8
:1074200090933E04A0933F04B093400410927E04D6
:1074300010927D0410927C0410927B040C94DD2D3C
:1074400080936F07A1960FB6F894DEBF0FBECDBF35
:10745000DF91CF911F910F91FF90EF90DF90CF9030
:10746000BF90AF909F908F907F906F905F904F9064
:107470003F902F900895E091A607FF27EE0FFF1F82
:10748000EA5DF84F0190F081E02DF7FF03C0F09521
:10749000E195FF4F74971CF081E090E00895E09132
:1074A000A707FF27EE0FFF1FEA5DF84F808191814C
:1074B00020E030E097FF03C0909581959F4F44975F
:1074C00014F021E030E0C9010895809164058150F5
:1074D0008230F0F5809166058330D1F580916705A3
:1074E00090916805A0916905B0916A058093DE04CA
:1074F0009093DF04A093E004B093E10480916B05C6
:1075000090916C05A0916D05B0916E058093E20499
:107510009093E304A093E404B093E50480916F0595
:1075200090917005A0917105B09172058093E60469
:107530009093E704A093E804B093E90481E080937A
:10754000EA0488EE93E09093D4038093D3030895E4
:107550001092EA0408958091640581508230C0F54C
:10756000809166058330A1F580916705909168054B
:10757000A0916905B0916A058093D1049093D204DB
:10758000A093D304B093D40480916B0590916C05C3
:10759000A0916D05B0916E058093D5049093D604AB
:1075A000A093D704B093D80480916F059091700593
:1075B000A0917105B09172058093D9049093DA047B
:1075C000A093DB04B093DC0481E08093DD04089594
:1075D0001092DD0408951092EA0408951092C604F2
:1075E0001092C5041092C8041092C70408952F92F7
:1075F0003F924F925F926F927F928F929F92AF9243
:10760000BF92CF92DF92EF92FF920F931F93CF938F
:10761000DF93CDB7DEB72A970FB6F894DEBF0FBE63
:10762000CDBF2C0180916405813009F0B6C18091F5
:107630006605833009F0B1C180916E0390916F03AC
:1076400097FDABC14114510409F4B0C1F201248586
:10765000222309F4ABC16481758186819781609092
:107660006B0570906C0580906D0590906E05661AA4
:10767000770A880A990AE0906705F09068050091FA
:10768000690510916A05A080B180C280D380223044
:10769000C9F020E836E948E950E00E948B49DA0158
:1076A000C9010E94C240AA2797FDA095BA2F8093D6
:1076B000960390939703A0939803B093990382E065
:1076C000F2018487EA18FB080C091D092091960332
:1076D000309197034091980350919903C801B701E5
:1076E0000E94174920E030E240E050E00E948B49C0
:1076F00019012A0170925C0660925B0630935E0667
:1077000020935D062091C9043091CA044091CB04B6
:107710005091CC042D833E834F835887E090CD0455
:10772000F090CE040091CF041091D0042091770501
:10773000309178054091790550917A05C801B701DB
:107740000E94174990958095709561957F4F8F4F56
:107750009F4F20E032E040E050E00E948B49590109
:107760006A0120917B0530917C0540917D05509107
:107770007E05C801B7010E941749909580957095C4
:1077800061957F4F8F4F9F4F20E032E040E050E007
:107790000E948B4979018A01C30177FE03C090954D
:1077A00081959F4F855F91404CF4C10137FE03C026
:1077B000909581959F4F855F9140BCF1A601950101
:1077C0002E3C8FEF38078FEF48078FEF580724F4D0
:1077D0002EEC3FEF4FEF5FEF59016A012333310584
:1077E000410551052CF042E3A42EB12CC12CD12C23
:1077F000A3E3EA16F1040105110534F032E3E32EA8
:10780000F12C012D112D11C0BEECEB16BFEFFB06C4
:10781000BFEF0B07BFEF1B0744F42EECE22E2FEF58
:10782000F22E2FEF022F2FEF122F6D817E818F818D
:107830009885A40193010E941749909580957095B1
:1078400061957F4F8F4F9F4F20E038E040E050E040
:107850000E948B4939014A016A0C7B1C8C1C9D1CBF
:107860006D817E818F819885A20191010E941749C7
:1078700090958095709561957F4F8F4F9F4F20E039
:1078800038E040E050E00E948B4959016A01AE0C9B
:10789000BF1CC01ED11E80916E0390916F030E9489
:1078A000C2409C01442737FD4095542F29833A83D9
:1078B0004B835C8380916E0390916F030E947A40AA
:1078C0001C01442437FC4094542C69817A818B81BB
:1078D0009C81A60195010E9417497B018C01C20180
:1078E000B101A40193010E941749E61AF70A080B97
:1078F000190BC801B70120E030E240E050E00E94DF
:107900008B493A8729873093C8042093C704C20162
:10791000B101A60195010E9417497B018C01698183
:107920007A818B819C81A40193010E941749E60E04
:10793000F71E081F191FC801B70120E030E240E020
:1079400050E00E948B49309521953F4F3093C604FB
:107950002093C5042E3231051CF08DE290E005C065
:10796000235D3F4F34F483ED9FEF9093C6048093E3
:10797000C50489859A858E971CF08DE290E008C039
:10798000A985BA85A35DBF4F0CF061C083ED9FEF61
:107990009093C8048093C7045AC01092C6041092F2
:1079A000C5041092C8041092C70451C066247724FD
:1079B00043012224332421012091C9043091CA04B7
:1079C0004091CB045091CC042D833E834F83588744
:1079D000E090CD04F090CE040091CF041091D0043B
:1079E00020917705309178054091790550917A057D
:1079F000C801B7010E9417499095809570956195CF
:107A00007F4F8F4F9F4F20E032E040E050E00E94D8
:107A10008B4959016A0120917B0530917C05409189
:107A20007D0550917E05C801B7010E9417499095C8
:107A30008095709561957F4F8F4F9F4F20E032E08A
:107A400040E050E00E948B4979018A01AECE2A962F
:107A50000FB6F894DEBF0FBECDBFDF91CF911F915F
:107A60000F91FF90EF90DF90CF90BF90AF909F90DD
:107A70008F907F906F905F904F903F902F900895E0
:107A8000863418F41092EC0407C0803A10F481E0B8
:107A900001C082E08093EC0480916405813079F12B
:107AA000813020F0823009F0A8C014C01092C604C2
:107AB0001092C5041092C8041092C7048091EC047F
:107AC000882309F49AC084E690E09093D4038093CD
:107AD000D30393C080918705882331F08091870577
:107AE00081508093870589C01092C6041092C50406
:107AF0001092C8041092C704109264057EC0809151
:107B000066059091EC04833009F056C0913039F04D
:107B1000913008F446C0923009F045C026C08091EB
:107B2000DD048823F1F10E943B3A882369F00E942A
:107B3000AB3A1092C6041092C5041092C804109279
:107B4000C7041092EB0456C08091EB04873040F4D8
:107B50008F5F8093EB040E94AB3A80E090E002C01C
:107B600081ED94E00E94F73A45C08091EA048823B1
:107B700049F00E94AB3A0E943B3A8823A1F48EED73
:107B800094E0F0CF82E390E09093D4038093D3030A
:107B90008091DD04882329F00E943B3A882319F460
:107BA000DFCF0E94AB3A1092C6041092C504109227
:107BB000C8041092C7041EC01092C6041092C504D7
:107BC0001092C8041092C7049923A1F08091650512
:107BD00028EC829FC001112420E436E0281B390BD9
:107BE00037FF02C020E030E02E5C3F4F3093D403DB
:107BF0002093D30382E0809364058091C504909123
:107C0000C6049093600680935F068091C7049091AC
:107C1000C80490936206809361060895A0E0B0E0E6
:107C2000A80FB11D0E94A649802D99270895A0E0B4
:107C3000B0E0A80FB11D062E0E94B8490895A0E03B
:107C4000B0E0A80FB11D0E94B349CF010895A0E094
:107C5000B0E0A80FB11D0B010E94C4490895863001
:107C600008F085E0A2E0B0E0082E0E94B84908952F
:107C7000982F863008F095E086E4989FD001112473
:107C8000AC59BF4FE6EAF7E0182E0E94C949A2E0BE
:107C9000B0E0092E0E94B8490895982F863008F068
:107CA00095E086E4989FD0011124AC59BF4FE6EAD5
:107CB000F7E0182E0E94AE49089581E08093A60750
:107CC00022E02093A70783E08093A80754E0509315
:107CD000A90745E04093AA0736E03093AB0787E059
:107CE0008093AC0788E08093AD0780EC8093AE076B
:107CF0009EE19093AF078BEF8093B1078AE080936A
:107D0000B2079093B0079093B4072093B3072093E2
:107D1000B5075093B6073093B7078FE08093B80745
:107D20008AEF8093B9079093BA0780E88093BB07E6
:107D300024E62093BC078CE88093BD078EE58093F2
:107D4000BE0783E28093BF0784E18093C00710924F
:107D5000C10780E18093C20780E58093C30710923A
:107D6000C4071092C5071092C6071092D60710924A
:107D7000D7071092D8071092D9072093C70788E237
:107D80008093C8071092DB0792E39093C90786E9B6
:107D90008093CA074093CB079093CC078AE58093E2
:107DA000CD079093CE071092DA078093CF074093C8
:107DB000D0072093D1072093D20780E28093D30786
:107DC0005093D4079093D507A0EEB7E0ECE9F3E029
:107DD00089E001900D928150E1F7089581E0809350
:107DE000A60782E08093A70723E02093A80754E02A
:107DF0005093A90745E04093AA0736E03093AB07BC
:107E000087E08093AC0788E08093AD0780E480939F
:107E1000AE079EE19093AF078BEF8093B1078AE0A6
:107E20008093B2079093B0079093B4072093B30761
:107E30002093B5075093B6073093B7078FE0809330
:107E4000B8078AEF8093B9079093BA0780E88093C8
:107E5000BB0790E59093BC0788E78093BD078EE54C
:107E60008093BE0783E28093BF0784E18093C007BD
:107E70001092C10730E23093C2079093C30710926B
:107E8000C4071092C5071092C6071092D607109229
:107E9000D7071092D8071092D90724E62093C70776
:107EA00088E28093C8071092DB0792E39093C9079A
:107EB00086E98093CA074093CB079093CC078AE565
:107EC0008093CD079093CE071092DA078093CF0767
:107ED0004093D0072093D1072093D2073093D30744
:107EE0005093D4078BE48093D507A0EEB7E0E6EA81
:107EF000F3E087E001900D928150E1F7089581E071
:107F00008093A60782E08093A70783E08093A80769
:107F100034E03093A90745E04093AA0786E08093B8
:107F2000AB0787E08093AC0728E02093AD0780E49F
:107F30008093AE079EE19093AF078BEF8093B107DC
:107F40008AE08093B2079093B0079093B407309380
:107F5000B3073093B5072093B6078CE08093B7073B
:107F60008FE08093B8078AEF8093B9079093BA07A0
:107F700090E89093BB0780E58093BC0756E9509347
:107F8000BD078EE58093BE0783E28093BF0784E13F
:107F90008093C0071092C10780E28093C20790933C
:107FA000C3071092C4071092C5071092C60710921B
:107FB000D6071092D7071092D8071092D90724E657
:107FC0002093C70788E28093C8071092DB0782E3FB
:107FD0008093C9075093CA074093CB078093CC077F
:107FE0009AE59093CD078093CE071092DA0790938D
:107FF000CF074093D0072093D1072093D20780E189
:108000008093D3073093D4072093D507A0EEB7E031
:10801000EEEAF3E086E001900D928150E1F70895D9
:1080200022E030E0D9010E94A649802D863028F058
:1080300082E0D901082E0E94B849992708950F932C
:108040001F93A1E0B0E00E94A649802D8534A1F1E4
:108050008FEC95E09F938F931F920E94600A0E947D
:108060007F3F00E00F900F900F90023031F40E949C
:10807000EE3E82E00E94383E02C0033039F40E9496
:108080005D3E83E00E94383E04E002C0043010F000
:108090000E94EE3E802F0E94383E0F5F063028F38C
:1080A000A2E0B0E083E0082E0E94B849A1E0B0E071
:1080B00085E4082E0E94B84902E010E0D8010E9431
:1080C000A649802D0E944D3ED8010E94A649802DD0
:1080D00099279F938F9386EB95E09F938F931F92A1
:1080E0000E94600A0F900F900F900F900F901F91B9
:1080F0000F91089597FD02C041E004C090958195CD
:108100009F4F4FEF68E671E00E945649FC018B35A6
:10811000910554F08B5590408A35910538F484EBE5
:1081200090E08E1B9F0BFC0181E00FC0CF01855BAF
:1081300090408A35910518F4E45BF04005C088E66C
:1081400091E08E1B9F0BFC018FEFEE0FFF1FE150A4
:10815000FA4F25913491552747FD5095992787FD72
:108160009095BC01269FC001279F900D369F900DD2
:1081700011249C01429FC001439F900D529F900D7E
:10818000112408952AE530E0281B390BC9010E940B
:108190007A4008951F93CF93DF93EB01672B29F467
:1081A000009719F480E090E091C097FD02C011E0C3
:1081B00001C01FEF209729F48AE51802C00111249D
:1081C00085C09C01B901882777FD8095982F26E00E
:1081D000660F771F881F991F2A95D1F79E014427A4
:1081E00037FD4095542F0E948B49F90137FF03C09A
:1081F000F095E195FF4F31E0EA35F30734F4EB54A5
:10820000F94F8491282F332747C04CE1E73AF40710
:108210001CF02AE530E040C059E0ED38F5071CF0CD
:1082200029E530E039C085E0EA3BF8071CF028E595
:1082300030E032C024E0E731F2071CF027E530E0FF
:108240002BC033E0EE32F3071CF026E530E024C00B
:1082500042E0E939F4071CF025E530E01DC052E0AA
:10826000E233F5071CF024E530E016C081E0E73E7C
:10827000F8071CF023E530E00FC021E0ED3AF207EB
:108280001CF022E530E008C0EF57F1401CF021E57A
:1082900030E002C020E530E01C161D066CF4812F92
:1082A000992787FD9095AC01249FC001259F900DD3
:1082B000349F900D11240AC011162CF484EB90E029
:1082C000821B930B03C0C901845B9040DF91CF9167
:1082D0001F9108959F92AF92BF92CF92DF92EF923B
:1082E000FF920F931F937B018C015B016C0199241A
:1082F000C601B501A80197010E9469492E0D3F1DD5
:10830000401F511F5695479537952795E21AF30A56
:10831000040B150B82E0E816F1040105110538F095
:10832000939488E2981619F079018A01E1CFCA0185
:10833000B9011F910F91FF90EF90DF90CF90BF9008
:10834000AF909F90089580912105813059F58091DB
:10835000F7048093660580911C05809365058091E4
:10836000050590910605A0910705B0910805809339
:10837000730590937405A0937505B093760580916D
:10838000150590911605A0911705B09118058093D9
:10839000830590938405A0938505B093860582E0BC
:1083A0008093210580913E05813099F580912605C5
:1083B00090912705A0912805B09129058093670524
:1083C00090936805A0936905B0936A0580912A058A
:1083D00090912B05A0912C05B0912D0580936B05F4
:1083E00090936C05A0936D05B0936E0580912E055A
:1083F00090912F05A0913005B091310580936F05C4
:1084000090937005A0937105B093720582E08093FC
:108410003E05809163058130D1F5809147059091AB
:108420004805A0914905B0914A0580937B0590933A
:108430007C05A0937D05B0937E05809143059091C6
:108440004405A0914505B09146058093770590932A
:108450007805A0937905B0937A0580914B059091AA
:108460004C05A0914D05B0914E05B095A095909505
:1084700081959F4FAF4FBF4F80937F0590938005AD
:10848000A0938105B093820582E08093630580917B
:108490002105882359F080913E05882339F0809189
:1084A0006305882319F081E0809364050895482FBF
:1084B00080919205843009F45AC0853050F481309F
:1084C000D1F0813098F08230D9F0833009F0CFC0FC
:1084D0001CC0863009F480C0863008F45AC087304A
:1084E00009F4A1C0883009F0C2C0AAC0453B09F018
:1084F000BBC081E09DC0423609F0B6C082E098C0A2
:10850000413009F0B1C083E093C0463069F0423198
:1085100099F0423009F0A8C082E295E090938D0571
:1085200080938C054D960FC08DEE94E090938D0551
:1085300080938C05C59607C08FE395E090938D05D9
:1085400080938C05859690938B0580938A0501977F
:10855000909389058093880584E080939205842F09
:108560008F5F809391058F5F809390050895842F8E
:10857000992790938F0580938E0590919105940F84
:108580009093910580919005890F8093900585E0E7
:108590004FC0242F3327322F222780918E059091B0
:1085A0008F05820F931F90938F0580938E05909176
:1085B0009105940F9093910580919005890F809378
:1085C0009005E0918805F09189058081813009F45A
:1085D0004BC0108286E02CC0E0918C05F0918D0597
:1085E00080918A0590918B05E817F90728F441934B
:1085F000F0938D05E0938C0590919105940F9093E5
:10860000910580919005890F8093900580918E054A
:1086100090918F05019790938F0580938E05892BFC
:1086200041F587E005C080919105481721F488E065
:10863000809392050895E0918805F091890513C013
:1086400080919005E0918805F0918905481759F4CB
:1086500081E0808395B1982795B90E94A3418FEF5F
:108660008093870501C010821092920508951092A0
:1086700092050895CF93DF93DC01EC01EA81FB8141
:1086800021918E81815019F48981E81BF109ED0156
:10869000FB83EA838E839FB7F8948C9181508C93EF
:1086A0009FBF822F9927DF91CF910895FC011082FF
:1086B000758364837383628341834783468308950C
:1086C000CF93DF93DC019C91ED018981981718F01D
:1086D00080E090E016C0ED01EC81FD8161938F8117
:1086E000815019F48981E81BF109ED018F83FD8325
:1086F000EC839FB7F8948C918F5F8C939FBF81E040
:1087000090E0DF91CF910895FC0180818823E9F307
:10871000CF010E943A4399270895FC018081882364
:1087200019F48FEF9FEF0895CF010E943A439927E4
:1087300008959FB7F8948091C9008F778093C900FE
:108740008091C9008F7B8093C9008091C9008F7D83
:108750008093C9005A9A52985B9A539A1092CD000E
:108760008AE28093CC008091C80082608093C80028
:1087700088E18093C9008091CA008F778093CA00F6
:108780008091CA008F7B8093CA008091CA008F7D40
:108790008093CA008091CA008F7E8093CA00809126
:1087A000CA00877F8093CA008091C9008B7F809325
:1087B000C9008091CA0084608093CA008091CA0079
:1087C00082608093CA0002C08091CE008091C80070
:1087D00087FDFACF8091C90080688093C90080919D
:1087E000C90080648093C9009FBF08951F920F92B3
:1087F0000FB60F9211242F933F934F935F936F9374
:108800007F938F939F93AF93BF93EF93FF93909139
:10881000CE00809100018B3019F4892F0E945742BD
:10882000FF91EF91BF91AF919F918F917F916F9148
:108830005F914F913F912F910F900FBE0F901F901E
:1088400018951F920F920FB60F9211242F933F93FA
:108850004F938F939F9380919308833021F08430BE
:1088600009F06AC008C08EB5809395051EBC84E0EF
:108870008093930861C080919505992787FD909515
:10888000382F22278EB59927282B392BC9018D50D7
:108890009E4F875E9340D8F480919608823051F0C5
:1088A000833071F0813081F43093980820939708D9
:1088B00082E00BC030939A082093990883E005C0AA
:1088C00030939C0820939B0881E080939608469AF9
:1088D00010929308209197083091980880919908F8
:1088E00090919A0828173907B1F420919708309190
:1088F000980880919B0890919C082817390759F493
:108900002091990830919A0880919B0890919C0839
:108910002817390741F080919305843168F48091DC
:1089200093058F5F07C080919305882329F080917C
:1089300093058150809393059F918F914F913F9123
:108940002F910F900FBE0F901F9018952F923F926E
:108950004F925F926F927F928F929F92AF92BF924F
:10896000CF92DF92EF92FF920F931F93CF93DF93FB
:10897000CDB7DEB72C970FB6F894DEBF0FBECDBFD4
:1089800080919305882309F402C160919708709142
:10899000980820918A08332727FD3095621B730BB6
:1089A000882777FD8095982FEAE0660F771F881F4C
:1089B000991FEA95D1F720918D0830918E084427B0
:1089C00037FD4095542F0E948B4929833A834B836E
:1089D0005C836091990870919A0820918B083327E5
:1089E00027FD3095621B730B882777FD8095982FA4
:1089F0005AE0660F771F881F991F5A95D1F720916B
:108A00008F0830919008442737FD4095542F0E94DD
:108A10008B492D833E834F83588760919B087091CB
:108A20009C0820918C08332727FD3095621B730B1F
:108A3000882777FD8095982F4AE0660F771F881F5B
:108A4000991F4A95D1F720919108309192084427B7
:108A500037FD4095542F0E948B4929873A874B87D1
:108A60005C8760911D0470911E0480911F04909199
:108A70002004E090C507FF2433E0EE0CFF1C3A957C
:108A8000E1F700271127A80197010E948B4959019E
:108A90006A01C9010E947A403C01C5010E94C2409E
:108AA0005C016091250470912604809127049091C7
:108AB0002804A80197010E948B4979018A01C90104
:108AC0000E947A401C01C7010E94C2407C01CC2454
:108AD000B7FCC094DC2C69817A818B819C81A601D2
:108AE00095010E9417495B016C01882477FC8094F2
:108AF000982C69857A858B859C85A40193010E94B9
:108B00001749A61AB70AC80AD90A0027F7FC009520
:108B1000102F6D817E818F819885A80197010E9419
:108B200017497B018C01442437FC4094542C6985FF
:108B30007A858B859C85A20191010E941749E60EDA
:108B4000F71E081F191FC601B50120E030E240E002
:108B500050E00E948B4959016A01C801B70120E029
:108B600030E240E050E00E948B49DA01C901B501D2
:108B70000E94CA409C0197FF05C088279927821B45
:108B8000930B13C088E691E0821B930B0EC080917B
:108B9000D3039091D403892B31F484E690E0909331
:108BA000D4038093D3038FEF9FEF2C960FB6F894E6
:108BB000DEBF0FBECDBFDF91CF911F910F91FF9010
:108BC000EF90DF90CF90BF90AF909F908F907F906D
:108BD0006F905F904F903F902F90089590919308E1
:108BE000913049F0913018F0923091F525C04698B7
:108BF0002A9A81E01EC02A9880919608823031F02E
:108C0000833031F0813031F481E309C082E307C061
:108C100083E305C0909396081092930808958EBD43
:108C200088E090E00E943A0D909395088093940814
:108C300082E080939308089580919408909195081C
:108C40000E94430D882321F01EBC83E0809393088B
:108C500008954F925F926F927F928F929F92AF9200
:108C6000BF92CF92DF92EF92FF920F931F93CF9319
:108C7000DF93299A809100018A3011F4289801C06D
:108C8000289A66247724CC24DD2488249924EE2491
:108C9000FF24AA24BB2400E010E092E3492E5524CF
:108CA000E091A907FF27EE0FFF1FEA5DF84F8081D3
:108CB00091818536910564F066247724CC24DD24E7
:108CC00088249924EE24FF24AA24BB2400E010E089
:108CD0008091970890919808C816D9062CF4C090F6
:108CE0009708D09098080BC08091970890919808A9
:108CF0008615970524F460909708709098088091E5
:108D0000990890919A08E816F9062CF4E0909908D1
:108D1000F0909A080BC08091990890919A08881554
:108D2000990524F48090990890909A0880919B0866
:108D300090919C08081719072CF400919B0810913A
:108D40009C080BC080919B0890919C088A159B05FC
:108D500024F4A0909B08B0909C08552081F485B124
:108D600091E0892785B985B192E0892785B982E3A9
:108D700090E09093D4038093D303B2E35B2E8AE018
:108D800090E00E943A0DEC01CE010E94430D882331
:108D9000D9F3809194058F5F8093940581508F3132
:108DA000E8F01F930F93BF92AF92FF92EF929F92C2
:108DB0008F92DF92CF927F926F928FE098E09F9395
:108DC0008F931F920E94600A109294058DB79EB7F0
:108DD0000F960FB6F8949EBF0FBE8DBFE091A80707
:108DE000FF27EE0FFF1FEA5DF84F808191818436E7
:108DF00091050CF44A94442011F05A9451CFC601C5
:108E00008619970990938E0880938D08C701881959
:108E100099099093900880938F08C8018A199B093B
:108E20009093920880939108C601860D971D62E089
:108E300070E00E9456499B0160938A08C701880D23
:108E4000991D62E070E00E94564960938B08C8014A
:108E50008A0D9B1D62E070E00E94564960938C0869
:108E6000622F8AE00E94173E60918B088BE00E947F
:108E7000173E60918C088CE00E94173E60918D082F
:108E800070918E088DE00E94273E60918F0870914E
:108E900090088FE00E94273E60919108709192089F
:108EA00081E10E94273EDF91CF911F910F91FF90AA
:108EB000EF90DF90CF90BF90AF909F908F907F907A
:108EC0006F905F904F9008951F931FB7F89484B1EF
:108ED000806A84B92698229A3E9A2A98469883ED09
:108EE0008CBD8DB58E7F8DBD81E0809396081092EC
:108EF00093088AE00E940E3E80938A088BE00E94CD
:108F00000E3E80938B088CE00E940E3E80938C086E
:108F10008DE00E941F3E90938E0880938D088FE015
:108F20000E941F3E9093900880938F0881E10E94D9
:108F30001F3E9093920880939108109293051FBF53
:108F40001F910895FC014150504030F001900616E9
:108F5000D1F73197CF010895882799270895505860
:108F6000192EEFD001D0D2C0BA1762077307840759
:108F70009507B1F188F40EF410940B2EBA2FA02DA2
:108F8000062E622F202D072E732F302D082E842FB2
:108F9000402D092E952F502DFF275523B9F0591B31
:108FA00049F0573E98F0469537952795A795F0409C
:108FB0005395C9F776F0BA0F621F731F841F30F400
:108FC000879577956795B795F040939517FA0F2E8B
:108FD0000895BF1BBB27BA0B620B730B840BF6CF34
:108FE000DEF6DBC0AED001D091C0552359F09923F5
:108FF00069F09F575F57951B33F442F4903811F492
:10900000915805C09BC091589F3F09F4C6C0BB272B
:10901000112462177307840730F4660F771F881FC7
:10902000BB1F915098F311D00F920FD00F920DD01B
:10903000A0E82617370748071B0609F0A048BA2FF3
:10904000602D7F918F9100240895A0E8002462177D
:1090500073078407B10528F0621B730B840BB109F9
:109060000A2A660F771F881FBB1FA69581F70895F0
:1090700097FB73D09F3738F0FEE9F91B982F872FA5
:10908000762F6B2F05C086C0969587957795679547
:10909000F150D0F73EF490958095709561957F4F93
:1090A0008F4F9F4F0895E89403C097FB0EF4F3DFB2
:1090B000B62F672F782F892F9EE9002427C00ED066
:1090C0005EF004C00BD026F001C008D019F020F4E7
:1090D0008FEF089580E0089581E0089597FB092EB1
:1090E000052600F8689430D0E89407FC07C06217A2
:1090F00073078407950721F008F400940794989467
:1091000008959A95BB0F661F771F881F1124992316
:10911000A1F08823B2F79F3F59F0BB0F48F421F428
:10912000002011F460FF04C06F5F7F4F8F4F9F4F8F
:10913000881F9795879597F908952CC09FEF80EC2D
:109140000895052E092607FA440F551F5F3F79F051
:10915000AA27A51708F051E04795880F991F9F3F50
:1091600031F0BB27B91708F091E0879508959F91DA
:109170009F911124E3CF97FB880F991F9F3F31F0F8
:10918000BB27B91708F091E0879508959F919F91AB
:109190001124D4CF66277727882799270895D1DF10
:1091A00001D0B4CF992339F0552329F09F575F5749
:1091B000950F13F49AF1F1CF91589F3FE1F3629F1D
:1091C000A12D0F92BB27639FA00DB11DEE27729FAB
:1091D000A00DB11DEE1FAF93AA27649FB00DE11D36
:1091E000739FB00DE11DAA1F6627829FB00DE11D80
:1091F000A61F5527749FE00DA11D551F839FE00DED
:10920000A11D561F849FA00D511D852F7A2F6E2FF3
:109210001F900F9088231AF4939539F48FCF000C88
:10922000111CBB1F661F771F881F01280895629FAE
:10923000D001739FF001829FE00DF11D649FE00D4E
:10924000F11D929FF00D839FF00D749FF00D659FAF
:10925000F00D9927729FB00DE11DF91F639FB00DAE
:10926000E11DF91FBD01CF0111240895991B79E07B
:1092700004C0991F961708F0961B881F7A95C9F7A6
:1092800080950895AA1BBB1B51E107C0AA1FBB1FF5
:10929000A617B70710F0A61BB70B881F991F5A9582
:1092A000A9F780959095BC01CD01089597FB092EF3
:1092B00007260AD077FD04D0E5DF06D000201AF497
:1092C000709561957F4F0895F6F7909581959F4F22
:1092D0000895A1E21A2EAA1BBB1BFD010DC0AA1FF7
:1092E000BB1FEE1FFF1FA217B307E407F50720F00F
:1092F000A21BB30BE40BF50B661F771F881F991F8A
:109300001A9469F760957095809590959B01AC01D2
:10931000BD01CF01089597FB092E05260ED057FDFC
:1093200004D0D7DF0AD0001C38F450954095309512
:1093300021953F4F4F4F5F4F0895F6F790958095D9
:10934000709561957F4F8F4F9F4F0895F999FECF8C
:10935000B2BDA1BDF89A119600B40895F7DF01924D
:109360001A94E1F70895F2DFE02DF0DFF02D089573
:10937000F999FECFB2BDA1BD00BC11960FB6F8940D
:10938000FA9AF99A0FBE0895F3DF012CF1DF112448
:0E93900008950190EDDF1A94E1F70895FFCFE4
:10939E000A01FF64496E74656772616C506974638B
:1093AE0068202020496E74656772616C526F6C6C18
:1093BE0020202020416363506974636820202020A0
:1093CE0020202020416363526F6C6C2020202020CF
:1093DE00202020204779726F59617720202020208D
:1093EE002020202052656164696E67486569676850
:1093FE00742020204163635A20202020202020202A
:10940E002020202054687275737420202020202084
:10941E0020202020436F6D7061737348656164690D
:10942E006E672020566F6C746167652020202020A7
:10943E00202020205265636569766572204C657622
:10944E00656C2020416E616C6F674F7574313120F1
:10945E00202020204750534465764E6F727468204A
:10946E002020202047505344657645617374202098
:10947E00202020204750535F5069746368202020BD
:10948E00202020204750535F526F6C6C20202020EC
:10949E00202020204163635F5A202020202020209E
:1094AE00202020204D65616E4163635069746368AE
:1094BE00202020204D65616E416363526F6C6C20DD
:1094CE0020202020496E74656772616C457272505F
:1094DE0069746368496E74656772616C4572725225
:1094EE006F6C6C204D65616E496E74506974636863
:1094FE00202020204D65616E496E74526F6C6C0990
:10950E00200000004E65757472616C50697463685A
:10951E0020202020526F6C6C4F666673657420207D
:10952E0020202020496E74526F6C6C2A4661637441
:10953E006F72202052656164696E674779726F5051
:10954E0069746368446972656374436F7272526FB3
:10955E006C6C202052656164696E674779726F5238
:10956E006F6C6C20436F7272656374696F6E526FAD
:10957E006C6C2020492D417474526F6C6C2020202D
:10958E0020202020537469636B526F6C6C20202056
:10959E0020202020FFFF010A6400007D0000FF0351
:1095AE000102030405060708090A48656C6C6F2062
:1095BE00576F726C64000000000000000000000095
:1095CE00000000000000000000000000000000008D
:1095DE00000000000000000000000000000000007D
:1095EE00000000000000000000000000000000006D
:1095FE00000000000000000000000E016400FFFFEC
:10960E00FFFF90D0030090D00300ECFF17B7D138C6
:10961E0030FB103A409696020A000000000000004F
:10962E000064460000640100000088074265676917
:10963E006E6E657200004E6F726D616C000053703D
:06964E006F7274000000C1
:00000001FF
/branches/V0.68d CRK HexaLotte/Hex-Files/Readme.txt
0,0 → 1,173
V0.68d Ausgangsversion.
 
G.Stobrawa 06.03.2008:
 
- Code stärker modularisiert und restrukturiert
- viele Kommentare zur Erklärug eingefügt
- konsequent englische Variablennamen
- PPM24 Support für bis zu 12 RC-Kanäle.
- Support für Kompass CMPS01 oder MM3 (mit verbesserte Neigungskompensation, stabilere Kommunikation) (Option im Makefile)
- 2. Uart wird nun unterstützt (MCU = atmega644p im Makefile)
- Ausertung des UBX-Pprotocols an 1. oder 2. Uart
- einige kleinere Bugfixes
- GPS-Hold-Funktion hinzugefügt
- GPS-Home-Funktion hinzugefügt (wird beim Motorstart gelernt, und bei Motorenstop wieder gelöscht)
- Poti3 steuert die GPS Funktionen (Poti3 < 70:GPS inaktiv, 70<=Poti3<160: GPS Hold, 160<=Poti3: GPS Home)
- LED Steuerung an J16, parametrierbar durch die User Parameter 7 & 8. UserParam7 legt die
LEDOnTime in Vielfachen von 2ms fest und UserParam 8 die LEDOffTime.
- Zusätzliche Punkte im Menü des KopterTool zur Anzeige des GPS-Status und der MM3-Kalibierparameter
 
 
- Hardware Configuration:
 
- Die PWM des CMPS03 wird wie bisher standard über den Port PC4 (Pin5 an SV1 der FC) eingelesen.
- Der MM3 wird wie folgt verbunden.
 
FC 1.0/1.1/1.2 Level Shifter MM3
SCK (Pin1 SV5) ---> SCK (Pin1)
MISO (Pin3 SV5) <--- MISO (Pin2)
MOSI (Pin5 SV5) ---> MOSI (Pin3)
GND (Pin6 SV5) ---> GND (Pin7 / Pin14)
PC4 (Pin5 SV1) ---> SS (Pin4)
PC5 (Pin6 SV1) ---> RESET (Pin6)
 
Zusätzlich benötigt der MM3 noch eine 3V oder 3V3 Versorgung an VDD (Pin12).
 
- Für das UBLOX-Modul muss noch GPS-GND mit FC-GND (Pin7 SV1) und
die GPS-TXD Leitung mit FC-RXD (Pin1 SV1) verbunden werden,
wenn man die FC 1.0 mit dem Atmega644 verwendet.
Für die FC 1.1/1.2 mit Atmega644p-Bestückung benötigt man FC-RXD1 (Pin3 SV1).
Zusätzlich benötigt das UBLOX-Modul noch eine 5V-Versorgung die ggf. von
der FC (an Pin2 SV1) abgegriffen werden kann.
Wenn die FC gültige Messages vom GPS empfängt, blinkt die rote LED mit 4 Hz.
 
 
- Konfiguration des MK.
Es sollte ein Haken bei GPS und Kompass gesetzt sein. Wenn nur GPS Aktiviert ist, wird intern immer auch der
Kompass aktiviert, da er für den GPS-Regler unbedingt notwendig ist.
 
- Unter Sonstiges: Kompass-Wirkung etwa auf 50 bis 70.
 
- User Parameters:
Parameter 2 --> I-Factor for GPS PD controller (start with small values below 10)
Parameter 3 --> Calibration factor for transforming Gyro Integrals to angular degrees (~170)
Parameter 4 --> Angle between the MM3 Board (Arrow) and the MK head (typical ~180)
Parameter 5 --> P-Factor for GPS PD controller (~70)
Parameter 6 --> D-Factor for GPS PD controller (~140)
Parameter 7 --> LED1Time for J16
Parameter 8 --> LED2Time for J17
- LED-Steuerung an J16/J17
Das Verhalten der über einen Transistor gegen Masse geschalteten Ausgänge J16/J17 wird mit
Hilfe der Userparameter 7 und 8 angepasst.
Es gilt:
UP7/8 < 20: Ausgang liegt dauerhaft auf Masse.
UP7/8 > 220: Ausgang ist dauerhaft hochohmig.
Sonst wird geblinkt, wobei sich die Frequenz mit dem Userparameter zwischen 2 bis 25 Hz einstellen lässt.
 
- Zusätzliche akustische Signale:
 
Signale die eine Fehlfunktion anzeigen:
Dauerton: Eine GPS-Funktion ist aktiviert und es werden keine oder
unvollständige GPS-Daten via UART empfangen.
Hier ist zu berücksichtigen, dass die folgenden UBX Messages am UBLOX
aktiviert wurden: NAV-POSLLH, NAV-SOL, NAV-VELNED.
Fehlt eine dieser Messages wird breits der Dauerton gesetzt.
5Hz Piepen: Ist eine der GPS Funktion aktiviert, zeigt dass den Empfang valider UBX-Daten,
wenn noch kein 3D-Satfix vorliegt. Die Pausen zwischen den 4Hz Pieps werden
immer länger je mehr Satelitten das GPS empfängt.
Liegt ein 3D Fix vor, so verstummt der Pieper dann endgültig egal wie viele Satelitten
beteiligt sind (es müssen dafür aber mindesten 4 sein).
Ist die Comming Home Funktion aktiv (Poti3>160) und konnte keine Home-Position beim
Einschalten der Motoren eingelernt werden, so ertönt ebenfalls ein 4Hz-Piepen.
10Hz Piepen: Die Kommunikation zum Kompassmodul ist gestört. (Funktioniert bei beiden Kompassmodulen)
Der CompassValue in den Debugs vom Koptertool zeigt dann -1 an.
 
Signale die eine Aktion bestätigen.
1s Piepen: Ertönt dieses Signal nach dem Einschalten der Motoren wird die erfolgreiche
Übernahme der Home-Position bestätigt.
 
 
- Inbetriebnahme:
 
Nach dem Flashen des Codes sollte man die Kalibrierung für den MM3 wiederholen, da diese Daten
an einer anderen Position im EEProm der FC abgelegt und wieder gelesen werden.
 
- Kopter ausschalten
- den Gas/Gierstick in die obere linke Ecke stellen
- Kopter einschalten (Periodisches Piepen zeigt aktive Kalibrierroutine an
und der Gierstick kann wieder in die Giermittelstellung.)
- den Kopter fleißig umherwürfeln, damit jeder der 3 Magnetfeldsensoren einmal den Minimal. bzw. Maximalwert
des Erdmagnetfeldes gemessen hat. Man kann das etwas gezielter machen, denn die Richtung des Erdmagnetfeldes zeigt
in etwa nach Norden und taucht ca. mit 70° bzgl. des Horizonts in in die Erde ein.
Die Messwerte werden auf dem Terminal des Koptertoolswärend der Kalibrierung angezeigt.
Legt man den Gierstick bei der Kalibrierung nach links, so werden die bis dahin gefundenen Maximalwerte
auf 0 zurückgesetzt und man muß von neuem Würflen. Ich habe das eingebaut, weil ich festgestellt habe, das bei
mir die +z-Achse des Kompass am anfang durch einen Spike nach dem Einschalten oder ähnliches erhöht war.
- am Ende den Gasstick nach unten drücken, damit die Kalibrierung beendet wird, und die Daten
im EEProm gesichter werden (Piepen beendet).
- Zur Sicherheit kann man die Kalibrierdaten im Menü des Koptertools unter Punkt 13 den Offset aller Achsen und unter
Punkt 14 den Range aller Achsen des MM3 anschauen. Bei mir sind die Werte der Offsets
nur wenige Counts von 0 verschieden und die Ranges fast gleich bei Werten um die 400-500 Counts.
 
Zur Bestimmung des User Parameters 3 (Umrechnungsfaktor zwischen dem Gyrointegral und dem zugehörigen Neigungswinkel)
hat sich folgendes Vorgehen bewehrt.
- Man bestimmt den Wert des Roll- und Nick-Integrals für einen Neigungswinkel von 45°
über die Ausgaben des Koptertools.
- Aus diesem Wert kann man den benötigten UserParam3 berechnen.
UserParam3 = (Nick-Integral(45°)+Roll-Integral(45°))/2*GyroACCFaktor/45°/8. (typisch 170)
- Nachdem dieser Wert über die Settings des Koptertools im MK abgepeichert ist, sollte sich der CompassValue bei
Verkippungen nur unwesentlich verändern.
 
- Preflight GPS Test:
Ist der Kopter eingeschaltet, so kann man den GPS-Empfang überprüfen, in dem man Poti3 > 70 setzt.
Erhält man ein Dauerpiepen besteht keine Kommunikation zum GPS oder eine der benötigten UBX-Messseages fehlt.
Blinkt die rote LED der FC, so werden grundsätzlich valide Daten vom GPS empfangen. Abhilfe schafft dann die
Einstellung des GPS-Moduls via USB und u-Center sodass die UBX Messages NAV-POSLLH, NAV-SOL, NAV-VELNED
mit 57600 baud auf zum Target 1 (RS232) gesendet werden. Es empfiehlt sich alle anderen Sendungen inkl. NMEA
abzuschalten, da diese sonst durch den UBX-Parser auf der FC laufen und sinnlose Rechenzeit beanspruchen.
Am einfachsten geht das mit dem Konfigurationsfile "Conrad LEA-4H Config.txt". Dazu verbindet man das
UBLOX-Modul via USB mit dem PC und started das u-Center. Dan wählt man im Menü:
"Tools->GPS Configuration" dieses File aus und klickt auf den Button "File >> GPS".
Hat man diese Hürde genommen (Dauerpiepsen ist Weg), wird wahrscheinlich ein 5Hz piepen zu hören sein.
Dieses zeigt den korrekten Empfang aller UBX-Messages an. Je mehr Satelitten empfangen werden, desto länger werden
die Pausen zwischen den Pieps, bis sie schleißlich ganz verschwinden, was einen 3D-Satfix signalisiert.
Die GPS-Funktionen können ggf. nun wieder abgeschaltet werden (Poti3<70).
 
- Setzen der Home Position:
Startet man die Motoren, so ertönt in diesem Moment eine 1s-langer Piep, der die erfolgreiche Übernahme
der Home-Position bestätigt. Dies passiert immer, auch wenn keine GPS-Funktion aktiviert wurde (Poti3<70).
Es kann jedoch sein, dass das Signal nicht ertönt. In diesem Fall konnte keine Home Position
abgespeichert werden, da zu diesem Zeitpunkt kein 3D-Fix vorlag. Aktiviert man dann später während des Fluges Comming Home (Poti3>160) wird dieser Zustand mit einem 5Hz Piepen angezeigt. Der Kopter versucht dann
wenigstens ein Position Hold. Schaltet man die Motoren ab, so wird auch die ggf.
gespeicherte Home-Position gelöscht.
- Dynamishes Position Hold:
Ist 70 < Poti3 < 160 so ist die dynamische Position Hold Funktion aktiv. Solange sich der Nick- & Roll-Stick
in Zentralposiotion befinden (genauer Auschlag < 20 Counts) wird die laterale (XY)-Position durch das GPS-
Signal geregelt. Dabei wird versucht die Abweichung der aktuellen GPS-Position von der zum Zeitpunkt
der letzen Nick/Roll-Stickbewegung gespeicherten Position zu minimieren. (Siehe dazu auch D- & P-Parameter
des GPS-Reglers). Dadurch kann man den MK zu einer bestimmten Position steuern und behält diese bei.
 
Es kann vorkommen, das bei extremer Timmerstellung an Nick und Roll der Funke der
zugehörige Stickwert bereits eine Auslenkung > 20 zeigt. In diesem Fall wird das Position Hold
leider nicht aktiviert. Durch die automatische Abschaltung des GPS-Reglers für den Fall einer manuellen
Bedienung kann man jederzeit in das Flugverhalten eingreifen.
 
- Comming Home:
Ist Poti3 > 160 so ist die Comming Home Funktion aktiv. Das verhalten ist analog dem Position Hold,
jedoch ist das Regelziel nicht die zuletzt gespeichwerte GPS-Position sondern die zum Zeitpunkt des
Einschaltens der MOtoren gespeicherte Home Position. Eine manualle Bedienung von Nick- und Roll-Stick
unterbricht auch hier sofort den GPS-Regler und die Steuerung erfolgt manuell.
 
/branches/V0.68d CRK HexaLotte/Hex-Files/WasIstWas.txt
0,0 → 1,23
+++++++++++++++++++++++++
+ Flight-Ctrl:
+++++++++++++++++++++++++
BootLoader_MEGA644_20MHZ_V0_1.hex
Der Bootloader wird per ISP eingespielt
Der Bootloader nur dann eingespielt werden, wenn noch nie ein Bootloader eingespielt wurde!
Danach können Softwareupdates seriell eingespielt werden.
 
Aktuelle Firmware
Wird per serielle Schnittstelle (durch den Bootloader) eingespielt
Flight-Ctrl SW >= 0.68 benötigt das Kopter-Tool 1.50
 
Flight-Ctrl_MEGA644_CMPS03_V068d.hex für Atmega644 mit CMPS03 Kompass
Flight-Ctrl_MEGA644_MM3_V068d.hex für Atmega644 mit MM3 Kompass
Flight-Ctrl_MEGA644p_CMPS03_V068d.hex für Atmega644p mit CMPS03 Kompass
Flight-Ctrl_MEGA644p_MM3_V068d.hex für Atmega644p mit MM3 Kompass
 
 
Die Firmware läuft sowohl auf der FC 1.0 als auch auf der FC 1.1/1.2
 
 
/branches/V0.68d CRK HexaLotte/Kopter-Tool/MikroKopter-Tool.exe
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/branches/V0.68d CRK HexaLotte/License.txt
0,0 → 1,52
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Copyright (c) 04.2007 Holger Buss
// + Nur für den privaten Gebrauch
// + www.MikroKopter.com
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation),
// + dass eine Nutzung (auch auszugsweise) nur für den privaten und nichtkommerziellen Gebrauch zulässig ist.
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt
// + bzgl. der Nutzungsbedingungen aufzunehmen.
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen,
// + Verkauf von Luftbildaufnahmen, usw.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht,
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de"
// + eindeutig als Ursprung verlinkt und genannt werden
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion
// + Benutzung auf eigene Gefahr
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur
// + mit unserer Zustimmung zulässig
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Redistributions of source code (with or without modifications) must retain the above copyright notice,
// + this list of conditions and the following disclaimer.
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived
// + from this software without specific prior written permission.
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet
// + for non-profit use (directly or indirectly)
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted
// + with our written permission
// + * If sources or documentations are redistributet, our webpage (http://www.MikroKopter.de) must be
// + clearly linked and named as origin
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// + POSSIBILITY OF SUCH DAMAGE.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/branches/V0.68d CRK HexaLotte/_Settings.h
0,0 → 1,38
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Testmodi
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#define MOTOR_OFF 0
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Abstimmung
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#define ACC_AMPLIFY 12
#define FACTOR_I 0.0001
 
 
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Debug-Interface
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#define SIO_DEBUG 1 // Soll der Debugger aktiviert sein?
#define MIN_DEBUG_INTERVALL 500 // in diesem Intervall werden Degugdaten ohne Aufforderung gesendet
 
 
// +++++++++++++++++++++++++++++++
// + Getestete Settings:
// +++++++++++++++++++++++++++++++
// Setting: Kamera
// Stick_P:3
// Stick_D:0
// Gyro_P: 175
// Gyro_I: 175
// Ki_Anteil: 10
// +++++++++++++++++++++++++++++++
// + Getestete Settings:
// +++++++++++++++++++++++++++++++
// Setting: Normal
// Stick_P:2
// Stick_D:8
// Gyro_P: 80
// Gyro_I: 150
// Ki_Anteil: 5
 
/branches/V0.68d CRK HexaLotte/analog.c
0,0 → 1,195
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Copyright (c) 04.2007 Holger Buss
// + only for non-profit use
// + www.MikroKopter.com
// + see the File "License.txt" for further Informations
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#include <stdlib.h>
#include <avr/io.h>
#include <avr/interrupt.h>
 
#include "analog.h"
#include "main.h"
#include "timer0.h"
#include "fc.h"
#include "printf_P.h"
#include "eeprom.h"
 
volatile int16_t Current_AccZ = 0;
volatile int16_t UBat = 100;
volatile int16_t AdValueGyrPitch = 0, AdValueGyrRoll = 0, AdValueGyrYaw = 0;
volatile int16_t AdValueAccRoll = 0, AdValueAccPitch = 0, AdValueAccTop = 0;
volatile int32_t AirPressure = 32000;
volatile int16_t StartAirPressure;
volatile uint16_t ReadingAirPressure = 1023;
uint8_t PressureSensorOffset;
volatile int16_t HeightD = 0;
volatile uint16_t MeasurementCounter = 0;
 
/*****************************************************/
/* Initialize Analog Digital Converter */
/*****************************************************/
void ADC_Init(void)
{
uint8_t sreg = SREG;
// disable all interrupts before reconfiguration
cli();
//ADC0 ... ADC7 is connected to PortA pin 0 ... 7
DDRA = 0x00;
PORTA = 0x00;
// Digital Input Disable Register 0
// Disable digital input buffer for analog adc_channel pins
DIDR0 = 0xFF;
// external reference, adjust data to the right
ADMUX &= ~((1 << REFS1)|(1 << REFS0)|(1 << ADLAR));
// set muxer to ADC adc_channel 0 (0 to 7 is a valid choice)
ADMUX = (ADMUX & 0xE0) | 0x00;
//Set ADC Control and Status Register A
//Auto Trigger Enable, Prescaler Select Bits to Division Factor 128, i.e. ADC clock = SYSCKL/128 = 156.25 kHz
ADCSRA = (1<<ADATE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
//Set ADC Control and Status Register B
//Trigger Source to Free Running Mode
ADCSRB &= ~((1 << ADTS2)|(1 << ADTS1)|(1 << ADTS0));
// Enable AD conversion
ADC_Enable();
// restore global interrupt flags
SREG = sreg;
}
 
void SearchAirPressureOffset(void)
{
uint8_t off;
off = GetParamByte(PID_PRESSURE_OFFSET);
if(off > 20) off -= 10;
OCR0A = off;
Delay_ms_Mess(100);
if(ReadingAirPressure < 850) off = 0;
for(; off < 250;off++)
{
OCR0A = off;
Delay_ms_Mess(50);
printf(".");
if(ReadingAirPressure < 900) break;
}
SetParamByte(PID_PRESSURE_OFFSET, off);
PressureSensorOffset = off;
Delay_ms_Mess(300);
}
 
 
/*****************************************************/
/* Interrupt Service Routine for ADC */
/*****************************************************/
// runs at 156.25 kHz or 6.4 µs
// if after (70.4µs) all 11 states are processed the interrupt is disabled
// and the update of further ads is stopped
// The routine changes the ADC input muxer running
// thru the state machine by the following order.
// state 0: ch0 (yaw gyro)
// state 1: ch1 (roll gyro)
// state 2: ch2 (pitch gyro)
// state 3: ch4 (battery voltage -> UBat)
// state 4: ch6 (acc y -> Current_AccY)
// state 5: ch7 (acc x -> Current_AccX)
// state 6: ch0 (yaw gyro average with first reading -> AdValueGyrYaw)
// state 7: ch1 (roll gyro average with first reading -> AdValueGyrRoll)
// state 8: ch2 (pitch gyro average with first reading -> AdValueGyrPitch)
// state 9: ch5 (acc z add also 4th part of acc x and acc y to reading)
// state10: ch3 (air pressure averaging over 5 single readings -> tmpAirPressure)
 
ISR(ADC_vect)
{
static uint8_t adc_channel = 0, state = 0;
static uint16_t yaw1, roll1, pitch1;
static uint8_t average_pressure = 0;
static int16_t tmpAirPressure = 0;
// disable further AD conversion
ADC_Disable();
// state machine
switch(state++)
{
case 0:
yaw1 = ADC; // get Gyro Yaw Voltage 1st sample
adc_channel = 1; // set next channel to ADC1 = ROLL GYRO
MeasurementCounter++; // increment total measurement counter
break;
case 1:
roll1 = ADC; // get Gyro Roll Voltage 1st sample
adc_channel = 2; // set next channel to ADC2 = PITCH GYRO
break;
case 2:
pitch1 = ADC; // get Gyro Pitch Voltage 1st sample
adc_channel = 4; // set next channel to ADC4 = UBAT
break;
case 3:
// get actual UBat (Volts*10) is ADC*30V/1024*10 = ADC/3
UBat = (3 * UBat + ADC / 3) / 4; // low pass filter updates UBat only to 1 quater with actual ADC value
adc_channel = 6; // set next channel to ADC6 = ACC_Y
break;
case 4:
AdValueAccRoll = NeutralAccY - ADC; // get acceleration in Y direction
adc_channel = 7; // set next channel to ADC7 = ACC_X
break;
case 5:
AdValueAccPitch = ADC - NeutralAccX; // get acceleration in X direction
adc_channel = 0; // set next channel to ADC7 = YAW GYRO
break;
case 6:
// average over two samples to create current AdValueGyrYaw
if(BoardRelease == 10) AdValueGyrYaw = (ADC + yaw1) / 2;
else AdValueGyrYaw = ADC + yaw1; // gain is 2 times lower on FC 1.1
adc_channel = 1; // set next channel to ADC7 = ROLL GYRO
break;
case 7:
// average over two samples to create current ADValueGyrRoll
if(BoardRelease == 10) AdValueGyrRoll = (ADC + roll1) / 2;
else AdValueGyrRoll = ADC + roll1; // gain is 2 times lower on FC 1.1
adc_channel = 2; // set next channel to ADC2 = PITCH GYRO
break;
case 8:
// average over two samples to create current ADValuePitch
if(BoardRelease == 10) AdValueGyrPitch = (ADC + pitch1) / 2;
else AdValueGyrPitch = ADC + pitch1; // gain is 2 times lower on FC 1.1
adc_channel = 5; // set next channel to ADC5 = ACC_Z
break;
case 9:
// get z acceleration
AdValueAccTop = (int16_t) ADC - NeutralAccZ; // get plain acceleration in Z direction
AdValueAccTop += abs(AdValueAccPitch) / 4 + abs(AdValueAccRoll) / 4;
if(AdValueAccTop > 1)
{
if(NeutralAccZ < 800) NeutralAccZ+= 0.02;
}
else if(AdValueAccTop < -1)
{
if(NeutralAccZ > 600) NeutralAccZ-= 0.02;
}
Current_AccZ = ADC;
Reading_Integral_Top += AdValueAccTop; // Integrieren
Reading_Integral_Top -= Reading_Integral_Top / 1024; // dämfen
adc_channel = 3; // set next channel to ADC3 = air pressure
break;
case 10:
tmpAirPressure += ADC; // sum vadc values
if(++average_pressure >= 5) // if 5 values are summerized for averaging
{
ReadingAirPressure = ADC; // update measured air pressure
HeightD = (int16_t)(StartAirPressure - tmpAirPressure - ReadingHeight); // D-Anteil = neuerWert - AlterWert
AirPressure = (tmpAirPressure + 3 * AirPressure) / 4; // averaging using history
ReadingHeight = StartAirPressure - AirPressure;
average_pressure = 0; // reset air pressure measurement counter
tmpAirPressure = 0;
}
adc_channel = 0; // set next channel to ADC0 = GIER GYRO
state = 0; // reset state machine
break;
default:
adc_channel = 0;
state = 0;
break;
}
// set adc muxer to next adc_channel
ADMUX = (ADMUX & 0xE0) | adc_channel;
// after full cycle stop further interrupts
if(state != 0) ADC_Enable();
}
/branches/V0.68d CRK HexaLotte/analog.h
0,0 → 1,29
#ifndef _ANALOG_H
#define _ANALOG_H
 
#include <inttypes.h>
 
extern volatile int16_t UBat;
extern volatile int16_t AdValueGyrPitch, AdValueGyrRoll, AdValueGyrYaw;
extern volatile int16_t AdValueAccRoll, AdValueAccPitch, AdValueAccTop;
extern volatile int16_t Current_AccZ;
extern volatile int32_t AirPressure;
extern volatile uint16_t MeasurementCounter;
extern uint8_t PressureSensorOffset;
extern volatile int16_t HeightD;
extern volatile uint16_t ReadingAirPressure;
extern volatile int16_t StartAirPressure;
 
extern void SearchAirPressureOffset(void);
 
extern void ADC_Init(void);
 
// clear ADC enable & ADC Start Conversion & ADC Interrupt Enable bit
#define ADC_Disable() (ADCSRA &= ~((1<<ADEN)|(1<<ADSC)|(1<<ADIE)))
// set ADC enable & ADC Start Conversion & ADC Interrupt Enable bit
#define ADC_Enable() (ADCSRA |= (1<<ADEN)|(1<<ADSC)|(1<<ADIE))
 
 
#endif //_ANALOG_H
 
 
/branches/V0.68d CRK HexaLotte/cmps03.c
0,0 → 1,95
#include <avr/io.h>
#include <stdlib.h>
#include "fc.h"
#include "timer0.h"
#include "uart.h"
 
int32_t PWMHeading = -1;
uint8_t PWMTimeout = 0;
 
/*********************************************/
/* Initialize Interface to CMPS02 Compass */
/*********************************************/
void CMPS03_Init(void)
{
// Port PC4 connected to PWM output from compass module
DDRC &= ~(1<<DDC4); // set as input
PORTC |= (1<<PORTC4); // pull up to increase PWM counter also if nothing is connected
 
PWMTimeout = 0;
}
 
 
/*********************************************/
/* Get Data from CMPS03 */
/*********************************************/
void CMPS03_Update(void) // called every 102.4 us by timer 0 ISR
{
static uint16_t PWMCount = 0;
// The pulse width varies from 1ms (0°) to 36.99ms (359.9°)
// in other words 100us/° with a +1ms offset.
// The signal goes low for 65ms between pulses,
// so the cycle time is 65mS + the pulse width.
// The pulse is generated by a 16 bit timer in the processor
// giving a 1uS resolution, however I would not recommend
// measuring this to anything better than 0.1° (10uS).
 
if(PINC & (1<<PINC4))
{ // If PWM signal is high increment PWM high counter
// This counter is incremented by a periode of 102.4us,
// i.e. the resoluton of pwm coded heading is approx. 1 deg.
PWMCount++;
// pwm overflow?
if (PWMCount > 400)
{
if(PWMTimeout ) PWMTimeout--; // decrement timeout
PWMCount = 0; // reset PWM Counter
}
 
}
else // PWM is low
{
if((PWMCount) && (PWMCount < 400))
{
if(PWMCount <9) PWMHeading = 0;
else PWMHeading = ((uint32_t)(PWMCount - 9) * 1049L)/1024; // correct timebase and offset
PWMTimeout = 12; // if 12 periodes long no valid PWM was detected the data are invalid
// 12 * 400 counts * 102.4 us = 419 ms
}
PWMCount = 0; // reset pwm counter
}
}
 
 
/*********************************************/
/* Calculate north direction (heading) */
/*********************************************/
int16_t CMPS03_Heading(void)
{
int16_t heading, w, v;
 
if(PWMTimeout)
{
w = abs(IntegralPitch / 512);
v = abs(IntegralRoll / 512);
if(v > w) w = v; // get maximum declination
// if declination is small enough to have valid compass heading
if(w < 35)
{
// range from 0 to 359
heading = (int16_t)PWMHeading;
if (heading < 0) heading += 360;
heading = heading%360;
}
else // compass to much tilted
{
heading = -1;
}
}
else // no data from compass
{
if(!BeepTime) BeepTime = 100; // make noise to signal the compass problem
heading = -1;
}
return heading;
}
/branches/V0.68d CRK HexaLotte/cmps03.h
0,0 → 1,17
#ifndef _CMPS03_H
#define _CMPS03_H
 
#include <inttypes.h>
 
// Initialization
void CMPS03_Init(void);
 
// should be called cyclic to get actual compass reading
void CMPS03_Update(void);
 
// calculates the current compass heading in a range from 0 to 360 deg.
// returns -1 if no compass data are available
int16_t CMPS03_Heading(void);
 
#endif //_CMPS03_H
 
/branches/V0.68d CRK HexaLotte/eeprom.c
0,0 → 1,321
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Konstanten
// + 0-250 -> normale Werte
// + 251 -> Poti1
// + 252 -> Poti2
// + 253 -> Poti3
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
#ifndef EEMEM
#define EEMEM __attribute__ ((section (".eeprom")))
#endif
 
 
#include <avr/eeprom.h>
#include <string.h>
#include "eeprom.h"
#include "printf_P.h"
 
 
// byte array in eeprom
uint8_t EEPromArray[E2END+1] EEMEM;
 
paramset_t ParamSet;
 
 
 
/***************************************************/
/* Default Values for parameter set 1 */
/***************************************************/
void ParamSet_DefaultSet1(void) // sport
{
ParamSet.ChannelAssignment[CH_PITCH] = 1;
ParamSet.ChannelAssignment[CH_ROLL] = 2;
ParamSet.ChannelAssignment[CH_THRUST] = 3;
ParamSet.ChannelAssignment[CH_YAW] = 4;
ParamSet.ChannelAssignment[CH_POTI1] = 5;
ParamSet.ChannelAssignment[CH_POTI2] = 6;
ParamSet.ChannelAssignment[CH_POTI3] = 7;
ParamSet.ChannelAssignment[CH_POTI4] = 8;
ParamSet.GlobalConfig = CFG_AXIS_COUPLING_ACTIVE;//CFG_HEIGHT_CONTROL | /*CFG_HEIGHT_SWITCH |*/ CFG_COMPASS_ACTIVE | CFG_COMPASS_FIX;//0x01;
ParamSet.Height_MinThrust = 30;
ParamSet.MaxHeight = 251; // Wert : 0-250 251 -> Poti1
ParamSet.Height_P = 10; // Wert : 0-32
ParamSet.Height_D = 30; // Wert : 0-250
ParamSet.Height_ACC_Effect = 30; // Wert : 0-250
ParamSet.Height_Gain = 4; // Wert : 0-50
ParamSet.Stick_P = 4; //2 // Wert : 1-6
ParamSet.Stick_D = 8; //8 // Wert : 0-64
ParamSet.Yaw_P = 12; // Wert : 1-20
ParamSet.Trust_Min = 15; // Wert : 0-32
ParamSet.Trust_Max = 250; // Wert : 33-250
ParamSet.GyroAccFactor = 30; // Wert : 1-64
ParamSet.CompassYawEffect = 128; // Wert : 0-250
ParamSet.Gyro_P = 80; // Wert : 0-250
ParamSet.Gyro_I = 150; // Wert : 0-250
ParamSet.LowVoltageWarning = 94; // Wert : 0-250
ParamSet.EmergencyThrust = 35; // Wert : 0-250 // Gaswert bei Empangsverlust
ParamSet.EmergencyThrustDuration = 20; // Wert : 0-250 // Zeit bis auf EmergencyThrust geschaltet wird, wg. Rx-Problemen
ParamSet.UfoArrangement = 0; // X oder + Formation
ParamSet.I_Factor = 32;
ParamSet.UserParam1 = 32 * 4; //zur freien Verwendung
ParamSet.UserParam2 = 0; //zur freien Verwendung
ParamSet.UserParam3 = 0; //zur freien Verwendung
ParamSet.UserParam4 = 0; //zur freien Verwendung
ParamSet.UserParam5 = 0; // zur freien Verwendung
ParamSet.UserParam6 = 0; // zur freien Verwendung
ParamSet.UserParam7 = 0; // zur freien Verwendung
ParamSet.UserParam8 = 0; // zur freien Verwendung
ParamSet.ServoPitchControl = 100; // Wert : 0-250 // Stellung des Servos
ParamSet.ServoPitchComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo
ParamSet.ServoPitchCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo
ParamSet.ServoPitchMin = 50; // Wert : 0-250 // Anschlag
ParamSet.ServoPitchMax = 150; // Wert : 0-250 // Anschlag
ParamSet.ServoPitchRefresh = 5;
ParamSet.LoopThrustLimit = 50;
ParamSet.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag
ParamSet.LoopHysteresis = 50;
ParamSet.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt
ParamSet.Yaw_PosFeedback = 90;
ParamSet.Yaw_NegFeedback = 5;
ParamSet.AngleTurnOverPitch = 100;
ParamSet.AngleTurnOverRoll = 100;
ParamSet.GyroAccTrim = 16; // 1/k
ParamSet.DriftComp = 4;
ParamSet.DynamicStability = 100;
memcpy(ParamSet.Name, "Sport\0",6);
}
 
 
/***************************************************/
/* Default Values for parameter set 2 */
/***************************************************/
void ParamSet_DefaultSet2(void) // normal
{
ParamSet.ChannelAssignment[CH_PITCH] = 1;
ParamSet.ChannelAssignment[CH_ROLL] = 2;
ParamSet.ChannelAssignment[CH_THRUST] = 3;
ParamSet.ChannelAssignment[CH_YAW] = 4;
ParamSet.ChannelAssignment[CH_POTI1] = 5;
ParamSet.ChannelAssignment[CH_POTI2] = 6;
ParamSet.ChannelAssignment[CH_POTI3] = 7;
ParamSet.ChannelAssignment[CH_POTI4] = 8;
ParamSet.GlobalConfig = CFG_AXIS_COUPLING_ACTIVE;//CFG_HEIGHT_CONTROL | /*CFG_HEIGHT_SWITCH |*/ CFG_COMPASS_ACTIVE;//0x01;
ParamSet.Height_MinThrust = 30;
ParamSet.MaxHeight = 251; // Wert : 0-250 251 -> Poti1
ParamSet.Height_P = 10; // Wert : 0-32
ParamSet.Height_D = 30; // Wert : 0-250
ParamSet.Height_ACC_Effect = 30; // Wert : 0-250
ParamSet.Height_Gain = 3; // Wert : 0-50
ParamSet.Stick_P = 3; //2 // Wert : 1-6
ParamSet.Stick_D = 4; //8 // Wert : 0-64
ParamSet.Yaw_P = 6; // Wert : 1-20
ParamSet.Trust_Min = 15; // Wert : 0-32
ParamSet.Trust_Max = 250; // Wert : 33-250
ParamSet.GyroAccFactor = 30; // Wert : 1-64
ParamSet.CompassYawEffect = 128; // Wert : 0-250
ParamSet.Gyro_P = 80; // Wert : 0-250
ParamSet.Gyro_I = 120; // Wert : 0-250
ParamSet.LowVoltageWarning = 94; // Wert : 0-250
ParamSet.EmergencyThrust = 35; // Wert : 0-250 // Gaswert bei Empangsverlust
ParamSet.EmergencyThrustDuration = 20; // Wert : 0-250 // Zeit bis auf EmergencyThrust geschaltet wird, wg. Rx-Problemen
ParamSet.UfoArrangement = 0; // X oder + Formation
ParamSet.I_Factor = 32;
ParamSet.UserParam1 = 20 * 4; // zur freien Verwendung
ParamSet.UserParam2 = 0; // zur freien Verwendung
ParamSet.UserParam3 = 0; // zur freien Verwendung
ParamSet.UserParam4 = 0; // zur freien Verwendung
ParamSet.UserParam5 = 0; // zur freien Verwendung
ParamSet.UserParam6 = 0; // zur freien Verwendung
ParamSet.UserParam7 = 0; // zur freien Verwendung
ParamSet.UserParam8 = 0; // zur freien Verwendung
ParamSet.ServoPitchControl = 100; // Wert : 0-250 // Stellung des Servos
ParamSet.ServoPitchComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo
ParamSet.ServoPitchCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo
ParamSet.ServoPitchMin = 50; // Wert : 0-250 // Anschlag
ParamSet.ServoPitchMax = 150; // Wert : 0-250 // Anschlag
ParamSet.ServoPitchRefresh = 5;
ParamSet.LoopThrustLimit = 50;
ParamSet.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag
ParamSet.LoopHysteresis = 50;
ParamSet.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts
ParamSet.Yaw_PosFeedback = 90; // Faktor, mit dem Yaw die Achsen Roll und Pitch verkoppelt
ParamSet.Yaw_NegFeedback = 5;
ParamSet.AngleTurnOverPitch = 100;
ParamSet.AngleTurnOverRoll = 100;
ParamSet.GyroAccTrim = 32; // 1/k
ParamSet.DriftComp = 4;
ParamSet.DynamicStability = 75;
memcpy(ParamSet.Name, "Normal\0", 7);
}
 
 
/***************************************************/
/* Default Values for parameter set 3 */
/***************************************************/
void ParamSet_DefaultSet3(void) // beginner
{
ParamSet.ChannelAssignment[CH_PITCH] = 1;
ParamSet.ChannelAssignment[CH_ROLL] = 2;
ParamSet.ChannelAssignment[CH_THRUST] = 3;
ParamSet.ChannelAssignment[CH_YAW] = 4;
ParamSet.ChannelAssignment[CH_POTI1] = 5;
ParamSet.ChannelAssignment[CH_POTI2] = 6;
ParamSet.ChannelAssignment[CH_POTI3] = 7;
ParamSet.ChannelAssignment[CH_POTI4] = 8;
ParamSet.GlobalConfig = CFG_ROTARY_RATE_LIMITER | CFG_AXIS_COUPLING_ACTIVE;///*CFG_HEIGHT_SWITCH |*/ CFG_COMPASS_ACTIVE;//0x01;
ParamSet.Height_MinThrust = 30;
ParamSet.MaxHeight = 251; // Wert : 0-250 251 -> Poti1
ParamSet.Height_P = 10; // Wert : 0-32
ParamSet.Height_D = 30; // Wert : 0-250
ParamSet.Height_ACC_Effect = 30; // Wert : 0-250
ParamSet.Height_Gain = 2; // Wert : 0-50
ParamSet.Stick_P = 2; //2 // Wert : 1-6
ParamSet.Stick_D = 4; //8 // Wert : 0-64
ParamSet.Yaw_P = 6; // Wert : 1-20
ParamSet.Trust_Min = 15; // Wert : 0-32
ParamSet.Trust_Max = 250; // Wert : 33-250
ParamSet.GyroAccFactor = 30; // Wert : 1-64
ParamSet.CompassYawEffect = 128; // Wert : 0-250
ParamSet.Gyro_P = 100; // Wert : 0-250
ParamSet.Gyro_I = 140; // Wert : 0-250
ParamSet.LowVoltageWarning = 94; // Wert : 0-250
ParamSet.EmergencyThrust = 35; // Wert : 0-250 // Gaswert bei Empangsverlust
ParamSet.EmergencyThrustDuration = 20; // Wert : 0-250 // Zeit bis auf EmergencyThrust geschaltet wird, wg. Rx-Problemen
ParamSet.UfoArrangement = 0; // X oder + Formation
ParamSet.I_Factor = 16;
ParamSet.UserParam1 = 20 * 4; // zur freien Verwendung
ParamSet.UserParam2 = 0; // zur freien Verwendung
ParamSet.UserParam3 = 0; // zur freien Verwendung
ParamSet.UserParam4 = 0; // zur freien Verwendung
ParamSet.UserParam5 = 0; // zur freien Verwendung
ParamSet.UserParam6 = 0; // zur freien Verwendung
ParamSet.UserParam7 = 0; // zur freien Verwendung
ParamSet.UserParam8 = 0; // zur freien Verwendung
ParamSet.ServoPitchControl = 100; // Wert : 0-250 // Stellung des Servos
ParamSet.ServoPitchComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo
ParamSet.ServoPitchCompInvert = 0; // Wert : 0-250 // Richtung Einfluss Gyro/Servo
ParamSet.ServoPitchMin = 50; // Wert : 0-250 // Anschlag
ParamSet.ServoPitchMax = 150; // Wert : 0-250 // Anschlag
ParamSet.ServoPitchRefresh = 5;
ParamSet.LoopThrustLimit = 50;
ParamSet.LoopThreshold = 90; // Wert: 0-250 Schwelle für Stickausschlag
ParamSet.LoopHysteresis = 50;
ParamSet.LoopConfig = 0; // Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts
ParamSet.Yaw_PosFeedback = 90; // Faktor, mit dem Yaw die Achsen Roll und Pitch verkoppelt
ParamSet.Yaw_NegFeedback = 5;
ParamSet.AngleTurnOverPitch = 100;
ParamSet.AngleTurnOverRoll = 100;
ParamSet.GyroAccTrim = 32; // 1/k
ParamSet.DriftComp = 4;
ParamSet.DynamicStability = 50;
memcpy(ParamSet.Name, "Beginner\0", 9);
}
 
/***************************************************/
/* Read Parameter from EEPROM as byte */
/***************************************************/
uint8_t GetParamByte(uint8_t param_id)
{
return eeprom_read_byte(&EEPromArray[EEPROM_ADR_PARAM_BEGIN + param_id]);
}
 
/***************************************************/
/* Write Parameter to EEPROM as byte */
/***************************************************/
void SetParamByte(uint8_t param_id, uint8_t value)
{
eeprom_write_byte(&EEPromArray[EEPROM_ADR_PARAM_BEGIN + param_id], value);
}
 
/***************************************************/
/* Read Parameter from EEPROM as word */
/***************************************************/
uint16_t GetParamWord(uint8_t param_id)
{
return eeprom_read_word((uint16_t *) &EEPromArray[EEPROM_ADR_PARAM_BEGIN + param_id]);
}
 
/***************************************************/
/* Write Parameter to EEPROM as word */
/***************************************************/
void SetParamWord(uint8_t param_id, uint16_t value)
{
eeprom_write_word((uint16_t *) &EEPromArray[EEPROM_ADR_PARAM_BEGIN + param_id], value);
}
 
 
/***************************************************/
/* Read Parameter Set from EEPROM */
/***************************************************/
// number [0..5]
void ParamSet_ReadFromEEProm(uint8_t setnumber)
{
if (setnumber > 5) setnumber = 5;
eeprom_read_block((uint8_t *) &ParamSet.ChannelAssignment[0], &EEPromArray[EEPROM_ADR_PARAMSET_BEGIN + PARAMSET_STRUCT_LEN * setnumber], PARAMSET_STRUCT_LEN);
}
 
/***************************************************/
/* Write Parameter Set to EEPROM */
/***************************************************/
// number [0..5]
void ParamSet_WriteToEEProm(uint8_t setnumber)
{
if(setnumber > 5) setnumber = 5;
eeprom_write_block((uint8_t *) &ParamSet.ChannelAssignment[0], &EEPromArray[EEPROM_ADR_PARAMSET_BEGIN + PARAMSET_STRUCT_LEN * setnumber], PARAMSET_STRUCT_LEN);
// set this parameter set to active set
eeprom_write_byte(&EEPromArray[PID_ACTIVE_SET], setnumber);
}
 
/***************************************************/
/* Get active parameter set */
/***************************************************/
uint8_t GetActiveParamSet(void)
{
uint8_t setnumber;
setnumber = eeprom_read_byte(&EEPromArray[PID_ACTIVE_SET]);
if(setnumber > 5)
{
setnumber = 2;
eeprom_write_byte(&EEPromArray[PID_ACTIVE_SET], setnumber);
}
return(setnumber);
}
 
/***************************************************/
/* Set active parameter set */
/***************************************************/
void SetActiveParamSet(uint8_t setnumber)
{
if(setnumber > 5) setnumber = 5;
eeprom_write_byte(&EEPromArray[PID_ACTIVE_SET], setnumber);
}
 
/***************************************************/
/* Initialize EEPROM Parameter Sets */
/***************************************************/
void ParamSet_Init(void)
{
// version check
if(eeprom_read_byte(&EEPromArray[PID_VERSION]) != EEPARAM_VERSION)
{
// if version check faild
printf("\n\rInit. EEPROM: Generating Default-Parameter...");
ParamSet_DefaultSet1(); // Fill ParamSet Structure to default parameter set 1 (Sport)
// fill all 5 parameter settings with set 1 except otherwise defined
for (unsigned char i=0;i<6;i++)
{
if(i==2) ParamSet_DefaultSet2(); // Kamera
if(i==3) ParamSet_DefaultSet3(); // Beginner
if(i>3) ParamSet_DefaultSet2(); // Kamera
ParamSet_WriteToEEProm(i);
}
// default-Setting is parameter set 3
SetParamByte(PID_ACTIVE_SET, 3);
// update version info
SetParamByte(PID_VERSION, EEPARAM_VERSION);
}
// read active parameter set to ParamSet stucture
ParamSet_ReadFromEEProm(GetParamByte(PID_ACTIVE_SET));
printf("\n\rUsing Parameter Set %d", GetParamByte(PID_ACTIVE_SET));
}
/branches/V0.68d CRK HexaLotte/eeprom.h
0,0 → 1,122
#ifndef _EEPROM_H
#define _EEPROM_H
 
#include <inttypes.h>
 
#define EEPROM_ADR_PARAM_BEGIN 0
#define PID_VERSION 1 // byte
#define PID_ACTIVE_SET 2 // byte
#define PID_PRESSURE_OFFSET 3 // byte
#define PID_ACC_PITCH 4 // word
#define PID_ACC_ROLL 6 // word
#define PID_ACC_Z 8 // word
 
#define PID_MM3_X_OFF 10 // byte
#define PID_MM3_Y_OFF 11 // byte
#define PID_MM3_Z_OFF 12 // byte
#define PID_MM3_X_RANGE 13 // word
#define PID_MM3_Y_RANGE 15 // word
#define PID_MM3_Z_RANGE 17 // word
 
 
#define EEPROM_ADR_PARAMSET_BEGIN 100
 
// bit mask for mk_param_struct.GlobalConfig
#define CFG_HEIGHT_CONTROL 0x01
#define CFG_HEIGHT_SWITCH 0x02
#define CFG_HEADING_HOLD 0x04
#define CFG_COMPASS_ACTIVE 0x08
#define CFG_COMPASS_FIX 0x10
#define CFG_GPS_ACTIVE 0x20
#define CFG_AXIS_COUPLING_ACTIVE 0x40
#define CFG_ROTARY_RATE_LIMITER 0x80
 
// bit mask for mk_param_struct.LoopConfig
#define CFG_LOOP_UP 0x01
#define CFG_LOOP_DOWN 0x02
#define CFG_LOOP_LEFT 0x04
#define CFG_LOOP_RIGHT 0x08
 
// defines for lookup mk_param_struct.ChannelAssignment
#define CH_PITCH 0
#define CH_ROLL 1
#define CH_THRUST 2
#define CH_YAW 3
#define CH_POTI1 4
#define CH_POTI2 5
#define CH_POTI3 6
#define CH_POTI4 7
 
#define EEPARAM_VERSION 69 // is count up, if EE_Paramater stucture has changed (compatibility)
 
// values above 250 representing poti1 to poti4
typedef struct
{
uint8_t ChannelAssignment[8]; // see upper defines for details
uint8_t GlobalConfig; // see upper defines for bitcoding
uint8_t Height_MinThrust; // Wert : 0-100
uint8_t Height_D; // Wert : 0-250
uint8_t MaxHeight; // Wert : 0-32
uint8_t Height_P; // Wert : 0-32
uint8_t Height_Gain; // Wert : 0-50
uint8_t Height_ACC_Effect; // Wert : 0-250
uint8_t Stick_P; // Wert : 1-6
uint8_t Stick_D; // Wert : 0-64
uint8_t Yaw_P; // Wert : 1-20
uint8_t Trust_Min; // Wert : 0-32
uint8_t Trust_Max; // Wert : 33-250
uint8_t GyroAccFactor; // Wert : 1-64
uint8_t CompassYawEffect; // Wert : 0-32
uint8_t Gyro_P; // Wert : 10-250
uint8_t Gyro_I; // Wert : 0-250
uint8_t LowVoltageWarning; // Wert : 0-250
uint8_t EmergencyThrust; // Wert : 0-250 //Gaswert bei Empängsverlust
uint8_t EmergencyThrustDuration; // Wert : 0-250 // Zeitbis auf EmergencyThrust geschaltet wird, wg. Rx-Problemen
uint8_t UfoArrangement; // x oder + Formation
uint8_t I_Factor; // Wert : 0-250
uint8_t UserParam1; // Wert : 0-250
uint8_t UserParam2; // Wert : 0-250
uint8_t UserParam3; // Wert : 0-250
uint8_t UserParam4; // Wert : 0-250
uint8_t ServoPitchControl; // Wert : 0-250 // Stellung des Servos
uint8_t ServoPitchComp; // Wert : 0-250 // Einfluss Gyro/Servo
uint8_t ServoPitchMin; // Wert : 0-250 // Anschlag
uint8_t ServoPitchMax; // Wert : 0-250 // Anschlag
uint8_t ServoPitchRefresh; //
uint8_t LoopThrustLimit; // Wert: 0-250 max. Gas während Looping
uint8_t LoopThreshold; // Wert: 0-250 Schwelle für Stickausschlag
uint8_t LoopHysteresis; // Wert: 0-250 Hysterese für Stickausschlag
uint8_t Yaw_PosFeedback; // Wert: 0-250 Faktor, mit dem Yaw die Achsen Roll und Pitch koppelt (PitchRollMitkopplung)
uint8_t Yaw_NegFeedback; // Wert: 0-250 Faktor, mit dem Yaw die Achsen Roll und Pitch Gegenkoppelt (PitchRollGegenkopplung)
uint8_t AngleTurnOverPitch; // Wert: 0-250 180°-Punkt
uint8_t AngleTurnOverRoll; // Wert: 0-250 180°-Punkt
uint8_t GyroAccTrim; // 1/k (Koppel_ACC_Wirkung)
uint8_t DriftComp;
uint8_t DynamicStability;
uint8_t UserParam5; // Wert : 0-250
uint8_t UserParam6; // Wert : 0-250
uint8_t UserParam7; // Wert : 0-250
uint8_t UserParam8; // Wert : 0-250
uint8_t LoopConfig; // see upper defines for bitcoding
uint8_t ServoPitchCompInvert; // Wert : 0-250 0 oder 1 // WICHTIG!!! am Ende lassen
uint8_t Reserved[4];
int8_t Name[12];
} paramset_t;
 
#define PARAMSET_STRUCT_LEN sizeof(paramset_t)
 
extern paramset_t ParamSet;
 
extern void ParamSet_Init(void);
extern void ParamSet_ReadFromEEProm(uint8_t setnumber);
extern void ParamSet_WriteToEEProm(uint8_t setnumber);
extern uint8_t GetActiveParamSet(void);
extern void SetActiveParamSet(uint8_t setnumber);
 
 
extern uint8_t GetParamByte(uint8_t param_id);
extern void SetParamByte(uint8_t param_id, uint8_t value);
extern uint16_t GetParamWord(uint8_t param_id);
extern void SetParamWord(uint8_t param_id, uint16_t value);
 
#endif //_EEPROM_H
/branches/V0.68d CRK HexaLotte/fc.c
0,0 → 1,1310
/*#######################################################################################
Flight Control
#######################################################################################*/
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Copyright (c) 04.2007 Holger Buss
// + Nur für den privaten Gebrauch
// + www.MikroKopter.com
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation),
// + dass eine Nutzung (auch auszugsweise) nur für den privaten (nicht-kommerziellen) Gebrauch zulässig ist.
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt
// + bzgl. der Nutzungsbedingungen aufzunehmen.
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen,
// + Verkauf von Luftbildaufnahmen, usw.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht,
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts
// + auf anderen Webseiten oder sonstigen Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de"
// + eindeutig als Ursprung verlinkt werden
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion
// + Benutzung auf eigene Gefahr
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur
// + mit unserer Zustimmung zulässig
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Redistributions of source code (with or without modifications) must retain the above copyright notice,
// + this list of conditions and the following disclaimer.
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived
// + from this software without specific prior written permission.
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet
// + for non-commercial use (directly or indirectly)
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted
// + with our written permission
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be
// + clearly linked as origin
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// + POSSIBILITY OF SUCH DAMAGE.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#include <stdlib.h>
#include <avr/io.h>
 
#include "main.h"
#include "eeprom.h"
#include "timer0.h"
#include "_Settings.h"
#include "analog.h"
#include "fc.h"
#include "gps.h"
#include "uart.h"
#include "rc.h"
#include "twimaster.h"
#ifdef USE_MM3
#include "mm3.h"
#endif
#ifdef USE_CMPS03
#include "cmps03.h"
#endif
#include "led.h"
 
volatile uint16_t I2CTimeout = 100;
// gyro readings
volatile int16_t Reading_GyroPitch, Reading_GyroRoll, Reading_GyroYaw;
// gyro neutral readings
volatile int16_t AdNeutralPitch = 0, AdNeutralRoll = 0, AdNeutralYaw = 0;
volatile int16_t StartNeutralRoll = 0, StartNeutralPitch = 0;
// mean accelerations
volatile int16_t Mean_AccPitch, Mean_AccRoll, Mean_AccTop;
 
// neutral acceleration readings
volatile int16_t NeutralAccX=0, NeutralAccY=0;
volatile float NeutralAccZ = 0;
 
// attitude gyro integrals
volatile int32_t IntegralPitch = 0,IntegralPitch2 = 0;
volatile int32_t IntegralRoll = 0,IntegralRoll2 = 0;
volatile int32_t IntegralYaw = 0;
volatile int32_t Reading_IntegralGyroPitch = 0, Reading_IntegralGyroPitch2 = 0;
volatile int32_t Reading_IntegralGyroRoll = 0, Reading_IntegralGyroRoll2 = 0;
volatile int32_t Reading_IntegralGyroYaw = 0;
volatile int32_t MeanIntegralPitch;
volatile int32_t MeanIntegralRoll;
 
// attitude acceleration integrals
volatile int32_t IntegralAccPitch = 0, IntegralAccRoll = 0;
volatile int32_t Reading_Integral_Top = 0;
 
// compass course
volatile int16_t CompassHeading = -1; // negative angle indicates invalid data.
volatile int16_t CompassCourse = -1;
volatile int16_t CompassOffCourse = 0;
 
// flags
uint8_t MotorsOn = 0;
uint8_t EmergencyLanding = 0;
 
int32_t TurnOver180Pitch = 250000L, TurnOver180Roll = 250000L;
 
float Gyro_P_Factor;
float Gyro_I_Factor;
 
volatile int16_t DiffPitch, DiffRoll;
 
int16_t Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0, Poti5 = 0, Poti6 = 0, Poti7 = 0, Poti8 = 0;
 
// setpoints for motors
volatile uint8_t Motor_FrontLeft, Motor_FrontRight, Motor_RearLeft, Motor_RearRight, Motor_Right, Motor_Left;
 
// stick values derived by rc channels readings
int16_t StickPitch = 0, StickRoll = 0, StickYaw = 0, StickThrust = 0;
int16_t MaxStickPitch = 0, MaxStickRoll = 0;
// stick values derived by uart inputs
int16_t ExternStickPitch = 0, ExternStickRoll = 0, ExternStickYaw = 0, ExternHeightValue = -20;
 
 
 
 
int16_t ReadingHeight = 0;
int16_t SetPointHeight = 0;
 
int16_t AttitudeCorrectionRoll = 0, AttitudeCorrectionPitch = 0;
 
float Ki = FACTOR_I;
 
uint8_t Looping_Pitch = 0, Looping_Roll = 0;
uint8_t Looping_Left = 0, Looping_Right = 0, Looping_Down = 0, Looping_Top = 0;
 
 
fc_param_t FCParam = {48,251,16,58,64,150,150,2,10,0,0,0,0,0,0,0,0,100,70,0,0,100};
 
 
/************************************************************************/
/* Creates numbeeps beeps at the speaker */
/************************************************************************/
void Beep(uint8_t numbeeps)
{
while(numbeeps--)
{
if(MotorsOn) return; //auf keinen Fall im Flug!
BeepTime = 100; // 0.1 second
Delay_ms(250); // blocks 250 ms as pause to next beep,
// this will block the flight control loop,
// therefore do not use this funktion if motors are running
}
}
 
/************************************************************************/
/* Neutral Readings */
/************************************************************************/
void SetNeutral(void)
{
NeutralAccX = 0;
NeutralAccY = 0;
NeutralAccZ = 0;
AdNeutralPitch = 0;
AdNeutralRoll = 0;
AdNeutralYaw = 0;
FCParam.Yaw_PosFeedback = 0;
FCParam.Yaw_NegFeedback = 0;
CalibMean();
Delay_ms_Mess(100);
CalibMean();
if((ParamSet.GlobalConfig & CFG_HEIGHT_CONTROL)) // Height Control activated?
{
if((ReadingAirPressure > 950) || (ReadingAirPressure < 750)) SearchAirPressureOffset();
}
AdNeutralPitch = AdValueGyrPitch;
AdNeutralRoll = AdValueGyrRoll;
AdNeutralYaw = AdValueGyrYaw;
StartNeutralRoll = AdNeutralRoll;
StartNeutralPitch = AdNeutralPitch;
if(GetParamWord(PID_ACC_PITCH) > 1023)
{
NeutralAccY = abs(Mean_AccRoll) / ACC_AMPLIFY;
NeutralAccX = abs(Mean_AccPitch) / ACC_AMPLIFY;
NeutralAccZ = Current_AccZ;
}
else
{
NeutralAccX = (int16_t)GetParamWord(PID_ACC_PITCH);
NeutralAccY = (int16_t)GetParamWord(PID_ACC_ROLL);
NeutralAccZ = (int16_t)GetParamWord(PID_ACC_Z);
}
Reading_IntegralGyroPitch = 0;
Reading_IntegralGyroPitch2 = 0;
Reading_IntegralGyroRoll = 0;
Reading_IntegralGyroRoll2 = 0;
Reading_IntegralGyroYaw = 0;
Reading_GyroPitch = 0;
Reading_GyroRoll = 0;
Reading_GyroYaw = 0;
StartAirPressure = AirPressure;
HeightD = 0;
Reading_Integral_Top = 0;
CompassCourse = CompassHeading;
BeepTime = 50;
TurnOver180Pitch = (int32_t) ParamSet.AngleTurnOverPitch * 2500L;
TurnOver180Roll = (int32_t) ParamSet.AngleTurnOverRoll * 2500L;
ExternHeightValue = 0;
GPS_Neutral();
}
 
/************************************************************************/
/* Averaging Measurement Readings */
/************************************************************************/
void Mean(void)
{
static int32_t tmpl,tmpl2;
 
// Get offset corrected gyro readings (~ to angular velocity)
Reading_GyroYaw = AdNeutralYaw - AdValueGyrYaw;
Reading_GyroRoll = AdValueGyrRoll - AdNeutralRoll;
Reading_GyroPitch = AdValueGyrPitch - AdNeutralPitch;
 
DebugOut.Analog[26] = Reading_GyroPitch;
DebugOut.Analog[28] = Reading_GyroRoll;
 
// Acceleration Sensor
// sliding average sensor readings
Mean_AccPitch = ((int32_t)Mean_AccPitch * 1 + ((ACC_AMPLIFY * (int32_t)AdValueAccPitch))) / 2L;
Mean_AccRoll = ((int32_t)Mean_AccRoll * 1 + ((ACC_AMPLIFY * (int32_t)AdValueAccRoll))) / 2L;
Mean_AccTop = ((int32_t)Mean_AccTop * 1 + ((int32_t)AdValueAccTop)) / 2L;
 
// sum sensor readings for later averaging
IntegralAccPitch += ACC_AMPLIFY * AdValueAccPitch;
IntegralAccRoll += ACC_AMPLIFY * AdValueAccRoll;
 
// Yaw
// calculate yaw gyro intergral (~ to rotation angle)
Reading_IntegralGyroYaw += Reading_GyroYaw;
// Coupling fraction
if(!Looping_Pitch && !Looping_Roll && (ParamSet.GlobalConfig & CFG_AXIS_COUPLING_ACTIVE))
{
tmpl = Reading_IntegralGyroPitch / 4096L;
tmpl *= Reading_GyroYaw;
tmpl *= FCParam.Yaw_PosFeedback; //125
tmpl /= 2048L;
tmpl2 = Reading_IntegralGyroRoll / 4096L;
tmpl2 *= Reading_GyroYaw;
tmpl2 *= FCParam.Yaw_PosFeedback;
tmpl2 /= 2048L;
}
else tmpl = tmpl2 = 0;
 
// Roll
Reading_GyroRoll += tmpl;
Reading_GyroRoll += (tmpl2 * FCParam.Yaw_NegFeedback) / 512L;
Reading_IntegralGyroRoll2 += Reading_GyroRoll;
Reading_IntegralGyroRoll += Reading_GyroRoll - AttitudeCorrectionRoll;
if(Reading_IntegralGyroRoll > TurnOver180Roll)
{
Reading_IntegralGyroRoll = -(TurnOver180Roll - 10000L);
Reading_IntegralGyroRoll2 = Reading_IntegralGyroRoll;
}
if(Reading_IntegralGyroRoll < -TurnOver180Roll)
{
Reading_IntegralGyroRoll = (TurnOver180Roll - 10000L);
Reading_IntegralGyroRoll2 = Reading_IntegralGyroRoll;
}
if(AdValueGyrRoll < 15) Reading_GyroRoll = -1000;
if(AdValueGyrRoll < 7) Reading_GyroRoll = -2000;
if(BoardRelease == 10)
{
if(AdValueGyrRoll > 1010) Reading_GyroRoll = +1000;
if(AdValueGyrRoll > 1017) Reading_GyroRoll = +2000;
}
else
{
if(AdValueGyrRoll > 2020) Reading_GyroRoll = +1000;
if(AdValueGyrRoll > 2034) Reading_GyroRoll = +2000;
}
// Pitch
Reading_GyroPitch -= tmpl2;
Reading_GyroPitch -= (tmpl*FCParam.Yaw_NegFeedback) / 512L;
Reading_IntegralGyroPitch2 += Reading_GyroPitch;
Reading_IntegralGyroPitch += Reading_GyroPitch - AttitudeCorrectionPitch;
if(Reading_IntegralGyroPitch > TurnOver180Pitch)
{
Reading_IntegralGyroPitch = -(TurnOver180Pitch - 10000L);
Reading_IntegralGyroPitch2 = Reading_IntegralGyroPitch;
}
if(Reading_IntegralGyroPitch < -TurnOver180Pitch)
{
Reading_IntegralGyroPitch = (TurnOver180Pitch - 10000L);
Reading_IntegralGyroPitch2 = Reading_IntegralGyroPitch;
}
if(AdValueGyrPitch < 15) Reading_GyroPitch = -1000;
if(AdValueGyrPitch < 7) Reading_GyroPitch = -2000;
if(BoardRelease == 10)
{
if(AdValueGyrPitch > 1010) Reading_GyroPitch = +1000;
if(AdValueGyrPitch > 1017) Reading_GyroPitch = +2000;
}
else
{
if(AdValueGyrPitch > 2020) Reading_GyroPitch = +1000;
if(AdValueGyrPitch > 2034) Reading_GyroPitch = +2000;
}
 
// start ADC again to capture measurement values for the next loop
ADC_Enable();
 
IntegralYaw = Reading_IntegralGyroYaw;
IntegralPitch = Reading_IntegralGyroPitch;
IntegralRoll = Reading_IntegralGyroRoll;
IntegralPitch2 = Reading_IntegralGyroPitch2;
IntegralRoll2 = Reading_IntegralGyroRoll2;
 
if((ParamSet.GlobalConfig & CFG_ROTARY_RATE_LIMITER) && !Looping_Pitch && !Looping_Roll)
{
if(Reading_GyroPitch > 200) Reading_GyroPitch += 4 * (Reading_GyroPitch - 200);
else if(Reading_GyroPitch < -200) Reading_GyroPitch += 4 * (Reading_GyroPitch + 200);
if(Reading_GyroRoll > 200) Reading_GyroRoll += 4 * (Reading_GyroRoll - 200);
else if(Reading_GyroRoll < -200) Reading_GyroRoll += 4 * (Reading_GyroRoll + 200);
}
}
 
/************************************************************************/
/* Averaging Measurement Readings for Calibration */
/************************************************************************/
void CalibMean(void)
{
// stop ADC to avoid changing values during calculation
ADC_Disable();
 
Reading_GyroPitch = AdValueGyrPitch;
Reading_GyroRoll = AdValueGyrRoll;
Reading_GyroYaw = AdValueGyrYaw;
 
Mean_AccPitch = ACC_AMPLIFY * (int32_t)AdValueAccPitch;
Mean_AccRoll = ACC_AMPLIFY * (int32_t)AdValueAccRoll;
Mean_AccTop = (int32_t)AdValueAccTop;
// start ADC (enables internal trigger so that the ISR in analog.c
// updates the readings once)
ADC_Enable();
 
TurnOver180Pitch = (int32_t) ParamSet.AngleTurnOverPitch * 2500L;
TurnOver180Roll = (int32_t) ParamSet.AngleTurnOverRoll * 2500L;
}
 
/************************************************************************/
/* Transmit Motor Data via I2C */
/************************************************************************/
void SendMotorData(void)
{
if(MOTOR_OFF || !MotorsOn)
{
Motor_RearLeft = 0;
Motor_RearRight = 0;
Motor_FrontLeft = 0;
Motor_FrontRight = 0;
Motor_Right = 0;
Motor_Left = 0;
if(MotorTest[0]) Motor_FrontLeft = Motor_FrontRight = MotorTest[0];
if(MotorTest[1]) Motor_RearLeft = Motor_RearRight = MotorTest[1];
if(MotorTest[2]) Motor_Left = MotorTest[2];
if(MotorTest[3]) Motor_Right = MotorTest[3];
}
 
DebugOut.Analog[12] = Motor_FrontLeft;
DebugOut.Analog[13] = Motor_RearRight;
DebugOut.Analog[14] = Motor_FrontRight;
DebugOut.Analog[15] = Motor_RearLeft;
DebugOut.Analog[16] = Motor_Left;
DebugOut.Analog[17] = Motor_Right;
//Start I2C Interrupt Mode
twi_state = 0;
motor = 0;
I2C_Start();
}
 
 
 
/************************************************************************/
/* Maps the parameter to poti values */
/************************************************************************/
void ParameterMapping(void)
{
if(RC_Quality > 160) // do the mapping of RC-Potis only if the rc-signal is ok
// else the last updated values are used
{
//update poti values by rc-signals
#define CHK_POTI(b,a,min,max) { if(a > 250) { if(a == 251) b = Poti1; else if(a == 252) b = Poti2; else if(a == 253) b = Poti3; else if(a == 254) b = Poti4;} else b = a; if(b <= min) b = min; else if(b >= max) b = max;}
CHK_POTI(FCParam.MaxHeight,ParamSet.MaxHeight,0,255);
CHK_POTI(FCParam.Height_D,ParamSet.Height_D,0,100);
CHK_POTI(FCParam.Height_P,ParamSet.Height_P,0,100);
CHK_POTI(FCParam.Height_ACC_Effect,ParamSet.Height_ACC_Effect,0,255);
CHK_POTI(FCParam.CompassYawEffect,ParamSet.CompassYawEffect,0,255);
CHK_POTI(FCParam.Gyro_P,ParamSet.Gyro_P,10,255);
CHK_POTI(FCParam.Gyro_I,ParamSet.Gyro_I,0,255);
CHK_POTI(FCParam.I_Factor,ParamSet.I_Factor,0,255);
CHK_POTI(FCParam.UserParam1,ParamSet.UserParam1,0,255);
CHK_POTI(FCParam.UserParam2,ParamSet.UserParam2,0,255);
CHK_POTI(FCParam.UserParam3,ParamSet.UserParam3,0,255);
CHK_POTI(FCParam.UserParam4,ParamSet.UserParam4,0,255);
CHK_POTI(FCParam.UserParam5,ParamSet.UserParam5,0,255);
CHK_POTI(FCParam.UserParam6,ParamSet.UserParam6,0,255);
CHK_POTI(FCParam.UserParam7,ParamSet.UserParam7,0,255);
CHK_POTI(FCParam.UserParam8,ParamSet.UserParam8,0,255);
CHK_POTI(FCParam.ServoPitchControl,ParamSet.ServoPitchControl,0,255);
CHK_POTI(FCParam.LoopThrustLimit,ParamSet.LoopThrustLimit,0,255);
CHK_POTI(FCParam.Yaw_PosFeedback,ParamSet.Yaw_PosFeedback,0,255);
CHK_POTI(FCParam.Yaw_NegFeedback,ParamSet.Yaw_NegFeedback,0,255);
CHK_POTI(FCParam.DynamicStability,ParamSet.DynamicStability,0,255);
Ki = (float) FCParam.I_Factor * FACTOR_I;
}
}
 
 
/************************************************************************/
/* MotorControl */
/************************************************************************/
void MotorControl(void)
{
int16_t MotorValue, pd_result, h, tmp_int;
int16_t YawMixFraction, ThrustMixFraction, PitchMixFraction, RollMixFraction;
static int32_t SumPitch = 0, SumRoll = 0;
static int32_t SetPointYaw = 0;
static int32_t IntegralErrorPitch = 0;
static int32_t IntegralErrorRoll = 0;
static uint16_t RcLostTimer;
static uint8_t delay_neutral = 0, delay_startmotors = 0, delay_stopmotors = 0;
static uint16_t Model_Is_Flying = 0;
static uint8_t HeightControlActive = 0;
static int16_t HeightControlThrust = 0;
static int8_t TimerDebugOut = 0;
static uint16_t UpdateCompassCourse = 0;
static int32_t CorrectionPitch, CorrectionRoll;
 
Mean();
GRN_ON;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// determine thrust value
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ThrustMixFraction = StickThrust;
if(ThrustMixFraction < 0) ThrustMixFraction = 0;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// RC-signal is bad
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(RC_Quality < 120) // the rc-frame signal is not reveived or noisy
{
if(!PcAccess) // if also no PC-Access via UART
{
if(BeepModulation == 0xFFFF)
{
BeepTime = 15000; // 1.5 seconds
BeepModulation = 0x0C00;
}
}
if(RcLostTimer) RcLostTimer--; // decremtent timer after rc sigal lost
else // rc lost countdown finished
{
MotorsOn = 0; // stop all motors
EmergencyLanding = 0; // emergency landing is over
}
ROT_ON; // set red led
if(Model_Is_Flying > 2000) // wahrscheinlich in der Luft --> langsam absenken
{
ThrustMixFraction = ParamSet.EmergencyThrust; // set emergency thrust
EmergencyLanding = 1; // enable emergency landing
// set neutral rc inputs
PPM_diff[ParamSet.ChannelAssignment[CH_PITCH]] = 0;
PPM_diff[ParamSet.ChannelAssignment[CH_ROLL]] = 0;
PPM_diff[ParamSet.ChannelAssignment[CH_YAW]] = 0;
PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] = 0;
PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] = 0;
PPM_in[ParamSet.ChannelAssignment[CH_YAW]] = 0;
}
else MotorsOn = 0; // switch of all motors
} // eof RC_Quality < 120
else
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// RC-signal is good
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(RC_Quality > 150)
{
EmergencyLanding = 0; // switch off emergency landing if RC-signal is okay
// reset emergency timer
RcLostTimer = ParamSet.EmergencyThrustDuration * 50;
if(ThrustMixFraction > 40)
{
if(Model_Is_Flying < 0xFFFF) Model_Is_Flying++;
}
if((Model_Is_Flying < 200) || (ThrustMixFraction < 40))
{
SumPitch = 0;
SumRoll = 0;
Reading_IntegralGyroYaw = 0;
}
 
if(Poti1 < PPM_in[ParamSet.ChannelAssignment[CH_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[ParamSet.ChannelAssignment[CH_POTI1]] + 110 && Poti1) Poti1--;
if(Poti2 < PPM_in[ParamSet.ChannelAssignment[CH_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[ParamSet.ChannelAssignment[CH_POTI2]] + 110 && Poti2) Poti2--;
if(Poti3 < PPM_in[ParamSet.ChannelAssignment[CH_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[ParamSet.ChannelAssignment[CH_POTI3]] + 110 && Poti3) Poti3--;
if(Poti4 < PPM_in[ParamSet.ChannelAssignment[CH_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[ParamSet.ChannelAssignment[CH_POTI4]] + 110 && Poti4) Poti4--;
//PPM24-Extension
if(Poti5 < PPM_in[9] + 110) Poti5++; else if(Poti5 > PPM_in[9] + 110 && Poti5) Poti5--;
if(Poti6 < PPM_in[10] + 110) Poti6++; else if(Poti6 > PPM_in[10] + 110 && Poti6) Poti6--;
if(Poti7 < PPM_in[11] + 110) Poti7++; else if(Poti7 > PPM_in[11] + 110 && Poti7) Poti7--;
if(Poti8 < PPM_in[12] + 110) Poti8++; else if(Poti8 > PPM_in[12] + 110 && Poti8) Poti8--;
//limit poti values
if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255;
if(Poti2 < 0) Poti2 = 0; else if(Poti2 > 255) Poti2 = 255;
if(Poti3 < 0) Poti3 = 0; else if(Poti3 > 255) Poti3 = 255;
if(Poti4 < 0) Poti4 = 0; else if(Poti4 > 255) Poti4 = 255;
//PPM24-Extension
if(Poti5 < 0) Poti5 = 0; else if(Poti5 > 255) Poti5 = 255;
if(Poti6 < 0) Poti6 = 0; else if(Poti6 > 255) Poti6 = 255;
if(Poti7 < 0) Poti7 = 0; else if(Poti7 > 255) Poti7 = 255;
if(Poti8 < 0) Poti8 = 0; else if(Poti8 > 255) Poti8 = 255;
 
// if motors are off and the thrust stick is in the upper position
if((PPM_in[ParamSet.ChannelAssignment[CH_THRUST]] > 80) && MotorsOn == 0)
{
// and if the yaw stick is in the leftmost position
if(PPM_in[ParamSet.ChannelAssignment[CH_YAW]] > 75)
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// calibrate the neutral readings of all attitude sensors
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
{
if(++delay_neutral > 200) // not immediately (wait 200 loops = 200 * 2ms = 0.4 s)
{
delay_neutral = 0;
GRN_OFF;
Model_Is_Flying = 0;
// check roll/pitch stick position
// if pitch stick is topmost or roll stick is leftmost --> change parameter setting
// according to roll/pitch stick position
if(PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] > 70 || abs(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]]) > 70)
{
uint8_t setting = 1; // default
// _________
// |2 3 4|
// | |
// |1 5|
// | |
// |_________|
//
// roll stick leftmost and pitch stick centered --> setting 1
if(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] > 70 && PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] < 70) setting = 1;
// roll stick leftmost and pitch stick topmost --> setting 2
if(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] > 70 && PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] > 70) setting = 2;
// roll stick centered an pitch stick topmost --> setting 3
if(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] < 70 && PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] > 70) setting = 3;
// roll stick rightmost and pitch stick topmost --> setting 4
if(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] <-70 && PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] > 70) setting = 4;
// roll stick rightmost and pitch stick centered --> setting 5
if(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] <-70 && PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] < 70) setting = 5;
// update active parameter set in eeprom
SetActiveParamSet(setting);
}
ParamSet_ReadFromEEProm(GetActiveParamSet());
SetNeutral();
Beep(GetActiveParamSet());
}
}
// and if the yaw stick is in the rightmost position
// save the ACC neutral setting to eeprom
else if(PPM_in[ParamSet.ChannelAssignment[CH_YAW]] < -75)
{
if(++delay_neutral > 200) // not immediately (wait 200 loops = 200 * 2ms = 0.4 s)
{
delay_neutral = 0;
GRN_OFF;
SetParamWord(PID_ACC_PITCH, 0xFFFF); // make value invalid
Model_Is_Flying = 0;
SetNeutral();
// Save ACC neutral settings to eeprom
SetParamWord(PID_ACC_PITCH, (uint16_t)NeutralAccX);
SetParamWord(PID_ACC_ROLL, (uint16_t)NeutralAccY);
SetParamWord(PID_ACC_Z, (uint16_t)NeutralAccZ);
Beep(GetActiveParamSet());
}
}
else delay_neutral = 0;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// thrust stick is down
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(PPM_in[ParamSet.ChannelAssignment[CH_THRUST]] < -85)
{
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// and yaw stick is rightmost --> start motors
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(PPM_in[ParamSet.ChannelAssignment[CH_YAW]] < -75)
{
if(++delay_startmotors > 200) // not immediately (wait 200 loops = 200 * 2ms = 0.4 s)
{
delay_startmotors = 200; // do not repeat if once executed
Model_Is_Flying = 1;
MotorsOn = 1;
SetPointYaw = 0;
Reading_IntegralGyroYaw = 0;
Reading_IntegralGyroPitch = 0;
Reading_IntegralGyroRoll = 0;
Reading_IntegralGyroPitch2 = IntegralPitch;
Reading_IntegralGyroRoll2 = IntegralRoll;
SumPitch = 0;
SumRoll = 0;
if(ParamSet.GlobalConfig & CFG_GPS_ACTIVE)
{
GPS_SetHomePosition();
}
}
}
else delay_startmotors = 0; // reset delay timer if sticks are not in this position
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// and yaw stick is leftmost --> stop motors
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(PPM_in[ParamSet.ChannelAssignment[CH_YAW]] > 75)
{
if(++delay_stopmotors > 200) // not immediately (wait 200 loops = 200 * 2ms = 0.4 s)
{
delay_stopmotors = 200; // do not repeat if once executed
Model_Is_Flying = 0;
MotorsOn = 0;
if(ParamSet.GlobalConfig & CFG_GPS_ACTIVE)
{
GPS_ClearHomePosition();
}
}
}
else delay_stopmotors = 0; // reset delay timer if sticks are not in this position
}
// remapping of paameters only if the signal rc-sigbnal conditions are good
} // eof RC_Quality > 150
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// new values from RC
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(!NewPpmData-- || EmergencyLanding) // NewData = 0 means new data from RC
{
int tmp_int;
ParameterMapping(); // remapping params (online poti replacement)
// calculate Stick inputs by rc channels (P) and changing of rc channels (D)
StickPitch = (StickPitch * 3 + PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] * ParamSet.Stick_P) / 4;
StickPitch += PPM_diff[ParamSet.ChannelAssignment[CH_PITCH]] * ParamSet.Stick_D;
StickRoll = (StickRoll * 3 + PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] * ParamSet.Stick_P) / 4;
StickRoll += PPM_diff[ParamSet.ChannelAssignment[CH_ROLL]] * ParamSet.Stick_D;
 
// direct mapping of yaw and thrust
StickYaw = -PPM_in[ParamSet.ChannelAssignment[CH_YAW]];
StickThrust = PPM_in[ParamSet.ChannelAssignment[CH_THRUST]] + 120;// shift to positive numbers
 
// update max stick positions for pitch and roll
if(abs(PPM_in[ParamSet.ChannelAssignment[CH_PITCH]]) > MaxStickPitch)
MaxStickPitch = abs(PPM_in[ParamSet.ChannelAssignment[CH_PITCH]]);
else MaxStickPitch--;
if(abs(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]]) > MaxStickRoll)
MaxStickRoll = abs(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]]);
else MaxStickRoll--;
 
// update gyro control loop factors
 
Gyro_P_Factor = ((float) FCParam.Gyro_P + 10.0) / 256.0;
Gyro_I_Factor = ((float) FCParam.Gyro_I) / 44000;
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Digital Control via DubWise
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
#define KEY_VALUE (FCParam.UserParam1 * 4) // step width
if(DubWiseKeys[1]) BeepTime = 10;
if(DubWiseKeys[1] & DUB_KEY_UP) tmp_int = KEY_VALUE;
else if(DubWiseKeys[1] & DUB_KEY_DOWN) tmp_int = -KEY_VALUE;
else tmp_int = 0;
ExternStickPitch = (ExternStickPitch * 7 + tmp_int) / 8;
if(DubWiseKeys[1] & DUB_KEY_LEFT) tmp_int = KEY_VALUE;
else if(DubWiseKeys[1] & DUB_KEY_RIGHT) tmp_int = -KEY_VALUE;
else tmp_int = 0;
ExternStickRoll = (ExternStickRoll * 7 + tmp_int) / 8;
 
if(DubWiseKeys[0] & 8) ExternStickYaw = 50;else
if(DubWiseKeys[0] & 4) ExternStickYaw =-50;else ExternStickYaw = 0;
if(DubWiseKeys[0] & 2) ExternHeightValue++;
if(DubWiseKeys[0] & 16) ExternHeightValue--;
 
StickPitch += ExternStickPitch / 8;
StickRoll += ExternStickRoll / 8;
StickYaw += ExternStickYaw;
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ Analog control via serial communication
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
if(ExternControl.Config & 0x01 && FCParam.UserParam1 > 128)
{
StickPitch += (int16_t) ExternControl.Pitch * (int16_t) ParamSet.Stick_P;
StickRoll += (int16_t) ExternControl.Roll * (int16_t) ParamSet.Stick_P;
StickYaw += ExternControl.Yaw;
ExternHeightValue = (int16_t) ExternControl.Height * (int16_t)ParamSet.Height_Gain;
if(ExternControl.Thrust < StickThrust) StickThrust = ExternControl.Thrust;
}
// disable I part of gyro control feedback
if(ParamSet.GlobalConfig & CFG_HEADING_HOLD) Gyro_I_Factor = 0;
// avoid negative scaling factors
if(Gyro_P_Factor < 0) Gyro_P_Factor = 0;
if(Gyro_I_Factor < 0) Gyro_I_Factor = 0;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Looping?
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
if((PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] > ParamSet.LoopThreshold) && ParamSet.LoopConfig & CFG_LOOP_LEFT) Looping_Left = 1;
else
{
if(Looping_Left) // Hysteresis
{
if((PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] < (ParamSet.LoopThreshold - ParamSet.LoopHysteresis))) Looping_Left = 0;
}
}
if((PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] < -ParamSet.LoopThreshold) && ParamSet.LoopConfig & CFG_LOOP_RIGHT) Looping_Right = 1;
else
{
if(Looping_Right) // Hysteresis
{
if(PPM_in[ParamSet.ChannelAssignment[CH_ROLL]] > -(ParamSet.LoopThreshold - ParamSet.LoopHysteresis)) Looping_Right = 0;
}
}
 
if((PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] > ParamSet.LoopThreshold) && ParamSet.LoopConfig & CFG_LOOP_UP) Looping_Top = 1;
else
{
if(Looping_Top) // Hysteresis
{
if((PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] < (ParamSet.LoopThreshold - ParamSet.LoopHysteresis))) Looping_Top = 0;
}
}
if((PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] < -ParamSet.LoopThreshold) && ParamSet.LoopConfig & CFG_LOOP_DOWN) Looping_Down = 1;
else
{
if(Looping_Down) // Hysteresis
{
if(PPM_in[ParamSet.ChannelAssignment[CH_PITCH]] > -(ParamSet.LoopThreshold - ParamSet.LoopHysteresis)) Looping_Down = 0;
}
}
 
if(Looping_Left || Looping_Right) Looping_Roll = 1; else Looping_Roll = 0;
if(Looping_Top || Looping_Down) {Looping_Pitch = 1; Looping_Roll = 0; Looping_Left = 0; Looping_Right = 0;} else Looping_Pitch = 0;
} // End of new RC-Values or Emergency Landing
 
 
if(Looping_Roll) BeepTime = 100;
if(Looping_Roll || Looping_Pitch)
{
if(ThrustMixFraction > ParamSet.LoopThrustLimit) ThrustMixFraction = ParamSet.LoopThrustLimit;
}
 
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ LED Control on J16/J17
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
LED1_Time = FCParam.UserParam7;
LED2_Time = FCParam.UserParam8;
LED_Update();
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// in case of emergency landing
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// set all inputs to save values
if(EmergencyLanding)
{
StickYaw = 0;
StickPitch = 0;
StickRoll = 0;
Gyro_P_Factor = 0.5;
Gyro_I_Factor = 0.003;
Looping_Roll = 0;
Looping_Pitch = 0;
MaxStickPitch = 0;
MaxStickRoll = 0;
}
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Trim Gyro-Integrals to ACC-Signals
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
#define BALANCE_NUMBER 256L
// sum for averaging
MeanIntegralPitch += IntegralPitch;
MeanIntegralRoll += IntegralRoll;
 
if(Looping_Pitch || Looping_Roll) // if looping in any direction
{
// reset averaging for acc and gyro integral as well as gyro integral acc correction
MeasurementCounter = 0;
 
IntegralAccPitch = 0;
IntegralAccRoll = 0;
 
MeanIntegralPitch = 0;
MeanIntegralRoll = 0;
 
Reading_IntegralGyroPitch2 = Reading_IntegralGyroPitch;
Reading_IntegralGyroRoll2 = Reading_IntegralGyroRoll;
 
AttitudeCorrectionPitch = 0;
AttitudeCorrectionRoll = 0;
}
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(!Looping_Pitch && !Looping_Roll) // if not lopping in any direction
{
int32_t tmp_long, tmp_long2;
// determine the deviation of gyro integral from averaged acceleration sensor
tmp_long = (int32_t)(IntegralPitch / ParamSet.GyroAccFactor - (int32_t)Mean_AccPitch);
tmp_long /= 16;
tmp_long2 = (int32_t)(IntegralRoll / ParamSet.GyroAccFactor - (int32_t)Mean_AccRoll);
tmp_long2 /= 16;
 
if((MaxStickPitch > 15) || (MaxStickRoll > 15)) // reduce effect during stick commands
{
tmp_long /= 3;
tmp_long2 /= 3;
}
if(abs(PPM_in[ParamSet.ChannelAssignment[CH_YAW]]) > 25) // reduce further if yaw stick is active
{
tmp_long /= 3;
tmp_long2 /= 3;
}
 
#define BALANCE 32
// limit correction effect
if(tmp_long > BALANCE) tmp_long = BALANCE;
if(tmp_long < -BALANCE) tmp_long =-BALANCE;
if(tmp_long2 > BALANCE) tmp_long2 = BALANCE;
if(tmp_long2 <-BALANCE) tmp_long2 =-BALANCE;
// correct current readings
Reading_IntegralGyroPitch -= tmp_long;
Reading_IntegralGyroRoll -= tmp_long2;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// MeasurementCounter is incremented in the isr of analog.c
if(MeasurementCounter >= BALANCE_NUMBER) // averaging number has reached
{
static int16_t cnt = 0;
static int8_t last_n_p, last_n_n, last_r_p, last_r_n;
static int32_t MeanIntegralPitch_old, MeanIntegralRoll_old;
 
// if not lopping in any direction (this should be alwais the case,
// because the Measurement counter is reset to 0 if looping in any direction is active.)
if(!Looping_Pitch && !Looping_Roll)
{
// Calculate mean value of the gyro integrals
MeanIntegralPitch /= BALANCE_NUMBER;
MeanIntegralRoll /= BALANCE_NUMBER;
 
// Calculate mean of the acceleration values
IntegralAccPitch = (ParamSet.GyroAccFactor * IntegralAccPitch) / BALANCE_NUMBER;
IntegralAccRoll = (ParamSet.GyroAccFactor * IntegralAccRoll ) / BALANCE_NUMBER;
 
// Pitch ++++++++++++++++++++++++++++++++++++++++++++++++
// Calculate deviation of the averaged gyro integral and the averaged acceleration integral
IntegralErrorPitch = (int32_t)(MeanIntegralPitch - (int32_t)IntegralAccPitch);
CorrectionPitch = IntegralErrorPitch / ParamSet.GyroAccTrim;
AttitudeCorrectionPitch = CorrectionPitch / BALANCE_NUMBER;
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++
// Calculate deviation of the averaged gyro integral and the averaged acceleration integral
IntegralErrorRoll = (int32_t)(MeanIntegralRoll - (int32_t)IntegralAccRoll);
CorrectionRoll = IntegralErrorRoll / ParamSet.GyroAccTrim;
AttitudeCorrectionRoll = CorrectionRoll / BALANCE_NUMBER;
 
if((MaxStickPitch > 15) || (MaxStickRoll > 15) || (abs(PPM_in[ParamSet.ChannelAssignment[CH_YAW]]) > 25))
{
AttitudeCorrectionPitch /= 2;
AttitudeCorrectionRoll /= 2;
}
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gyro-Drift ermitteln
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// deviation of gyro pitch integral (IntegralPitch is corrected by averaged acc sensor)
IntegralErrorPitch = IntegralPitch2 - IntegralPitch;
Reading_IntegralGyroPitch2 -= IntegralErrorPitch;
// deviation of gyro pitch integral (IntegralPitch is corrected by averaged acc sensor)
IntegralErrorRoll = IntegralRoll2 - IntegralRoll;
Reading_IntegralGyroRoll2 -= IntegralErrorRoll;
 
 
// DebugOut.Analog[17] = IntegralAccPitch / 26;
DebugOut.Analog[18] = IntegralAccRoll / 26;
DebugOut.Analog[19] = IntegralErrorPitch;// / 26;
DebugOut.Analog[20] = IntegralErrorRoll;// / 26;
DebugOut.Analog[21] = MeanIntegralPitch / 26;
DebugOut.Analog[22] = MeanIntegralRoll / 26;
//DebugOut.Analog[28] = CorrectionPitch;
DebugOut.Analog[29] = CorrectionRoll;
DebugOut.Analog[30] = AttitudeCorrectionRoll * 10;
 
#define ERROR_LIMIT (BALANCE_NUMBER * 4)
#define ERROR_LIMIT2 (BALANCE_NUMBER * 16)
#define MOVEMENT_LIMIT 20000
// Pitch +++++++++++++++++++++++++++++++++++++++++++++++++
cnt = 1;// + labs(IntegralErrorPitch) / 4096;
CorrectionPitch = 0;
if(labs(MeanIntegralPitch_old - MeanIntegralPitch) < MOVEMENT_LIMIT)
{
if(IntegralErrorPitch > ERROR_LIMIT2)
{
if(last_n_p)
{
cnt += labs(IntegralErrorPitch) / ERROR_LIMIT2;
CorrectionPitch = IntegralErrorPitch / 8;
if(CorrectionPitch > 5000) CorrectionPitch = 5000;
AttitudeCorrectionPitch += CorrectionPitch / BALANCE_NUMBER;
}
else last_n_p = 1;
}
else last_n_p = 0;
if(IntegralErrorPitch < -ERROR_LIMIT2)
{
if(last_n_n)
{
cnt += labs(IntegralErrorPitch) / ERROR_LIMIT2;
CorrectionPitch = IntegralErrorPitch / 8;
if(CorrectionPitch < -5000) CorrectionPitch = -5000;
AttitudeCorrectionPitch += CorrectionPitch / BALANCE_NUMBER;
}
else last_n_n = 1;
}
else last_n_n = 0;
}
else cnt = 0;
if(cnt > ParamSet.DriftComp) cnt = ParamSet.DriftComp;
// correct Gyro Offsets
if(IntegralErrorPitch > ERROR_LIMIT) AdNeutralPitch += cnt;
if(IntegralErrorPitch < -ERROR_LIMIT) AdNeutralPitch -= cnt;
 
// Roll +++++++++++++++++++++++++++++++++++++++++++++++++
cnt = 1;// + labs(IntegralErrorPitch) / 4096;
CorrectionRoll = 0;
if(labs(MeanIntegralRoll_old - MeanIntegralRoll) < MOVEMENT_LIMIT)
{
if(IntegralErrorRoll > ERROR_LIMIT2)
{
if(last_r_p)
{
cnt += labs(IntegralErrorRoll) / ERROR_LIMIT2;
CorrectionRoll = IntegralErrorRoll / 8;
if(CorrectionRoll > 5000) CorrectionRoll = 5000;
AttitudeCorrectionRoll += CorrectionRoll / BALANCE_NUMBER;
}
else last_r_p = 1;
}
else last_r_p = 0;
if(IntegralErrorRoll < -ERROR_LIMIT2)
{
if(last_r_n)
{
cnt += labs(IntegralErrorRoll) / ERROR_LIMIT2;
CorrectionRoll = IntegralErrorRoll / 8;
if(CorrectionRoll < -5000) CorrectionRoll = -5000;
AttitudeCorrectionRoll += CorrectionRoll / BALANCE_NUMBER;
}
else last_r_n = 1;
}
else last_r_n = 0;
}
else cnt = 0;
// correct Gyro Offsets
if(cnt > ParamSet.DriftComp) cnt = ParamSet.DriftComp;
if(IntegralErrorRoll > ERROR_LIMIT) AdNeutralRoll += cnt;
if(IntegralErrorRoll < -ERROR_LIMIT) AdNeutralRoll -= cnt;
 
DebugOut.Analog[27] = CorrectionRoll;
DebugOut.Analog[23] = AdNeutralPitch;//10*(AdNeutralPitch - StartNeutralPitch);
DebugOut.Analog[24] = 10*(AdNeutralRoll - StartNeutralRoll);
}
else // looping is active
{
AttitudeCorrectionRoll = 0;
AttitudeCorrectionPitch = 0;
}
 
// if Gyro_I_Factor == 0 , for example at Heading Hold, ignore attitude correction
if(!Gyro_I_Factor)
{
AttitudeCorrectionRoll = 0;
AttitudeCorrectionPitch = 0;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++
MeanIntegralPitch_old = MeanIntegralPitch;
MeanIntegralRoll_old = MeanIntegralRoll;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++
// reset variables used for averaging
IntegralAccPitch = 0;
IntegralAccRoll = 0;
MeanIntegralPitch = 0;
MeanIntegralRoll = 0;
MeasurementCounter = 0;
} // end of averaging
 
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Yawing
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(abs(StickYaw) > 20 ) // yaw stick is activated
{
if(!(ParamSet.GlobalConfig & CFG_COMPASS_FIX)) UpdateCompassCourse = 1;
}
// exponential stick sensitivity in yawring rate
tmp_int = (int32_t) ParamSet.Yaw_P * ((int32_t)StickYaw * abs(StickYaw)) / 512L; // expo y = ax + bx²
tmp_int += (ParamSet.Yaw_P * StickYaw) / 4;
SetPointYaw = tmp_int;
// trimm drift of Reading_IntegralGyroYaw with SetPointYaw(StickYaw)
Reading_IntegralGyroYaw -= tmp_int;
// limit the effect
if(Reading_IntegralGyroYaw > 50000) Reading_IntegralGyroYaw = 50000;
if(Reading_IntegralGyroYaw <-50000) Reading_IntegralGyroYaw =-50000;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Compass
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// compass code is used if Compass option or GPS option is selected
if((ParamSet.GlobalConfig & CFG_COMPASS_ACTIVE) || (ParamSet.GlobalConfig & CFG_GPS_ACTIVE))
{
static uint8_t updCompass = 0;
int16_t w,v;
 
if (!updCompass--)
{
updCompass = 49; // update only at 2ms*50 = 100ms (10Hz)
// get current compass heading (angle between MK head and magnetic north)
#ifdef USE_MM3
CompassHeading = MM3_Heading();
#endif
#ifdef USE_CMPS03
CompassHeading = CMPS03_Heading();
#endif
if (CompassHeading < 0) CompassOffCourse = 0; // disable gyro compass correction on bad compass data
else CompassOffCourse = ((540 + CompassHeading - CompassCourse) % 360) - 180; // calc course deviation
}
 
// get maximum attitude angle
w = abs(IntegralPitch/512);
v = abs(IntegralRoll /512);
if(v > w) w = v;
if (w < 25)
{
if(UpdateCompassCourse)
{
UpdateCompassCourse = 0;
CompassCourse = CompassHeading;
CompassOffCourse = 0;
}
w = (w * FCParam.CompassYawEffect) / 64;
w = FCParam.CompassYawEffect - w;
if(w > 0) Reading_IntegralGyroYaw += (CompassOffCourse * w) / 32;
}
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// GPS
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(ParamSet.GlobalConfig & CFG_GPS_ACTIVE)
{
GPS_I_Factor = FCParam.UserParam2;
GPS_P_Factor = FCParam.UserParam5;
GPS_D_Factor = FCParam.UserParam6;
if(EmergencyLanding) GPS_Main(230); // enables Comming Home
else GPS_Main(Poti3); // behavior controlled by Poti3
}
else
{
GPS_Neutral();
}
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Debugwerte zuordnen
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(!TimerDebugOut--)
{
TimerDebugOut = 24; // update debug outputs every 25*2ms = 50 ms (20Hz)
DebugOut.Analog[0] = IntegralPitch / ParamSet.GyroAccFactor;
DebugOut.Analog[1] = IntegralRoll / ParamSet.GyroAccFactor;
DebugOut.Analog[2] = Mean_AccPitch;
DebugOut.Analog[3] = Mean_AccRoll;
DebugOut.Analog[4] = Reading_GyroYaw;
DebugOut.Analog[5] = ReadingHeight;
DebugOut.Analog[6] = (Reading_Integral_Top / 512);
DebugOut.Analog[8] = CompassHeading;
DebugOut.Analog[9] = UBat;
DebugOut.Analog[10] = RC_Quality;
//DebugOut.Analog[11] = RC_Quality;
//DebugOut.Analog[16] = Mean_AccTop;
 
/* DebugOut.Analog[16] = motor_rx[0];
DebugOut.Analog[17] = motor_rx[1];
DebugOut.Analog[18] = motor_rx[2];
DebugOut.Analog[19] = motor_rx[3];
DebugOut.Analog[20] = motor_rx[0] + motor_rx[1] + motor_rx[2] + motor_rx[3];
DebugOut.Analog[20] /= 14;
DebugOut.Analog[21] = motor_rx[4];
DebugOut.Analog[22] = motor_rx[5];
DebugOut.Analog[23] = motor_rx[6];
DebugOut.Analog[24] = motor_rx[7];
DebugOut.Analog[25] = motor_rx[4] + motor_rx[5] + motor_rx[6] + motor_rx[7];
 
DebugOut.Analog[9] = Reading_GyroPitch;
DebugOut.Analog[9] = SetPointHeight;
DebugOut.Analog[10] = Reading_IntegralGyroYaw / 128;
 
DebugOut.Analog[10] = FCParam.Gyro_I;
DebugOut.Analog[10] = ParamSet.Gyro_I;
DebugOut.Analog[9] = CompassOffCourse;
DebugOut.Analog[10] = ThrustMixFraction;
DebugOut.Analog[3] = HeightD * 32;
DebugOut.Analog[4] = HeightControlThrust;
*/
}
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// calculate control feedback from angle (gyro integral) and agular velocity (gyro signal)
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
if(Looping_Pitch) Reading_GyroPitch = Reading_GyroPitch * Gyro_P_Factor;
else Reading_GyroPitch = IntegralPitch * Gyro_I_Factor + Reading_GyroPitch * Gyro_P_Factor;
if(Looping_Roll) Reading_GyroRoll = Reading_GyroRoll * Gyro_P_Factor;
else Reading_GyroRoll = IntegralRoll * Gyro_I_Factor + Reading_GyroRoll * Gyro_P_Factor;
Reading_GyroYaw = Reading_GyroYaw * (2 * Gyro_P_Factor) + IntegralYaw * Gyro_I_Factor / 2;
 
DebugOut.Analog[25] = IntegralRoll * Gyro_I_Factor;
DebugOut.Analog[31] = StickRoll;// / (26*Gyro_I_Factor);
DebugOut.Analog[28] = Reading_GyroRoll;
 
// limit control feedback
#define MAX_SENSOR 2048
if(Reading_GyroPitch > MAX_SENSOR) Reading_GyroPitch = MAX_SENSOR;
if(Reading_GyroPitch < -MAX_SENSOR) Reading_GyroPitch = -MAX_SENSOR;
if(Reading_GyroRoll > MAX_SENSOR) Reading_GyroRoll = MAX_SENSOR;
if(Reading_GyroRoll < -MAX_SENSOR) Reading_GyroRoll = -MAX_SENSOR;
if(Reading_GyroYaw > MAX_SENSOR) Reading_GyroYaw = MAX_SENSOR;
if(Reading_GyroYaw < -MAX_SENSOR) Reading_GyroYaw = -MAX_SENSOR;
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Height Control
// The height control algorithm reduces the thrust but does not increase the thrust.
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// If height control is activated and no emergency landing is active
if((ParamSet.GlobalConfig & CFG_HEIGHT_CONTROL) && (!EmergencyLanding) )
{
int tmp_int;
// if height control is activated by an rc channel
if(ParamSet.GlobalConfig & CFG_HEIGHT_SWITCH)
{ // check if parameter is less than activation threshold
if(FCParam.MaxHeight < 50)
{
SetPointHeight = ReadingHeight - 20; // update SetPoint with current reading
HeightControlActive = 0; // disable height control
}
else HeightControlActive = 1; // enable height control
}
else // no switchable height control
{
SetPointHeight = ((int16_t) ExternHeightValue + (int16_t) FCParam.MaxHeight) * (int16_t)ParamSet.Height_Gain - 20;
HeightControlActive = 1;
}
// get current height
h = ReadingHeight;
// if current height is above the setpoint reduce thrust
if((h > SetPointHeight) && HeightControlActive)
{
// ThrustMixFraction - HightDeviation * P - HeightChange * D - ACCTop * DACC
// height difference -> P control part
h = ((h - SetPointHeight) * (int16_t) FCParam.Height_P) / 16;
h = ThrustMixFraction - h; // reduce gas
// height gradient --> D control part
h -= (HeightD * FCParam.Height_D) / 8; // D control part
// acceleration sensor effect
tmp_int = ((Reading_Integral_Top / 512) * (int32_t) FCParam.Height_ACC_Effect) / 32;
if(tmp_int > 50) tmp_int = 50;
if(tmp_int < -50) tmp_int = -50;
h -= tmp_int;
// update height control thrust
HeightControlThrust = (HeightControlThrust*15 + h) / 16;
// limit thrust reduction
if(HeightControlThrust < ParamSet.Height_MinThrust)
{
if(ThrustMixFraction >= ParamSet.Height_MinThrust) HeightControlThrust = ParamSet.Height_MinThrust;
// allows landing also if thrust stick is reduced below min thrust on height control
if(ThrustMixFraction < ParamSet.Height_MinThrust) HeightControlThrust = ThrustMixFraction;
}
// limit thrust to stick setting
if(HeightControlThrust > ThrustMixFraction) HeightControlThrust = ThrustMixFraction;
ThrustMixFraction = HeightControlThrust;
}
}
// limit thrust to parameter setting
if(ThrustMixFraction > ParamSet.Trust_Max - 20) ThrustMixFraction = ParamSet.Trust_Max - 20;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Mixer and PI-Controller
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
DebugOut.Analog[7] = ThrustMixFraction;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Yaw-Fraction
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
YawMixFraction = Reading_GyroYaw - SetPointYaw; // yaw controller
 
// limit YawMixFraction
if(YawMixFraction > (ThrustMixFraction / 2)) YawMixFraction = ThrustMixFraction / 2;
if(YawMixFraction < -(ThrustMixFraction / 2)) YawMixFraction = -(ThrustMixFraction / 2);
if(YawMixFraction > ((ParamSet.Trust_Max - ThrustMixFraction))) YawMixFraction = ((ParamSet.Trust_Max - ThrustMixFraction));
if(YawMixFraction < -((ParamSet.Trust_Max - ThrustMixFraction))) YawMixFraction = -((ParamSet.Trust_Max - ThrustMixFraction));
if(ThrustMixFraction < 20) YawMixFraction = 0;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Pitch-Axis
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DiffPitch = Reading_GyroPitch - (StickPitch - GPS_Pitch); // get difference
if(Gyro_I_Factor) SumPitch += IntegralPitch * Gyro_I_Factor - (StickPitch - GPS_Pitch); // I-part for attitude control
else SumPitch += DiffPitch; // I-part for head holding
if(SumPitch > 16000) SumPitch = 16000;
if(SumPitch < -16000) SumPitch = -16000;
pd_result = DiffPitch + Ki * SumPitch; // PI-controller for pitch
 
tmp_int = (int32_t)((int32_t)FCParam.DynamicStability * (int32_t)(ThrustMixFraction + abs(YawMixFraction)/2)) / 64;
if(pd_result > tmp_int) pd_result = tmp_int;
if(pd_result < -tmp_int) pd_result = -tmp_int;
PitchMixFraction = pd_result;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Roll-Axis
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DiffRoll = Reading_GyroRoll - (StickRoll - GPS_Roll); // get difference
if(Gyro_I_Factor) SumRoll += IntegralRoll * Gyro_I_Factor - (StickRoll - GPS_Roll); // I-part for attitude control
else SumRoll += DiffRoll; // I-part for head holding
if(SumRoll > 16000) SumRoll = 16000;
if(SumRoll < -16000) SumRoll = -16000;
pd_result = DiffRoll + Ki * SumRoll; // PI-controller for roll
tmp_int = (int32_t)((int32_t)FCParam.DynamicStability * (int32_t)(ThrustMixFraction + abs(YawMixFraction)/2)) / 64;
if(pd_result > tmp_int) pd_result = tmp_int;
if(pd_result < -tmp_int) pd_result = -tmp_int;
 
RollMixFraction = pd_result;
 
// Calculate Motor Mixes
// Motor FrontLeft
MotorValue = ThrustMixFraction
+ PitchMixFraction
+ RollMixFraction/2
- YawMixFraction; // Mixer
if ((MotorValue < 0)) MotorValue = 0;
else if(MotorValue > ParamSet.Trust_Max) MotorValue = ParamSet.Trust_Max;
if (MotorValue < ParamSet.Trust_Min) MotorValue = ParamSet.Trust_Min;
Motor_FrontLeft = MotorValue;
 
// Motor FrontRight
MotorValue = ThrustMixFraction
+ PitchMixFraction
- RollMixFraction/2
+ YawMixFraction; // Mixer
if ((MotorValue < 0)) MotorValue = 0;
else if(MotorValue > ParamSet.Trust_Max) MotorValue = ParamSet.Trust_Max;
if (MotorValue < ParamSet.Trust_Min) MotorValue = ParamSet.Trust_Min;
Motor_FrontRight = MotorValue;
 
// Motor RearLeft
MotorValue = ThrustMixFraction
- PitchMixFraction
+ RollMixFraction/2
- YawMixFraction; // Mixer
if ((MotorValue < 0)) MotorValue = 0;
else if(MotorValue > ParamSet.Trust_Max) MotorValue = ParamSet.Trust_Max;
if (MotorValue < ParamSet.Trust_Min) MotorValue = ParamSet.Trust_Min;
Motor_RearLeft = MotorValue;
// Motor RearRight
MotorValue = ThrustMixFraction
- PitchMixFraction
- RollMixFraction/2
+ YawMixFraction; // Mixer
if ((MotorValue < 0)) MotorValue = 0;
else if(MotorValue > ParamSet.Trust_Max) MotorValue = ParamSet.Trust_Max;
if (MotorValue < ParamSet.Trust_Min) MotorValue = ParamSet.Trust_Min;
Motor_RearRight= MotorValue;
// Motor Left
MotorValue = ThrustMixFraction
+ RollMixFraction
+ YawMixFraction; // Mixer
if ((MotorValue < 0)) MotorValue = 0;
else if(MotorValue > ParamSet.Trust_Max) MotorValue = ParamSet.Trust_Max;
if (MotorValue < ParamSet.Trust_Min) MotorValue = ParamSet.Trust_Min;
Motor_Left = MotorValue;
 
// Motor Right
MotorValue = ThrustMixFraction
- RollMixFraction
- YawMixFraction; // Mixer
if ((MotorValue < 0)) MotorValue = 0;
else if(MotorValue > ParamSet.Trust_Max) MotorValue = ParamSet.Trust_Max;
if (MotorValue < ParamSet.Trust_Min) MotorValue = ParamSet.Trust_Min;
Motor_Right = MotorValue;
}
 
/branches/V0.68d CRK HexaLotte/fc.h
0,0 → 1,91
/*#######################################################################################
Flight Control
#######################################################################################*/
 
#ifndef _FC_H
#define _FC_H
 
typedef struct
{
uint8_t Height_D;
uint8_t MaxHeight;
uint8_t Height_P;
uint8_t Height_ACC_Effect;
uint8_t CompassYawEffect;
uint8_t Gyro_P;
uint8_t Gyro_I;
uint8_t Gier_P;
uint8_t I_Factor;
uint8_t UserParam1;
uint8_t UserParam2;
uint8_t UserParam3;
uint8_t UserParam4;
uint8_t UserParam5;
uint8_t UserParam6;
uint8_t UserParam7;
uint8_t UserParam8;
uint8_t ServoPitchControl;
uint8_t LoopThrustLimit;
uint8_t Yaw_PosFeedback;
uint8_t Yaw_NegFeedback;
uint8_t DynamicStability;
} fc_param_t;
 
extern fc_param_t FCParam;
 
extern volatile uint16_t I2CTimeout;
 
// attitude
extern volatile int32_t IntegralPitch, IntegralRoll, IntegralYaw;
extern volatile int16_t Reading_GyroPitch, Reading_GyroRoll, Reading_GyroYaw;
 
// offsets
extern volatile int16_t AdNeutralPitch, AdNeutralRoll, AdNeutralYaw;
extern volatile int16_t NeutralAccX, NeutralAccY;
extern volatile float NeutralAccZ;
 
 
extern volatile int32_t Reading_Integral_Top; // calculated in analog.c
 
// compass navigation
extern volatile int16_t CompassHeading;
extern volatile int16_t CompassCourse;
extern volatile int16_t CompassOffCourse;
 
// hight control
extern int ReadingHeight;
extern int SetPointHeight;
 
// mean accelarations
extern volatile int16_t Mean_AccPitch, Mean_AccRoll, Mean_AccTop;
 
// looping params
extern long TurnOver180Pitch, TurnOver180Roll;
 
// external control
extern int16_t ExternStickPitch, ExternStickRoll, ExternStickYaw;
 
 
void MotorControl(void);
void SendMotorData(void);
void CalibMean(void);
void Mean(void);
void SetNeutral(void);
void Beep(uint8_t numbeeps);
 
 
extern int16_t Poti1, Poti2, Poti3, Poti4, Poti5, Poti6, Poti7, Poti8;
 
// setpoints for motors
extern volatile uint8_t Motor_FrontLeft, Motor_FrontRight, Motor_RearLeft, Motor_RearRight, Motor_Right, Motor_Left; //used by twimaster isr
 
// current stick values
extern int16_t StickPitch, StickRoll, StickYaw;
// current stick elongations
extern int16_t MaxStickPitch, MaxStickRoll, MaxStickYaw;
extern uint8_t MotorsOn;
extern uint8_t EmergencyLanding;
 
 
#endif //_FC_H
 
/branches/V0.68d CRK HexaLotte/fifo.c
0,0 → 1,28
#include "fifo.h"
 
void fifo_init (fifo_t *f, uint8_t *buffer, const uint8_t size)
{
f->count = 0;
f->pread = f->pwrite = buffer;
f->read2end = f->write2end = f->size = size;
}
 
uint8_t fifo_put (fifo_t *f, const uint8_t data)
{
return _inline_fifo_put (f, data);
}
 
uint8_t fifo_get_wait (fifo_t *f)
{
while (!f->count);
 
return _inline_fifo_get (f);
}
 
int16_t fifo_get_nowait (fifo_t *f)
{
if (!f->count) return -1;
 
return (int16_t) _inline_fifo_get (f);
}
 
/branches/V0.68d CRK HexaLotte/fifo.h
0,0 → 1,98
#ifndef _FIFO_H_
#define _FIFO_H_
 
#include <avr/io.h>
#include <avr/interrupt.h>
 
// the fifo object
typedef struct
{
uint8_t volatile count; // # number of characters in FIFO
uint8_t size; // buffer size
uint8_t *pread; // read pointer
uint8_t *pwrite; // write pointer
uint8_t read2end, write2end; // number of characters for buffer overflow for read/write pointers
} fifo_t;
 
/*
The initialization of the FIFO sets the read/write pointers etc..
The FIFO uses the buffer 'buf' which byte length must 'size'.
*/
extern void fifo_init (fifo_t*, uint8_t* buf, const uint8_t size);
 
/*
Puts a byte into the FIFO. Returns 1 on success ans 0 in case of FIFO overflow.
*/
extern uint8_t fifo_put (fifo_t*, const uint8_t data);
 
/*
Get the next byte out of the FIFO. If the FIFO is empty the function blocks
until the next byte is put into the FIFO.
*/
extern uint8_t fifo_get_wait (fifo_t*);
 
/*
Get the next byte from the FIFO as int. Returns -1 if the FIFO is empty.
*/
extern int16_t fifo_get_nowait (fifo_t*);
 
 
/*
The same like fifo_put
*/
static inline uint8_t _inline_fifo_put (fifo_t *f, const uint8_t data)
{
if (f->count >= f->size)
return 0;
 
uint8_t * pwrite = f->pwrite;
 
*(pwrite++) = data;
 
uint8_t write2end = f->write2end;
 
if (--write2end == 0)
{
write2end = f->size;
pwrite -= write2end;
}
 
f->write2end = write2end;
f->pwrite = pwrite;
 
uint8_t sreg = SREG;
cli();
f->count++;
SREG = sreg;
 
return 1;
}
 
/*
Get the next byte from FIFO. Before this functionis called
it must be checked that there is a byte in the FIFO to get.
*/
static inline uint8_t _inline_fifo_get (fifo_t *f)
{
uint8_t *pread = f->pread;
uint8_t data = *(pread++);
uint8_t read2end = f->read2end;
 
if (--read2end == 0)
{
read2end = f->size;
pread -= read2end;
}
 
f->pread = pread;
f->read2end = read2end;
 
uint8_t sreg = SREG;
cli();
f->count--;
SREG = sreg;
 
return data;
}
 
#endif /* _FIFO_H_ */
/branches/V0.68d CRK HexaLotte/flight.pnproj
0,0 → 1,0
<Project name="Flight-Ctrl"><File path="uart.h"></File><File path="main.c"></File><File path="main.h"></File><File path="makefile"></File><File path="uart.c"></File><File path="printf_P.h"></File><File path="printf_P.c"></File><File path="timer0.c"></File><File path="timer0.h"></File><File path="old_macros.h"></File><File path="twimaster.c"></File><File path="version.txt"></File><File path="twimaster.h"></File><File path="rc.c"></File><File path="rc.h"></File><File path="fc.h"></File><File path="fc.c"></File><File path="menu.h"></File><File path="menu.c"></File><File path="_Settings.h"></File><File path="analog.c"></File><File path="analog.h"></File><File path="GPS.c"></File><File path="gps.h"></File><File path="License.txt"></File><File path="eeprom.c"></File><File path="spi.h"></File><File path="spi.c"></File></Project>
/branches/V0.68d CRK HexaLotte/flight.pnps
0,0 → 1,0
<pd><ViewState><e p="Flight-Ctrl" x="true"></e></ViewState></pd>
/branches/V0.68d CRK HexaLotte/gps.h
0,0 → 1,19
#ifndef _GPS_H
#define _GPS_H
 
#include <inttypes.h>
 
extern int16_t GPS_Pitch;
extern int16_t GPS_Roll;
 
extern uint8_t GPS_P_Factor;
extern uint8_t GPS_I_Factor;
extern uint8_t GPS_D_Factor;
 
extern void GPS_Main(uint8_t ctrl);
extern void GPS_SetHomePosition(void);
extern void GPS_ClearHomePosition(void);
extern void GPS_Neutral(void);
 
#endif //_GPS_H
 
/branches/V0.68d CRK HexaLotte/led.c
0,0 → 1,42
#include <inttypes.h>
#include "led.h"
#include "fc.h"
 
uint16_t LED1_Time = 0;
uint16_t LED2_Time = 0;
 
 
// initializes the LED control outputs J16, J17
void LED_Init(void)
{
// set PC2 & PC3 as output (control of J16 & J17)
DDRC |= (1<<DDC2)|(1<<DDC3);
J16_OFF;
J17_OFF;
}
 
 
// called in UpdateMotors() every 2ms
void LED_Update(void)
{
static uint16_t J16_blinkcount = 0;
static uint16_t J17_blinkcount = 0;
 
if (LED1_Time < 20) J16_ON;
else if(LED1_Time < 220)
{
if((2 * J16_blinkcount) < LED1_Time) J16_ON;
else J16_OFF;
if(J16_blinkcount++ >= LED1_Time) J16_blinkcount = 0;
}
else J16_ON;
 
if (LED2_Time < 20) J17_OFF;
else if(LED2_Time < 220)
{
if((2 * J17_blinkcount) < LED2_Time) J17_ON;
else J17_OFF;
if(J17_blinkcount++ >= LED2_Time) J17_blinkcount = 0;
}
else J17_OFF;
}
/branches/V0.68d CRK HexaLotte/led.h
0,0 → 1,22
#ifndef _LED_H
#define _LED_H
 
#include <avr/io.h>
 
#define J16_ON PORTC |= (1<<PORTC2)
#define J16_OFF PORTC &= ~(1<<PORTC2)
#define J16_TOGGLE PORTC ^= (1<<PORTC2)
#define J17_ON PORTC |= (1<<PORTC3)
#define J17_OFF PORTC &= ~(1<<PORTC3)
#define J17_TOGGLE PORTC ^= (1<<PORTC3)
 
 
extern uint16_t LED1_Time;
extern uint16_t LED2_Time;
 
extern void LED_Init(void);
extern void LED_Update(void);
 
 
#endif //_LED_H
 
/branches/V0.68d CRK HexaLotte/main.c
0,0 → 1,281
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Copyright (c) 04.2007 Holger Buss
// + Nur für den privaten Gebrauch
// + www.MikroKopter.com
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Es gilt für das gesamte Projekt (Hardware, Software, Binärfiles, Sourcecode und Dokumentation),
// + dass eine Nutzung (auch auszugsweise) nur für den privaten und nicht-kommerziellen Gebrauch zulässig ist.
// + Sollten direkte oder indirekte kommerzielle Absichten verfolgt werden, ist mit uns (info@mikrokopter.de) Kontakt
// + bzgl. der Nutzungsbedingungen aufzunehmen.
// + Eine kommerzielle Nutzung ist z.B.Verkauf von MikroKoptern, Bestückung und Verkauf von Platinen oder Bausätzen,
// + Verkauf von Luftbildaufnahmen, usw.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Werden Teile des Quellcodes (mit oder ohne Modifikation) weiterverwendet oder veröffentlicht,
// + unterliegen sie auch diesen Nutzungsbedingungen und diese Nutzungsbedingungen incl. Copyright müssen dann beiliegen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Sollte die Software (auch auszugesweise) oder sonstige Informationen des MikroKopter-Projekts
// + auf anderen Webseiten oder Medien veröffentlicht werden, muss unsere Webseite "http://www.mikrokopter.de"
// + eindeutig als Ursprung verlinkt und genannt werden
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Keine Gewähr auf Fehlerfreiheit, Vollständigkeit oder Funktion
// + Benutzung auf eigene Gefahr
// + Wir übernehmen keinerlei Haftung für direkte oder indirekte Personen- oder Sachschäden
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Portierung der Software (oder Teile davon) auf andere Systeme (ausser der Hardware von www.mikrokopter.de) ist nur
// + mit unserer Zustimmung zulässig
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist hiervon nicht betroffen
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Redistributions of source code (with or without modifications) must retain the above copyright notice,
// + this list of conditions and the following disclaimer.
// + * Neither the name of the copyright holders nor the names of contributors may be used to endorse or promote products derived
// + from this software without specific prior written permission.
// + * The use of this project (hardware, software, binary files, sources and documentation) is only permittet
// + for non-commercial use (directly or indirectly)
// + Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted
// + with our written permission
// + * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be
// + clearly linked as origin
// + * porting to systems other than hardware from www.mikrokopter.de is not allowed
// + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// + POSSIBILITY OF SUCH DAMAGE.
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#include <avr/boot.h>
 
#include <avr/io.h>
#include <avr/interrupt.h>
 
#include "main.h"
#include "timer0.h"
#include "timer2.h"
#include "uart.h"
#if defined (__AVR_ATmega644P__)
#include "uart1.h"
#endif
#include "led.h"
#include "menu.h"
#include "ubx.h"
#include "fc.h"
#include "rc.h"
#include "analog.h"
#include "printf_P.h"
//#include "spi.h"
#ifdef USE_MM3
#include "mm3.h"
#endif
#ifdef USE_CMPS03
#include "cmps03.h"
#endif
#include "twimaster.h"
#include "eeprom.h"
#include "_Settings.h"
 
 
 
uint8_t BoardRelease = 10;
 
 
//############################################################################
//Hauptprogramm
int main (void)
//############################################################################
{
unsigned int timer;
 
// disable interrupts global
cli();
 
// get board release
DDRB = 0x00;
PORTB = 0x00;
for(timer = 0; timer < 1000; timer++); // make some delay
if(PINB & (1<<PINB0)) BoardRelease = 11;
else BoardRelease = 10;
 
// set LED ports as output
DDRB |= (1<<DDB1)|(1<<DDB0);
ROT_ON;
GRN_OFF;
 
// disable watchdog
MCUSR &=~(1<<WDRF);
WDTCSR |= (1<<WDCE)|(1<<WDE);
WDTCSR = 0;
 
BeepTime = 2000;
 
PPM_in[CH_THRUST] = 0;
StickYaw = 0;
StickRoll = 0;
StickPitch = 0;
 
ROT_OFF;
 
// initalize modules
LED_Init();
TIMER0_Init();
TIMER2_Init();
USART0_Init();
 
#if defined (__AVR_ATmega644P__)
if (BoardRelease == 11) USART1_Init();
#endif
 
RC_Init();
ADC_Init();
I2C_Init();
 
#ifdef USE_MM3
MM3_Init();
#endif
#ifdef USE_CMPS03
CMPS03_Init();
#endif
//SPI_MasterInit();
 
// enable interrupts global
sei();
 
VersionInfo.Major = VERSION_MAJOR;
VersionInfo.Minor = VERSION_MINOR;
VersionInfo.PCCompatible = VERSION_COMPATIBLE;
 
printf("\n\rFlightControl\n\rHardware:%d.%d\n\rSoftware:V%d.%d%c ",BoardRelease/10,BoardRelease%10, VERSION_MAJOR, VERSION_MINOR,VERSION_INDEX + 'a');
printf("\n\r==============================");
GRN_ON;
 
// Parameter set handling
ParamSet_Init();
 
if(GetParamWord(PID_ACC_PITCH) > 1023)
{
printf("\n\rACC not calibrated!");
}
 
//wait for a short time (otherwise the RC channel check won't work below)
timer = SetDelay(500);
while(!CheckDelay(timer));
 
 
#ifdef USE_MM3
printf("\n\rSupport for Compass Module MM3");
//Compass calibration?
if(PPM_in[ParamSet.ChannelAssignment[CH_THRUST]] > 100 && PPM_in[ParamSet.ChannelAssignment[CH_YAW]] > 100)
{
printf("\n\rCalibrating Compass");
MM3_Calibrate();
}
#endif
#ifdef USE_CMPS03
printf("\n\rSupport for Compass Module CMPS03");
#endif
 
 
if(ParamSet.GlobalConfig & CFG_HEIGHT_CONTROL)
{
printf("\n\rCalibrating air pressure sensor..");
timer = SetDelay(1000);
SearchAirPressureOffset();
while (!CheckDelay(timer));
printf("OK\n\r");
}
 
#if defined (__AVR_ATmega644P__)
if(BoardRelease == 10)
{
printf("\n\rSupport for GPS at 1st UART");
}
else
{
printf("\n\rSupport for GPS at 2nd UART");
}
#else // (__AVR_ATmega644__)
printf("\n\rSupport for GPS at 1st UART");
#endif
 
SetNeutral();
 
ROT_OFF;
 
BeepTime = 2000;
ExternControl.Digital[0] = 0x55;
 
 
printf("\n\rControl: ");
if (ParamSet.GlobalConfig & CFG_HEADING_HOLD) printf("HeadingHold");
else printf("Neutral");
 
printf("\n\n\r");
 
LCD_Clear();
 
I2CTimeout = 5000;
while (1)
{
if(UpdateMotor) // control interval
{
//SPI_TransmitByte(); //#
UpdateMotor=0; // reset Flag, is enabled every 2 ms by isr of timer0
//PORTD |= (1<<PORTD4);
MotorControl();
//PORTD &= ~(1<<PORTD4);
SendMotorData();
ROT_OFF;
if(PcAccess) PcAccess--;
else
{
DubWiseKeys[0] = 0;
DubWiseKeys[1] = 0;
ExternControl.Config = 0;
ExternStickPitch= 0;
ExternStickRoll = 0;
ExternStickYaw = 0;
}
if(!I2CTimeout)
{
I2CTimeout = 5;
I2C_Reset();
if((BeepModulation == 0xFFFF) && MotorsOn)
{
BeepTime = 10000; // 1 second
BeepModulation = 0x0080;
}
}
else
{
I2CTimeout--;
ROT_OFF;
}
if(SIO_DEBUG && !UpdateMotor)
{
TransmitTxData();
ProcessRxData();
}
else ProcessRxData();
if(CheckDelay(timer))
{
if(UBat < ParamSet.LowVoltageWarning)
{
if(BeepModulation == 0xFFFF)
{
BeepTime = 6000; // 0.6 seconds
BeepModulation = 0x0300;
}
}
//SPI_StartTransmitPacket();//#
timer = SetDelay(100);
}
}
}
return (1);
}
 
/branches/V0.68d CRK HexaLotte/main.h
0,0 → 1,40
#ifndef _MAIN_H
#define _MAIN_H
 
#include <avr/io.h>
 
//Hier die Quarz Frequenz einstellen
#if defined (__AVR_ATmega32__)
#define SYSCLK 20000000L //Quarz Frequenz in Hz
#endif
 
#if defined (__AVR_ATmega644__)
#define SYSCLK 20000000L //Quarz Frequenz in Hz
#endif
 
#if defined (__AVR_ATmega644P__)
#define SYSCLK 20000000L //Quarz Frequenz in Hz
#endif
 
#define F_CPU SYSCLK
 
 
// neue Hardware
#define ROT_OFF {if(BoardRelease == 10) PORTB &=~(1<<PORTB0); else PORTB |= (1<<PORTB0);}
#define ROT_ON {if(BoardRelease == 10) PORTB |= (1<<PORTB0); else PORTB &=~(1<<PORTB0);}
#define ROT_FLASH PORTB ^= (1<<PORTB0)
#define GRN_OFF PORTB &=~(1<<PORTB1)
#define GRN_ON PORTB |= (1<<PORTB1)
#define GRN_FLASH PORTB ^= (1<<PORTB1)
 
#include <inttypes.h>
 
extern uint8_t BoardRelease;
 
#endif //_MAIN_H
 
 
 
 
 
 
/branches/V0.68d CRK HexaLotte/makefile
0,0 → 1,449
#--------------------------------------------------------------------
# MCU name
#MCU = atmega644
MCU = atmega644p
F_CPU = 20000000
#-------------------------------------------------------------------
VERSION_MAJOR = 0
VERSION_MINOR = 68
VERSION_INDEX = 3
 
VERSION_COMPATIBLE = 7 # PC-Kompatibilität
#-------------------------------------------------------------------
#OPTIONS
#COMPASS = _MM3
#COMPASS = _CMPS03
#EXT = WALTER
#-------------------------------------------------------------------
 
ifeq ($(MCU), atmega644)
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m
#FUSE_SETTINGS = -U lfuse:w:0xff:m -U hfuse:w:0xdf:m
# -u bei neuen Controllern wieder einspielen
HEX_NAME = MEGA644$(COMPASS)
endif
 
ifeq ($(MCU), atmega644p)
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m
HEX_NAME = MEGA644p$(COMPASS)
endif
 
 
ifeq ($(F_CPU), 16000000)
QUARZ = 16MHZ
endif
 
ifeq ($(F_CPU), 20000000)
QUARZ = 20MHZ
endif
 
ifeq ($(COMPASS), MM3)
CFLAGS += -DUSE_MM3
endif
 
ifeq ($(COMPASS), CMPS03)
CFLAGS += -DUSE_CMPS03
endif
 
# Output format. (can be srec, ihex, binary)
FORMAT = ihex
 
# Target file name (without extension).
 
ifeq ($(VERSION_INDEX), 0)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)a
endif
ifeq ($(VERSION_INDEX), 1)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)b
endif
ifeq ($(VERSION_INDEX), 2)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)c
endif
ifeq ($(VERSION_INDEX), 3)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)d
endif
ifeq ($(VERSION_INDEX), 4)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)e
endif
ifeq ($(VERSION_INDEX), 5)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)f
endif
ifeq ($(VERSION_INDEX), 6)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)g
endif
ifeq ($(VERSION_INDEX), 7)
TARGET = Flight-Ctrl_$(HEX_NAME)_V$(VERSION_MAJOR)_$(VERSION_MINOR)h
endif
 
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization.
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
OPT = s
 
##########################################################################################################
# List C source files here. (C dependencies are automatically generated.)
SRC = main.c uart.c printf_P.c timer0.c timer2.c analog.c menu.c led.c
SRC += twimaster.c rc.c fc.c GPS.c spi.c eeprom.c mymath.c ubx.c fifo.c
ifeq ($(MCU), atmega644p)
SRC += uart1.c
endif
ifeq ($(COMPASS), MM3)
SRC += mm3.c
endif
ifeq ($(COMPASS), CMPS03)
SRC += cmps03.c
endif
##########################################################################################################
 
 
# List Assembler source files here.
# Make them always end in a capital .S. Files ending in a lowercase .s
# will not be considered source files but generated files (assembler
# output from the compiler), and will be deleted upon "make clean"!
# Even though the DOS/Win* filesystem matches both .s and .S the same,
# it will preserve the spelling of the filenames, and gcc itself does
# care about how the name is spelled on its command-line.
ASRC =
 
 
 
# List any extra directories to look for include files here.
# Each directory must be seperated by a space.
EXTRAINCDIRS =
 
 
# Optional compiler flags.
# -g: generate debugging information (for GDB, or for COFF conversion)
# -O*: optimization level
# -f...: tuning, see gcc manual and avr-libc documentation
# -Wall...: warning level
# -Wa,...: tell GCC to pass this to the assembler.
# -ahlms: create assembler listing
CFLAGS = -O$(OPT) \
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \
-Wall -Wstrict-prototypes \
-Wa,-adhlns=$(<:.c=.lst) \
$(patsubst %,-I%,$(EXTRAINCDIRS))
 
 
# Set a "language standard" compiler flag.
# Unremark just one line below to set the language standard to use.
# gnu99 = C99 + GNU extensions. See GCC manual for more information.
#CFLAGS += -std=c89
#CFLAGS += -std=gnu89
#CFLAGS += -std=c99
CFLAGS += -std=gnu99
 
CFLAGS += -DVERSION_MAJOR=$(VERSION_MAJOR) -DVERSION_MINOR=$(VERSION_MINOR) -DVERSION_COMPATIBLE=$(VERSION_COMPATIBLE) -DVERSION_INDEX=$(VERSION_INDEX)
 
ifeq ($(COMPASS), MM3)
CFLAGS += -DUSE_MM3
endif
ifeq ($(COMPASS), CMPS03)
CFLAGS += -DUSE_CMPS03
endif
ifeq ($(EXT), WALTER)
CFLAGS += -DUSE_WALTER_EXT
endif
 
 
 
 
# Optional assembler flags.
# -Wa,...: tell GCC to pass this to the assembler.
# -ahlms: create listing
# -gstabs: have the assembler create line number information; note that
# for use in COFF files, additional information about filenames
# and function names needs to be present in the assembler source
# files -- see avr-libc docs [FIXME: not yet described there]
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
 
 
 
# Optional linker flags.
# -Wl,...: tell GCC to pass this to linker.
# -Map: create map file
# --cref: add cross reference to map file
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
 
# Additional libraries
 
# Minimalistic printf version
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min
 
# Floating point printf version (requires -lm below)
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt
 
# -lm = math library
LDFLAGS += -lm
 
 
##LDFLAGS += -T./linkerfile/avr5.x
 
 
 
# Programming support using avrdude. Settings and variables.
 
# Programming hardware: alf avr910 avrisp bascom bsd
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500
#
# Type: avrdude -c ?
# to get a full listing.
#
#AVRDUDE_PROGRAMMER = dt006
#AVRDUDE_PROGRAMMER = stk200
#AVRDUDE_PROGRAMMER = ponyser
AVRDUDE_PROGRAMMER = avrispv2
#falls Ponyser ausgewählt wird, muss sich unsere avrdude-Configdatei im Bin-Verzeichnis des Compilers befinden
 
#AVRDUDE_PORT = com1 # programmer connected to serial device
#AVRDUDE_PORT = lpt1 # programmer connected to parallel port
AVRDUDE_PORT = usb # programmer connected to USB
 
#AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex $(FUSE_SETTINGS)
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
 
#avrdude -c avrispv2 -P usb -p m32 -U flash:w:blink.hex
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
 
# Uncomment the following if you want avrdude's erase cycle counter.
# Note that this counter needs to be initialized first using -Yn,
# see avrdude manual.
#AVRDUDE_ERASE += -y
 
# Uncomment the following if you do /not/ wish a verification to be
# performed after programming the device.
AVRDUDE_FLAGS += -V
 
# Increase verbosity level. Please use this when submitting bug
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
# to submit bug reports.
#AVRDUDE_FLAGS += -v -v
 
# ---------------------------------------------------------------------------
# Define directories, if needed.
DIRAVR = c:/winavr
DIRAVRBIN = $(DIRAVR)/bin
DIRAVRUTILS = $(DIRAVR)/utils/bin
DIRINC = .
DIRLIB = $(DIRAVR)/avr/lib
 
 
# Define programs and commands.
SHELL = sh
 
CC = avr-gcc
 
OBJCOPY = avr-objcopy
OBJDUMP = avr-objdump
SIZE = avr-size
 
# Programming support using avrdude.
AVRDUDE = avrdude
 
REMOVE = rm -f
COPY = cp
 
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
ELFSIZE = $(SIZE) -A $(TARGET).elf
 
# Define Messages
# English
MSG_ERRORS_NONE = Errors: none
MSG_BEGIN = -------- begin --------
MSG_END = -------- end --------
MSG_SIZE_BEFORE = Size before:
MSG_SIZE_AFTER = Size after:
MSG_COFF = Converting to AVR COFF:
MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
MSG_FLASH = Creating load file for Flash:
MSG_EEPROM = Creating load file for EEPROM:
MSG_EXTENDED_LISTING = Creating Extended Listing:
MSG_SYMBOL_TABLE = Creating Symbol Table:
MSG_LINKING = Linking:
MSG_COMPILING = Compiling:
MSG_ASSEMBLING = Assembling:
MSG_CLEANING = Cleaning project:
 
 
# Define all object files.
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o)
 
# Define all listing files.
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst)
 
# Combine all necessary flags and optional flags.
# Add target processor to flags.
#ALL_CFLAGS = -mmcu=$(MCU) -DF_CPU=$(F_CPU) -I. $(CFLAGS)
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS)
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
 
 
# Default target.
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \
$(TARGET).lss $(TARGET).sym sizeafter finished end
 
 
# Eye candy.
# AVR Studio 3.x does not check make's exit code but relies on
# the following magic strings to be generated by the compile job.
begin:
@echo
@echo $(MSG_BEGIN)
 
finished:
@echo $(MSG_ERRORS_NONE)
 
end:
@echo $(MSG_END)
@echo
 
 
# Display size of file.
sizebefore:
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi
 
sizeafter:
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi
 
 
 
# Display compiler version information.
gccversion :
@$(CC) --version
 
 
# Convert ELF to COFF for use in debugging / simulating in
# AVR Studio or VMLAB.
COFFCONVERT=$(OBJCOPY) --debugging \
--change-section-address .data-0x800000 \
--change-section-address .bss-0x800000 \
--change-section-address .noinit-0x800000 \
--change-section-address .eeprom-0x810000
 
 
coff: $(TARGET).elf
@echo
@echo $(MSG_COFF) $(TARGET).cof
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof
 
 
extcoff: $(TARGET).elf
@echo
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
 
 
 
 
# Program the device.
program: $(TARGET).hex $(TARGET).eep
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
 
 
 
 
# Create final output files (.hex, .eep) from ELF output file.
%.hex: %.elf
@echo
@echo $(MSG_FLASH) $@
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
 
%.eep: %.elf
@echo
@echo $(MSG_EEPROM) $@
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@
 
# Create extended listing file from ELF output file.
%.lss: %.elf
@echo
@echo $(MSG_EXTENDED_LISTING) $@
$(OBJDUMP) -h -S $< > $@
 
# Create a symbol table from ELF output file.
%.sym: %.elf
@echo
@echo $(MSG_SYMBOL_TABLE) $@
avr-nm -n $< > $@
 
 
 
# Link: create ELF output file from object files.
.SECONDARY : $(TARGET).elf
.PRECIOUS : $(OBJ)
%.elf: $(OBJ)
@echo
@echo $(MSG_LINKING) $@
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS)
 
 
# Compile: create object files from C source files.
%.o : %.c
@echo
@echo $(MSG_COMPILING) $<
$(CC) -c $(ALL_CFLAGS) $< -o $@
 
 
# Compile: create assembler files from C source files.
%.s : %.c
$(CC) -S $(ALL_CFLAGS) $< -o $@
 
 
# Assemble: create object files from assembler source files.
%.o : %.S
@echo
@echo $(MSG_ASSEMBLING) $<
$(CC) -c $(ALL_ASFLAGS) $< -o $@
 
 
 
 
 
 
# Target: clean project.
clean: begin clean_list finished end
 
clean_list :
@echo
@echo $(MSG_CLEANING)
# $(REMOVE) $(TARGET).hex
$(REMOVE) $(TARGET).eep
$(REMOVE) $(TARGET).obj
$(REMOVE) $(TARGET).cof
$(REMOVE) $(TARGET).elf
$(REMOVE) $(TARGET).map
$(REMOVE) $(TARGET).obj
$(REMOVE) $(TARGET).a90
$(REMOVE) $(TARGET).sym
$(REMOVE) $(TARGET).lnk
$(REMOVE) $(TARGET).lss
$(REMOVE) $(OBJ)
$(REMOVE) $(LST)
$(REMOVE) $(SRC:.c=.s)
$(REMOVE) $(SRC:.c=.d)
 
 
# Automatically generate C source code dependencies.
# (Code originally taken from the GNU make user manual and modified
# (See README.txt Credits).)
#
# Note that this will work with sh (bash) and sed that is shipped with WinAVR
# (see the SHELL variable defined above).
# This may not work with other shells or other seds.
#
%.d: %.c
set -e; $(CC) -MM $(ALL_CFLAGS) $< \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \
[ -s $@ ] || rm -f $@
 
 
# Remove the '-' if you want to see the dependency files generated.
-include $(SRC:.c=.d)
 
 
 
# Listing of phony targets.
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \
clean clean_list program
 
/branches/V0.68d CRK HexaLotte/menu.c
0,0 → 1,236
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Copyright (c) 04.2007 Holger Buss
// + only for non-profit use
// + www.MikroKopter.com
// + see the File "License.txt" for further Informations
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
#include <stdlib.h>
#include <inttypes.h>
#include "main.h"
#include "eeprom.h"
#include "timer2.h"
#include "fc.h"
#include "rc.h"
#include "uart.h"
#include "printf_P.h"
#include "analog.h"
#ifdef USE_MM3
#include "mm3.h"
#endif
#include "ubx.h"
#include "_Settings.h"
 
 
#define ARRAYSIZE 10
uint8_t Array[ARRAYSIZE] = {1,2,3,4,5,6,7,8,9,10};
#define DISPLAYBUFFSIZE 80
int8_t DisplayBuff[DISPLAYBUFFSIZE] = "Hello World";
uint8_t DispPtr = 0;
uint8_t RemoteButtons = 0;
 
#define KEY1 0x01
#define KEY2 0x02
#define KEY3 0x04
#define KEY4 0x08
#define KEY5 0x10
 
/************************************/
/* Clear LCD Buffer */
/************************************/
void LCD_Clear(void)
{
uint8_t i;
for( i = 0; i < DISPLAYBUFFSIZE; i++) DisplayBuff[i] = ' ';
}
 
 
/************************************/
/* Update Menu on LCD */
/************************************/
// Display with 20 characters in 4 lines
void LCD_PrintMenu(void)
{
#ifdef USE_MM3
static uint8_t MaxMenuItem = 14;
#else
static uint8_t MaxMenuItem = 12;
#endif
static uint8_t MenuItem=0;
 
// if KEY1 is activated goto previous menu item
if(RemoteButtons & KEY1)
{
if(MenuItem) MenuItem--;
else MenuItem = MaxMenuItem;
LCD_Clear();
RemotePollDisplayLine = -1;
}
// if KEY2 is activated goto next menu item
if(RemoteButtons & KEY2)
{
if (MenuItem == MaxMenuItem) MenuItem = 0;
else MenuItem++;
LCD_Clear();
RemotePollDisplayLine = -1;
}
 
// if KEY1 and KEY2 is activated goto initial menu item
if((RemoteButtons & KEY1) && (RemoteButtons & KEY2)) MenuItem = 0;
 
// print menu item number in the upper right corner
if(MenuItem < 10)
{
LCD_printfxy(17,0,"[%i]",MenuItem);
}
else
{
LCD_printfxy(16,0,"[%i]",MenuItem);
}
 
switch(MenuItem)
{
case 0:// Version Info Menu Item
LCD_printfxy(0,0,"+ MikroKopter +");
LCD_printfxy(0,1,"HW:V%d.%d SW:%d.%d%c",BoardRelease/10,BoardRelease%10,VERSION_MAJOR, VERSION_MINOR,VERSION_INDEX+'a');
LCD_printfxy(0,2,"Setting: %d ", GetActiveParamSet());
LCD_printfxy(0,3,"(c) Holger Buss");
break;
case 1:// Height Control Menu Item
if(ParamSet.GlobalConfig & CFG_HEIGHT_CONTROL)
{
LCD_printfxy(0,0,"Height: %5i",ReadingHeight);
LCD_printfxy(0,1,"Set Point: %5i",SetPointHeight);
LCD_printfxy(0,2,"Air Press.:%5i",ReadingAirPressure);
LCD_printfxy(0,3,"Offset :%5i",PressureSensorOffset);
}
else
{
LCD_printfxy(0,1,"No ");
LCD_printfxy(0,2,"Height Control");
}
 
break;
case 2:// Attitude Menu Item
LCD_printfxy(0,0,"Attitude");
LCD_printfxy(0,1,"Pitch: %5i",IntegralPitch/1024);
LCD_printfxy(0,2,"Roll: %5i",IntegralRoll/1024);
LCD_printfxy(0,3,"Compass: %5i",CompassHeading);
break;
case 3:// Remote Control Channel Menu Item
LCD_printfxy(0,0,"C1:%4i C2:%4i ",PPM_in[1],PPM_in[2]);
LCD_printfxy(0,1,"C3:%4i C4:%4i ",PPM_in[3],PPM_in[4]);
LCD_printfxy(0,2,"C5:%4i C6:%4i ",PPM_in[5],PPM_in[6]);
LCD_printfxy(0,3,"C7:%4i C8:%4i ",PPM_in[7],PPM_in[8]);
break;
case 4:// Remote Control Mapping Menu Item
LCD_printfxy(0,0,"Pi:%4i Ro:%4i ",PPM_in[ParamSet.ChannelAssignment[CH_PITCH]],PPM_in[ParamSet.ChannelAssignment[CH_ROLL]]);
LCD_printfxy(0,1,"Gs:%4i Ya:%4i ",PPM_in[ParamSet.ChannelAssignment[CH_THRUST]],PPM_in[ParamSet.ChannelAssignment[CH_YAW]]);
LCD_printfxy(0,2,"P1:%4i P2:%4i ",PPM_in[ParamSet.ChannelAssignment[CH_POTI1]],PPM_in[ParamSet.ChannelAssignment[CH_POTI2]]);
LCD_printfxy(0,3,"P3:%4i P4:%4i ",PPM_in[ParamSet.ChannelAssignment[CH_POTI3]],PPM_in[ParamSet.ChannelAssignment[CH_POTI4]]);
break;
case 5:// Gyro Sensor Menu Item
LCD_printfxy(0,0,"Gyro - Sensor");
if(BoardRelease == 10)
{
LCD_printfxy(0,1,"Pitch %4i (%3i)",AdValueGyrPitch - AdNeutralPitch, AdNeutralPitch);
LCD_printfxy(0,2,"Roll %4i (%3i)",AdValueGyrRoll - AdNeutralRoll, AdNeutralRoll);
LCD_printfxy(0,3,"Yaw %4i (%3i)",Reading_GyroYaw, AdNeutralYaw);
}
else
{
LCD_printfxy(0,1,"Pitch %4i (%3i)",AdValueGyrPitch - AdNeutralPitch, AdNeutralPitch/2);
LCD_printfxy(0,2,"Roll %4i (%3i)",AdValueGyrRoll - AdNeutralRoll, AdNeutralRoll/2);
LCD_printfxy(0,3,"Yaw %4i (%3i)",Reading_GyroYaw, AdNeutralYaw/2);
}
break;
case 6:// Acceleration Sensor Menu Item
LCD_printfxy(0,0,"ACC - Sensor");
LCD_printfxy(0,1,"Pitch %4i (%3i)",AdValueAccPitch, NeutralAccX);
LCD_printfxy(0,2,"Roll %4i (%3i)",AdValueAccRoll, NeutralAccY);
LCD_printfxy(0,3,"Height %4i (%3i)",Mean_AccTop, (int)NeutralAccZ);
break;
case 7:// Accumulator Voltage / Remote Control Level
LCD_printfxy(0,1,"Voltage: %5i",UBat);
LCD_printfxy(0,2,"RC-Level: %5i",RC_Quality);
break;
case 8:// Compass Menu Item
LCD_printfxy(0,0,"Compass ");
LCD_printfxy(0,1,"Course: %5i",CompassCourse);
LCD_printfxy(0,2,"Heading: %5i",CompassHeading);
LCD_printfxy(0,3,"OffCourse: %5i",CompassOffCourse);
break;
case 9:// Poti Menu Item
LCD_printfxy(0,0,"Po1: %3i Po5: %3i" ,Poti1,Poti5); //PPM24-Extesion
LCD_printfxy(0,1,"Po2: %3i Po6: %3i" ,Poti2,Poti6); //PPM24-Extesion
LCD_printfxy(0,2,"Po3: %3i Po7: %3i" ,Poti3,Poti7); //PPM24-Extesion
LCD_printfxy(0,3,"Po4: %3i Po8: %3i" ,Poti4,Poti8); //PPM24-Extesion
break;
case 10:// Servo Menu Item
LCD_printfxy(0,0,"Servo " );
LCD_printfxy(0,1,"Setpoint %3i",FCParam.ServoPitchControl);
LCD_printfxy(0,2,"Position: %3i",ServoValue);
LCD_printfxy(0,3,"Range:%3i-%3i",ParamSet.ServoPitchMin, ParamSet.ServoPitchMax);
break;
case 11://Extern Control
LCD_printfxy(0,0,"ExternControl " );
LCD_printfxy(0,1,"Pi:%4i Ro:%4i ",ExternControl.Pitch, ExternControl.Roll);
LCD_printfxy(0,2,"Gs:%4i Ya:%4i ",ExternControl.Thrust, ExternControl.Yaw);
LCD_printfxy(0,3,"Hi:%4i Cf:%4i ",ExternControl.Height, ExternControl.Config);
break;
case 12://GPS Lat/Lon coords
if (GPSInfo.status == INVALID)
{
LCD_printfxy(0,0,"No data available!");
}
else
{
switch (GPSInfo.satfix)
{
case SATFIX_NONE:
LCD_printfxy(0,0,"Sats: %d Fix: No", GPSInfo.satnum);
break;
case SATFIX_2D:
LCD_printfxy(0,0,"Sats: %d Fix: 2D", GPSInfo.satnum);
break;
case SATFIX_3D:
LCD_printfxy(0,0,"Sats: %d Fix: 3D", GPSInfo.satnum);
break;
default:
LCD_printfxy(0,0,"Sats: %d Fix: ??", GPSInfo.satnum);
break;
}
int16_t i1,i2,i3;
i1 = (int16_t)(GPSInfo.longitude/10000000L);
i2 = abs((int16_t)((GPSInfo.longitude%10000000L)/10000L));
i3 = abs((int16_t)(((GPSInfo.longitude%10000000L)%10000L)/10L));
LCD_printfxy(0,1,"Lon: %d.%.3d%.3d deg",i1, i2, i3);
i1 = (int16_t)(GPSInfo.latitude/10000000L);
i2 = abs((int16_t)((GPSInfo.latitude%10000000L)/10000L));
i3 = abs((int16_t)(((GPSInfo.latitude%10000000L)%10000L)/10L));
LCD_printfxy(0,2,"Lat: %d.%.3d%.3d deg",i1, i2, i3);
i1 = (int16_t)(GPSInfo.altitude/1000L);
i2 = abs((int16_t)(GPSInfo.altitude%1000L));
LCD_printfxy(0,3,"Alt: %d.%.3d m",i1, i2);
}
break;
#ifdef USE_MM3
case 13:// MM3 Kompass
LCD_printfxy(0,0,"MM3 Offset");
LCD_printfxy(0,1,"X_Offset: %3i",MM3_calib.X_off);
LCD_printfxy(0,2,"Y_Offset: %3i",MM3_calib.Y_off);
LCD_printfxy(0,3,"Z_Offset: %3i",MM3_calib.Z_off);
break;
case 14://MM3 Range
LCD_printfxy(0,0,"MM3 Range");
LCD_printfxy(0,1,"X_Range: %4i",MM3_calib.X_range);
LCD_printfxy(0,2,"Y_Range: %4i",MM3_calib.Y_range);
LCD_printfxy(0,3,"Z_Range: %4i",MM3_calib.Z_range);
break;
#endif
default: MaxMenuItem = MenuItem - 1;
MenuItem = 0;
break;
}
RemoteButtons = 0;
}
/branches/V0.68d CRK HexaLotte/menu.h
0,0 → 1,16
#ifndef _MENU_H
#define _MENU_H
 
#include <inttypes.h>
 
#define DISPLAYBUFFSIZE 80
 
extern void LCD_PrintMenu(void);
extern void LCD_Clear(void);
extern int8_t DisplayBuff[DISPLAYBUFFSIZE];
extern uint8_t DispPtr;
extern uint8_t RemoteButtons;
 
#endif //_MENU_H
 
 
/branches/V0.68d CRK HexaLotte/mm3.c
0,0 → 1,415
/*
 
Copyright 2008, by Killagreg
 
This program (files mm3.c and mm3.h) is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation;
either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
 
Please note: The original implementation was done by Niklas Nold.
All the other files for the project "Mikrokopter" by H. Buss are under the license (license_buss.txt) published by www.mikrokopter.de
*/
#include <stdlib.h>
#include <avr/io.h>
#include <avr/interrupt.h>
 
#include "mm3.h"
#include "main.h"
#include "mymath.h"
#include "fc.h"
#include "timer0.h"
#include "rc.h"
#include "eeprom.h"
#include "printf_P.h"
 
#define MAX_AXIS_VALUE 500
 
 
typedef struct
{
uint8_t STATE;
uint16_t DRDY;
uint8_t AXIS;
int16_t x_axis;
int16_t y_axis;
int16_t z_axis;
} MM3_working_t;
 
 
// MM3 State Machine
#define MM3_STATE_RESET 0
#define MM3_STATE_START_TRANSFER 1
#define MM3_STATE_WAIT_DRDY 2
#define MM3_STATE_DRDY 3
#define MM3_STATE_BYTE2 4
 
#define MM3_X_AXIS 0x01
#define MM3_Y_AXIS 0x02
#define MM3_Z_AXIS 0x03
 
 
#define MM3_PERIOD_32 0x00
#define MM3_PERIOD_64 0x10
#define MM3_PERIOD_128 0x20
#define MM3_PERIOD_256 0x30
#define MM3_PERIOD_512 0x40
#define MM3_PERIOD_1024 0x50
#define MM3_PERIOD_2048 0x60
#define MM3_PERIOD_4096 0x70
 
MM3_calib_t MM3_calib;
volatile MM3_working_t MM3;
volatile uint8_t MM3_Timeout = 0;
 
 
 
/*********************************************/
/* Initialize Interface to MM3 Compass */
/*********************************************/
void MM3_Init(void)
{
uint8_t sreg = SREG;
 
cli();
 
// Configure Pins for SPI
// set SCK (PB7), MOSI (PB5) as output
DDRB |= (1<<DDB7)|(1<<DDB5);
// set MISO (PB6) as input
DDRB &= ~(1<<DDB6);
 
#ifdef USE_WALTER_EXT // walthers board
// Output Pins (J9)PC6->MM3_SS ,(J8)PB2->MM3_RESET
DDRB |= (1<<DDB2);
DDRC |= (1<<DDC6);
// set pins permanent to low
PORTB &= ~((1<<PORTB2));
PORTC &= ~((1<<PORTC6));
#else // killagregs board
// Output Pins PC4->MM3_SS ,PC5->MM3_RESET
DDRC |= (1<<DDC4)|(1<<DDC5);
// set pins permanent to low
PORTC &= ~((1<<PORTC4)|(1<<PORTC5));
#endif
 
// Initialize SPI-Interface
// Enable interrupt (SPIE=1)
// Enable SPI bus (SPE=1)
// MSB transmitted first (DORD = 0)
// Master SPI Mode (MSTR=1)
// Clock polarity low when idle (CPOL=0)
// Clock phase sample at leading edge (CPHA=0)
// Clock rate = SYSCLK/128 (SPI2X=0, SPR1=1, SPR0=1) 20MHz/128 = 156.25kHz
SPCR = (1<<SPIE)|(1<<SPE)|(0<<DORD)|(1<<MSTR)|(0<<CPOL)|(0<<CPHA)|(1<<SPR1)|(1<<SPR0);
SPSR &= ~(1<<SPI2X);
 
// Init Statemachine
MM3.AXIS = MM3_X_AXIS;
MM3.STATE = MM3_STATE_RESET;
 
// Read calibration from EEprom
MM3_calib.X_off = (int8_t)GetParamByte(PID_MM3_X_OFF);
MM3_calib.Y_off = (int8_t)GetParamByte(PID_MM3_Y_OFF);
MM3_calib.Z_off = (int8_t)GetParamByte(PID_MM3_Z_OFF);
MM3_calib.X_range = (int16_t)GetParamWord(PID_MM3_X_RANGE);
MM3_calib.Y_range = (int16_t)GetParamWord(PID_MM3_Y_RANGE);
MM3_calib.Z_range = (int16_t)GetParamWord(PID_MM3_Z_RANGE);
 
MM3_Timeout = 0;
 
SREG = sreg;
}
 
 
/*********************************************/
/* Get Data from MM3 */
/*********************************************/
void MM3_Update(void) // called every 102.4 µs by timer 0 ISR
{
switch (MM3.STATE)
{
case MM3_STATE_RESET:
#ifdef USE_WALTER_EXT // walthers board
PORTC &= ~(1<<PORTC6); // select slave
PORTB |= (1<<PORTB2); // PB2 to High, MM3 Reset
#else
PORTC &= ~(1<<PORTC4); // select slave
PORTC |= (1<<PORTC5); // PC5 to High, MM3 Reset
#endif
MM3.STATE = MM3_STATE_START_TRANSFER;
return;
 
case MM3_STATE_START_TRANSFER:
#ifdef USE_WALTER_EXT // walthers board
PORTB &= ~(1<<PORTB2); // PB2 auf Low (was 102.4 µs at high level)
#else
PORTC &= ~(1<<PORTC5); // PC4 auf Low (was 102.4 µs at high level)
#endif
// write to SPDR triggers automatically the transfer MOSI MISO
// MM3 Period, + AXIS code
switch(MM3.AXIS)
{
case MM3_X_AXIS:
SPDR = MM3_PERIOD_256 + MM3_X_AXIS;
break;
case MM3_Y_AXIS:
SPDR = MM3_PERIOD_256 + MM3_Y_AXIS;
break;
case MM3_Z_AXIS:
SPDR = MM3_PERIOD_256 + MM3_Z_AXIS;
break;
default:
MM3.AXIS = MM3_X_AXIS;
MM3.STATE = MM3_STATE_RESET;
return;
}
 
// DRDY line is not connected, therefore
// wait before reading data back
MM3.DRDY = SetDelay(8); // wait 8ms for data ready
MM3.STATE = MM3_STATE_WAIT_DRDY;
return;
 
case MM3_STATE_WAIT_DRDY:
if (CheckDelay(MM3.DRDY))
{
// write something into SPDR to trigger data reading
SPDR = 0x00;
MM3.STATE = MM3_STATE_DRDY;
}
return;
}
}
 
 
/*********************************************/
/* Interrupt SPI transfer complete */
/*********************************************/
ISR(SPI_STC_vect)
{
static int8_t tmp;
int16_t value;
 
switch (MM3.STATE)
{
// 1st byte received
case MM3_STATE_DRDY:
tmp = SPDR; // store 1st byte
SPDR = 0x00; // trigger transfer of 2nd byte
MM3.STATE = MM3_STATE_BYTE2;
return;
 
case MM3_STATE_BYTE2: // 2nd byte received
value = (int16_t)tmp; // combine the 1st and 2nd byte to a word
value <<= 8; // shift 1st byte to MSB-Position
value |= (int16_t)SPDR; // add 2nd byte
 
if(abs(value) < MAX_AXIS_VALUE) // ignore spikes
{
switch (MM3.AXIS)
{
case MM3_X_AXIS:
MM3.x_axis = value;
MM3.AXIS = MM3_Y_AXIS;
break;
case MM3_Y_AXIS:
MM3.y_axis = value;
MM3.AXIS = MM3_Z_AXIS;
break;
case MM3_Z_AXIS:
MM3.z_axis = value;
MM3.AXIS = MM3_X_AXIS;
break;
default:
MM3.AXIS = MM3_X_AXIS;
break;
}
}
#ifdef USE_WALTER_EXT // walthers board
PORTC |= (1<<PORTC6); // deselect slave
#else
PORTC |= (1<<PORTC4); // deselect slave
#endif
MM3.STATE = MM3_STATE_RESET;
// Update timeout is called every 102.4 µs.
// It takes 2 cycles to write a measurement data request for one axis and
// at at least 8 ms / 102.4 µs = 79 cycles to read the requested data back.
// I.e. 81 cycles * 102.4 µs = 8.3ms per axis.
// The two function accessing the MM3 Data - MM3_Calibrate() and MM3_Heading() -
// decremtent the MM3_Timeout every 100 ms.
// incrementing the counter by 1 every 8.3 ms is sufficient to avoid a timeout.
if ((MM3.x_axis != MM3.y_axis) || (MM3.x_axis != MM3.z_axis) || (MM3.y_axis != MM3.z_axis))
{ // if all axis measurements give diffrent readings the data should be valid
if(MM3_Timeout < 20) MM3_Timeout++;
}
else // something is very strange here
{
if(MM3_Timeout ) MM3_Timeout--;
}
return;
 
default:
return;
}
}
 
 
 
/*********************************************/
/* Calibrate Compass */
/*********************************************/
void MM3_Calibrate(void)
{
static uint8_t debugcounter = 0;
int16_t x_min = 0, x_max = 0, y_min = 0, y_max = 0, z_min = 0, z_max = 0;
uint8_t measurement = 50, beeper = 0;
uint16_t timer;
 
GRN_ON;
ROT_OFF;
 
// get maximum and minimum reading of all axis
while (measurement)
{
// reset range markers if yawstick ist leftmost
if(PPM_in[ParamSet.ChannelAssignment[CH_YAW]] > 100)
{
x_min = 0;
x_max = 0;
y_min = 0;
y_max = 0;
z_min = 0;
z_max = 0;
}
 
if (MM3.x_axis > x_max) x_max = MM3.x_axis;
else if (MM3.x_axis < x_min) x_min = MM3.x_axis;
 
if (MM3.y_axis > y_max) y_max = MM3.y_axis;
else if (MM3.y_axis < y_min) y_min = MM3.y_axis;
 
if (MM3.z_axis > z_max) z_max = MM3.z_axis;
else if (MM3.z_axis < z_min) z_min = MM3.z_axis;
 
if (!beeper)
{
ROT_FLASH;
GRN_FLASH;
BeepTime = 50;
beeper = 50;
}
beeper--;
// loop with period of 10 ms / 100 Hz
timer = SetDelay(10);
while(!CheckDelay(timer));
 
if(debugcounter++ > 30)
{
printf("\n\rXMin:%4d, XMax:%4d, YMin:%4d, YMax:%4d, ZMin:%4d, ZMax:%4d",x_min,x_max,y_min,y_max,z_min,z_max);
debugcounter = 0;
}
 
// If thrust is less than 100, stop calibration with a delay of 0.5 seconds
if (PPM_in[ParamSet.ChannelAssignment[CH_THRUST]] < 100) measurement--;
}
// Rage of all axis
MM3_calib.X_range = (x_max - x_min);
MM3_calib.Y_range = (y_max - y_min);
MM3_calib.Z_range = (z_max - z_min);
 
// Offset of all axis
MM3_calib.X_off = (x_max + x_min) / 2;
MM3_calib.Y_off = (y_max + y_min) / 2;
MM3_calib.Z_off = (z_max + z_min) / 2;
 
// save to EEProm
SetParamByte(PID_MM3_X_OFF, (uint8_t)MM3_calib.X_off);
SetParamByte(PID_MM3_Y_OFF, (uint8_t)MM3_calib.Y_off);
SetParamByte(PID_MM3_Z_OFF, (uint8_t)MM3_calib.Z_off);
SetParamWord(PID_MM3_X_RANGE, (uint16_t)MM3_calib.X_range);
SetParamWord(PID_MM3_Y_RANGE, (uint16_t)MM3_calib.Y_range);
SetParamWord(PID_MM3_Z_RANGE, (uint16_t)MM3_calib.Z_range);
 
}
 
 
/*********************************************/
/* Calculate north direction (heading) */
/*********************************************/
int16_t MM3_Heading(void)
{
int32_t sin_pitch, cos_pitch, sin_roll, cos_roll, sin_yaw, cos_yaw;
int32_t Hx, Hy, Hz, Hx_corr, Hy_corr;
int16_t angle;
uint16_t div_factor;
int16_t heading;
 
if (MM3_Timeout)
{
// Offset correction and normalization (values of H are +/- 512)
Hx = (((int32_t)(MM3.x_axis - MM3_calib.X_off)) * 1024) / (int32_t)MM3_calib.X_range;
Hy = (((int32_t)(MM3.y_axis - MM3_calib.Y_off)) * 1024) / (int32_t)MM3_calib.Y_range;
Hz = (((int32_t)(MM3.z_axis - MM3_calib.Z_off)) * 1024) / (int32_t)MM3_calib.Z_range;
 
// Compensate the angle of the MM3-arrow to the head of the MK by a yaw rotation transformation
// assuming the MM3 board is mounted parallel to the frame.
// User Param 4 is used to define the positive angle from the MM3-arrow to the MK heading
// in a top view counter clockwise direction.
// North is in opposite direction of the small arrow on the MM3 board.
// Therefore 180 deg must be added to that angle.
angle = ((int16_t)ParamSet.UserParam4 + 180);
// wrap angle to interval of 0°- 359°
angle += 360;
angle %= 360;
sin_yaw = (int32_t)(c_sin_8192(angle));
cos_yaw = (int32_t)(c_cos_8192(angle));
 
Hx_corr = Hx;
Hy_corr = Hy;
 
// rotate
Hx = (Hx_corr * cos_yaw - Hy_corr * sin_yaw) / 8192;
Hy = (Hx_corr * sin_yaw + Hy_corr * cos_yaw) / 8192;
 
 
// tilt compensation
 
// calibration factor for transforming Gyro Integrals to angular degrees
div_factor = (uint16_t)ParamSet.UserParam3 * 8;
 
// calculate sinus cosinus of pitch and tilt angle
angle = (IntegralPitch/div_factor);
sin_pitch = (int32_t)(c_sin_8192(angle));
cos_pitch = (int32_t)(c_cos_8192(angle));
 
angle = (IntegralRoll/div_factor);
sin_roll = (int32_t)(c_sin_8192(angle));
cos_roll = (int32_t)(c_cos_8192(angle));
 
Hx_corr = Hx * cos_pitch;
Hx_corr -= Hz * sin_pitch;
Hx_corr /= 8192;
 
Hy_corr = Hy * cos_roll;
Hy_corr += Hz * sin_roll;
Hy_corr /= 8192;
 
// calculate Heading
heading = c_atan2(Hy_corr, Hx_corr);
 
// atan returns angular range from -180 deg to 180 deg in counter clockwise notation
// but the compass course is defined in a range from 0 deg to 360 deg clockwise notation.
if (heading < 0) heading = -heading;
else heading = 360 - heading;
}
else // MM3_Timeout = 0 i.e now new data from external board
{
if(!BeepTime) BeepTime = 100; // make noise to signal the compass problem
heading = -1;
}
return heading;
}
/branches/V0.68d CRK HexaLotte/mm3.h
0,0 → 1,32
#ifndef _MM3_H
#define _MM3_H
 
#include <inttypes.h>
 
typedef struct
{
int8_t X_off;
int8_t Y_off;
int8_t Z_off;
int16_t X_range;
int16_t Y_range;
int16_t Z_range;
} MM3_calib_t;
 
extern MM3_calib_t MM3_calib;
 
// Initialization of the MM3 communication
void MM3_Init(void);
 
// should be called cyclic to get actual compass reading
void MM3_Update(void);
// this function calibrates the MM3
// and returns immediately if the communication to the MM3-Board is broken.
void MM3_Calibrate(void);
 
// calculates the current compass heading in a range from 0 to 360 deg.
// returns -1 if no compass data are available
int16_t MM3_Heading(void);
 
#endif //_MM3_H
 
/branches/V0.68d CRK HexaLotte/mymath.c
0,0 → 1,99
#include <stdlib.h>
#include <avr/pgmspace.h>
#include "mymath.h"
 
// discrete mathematics
 
// Sinus with argument in degree at an angular resolution of 1 degree and a discretisation of 13 bit.
const uint16_t pgm_sinlookup[91] PROGMEM = {0, 143, 286, 429, 571, 714, 856, 998, 1140, 1282, 1423, 1563, 1703, 1843, 1982, 2120, 2258, 2395, 2531, 2667, 2802, 2936, 3069, 3201, 3332, 3462, 3591, 3719, 3846, 3972, 4096, 4219, 4341, 4462, 4581, 4699, 4815, 4930, 5043, 5155, 5266, 5374, 5482, 5587, 5691, 5793, 5893, 5991, 6088, 6183, 6275, 6366, 6455, 6542, 6627, 6710, 6791, 6870, 6947, 7022, 7094, 7165, 7233, 7299, 7363, 7424, 7484, 7541, 7595, 7648, 7698, 7746, 7791, 7834, 7875, 7913, 7949, 7982, 8013, 8041, 8068, 8091, 8112, 8131, 8147, 8161, 8172, 8181, 8187, 8191, 8192};
 
int16_t c_sin_8192(int16_t angle)
{
int8_t m,n;
int16_t sinus;
 
// avoid negative angles
if (angle < 0)
{
m = -1;
angle = abs(angle);
}
else m = +1;
 
// fold angle to intervall 0 to 359
angle %= 360;
 
// check quadrant
if (angle <= 90) n=1; // first quadrant
else if ((angle > 90) && (angle <= 180)) {angle = 180 - angle; n = 1;} // second quadrant
else if ((angle > 180) && (angle <= 270)) {angle = angle - 180; n = -1;} // third quadrant
else {angle = 360 - angle; n = -1;} //fourth quadrant
// get lookup value
sinus = pgm_read_word(&pgm_sinlookup[angle]);
// calculate sinus value
return (sinus * m * n);
}
 
// Cosinus with argument in degree at an angular resolution of 1 degree and a discretisation of 13 bit.
int16_t c_cos_8192(int16_t angle)
{
return (c_sin_8192(90 - angle));
}
 
 
// Arcustangens returns degree in a range of +/. 180 deg
const uint8_t pgm_atanlookup[346] PROGMEM = {0,1,2,3,4,4,5,6,7,8,9,10,11,11,12,13,14,15,16,17,17,18,19,20,21,21,22,23,24,24,25,26,27,27,28,29,29,30,31,31,32,33,33,34,35,35,36,36,37,37,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,45,46,46,47,47,48,48,48,49,49,50,50,50,51,51,51,52,52,52,53,53,53,54,54,54,55,55,55,55,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,60,61,61,61,61,62,62,62,62,62,63,63,63,63,63,63,64,64,64,64,64,64,65,65,65,65,65,65,66,66,66,66,66,66,66,67,67,67,67,67,67,67,68,68,68,68,68,68,68,68,69,69,69,69,69,69,69,69,69,70,70,70,70,70,70,70,70,70,71,71,71,71,71,71,71,71,71,71,71,72,72,72,72,72,72,72,72,72,72,72,73,73,73,73,73,73,73,73,73,73,73,73,73,73,74,74,74,74,74,74,74,74,74,74,74,74,74,74,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79};
 
int16_t c_atan2(int16_t y, int16_t x)
{
int16_t index, angle;
int8_t m;
 
if (!x && !y) return 0; //atan2(0, 0) is undefined
 
if (y < 0) m = -1;
else m = 1;
 
if (!x) return (90 * m); // atan2(y,0) = +/- 90 deg
 
index = (int16_t)(((int32_t)y * 64) / x);// calculate index for lookup table
if (index < 0) index = -index;
 
if (index < 346) angle = pgm_read_byte(&pgm_atanlookup[index]); // lookup for 0 deg to 79 deg
else if (index > 7334) angle = 90; // limit is 90 deg
else if (index > 2444) angle = 89; // 89 deg to 80 deg is mapped via intervalls
else if (index > 1465) angle = 88;
else if (index > 1046) angle = 87;
else if (index > 813) angle = 86;
else if (index > 664) angle = 85;
else if (index > 561) angle = 84;
else if (index > 486) angle = 83;
else if (index > 428) angle = 82;
else if (index > 382) angle = 81;
else angle = 80; // (index>345)
 
if (x > 0) return (angle * m); // 1st and 4th quadrant
else if ((x < 0) && (m > 0)) return (180 - angle); // 2nd quadrant
else return (angle - 180); // ( (x < 0) && (y < 0)) 3rd quadrant
}
 
 
 
// integer square root
uint32_t c_sqrt(uint32_t number)
{
uint32_t s1, s2;
uint8_t iter = 0;
// initialization of iteration
s2 = number;
do // iterative formula to solve x^2 - n = 0
{
s1 = s2;
s2 = number / s1;
s2 += s1;
s2 /= 2;
iter++;
//if(iter > 40) break;
}while( ( (s1-s2) > 1) && (iter < 40));
return s2;
}
/branches/V0.68d CRK HexaLotte/mymath.h
0,0 → 1,11
#ifndef _MYMATH_H
#define _MYMATH_H
 
#include <inttypes.h>
 
extern int16_t c_sin_8192(int16_t angle);
extern int16_t c_cos_8192(int16_t angle);
extern int16_t c_atan2(int16_t y, int16_t x);
extern uint32_t c_sqrt(uint32_t number);
 
#endif // _MYMATH_H
/branches/V0.68d CRK HexaLotte/old_macros.h
0,0 → 1,47
/*
For backwards compatibility only.
Ingo Busker ingo@mikrocontroller.com
*/
 
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
 
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif
 
#ifndef inb
#define inb(sfr) _SFR_BYTE(sfr)
#endif
 
#ifndef outb
#define outb(sfr, val) (_SFR_BYTE(sfr) = (val))
#endif
 
#ifndef inw
#define inw(sfr) _SFR_WORD(sfr)
#endif
 
#ifndef outw
#define outw(sfr, val) (_SFR_WORD(sfr) = (val))
#endif
 
#ifndef outp
#define outp(val, sfr) outb(sfr, val)
#endif
 
#ifndef inp
#define inp(sfr) inb(sfr)
#endif
 
#ifndef BV
#define BV(bit) _BV(bit)
#endif
 
 
#ifndef PRG_RDB
#define PRG_RDB pgm_read_byte
#endif
 
/branches/V0.68d CRK HexaLotte/printf_P.c
0,0 → 1,483
// Die Funktion printf_P() unterliegt ihrer eigenen Lizenz und ist nicht von der Lizenz für den MikroKopter-Teil unterstellt
 
/*
Copyright (C) 1993 Free Software Foundation
 
This file is part of the GNU IO Library. This library is free
software; you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option)
any later version.
 
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this library; see the file COPYING. If not, write to the Free
Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
As a special exception, if you link this library with files
compiled with a GNU compiler to produce an executable, this does not cause
the resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why
the executable file might be covered by the GNU General Public License. */
 
/*
* Copyright (c) 1990 Regents of the University of California.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. [rescinded 22 July 1999]
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
 
/******************************************************************************
This file is a patched version of printf called _printf_P
It is made to work with avr-gcc for Atmel AVR MCUs.
There are some differences from standard printf:
1. There is no floating point support (with fp the code is about 8K!)
2. Return type is void
3. Format string must be in program memory (by using macro printf this is
done automaticaly)
4. %n is not implemented (just remove the comment around it if you need it)
5. If LIGHTPRINTF is defined, the code is about 550 bytes smaller and the
folowing specifiers are disabled :
space # * . - + p s o O
6. A function void uart_sendchar(char c) is used for output. The UART must
be initialized before using printf.
 
Alexander Popov
sasho@vip.orbitel.bg
******************************************************************************/
 
/*
* Actual printf innards.
*
* This code is large and complicated...
*/
 
#include <string.h>
#ifdef __STDC__
#include <stdarg.h>
#else
#include <varargs.h>
#endif
 
#include "old_macros.h"
#include "printf_P.h"
#include "menu.h"
#include "uart.h"
 
 
//#define LIGHTPRINTF
char PrintZiel;
 
 
char Putchar(char zeichen)
{
if(PrintZiel == OUT_LCD) { DisplayBuff[DispPtr++] = zeichen; return(1);}
else return(uart_putchar(zeichen));
}
 
 
void PRINT(const char * ptr, unsigned int len)
{
for(;len;len--) Putchar(*ptr++);
}
 
void PRINTP(const char * ptr, unsigned int len)
{
for(;len;len--) Putchar(pgm_read_byte(ptr++));
}
 
void PAD_SP(signed char howmany)
{
for(;howmany>0;howmany--) Putchar(' ');
}
 
void PAD_0(signed char howmany)
{
for(;howmany>0;howmany--) Putchar('0');
}
 
#define BUF 40
 
/*
* Macros for converting digits to letters and vice versa
*/
#define to_digit(c) ((c) - '0')
#define is_digit(c) ((c)<='9' && (c)>='0')
#define to_char(n) ((n) + '0')
 
/*
* Flags used during conversion.
*/
#define LONGINT 0x01 /* long integer */
#define LONGDBL 0x02 /* long double; unimplemented */
#define SHORTINT 0x04 /* short integer */
#define ALT 0x08 /* alternate form */
#define LADJUST 0x10 /* left adjustment */
#define ZEROPAD 0x20 /* zero (as opposed to blank) pad */
#define HEXPREFIX 0x40 /* add 0x or 0X prefix */
 
void _printf_P (char ziel,char const *fmt0, ...) /* Works with string from FLASH */
{
va_list ap;
register const char *fmt; /* format string */
register char ch; /* character from fmt */
register int n; /* handy integer (short term usage) */
register char *cp; /* handy char pointer (short term usage) */
const char *fmark; /* for remembering a place in fmt */
register unsigned char flags; /* flags as above */
signed char width; /* width from format (%8d), or 0 */
signed char prec; /* precision from format (%.3d), or -1 */
char sign; /* sign prefix (' ', '+', '-', or \0) */
unsigned long _ulong=0; /* integer arguments %[diouxX] */
#define OCT 8
#define DEC 10
#define HEX 16
unsigned char base; /* base for [diouxX] conversion */
signed char dprec; /* a copy of prec if [diouxX], 0 otherwise */
signed char dpad; /* extra 0 padding needed for integers */
signed char fieldsz; /* field size expanded by sign, dpad etc */
/* The initialization of 'size' is to suppress a warning that
'size' might be used unitialized. It seems gcc can't
quite grok this spaghetti code ... */
signed char size = 0; /* size of converted field or string */
char buf[BUF]; /* space for %c, %[diouxX], %[eEfgG] */
char ox[2]; /* space for 0x hex-prefix */
 
PrintZiel = ziel; // bestimmt, LCD oder UART
va_start(ap, fmt0);
 
fmt = fmt0;
 
/*
* Scan the format for conversions (`%' character).
*/
for (;;) {
for (fmark = fmt; (ch = pgm_read_byte(fmt)) != '\0' && ch != '%'; fmt++)
/* void */;
if ((n = fmt - fmark) != 0) {
PRINTP(fmark, n);
}
if (ch == '\0')
goto done;
fmt++; /* skip over '%' */
 
flags = 0;
dprec = 0;
width = 0;
prec = -1;
sign = '\0';
 
rflag: ch = PRG_RDB(fmt++);
reswitch:
#ifdef LIGHTPRINTF
if (ch=='o' || ch=='u' || (ch|0x20)=='x') {
#else
if (ch=='u' || (ch|0x20)=='x') {
#endif
if (flags&LONGINT) {
_ulong=va_arg(ap, unsigned long);
} else {
register unsigned int _d;
_d=va_arg(ap, unsigned int);
_ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d;
}
}
 
#ifndef LIGHTPRINTF
if(ch==' ') {
/*
* ``If the space and + flags both appear, the space
* flag will be ignored.''
* -- ANSI X3J11
*/
if (!sign)
sign = ' ';
goto rflag;
} else if (ch=='#') {
flags |= ALT;
goto rflag;
} else if (ch=='*'||ch=='-') {
if (ch=='*') {
/*
* ``A negative field width argument is taken as a
* - flag followed by a positive field width.''
* -- ANSI X3J11
* They don't exclude field widths read from args.
*/
if ((width = va_arg(ap, int)) >= 0)
goto rflag;
width = -width;
}
flags |= LADJUST;
flags &= ~ZEROPAD; /* '-' disables '0' */
goto rflag;
} else if (ch=='+') {
sign = '+';
goto rflag;
} else if (ch=='.') {
if ((ch = PRG_RDB(fmt++)) == '*') {
n = va_arg(ap, int);
prec = n < 0 ? -1 : n;
goto rflag;
}
n = 0;
while (is_digit(ch)) {
n = n*10 + to_digit(ch);
ch = PRG_RDB(fmt++);
}
prec = n < 0 ? -1 : n;
goto reswitch;
} else
#endif /* LIGHTPRINTF */
if (ch=='0') {
/*
* ``Note that 0 is taken as a flag, not as the
* beginning of a field width.''
* -- ANSI X3J11
*/
if (!(flags & LADJUST))
flags |= ZEROPAD; /* '-' disables '0' */
goto rflag;
} else if (ch>='1' && ch<='9') {
n = 0;
do {
n = 10 * n + to_digit(ch);
ch = PRG_RDB(fmt++);
} while (is_digit(ch));
width = n;
goto reswitch;
} else if (ch=='h') {
flags |= SHORTINT;
goto rflag;
} else if (ch=='l') {
flags |= LONGINT;
goto rflag;
} else if (ch=='c') {
*(cp = buf) = va_arg(ap, int);
size = 1;
sign = '\0';
} else if (ch=='D'||ch=='d'||ch=='i') {
if(ch=='D')
flags |= LONGINT;
if (flags&LONGINT) {
_ulong=va_arg(ap, long);
} else {
register int _d;
_d=va_arg(ap, int);
_ulong = flags&SHORTINT ? (long)(short)_d : (long)_d;
}
 
if ((long)_ulong < 0) {
_ulong = -_ulong;
sign = '-';
}
base = DEC;
goto number;
} else
/*
if (ch=='n') {
if (flags & LONGINT)
*va_arg(ap, long *) = ret;
else if (flags & SHORTINT)
*va_arg(ap, short *) = ret;
else
*va_arg(ap, int *) = ret;
continue; // no output
} else
*/
#ifndef LIGHTPRINTF
if (ch=='O'||ch=='o') {
if (ch=='O')
flags |= LONGINT;
base = OCT;
goto nosign;
} else if (ch=='p') {
/*
* ``The argument shall be a pointer to void. The
* value of the pointer is converted to a sequence
* of printable characters, in an implementation-
* defined manner.''
* -- ANSI X3J11
*/
/* NOSTRICT */
_ulong = (unsigned int)va_arg(ap, void *);
base = HEX;
flags |= HEXPREFIX;
ch = 'x';
goto nosign;
} else if (ch=='s') { // print a string from RAM
if ((cp = va_arg(ap, char *)) == NULL) {
cp=buf;
cp[0] = '(';
cp[1] = 'n';
cp[2] = 'u';
cp[4] = cp[3] = 'l';
cp[5] = ')';
cp[6] = '\0';
}
if (prec >= 0) {
/*
* can't use strlen; can only look for the
* NUL in the first `prec' characters, and
* strlen() will go further.
*/
char *p = (char*)memchr(cp, 0, prec);
 
if (p != NULL) {
size = p - cp;
if (size > prec)
size = prec;
} else
size = prec;
} else
size = strlen(cp);
sign = '\0';
} else
#endif /* LIGHTPRINTF */
if(ch=='U'||ch=='u') {
if (ch=='U')
flags |= LONGINT;
base = DEC;
goto nosign;
} else if (ch=='X'||ch=='x') {
base = HEX;
/* leading 0x/X only if non-zero */
if (flags & ALT && _ulong != 0)
flags |= HEXPREFIX;
 
/* unsigned conversions */
nosign: sign = '\0';
/*
* ``... diouXx conversions ... if a precision is
* specified, the 0 flag will be ignored.''
* -- ANSI X3J11
*/
number: if ((dprec = prec) >= 0)
flags &= ~ZEROPAD;
 
/*
* ``The result of converting a zero value with an
* explicit precision of zero is no characters.''
* -- ANSI X3J11
*/
cp = buf + BUF;
if (_ulong != 0 || prec != 0) {
register unsigned char _d,notlastdigit;
do {
notlastdigit=(_ulong>=base);
_d = _ulong % base;
 
if (_d<10) {
_d+='0';
} else {
_d+='a'-10;
if (ch=='X') _d&=~0x20;
}
*--cp=_d;
_ulong /= base;
} while (notlastdigit);
#ifndef LIGHTPRINTF
// handle octal leading 0
if (base==OCT && flags & ALT && *cp != '0')
*--cp = '0';
#endif
}
 
size = buf + BUF - cp;
} else { //default
/* "%?" prints ?, unless ? is NUL */
if (ch == '\0')
goto done;
/* pretend it was %c with argument ch */
cp = buf;
*cp = ch;
size = 1;
sign = '\0';
}
 
/*
* All reasonable formats wind up here. At this point,
* `cp' points to a string which (if not flags&LADJUST)
* should be padded out to `width' places. If
* flags&ZEROPAD, it should first be prefixed by any
* sign or other prefix; otherwise, it should be blank
* padded before the prefix is emitted. After any
* left-hand padding and prefixing, emit zeroes
* required by a decimal [diouxX] precision, then print
* the string proper, then emit zeroes required by any
* leftover floating precision; finally, if LADJUST,
* pad with blanks.
*/
 
/*
* compute actual size, so we know how much to pad.
*/
fieldsz = size;
 
dpad = dprec - size;
if (dpad < 0)
dpad = 0;
 
if (sign)
fieldsz++;
else if (flags & HEXPREFIX)
fieldsz += 2;
fieldsz += dpad;
 
/* right-adjusting blank padding */
if ((flags & (LADJUST|ZEROPAD)) == 0)
PAD_SP(width - fieldsz);
 
/* prefix */
if (sign) {
PRINT(&sign, 1);
} else if (flags & HEXPREFIX) {
ox[0] = '0';
ox[1] = ch;
PRINT(ox, 2);
}
 
/* right-adjusting zero padding */
if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD)
PAD_0(width - fieldsz);
 
/* leading zeroes from decimal precision */
PAD_0(dpad);
 
/* the string or number proper */
PRINT(cp, size);
 
/* left-adjusting padding (always blank) */
if (flags & LADJUST)
PAD_SP(width - fieldsz);
}
done:
va_end(ap);
}
/branches/V0.68d CRK HexaLotte/printf_P.h
0,0 → 1,19
#ifndef _PRINTF_P_H_
#define _PRINTF_P_H_
 
#include <avr/pgmspace.h>
 
#define OUT_V24 0
#define OUT_LCD 1
 
 
void _printf_P (char, char const *fmt0, ...);
extern char PrintZiel;
 
 
#define printf_P(format, args...) _printf_P(OUT_V24,format , ## args)
#define printf(format, args...) _printf_P(OUT_V24,PSTR(format) , ## args)
#define LCD_printfxy(x,y,format, args...) { DispPtr = y * 20 + x; _printf_P(OUT_LCD,PSTR(format) , ## args);}
#define LCD_printf(format, args...) { _printf_P(OUT_LCD,PSTR(format) , ## args);}
 
#endif
/branches/V0.68d CRK HexaLotte/rc.c
0,0 → 1,180
/*#######################################################################################
Decodieren eines RC Summen Signals
#######################################################################################*/
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Copyright (c) 04.2007 Holger Buss
// + only for non-profit use
// + www.MikroKopter.com
// + see the File "License.txt" for further Informations
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
#include <stdlib.h>
#include <avr/io.h>
#include <avr/interrupt.h>
 
#include "rc.h"
#include "main.h"
 
volatile int16_t PPM_in[15]; //PPM24 supports 12 channels per frame
volatile int16_t PPM_diff[15];
volatile uint8_t NewPpmData = 1;
volatile int16_t RC_Quality = 0;
 
volatile uint8_t NewRCFrames = 0;
 
 
/***************************************************************/
/* 16bit timer 1 is used to decode the PPM-Signal */
/***************************************************************/
void RC_Init (void)
{
uint8_t sreg = SREG;
 
// disable all interrupts before reconfiguration
cli();
 
// PPM-signal is connected to the Input Capture Pin (PD6) of timer 1
DDRD &= ~(1<<DDD6);
PORTD |= (1<<PORTD6);
 
// Channel 5,6,7 is decoded to servo signals at pin PD5 (J3), PD4(J4), PD3(J5)
// set as output
DDRD |= (1<<DDD5)|(1<<DDD4);
// low level
PORTD &= ~((1<<PORTD5)|(1<<PORTD4));
 
// PD3 can't be used in FC 1.1 if 2nd UART is activated
// because TXD1 is at that port
if(BoardRelease == 10)
{
DDRD |= (1<<PORTD3);
PORTD &= ~(1<<PORTD3);
}
 
// Timer/Counter1 Control Register A, B, C
 
// Normal Mode (bits: WGM13=0, WGM12=0, WGM11=0, WGM10=0)
// Compare output pin A & B is disabled (bits: COM1A1=0, COM1A0=0, COM1B1=0, COM1B0=0)
// Set clock source to SYSCLK/64 (bit: CS12=0, CS11=1, CS10=1)
// Enable input capture noise cancler (bit: ICNC1=1)
// Trigger on positive edge of the input capture pin (bit: ICES1=1),
// Therefore the counter incremets at a clock of 20 MHz/64 = 312.5 kHz or 3.2µs
// The longest period is 0xFFFF / 312.5 kHz = 0.209712 s.
TCCR1A &= ~((1<<COM1A1)|(1<<COM1A0)|(1<<COM1B1)|(1<<COM1B0)|(1<<WGM11)|(1<<WGM10));
TCCR1B &= ~((1<<WGM13)|(1<<WGM12)|(1<<CS12));
TCCR1B |= (1<<CS11)|(1<<CS10)|(1<<ICES1)|(1<<ICNC1);
TCCR1C &= ~((1<<FOC1A)|(1<<FOC1B));
 
// Timer/Counter1 Interrupt Mask Register
 
// Enable Input Capture Interrupt (bit: ICIE1=1)
// Disable Output Compare A & B Match Interrupts (bit: OCIE1B=0, OICIE1A=0)
// Enable Overflow Interrupt (bit: TOIE1=0)
TIMSK1 &= ~((1<<OCIE1B)|(1<<OCIE1A));
TIMSK1 |= (1<<ICIE1)|(1<<TOIE1);
 
RC_Quality = 0;
 
SREG = sreg;
}
 
 
// happens every 0.209712 s.
// check for at least one new frame per timer overflow (timeout)
ISR(TIMER1_OVF_vect)
{
if (NewRCFrames == 0) RC_Quality -= RC_Quality/8;
NewRCFrames = 0;
}
 
 
/********************************************************************/
/* Every time a positive edge is detected at PD6 */
/********************************************************************/
/* t-Frame
<----------------------------------------------------------------------->
____ ______ _____ ________ ______ sync gap ____
| | | | | | | | | | |
| | | | | | | | | | |
___| |_| |_| |_| |_.............| |________________|
<-----><-------><------><--------> <------> <---
t0 t1 t2 t4 tn t0
 
The PPM-Frame length is 22.5 ms.
Channel high pulse width range is 0.7 ms to 1.7 ms completed by an 0.3 ms low pulse.
The mininimum time delay of two events coding a channel is ( 0.7 + 0.3) ms = 1 ms.
The maximum time delay of two events coding a chanel is ( 1.7 + 0.3) ms = 2 ms.
The minimum duration of all channels at minimum value is 8 * 1 ms = 8 ms.
The maximum duration of all channels at maximum value is 8 * 2 ms = 16 ms.
The remaining time of (22.5 - 8 ms) ms = 14.5 ms to (22.5 - 16 ms) ms = 6.5 ms is
the syncronization gap.
*/
ISR(TIMER1_CAPT_vect) // typical rate of 1 ms to 2 ms
{
int16_t signal = 0, tmp;
static int16_t index;
static uint16_t oldICR1 = 0;
 
// 16bit Input Capture Register ICR1 contains the timer value TCNT1
// at the time the edge was detected
 
// calculate the time delay to the previous event time which is stored in oldICR1
// calculatiing the difference of the two uint16_t and converting the result to an int16_t
// implicit handles a timer overflow 65535 -> 0 the right way.
signal = (uint16_t) ICR1 - oldICR1;
oldICR1 = ICR1;
 
//sync gap? (3.52 ms < signal < 25.6 ms)
if((signal > 1100) && (signal < 8000))
{
// if a sync gap happens and there where at least 4 channels decoded before
// then the NewPpmData flag is reset indicating valid data in the PPM_in[] array.
if(index >= 4)
{
NewPpmData = 0; // Null means NewData for the first 4 channels
NewRCFrames++;
}
// synchronize channel index
index = 1;
}
else // within the PPM frame
{
if(index < 14) // PPM24 supports 12 channels
{
// check for valid signal length (0.8 ms < signal < 2.1984 ms)
// signal range is from 1.0ms/3.2us = 312 to 2.0ms/3.2us = 625
if((signal > 250) && (signal < 687))
{
// shift signal to zero symmetric range -154 to 159
signal -= 466; // offset of 1.4912 ms ??? (469 * 3.2µs = 1.5008 ms)
// check for stable signal
if(abs(signal-PPM_in[index]) < 6)
{
if(RC_Quality < 200) RC_Quality +=10;
}
// calculate exponential history for signal
tmp = (3 * (PPM_in[index]) + signal) / 4;
if(tmp > signal+1) tmp--; else
if(tmp < signal-1) tmp++;
// calculate signal difference on good signal level
if(RC_Quality >= 195) PPM_diff[index] = ((tmp - PPM_in[index]) / 3) * 3; // cut off lower 3 bit for nois reduction
else PPM_diff[index] = 0;
PPM_in[index] = tmp; // update channel value
}
index++; // next channel
// demux sum signal for channels 5 to 7 to J3, J4, J5
if(index == 5) PORTD |= (1<<PORTD5); else PORTD &= ~(1<<PORTD5);
if(index == 6) PORTD |= (1<<PORTD4); else PORTD &= ~(1<<PORTD4);
if(BoardRelease == 10)
{
if(index == 7) PORTD |= (1<<PORTD3); else PORTD &= ~(1<<PORTD3);
}
}
}
if(RC_Quality) RC_Quality--;
}
 
 
 
 
 
/branches/V0.68d CRK HexaLotte/rc.h
0,0 → 1,11
#ifndef _RC_H
#define _RC_H
 
#include <inttypes.h>
 
extern void RC_Init (void);
extern volatile int16_t PPM_in[15]; // the RC-Signal
extern volatile int16_t PPM_diff[15]; // the differentiated RC-Signal
extern volatile uint8_t NewPpmData; // 0 indicates a new recieved PPM Frame
extern volatile int16_t RC_Quality; // rc signal quality indicator (0 to 200)
#endif //_RC_H
/branches/V0.68d CRK HexaLotte/spi.c
0,0 → 1,114
// ######################## SPI - FlightCtrl ###################
#include "main.h"
#include "spi.h"
 
 
struct str_ToNaviCtrl ToNaviCtrl;
struct str_FromNaviCtrl FromNaviCtrl;
unsigned char SPI_BufferIndex;
volatile unsigned char SPI_Buffer[sizeof(FromNaviCtrl)];
unsigned char *Ptr_buffer = (unsigned char *) &ToNaviCtrl;
 
unsigned char SPITransferCompleted, SPI_ChkSum;
#ifdef USE_SPI_COMMUNICATION
//------------------------------------------------------
void SPI_MasterInit(void)
{
DDR_SPI |= (1<<DD_MOSI)|(1<<DD_SCK); // Set MOSI and SCK output, all others input
SLAVE_SELECT_DDR_PORT |= (1 << SPI_SLAVE_SELECT);
 
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR1)|(0<<SPIE); // Enable SPI, Master, set clock rate fck/64
SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT);
SPITransferCompleted = 1;
 
ToNaviCtrl.Sync1 = 0x81;
ToNaviCtrl.Sync2 = 0x55;
 
ToNaviCtrl.Comp = 12;
ToNaviCtrl.IntegralPitch = 12345;
ToNaviCtrl.IntegralRoll = 56789;
ToNaviCtrl.StickPitch = 100;
ToNaviCtrl.StickRoll = 150;//(char) StickRoll;
ToNaviCtrl.StickYaw = 200;//(char) StickYaw;
 
}
 
//------------------------------------------------------
void SPI_StartTransmitPacket(void)
{
//if ((SLAVE_SELECT_PORT & (1 << SPI_SLAVE_SELECT)) == 0) return; // transfer of prev. packet not completed
if (!SPITransferCompleted) return;
 
SLAVE_SELECT_PORT &= ~(1 << SPI_SLAVE_SELECT); // SelectSlave
 
SPITransferCompleted = 0;
UpdateSPI_Buffer(); // update buffer
SPI_BufferIndex = 1;
// DebugOut.Analog[16]++;
// -- Debug-Output ---
/* DebugOut.Analog[20] = FromNaviCtrl.Comp;
DebugOut.Analog[21] = FromNaviCtrl.GPS_Pitch;
DebugOut.Analog[22] = FromNaviCtrl.GPS_Roll;
DebugOut.Analog[23] = FromNaviCtrl.CompassHeading;
*/
//----
SPDR = ToNaviCtrl.Sync1; // Start transmission
ToNaviCtrl.ChkSum = ToNaviCtrl.Sync1;
}
 
//------------------------------------------------------
//SIGNAL(SIG_SPI)
void SPI_TransmitByte(void)
{
if (!(SPSR & (1 << SPIF))) return;
SLAVE_SELECT_PORT |= (1 << SPI_SLAVE_SELECT); // DeselectSlave
 
if (SPI_BufferIndex < sizeof(FromNaviCtrl))
{
SPI_Buffer[SPI_BufferIndex]= SPDR; // get data
 
// if (SPI_BufferIndex < 32 ) DebugOut.Analog[26+SPI_BufferIndex] = SPI_Buffer[SPI_BufferIndex];
 
//if(SPDR!= 0x00) DebugOut.Analog[19]++; ;
}
 
if (SPI_BufferIndex < sizeof(ToNaviCtrl))
{
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
SLAVE_SELECT_PORT &= ~(1 << SPI_SLAVE_SELECT); // SelectSlave
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop");
 
SPDR = Ptr_buffer[SPI_BufferIndex];
ToNaviCtrl.ChkSum += Ptr_buffer[SPI_BufferIndex];
}
else
{
unsigned char *ptr = (unsigned char *)&FromNaviCtrl;
 
SPITransferCompleted = 1;
memcpy(ptr, (unsigned char *) SPI_Buffer, sizeof(SPI_Buffer));
}
 
SPI_BufferIndex++;
}
 
//------------------------------------------------------
void UpdateSPI_Buffer(void)
{
/*static unsigned char i =0;
cli();
ToNaviCtrl.Comp = SPI_PROTOCOL_COMP;
ToNaviCtrl.IntegralPitch = (int) (IntegralPitch >> 4);
ToNaviCtrl.IntegralRoll = (int) (IntegralRoll >> 4);
ToNaviCtrl.StickPitch = 4;
ToNaviCtrl.StickRoll = 5;//(char) StickRoll;
ToNaviCtrl.StickYaw = 6;//(char) StickYaw;
sei();
*/
}
 
#endif
 
 
/branches/V0.68d CRK HexaLotte/spi.h
0,0 → 1,89
// ######################## SPI - FlightCtrl ###################
#ifndef _SPI_H
#define _SPI_H
 
//#define USE_SPI_COMMUNICATION
 
#define SPI_PROTOCOL_COMP 1
 
//-----------------------------------------
#define DDR_SPI DDRB
#define DD_SS PB4
#define DD_SCK PB7
#define DD_MOSI PB5
#define DD_MISO PB6
 
// for compatibility reasons gcc3.x <-> gcc4.x
#ifndef SPCR
#define SPCR SPCR0
#endif
#ifndef SPE
#define SPE SPE0
#endif
#ifndef MSTR
#define MSTR MSTR0
#endif
#ifndef SPR1
#define SPR1 SPR01
#endif
#ifndef SPR0
#define SPR0 SPR00
#endif
#ifndef SPIE
#define SPIE SPIE0
#endif
#ifndef SPDR
#define SPDR SPDR0
#endif
#ifndef SPIF
#define SPIF SPIF0
#endif
#ifndef SPSR
#define SPSR SPSR0
#endif
// -------------------------
 
#define SLAVE_SELECT_DDR_PORT DDRC
#define SLAVE_SELECT_PORT PORTC
#define SPI_SLAVE_SELECT PC5
 
struct str_ToNaviCtrl
{
unsigned char Sync1, Sync2;
unsigned char Comp;
int IntegralPitch;
int IntegralRoll;
char StickPitch,StickRoll,StickYaw;
unsigned char ChkSum;
};
 
struct str_FromNaviCtrl
{
unsigned int Dummy;
unsigned char Comp;
int GPS_Pitch;
int GPS_Roll;
int CompassHeading;
};
 
#ifdef USE_SPI_COMMUNICATION
extern struct str_ToNaviCtrl ToNaviCtrl;
extern struct str_FromNaviCtrl FromNaviCtrl;
 
 
extern void SPI_MasterInit(void);
extern void SPI_StartTransmitPacket(void);
extern void UpdateSPI_Buffer(void);
extern void SPI_TransmitByte(void);
#else
 
 
// -------------------------------- Dummy -----------------------------------------
#define SPI_MasterInit() ;
#define SPI_StartTransmitPacket() ;
#define UpdateSPI_Buffer() ;
#define SPI_TransmitByte() ;
#endif
 
 
#endif
/branches/V0.68d CRK HexaLotte/timer0.c
0,0 → 1,184
#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include "eeprom.h"
#include "analog.h"
#include "main.h"
#include "fc.h"
#ifdef USE_MM3
#include "mm3.h"
#endif
#ifdef USE_CMPS03
#include "cmps03.h"
#endif
 
volatile uint16_t CountMilliseconds = 0;
volatile uint8_t UpdateMotor = 0;
volatile uint16_t cntKompass = 0;
volatile uint16_t BeepTime = 0;
volatile uint16_t BeepModulation = 0xFFFF;
 
 
 
/*****************************************************/
/* Initialize Timer 0 */
/*****************************************************/
// timer 0 is used for the PWM generation to control the offset voltage at the air pressure sensor
// Its overflow interrupt routine is used to generate the beep signal and the flight control motor update rate
void TIMER0_Init(void)
{
uint8_t sreg = SREG;
 
// disable all interrupts before reconfiguration
cli();
 
// configure speaker port as output
if(BoardRelease == 10)
{ // Speaker at PD2
DDRD |= (1<<DDD2);
PORTD &= ~(1<<PORTD2);
}
else
{ // Speaker at PC7
DDRC |= (1<<DDC7);
PORTC &= ~(1<<PORTC7);
}
 
// set PB3 and PB4 as output for the PWM used as aoffset for the pressure sensor
DDRB |= (1<<DDB4)|(1<<DDB3);
PORTB &= ~((1<<PORTB4)|(1<<PORTB3));
 
if(BoardRelease == 10)
{
DDRD |= (1<<DDD2);
PORTD &= ~(1<<PORTD2);
 
}
else
{
DDRC |= (1<<DDC7);
PORTC &= ~(1<<PORTC7);
}
 
// Timer/Counter 0 Control Register A
 
// Waveform Generation Mode is Fast PWM (Bits WGM02 = 0, WGM01 = 1, WGM00 = 1)
// Clear OC0A on Compare Match, set OC0A at BOTTOM, noninverting PWM (Bits COM0A1 = 1, COM0A0 = 0)
// Clear OC0B on Compare Match, set OC0B at BOTTOM, (Bits COM0B1 = 1, COM0B0 = 0)
TCCR0A &= ~((1<<COM0A0)|(1<<COM0B0));
TCCR0A |= (1<<COM0A1)|(1<<COM0B1)|(1<<WGM01)|(1<<WGM00);
 
// Timer/Counter 0 Control Register B
 
// set clock devider for timer 0 to SYSKLOCK/8 = 20MHz / 8 = 2.5MHz
// i.e. the timer increments from 0x00 to 0xFF with an update rate of 2.5 MHz
// hence the timer overflow interrupt frequency is 2.5 MHz / 256 = 9.765 kHz
 
// divider 8 (Bits CS02 = 0, CS01 = 1, CS00 = 0)
TCCR0B &= ~((1<<FOC0A)|(1<<FOC0B)|(1<<WGM02));
TCCR0B = (TCCR0B & 0xF8)|(0<<CS02)|(1<<CS01)|(0<<CS00);
 
// initialize the Output Compare Register A & B used for PWM generation on port PB3 & PB4
OCR0A = 0; // for PB3
OCR0B = 120; // for PB4
 
// init Timer/Counter 0 Register
TCNT0 = 0;
 
// Timer/Counter 0 Interrupt Mask Register
// enable timer overflow interrupt only
TIMSK0 &= ~((1<<OCIE0B)|(1<<OCIE0A));
TIMSK0 |= (1<<TOIE0);
 
SREG = sreg;
}
 
 
 
/*****************************************************/
/* Interrupt Routine of Timer 0 */
/*****************************************************/
ISR(TIMER0_OVF_vect) // 9.765 kHz
{
static uint8_t cnt_1ms = 1,cnt = 0;
uint8_t Beeper_On = 0;
 
if(!cnt--) // every 10th run (9.765kHz/10 = 976Hz)
{
cnt = 9;
cnt_1ms++;
cnt_1ms %= 2;
if(!cnt_1ms) UpdateMotor = 1; // every 2nd run (976Hz/2 = 488 Hz)
CountMilliseconds++; // increment millisecond counter
}
 
 
// beeper on if duration is not over
if(BeepTime)
{
BeepTime--; // decrement BeepTime
if(BeepTime & BeepModulation) Beeper_On = 1;
else Beeper_On = 0;
}
else // beeper off if duration is over
{
Beeper_On = 0;
BeepModulation = 0xFFFF;
}
 
// if beeper is on
if(Beeper_On)
{
// set speaker port to high
if(BoardRelease == 10) PORTD |= (1<<PORTD2); // Speaker at PD2
else PORTC |= (1<<PORTC7); // Speaker at PC7
}
else // beeper is off
{
// set speaker port to low
if(BoardRelease == 10) PORTD &= ~(1<<PORTD2);// Speaker at PD2
else PORTC &= ~(1<<PORTC7);// Speaker at PC7
}
 
// update compass value if this option is enabled in the settings
if((ParamSet.GlobalConfig & CFG_COMPASS_ACTIVE) || (ParamSet.GlobalConfig & CFG_GPS_ACTIVE))
{
#ifdef USE_MM3
MM3_Update(); // read out mm3 board
#endif
#ifdef USE_CMPS03
CMPS03_Update(); // read out cmps03 pwm
#endif
}
}
 
 
 
// -----------------------------------------------------------------------
uint16_t SetDelay (uint16_t t)
{
return(CountMilliseconds + t + 1);
}
 
// -----------------------------------------------------------------------
int8_t CheckDelay(uint16_t t)
{
return(((t - CountMilliseconds) & 0x8000) >> 9); // check sign bit
}
 
// -----------------------------------------------------------------------
void Delay_ms(uint16_t w)
{
unsigned int t_stop;
t_stop = SetDelay(w);
while (!CheckDelay(t_stop));
}
 
// -----------------------------------------------------------------------
void Delay_ms_Mess(uint16_t w)
{
uint16_t t_stop;
t_stop = SetDelay(w);
while (!CheckDelay(t_stop)) ADC_Enable();
}
 
/branches/V0.68d CRK HexaLotte/timer0.h
0,0 → 1,19
#ifndef _TIMER0_H
#define _TIMER0_H
 
#include <inttypes.h>
 
extern volatile uint16_t CountMilliseconds;
extern volatile uint8_t UpdateMotor;
extern volatile uint16_t cntKompass;
extern volatile uint16_t BeepModulation;
extern volatile uint16_t BeepTime;
 
 
extern void TIMER0_Init(void);
extern void Delay_ms(uint16_t w);
extern void Delay_ms_Mess(uint16_t w);
extern uint16_t SetDelay (uint16_t t);
extern int8_t CheckDelay (uint16_t t);
 
#endif //_TIMER0_H
/branches/V0.68d CRK HexaLotte/timer2.c
0,0 → 1,104
#include <avr/io.h>
#include <avr/interrupt.h>
#include "fc.h"
#include "eeprom.h"
 
volatile int16_t ServoValue = 0;
 
 
/*****************************************************/
/* Initialize Timer 2 */
/*****************************************************/
// The timer 2 is used to generate the PWM at PD7 (J7)
// to control a camera servo for pitch compensation.
void TIMER2_Init(void)
{
uint8_t sreg = SREG;
 
// disable all interrupts before reconfiguration
cli();
 
// set PD7 as output of the PWM for pitch servo
DDRD |=(1<<DDD7);
PORTD |= (1<<PORTD7);
 
 
// Timer/Counter 2 Control Register A
 
// Waveform Generation Mode is Fast PWM (Bits: WGM22 = 0, WGM21 = 1, WGM20 = 1)
// PD7: Clear OC2B on Compare Match, set OC2B at BOTTOM, non inverting PWM (Bits: COM2A1 = 1, COM2A0 = 0)
// PD6: Normal port operation, OC2B disconnected, (Bits: COM2B1 = 0, COM2B0 = 0)
TCCR2A &= ~((1<<COM2B1)|(1<<COM2B0)|(1<<COM2A0));
TCCR2A |= (1<<COM2A1)|(1<<WGM21)|(1<<WGM20);
 
// Timer/Counter 2 Control Register B
 
// Set clock divider for timer 2 to SYSKLOCK/256 = 20MHz / 256 = 78.128 kHz
// The timer increments from 0x00 to 0xFF with an update rate of 78.128 kHz or 12.8 us
// hence the timer overflow interrupt frequency is 78.128 kHz / 256 = 305.176 Hz or 3.276 ms
 
// divider 256 (Bits: CS022 = 1, CS21 = 1, CS20 = 0)
TCCR2B &= ~((1<<FOC2A)|(1<<FOC2B)|(1<<CS20)|(1<<WGM22));
TCCR2B |= (1<<CS22)|(1<<CS21);
 
// Initialize the Output Compare Register A used for PWM generation on port PD7.
OCR2A = 10; //10 * 12.8us = 1.28 ms high time
 
// Initialize the Timer/Counter 2 Register
TCNT2 = 0;
 
// Timer/Counter 2 Interrupt Mask Register
// Enable timer output compare match A Interrupt only
TIMSK2 &= ~((1<<OCIE2B)|(1<<TOIE2));
TIMSK2 |= (1<<OCIE2A);
 
SREG = sreg;
}
 
 
/*****************************************************/
/* Control Servo Position */
/*****************************************************/
ISR(TIMER2_COMPA_vect) // every OCR2A * 12.8 us (compare match)
{
static uint8_t timer = 10;
 
if(!timer--)
{
// enable PWM on PD7 in non inverting mode
TCCR2A &= ~(0<<COM2A0);
TCCR2A |= (1<<COM2A1);
 
ServoValue = FCParam.ServoPitchControl;
// inverting movment of servo
if(ParamSet.ServoPitchCompInvert & 0x01)
{
ServoValue += ((int32_t) ParamSet.ServoPitchComp * (IntegralPitch / 128)) / 512;
}
else // non inverting movement of servo
{
ServoValue -= ((int32_t) ParamSet.ServoPitchComp * (IntegralPitch / 128)) / 512;
}
 
// limit servo value to its parameter range definition
if(ServoValue < ParamSet.ServoPitchMin)
{
ServoValue = ParamSet.ServoPitchMin;
}
else if(ServoValue > ParamSet.ServoPitchMax)
{
ServoValue = ParamSet.ServoPitchMax;
}
 
// update PWM
OCR2A = ServoValue;
timer = ParamSet.ServoPitchRefresh;
}
else
{
// disable PWM at PD7
TCCR2A &= ~((1<<COM2A1)|(1<<COM2A0));
// set PD7 to low
PORTD &= ~(1<<PORTD7);
}
}
/branches/V0.68d CRK HexaLotte/timer2.h
0,0 → 1,12
#ifndef _TIMER2_H
#define _TIMER2_H
 
#include <inttypes.h>
 
extern volatile int16_t ServoValue;
extern void TIMER2_Init(void);
 
 
 
#endif //_TIMER2_H
 
/branches/V0.68d CRK HexaLotte/twimaster.c
0,0 → 1,190
/*############################################################################
############################################################################*/
 
#include <avr/io.h>
#include <avr/interrupt.h>
 
#include "main.h"
#include "twimaster.h"
#include "fc.h"
 
volatile uint8_t twi_state = 0;
volatile uint8_t motor = 0;
volatile uint8_t motor_rx[12];
 
/**************************************************/
/* Initialize I2C (TWI) */
/**************************************************/
void I2C_Init(void)
{
uint8_t sreg = SREG;
cli();
 
// SDA is INPUT
DDRC &= ~(1<<DDC1);
// SCL is output
DDRC |= (1<<DDC0);
// pull up SDA
PORTC |= (1<<PORTC0)|(1<<PORTC1);
 
// TWI Status Register
// prescaler 1 (TWPS1 = 0, TWPS0 = 0)
TWSR &= ~((1<<TWPS1)|(1<<TWPS0));
 
// set TWI Bit Rate Register
TWBR = ((SYSCLK/SCL_CLOCK)-16)/2;
 
SREG = sreg;
}
 
/****************************************/
/* Start I2C */
/****************************************/
void I2C_Start(void)
{
// TWI Control Register
// clear TWI interrupt flag (TWINT=1)
// disable TWI Acknowledge Bit (TWEA = 0)
// enable TWI START Condition Bit (TWSTA = 1), MASTER
// disable TWI STOP Condition Bit (TWSTO = 0)
// disable TWI Write Collision Flag (TWWC = 0)
// enable i2c (TWIE = 1)
// enable TWI Interrupt (TWIE = 1)
TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN) | (1<<TWIE);
}
 
/****************************************/
/* Stop I2C */
/****************************************/
void I2C_Stop(void)
{
// TWI Control Register
// clear TWI interrupt flag (TWINT=1)
// disable TWI Acknowledge Bit (TWEA = 0)
// diable TWI START Condition Bit (TWSTA = 1), no MASTER
// enable TWI STOP Condition Bit (TWSTO = 1)
// disable TWI Write Collision Flag (TWWC = 0)
// enable i2c (TWIE = 1)
// disable TWI Interrupt (TWIE = 0)
TWCR = (1<<TWINT) | (1<<TWSTO) | (1<<TWEN);
}
 
/****************************************/
/* Reset I2C */
/****************************************/
void I2C_Reset(void)
{
// stop i2c bus
I2C_Stop();
twi_state = 0;
motor = TWDR; // ??
motor = 0;
TWCR = (1<<TWINT); // reset to original state incl. interrupt flag reset
TWAMR = 0;
TWAR = 0;
TWDR = 0;
TWSR = 0;
TWBR = 0;
I2C_Init();
I2C_Start();
I2C_WriteByte(0);
}
 
/****************************************/
/* Write to I2C */
/****************************************/
void I2C_WriteByte(int8_t byte)
{
// move byte to send into TWI Data Register
TWDR = byte;
// clear interrupt flag (TWINT = 1)
// enable i2c bus (TWEN = 1)
// enable intterupt (TWIW = 1)
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE);
}
 
 
/****************************************/
/* Receive byte and send ACK */
/****************************************/
void I2C_ReceiveByte(void)
{
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE) | (1<<TWEA);
}
 
/****************************************/
/* I2C receive last byte and send no ACK*/
/****************************************/
void I2C_ReceiveLastByte(void)
{
TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWIE);
}
 
 
/****************************************/
/* I2C ISR */
/****************************************/
ISR (TWI_vect)
 
{
static uint8_t motorread = 0;
 
switch (twi_state++) // First i2s_start from SendMotorData()
{
// Master Transmit
case 0: // Send SLA-W
I2C_WriteByte(0x52+(motor*2));
break;
case 1: // Send Data to Salve
switch(motor++)
{
case 0:
I2C_WriteByte(Motor_FrontLeft);
break;
case 1:
I2C_WriteByte(Motor_RearRight);
break;
case 2:
I2C_WriteByte(Motor_FrontRight);
break;
case 3:
I2C_WriteByte(Motor_RearLeft);
break;
case 4:
I2C_WriteByte(Motor_Right);
break;
case 5:
I2C_WriteByte(Motor_Left);
break;
}
break;
case 2: // repeat case 0+1 for all Slaves
if (motor<6) twi_state = 0;
I2C_Start(); // Repeated start -> switch salve or switch Master Transmit -> Master Receive
break;
 
// Master Receive
case 3: // Send SLA-R
I2C_WriteByte(0x53+(motorread*2));
break;
case 4:
//Transmit 1st byte
I2C_ReceiveByte();
break;
case 5: //Read 1st byte and transmit 2nd Byte
motor_rx[motorread] = TWDR;
I2C_ReceiveLastByte();
break;
case 6:
//Read 2nd byte
motor_rx[motorread+6] = TWDR;
motorread++;
if (motorread > 5) motorread=0;
 
default:
I2C_Stop();
twi_state = 0;
I2CTimeout = 10;
motor = 0;
}
}
/branches/V0.68d CRK HexaLotte/twimaster.h
0,0 → 1,33
 
#ifndef _I2C_MASTER_H
#define _I2C_MASTER_H
+
+#include <inttypes.h>
+
+//############################################################################
+
+// I2C Konstanten
+#define SCL_CLOCK 200000L
+#define I2C_TIMEOUT 30000
+#define I2C_START 0x08
+#define I2C_REPEATED_START 0x10
+#define I2C_TX_SLA_ACK 0x18
+#define I2C_TX_DATA_ACK 0x28
+#define I2C_RX_SLA_ACK 0x40
+#define I2C_RX_DATA_ACK 0x50
+
+//############################################################################
+
+extern volatile uint8_t twi_state;
+extern volatile uint8_t motor;
+extern volatile uint8_t motorread;
+extern volatile uint8_t motor_rx[12];
+
+extern void I2C_Init (void); // Initialize I2C
+extern void I2C_Start (void); // Start I2C
+extern void I2C_Stop (void); // Stop I2C
+extern void I2C_WriteByte (int8_t byte); // Write 1 Byte
+extern void I2C_Reset(void); // Reset I2C
+
+#endif
/branches/V0.68d CRK HexaLotte/uart.c
0,0 → 1,464
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Copyright (c) 04.2007 Holger Buss
// + only for non-profit use
// + www.MikroKopter.com
// + see the File "License.txt" for further Informations
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>
 
#include "eeprom.h"
#include "main.h"
#include "menu.h"
#include "timer0.h"
#include "uart.h"
#include "fc.h"
#include "_Settings.h"
#include "rc.h"
#include "ubx.h"
 
 
 
 
#define FALSE 0
#define TRUE 1
 
//int8_t test __attribute__ ((section (".noinit")));
 
uint8_t DebugGetRequest = 0, DebugDisplayRequest = 0, DebugDataRequest = 0, GetVersionRequest = 0;
 
volatile uint8_t txd_buffer[TXD_BUFFER_LEN];
volatile uint8_t rxd_buffer_locked = FALSE;
volatile uint8_t rxd_buffer[RXD_BUFFER_LEN];
volatile uint8_t txd_complete = TRUE;
volatile uint8_t ReceivedBytes = 0;
 
uint8_t RemotePollDisplayLine = 0;
uint8_t NurKanalAnforderung = 0;
uint8_t DebugTextAnforderung = 255;
uint8_t PcAccess = 100;
uint8_t MotorTest[4] = {0,0,0,0};
uint8_t DubWiseKeys[4] = {0,0,0,0};
uint8_t MySlaveAddr = 0;
uint8_t ConfirmFrame;
 
DebugOut_t DebugOut;
ExternControl_t ExternControl;
VersionInfo_t VersionInfo;
 
const uint8_t ANALOG_TEXT[32][16] =
{
//1234567890123456
"IntegralPitch ", //0
"IntegralRoll ",
"AccPitch ",
"AccRoll ",
"GyroYaw ",
"ReadingHeight ", //5
"AccZ ",
"Thrust ",
"CompassHeading ",
"Voltage ",
"Receiver Level ", //10
"AnalogOut11 ",
"Motor VL ",
"Motor RR ",
"Motor VR ",
"Motor RL ", //15
"Motor Left ",
"Motor Right ",
"MeanAccRoll ",
"IntegralErrPitch",
"IntegralErrRoll ", //20
"MeanIntPitch ",
"MeanIntRoll ",
"NeutralPitch ",
"RollOffset ",
"IntRoll*Factor ", //25
"ReadingGyroPitch",
"DirectCorrRoll ",
"ReadingGyroRoll ",
"CorrectionRoll ",
"I-AttRoll ", //30
"StickRoll "
};
 
 
 
/****************************************************************/
/* Initialization of the USART0 */
/****************************************************************/
void USART0_Init (void)
{
uint8_t sreg = SREG;
uint16_t ubrr = (uint16_t) ((uint32_t) SYSCLK/(8 * USART0_BAUD) - 1);
 
// disable all interrupts before configuration
cli();
 
// disable RX-Interrupt
UCSR0B &= ~(1 << RXCIE0);
// disable TX-Interrupt
UCSR0B &= ~(1 << TXCIE0);
 
// set direction of RXD0 and TXD0 pins
// set RXD0 (PD0) as an input pin
PORTD |= (1 << PORTD0);
DDRD &= ~(1 << DDD0);
// set TXD0 (PD1) as an output pin
PORTD |= (1 << PORTD1);
DDRD |= (1 << DDD1);
 
// USART0 Baud Rate Register
// set clock divider
UBRR0H = (uint8_t)(ubrr >> 8);
UBRR0L = (uint8_t)ubrr;
 
// USART0 Control and Status Register A, B, C
 
// enable double speed operation in
UCSR0A |= (1 << U2X0);
// enable receiver and transmitter in
UCSR0B = (1 << TXEN0) | (1 << RXEN0);
// set asynchronous mode
UCSR0C &= ~(1 << UMSEL01);
UCSR0C &= ~(1 << UMSEL00);
// no parity
UCSR0C &= ~(1 << UPM01);
UCSR0C &= ~(1 << UPM00);
// 1 stop bit
UCSR0C &= ~(1 << USBS0);
// 8-bit
UCSR0B &= ~(1 << UCSZ02);
UCSR0C |= (1 << UCSZ01);
UCSR0C |= (1 << UCSZ00);
 
// flush receive buffer
while ( UCSR0A & (1<<RXC0) ) UDR0;
 
// enable interrupts at the end
// enable RX-Interrupt
UCSR0B |= (1 << RXCIE0);
// enable TX-Interrupt
UCSR0B |= (1 << TXCIE0);
 
rxd_buffer_locked = FALSE;
// restore global interrupt flags
SREG = sreg;
}
 
/****************************************************************/
/* USART0 transmitter ISR */
/****************************************************************/
ISR(USART0_TX_vect)
{
static uint16_t ptr_txd_buffer = 0;
uint8_t tmp_tx;
if(!txd_complete) // transmission not completed
{
ptr_txd_buffer++; // die [0] wurde schon gesendet
tmp_tx = txd_buffer[ptr_txd_buffer];
// if terminating character or end of txd buffer was reached
if((tmp_tx == '\r') || (ptr_txd_buffer == TXD_BUFFER_LEN))
{
ptr_txd_buffer = 0; // reset txd pointer
txd_complete = 1; // stop transmission
}
UDR0 = tmp_tx; // send current byte will trigger this ISR again
}
// transmission completed
else ptr_txd_buffer = 0;
}
 
/****************************************************************/
/* USART0 receiver ISR */
/****************************************************************/
ISR(USART0_RX_vect)
{
static uint16_t crc;
static uint8_t ptr_rxd_buffer = 0;
uint8_t crc1, crc2;
uint8_t c;
 
c = UDR0; // catch the received byte
 
// If the FC 1.0 cpu is used the ublox module should be conneced to rxd of the 1st uart.
// The FC 1.1 /1.2 has the ATMEGA644p cpu with a 2nd uart to which the ublox should be connected.
#if defined (__AVR_ATmega644P__)
if(BoardRelease == 10) ubx_parser(c);
#else
ubx_parser(c);
#endif
 
if(rxd_buffer_locked) return; // if txd buffer is locked immediately return
 
// the rxd buffer is unlocked
if((ptr_rxd_buffer == 0) && (c == '#')) // if rxd buffer is empty and syncronisation character is received
{
rxd_buffer[ptr_rxd_buffer++] = c; // copy 1st byte to buffer
crc = c; // init crc
}
#if 0
else if (ptr_rxd_buffer == 1) // handle address
{
rxd_buffer[ptr_rxd_buffer++] = c; // copy byte to rxd buffer
crc += c; // update crc
}
#endif
else if (ptr_rxd_buffer < RXD_BUFFER_LEN) // collect incomming bytes
{
if(c != '\r') // no termination character
{
rxd_buffer[ptr_rxd_buffer++] = c; // copy byte to rxd buffer
crc += c; // update crc
}
else // termination character was received
{
// the last 2 bytes are no subject for checksum calculation
// they are the checksum itself
crc -= rxd_buffer[ptr_rxd_buffer-2];
crc -= rxd_buffer[ptr_rxd_buffer-1];
// calculate checksum from transmitted data
crc %= 4096;
crc1 = '=' + crc / 64;
crc2 = '=' + crc % 64;
// compare checksum to transmitted checksum bytes
if((crc1 == rxd_buffer[ptr_rxd_buffer-2]) && (crc2 == rxd_buffer[ptr_rxd_buffer-1]))
{ // checksum valid
rxd_buffer_locked = TRUE; // lock the rxd buffer
ReceivedBytes = ptr_rxd_buffer; // store number of received bytes
rxd_buffer[ptr_rxd_buffer] = '\r'; // set termination character
// if 2nd byte is an 'R' enable watchdog that will result in an reset
if(rxd_buffer[2] == 'R') {wdt_enable(WDTO_250MS);} // Reset-Commando
}
else
{ // checksum invalid
rxd_buffer_locked = FALSE; // unlock rxd buffer
}
ptr_rxd_buffer = 0; // reset txd buffer
}
} // buffer overrun
else
{
ptr_rxd_buffer = 0; // reset rxd buffer
rxd_buffer_locked = FALSE; // unlock rxd buffer
}
 
}
 
 
// --------------------------------------------------------------------------
void AddCRC(uint16_t datalen)
{
uint16_t tmpCRC = 0,i;
for(i = 0; i < datalen;i++)
{
tmpCRC += txd_buffer[i];
}
tmpCRC %= 4096;
txd_buffer[i++] = '=' + tmpCRC / 64;
txd_buffer[i++] = '=' + tmpCRC % 64;
txd_buffer[i++] = '\r';
txd_complete = 0;
UDR0 = txd_buffer[0]; // initiates the transmittion
}
 
 
 
// --------------------------------------------------------------------------
void SendOutData(uint8_t cmd,uint8_t module, uint8_t *snd, uint8_t len)
{
uint16_t pt = 0;
uint8_t a,b,c;
uint8_t ptr = 0;
 
txd_buffer[pt++] = '#'; // Start character
txd_buffer[pt++] = module; // Address (a=0; b=1,...)
txd_buffer[pt++] = cmd; // Command
 
while(len)
{
if(len) { a = snd[ptr++]; len--;} else a = 0;
if(len) { b = snd[ptr++]; len--;} else b = 0;
if(len) { c = snd[ptr++]; len--;} else c = 0;
txd_buffer[pt++] = '=' + (a >> 2);
txd_buffer[pt++] = '=' + (((a & 0x03) << 4) | ((b & 0xf0) >> 4));
txd_buffer[pt++] = '=' + (((b & 0x0f) << 2) | ((c & 0xc0) >> 6));
txd_buffer[pt++] = '=' + ( c & 0x3f);
}
AddCRC(pt); // add checksum after data block and initates the transmission
}
 
 
// --------------------------------------------------------------------------
void Decode64(uint8_t *ptrOut, uint8_t len, uint8_t ptrIn, uint8_t max)
{
uint8_t a,b,c,d;
uint8_t ptr = 0;
uint8_t x,y,z;
while(len)
{
a = rxd_buffer[ptrIn++] - '=';
b = rxd_buffer[ptrIn++] - '=';
c = rxd_buffer[ptrIn++] - '=';
d = rxd_buffer[ptrIn++] - '=';
if(ptrIn > max - 2) break;
 
x = (a << 2) | (b >> 4);
y = ((b & 0x0f) << 4) | (c >> 2);
z = ((c & 0x03) << 6) | d;
 
if(len--) ptrOut[ptr++] = x; else break;
if(len--) ptrOut[ptr++] = y; else break;
if(len--) ptrOut[ptr++] = z; else break;
}
}
 
 
// --------------------------------------------------------------------------
void ProcessRxData(void)
{
// if data in the rxd buffer are not locked immediately return
if(!rxd_buffer_locked) return;
 
uint8_t tmp_char_arr2[2]; // local buffer
 
PcAccess = 255;
switch(rxd_buffer[2])
{
case 'a':// Labels of the Analog Deboug outputs
Decode64((uint8_t *) &tmp_char_arr2[0], sizeof(tmp_char_arr2), 3, ReceivedBytes);
DebugTextAnforderung = tmp_char_arr2[0];
break;
case 'b': // extern control
Decode64((uint8_t *) &ExternControl,sizeof(ExternControl), 3, ReceivedBytes);
RemoteButtons |= ExternControl.RemoteButtons;
ConfirmFrame = ExternControl.Frame;
break;
case 'c': // extern control with debug request
Decode64((uint8_t *) &ExternControl,sizeof(ExternControl),3,ReceivedBytes);
RemoteButtons |= ExternControl.RemoteButtons;
ConfirmFrame = ExternControl.Frame;
DebugDataRequest = 1;
break;
case 'h':// x-1 display columns
Decode64((uint8_t *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,ReceivedBytes);
RemoteButtons |= tmp_char_arr2[0];
if(tmp_char_arr2[1] == 255) NurKanalAnforderung = 1;
else NurKanalAnforderung = 0; // keine Displaydaten
DebugDisplayRequest = 1;
break;
case 't':// motor test
Decode64((uint8_t *) &MotorTest[0],sizeof(MotorTest),3,ReceivedBytes);
break;
case 'k':// keys from DubWise
Decode64((uint8_t *) &DubWiseKeys[0],sizeof(DubWiseKeys),3,ReceivedBytes);
ConfirmFrame = DubWiseKeys[3];
break;
case 'v': // get version and board release
GetVersionRequest = 1;
break;
case 'g':// get debug data
DebugGetRequest = 1;
break;
case 'q':// get settings
Decode64((uint8_t *) &tmp_char_arr2[0],sizeof(tmp_char_arr2),3,ReceivedBytes);
if(tmp_char_arr2[0] != 0xff)
{
if(tmp_char_arr2[0] > 5) tmp_char_arr2[0] = 5; // limit to 5
// load requested parameter set
ParamSet_ReadFromEEProm(tmp_char_arr2[0]);
SendOutData('L' + tmp_char_arr2[0] -1,MySlaveAddr,(uint8_t *) &ParamSet.ChannelAssignment[0],PARAMSET_STRUCT_LEN);
}
else // send active parameter set
SendOutData('L' + GetParamByte(PID_ACTIVE_SET)-1,MySlaveAddr,(uint8_t *) &ParamSet.ChannelAssignment[0],PARAMSET_STRUCT_LEN);
 
break;
 
case 'l':
case 'm':
case 'n':
case 'o':
case 'p': // save parameterset
Decode64((uint8_t *) &ParamSet.ChannelAssignment[0],PARAMSET_STRUCT_LEN,3,ReceivedBytes);
ParamSet_WriteToEEProm(rxd_buffer[2] - 'l' + 1);
TurnOver180Pitch = (int32_t) ParamSet.AngleTurnOverPitch * 2500L;
TurnOver180Roll = (int32_t) ParamSet.AngleTurnOverRoll * 2500L;
Beep(GetActiveParamSet());
break;
 
 
}
// unlock the rxd buffer after processing
rxd_buffer_locked = FALSE;
}
 
//############################################################################
//Routine für die Serielle Ausgabe
int16_t uart_putchar (int8_t c)
//############################################################################
{
if (c == '\n')
uart_putchar('\r');
// wait until previous character was send
loop_until_bit_is_set(UCSR0A, UDRE0);
//Ausgabe des Zeichens
UDR0 = c;
 
return (0);
}
 
 
//---------------------------------------------------------------------------------------------
void TransmitTxData(void)
{
static int16_t Debug_Timer = 0;
if(!txd_complete) return;
 
if(DebugGetRequest && txd_complete) // Bei Get werden die vom PC einstellbaren Werte vom PC zurückgelesen
{
SendOutData('G',MySlaveAddr,(uint8_t *) &ExternControl,sizeof(ExternControl));
DebugGetRequest = 0;
}
 
if((CheckDelay(Debug_Timer) || DebugDataRequest) && txd_complete)
{
SendOutData('D',MySlaveAddr,(uint8_t *) &DebugOut,sizeof(DebugOut));
DebugDataRequest = 0;
Debug_Timer = SetDelay(MIN_DEBUG_INTERVALL);
}
if(DebugTextAnforderung != 255) // Texte für die Analogdaten
{
SendOutData('A',DebugTextAnforderung + '0',(uint8_t *) ANALOG_TEXT[DebugTextAnforderung],16);
DebugTextAnforderung = 255;
}
if(ConfirmFrame && txd_complete) // Datensatz ohne CRC bestätigen
{
txd_buffer[0] = '#';
txd_buffer[1] = ConfirmFrame;
txd_buffer[2] = '\r';
txd_complete = 0;
ConfirmFrame = 0;
UDR0 = txd_buffer[0];
}
if(DebugDisplayRequest && txd_complete)
{
LCD_PrintMenu();
DebugDisplayRequest = 0;
if(++RemotePollDisplayLine == 4 || NurKanalAnforderung)
{
SendOutData('4',0,(uint8_t *)&PPM_in,sizeof(PPM_in)); // DisplayZeile übertragen
RemotePollDisplayLine = -1;
}
else SendOutData('0' + RemotePollDisplayLine,0,(uint8_t *)&DisplayBuff[20 * RemotePollDisplayLine],20); // DisplayZeile übertragen
}
if(GetVersionRequest && txd_complete)
{
SendOutData('V',MySlaveAddr,(uint8_t *) &VersionInfo,sizeof(VersionInfo));
GetVersionRequest = 0;
}
 
}
 
/branches/V0.68d CRK HexaLotte/uart.h
0,0 → 1,64
#ifndef _UART_H
#define _UART_H
 
#define TXD_BUFFER_LEN 150
#define RXD_BUFFER_LEN 150
 
#define DUB_KEY_UP 4
#define DUB_KEY_DOWN 8
#define DUB_KEY_LEFT 16
#define DUB_KEY_RIGHT 32
#define DUB_KEY_FIRE 64
 
#include <inttypes.h>
 
//Baud rate of the USART
#define USART0_BAUD 57600
 
 
extern void USART0_Init (void);
extern void TransmitTxData(void);
extern void ProcessRxData(void);
extern int16_t uart_putchar(int8_t c);
 
extern uint8_t PcAccess;
extern uint8_t RemotePollDisplayLine;
extern uint8_t MotorTest[4];
extern uint8_t DubWiseKeys[4];
 
typedef struct
{
uint8_t Digital[2];
uint16_t Analog[32]; // Debugwerte
} DebugOut_t;
 
extern DebugOut_t DebugOut;
 
typedef struct
{
uint8_t Digital[2];
uint8_t RemoteButtons;
int8_t Pitch;
int8_t Roll;
int8_t Yaw;
uint8_t Thrust;
int8_t Height;
uint8_t free;
uint8_t Frame;
uint8_t Config;
} ExternControl_t;
 
extern ExternControl_t ExternControl;
 
typedef struct
{
uint8_t Major;
uint8_t Minor;
uint8_t PCCompatible;
uint8_t Reserved[7];
} VersionInfo_t;
 
extern VersionInfo_t VersionInfo;
 
 
#endif //_UART_H
/branches/V0.68d CRK HexaLotte/uart1.c
0,0 → 1,144
#include <avr/io.h>
#include <avr/interrupt.h>
 
 
#include "main.h"
#include "uart1.h"
#include "fifo.h"
#include "ubx.h"
 
 
 
// FIFO-objects and buffers for input and output
 
//#define BUFSIZE_IN 0x96
//volatile uint8_t inbuf[BUFSIZE_IN];
//fifo_t infifo;
 
#define BUFSIZE_OUT 0x96
volatile uint8_t outbuf[BUFSIZE_OUT];
fifo_t outfifo;
 
/****************************************************************/
/* Initialization of the USART1 */
/****************************************************************/
void USART1_Init (void)
{
// USART1 Control and Status Register A, B, C and baud rate register
uint8_t sreg = SREG;
uint16_t ubrr = (uint16_t) ((uint32_t) SYSCLK/(8 * USART1_BAUD) - 1);
 
// disable all interrupts before reconfiguration
cli();
 
// disable RX-Interrupt
UCSR1B &= ~(1 << RXCIE1);
// disable TX-Interrupt
UCSR1B &= ~(1 << TXCIE1);
// disable DRE-Interrupt
UCSR1B &= ~(1 << UDRIE1);
 
// set direction of RXD1 and TXD1 pins
// set RXD1 (PD2) as an input pin
PORTD |= (1 << PORTD2);
DDRD &= ~(1 << DDD2);
 
// set TXD1 (PD3) as an output pin
PORTD |= (1 << PORTD3);
DDRD |= (1 << DDD3);
 
// USART0 Baud Rate Register
// set clock divider
UBRR1H = (uint8_t)(ubrr>>8);
UBRR1L = (uint8_t)ubrr;
 
// enable double speed operation
UCSR1A |= (1 << U2X1);
// enable receiver and transmitter
UCSR1B = (1 << TXEN1) | (1 << RXEN1);
// set asynchronous mode
UCSR1C &= ~(1 << UMSEL11);
UCSR1C &= ~(1 << UMSEL10);
// no parity
UCSR1C &= ~(1 << UPM11);
UCSR1C &= ~(1 << UPM10);
// 1 stop bit
UCSR1C &= ~(1 << USBS1);
// 8-bit
UCSR1B &= ~(1 << UCSZ12);
UCSR1C |= (1 << UCSZ11);
UCSR1C |= (1 << UCSZ10);
 
// flush receive buffer explicit
while ( UCSR1A & (1<<RXC1) ) UDR1;
 
// enable interrupts at the end
// enable RX-Interrupt
UCSR1B |= (1 << RXCIE1);
// enable TX-Interrupt
UCSR1B |= (1 << TXCIE1);
// enable DRE interrupt
//UCSR1B |= (1 << UDRIE1);
 
 
// restore global interrupt flags
SREG = sreg;
 
// inint FIFO buffer
//fifo_init (&infifo, inbuf, BUFSIZE_IN);
//fifo_init (&outfifo, outbuf, BUFSIZE_OUT);
}
 
/*int16_t USART1_putc (const uint8_t c)
{
int16_t ret = fifo_put (&outfifo, c);
// create an data register empty interrupt
UCSR1B |= (1 << UDRIE1);
 
return ret;
}
*/
/*int16_t USART1_getc_nowait ()
{
return fifo_get_nowait (&infifo);
}
 
 
uint8_t USART1_getc_wait ()
{
return fifo_get_wait (&infifo);
}
*/
 
/****************************************************************/
/* USART1 data register empty ISR */
/****************************************************************/
/*ISR(USART1_UDRE_vect)
{
// Move a character from the output buffer to the data register.
// When the character was processed the next interrupt is generated.
// If the output buffer is empty the DRE-interrupt is disabled.
if (outfifo.count > 0)
UDR1 = _inline_fifo_get (&outfifo);
else
UCSR1B &= ~(1 << UDRIE1);
}
*/
 
/****************************************************************/
/* USART1 transmitter ISR */
/****************************************************************/
/*ISR(USART1_TX_vect)
{
 
}
*/
/****************************************************************/
/* USART1 receiver ISR */
/****************************************************************/
ISR(USART1_RX_vect)
{
uint8_t c;
c = UDR1; // get data byte
if (BoardRelease == 11) ubx_parser(c); // and put it into the ubx protocol parser
}
/branches/V0.68d CRK HexaLotte/uart1.h
0,0 → 1,25
#ifndef _UART1_H
#define _UART1_H
 
#define USART1_BAUD 57600
 
/*
Initialize the USART und activate the receiver and transmitter
as well as the receive-interrupt. The IO-FIFOs are initialized.
The global interrupt-enable-flag (I-Bit in SREG) is not changed
*/
extern void USART1_Init (void);
 
/*
The character c is stored in the output buffer. If the character was pushed sucessfully to
the output buffer then the return value is 1. In case of an output buffer overflow the return value is 0.
The isr is activated, which will send the data from the outbut buffer to the UART.
*/
extern int USART1_putc (const uint8_t c);
 
/*
extern uint8_t USART1_getc_wait(void);
extern int16_t USART1_getc_nowait(void);
*/
 
#endif //_UART1_H
/branches/V0.68d CRK HexaLotte/ubx.c
0,0 → 1,230
#include <inttypes.h>
#include "ubx.h"
#include "main.h"
#include <avr/io.h>
 
#include "uart.h"
 
// ubx protocol parser state machine
#define UBXSTATE_IDLE 0
#define UBXSTATE_SYNC1 1
#define UBXSTATE_SYNC2 2
#define UBXSTATE_CLASS 3
#define UBXSTATE_LEN1 4
#define UBXSTATE_LEN2 5
#define UBXSTATE_DATA 6
#define UBXSTATE_CKA 7
#define UBXSTATE_CKB 8
 
// ublox protocoll identifier
#define UBX_CLASS_NAV 0x01
 
#define UBX_ID_POSLLH 0x02
#define UBX_ID_SOL 0x06
#define UBX_ID_VELNED 0x12
 
#define UBX_SYNC1_CHAR 0xB5
#define UBX_SYNC2_CHAR 0x62
 
typedef struct {
uint32_t ITOW; // ms GPS Millisecond Time of Week
int32_t Frac; // ns remainder of rounded ms above
int16_t week; // GPS week
uint8_t GPSfix; // GPSfix Type, range 0..6
uint8_t Flags; // Navigation Status Flags
int32_t ECEF_X; // cm ECEF X coordinate
int32_t ECEF_Y; // cm ECEF Y coordinate
int32_t ECEF_Z; // cm ECEF Z coordinate
uint32_t PAcc; // cm 3D Position Accuracy Estimate
int32_t ECEFVX; // cm/s ECEF X velocity
int32_t ECEFVY; // cm/s ECEF Y velocity
int32_t ECEFVZ; // cm/s ECEF Z velocity
uint32_t SAcc; // cm/s Speed Accuracy Estimate
uint16_t PDOP; // 0.01 Position DOP
uint8_t res1; // reserved
uint8_t numSV; // Number of SVs used in navigation solution
uint32_t res2; // reserved
uint8_t Status;
} GPS_SOL_t;
 
typedef struct {
uint32_t ITOW; // ms GPS Millisecond Time of Week
int32_t LON; // 1e-07 deg Longitude
int32_t LAT; // 1e-07 deg Latitude
int32_t HEIGHT; // mm Height above Ellipsoid
int32_t HMSL; // mm Height above mean sea level
uint32_t Hacc; // mm Horizontal Accuracy Estimate
uint32_t Vacc; // mm Vertical Accuracy Estimate
uint8_t Status;
} GPS_POSLLH_t;
 
typedef struct {
uint32_t ITOW; // ms GPS Millisecond Time of Week
int32_t VEL_N; // cm/s NED north velocity
int32_t VEL_E; // cm/s NED east velocity
int32_t VEL_D; // cm/s NED down velocity
uint32_t Speed; // cm/s Speed (3-D)
uint32_t GSpeed; // cm/s Ground Speed (2-D)
int32_t Heading; // 1e-05 deg Heading 2-D
uint32_t SAcc; // cm/s Speed Accuracy Estimate
uint32_t CAcc; // deg Course / Heading Accuracy Estimate
uint8_t Status;
} GPS_VELNED_t;
 
GPS_SOL_t GpsSol = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, INVALID};
GPS_POSLLH_t GpsPosLlh = {0,0,0,0,0,0,0, INVALID};
GPS_VELNED_t GpsVelNed = {0,0,0,0,0,0,0,0,0, INVALID};
GPS_INFO_t GPSInfo = {0,0,0,0,0,0,0,0,0,0, INVALID};
 
volatile uint8_t GPSTimeout = 0;
 
void UpdateGPSInfo (void)
{
if (GpsSol.Status == VALID) // valid packet
{
GPSInfo.satfix = GpsSol.GPSfix;
GPSInfo.satnum = GpsSol.numSV;
GPSInfo.PAcc = GpsSol.PAcc;
GPSInfo.VAcc = GpsSol.SAcc;
GpsSol.Status = PROCESSED; // never update old data
}
if (GpsPosLlh.Status == VALID) // valid packet
{
GPSInfo.longitude = GpsPosLlh.LON;
GPSInfo.latitude = GpsPosLlh.LAT;
GPSInfo.altitude = GpsPosLlh.HEIGHT;
GpsPosLlh.Status = PROCESSED; // never update old data
}
if (GpsVelNed.Status == VALID) // valid packet
{
GPSInfo.veleast = GpsVelNed.VEL_E;
GPSInfo.velnorth = GpsVelNed.VEL_N;
GPSInfo.veltop = -GpsVelNed.VEL_D;
GPSInfo.velground = GpsVelNed.GSpeed;
GpsVelNed.Status = PROCESSED; // never update old data
}
if ((GpsSol.Status != INVALID) && (GpsPosLlh.Status != INVALID) && (GpsVelNed.Status != INVALID))
{
GPSInfo.status = VALID; // set valid if data are updated
}
}
 
 
// this function should be called within the UART RX ISR
void ubx_parser(uint8_t c)
{
static uint8_t ubxstate = UBXSTATE_IDLE;
static uint8_t cka, ckb;
static uint16_t msglen;
static int8_t *ubxP, *ubxEp, *ubxSp; // pointers to data currently transfered
 
switch(ubxstate)
{
case UBXSTATE_IDLE: // check 1st sync byte
if (c == UBX_SYNC1_CHAR) ubxstate = UBXSTATE_SYNC1;
else ubxstate = UBXSTATE_IDLE; // out of synchronization
break;
 
case UBXSTATE_SYNC1: // check 2nd sync byte
if (c == UBX_SYNC2_CHAR) ubxstate = UBXSTATE_SYNC2;
else ubxstate = UBXSTATE_IDLE; // out of synchronization
break;
 
case UBXSTATE_SYNC2: // check msg class to be NAV
if (c == UBX_CLASS_NAV) ubxstate = UBXSTATE_CLASS;
else ubxstate = UBXSTATE_IDLE; // unsupported message class
break;
 
case UBXSTATE_CLASS: // check message identifier
switch(c)
{
case UBX_ID_POSLLH: // geodetic position
ubxP = (int8_t *)&GpsPosLlh; // data start pointer
ubxEp = (int8_t *)(&GpsPosLlh + 1); // data end pointer
ubxSp = (int8_t *)&GpsPosLlh.Status; // status pointer
break;
 
case UBX_ID_SOL: // navigation solution
ubxP = (int8_t *)&GpsSol; // data start pointer
ubxEp = (int8_t *)(&GpsSol + 1); // data end pointer
ubxSp = (int8_t *)&GpsSol.Status; // status pointer
break;
 
case UBX_ID_VELNED: // velocity vector in tangent plane
ubxP = (int8_t *)&GpsVelNed; // data start pointer
ubxEp = (int8_t *)(&GpsVelNed + 1); // data end pointer
ubxSp = (int8_t *)&GpsVelNed.Status; // status pointer
break;
 
default: // unsupported identifier
ubxstate = UBXSTATE_IDLE;
break;
}
if (ubxstate != UBXSTATE_IDLE)
{
ubxstate = UBXSTATE_LEN1;
cka = UBX_CLASS_NAV + c;
ckb = UBX_CLASS_NAV + cka;
}
break;
 
case UBXSTATE_LEN1: // 1st message length byte
msglen = c;
cka += c;
ckb += cka;
ubxstate = UBXSTATE_LEN2;
break;
 
case UBXSTATE_LEN2: // 2nd message length byte
msglen += ((uint16_t)c)<<8;
cka += c;
ckb += cka;
// if the old data are not processed so far then break parsing now
// to avoid writing new data in ISR during reading by another function
if ( *ubxSp == VALID ) ubxstate = UBXSTATE_IDLE;
else // data invalid or allready processd
{
*ubxSp = INVALID;
ubxstate = UBXSTATE_DATA;
}
break;
 
case UBXSTATE_DATA:
if (ubxP < ubxEp) *ubxP++ = c; // copy curent data byte if any space is left
cka += c;
ckb += cka;
if (--msglen == 0) ubxstate = UBXSTATE_CKA; // switch to next state if all data was read
break;
 
case UBXSTATE_CKA:
if (c == cka) ubxstate = UBXSTATE_CKB;
else
{
*ubxSp = INVALID;
ubxstate = UBXSTATE_IDLE;
}
break;
 
case UBXSTATE_CKB:
if (c == ckb)
{
*ubxSp = VALID; // new data are valid
ROT_FLASH;
UpdateGPSInfo(); //update GPS info respectively
GPSTimeout = 255;
}
else
{ // if checksum not fit then set data invalid
*ubxSp = INVALID;
}
ubxstate = UBXSTATE_IDLE; // ready to parse new data
break;
 
default: // unknown ubx state
ubxstate = UBXSTATE_IDLE;
break;
}
 
}
 
 
/branches/V0.68d CRK HexaLotte/ubx.h
0,0 → 1,52
#ifndef _UBX_H
#define _UBX_H
 
#include <inttypes.h>
 
#define INVALID 0x00
#define VALID 0x01
#define PROCESSED 0x02
 
 
#define SATFIX_NONE 0x00
#define SATFIX_DEADRECKOING 0x01
#define SATFIX_2D 0x02
#define SATFIX_3D 0x03
#define SATFIX_GPS_DEADRECKOING 0x04
#define SATFIX_TIMEONLY 0x05
 
 
/* enable the UBX protocol at the gps receiver with the following messages enabled
01-02 NAV - POSLLH
01-06 Nav - SOL
01-12 NAV - VELNED */
 
typedef struct
{
uint8_t status; // status of data: invalid | valid
uint8_t satnum; // number of satelites
uint8_t satfix; // type of satfix
int32_t longitude; // in 1e-07 deg
int32_t latitude; // in 1e-07 deg
int32_t altitude; // in mm
uint32_t PAcc; // in cm 3d position accuracy
int32_t velnorth; // in cm/s
int32_t veleast; // in cm/s
int32_t veltop; // in cm/s
uint32_t velground; // 2D ground speed in cm/s
uint32_t VAcc; // in cm/s 3d velocity accuracy
} GPS_INFO_t;
 
//here you will find the current gps info
extern GPS_INFO_t GPSInfo; // measured position (last gps record)
 
// this variable should be decremted by the application
extern volatile uint8_t GPSTimeout; // is reset to 255 if a new UBX msg was received
 
// initialized the upx parser
extern void ubx_init(void);
 
// this function should be called within the UART RX ISR
extern void ubx_parser(uint8_t c);
 
#endif //_UBX_H
/branches/V0.68d CRK HexaLotte/version.txt
0,0 → 1,232
 
-------
V0.53 27.04.2007 H.Buss
- erste öffentliche Version
 
V0.53b 29.04.2007 H.Buss
- der FAKTOR_I war versehentlich auf Null, dann liegt der MikroKopter nicht so hart in der Luft
 
V0.53c 29.04.2007 H.Buss
- es gib ein Menü, in dem die Werte der Kanäle nach Nick, Roll, Gas,... sortiert sind.
Die angezeigten Werte waren nicht die Werte der Funke
 
V0.54 01.05.2007 H.Buss
- die Paramtersätze können jetzt vor dem Start ausgewählt werden
Dazu wird beim Kalibrieren der Messwerte (Gashebel oben links) der Nick-Rollhebel abgefragt:
2 3 4
1 x 5
- - -
Bedeutet: Nick-Rollhebel Links Mitte = Setting:1 Links Oben = Setting:2 usw.
- der Faktor_I für den Hauptregler ist hinzugekommen. Im Heading-Hold-Modus sollte er vergössert werden, was Stabilität bringt
 
V0.55 14.05.2007 H.Buss
- es können nun Servos an J3,J4,J5 mit den Kanälen 5-7 gesteuert werden
 
V0.56 14.05.2007 H.Buss
- es gab Probleme mit Funken, die mehr als 8 Kanäle haben, wenn mehrere Kanäle dann auf Null waren
- Funken, die nicht bis +-120 aussteuern können, sollten jetzt auch gehen
V0.57 24.05.2007 H.Buss
- Der Höhenregler kann nun auch mittels Schalter bedient werden
- Bug im Gier-Algorithmus behoben; Schnelles Gieren fürhrte dazu, dass der MK zu weit gedreht hat
- Kompass-Einfluss dämpfen bei Neigung
- Man kann zwischen Kompass FIX (Richtung beim Kalibrieren) und Variabel (einstellbar per Gier) wählen
- Der Motortest vom Kopter-Tool geht jetzt
- Man kann den Parametersätzen einen Namen geben
- Das Kamerasetting ist unter Setting 2 defaultmässig integriert
V0.58 30.05.2007 H.Buss
- Der Höhenregler-Algorithmus wird nun umgangen, wenn der Höhenreglerschalter aus ist
 
V0.60 17.08.2007 H.Buss
- "Schwindel-Bug" behoben
- Die Poti-Werte werden jetzt auf Unterlauf (<0) überprüft
- Poti4 zugefügt
- Es werden jetzt 8 Kanäle ausgewertet
- Kamera-Servo (an J7)
- Die Settings müssen überschrieben werden
V0.61 - V0.63 H.Buss 27.09.2007
- Poti 4 und Kanal 8 werden im Menü angezeigt
- ein paar Kleinigkeiten bei den DefaultKonstanten2 bereinigt
- Analog.c: Aktuell_ax korrigiert
- auf 32 Debug-Kanäle erweitert
- Loopings sind jetzt möglich und einzeln im KopterTool freischaltbar
- leichte Anpassungen im Gier - Geschwindigkeit und Drift
- die Hardwareversion V1.1 wird erkannt und das Programm stellt sich auf die geänderte Gyroverstärkung und die geänderten Portpins ein
- die Software startet nach dem Einschalten schneller, weil der Luftdruckoffset schneller gefunden wird
- die PPM-Ausgänge liegen wieder an den Pins an
- Details an der Sensordatenverarbeitung -> es fliegt sich geringfügig anders
- der MK ist bei wenig Gas nicht mehr so giftig -> soll das Landen vereinfachen
- I2C-Bus läuft jetzt sicher nach einer Störung wieder an
- Sticksignale werden präziser ausgewertet
- Stick-Kanäle werden ans Kopter-Tool übertragen
- Es muss die Version V1.47 des Kopter-Tool verwendet werden
- Die Settings werden auf Default zurückgesetzt
- am Piepen kann man die Fehlerart unterscheiden
1. einzelnes Piepen beim Einschalten und Kalibrieren
2. langsames Intervall mindestens 1 Sek -> Empfangsausfall
3. schnelleres Intervall mindestens 1 Sek -> Akku
4. sehr schnelles Intervall mindestens 1 Sek -> Kommunikation zu den Reglern gestört
V0.64 H.Buss 30.09.2007
- beim Gieren wurden die Achsen nicht hart genug geregelt
V0.65a H.Buss 15.10.2007
- Integral im Mischer wieder integriert
- Feinabstimmung im ACC/Gyro Abgleich -> 1/32 & 100
- ACC/Gyro Abgleich auch bei HH
 
V0.66a H.Buss 3.11.2007
- Messwertverarbeitung aus dem Analog-Interrupt entfernt
- Analogmessung hängt jetzt am FC-Timing
- Looping-Stick-Hysterese eingebaut
- Looping-180°-Umschlag einstellbar
- Achsenkopplung: Gierbewegung verkoppelt Nick und Roll
- Lageregelung nach ACC-Sensor verbessert
- zusätzlicher I-Anteil in der Lageregelung verbessert die Neutrallage
- Gyrodriftkompensation überarbeitet
- Bug in der Gier-Stick-Berechnung behoben
- Gyro-Messung auf 1kHz beschleunigt
V0.67a H.Buss 16.11.2007
- der Hauptregler-I-Anteil wirkt jetzt nur noch auf den Winkel (ausser im HH-Mode)
- Gyro-Acc-Abgleich jetzt wieder in jedem Zyklus
- Feinabstimmung
- Beim HH-Modus gab es noch Bugs
 
V0.67e H.Buss 29.11.2007
- Parameter: Dynamic Stability und Driftfaktor eingeführt
- Die Namen der Analogwerte werden jetzt zum Koptertool übertragen
- Kompatibilität zum Koptertool erhöht
 
V0.67f H.Buss 04.12.2007
- Das Integral des Hauptreglers wird jetzt linear entladen und nicht mehr proportional
- Schub für Gier wird jetzt auf den Gaswert begrenzt, dadurch steigt der MK nicht mehr beim Gieren. Gier ist allerdings nicht mehr so agressiv
- Die ACC-Nullwerte können jetzt dauerhaft im EEPROM gespeichert werden (Stick:Vollgas und Gier rechts)
V0.68a I.Busker 28.12.2007
- SPI.c & SPI.h ins Projekt aufgenommen
SPI-Kommuikation kann in SPI.h aktiviert/deaktivert werden
 
V0.68c H.Buss 05.01.2008
- Stickauswertung verbessert -> träger und präziser
- Alle Settings angepasst
V0.68d Ausgangsversion.
 
G.Stobrawa 06.03.2008:
 
- Code stärker modularisiert und restrukturiert
- viele Kommentare zur Erklärug eingefügt
- konsequent englische Variablennamen
- PPM24 Support für bis zu 12 RC-Kanäle.
- Support für Kompass CMPS01 oder MM3 (mit verbesserte Neigungskompensation, stabilere Kommunikation) (Option im Makefile)
- 2. Uart wird nun unterstützt (MCU = atmega644p im Makefile)
- Ausertung des UBX-Pprotocols an 1. oder 2. Uart
- einige kleinere Bugfixes
- GPS-Hold-Funktion hinzugefügt
- GPS-Home-Funktion hinzugefügt (wird beim Motorstart gelernt, und bei Motorenstop wieder gelöscht)
- Poti3 steuert die GPS Funktionen (Poti3 < 70:GPS inaktiv, 70<=Poti3<160: GPS Hold, 160<=Poti3: GPS Home)
- LED Steuerung an J16, parametrierbar durch die User Parameter 7 & 8. UserParam7 legt die LEDOnTime in Vielfachen von 2ms fest
und UserParam 8 die LEDOffTime.
- Zusätzliche Punkte im Menü des KopterTool zur Anzeige des GPS-Status und der MM3-Kalibierparameter
 
 
- Hardware Configuration:
 
- Die PWM des CMPS03 wird wie bisher standard über den Port PC4 (Pin5 an SV1 der FC) eingelesen.
- Der MM3 wird wie folgt verbunden.
 
FC 1.0/1.1/1.2 Level Shifter MM3
SCK (Pin1 SV5) ---> SCK (Pin1)
MISO (Pin3 SV5) <--- MISO (Pin2)
MOSI (Pin5 SV5) ---> MOSI (Pin3)
GND (Pin6 SV5) ---> GND (Pin7 / Pin14)
PC4 (Pin5 SV1) ---> SS (Pin4)
PC5 (Pin6 SV1) ---> RESET (Pin6)
 
Zusatzlich benötigt der MM3 noch eine 3V oder 3V3 Versorgung an VDD (Pin12).
 
Für das UBLOX-Modul muss noch GPS-GND mit FC-GND (Pin7 SV1) und die GPS-TXD Leitung mit FC-RXD (Pin1 SV1) verbunden werden,
wenn man die FC 1.0 verwendet. Für die FC 1.1/1.2 mit Atmega644p-Bestückung benötigt man mit FC-RXD1 (Pin3 SV1) bei der
FC1.1/1.2 wenn der Atmega 644p verbaut ist. Zusaätzlich bentigt das UBLOX-Modul noch eine 5V-Versorgung die ggf. von
der FC (an Pin2 SV1) abgegriffen werden kann.
 
- Konfiguration des MK.
Es sollte ein Haken bei GPS und Kompass gesetzt sein.
 
- User Parameters:
Parameter 3 --> Calibration factor for transforming Gyro Integrals to angular degrees (~170)
Parameter 4 --> Angle between the MM3 Board (Arrow) and the MK head (typical ~180)
Parameter 5 --> P-Factor for GPS PD controller (~100)
Parameter 6 --> D-Factor for GPS PD controller (~80)
Parameter 7 --> LEDOffTime for J16
Parameter 8 --> LEDOnTime for J16
 
- Zusätzliche Akustische Signale:
Dauerton: Eine GPS-Funktion is aktiviert und es werden keine oder
unvollständige GPS-Daten via UART empfangen.
Hier ist zu berücksichtigen, dass die folgenden UBX Messages am UBLOX
aktiviert wurden: NAV - POSLLH, NAV-SOL, NAV-VELNED.
Fehlt eine dieser Messages wird breits der Dauerton gesetzt.
4Hz Piepen: Ist eine der GPS Funktion aktiviert, zeigt dass den Empfang valider UBX-Daten,
jedoch liegt noch kein 3D-Satfix vor. Die Pausen zwischen den 4Hz Pieps werden
immer länger je mehr Satelitten das GPS empfängt.
Liegt ein 3D Fix vor verstummt der Pieper dann endgültig egal wie viele Satelitten
beteiligt sind (es müssen dafür aber mindesten 4 sein).
10Hz Piepen: Die Kommunikation zum Kompassmodul ist gestört. (Funktioniert bei beiden Kompassmodulen)
Der CompassValue in den Debugs vom Koptertool zeigt dann -1 an.
1s Piepen: Ertönt dieses Signal nach dem Einschalten der Motoren wird die erfolgreiche
Übernahme der Home Position bestätigt.
 
 
- Inbetriebnahme:
 
Nach dem Flashen des Codes sollte man die Kalibrierung für den MM3 wiederholen, da diese Daten
an einer anderen Position im EEProm der FC abgelegt werden.
 
- Kotper ausschalten
- den Gas/Gierstick in die obere linke Ecke stellen
- Kopter einschalten (Periodisches Piepen zeigt aktive Kalibrierroutine an und der Gierstick kann wieder in die Giermittelstellung.)
- den Kopter fleißig umherwürfeln, damit jeder der 3 Magnetfeldsensoren einmal den Minimal. bzw. Maximalwert
des Erdmagnetfeldes gemessen hat. Man kann das etwas gezielter machen, denn die Richtung des Erdmagnetfeldes zeigt
in etwa nach Norden und taucht ca. mit 70° bzgl. des Horizonts in in die Erde ein.
- am Ende den Gasstick nach unten drücken, damit die Kalibrierung beendet wird, und die Daten im EEProm gesichter werden (Piepen beendet).
- Zur Sicherheit kann man die Kalibrierdaten im Menü des Koptertools unter Punkt 13 den Offset aller Achsen und unter
Punkt 14 den Range aller Achsen des MM3 anschauen. Bei mir sind die Werte der Offsets nur wenige Counts von 0 verschieden
um die Ranges fast gleich bei werten um die 500 counts.
 
Zur Bestimmung des User Parameters 3 (Umrechnungsfaktor zwischen dem Gyrointegral und dem zugehörigen Neigungswinkel)
hat sich folgendes Vorgehen bewehrt.
- Man bestimmt den Wert des Roll- und Nick-Integrals für einen Neigungswinkel von 90° über die Ausgaben des Koptertools.
- Aus diesem Wert kann man den benötigten UserParam3 berechnen.
UserParam3 = (Nick-Integral(90°)+Roll-Integral(90°))/2*GyroACCFaktor/90/8. (typisch 170)
- Nachdem dieser Wert über die Settings des Koptertools im MK abgepeichert ist, sollte sich der CompassValue bei
Verkippungen nur unwesentlich verändern.
- Zum Makefile:
Der Code so gestrickt, dass man für den Atemga644p oder den Atmega644 kompilieren kann.
(im Makefile MCU=atmega644 / MCU=atmega644p)
 
Falls der 644p verwendet wird, wird immer der Code für die 2. Uart mit compiliert. Diese wird aber nur initialisiert,
wenn die FC 1.1/1.2 erkannt wurde. In diesem Fall werden die GPS-Daten auch dort erwartet.
Bei der FC 1.0 wird die 2. Uart nicht initialisiert und die GPS-Daten an der 1. UART erwartet.
Wird der Code für den 644 erzeugt entfällt der gesamte Code für die 2. Uart.
Die GPS-Daten werden immer über die 1. Uart gelesen.
 
Damit sollte jede Kombination von FC-Version und Prozessorbestückung funktionieren.
 
Unabhängig von diesen Harwarevoraussetzungen kann man den Code für den MM3 oder CMPS03 Kompass einbinden.
(im Makefile: COMAPSS=MM3 / COMPASS = CMPS03)