You can subscribe to this list here.
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(13) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2010 |
Jan
(50) |
Feb
(137) |
Mar
(84) |
Apr
(36) |
May
(100) |
Jun
(5) |
Jul
|
Aug
(4) |
Sep
(13) |
Oct
(1) |
Nov
(4) |
Dec
(22) |
2011 |
Jan
(4) |
Feb
(9) |
Mar
(113) |
Apr
(76) |
May
(31) |
Jun
(19) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
(4) |
Feb
|
Mar
(2) |
Apr
(6) |
May
(19) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(4) |
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
(2) |
Apr
(22) |
May
(6) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Olivier B. <Ba...@us...> - 2010-03-07 11:11:23
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 47260998a8e90353bc2184ad640df1993da7c630 (commit) from 80fe5918d44c802611d6240b92b308dac6bb229a (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 47260998a8e90353bc2184ad640df1993da7c630 Author: Olivier BICHLER <oli...@gm...> Date: Sun Mar 7 12:10:55 2010 +0100 Added a new turn() function which generalizes the basic functions turnLeft() and turnRight() ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/common/PcInterface.h b/PC_Mainboard/common/PcInterface.h index bb164d1..eaebb09 100644 --- a/PC_Mainboard/common/PcInterface.h +++ b/PC_Mainboard/common/PcInterface.h @@ -164,6 +164,7 @@ typedef struct _UP { #define TRAJ_START 0x0D #define TRAJ_GET_REL_POS 0x0E #define TRAJ_READ_CONFIG 0x0F +#define TRAJ_TURN 0x10 #define TRAJ_NOT_COMPLETED 0x00 #define TRAJ_COMPLETED 0x01 diff --git a/PC_Mainboard/python/dev/USB_Com_Layer/src/PcInterface.h b/PC_Mainboard/python/dev/USB_Com_Layer/src/PcInterface.h index bb164d1..eaebb09 100644 --- a/PC_Mainboard/python/dev/USB_Com_Layer/src/PcInterface.h +++ b/PC_Mainboard/python/dev/USB_Com_Layer/src/PcInterface.h @@ -164,6 +164,7 @@ typedef struct _UP { #define TRAJ_START 0x0D #define TRAJ_GET_REL_POS 0x0E #define TRAJ_READ_CONFIG 0x0F +#define TRAJ_TURN 0x10 #define TRAJ_NOT_COMPLETED 0x00 #define TRAJ_COMPLETED 0x01 diff --git a/PC_Mainboard/python/dev/User_Interface/PcInterface.h b/PC_Mainboard/python/dev/User_Interface/PcInterface.h index bb164d1..eaebb09 100644 --- a/PC_Mainboard/python/dev/User_Interface/PcInterface.h +++ b/PC_Mainboard/python/dev/User_Interface/PcInterface.h @@ -164,6 +164,7 @@ typedef struct _UP { #define TRAJ_START 0x0D #define TRAJ_GET_REL_POS 0x0E #define TRAJ_READ_CONFIG 0x0F +#define TRAJ_TURN 0x10 #define TRAJ_NOT_COMPLETED 0x00 #define TRAJ_COMPLETED 0x01 diff --git a/USB_Dev_Board/Firmware/PcInterface.h b/USB_Dev_Board/Firmware/PcInterface.h index bb164d1..eaebb09 100644 --- a/USB_Dev_Board/Firmware/PcInterface.h +++ b/USB_Dev_Board/Firmware/PcInterface.h @@ -164,6 +164,7 @@ typedef struct _UP { #define TRAJ_START 0x0D #define TRAJ_GET_REL_POS 0x0E #define TRAJ_READ_CONFIG 0x0F +#define TRAJ_TURN 0x10 #define TRAJ_NOT_COMPLETED 0x00 #define TRAJ_COMPLETED 0x01 diff --git a/USB_Module/Battery_Monitoring/Firmware/PcInterface.h b/USB_Module/Battery_Monitoring/Firmware/PcInterface.h index bb164d1..eaebb09 100644 --- a/USB_Module/Battery_Monitoring/Firmware/PcInterface.h +++ b/USB_Module/Battery_Monitoring/Firmware/PcInterface.h @@ -164,6 +164,7 @@ typedef struct _UP { #define TRAJ_START 0x0D #define TRAJ_GET_REL_POS 0x0E #define TRAJ_READ_CONFIG 0x0F +#define TRAJ_TURN 0x10 #define TRAJ_NOT_COMPLETED 0x00 #define TRAJ_COMPLETED 0x01 diff --git a/USB_Module/Motor_Controller/Firmware/PcInterface.h b/USB_Module/Motor_Controller/Firmware/PcInterface.h index bb164d1..eaebb09 100644 --- a/USB_Module/Motor_Controller/Firmware/PcInterface.h +++ b/USB_Module/Motor_Controller/Firmware/PcInterface.h @@ -164,6 +164,7 @@ typedef struct _UP { #define TRAJ_START 0x0D #define TRAJ_GET_REL_POS 0x0E #define TRAJ_READ_CONFIG 0x0F +#define TRAJ_TURN 0x10 #define TRAJ_NOT_COMPLETED 0x00 #define TRAJ_COMPLETED 0x01 diff --git a/USB_Module/Motor_Controller/Firmware/lm629.c b/USB_Module/Motor_Controller/Firmware/lm629.c index 426f9cf..7bcdd54 100644 --- a/USB_Module/Motor_Controller/Firmware/lm629.c +++ b/USB_Module/Motor_Controller/Firmware/lm629.c @@ -657,7 +657,7 @@ void moveBackward(short pos, short vel, short acc) { } /** - * Tourne vers la droite. + * Tourne vers la droite, le centre de rotation nt le milieu de l'axe des roues. * * @param angle angle de rotation par rapport a direction initiale du robot, en , sur 16 bits * @param vel vitesse max., en mm/s, sur 16 bits @@ -677,7 +677,7 @@ void turnRight(short angle, short vel, short acc) { } /** - * Tourne vers la gauche. + * Tourne vers la gauche, le centre de rotation nt le milieu de l'axe des roues. * * @param angle angle de rotation par rapport a direction initiale du robot, en , sur 16 bits * @param vel vitesse max., en mm/s, sur 16 bits @@ -697,6 +697,42 @@ void turnLeft(short angle, short vel, short acc) { } /** + * Tourne autour d'un centre quelconque situur l'axe des roues. + * Ceci est une fonction gralisdes fonctions turnRight() et turnLeft(). + * + * @param angle angle de rotation par rapport a direction initiale du robot, en , sur 16 bits + * @param vel vitesse max., en mm/s, sur 16 bits + * @param acc accration, en mm/s, sur 16 bits + * @param c position du centre de rotation par rapport au milieu de l'axe des roues, en mm ou en %, sur 16 bits + * @param rel indique si c est exprimn mm (relative = 0) ou en % de la distance du milieu a roue, #WHEELS_DIST/2 (relative = 1) + * + * -100 0 100 + * relative = 1: ||--------.--------|| + * LW RW + * + * @note angle et c peuvent e positifs ou ntifs. @n + * Lorsqu'exprimn %, c peut e supeur 00 en valeur absolue. +*/ +void turn(short angle, short vel, short acc, short c, BOOL rel) { + resetInterrupt(MOTOR_BOTH); + + if (rel) + c = WHEELS_DIST / 2.0 * (c / 100.0); + + newPosition(MOTOR_RIGHT, + (long) ((float) angle * CONST_POS * 2.0 * (WHEELS_DIST / 2.0 - c) * COEF_RIGHT_WHEEL), + (long) ((float) vel * COEF_RIGHT_WHEEL * CONST_VEL), + (long) ((float) acc * COEF_RIGHT_WHEEL * CONST_ACC)); + + newPosition(MOTOR_LEFT, + - (long) ((float) angle * CONST_POS * 2.0 * (WHEELS_DIST / 2.0 + c) * COEF_RIGHT_WHEEL), + (long) ((float) vel * COEF_RIGHT_WHEEL * CONST_VEL), + (long) ((float) acc * COEF_RIGHT_WHEEL * CONST_ACC)); + + start(MOTOR_BOTH); +} + +/** * Aller n emplacement, relativement a position actuelle. * * ^ diff --git a/USB_Module/Motor_Controller/Firmware/lm629.h b/USB_Module/Motor_Controller/Firmware/lm629.h index 8674bb4..5792929 100644 --- a/USB_Module/Motor_Controller/Firmware/lm629.h +++ b/USB_Module/Motor_Controller/Firmware/lm629.h @@ -17,27 +17,26 @@ // Robot utilis #define KROBOT_2010 // #define KROBOT_PROTO + // Parames graux #define LM_CLOCK 8e6 ///< Frence horloge LM (en Hz) -- forcnt 6 ou 8 MHz selon la rrence du composant -#ifdef KROBOT_2010 - // Constantes pour [Kro]bot 2010 - #define ENCODER_RES 15*500 ///< Impulsions du codeur par tour de roue (prendre en compte le rcteur selon le cas !) - #define WHEELS_DIAMETER 98 ///< Diame des roues (en mm) - #define WHEELS_DIST 259 ///< Distance entre les 2 roues (en mm) - #define CON_MOTOR_LEFT -1 - #define CON_MOTOR_RIGHT -1 -#else -#ifdef KROBOT_PROTO - // Constantes pour le robot protoype basur des EMG30s - #define ENCODER_RES 90 ///< Impulsions du codeur par tour de roue (prendre en compte le rcteur selon le cas !) - #define WHEELS_DIAMETER 99 ///< Diame des roues (en mm) - #define WHEELS_DIST 220 ///< Distance entre les 2 roues (en mm) - #define CON_MOTOR_LEFT -1 - #define CON_MOTOR_RIGHT 1 +#if defined(KROBOT_2010) + // Constantes pour [Kro]bot 2010 + #define ENCODER_RES 15*500 ///< Impulsions du codeur par tour de roue (prendre en compte le rcteur selon le cas !) + #define WHEELS_DIAMETER 98 ///< Diame des roues (en mm) + #define WHEELS_DIST 259 ///< Distance entre les 2 roues (en mm) + #define CON_MOTOR_LEFT -1 + #define CON_MOTOR_RIGHT -1 +#elif defined(KROBOT_PROTO) + // Constantes pour le robot protoype basur des EMG30s + #define ENCODER_RES 90 ///< Impulsions du codeur par tour de roue (prendre en compte le rcteur selon le cas !) + #define WHEELS_DIAMETER 99 ///< Diame des roues (en mm) + #define WHEELS_DIST 220 ///< Distance entre les 2 roues (en mm) + #define CON_MOTOR_LEFT -1 + #define CON_MOTOR_RIGHT 1 #else - #error "Il est nssaire de darer un type de robot tiliser" -#endif + #error Il est nssaire de darer un type de robot tiliser #endif /** @@ -46,22 +45,20 @@ * Vfier que le syst est stable (pas d'oscillation) * On peut alors augmenter le KP et ajuster KI et KD. */ -#ifdef KROBOT_2010 - // Constantes pour [Kro]bot 2010 - #define DEFAULT_KP 1 ///< Constante action proportionnelle - #define DEFAULT_KI 0 ///< Constante action intale - #define DEFAULT_KD 0 ///< Constante action dv - #define DEFAULT_IL 10000 ///< Integration Limit -- limite la contribution du terme intateur (doit e non nul si KI est non nul !) +#if defined(KROBOT_2010) + // Constantes pour [Kro]bot 2010 + #define DEFAULT_KP 1 ///< Constante action proportionnelle + #define DEFAULT_KI 0 ///< Constante action intale + #define DEFAULT_KD 0 ///< Constante action dv + #define DEFAULT_IL 10000 ///< Integration Limit -- limite la contribution du terme intateur (doit e non nul si KI est non nul !) +#elif defined(KROBOT_PROTO) + // Constantes pour le robot protoype basur des EMG30s + #define DEFAULT_KP 1000 ///< Constante action proportionnelle + #define DEFAULT_KI 1 ///< Constante action intale + #define DEFAULT_KD 0 ///< Constante action dv + #define DEFAULT_IL 10000 ///< Integration Limit -- limite la contribution du terme intateur (doit e non nul si KI est non nul !) #else -#ifdef KROBOT_PROTO - // Constantes pour le robot protoype basur des EMG30s - #define DEFAULT_KP 1000 ///< Constante action proportionnelle - #define DEFAULT_KI 1 ///< Constante action intale - #define DEFAULT_KD 0 ///< Constante action dv - #define DEFAULT_IL 10000 ///< Integration Limit -- limite la contribution du terme intateur (doit e non nul si KI est non nul !) -#else - #error "Il est nssaire de darer un type de robot tiliser" -#endif + #error Il est nssaire de darer un type de robot tiliser #endif // Constantes @@ -232,6 +229,7 @@ void moveForward(short pos, short vel, short acc); void moveBackward(short pos, short vel, short acc); void turnRight(short angle, short vel, short acc); void turnLeft(short angle, short vel, short acc); +void turn(short angle, short vel, short acc, short c, BOOL rel); void goTo(short x, short y, short vel, short acc, BYTE mode, short d); WORD getRelPosRight(void); WORD getRelPosLeft(void); diff --git a/USB_Module/Motor_Controller/Firmware/main.c b/USB_Module/Motor_Controller/Firmware/main.c index f036db5..230b7b9 100644 --- a/USB_Module/Motor_Controller/Firmware/main.c +++ b/USB_Module/Motor_Controller/Firmware/main.c @@ -989,7 +989,7 @@ void ProcessIO(void) { word3.byte.LB = ReceivedDataBuffer.DATA[6]; turnRight(word1.Val, word2.Val, word3.Val); traj_engaged = 1; - break; + break; case TRAJ_TL: word1.byte.HB = ReceivedDataBuffer.DATA[1]; @@ -1002,6 +1002,19 @@ void ProcessIO(void) { traj_engaged = 1; break; + case TRAJ_TURN: + word1.byte.HB = ReceivedDataBuffer.DATA[1]; + word1.byte.LB = ReceivedDataBuffer.DATA[2]; + word2.byte.HB = ReceivedDataBuffer.DATA[3]; + word2.byte.LB = ReceivedDataBuffer.DATA[4]; + word3.byte.HB = ReceivedDataBuffer.DATA[5]; + word3.byte.LB = ReceivedDataBuffer.DATA[6]; + word4.byte.HB = ReceivedDataBuffer.DATA[7]; + word4.byte.LB = ReceivedDataBuffer.DATA[8]; + turn(word1.Val, word2.Val, word3.Val, word4.Val, ReceivedDataBuffer.DATA[9]); + traj_engaged = 1; + break; + case TRAJ_GOTO: word1.byte.HB = ReceivedDataBuffer.DATA[1]; word1.byte.LB = ReceivedDataBuffer.DATA[2]; diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof index 84163ed..743ff8e 100644 Binary files a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof and b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof differ diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex index 3cf2fff..4faf3af 100644 --- a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex +++ b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex @@ -1,18 +1,18 @@ :020000040000FA -:0600000062EF30F0120077 +:0600000025EF31F01200B3 :0600080004EF04F01200F9 :060018000CEF04F01200E1 -:0608000062EF30F012006F -:06080800F9EF0FF01200F1 -:0608180061EF10F0120078 -:06082A000400576100000C -:1008300026010000210000004F6100005F01000060 -:100840000800000041610000470100000E000000A8 -:0C0850003E6100006A010000030000008F -:04085C003DEC0DF072 +:0608000025EF31F01200AB +:060808007CEF10F012006D +:06081800E4EF10F01200F5 +:06082A000400DD62000085 +:100830002601000021000000D56200005F010000D9 +:1008400008000000C7620000470100000E00000021 +:0C085000C46200006A0100000300000008 +:04085C0015EC0DF09A :10086000FE0EDB5006E1F80E96163C0E9416959897 :1008700008D0FE0EDB0405E1070E9612C30E94129B -:10088000958842EF0DF0D9CFE6FFE1CFD9FFE652D0 +:1008800095881AEF0DF0D9CFE6FFE1CFD9FFE652F8 :10089000010EE66EE3DFE5528098FE0EDB5004E0C9 :1008A000FE0EDB5002080FE1839C808A0000839ECD :1008B0000000000000008450010BDF6E838E0000FA @@ -98,1373 +98,1398 @@ :100DB000F3CF00F08250400B01E0010E800DF350A4 :100DC0000010011002100310041005100610DF6E51 :100DD000838EDF5000D0E552E552E7CFD9FF1200F5 -:100DE0003DEC0DF0E652DF6A88EC0DF0DF6EFD0E93 +:100DE00015EC0DF0E652DF6A58EC0DF0DF6EFD0EEB :100DF000DB50DF14DF6EDF5002E0010E01D0000E89 -:100E0000E55242EF0DF03DEC0DF01D0E08EC0DF03B -:100E1000000E19EC0FF042EF0DF03DEC0DF088ECF8 -:100E20000DF084080FE088EC0DF0C4080BE0E66AD2 -:100E3000EDEC0EF0E3EC0EF0020EE66E35EC30F069 -:100E4000E552EDD71C0E08EC0DF00A0E19EC0FF070 -:100E500008EC0EF088EC0DF0800804E088EC0DF052 -:100E6000C008E5E188EC0DF0C00802E108EC0EF0E6 -:100E70001E0E08EC0DF00F0E19EC0FF0C5EC0FF084 -:100E8000FA0EDBCFE6FFFB0E88EC0EF0F80EDBCFA0 -:100E9000E6FFF90E88EC0EF0F60EDBCFE6FFF70E5C -:100EA00088EC0EF0040E08EC0DF042EF0DF03DEC76 -:100EB0000DF0080EE126010E3AEC0DF0010EE7CF21 -:100EC000DBFF020E47EC0FF0DF6E030E3AEC0DF085 -:100ED000030EE7CFDBFF040E3AEC0DF0020EE7CF76 -:100EE000DBFF050E3AEC0DF0050EE7CFDBFF060E3B -:100EF0003AEC0DF0040EE7CFDBFF070E3AEC0DF0F5 -:100F0000070EE7CFDBFF080E3AEC0DF05FEC0DF0BB -:100F1000E66A0DEC0EF0090E3AEC0DF0010EE7CF8B -:100F2000DBFF0A0E47EC0FF0DF6E0B0E3AEC0DF014 -:100F3000030EE7CFDBFF0C0E3AEC0DF0020EE7CF0D -:100F4000DBFF0D0E3AEC0DF0050EE7CFDBFF0E0ECA -:100F50003AEC0DF0040EE7CFDBFF0F0E3AEC0DF08C -:100F6000070EE7CFDBFF100E3AEC0DF05FEC0DF053 -:100F7000010EE66E0DEC0EF0020EE66E05EC0EF0C4 -:100F8000020EE66EE66AF8EC0DF007E1020EE66E80 -:100F9000010EE66EF8EC0DF002E0000E01D0010E3D +:100E0000E5521AEF0DF015EC0DF01D0EA9EC0CF0EB +:100E1000000E83EC0FF01AEF0DF015EC0DF058EC0E +:100E20000DF084080FE058EC0DF0C4080BE0E66A02 +:100E300071EC0FF064EC0FF0020EE66EF8EC30F09F +:100E4000E552EDD71C0EA9EC0CF00A0E83EC0FF066 +:100E500008EC0EF058EC0DF0800804E058EC0DF0B2 +:100E6000C008E5E158EC0DF0C00802E108EC0EF016 +:100E70001E0EA9EC0CF00F0E83EC0FF035EC10F009 +:100E8000FA0EDBCFE6FFFB0E25EC0FF0F80EDBCF02 +:100E9000E6FFF90E25EC0FF0F60EDBCFE6FFF70EBE +:100EA00025EC0FF0040EA9EC0CF01AEF0DF015EC88 +:100EB0000DF0080EE126010E04EC0DF0010EE7CF57 +:100EC000DBFF020EA8EC0FF0DF6E030E04EC0DF05A +:100ED000030EE7CFDBFF040E04EC0DF0020EE7CFAC +:100EE000DBFF050E04EC0DF0050EE7CFDBFF060E71 +:100EF00004EC0DF0040EE7CFDBFF070E04EC0DF061 +:100F0000070EE7CFDBFF080E04EC0DF03EEC0DF012 +:100F1000E66A0DEC0EF0090E04EC0DF0010EE7CFC1 +:100F2000DBFF0A0EA8EC0FF0DF6E0B0E04EC0DF0E9 +:100F3000030EE7CFDBFF0C0E04EC0DF0020EE7CF43 +:100F4000DBFF0D0E04EC0DF0050EE7CFDBFF0E0E00 +:100F500004EC0DF0040EE7CFDBFF0F0E04EC0DF0F8 +:100F6000070EE7CFDBFF100E04EC0DF03EEC0DF0AA +:100F7000010EE66E0DEC0EF0020EE66EFAEC0DF0D0 +:100F8000020EE66EE66AD7EC0DF007E1020EE66EA1 +:100F9000010EE66ED7EC0DF002E0000E01D0010E5E :100FA000006E080EE15C02E2E16AE552E16E00507B -:100FB00042EF0DF03DEC0DF00C0EE12691EC0DF042 -:100FC000D950F20F1DEC0FF0080EEECFDBFF090E2B +:100FB0001AEF0DF015EC0DF00C0EE1266EEC0DF0B5 +:100FC000D950F20F87EC0FF0080EEECFDBFF090EC1 :100FD000EECFDBFF0A0EEECFDBFF0B0EEECFDBFF1B -:100FE0001F0E08EC0DF0080EDBCF00F0090EDBCF72 -:100FF00001F00A0EDBCF02F00B0E32EC0FF00CE02A -:101000002B0E19EC0FF00A0EDBCFE6FF0B0E88EC6F -:101010000EF0B5EC0DF003D00B0EE66EE66ABEECFA -:101020000CF09BEC0FF0FEEC0DF009E1E1EC0CF0A4 -:10103000BEEC0CF0E8EC0EF0EDEC0EF01CD0FEEC8B -:101040000DF003E0FE0EDB0408E1E1EC0CF0DDEC5A -:101050000DF0E8EC0EF0DDEC0DF0FEEC0DF003E031 -:10106000FE0EDB500AE1E1EC0CF0E66AB2EC0EF0A9 -:10107000E8EC0EF0E66AB2EC0EF00C0EE15C02E277 -:10108000E16AE552E16E42EF0DF03DEC0DF00A0E23 +:100FE0001F0EA9EC0CF0080EDBCF00F0090EDBCFD2 +:100FF00001F00A0EDBCF02F00B0E97EC0FF00CE0C5 +:101000002B0E83EC0FF00A0EDBCFE6FF0B0E25EC68 +:101010000FF0A1EC0DF003D00B0EE66EE66A70EC5B +:101020000CF0FFEC0FF0DDEC0DF009E17CEC0CF0C6 +:1010300070EC0CF069EC0FF071EC0FF01CD0DDECF3 +:101040000DF003E0FE0EDB0408E17CEC0CF0BDECDF +:101050000DF069EC0FF0BDEC0DF0DDEC0DF003E0F0 +:10106000FE0EDB500AE17CEC0CF0E66A3FEC0FF080 +:1010700069EC0FF0E66A3FEC0FF00C0EE15C02E267 +:10108000E16AE552E16E1AEF0DF015EC0DF00A0E73 :10109000E126D9CFE9FFDACFEAFFFA0EDBCFEEFF88 :1010A000FB0EDBCFEEFFFC0EDBCFEEFFFD0EDBCF4A -:1010B000EEFF91EC0DF0080EF36EDB6E090EF3CF30 -:1010C000DBFF1F0E08EC0DF0A1EC0DF007E0D9508E -:1010D000080FE96EDACFEAFFEE8AED52FEEC0DF072 -:1010E0000BE1F50EDB50FF0802E1E1EC0DF0B5EC91 -:1010F0000DF0EDEC0EF01FD0FEEC0DF003E0FE0E57 -:10110000DB040AE1F50EDB50FF0802E1E1EC0DF033 -:10111000B5EC0DF0DDEC0DF0FEEC0DF003E0FE0E95 -:10112000DB500BE1F50EDB50FF0802E1E1EC0DF0C6 -:10113000B5EC0DF0E66AB2EC0EF0A1EC0DF002E0B9 -:101140009BEC0FF0020EDBCFE6FF030E88EC0EF0F7 -:10115000E8EC0EF0BEEC0CF00A0EE15C02E2E16A93 -:10116000E552E16E42EF0DF03DEC0DF0F90EDBCFF4 -:10117000E6FFE66AE66AE66AE66AD950FA0F1DEC0F -:101180000FF0A6EC0FF0EDEC0EF07FDF006E0A0E14 -:10119000E15E005042EF0DF03DEC0DF0FE0EDB5035 -:1011A00003E0FEEC0DF00FE1CBEC0FF02EEC0FF0B6 -:1011B000F3CF61F1F4CF62F1E66A2EEC0FF0F3CFDA -:1011C0005FF1F4CF60F1FE0EDB0403E0FEEC0DF006 -:1011D00010E122EC0FF02EEC0FF0F3CF65F1F4CF1D -:1011E00066F1010EE66E2EEC0FF0F3CF63F1F4CF53 -:1011F00064F1010E08EC0DF042EF0DF03DEC0DF046 -:101200001F0E08EC0DF0C5EC0FF0010E08EC0DF010 -:1012100042EF0DF04CEC0FF0FEEC0DF005E12D6A05 -:101220002E6A2F6A306A12D00B0EF2DBEDEC0EF054 -:10123000ADEC0DF0DE6ADD6ADECF2DF0DECF2EF0F4 -:10124000DECF2FF0DDCF30F0DD52DD52040EE15C59 -:1012500002E2E16AE552E16E42EF0DF0AEEC0EF013 -:101260001BEC0EF002EC0EF080EC0DF042EF0DF0F6 -:10127000AEEC0EF01BEC0EF04EEC0DF0020E80EC1E -:101280000DF042EF0DF0AEEC0EF0E1DA4EEC0DF0A9 -:10129000E66ABCEC0DF0D4DACAEC0EF0CDEF0EF03D -:1012A000AEEC0EF0CAEC0EF0E66ABCEC0DF0C8DA5B -:1012B000CEDAF4DBCDEF0EF0E0DB3C0EE1267AEC8B -:1012C0000EF06AEC0FF07AEC0EF0AFEC0FF061EC80 -:1012D0000FF008C02EF009C02FF00AC030F00BC08C -:1012E00031F079EC22F089EC0FF0C5EC0EF073ECE4 -:1012F0000FF092EC0FF0C5EC0EF0C9EC0DF061ECC4 -:101300000FF014C02EF015C02FF016C030F017C02B -:1013100031F079EC22F098EC0EF080EC0FF090ECCC -:1013200021F058EC0FF0336A346A800E356E50ECC1 -:101330000FF0380E2EC0DBFF390E2FC0DBFF3A0E48 -:1013400030C0DBFF3B0E31C0DBFF7AEC0EF058EC17 -:101350000FF0E3DBC5EC0EF06CDBDFDBD8EC2AF042 -:10136000086E080EE15E0850080E2DC0DBFF090E66 -:101370002EC0DBFF0A0E2FC0DBFF0B0E30C0DBFFE1 -:10138000C3EC0DF0F60EDB5007E0D950F40F1DEC66 -:101390000FF0EE50ED103AE179DB080EDBCF0EF0E6 -:1013A000090EDBCF0FF00A0EDBCF10F00B0E74DA54 -:1013B00043DAB8EC0EF02E6A2F6A800E306E400EC3 -:1013C000316E380EDBCF33F0390EDBCF34F03A0E0E -:1013D000DBCF35F03B0EC1EC0FF0F1EC0EF09DDBF6 -:1013E000DCEC0EF02DC002F02EC003F02FC004F094 -:1013F00030C005F02DC02EF039EC0FF0D6EC0EF019 -:101400002DDF0A6E060EE15E0A50D5D1380EDBCF15 -:1014100004F0390EDBCF05F03A0EDBCF06F03B0EC1 -:10142000DBCF07F00C6A0D6A0E6A400E0F6EA9DA68 -:1014300079EC22F046EC0EF0F40EDBCF2FF0F50E37 -:10144000A8DBC7DB95EC0EF090EC21F0140E2EC05B -:10145000DBFF150E2FC0DBFF160E30C0DBFF170EB3 -:101460004ADA7AEC0EF095EC0EF079EC22F0180ED8 -:101470002EC0DBFF190E2FC0DBFF1A0E30C0DBFFC2 -:101480001B0E39DAC5EC0EF073EC0FF095EC0EF094 -:1014900079EC22F01C0E2EC0DBFF1D0E2FC0DBFFEF -:1014A0001E0E30C0DBFF1F0E31C0DBFF1C0EDBCF7A -:1014B00000F01D0EDBCF01F01E0EDBCF02F01F0E81 -:1014C000DBCF03F0B1DB8CEC0EF079EC22F0200ED8 -:1014D0002EC0DBFF210E2FC0DBFF220E30C0DBFF52 -:1014E000230E31C0DBFFD950180FE96EDACFEAFFC7 -:1014F000240EEECFDBFF250EEECFDBFF260EEECF68 -:10150000DBFF270EEECFDBFFFD0EDBCF2FF0FE0E55 -:10151000EDEC0FF0200EDBCF33F0210EDBCF34F0FB -:10152000220EDBCF35F0230E9BEC0EF0280E2EC0E2 -:10153000DBFF290E2FC0DBFF2A0E30C0DBFF2B0E96 -:1015400031C0DBFFC5EC0EF0EDEC0FF0240EDBCF6D -:1015500033F0250EDBCF34F0260EDBCF35F0270E2F -:10156000EADB2C0E2EC0DBFF2D0E2FC0DBFF2E0E74 -:1015700030C0DBFF2F0E31C0DBFF2C0EDBCF04F0C1 -:101580002D0EDBCF05F02E0EDBCF06F02F0EDBCFBE -:1015900007F04ADB80EC0FF079EC22F0A1DA300E94 -:1015A0002EC0DBFF310E2FC0DBFF320E30C0DBFF61 -:1015B000330E31C0DBFF280EDBCF2EF0290EDBCF40 -:1015C0002FF02A0EDBCF30F02B0EDBCF31F088DA94 -:1015D000340E2EC0DBFF350E2FC0DBFF360E30C0C1 -:1015E000DBFF370E31C0DBFFD950300F7EDBD95027 -:1015F000340F7BDBD8EC2AF0006E080EE15E005061 -:101600000C0E2DC0DBFF0D0E2EC0DBFF0E0E2FC00B -:10161000DBFF0F0E30C0DBFF006A016A026A400E7A -:10162000036E00C0E6FF01C0E6FF02C0E6FFE66E03 -:101630004DDB6AEC0FF071DAD1EC0FF02DC014F035 -:101640002EC015F02FC016F030C017F054EC0FF07C -:10165000D8EC2AF0186E080EE15E1850E552E7CF7C -:1016600003F0E552E7CF02F0E552E7CF01F0E55293 -:10167000E7CF00F02DC004F02EC005F02FC006F01B -:1016800030C007F0B7DB48DB79EC22F0100E2EC03B -:10169000DBFF110E2FC0DBFF120E30C0DBFF130E7D -:1016A00031C0DBFFF60EDB5002081CE149DB8FEC9A -:1016B00021F0A9DB90EC21F0AFD975DA060E2FC02E -:1016C000DBFF070E30C0DBFF000EDFCF2FF0010E77 -:1016D000B0D9020EBEDBDADA13DB040E2FC0DBFF5B -:1016E000050E4ED02E6A2F6A306A400E316E080EFB -:1016F000DBCF33F0090EDBCF34F00A0EDBCF35F051 -:101700000B0EC1EC0FF0D4DB0C0EDBCF04F00D0E92 -:10171000DBCF05F00E0EDBCF06F00F0EDBCF07F0B0 -:1017200004C033F005C034F006C035F007C036F011 -:101730008FEC21F00C0E2EC0DBFF0D0E2FC0DBFF57 -:101740000E0E30C0DBFF0F0E31C0DBFFF9DA90EC7C -:1017500021F059DB8FEC21F05FD925DA040E2FC080 -:10176000DBFF050E30C0DBFF020EDBCF2FF0030ED8 -:1017700060D950DB8BDAC4DA060E2FC0DBFF070E10 -:1017800030C0DBFF59D83ED9040EDBCF2FF0050E59 -:1017900065DA8ADB3FDB4FDA87DBE66A71DB32D959 -:1017A000060EDBCF2FF0070E59DA2CDA52DB43DAC4 -:1017B0007BDB010EA5D93C0EE15C02E2E16AE55259 -:1017C000E16E60D169DBE7DBC8D9E66A07DA0101BF -:1017D0005F51EE5C066E6051EE58076E6151EE5837 -:1017E000086E625129D902E2E16AE552E16E4AD1FE -:1017F00053DB28DBB2D9010EE66EF0D9010163514B -:10180000EE5C066E6451EE58076E6551EE58086E38 -:10181000665112D902E2E16AE552E16E33D1040E5B -:10182000E66EE66AE5D906E0040EE66E010EE66EA7 -:10183000DFD901E1000C010CF2DF0009FDE012002C -:10184000C3DB2BDAA2DA0ADA2FDB7AEF0EF02EC036 -:1018500024F02FC025F030C026F031C027F0350E1F -:10186000336EFA0E346E0E0E356E3C0E366E79EC1B -:1018700022F02EC020F02FC021F030C022F031C065 -:1018800023F0336A800E346E810E356E430E366E51 -:1018900079EC22F01BEF0EF0DBCF11F0336A346AE3 -:1018A000340E356E430E366E0EC02EF00FC02FF084 -:1018B00010C030F011C031F079EC22F02EC00AF0E7 -:1018C0002FC00BF030C00CF031C00DF0DB0E336ECA -:1018D0000F0E346E490E356EE3DA83DAF2DA02C0A7 -:1018E0002EF0C7DA8FEC21F061DACDDC126E060E35 -:1018F000E15E1250120031C0DBFF046A056A800EFF -:10190000066E3F0E076E0C6A0D6A0E6A400E0F6E71 -:1019100004C0E6FF05C0E6FF06C0E6FF07C0E6FF1D -:101920000CC0E6FF0DC0E6FF0EC0E6FFE66E39DB39 -:10193000E552E7CF0FF0E552E7CF0EF0E552E7CFE3 -:101940000DF0E552E7CF0CF0E552E7CF07F0E55296 -:10195000E7CF06F0E552E7CF05F0E552E7CF04F018 -:101960002DC010F02EC011F02FC012F030C013F0B7 -:1019700041DA56DA79EC22F046EF0EF02EDAB2EFC9 -:101980000EF0F40EDBCF2FF0F50EADDAD1D910EF5B -:101990000FF097DA8CEF0EF0140EDBCF00F0150E7F -:1019A000DBCF01F0160EDBCF02F0170EDBCF03F01A -:1019B000336A800E346E010E356E430E366E8CEF38 -:1019C0000EF0FA0EDBCF00F0FB0EDBCF01F0FC0EC9 -:1019D000DBCF02F0FD0EDBCF03F0000E006C011E2A -:1019E0000122021E0222031E032200C0DFFF010E9D -:1019F00001C0DBFF020E02C0DBFF030E03C0DBFFF2 -:101A0000D6EF0FF0F70EDBCF2FF0F80E4DEF0EF004 -:101A1000E66EE3D9E3EF0EF0100EDBCF33F0110EDC -:101A2000DBCF34F0120EDBCF35F0130EAADAE6EF7F -:101A300022F059DA89EF0FF0EE58096E06C02DF04A -:101A400007C02EF008C02FF0306E76EC21F02EC0CB -:101A500002F02FC003F030C004F031C005F047DAC7 -:101A600026EC22F0AADA2FC0F3FF30C0F4FF040EF8 -:101A7000E15C12000CDAE76E1200D9CFE6FFE1CF8D -:101A8000D9FF1200E552E7CFD9FF120071D9026ADF -:101A9000036AB40E046E420E056E1200000E186C3E -:101AA000191E19221A1E1A221B1E1B2218C0E6FF1D -:101AB00019C0E6FF1AC0E6FF1BC0E6FF1200060EC3 -:101AC000E7CFDBFFDBCFE6FF070EDBCFE6FF040E41 -:101AD000DBCFE6FF050EDBCFE6FF68DAE8EF0EF0BE -:101AE000140EDBCF33F0150EDBCF34F0160EDBCF48 -:101AF00035F0170EDBCF36F026EC22F058EF0FF062 -:101B0000E66EBED9020EE66ECCEC08F0E55212008D -:101B100064D990EC06F0E552120064DA31C0E6FFB9 -:101B20001200D950F60F89D9040EEECFDBFF050E57 -:101B3000EECFDBFF060EEECFDBFF070EEECFDBFFB7 -:101B40001200040EDBCF00F0050EDBCF01F0060E15 -:101B5000DBCF02F0070E32EF0FF080D9020EF3CF89 -:101B6000DBFF030EF4CFDBFF1200080EDBCFE6FF36 -:101B7000090EDBCFE6FF1200DAEC07F0286E0D0E3F -:101B8000E15E28501200020EE66E03EC07F0E5520B -:101B90001200A9D92EC018F02FC019F030C01AF0C9 -:101BA00031C01BF01200020E2FC0DBFF030E30C04D -:101BB000DBFF0ADADBCF30F01200010EE66EB2EF87 -:101BC0000EF0D950080FE96EDACFEAFFEE52ED8839 -:101BD0001200336A346A356A50EF0FF03FD9F3CF01 -:101BE000DEFFF4CFDDFFD9CFE9FFDACFEAFF120045 -:101BF000F0EC06F0E552E55200091200FE0EDB5053 -:101C00000208120051D9020E1200E66EE3EF0EF048 -:101C1000E4D803EC07F0E55212000DEC07F0006E7B -:101C2000090EE15E00501200336A346A800E356E90 -:101C3000BF0E366E12002EC01CF02FC01DF030C03B -:101C40001EF031C01FF053D9C4D92DC018F02EC0DA -:101C500019F02FC01AF030C01BF0120044D962D91D -:101C600046D979EC22F084D9BD0E336E370E346E2E -:101C7000860E356E410E366EACD92DC00CF02EC0DE -:101C80000DF02FC00EF030C00FF0120023D919D97B -:101C900037D926EC22F058EF0FF025D91BD927D9D8 -:101CA00079EC22F036D9CC0E336EBC0E346E8C0E2D -:101CB000356E3B0E366E8DD92DC000F02EC001F072 -:101CC0002FC002F030C003F054EF0FF0140EDBCF42 -:101CD0000CF0150EDBCF0DF0160EDBCF0EF0170E4D -:101CE000DBCF0FF04EDE8FEF21F0E96EDACFEAFFA7 -:101CF000A6EF0FF0FD0EDBCF2FF0FE0E73EF0FF00F -:101D000063D9F1D82CD945DE79EC22F0E6EF22F048 -:101D1000DBCFE6FFBEEF0CF000C02EF001C02FF0CD -:101D200002C030F003C031F01200FCD8C9EF0CF053 -:101D30001FD961EF0FF025D9CDD82BDE8FEF21F021 -:101D4000A5DE0C0EDBCF0EF00D0EDBCF0FF00E0E6E -:101D5000DBCF10F00F0EA0DDCCEF0CF08EDE13DF2A -:101D600020EF0CF0FDEC04F0E552E552E5521200D4 -:101D7000F70EDBCFE6FFF80EDBCFE6FFF90EDBCF89 -:101D8000E6FFFA0EDBCFE6FF1200FB0EDBCF2FF0F3 -:101D9000FC0E12005CDD54EF0FF0010EE66EECDE7F -:101DA000020EE66ECCEC08F0E5526CD606D92FC0D8 -:101DB000E6FF30C0E6FF1200EBEC26F0E552E552FC -:101DC000E552E55212007EEC04F0E552E5521200B5 -:101DD000DECFE6FFDDCFE6FF1200FE0EDBCFE6FF33 -:101DE00012002EC006F02FC007F030C008F031C03E -:101DF00009F012002DC033F02EC034F02FC035F0A2 -:101E000030C036F0120008DE2FC0DEFF30C0DDFF2C -:101E1000CCEF0CF0000EDFCF2FF0010E73EF0FF0C0 -:101E20000CC02EF00DC02FF00EC030F00FC031F0FE -:101E30001200E66EE66ABEEF0CF0E96EFF0EDA20E5 -:101E4000EA6E12000A0EE66E010EDFDE010EE66E8D -:101E50001200DBCF2FF0030E73EF0FF0E2EC05F072 -:101E6000E5521200DBCF03F0005001100210031006 -:101E7000120003C02FF004C030F005C031F0120092 -:101E8000DAEC07F0206E0D0EE15E20501200E66ED7 -:101E90007CEC2FF0E5521200F0DD040EE12612007A -:101EA000400E366E26EF22F02DC0E6FFF2EF0FF067 -:101EB0002EC000F02FC001F030C002F031C003F09E -:101EC00012002EC033F02FC034F030C035F031C0D6 -:101ED00036F012002EC008F02FC009F030C00AF012 -:101EE00031C00BF01200DBCF30F061EF21F0330E88 -:101EF000336EE20E346EC20E356E420E366E120036 -:101F000004C02EF005C02FF006C030F007C031F03D -:101F100012002EC004F02FC005F030C006F031C012 -:101F200007F012002EC014F02FC015F030C016F0CC -:101F300031C017F01200060EDBCFE6FF070EE8DE19 -:101F4000040EDBCFE6FF050E88EF0EF0EECFE6FFC6 -:101F5000EECFE6FFEECFE6FFEFCFE6FF12002EC09A -:101F60000CF02FC00DF030C00EF031C00FF0120099 -:101F70002EC010F02FC011F030C012F031C013F09D -:101F80001200DBCF36F079EF22F0FC0EDBCFE6FF5C -:101F9000FD0E88EF0EF00A0EE66EE66A14DFE66AC2 -:101FA0001200D950380FA1DEDCEF0EF0020EDBCFAD -:101FB000E6FF030EDBCFE6FF1200E6EC22F02FC0B7 -:101FC00000F030C001F01200F90EDBCF2FF0FA0E56 -:101FD000120079EC22F015EF23F02BDDFADD68DF3B -:101FE00066EF0EF02EC0E6FF2FC0E6FF30C0E6FF22 -:021FF0001200DD -:0E1FF200DACFE4FFE2CFDAFFE9CFE4FFEACF77 -:10200000E4FFF6CFE4FFF7CFE4FFF5CFE4FFF3CF33 -:10201000E4FFF4CFE4FFFACFE4FF00EE29F0140E62 -:10202000E80403E3EECFE4FFFBD700EE00F0290E57 -:10203000E80403E3EECFE4FFFBD791EC1BF09EA096 -:1020400013D09BEC1BF001014D2B000E4E23E80E2C -:102050004D5D030E4E5905E34D6B4E6B4F2B000E3D -:1020600050230CEC29F09E90A4EC1BF002E2E16AF4 -:10207000E552E16EE552E7CFD9FFE55200EE28F0D8 -:10208000290EE80403E3E5CFEDFFFBD700EE3CF0BB -:10209000140EE80403E3E5CFEDFFFBD7E5CFFAFF2D -:1020A000E5CFF4FFE5CFF3FFE5CFF5FFE5CFF7FF91 -:1020B000E5CFF6FFE5CFEAFFE5CFE9FFE5CFDAFFB1 -:1020C0001100D8CFE4FFE0CFE4FFE46EDACFE4FF05 -:1020D000E2CFDAFFF3CFE4FFF4CFE4FF91EC1BF0A3 -:1020E000A4EC1BF002E2E16AE552E16EE552E7CFB3 -:1020F000D9FFE552E5CFF4FFE5CFF3FFE5CFDAFFF7 -:10210000E550E5CFE0FFE5CFD8FF100004D8EFECB5 -:102110001BF060D8FCD70F0EC11202D8B9EF1BF02C -:10212000B4EC1BF0E65268EC1BF00101676F070E80 -:10213000675D10E1E66A7CEC2FF0E552DF6E000E81 -:10214000DF80ACEC1BF0E66A35EC30F0E552DF7076 -:10215000ACEC1BF0D08EF28EF28CF30E8C16951632 -:102160000101476B486B496B4A6B010E4B6F9294B0 -:102170008094939881980D0EE66E7C0EE66EE10ECB -:10218000E66EEFEC2EF0E552E552E552C70E9216E0 -:1021900094943F0E9516010EE66E2EEC04F0E55277 -:1021A000838C808A82848088838E80868294010ECC -:1021B000E66E70EC30F0E55282849D80C50EE66ECE -:1021C000C5EC2FF0E5529BEC1BF0E552E552E7CF52 -:1021D000D9FF1200D9CFE6FFE1CFD9FF0F0EE126DC -:1021E00001014B5102E0ADEC1AF0200E0101005D3F -:1021F00003E36D50020B02E0A3EF1AF00101495115 -:102200004A1102E1000E08D049C1E9FF4AC1EAFFC4 -:10221000EF50800B01E0010E000947E1010146513A -:10222000EA6A260FE96E010EEA22EF5000083DE24D -:102230000501406B01014C514C2B0501416F05011B -:10224000040E426F01014651EA6A260FE96E010E43 -:10225000EA22EFCF43F5400EE66E400EE66E050E25 -:10226000E66E010EE66E010EE66E0AEC20F0006EE0 -:10227000050EE15E0050F3CF49F1F4CF4AF10101C0 -:102280004651EA6A260FE96E010EEA22EF6A010161 -:102290004651000803E20101460707D001014551FC -:1022A000000803E201011F0E466F010149514A1166 -:1022B00002E1000E08D049C1E9FF4AC1EAFFEF5030 -:1022C000800B01E0010E00092CE10101520529E11A -:1022D0000FEC0CF0000925E00501406B01014C51A9 -:1022E0004C2B0501416F05010A0E426F0501436B3E -:1022F0000501010E486F400EE66E400EE66E050EBB -:10230000E66E010EE66E010EE66E0AEC20F0006E3F -:10231000050EE15E0050F3CF49F1F4CF4AF101011F -:10232000526B000E0101E76E5119E8AE02D0513533 -:1023300003D0E750D880515501E38ED001015151AF -:10234000FF0A29E0FD0A13E0030A01E06ED0020E45 -:10235000E66E58EC2AF0E55257EC07F0000904E06D -:102360000101020E516F02D00101516960D0200EAF -:10237000E66E030EE66EC80EE66EE66AE80EE66EE0 -:10238000030EE66E2EEC09F0006E060EE15E0050C4 -:102390000101516B4CD0010149514A1102E1000E7B -:1023A00008D049C1E9FF4AC1EAFFEF50800B01E0C4 -:1023B000010E000939E10501406B01014C514C2B24 -:1023C0000501416F0501050E426F0501436B0501D3 -:1023D000486BBF0E006E5D0E016E026A00C0E6FF24 -:1023E00001C0E6FF02C0E6FF480EE66E050EE66E8F -:1023F00040EC2FF0036E050EE15E0350400EE66EDA +:1010B000EEFF6EEC0DF0080EF36EDB6E090EF3CF53 +:1010C000DBFF1F0EA9EC0CF084EC0DF007E0D9500B +:1010D000080FE96EDACFEAFFEE8AED52DDEC0DF093 +:1010E0000BE1F50EDB50FF0802E1C1EC0DF0A1ECC5 +:1010F0000DF071EC0FF01FD0DDEC0DF003E0FE0EF3 +:10110000DB040AE1F50EDB50FF0802E1C1EC0DF053 +:10111000A1EC0DF0BDEC0DF0DDEC0DF003E0FE0EEA +:10112000DB500BE1F50EDB50FF0802E1C1EC0DF0E6 +:10113000A1EC0DF0E66A3FEC0FF084EC0DF002E05C +:10114000FFEC0FF0020EDBCFE6FF030E25EC0FF0F5 +:1011500069EC0FF0C5DB0A0EE15C02E2E16AE552E0 +:10116000E16E1AEF0DF015EC0DF0F90EDBCFE6FF96 +:10117000E66AE66AE66AE66AD950FA0F87EC0FF08B +:1011800075EC0FF071EC0FF080DF006E0A0EE15E7F +:1011900000501AEF0DF015EC0DF0FE0EDB5003E0E1 +:1011A000DDEC0DF00FE13BEC10F093EC0FF0F3CF22 +:1011B00061F1F4CF62F1E66A93EC0FF0F3CF5FF1E7 +:1011C000F4CF60F1FE0EDB0403E0DDEC0DF010E186 +:1011D0008CEC0FF093EC0FF0F3CF65F1F4CF66F1E8 +:1011E000010EE66E93EC0FF0F3CF63F1F4CF64F1F0 +:1011F000010EAFDB1AEF0DF015EC0DF01F0EA9DBA1 +:1012000035EC10F0010EA5DB1AEF0DF0ADEC0FF090 +:10121000DDEC0DF005E13D6A3E6A3F6A406A12D09E +:101220000B0E97DB71EC0FF090EC0DF0DE6ADD6ACF +:10123000DECF3DF0DECF3EF0DECF3FF0DDCF40F041 +:10124000DD52DD52040EE15C02E2E16AE552E16E3C +:10125000F1D341EC10F0E1EC0DF04FEC0DF0EAD3DE +:1012600041EC10F092DB020E4FEC0DF0E3D36EEC8C +:101270000FF092EC0EF089DBE66A9CDE03EC0EF0D8 +:1012800092EC0EF0B6EC0FF045EF0FF06EEC0FF0B5 +:1012900092EC0EF05DEC0DF003EC0EF092EC0EF023 +:1012A00074DB45EF0FF06EEC0FF0F60EDB5020E034 +:1012B000006A800E016E010E026E430E036E58EC42 +:1012C00010F073EC10F0436A446AC80E456E420E8B +:1012D000466EE9EC22F0C7EC0FF0F9DA26EC10F0DC +:1012E000A9EC23F0F70E3FC0DBFFF80E40C0DBFF98 +:1012F000B5EC0EF052EC22F00CEC0FF0DEDB386EA9 +:101300000D0EE15E3850B5EC0EF053EC22F00CEC13 +:101310000FF03BDB010EE66E4DDE386E0D0EE15E2A +:10132000385020EC10F086D380DB3C0EE12606EC32 +:101330000FF0BAEC0FF006EC0FF00AEC10F008C05A +:101340003EF009C03FF00AC040F00BC041F03CEC59 +:1013500023F0C7EC0FF076EC10F0F0EC0FF076EC29 +:1013600010F0F1EC0DF0B3DA14C03EF015C03FF010 +:1013700016C040F017C041F03CEC23F079EC10F0BF +:101380004BDB53EC22F0D9DA436A446A800E456E97 +:10139000E6DB380E3EC0DBFF390E3FC0DBFF3A0E06 +:1013A00040C0DBFF3B0E41C0DBFF06EC0FF0C5DAAF +:1013B00088DB59EC0FF007DB84DB9BEC2BF0086E2D +:1013C000080EE15E0850080E3DC0DBFF090E3EC06E +:1013D000DBFF0A0E3FC0DBFF0B0E40C0DBFF8EDBE6 +:1013E000F60EDB5007E0D950F40F87EC0FF0EE500B +:1013F000ED1039E123DB080EDBCF0EF0090EDBCF59 +:101400000FF00A0EDBCF10F00B0E6FEC0EF03FDA90 +:101410004CEC0FF03E6A3F6A800E406E400E416E0B +:10142000380EDBCF43F0390EDBCF44F03A0EDBCF82 +:1014300045F03B0E29EC10F048DB43DB89DB3DC077 +:1014400002F03EC003F03FC004F040C005F03DC0D4 +:101450003EF09EEC0FF05EEC0FF0FBDE0A6E060E27 +:10146000E15E0A50D2D1380EDBCF04F0390EDBCF6B +:1014700005F03A0EDBCF06F03B0EDBCF07F0BDDB0D +:10148000F7DA79EC10F066EC10F0F2DAAADB7EEC19 +:101490000FF021EC0FF053EC22F0140E3EC0DBFFF6 +:1014A000150E3FC0DBFF160E40C0DBFF170EDBDB67 +:1014B00006EC0FF021EC0FF03CEC23F0180E3EC0D0 +:1014C000DBFF190E3FC0DBFF1A0E40C0DBFF1B0E17 +:1014D000CADB76EC10F021EC0FF03CEC23F01C0E94 +:1014E0003EC0DBFF1D0E3FC0DBFF1E0E40C0DBFF1A +:1014F0001F0E41C0DBFF1C0EDBCF00F01D0EDBCF4B +:1015000001F01E0EDBCF02F01F0EDBCF03F08CDBF1 +:1015100026EC10F0200E3EC0DBFF210E3FC0DBFFAB +:10152000220E40C0DBFF230E41C0DBFFD950180F55 +:10153000E96EDACFEAFF240EEECFDBFF250EEECF09 +:10154000DBFF260EEECFDBFF270EEECFDBFFFD0E1F +:10155000DBCF3FF0FE0E14EC10F0200EDBCF43F09B +:10156000210EDBCF44F0220EDBCF45F0230E29EC19 +:101570000FF0280E3EC0DBFF290E3FC0DBFF2A0E16 +:1015800040C0DBFF2B0E41C0DBFF59EC0FF014EC29 +:1015900010F0240EDBCF43F0250EDBCF44F0260EF7 +:1015A000DBCF45F0270E29EC0FF02C0E3EC0DBFF01 +:1015B0002D0E3FC0DBFF2E0E40C0DBFF2F0E41C0C3 +:1015C000DBFF2C0EDBCF04F02D0EDBCF05F02E0E53 +:1015D000DBCF06F02F0EDBCF07F026DB1DDA3CEC6D +:1015E00023F02FEC0FF0300E3EC0DBFF310E3FC07A +:1015F000DBFF320E40C0DBFF330E41C0DBFF280EA5 +:10160000DBCF3EF0290EDBCF3FF02A0EDBCF40F0E0 +:101610002B0EDBCF41F02FEC0FF0340E3EC0DBFF82 +:10162000350E3FC0DBFF360E40C0DBFF370E41C03A +:10163000DBFFD950300FEBD9D950340FE8D99BECF0 +:101640002BF0006E080EE15E00500C0E3DC0DBFF7B +:101650000D0E3EC0DBFF0E0E3FC0DBFF0F0E40C085 +:10166000DBFF006A016A026A400E036E00C0E6FFFB +:1016700001C0E6FF02C0E6FFE66E9EDBBAEC0FF0AB +:1016800020DA45EC10F03DC014F03EC015F03FC02C +:1016900016F040C017F0B6EC0FF09BEC2BF0186E74 +:1016A000080EE15E1850E552E7CF03F0E552E7CFB0 +:1016B00002F0E552E7CF01F0E552E7CF00F03DC080 +:1016C00004F03EC005F03FC006F040C007F030DA3D +:1016D00026EC10F0100E3EC0DBFF110E3FC0DBFF0A +:1016E000120E40C0DBFF130E41C0DBFFF60EDB50D5 +:1016F00002081DE1E2EC0FF052EC22F019EC10F0C0 +:1017000053EC22F053D92FDA060E3FC0DBFF070E51 +:1017100040C0DBFFB1EC0FF056D9020EDBCF3FF03B +:10172000030E6CDB040E3FC0DBFF050E4FD03E6A9C +:101730003F6A406A400E416E080EDBCF43F0090E4F +:10174000DBCF44F00A0EDBCF45F00B0E29EC10F096 +:10175000F4D80C0EDBCF04F00D0EDBCF05F00E0E2F +:10176000DBCF06F00F0EDBCF07F004C043F005C05F +:1017700044F006C045F007C046F052EC22F00C0ED3 +:101780003EC0DBFF0D0E3FC0DBFF0E0E40C0DBFF97 +:101790000F0E41C0DBFFE2EC0FF053EC22F019EC2E +:1017A00010F052EC22F002D9DED9040E3FC0DBFF6C +:1017B000050E40C0DBFF020EDBCF3FF0030E03D966 +:1017C000D0DB1CDB060E3FC0DBFF070E40C0DBFF9B +:1017D0005ED8BCD8040EDBCF3FF0050E2CDAC6DB9A +:1017E000C0DBB3DB6AD9206E0D0EE15E2050AED8AF +:1017F000060EDBCF3FF0070E1EDAE3D9DBCF3FF05A +:10180000030EA3DBB3DB010E4AD93C0EE15C02E21E +:10181000E16AE552E16E0ED1A0DB3BEC10F080D91D +:10182000E66ABBD901015F51EE5C066E6051EE586D +:10183000076E6151EE58086E6251C8D802E2E16A43 +:10184000E552E16EF7D089DB67DB6AD9010EE66EFF +:10185000A4D901016351EE5C066E6451EE58076E27 +:101860006551EE58086E6651B1D802E2E16AE55260 +:10187000E16EE0D0040EE66EE66A99D906E0040E49 +:10188000E66E010EE66E93D901E1000C010CF2DF69 +:101890000009FDE012005DEC10F04FDA0ADBCBD955 +:1018A00065DB06EF0FF03EC01CF03FC01DF040C0EE +:1018B0001EF041C01FF07DDB62EC10F03DC018F05F +:1018C0003EC019F03FC01AF040C01BF012003EC0ED +:1018D00043F03FC044F040C045F041C046F0120024 +:1018E00000DB3FEF0FF000C03EF001C03FF002C050 +:1018F00040F003C041F01200FA0EDBCF00F0FB0E07 +:10190000DBCF01F0FC0EDBCF02F0FD0EDBCF03F0EE +:10191000000E006C011E0122021E0222031E032281 +:1019200000C0DFFF010E01C0DBFF020E02C0DBFFC3 +:10193000030E03C0DBFF4AEF10F03EC000F03FC0D3 +:1019400001F040C002F041C003F01200B1DB9DEF96 +:101950000EF0E66EC6DA64EF0FF002C03EF0EEDA8B +:1019600052EC22F0ABDA83DC126E060EE15E12500E +:101970001200466E3CEC23F03EC020F03FC021F048 +:1019800040C022F041C023F01200000E186C191E56 +:1019900019221A1E1A221B1E1B2218C0E6FF19C08C +:1019A000E6FF1AC0E6FF1BC0E6FF1200100EDBCFF9 +:1019B00043F0110EDBCF44F0120EDBCF45F0130ED7 +:1019C00048DBA9EF23F0DFDAC7EF0FF0EE58096E1E +:1019D00006C03DF007C03EF008C03FF0406E39EC55 +:1019E00022F03EC002F03FC003F040C004F041C00E +:1019F00005F0DFDAE9EC22F054DB3FC0F3FF40C032 +:101A0000F4FF040EE15C1200A3DAE76E1200E96E47 +:101A1000DACFEAFF75EF0FF004C03EF005C03FF0EB +:101A200006C040F007C041F01200D9CFE6FFE1CF79 +:101A3000D9FF1200E552E7CFD9FF12002DDA026A72 +:101A4000036AB40E046E420E056E12003EC024F00E +:101A50003FC025F040C026F041C027F012000CC066 +:101A60003EF00DC03FF00EC040F00FC041F012003C +:101A7000F40EDBCF3FF0F50EC3EF0FF0060EE7CF0D +:101A8000DBFFDBCFE6FF070EDBCFE6FF040EDBCF8D +:101A9000E6FF050EDBCFE6FFFDDA69EF0FF0E66E3D +:101AA000DAEC07F0206E0D0EE15E205020EF10F012 +:101AB00018DA90EC06F0E552120058DAE66ADAEF2E +:101AC00007F00ADB41C0E6FF12003EC006F03FC04F +:101AD00007F040C008F041C009F01200D950F60FDD +:101AE00016DA040EEECFDBFF050EEECFDBFF060E9F +:101AF000EECFDBFF070EEECFDBFF1200020EE66E2D +:101B000003EC07F0E5521200040EDBCF00F0050EE7 +:101B1000DBCF01F0060EDBCF02F0070E97EF0FF0E0 +:101B200002DA020EF3CFDBFF030EF4CFDBFF12006D +:101B30003DC043F03EC044F03FC045F040C046F0D9 +:101B40001200080EDBCFE6FF090EDBCFE6FF120026 +:101B5000AEEC27F0E552E552E552E5521200400E98 +:101B6000466EE9EF22F0020E3FC0DBFF030E40C0DD +:101B7000DBFFA3DADBCF40F01200010EE66E3FEF91 +:101B80000FF0D950080FE96EDACFEAFFEE52ED8878 +:101B90001200456E430E466E1200C5D9F3CFDEFF2C +:101BA000F4CFDDFFD9CFE9FFDACFEAFF1200F0EC86 +:101BB00006F0E552E55200091200FE0EDB50020865 +:101BC0001200D4D9020E1200436A800E446E120035 +:101BD00030C03EF031C03FF032C040F033C041F081 +:101BE00012003EC018F03FC019F040C01AF041C0CA +:101BF0001BF01200E66E64EF0FF00C6A0D6A0E6ABD +:101C0000400E0F6E1200286E0D0EE15E285012007D +:101C100068D903EC07F0E55212000DEC07F0006EF6 +:101C2000090EE15E00501200436A446A800E456E60 +:101C3000BF0E466E1200A7D9D3D9BBD93CEC23F016 +:101C4000AFD9BD0E436E370E446E860E456E410E03 +:101C5000466E38DA3DC00CF03EC00DF03FC00EF0CD +:101C600040C00FF0120041C0DBFF046A056A800E1D +:101C7000066E3F0E076EC1DF04C0E6FF05C0E6FF3B +:101C800006C0E6FF07C0E6FF0CC0E6FF0DC0E6FF9A +:101C90000EC0E6FFE66EF9D9E552E7CF0FF0E55248 +:101CA000E7CF0EF0E552E7CF0DF0E552E7CF0CF0AD +:101CB000E552E7CF07F0E552E7CF06F0E552E7CF70 +:101CC00005F0E552E7CF04F03DC010F03EC011F042 +:101CD0003FC012F040C013F02BDF66EF10F0DBCFF7 +:101CE00011F0436A446A340E54DF0EC03EF00FC058 +:101CF0003FF010C040F011C041F03CEC23F03EC07A +:101D00000AF03FC00BF040C00CF041C00DF0DB0EFC +:101D1000436E0F0E446E490E456E21DFD6DED7DDD1 +:101D2000ADEF0CF0B8DD92DE98D923DE4DDF810EE9 +:101D300030DF3CEC23F053EF0CF0D5D93AD93CEC32 +:101D400023F025D9CC0E436EBC0E446E8C0E456E2E +:101D50003B0E466EB7D93DC000F03EC001F03FC01B +:101D600002F040C003F0B6EF0FF095DD3EC028F062 +:101D70003FC029F040C02AF041C02BF06ED9466E1A +:101D80003CEC23F063DE436A446A456A400EF1DDB1 +:101D9000306A800E316E010E326E430E336E88D97A +:101DA000F2D83EC034F03FC035F040C036F041C0FC +:101DB00037F08DDDE8EF0DF0140EDBCF0CF0150ED3 +:101DC000DBCF0DF0160EDBCF0EF0170EDBCF0FF0D2 +:101DD0004FDE8FD944DE52EF22F0140EDBCF00F03D +:101DE000150EDBCF01F0160EDBCF02F0170EDBCFA6 +:101DF00003F0EADE010ECDDE73EF0CF074D9F9D8F2 +:101E00005CD9C1D807D922D9A9EF23F0FD0EDBCFC9 +:101E10003FF0FE0EC3EF0FF03EC02CF03FC02DF0A0 +:101E200040C02EF041C02FF052DD20C03EF021C056 +:101E30003FF022C040F023C041F03CEC23F053EFD0 +:101E40000CF0CED844DD73EF0CF0DBCFE6FF70EF83 +:101E50000CF0FFD88FD83BDD46DD52EF22F0140E98 +:101E6000DBCF43F0150EDBCF44F0160EDBCF45F091 +:101E7000170EDBCF46F0E9EC22F09DEF0CF0FDEC05 +:101E800004F0E552E552E5521200010EE66EDAEC7E +:101E900007F0B9DED5D8CED5F70EDBCFE6FFF80ECA +:101EA000DBCFE6FFF90EDBCFE6FFFA0EDBCFE6FF76 +:101EB0001200FB0EDBCF3FF0FC0E1200F2D83FC049 +:101EC000E6FF40C0E6FF12007EEC04F0E552E5526A +:101ED0001200DECFE6FFDDCFE6FF1200A6DD7EEFCB +:101EE0000DF0FE0EDBCFE6FF1200EECFE6FFEECFE9 +:101EF000E6FFEECFE6FFEFCFE6FF1200436A446A4B +:101F0000456AAFEF0DF0E66EE66A70EF0CF0E96E31 +:101F1000FF0EDA20EA6E12000A0EE66E010E6ADE8D +:101F2000010EE66E1200E2EC05F0E5521200DBCF86 +:101F300003F00050011002100310120003C03FF024 +:101F400004C040F005C041F012001DD853EF0CF062 +:101F5000E66E3FEC30F0E552120067DD040EE1263C +:101F60001200000EDFCF3FF0010E12003DC0E6FF71 +:101F70006CEF10F03EC008F03FC009F040C00AF01E +:101F800041C00BF01200DBCF40F024EF22F03EC046 +:101F900004F03FC005F040C006F041C007F0120059 +:101FA0003EC010F03FC011F040C012F041C013F02D +:101FB0001200330E436EE20E446EC20E456E420EA8 +:101FC000466E12003BDD0C0EDBCF0EF00D0EDBCFAC +:101FD0000FF00E0EDBCF10F00F0E81DEEDEF0EF0E6 +:101FE0003EC014F03FC015F040C016F041C017F0DD +:101FF00012006DDC11DDE9EC22F09DEF0CF0060E15 +:10200000DBCFE6FF070E21DF040EDBCFE6FF050E78 +:1020100025EF0FF03EC00CF03FC00DF040C00EF0B9 +:1020200041C00FF067EF0CF0CEDC68DF86DCDCEF40 +:102030000EF0BCDC3FC0DEFF40C0DDFFEDEF0EF078 +:10204000020EE66ECBEC08F0E55212004CDC3CEFE1 +:1020500023F0DBCF46F03CEF23F0350E436EFA0E53 +:10206000446E0E0E456E3C0E1200FC0EDBCFE6FFFA +:10207000FD0E25EF0FF00A0EE66EE66A25DFE66A32 +:1020800012002CDF08DC53EF0CF0D950380FBFDC06 +:10209000A8EF0DF0020EDBCFE6FF030EDBCFE6FF6D +:1020A0001200A9EC23F03FC000F040C001F0120084 +:1020B000F70EDBCF3FF0F80E1200F90EDBCF3FF04A +:1020C000FA0E12003CEC23F0D8EF23F0C8DC3CEC15 +:1020D00023F050DFF9EF0FF03EC0E6FF3FC0E6FF10 +:1020E00040C0E6FF12004FDFBAEF0FF0E2DEC3EFB1 +:0820F0000FF056DF67EF0CF062 +:0820F800DACFE4FFE2CFDAFFCA +:10210000E9CFE4FFEACFE4FFF6CFE4FFF7CFE4FF47 +:10211000F5CFE4FFF3CFE4FFF4CFE4FFFACFE4FF21 +:1021200000EE39F0140EE80403E3EECFE4FFFBD732 +:1021300000EE00F0390EE80403E3EECFE4FFFBD736 +:1021400054EC1CF09EA013D05EEC1CF001014D2B52 +:10215000000E4E23E80E4D5D030E4E5905E34D6B08 +:102160004E6B4F2B000E5023CFEC29F09E9067EC66 +:102170001CF002E2E16AE552E16EE552E7CFD9FFD9 +:10218000E55200EE38F0390EE80403E3E5CFEDFF49 +:10219000FBD700EE4CF0140EE80403E3E5CFEDFFAF +:1021A000FBD7E5CFFAFFE5CFF4FFE5CFF3FFE5CFAF +:1021B000F5FFE5CFF7FFE5CFF6FFE5CFEAFFE5CF87 +:1021C000E9FFE5CFDAFF1100D8CFE4FFE0CFE4FF6D +:1021D000E46EDACFE4FFE2CFDAFFF3CFE4FFF4CF2F +:1021E000E4FF54EC1CF067EC1CF002E2E16AE552FB +:1021F000E16EE552E7CFD9FFE552E5CFF4FFE5CF39 +:10220000F3FFE5CFDAFFE550E5CFE0FFE5CFD8FFFC +:10221000100004D8B2EC1CF060D8FCD70F0EC1122D +:1022200002D87CEF1CF077EC1CF0E6522BEC1CF093 +:102230000101676F070E675D10E1E66A3FEC30F061 +:10224000E552DF6E000EDF806FEC1CF0E66AF8EC02 +:1022500030F0E552DF706FEC1CF0D08EF28EF28C15 +:10226000F30E8C1695160101476B486B496B4A6B50 +:10227000010E4B6F92948094939881980D0EE66EA8 +:102280007C0EE66EE10EE66EB2EC2FF0E552E55202 +:10229000E552C70E921694943F0E9516010EE66E07 +:1022A0002EEC04F0E552838C808A82848088838EB1 +:1022B00080868294010EE66E33EC31F0E552828422 +:1022C0009D80C50EE66E88EC30F0E5525EEC1CF0A9 +:1022D000E552E552E7CFD9FF1200D9CFE6FFE1CFB3 +:1022E000D9FF0F0EE12601014B5102E070EC1BF00B +:1022F000200E0101005D03E36D50020B02E066EF6A +:102300001BF0010149514A1102E1000E08D049C1F8 +:10231000E9FF4AC1EAFFEF50800B01E0010E00091E +:1023200047E101014651EA6A260FE96E010EEA22F1 +:10233000EF5000083DE20501406B01014C514C2B70 +:102340000501416F0501040E426F01014651EA6A21 +:10235000260FE96E010EEA22EFCF43F5400EE66E3E +:10236000400EE66E050EE66E010EE66E010EE66E9E +:10237000CDEC20F0006E050EE15E0050F3CF49F188 +:10238000F4CF4AF101014651EA6A260FE96E010EC7 +:10239000EA22EF6A01014651000803E20101460703 +:1023A00007D001014551000803E201011F0E466FED +:1023B000010149514A1102E1000E08D049C1E9FF6B +:1023C0004AC1EAFFEF50800B01E0010E00092CE149 +:1023D0000101520529E13AEC0CF0000925E0050164 +:1023E000406B01014C514C2B0501416F05010A0E58 +:1023F000426F0501436B0501010E486F400EE66E0A :10240000400EE66E050EE66E010EE66E010EE66EFD -:102410000AEC20F0006E050EE15E0050F3CF49F1AA -:10242000F4CF4AF10101516B02D00101516B020E50 -:10243000E66EE66AF0EC06F0E552E55200090AE1C4 -:10244000020EE66E010EE66EF0EC06F0E552E55285 -:10245000000902E00101516901014751481102E1FF -:10246000000E08D047C1E9FF48C1EAFFEF50800BDA -:1024700001E0010E000902E0A3EF1AF0050102518C -:10248000070A02E104EF1AF00D0A01E149D2010A3C -:1024900001E119D20D0A01E1B1D1040A1AE0030ADF -:1024A00007E0010A02E062EF1AF0FF00A3EF1AF062 -:1024B000E66A7CEC2FF0E552DF6E000EDB80DFCFAA -:1024C000E6FFE66A5CEC2FF0E552E552FF00A3EF71 -:1024D0001AF0010149514A1102E1000E08D049C128 -:1024E000E9FF4AC1EAFFEF50800B01E0010E00094D -:1024F00001E082D100C540F50501416B0501030EE5 -:10250000426F0501436B050108510F0A01E110D12B -:10251000080A01E1BBD0010A01E17ED0020A71E0A4 -:10252000070A64E0010A20E0030A06E0010A01E06C -:1025300039D167C148F539D10501486B9B0E006E52 -:102540005D0E016E026A00C0E6FF01C0E6FF02C038 -:10255000E6FF480EE66E050EE66E40EC2FF0036EC9 -:10256000050EE15E035021D10501486B8F0E006E10 -:102570005D0E016E026A00C0E6FF01C0E6FF02C008 -:10258000E6FF480EE66E050EE66E40EC2FF0036E99 -:10259000050EE15E03508D0E006E5D0E016E026A47 -:1025A00000C0E6FF01C0E6FF02C0E6FF480EE66E8F -:1025B000050EE66E40EC2FF0036E050EE15E035053 -:1025C000840E006E5D0E016E026A00C0E6FF01C05F -:1025D000E6FF02C0E6FF480EE66E050EE66E40EC32 -:1025E0002FF0036E050EE15E0350DFD092CF48F569 -:1025F00093CF49F594CF4AF595CF4BF596CF4CF54F -:10260000D4D080CF48F581CF49F582CF4AF583CF2A -:102610004BF584CF4CF5C9D0E66AB2EC29F0E5520F -:10262000010E2DC0DBFF020E2EC0DBFF030E2FC0FC -:10263000DBFF040E30C0DBFF040EDBCF48F5030EDA -:10264000DBCF49F5020EDBCF4AF5010EDBCF4BF5B0 -:10265000010EE66EB2EC29F0E552010E2DC0DBFF53 -:10266000020E2EC0DBFF030E2FC0DBFF040E30C0B6 -:10267000DBFF040EDBCF4CF5030EDBCF4DF5020E76 -:10268000DBCF4EF5010EDBCF4FF58FD00A0EE66E95 -:10269000E66A7EEC04F0E552E552E66AE2EC05F00B -:1026A000E552030EF3CFDBFF040EF4CFDBFFE66A47 -:1026B000E2EC05F0E552DE52F3CFDEFFF4CFDDFFB2 -:1026C000DD52040EDBCF48F5030EDBCF49F5020ED9 -:1026D000DBCF4AF5010EDBCF4BF50A0EE66E010E9D -:1026E000E66E7EEC04F0E552E552010EE66EE2EC99 -:1026F00005F0E552030EF3CFDBFF040EF4CFDBFF52 -:10270000010EE66EE2EC05F0E552DE52F3CFDEFF9D -:10271000F4CFDDFFDD52040EDBCF4CF5030EDBCF33 -:102720004DF5020EDBCF4EF5010EDBCF4FF53DD060 -:10273000E66A0AEC09F0E552010E2DC0DBFF020E3D -:102740002EC0DBFF030E2FC0DBFF040E30C0DBFF0B -:10275000040EDBCF48F5030EDBCF49F5020EDBCFCD -:102760004AF5010EDBCF4BF5010EE66E0AEC09F0DF -:10277000E552010E2DC0DBFF020E2EC0DBFF030E63 -:102780002FC0DBFF040E30C0DBFF040EDBCF4CF5A7 -:10279000030EDBCF4DF5020EDBCF4EF5010EDBCF86 -:1027A0004FF503D00501020E436F400EE66E400E5A -:1027B000E66E050EE66E010EE66E010EE66E0AECA2 -:1027C00020F0006E050EE15E0050F3CF49F1F4CF2A -:1027D0004AF1400EE66E000EE66E050EE66EE66A03 -:1027E000010EE66E0AEC20F0006E050EE15E005070 -:1027F000F3CF47F1F4CF48F1A3EF1AF005010851E8 -:10280000030A37E0010A25E0030A13E0010A01E0A8 -:1028100040D005010951921205010A519312050198 -:102820000B51941205010C51951205010D51961290 -:1028300035D00501091D921605010A1D93160501E3 -:102840000B1D941605010C1D951605010D1D961600 -:1028500025D00501091D891605010A1D8A160501E5 -:102860000B1D8B1605010C1D8C1605010D1D8D16FB -:1028700015D005010951891205010A518A12050175 -:102880000B518B1205010C518C1205010D518D124B -:1028900005D0030EE66E02EC30F0E552400EE66E17 -:1028A000000EE66E050EE66EE66A010EE66E0AECB6 -:1028B00020F0006E050EE15E0050F3CF47F1F4CF3B -:1028C00048F1A3EF1AF005010851020A09E0030AD2 -:1028D00001E00CD009C5E6FF58EC2AF0E5520BD018 -:1028E00009C5E6FF68EC2AF0E55205D0010EE66E58 -:1028F00002EC30F0E552400EE66E000EE66E050E7C -:10290000E66EE66A010EE66E0AEC20F0006E050E39 -:10291000E15E0050F3CF47F1F4CF48F1A3EF1AF096 -:1029200005010851060A02E1C3EF19F0080A02E1A5 -:1029300089EF19F0030A02E180EF19F0070A02E1BA -:102940001CEF19F0030A01E1BFD3010A01E1CCD267 -:102950000F0A01E1B5D2020A01E16AD2010A01E1DE -:1029600039D2070A01E108D2010A01E1D7D1030AED -:1029700001E1A6D1010A01E1A0D10C0A01E126D1B1 -:10298000030A01E194D0040A02E0EBEF19F005011B -:10299000095104E0020E0501095D40E10AC5E6FFA8 -:1029A000010EE66E5CEC2FF0E552E5520BC5E6FF3A -:1029B000020EE66E5CEC2FF0E552E5520CC5E6FF28 -:1029C000030EE66E5CEC2FF0E552E5520DC5E6FF16 -:1029D000040EE66E5CEC2FF0E552E5520EC5E6FF04 -:1029E000050EE66E5CEC2FF0E552E5520FC5E6FFF2 -:1029F000060EE66E5CEC2FF0E552E55210C5E6FFE0 -:102A0000070EE66E5CEC2FF0E552E55211C5E6FFCD -:102A1000080EE66E5CEC2FF0E552E5520501090563 -:102A200004E0020E0501095D40E10AC5E6FF090E5A -:102A3000E66E5CEC2FF0E552E5520BC5E6FF0A0EA0 -:102A4000E66E5CEC2FF0E552E5520CC5E6FF0B0E8E -:102A5000E66E5CEC2FF0E552E5520DC5E6FF0C0E7C -:102A6000E66E5CEC2FF0E552E5520EC5E6FF0D0E6A -:102A7000E66E5CEC2FF0E552E5520FC5E6FF0E0E58 -:102A8000E66E5CEC2FF0E552E55210C5E6FF0F0E46 -:102A9000E66E5CEC2FF0E552E55211C5E6FF100E34 -:102AA000E66E5CEC2FF0E552E552F0EF19F000C550 -:102AB00040F50501416B0501030E426F0501436BB3 -:102AC000010EE66E7CEC2FF0E5520501486F020E18 -:102AD000E66E7CEC2FF0E5520501496F030EE66EC1 -:102AE0007CEC2FF0E55205014A6F040EE66E7CEC9B -:102AF0002FF0E55205014B6F050EE66E7CEC2FF0D2 -:102B0000E55205014C6F060EE66E7CEC2FF0E552A7 -:102B100005014D6F070EE66E7CEC2FF0E5520501C6 -:102B20004E6F080EE66E7CEC2FF0E55205014F6FFC -:102B3000090EE66E7CEC2FF0E5520501506F0A0E8F -:102B4000E66E7CEC2FF0E5520501516F0B0EE66E40 -:102B50007CEC2FF0E5520501526F0C0EE66E7CEC1A -:102B60002FF0E5520501536F0D0EE66E7CEC2FF051 -:102B7000E5520501546F0E0EE66E7CEC2FF0E55227 -:102B80000501556F0F0EE66E7CEC2FF0E552050146 -:102B9000566F100EE66E7CEC2FF0E5520501576F74 -:102BA000400EE66E400EE66E050EE66E010EE66E17 -:102BB000010EE66E0AEC20F0006E050EE15E00509C -:102BC000F3CF49F1F4CF4AF1F0EF19F0E66A010EC4 -:102BD000E66E5CEC2FF0E552E552010EE66E020E59 -:102BE000E66E5CEC2FF0E552E552E66A030EE66E07 -:102BF0005CEC2FF0E552E552E66A040EE66E5CEC02 -:102C00002FF0E552E552E66A050EE66E5CEC2FF019 -:102C1000E552E552E66A060EE66E5CEC2FF0E552F0 -:102C2000E552270EE66E070EE66E5CEC2FF0E552DD -:102C3000E552100EE66E080EE66E5CEC2FF0E552E3 -:102C4000E552E66A090EE66E5CEC2FF0E552E552BD -:102C5000010EE66E0A0EE66E5CEC2FF0E552E552D0 -:102C6000E66A0B0EE66E5CEC2FF0E552E552E66A82 -:102C70000C0EE66E5CEC2FF0E552E552E66A0D0EA6 -:102C8000E66E5CEC2FF0E552E552E66A0E0EE66E5B -:102C90005CEC2FF0E552E552270EE66E0F0EE66E65 -:102CA0005CEC2FF0E552E552100EE66E100EE66E6B -:102CB0005CEC2FF0E552E55293D357EC07F090D33C -:102CC000060E09C5DBFF050E0AC5DBFF080E0BC5A6 -:102CD000DBFF070E0CC5DBFF0A0E0DC5DBFF090E7F -:102CE0000EC5DBFF090EDBCFE6FF0A0EDBCFE6FFEA -:102CF000070EDBCFE6FF080EDBCFE6FF050EDBCFCE -:102D0000E6FF060EDBCFE6FF2EEC09F0006E060EA6 -:102D1000E15E00500101010E526F62D3060E09C53B -:102D2000DBFF050E0AC5DBFF080E0BC5DBFF070E38 -:102D30000CC5DBFF0A0E0DC5DBFF090E0EC5DBFF60 -:102D4000090EDBCFE6FF0A0EDBCFE6FF070EDBCF77 -:102D5000E6FF080EDBCFE6FF050EDBCFE6FF060E33 -:102D6000DBCFE6FF38EC09F0006E060EE15E0050A6 -:102D70000101010E526F34D3060E09C5DBFF050EAB -:102D80000AC5DBFF080E0BC5DBFF070E0CC5DBFF1A -:102D90000A0E0DC5DBFF090E0EC5DBFF090EDBCFEA -:102DA000E6FF0A0EDBCFE6FF070EDBCFE6FF080EDD -:102DB000DBCFE6FF050EDBCFE6FF060EDBCFE6FF3F -:102DC00043EC09F0006E060EE15E00500101010EB9 -:102DD000526F06D3060E09C5DBFF050E0AC5DBFFE1 -:102DE000080E0BC5DBFF070E0CC5DBFF0A0E0DC579 -:102DF000DBFF090E0EC5DBFF090EDBCFE6FF0A0E77 -:102E0000DBCFE6FF070EDBCFE6FF080EDBCFE6FFEA -:102E1000050EDBCFE6FF060EDBCFE6FF50EC09F038 -:102E2000006E060EE15E00500101010E526FD8D215 -:102E3000060E09C5DBFF050E0AC5DBFF080E0BC534 -:102E4000DBFF070E0CC5DBFF0A0E0DC5DBFF090E0D -:102E50000EC5DBFF0C0E0FC5DBFF0B0E10C5DBFF35 -:102E60000E0E12C5DBFF0D0E13C5DBFF0D0EDBCF03 -:102E7000E6FF0E0EDBCFE6FF11C5E6FF0B0EDBCF44 -:102E8000E6FF0C0EDBCFE6FF090EDBCFE6FF0A0EF6 -:102E9000DBCFE6FF070EDBCFE6FF080EDBCFE6FF5A -:102EA000050EDBCFE6FF060EDBCFE6FF5CEC09F09C -:102EB000006E0B0EE15E00500101010E526F90D2C8 -:102EC000060E0AC5DBFF050E0BC5DBFF050EDBCFCB -:102ED000E6FF060EDBCFE6FF09C5E6FFFEEC08F0D5 -:102EE000E552E552E5527CD2060E0AC5DBFF050E1F -:102EF0000BC5DBFF080E0CC5DBFF070E0DC5DBFFA6 -:102F00000A0E0EC5DBFF090E0FC5DBFF09C5E6FF84 -:102F100003EC07F0E552090EDBCF2FF00A0EDBCFF2 -:102F200030F05FEC21F02EC008F02FC009F030C067 -:102F30000AF031C00BF0330E336EE20E346EC20E67 -:102F4000356E420E366E08C02EF009C02FF00AC052 -:102F500030F00BC031F079EC22F02EC004F02FC01D -:102F600005F030C006F031C007F0CC0E336EBC0E59 -:102F7000346E8C0E356E3B0E366E04C02EF005C0DE -:102F80002FF006C030F007C031F079EC22F015ECDC -:102F900023F02DC000F02EC001F02FC002F030C091 -:102FA00003F000C0E6FF01C0E6FF02C0E6FF03C079 -:102FB000E6FF070EDBCF2FF0080EDBCF30F05FEC23 -:102FC00021F02EC014F02FC015F030C016F031C023 -:102FD00017F0330E336EE20E346EC20E356E420EB3 -:102FE000366E14C02EF015C02FF016C030F017C08A -:102FF00031F079EC22F02EC010F02FC011F030C06B -:1030000012F031C013F0BD0E336E370E346E860EE3 -:10301000356E410E366E10C02EF011C02FF012C06A -:1030200030F013C031F079EC22F015EC23F02DC014 -:103030000CF02EC00DF02FC00EF030C00FF00CC001 -:10304000E6FF0DC0E6FF0EC0E6FF0FC0E6FF050E6F -:10305000DBCF2FF0060EDBCF30F05FEC21F02EC07F -:103060001CF02FC01DF030C01EF031C01FF0330E19 -:10307000336EE20E346EC20E356E420E366E1CC0DA -:103080002EF01DC02FF01EC030F01FC031F079ECC3 -:1030900022F015EC23F02DC018F02EC019F02FC02F -:1030A0001AF030C01BF018C0E6FF19C0E6FF1AC0C6 -:1030B000E6FF1BC0E6FF09C5E6FFDAEC07F0206E6D -:1030C0000D0EE15E20508CD1060E0AC5DBFF050E09 -:1030D0000BC5DBFF080E0CC5DBFF070E0DC5DBFFC4 -:1030E00009C5E6FF03EC07F0E5520EC5E6FF070E43 -:1030F000DBCF2FF0080EDBCF30F05FEC21F02EC0DD -:1031000008F02FC009F030C00AF031C00BF0330EC8 -:10311000336EE20E346EC20E356E420E366E08C04D -:103120002EF009C02FF00AC030F00BC031F079EC5E -:1031300022F02EC004F02FC005F030C006F031C0E0 -:1031400007F0CC0E336EBC0E346E8C0E356E3B0E1B -:10315000366E04C02EF005C02FF006C030F007C058 -:1031600031F079EC22F015EC23F02DC000F02EC0E8 -:1031700001F02FC002F030C003F000C0E6FF01C034 -:10318000E6FF02C0E6FF03C0E6FF050EDBCF2FF02F -:10319000060EDBCF30F05FEC21F02EC014F02FC014 -:1031A00015F030C016F031C017F0330E336EE20E5A -:1031B000346EC20E356E420E366E14C02EF015C03F -:1031C0002FF016C030F017C031F079EC22F02EC08D -:1031D00010F02FC011F030C012F031C013F0BD0E4E -:1031E000336E370E346E860E356E410E366E10C05D -:1031F0002EF011C02FF012C030F013C031F079EC76 -:1032000022F015EC23F02DC00CF02EC00DF02FC0D5 -:103210000EF030C00FF00CC0E6FF0DC0E6FF0EC090 -:10322000E6FF0FC0E6FF09C5E6FF45EC08F0186EA3 -:103230000A0EE15E1850D4D0060E0AC5DBFF050E5B -:103240000BC5DBFF09C5E6FF03EC07F0E5520CC533 -:10325000E6FF050EDBCF2FF0060EDBCF30F05FEC84 -:1032600021F02EC008F02FC009F030C00AF031C0A4 -:103270000BF0330E336EE20E346EC20E356E420E1C -:10328000366E08C02EF009C02FF00AC030F00BC017 -:1032900031F079EC22F02EC004F02FC005F030C0E0 -:1032A00006F031C007F0BD0E336E370E346E860E59 -:1032B000356E410E366E04C02EF005C02FF006C0EC -:1032C00030F007C031F079EC22F015EC23F02DC07E -:1032D00000F02EC001F02FC002F030C003F000C09B -:1032E000E6FF01C0E6FF02C0E6FF03C0E6FF09C536 -:1032F000E6FFB4EC08F00C6E060EE15E0C5070D0E8 -:1033000009C5E6FFCCEC08F0E5520101010E526F51 -:1033100067D0E2EC0BF0050EF3CFDBFF060EF4CF27 -:10332000DBFFF8EC0BF0070EF3CFDBFF080EF4CF5A -:10333000DBFF00C540F50501416B0501030E426F3F -:103340000501436B060EDBCF48F5050EDBCF49F5D3 -:10335000080EDBCF4AF5070EDBCF4BF5400EE66ECD -:10336000400EE66E050EE66E010EE66E010EE66E8E -:103370000AEC20F0006E050EE15E0050F3CF49F13B -:10338000F4CF4AF12DD000C540F50501416B050190 -:10339000030E426F0501436B0FEC0CF0000904E0D3 -:1033A0000501010E486F02D00501486B400EE66E24 -:1033B000400EE66E050EE66E010EE66E010EE66E3E -:1033C0000AEC20F0006E050EE15E0050F3CF49F1EB -:1033D000F4CF4AF105D0010EE66E02EC30F0E55272 -:1033E000400EE66E000EE66E050EE66EE66A010E13 -:1033F000E66E0AEC20F0006E050EE15E0050F3CFA1 -:1034000047F1F4CF48F19FD0010149514A1102E13F -:10341000000E08D049C1E9FF4AC1EAFFEF50800B16 -:1034200001E0010E00094DE10101010E516F05019E -:10343000406B01014C514C2B0501416F0501050EFC -:10344000426F0501436B0501486B700E006E5D0E07 -:10345000016E026A00C0E6FF01C0E6FF02C0E6FF9F -:10346000480EE66E050EE66E40EC2FF0036E050E7C -:10347000E15E0350400EE66E400EE66E050EE66E0F -:10348000010EE66E010EE66E0AEC20F0006E050EEF -:10349000E15E0050F3CF49F1F4CF4AF1400EE66E01 -:1034A000000EE66E050EE66EE66A010EE66E0AECAA -:1034B00020F0006E050EE15E0050F3CF47F1F4CF2F -:1034C00048F141D0010149514A1102E1000E08D0F2 -:1034D00049C1E9FF4AC1EAFFEF50800B01E0010E4C -:1034E000000931E100C540F50501416B0501030EFE -:1034F000426F0501010E436F400EE66E400EE66E10 -:10350000050EE66E010EE66E010EE66E0AEC20F088 -:10351000006E050EE15E0050F3CF49F1F4CF4AF1A1 -:10352000400EE66E000EE66E050EE66EE66A010ED1 -:10353000E66E0AEC20F0006E050EE15E0050F3CF5F -:1035400047F1F4CF48F10F0EE15C02E2E16AE55287 -:10355000E16EE552E7CFD9FF12000101535154113A -:1035600004E1100E53... [truncated message content] |
From: Xavier L. <Ba...@us...> - 2010-03-07 00:06:24
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 80fe5918d44c802611d6240b92b308dac6bb229a (commit) from a9944f99ef133be4a4f19cb4855833c1648ef6d3 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 80fe5918d44c802611d6240b92b308dac6bb229a Author: Xavier Lagorce <Xav...@cr...> Date: Sun Mar 7 01:02:01 2010 +0100 Adding LCD commands to PcInterface.h Implementation will follow shortly... ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/common/PcInterface.h b/PC_Mainboard/common/PcInterface.h index e79e8fa..bb164d1 100644 --- a/PC_Mainboard/common/PcInterface.h +++ b/PC_Mainboard/common/PcInterface.h @@ -61,6 +61,7 @@ typedef struct _UP { #define CMD_TRAJ 10 ///< Transmet une trajetoire au Krobot #define CMD_MOTOR 11 ///< Gestion des moteurs #define CMD_MOTOR_TOR 12 +#define CMD_LCD 13 ///< Commande de l'afficheur LCD // CMD_GET arguments #define GET_RESET_SOURCE 0 ///< Demande au PIC la source du Reset @@ -136,6 +137,16 @@ typedef struct _UP { #define AX12_EXEC_NOW 0x00 #define AX12_EXEC_ACTION 0x01 +// CMD_LCD +#define LCD_CLEAR 0x00 +#define LCD_CURSOR_ON 0x01 +#define LCD_CURSOR_OFF 0x02 +#define LCD_BACKLIGHT_ON 0x03 +#define LCD_BACKLIGHT_OFF 0x04 +#define LCD_GOTO_POS 0x05 +#define LCD_WRITE 0x06 +#define LCD_WRITE_LINE 0x07 + // CMD_TRAJ #define TRAJ_INIT 0x00 #define TRAJ_FORWARD 0x01 diff --git a/PC_Mainboard/python/dev/USB_Com_Layer/src/PcInterface.h b/PC_Mainboard/python/dev/USB_Com_Layer/src/PcInterface.h index e79e8fa..bb164d1 100644 --- a/PC_Mainboard/python/dev/USB_Com_Layer/src/PcInterface.h +++ b/PC_Mainboard/python/dev/USB_Com_Layer/src/PcInterface.h @@ -61,6 +61,7 @@ typedef struct _UP { #define CMD_TRAJ 10 ///< Transmet une trajetoire au Krobot #define CMD_MOTOR 11 ///< Gestion des moteurs #define CMD_MOTOR_TOR 12 +#define CMD_LCD 13 ///< Commande de l'afficheur LCD // CMD_GET arguments #define GET_RESET_SOURCE 0 ///< Demande au PIC la source du Reset @@ -136,6 +137,16 @@ typedef struct _UP { #define AX12_EXEC_NOW 0x00 #define AX12_EXEC_ACTION 0x01 +// CMD_LCD +#define LCD_CLEAR 0x00 +#define LCD_CURSOR_ON 0x01 +#define LCD_CURSOR_OFF 0x02 +#define LCD_BACKLIGHT_ON 0x03 +#define LCD_BACKLIGHT_OFF 0x04 +#define LCD_GOTO_POS 0x05 +#define LCD_WRITE 0x06 +#define LCD_WRITE_LINE 0x07 + // CMD_TRAJ #define TRAJ_INIT 0x00 #define TRAJ_FORWARD 0x01 diff --git a/PC_Mainboard/python/dev/User_Interface/PcInterface.h b/PC_Mainboard/python/dev/User_Interface/PcInterface.h index e79e8fa..bb164d1 100644 --- a/PC_Mainboard/python/dev/User_Interface/PcInterface.h +++ b/PC_Mainboard/python/dev/User_Interface/PcInterface.h @@ -61,6 +61,7 @@ typedef struct _UP { #define CMD_TRAJ 10 ///< Transmet une trajetoire au Krobot #define CMD_MOTOR 11 ///< Gestion des moteurs #define CMD_MOTOR_TOR 12 +#define CMD_LCD 13 ///< Commande de l'afficheur LCD // CMD_GET arguments #define GET_RESET_SOURCE 0 ///< Demande au PIC la source du Reset @@ -136,6 +137,16 @@ typedef struct _UP { #define AX12_EXEC_NOW 0x00 #define AX12_EXEC_ACTION 0x01 +// CMD_LCD +#define LCD_CLEAR 0x00 +#define LCD_CURSOR_ON 0x01 +#define LCD_CURSOR_OFF 0x02 +#define LCD_BACKLIGHT_ON 0x03 +#define LCD_BACKLIGHT_OFF 0x04 +#define LCD_GOTO_POS 0x05 +#define LCD_WRITE 0x06 +#define LCD_WRITE_LINE 0x07 + // CMD_TRAJ #define TRAJ_INIT 0x00 #define TRAJ_FORWARD 0x01 diff --git a/USB_Dev_Board/Firmware/PcInterface.h b/USB_Dev_Board/Firmware/PcInterface.h index e79e8fa..bb164d1 100644 --- a/USB_Dev_Board/Firmware/PcInterface.h +++ b/USB_Dev_Board/Firmware/PcInterface.h @@ -61,6 +61,7 @@ typedef struct _UP { #define CMD_TRAJ 10 ///< Transmet une trajetoire au Krobot #define CMD_MOTOR 11 ///< Gestion des moteurs #define CMD_MOTOR_TOR 12 +#define CMD_LCD 13 ///< Commande de l'afficheur LCD // CMD_GET arguments #define GET_RESET_SOURCE 0 ///< Demande au PIC la source du Reset @@ -136,6 +137,16 @@ typedef struct _UP { #define AX12_EXEC_NOW 0x00 #define AX12_EXEC_ACTION 0x01 +// CMD_LCD +#define LCD_CLEAR 0x00 +#define LCD_CURSOR_ON 0x01 +#define LCD_CURSOR_OFF 0x02 +#define LCD_BACKLIGHT_ON 0x03 +#define LCD_BACKLIGHT_OFF 0x04 +#define LCD_GOTO_POS 0x05 +#define LCD_WRITE 0x06 +#define LCD_WRITE_LINE 0x07 + // CMD_TRAJ #define TRAJ_INIT 0x00 #define TRAJ_FORWARD 0x01 diff --git a/USB_Module/Battery_Monitoring/Firmware/PcInterface.h b/USB_Module/Battery_Monitoring/Firmware/PcInterface.h index e79e8fa..bb164d1 100644 --- a/USB_Module/Battery_Monitoring/Firmware/PcInterface.h +++ b/USB_Module/Battery_Monitoring/Firmware/PcInterface.h @@ -61,6 +61,7 @@ typedef struct _UP { #define CMD_TRAJ 10 ///< Transmet une trajetoire au Krobot #define CMD_MOTOR 11 ///< Gestion des moteurs #define CMD_MOTOR_TOR 12 +#define CMD_LCD 13 ///< Commande de l'afficheur LCD // CMD_GET arguments #define GET_RESET_SOURCE 0 ///< Demande au PIC la source du Reset @@ -136,6 +137,16 @@ typedef struct _UP { #define AX12_EXEC_NOW 0x00 #define AX12_EXEC_ACTION 0x01 +// CMD_LCD +#define LCD_CLEAR 0x00 +#define LCD_CURSOR_ON 0x01 +#define LCD_CURSOR_OFF 0x02 +#define LCD_BACKLIGHT_ON 0x03 +#define LCD_BACKLIGHT_OFF 0x04 +#define LCD_GOTO_POS 0x05 +#define LCD_WRITE 0x06 +#define LCD_WRITE_LINE 0x07 + // CMD_TRAJ #define TRAJ_INIT 0x00 #define TRAJ_FORWARD 0x01 diff --git a/USB_Module/Motor_Controller/Firmware/PcInterface.h b/USB_Module/Motor_Controller/Firmware/PcInterface.h index e79e8fa..bb164d1 100644 --- a/USB_Module/Motor_Controller/Firmware/PcInterface.h +++ b/USB_Module/Motor_Controller/Firmware/PcInterface.h @@ -61,6 +61,7 @@ typedef struct _UP { #define CMD_TRAJ 10 ///< Transmet une trajetoire au Krobot #define CMD_MOTOR 11 ///< Gestion des moteurs #define CMD_MOTOR_TOR 12 +#define CMD_LCD 13 ///< Commande de l'afficheur LCD // CMD_GET arguments #define GET_RESET_SOURCE 0 ///< Demande au PIC la source du Reset @@ -136,6 +137,16 @@ typedef struct _UP { #define AX12_EXEC_NOW 0x00 #define AX12_EXEC_ACTION 0x01 +// CMD_LCD +#define LCD_CLEAR 0x00 +#define LCD_CURSOR_ON 0x01 +#define LCD_CURSOR_OFF 0x02 +#define LCD_BACKLIGHT_ON 0x03 +#define LCD_BACKLIGHT_OFF 0x04 +#define LCD_GOTO_POS 0x05 +#define LCD_WRITE 0x06 +#define LCD_WRITE_LINE 0x07 + // CMD_TRAJ #define TRAJ_INIT 0x00 #define TRAJ_FORWARD 0x01 diff --git a/USB_Module/Proximity_Sensor/Firmware/PcInterface.h b/USB_Module/Proximity_Sensor/Firmware/PcInterface.h index e79e8fa..bb164d1 100644 --- a/USB_Module/Proximity_Sensor/Firmware/PcInterface.h +++ b/USB_Module/Proximity_Sensor/Firmware/PcInterface.h @@ -61,6 +61,7 @@ typedef struct _UP { #define CMD_TRAJ 10 ///< Transmet une trajetoire au Krobot #define CMD_MOTOR 11 ///< Gestion des moteurs #define CMD_MOTOR_TOR 12 +#define CMD_LCD 13 ///< Commande de l'afficheur LCD // CMD_GET arguments #define GET_RESET_SOURCE 0 ///< Demande au PIC la source du Reset @@ -136,6 +137,16 @@ typedef struct _UP { #define AX12_EXEC_NOW 0x00 #define AX12_EXEC_ACTION 0x01 +// CMD_LCD +#define LCD_CLEAR 0x00 +#define LCD_CURSOR_ON 0x01 +#define LCD_CURSOR_OFF 0x02 +#define LCD_BACKLIGHT_ON 0x03 +#define LCD_BACKLIGHT_OFF 0x04 +#define LCD_GOTO_POS 0x05 +#define LCD_WRITE 0x06 +#define LCD_WRITE_LINE 0x07 + // CMD_TRAJ #define TRAJ_INIT 0x00 #define TRAJ_FORWARD 0x01 diff --git a/USB_Module/Robot_Interface/Firmware/PcInterface.h b/USB_Module/Robot_Interface/Firmware/PcInterface.h index e79e8fa..bb164d1 100644 --- a/USB_Module/Robot_Interface/Firmware/PcInterface.h +++ b/USB_Module/Robot_Interface/Firmware/PcInterface.h @@ -61,6 +61,7 @@ typedef struct _UP { #define CMD_TRAJ 10 ///< Transmet une trajetoire au Krobot #define CMD_MOTOR 11 ///< Gestion des moteurs #define CMD_MOTOR_TOR 12 +#define CMD_LCD 13 ///< Commande de l'afficheur LCD // CMD_GET arguments #define GET_RESET_SOURCE 0 ///< Demande au PIC la source du Reset @@ -136,6 +137,16 @@ typedef struct _UP { #define AX12_EXEC_NOW 0x00 #define AX12_EXEC_ACTION 0x01 +// CMD_LCD +#define LCD_CLEAR 0x00 +#define LCD_CURSOR_ON 0x01 +#define LCD_CURSOR_OFF 0x02 +#define LCD_BACKLIGHT_ON 0x03 +#define LCD_BACKLIGHT_OFF 0x04 +#define LCD_GOTO_POS 0x05 +#define LCD_WRITE 0x06 +#define LCD_WRITE_LINE 0x07 + // CMD_TRAJ #define TRAJ_INIT 0x00 #define TRAJ_FORWARD 0x01 hooks/post-receive -- krobot |
From: Jérémie D. <Ba...@us...> - 2010-03-06 23:53:36
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via a9944f99ef133be4a4f19cb4855833c1648ef6d3 (commit) from 53198a8d5d1d8f51dc3d817a03443aebc4987cce (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit a9944f99ef133be4a4f19cb4855833c1648ef6d3 Author: Jérémie Dimino <je...@di...> Date: Sun Mar 7 00:48:58 2010 +0100 High-level commands to control the grip ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/clients/script.ml b/PC_Mainboard/clients/script.ml index f57651b..55dfb13 100644 --- a/PC_Mainboard/clients/script.ml +++ b/PC_Mainboard/clients/script.ml @@ -274,7 +274,7 @@ let () = let id = int "id" and position = int "position" - and velocity = int ~default:50 "velocity" + and velocity = int ~default:Config.ax12_default_velocity "velocity" and timeout = int ~default:100 "timeout" and goto_mode = keyword ~default:`Now "mode" [("now", `Now); ("action", `Action)] in @@ -311,6 +311,18 @@ let () = return ()); register ~path:["ax12"] "action" (f1 (int ~default:254 "id")) (fun logger krobot id -> - Krobot_unsafe.AX12.action krobot id) + Krobot_unsafe.AX12.action krobot id); + + (* +---------------------------------------------------------------+ + | Grip | + +---------------------------------------------------------------+ *) + + register ~path:["grip"] "up" f0 + (fun logger krobot -> + Krobot.grip_up krobot); + register ~path:["grip"] "down" f0 + (fun logger krobot -> + Krobot.grip_down krobot) + let () = Script_unsafe.register () diff --git a/PC_Mainboard/common/config.ml b/PC_Mainboard/common/config.ml index c248d6e..c05aaf8 100644 --- a/PC_Mainboard/common/config.ml +++ b/PC_Mainboard/common/config.ml @@ -13,3 +13,8 @@ let initial_position = 200 let bus_address = "unix:abstract=krobot" let update_delay = 0.05 let reopen_delay = 1.0 + +let ax12_grip_up_down = 1 +let grip_up_position = 880 +let grip_down_position = 580 +let ax12_default_velocity = 50 diff --git a/PC_Mainboard/common/config.mli b/PC_Mainboard/common/config.mli index 645ac10..66cd249 100644 --- a/PC_Mainboard/common/config.mli +++ b/PC_Mainboard/common/config.mli @@ -26,3 +26,8 @@ val update_delay : float val reopen_delay : float (** Time to wait before retrying to open a card *) + +val ax12_grip_up_down : int +val grip_up_position : int +val grip_down_position : int +val ax12_default_velocity : int diff --git a/PC_Mainboard/driver/driver.ml b/PC_Mainboard/driver/driver.ml index 9fb42d4..a7f256e 100644 --- a/PC_Mainboard/driver/driver.ml +++ b/PC_Mainboard/driver/driver.ml @@ -121,6 +121,12 @@ struct in USB_commands.AX12.action dev.card ~id:0xfe + OL_method GripUp : unit = fun dev -> + set_ax12 dev [{ aa_id = Config.ax12_grip_up_down; aa_position = Config.grip_up_position; aa_velocity = Config.ax12_default_velocity }] + + OL_method GripDown : unit = fun dev -> + set_ax12 dev [{ aa_id = Config.ax12_grip_up_down; aa_position = Config.grip_down_position; aa_velocity = Config.ax12_default_velocity }] + let make card path = return { obus = OBus.make ~interfaces:[Unsafe.interface; interface] path; diff --git a/PC_Mainboard/lib_krobot/krobot.ml b/PC_Mainboard/lib_krobot/krobot.ml index 62a7c10..7a845d7 100644 --- a/PC_Mainboard/lib_krobot/krobot.ml +++ b/PC_Mainboard/lib_krobot/krobot.ml @@ -11,6 +11,7 @@ module Log = Lwt_log.Make(struct let section = "krobot" end) open OBus_pervasives open Lwt +open Types (* +-----------------------------------------------------------------+ | Types | @@ -175,6 +176,8 @@ module AX12 = Make_device(struct let name = "AX12" end) OP_interface(AX12) "fr.krobot.Device.AX12" OP_method SetAX12 : Types.ax12_action structure list -> unit +OP_method GripUp : unit +OP_method GripDown : unit (* +-----------------------------------------------------------------+ | Motors | diff --git a/PC_Mainboard/lib_krobot/krobot.mli b/PC_Mainboard/lib_krobot/krobot.mli index 4dde27c..19b8c34 100644 --- a/PC_Mainboard/lib_krobot/krobot.mli +++ b/PC_Mainboard/lib_krobot/krobot.mli @@ -68,6 +68,9 @@ val set_ax12 : t -> Types.ax12_action list -> unit Lwt.t (** [set_ax12 krobot actions] move all given ax12 at the same time. *) +val grip_up : t -> unit Lwt.t +val grip_down : t -> unit Lwt.t + (** {6 Motors} *) val motors_state : t -> string Lwt.t hooks/post-receive -- krobot |
From: Jérémie D. <Ba...@us...> - 2010-03-06 23:24:15
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 53198a8d5d1d8f51dc3d817a03443aebc4987cce (commit) from 9958104ae2f54521a51358de5ed2ceda0b9b9ba4 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 53198a8d5d1d8f51dc3d817a03443aebc4987cce Author: Jérémie Dimino <je...@di...> Date: Sun Mar 7 00:23:55 2010 +0100 Add module for the LCD device ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/driver/driver.ml b/PC_Mainboard/driver/driver.ml index cfe4f0d..9fb42d4 100644 --- a/PC_Mainboard/driver/driver.ml +++ b/PC_Mainboard/driver/driver.ml @@ -62,6 +62,32 @@ struct end (* +-----------------------------------------------------------------+ + | LCD | + +-----------------------------------------------------------------+ *) + +module LCD = +struct + type t = { + obus : OBus_object.t; + card : Krobot_card.t; + } + + module OBus = OBus_object.Make(struct + type obj = t + let cast obj = obj.obus + end) + + module Unsafe = DBus_exports.LCD(OBus)(struct let get dev = dev.card end) + + let make card path = + let dev = { + obus = OBus.make ~interfaces:[Unsafe.interface] path; + card = card; + } in + return dev +end + +(* +-----------------------------------------------------------------+ | AX12 | +-----------------------------------------------------------------+ *) @@ -754,7 +780,8 @@ lwt () = (fun card -> lwt () = USB_commands.Servo.enable card `Both in lwt () = Compass.OBus.export bus =|< Compass.make card ["fr"; "krobot"; "Devices"; "Compass"] - and () = AX12.OBus.export bus =|< AX12.make card ["fr"; "krobot"; "Devices"; "AX12"] in + and () = AX12.OBus.export bus =|< AX12.make card ["fr"; "krobot"; "Devices"; "AX12"] + and () = LCD.OBus.export bus =|< LCD.make card ["fr"; "krobot"; "Devices"; "LCD"] in return ()) (fun () -> OBus_object.remove_by_path bus ["fr"; "krobot"; "Devices"; "Compass"]; hooks/post-receive -- krobot |
From: Jérémie D. <Ba...@us...> - 2010-03-06 23:17:23
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 9958104ae2f54521a51358de5ed2ceda0b9b9ba4 (commit) from cdc425a8c48cc4414de80fd9f8c695c2ad92ef7d (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 9958104ae2f54521a51358de5ed2ceda0b9b9ba4 Author: Jérémie Dimino <je...@di...> Date: Sun Mar 7 00:16:36 2010 +0100 [interface] commande pour le LCD ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/interface/interface.ml b/PC_Mainboard/interface/interface.ml index d7269d5..91f115d 100644 --- a/PC_Mainboard/interface/interface.ml +++ b/PC_Mainboard/interface/interface.ml @@ -573,4 +573,12 @@ let interfaces = [ Arg("duration", uint32)] (); ]); + + Module("LCD", [ + command + ~name:"send" + ~code:PcInterface.cmd_send + ~args:[Arg("cmd", uint8)] + (); + ]); ] hooks/post-receive -- krobot |
From: Olivier B. <Ba...@us...> - 2010-03-06 22:53:46
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via cdc425a8c48cc4414de80fd9f8c695c2ad92ef7d (commit) from f210a0e3676c019eec203c614a66a685a24d1f7a (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit cdc425a8c48cc4414de80fd9f8c695c2ad92ef7d Author: Olivier BICHLER <oli...@gm...> Date: Sat Mar 6 23:53:17 2010 +0100 Activate LCD support on Robot Interface board ----------------------------------------------------------------------- Changes: diff --git a/USB_Module/Robot_Interface/Firmware/Robot_Interface.mcs b/USB_Module/Robot_Interface/Firmware/Robot_Interface.mcs index 1396fab..7ded22f 100644 --- a/USB_Module/Robot_Interface/Firmware/Robot_Interface.mcs +++ b/USB_Module/Robot_Interface/Firmware/Robot_Interface.mcs @@ -2,7 +2,7 @@ MagicCookie={0b13fe8c-dfe0-40eb-8900-6712719559a7} Version=1.0 [File000] -Location=Z:\USB_Module\Robot_Interface\Firmware\output\usb_descriptors.o +Location=C:\krobot\USB_Module\Robot_Interface\Firmware\output\usb_descriptors.o Folder=Intermediary DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} @@ -15,7 +15,7 @@ ToolArgsString= TraceCmdString= DebugOptions= [File001] -Location=Z:\USB_Module\Robot_Interface\Firmware\output\main.o +Location=C:\krobot\USB_Module\Robot_Interface\Firmware\output\main.o Folder=Intermediary DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} @@ -28,7 +28,7 @@ ToolArgsString= TraceCmdString= DebugOptions= [File002] -Location=Z:\USB_Module\Robot_Interface\Firmware\output\eeprom.o +Location=C:\krobot\USB_Module\Robot_Interface\Firmware\output\eeprom.o Folder=Intermediary DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} @@ -41,7 +41,7 @@ ToolArgsString= TraceCmdString= DebugOptions= [File003] -Location=Z:\USB_Module\Robot_Interface\Firmware\output\usb_device.o +Location=C:\krobot\USB_Module\Robot_Interface\Firmware\output\usb_device.o Folder=Intermediary DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} @@ -54,7 +54,7 @@ ToolArgsString= TraceCmdString= DebugOptions= [File004] -Location=Z:\USB_Module\Robot_Interface\Firmware\output\usb_function_hid.o +Location=C:\krobot\USB_Module\Robot_Interface\Firmware\output\usb_function_hid.o Folder=Intermediary DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} @@ -67,7 +67,7 @@ ToolArgsString= TraceCmdString= DebugOptions= [File005] -Location=Z:\USB_Module\Robot_Interface\Firmware\output\ax12.o +Location=C:\krobot\USB_Module\Robot_Interface\Firmware\output\ax12.o Folder=Intermediary DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} @@ -80,7 +80,7 @@ ToolArgsString= TraceCmdString= DebugOptions= [File006] -Location=Z:\USB_Module\Robot_Interface\Firmware\output\error.o +Location=C:\krobot\USB_Module\Robot_Interface\Firmware\output\error.o Folder=Intermediary DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} @@ -93,7 +93,7 @@ ToolArgsString= TraceCmdString= DebugOptions= [File007] -Location=Z:\USB_Module\Robot_Interface\Firmware\output\servo.o +Location=C:\krobot\USB_Module\Robot_Interface\Firmware\output\servo.o Folder=Intermediary DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} @@ -106,7 +106,7 @@ ToolArgsString= TraceCmdString= DebugOptions= [File008] -Location=Z:\USB_Module\Robot_Interface\Firmware\output\mcc.o +Location=C:\krobot\USB_Module\Robot_Interface\Firmware\output\mcc.o Folder=Intermediary DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} @@ -119,7 +119,7 @@ ToolArgsString= TraceCmdString= DebugOptions= [File009] -Location=Z:\USB_Module\Robot_Interface\Firmware\output\adjd-s371.o +Location=C:\krobot\USB_Module\Robot_Interface\Firmware\output\adjd-s371.o Folder=Intermediary DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} @@ -132,7 +132,7 @@ ToolArgsString= TraceCmdString= DebugOptions= [File010] -Location=Z:\USB_Module\Robot_Interface\Firmware\output\Robot_Interface.cof +Location=C:\krobot\USB_Module\Robot_Interface\Firmware\output\Robot_Interface.cof Folder=Output DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} @@ -145,7 +145,7 @@ ToolArgsString=/m"$(BINDIR_)$(TARGETBASE).map" /w /o"$(BINDIR_)$(TARGETBASE).cof TraceCmdString= DebugOptions= [File011] -Location=Z:\USB_Module\Robot_Interface\Firmware\output\Robot_Interface.hex +Location=C:\krobot\USB_Module\Robot_Interface\Firmware\output\Robot_Interface.hex Folder=Output DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} @@ -158,7 +158,7 @@ ToolArgsString=/m"$(BINDIR_)$(TARGETBASE).map" /w /o"$(BINDIR_)$(TARGETBASE).cof TraceCmdString= DebugOptions= [File012] -Location=Z:\USB_Module\Robot_Interface\Firmware\output\Robot_Interface.map +Location=C:\krobot\USB_Module\Robot_Interface\Firmware\output\Robot_Interface.map Folder=Output DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} diff --git a/USB_Module/Robot_Interface/Firmware/main.c b/USB_Module/Robot_Interface/Firmware/main.c index 20531af..a994ee1 100644 --- a/USB_Module/Robot_Interface/Firmware/main.c +++ b/USB_Module/Robot_Interface/Firmware/main.c @@ -555,7 +555,6 @@ void UserInit(void) // Configuration de l'I2C SSPADD = 119; // Vitesse de l'I2C = 100 KHz ( = FOSC/[4*(SSPADD+1)] ) -/* // Initialisation et effacement de l'afficheur LCD OpenI2C(MASTER, SLEW_OFF); StartI2C(); @@ -568,7 +567,7 @@ void UserInit(void) WriteI2C(0x43); StopI2C(); CloseI2C(); -*/ + //Initialize all of the LED pins mInitAllLEDs(); @@ -1284,6 +1283,16 @@ void USBCBSuspend(void) //IMPORTANT NOTE: Do not clear the USBActivityIF (ACTVIF) bit here. This bit is //cleared inside the usb_device.c file. Clearing USBActivityIF here will cause //things to not work as intended. + + // Turn off LCD backlight + OpenI2C(MASTER, SLEW_OFF); + StartI2C(); + IdleI2C(); // Absolument nssaire + WriteI2C(0x00); + WriteI2C(0x1B); + WriteI2C(0x62); + StopI2C(); + CloseI2C(); #if defined(__C30__) #if 0 @@ -1367,6 +1376,15 @@ void USBCBWakeFromSuspend(void) // clocking (IE: 48MHz clock must be available to SIE for full speed USB // operation). + // Turn on LCD backlight + OpenI2C(MASTER, SLEW_OFF); + StartI2C(); + IdleI2C(); // Absolument nssaire + WriteI2C(0x00); + WriteI2C(0x1B); + WriteI2C(0x42); + StopI2C(); + CloseI2C(); } /******************************************************************** diff --git a/USB_Module/Robot_Interface/Firmware/output/Robot_Interface.cof b/USB_Module/Robot_Interface/Firmware/output/Robot_Interface.cof index 7c3e46c..8a3a01b 100644 Binary files a/USB_Module/Robot_Interface/Firmware/output/Robot_Interface.cof and b/USB_Module/Robot_Interface/Firmware/output/Robot_Interface.cof differ diff --git a/USB_Module/Robot_Interface/Firmware/output/Robot_Interface.hex b/USB_Module/Robot_Interface/Firmware/output/Robot_Interface.hex index 3608778..5e4fbd6 100644 --- a/USB_Module/Robot_Interface/Firmware/output/Robot_Interface.hex +++ b/USB_Module/Robot_Interface/Firmware/output/Robot_Interface.hex @@ -1,909 +1,915 @@ :020000040000FA -:06000000AAEF1EF0120041 +:06000000DEEF1EF012000D :0600080004EF04F01200F9 :060018000CEF04F01200E1 -:06080000AAEF1EF0120039 +:06080000DEEF1EF0120005 :0608080034EF04F01200C1 :0608180074EF04F0120071 -:06082A000500EA3D00009C -:100830008600000024000000C93D0000CB0000003D -:1008400021000000C13D000013010000080000006D -:10085000B13D0000EC00000010000000A83D0000C9 +:06082A000500523E000033 +:100830008600000024000000313E0000CB000000D4 +:1008400021000000293E0000130100000800000004 +:10085000193E0000EC00000010000000103E0000F7 :080860000A010000090000007C -:08086800F1EC0BF000EE22F0B0 +:0808680013EC0CF000EE22F08D :10087000140EE80403E3EECFE4FFFBD700EE00F034 -:10088000220EE80403E3EECFE4FFFBD719EC0CF0F3 -:10089000A1A203D0ACEC18F0A1929EAA03D0EBEC7D -:1008A00011F09E9A9EA003D068EC17F09E9023EC66 +:10088000220EE80403E3EECFE4FFFBD73BEC0CF0D1 +:10089000A1A203D0E0EC18F0A1929EAA03D01FEC15 +:1008A00012F09E9A9EA003D09CEC17F09E9052EC02 :1008B0000CF002E2E16AE552E16EE552E7CFD9FFC2 :1008C000E55200EE21F0220EE80403E3E5CFEDFF50 :1008D000FBD700EE35F0140EE80403E3E5CFEDFF9F -:1008E000FBD706EC0CF01100D8CFE4FFE0CFE4FF1B -:1008F000E46EF1EC0BF000EE22F0140EE80403E3DA +:1008E000FBD728EC0CF01100D8CFE4FFE0CFE4FFF9 +:1008F000E46E13EC0CF000EE22F0140EE80403E3B7 :10090000EECFE4FFFBD700EE00F0220EE80403E395 -:10091000EECFE4FFFBD719EC0CF0F2A403D04FECC0 -:1009200017F0F29423EC0CF002E2E16AE552E16E7A +:10091000EECFE4FFFBD73BEC0CF0F2A403D083EC6A +:1009200017F0F29452EC0CF002E2E16AE552E16E4B :10093000E552E7CFD9FFE55200EE21F0220EE804A0 :1009400003E3E5CFEDFFFBD700EE35F0140EE8042E -:1009500003E3E5CFEDFFFBD706EC0CF0E550E5CF68 -:10096000E0FFE5CFD8FF100004D86EEC0CF056D8AD -:10097000FCD70F0EC11202D838EF0CF033EC0CF09C -:10098000E652C8EC0BF00001FC6F070EFC5D10E1B5 -:10099000E66A40EC1CF0E552DF6E000EDF802BECC7 -:1009A0000CF0E66A7CEC1EF0E552DF702BEC0CF0EC +:1009500003E3E5CFEDFFFBD728EC0CF0E550E5CF46 +:10096000E0FFE5CFD8FF100004D8A2EC0CF063D86C +:10097000FCD70F0EC11202D86CEF0CF067EC0CF034 +:10098000E652DDEC0BF00001FC6F070EFC5D10E1A0 +:10099000E66A74EC1CF0E552DF6E000EDF805AEC64 +:1009A0000CF0E66AB0EC1EF0E552DF705AEC0CF089 :1009B00093809382948C948ED08EF28EF28C770EEC -:1009C000C86E3F0E8A1693160101136B146B156BDC -:1009D000166B010E176FDEEC11F0E30E9516929276 -:1009E0009492A082FD0EE66E04EC1DF0E552000E1E -:1009F000E66EE66AA3EC1DF0E552E5528394839619 -:100A0000839880928292E66A11EC17F0E552C8EC66 -:100A100019F0E552E552E7CFD9FF1200D9CFE6FF32 -:100A2000E1CFD9FF170EE126160EDB6A010117513F -:100A300002E00DEC0BF0200E0001605D03E36D5051 -:100A4000020B02E003EF0BF0160EDB5036E011EC68 -:100A500018F0000932E001011551161102E1000EF3 -:100A600008D015C1E9FF16C1EAFFEF50800B01E085 -:100A7000010E000922E10501406B01011851182BFC -:100A80000501416F05010C0E426F0501436B400EDD -:100A9000E66E400EE66E050EE66E010EE66E010E87 -:100AA000E66E89EC10F0006E050EE15E0050F3CFAB -:100AB00015F1F4CF16F1160EDB6A0101155116116E -:100AC00002E1000E08D015C1E9FF16C1EAFFEF50A0 -:100AD000800B01E0010E000947E10001EB51EA6AD9 -:100AE000CB0FE96E000EEA22EF5000083DE205014F -:100AF000406B01011851182B0501416F0501040ECF -:100B0000426F0001EB51EA6ACB0FE96E000EEA2258 -:100B1000EFCF43F5400EE66E400EE66E050EE66E34 -:100B2000010EE66E010EE66E89EC10F0006E050E09 -:100B3000E15E0050F3CF15F1F4CF16F10001EB5157 -:100B4000EA6ACB0FE96E000EEA22EF6A0001EB5170 -:100B5000000803E20001EB0707D00001EA5100089A -:100B600003E200011F0EEB6F01011351141102E1AA -:100B7000000E08D013C1E9FF14C1EAFFEF50800B4B -:100B800001E0010E000902E003EF0BF00501025144 -:100B9000070A02E169EF0AF0020A02E13BEF0AF0FC -:100BA0000E0A02E1E2EF09F0020A01E10FD20F0A98 -:100BB00001E164D1040A1AE0030A07E0010A02E035 -:100BC000C2EF0AF0FF0003EF0BF0E66A40EC1CF006 -:100BD000E552DF6E000EDB80DFCFE6FFE66A20EC39 -:100BE0001CF0E552E552FF0003EF0BF00101155137 -:100BF000161102E1000E08D015C1E9FF16C1EAFF87 -:100C0000EF50800B01E0010E000901E036D100C574 -:100C100040F50501416B0501030E426F0501436B71 -:100C2000050108510A0A01E17ED00E0A71E0070AA7 -:100C300064E0010A20E0030A06E0010A01E0F3D0C3 -:100C4000FCC048F5F3D00501486B210E006E3B0E49 -:100C5000016E026A00C0E6FF01C0E6FF02C0E6FFC7 -:100C6000480EE66E050EE66E04EC1CF0036E050EF3 -:100C7000E15E0350DBD00501486B150E006E3B0EA4 -:100C8000016E026A00C0E6FF01C0E6FF02C0E6FF97 -:100C9000480EE66E050EE66E04EC1CF0036E050EC3 -:100CA000E15E0350130E006E3B0E016E026A00C03F -:100CB000E6FF01C0E6FF02C0E6FF480EE66E050E45 -:100CC000E66E04EC1CF0036E050EE15E03500A0EA6 -:100CD000006E3B0E016E026A00C0E6FF01C0E6FF37 -:100CE00002C0E6FF480EE66E050EE66E04EC1CF050 -:100CF000036E050EE15E035099D092CF48F593CF75 -:100D000049F594CF4AF595CF4BF596CF4CF58ED05B -:100D100080CF48F581CF49F582CF4AF583CF4BF597 -:100D200084CF4CF583D0800EE66E080EE66E2EEC76 -:100D30001EF0E552E552C580C3EC1EF0C00EE66E13 -:100D400067EC1DF0E552E66A67EC1DF0E552C582DE -:100D5000C3EC1EF0C10EE66E67EC1DF0E552010E0D -:100D6000DB6A020EDB6A010EDBCF00F0020EDBCF86 -:100D700001F0040E005C000E01584FE2010EF36E0C -:100D8000150EF3CFDBFFC586130EDB6A140EDB6A8C -:100D9000130EDBCF00F0140EDBCF01F0E80E005C89 -:100DA000030E015817E2C7A00FD0010EDBCFE9FFF9 -:100DB000020EDBCFEAFF480EE926050EEA22C9CF74 -:100DC000EFFF150EDB6A06D0130EDB2A140E01E3CB -:100DD000DB2ADED7150EDB5008E00501080E436F55 -:100DE000C58AC588C3EC1EF018D0010EDBCF00F019 -:100DF000020EDBCF01F0030E005C000E015803E28F -:100E0000C59AC58802D0C58AC588C3EC1EF0010EFC -:100E1000DB2A020E01E3DB2AA6D7C584C3EC1EF051 -:100E2000D1EC1EF003D00501020E436F400EE66EBA -:100E3000400EE66E050EE66E010EE66E010EE66EE3 -:100E400089EC10F0006E050EE15E0050F3CF15F155 -:100E5000F4CF16F1400EE66E000EE66E050EE66E5D -:100E6000E66A010EE66E89EC10F0006E050EE15E9A -:100E70000050F3CF13F1F4CF14F1C5D3050108519D -:100E8000050A54E0010A49E0070A37E0010A25E0B3 -:100E9000030A13E0010A01E080D005010951921212 -:100EA00005010A51931205010B51941205010C51D1 -:100EB000951205010D51961275D00501091D921666 -:100EC00005010A1D931605010B1D941605010C1D45 -:100ED000951605010D1D961665D00501091D89168B -:100EE00005010A1D8A1605010B1D8B1605010C1D37 -:100EF0008C1605010D1D8D1655D00501095189125D -:100F000005010A518A1205010B518B1205010C5182 -:100F10008C1205010D518D1245D0050109510101B9 -:100F20000F1B05010A5101010F133CD0050109A156 -:100F300007D00AC5E6FFE66A44EC19F0E552E5522F -:100F4000050109A308D00BC5E6FF010EE66E44ECCF -:100F500019F0E552E552050109A508D00CC5E6FFD8 -:100F6000020EE66E44EC19F0E552E552050109A7C0 -:100F700008D00DC5E6FF030EE66E44EC19F0E5520D -:100F8000E552050109A908D00EC5E6FF040EE66E7C -:100F900044EC19F0E552E55205D0030EE66E49EC3B -:100FA0001EF0E552400EE66E000EE66E050EE66E91 -:100FB000E66A010EE66E89EC10F0006E050EE15E49 -:100FC0000050F3CF13F1F4CF14F11DD301011551EB -:100FD000161102E1000E08D015C1E9FF16C1EAFFA3 -:100FE000EF50800B01E0010E000901E0EAD100C5DD -:100FF00040F50501416B0501030E426F0501436B8E -:1010000005010851100A01E1ACD1190A01E183D1AF -:10101000010A01E1E3D00F0A01E1C5D0010A01E1B3 -:10102000AAD0030A01E18FD0010A6AE0070A42E070 -:10103000010A11E0030A01E09AD105010A51E66EA6 -:10104000E66A09C5E6FFECEC12F0E552E552E5521E -:101050000501486F8FD105010B051BE105010C51FE -:10106000E66EE66A0AC5E6FF09C5E6FFA9EC13F0DD -:10107000E552E552E552E5520F0EF3CFDBFF100EBD -:10108000F4CFDBFF100EDBCF48F50F0EDBCF49F5B9 -:1010900010D005010C51E66EE66A0AC5E6FF09C5E7 -:1010A000E6FF46EC13F0E552E552E552E552050144 -:1010B000486F60D105010B0517E1100E0CC5DBFF71 -:1010C0000F0E0DC5DBFF0F0EDBCFE6FF100EDBCFE3 -:1010D000E6FF0AC5E6FF09C5E6FF3FEC13F0E5525F -:1010E000E552E552E5520BD00CC5E6FF0AC5E6FF16 -:1010F00009C5E6FF3BEC13F0E552E552E5523AD163 -:10110000100E0AC5DBFF0F0E0BC5DBFF120E0CC560 -:10111000DBFF110E0DC5DBFF0EC5E6FF110EDBCFA9 -:10112000E6FF120EDBCFE6FF0F0EDBCFE6FF100E61 -:10113000DBCFE6FF09C5E6FF2AEC14F0006E060ED1 -:10114000E15E005017D105010A51E66EE66A09C555 -:10115000E6FF4DEC14F0E552E552E5520F0EF3CFE9 -:10116000DBFF100EF4CFDBFF100EDBCF48F50F0EC8 -:10117000DBCF49F5FFD005010A51E66EE66A09C5E5 -:10118000E6FF50EC14F0E552E552E5520F0EF3CFB6 -:10119000DBFF100EF4CFDBFF100EDBCF48F50F0E98 -:1011A000DBCF49F5E7D005010A51E66EE66A280E65 -:1011B000E66E09C5E6FFA9EC13F0E552E552E552EB -:1011C000E5520F0EF3CFDBFF100EF4CFDBFF100E56 -:1011D000DBCF48F50F0EDBCF49F5CCD005010A5126 -:1011E000E66EE66A09C5E6FF4DEC14F0E552E552FD -:1011F000E5520F0EF3CFDBFF100EF4CFDBFF100E26 -:10120000DBCF48F50F0EDBCF49F505010A51E66E3D -:10121000E66A09C5E6FF50EC14F0E552E552E552E6 -:101220000F0EF3CFDBFF100EF4CFDBFF100EDBCF82 -:101230004AF50F0EDBCF4BF505010A51E66EE66A63 -:10124000280EE66E09C5E6FFA9EC13F0E552E5525B -:10125000E552E5520F0EF3CFDBFF100EF4CFDBFFAC -:10126000100EDBCF4CF50F0EDBCF4DF505010A510B -:10127000E66EE66A2A0EE66E09C5E6FF46EC13F056 -:10128000E552E552E552E55205014E6F05010A515E -:10129000E66EE66A2B0EE66E09C5E6FF46EC13F035 -:1012A000E552E552E552E55205014F6F05010A513D -:1012B000E66EE66A060EE66E09C5E6FFA9EC13F0D7 -:1012C000E552E552E552E5520F0EF3CFDBFF100E6B -:1012D000F4CFDBFF100EDBCF50F50F0EDBCF51F557 -:1012E00005010A51E66EE66A080EE66E09C5E6FFDC -:1012F000A9EC13F0E552E552E552E5520F0EF3CF9B -:10130000DBFF100EF4CFDBFF100EDBCF52F50F0E1C -:10131000DBCF53F52FD005010B0517E1100E0CC5DF -:10132000DBFF0F0E0DC5DBFF0F0EDBCFE6FF100E50 -:10133000DBCFE6FF0AC5E6FF09C5E6FF1DEC14F0AA -:10134000E552E552E552E5520BD00CC5E6FF0AC561 -:10135000E6FF09C5E6FF19EC14F0E552E552E55247 -:1013600009D009C5E6FF25EC14F0E55203D00501CC -:10137000010E436F400EE66E400EE66E050EE66E01 -:10138000010EE66E010EE66E89EC10F0006E050EA1 -:10139000E15E0050F3CF15F1F4CF16F1400EE66E8A -:1013A000000EE66E050EE66EE66A010EE66E89EC4C -:1013B00010F0006E050EE15E0050F3CF13F1F4CF94 -:1013C00014F121D105010851030A11E0010A09E0D5 -:1013D000030A01E037D009C5E6FF81EC17F0E552BA -:1013E00036D009C5E6FF8FEC17F0E55230D00E0E6F -:1013F0000CC5DBFF0D0E0DC5DBFF0C0E0EC5DBFFB4 -:101400000B0E0FC5DBFFD9500B0FE96EDACFEAFFE9 -:10141000EECFE6FFEECFE6FFEECFE6FFEFCFE6FF43 -:101420000BC5E6FF0AC5E6FF09C5E6FF9DEC17F010 -:10143000006E070EE15E0050010EF36E160EF3CF44 -:10144000DBFF05D0010EE66E49EC1EF0E552400EC2 -:10145000E66E000EE66E050EE66EE66A010EE66EBC -:1014600089EC10F0006E050EE15E0050F3CF13F131 -:10147000F4CF14F1C8D0800EE66E080EE66E2EECA6 -:101480001EF0E552E552C580C3EC1EF0E66A67EC3B -:101490001DF0E552080EE66E050EE66EAFEC1BF091 -:1014A000E552E552C584D1EC1EF0400EE66E000E0A -:1014B000E66E050EE66EE66A010EE66E89EC10F049 -:1014C000006E050EE15E0050F3CF13F1F4CF14F17E -:1014D0009AD04F0EAB16AC9ACF0E9D16020EE66E4A -:1014E000E66A7C0EE66E6AEC1BF0E552E552E552C8 -:1014F000040EE66EE66ADAEC12F0E552E552100EE2 -:10150000E66E010EE66EDAEC12F0E552E552020EDE -:10151000E66E030EE66E010EE66E55EC12F0E55235 -:10152000E552E552040EE66EE66ADAEC12F0E55298 -:10153000E552100EE66E010EE66EDAEC12F0E552A0 -:10154000E552020EE66E030EE66E010EE66E55ECF7 -:1015500012F0E552E552E552DEEC11F0400EE66E77 -:10156000000EE66E050EE66EE66A010EE66E89EC8A -:1015700010F0006E050EE15E0050F3CF13F1F4CFD2 -:1015800014F141D001011551161102E1000E08D0ED -:1015900015C1E9FF16C1EAFFEF50800B01E0010E13 -:1015A000000931E100C540F50501416B0501030E5D -:1015B000426F0501010E436F400EE66E400EE66E6F -:1015C000050EE66E010EE66E010EE66E89EC10F079 -:1015D000006E050EE15E0050F3CF15F1F4CF16F169 -:1015E000400EE66E000EE66E050EE66EE66A010E31 -:1015F000E66E89EC10F0006E050EE15E0050F3CF50 -:1016000013F1F4CF14F1170EE15C02E2E16AE55246 -:10161000E16EE552E7CFD9FF1200010119511A110D -:1016200004E1100E196F270E1A6F1907000E1A5BCE -:101630006DA207D019511A112EE18A7C8ABC13D0F1 -:1016400027D00001605102E18A9C22D0600502E1AE -:101650008A8C09D0020E605D02E18A8C19D0040EDA -:10166000605D03E18A9C8A8E1200100E605D06E1C7 -:10167000010119511A110FE18A7C0AD0200E605D18 -:101680000AE1010119511A1106E18A7C8AAC02D0E3 -:101690008A9E12008A8E120012001200120012009E -:1016A0005CEF1AF012001E0EE66E010EE66E57ECAD -:1016B00010F0E552E552400EE66E000EE66E050EA5 -:1016C000E66EE66A010EE66E89EC10F0006E050E1D -:1016D000E15E0050F3CF13F1F4CF14F112006D84EA -:1016E0000001080EFD6F070EFE6FFD07000EFE5B8A -:1016F000FD51FE11FAE16D941200D9CFE6FFE1CF62 -:10170000D9FFFD0EDBCF2AF0FE0EDBCF2BF0010E52 -:101710002A1801E12B5033E0E8682A1802E1E86852 -:101720002B182BE0030E2A1801E12B5024E0040EA5 -:101730002A1801E12B501DE0020E2A1801E12B505E -:1017400016E0170E2A1801E12B500FE0160E2A188A -:1017500001E12B5008E0150E2A1801E12B5001E0A1 -:1017600010D0A1DF0FD09EDF0DD09ADF0BD096DF17 -:1017700009D092DF07D091DF05D091DF03D00000C0 -:1017800001D000D0010E00D0E552E7CFD9FF120002 -:101790006AD8E652D0B202D0010E15D0D0B802D02D -:1017A000020E11D0D0B002D0030E0DD0D0B602D0B0 -:1017B000040E09D0FCAE02D0050E05D0FCAC02D060 -:1017C000060E01D0070EDF6ED088D086D084D0827E -:1017D000D080FC9EFC9CDF50E552E552E7CFD9FF5C -:1017E0001200DACFE4FFE2CFDAFFE9CFE4FFEACF7D -:1017F000E4FFF6CFE4FFF7CFE4FFF5CFE4FFF3CF4C -:10180000E4FFF4CFE4FFFACFE4FF1200E5CFFAFFE4 -:10181000E5CFF4FFE5CFF3FFE5CFF5FFE5CFF7FF29 -:10182000E5CFF6FFE5CFEAFFE5CFE9FFE5CFDAFF49 -:101830001200E65218D8020EE126F350DF6E010EB8 -:10184000F4CFDBFF1200DF50F36E010EDB50F46EBD -:10185000020EE15C1200DFCFE6FFE66A20EC1CF02E -:10186000E552E5521200D9CFE6FFE1CFD9FF1200D1 -:1018700030EC11F06A6A686A63EC11F06D8C6E6A84 -:1018800013EC11F06D9CDF6A44EC11F010E2DF50B4 -:10189000040DF3CFE9FFF4CFEAFF000EE926040EB2 -:1018A000EA22EE6AEE6AEE6AEE6ADF2AEDD7160EDB -:1018B000706E68A604D0030ED9EC10F0FAD70001C0 -:1018C000736B786B796B7A6B6D98080E6B6F040E87 -:1018D0006C6F616B606BE552EEEF10F030EC11F065 -:1018E000000160510BE16D6A696A63EC11F06DB63D -:1018F00002D06D86FCD70001010E606F600508E123 -:101900006DBA06D0686A696A69806988020E606F7C -:101910006850040B07E06950040B04E0020ED9EC98 -:1019200010F089D86DB247D06850010B14E06950AF -:10193000010B11E09DDF0001040E606F0401200E19 -:10194000026F040E036F080E016F006B8C0E001304 -:10195000E66AA2EC11F06850100B07E06950100B1A -:1019600004E060D8040ED9EC10F06850400B0BE096 -:101970006950400B08E06AEC11F0020EE1EC10F047 -:10198000060ED9EC10F06850200B04E06950200BD3 -:1019900001E035D86850020B0AE06950020B07E0FD -:1019A0006AEC11F0E668E668C2EC11F06A6A040EAF -:1019B0000001605D02E2A19A1FD069A61CD0DF6A17 -:1019C000040EDF5C18E268A616D06CCF80F0030E20 -:1019D000D9EC10F0780E0001801502E138D809D05A -:1019E000000EE66EE66A800EE66E000EE66E010EF2 -:1019F000E8DBDF2AE5D7A19AE552EEEF10F070A000 -:101A00000ED0FCEC10F0EF50800808E1D5DBEF5071 -:101A1000840804E1FCEC10F08C0EEF6E7090050E63 -:101A2000D9EF10F06984040EC4DB6D821CEC11F058 -:101A3000040EE1EF10F01CEC11F0030EC2DB6D920E -:101A4000699468A403D0020EB4DBFBD7120030EC1B -:101A500011F0FD0E000180153DE17E0E8015E8407D -:101A60007F0B040DF3CF63F0F4CF64F0000E632717 -:101A7000040E642363C065F064C066F06575BCDB6A -:101A8000EF503C0BE842E8420D0822E1B5DB99EC4F -:101A900011F0EECF00F0EFCF01F0280E001816E1A4 -:101AA000040E011813E1D3EC11F0DF6AEDDB0EE256 -:101AB000DF504CEC11F0DF50EA6A200FE96E040EA3 -:101AC000EA22E552E750EF6EDF2AF0D70AD807D0B6 -:101AD0001AD805D0FD0E8015040801E122D8E55280 -:101AE0007DD36ADBEF50800B02E066DBEF6A00011A -:101AF0006F6B706B746B756B736B64D89DDB170EBB -:101B000060DB17EF0FF0020E0001705D02E1A4EF41 -:101B10000FF034D80001815102E19EEF11F0816B8A -:101B200012009EDB49DBEF50400B01E0010EDF6E3F -:101B300000016B75080E605D09E122C46EFF6E50F6 -:101B4000000802E2100E01D0040E606F700513E170 -:101B5000D7EC11F0A6D9020E00016F5D03E12CDB7A -:101B6000840E07D0DF5003E127DBC80E02D024DB50 -:101B7000880EEF6E01D002D8E55230D32BDB000186 -:101B8000706B1ADBEF6A040E6B19006E6CC001F00B -:101B9000DE6E6CC0DDFF19DBEF6A78AF0CD07B51D5 -:101BA0007C1107E005D07CC0FAFF00017B51F96E83 -:101BB000FADF0001789F020EE15C02E2E16AE55281 -:101BC000E16E0CD304012051600BE842E842E84288 -:101BD000E842E842000901E0120021510C0A45E008 -:101BE0000B0A3FE00C0A31E0010A22E00B0A1EE07A -:101BF000020A1CE0030A18E0080A10E0010A0CE0DF -:101C00000F0A08E0030A01E012000001738F080EBA -:101C1000606F120097EF0EF000EF10F00001610E00 -:101C2000716F000E726F0CD0D8EF0EF036EF0EF021 -:101C300024510001716F726B620E7127000E7223C6 -:101C40007381010E746F738F12000001738F040192 -:101C50002451EA6A620FE96E000EEA2222C4EFFF05 -:101C60001200EADA160EE1EF10F012007EDB040E2D -:101C7000E1260401220510E120511F0B00090CE1AF -:101C80000001738F030E0401215D04E10001010EC8 -:101C90007F6F02D000017F6B0401225141E120518E -:101CA0001F0B02083DE124510F0B000939E0000130 -:101CB000738F040124BF05D0A4DA670EE926000E55 -:101CC00004D09FDA6B0EE926000ED2DA030E215DF6 -:101CD00003E17BDA840E23D024510F0B016A700FCD -:101CE000006E0F0E0122020E00C0DBFF030E01C0CA -:101CF000DBFF020EDBCFE9FF030EDBCFEAFFEE9046 -:101D0000ED5224AF06D061DAEF6ADF745EDA400E7E -:101D100006D05BDA880EEF6EDF7457DAC80EEF6E0E -:101D2000040EE15C02E2E16AE552E16E57D2800EF8 -:101D30000401205D3CE10001C00E736F04012351DA -:101D4000030A1EE0010A09E0030A2FE10001860EE2 -:101D5000716F350E726F120E22D0C3DA2E0EF62678 -:101D6000360EA2DA020E0001F76A7125F66E725184 -:101D7000F7220900F5CF74F00A00F5CF75F01200D4 -:101D8000030E225D0FE2ADDA300EF626360E8CDA47 -:101D900071C0F6FF72C0F7FF0800F5500001746FC4 -:101DA000756B12000001736B12000001736B12005F -:101DB00011DA0401286B296B20511F0B020A11E074 -:101DC000030A0CE0010A22E10001738F040128815B -:101DD00000017F051BE10401288318D00001738FE7 -:101DE00015D00001738F040124BF05D00ADA670EF5 -:101DF000E926000E04D005DA6B0EE926000E38DA6B -:101E0000E4D9EF50040B02E0010E286F000173AF1C -:101E100007D0280E716F040E726F7381020E746FFB -:101E2000020EE15C02E2E16AE552E16ED7D16D9803 -:101E3000000173BF08D078AF02D061DA2AD07EDA11 -:101E4000BBD9840E27D078BF2BD0040120AF24D07B -:101E5000000174510401265D0001755104012759E8 -:101E600004E226C474F027C475F01BD80001010EEB -:101E7000706FA1DA800EEF6E816BBED9EE52080E44 -:101E8000EF6E91DAB9D9840EEF6E010E816F8FDAA1 -:101E900093D9C80EEF6E1200000131DAC80EEF6E52 -:101EA000120098D90001080E745D000E75590DE2FC -:101EB00074C0DEFF75C0DDFF6F5102E1010E03D07B -:101EC0006F0506E1020E6F6F03D0080EDE6EDD6A4D -:101ED00073D9EF9271D9EF906FD9010EDB50EF12E9 -:101EE0006BD9EE52DFCFEFFF000EDB50745F010EB7 -:101EF000DB50755B280E7D6F040E7E6F73B10FD0C3 -:101F0000F7D91BE071C0F6FF72C0F7FF712B000E0E -:101F100072230800F55096D9F3E2DB06F1D7E8D931 -:101F20000CE071C0E9FF72C0EAFF712B000E722352 -:101F3000EF5088D9F4E2DB06F2D7020EE15C02E250 -:101F4000E16AE552E16E4AD145D956D9EE52EFCF5A -:101F5000DFFFDFCF00F000500001795D000E7A59FD -:101F600003E279C0DFFF09D0DF50006E016AE8505C -:101F7000795D796F01507A597A6F010EDB6ADF5013 -:101F8000F36E010EDBCFF4FFF350F45C10E2010EB0 -:101F9000DB5082D976C0E9FF77C0EAFF762B000ECE -:101FA0007723E552E750EF6E010EDB2AE8D7000EEB -:101FB000D8807955000E7A550DE2F4D854D91CD941 -:101FC000EF50400B03E1EAD9C80E02D0E7D9880EE2 -:101FD000EF6E0FD0F0D9840EEF6E7B517C1107E0CD -:101FE00005D07CC0FAFF00017B51F96EFADF0001D9 -:101FF000789F020EE15C02E2E16AE552E16EEED00A -:102000000001738F10D9010EE66EE66AE66A620E71 -:10201000E66E000EAFD922C461F00401225104E142 -:102020000001100E606F12000001200E606F04D9D5 -:10203000150EE1EF10F0CED8000EDE6E040EDD6E50 -:10204000E8D8040DF350006E016A020E0F0B05E094 -:10205000D89001320032E806FBE1D8900036013614 -:10206000D89000360136D9CFE9FFDACFEAFF005029 -:10207000EE260150ED22A9D8EF9EFD0EDB5002E1C5 -:102080006AD901D06DD9EA22DECFEEFFDDCFEDFFB8 -:102090009CD8EF9C9AD8040EE926000EEA22EF8C19 -:1020A000020EE15C02E2E16AE552E16E97D092D85D -:1020B000FE0EDB50016A700F006E0F0EDFD885D860 -:1020C000FD0EDBCFEFFFDBA402D0E66AF5D8FD0EF4 -:1020D000DBA203D0010EE66EEFD8020EE15C02E255 -:1020E000E16AE552E16E7AD075D8FE0EDB5005E16B -:1020F00025D962D8840EEF6E05D08BD80CD989D83B -:10210000010F09D9020EE15C02E2E16AE552E16EDB -:1021100065D060D8FD0EDB5002E022D901D01BD97A -:10212000A7D853D806D9FB0EDBCFEEFFFC0EDBCFD2 -:10213000EDFF4BD8EE52FA0EDBCFEFFF400E45D845 -:10214000E850EF16880E41D8E850EF12FD0EDB5034 -:1021500002E006D901D0FFD8EA22EF74DECF00F00A -:10216000DDCF01F000C0F3FF01C0F4FF020EE15C1F -:1021700002E2E16AE552E16E31D0F7D8010EF36E6A -:10218000FC0EDB5004E0D890F336E806FCE1F31CCB -:10219000006EFD0EDBCFE9FFFE0EDBCFEAFF005045 -:1021A000EF161CD0FBD8EE52080EEF6EF7D899EF61 -:1021B00011F0E66EA2EF11F06BC0E9FF6CC0EAFF10 -:1021C0001200E66EE66AC2EF11F0DECFE9FFDDCF66 -:1021D000EAFF1200CAD8020EE1261200E552E7CF4C -:1021E000D9FF1200D6D8CEEF11F0FE0EEA6ADB342A -:1021F000FE0BEA36E96E120063C0E9FF64C0EAFF35 -:10220000120024510F0BE96EEA6AD890E936EA36DB -:102210001200FD0EDB50E824026EFE0EDB50040DB2 -:10222000F35002241200000EE66EE66AE66A710EB2 -:10223000E66E0F0EBAEF11F0000EE66EE66AE66E7D -:10224000E66A1200E66E7DC0E9FF7EC0EAFF7D2BE4 -:10225000000E7E23E552E750EF6EDF06010E1200FE -:1022600084D8E6521200280EEE6E040EED6E1200B7 -:10227000EA22EECFDEFFEDCFDDFF1200012200C02B -:10228000DEFF01C0DDFF1200DF50006E016A080EA4 -:10229000005C000E01581200EA6A280FE96E040E75 -:1022A000EA22EF50E66E1200F7220900F5CF71F036 -:1022B0000A00F5CF72F01200FE0EDBCFE6FFBBDEA8 -:1022C000E552E5521200160E6F6E9F0E6B6E7B0E7E -:1022D000696E1200010EE66EE66A000EE66EE66AB0 -:1022E00012002251F66EF76AD890F636F7361200D1 -:1022F000D9CFE9FFDACFEAFFEE50ED101200020E5F -:10230000706F5ADFEE52EF6A57DFC80EEF6E4ADF8A -:10231000AADFCEEF11F0040DF3CF00F0F4CF01F0FF -:10232000000E0026040EAADF840E4FDFE850EF12E5 -:102330001200020EE926000EEA2212003CD88C0E92 -:10234000EF6E1200680EE66E0F0EE66E16DFE552B7 -:10235000E552E552120049DF670EE926000E120031 -:1023600044DF6B0EE926000E1200D9CFE6FFE1CF65 -:10237000D9FF1200E66EEAEC1BF0006E050EE15E7E -:10238000005012007DEC0BF0006E060EE15E005076 -:102390001200200EEE6E040EED6E120065C0E9FF15 -:1023A00066C0EAFF120028DFC4DFC9EF11F004DFC6 -:0C23B000C0DF33EF11F0F6DEF2EF10F0AA -:0423BC00959A838AE1 -:1023C000190EE66EE66A7C0EE66E6AEC1BF0E552CC -:1023D000E552E5521200B0DA030EE126ACA2FED7B8 -:1023E00048EC1DF0DF6E0001A85104E1865102E1C6 -:1023F000010EA96FA90552E1A85189DADFCFEFFFDD -:10240000020EA85D08E2FF0EDF5C05E0050E8CDA27 -:102410000001A96BA86B030EA85D04E1030EDF2485 -:102420000001CA6F030E0001A85D37E30001CA5125 -:102430000001A85D32E18B5102E0060E75DA010E53 -:10244000DB6A020EDB6E0001CA51F36E020EDBCFB7 -:10245000F4FFF350F45C0EE2020EDB5058DA010E8A -:10246000DBCFE7FFEF50E726010EE7CFDBFF020EE1 -:10247000DB2AE9D7CA514BDAEFCF00F0010EDB1CA3 -:10248000005C05E0070E50DA0001866B03D0000106 -:10249000010E866FA96BA86B01D0A82B030EE15C1F -:1024A00002E2E16AE552E16E16D246DA220EE12638 -:1024B000010EDB68020EDB68FE0EDB50E76E030EDA -:1024C000E7CFDBFFFC0EDB50020FE76E040EE7CF19 -:1024D000DBFFFD0EDB50E76E050EE7CFDBFFDF6AAB -:1024E000FC0EDB50DF5C13E2DF50EA6AAA0FE96EF4 -:1024F000000EEA22EF50E66ED950010F006E050E75 -:10250000DF24F7D9E552E750EF6EDF2AE9D7210E35 -:10251000DB6A020EDF6EFC0EDB50050FDF5C0FE2A4 -:10252000D950010F006EDF50E4D9210EDBCFE7FF59 -:10253000EF50E726210EE7CFDBFFDF2AECD7210E95 -:10254000DB1CE66ED950010F006EFC0EDB50050F50 -:10255000D0D9E552E750EF6E839ADF6AFC0EDB506C -:10256000060FDF5C11E2ACA2FED7D950010F006E5E -:10257000DACF01F0DF500F01BCD9EF50E66E93ECDB -:102580001EF0E552DF2AEAD7ACA2FED7838A00010B -:10259000866B220EE15C02E2E16AE552E16E9BD1BC -:1025A0000001865112000001A7511200000186515E -:1025B000FDE01200C1D9FE0EDB50EA6AAA0FE96EF7 -:1025C000000EEA22FD0EDBCFEFFF85D10001865120 -:1025D00002E08B511200000CD9CFE6FFE1CFD9FF0A -:1025E000020EE126E66A010EE66EFE0EDBCFE6FF86 -:1025F0005CDFE552E552E552DE6ADD6ADECF00F0CF -:10260000DDCF01F0FC0EDBCF02F0FD0EDBCF03F0DF -:102610000250005C0350015818E20001865104E0AA -:102620000001A76B010E16D00000000000000000A2 -:10263000000000000000000000000000000000009A -:10264000DF2A010E01E3DB2AD9D70001010EA76FB3 -:10265000000E00D0006E020EE15C02E2E16AE5527B -:10266000E16E0050E552E7CFD9FF120065D9E66A66 -:10267000060E19D930D133D9030E15D92CD11CD956 -:1026800070D902E2E16AE552E16E25D1D9CFE6FFC9 -:10269000E1CFD9FF020EE126FD0EDBCFE6FFE66AB1 -:1026A00089DFE552E552010EE66E010EE66E82DF2D -:1026B000E552E552020EE66E020EE66EFE0EDBCF2E -:1026C000E6FFF3DEE552E552E552DE6ADD6ADECF73 -:1026D00000F0DDCF01F00A0E2A6E2B6AFB0EDBCF75 -:1026E0002FF0FC0EDBCF30F03EEC16F028C002F0ED -:1026F00029C003F00250005C0350015819E20001A8 -:10270000865105E00001A76B00018C5116D0000036 -:1027100000000000000000000000000000000000B9 -:10272000000000000000DF2A010E01E3DB2ACFD702 -:102730000001010EA76F000E00D0006E020EE15CDA -:1027400002E2E16AE552E16E0050E552E7CFD9FFBF -:102750001200D9CFE6FFE1CFD9FF040EE126FD0E2E -:10276000DBCFE6FFE66A26DFE552E552020EE66EB3 -:10277000010EE66E1FDFE552E552020EE66E020E16 -:10278000E66EFE0EDBCFE6FF90DEE552E552E55247 -:10279000DE6ADD6ADECF00F0DDCF01F00A0E2A6EC0 -:1027A0002B6AFB0EDBCF2FF0FC0EDBCF30F03EECC4 -:1027B00016F028C002F029C003F00250005C03505C -:1027C000015827E20001865113E00001A76B030EB8 -:1027D0008DC0DBFF020E8CC0DBFF020EDBCF00F0F2 -:1027E000030EDBCF01F000C0F3FF01C0F4FF17D0F0 -:1027F00000000000000000000000000000000000D9 -:102800000000000000000000DF2A010E01E3DB2AC7 -:10281000C1D70001010EA76FF36AF46A00D0040E5D -:10282000E15C02E2E16AE552E16EE552E7CFD9FFF1 -:10283000120055D8040E37D84ED03ED8040E91D889 -:1028400002E2E16AE552E16E46D076D8E66A050E0C -:102850002AD841D071D8020EE1261E0EE66EE66A35 -:102860008CD8FC0E5AD881D8FA0E57D8030E61D8EE -:10287000010EDBCFE6FF040E5CD8F90EDB5004E15D -:10288000050EE66E030E03D0050EE66E040E69D843 -:1028900002E2E16AE552E16E1ED031D8240E51D039 -:1028A0002ED8260E4ED0E66EFE0EDBCFE6FFFDDD07 -:1028B000E552E552E55212003FD8020EE126FB0E2A -:1028C000DBCFDEFFDBCFDDFF46D8DFCFE6FF4DD825 -:1028D000030EE66E1200E552E7CFD9FF12002CD8A6 -:1028E0003AD8FC0EDBCFE6FF010E23D8020EE66ECF -:1028F00012000024E96E000EDA20EA6E12001CD8E5 -:10290000FC0EDBCFE6FFFD0EDBCFE6FF1200EA6A2E -:10291000870FE96E000EEA221200DBCFDEFFDBCF6D -:10292000DDFFDFCFE6FF1200E66E49EC1EF0E55258 -:102930001200E66EBDEF14F0D9CFE6FFE1CFD9FF6C -:102940001200E66EFE0EDBCFE6FF03DFE552E55236 -:10295000E552E552C0D7FD0EDBCFE6FFE66ABDEFDC -:1029600014F0A1DF020EE15C1200010EE2DF010EA5 -:10297000DBCFE6FF020E99EF14F01CDEE552E552C4 -:02298000120043 -:0E298200239E05D0239E2BAE02D02B6C238EFD -:102990002BC025F0246A356A346A860E266E276AB3 -:1029A000A7EF16F0239E08D0239E2BAE05D02A6CED -:1029B0002B1EE86A2B22238E2BC025F02AC024F080 -:1029C000356A346A8E0E266E276AA7EF16F0317EBE -:1029D000236AE3EC16F0FBEC16F023B68BEF16F04F -:1029E00023A20AD023AA03D023BE8BEF16F023A480 -:1029F00097EF16F094EF16F023AA05D023AC97EFCB -:102A000016F094EF16F023A00AD023A808D023BE16 -:102A100004D023A402D0A0EF16F0A4EF16F0346A7D -:102A2000276A31502C5C336E10E329C035F02AC080 -:102A300024F02BC025F02CC032F02EC029F02FC07E -:102A40002AF030C02BF0233A09D02EC035F02FC029 -:102A500024F030C025F031C032F0336C239E23BC0B -:102A6000238E32C026F023B0D3EF16F01A0E336057 -:102A7000D3EF16F0266A2C6A23A408D0296C2A1EEC -:102A80002B1E2C1EE86A2A222B222C2223AC08D0D3 -:102A9000356C241E251E261EE86A242225222622A5 -:102AA000286A335207E02C342B322A32293228325A -:102AB000332EF9D7295035262A5024222B5025228F -:102AC0002C50262228C034F0239E26AE0BD0346C26 -:102AD000351E241E251E261EE86A352224222522A4 -:102AE0002622238E26A006D0D880253224323532E5 -:102AF0003432322A32C026F0A7EF16F0236AE3EC14 -:102B000016F0FBEC16F023B68BEF16F023A205D0DF -:102B100023BA8BEF16F092EF16F023BA9EEF16F061 -:102B200023A005D023B88BEF16F09EEF16F023B844 -:102B300092EF16F0276A7F0E2C24266EE86A272271 -:102B40003150265EE86A275A1A0E326E2C6A346AB1 -:102B5000356A246A256A2E50295E2F502A5A305031 -:102B60002B5A000E2C5A09E72E5029262F502A22C4 -:102B700030502B22000E2C2201D0348AD8902936D6 -:102B80002A362B362C36D890343635362436253630 -:102B9000322EE1D72B502A102910D8A4348AA7EF5F -:102BA00016F0236AE3EC16F0FBEC16F023B68BEF7D -:102BB00016F023A205D023B88BEF16F092EF16F093 -:102BC00023AA05D023B08BEF16F092EF16F023B0B6 -:102BD00002D023A802D09EEF16F0276A31502C2491 -:102BE000266EE86A27227E0E265EE86A275A346A35 -:102BF000356A246A256A30502B02F4CF25F0F3CFD2 -:102C000024F02F502B02F3503526F4502422000ECE -:102C1000252230502A02F3503526F4502422000E8B -:102C200025222E502B02F3503426F4503522000E6C -:102C3000242225222F502A02F3503426F450352224 -:102C4000000E2422252230502902F3503426F4505D -:102C50003522000E242225222E502A02F45034263A -:102C6000000E3522242225222F502902F45034262A -:102C7000000E352224222522A7EF16F02AC034F0B8 -:102C80002A502F02F4CF29F0F3CF28F02B50300236 -:102C9000F4CF2BF0F3CF2AF02F02F3502926F45073 -:102CA0002A22E86A2B2234503002F3502926F450AD -:102CB0002A22E86A2B22000C236AE3EC16F023B6E2 -:102CC00066EF16F023A20ED023B405D07F0E2B6E34 -:102CD000FF0E2A6E1FD0800E2B6E2A6A1BD02B6A25 -:102CE0002A6A18D023B0FBD78F0E2C60EDD77E0E4A -:102CF0002C64F5D78E0E2C5C05E0D8902B322A324E -:102D00002C2AF8D723A406D02A6C2B1EE86A2B2283 -:102D10002BAEE5D712007F0E2C6EFF0E2B6E2A6EA7 -:102D2000296E12007F0E23BEFF0E2C6E02D07F0E86 -:102D30002C6E800E2B6E2A6A296AF3D723AE04D03C -:102D4000800E2C6E2B6AF7D72C6A2B6AF4D725508D -:102D5000241035103410F8E027BEF0D725BE0CD073 -:102D600026502710EBE0D8903436353624362536F9 -:102D70002606D8A02706F2D72750D4E12628D2E08D -:102D800034AE11D07F0E341402E135A00CD0352AB8 -:102D9000E86A2422252207E3D880253224323532FE -:102DA000262A2628BFE02650C9E035C029F024C0D5 -:102DB0002AF025342B6E26302C6E2B322C9E23BE0F -:102DC0002C8E91EF16F02B362C3602E32384237ED3 -:102DD00006E123802C6A2B6A2A6A296A12002C28B1 -:102DE00003E0D8802B321200D8902B3202E12382EC -:102DF0001200238612003036313602E3238C237E04 -:102E000006E12388316A306A2F6A2E6A120031285F -:102E100003E0D88030321200D8903032EAE1238AC1 -:022E200012009E -:0E2E2200D9CFE6FFE1CFD9FF9290C30E9316F1 -:102E30009494060EE66E13EC1EF0E552FE0EDB5087 -:102E4000000B0CE0AF0EE66EF7EC1DF0E552000E45 -:102E5000E66EE66ADBEC1DF0E55204D0820EE66E0B -:102E6000F7EC1DF0E552F194FE0EDBA00CD0C70E7E -:102E7000E66E27EC1DF0E552000EE66EE66ABFEC4A -:102E80001DF0E55204D0F50EE66E27EC1DF0E5527C -:102E90008194819A809081988294819659D146D963 -:102EA000D880000E0001F455000EF555000EF655C1 -:102EB000000EF7550CE2F407000EF55BF65BF75BCE -:102EC000F451F511F611F71102E1BD6A8294120076 -:102ED00036D9D880000E0001F855000EF955000EC5 -:102EE000FA55000EFB550CE2F807000EF95BFA5B91 -:102EF000FB5BF851F911FA11FB1102E1BA6A8196F4 -:102F000012000DD902E1818409D0FE0EDB0405E038 -:102F1000FE0EDB50020802E18184818A19D1FFD8BC -:102F200002E1819409D0FE0EDB0405E0FE0EDB50C9 -:102F3000020802E18194819A0BD1F1D804E0FE0EDF -:102F4000DB50020833E1F80EDBCFF4F0F90EDBCFF3 -:102F5000F5F0FA0EDBCFF6F0FB0EDBCFF7F0280E24 -:102F60002D6E2E6A2F6A306AF4C028F0F5C029F061 -:102F7000F6C02AF0F7C02BF0E0EC1CF028C0F4F00B -:102F800029C0F5F02AC0F6F02BC0F7F0CFD8FD0E1F -:102F9000DB50E8B08080E8A080904A0EE66E64ECDA -:102FA0001EF054D885EC1CF0E552E552FE0EDB0411 -:102FB00004E0FE0EDB50020833E1F80EDBCFF8F040 -:102FC000F90EDBCFF9F0FA0EDBCFFAF0FB0EDBCF18 -:102FD000FBF0280E2D6E2E6A2F6A306AF8C028F09A -:102FE000F9C029F0FAC02AF0FBC02BF0E0EC1CF08D -:102FF00028C0F8F029C0F9F02AC0FAF02BC0FBF085 -:103000009ED8FD0EDB50E8B08188E8A081984A0E7A -:10301000E66EB4EC1CF01AD856EC1CF0E552E55202 -:1030200097D08050010B03E08350400B06E08050A6 -:10303000010B0BE18350800B08E1BD6A8294000113 -:10304000F46BF56BF66BF76B010C000CE552FC0EA4 -:10305000DBCF16F016C02BF0C1EC14F029C012F033 -:103060002AC013F02BC014F02CC015F02E6A2F6A62 -:103070007F0E306E430E316E7EEC15F029C00EF0DF -:103080002AC00FF02BC010F02CC011F02E6A2F6A4E -:10309000200E306E3F0E316ED1EC15F029C00AF0D3 -:1030A0002AC00BF02BC00CF02CC00DF02E6A1B0EAA -:1030B0002F6E370E306E4C0E316ED1EC15F029C0EC -:1030C00006F02AC007F02BC008F02CC009F02E6AC9 -:1030D000400E2F6E1C0E306E460E316E7EEC15F0DB -:1030E0005CEC16F0D2EC14F029C002F02AC003F018 -:1030F0002BC004F02CC005F02E6A2F6A800E306EB3 -:10310000410E316E7EEC15F05CEC16F02AC000F03A -:103110002BC001F02AC0E6FF2BC0E6FF1200D9CF7A -:10312000E6FFE1CFD9FFFE0EDB501200A00EE66EE7 -:10313000150EE66EDBEC1DF0E552E5521200A00E16 -:10314000E66E150EE66EBFEC1DF0E552E55212007C -:08315000E552E7CFD9FF1200A0 -:08315800839483968398809212 -:103160008292050E0101105D0EE2010E10C1E7FF13 -:10317000E75204E0E846FE0BE706FCE101010F150B -:1031800002E1102BEED7050E105D60E21051040A2B -:1031900010E0070A0CE0010A08E0030A04E0010A53 -:1031A00009E1838407D0838605D0838803D0808299 -:1031B00001D082821051D9D8EFCF02F0036A02BE4B -:1031C00003680A0E2A6E2B6A02C02FF003C030F08B -:1031D0003EEC16F028C000F029C001F0DC0E0026FD -:1031E000050E012200500101112701501223A9D818 -:1031F000800E126EBB0E136E440E146E196A1A6A9C -:10320000200E1B6E410E1C6E1051AFD8EFCF21F077 -:1032100021C02BF0C3EC14F029C01DF02AC01EF011 -:103220002BC01FF02CC020F0AAD819C029F01AC05A -:103230002AF01BC02BF01CC02CF0D1EC15F06FD87D -:10324000E8EC14F040D80101102B1200106B200E96 -:10325000115D4E0E125915E274D8400E126E9C0E7E -:10326000136E460E146E11C12AF012C12BF0D2EC6F -:1032700014F055D8E7EC14F026D80101116B126B4D -:103280001200116B126B6DD7D9CFE6FFE1CFD9FFDA -:10329000FE0EDB506AD8FD0EDBCFEFFF6CD05CD8A2 -:1032A00004E0D890F336E806FCE1F35001010F1377 -:1032B00062D052D804E0D890F336E806FCE1F3502F -:1032C00001010F1B58D029C00DF02AC00EF02BC0F1 -:1032D0000FF02CC010F053D809C029F00AC02AF012 -:1032E0000BC02BF00CC02CF0D1EC15F05CEC16F000 -:1032F0002AC006F02BC007F0086A2A50035C006E53 -:103300002B500458016E08500558026E00C0E6FFAD -:1033100001C0E6FFA3EC1DF0E552E552120029C002 -:1033200015F02AC016F02BC017F02CC018F027D8C3 -:1033300011C029F012C02AF013C02BF014C02CF0D9 -:10334000120003680468056A096A0A6AC00E0B6EF7 -:103350003F0E0C6E116A1200D9CFE6FFE1CFD9FF04 -:10336000010EF36EFE0EDB501200EA6A0A0FE96EE0 -:10337000010EEA221200E552E7CFD9FF120029C060 -:103380002EF02AC02FF02BC030F02CC031F01200EC -:10339000050EE66E060E8CD8070E8AD8080E88D861 -:1033A000090E7ED80A0E80D80B0E7AD80C0E7CD867 -:1033B0000D0E76D80E0E78D80F0E72D8100E74D867 -:1033C000110E34EF1AF0D9CFE6FFE1CFD9FF51D873 -:1033D000FD0EDBCFE6FF67EC1DF0E552C584D1ECB6 -:1033E0001EF0E552E7CFD9FF1200D9CFE6FFE1CFBB -:1033F000D9FF030EE126020EDB6A3BD8C582C3EC7F -:103400001EF0E90EE66E67EC1DF0E552C586DE6A39 -:10341000DD6ADECF00F0DDCF01F0E80E005C030EC8 -:1034200001580BE2C7A004D0020EC9CFDBFF05D0C4 -:10343000DF2A010EEEE3DB2AECD7C58AC588C3EC90 -:103440001EF0C584C3EC1EF0D1EC1EF0020EDB5062 -:10345000006E030EE15C02E2E16AE552E16E0050AB -:10346000E552E7CFD9FF1200E66EADDFE552E55237 -:103470001200800EE66E080EE66E2EEC1EF0E5528F -:10348000E552C580C3EC1EF0E80EE66E67EC1DF059 -:10349000E552FE0EDBCFE6FF67EC1DF0E5521200B1 -:1034A000E3DFC40EE66E1200DFDF090EE66E1200E7 -:0834B000DBDF050EE66E1200E1 -:0834B800040120511F0B010863 -:1034C00001E01200245101E01200060E215D21E10D -:1034D0002351230A1BE0010A0CE0030A1AE1000150 -:1034E000610517E10001AA0E716F350E726F090EAA -:1034F00009D0000161050DE10001110E716F360E5A -:10350000726F1D0E746F756BC00E02D00001800EBD -:10351000736F04012051600BE842E842E842E84240 -:10352000E842010801E0120021510B0A26E0080AD6 -:1035300019E0090A11E0080A05E00B0A23E0080A6D -:1035400021E0120000011B0E716F010E726F010E5F -:10355000746F756BC10E0FD00001800E736F23C4A2 -:103560001BF1120000011C0E716F010E726F010E33 -:10357000746F756B810E736F12000001800E736F94 -:0635800022C41CF1120040 -:0A3586001201000200000008D80442 -:10359000040002000102000109022900010100C02B -:1035A000320904000002030000000921110100019A -:1035B000221D0007058103400001070501034000AB -:1035C00001040309042C034D006F00620069006CC4 -:1035D000006500200052006F0062006F0074002040 -:1035E0000050006C006100740066006F0072006D96 -:1035F00000200352006F0062006F00740020004939 -:10360000006E007400650072006600610063006572 -:10361000000600FF0901A10119012940150026FF3C -:1036200000750895408100190129409100C0983526 -:06363000C135C535F1357E -:0A3636002A0EF66E080EF76E000E65 -:10364000F86E01010900F550056F0900F550066F8D -:1036500003E1056701D03DD00900F550006F090076 -:10366000F550016F0900F550026F09000900F5508F -:10367000E96E0900F550EA6E090009000900F550ED -:10368000036F0900F550046F09000900F6CF07F138 -:10369000F7CF08F1F8CF09F100C1F6FF01C1F7FF3C -:1036A00002C1F8FF0101035302E1045307E00900DE -:1036B000F550EE6E0307F8E20407F9D707C1F6FFED -:1036C00008C1F7FF09C1F8FF01010507000E065BFD -:0436D000BFD712004E -:0C36D400D9CFE6FFDACFE6FFE1CFD9FF47 -:1036E000E2CFDAFFAC6AAB6AFD0EDBB0AC88DBA2DE -:1036F00002D0AC8CAB8CDBB4AC8EDBA602D0AB883A -:1037000001D0AB8ADBB8AC849E98DBBAAC86DBAC6C -:1037100002D09D8A01D09D9A9E9ADBAE02D09D88F0 -:1037200001D09D98FB0EDB50AF6EFB0EFC0EDBCF85 -:1037300001F001C000F0016A0050B06EAC8AAB8E9F -:10374000949C948EAC50100B04E0AC50800B01E1C3 -:0E375000948CE552E5CFDAFFE7CFD9FF1200E7 -:02375E00D9CFC1 -:10376000E6FFDACFE6FFE1CFD9FFE2CFDAFFE6529C -:1037700029D820E0C6A60AD025D8E66E67EC1DF051 -:10378000E552DF6EDF5010E0DF5015D09E961AD85C -:10379000C96EC6889EA6FED7C750040B05E1C75068 -:1037A000010B02E1FE0E07D0FC0EDB2AFD0EE0E36A -:1037B000DB2ADED7000EE552E552E5CFDAFFE7CF90 -:1037C000D9FF1200FC0EDBCFE9FFFD0EDBCFEAFFD5 -:0437D000EF501200A4 -:0C37D400FE0EE3CFE9FFFF0EE3CFEAFF9B -:1037E000E9CFF3FFEACFF4FFFB0EE35003E1FC0E59 -:1037F000E35009E0FB0EE30602E2FC0EE306FD0ED9 -:10380000E350EE6EF1D71200FB0EE3CFF6FFFC0E95 -:10381000E3CFF7FFFD0EE3CFF8FFFE0EE3CFE9FFA6 -:10382000FF0EE3CFEAFFE9CFF3FFEACFF4FFEE6646 -:10383000FED7ED520900F5CFEFFFEE66FBD7120081 -:103840002DD8FD0EDB50A86EA69EA69CA684F25035 -:10385000800B01E0010E01011D6FF29E550EA76E57 -:10386000AA0EA76EA6821D51E8B0F28EE8A0F29EC5 -:10387000A6B2FED7A198A694E552E7CFD9FF1200D1 -:103880000DD8A69EA69CA680020EE66EB8EC1EF091 -:10389000E552A850E552E7CFD9FF1200D9CFE6FF95 -:0C38A000E1CFD9FFFE0EDB50A96E120034 -:0438AC00D9CFE6FF8B -:1038B000DACFE6FFE1CFD9FFE2CFDAFFE652E652F8 -:1038C000FC0EDBCF00F0FD0EDBCF01F0060ED89032 -:1038D00000360136E804FBE100C0DEFF01C0DDFF79 -:1038E000010EDB50BB6EDF50E840E8403F0B300B71 -:1038F000006ECF0EBA140010BA6EE552E552E552D2 -:0A390000E5CFDAFFE7CFD9FF120090 -:06390A00D9CFE6FFDACF81 -:10391000E6FFE1CFD9FFE2CFDAFFE652E652FC0E36 -:10392000DBCF00F0FD0EDBCF01F0060ED8900036A5 -:103930000136E804FBE100C0DEFF01C0DDFF010E3F -:10394000DB50BE6EDF50E840E8403F0B300B006EAE -:10395000CF0EBD140010BD6EE552E552E552E5CF25 -:08396000DAFFE7CFD9FF1200E6 -:08396800D9CFE6FFDACFE6FF3C -:10397000E1CFD9FFE2CFDAFFE652E6520C0EBA6E83 -:10398000050EF66EF76A300EF86E0800F550010B62 -:1039900003E0010EDB6802D0010EDB6ADB5002E0BF -:1039A000949201D09396CA94FD0EDB50CB6ECA84DC -:1039B000E552E552E552E5CFDAFFE7CFD9FF120035 -:1039C000276A266A256A246A200EE76ED890283670 -:1039D00029362A362B3624362536263627362D50DC -:1039E000245C2E5025582F5026583050275809E374 -:1039F0002D50245E2E50255A2F50265A3050275ACB -:083A0000282AE72EE4D712008A -:083A0800D9CFE6FFDACFE6FF9B -:103A1000E1CFD9FFE2CFDAFFFD0EDB50360BB16EFE -:103A2000B36AB26AA192FD0EDBAE02D0A08201D0D1 -:103A3000A092DBB2CD86DBA002D0B18E01D0B19EC8 -:0E3A4000B180E552E5CFDAFFE7CFD9FF1200E3 -:023A4E00D9CFCE -:103A5000E6FFDACFE6FFE1CFD9FFE2CFDAFFFD0ED6 -:103A6000DB507E0BCD6EFD0EDBAC02D0CD8E01D0D7 -:103A7000CD9ECF6ACE6A9E90DBAE02D09D8001D0F3 -:103A80009D90CD80E552E5CFDAFFE7CFD9FF120058 -:103A9000D9CFE6FFDACFE6FFE1CFD9FFE2CFDAFFF9 -:103AA000E652F20E0001FF17ABAC03D0FF91ABB0B2 -:103AB000FF81ABB4FF85ABB2FF87AE50DF6EDF5046 -:0E3AC000E552E552E5CFDAFFE7CFD9FF12005D -:023ACE00D9CF4E -:103AD000E6FFDACFE6FFE1CFD9FFE2CFDAFFFD0E56 -:103AE000DB50C96EC6AE02D0FF0E09D0C7B0FED7FC -:103AF000C3EC1EF0C5AC02D0FE0E01D0000EE552A4 -:0A3B0000E5CFDAFFE7CFD9FF12008E -:063B0A0032333A32303A7A -:103B100035380020004665622032312032303130A5 -:103B200000526F626F7420496E74657266616365DE -:103B300020312E300A4F6C69766965722042494304 -:053B4000484C45520055 -:0A3B4600D9CFE6FFDACFE6FFE1CFAA -:103B5000D9FFE2CFDAFFE652E652FC0EDBCFDEFF02 -:103B6000DBCFDDFF010EDB50B36EDF50B26EE552EE -:0E3B7000E552E552E5CFDAFFE7CFD9FF1200AC -:023B7E00D9CF9D -:103B8000E6FFDACFE6FFE1CFD9FFE2CFDAFFE65278 -:103B9000E652FC0EDBCFDEFFDBCFDDFF010EDB509C -:103BA000CF6EDF50CE6EE552E552E552E5CFDAFF3B -:063BB000E7CFD9FF12006F -:0A3BB600D9CFE6FFDACFE6FFE1CF3A -:103BC000D9FFE2CFDAFFE652E652FC0EDBCFDEFF92 -:103BD000DBCFDDFF010EDB50D76EDF50D66EE55236 -:0E3BE000E552E552E5CFDAFFE7CFD9FF12003C -:023BEE00D9CF2D -:103BF000E6FFDACFE6FFE1CFD9FFE2CFDAFFFD0E35 -:103C0000DB507F0BD56ED76AD66AF294FD0EDBAE21 -:103C100002D0F28A01D0F29AD58EE552E5CFDAFFD2 -:063C2000E7CFD9FF1200FE -:0A3C2600D9CFE6FFDACFE6FFE1CFC9 -:103C3000D9FFE2CFDAFFFD0EDB50FB0BCA6ECC6A78 -:103C40009E92FD0EDBAE02D09D8201D09D92CA8471 -:0C3C5000E552E5CFDAFFE7CFD9FF120004 -:043C5C00D9CFE6FFD7 -:103C6000DACFE6FFE1CFD9FFE2CFDAFF3F0EC7168A -:103C7000C66AC56AFD0EDB50C612FC0EDB50C712C9 -:103C800093829380C68AE552E5CFDAFFE7CFD9FF6A -:023C9000120020 -:0E3C9200D9CFE6FFE1CFD9FF00010ED8EF50E9 -:103CA000000803E2EB291F0BEB6F07D8FE0EDBCFFA -:103CB000EFFFE552E7CFD9FF1200EB51EA6ACB0FD5 -:083CC000E96E000EEA22120079 -:083CC800D9CFE6FFDACFE6FFD9 -:103CD000E1CFD9FFE2CFDAFF0C0EBD129494CA9463 -:103CE000FD0EDB50CB6ECA84E552E5CFDAFFE7CF9D -:083CF000D9FF120094941200A8 -:083CF800FF0EE350376EEF0EE2 -:103D000001D0F30EE76EE72E83EF1EF00C0E366E39 -:103D1000E76AE72E89EF1EF0362E88EF1EF0372E69 -:063D200081EF1EF012000D -:0A3D2600D9CFE6FFDACFE6FFE1CFC8 -:103D3000D9FFE2CFDAFFACAC04D0AC900001FFB306 -:103D4000AC80FD0EDB50AD6EE552E5CFDAFFE7CF7C -:043D5000D9FF120085 -:0C3D540013EE00F023EE00F0F86A239C50 -:103D60001BEC1BF0D3EC1EF0B4EC04F0FBD71200FC -:103D7000FF0EE350E84E1200000000D000D000D04B -:063D8000E82EFAD7120044 -:0A3D86001F0EC514FDE1C750040B29 -:043D9000FAE1120042 -:0C3D940000EE00F00F0EEE6AEA62FDD7B0 -:023DA00012000F -:043DA200C69A1200AB -:023DA600120009 -:083DA800000000000000000013 -:013DB0000012 -:0F3DB10000000000000000000000000000000003 -:013DC0000002 -:083DC1000000000001000000F9 -:073DC90000000000000000F3 -:103DD00000000000000000000000000000000000E3 -:0A3DE00000000000000000000000D9 -:063DEA00000000000000D3 -:103DF00000000000000000000000000000000000C3 -:0E3E00000000000000000000000000000000B4 +:1009C000C86E06EC0CF062EC0CF062EC0CF062EC21 +:1009D0000CF04CEC0CF0430E45EC0CF03F0E8A167C +:1009E00093160101136B146B156B166B010E176FC9 +:1009F00012EC12F0E30E951692929492A082FD0EE4 +:100A0000E66E38EC1DF0E552000EE66EE66AD7ECB5 +:100A10001DF0E552E55283948396839880928292EA +:100A2000E66A45EC17F0E552FCEC19F0E552E552A8 +:100A3000E7CFD9FF1200D9CFE6FFE1CFD9FF170EDC +:100A4000E126160EDB6A0101175102E01AEC0BF0E9 +:100A5000200E0001605D03E36D50020B02E010EF19 +:100A60000BF0160EDB5036E045EC18F0000932E0D2 +:100A700001011551161102E1000E08D015C1E9FF60 +:100A800016C1EAFFEF50800B01E0010E000922E1E0 +:100A90000501406B01011851182B0501416F05013B +:100AA0000C0E426F0501436B400EE66E400EE66E83 +:100AB000050EE66E010EE66E010EE66EBDEC10F060 +:100AC000006E050EE15E0050F3CF15F1F4CF16F184 +:100AD000160EDB6A01011551161102E1000E08D055 +:100AE00015C1E9FF16C1EAFFEF50800B01E0010ECE +:100AF000000947E10001EB51EA6ACB0FE96E000EF5 +:100B0000EA22EF5000083DE20501406B0101185157 +:100B1000182B0501416F0501040E426F0001EB51D6 +:100B2000EA6ACB0FE96E000EEA22EFCF43F5400EE2 +:100B3000E66E400EE66E050EE66E010EE66E010EE6 +:100B4000E66EBDEC10F0006E050EE15E0050F3CFD6 +:100B500015F1F4CF16F10001EB51EA6ACB0FE96E03 +:100B6000000EEA22EF6A0001EB51000803E20001E7 +:100B7000EB0707D00001EA51000803E200011F0E55 +:100B8000EB6F01011351141102E1000E08D013C1E3 +:100B9000E9FF14C1EAFFEF50800B01E0010E0009EC +:100BA00002E010EF0BF005010251070A02E176EFB7 +:100BB0000AF0020A02E148EF0AF00E0A02E1EFEF42 +:100BC00009F0020A01E10FD20F0A01E164D1040A1F +:100BD0001AE0030A07E0010A02E0CFEF0AF0FF0083 +:100BE00010EF0BF0E66A74EC1CF0E552DF6E000EBD +:100BF000DB80DFCFE6FFE66A54EC1CF0E552E552FD +:100C0000FF0010EF0BF001011551161102E1000E6B +:100C100008D015C1E9FF16C1EAFFEF50800B01E0D3 +:100C2000010E000901E036D100C540F50501416B18 +:100C30000501030E426F0501436B050108510A0AC5 +:100C400001E17ED00E0A71E0070A64E0010A20E0AB +:100C5000030A06E0010A01E0F3D0FCC048F5F3D036 +:100C60000501486B890E006E3B0E016E026A00C0E2 +:100C7000E6FF01C0E6FF02C0E6FF480EE66E050E85 +:100C8000E66E38EC1CF0036E050EE15E0350DBD01F +:100C90000501486B7D0E006E3B0E016E026A00C0BE +:100CA000E6FF01C0E6FF02C0E6FF480EE66E050E55 +:100CB000E66E38EC1CF0036E050EE15E03507B0E11 +:100CC000006E3B0E016E026A00C0E6FF01C0E6FF47 +:100CD00002C0E6FF480EE66E050EE66E38EC1CF02C +:100CE000036E050EE15E0350720E006E3B0E016E48 +:100CF000026A00C0E6FF01C0E6FF02C0E6FF480E40 +:100D0000E66E050EE66E38EC1CF0036E050EE15E35 +:100D1000035099D092CF48F593CF49F594CF4AF537 +:100D200095CF4BF596CF4CF58ED080CF48F581CF3F +:100D300049F582CF4AF583CF4BF584CF4CF583D06C +:100D4000800EE66E080EE66E62EC1EF0E552E5528D +:100D5000C580F7EC1EF0C00EE66E9BEC1DF0E55270 +:100D6000E66A9BEC1DF0E552C582F7EC1EF0C10E61 +:100D7000E66E9BEC1DF0E552010EDB6A020EDB6AAB +:100D8000010EDBCF00F0020EDBCF01F0040E005CA1 +:100D9000000E01584FE2010EF36E150EF3CFDBFF8C +:100DA000C586130EDB6A140EDB6A130EDBCF00F070 +:100DB000140EDBCF01F0E80E005C030E015817E2C1 +:100DC000C7A00FD0010EDBCFE9FF020EDBCFEAFF99 +:100DD000480EE926050EEA22C9CFEFFF150EDB6AA1 +:100DE00006D0130EDB2A140E01E3DB2ADED7150E24 +:100DF000DB5008E00501080E436FC58AC588F7EC93 +:100E00001EF018D0010EDBCF00F0020EDBCF01F098 +:100E1000030E005C000E015803E2C59AC58802D09B +:100E2000C58AC588F7EC1EF0010EDB2A020E01E32D +:100E3000DB2AA6D7C584F7EC1EF005EC1FF003D023 +:100E40000501020E436F400EE66E400EE66E050E83 +:100E5000E66E010EE66E010EE66EBDEC10F0006E61 +:100E6000050EE15E0050F3CF15F1F4CF16F1400E00 +:100E7000E66E000EE66E050EE66EE66A010EE66EA2 +:100E8000BDEC10F0006E050EE15E0050F3CF13F1E3 +:100E9000F4CF14F1C5D305010851050A54E0010A45 +:100EA00049E0070A37E0010A25E0030A13E0010AD6 +:100EB00001E080D005010951921205010A519312F7 +:100EC00005010B51941205010C51951205010D51AC +:100ED000961275D00501091D921605010A1D93167B +:100EE00005010B1D941605010C1D951605010D1D20 +:100EF000961665D00501091D891605010A1D8A1679 +:100F000005010B1D8B1605010C1D8C1605010D1D11 +:100F10008D1655D005010951891205010A518A1211 +:100F200005010B518B1205010C518C1205010D515D +:100F30008D1245D00501095101010F1B05010A5110 +:100F400001010F133CD0050109A107D00AC5E6FF36 +:100F5000E66A78EC19F0E552E552050109A308D0DC +:100F60000BC5E6FF010EE66E78EC19F0E552E5528E +:100F7000050109A508D00CC5E6FF020EE66E78EC67 +:100F800019F0E552E552050109A708D00DC5E6FFA5 +:100F9000030EE66E78EC19F0E552E552050109A959 +:100FA00008D00EC5E6FF040EE66E78EC19F0E552A7 +:100FB000E55205D0030EE66E7DEC1EF0E552400EC4 +:100FC000E66E000EE66E050EE66EE66A010EE66E51 +:100FD000BDEC10F0006E050EE15E0050F3CF13F192 +:100FE000F4CF14F11DD301011551161102E1000EC9 +:100FF00008D015C1E9FF16C1EAFFEF50800B01E0F0 +:10100000010E000901E0EAD100C540F50501416B80 +:101010000501030E426F0501436B05010851100ADB +:1010200001E1ACD1190A01E183D1010A01E1E3D068 +:101030000F0A01E1C5D0010A01E1AAD0030A01E1CA +:101040008FD0010A6AE0070A42E0010A11E0030AB0 +:1010500001E09AD105010A51E66EE66A09C5E6FF8C +:1010600020EC13F0E552E552E5520501486F8FD1AF +:1010700005010B051BE105010C51E66EE66A0AC588 +:10108000E6FF09C5E6FFDDEC13F0E552E552E55257 +:10109000E5520F0EF3CFDBFF100EF4CFDBFF100E87 +:1010A000DBCF48F50F0EDBCF49F510D005010C5111 +:1010B000E66EE66A0AC5E6FF09C5E6FF7AEC13F0BC +:1010C000E552E552E552E5520501486F60D1050150 +:1010D0000B0517E1100E0CC5DBFF0F0E0DC5DBFF76 +:1010E0000F0EDBCFE6FF100EDBCFE6FF0AC5E6FFF3 +:1010F00009C5E6FF73EC13F0E552E552E552E552FF +:101100000BD00CC5E6FF0AC5E6FF09C5E6FF6FEC8C +:1011100013F0E552E552E5523AD1100E0AC5DBFF55 +:101120000F0E0BC5DBFF120E0CC5DBFF110E0DC53C +:10113000DBFF0EC5E6FF110EDBCFE6FF120EDBCFA5 +:10114000E6FF0F0EDBCFE6FF100EDBCFE6FF09C593 +:10115000E6FF5EEC14F0006E060EE15E005017D163 +:1011600005010A51E66EE66A09C5E6FF81EC14F056 +:10117000E552E552E5520F0EF3CFDBFF100EF4CF30 +:10118000DBFF100EDBCF48F50F0EDBCF49F5FFD0AC +:1011900005010A51E66EE66A09C5E6FF84EC14F023 +:1011A000E552E552E5520F0EF3CFDBFF100EF4CF00 +:1011B000DBFF100EDBCF48F50F0EDBCF49F5E7D094 +:1011C00005010A51E66EE66A280EE66E09C5E6FFDD +:1011D000DDEC13F0E552E552E552E5520F0EF3CF88 +:1011E000DBFF100EF4CFDBFF100EDBCF48F50F0E48 +:1011F000DBCF49F5CCD005010A51E66EE66A09C598 +:10120000E6FF81EC14F0E552E552E5520F0EF3CF04 +:10121000DBFF100EF4CFDBFF100EDBCF48F50F0E17 +:10122000DBCF49F505010A51E66EE66A09C5E6FF1E +:1012300084EC14F0E552E552E5520F0EF3CFDBFFDC +:10124000100EF4CFDBFF100EDBCF4AF50F0EDBCF15 +:101250004BF505010A51E66EE66A280EE66E09C5F1 +:10126000E6FFDDEC13F0E552E552E552E5520F0ED4 +:10127000F3CFDBFF100EF4CFDBFF100EDBCF4CF50E +:101280000F0EDBCF4DF505010A51E66EE66A2A0E18 +:10129000E66E09C5E6FF7AEC13F0E552E552E55239 +:1012A000E55205014E6F05010A51E66EE66A2B0E06 +:1012B000E66E09C5E6FF7AEC13F0E552E552E55219 +:1012C000E55205014F6F05010A51E66EE66A060E0A +:1012D000E66E09C5E6FFDDEC13F0E552E552E55296 +:1012E000E5520F0EF3CFDBFF100EF4CFDBFF100E35 +:1012F000DBCF50F50F0EDBCF51F505010A51E66E3D +:10130000E66A080EE66E09C5E6FFDDEC13F0E5526D +:10131000E552E552E5520F0EF3CFDBFF100EF4CF8E +:10132000DBFF100EDBCF52F50F0EDBCF53F52FD0C6 +:1013300005010B0517E1100E0CC5DBFF0F0E0DC5E7 +:10134000DBFF0F0EDBCFE6FF100EDBCFE6FF0AC59B +:10135000E6FF09C5E6FF51EC14F0E552E552E5520F +:10136000E5520BD00CC5E6FF0AC5E6FF09C5E6FF4E +:101370004DEC14F0E552E552E55209D009C5E6FFFF +:1013800059EC14F0E55203D00501010E436F400EF5 +:10139000E66E400EE66E050EE66E010EE66E010E7E +:1013A000E66EBDEC10F0006E050EE15E0050F3CF6E +:1013B00015F1F4CF16F1400EE66E000EE66E050E46 +:1013C000E66EE66A010EE66EBDEC10F0006E050EEC +:1013D000E15E0050F3CF13F1F4CF14F121D10501F8 +:1013E0000851030A11E0010A09E0030A01E037D0BD +:1013F00009C5E6FFB5EC17F0E55236D009C5E6FFA2 +:10140000C3EC17F0E55230D00E0E0CC5DBFF0D0E0D +:101410000DC5DBFF0C0E0EC5DBFF0B0E0FC5DBFF92 +:10142000D9500B0FE96EDACFEAFFEECFE6FFEECF31 +:10143000E6FFEECFE6FFEFCFE6FF0BC5E6FF0AC5FE +:10144000E6FF09C5E6FFD1EC17F0006E070EE15E7E +:101450000050010EF36E160EF3CFDBFF05D0010E28 +:10146000E66E7DEC1EF0E552400EE66E000EE66E76 +:10147000050EE66EE66A010EE66EBDEC10F0006E3B +:10148000050EE15E0050F3CF13F1F4CF14F1C8D094 +:10149000800EE66E080EE66E62EC1EF0E552E55236 +:1014A000C580F7EC1EF0E66A9BEC1DF0E552080ED5 +:1014B000E66E050EE66EE3EC1BF0E552E552C584E0 +:1014C00005EC1FF0400EE66E000EE66E050EE66EB1 +:1014D000E66A010EE66EBDEC10F0006E050EE15EF0 +:1014E0000050F3CF13F1F4CF14F19AD04F0EAB1696 +:1014F000AC9ACF0E9D16020EE66EE66A7C0EE66E84 +:101500009EEC1BF0E552E552E552040EE66EE66AEB +:101510000EEC13F0E552E552100EE66E010EE66E8B +:101520000EEC13F0E552E552020EE66E030EE66E87 +:10153000010EE66E89EC12F0E552E552E552040E1A +:10154000E66EE66A0EEC13F0E552E552100EE66E1A +:10155000010EE66E0EEC13F0E552E552020EE66E59 +:10156000030EE66E010EE66E89EC12F0E552E552CE +:10157000E55212EC12F0400EE66E000EE66E050E1D +:10158000E66EE66A010EE66EBDEC10F0006E050E2A +:10159000E15E0050F3CF13F1F4CF14F141D001011B +:1015A0001551161102E1000E08D015C1E9FF16C150 +:1015B000EAFFEF50800B01E0010E000931E100C5A8 +:1015C00040F50501416B0501030E426F0501010E57 +:1015D000436F400EE66E400EE66E050EE66E010E9F +:1015E000E66E010EE66EBDEC10F0006E050EE15EDB +:1015F0000050F3CF15F1F4CF16F1400EE66E000E59 +:10160000E66E050EE66EE66A010EE66EBDEC10F0C3 +:10161000006E050EE15E0050F3CF13F1F4CF14F12C +:10162000170EE15C02E2E16AE552E16EE552E7CFB6 +:10163000D9FF1200010119511A1104E1100E196F9E +:10164000270E1A6F1907000E1A5B6DA207D01951E9 +:101650001A112EE18A7C8ABC13D027D00001605178 +:1016600002E18A9C22D0600502E18A8C09D0020E38 +:10167000605D02E18A8C19D0040E605D03E18A9CF2 +:101680008A8E1200100E605D06E1010119511A11D7 +:101690000FE18A7C0AD0200E605D0AE10101195138 +:1016A0001A1106E18A7C8AAC02D08A9E12008A8EC8 +:1016B0001200ACD8F1D8620E45EF0CF0A7D8ECD8E8 +:1016C000420E45EF0CF01200120090EF1AF01200DB +:1016D0001E0EE66E010EE66E8BEC10F0E552E55242 +:1016E000400EE66E000EE66E050EE66EE66A010E30 +:1016F000E66EBDEC10F0006E050EE15E0050F3CF1B +:1017000013F1F4CF14F112006D840001080EFD6F87 +:10171000070EFE6FFD07000EFE5BFD51FE11FAE1A4 +:101720006D941200D9CFE6FFE1CFD9FFFD0EDBCFDC +:101730002AF0FE0EDBCF2BF0010E2A1801E12B5010 +:1017400033E0E8682A1802E1E8682B182BE0030E62 +:101750002A1801E12B5024E0040E2A1801E12B5035 +:101760001DE0020E2A1801E12B5016E0170E2A1870 +:1017700001E12B500FE0160E2A1801E12B5008E072 +:10178000150E2A1801E12B5001E010D0A1DF0FD077 +:101790009EDF0DD09ADF0BD096DF09D08ADF07D00D +:1017A0008DDF05D091DF03D0000001D000D0010E05 +:1017B00000D0E552E7CFD9FF120089D8E652D0B267 +:1017C00002D0010E15D0D0B802D0020E11D0D0B088 +:1017D00002D0030E0DD0D0B602D0040E09D0FCAE5C +:1017E00002D0050E05D0FCAC02D0060E01D0070ECB +:1017F000DF6ED088D086D084D082D080FC9EFC9CC6 +:10180000DF50E552E552E7CFD9FF1200800EE66EB9 +:10181000080EE66E62EC1EF0E552E552C580F7EC6C +:101820001EF062EF0CF0DACFE4FFE2CFDAFFE9CF8F +:10183000E4FFEACFE4FFF6CFE4FFF7CFE4FFF5CF14 +:10184000E4FFF3CFE4FFF4CFE4FFFACFE4FF1200AC +:10185000E5CFFAFFE5CFF4FFE5CFF3FFE5CFF5FFE6 +:10186000E5CFF7FFE5CFF6FFE5CFEAFFE5CFE9FFEC +:10187000E5CFDAFF1200E6522AD8020EE126F35035 +:10188000DF6E010EF4CFDBFF1200E66E9BEC1DF065 +:10189000E552C58405EF1FF01B0EE66E9BEC1DF0B4 +:1018A000E5521200DF50F36E010EDB50F46E020EB3 +:1018B000E15C1200DFCFE6FFE66A54EC1CF0E55273 +:1018C000E5521200E66A9BEC1DF0E5521200D9CFFA +:0818D000E6FFE1CFD9FF120091 +:0818D80064EC11F06A6A686A11 +:1018E00097EC11F06D8C6E6A47EC11F06D9CDF6A1D +:1018F00078EC11F010E2DF50040DF3CFE9FFF4CFE4 +:10190000EAFF000EE926040EEA22EE6AEE6AEE6AAB +:10191000EE6ADF2AEDD7160E706E68A604D0030EAD +:101920000DEC11F0FAD70001736B786B796B7A6B61 +:101930006D98080E6B6F040E6C6F616B606BE552F7 +:1019400022EF11F064EC11F0000160510BE16D6ABF +:10195000696A97EC11F06DB602D06D86FCD7000174 +:10196000010E606F600508E16DBA06D0686A696AA9 +:1019700069806988020E6... [truncated message content] |
From: Xavier L. <Ba...@us...> - 2010-03-06 22:41:07
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via f210a0e3676c019eec203c614a66a685a24d1f7a (commit) from 605fdc677788b43a9549798ac4e4afc0702e1aee (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit f210a0e3676c019eec203c614a66a685a24d1f7a Author: Xavier Lagorce <Xav...@cr...> Date: Sat Mar 6 23:40:42 2010 +0100 Working version of the set of constants ----------------------------------------------------------------------- Changes: diff --git a/USB_Module/Motor_Controller/Firmware/lm629.h b/USB_Module/Motor_Controller/Firmware/lm629.h index 1daaceb..8674bb4 100644 --- a/USB_Module/Motor_Controller/Firmware/lm629.h +++ b/USB_Module/Motor_Controller/Firmware/lm629.h @@ -25,8 +25,8 @@ #define ENCODER_RES 15*500 ///< Impulsions du codeur par tour de roue (prendre en compte le rcteur selon le cas !) #define WHEELS_DIAMETER 98 ///< Diame des roues (en mm) #define WHEELS_DIST 259 ///< Distance entre les 2 roues (en mm) - #define CON_MOTOR_LEFT 1 - #define CON_MOTOR_RIGHT 1 + #define CON_MOTOR_LEFT -1 + #define CON_MOTOR_RIGHT -1 #else #ifdef KROBOT_PROTO // Constantes pour le robot protoype basur des EMG30s diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof index 0e5f6f8..84163ed 100644 Binary files a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof and b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof differ diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex index f0dba99..3cf2fff 100644 --- a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex +++ b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex @@ -1,1465 +1,1470 @@ :020000040000FA -:060000003EEF30F012009B +:0600000062EF30F0120077 :0600080004EF04F01200F9 :060018000CEF04F01200E1 -:060800003EEF30F0120093 -:060808002EEF04F01200C7 -:0608180096EF04F012004F -:06082A0004000F61000054 -:100830002601000021000000076100005F010000A8 -:1008400008000000F9600000470100000E000000F1 -:0C085000F66000006A01000003000000D8 -:04085C00DACFE4FF0C -:10086000E2CFDAFFE9CFE4FFEACFE4FFF6CFE4FF1F -:10087000F7CFE4FFF5CFE4FFF3CFE4FFF4CFE4FFDD -:10088000FACFE4FF00EE29F0140EE80403E3EECF04 -:10089000E4FFFBD700EE00F0290EE80403E3EECFFF -:1008A000E4FFFBD7C6EC0FF09EA013D0D0EC0FF006 -:1008B00001014D2B000E4E23E80E4D5D030E4E59E7 -:1008C00005E34D6B4E6B4F2B000E5023E8EC28F0E8 -:1008D0009E90D9EC0FF002E2E16AE552E16EE5523A -:1008E000E7CFD9FFE55200EE28F0290EE80403E334 -:1008F000E5CFEDFFFBD700EE3CF0140EE80403E378 -:10090000E5CFEDFFFBD7E5CFFAFFE5CFF4FFE5CF6D -:10091000F3FFE5CFF5FFE5CFF7FFE5CFF6FFE5CF36 -:10092000EAFFE5CFE9FFE5CFDAFF1100D8CFE4FF1A -:10093000E0CFE4FFE46EDACFE4FFE2CFDAFFF3CFFB -:10094000E4FFF4CFE4FFC6EC0FF0D9EC0FF002E2C5 -:10095000E16AE552E16EE552E7CFD9FFE552E5CF16 -:10096000F4FFE5CFF3FFE5CFDAFFE550E5CFE0FF99 -:10097000E5CFD8FF100004D8CBEC1BF060D8FCD733 -:100980000F0EC11202D895EF1BF0E9EC0FF0E65202 -:100990009DEC0FF00101676F070E675D10E1E66ADD -:1009A00058EC2FF0E552DF6E000EDF80E1EC0FF027 -:1009B000E66A11EC30F0E552DF70E1EC0FF0D08E1A -:1009C000F28EF28CF30E8C1695160101476B486B74 -:1009D000496B4A6B010E4B6F929480949398819867 -:1009E0000D0EE66E7C0EE66EE10EE66ECBEC2EF0A2 -:1009F000E552E552E552C70E921694943F0E9516B5 -:100A0000010EE66EEEEC0FF0E552838C808A828454 -:100A10008088838E80868294010EE66E4CEC30F0E6 -:100A2000E55282849D80C50EE66EA1EC2FF0E55262 -:100A3000D0EC0FF0E552E552E7CFD9FF1200D9CF45 -:100A4000E6FFE1CFD9FF0F0EE12601014B5102E095 -:100A5000E2EC0EF0200E0101005D03E36D50020B8D -:100A600002E0D8EF0EF0010149514A1102E1000EF7 -:100A700008D049C1E9FF4AC1EAFFEF50800B01E00D -:100A8000010E000947E101014651EA6A260FE96EAD -:100A9000010EEA22EF5000083DE20501406B010122 -:100AA0004C514C2B0501416F0501040E426F0101B1 -:100AB0004651EA6A260FE96E010EEA22EFCF43F5AE -:100AC000400EE66E400EE66E050EE66E010EE66E18 -:100AD000010EE66EE6EC1FF0006E050EE15E0050C2 -:100AE000F3CF49F1F4CF4AF101014651EA6A260FEA -:100AF000E96E010EEA22EF6A01014651000803E2A5 -:100B00000101460707D001014551000803E2010138 -:100B10001F0E466F010149514A1102E1000E08D033 -:100B200049C1E9FF4AC1EAFFEF50800B01E0010E25 -:100B300000092CE10101520529E1B8EC17F0000988 -:100B400025E00501406B01014C514C2B0501416F23 -:100B500005010A0E426F0501436B0501010E486F46 -:100B6000400EE66E400EE66E050EE66E010EE66E77 -:100B7000010EE66EE6EC1FF0006E050EE15E005021 -:100B8000F3CF49F1F4CF4AF10101526B000E01019C -:100B9000E76E5119E8AE02D0513503D0E750D88046 -:100BA000515501E38ED001015151FF0A29E0FD0AA0 -:100BB00013E0030A01E06ED0020EE66E34EC2AF078 -:100BC000E55217EC13F0000904E00101020E516F29 -:100BD00002D00101516960D0200EE66E030EE66E70 -:100BE000C80EE66EE66AE80EE66E030EE66EDCEC14 -:100BF00014F0006E060EE15E00500101516B4CD006 -:100C0000010149514A1102E1000E08D049C1E9FF32 -:100C10004AC1EAFFEF50800B01E0010E000939E103 -:100C20000501406B01014C514C2B0501416F050141 -:100C3000050E426F0501436B0501486B770E006E90 -:100C40005D0E016E026A00C0E6FF01C0E6FF02C051 -:100C5000E6FF480EE66E050EE66E1CEC2FF0036E06 -:100C6000050EE15E0350400EE66E400EE66E050E88 -:100C7000E66E010EE66E010EE66EE6EC1FF0006E0B -:100C8000050EE15E0050F3CF49F1F4CF4AF10101C6 -:100C9000516B02D00101516B020EE66EE66AB0ECB8 -:100CA00012F0E552E55200090AE1020EE66E010E6D -:100CB000E66EB0EC12F0E552E552000902E00101E7 -:100CC000516901014751481102E1000E08D047C1A6 -:100CD000E9FF48C1EAFFEF50800B01E0010E000977 -:100CE00002E0D8EF0EF005010251070A02E139EFE8 -:100CF0000EF00D0A01E149D2010A01E119D20D0AF3 -:100D000001E1B1D1040A1AE0030A07E0010A02E096 -:100D100097EF0EF0FF00D8EF0EF0E66A58EC2FF0D8 -:100D2000E552DF6E000EDB80DFCFE6FFE66A38ECCF -:100D30002FF0E552E552FF00D8EF0EF001014951C6 -:100D40004A1102E1000E08D049C1E9FF4AC1EAFF99 -:100D5000EF50800B01E0010E000901E082D100C5D7 -:100D600040F50501416B0501030E426F0501436B20 -:100D7000050108510F0A01E110D1080A01E1BBD0B9 -:100D8000010A01E17ED0020A71E0070A64E0010A6B -:100D900020E0030A06E0010A01E039D167C148F505 -:100DA00039D10501486B530E006E5D0E016E026A6B -:100DB00000C0E6FF01C0E6FF02C0E6FF480EE66E97 -:100DC000050EE66E1CEC2FF0036E050EE15E03507F -:100DD00021D10501486B470E006E5D0E016E026A5F -:100DE00000C0E6FF01C0E6FF02C0E6FF480EE66E67 -:100DF000050EE66E1CEC2FF0036E050EE15E03504F -:100E0000450E006E5D0E016E026A00C0E6FF01C075 -:100E1000E6FF02C0E6FF480EE66E050EE66E1CEC2D -:100E20002FF0036E050EE15E03503C0E006E5D0E6A -:100E3000016E026A00C0E6FF01C0E6FF02C0E6FFE5 -:100E4000480EE66E050EE66E1CEC2FF0036E050EE6 -:100E5000E15E0350DFD092CF48F593CF49F594CFB0 -:100E60004AF595CF4BF596CF4CF5D4D080CF48F5C9 -:100E700081CF49F582CF4AF583CF4BF584CF4CF52E -:100E8000C9D0E66A8EEC29F0E552010E2DC0DBFFD9 -:100E9000020E2EC0DBFF030E2FC0DBFF040E30C09E -:100EA000DBFF040EDBCF48F5030EDBCF49F5020E66 -:100EB000DBCF4AF5010EDBCF4BF5010EE66E8EEC73 -:100EC00029F0E552010E2DC0DBFF020E2EC0DBFF24 -:100ED000030E2FC0DBFF040E30C0DBFF040EDBCFA0 -:100EE0004CF5030EDBCF4DF5020EDBCF4EF5010EB8 -:100EF000DBCF4FF58FD00A0EE66EE66A3EEC10F0BF -:100F0000E552E552E66AA2EC11F0E552030EF3CF8A -:100F1000DBFF040EF4CFDBFFE66AA2EC11F0E55232 -:100F2000DE52F3CFDEFFF4CFDDFFDD52040EDBCF68 -:100F300048F5030EDBCF49F5020EDBCF4AF5010E73 -:100F4000DBCF4BF50A0EE66E010EE66E3EEC10F0BE -:100F5000E552E552010EE66EA2EC11F0E552030EE9 -:100F6000F3CFDBFF040EF4CFDBFF010EE66EA2EC45 -:100F700011F0E552DE52F3CFDEFFF4CFDDFFDD529C -:100F8000040EDBCF4CF5030EDBCF4DF5020EDBCFAD -:100F90004EF5010EDBCF4FF53DD0E66AB8EC14F00C -:100FA000E552010E2DC0DBFF020E2EC0DBFF030E4B -:100FB0002FC0DBFF040E30C0DBFF040EDBCF48F593 -:100FC000030EDBCF49F5020EDBCF4AF5010EDBCF76 -:100FD0004BF5010EE66EB8EC14F0E552010E2DC093 -:100FE000DBFF020E2EC0DBFF030E2FC0DBFF040E63 -:100FF00030C0DBFF040EDBCF4CF5030EDBCF4DF52D -:10100000020EDBCF4EF5010EDBCF4FF503D005010D -:10101000020E436F400EE66E400EE66E050EE66E63 -:10102000010EE66E010EE66EE6EC1FF0006E050E98 -:10103000E15E0050F3CF49F1F4CF4AF1400EE66E85 -:10104000000EE66E050EE66EE66A010EE66EE6EC52 -:101050001FF0006E050EE15E0050F3CF47F1F4CFB4 -:1010600048F1D8EF0EF005010851030A37E0010AF4 -:1010700025E0030A13E0010A01E040D0050109510F -:10108000921205010A51931205010B5194120501A8 -:101090000C51951205010D51961235D00501091D0F -:1010A000921605010A1D931605010B1D94160501E4 -:1010B0000C1D951605010D1D961625D00501091D5F -:1010C000891605010A1D8A1605010B1D8B160501DF -:1010D0000C1D8C1605010D1D8D1615D0050109512D -:1010E000891205010A518A1205010B518B12050163 -:1010F0000C518C1205010D518D1205D0030EE66EB8 -:10110000DEEC2FF0E552400EE66E000EE66E050EA8 -:10111000E66EE66A010EE66EE6EC1FF0006E050E66 -:10112000E15E0050F3CF47F1F4CF48F1D8EF0EF075 -:1011300005010851020A09E0030A01E00CD009C5C3 -:10114000E6FF34EC2AF0E5520BD009C5E6FF44EC8B -:101150002AF0E55205D0010EE66EDEEC2FF0E552E6 -:10116000400EE66E000EE66E050EE66EE66A010EB5 -:10117000E66EE6EC1FF0006E050EE15E0050F3CF68 -:1011800047F1F4CF48F1D8EF0EF005010851060AF7 -:1011900002E1F8EF0DF0080A02E1BEEF0DF0030ADC -:1011A00002E1B5EF0DF0070A02E151EF0DF0030A7D -:1011B00001E1BFD3010A01E1CCD20F0A01E1B5D2AE -:1011C000020A01E16AD2010A01E139D2070A01E10A -:1011D00008D2010A01E1D7D1030A01E1A6D1010A2F -:1011E00001E1A0D10C0A01E126D1030A01E194D06A -:1011F000040A02E020EF0EF00501095104E0020E9E -:101200000501095D40E10AC5E6FF010EE66E38EC16 -:101210002FF0E552E5520BC5E6FF020EE66E38EC04 -:101220002FF0E552E5520CC5E6FF030EE66E38ECF2 -:101230002FF0E552E5520DC5E6FF040EE66E38ECE0 -:101240002FF0E552E5520EC5E6FF050EE66E38ECCE -:101250002FF0E552E5520FC5E6FF060EE66E38ECBC -:101260002FF0E552E55210C5E6FF070EE66E38ECAA -:101270002FF0E552E55211C5E6FF080EE66E38EC98 -:101280002FF0E552E5520501090504E0020E0501C3 -:10129000095D40E10AC5E6FF090EE66E38EC2FF065 -:1012A000E552E5520BC5E6FF0A0EE66E38EC2FF06C -:1012B000E552E5520CC5E6FF0B0EE66E38EC2FF05A -:1012C000E552E5520DC5E6FF0C0EE66E38EC2FF048 -:1012D000E552E5520EC5E6FF0D0EE66E38EC2FF036 -:1012E000E552E5520FC5E6FF0E0EE66E38EC2FF024 -:1012F000E552E55210C5E6FF0F0EE66E38EC2FF012 -:10130000E552E55211C5E6FF100EE66E38EC2FF0FF -:10131000E552E55225EF0EF000C540F50501416BA1 -:101320000501030E426F0501436B010EE66E58EC9A -:101330002FF0E5520501486F020EE66E58EC2FF0D3 -:10134000E5520501496F030EE66E58EC2FF0E552A9 -:1013500005014A6F040EE66E58EC2FF0E5520501C8 -:101360004B6F050EE66E58EC2FF0E55205014C6F01 -:10137000060EE66E58EC2FF0E55205014D6F070E94 -:10138000E66E58EC2FF0E55205014E6F080EE66E42 -:1013900058EC2FF0E55205014F6F090EE66E58EC40 -:1013A0002FF0E5520501506F0A0EE66E58EC2FF053 -:1013B000E5520501516F0B0EE66E58EC2FF0E55229 -:1013C0000501526F0C0EE66E58EC2FF0E552050148 -:1013D000536F0D0EE66E58EC2FF0E5520501546F79 -:1013E0000E0EE66E58EC2FF0E5520501556F0F0E0C -:1013F000E66E58EC2FF0E5520501566F100EE66EC2 -:1014000058EC2FF0E5520501576F400EE66E400E86 -:10141000E66E050EE66E010EE66E010EE66EE6EC79 -:101420001FF0006E050EE15E0050F3CF49F1F4CFDE -:101430004AF125EF0EF0E66A010EE66E38EC2FF069 -:10144000E552E552010EE66E020EE66E38EC2FF024 -:10145000E552E552E66A030EE66E38EC2FF0E552EF -:10146000E552E66A040EE66E38EC2FF0E552E552DE -:10147000E66A050EE66E38EC2FF0E552E552E66AB4 -:10148000060EE66E38EC2FF0E552E552270EE66EBA -:10149000070EE66E38EC2FF0E552E552100EE66EC0 -:1014A000080EE66E38EC2FF0E552E552E66A090EBA -:1014B000E66E38EC2FF0E552E552010EE66E0A0EAC -:1014C000E66E38EC2FF0E552E552E66A0B0EE66E5A -:1014D00038EC2FF0E552E552E66A0C0EE66E38EC79 -:1014E0002FF0E552E552E66A0D0EE66E38EC2FF06D -:1014F000E552E552E66A0E0EE66E38EC2FF0E55244 -:10150000E552270EE66E0F0EE66E38EC2FF0E55230 -:10151000E552100EE66E100EE66E38EC2FF0E55236 -:10152000E55293D317EC13F090D3060E09C5DBFFF9 -:10153000050E0AC5DBFF080E0BC5DBFF070E0CC549 -:10154000DBFF0A0E0DC5DBFF090E0EC5DBFF090E22 -:10155000DBCFE6FF0A0EDBCFE6FF070EDBCFE6FFB1 -:10156000080EDBCFE6FF050EDBCFE6FF060EDBCF76 -:10157000E6FFDCEC14F0006E060EE15E00500101A7 -:10158000010E526F62D3060E09C5DBFF050E0AC5B8 -:10159000DBFF080E0BC5DBFF070E0CC5DBFF0A0ED9 -:1015A0000DC5DBFF090E0EC5DBFF090EDBCFE6FF25 -:1015B0000A0EDBCFE6FF070EDBCFE6FF080EDBCF20 -:1015C000E6FF050EDBCFE6FF060EDBCFE6FFE5EC20 -:1015D00014F0006E060EE15E00500101010E526F24 -:1015E00034D3060E09C5DBFF050E0AC5DBFF080E66 -:1015F0000BC5DBFF070E0CC5DBFF0A0E0DC5DBFFBD -:10160000090E0EC5DBFF090EDBCFE6FF0A0EDBCFAE -:10161000E6FF070EDBCFE6FF080EDBCFE6FF050E89 -:10162000DBCFE6FF060EDBCFE6FFEFEC14F0006E3B -:10163000060EE15E00500101010E526F06D3060E48 -:1016400009C5DBFF050E0AC5DBFF080E0BC5DBFF76 -:10165000070E0CC5DBFF0A0E0DC5DBFF090E0EC51C -:10166000DBFF090EDBCFE6FF0A0EDBCFE6FF070E3E -:10167000DBCFE6FF080EDBCFE6FF050EDBCFE6FF94 -:10168000060EDBCFE6FFFBEC14F0006E060EE15E0B -:1016900000500101010E526FD8D2060E09C5DBFFC2 -:1016A000050E0AC5DBFF080E0BC5DBFF070E0CC5D8 -:1016B000DBFF0A0E0DC5DBFF090E0EC5DBFF0C0EAE -:1016C0000FC5DBFF0B0E10C5DBFF0E0E12C5DBFFD7 -:1016D0000D0E13C5DBFF0D0EDBCFE6FF0E0EDBCFCD -:1016E000E6FF11C5E6FF0B0EDBCFE6FF0C0EDBCFEE -:1016F000E6FF090EDBCFE6FF0A0EDBCFE6FF070EA3 -:10170000DBCFE6FF080EDBCFE6FF050EDBCFE6FF03 -:10171000060EDBCFE6FF07EC15F0006E0B0EE15E68 -:1017200000500101010E526F90D2060E0AC5DBFF78 -:10173000050E0BC5DBFF050EDBCFE6FF060EDBCF8C -:10174000E6FF09C5E6FFAEEC14F0E552E552E552BE -:101750007CD2060E0AC5DBFF050E0BC5DBFF080EAB -:101760000CC5DBFF070E0DC5DBFF0A0E0EC5DBFF48 -:10177000090E0FC5DBFF09C5E6FFC3EC12F0E55209 -:10178000090EDBCF2FF00A0EDBCF30F03BEC21F05F -:101790002EC008F02FC009F030C00AF031C00BF0A5 -:1017A000330E336EE20E346EC20E356E420E366E5E -:1017B00008C02EF009C02FF00AC030F00BC031F085 -:1017C00055EC22F02EC004F02FC005F030C006F01A -:1017D00031C007F0CC0E336EBC0E346E8C0E356EFD -:1017E0003B0E366E04C02EF005C02FF006C030F060 -:1017F00007C031F055EC22F0F1EC22F02DC000F0E2 -:101800002EC001F02FC002F030C003F000C0E6FF90 -:1018100001C0E6FF02C0E6FF03C0E6FF070EDBCF14 -:101820002FF0080EDBCF30F03BEC21F02EC014F08F -:101830002FC015F030C016F031C017F0330E336EE4 -:10184000E20E346EC20E356E420E366E14C02EF0AD -:1018500015C02FF016C030F017C031F055EC22F053 -:101860002EC010F02FC011F030C012F031C013F0B4 -:10187000BD0E336E370E346E860E356E410E366EEB -:1018800010C02EF011C02FF012C030F013C031F094 -:1018900055EC22F0F1EC22F02DC00CF02EC00DF032 -:1018A0002FC00EF030C00FF00CC0E6FF0DC0E6FFF9 -:1018B0000EC0E6FF0FC0E6FF050EDBCF2FF0060ED1 -:1018C000DBCF30F03BEC21F02EC01CF02FC01DF020 -:1018D00030C01EF031C01FF0330E336EE20E346E96 -:1018E000C20E356E420E366E1CC02EF01DC02FF09B -:1018F0001EC030F01FC031F055EC22F0F1EC22F0A8 -:101900002DC018F02EC019F02FC01AF030C01BF0F7 -:1019100018C0E6FF19C0E6FF1AC0E6FF1BC0E6FFCD -:1019200009C5E6FF9AEC13F0206E0D0EE15E205023 -:101930008CD1060E0AC5DBFF050E0BC5DBFF080EBA -:101940000CC5DBFF070E0DC5DBFF09C5E6FFC3ECC9 -:1019500012F0E5520EC5E6FF070EDBCF2FF0080EA2 -:10196000DBCF30F03BEC21F02EC008F02FC009F0A7 -:1019700030C00AF031C00BF0330E336EE20E346E1D -:10198000C20E356E420E366E08C02EF009C02FF022 -:101990000AC030F00BC031F055EC22F02EC004F03C -:1019A0002FC005F030C006F031C007F0CC0E336E0A -:1019B000BC0E346E8C0E356E3B0E366E04C02EF0AF -:1019C00005C02FF006C030F007C031F055EC22F012 -:1019D000F1EC22F02DC000F02EC001F02FC002F07B -:1019E00030C003F000C0E6FF01C0E6FF02C0E6FF22 -:1019F00003C0E6FF050EDBCF2FF0060EDBCF30F085 -:101A00003BEC21F02EC014F02FC015F030C016F0C2 -:101A100031C017F0330E336EE20E346EC20E356EE7 -:101A2000420E366E14C02EF015C02FF016C030F0E6 -:101A300017C031F055EC22F02EC010F02FC011F07D -:101A400030C012F031C013F0BD0E336E370E346E5D -:101A5000860E356E410E366E10C02EF011C02FF07E -:101A600012C030F013C031F055EC22F0F1EC22F04E -:101A70002DC00CF02EC00DF02FC00EF030C00FF0B6 -:101A80000CC0E6FF0DC0E6FF0EC0E6FF0FC0E6FF8C -:101A900009C5E6FF09EC14F0186E0A0EE15E185055 -:101AA000D4D0060E0AC5DBFF050E0BC5DBFF09C54A -:101AB000E6FFC3EC12F0E5520CC5E6FF050EDBCFE6 -:101AC0002FF0060EDBCF30F03BEC21F02EC008F0FB -:101AD0002FC009F030C00AF031C00BF0330E336E66 -:101AE000E20E346EC20E356E420E366E08C02EF017 -:101AF00009C02FF00AC030F00BC031F055EC22F0D5 -:101B00002EC004F02FC005F030C006F031C007F041 -:101B1000BD0E336E370E346E860E356E410E366E48 -:101B200004C02EF005C02FF006C030F007C031F021 -:101B300055EC22F0F1EC22F02DC000F02EC001F0A7 -:101B40002FC002F030C003F000C0E6FF01C0E6FF86 -:101B500002C0E6FF03C0E6FF09C5E6FF65EC14F02E -:101B60000C6E060EE15E0C5070D009C5E6FF7DECF0 -:101B700014F0E5520101010E526F67D08BEC17F0A3 -:101B8000050EF3CFDBFF060EF4CFDBFFA1EC17F061 -:101B9000070EF3CFDBFF080EF4CFDBFF00C540F5E7 -:101BA0000501416B0501030E426F0501436B060EF3 -:101BB000DBCF48F5050EDBCF49F5080EDBCF4AF544 -:101BC000070EDBCF4BF5400EE66E400EE66E050EBF -:101BD000E66E010EE66E010EE66EE6EC1FF0006E9C -:101BE000050EE15E0050F3CF49F1F4CF4AF12DD05C -:101BF00000C540F50501416B0501030E426F05016B -:101C0000436BB8EC17F0000904E00501010E486FC2 -:101C100002D00501486B400EE66E400EE66E050EE2 -:101C2000E66E010EE66E010EE66EE6EC1FF0006E4B -:101C3000050EE15E0050F3CF49F1F4CF4AF105D033 -:101C4000010EE66EDEEC2FF0E552400EE66E000E61 -:101C5000E66E050EE66EE66A010EE66EE6EC1FF035 -:101C6000006E050EE15E0050F3CF47F1F4CF48F16E -:101C70009FD0010149514A1102E1000E08D049C12B -:101C8000E9FF4AC1EAFFEF50800B01E0010E0009B5 -:101C90004DE10101010E516F0501406B01014C51F5 -:101CA0004C2B0501416F0501050E426F0501436B89 -:101CB0000501486B280E006E5D0E016E026A00C0C1 -:101CC000E6FF01C0E6FF02C0E6FF480EE66E050E25 -:101CD000E66E1CEC2FF0036E050EE15E0350400E25 -:101CE000E66E400EE66E050EE66E010EE66E010E25 -:101CF000E66EE6EC1FF0006E050EE15E0050F3CFDD -:101D000049F1F4CF4AF1400EE66E000EE66E050E84 -:101D1000E66EE66A010EE66EE6EC1FF0006E050E5A -:101D2000E15E0050F3CF47F1F4CF48F141D001011B -:101D300049514A1102E1000E08D049C1E9FF4AC1E8 -:101D4000EAFFEF50800B01E0010E000931E100C510 -:101D500040F50501416B0501030E426F0501010EBF -:101D6000436F400EE66E400EE66E050EE66E010E07 -:101D7000E66E010EE66EE6EC1FF0006E050EE15E0B -:101D80000050F3CF49F1F4CF4AF1400EE66E000E59 -:101D9000E66E050EE66EE66A010EE66EE6EC1FF0F4 -:101DA000006E050EE15E0050F3CF47F1F4CF48F12D -:101DB0000F0EE15C02E2E16AE552E16EE552E7CF27 -:101DC000D9FF120001015351541104E1100E536F59 -:101DD000270E546F5307000E545B6DA207D053516A -:101DE00054112EE18C748CB413D027D00101005112 -:101DF00002E18C9422D0000502E18C8409D0020E0D -:101E0000005D02E18C8419D0040E005D03E18C9426 -:101E10008C861200100E005D06E101015351541131 -:101E20000FE18C740AD0200E005D0AE101015351CC -:101E3000541106E18C748CA402D08C9612008C860E -:101E40001200120012001200120085EF2DF0120095 -:101E50001E0EE66E010EE66EB4EC1FF0E552E55282 -:101E6000400EE66E000EE66E050EE66EE66A010EA8 -:101E7000E66EE6EC1FF0006E050EE15E0050F3CF5B -:101E800047F1F4CF48F112006D840101080E686F2C -:101E9000070E696F6807000E695B68516911FAE106 -:101EA0006D941200D9CFE6FFE1CFD9FFFD0EDBCF55 -:101EB0002FF0FE0EDBCF30F0010E2F1801E1305075 -:101EC00033E0E8682F1802E1E86830182BE0030ED1 -:101ED0002F1801E1305024E0040E2F1801E130509A -:101EE0001DE0020E2F1801E1305016E0170E2F18DA -:101EF00001E130500FE0160E2F1801E1305008E0DC -:101F0000150E2F1801E1305001E010D0A1DF0FD0E5 -:101F10009EDF0DD09ADF0BD096DF09D092DF07D07D -:101F200091DF05D091DF03D0000001D000D0010E79 -:101F300000D0E552E7CFD9FF12004BD8E652D0B21D -:101F400002D0010E15D0D0B802D0020E11D0D0B000 -:101F500002D0030E0DD0D0B602D0040E09D0FCAED4 -:101F600002D0050E05D0FCAC02D0060E01D0070E43 -:101F7000DF6ED088D086D084D082D080FC9EFC9C3E -:101F8000DF50E552E552E7CFD9FF1200E65221D8E3 -:101F9000020EE126F350DF6E010EF4CFDBFF1200DC -:101FA000C00EE66EE00EE66EC2EC2FF0E552E55292 -:101FB0001200DF50F36E010EDB50F46E020EE15C96 -:101FC0001200DFCFE6FFE66A38EC2FF0E552E5526B -:0C1FD0001200D9CFE6FFE1CFD9FF1200CC -:041FDC00D6EC18F037 -:101FE000FE0EDB5006E1F80E96163C0E9416959800 -:101FF00008D0FE0EDB0405E1070E9612C30E941204 -:102000009588DBEF18F0D9CFE6FFE1CFD9FFE65294 -:10201000010EE66EE3DFE5528098FE0EDB5004E031 -:10202000FE0EDB5002080FE1839C808A0000839E35 -:102030000000000000008450010BDF6E838E000062 -:102040000000DF04F4E0FE0EDB0404E0FE0EDB50D3 -:1020500002080FE1838C809A0000839E000000003C -:1020600000008450010BDF6E838E00000000DF044F -:10207000F4E0E552E552E7CFD9FF1200D9CFE6FFF1 -:10208000E1CFD9FFE652FD0EDB50DF6EFE0EDBCF57 -:10209000E6FFB9DFE552E66AA1DFE552FE0EDB504E -:1020A00003E1839C808A0CD0FE0EDB0403E1838C69 -:1020B000809A06D0FE0EDB50020802E1839C809AD3 -:1020C000809800008096D9CFE9FFDACFEAFFEF5081 -:1020D000010B02E0848001D08490D9CFE9FFDACFF0 -:1020E000EAFFEF50020B02E0848201D08492D9CF44 -:1020F000E9FFDACFEAFFEF50040B02E0848401D05D -:102100008494D9CFE9FFDACFEAFFEF50080B02E061 -:10211000838801D08398D9CFE9FFDACFEAFFEF5067 -:10212000100B02E0828201D08292D9CFE9FFDACF90 -:10213000EAFFEF50200B02E0828E01D0829ED9CFC1 -:10214000E9FFDACFEAFFEF50400B02E0828001D0D6 -:102150008290D9CFE9FFDACFEAFFEF50800B02E09F -:10216000828C01D0829C000000008086000000006C -:10217000E552E552E7CFD9FF1200D9CFE6FFE1CF14 -:10218000D9FF020EE126FC0EDBCFDEFFDBCFDDFF49 -:10219000FE0EDBCFE6FF37DFE552E66A1FDFE552D2 -:1021A000FE0EDB5003E1839C808A0CD0FE0EDB0424 -:1021B00003E1838C809A06D0FE0EDB50020802E118 -:1021C000839C809A808800008096D9CFE9FFDACF7F -:1021D000EAFFEE52EF50010B02E0848001D08490C0 -:1021E000D9CFE9FFDACFEAFFEE52EF50020B02E05F -:1021F000848201D08492D9CFE9FFDACFEAFFEE5290 -:10220000EF50040B02E0848401D08494D9CFE9FF1D -:10221000DACFEAFFEE52EF50080B02E0838801D0DC -:102220008398D9CFE9FFDACFEAFFEE52EF50100BD7 -:1022300002E0828201D08292D9CFE9FFDACFEAFFB1 -:10224000EE52EF50200B02E0828E01D0829ED9CF59 -:10225000E9FFDACFEAFFEE52EF50400B02E0828056 -:1022600001D08290D9CFE9FFDACFEAFFEE52EF50EA -:10227000800B02E0828C01D0829C000000008086EE -:10228000000000008096D9CFE9FFDACFEAFFEF50D7 -:10229000010B02E0848001D08490D9CFE9FFDACF2E -:1022A000EAFFEF50020B02E0848201D08492D9CF82 -:1022B000E9FFDACFEAFFEF50040B02E0848401D09B -:1022C0008494D9CFE9FFDACFEAFFEF50080B02E0A0 -:1022D000838801D08398D9CFE9FFDACFEAFFEF50A6 -:1022E000100B02E0828201D08292D9CFE9FFDACFCF -:1022F000EAFFEF50200B02E0828E01D0829ED9CF00 -:10230000E9FFDACFEAFFEF50400B02E0828001D014 -:102310008290D9CFE9FFDACFEAFFEF50800B02E0DD -:10232000828C01D0829C00000000808600000000AA -:10233000020EE15C02E2E16AE552E16EE552E7CFAE -:10234000D9FF1200D9CFE6FFE1CFD9FF020EE12677 -:10235000FE0EDBCFE6FF57DEE552010EE66E3EDEF7 -:10236000E552FE0EDB5003E1839C808A05D0FE0E11 -:10237000DB0402E1838C809A80880000839E000049 -:10238000000000008450010B066E8450020B01E037 -:10239000010EE824056E8450040B01E0010E040DCB -:1023A000F3CF04F08350100B01E0010E080DF3CFC2 -:1023B00003F08250020B01E0010E100DF3CF02F08A -:1023C0008250800B01E0010E200DF3CF01F082500E -:1023D000010B400DF3CF00F08250400B01E0010EE5 -:1023E000800DF350001001100210031004100510AE -:1023F0000610E76E010EE7CFDBFF838E00000000C2 -:10240000839E0000000000008450010B066E845083 -:10241000020B01E0010EE824056E8450040B01E07C -:10242000010E040DF3CF04F08350100B01E0010EF8 -:10243000080DF3CF03F08250020B01E0010E100DE6 -:10244000F3CF02F08250800B01E0010E200DF3CF9C -:1024500001F08250010B400DF3CF00F08250400B91 -:1024600001E0010E800DF350001001100210031066 -:10247000041005100610DF6E838EDECF00F0DDCF76 -:1024800001F000C0F3FF01C0F4FF00D0020EE15CD8 -:1024900002E2E16AE552E16EE552E7CFD9FF1200B0 -:1024A000D9CFE6FFE1CFD9FFE652DF6AFE0EDBCFE0 -:1024B000E6FFA9DDE552010EE66E90DDE552FE0E67 -:1024C000DB5003E1839C808A05D0FE0EDB0402E131 -:1024D000838C809A80980000839E0000000000009A -:1024E0008450010B066E8450020B01E0010EE824BB -:1024F000056E8450040B01E0010E040DF3CF04F0CF -:102500008350100B01E0010E080DF3CF03F0825051 -:10251000020B01E0010E100DF3CF02F08250800B90 -:1025200001E0010E200DF3CF01F08250010B400DB0 -:10253000F3CF00F08250400B01E0010E800DF3500C -:102540000010011002100310041005100610DF6EB9 -:10255000838EDF5000D0E552E552E7CFD9FF12005D -:10256000D6EC18F0E652DF6A23EC19F0DF6EFD0EB0 -:10257000DB50DF14DF6EDF5002E0010E01D0000EF1 -:10258000E552DBEF18F0D6EC18F01D0E90EC18F0C9 -:10259000000EB4EC1AF0DBEF18F0D6EC18F023ECD8 -:1025A00019F084080FE023EC19F0C4080BE0E66A88 -:1025B00088EC1AF07EEC1AF0020EE66E11EC30F0A8 -:1025C000E552EDD71C0E90EC18F00A0EB4EC1AF0A0 -:1025D000A3EC19F023EC19F0800804E023EC19F0C7 -:1025E000C008E5E123EC19F0C00802E1A3EC19F002 -:1025F0001E0E90EC18F00F0EB4EC1AF063EC1BF00A -:10260000FA0EDBCFE6FFFB0E1BEC1AF0F80EDBCF69 -:10261000E6FFF90E1BEC1AF0F60EDBCFE6FFF70E25 -:102620001BEC1AF0040E90EC18F0DBEF18F0D6EC6F -:1026300018F0080EE126010ED3EC18F0010EE7CFDA -:10264000DBFF020EE2EC1AF0DF6E030ED3EC18F0A3 -:10265000030EE7CFDBFF040ED3EC18F0020EE7CF3A -:10266000DBFF050ED3EC18F0050EE7CFDBFF060EFF -:10267000D3EC18F0040EE7CFDBFF070ED3EC18F015 -:10268000070EE7CFDBFF080ED3EC18F0F8EC18F0DC -:10269000E66AA8EC19F0090ED3EC18F0010EE7CFAA -:1026A000DBFF0A0EE2EC1AF0DF6E0B0ED3EC18F033 -:1026B000030EE7CFDBFF0C0ED3EC18F0020EE7CFD2 -:1026C000DBFF0D0ED3EC18F0050EE7CFDBFF0E0E8F -:1026D000D3EC18F0040EE7CFDBFF0F0ED3EC18F0AD -:1026E000070EE7CFDBFF100ED3EC18F0F8EC18F074 -:1026F000010EE66EA8EC19F0020EE66EA0EC19F0E1 -:10270000020EE66EE66A93EC19F007E1020EE66E41 -:10271000010EE66E93EC19F002E0000E01D0010EFE -:10272000006E080EE15C02E2E16AE552E16E0050E3 -:10273000DBEF18F0D6EC18F00C0EE1262CEC19F0BB -:10274000D950F20FB8EC1AF0080EEECFDBFF090EED -:10275000EECFDBFF0A0EEECFDBFF0B0EEECFDBFF83 -:102760001F0E90EC18F0080EDBCF00F0090EDBCF47 -:1027700001F00A0EDBCF02F00B0ECDEC1AF00CE0EC -:102780002B0EB4EC1AF00A0EDBCFE6FF0B0E1BEC9F -:102790001AF050EC19F003D00B0EE66EE66A67EC07 -:1027A00018F036EC1BF099EC19F009E141EC1BF044 -:1027B0001BEC1AF083EC1AF088EC1AF020D099EC9C -:1027C00019F003E0FE0EDB040AE141EC1BF0DBCF65 -:1027D000E6FF78EC19F083EC1AF078EC19F099EC3C -:1027E00019F003E0FE0EDB500CE141EC1BF0DBCFF7 -:1027F000E6FFE66A4DEC1AF083EC1AF0E66A4DEC5F -:102800001AF00C0EE15C02E2E16AE552E16EDBEFE8 -:1028100018F0D6EC18F00A0EE12694EC18F02CEC27 -:1028200019F0080EF36EDB6E090EF3CFDBFF1F0EFF -:1028300090EC18F03CEC19F007E0D950080FE96E65 -:10284000DACFEAFFEE8AED5299EC19F00AE1F50EC3 -:10285000DB0402E17CEC19F050EC19F088EC1AF082 -:102860001DD099EC19F003E0FE0EDB0409E1F50E32 -:10287000DB0402E17CEC19F050EC19F078EC19F073 -:1028800099EC19F003E0FE0EDB500AE1F50EDB04D3 -:1028900002E17CEC19F050EC19F0E66A4DEC1AF00C -:1028A0003CEC19F002E036EC1BF090EC1BF01BEC5A -:1028B0001AF083EC1AF067EC18F00A0EE15C02E201 -:1028C000E16AE552E16EDBEF18F0D6EC18F0F90E94 -:1028D000DBCFE6FFE66AE66AE66AE66AD950FA0FF7 -:1028E000B8EC1AF044EC1BF088EC1AF092DF006EA2 -:1028F0000A0EE15E0050DBEF18F0D6EC18F0FE0E89 -:10290000DB5003E099EC19F00FE169EC1BF0C9EC26 -:102910001AF0F3CF61F1F4CF62F1E66AC9EC1AF074 -:10292000F3CF5FF1F4CF60F1FE0EDB0403E099EC2E -:1029300019F010E1BDEC1AF0C9EC1AF0F3CF65F113 -:10294000F4CF66F1010EE66EC9EC1AF0F3CF63F135 -:10295000F4CF64F1010EE4DBDBEF18F0D6EC18F0F5 -:102960001F0EDEDB63EC1BF0010EDADBDBEF18F091 -:10297000E7EC1AF099EC19F005E12D6A2E6A2F6A3E -:10298000306A12D00B0ECCDB88EC1AF048EC19F050 -:10299000DE6ADD6ADECF2DF0DECF2EF0DECF2FF047 -:1029A000DDCF30F0DD52DD52040EE15C02E2E16A7F -:1029B000E552E16EDBEF18F049EC1AF0B6EC19F0D5 -:1029C0009DEC19F01BEC19F0F6D349EC1AF0B6ECBB -:1029D00019F0E7EC18F0020E1BEC19F0ECD349ECFF -:1029E0001AF0DEDAF4DBE66A57EC19F0D2DA65ECBD -:1029F0001AF068EF1AF049EC1AF065EC1AF0E66A82 -:102A000057EC19F0C6DACCDAE2DB68EF1AF0CEDB6D -:102A10003C0EE12615EC1AF005EC1BF015EC1AF053 -:102A20004DEC1BF0FCEC1AF008C02EF009C02FF0A2 -:102A30000AC030F00BC031F055EC22F024EC1BF052 -:102A400060EC1AF00EEC1BF02DEC1BF060EC1AF0B1 -:102A500064EC19F0FCEC1AF014C02EF015C02FF045 -:102A600016C030F017C031F055EC22F033EC1AF0FC -:102A70001BEC1BF06CEC21F0F3EC1AF0336A346AB7 -:102A8000800E356EEBEC1AF0380E2EC0DBFF390EDF -:102A90002FC0DBFF3A0E30C0DBFF3B0E31C0DBFF47 -:102AA00015EC1AF0F3EC1AF0D3DB60EC1AF05ADBF9 -:102AB000CFDBB4EC2AF0086E080EE15E0850080E79 -:102AC0002DC0DBFF090E2EC0DBFF0A0E2FC0DBFF7F -:102AD0000B0E30C0DBFFF2DBF60EDB5007E0D95007 -:102AE000F40FB8EC1AF0EE50ED103AE168DB080E86 -:102AF000DBCF0EF0090EDBCF0FF00A0EDBCF10F0AC -:102B00000B0E73DA42DA53EC1AF02E6A2F6A800E3B -:102B1000306E400E316E380EDBCF33F0390EDBCF26 -:102B200034F03A0EDBCF35F03B0E5FEC1BF08CEC53 -:102B30001AF08EDB77EC1AF02DC002F02EC003F0F5 -:102B40002FC004F030C005F02DC02EF0D4EC1AF0E8 -:102B500071EC1AF031DF0A6E060EE15E0A50D4D134 -:102B6000380EDBCF04F0390EDBCF05F03A0EDBCFA9 -:102B700006F03B0EDBCF07F00C6A0D6A0E6A400EC2 -:102B80000F6EA8DA55EC22F0E1EC19F0F40EDBCF71 -:102B90002FF0F50E99DBB8DB30EC1AF06CEC21F07D -:102BA000140E2EC0DBFF150E2FC0DBFF160E30C03B -:102BB000DBFF170E49DA15EC1AF030EC1AF055EC81 -:102BC00022F0180E2EC0DBFF190E2FC0DBFF1A0EED -:102BD00030C0DBFF1B0E38DA60EC1AF00EEC1BF095 -:102BE00030EC1AF055EC22F01C0E2EC0DBFF1D0E4F -:102BF0002FC0DBFF1E0E30C0DBFF1F0E31C0DBFF1E -:102C00001C0EDBCF00F01D0EDBCF01F01E0EDBCF64 -:102C100002F01F0EDBCF03F0A2DB27EC1AF055EC1D -:102C200022F0200E2EC0DBFF210E2FC0DBFF220E74 -:102C300030C0DBFF230E31C0DBFFD950180FE96E27 -:102C4000DACFEAFF240EEECFDBFF250EEECFDBFF5F -:102C5000260EEECFDBFF270EEECFDBFFFD0EDBCF28 -:102C60002FF0FE0E84EC1BF0200EDBCF33F0210E94 -:102C7000DBCF34F0220EDBCF35F0230EF7DB280E4E -:102C80002EC0DBFF290E2FC0DBFF2A0E30C0DBFF7A -:102C90002B0E31C0DBFF60EC1AF084EC1BF0240E2D -:102CA000DBCF33F0250EDBCF34F0260EDBCF35F053 -:102CB000270EDCDB2C0E2EC0DBFF2D0E2FC0DBFF22 -:102CC0002E0E30C0DBFF2F0E31C0DBFF2C0EDBCF12 -:102CD00004F02D0EDBCF05F02E0EDBCF06F02F0E0D -:102CE000DBCF07F03CDB1BEC1BF055EC22F093DA5A -:102CF000300E2EC0DBFF310E2FC0DBFF320E30C096 -:102D0000DBFF330E31C0DBFF280EDBCF2EF0290EA8 -:102D1000DBCF2FF02A0EDBCF30F02B0EDBCF31F0E4 -:102D20007ADA340E2EC0DBFF350E2FC0DBFF360EF5 -:102D300030C0DBFF370E31C0DBFFD950300F70DB06 -:102D4000D950340F6DDBB4EC2AF0006E080EE15E52 -:102D500000500C0E2DC0DBFF0D0E2EC0DBFF0E0E43 -:102D60002FC0DBFF0F0E30C0DBFF006A016A026A72 -:102D7000400E036E00C0E6FF01C0E6FF02C0E6FFA2 -:102D8000E66E3FDB05EC1BF063DA6FEC1BF02DC049 -:102D900014F02EC015F02FC016F030C017F0EFEC75 -:102DA0001AF0B4EC2AF0186E080EE15E1850E552E5 -:102DB000E7CF03F0E552E7CF02F0E552E7CF01F0AD -:102DC000E552E7CF00F02DC004F02EC005F02FC073 -:102DD00006F030C007F0A9DB3ADB55EC22F0100E0C -:102DE0002EC0DBFF110E2FC0DBFF120E30C0DBFF49 -:102DF000130E31C0DBFFF60EDB5002081CE13BDB9B -:102E00006BEC21F09BDB6CEC21F09FD967DA060EAE -:102E10002FC0DBFF070E30C0DBFF000EDFCF2FF02F -:102E2000010EA0D9020EB0DBCCDA09DB040E2FC0F4 -:102E3000DBFF050E4ED02E6A2F6A306A400E316ECF -:102E4000080EDBCF33F0090EDBCF34F00A0EDBCFF8 -:102E500035F00B0E5FEC1BF0C6DB0C0EDBCF04F085 -:102E60000D0EDBCF05F00E0EDBCF06F00F0EDBCF25 -:102E700007F004C033F005C034F006C035F007C0D9 -:102E800036F06BEC21F00C0E2EC0DBFF0D0E2FC0C8 -:102E9000DBFF0E0E30C0DBFF0F0E31C0DBFFEBDAC5 -:102EA0006CEC21F04BDB6BEC21F04FD917DA040E00 -:102EB0002FC0DBFF050E30C0DBFF020EDBCF2FF093 -:102EC000030E50D942DB7DDABADA060E2FC0DBFFE3 -:102ED000070E30C0DBFF59D81DD9040EDBCF2FF011 -:102EE000050E57DA7CDB31DB41DA79DBE66A63DB3E -:102EF00011D9060EDBCF2FF0070E4BDA1EDA44DBBA -:102F000035DA6DDB010E97D93C0EE15C02E2E16A35 -:102F1000E552E16E50D15BDBDCDBBAD9E66AF9D968 -:102F200001015F51EE5C066E6051EE58076E615113 -:102F3000EE58086E625119D902E2E16AE552E16E7B -:102F40003AD145DB1ADBA4D9010EE66EE2D90101C4 -:102F50006351EE5C066E6451EE58076E6551EE5893 -:102F6000086E665102D902E2E16AE552E16E23D1B0 -:102F7000040EE66EE66AD7D906E0040EE66E010E90 -:102F8000E66ED1D901E1000C010CF2DF0009FDE091 -:102F90001200B1DB1DDA94DAFCD921DB15EF1AF04F -:102FA0002EC024F02FC025F030C026F031C027F00D -:102FB000350E336EFA0E346E0E0E356E3C0E366ED6 -:102FC00055EC22F02EC020F02FC021F030C022F0AE -:102FD00031C023F0336A800E346E810E356E430E9D -:102FE000366E55EC22F0B6EF19F0DBCF11F0336AF4 -:102FF000346A340E356E430E366E0EC02EF00FC09E -:103000002FF010C030F011C031F055EC22F02EC07E -:103010000AF02FC00BF030C00CF031C00DF0DB0E09 -:10302000336E0F0E346E490E356ED5DA75DAE4DA8A -:1030300002C02EF0B9DA6BEC21F053DAD0DC126E5C -:10304000060EE15E1250120031C0DBFF046A056A11 -:10305000800E066E3F0E076E0C6A0D6A0E6A400EF9 -:103060000F6E04C0E6FF05C0E6FF06C0E6FF07C01E -:10307000E6FF0CC0E6FF0DC0E6FF0EC0E6FFE66E01 -:103080002EDBE552E7CF0FF0E552E7CF0EF0E55229 -:10309000E7CF0DF0E552E7CF0CF0E552E7CF07F0B0 -:1030A000E552E7CF06F0E552E7CF05F0E552E7CF6E -:1030B00004F02DC010F02EC011F02FC012F030C05F -:1030C00013F033DA48DA55EC22F0E1EF19F020DAA8 -:1030D0004DEF1AF0F40EDBCF2FF0F50E9FDAC3D9C7 -:1030E000ABEF1AF089DA27EF1AF0140EDBCF00F0FD -:1030F000150EDBCF01F0160EDBCF02F0170EDBCF83 -:1031000003F0336A800E346E010E356E430E366E58 -:1031100027EF1AF0F70EDBCF2FF0F80EE8EF19F0DB -:10312000E66EF6D97EEF1AF0D9CFE9FFDACFEAFFE3 -:10313000FA0EDBCFEEFFFB0EDBCFEEFFFC0EDBCF9C -:10314000EEFFFD0EDBCFEEFF1200100EDBCF33F0F3 -:10315000110EDBCF34F0120EDBCF35F0130EAFDAE9 -:10316000C2EF22F05BDA24EF1BF0EE58096E06C0C6 -:103170002DF007C02EF008C02FF0306E52EC21F079 -:103180002EC002F02FC003F030C004F031C005F0B3 -:1031900049DA02EC22F0A8DA2FC0F3FF30C0F4FFC6 -:1031A000040EE15C12000EDAE76E1200D9CFE6FFE2 -:1031B000E1CFD9FF1200E552E7CFD9FF120073D952 -:1031C000026A036AB40E046E420E056E1200000E0F -:1031D000186C191E19221A1E1A221B1E1B2218C037 -:1031E000E6FF19C0E6FF1AC0E6FF1BC0E6FF1200AB -:1031F000060EE7CFDBFFDBCFE6FF070EDBCFE6FFF8 -:10320000040EDBCFE6FF050EDBCFE6FF89DADBCF6E -:10321000E6FF83EF1AF0140EDBCF33F0150EDBCF91 -:1032200034F0160EDBCF35F0170EDBCF36F002ECA4 -:1032300022F0F3EF1AF0E66EBED9020EE66E7DECD8 -:1032400014F0E552120064D950EC12F0E55212006D -:1032500060DA31C0E6FF1200D950F60F89D9040EAA -:10326000EECFDBFF050EEECFDBFF060EEECFDBFF72 -:10327000070EEECFDBFF1200040EDBCF00F0050ED1 -:10328000DBCF01F0060EDBCF02F0070ECDEF1AF018 -:1032900080D9020EF3CFDBFF030EF4CFDBFF120069 -:1032A000080EDBCFE6FF090EDBCFE6FF12009AEC3B -:1032B00013F0286E0D0EE15E28501200020EE66E2D -:1032C000C3EC12F0E5521200A9D92EC018F02FC09D -:1032D00019F030C01AF031C01BF01200020E2FC0DE -:1032E000DBFF030E30C0DBFF06DADBCF30F012006D -:1032F000010EE66E4DEF1AF0D950080FE96EDACFE5 -:10330000EAFFEE52ED881200336A346A356AEBEF59 -:103310001AF03FD9F3CFDEFFF4CFDDFFD9CFE9FFBD -:10332000DACFEAFF1200B0EC12F0E552E5520009E4 -:103330001200FE0EDB500208120051D9020E1200DC -:10334000E66E7EEF1AF0E4D8C3EC12F0E5521200FC -:10335000CDEC12F0006E090EE15E00501200336AEF -:10336000346A800E356EBF0E366E12002EC01CF011 -:103370002FC01DF030C01EF031C01FF053D9C0D98E -:103380002DC018F02EC019F02FC01AF030C01BF05D -:10339000120044D962D946D955EC22F087D9BD0E26 -:1033A000336E370E346E860E356E410E366EA8D9EA -:1033B0002DC00CF02EC00DF02FC00EF030C00FF05D -:1033C000120023D919D937D902EC22F0F3EF1AF001 -:1033D00025D91BD927D955EC22F036D9CC0E336E1E -:1033E000BC0E346E8C0E356E3B0E366E89D92DC0F8 -:1033F00000F02EC001F02FC002F030C003F0EFEF5C -:103400001AF0140EDBCF0CF0150EDBCF0DF0160EFC -:10341000DBCF0EF0170EDBCF0FF05CDE6BEF21F091 -:10342000E96EDACFEAFF44EF1BF0FD0EDBCF2FF0A1 -:10343000FE0E0EEF1BF0DBCFE6FF67EF18F05BD957 -:10344000EDD82BD94FDE55EC22F0C2EF22F000C0B0 -:103450002EF001C02FF002C030F003C031F0120096 -:10346000FCD872EF18F022D9FCEF1AF028D9CDD889 -:1034700039DE6BEF21F0A3DE0C0EDBCF0EF00D0E6C -:10348000DBCF0FF00E0EDBCF10F00F0EAEDD75EFC1 -:1034900018F08CDE13DFC9EF17F0BDEC10F0E55229 -:1034A000E552E5521200F70EDBCFE6FFF80EDBCF58 -:1034B000E6FFF90EDBCFE6FFFA0EDBCFE6FF1200E8 -:1034C000FB0EDBCF2FF0FC0E12006ADDEFEF1AF0DF -:1034D000010EE66EECDE020EE66E7DEC14F0E552B7 -:1034E0006AD602D92FC0E6FF30C0E6FF1200C7EC53 -:1034F00026F0E552E552E552E55212003EEC10F09E -:10350000E552E5521200DECFE6FFDDCFE6FF120006 -:10351000FE0EDBCFE6FF12002EC006F02FC007F034 -:1035200030C008F031C009F012002DC033F02EC0B9 -:1035300034F02FC035F030C036F0120006DE2FC058 -:10354000DEFF30C0DDFF75EF18F0000EDFCF2FF08B -:10355000010E0EEF1BF00CC02EF00DC02FF00EC0B0 -:1035600030F00FC031F01200E66EE66A67EF18F037 -:10357000E96EFF0EDA20EA6E12000A0EE66E010E08 -:10358000DFDE010EE66E1200DBCF2FF0030E0EEF32 -:103590001BF0A2EC11F0E5521200DBCF03F000505B -:1035A000011002100310120003C02FF004C030F00D -:1035B00005C031F012009AEC13F0206E0D0EE15EA2 -:1035C00020501200E66E58EC2FF0E5521200EEDDAE -:1035D000040EE1261200400E366E02EF22F02DC0DE -:1035E000E6FF89EF1BF02EC000F02FC001F030C0C5 -:1035F00002F031C003F012002EC033F02FC034F0BF -:1036000030C035F031C036F012002EC008F02FC0A7 -:1036100009F030C00AF031C00BF01200DBCF30F0FF -:103620003DEF21F0330E336EE20E346EC20E356E76 -:10363000420E366E120004C02EF005C02FF006C0F8 -:1036400030F007C031F012002EC004F02FC005F09A -:1036500030C006F031C007F012002EC014F02FC0A9 -:1036600015F030C016F031C017F01200060EDBCF97 -:10367000E6FF070EE0DE040EDBCFE6FF050E1BEFD4 -:103680001AF052DD90EF1BF0EECFE6FFEECFE6FF33 -:10369000EECFE6FFEFCFE6FF12002EC00CF02FC0FA -:1036A0000DF030C00EF031C00FF012002EC010F03F -:1036B0002FC011F030C012F031C013F01200DBCF78 -:1036C00036F055EF22F0FC0EDBCFE6FFFD0E1BEFD0 -:1036D0001AF00A0EE66EE66A11DFE66A1200D950A9 -:1036E000380F9EDE77EF1AF0C2EC22F02FC000F008 -:1036F00030C001F01200F90EDBCF2FF0FA0E1200ED -:1037000055EC22F0F1EF22F02DDDFEDD6CDF01EF54 -:103710001AF02EC0E6FF2FC0E6FF30C0E6FF120011 -:0A372000020EDBCFE6FF030E1200DD -:06372A008DEC20F06A6A3C -:10373000686AC0EC20F06D8C6E6A70EC20F06D9CB5 -:10374000DF6AA1EC20F010E2DF50040DF3CFE9FFB7 -:10375000F4CFEAFF000EE926040EEA22EE6AEE6AD2 -:10376000EE6AEE6ADF2AEDD7160E706E68A604D0F8 -:10377000030E36EC20F0FAD70101136B186B196BAE -:103780001A6B6D98080E0B6F040E0C6F016B006BBB -:10379000E5524BEF20F08DEC20F0010100510BE1E0 -:1037A0006D6A696AC0EC20F06DB602D06D86FCD7F8 -:1037B0000101010E006F000508E16DBA06D0686ACC -:1037C000696A69806988020E006F6850040B07E01F -:1037D0006950040B04E0020E36EC20F089D86DB27B -:1037E00047D06850010B14E06950010B11E09DDFD8 -:1037F0000101040E006F0401200E026F040E036F1E -:10380000080E016F006B8C0E0013E66AFFEC20F0CF -:103810006850100B07E06950100B04E060D8040EEC -:1038200036EC20F06850400B0BE06950400B08E08C -:10383000C7EC20F0020E3EEC20F0060E36EC20F035 -:103840006850200B04E06950200B01E035D8685027 -:10385000020B0AE06950020B07E0C7EC20F0E668B3 -:10386000E6681FEC21F06A6A040E0101005D02E2C5 -:10387000A19A1FD069A61CD0DF6A040EDF5C18E293 -:1038800068A616D06CCF20F1030E36EC20F0780E2F -:103890000101201502E138D809D0000EE66EE66A73 -:1038A000200EE66E010EE66E010EE8DBDF2AE5D79C -:1038B000A19AE5524BEF20F070A00ED059EC20F009 -:1038C000EF50800808E1D5DBEF50840804E159ECA3 -:1038D00020F08C0EEF6E7090050E36EF20F06984AC -:1038E000040EC4DB6D8279EC20F0040E3EEF20F074 -:1038F00079EC20F0030EC2DB6D92699468A403D0CA -:10390000020EB4DBFBD712008DEC20F0FD0E01019E -:1039100020153DE17E0E2015E8407F0B040DF3CF0E -:1039200003F1F4CF04F1000E0327040E042303C1B6 -:1039300005F104C106F10575BCDBEF503C0BE84214 -:10394000E8420D0822E1B5DBF6EC20F0EECF00F006 -:10395000EFCF01F0280E001816E1040E011813E154 -:1039600030EC21F0DF6AEDDB0EE2DF50A9EC20F055 -:10397000DF50EA6A200FE96E040EEA22E552E750B2 -:10398000EF6EDF2AF0D70AD807D01AD805D0FD0E7F -:103990002015040801E122D8E5527DD36ADBEF50FF -:1039A000800B02E066DBEF6A01010F6B106B146B9A -:1039B000156B136B64D89DDB170E60DB74EF1EF084 -:1039C000020E0101105D02E101EF1FF034D8010188 -:1039D000215102E1FBEF20F0216B12009EDB49DB5D -:1039E000EF50400B01E0010EDF6E01010B75080E78 -:1039F000005D09E122C46EFF6E50000802E2100E65 -:103A000001D0040E006F100513E134EC21F0A6D9AB -:103A1000020E01010F5D03E12CDB840E07D0DF50A5 -:103A200003E127DBC80E02D024DB880EEF6E01D045 -:103A300002D8E55230D32BDB0101106B1ADBEF6AA1 -:103A4000040E0B19006E0CC101F0DE6E0CC1DDFF1F -:103A500019DBEF6A18AF0CD01B511C1107E005D021 -:103A60001CC1FAFF01011B51F96EFADF0101189F19 -:103A7000020EE15C02E2E16AE552E16E0CD3040160 -:103A80002051600BE842E842E842E842E84200097F -:103A900001E0120021510C0A45E00B0A3FE00C0A3C -:103AA00031E0010A22E00B0A1EE0020A1CE0030AD0 -:103AB00018E0080A10E0010A0CE00F0A08E0030A07 -:103AC00001E012000101138F080E006F1200F4EFE5 -:103AD0001DF05DEF1FF00101010E116F010E126F5D -:103AE0000CD035EF1EF093EF1DF024510101116F42 -:103AF000126B020E1127010E12231381010E146F97 -:103B0000138F12000101138F04012451EA6A020F7E -:103B1000E96E010EEA2222C4EFFF1200EADA160E65 -:103B20003EEF20F012007EDB040EE12604012205A8 -:103B300010E120511F0B00090CE10101138F030E4E -:103B40000401215D04E10101010E1F6F02D001019A -:103B50001F6B0401225141E120511F0B02083DE17E -:103B600024510F0B000939E00101138F040124BF18 -:103B700005D0A4DA070EE926010E04D09FDA0B0E59 -:103B8000E926010ED2DA030E215D03E17BDA840E11 -:103B900023D024510F0B016A700F006E0F0E01220B -:103BA000020E00C0DBFF030E01C0DBFF020EDBCF05 -:103BB000E9FF030EDBCFEAFFEE90ED5224AF06D013 -:103BC00061DAEF6ADF745EDA400E06D05BDA880EE7 -:103BD000EF6EDF7457DAC80EEF6E040EE15C02E29E -:103BE000E16AE552E16E57D2800E0401205D3CE1AE -:103BF0000101C00E136F04012351030A1EE0010AE4 -:103C000009E0030A2FE10101D80E116F5B0E126F5C -:103C1000120E22D0C3DA820EF6265C0EA2DA020E53 -:103C20000101F76A1125F66E1251F7220900F5CF4E -:103C300014F10A00F5CF15F11200030E225D0FE218 -:103C4000ADDA840EF6265C0E8CDA11C1F6FF12C1D5 -:103C5000F7FF0800F5500101146F156B1200010108 -:103C6000136B12000101136B120011DA0401286BAF -:103C7000296B20511F0B020A11E0030A0CE0010A14 -:103C800022E10101138F0401288101011F051BE1BD -:103C90000401288318D00101138F15D00101138F5F -:103CA000040124BF05D00ADA070EE926010E04D06C -:103CB00005DA0B0EE926010E38DAE4D9EF50040BD1 -:103CC00002E0010E286F010113AF07D0280E116F1B -:103CD000040E126F1381020E146F020EE15C02E2F9 -:103CE000E16AE552E16ED7D16D98010113BF08D0AA -:103CF00018AF02D061DA2AD07EDABBD9840E27D081 -:103D000018BF2BD0040120AF24D0010114510401AD -:103D1000265D010115510401275904E226C414F15E -:103D200027C415F11BD80101010E106FA1DA800E16 -:103D3000EF6E216BBED9EE52080EEF6E91DAB9D953 -:103D4000840EEF6E010E216F8FDA93D9C80EEF6EDD -:103D50001200010131DAC80EEF6E120098D901018C -:103D6000080E145D000E15590DE214C1DEFF15C1D9 -:103D7000DDFF0F5102E1010E03D00F0506E1020E37 -:103D80000F6F03D0080EDE6EDD6A73D9EF9271D922 -:103D9000EF906FD9010EDB50EF126BD9EE52DFCFEF -:103DA000EFFF000EDB50145F010EDB50155B280E99 -:103DB0001D6F040E1E6F13B10FD0F7D91BE011C198 -:103DC000F6FF12C1F7FF112B000E12230800F55069 -:103DD00096D9F3E2DB06F1D7E8D90CE011C1E9FF8F -:103DE00012C1EAFF112B000E1223EF5088D9F4E222 -:103DF000DB06F2D7020EE15C02E2E16AE552E16E17 -:103E00004AD145D956D9EE52EFCFDFFFDFCF00F0D0 -:103E100000500101195D000E1A5903E219C1DFFFBC -:103E200009D0DF50006E016AE850195D196F01502A -:103E30001A591A6F010EDB6ADF50F36E010EDBCFE9 -:103E4000F4FFF350F45C10E2010EDB5082D916C18E -:103E5000E9FF17C1EAFF162B000E1723E552E750C2 -:103E6000EF6E010EDB2AE8D7000ED8801955000E40 -:103E70001A550DE2F4D854D91CD9EF50400B03E188 -:103E8000EAD9C80E02D0E7D9880EEF6E0FD0F0D96C -:103E9000840EEF6E1B511C1107E005D01CC1FAFF08 -:103EA00001011B51F96EFADF0101189F020EE15C5E -:103EB00002E2E16AE552E16EEED00101138F10D902 -:103EC000010EE66EE66AE66A020EE66E010EAFD9F4 -:103ED00022C401F10401225104E10101100E006F1E -:103EE00012000101200E006F04D9150E3EEF20F0E4 -:103EF000CED8000EDE6E040EDD6EE8D8040DF35051 -:103F0000006E016A020E0F0B05E0D89001320032FC -:103F1000E806FBE1D89000360136D890003601362D -:103F2000D9CFE9FFDACFEAFF0050EE260150ED22AB -:103F3000A9D8EF9EFD0EDB5002E16AD901D06DD900 -:103F4000EA22DECFEEFFDDCFEDFF9CD8EF9C9AD8C2 -:103F5000040EE926000EEA22EF8C020EE15C02E27A -:103F6000E16AE552E16E97D092D8FE0EDB50016A0D -:103F7000700F006E0F0EDFD885D8FD0EDBCFEFFF80 -:103F8000DBA402D0E66AF5D8FD0EDBA203D0010E59 -:103F9000E66EEFD8020EE15C02E2E16AE552E16E04 -:103FA0007AD075D8FE0EDB5005E125D962D8840E93 -:103FB000EF6E05D08BD80CD989D8010F09D9020E24 -:103FC000E15C02E2E16AE552E16E65D060D8FD0E87 -:103FD000DB5002E022D901D01BD9A7D853D806D98B -:103FE000FB0EDBCFEEFFFC0EDBCFEDFF4BD8EE522E -:103FF000FA0EDBCFEFFF400E45D8E850EF16880EE3 -:1040000041D8E850EF12FD0EDB5002E006D901D096 -:10401000FFD8EA22EF74DECF00F0DDCF01F000C060 -:10402000F3FF01C0F4FF020EE15C02E2E16AE55237 -:10403000E16E31D0F7D8010EF36EFC0EDB5004E0D8 -:10404000D890F336E806FCE1F31C006EFD0EDBCFE2 -:10405000E9FFFE0EDBCFEAFF0050EF161CD0FBD8C5 -:10406000EE52080EEF6EF7D8F6EF20F0E66EFFEF97 -:1040700020F00BC1E9FF0CC1EAFF1200E66EE66A10 -:104080001FEF21F0DECFE9FFDDCFEAFF1200CAD833 -:10409000020EE1261200E552E7CFD9FF1200D6D872 -:1040A0002BEF21F0FE0EEA6ADB34FE0BEA36E96EF6 -:1040B000120003C1E9FF04C1EAFF120024510F0BF3 -:1040C000E96EEA6AD890E936EA361200FD0EDB5056 -:1040D000E824026EFE0EDB50040DF35002241200A1 -:1040E000000EE66EE66AE66A710EE66E0F0E17EFD8 -:1040F00021F0000EE66EE66AE66EE66A1200E66EF3 -:104100001DC1E9FF1EC1EAFF1D2B000E1E23E55253 -:10411000E750EF6EDF06010E120084D8E65212005F -:10412000280EEE6E040EED6E1200EA22EECFDEFFD8 -:10413000EDCFDDFF1200012200C0DEFF01C0DDFF78 -:104140001200DF50006E016A080E005C000E01587C -:104150001200EA6A280FE96E040EEA22EF50E66EBA -:104160001200F7220900F5CF11F10A00F5CF12F184 -:104170001200FE0EDBCFE6FFBBDEE552E552120079 -:10418000160E6F6E9F0E6B6E7B0E696E1200010E27 -:10419000E66EE66A000EE66EE66A12002251F66EE0 -:1041A000F76AD890F636F7361200D9CFE9FFDACFA2 -:1041B000EAFFEE50ED101200020E106F5ADFEE52C1 -:1041C000EF6A57DFC80EEF6E4ADFAADF2BEF21F050 -:1041D000040DF3CF00F0F4CF01F0000E0026040E22 -:1041E000AADF840E4FDFE850EF121200020EE9261C -:1041F000000EEA2212003CD88C0EEF6E1200680E00 -:10420000E66E0F0EE66E16DFE552E552E55212003D -:1042100049DF070EE926010E120044DF0B0EE926E6 -:10422000010E1200D9CFE6FFE1CFD9FF1200E66EF2 -:1042300002EC2FF0006E050EE15E0050120052EC11 -:104240000FF0006E060EE15E00501200200EEE6EC2 -:10425000040EED6E120005C1E9FF06C1EAFF12006F -:1042600028DFC4DF26EF21F004DFC0DF90EF20F06D -:06427000F6DE4FEF20F026 -:0A427600389E08D0389E30AE05D007 -:104280002F6C301EE86A3022388E30C02AF02FC0E2 -:1042900029F03C6A3B6A8E0E2B6E2C6A44EF23F0A9 -:1042A000389E0CD0389E30AE09D02D6C2E1E2F1E9D -:1042B000301EE86A2E222F223022388E30C02AF09B -:1042C0002FC029F02EC03CF02DC03BF09E0E2B6E6F -:1042D0002C6A44EF23F0367E386A80EC23F098ECA9 -:1042E00023F038B628EF23F038A20AD038AA03D03A -:1042F00038BE28EF23F038A434EF23F031EF23F059 -:1043000038AA05D038AC34EF23F031EF23F038A0D1 -:104310000AD038A808D038BE04D038A402D03DEF67 -:1043200023F041EF23F03B6A2C6A3650315C3A6E41 -:1043300010E32EC03CF02FC029F030C02AF031C06D -:1043400039F033C02EF034C02FF035C030F0383A99 -:1043500009D033C03CF034C029F035C02AF036C053 -:1043600039F03A6C389E38BC388E39C02BF038B0F2 -:1043700070EF23F01A0E3A6070EF23F02B6A316A67 -:1043800038A408D02E6C2F1E301E311EE86A2F2252 -:104390003022312238AC08D03C6C291E2A1E2B1E3C -:1043A000E86A29222A222B222D6A3A5207E0313468 -:1043B00030322F322E322D323A2EF9D72E503C2663 -:1043C0002F50292230502A2231502B222DC03BF071 -:1043D000389E2BAE0BD03B6C3C1E291E2A1E2B1E7A -:1043E000E86A3C2229222A222B22388E2BA006D0D2 -:1043F000D8802A3229323C323B32392A39C02BF05C -:1044000044EF23F0386A80EC23F098EC23F038B6C0 -:1044100028EF23F038A205D038BA28EF23F02FEF89 -:1044200023F038BA3BEF23F038A005D038B828EF96 -:1044300023F03BEF23F038B82FEF23F02C6A7F0EE8 -:1044400031242B6EE86A2C2236502B5EE86A2C5AF7 -:104450001A0E396E316A3B6A3C6A296A2A6A3350FD -:104460002E5E34502F5A3550305A000E315A09E71B -:1044700033502E2634502F2235503022000E312258 -:1044800001D03B8AD8902E362F3630363136D89030 -:104490003B363C3629362A36392EE1D730502F109C -:1044A0002E10D8A43B8A44EF23F0386A80EC23F026 -:1044B00098EC23F038B628EF23F038A205D038B8AE -:1044C00028EF23F02FEF23F038AA05D038B028EFDB -:1044D00023F02FEF23F038B002D038A802D03BEF02 -:1044E00023F02C6A365031242B6EE86A2C227E0E83 -:1044F0002B5EE86A2C5A3B6A3C6A296A2A6A355064 -:104500003002F4CF2AF0F3CF29F034503002F350C8 -:104510003C26F4502922000E2A2235502F02F35057 -:104520003C26F4502922000E2A2233503002F35048 -:104530003B26F4503C22000E29222A2234502F021E -:10454000F3503B26F4503C22000E29222A223550FB -:104550002E02F3503B26F4503C22000E29222A2240 -:1045600033502F02F4503B26000E3C2229222A22EF -:1045700034502E02F4503B26000E3C2229222A22DF -:1045800044EF23F0386A80EC23F038B6CCEF22F009 -:1045900038A20ED038B405D07F0E306EFF0E2F6ECD -:1045A0001FD0800E306E2F6A1BD0306A2F6A18D051 -:1045B00038B0FBD78F0E3160EDD77E0E3164F5D762 -:1045C0008E0E315C05E0D89030322F32312AF8D788 -:1045D00038A406D02F6C301EE86A302230AEE5D702 -:1045E0001200386A80EC23F038B6FBEF22F038A2D4 -:1045F0000FD038B407D07F0E306EFF0E2F6E2E6EA8 -:104600002D6E25D0800E306E01D0306A000EF6D7A8 -:1046100038B0FBD72D6A9F0E3160EBD77E0E316428 -:10462000F4D79E0E315C07E0D89030322F322E3214 -:104630002D32312AF6D738A40AD02D6C2E1E2F1E0B -:10464000301EE86A2E222F22302230AEDED7120032 -:104650007F0E316EFF0E306E2F6E2E6E12007F0EAB -:1046600038BEFF0E316E02D07F0E316E800E306E7E -:104670002F6A2E6AF3D738AE04D0800E316E306ABE -:10468000F7D7316A306AF4D72A5029103C103B1012 -:10469000F8E02CBEF0D72ABE0CD02B502C10EBE04B -:1046A000D8903B363C3629362A362B06D8A02C0625 -:1046B000F2D72C50D4E12B28D2E03BAE11D07F0EA4 -:1046C0003B1402E13CA00CD03C2AE86A29222A22B1 -:1046D00007E3D8802A3229323C322B2A2B28BFE02C -:1046E0002B50C9E03CC02EF029C02FF02A34306E88 -:1046F0002B30316E3032319E38BE318E2EEF23F0AA -:104700003036313602E33884387E06E13880316A4B -:10471000306A2F6A2E6A1200312803E0D8803032C6 -:104720001200D890303202E138821200388612002E -:104730003536363602E3388C387E06E13888366AFC -:10474000356A346A336A1200362803E0D88035327D -:104750001200D8903532EAE1388A1200C0EC23F01A -:1047600038B6000C38B0000C38B4000C010CC0ECAA -:1047700023F038B6000C38B0000C38A4000C010C43 -:10478000386A80EC23F098EC23F038B6120038AE8B -:1047900008D038A004D038A802D038801200389051 -:1047A00012003650315C0BE13550305C08E134507A -:1047B0002F5C05E133502E5C02E138801200D8A056 -:1047C00002D0388E10D0315036C031F0366E3050B5 -:1047D00035C030F0356E2F5034C02FF0346E2E506F -:1047E00033C02EF0336E3650315C10E0FF0F09E01D -:1047F000389038B403D038AE3884120038AE3894CC -:104800001200362AD89035323432333233502E5E8D -:1048100034502F5A3550305A30BEEAD7D8902E3601 -:104820002F363036312EF8D7C8D7376A35AE1EEF5F -:1048300024F0346C351EE86A3522371E30AE26EF80 -:1048400024F02F6C301EE86A3022371E28EC30F03E -:1048500030BE36EF24F037AE000C2F6C301EE86A05 -:1048600030222B6C2C1EE86A2C22000C37BE2DEF58 -:0648700024F03888FF0C63 -:0A487600D9CFE6FFDACFE6FFE1CF6D -:10488000D9FFE2CFDAFF1D0EE12402E3E168E65230 -:10489000E16E67DAFA0EDBCFEEFFFB0EDBCFEEFF49 -:1048A000FC0EDBCFEEFFFD0EDBCFEEFFD950040F89 -:1048B000E66E000EDA20E66E0BDA6AEC2CF0006E83 -:1048C000060EE15C02E2E16AE552E16E0050E76E3D -:1048D0000B0EE7CFDBFFDB50800807E10A0EDB6A37 -:1048E000DE68DE68DE687F0E13D00B0EDB0405E1A8 -:1048F000DE6ADE6ADE6ADD6AA6D10B0EDB500408D2 -:1049000009E1DB0EDE6E0F0EDE6EC90EDE6E3F0EAF -:10491000DD6E99D1DDD91EDA2DC0DEFF2EC0DEFF9F -:104920002FC0DEFF30C0DDFFDD52DD52DBD90DDAF6 -:104930003F0E20DA23E12E6A2F6A800E306E3F0E82 -:10494000316EDECF33F0DECF34F0DECF35F0DDCFA9 -:1049500036F0DD52DD5202EC22F02EC0DFFF010EF8 -:104960002FC0DBFF020E30C0DBFF030E31C0DBFFC8 -:10497000020EF36E0C0EF3CFDBFF02D00C0EDB6ADF -:10498000B1D9A30E336E300E346E890E356E3E0EE5 -:10499000F1D96CE1AF0E2E6E670E2F6E3B0E306EAE -:1049A0003F0E316EB2D92EC008F02FC009F030C0D2 -:1049B0000AF031C00BF0C9D93F0E366E6BEC21F016 -:1049C0002EC004F02FC005F030C006F031C007F053 -:1049D000C8D9EECF0CF0EECF0DF0EECF0EF0EFCF4A -:1049E0000FF00CC033F00DC034F00EC035F00FC026 -:1049F00036F06CEC21F080D9D70E146EB30E156E24 -:104A0000DD0E166E3F0E176EACD9EECF18F0EECF5E -:104A100019F0EECF1AF0EFCF1BF018C033F019C029 -:104A200034F01AC035F01BC036F014C02EF015C09B -:104A30002FF016C030F0316E6CEC21F02EC010F06B -:104A40002FC011F030C012F031C013F02EC033F07F -:104A50002FC034F030C035F031C036F035D902EC1B -:104A600022F05FD9DD52DD520C0EDB2A31D972D92A -:104A70002DC000F02EC001F02FC002F030C003F0B6 -:104A800064D9390E366E2DC02EF07AD9B7EC23F0EA -:104A9000010A01E1B5D04ED938D90D0E2EC0DBFF89 -:104AA0000E0E2FC0DBFF0F0E30C0DBFF100E31C02B -:104AB000DBFF910E2E6E860E2F6E500E306EBD0EE9 -:104AC000316E0D0EDBCF33F00E0EDBCF34F00F0E58 -:104AD000DBCF35F0100E4AD90FD9F60E336E100E1B -:104AE000346EF10E356EBE0E366E6CEC21F0110E8A -:104AF0002EC0DBFF120E2FC0DBFF130E30C0DBFF1A -:104B0000140E31C0DBFF0D0EDBCF00F00E0EDBCF3D -:104B100001F00F0EDBCF02F0100EDBCF03F0D30E4F -:104B2000336ECC0E346EB40E356E3F0E366ECCD86E -:104B30006CEC21F0150E2EC0DBFF160E2FC0DBFF34 -:104B4000170E30C0DBFF180E31C0DBFF0D0EDBCFC0 -:104B50002EF00E0EDBCF2FF00F0EDBCF30F0100E4D -:104B6000DBCF31F0110EDBCF33F0120EDBCF34F0A0 -:104B7000130EDBCF35F0140EF9D8150EDBCF33F062 -:104B8000160EDBCF34F0170EDBCF35F0180EDBCF6F -:104B900036F002EC22F0B0D8190E2EC0DBFF1A0E50 -:104BA0002FC0DBFF1B0E30C0DBFF1C0E31C0DBFF54 -:104BB000C1D8190EDBCF33F01A0EDBCF34F01B0E49 -:104BC000DBCF35F01C0ED2D897D8CBD8EECF2EF055 -:104BD000EECF2FF0EECF30F0EFCF31F000C033F05A -:104BE00001C034F002C035F003C036F06CEC21F0A7 -:104BF00031C0EDFF30C0EDFF2FC0EDFF2EC0EFFF45 -:104C00000C0EDB0409E1920E006E0A0E016E060E18 -:104C10003FD86CEC21F016D00C0EDB50020806E1F8 -:104C2000DB0E006E0F0E016EC90E09D00C0EDB50AC -:104C300003080BE1920E006E0A0E016E860E28D854 -:104C40006BEC21F06ED8DD52DD520A0EDB500AE02B -:104C500049D87BD8BF0E366E37D855EC22F061D8D4 -:104C6000DD52DD52DECF2DF0DECF2EF0DECF2FF085 -:104C7000DDCF30F0DD52DD521D0EE15C02E2E16A73 -:104C8000E552E16EE552E5CFDAFFE7CFD9FF12003A -:104C9000026E3F0E036E65D8EECF04F0EECF05F046 -:104CA000EECF06F0EFCF07F004C033F005C034F0CC -:104CB00006C035F007C036F000C02EF001C02FF05E -:104CC00002C030F0316E120000C02EF0C0EF26F0AE -:104CD00048D8EECFE6FFEECFE6FFEECFE6FFEFCF10 -:104CE000E6FF12003ED8EECF00F0EECF01F0EECF9F -:104CF00002F0EFCF03F012002EC000F02FC001F041 -:104D000030C002F031C003F01200000EDFCF33F0EC -:104D1000010EDBCF34F0020EDBCF35F0030EB6EF21 -:104D200026F02EC0DEFF2FC0DEFF30C0DEFF31C018 -:104D3000DDFF1200DECF2EF0DECF2FF0DECF30F021 -:104D4000DDCF31F0DD52DD521200336A346A800E5D -:104D5000356E12006EEC2FF0E552E552E552E55249 -:104D60001200D9CFE9FFDACFEAFF1200DBCF36F02D -:104D700055EF22F0366EA8DFAEEC23F0010A1200E8 -:0E4D800001C02FF002C030F003C031F012006D -:024D8E00D9CF7B -:104D9000E6FFDACFE6FFE1CFD9FFE2CFDAFF240E5C -:104DA000E12402E3E168E652E16ED950FA0FE96EC0 -:104DB000FF0EDA20EA6E020EEECFDBFF030EEECF1F -:104DC000DBFF040EEECFDBFF050EEECFDBFFE8D9F5 -:104DD000F2D96AEC2CF0006E060EE15C02E2E16AA8 -:104DE000E552E16E0050E76E0D0EE7CFDBFFDB50C2 -:104DF000800815E0A0D9336A346A356A366A00C083 -:104E00002EF001C02FF002C030F003C031F0B7EC3B -:104E100023F0010A10E1210E0101466F476B020EDB -:104E2000DB68030EDB68040EDB687F0EF36E050E95 -:104E3000F3CFDBFF66D10D0EDB50050B01E061D136 -:104E40000A0EDBCF00F00B0EDBCF01F0830E002645 -:104E5000FF0E012200C0DEFF01C0DDFFD950060FAA -:104E600065D976D9DF50010B0FE0DF06010E01E2B4 -:104E7000DB06D950180F5AD9D890EF36010EEB3611 -:104E8000020EEB36030EEB36D9CFE9FFDACFEAFF9D -:104E9000020E346E356AEECF2FF0EDCF30F015EC08 -:104EA00024F02FC0EEFF30C0EDFF140EDB6A150EAC -:104EB000DB6A160EDB6A170EDB6A1C0EDB6A1D0E40 -:104EC000DB6A1E0EDB6A010EF36E1F0EF3CFDBFFF3 -:104ED000010EF36E0E0EF3CFDBFF0F0EDB6A0E0E2C -:104EE000DBCF00F00F0EDBCF01F0D890015004E6CD -:104EF0001A0E005C000E015801E398D0180EDBCFAB -:104F000000F0190EDBCF01F01A0EDBCF02F01B0E02 -:104F1000DBCF03F0010E1F0B07E0D89000360136FF -:104F200002360336E806F9E1180E00C0DBFF190E61 -:104F300001C0DBFF1A0E02C0DBFF1B0E03C0DBFF4C -:104F4000140EDBCF08F0150EDBCF09F0160EDBCF09 -:104F50000AF0170EDBCF0BF0010E1F0B07E0D89005 -:104F6000083609360A360B36E806F9E1D9501C0F27 -:104F7000DDD80850EE24046E0950EE20056E0A506C -:104F8000EE20066E0B50EE20076ED950180FCED8CB -:104F90000450EE5C006E0550EE58016E0650EE585F -:104FA000026E0750EE58036E200E00C0DBFF210E8C -:104FB00001C0DBFF220E02C0DBFF230E03C0DBFFBC -:104FC000200EDBCF2EF0210EDBCF2FF0220EDBCF19 -:104FD00030F0230EDBCF31F03134000E311809E60A -:104FE000D880000E2E54000E2F54000E3054000EA8 -:104FF000315411E2D950200F99D8AAD8D8D81C0E14 -:10500000DB50EE121D0EDB50EE121E0EDB50EE12C8 -:105010001F0EDB50EE12D9501C0F88D8AFD80E0EE1 -:10502000DB2A0F0E01E25BD7DB2A59D7C9D8100E55 -:1050300000C0DBFF110E01C0DBFF180EDBCF2FF02D -:10504000190EDBCF30F0120E2FC0DBFF130E30C075 -:10505000DBFFADD893D8D950100F68D8EE50ED10C3 -:1050600012E0D950120F62D8EE50ED1006E1A8D828 -:10507000005001100210031006E099D8EE2A000E2D -:10508000EE22EE22EE220C0EDB6A91D8060EEECF57 -:10509000DBFF070EEECFDBFF080EEECFDBFF090EC6 -:1050A000EECFDBFF7E0EF36E0A0EF3CFDBFF0B0EAF -:1050B000DB6AD950020FE66E000EDA20E66E70D879 -:1050C000F8EC2CF0E552E552E552E552DECFE6FF72 -:1050D000DDCFE6FF70D8CEEC2BF0006E060EE15C63 -:1050E00002E2E16AE552E16E0050020E2DC0DBFFE4 -:1050F000030E2EC0DBFF040E2FC0DBFF050E30C0F9 -:10510000DBFF19D800C02DF001C02EF002C02FF037 -:1051100003C030F0240EE15C02E2E16AE552E16E88 -:10512000E552E5CFDAFFE7CFD9FF1200E96E000EB6 -:10513000DA20EA6E1200020EDBCF00F0030EDBCFA6 -:1051400001F0040EDBCF02F0050EDBCF03F01200FE -:10515000180EEECFDBFF190EEECFDBFF1A0EEECFEF -:10516000DBFF1B0EEECFDBFF1200EECFE6FFEECF34 -:10517000E6FFEECFE6FFEFCFE6FF1200D890030E7A -:10518000EB32020EEB32010EEB32EF321200EE5038 -:105190000016EE500116EE500216EE5003161200E5 -:1051A000D950060FE66E000EDA20E66E1200D950D6 -:1051B000140F96EF28F0D950020FB8DFB5EF28F0A2 -:1051C000010E006E016A026A036AF1DFC7EF28F080 -:1051D000A5D9E65201016A51040A45E0070A2DE00B -:1051E000010A23E0030A0BE0010A01E094D0870ED4 -:1051F000E66EF9EC2FF0E5520101010E32D075ECAC -:1052000030F0000901E088D072D901AE02D0026806 -:1052100003686BC1E9FFEA6AE9BEEA6845D9B00EE6 -:10522000E926000E56D9020E1CD08F0EE66EF9EC60 -:105230002FF0E5520101030E14D075EC30F0000997 -:105240006BE155D901AE02D0026803686BC1E9FF7A -:10525000EA6AE9BEEA6828D9D80EE926000E39D9EB -:10526000040E6A6F59D06B2B0A0EE76E6B19E8AE0D -:1052700002D0E73402D0E7506B5D4BE36B6B6CC13F -:10528000E9FFEA6AE9BEEA6865D9EA22EE6AEE6AEF -:10529000EE6AEE6A6CC1E9FFEA6AE9BEEA685FD9C4 -:1052A000EA22EE6AEE6AEE6AEE6ADF6A31D9E8AEA9 -:1052B00002D0E73402D0E750005C1EE2DFCFE9FF06 -:1052C000EA6AE9BEEA68F0D8B00EE926000EFCD81A -:1052D000E9BEEA683FD908D9DFCFE9FFEA6AE9BE4B -:1052E000EA68E2D8D80EE926000EEED8E9BEEA68F0 -:1052F00036D9FAD8DF2ADAD701016C2B0A0EE76E0D -:105300006C19E8AE02D0E73402D0E7506C5D01E3DF -:105310006C6B6A6B01D06A6BE55205D1FFD8050E44 -:10532000E126010EDB6A020EDB6A030EDB6A040E65 -:10533000DB6AFE0EDB5011E1DF6AEAD8E8AE02D08C -:10534000E73402D0E750005C1CE2DFCFE9FFEA6AF5 -:10535000E9BEEA68FFD8AFD8F0D7FE0EDB0411E152 -:10536000DF6AD6D8E8AE02D0E73402D0E750005C5E -:1053700008E2DFCFE9FFEA6AE9BEEA68F0D89BD825 -:10538000F0D7010EDBCF18F0020EDBCF19F0030EC1 -:10539000DBCF1AF0040EDBCF1BF018C02DF019C0C4 -:1053A0002EF01AC02FF01BC030F052EC21F02EC0AE -:1053B00014F02FC015F030C016F031C017F0A0D88F -:1053C0002EC010F02FC011F030C012F031C013F019 -:1053D00097D82EC00CF02FC00DF030C00EF031C0A9 -:1053E0000FF0336A346AA00E356E400E366E55ECFF -:1053F00022F02EC008F02FC009F030C00AF031C0F2 -:105400000BF0336AC00E346E7F0E356E440E366E6E -:1054100002EC22F02EC004F02FC005F030C006F0E0 -:1054200031C007F0336A346A200E356E400E366E96 -:105430006BEC21F02EC000F02FC001F030C002F064 -:1054400031C003F0336A500E346E430E356E460E93 -:10545000366E55EC22F0F1EC22F0050EE15C02E232 -:10546000E16AE552E16E5FD059D8FE0EDB5002E1F1 -:10547000808409D0FE0EDB0405E0FE0EDB5002083E -:1054800002E1808481884FD049D8FE0EDB5002E1D2 -:10549000809409D0FE0EDB0405E0FE0EDB5002080E -:1054A00002E1809481983FD0D890E936EA36D890CE -:1054B000E936EA3612003BD8D950010FE96EDACF4F -:1054C000EAFF3FD8DF2A120032D86CC1E9FFEA6A4E -:1054D0001200EA2200C0EEFF01C0EEFF02C0EEFFA4 -:1054E00003C0EEFF01011200EA22A1EF2AF065ECF1 -:1054F00030F0F3CF00F0F4CF01F0026A036A12003B -:10550000336A346A200E356E410E366E02EF22F099 -:10551000DFCF00F00A0EE76E00181200D9CFE6FFC9 -:10552000E1CFD9FF1200E552E7CFD9FF1200EA22FE -:10553000EECF00F0EECF01F0EECF02F0EFCF03F0B0 -:1055400012000050EE260150EE220250EE220350CF -:10555000EE221200A9DF600EE926000E1200A4DF81 -:08556000880EE926000E12007E -:08556800D9CFE6FFDACFE6FF20 -:10557000E1CFD9FFE2CFDAFF140EE12402E3E168C4 -:10558000E652E16ED950040FE66E000EDA20E66EA8 -:10559000D950F60FDAD802E2E16AE552E16E005026 -:1055A000E76E120EE7CFDBFFD9500B0FE66E000E51 -:1055B000DA20E66ED950FA0FC8D802E2E16AE55265 -:1055C000E16E0050E76E130EE7CFDBFFDBCFE6FFA7 -:1055D000120EDB50E552E710800B0EE1120EDB508D -:1055E000040804E1130EDB50040806E0120EDB048D -:1055F0000DE1130EDB040AE1210E0101466F476B3A -:10560000DE68DE68DE687F0EDD6E87D0FA0EDBCFE7 -:105610002EF0FB0EDBCF2FF0FC0EDBCF30F0FD0EBB -:10562000DBCF31F0F60EDBCF33F0F70EDBCF34F00B -:10563000F80EDBCF35F0F90EDBCF36F002EC22F0BE -:105640002EC004F02FC005F030C006F031C007F0C6 -:1056500097D831C0E6FF6EEC2FF0E552E552E552E7 -:10566000E5522DC000F02EC001F02FC002F030C076 -:1056700003F02DC0E6FF84D83BEC24F0E552E55260 -:10568000E552E5522DC0DEFF2EC0DEFF2FC0DEFF4B -:1056900030C0DDFFDD52DD520A0EDB5023E0DB0EB1 -:1056A000006E0F0E016E490E026E400E036ED9CFD2 -:1056B000E9FFDACFEAFFEECF04F0EECF05F0EECF50 -:1056C00006F0EFCF07F004C033F005C034F006C099 -:1056D00035F007C036F05BD8316E6BEC21F047D85F -:1056E000DD52DD52110EDB501AE0D9CFE9FFDACFDF -:1056F000EAFFEECF00F0EECF01F0EECF02F0EFCFF9 -:1057000003F0336A346A800E356EBF0E366E3FD8B2 -:1057100003C031F055EC22F02AD8DD52DD52DECF45 -:105720002... [truncated message content] |
From: Xavier L. <Ba...@us...> - 2010-03-06 21:54:10
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 605fdc677788b43a9549798ac4e4afc0702e1aee (commit) from ec4edc47e210a512d7cb447fb93b4428a5c93cf3 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 605fdc677788b43a9549798ac4e4afc0702e1aee Author: Xavier Lagorce <Xav...@cr...> Date: Sat Mar 6 22:52:03 2010 +0100 Refactoring of the code which is responsible for the choice of the set of constants to be be used by the motor controller. First try with constants for the 2010 senior robot ----------------------------------------------------------------------- Changes: diff --git a/USB_Module/Motor_Controller/Firmware/HardwareProfile.h b/USB_Module/Motor_Controller/Firmware/HardwareProfile.h index 0954d0d..5d042e9 100644 --- a/USB_Module/Motor_Controller/Firmware/HardwareProfile.h +++ b/USB_Module/Motor_Controller/Firmware/HardwareProfile.h @@ -50,8 +50,8 @@ #ifndef HARDWARE_PROFILE_H #define HARDWARE_PROFILE_H - //#define REV_1_1 - #define REV_1_0 + #define REV_1_1 + //#define REV_1_0 /*******************************************************************/ /******** USB stack hardware selection options *********************/ diff --git a/USB_Module/Motor_Controller/Firmware/lm629.h b/USB_Module/Motor_Controller/Firmware/lm629.h index c3040e9..1daaceb 100644 --- a/USB_Module/Motor_Controller/Firmware/lm629.h +++ b/USB_Module/Motor_Controller/Firmware/lm629.h @@ -14,19 +14,31 @@ #include "eeprom.h" #include "motor.h" +// Robot utilis+#define KROBOT_2010 +// #define KROBOT_PROTO // Parames graux #define LM_CLOCK 8e6 ///< Frence horloge LM (en Hz) -- forcnt 6 ou 8 MHz selon la rrence du composant -//#define ENCODER_RES 15*500 ///< Impulsions du codeur par tour de roue (prendre en compte le rcteur selon le cas !) -//#define WHEELS_DIAMETER 80 ///< Diame des roues (en mm) -//#define WHEELS_DIST 268 ///< Distance entre les 2 roues (en mm) -//#define CON_MOTOR_LEFT 1 -//#define CON_MOTOR_RIGHT 1 - -#define ENCODER_RES 90 ///< Impulsions du codeur par tour de roue (prendre en compte le rcteur selon le cas !) -#define WHEELS_DIAMETER 99 ///< Diame des roues (en mm) -#define WHEELS_DIST 220 ///< Distance entre les 2 roues (en mm) -#define CON_MOTOR_LEFT -1 -#define CON_MOTOR_RIGHT 1 + +#ifdef KROBOT_2010 + // Constantes pour [Kro]bot 2010 + #define ENCODER_RES 15*500 ///< Impulsions du codeur par tour de roue (prendre en compte le rcteur selon le cas !) + #define WHEELS_DIAMETER 98 ///< Diame des roues (en mm) + #define WHEELS_DIST 259 ///< Distance entre les 2 roues (en mm) + #define CON_MOTOR_LEFT 1 + #define CON_MOTOR_RIGHT 1 +#else +#ifdef KROBOT_PROTO + // Constantes pour le robot protoype basur des EMG30s + #define ENCODER_RES 90 ///< Impulsions du codeur par tour de roue (prendre en compte le rcteur selon le cas !) + #define WHEELS_DIAMETER 99 ///< Diame des roues (en mm) + #define WHEELS_DIST 220 ///< Distance entre les 2 roues (en mm) + #define CON_MOTOR_LEFT -1 + #define CON_MOTOR_RIGHT 1 +#else + #error "Il est nssaire de darer un type de robot tiliser" +#endif +#endif /** * Parames par dult du correcteur. @@ -34,15 +46,23 @@ * Vfier que le syst est stable (pas d'oscillation) * On peut alors augmenter le KP et ajuster KI et KD. */ -//#define DEFAULT_KP 1 ///< Constante action proportionnelle -//#define DEFAULT_KI 0 ///< Constante action intale -//#define DEFAULT_KD 0 ///< Constante action dv -//#define DEFAULT_IL 10000 ///< Integration Limit -- limite la contribution du terme intateur (doit e non nul si KI est non nul !) - -#define DEFAULT_KP 1000 ///< Constante action proportionnelle -#define DEFAULT_KI 1 ///< Constante action intale -#define DEFAULT_KD 0 ///< Constante action dv -#define DEFAULT_IL 10000 ///< Integration Limit -- limite la contribution du terme intateur (doit e non nul si KI est non nul !) +#ifdef KROBOT_2010 + // Constantes pour [Kro]bot 2010 + #define DEFAULT_KP 1 ///< Constante action proportionnelle + #define DEFAULT_KI 0 ///< Constante action intale + #define DEFAULT_KD 0 ///< Constante action dv + #define DEFAULT_IL 10000 ///< Integration Limit -- limite la contribution du terme intateur (doit e non nul si KI est non nul !) +#else +#ifdef KROBOT_PROTO + // Constantes pour le robot protoype basur des EMG30s + #define DEFAULT_KP 1000 ///< Constante action proportionnelle + #define DEFAULT_KI 1 ///< Constante action intale + #define DEFAULT_KD 0 ///< Constante action dv + #define DEFAULT_IL 10000 ///< Integration Limit -- limite la contribution du terme intateur (doit e non nul si KI est non nul !) +#else + #error "Il est nssaire de darer un type de robot tiliser" +#endif +#endif // Constantes #define PS_COMMAND 0 ///< Envoyer une commande diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof index 2c0c916..0e5f6f8 100644 Binary files a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof and b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof differ diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex index fc58abe..f0dba99 100644 --- a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex +++ b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex @@ -1,1469 +1,1465 @@ :020000040000FA -:0600000064EF30F0120075 +:060000003EEF30F012009B :0600080004EF04F01200F9 :060018000CEF04F01200E1 -:0608000064EF30F012006D -:06080800F7EF0FF01200F3 -:060818005FEF10F012007A -:06082A0004005B61000008 -:100830002601000021000000536100005F0100005C -:100840000800000045610000470100000E000000A4 -:0C085000426100006A010000030000008B -:04085C000DEC0DF0A2 -:10086000FE0EDB5006E1F80E96163C0E9416959897 -:1008700008D0FE0EDB0405E1070E9612C30E94129B -:10088000958812EF0DF0D9CFE6FFE1CFD9FFE65200 -:10089000010EE66EE3DFE552809AFE0EDB5004E0C7 -:1008A000FE0EDB5002080FE1839C81880000839ECE -:1008B0000000000000008450010BDF6E838E0000FA -:1008C0000000DF04F4E0FE0EDB0404E0FE0EDB506B -:1008D00002080FE1838C81980000839E00000000D5 -:1008E00000008450010BDF6E838E00000000DF04E7 -:1008F000F4E0E552E552E7CFD9FF1200D9CFE6FF89 -:10090000E1CFD9FFE652FD0EDB50DF6EFE0EDBCFEE -:10091000E6FFB9DFE552E66AA1DFE552FE0EDB50E5 -:1009200003E1839C81880CD0FE0EDB0403E1838C01 -:10093000819806D0FE0EDB50020802E1839C81986C -:10094000809A00008098D9CFE9FFDACFEAFFEF5014 -:10095000010B02E0848001D08490D9CFE9FFDACF87 -:10096000EAFFEF50020B02E0848201D08492D9CFDB -:10097000E9FFDACFEAFFEF50040B02E0848401D0F4 -:100980008494D9CFE9FFDACFEAFFEF50080B02E0F9 -:10099000838801D08398D9CFE9FFDACFEAFFEF50FF -:1009A000100B02E0828201D08292D9CFE9FFDACF28 -:1009B000EAFFEF50200B02E0828E01D0829ED9CF59 -:1009C000E9FFDACFEAFFEF50400B02E0828001D06E -:1009D0008290D9CFE9FFDACFEAFFEF50800B02E037 -:1009E000828C01D0829C0000000080880000000002 -:1009F000E552E552E7CFD9FF1200D9CFE6FFE1CFAC -:100A0000D9FF020EE126FC0EDBCFDEFFDBCFDDFFE0 -:100A1000FE0EDBCFE6FF37DFE552E66A1FDFE55269 -:100A2000FE0EDB5003E1839C81880CD0FE0EDB04BC -:100A300003E1838C819806D0FE0EDB50020802E1B0 -:100A4000839C8198808A00008098D9CFE9FFDACF13 -:100A5000EAFFEE52EF50010B02E0848001D0849057 -:100A6000D9CFE9FFDACFEAFFEE52EF50020B02E0F6 -:100A7000848201D08492D9CFE9FFDACFEAFFEE5227 -:100A8000EF50040B02E0848401D08494D9CFE9FFB5 -:100A9000DACFEAFFEE52EF50080B02E0838801D074 -:100AA0008398D9CFE9FFDACFEAFFEE52EF50100B6F -:100AB00002E0828201D08292D9CFE9FFDACFEAFF49 -:100AC000EE52EF50200B02E0828E01D0829ED9CFF1 -:100AD000E9FFDACFEAFFEE52EF50400B02E08280EE -:100AE00001D08290D9CFE9FFDACFEAFFEE52EF5082 -:100AF000800B02E0828C01D0829C00000000808884 -:100B0000000000008098D9CFE9FFDACFEAFFEF506C -:100B1000010B02E0848001D08490D9CFE9FFDACFC5 -:100B2000EAFFEF50020B02E0848201D08492D9CF19 -:100B3000E9FFDACFEAFFEF50040B02E0848401D032 -:100B40008494D9CFE9FFDACFEAFFEF50080B02E037 -:100B5000838801D08398D9CFE9FFDACFEAFFEF503D -:100B6000100B02E0828201D08292D9CFE9FFDACF66 -:100B7000EAFFEF50200B02E0828E01D0829ED9CF97 -:100B8000E9FFDACFEAFFEF50400B02E0828001D0AC -:100B90008290D9CFE9FFDACFEAFFEF50800B02E075 -:100BA000828C01D0829C0000000080880000000040 -:100BB000020EE15C02E2E16AE552E16EE552E7CF46 -:100BC000D9FF1200D9CFE6FFE1CFD9FF020EE1260F -:100BD000FE0EDBCFE6FF57DEE552010EE66E3EDE8F -:100BE000E552FE0EDB5003E1839C818805D0FE0EAA -:100BF000DB0402E1838C8198808A0000839E0000E0 -:100C0000000000008450010B066E8450020B01E0CE -:100C1000010EE824056E8450040B01E0010E040D62 -:100C2000F3CF04F08350100B01E0010E080DF3CF59 -:100C300003F08250020B01E0010E100DF3CF02F021 -:100C40008250800B01E0010E200DF3CF01F08250A5 -:100C5000010B400DF3CF00F08250400B01E0010E7C -:100C6000800DF35000100110021003100410051045 -:100C70000610E76E010EE7CFDBFF838E0000000059 -:100C8000839E0000000000008450010B066E84501B -:100C9000020B01E0010EE824056E8450040B01E014 -:100CA000010E040DF3CF04F08350100B01E0010E90 -:100CB000080DF3CF03F08250020B01E0010E100D7E -:100CC000F3CF02F08250800B01E0010E200DF3CF34 -:100CD00001F08250010B400DF3CF00F08250400B29 -:100CE00001E0010E800DF3500010011002100310FE -:100CF000041005100610DF6E838EDECF00F0DDCF0E -:100D000001F000C0F3FF01C0F4FF00D0020EE15C6F -:100D100002E2E16AE552E16EE552E7CFD9FF120047 -:100D2000D9CFE6FFE1CFD9FFE652DF6AFE0EDBCF77 -:100D3000E6FFA9DDE552010EE66E90DDE552FE0EFE -:100D4000DB5003E1839C818805D0FE0EDB0402E1C9 -:100D5000838C8198809A0000839E00000000000030 -:100D60008450010B066E8450020B01E0010EE82452 -:100D7000056E8450040B01E0010E040DF3CF04F066 -:100D80008350100B01E0010E080DF3CF03F08250E9 -:100D9000020B01E0010E100DF3CF02F08250800B28 -:100DA00001E0010E200DF3CF01F08250010B400D48 -:100DB000F3CF00F08250400B01E0010E800DF350A4 -:100DC0000010011002100310041005100610DF6E51 -:100DD000838EDF5000D0E552E552E7CFD9FF1200F5 -:100DE0000DEC0DF0E652DF6A69EC0DF0DF6EFD0EE2 -:100DF000DB50DF14DF6EDF5002E0010E01D0000E89 -:100E0000E55212EF0DF00DEC0DF01D0ED8EC0CF0CC -:100E1000000E08EC0FF012EF0DF00DEC0DF069EC88 -:100E20000DF084080FE069EC0DF0C4080BE0E66AF1 -:100E3000DDEC0EF0D3EC0EF0020EE66E37EC30F087 -:100E4000E552EDD71C0ED8EC0CF00A0E08EC0FF0B2 -:100E5000E9EC0DF069EC0DF0800804E069EC0DF0B0 -:100E6000C008E5E169EC0DF0C00802E1E9EC0DF025 -:100E70001E0ED8EC0CF00F0E08EC0FF0C2EC0FF0C9 -:100E8000FA0EDBCFE6FFFB0E73EC0EF0F80EDBCFB5 -:100E9000E6FFF90E73EC0EF0F60EDBCFE6FFF70E71 -:100EA00073EC0EF0040ED8EC0CF012EF0DF00DEC1C -:100EB0000DF0080EE126010E0AEC0DF0010EE7CF51 -:100EC000DBFF020E31EC0FF0DF6E030E0AEC0DF0CB -:100ED000030EE7CFDBFF040E0AEC0DF0020EE7CFA6 -:100EE000DBFF050E0AEC0DF0050EE7CFDBFF060E6B -:100EF0000AEC0DF0040EE7CFDBFF070E0AEC0DF055 -:100F0000070EE7CFDBFF080E0AEC0DF040EC0DF00A -:100F1000E66AEEEC0DF0090E0AEC0DF0010EE7CFDB -:100F2000DBFF0A0E31EC0FF0DF6E0B0E0AEC0DF05A -:100F3000030EE7CFDBFF0C0E0AEC0DF0020EE7CF3D -:100F4000DBFF0D0E0AEC0DF0050EE7CFDBFF0E0EFA -:100F50000AEC0DF0040EE7CFDBFF0F0E0AEC0DF0EC -:100F6000070EE7CFDBFF100E0AEC0DF040EC0DF0A2 -:100F7000010EE66EEEEC0DF0020EE66EE6EC0DF004 -:100F8000020EE66EE66AD9EC0DF007E1020EE66E9F -:100F9000010EE66ED9EC0DF002E0000E01D0010E5C -:100FA000006E080EE15C02E2E16AE552E16E00507B -:100FB00012EF0DF00DEC0DF00C0EE12672EC0DF0C1 -:100FC000D950F20F0CEC0FF0080EEECFDBFF090E3C -:100FD000EECFDBFF0A0EEECFDBFF0B0EEECFDBFF1B -:100FE0001F0ED8EC0CF0080EDBCF00F0090EDBCFA3 -:100FF00001F00A0EDBCF02F00B0E1CEC0FF00CE040 -:101000002B0E08EC0FF00A0EDBCFE6FF0B0E73EC95 -:101010000EF096EC0DF003D00B0EE66EE66AB0EC27 -:101020000CF08AEC0FF0DFEC0DF002E0000E01D0C6 -:10103000010E000E000907E01EEC0DF09CEC0FF015 -:10104000DDEC0EF03DD0DFEC0DF003E0FE0EDB0436 -:1010500027E1FA0EDBCF00F0FB0EDBCF01F0FC0E38 -:10106000DBCF02F0FD0EDBCF03F0000E006C011EA3 -:101070000122021E0222031E032200C0DFFF010E16 -:1010800001C0DBFF020E02C0DBFF030E03C0DBFF6B -:1010900095EC0FF0BEEC0DF0D8EC0EF0BEEC0DF0C0 -:1010A000DFEC0DF003E0FE0EDB500CE11EEC0DF06A -:1010B00095EC0FF0E66AA5EC0EF0D8EC0EF0E66ABF -:1010C000A5EC0EF00C0EE15C02E2E16AE552E16E85 -:1010D00012EF0DF00DEC0DF00A0EE1261EEC0DF0F6 -:1010E00072EC0DF0080EF36EDB6E090EF3CFDBFF32 -:1010F0001F0ED8EC0CF082EC0DF007E0D950080F71 -:10110000E96EDACFEAFFEE8AED52DFEC0DF002E095 -:10111000000E01D0010E000E00090AE0F50EDB04FE -:1011200002E1C2EC0DF096EC0DF0DDEC0EF01ED0FD -:10113000DFEC0DF003E0FE0EDB040AE1F50EDB5000 -:10114000FF0802E1C2EC0DF096EC0DF0BEEC0DF0E4 -:10115000DFEC0DF003E0FE0EDB500AE1F50EDB04E0 -:1011600002E1C2EC0DF096EC0DF0E66AA5EC0EF093 -:1011700082EC0DF002E08AEC0FF09CEC0FF0F0DB5B -:101180000A0EE15C02E2E16AE552E16E12EF0DF057 -:101190000DEC0DF0F90EDBCFE6FFE66AE66AE66AD3 -:1011A000E66AD950FA0F0CEC0FF0A3EC0FF0DDEC6F -:1011B0000EF090DF006E0A0EE15E005012EF0DF0AF -:1011C0000DEC0DF0FE0EDB5003E0DFEC0DF00FE157 -:1011D000C8EC0FF018EC0FF0F3CF61F1F4CF62F12F -:1011E000E66A18EC0FF0F3CF5FF1F4CF60F1FE0E7A -:1011F000DB0403E0DFEC0DF010E111EC0FF018EC74 -:101200000FF0F3CF65F1F4CF66F1010EE66E18EC46 -:101210000FF0F3CF63F1F4CF64F1010EC9DB12EFED -:101220000DF00DEC0DF01F0EC3DBC2EC0FF0010E44 -:10123000BFDBF8D336EC0FF0DFEC0DF005E12D6AE3 -:101240002E6A2F6A306A12D00B0EB2DBDDEC0EF084 -:101250008EEC0DF0DE6ADD6ADECF2DF0DECF2EF0F3 -:10126000DECF2FF0DDCF30F0DD52DD52040EE15C39 -:1012700002E2E16AE552E16ED5D3E1EC0EF0E3EC77 -:101280000DF061EC0DF0CED3E1EC0EF0E8DB020ED8 -:1012900061EC0DF0C7D3CEEC0FF0E1DBE66A9DEC1C -:1012A0000DF0FCEC0DF043EC0FF0BDEF0EF0CEECCA -:1012B0000FF043EC0FF0E66A9DEC0DF0FCEC0DF046 -:1012C000CEDBBDEF0EF0A9DB3C0EE1266DEC0EF09F -:1012D00059EC0FF06DEC0EF0ACEC0FF050EC0FF0A1 -:1012E00008C02EF009C02FF00AC030F00BC031F05A -:1012F0007BEC22F078EC0FF0B8EC0EF062EC0FF023 -:1013000081EC0FF0B8EC0EF0AAEC0DF050EC0FF001 -:1013100014C02EF015C02FF016C030F017C031F0F9 -:101320007BEC22F08BEC0EF06FEC0FF092EC21F0E6 -:1013300047EC0FF0336A346A800E356E3AEC0FF0EA -:10134000380E2EC0DBFF390E2FC0DBFF3A0E30C047 -:10135000DBFF3B0E31C0DBFF6DEC0EF047EC0FF016 -:10136000BDDBB8EC0EF035DBB9DBDAEC2AF0086E49 -:10137000080EE15E0850080E2DC0DBFF090E2EC0DE -:10138000DBFF0A0E2FC0DBFF0B0E30C0DBFFDCDB08 -:10139000F60EDB5007E0D950F40F0CEC0FF0EE50D6 -:1013A000ED103AE143DB080EDBCF0EF0090EDBCF88 -:1013B0000FF00A0EDBCF10F00B0E60DA41DAABEC67 -:1013C0000EF02E6A2F6A800E306E400E316E380E8F -:1013D000DBCF33F0390EDBCF34F03A0EDBCF35F014 -:1013E0003B0EBEEC0FF0E6EC0EF078DBCCEC0EF032 -:1013F0002DC002F02EC003F02FC004F030C005F065 -:101400002DC02EF023EC0FF0C6EC0EF036DF0A6E86 -:10141000060EE15E0A50D3D1380EDBCF04F0390E50 -:10142000DBCF05F03A0EDBCF06F03B0EDBCF07F04B -:101430000C6A0D6A0E6A400E0F6E95DA7BEC22F094 -:1014400039EC0EF0F40EDBCF2FF0F50E83DBA2DBD0 -:1014500088EC0EF092EC21F0140E2EC0DBFF150E7E -:101460002FC0DBFF160E30C0DBFF170E36DA6DEC37 -:101470000EF088EC0EF07BEC22F0180E2EC0DBFF95 -:10148000190E2FC0DBFF1A0E30C0DBFF1B0E25DA52 -:10149000B8EC0EF062EC0FF088EC0EF07BEC22F072 -:1014A0001C0E2EC0DBFF1D0E2FC0DBFF1E0E30C03A -:1014B000DBFF1F0E31C0DBFF1C0EDBCF00F01D0E6B -:1014C000DBCF01F01E0EDBCF02F01F0EDBCF03F0EF -:1014D0008CDB7FEC0EF07BEC22F0200E2EC0DBFFCD -:1014E000210E2FC0DBFF220E30C0DBFF230E31C0E8 -:1014F000DBFFD950180FE96EDACFEAFF240EEECFEA -:10150000DBFF250EEECFDBFF260EEECFDBFF270E37 -:10151000EECFDBFFFD0EDBCF2FF0FE0EE7EC0FF082 -:10152000200EDBCF33F0210EDBCF34F0220EDBCFE9 -:1015300035F0230EF3DB280E2EC0DBFF290E2FC063 -:10154000DBFF2A0E30C0DBFF2B0E31C0DBFFB8EC17 -:101550000EF0E7EC0FF0240EDBCF33F0250EDBCFDF -:1015600034F0260EDBCF35F0270ED8DB2C0E2EC044 -:10157000DBFF2D0E2FC0DBFF2E0E30C0DBFF2F0E4A -:1015800031C0DBFF2C0EDBCF04F02D0EDBCF05F0DE -:101590002E0EDBCF06F02F0EDBCF07F026DB6FEC35 -:1015A0000FF07BEC22F07DDA300E2EC0DBFF310E27 -:1015B0002FC0DBFF320E30C0DBFF330E31C0DBFF4C -:1015C000280EDBCF2EF0290EDBCF2FF02A0EDBCF3B -:1015D00030F02B0EDBCF31F064DA340E2EC0DBFF9F -:1015E000350E2FC0DBFF360E30C0DBFF370E31C0AB -:1015F000DBFFD950300F6CDBD950340F69DBDAECEC -:101600002AF0006E080EE15E00500C0E2DC0DBFFCC -:101610000D0E2EC0DBFF0E0E2FC0DBFF0F0E30C0F5 -:10162000DBFF006A016A026A400E036E00C0E6FF3B -:1016300001C0E6FF02C0E6FFE66E3BDB59EC0FF0AF -:101640004DDAD2EC0FF02DC014F02EC015F02FC0E3 -:1016500016F030C017F043EC0FF0DAEC2AF0186EF9 -:10166000080EE15E1850E552E7CF03F0E552E7CFF0 -:1016700002F0E552E7CF01F0E552E7CF00F02DC0D0 -:1016800004F02EC005F02FC006F030C007F0A7DB35 -:1016900036DB7BEC22F0100E2EC0DBFF110E2FC0CC -:1016A000DBFF120E30C0DBFF130E31C0DBFFF60E86 -:1016B000DB5002081BE137DB91EC21F099DB92EC67 -:1016C00021F07AD951DA060E2FC0DBFF070E30C0A9 -:1016D000DBFFD4DB7ED9020EDBCF2FF0030EECEC68 -:1016E0000FF0040E2FC0DBFF050E4ED02E6A2F6ABE -:1016F000306A400E316E080EDBCF33F0090EDBCFBF -:1017000034F00A0EDBCF35F00B0EBEEC0FF0BFDB72 -:101710000C0EDBCF04F00D0EDBCF05F00E0EDBCF91 -:1017200006F00F0EDBCF07F004C033F005C034F035 -:1017300006C035F007C036F091EC21F00C0E2EC03B -:10174000DBFF0D0E2FC0DBFF0E0E30C0DBFF0F0ED8 -:1017500031C0DBFFE8DA92EC21F04ADB91EC21F0BA -:101760002BD902DA040E2FC0DBFF050E30C0DBFFE1 -:10177000020EDBCF2FF0030E2CD980DBECEC0FF048 -:10178000060E2FC0DBFF070E30C0DBFF59D80AD989 -:10179000040EDBCF2FF0050E54DA75DB6FDBD1DAE8 -:1017A000E66A58DBFFD8060EDBCF2FF0070E49DACA -:1017B0000ADADBCF2FF0030EC4DA010E82D93C0E19 -:1017C000E15C02E2E16AE552E16E2CD14FDBE0DB45 -:1017D000A5D9E66AE4D901015F51EE5C066E60515D -:1017E000EE58076E6151EE58086E6251F5D802E26C -:1017F000E16AE552E16E16D139DB13DB8FD9010EB8 -:10180000E66ECDD901016351EE5C066E6451EE586F -:10181000076E6551EE58086E6651DED802E2E16A45 -:10182000E552E16EFFD0040EE66EE66AC2D906E02C -:10183000040EE66E010EE66EBCD901E1000C010C4F -:10184000F2DF0009FDE01200B9DB1ADA91DAF9D90A -:101850001ADB6DEF0EF02EC01CF02FC01DF030C053 -:101860001EF031C01FF032DBAEDB2DC018F02EC0F1 -:1018700019F02FC01AF030C01BF01200DBCF11F0AE -:10188000336A346A340E356E430E366E0EC02EF057 -:101890000FC02FF010C030F011C031F07BEC22F0FF -:1018A0002EC00AF02FC00BF030C00CF031C00DF08C -:1018B000DB0E336E0F0E346E490E356EDBDA86DAD0 -:1018C000EFDA02C02EF0BFDA91EC21F05FDAE3DC50 -:1018D000126E060EE15E1250120031C0DBFF046A88 -:1018E000056A800E066E3F0E076E0C6A0D6A0E6A60 -:1018F000400E0F6E04C0E6FF05C0E6FF06C0E6FF1F -:1019000007C0E6FF0CC0E6FF0DC0E6FF0EC0E6FF15 -:10191000E66E48DBE552E7CF0FF0E552E7CF0EF079 -:10192000E552E7CF0DF0E552E7CF0CF0E552E7CFF7 -:1019300007F0E552E7CF06F0E552E7CF05F0E552B4 -:10194000E7CF04F02DC010F02EC011F02FC012F020 -:1019500030C013F044DA53DA7BEC22F039EF0EF0AA -:101960002CDAA5EF0EF0F40EDBCF2FF0F50EAADA8D -:10197000D2D9FFEF0EF094DA7FEF0EF0140EDBCF2A -:1019800000F0150EDBCF01F0160EDBCF02F0170EC4 -:10199000DBCF03F0336A346ADC0E356E420E366EEE -:1019A0007FEF0EF0F70EDBCF2FF0F80E40EF0EF0CA -:1019B000E66E03DAD3EF0EF0100EDBCF33F0110E2C -:1019C000DBCF34F0120EDBCF35F0130ED7DAE8EFB1 -:1019D00022F078DA78EF0FF0EE58096E06C02DF09D -:1019E00007C02EF008C02FF0306E78EC21F02EC02A -:1019F00002F02FC003F030C004F031C005F066DA09 -:101A000028EC22F0D4DA2FC0F3FF30C0F4FF040E2C -:101A1000E15C120026DAE76E1200D9CFE6FFE1CFD3 -:101A2000D9FF1200E552E7CFD9FF120094D9026A1C -:101A3000036AB40E046E420E056E1200D9CFE9FFA0 -:101A4000DACFEAFFFA0EDBCFEEFFFB0EDBCFEEFFC5 -:101A5000FC0EDBCFEEFFFD0EDBCFEEFF1200000E23 -:101A6000186C191E19221A1E1A221B1E1B2218C0BE -:101A7000E6FF19C0E6FF1AC0E6FF1BC0E6FF120032 -:101A8000060EE7CFDBFFDBCFE6FF070EDBCFE6FF7F -:101A9000040EDBCFE6FF050EDBCFE6FF46DAD8EF1C -:101AA0000EF0140EDBCF33F0150EDBCF34F0160E34 -:101AB000DBCF35F0170EDBCF36F028EC22F047EF06 -:101AC0000FF0E66EC7D9020EE66EE0EC08F0E552C4 -:101AD000120073D990EC06F0E552120081DA31C0A1 -:101AE000E6FF1200D950F60F97D9040EEECFDBFFB8 -:101AF000050EEECFDBFF060EEECFDBFF070EEECFBF -:101B0000DBFF1200040EDBCF00F0050EDBCF01F08F -:101B1000060EDBCF02F0070E1CEF0FF089D9020E84 -:101B2000F3CFDBFF030EF4CFDBFF1200080EDBCF99 -:101B3000E6FF090EDBCFE6FF1200DAEC07F0286EB5 -:101B40000D0EE15E28501200020EE66E03EC07F067 -:101B5000E5521200B7D92EC018F02FC019F030C0CE -:101B60001AF031C01BF01200020E2FC0DBFF030E73 -:101B700030C0DBFF23DADBCF30F01200010EE66E5F -:101B8000A5EF0EF0D950080FE96EDACFEAFFEE525A -:101B9000ED881200336A346A356A3AEF0FF048D99B -:101BA000F3CFDEFFF4CFDDFFD9CFE9FFDACFEAFFD5 -:101BB0001200F0EC06F0E552E55200091200FE0EAC -:101BC000DB50020812005FD9020E1200E66ED3EF5E -:101BD0000EF0F3D803EC07F0E55212000DEC07F01D -:101BE000006E090EE15E00501200336A346A800E06 -:101BF000356EBF0E366E120027DE2EC024F02FC0C9 -:101C000025F030C026F031C027F0350E336EFA0EC5 -:101C1000346E0E0E356E3C0E366E7BEC22F02EC00E -:101C200020F02FC021F030C022F031C023F0336A01 -:101C3000346A5C0E356E430E366E7BEC22F02BEF71 -:101C40000CF040D95ED942D97BEC22F08ED9BD0E82 -:101C5000336E370E346E860E356E410E366EB3D946 -:101C60002DC00CF02EC00DF02FC00EF030C00FF0C4 -:101C700012001FD915D933D928EC22F047EF0FF005 -:101C800021D917D923D97BEC22F032D9CC0E336E6F -:101C9000BC0E346E8C0E356E3B0E366E94D92DC054 -:101CA00000F02EC001F02FC002F030C003F043EF6F -:101CB0000FF0140EDBCF0CF0150EDBCF0DF0160E6F -:101CC000DBCF0EF0170EDBCF0FF04DDE91EF21F0E2 -:101CD000E96EDACFEAFFA3EF0FF0FD0EDBCF2FF0B6 -:101CE000FE0E62EF0FF0DBCFE6FFB0EF0CF066D92F -:101CF000E9D832D940DE7BEC22F0E8EF22F000C0D8 -:101D00002EF001C02FF002C030F003C031F01200FD -:101D1000F8D8BBEF0CF029D950EF0FF02FD9C9D864 -:101D20002ADE91EF21F082DE0C0EDBCF0EF00D0EDD -:101D3000DBCF0FF00E0EDBCF10F00F0E9FDDBEEFEE -:101D40000CF0C0D888DD43EF0FF0FDEC04F0E55255 -:101D5000E552E5521200F70EDBCFE6FFF80EDBCFBF -:101D6000E6FFF90EDBCFE6FFFA0EDBCFE6FF12004F -:101D7000FB0EDBCF2FF0FC0E1200010EE66EDDDE57 -:101D8000020EE66EE0EC08F0E5524CD610D92FC0FA -:101D9000E6FF30C0E6FF1200EDEC26F0E552E5521A -:101DA000E552E55212007EEC04F0E552E5521200D5 -:101DB000DECFE6FFDDCFE6FF1200FE0EDBCFE6FF53 -:101DC00012002BDEC1DE40DD2BEF0CF02EC006F042 -:101DD0002FC007F030C008F031C009F012002DC04C -:101DE00033F02EC034F02FC035F030C036F0120082 -:101DF000E3DD2FC0DEFF30C0DDFFBEEF0CF00CC016 -:101E00002EF00DC02FF00EC030F00FC031F01200D8 -:101E1000E66EE66AB0EF0CF0E96EFF0EDA20EA6ECD -:101E200012000A0EE66E010ED1DE010EE66E120001 -:101E3000E2EC05F0E5521200DBCF03F00050011098 -:101E400002100310120003C02FF004C030F005C0D0 -:101E500031F01200DAEC07F0206E0D0EE15E20503A -:101E60001200E66E7EEC2FF0E5521200D6DD040E75 -:101E7000E1261200400E366E28EF22F0000EDFCF72 -:101E80002FF0010E12002DC0E6FFF0EF0FF02EC074 -:101E900000F02FC001F030C002F031C003F012009A -:101EA0002EC033F02FC034F030C035F031C036F0E2 -:101EB00012002EC008F02FC009F030C00AF031C067 -:101EC0000BF01200DBCF30F063EF21F0A60E336E83 -:101ED000280E346E940E356E3F0E366E120004C01E -:101EE0002EF005C02FF006C030F007C031F0120010 -:101EF0002EC004F02FC005F030C006F031C007F04E -:101F000012002EC014F02FC015F030C016F031C0F2 -:101F100017F01200060EDBCFE6FF070EE4DE040E1C -:101F2000DBCFE6FF050E73EF0EF0020EDBCFE6FF10 -:101F3000030EDBCFE6FF1200020EDBCFE6FF030E3F -:101F4000D2DED8EF0EF0EECFE6FFEECFE6FFEECF1B -:101F5000E6FFEFCFE6FF12002EC00CF02FC00DF011 -:101F600030C00EF031C00FF012002EC010F02FC0A4 -:101F700011F030C012F031C013F01200DBCF36F098 -:101F80007BEF22F0FC0EDBCFE6FFFD0E73EF0EF0D1 -:101F90000A0EE66EE66A07DFE66A12003EDDD4DD71 -:101FA000FCEF0DF0D950380F93DECCEF0EF0E8ECDB -:101FB00022F02FC000F030C001F01200F90EDBCF8C -:101FC0002FF0FA0E12007BEC22F017EF23F001DD68 -:101FD000E1DD5DDF59EF0EF075DF4BDE77EF0EF0E0 -:0E1FE0002EC0E6FF2FC0E6FF30C0E6FF120065 -:021FEE00DACF48 -:101FF000E4FFE2CFDAFFE9CFE4FFEACFE4FFF6CF78 -:10200000E4FFF7CFE4FFF5CFE4FFF3CFE4FFF4CF35 -:10201000E4FFFACFE4FF00EE29F0140EE80403E336 -:10202000EECFE4FFFBD700EE00F0290EE80403E357 -:10203000EECFE4FFFBD793EC1BF09EA013D09DECFA -:102040001BF001014D2B000E4E23E80E4D5D030EDB -:102050004E5905E34D6B4E6B4F2B000E50230EEC8B -:1020600029F09E90A6EC1BF002E2E16AE552E16ED7 -:10207000E552E7CFD9FFE55200EE28F0290EE8043B -:1020800003E3E5CFEDFFFBD700EE3CF0140EE804D0 -:1020900003E3E5CFEDFFFBD7E5CFFAFFE5CFF4FF94 -:1020A000E5CFF3FFE5CFF5FFE5CFF7FFE5CFF6FF8F -:1020B000E5CFEAFFE5CFE9FFE5CFDAFF1100D8CFA2 -:1020C000E4FFE0CFE4FFE46EDACFE4FFE2CFDAFF33 -:1020D000F3CFE4FFF4CFE4FF93EC1BF0A6EC1BF08E -:1020E00002E2E16AE552E16EE552E7CFD9FFE5523F -:1020F000E5CFF4FFE5CFF3FFE5CFDAFFE550E5CF1D -:10210000E0FFE5CFD8FF100004D8F1EC1BF060D859 -:10211000FCD70F0EC11202D8BBEF1BF0B6EC1BF0C0 -:10212000E6526AEC1BF00101676F070E675D10E174 -:10213000E66A7EEC2FF0E552DF6E000EDF80AEEC3B -:102140001BF0E66A37EC30F0E552DF70AEEC1BF0C6 -:10215000D08EF28EF28CF30E8C1695160101476B21 -:10216000486B496B4A6B010E4B6FF90E9216801645 -:102170000E0EE66E7C0EE66EE10EE66EF1EC2EF0D3 -:10218000E552E552E552CF0E9216939894943F0E85 -:102190009516010EE66E2EEC04F0E552838C8188D4 -:1021A0008284808A838E80888294010EE66E72EC2F -:1021B00030F0E55282849D80C50EE66EC7EC2FF0AC -:1021C000E5529DEC1BF0E552E552E7CFD9FF120036 -:1021D000D9CFE6FFE1CFD9FF0F0EE12601014B5128 -:1021E00002E0AFEC1AF0200E0101005D03E36D5038 -:1021F000020B02E0A5EF1AF0010149514A1102E178 -:10220000000E08D049C1E9FF4AC1EAFFEF50800B38 -:1022100001E0010E000947E101014651EA6A260F7B -:10222000E96E010EEA22EF5000083DE20501406B25 -:1022300001014C514C2B0501416F0501040E426F09 -:1022400001014651EA6A260FE96E010EEA22EFCF3C -:1022500043F5400EE66E400EE66E050EE66E010E8C -:10226000E66E010EE66E0CEC20F0006E050EE15EEF -:102270000050F3CF49F1F4CF4AF101014651EA6A27 -:10228000260FE96E010EEA22EF6A010146510008AD -:1022900003E20101460707D001014551000803E2AE -:1022A00001011F0E466F010149514A1102E1000E62 -:1022B00008D049C1E9FF4AC1EAFFEF50800B01E0B5 -:1022C000010E00092CE10101520529E113EC0CF08B -:1022D000000925E00501406B01014C514C2B050123 -:1022E000416F05010A0E426F0501436B0501010EA6 -:1022F000486F400EE66E400EE66E050EE66E010E6D -:10230000E66E010EE66E0CEC20F0006E050EE15E4E -:102310000050F3CF49F1F4CF4AF10101526B000EA6 -:102320000101E76E5119E8AE02D0513503D0E750F4 -:10233000D880515501E38ED001015151FF0A29E0A7 -:10234000FD0A13E0030A01E06ED0020EE66E5AECBD -:102350002AF0E55257EC07F0000904E00101020EF3 -:10236000516F02D00101516960D0200EE66E030E5C -:10237000E66EC80EE66EE66AE80EE66E030EE66EE0 -:102380003DEC09F0006E060EE15E00500101516B5C -:102390004CD0010149514A1102E1000E08D049C157 -:1023A000E9FF4AC1EAFFEF50800B01E0010E00098E -:1023B00039E10501406B01014C514C2B0501416F86 -:1023C0000501050E426F0501436B0501486BC30E05 -:1023D000006E5D0E016E026A00C0E6FF01C0E6FFFE -:1023E00002C0E6FF480EE66E050EE66E42EC2FF0E8 -:1023F000036E050EE15E0350400EE66E400EE66E83 -:10240000050EE66E010EE66E010EE66E0CEC20F097 -:10241000006E050EE15E0050F3CF49F1F4CF4AF1B2 -:102420000101516B02D00101516B020EE66EE66AAA -:10243000F0EC06F0E552E55200090AE1020EE66E04 -:10244000010EE66EF0EC06F0E552E552000902E0FE -:102450000101516901014751481102E1000E08D004 -:1024600047C1E9FF48C1EAFFEF50800B01E0010ED0 -:10247000000902E0A5EF1AF005010251070A02E186 -:1024800006EF1AF00D0A01E149D2010A01E119D261 -:102490000D0A01E1B1D1040A1AE0030A07E0010ABA -:1024A00002E064EF1AF0FF00A5EF1AF0E66A7EEC96 -:1024B0002FF0E552DF6E000EDB80DFCFE6FFE66A2D -:1024C0005EEC2FF0E552E552FF00A5EF1AF0010196 -:1024D00049514A1102E1000E08D049C1E9FF4AC141 -:1024E000EAFFEF50800B01E0010E000901E082D10C -:1024F00000C540F50501416B0501030E426F050162 -:10250000436B050108510F0A01E110D1080A01E1EE -:10251000BBD0010A01E17ED0020A71E0070A64E043 -:10252000010A20E0030A06E0010A01E039D167C18F -:1025300048F539D10501486B9F0E006E5D0E016EA6 -:10254000026A00C0E6FF01C0E6FF02C0E6FF480ED7 -:10255000E66E050EE66E42EC2FF0036E050EE15EB0 -:10256000035021D10501486B930E006E5D0E016E84 -:10257000026A00C0E6FF01C0E6FF02C0E6FF480EA7 -:10258000E66E050EE66E42EC2FF0036E050EE15E80 -:102590000350910E006E5D0E016E026A00C0E6FFF0 -:1025A00001C0E6FF02C0E6FF480EE66E050EE66ECD -:1025B00042EC2FF0036E050EE15E0350880E006EB4 -:1025C0005D0E016E026A00C0E6FF01C0E6FF02C0B8 -:1025D000E6FF480EE66E050EE66E42EC2FF0036E47 -:1025E000050EE15E0350DFD092CF48F593CF49F559 -:1025F00094CF4AF595CF4BF596CF4CF5D4D080CFFC -:1026000048F581CF49F582CF4AF583CF4BF584CF8A -:102610004CF5C9D0E66AB4EC29F0E552010E2DC0A4 -:10262000DBFF020E2EC0DBFF030E2FC0DBFF040E0C -:1026300030C0DBFF040EDBCF48F5030EDBCF49F5DE -:10264000020EDBCF4AF5010EDBCF4BF5010EE66E35 -:10265000B4EC29F0E552010E2DC0DBFF020E2EC0B6 -:10266000DBFF030E2FC0DBFF040E30C0DBFF040EC8 -:10267000DBCF4CF5030EDBCF4DF5020EDBCF4EF575 -:10268000010EDBCF4FF58FD00A0EE66EE66A7EECC8 -:1026900004F0E552E552E66AE2EC05F0E552030E7D -:1026A000F3CFDBFF040EF4CFDBFFE66AE2EC05F0CC -:1026B000E552DE52F3CFDEFFF4CFDDFFDD52040E34 -:1026C000DBCF48F5030EDBCF49F5020EDBCF4AF531 -:1026D000010EDBCF4BF50A0EE66E010EE66E7EECC8 -:1026E00004F0E552E552010EE66EE2EC05F0E5522B -:1026F000030EF3CFDBFF040EF4CFDBFF010EE66E1B -:10270000E2EC05F0E552DE52F3CFDEFFF4CFDDFF61 -:10271000DD52040EDBCF4CF5030EDBCF4DF5020E80 -:10272000DBCF4EF5010EDBCF4FF53DD0E66A1AEC5C -:1027300009F0E552010E2DC0DBFF020E2EC0DBFFBB -:10274000030E2FC0DBFF040E30C0DBFF040EDBCF17 -:1027500048F5030EDBCF49F5020EDBCF4AF5010E3B -:10276000DBCF4BF5010EE66E1AEC09F0E552010ED7 -:102770002DC0DBFF020E2EC0DBFF030E2FC0DBFFE0 -:10278000040E30C0DBFF040EDBCF4CF5030EDBCFB5 -:102790004DF5020EDBCF4EF5010EDBCF4FF503D02A -:1027A0000501020E436F400EE66E400EE66E050E0A -:1027B000E66E010EE66E010EE66E0CEC20F0006E89 -:1027C000050EE15E0050F3CF49F1F4CF4AF1400E1F -:1027D000E66E000EE66E050EE66EE66A010EE66E29 -:1027E0000CEC20F0006E050EE15E0050F3CF47F1D7 -:1027F000F4CF48F1A5EF1AF005010851030A37E0BC -:10280000010A25E0030A13E0010A01E040D00501B6 -:102810000951921205010A51931205010B519412AC -:1028200005010C51951205010D51961235D0050187 -:10283000091D921605010A1D931605010B1D94161C -:1028400005010C1D951605010D1D961625D00501D7 -:10285000091D891605010A1D8A1605010B1D8B1617 -:1028600005010C1D8C1605010D1D8D1615D00501D9 -:102870000951891205010A518A1205010B518B1267 -:1028800005010C518C1205010D518D1205D0030E5E -:10289000E66E04EC30F0E552400EE66E000EE66E99 -:1028A000050EE66EE66A010EE66E0CEC20F0006E98 -:1028B000050EE15E0050F3CF47F1F4CF48F1A5EFEC -:1028C0001AF005010851020A09E0030A01E00CD0E0 -:1028D00009C5E6FF5AEC2AF0E5520BD009C5E6FF20 -:1028E0006AEC2AF0E55205D0010EE66E04EC30F0F9 -:1028F000E552400EE66E000EE66E050EE66EE66AE6 -:10290000010EE66E0CEC20F0006E050EE15E00504C -:10291000F3CF47F1F4CF48F1A5EF1AF005010851C4 -:10292000060A02E1C5EF19F0080A02E18BEF19F07F -:10293000030A02E182EF19F0070A02E11EEF19F023 -:10294000030A01E1C3D3010A01E1D0D20F0A01E178 -:10295000B9D2020A01E16ED2010A01E13DD2070AB1 -:1029600001E10CD2010A01E1DBD1030A01E1AAD1A4 -:10297000010A01E1A4D10C0A01E126D1030A01E117 -:1029800094D0040A02E0EDEF19F00501095104E0CA -:10299000020E0501095D40E10AC5E6FF010EE66E83 -:1029A0005EEC2FF0E552E5520BC5E6FF020EE66E37 -:1029B0005EEC2FF0E552E5520CC5E6FF030EE66E25 -:1029C0005EEC2FF0E552E5520DC5E6FF040EE66E13 -:1029D0005EEC2FF0E552E5520EC5E6FF050EE66E01 -:1029E0005EEC2FF0E552E5520FC5E6FF060EE66EEF -:1029F0005EEC2FF0E552E55210C5E6FF070EE66EDD -:102A00005EEC2FF0E552E55211C5E6FF080EE66ECA -:102A10005EEC2FF0E552E5520501090504E0020ED7 -:102A20000501095D40E10AC5E6FF090EE66E5EECB0 -:102A30002FF0E552E5520BC5E6FF0A0EE66E5EEC9E -:102A40002FF0E552E5520CC5E6FF0B0EE66E5EEC8C -:102A50002FF0E552E5520DC5E6FF0C0EE66E5EEC7A -:102A60002FF0E552E5520EC5E6FF0D0EE66E5EEC68 -:102A70002FF0E552E5520FC5E6FF0E0EE66E5EEC56 -:102A80002FF0E552E55210C5E6FF0F0EE66E5EEC44 -:102A90002FF0E552E55211C5E6FF100EE66E5EEC32 -:102AA0002FF0E552E552F2EF19F000C540F50501AF -:102AB000416B0501030E426F0501436B010EE66E8B -:102AC0007EEC2FF0E5520501486F020EE66E7EECBB -:102AD0002FF0E5520501496F030EE66E7EEC2FF0F4 -:102AE000E55205014A6F040EE66E7EEC2FF0E552CA -:102AF00005014B6F050EE66E7EEC2FF0E5520501E9 -:102B00004C6F060EE66E7EEC2FF0E55205014D6F20 -:102B1000070EE66E7EEC2FF0E55205014E6F080EB3 -:102B2000E66E7EEC2FF0E55205014F6F090EE66E62 -:102B30007EEC2FF0E5520501506F0A0EE66E7EEC3A -:102B40002FF0E5520501516F0B0EE66E7EEC2FF073 -:102B5000E5520501526F0C0EE66E7EEC2FF0E55249 -:102B60000501536F0D0EE66E7EEC2FF0E552050168 -:102B7000546F0E0EE66E7EEC2FF0E5520501556F98 -:102B80000F0EE66E7EEC2FF0E5520501566F100E2B -:102B9000E66E7EEC2FF0E5520501576F400EE66EB3 -:102BA000400EE66E050EE66E010EE66E010EE66E56 -:102BB0000CEC20F0006E050EE15E0050F3CF49F101 -:102BC000F4CF4AF1F2EF19F0030EE66E010EE66E55 -:102BD0005EEC2FF0E552E552E80EE66E020EE66E70 -:102BE0005EEC2FF0E552E552E66A030EE66E5EEC0F -:102BF0002FF0E552E552010EE66E040EE66E5EEC35 -:102C00002FF0E552E552E66A050EE66E5EEC2FF017 -:102C1000E552E552E66A060EE66E5EEC2FF0E552EE -:102C2000E552270EE66E070EE66E5EEC2FF0E552DB -:102C3000E552100EE66E080EE66E5EEC2FF0E552E1 -:102C4000E552030EE66E090EE66E5EEC2FF0E552DD -:102C5000E552E80EE66E0A0EE66E5EEC2FF0E552E7 -:102C6000E552E66A0B0EE66E5EEC2FF0E552E55299 -:102C7000010EE66E0C0EE66E5EEC2FF0E552E552AC -:102C8000E66A0D0EE66E5EEC2FF0E552E552E66A5E -:102C90000E0EE66E5EEC2FF0E552E552270EE66E64 -:102CA0000F0EE66E5EEC2FF0E552E552100EE66E6A -:102CB000100EE66E5EEC2FF0E552E55293D357EC22 -:102CC00007F090D3060E09C5DBFF050E0AC5DBFF32 -:102CD000080E0BC5DBFF070E0CC5DBFF0A0E0DC58A -:102CE000DBFF090E0EC5DBFF090EDBCFE6FF0A0E88 -:102CF000DBCFE6FF070EDBCFE6FF080EDBCFE6FFFC -:102D0000050EDBCFE6FF060EDBCFE6FF3DEC09F05C -:102D1000006E060EE15E00500101010E526F62D39B -:102D2000060E09C5DBFF050E0AC5DBFF080E0BC545 -:102D3000DBFF070E0CC5DBFF0A0E0DC5DBFF090E1E -:102D40000EC5DBFF090EDBCFE6FF0A0EDBCFE6FF89 -:102D5000070EDBCFE6FF080EDBCFE6FF050EDBCF6D -:102D6000E6FF060EDBCFE6FF44EC09F0006E060E30 -:102D7000E15E00500101010E526F34D3060E09C509 -:102D8000DBFF050E0AC5DBFF080E0BC5DBFF070ED8 -:102D90000CC5DBFF0A0E0DC5DBFF090E0EC5DBFF00 -:102DA000090EDBCFE6FF0A0EDBCFE6FF070EDBCF17 -:102DB000E6FF080EDBCFE6FF050EDBCFE6FF060ED3 -:102DC000DBCFE6FF4BEC09F0006E060EE15E005033 -:102DD0000101010E526F06D3060E09C5DBFF050E79 -:102DE0000AC5DBFF080E0BC5DBFF070E0CC5DBFFBA -:102DF0000A0E0DC5DBFF090E0EC5DBFF090EDBCF8A -:102E0000E6FF0A0EDBCFE6FF070EDBCFE6FF080E7C -:102E1000DBCFE6FF050EDBCFE6FF060EDBCFE6FFDE -:102E200057EC09F0006E060EE15E00500101010E44 -:102E3000526FD8D2060E09C5DBFF050E0AC5DBFFAF -:102E4000080E0BC5DBFF070E0CC5DBFF0A0E0DC518 -:102E5000DBFF090E0EC5DBFF0C0E0FC5DBFF0B0EF3 -:102E600010C5DBFF0E0E12C5DBFF0D0E13C5DBFF19 -:102E70000D0EDBCFE6FF0E0EDBCFE6FF11C5E6FF42 -:102E80000B0EDBCFE6FF0C0EDBCFE6FF090EDBCF30 -:102E9000E6FF0A0EDBCFE6FF070EDBCFE6FF080EEC -:102EA000DBCFE6FF050EDBCFE6FF060EDBCFE6FF4E -:102EB00063EC09F0006E0B0EE15E00500101010EA3 -:102EC000526F90D2060E0AC5DBFF050E0BC5DBFF65 -:102ED000050EDBCFE6FF060EDBCFE6FF09C5E6FFFA -:102EE00011EC09F0E552E552E5527CD2060E0AC516 -:102EF000DBFF050E0BC5DBFF080E0CC5DBFF070E65 -:102F00000DC5DBFF0A0E0EC5DBFF090E0FC5DBFF8B -:102F100009C5E6FF03EC07F0E552090EDBCF2FF001 -:102F20000A0EDBCF30F061EC21F02EC008F02FC08C -:102F300009F030C00AF031C00BF0A60E336E280E37 -:102F4000346E940E356E3F0E366E08C02EF009C0FA -:102F50002FF00AC030F00BC031F07BEC22F02EC015 -:102F600004F02FC005F030C006F031C007F0CC0EE1 -:102F7000336EBC0E346E8C0E356E3B0E366E04C056 -:102F80002EF005C02FF006C030F007C031F07BEC0A -:102F900022F017EC23F02DC000F02EC001F02FC05E -:102FA00002F030C003F000C0E6FF01C0E6FF02C03F -:102FB000E6FF03C0E6FF070EDBCF2FF0080EDBCFE6 -:102FC00030F061EC21F02EC014F02FC015F030C0AD -:102FD00016F031C017F0A60E336E280E346E940E24 -:102FE000356E3F0E366E14C02EF015C02FF016C091 -:102FF00030F017C031F07BEC22F02EC010F02FC063 -:1030000011F030C012F031C013F0BD0E336E370E28 -:10301000346E860E356E410E366E10C02EF011C025 -:103020002FF012C030F013C031F07BEC22F017EC1F -:1030300023F02DC00CF02EC00DF02FC00EF030C0CC -:103040000FF00CC0E6FF0DC0E6FF0EC0E6FF0FC09C -:10305000E6FF050EDBCF2FF0060EDBCF30F061EC84 -:1030600021F02EC01CF02FC01DF030C01EF031C06A -:103070001FF0A60E336E280E346E940E356E3F0E82 -:10308000366E1CC02EF01DC02FF01EC030F01FC0C9 -:1030900031F07BEC22F017EC23F02DC018F02EC09D -:1030A00019F02FC01AF030C01BF018C0E6FF19C08D -:1030B000E6FF1AC0E6FF1BC0E6FF09C5E6FFDAEC33 -:1030C00007F0206E0D0EE15E20508CD1060E0AC571 -:1030D000DBFF050E0BC5DBFF080E0CC5DBFF070E83 -:1030E0000DC5DBFF09C5E6FF03EC07F0E5520EC591 -:1030F000E6FF070EDBCF2FF0080EDBCF30F061ECE0 -:1031000021F02EC008F02FC009F030C00AF031C005 -:103110000BF0A60E336E280E346E940E356E3F0EF5 -:10312000366E08C02EF009C02FF00AC030F00BC078 -:1031300031F07BEC22F02EC004F02FC005F030C03F -:1031400006F031C007F0CC0E336EBC0E346E8C0E20 -:10315000356E3B0E366E04C02EF005C02FF006C053 -:1031600030F007C031F07BEC22F017EC23F02DC0DB -:1031700000F02EC001F02FC002F030C003F000C0FC -:10318000E6FF01C0E6FF02C0E6FF03C0E6FF050E52 -:10319000DBCF2FF0060EDBCF30F061EC21F02EC03C -:1031A00014F02FC015F030C016F031C017F0A60E85 -:1031B000336E280E346E940E356E3F0E366E14C08C -:1031C0002EF015C02FF016C030F017C031F07BEC98 -:1031D00022F02EC010F02FC011F030C012F031C01C -:1031E00013F0BD0E336E370E346E860E356E410E03 -:1031F000366E10C02EF011C02FF012C030F013C088 -:1032000031F07BEC22F017EC23F02DC00CF02EC037 -:103210000DF02FC00EF030C00FF00CC0E6FF0DC057 -:10322000E6FF0EC0E6FF0FC0E6FF09C5E6FF6AEC49 -:1032300008F0186E0A0EE15E1850D4D0060E0AC5CA -:10324000DBFF050E0BC5DBFF09C5E6FF03EC07F04E -:10325000E5520CC5E6FF050EDBCF2FF0060EDBCFE7 -:1032600030F061EC21F02EC008F02FC009F030C022 -:103270000AF031C00BF0A60E336E280E346E940E99 -:10328000356E3F0E366E08C02EF009C02FF00AC012 -:1032900030F00BC031F07BEC22F02EC004F02FC0D8 -:1032A00005F030C006F031C007F0BD0E336E370EAA -:1032B000346E860E356E410E366E04C02EF005C09B -:1032C0002FF006C030F007C031F07BEC22F017EC95 -:1032D00023F02DC000F02EC001F02FC002F030C04E -:1032E00003F000C0E6FF01C0E6FF02C0E6FF03C036 -:1032F000E6FF09C5E6FFC8EC08F00C6E060EE15EBD -:103300000C5070D009C5E6FFE0EC08F0E552010171 -:10331000010E526F67D0E6EC0BF0050EF3CFDBFF2A -:10332000060EF4CFDBFFFCEC0BF0070EF3CFDBFF58 -:10333000080EF4CFDBFF00C540F50501416B050128 -:10334000030E426F0501436B060EDBCF48F5050EF9 -:10335000DBCF49F5080EDBCF4AF5070EDBCF4BF587 -:10336000400EE66E400EE66E050EE66E010EE66E4F -:10337000010EE66E0CEC20F0006E050EE15E0050D2 -:10338000F3CF49F1F4CF4AF12DD000C540F5050146 -:10339000416B0501030E426F0501436B13EC0CF00A -:1033A000000904E00501010E486F02D00501486BD9 -:1033B000400EE66E400EE66E050EE66E010EE66EFF -:1033C000010EE66E0CEC20F0006E050EE15E005082 -:1033D000F3CF49F1F4CF4AF105D0010EE66E04ECCB -:1033E00030F0E552400EE66E000EE66E050EE66E1B -:1033F000E66A010EE66E0CEC20F0006E050EE15E52 -:103400000050F3CF47F1F4CF48F19FD0010149516B -:103410004A1102E1000E08D049C1E9FF4AC1EAFFA2 -:10342000EF50800B01E0010E00094DE10101010E9A -:10343000516F0501406B01014C514C2B0501416F4F -:103440000501050E426F0501436B0501486B740EC3 -:10345000006E5D0E016E026A00C0E6FF01C0E6FF6D -:1034600002C0E6FF480EE66E050EE66E42EC2FF057 -:10347000036E050EE15E0350400EE66E400EE66EF2 -:10348000050EE66E010EE66E010EE66E0CEC20F007 -:10349000006E050EE15E0050F3CF49F1F4CF4AF122 -:1034A000400EE66E000EE66E050EE66EE66A010E52 -:1034B000E66E0CEC20F0006E050EE15E0050F3CFDE -:1034C00047F1F4CF48F141D0010149514A1102E1DD -:1034D000000E08D049C1E9FF4AC1EAFFEF50800B56 -:1034E00001E0010E000931E100C540F50501416B25 -:1034F0000501030E426F0501010E436F400EE66E9B -:10350000400EE66E050EE66E010EE66E010EE66EEC -:103510000CEC20F0006E050EE15E0050F3CF49F197 -:10352000F4CF4AF1400EE66E000EE66E050EE66E32 -:10353000E66A010EE66E0CEC20F0006E050EE15E10 -:103540000050F3CF47F1F4CF48F10F0EE15C02E2F7 -:10355000E16AE552E16EE552E7CFD9FF12000101C1 -:103560005351541104E1100E536F270E546F53073B -:10357000000E545B6DA207D0535154112EE18C7490 -:103580008CB413D027D00101005102E18C9422D0D9 -:10359000000502E18C8409D0020E005D02E18C84FA -:1035A00019D0040E005D03E18C948C861200100E7D -:1035B000005D06E10101535154110FE18C740AD0F2 -:1035C000200E005D0AE101015351541106E18C7493 -:1035D0008CA402D08C9612008C861200120012006D -:1035E00012001200ABEF2DF012001E0EE66E010E5F -:1035F000E66EDAEC1FF0E552E552400EE66E000E84 -:10360000E66E050EE66EE66A010EE66E0CEC20F044 -:10361000006E050EE15E0050F3CF47F1F4CF48F1A4 -:1036200012006D840101080E686F070E696F68074C -:10363000000E695B68516911FAE16D941200D9CFEF -:10364000E6FFE1CFD9FFFD0EDBCF2FF0FE0EDBCF83 -:1036500030F0010E2F1801E1305033E0E8682F18E8 -:1036600002E1E86830182BE0030E2F1801E130501A -:1036700024E0040E2F1801E130501DE0020E2F1837 -:1036800001E1305016E0170E2F1801E130500FE025 -:10369000160E2F1801E1305008E0150E2F1801E129 -:1036A000305001E010D0A1DF0FD09EDF0DD09ADFA7 -:1036B0000BD096DF09D092DF07D091DF05D091DFE4 -:1036C00003D0000001D000D0010E00D0E552E7CFBA -:1036D000D9FF12004BD8E652D0B202D0010E15D05D -:1036E000D0B802D0020E11D0D0B002D0030E0DD04F -:1036F000D0B602D0040E09D0FCAE02D0050E05D023 -:10370000FCAC02D0060E01D0070EDF6ED088D0864A -:10371000D084D082D080FC9EFC9CDF50E552E552E4 -:10372000E7CFD9FF1200E65221D8020EE126F3506E -:10373000DF6E010EF4CFDBFF1200C00EE66EE00E6E -:10374000E66EE8EC2FF0E552E5521200DF50F36E22 -:10375000010EDB50F46E020EE15C1200DFCFE6FFDB -:10376000E66A5EEC2FF0E552E5521200D9CFE6FF93 -:06377000E1CFD9FF1200B9 -:0A377600B3EC20F06A6A686AE6EC22 -:1037800020F06D8C6E6A96EC20F06D9CDF6AC7ECC1 -:1037900020F010E2DF50040DF3CFE9FFF4CFEAFF91 -:1037A000000EE926040EEA22EE6AEE6AEE6AEE6A7E -:1037B000DF2AEDD7160E706E68A604D0030E5CECFF -:1037C00020F0FAD70101136B186B196B1A6B6D9807 -:1037D000080E0B6F040E0C6F016B006BE55271EF5E -:1037E00020F0B3EC20F0010100510BE16D6A696A31 -:1037F000E6EC20F06DB602D06D86FCD70101010E1B -:10380000006F000508E16DBA06D0686A696A6980D0 -:103810006988020E006F6850040B07E06950040BC2 -:1038200004E0020E5CEC20F089D86DB247D06850FD -:10383000010B14E06950010B11E09DDF0101040E42 -:10384000006F0401200E026F040E036F080E016F5B -:10385000006B8C0E0013E66A25EC21F06850100B0B -:1038600007E06950100B04E060D8040E5CEC20F017 -:103870006850400B0BE06950400B08E0EDEC20F085 -:10388000020E64EC20F0060E5CEC20F06850200B79 -:1038900004E06950200B01E035D86850020B0AE0C3 -:1038A0006950020B07E0EDEC20F0E668E66845ECB5 -:1038B00021F06A6A040E0101005D02E2A19A1FD0A4 -:1038C00069A61CD0DF6A040EDF5C18E268A616D079 -:1038D0006CCF20F1030E5CEC20F0780E0101201576 -:1038E00002E138D809D0000EE66EE66A200EE66ED8 -:1038F000010EE66E010EE8DBDF2AE5D7A19AE5525C -:1039000071EF20F070A00ED07FEC20F0EF50800817 -:1039100008E1D5DBEF50840804E17FEC20F08C0E49 -:10392000EF6E7090050E5CEF20F06984040EC4DB2E -:103930006D829FEC20F0040E64EF20F09FEC20F0ED -:10394000030EC2DB6D92699468A403D0020EB4DB4F -:10395000FBD71200B3EC20F0FD0E010120153DE174 -:103960007E0E2015E8407F0B040DF3CF03F1F4CF5A -:1039700004F1000E0327040E042303C105F104C162 -:1039800006F10575BCDBEF503C0BE842E8420D0840 -:1039900022E1B5DB1CEC21F0EECF00F0EFCF01F01F -:1039A000280E001816E1040E011813E156EC21F060 -:1039B000DF6AEDDB0EE2DF50CFEC20F0DF50EA6A89 -:1039C000200FE96E040EEA22E552E750EF6EDF2A7F -:1039D000F0D70AD807D01AD805D0FD0E2015040854 -:1039E00001E122D8E5527DD36ADBEF50800B02E083 -:1039F00066DBEF6A01010F6B106B146B156B136BB9 -:103A000064D89DDB170E60DB9AEF1EF0020E0101F9 -:103A1000105D02E127EF1FF034D80101215102E1CE -:103A200021EF21F0216B12009EDB49DBEF50400BB0 -:103A300001E0010EDF6E01010B75080E005D09E16A -:103A400022C46EFF6E50000802E2100E01D0040E78 -:103A5000006F100513E15AEC21F0A6D9020E010106 -:103A60000F5D03E12CDB840E07D0DF5003E127DB81 -:103A7000C80E02D024DB880EEF6E01D002D8E552CA -:103A800030D32BDB0101106B1ADBEF6A040E0B192C -:103A9000006E0CC101F0DE6E0CC1DDFF19DBEF6AB8 -:103AA00018AF0CD01B511C1107E005D01CC1FAFF48 -:103AB00001011B51F96EFADF0101189F020EE15C52 -:103AC00002E2E16AE552E16E0CD304012051600B81 -:103AD000E842E842E842E842E842000901E0120018 -:103AE00021510C0A45E00B0A3FE00C0A31E0010AC3 -:103AF00022E00B0A1EE0020A1CE0030A18E0080A92 -:103B000010E0010A0CE00F0A08E0030A01E01200CD -:103B10000101138F080E006F12001AEF1EF083EFE1 -:103B20001FF00101010E116F010E126F0CD05BEF3F -:103B30001EF0B9EF1DF024510101116F126B020E3E -:103B40001127010E12231381010E146F138F12001F -:103B50000101138F04012451EA6A020FE96E010E7C -:103B6000EA2222C4EFFF1200EADA160E64EF20F018 -:103B700012007EDB040EE1260401220510E1205133 -:103B80001F0B00090CE10101138F030E0401215DDD -:103B900004E10101010E1F6F02D001011F6B04013E -:103BA000225141E120511F0B02083DE124510F0B2E -:103BB000000939E00101138F040124BF05D0A4DA04 -:103BC000070EE926010E04D09FDA0B0EE926010E3E -:103BD000D2DA030E215D03E17BDA840E23D0245177 -:103BE0000F0B016A700F006E0F0E0122020E00C053 -:103BF000DBFF030E01C0DBFF020EDBCFE9FF030E8C -:103C0000DBCFEAFFEE90ED5224AF06D061DAEF6A27 -:103C1000DF745EDA400E06D05BDA880EEF6EDF747A -:103C200057DAC80EEF6E040EE15C02E2E16AE5527B -:103C3000E16E57D2800E0401205D3CE10101C00E0F -:103C4000136F04012351030A1EE0010A09E0030A6D -:103C50002FE10101240E116F5C0E126F120E22D0A3 -:103C6000C3DACE0EF6265C0EA2DA020E0101F76A66 -:103C70001125F66E1251F7220900F5CF14F10A0052 -:103C8000F5CF15F11200030E225D0FE2ADDAD00E72 -:103C9000F6265C0E8CDA11C1F6FF12C1F7FF0800A0 -:103CA000F5500101146F156B12000101136B120026 -:103CB0000101136B120011DA0401286B296B2051EA -:103CC0001F0B020A11E0030A0CE0010A22E10101C4 -:103CD000138F0401288101011F051BE104012883C2 -:103CE00018D00101138F15D00101138F040124BFD7 -:103CF00005D00ADA070EE926010E04D005DA0B0E0C -:103D0000E926010E38DAE4D9EF50040B02E0010E87 -:103D1000286F010113AF07D0280E116F040E126F28 -:103D20001381020E146F020EE15C02E2E16AE552B9 -:103D3000E16ED7D16D98010113BF08D018AF02D042 -:103D400061DA2AD07EDABBD9840E27D018BF2BD0F7 -:103D5000040120AF24D0010114510401265D0101AA -:103D600015510401275904E226C414F127C415F1A2 -:103D70001BD80101010E106FA1DA800EEF6E216BCE -:103D8000BED9EE52080EEF6E91DAB9D9840EEF6EFD -:103D9000010E216F8FDA93D9C80EEF6E1200010168 -:103DA00031DAC80EEF6E120098D90101080E145DC9 -:103DB000000E15590DE214C1DEFF15C1DDFF0F51D4 -:103DC00002E1010E03D00F0506E1020E0F6F03D0D2 -:103DD000080EDE6EDD6A73D9EF9271D9EF906FD95C -:103DE000010EDB50EF126BD9EE52DFCFEFFF000E6A -:103DF000DB50145F010EDB50155B280E1D6F040EA7 -:103E00001E6F13B10FD0F7D91BE011C1F6FF12C11D -:103E1000F7FF112B000E12230800F55096D9F3E29C -:103E2000DB06F1D7E8D90CE011C1E9FF12C1EAFFC6 -:103E3000112B000E1223EF5088D9F4E2DB06F2D7E3 -:103E4000020EE15C02E2E16AE552E16E4AD145D937 -:103E500056D9EE52EFCFDFFFDFCF00F00050010167 -:103E6000195D000E1A5903E219C1DFFF09D0DF50B6 -:103E7000006E016AE850195D196F01501A591A6FE6 -:103E8000010EDB6ADF50F36E010EDBCFF4FFF3505F -:103E9000F45C10E2010EDB5082D916C1E9FF17C1B4 -:103EA000EAFF162B000E1723E552E750EF6E010EC6 -:103EB000DB2AE8D7000ED8801955000E1A550DE2FE -:103EC000F4D854D91CD9EF50400B03E1EAD9C80EFD -:103ED00002D0E7D9880EEF6E0FD0F0D9840EEF6EC6 -:103EE0001B511C1107E005D01CC1FAFF01011B5139 -:103EF000F96EFADF0101189F020EE15C02E2E16A4D -:103F0000E552E16EEED00101138F10D9010EE66E7D -:103F1000E66AE66A020EE66E010EAFD922C401F12E -:103F20000401225104E10101100E006F1200010191 -:103F3000200E006F04D9150E64EF20F0CED8000ECD -:103F4000DE6E040EDD6EE8D8040DF350006E016ADB -:103F5000020E0F0B05E0D89001320032E806FBE1BB -:103F6000D89000360136D89000360136D9CFE9FF17 -:103F7000DACFEAFF0050EE260150ED22A9D8EF9EDD -:103F8000FD0EDB5002E16AD901D06DD9EA22DECF05 -:103F9000EEFFDDCFEDFF9CD8EF9C9AD8040EE9260A -:103FA000000EEA22EF8C020EE15C02E2E16AE552C9 -:103FB000E16E97D092D8FE0EDB50016A700F006E52 -:103FC0000F0EDFD885D8FD0EDBCFEFFFDBA402D0CC -:103FD000E66AF5D8FD0EDBA203D0010EE66EEFD83F -:103FE000020EE15C02E2E16AE552E16E7AD075D838 -:103FF000FE0EDB5005E125D962D8840EEF6E05D0A8 -:104000008BD80CD989D8010F09D9020EE15C02E2E4 -:10401000E16AE552E16E65D060D8FD0EDB5002E04A -:1040200022D901D01BD9A7D853D806D9FB0EDBCF94 -:10403000EEFFFC0EDBCFEDFF4BD8EE52FA0EDBCFDE -:10404000EFFF400E45D8E850EF16880E41D8E850F3 -:10405000EF12FD0EDB5002E006D901D0FFD8EA22B4 -:10406000EF74DECF00F0DDCF01F000C0F3FF01C040 -:10407000F4FF020EE15C02E2E16AE552E16E31D04A -:10408000F7D8010EF36EFC0EDB5004E0D890F33647 -:10409000E806FCE1F31C006EFD0EDBCFE9FFFE0E2F -:1040A000DBCFEAFF0050EF161CD0FBD8EE52080E13 -:1040B000EF6EF7D81CEF21F0E66E25EF21F00BC173 -:1040C000E9FF0CC1EAFF1200E66EE66A45EF21F057 -:1040D000DECFE9FFDDCFEAFF1200CAD8020EE126EB -:1040E0001200E552E7CFD9FF1200D6D851EF21F0E8 -:1040F000FE0EEA6ADB34FE0BEA36E96E120003C1FB -:10410000E9FF04C1EAFF120024510F0BE96EEA6ACD -:10411000D890E936EA361200FD0EDB50E824026E34 -:10412000FE0EDB50040DF35002241200000EE66E6A -:10413000E66AE66A710EE66E0F0E3DEF21F0000EA4 -:10414000E66EE66AE66EE66A1200E66E1DC1E9FFFB -:104150001EC1EAFF1D2B000E1E23E552E750EF6E35 -:10416000DF06010E120084D8E6521200280EEE6E11 -:10417000040EED6E1200EA22EECFDEFFEDCFDDFF82 -:104180001200012200C0DEFF01C0DDFF1200DF507F -:10419000006E016A080E005C000E01581200EA6A07 -:1041A000280FE96E040EEA22EF50E66E1200F722A5 -:1041B0000900F5CF11F10A00F5CF12F11200FE0E41 -:1041C000DBCFE6FFBBDEE552E5521200160E6F6E46 -:1041D0009F0E6B6E7B0E696E1200010EE66EE66A34 -:1041E000000EE66EE66A12002251F66EF76AD8906B -:1041F000F636F7361200D9CFE9FFDACFEAFFEE50F4 -:10420000ED101200020E106F5ADFEE52EF6A57DF08 -:10421000C80EEF6E4ADFAADF51EF21F0040DF3CF95 -:1042200000F0F4CF01F0000E0026040EAADF840E89 -:104230004FDFE850EF121200020EE926000EEA22CC -:1042400012003CD88C0EEF6E1200680EE66E0F0E58 -:10425000E66E16DFE552E552E552120049DF070E21 -:10426000E926010E120044DF0B0EE926010E1200B2 -:10427000D9CFE6FFE1CFD9FF1200E66E28EC2FF090 -:10428000006E050EE15E005012001FEC1BF0006E88 -:10429000060EE15E00501200200EEE6E040EED6E72 -:1042A000120005C1E9FF06C1EAFF120028DFC4DFE2 -:1042B0004CEF21F004DFC0DFB6EF20F0F6DE75EF43 -:0242C00020F0EC -:0E42C200389E08D0389E30AE05D02F6C301ECE -:1042D000E86A3022388E30C02AF02FC029F03C6ABC -:1042E0003B6A8E0E2B6E2C6A6AEF23F0389E0CD040 -:1042F000389E30AE09D02D6C2E1E2F1E301EE86A5F -:104300002E222F223022388E30C02AF02FC029F0E2 -:104310002EC03CF02DC03BF09E0E2B6E2C6A6AEF37 -:1043200023F0367E386AA6EC23F0BEEC23F038B6D4 -:104330004EEF23F038A20AD038AA03D038BE4EEF91 -:1043400023F038A45AEF23F057EF23F038AA05D012 -:1043500038AC5AEF23F057EF23F038A00AD038A832 -:1043600008D038BE04D038A402D063EF23F067EF42 -:1043700023F03B6A2C6A3650315C3A6E10E32EC053 -:104380003CF02FC029F030C02AF031C039F033C0E2 -:104390002EF034C02FF035C030F0383A09D033C099 -:1043A0003CF034C029F035C02AF036C039F03A6C00 -:1043B000389E38BC388E39C02BF038B096EF23F0D9 -:1043C0001A0E3A6096EF23F02B6A316A38A408D0AF -:1043D0002E6C2F1E301E311EE86A2F223022312211 -:1043E00038AC08D03C6C291E2A1E2B1EE86A2922F4 -:1043F0002A222B222D6A3A5207E0313430322F32F2 -:104400002E322D323A2EF9D72E503C262F5029220B -:1044100030502A2231502B222DC03BF0389E2BAE3B -:104420000BD03B6C3C1E291E2A1E2B1EE86A3C2228 -:1044300029222A222B22388E2BA006D0D8802A327D -:1044400029323C323B32392A39C02BF06AEF23F053 -:10445000386AA6EC23F0BEEC23F038B64EEF23F01A -:1044600038A205D038BA4EEF23F055EF23F038BA12 -:1044700061EF23F038A005D038B84EEF23F061EF9C -:1044800023F038B855EF23F02C6A7F0E31242B6EC1 -:10449000E86A2C2236502B5EE86A2C5A1A0E396EC6 -:1044A000316A3B6A3C6A296A2A6A33502E5E34506C -:1044B0002F5A3550305A000E315A09E733502E2604 -:1044C00034502F2235503022000E312201D03B8A49 -:1044D000D8902E362F3630363136D8903B363C3693 -:1044E00029362A36392EE1D730502F102E10D8A475 -:1044F0003B8A6AEF23F0386AA6EC23F0BEEC23F087 -:1045000038B64EEF23F038A205D038B84EEF23F07E -:1045100055EF23F038AA05D038B04EEF23F055EF11 -:1045200023F038B002D038A802D061EF23F02C6A13 -:10453000365031242B6EE86A2C227E0E2B5EE86A00 -:104540002C5A3B6A3C6A296A2A6A35503002F4CFF9 -:104550002AF0F3CF29F034503002F3503C26F450C7 -:104560002922000E2A2235502F02F3503C26F45007 -:104570002922000E2A2233503002F3503B26F450F9 -:104580003C22000E29222A2234502F02F3503B26CF -:10459000F4503C22000E29222A2235502E02F350DC -:1045A0003B26F4503C22000E29222A2233502F02AF -:1045B000F4503B26000E3C2229222A2234502E029F -:1045C000F4503B26000E3C2229222A226AEF23F0D7 -:1045D000386AA6EC23F038B6F2EF22F038A20ED0FB -:1045E00038B405D07F0E306EFF0E2F6E1FD0800EB8 -:1045F000306E2F6A1BD0306A2F6A18D038B0FBD7C4 -:104600008F0E3160EDD77E0E3164F5D78E0E315CA2 -:1046100005E0D89030322F32312AF8D738A406D0AE -:104620002F6C301EE86A302230AEE5D71200386AAF -:10463000A6EC23F038B621EF23F038A20FD038B41F -:1046400007D07F0E306EFF0E2F6E2E6E2D6E25D092 -:10465000800E306E01D0306A000EF6D738B0FBD72E -:104660002D6A9F0E3160EBD77E0E3164F4D79E0E1B -:10467000315C07E0D89030322F322E322D32312A81 -:10468000F6D738A40AD02D6C2E1E2F1E301EE86AD5 -:104690002E222F22302230AEDED712007F0E316E56 -:1046A000FF0E306E2F6E2E6E12007F0E38BEFF0E84 -:1046B000316E02D07F0E316E800E306E2F6A2E6A00 -:1046C000F3D738AE04D0800E316E306AF7D7316A36 -:1046D000306AF4D72A5029103C103B10F8E02CBE69 -:1046E000F0D72ABE0CD02B502C10EBE0D8903B36E4 -:1046F0003C3629362A362B06D8A02C06F2D72C5069 -:10470000D4E12B28D2E03BAE11D07F0E3B1402E166 -:104710003CA00CD03C2AE86A29222A2207E3D88050 -:104720002A3229323C322B2A2B28BFE02B50C9E0F9 -:104730003CC02EF029C02FF02A34306E2B30316E61 -:104740003032319E38BE318E54EF23F03036313660 -:1047500002E33884387E06E13880316A306A2F6A95 -:104760002E6A1200312803E0D88030321200D8902F -:10477000303202E138821200388612003536363681 -:1047800002E3388C387E06E13888366A356A346A46 -:10479000336A1200362803E0D88035321200D890F0 -:1047A0003532EAE1388A1200E6EC23F038B6000C24 -:1047B00038B0000C38B4000C010CE6EC23F038B62D -:1047C000000C38B0000C38A4000C010C386AA6ECC0 -:1047D00023F0BEEC23F038B6120038AE08D038A073 -:1047E00004D038A802D03880120038901200365019 -:1047F000315C0BE13550305C08E134502F5C05E151 -:1048000033502E5C02E138801200D8A002D0388EDE -:1048100010D0315036C031F0366E305035C030F0E7 -:10482000356E2F5034C02FF0346E2E5033C02EF022 -:10483000336E3650315C10E0FF0F09E0389038B429 -:1048400003D038AE3884120038AE38941200362ABD -:10485000D89035323432333233502E5E34502F5AA2 -:104860003550305A30BEEAD7D8902E362F363036F3 -:10487000312EF8D7C8D7376A35AE44EF24F0346C00 -:10488000351EE86A3522371E30AE4CEF24F02F6C0F -:10489000301EE86A3022371E4EEC30F030BE5CEF3E -:1048A00024F037AE000C2F6C301EE86A30222B6CDF -:1048B0002C1EE86A2C22000C37BE53EF24F03888F7 -:0248C000FF0CEB -:0E48C200D9CFE6FFDACFE6FFE1CFD9FFE2CF94 -:1048D000DAFF1D0EE12402E3E168E652E16E67DAD9 -:1048E000FA0EDBCFEEFFFB0EDBCFEEFFFC0EDBCFD5 -:1048F000EEFFFD0EDBCFEEFFD950040FE66E000E8B -:10490000DA20E66E0BDA90EC2CF0006E060EE15C1D -:1049100002E2E16AE552E16E0050E76E0B0EE7CF6E -:10492000DBFFDB50800807E10A0EDB6ADE68DE6829 -:10493000DE687F0E13D00B0EDB0405E1DE6ADE6A53 -:10494000DE6ADD6AA6D10B0EDB50040809E1DB0E3E -:10495000DE6E0F0EDE6EC90EDE6E3F0EDD6E99D17D -:10496000DDD91EDA2DC0DEFF2EC0DEFF2FC0DEFF38 -:1049700030C0DDFFDD52DD52DBD90DDA3F0E20DA2B -:1049800023E12E6A2F6A800E306E3F0E316EDECF2D -:1049900033F0DECF34F0DECF35F0DDCF36F0DD5250 -:1049A000DD5228EC22F02EC0DFFF010E2FC0DBFF0E -:1049B000020E30C0DBFF030E31C0DBFF020EF36ED0 -:1049C0000C0EF3CFDBFF02D00C0EDB6AB1D9A30EC5 -:1049D000336E300E346E890E356E3E0EF1D96CE1B9 -:1049E000AF0E2E6E670E2F6E3B0E306E3F0E316E89 -:1049F000B2D92EC008F02FC009F030C00AF031C083 -:104A00000BF0C9D93F0E366E91EC21F02EC004F0A8 -:104A10002FC005F030C006F031C007F0C8D9EECF86 -:104A20000CF0EECF0DF0EECF0EF0EFCF0FF00CC08C -:104A300033F00DC034F00EC035F00FC036F092ECFC -:104A400021F080D9D70E146EB30E156EDD0E166EE2 -:104A50003F0E176EACD9EECF18F0EECF19F0EECFB7 -:104A60001AF0EFCF1BF018C033F019C034F01AC0A1 -:104A700035F01BC036F014C02EF015C02FF016C054 -:104A800030F0316E92EC21F02EC010F02FC011F0FA -:104A900030C012F031C013F02EC033F02FC034F00C -:104AA00030C035F031C036F035D928EC22F05FD96E -:104AB000DD52DD520C0EDB2A31D972D92DC000F047 -:104AC0002EC001F02FC002F030C003F064D9390EBF -:104AD000366E2DC02EF07AD9DDEC23F0010A01E10B -:104AE000B5D04ED938D90D0E2EC0DBFF0E0E2FC01B -:104AF000DBFF0F0E30C0DBFF100E31C0DBFF910E6D -:104B00002E6E860E2F6E500E306EBD0E316E0D0E57 -:104B1000DBCF33F00E0EDBCF34F00F0EDBCF35F0F2 -:104B2000100E4AD90FD9F60E336E100E346EF10EF8 -:104B3000356EBE0E366E92EC21F0110E2EC0DBFFEC -:104B4000120E2FC0DBFF130E30C0DBFF140E31C07E -:104B5000DBFF0D0EDBCF00F00E0EDBCF01F00F0EF2 -:104B6000DBCF02F0100EDBCF03F0D30E336ECC0E92 -:104B7000346EB40E356E3F0E366ECCD892EC21F00A -:104B8000150E2EC0DBFF160E2FC0DBFF170E30C038 -:104B9000DBFF180E31C0DBFF0D0EDBCF2EF00E0E4B -:104BA000DBCF2FF00F0EDBCF30F0100EDBCF31F06C -:104BB000110EDBCF33F0120EDBCF34F0130EDBCF50 -:104BC00035F0140EF9D8150EDBCF33F0160EDBCF0F -:104BD00034F0170EDBCF35F0180EDBCF36F028ECB3 -:104BE00022F0B0D8190E2EC0DBFF1A0E2FC0DBFF4B -:104BF0001B0E30C0DBFF1C0E31C0DBFFC1D8190E0D -:104C0000DBCF33F01A0EDBCF34F01B0EDBCF35F0E9 -:104C10001C0ED2D897D8CBD8EECF2EF0EECF2FF0F7 -:104C2000EECF30F0EFCF31F000C033F001C034F000 -:104C300002C035F003C036F092EC21F031C0EDFF38 -:104C400030C0EDFF2FC0EDFF2EC0EFFF0C0EDB04D8 -:104C500009E1920E006E0A0E016E060E3FD892EC2C -:104C600021F016D00C0EDB50020806E1DB0E006EC0 -:104C70000F0E016EC90E09D00C0EDB5003080BE1BC -:104C8000920E006E0A0E016E860E28D891EC21F06D -:104C90006ED8DD52DD520A0EDB500AE049D87BD8CF -:104CA000BF0E366E37D87BEC22F061D8DD52DD5274 -:104CB000DECF2DF0DECF2EF0DECF2FF0DDCF30F0C7 -:104CC000DD52DD521D0EE15C02E2E16AE552E16E69 -:104CD000E552E5CFDAFFE7CFD9FF1200026E3F0EB3 -:104CE000036E65D8EECF04F0EECF05F0EECF06F000 -:104CF000EFCF07F004C033F005C034F006C035F044 -:104D000007C036F000C02EF001C02FF002C030F016 -:104D1000316E120000C02EF0E6EF26F048D8EECF3C -:104D2000E6FFEECFE6FFEECFE6FFEFCFE6FF1200A5 -:104D30003ED8EECF00F0EECF01F0EECF02F0EFCF95 -:104D400003F012002EC000F02FC001F030C002F0BE -:104D500031C003F01200000EDFCF33F0010EDBCFC5 -:104D600034F0020EDBCF35F0030EDCEF26F02EC060 -:104D7000DEFF2FC0DEFF30C0DEFF31C0DDFF1200DE -:104D8000DECF2EF0DECF2FF0DECF30F0DDCF31F0F2 -:104D9000DD52DD521200336A346A800E356E120025 -:104DA00094EC2FF0E552E552E552E5521200D9CFCE -:104DB000E9FFDACFEAFF1200DBCF36F07BEF22F01B -:104DC000366EA8DFD4EC23F0010A120001C02FF0E8 -:0A4DD00002C030F003C031F0120001 -:064DDA00D9CFE6FFDACF9D -:104DE000E6FFE1CFD9FFE2CFDAFF240EE12402E3B0 -:104DF000E168E652E16ED950FA0FE96EFF0EDA2053 -:104E0000EA6E020EEECFDBFF030EEECFDBFF040EE9 -:104E1000EECFDBFF050EEECFDBFFE8D9F2D990EC49 -:104E20002CF0006E060EE15C02E2E16AE552E16EF2 -:104E30000050E76E0D0EE7CFDBFFDB50800815E07A -:104E4000A0D9336A346A356A366A00C02EF001C0D0 -:104E50002FF002C030F003C031F0DDEC23F0010A86 -:104E600010E1210E0101466F476B020EDB68030E55 -:104E7000DB68040EDB687F0EF36E050EF3CFDBFFFD -:104E800066D10D0EDB50050B01E061D10A0EDBCFC0 -:104E900000F00B0EDBCF01F0830E0026FF0E012287 -:104EA00000C0DEFF01C0DDFFD950060F65D976D9FD -:104EB000DF50010B0FE0DF06010E01E2DB06D950E7 -:104EC000180F5AD9D890EF36010EEB36020EEB369A -:104ED000030EEB36D9CFE9FFDACFEAFF020E346ECC -:104EE000356AEECF2FF0EDCF30F03BEC24F02FC041 -:104EF000EEFF30C0EDFF140EDB6A150EDB6A160EF6 -:104F0000DB6A170EDB6A1C0EDB6A1D0EDB6A1E0EE7 -:104F1000DB6A010EF36E1F0EF3CFDBFF010EF36EA3 -:104F20000E0EF3CFDBFF0F0EDB6A0E0EDBCF00F0B1 -:104F30000F0EDBCF01F0D890015004E61A0E005C92 -:104F4000000E015801E398D0180EDBCF00F0190EC7 -:104F5000DBCF01F01A0EDBCF02F01B0EDBCF03F02C -:104F6000010E1F0B07E0D8900036013602360336DB -:104F7000E806F9E1180E00C0DBFF190E01C0DBFFE7 -:104F80001A0E02C0DBFF1B0E03C0DBFF140EDBCFCB -:104F900008F0150EDBCF09F0160EDBCF0AF0170E66 -:104FA000DBCF0BF0010E1F0B07E0D8900836093657 -:104FB0000A360B36E806F9E1D9501C0FDDD8085047 -:104FC000EE24046E0950EE20056E0A50EE20066EA7 -:104FD0000B50EE20076ED950180FCED80450EE5C5F -:104FE000006E0550EE58016E0650EE58026E0750E6 -:104FF000EE58036E200E00C0DBFF210E01C0DBFF68 -:10500000220E02C0DBFF230E03C0DBFF200EDBCF2E -:105010002EF0210EDBCF2FF0220EDBCF30F0230E4F -:10502000DBCF31F03134000E311809E6D880000EA4 -:105030002E54000E2F54000E3054000E315411E245 -:10504000D950200F99D8AAD8D8D81C0EDB50EE1210 -:105050001D0EDB50EE121E0EDB50EE121F0EDB504B -:10506000EE12D9501C0F88D8AFD80E0EDB2A0F0EC7 -:1050700001E25BD7DB2A59D7C9D8100E00C0DBFF8D -:10508000110E01C0DBFF180EDBCF2FF0190EDBCFA6 -:1050900030F0120E2FC0DBFF130E30C0DBFFADD897 -:1050A00093D8D950100F68D8EE50ED1012E0D950B7 -:1050B000120F62D8EE50ED1006E1A8D80050011092 -:1050C0000210031006E099D8EE2A000EEE22EE221E -:1050D000EE220C0EDB6A91D8060EEECFDBFF070E38 -:1050E000EECFDBFF080EEECFDBFF090EEECFDBFFCE -:1050F0007E0EF36E0A0EF3CFDBFF0B0EDB6AD95088 -:10510000020FE66E000EDA20E66E70D81EEC2DF06F -:10511000E552E552E552E552DECFE6FFDDCFE6FF90 -:1051200070D8F4EC2BF0006E060EE15C02E2E16A4E -:10513000E552E16E0050020E2DC0DBFF030E2EC0C3 -:10514000DBFF040E2FC0DBFF050E30C0DBFF19D8DC -:1051500000C02DF001C02EF002C02FF003C030F0CF -:10516000240EE15C02E2E16AE552E16EE552E5CF30 -:10517000DAFFE7CFD9FF1200E96E000EDA20EA6EFF -:105180001200020EDBCF... [truncated message content] |
From: Jérémie D. <Ba...@us...> - 2010-03-06 19:03:13
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via ec4edc47e210a512d7cb447fb93b4428a5c93cf3 (commit) from ed8ac2f3d06d5a45df789be0c871e252a08ff60c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit ec4edc47e210a512d7cb447fb93b4428a5c93cf3 Author: Jérémie Dimino <je...@di...> Date: Sat Mar 6 20:02:26 2010 +0100 Add commands for servos ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/driver/driver.ml b/PC_Mainboard/driver/driver.ml index 837f7b3..cfe4f0d 100644 --- a/PC_Mainboard/driver/driver.ml +++ b/PC_Mainboard/driver/driver.ml @@ -752,7 +752,7 @@ lwt () = ignore begin monitor_card ~name:"interace" ~vendor_id:PcInterface.usb_vid ~product_id:PcInterface.usb_pid_robot_interface ~set:set_card_interface (fun card -> - lwt () = USB_commands.Motors.enable card `Both in + lwt () = USB_commands.Servo.enable card `Both in lwt () = Compass.OBus.export bus =|< Compass.make card ["fr"; "krobot"; "Devices"; "Compass"] and () = AX12.OBus.export bus =|< AX12.make card ["fr"; "krobot"; "Devices"; "AX12"] in return ()) diff --git a/PC_Mainboard/interface/interface.ml b/PC_Mainboard/interface/interface.ml index 1d217fe..d7269d5 100644 --- a/PC_Mainboard/interface/interface.ml +++ b/PC_Mainboard/interface/interface.ml @@ -542,4 +542,35 @@ let interfaces = [ Arg("left", sint32)] (); ]); + + Module("servo", [ + enum + ~name:"motor" + ~typ:uint8 + ~keys:[("left", PcInterface.motor_left); + ("both", PcInterface.motor_both); + ("right", PcInterface.motor_right)] + (); + command + ~name:"enable" + ~code:PcInterface.cmd_motor + ~args:[Cst(uint8, PcInterface.motor_enable); + Arg("motor", typ "motor")] + (); + command + ~name:"disable" + ~code:PcInterface.cmd_motor + ~args:[Cst(uint8, PcInterface.motor_disable); + Arg("motor", typ "motor")] + (); + command + ~name:"move" + ~code:PcInterface.cmd_motor + ~args:[Cst(uint8, PcInterface.motor_move); + Arg("motor", typ "motor"); + Arg("sens", uint8); + Arg("velocity", uint8); + Arg("duration", uint32)] + (); + ]); ] hooks/post-receive -- krobot |
From: Jérémie D. <Ba...@us...> - 2010-03-05 19:04:07
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via ed8ac2f3d06d5a45df789be0c871e252a08ff60c (commit) from f3121e926476263b9b9a082afdfbbd93643149de (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit ed8ac2f3d06d5a45df789be0c871e252a08ff60c Author: Jérémie Dimino <je...@di...> Date: Fri Mar 5 20:03:28 2010 +0100 [generators] add missing "Unsafe" in interface names ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/generators/gen_dbus_imports.ml b/PC_Mainboard/generators/gen_dbus_imports.ml index d4d5f1d..2f62ba9 100644 --- a/PC_Mainboard/generators/gen_dbus_imports.ml +++ b/PC_Mainboard/generators/gen_dbus_imports.ml @@ -55,7 +55,7 @@ let rec print indent = function printf "%s let cast krobot = OBus_proxy.make (Krobot.peer krobot) [\"fr\"; \"krobot\"; \"Devices\"; \"%s\"]\n" indent (Name.caml_case name); printf "%s let make _ = failwith \"not implemented\"\n" indent; printf "%s end)\n" indent; - printf "%s OP_interface(Proxy) \"fr.krobot.Device.%s\"\n" indent (Name.caml_case name); + printf "%s OP_interface(Proxy) \"fr.krobot.Device.%s.Unsafe\"\n" indent (Name.caml_case name); List.iter (print (indent ^ " ")) items; printf "%send\n" indent hooks/post-receive -- krobot |
From: Olivier B. <Ba...@us...> - 2010-03-03 22:19:33
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via f3121e926476263b9b9a082afdfbbd93643149de (commit) from beb30006c75b3a879ce8bbef232f68675743d55a (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit f3121e926476263b9b9a082afdfbbd93643149de Author: Olivier BICHLER <oli...@gm...> Date: Wed Mar 3 23:19:05 2010 +0100 Added holes for mainboard support ----------------------------------------------------------------------- Changes: diff --git a/meca/Base assemblee.CATProduct b/meca/Base assemblee.CATProduct index 3fdd346..2a6e502 100644 Binary files a/meca/Base assemblee.CATProduct and b/meca/Base assemblee.CATProduct differ diff --git a/meca/Niveau 1.CATPart b/meca/Niveau 1.CATPart index c722bb3..ec3e757 100644 Binary files a/meca/Niveau 1.CATPart and b/meca/Niveau 1.CATPart differ hooks/post-receive -- krobot |
From: Jérémie D. <Ba...@us...> - 2010-03-03 19:47:33
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via beb30006c75b3a879ce8bbef232f68675743d55a (commit) from 3d05cb1b4e6b5a7976548aab8e639572d47d57ab (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit beb30006c75b3a879ce8bbef232f68675743d55a Author: Jérémie Dimino <je...@di...> Date: Wed Mar 3 20:37:07 2010 +0100 [send-firmware] resets the USB card after flashing it ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/card_tools/send_firmware.ml b/PC_Mainboard/card_tools/send_firmware.ml index 443036a..321edb6 100644 --- a/PC_Mainboard/card_tools/send_firmware.ml +++ b/PC_Mainboard/card_tools/send_firmware.ml @@ -41,7 +41,7 @@ let do_flash force filename = lwt () = printf "Flash erased\n" in lwt () = Bootloader.write_flash k ~address memory address length in lwt () = printf "Flashing completed\n" in - lwt () = Bootloader.close k in + lwt () = Bootloader.reset_board k in return () let _ = hooks/post-receive -- krobot |
From: Jérémie D. <Ba...@us...> - 2010-03-02 13:26:32
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 3d05cb1b4e6b5a7976548aab8e639572d47d57ab (commit) from 2e41773908b10cad366a5395fa1f35b5477a1b6a (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 3d05cb1b4e6b5a7976548aab8e639572d47d57ab Author: Jérémie Dimino <je...@di...> Date: Tue Mar 2 14:25:31 2010 +0100 Use a more suitable proxy type for cards ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/clients/controller.ml b/PC_Mainboard/clients/controller.ml index 3f01691..cd91d27 100644 --- a/PC_Mainboard/clients/controller.ml +++ b/PC_Mainboard/clients/controller.ml @@ -240,9 +240,9 @@ let rec draw krobot = | `Absent -> [fg lred; textf "%s card is absent" name] | `Present -> [textf "%s card is present" name] in - Draw.textc zone x 3 (text_of_state "interface" (React.S.value (Krobot.Card.state krobot `Interface))); - Draw.textc zone x 4 (text_of_state "sensor" (React.S.value (Krobot.Card.state krobot `Sensor))); - Draw.textc zone x 5 (text_of_state "motor" (React.S.value (Krobot.Card.state krobot `Motor))); + Draw.textc zone x 3 (text_of_state "interface" (React.S.value (Krobot.Card.state (krobot, `Interface)))); + Draw.textc zone x 4 (text_of_state "sensor" (React.S.value (Krobot.Card.state (krobot, `Sensor)))); + Draw.textc zone x 5 (text_of_state "motor" (React.S.value (Krobot.Card.state (krobot, `Motor)))); let date = Unix.gettimeofday () in let text_of_motor_state mode until = if date < until then @@ -415,9 +415,9 @@ lwt () = notify (Krobot.jack krobot); notify (Krobot.inhibited_forward_until krobot); notify (Krobot.inhibited_backward_until krobot); - notify (Krobot.Card.state krobot `Interface); - notify (Krobot.Card.state krobot `Sensor); - notify (Krobot.Card.state krobot `Motor); + notify (Krobot.Card.state (krobot, `Interface)); + notify (Krobot.Card.state (krobot, `Sensor)); + notify (Krobot.Card.state (krobot, `Motor)); notify services; (* Redraw immedlatly the screen when [signal] changes: *) diff --git a/PC_Mainboard/clients/info.ml b/PC_Mainboard/clients/info.ml index 99519db..7efb03a 100644 --- a/PC_Mainboard/clients/info.ml +++ b/PC_Mainboard/clients/info.ml @@ -13,10 +13,10 @@ open Lwt open Lwt_io let print_card krobot card = - match React.S.value (Krobot.Card.state krobot card) with + match React.S.value (Krobot.Card.state (krobot, card)) with | `Present -> - lwt firmware_build = Krobot.Card.get_firmware_build krobot card - and board_info = Krobot.Card.get_board_info krobot card in + lwt firmware_build = Krobot.Card.get_firmware_build (krobot, card) + and board_info = Krobot.Card.get_board_info (krobot, card) in let name = Krobot.Card.name card in lwt () = printl "==========" in lwt () = printlf "card.%s.state = present" name in diff --git a/PC_Mainboard/clients/script.ml b/PC_Mainboard/clients/script.ml index 166ce54..f57651b 100644 --- a/PC_Mainboard/clients/script.ml +++ b/PC_Mainboard/clients/script.ml @@ -234,11 +234,11 @@ let () = ("sensor", `Sensor)] in register ~path:["card"] "bootloader" (f1 card) - (fun logger -> Krobot.Card.bootloader); + (fun logger krobot card -> Krobot.Card.bootloader (krobot, card)); register ~path:["card"] "reset" (f1 card) - (fun logger -> Krobot.Card.reset); + (fun logger krobot card -> Krobot.Card.reset (krobot, card)); register ~path:["card"] "test" (f1 card) - (fun logger -> Krobot.Card.test); + (fun logger krobot card -> Krobot.Card.test (krobot, card)); (* +---------------------------------------------------------------+ | Range finders | diff --git a/PC_Mainboard/generators/gen_dbus_imports.ml b/PC_Mainboard/generators/gen_dbus_imports.ml index 2f27622..d4d5f1d 100644 --- a/PC_Mainboard/generators/gen_dbus_imports.ml +++ b/PC_Mainboard/generators/gen_dbus_imports.ml @@ -69,22 +69,19 @@ let () = print_string "\ open OBus_pervasives module Card = struct - OP_interface \"fr.krobot.Card.Unsafe\" + module Proxy = OBus_proxy.Make + (struct + type proxy = Krobot.t * Krobot.Card.card + let cast (krobot, card) = + OBus_proxy.make (Krobot.peer krobot) + [\"fr\"; \"krobot\"; \"Cards\"; (match card with + | `Interface -> \"Interface\" + | `Sensor -> \"Sensor\" + | `Motor -> \"Motor\")] + let make proxy = failwith \"not implemented\" + end) + OP_interface(Proxy) \"fr.krobot.Card.Unsafe\" "; List.iter (print " ") card; - print_string "\ - let proxy krobot (card : Krobot.Card.card) = - OBus_proxy.make (Krobot.peer krobot) - [\"fr\"; \"krobot\"; \"Cards\"; (match card with - | `Interface -> \"Interface\" - | `Sensor -> \"Sensor\" - | `Motor -> \"Motor\")] -"; - List.iter (function - | Request{ req_name = name } | Command{ cmd_name = name } -> - let name = Name.lid name in - printf " let %s krobot card = %s (proxy krobot card)\n" name name - | _ -> - ()) card; printf "end\n"; List.iter (print "") interfaces diff --git a/PC_Mainboard/generators/gen_script_commands.ml b/PC_Mainboard/generators/gen_script_commands.ml index 020bf5d..8e48838 100644 --- a/PC_Mainboard/generators/gen_script_commands.ml +++ b/PC_Mainboard/generators/gen_script_commands.ml @@ -10,12 +10,13 @@ open Printf open Interface -let print_common path caml_path name args repl = +let print_common is_card path caml_path name args repl = printf " register ~path:[%s] \"%s\" (f%d" path name (List.fold_left (fun n arg -> match arg with | Arg _ -> n + 1 - | Cst _ -> n) 0 args); + | Cst _ -> n) (if is_card then 1 else 0) args); + if is_card then printf " (__type_card \"name\")"; List.iter (function | Arg(name, { caml_type = "int" }) -> printf " (int \"%s\")" name @@ -27,15 +28,17 @@ let print_common path caml_path name args repl = ()) args; printf ")\n"; printf " (fun logger krobot"; + if is_card then printf " card"; List.iter (function | Arg(name, typ) -> printf " %s" (Name.lid name) | Cst _ -> ()) args; printf " ->\n"; - printf " lwt (%s) = Krobot_unsafe.%s%s krobot" + printf " lwt (%s) = Krobot_unsafe.%s%s" (String.concat ", " (List.map (fun (name, typ) -> Name.lid name) repl)) caml_path (Name.lid name); + if is_card then printf " (krobot, card)" else printf " krobot"; List.iter (function | Arg(name, typ) -> printf " %s" (Name.lid name) @@ -48,16 +51,16 @@ let print_common path caml_path name args repl = repl; printf " Lwt.return ());\n" -let rec print path caml_path = function +let rec print is_card path caml_path = function | Request req -> - print_common path caml_path req.req_name req.req_args + print_common is_card path caml_path req.req_name req.req_args (List.map (function | Arg(name, typ) -> (name, typ) | Cst _ -> failwith "constants not allow in replies") req.req_repl) | Command cmd -> - print_common path caml_path cmd.cmd_name cmd.cmd_args [] + print_common is_card path caml_path cmd.cmd_name cmd.cmd_args [] | Enum enum -> printf " let __type_%s name = keyword name [" (Name.lid enum.enum_name); List.iter (fun (name, code) -> @@ -80,20 +83,12 @@ let rec print path caml_path = function printf "]) ^ \"}\" in\n"; printf " let _ = print_%s in\n" (Name.lid record.rec_name) | Module(name, items) -> - List.iter (print (sprintf "%s; \"%s\"" path (String.lowercase name)) (caml_path ^ Name.uid name ^ ".")) items + List.iter (print false (sprintf "%s; \"%s\"" path (String.lowercase name)) (caml_path ^ Name.uid name ^ ".")) items let () = printf "open Script_commands\n"; printf "let register () =\n"; printf " let __type_card name = keyword name [(\"interface\", `Interface); (\"sensor\", `Sensor); (\"motor\", `Motor)] in\n"; - let card_type = typ "card" in - List.iter - (print "\"unsafe\"; \"card\"" "Card.") - (List.map - (function - | Request req -> Request{ req with req_args = Arg("card", card_type) :: req.req_args } - | Command cmd -> Command{ cmd with cmd_args = Arg("card", card_type) :: cmd.cmd_args } - | item -> item) - card); - List.iter (print "\"unsafe\"" "") interfaces; + List.iter (print true "\"unsafe\"; \"card\"" "Card.") card; + List.iter (print false "\"unsafe\"" "") interfaces; printf " ()" diff --git a/PC_Mainboard/lib_krobot/krobot.ml b/PC_Mainboard/lib_krobot/krobot.ml index 4c6279f..62a7c10 100644 --- a/PC_Mainboard/lib_krobot/krobot.ml +++ b/PC_Mainboard/lib_krobot/krobot.ml @@ -205,28 +205,27 @@ struct | `Sensor -> "sensor" | `Motor -> "motor" - let state krobot = function + let state (krobot, card) = match card with | `Interface -> krobot.interface.card_state | `Sensor -> krobot.sensor.card_state | `Motor -> krobot.motor.card_state - let proxy krobot card = - OBus_proxy.make krobot.peer - ["fr"; "krobot"; "Cards"; (match card with - | `Interface -> "Interface" - | `Sensor -> "Sensor" - | `Motor -> "Motor")] + module Proxy = OBus_proxy.Make + (struct + type proxy = t * card + let cast (krobot, card) = + OBus_proxy.make krobot.peer + ["fr"; "krobot"; "Cards"; (match card with + | `Interface -> "Interface" + | `Sensor -> "Sensor" + | `Motor -> "Motor")] + let make proxy = failwith "not implemented" + end) - OP_interface "fr.krobot.Card" + OP_interface(Proxy) "fr.krobot.Card" OP_method GetFirmwareBuild : string OP_method GetBoardInfo : string OP_method Bootloader : unit OP_method Reset : unit OP_method Test : unit - - let get_firmware_build krobot card = get_firmware_build (proxy krobot card) - let get_board_info krobot card = get_board_info (proxy krobot card) - let bootloader krobot card = bootloader (proxy krobot card) - let reset krobot card = reset (proxy krobot card) - let test krobot card = test (proxy krobot card) end diff --git a/PC_Mainboard/lib_krobot/krobot.mli b/PC_Mainboard/lib_krobot/krobot.mli index 0dbb1c6..4dde27c 100644 --- a/PC_Mainboard/lib_krobot/krobot.mli +++ b/PC_Mainboard/lib_krobot/krobot.mli @@ -118,14 +118,14 @@ module Card : sig val name : card -> string (** Returns the name of a card *) - val state : t -> card -> Types.card_state React.signal + val state : t * card -> Types.card_state React.signal (** Returns the status of one of the card of the krobot *) - val bootloader : t -> card -> unit Lwt.t + val bootloader : t * card -> unit Lwt.t (** Put the card into bootloader mode *) - val get_firmware_build : t -> card -> string Lwt.t - val get_board_info : t -> card -> string Lwt.t - val reset : t -> card -> unit Lwt.t - val test : t -> card -> unit Lwt.t + val get_firmware_build : t * card -> string Lwt.t + val get_board_info : t * card -> string Lwt.t + val reset : t * card -> unit Lwt.t + val test : t * card -> unit Lwt.t end hooks/post-receive -- krobot |
From: Jérémie D. <Ba...@us...> - 2010-02-28 21:58:58
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 2e41773908b10cad366a5395fa1f35b5477a1b6a (commit) from d0d1b4f316d589f5b6fe73acb68a160acda7bc7c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 2e41773908b10cad366a5395fa1f35b5477a1b6a Author: Jérémie Dimino <je...@di...> Date: Sun Feb 28 22:58:23 2010 +0100 Updates ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/driver/driver.ml b/PC_Mainboard/driver/driver.ml index a7d9615..837f7b3 100644 --- a/PC_Mainboard/driver/driver.ml +++ b/PC_Mainboard/driver/driver.ml @@ -29,12 +29,12 @@ struct module OBus = OBus_object.Make(struct type obj = t - let get obj = obj.obus + let cast obj = obj.obus end) - include DBus_exports.Compass(OBus)(struct let get dev = dev.card end) + module Unsafe = DBus_exports.Compass(OBus)(struct let get dev = dev.card end) - include OBus.Make_interface(struct let name = "fr.krobot.Device.Compass" end) + OL_interface(OBus) "fr.krobot.Device.Compass" as interface OL_signal Value : int OL_method Get : int = fun dev -> return dev.data @@ -53,7 +53,7 @@ struct let make card path = lwt data = USB_commands.Compass.get card in let dev = { - obus = OBus_object.make path; + obus = OBus.make ~interfaces:[Unsafe.interface; interface] path; card = card; data = data; } in @@ -74,12 +74,12 @@ struct module OBus = OBus_object.Make(struct type obj = t - let get obj = obj.obus + let cast obj = obj.obus end) - include DBus_exports.AX12(OBus)(struct let get dev = dev.card end) + module Unsafe = DBus_exports.AX12(OBus)(struct let get dev = dev.card end) - include OBus.Make_interface(struct let name = "fr.krobot.Device.AX12" end) + OL_interface(OBus) "fr.krobot.Device.AX12" as interface OL_method SetAX12 : Types.ax12_action structure list -> unit = fun dev actions -> lwt () = @@ -97,7 +97,7 @@ struct let make card path = return { - obus = OBus_object.make path; + obus = OBus.make ~interfaces:[Unsafe.interface; interface] path; card = card; } end @@ -116,12 +116,12 @@ struct module OBus = OBus_object.Make(struct type obj = t - let get obj = obj.obus + let cast obj = obj.obus end) - include DBus_exports.Logic_sensors(OBus)(struct let get dev = dev.card end) + module Unsafe = DBus_exports.Logic_sensors(OBus)(struct let get dev = dev.card end) - include OBus.Make_interface(struct let name = "fr.krobot.Device.LogicSensors" end) + OL_interface(OBus) "fr.krobot.Device.LogicSensors" as interface OL_signal Value : bool array OL_method Get : bool array = fun dev -> return dev.data @@ -139,7 +139,7 @@ struct let make card path = let dev = { - obus = OBus_object.make path; + obus = OBus.make ~interfaces:[Unsafe.interface; interface] path; card = card; data = Array.create 16 false; } in @@ -161,12 +161,12 @@ struct module OBus = OBus_object.Make(struct type obj = t - let get obj = obj.obus + let cast obj = obj.obus end) - include DBus_exports.Range_finders(OBus)(struct let get dev = dev.card end) + module Unsafe = DBus_exports.Range_finders(OBus)(struct let get dev = dev.card end) - include OBus.Make_interface(struct let name = "fr.krobot.Device.RangeFinders" end) + OL_interface(OBus) "fr.krobot.Device.RangeFinders" as interface OL_signal Value : int array OL_method Get : int array = fun dev -> return dev.data @@ -193,7 +193,7 @@ struct let make card path = let dev = { - obus = OBus_object.make path; + obus = OBus.make ~interfaces:[Unsafe.interface; interface] path; card = card; data = Array.create 8 0; } in @@ -250,12 +250,12 @@ struct module OBus = OBus_object.Make(struct type obj = t - let get obj = obj.obus + let cast obj = obj.obus end) - include DBus_exports.Motors(OBus)(struct let get dev = dev.card end) + module Unsafe = DBus_exports.Motors(OBus)(struct let get dev = dev.card end) - include OBus.Make_interface(struct let name = "fr.krobot.Device.Motors" end) + OL_interface(OBus) "fr.krobot.Device.Motors" as interface let string_of_direction = function | `Forward -> "forward" @@ -534,7 +534,7 @@ struct let make card path = let commands = React.E.map (fun data -> Char.code data.[0]) (Krobot_card.connect card PcInterface.cmd_traj)#event in let dev = { - obus = OBus_object.make path; + obus = OBus.make ~interfaces:[Unsafe.interface; interface] path; card = card; inhibit_forward_until = 0.0; inhibit_backward_until = 0.0; @@ -556,14 +556,7 @@ let card_motor, set_card_motor = React.S.create None module Manager = struct - let manager = OBus_object.make ["fr"; "krobot"; "Manager"] - - module OBus = OBus_object.Make(struct - type obj = unit - let get _ = manager - end) - - include OBus.Make_interface(struct let name = "fr.krobot.Manager" end) + OL_interface "fr.krobot.Manager" as interface let close card = match React.S.value card with | None -> @@ -571,7 +564,7 @@ struct | Some card -> Krobot_card.close card - OL_method CardStates : OBus_connection.t -> Types.card_state * Types.card_state * Types.card_state = fun () connection -> + OL_method CardStates : OBus_connection.t -> Types.card_state * Types.card_state * Types.card_state = fun manager connection -> let state card = match React.S.value card with | Some _ -> `Present | None -> `Absent @@ -580,7 +573,7 @@ struct state card_sensor, state card_motor) - OL_method Shutdown : OBus_connection.t -> unit = fun () connection -> + OL_method Shutdown : OBus_connection.t -> unit = fun manager connection -> lwt () = Log.info "exiting" in quit := true; lwt () = close card_interface @@ -589,6 +582,8 @@ struct lwt _ = OBus_bus.release_name connection "fr.krobot.Driver" in Lwt.wakeup done_wakener (); return () + + let manager = OBus_object.make ~interfaces:[interface] ["fr"; "krobot"; "Manager"] end (* +-----------------------------------------------------------------+ @@ -606,7 +601,7 @@ struct module OBus = OBus_object.Make(struct type obj = t - let get obj = obj.obus + let cast obj = obj.obus end) let get_card dev = match React.S.value dev.card with @@ -615,9 +610,9 @@ struct | Some card -> card - include DBus_exports.Card(OBus)(struct let get = get_card end) + module Unsafe = DBus_exports.Card(OBus)(struct let get = get_card end) - include OBus.Make_interface(struct let name = "fr.krobot.Card" end) + OL_interface(OBus) "fr.krobot.Card" as interface OL_property_r Name : string = fun dev -> return (Krobot_card.name (get_card dev)) @@ -649,7 +644,7 @@ struct let make name card path = let dev = { card = card; - obus = OBus_object.make path; + obus = OBus.make ~interfaces:[Unsafe.interface; interface] path; name = name; state = React.S.const (return ()); } in @@ -794,7 +789,7 @@ lwt () = Card.OBus.export bus (Card.make "sensor" card_sensor ["fr"; "krobot"; "Cards"; "Sensor"]); Card.OBus.export bus (Card.make "motor" card_motor ["fr"; "krobot"; "Cards"; "Motor"]); - Manager.OBus.export bus (); + OBus_object.export bus Manager.manager; lwt () = Log.notice "ready, waiting for requests" in lwt () = done_waiter in diff --git a/PC_Mainboard/generators/gen_dbus_exports.ml b/PC_Mainboard/generators/gen_dbus_exports.ml index b8f54eb..134edef 100644 --- a/PC_Mainboard/generators/gen_dbus_exports.ml +++ b/PC_Mainboard/generators/gen_dbus_exports.ml @@ -72,7 +72,7 @@ let rec print path indent = function | Module(name, items) -> printf "%smodule %s(M : OBus_object.S)(Get : sig val get : M.obj -> Krobot_card.t end) = struct\n" indent (Name.uid name); - printf "%s include M.Make_interface(struct let name = \"fr.krobot.Device.%s.Unsafe\" end)\n" + printf "%s OL_interface(M) \"fr.krobot.Device.%s.Unsafe\" as interface\n" indent (Name.caml_case name); List.iter (print (path ^ Name.uid name ^ ".") (indent ^ " ")) items; printf "%send\n" indent @@ -87,7 +87,7 @@ let () = printf "open OBus_pervasives\n"; printf "module Card(M : OBus_object.S)(Get : sig val get : M.obj -> Krobot_card.t end) = struct\n"; - printf " include M.Make_interface(struct let name = \"fr.krobot.Card.Unsafe\" end)\n"; + printf " OL_interface(M) \"fr.krobot.Card.Unsafe\" as interface\n"; List.iter (print "Card." " ") card; printf "end\n"; diff --git a/PC_Mainboard/generators/gen_dbus_imports.ml b/PC_Mainboard/generators/gen_dbus_imports.ml index 55c8851..2f27622 100644 --- a/PC_Mainboard/generators/gen_dbus_imports.ml +++ b/PC_Mainboard/generators/gen_dbus_imports.ml @@ -52,10 +52,10 @@ let rec print indent = function printf "%smodule %s = struct\n" indent (Name.uid name); printf "%s module Proxy = OBus_proxy.Make(struct\n" indent; printf "%s type proxy = Krobot.t\n" indent; - printf "%s let get krobot = OBus_proxy.make (Krobot.peer krobot) [\"fr\"; \"krobot\"; \"Devices\"; \"%s\"]\n" indent (Name.caml_case name); + printf "%s let cast krobot = OBus_proxy.make (Krobot.peer krobot) [\"fr\"; \"krobot\"; \"Devices\"; \"%s\"]\n" indent (Name.caml_case name); printf "%s let make _ = failwith \"not implemented\"\n" indent; printf "%s end)\n" indent; - printf "%s include Proxy.Make_interface(struct let name = \"fr.krobot.Device.%s\" end)\n" indent (Name.caml_case name); + printf "%s OP_interface(Proxy) \"fr.krobot.Device.%s\"\n" indent (Name.caml_case name); List.iter (print (indent ^ " ")) items; printf "%send\n" indent @@ -69,15 +69,22 @@ let () = print_string "\ open OBus_pervasives module Card = struct + OP_interface \"fr.krobot.Card.Unsafe\" +"; + List.iter (print " ") card; + print_string "\ let proxy krobot (card : Krobot.Card.card) = OBus_proxy.make (Krobot.peer krobot) [\"fr\"; \"krobot\"; \"Cards\"; (match card with | `Interface -> \"Interface\" | `Sensor -> \"Sensor\" | `Motor -> \"Motor\")] - let op_method_call member typ krobot card = - OBus_proxy.method_call (proxy krobot card) ~interface:\"fr.krobot.Card.Unsafe\" ~member typ "; - List.iter (print " ") card; + List.iter (function + | Request{ req_name = name } | Command{ cmd_name = name } -> + let name = Name.lid name in + printf " let %s krobot card = %s (proxy krobot card)\n" name name + | _ -> + ()) card; printf "end\n"; List.iter (print "") interfaces diff --git a/PC_Mainboard/lib_krobot/krobot.ml b/PC_Mainboard/lib_krobot/krobot.ml index 1cb9e91..4c6279f 100644 --- a/PC_Mainboard/lib_krobot/krobot.ml +++ b/PC_Mainboard/lib_krobot/krobot.ml @@ -49,18 +49,12 @@ let peer krobot = krobot.peer (* Create an interface using [t] as type for proxies *) module Make_device(Name : sig val name : string end) = -struct - module Proxy = OBus_proxy.Make + OBus_proxy.Make (struct type proxy = t - let get krobot = OBus_proxy.make krobot.peer ["fr"; "krobot"; "Devices"; Name.name] + let cast krobot = OBus_proxy.make krobot.peer ["fr"; "krobot"; "Devices"; Name.name] let make _ = failwith "not implemented" end) - module Interface = Proxy.Make_interface - (struct - let name = "fr.krobot.Device." ^ Name.name - end) -end let make_dev_signal ~peer ~name ~get ~update ~typ ~default = let proxy = OBus_proxy.make peer ["fr"; "krobot"; "Devices"; name] in @@ -165,8 +159,8 @@ let jack krobot = | Range finders | +-----------------------------------------------------------------+ *) -module Range_finders = Make_device(struct let name = "RangeFinders" end) -include Range_finders.Interface +module RF = Make_device(struct let name = "RangeFinders" end) +OP_interface(RF) "fr.krobot.Device.RangeFinders" OP_method GetCalibration : int -> int array OP_method CalibrationStart : int -> bool -> unit @@ -178,7 +172,7 @@ OP_method CalibrationContinue : unit +-----------------------------------------------------------------+ *) module AX12 = Make_device(struct let name = "AX12" end) -include AX12.Interface +OP_interface(AX12) "fr.krobot.Device.AX12" OP_method SetAX12 : Types.ax12_action structure list -> unit @@ -187,7 +181,7 @@ OP_method SetAX12 : Types.ax12_action structure list -> unit +-----------------------------------------------------------------+ *) module Motors = Make_device(struct let name = "Motors" end) -include Motors.Interface +OP_interface(Motors) "fr.krobot.Device.Motors" OP_method Turn : angle : int -> velocity : int -> acceleration : int -> Types.move_result OP_method Move : distance : int -> velocity : int -> acceleration : int -> Types.move_result @@ -223,12 +217,16 @@ struct | `Sensor -> "Sensor" | `Motor -> "Motor")] - let op_method_call member typ krobot card = - OBus_proxy.method_call (proxy krobot card) ~interface:"fr.krobot.Card" ~member typ - + OP_interface "fr.krobot.Card" OP_method GetFirmwareBuild : string OP_method GetBoardInfo : string OP_method Bootloader : unit OP_method Reset : unit OP_method Test : unit + + let get_firmware_build krobot card = get_firmware_build (proxy krobot card) + let get_board_info krobot card = get_board_info (proxy krobot card) + let bootloader krobot card = bootloader (proxy krobot card) + let reset krobot card = reset (proxy krobot card) + let test krobot card = test (proxy krobot card) end hooks/post-receive -- krobot |
From: Jérémie D. <Ba...@us...> - 2010-02-25 14:53:56
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via d0d1b4f316d589f5b6fe73acb68a160acda7bc7c (commit) from 59f35c0d7c2f0bd92c9ac23fc6d0c6d347833723 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit d0d1b4f316d589f5b6fe73acb68a160acda7bc7c Author: Jérémie Dimino <je...@di...> Date: Thu Feb 25 15:53:12 2010 +0100 rename things to match last D-Bus pathces ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/driver/driver.ml b/PC_Mainboard/driver/driver.ml index eae08a2..a7d9615 100644 --- a/PC_Mainboard/driver/driver.ml +++ b/PC_Mainboard/driver/driver.ml @@ -34,7 +34,7 @@ struct include DBus_exports.Compass(OBus)(struct let get dev = dev.card end) - include OBus.MakeInterface(struct let name = "fr.krobot.Device.Compass" end) + include OBus.Make_interface(struct let name = "fr.krobot.Device.Compass" end) OL_signal Value : int OL_method Get : int = fun dev -> return dev.data @@ -79,7 +79,7 @@ struct include DBus_exports.AX12(OBus)(struct let get dev = dev.card end) - include OBus.MakeInterface(struct let name = "fr.krobot.Device.AX12" end) + include OBus.Make_interface(struct let name = "fr.krobot.Device.AX12" end) OL_method SetAX12 : Types.ax12_action structure list -> unit = fun dev actions -> lwt () = @@ -121,7 +121,7 @@ struct include DBus_exports.Logic_sensors(OBus)(struct let get dev = dev.card end) - include OBus.MakeInterface(struct let name = "fr.krobot.Device.LogicSensors" end) + include OBus.Make_interface(struct let name = "fr.krobot.Device.LogicSensors" end) OL_signal Value : bool array OL_method Get : bool array = fun dev -> return dev.data @@ -166,7 +166,7 @@ struct include DBus_exports.Range_finders(OBus)(struct let get dev = dev.card end) - include OBus.MakeInterface(struct let name = "fr.krobot.Device.RangeFinders" end) + include OBus.Make_interface(struct let name = "fr.krobot.Device.RangeFinders" end) OL_signal Value : int array OL_method Get : int array = fun dev -> return dev.data @@ -255,7 +255,7 @@ struct include DBus_exports.Motors(OBus)(struct let get dev = dev.card end) - include OBus.MakeInterface(struct let name = "fr.krobot.Device.Motors" end) + include OBus.Make_interface(struct let name = "fr.krobot.Device.Motors" end) let string_of_direction = function | `Forward -> "forward" @@ -563,7 +563,7 @@ struct let get _ = manager end) - include OBus.MakeInterface(struct let name = "fr.krobot.Manager" end) + include OBus.Make_interface(struct let name = "fr.krobot.Manager" end) let close card = match React.S.value card with | None -> @@ -617,7 +617,7 @@ struct include DBus_exports.Card(OBus)(struct let get = get_card end) - include OBus.MakeInterface(struct let name = "fr.krobot.Card" end) + include OBus.Make_interface(struct let name = "fr.krobot.Card" end) OL_property_r Name : string = fun dev -> return (Krobot_card.name (get_card dev)) diff --git a/PC_Mainboard/driver/object.ml b/PC_Mainboard/driver/object.ml deleted file mode 100644 index e676ed1..0000000 --- a/PC_Mainboard/driver/object.ml +++ /dev/null @@ -1,27 +0,0 @@ -(* - * object.ml - * --------- - * Copyright : (c) 2010, Jeremie Dimino <je...@di...> - * Licence : BSD3 - * - * This file is a part of [kro]bot. - *) - -module type S = sig - type t - module MakeInterface(Name : OBus_interface.Name) : sig - val ol_interface : OBus_name.interface - val ol_method_call : OBus_name.member -> ('a, 'b Lwt.t, 'b) OBus_type.func -> (t -> 'a) -> unit - val ol_signal : OBus_name.member -> ('a, _) OBus_type.cl_sequence -> (t -> ?peer : OBus_peer.t -> 'a -> unit Lwt.t) - val ol_property_r : OBus_name.member -> - ('a, _) OBus_type.cl_single -> - (t -> 'a Lwt.t) -> unit - val ol_property_w : OBus_name.member -> - ('a, _) OBus_type.cl_single -> - (t -> 'a -> unit Lwt.t) -> unit - val ol_property_rw : OBus_name.member -> - ('a, _) OBus_type.cl_single -> - (t -> 'a Lwt.t) -> - (t -> 'a -> unit Lwt.t) -> unit - end -end diff --git a/PC_Mainboard/generators/gen_dbus_exports.ml b/PC_Mainboard/generators/gen_dbus_exports.ml index b230cc7..b8f54eb 100644 --- a/PC_Mainboard/generators/gen_dbus_exports.ml +++ b/PC_Mainboard/generators/gen_dbus_exports.ml @@ -70,9 +70,9 @@ let rec print path indent = function print_apply (sprintf "USB_commands.%s%s (Get.get dev)" path (Name.lid cmd.cmd_name)) cmd.cmd_args | Module(name, items) -> - printf "%smodule %s(M : Object.S)(Get : sig val get : M.t -> Krobot_card.t end) = struct\n" + printf "%smodule %s(M : OBus_object.S)(Get : sig val get : M.obj -> Krobot_card.t end) = struct\n" indent (Name.uid name); - printf "%s include M.MakeInterface(struct let name = \"fr.krobot.Device.%s.Unsafe\" end)\n" + printf "%s include M.Make_interface(struct let name = \"fr.krobot.Device.%s.Unsafe\" end)\n" indent (Name.caml_case name); List.iter (print (path ^ Name.uid name ^ ".") (indent ^ " ")) items; printf "%send\n" indent @@ -86,8 +86,8 @@ let rec print path indent = function let () = printf "open OBus_pervasives\n"; - printf "module Card(M : Object.S)(Get : sig val get : M.t -> Krobot_card.t end) = struct\n"; - printf " include M.MakeInterface(struct let name = \"fr.krobot.Card.Unsafe\" end)\n"; + printf "module Card(M : OBus_object.S)(Get : sig val get : M.obj -> Krobot_card.t end) = struct\n"; + printf " include M.Make_interface(struct let name = \"fr.krobot.Card.Unsafe\" end)\n"; List.iter (print "Card." " ") card; printf "end\n"; diff --git a/PC_Mainboard/generators/gen_dbus_imports.ml b/PC_Mainboard/generators/gen_dbus_imports.ml index cdd7552..55c8851 100644 --- a/PC_Mainboard/generators/gen_dbus_imports.ml +++ b/PC_Mainboard/generators/gen_dbus_imports.ml @@ -50,7 +50,12 @@ let rec print indent = function | Module(name, items) -> printf "%smodule %s = struct\n" indent (Name.uid name); - printf "%s include MakeDevice(struct let name = \"%s\" end)\n" indent (Name.caml_case name); + printf "%s module Proxy = OBus_proxy.Make(struct\n" indent; + printf "%s type proxy = Krobot.t\n" indent; + printf "%s let get krobot = OBus_proxy.make (Krobot.peer krobot) [\"fr\"; \"krobot\"; \"Devices\"; \"%s\"]\n" indent (Name.caml_case name); + printf "%s let make _ = failwith \"not implemented\"\n" indent; + printf "%s end)\n" indent; + printf "%s include Proxy.Make_interface(struct let name = \"fr.krobot.Device.%s\" end)\n" indent (Name.caml_case name); List.iter (print (indent ^ " ")) items; printf "%send\n" indent @@ -63,15 +68,6 @@ let rec print indent = function let () = print_string "\ open OBus_pervasives -module MakeDevice(Name : sig val name : string end) = - OBus_interface.MakeCustom - (struct - type proxy = Krobot.t - let get krobot = OBus_proxy.make (Krobot.peer krobot) [\"fr\"; \"krobot\"; \"Devices\"; Name.name] - end) - (struct - let name = \"fr.krobot.Device.\" ^ Name.name ^ \".Unsafe\" - end) module Card = struct let proxy krobot (card : Krobot.Card.card) = OBus_proxy.make (Krobot.peer krobot) diff --git a/PC_Mainboard/lib_krobot/krobot.ml b/PC_Mainboard/lib_krobot/krobot.ml index 60d4cd4..1cb9e91 100644 --- a/PC_Mainboard/lib_krobot/krobot.ml +++ b/PC_Mainboard/lib_krobot/krobot.ml @@ -48,15 +48,19 @@ let peer krobot = krobot.peer +-----------------------------------------------------------------+ *) (* Create an interface using [t] as type for proxies *) -module MakeDevice(Name : sig val name : string end) = - OBus_interface.MakeCustom +module Make_device(Name : sig val name : string end) = +struct + module Proxy = OBus_proxy.Make (struct type proxy = t let get krobot = OBus_proxy.make krobot.peer ["fr"; "krobot"; "Devices"; Name.name] + let make _ = failwith "not implemented" end) + module Interface = Proxy.Make_interface (struct let name = "fr.krobot.Device." ^ Name.name end) +end let make_dev_signal ~peer ~name ~get ~update ~typ ~default = let proxy = OBus_proxy.make peer ["fr"; "krobot"; "Devices"; name] in @@ -67,7 +71,7 @@ let make_dev_signal ~peer ~name ~get ~update ~typ ~default = with exn -> return default in - return (React.S.hold initial (OBus_signal.connect proxy ~interface ~member:update typ)#event) + return (React.S.hold initial (OBus_proxy.connect proxy ~interface ~member:update typ)#event) let make_card_signal ~peer ~name ~get ~update ~typ ~default = let proxy = OBus_proxy.make peer ["fr"; "krobot"; "Cards"; name] in @@ -78,7 +82,7 @@ let make_card_signal ~peer ~name ~get ~update ~typ ~default = with exn -> return default in - return (React.S.hold initial (OBus_signal.connect proxy ~interface ~member:update typ)#event) + return (React.S.hold initial (OBus_proxy.connect proxy ~interface ~member:update typ)#event) (* +-----------------------------------------------------------------+ | Creation | @@ -161,7 +165,8 @@ let jack krobot = | Range finders | +-----------------------------------------------------------------+ *) -include MakeDevice(struct let name = "RangeFinders" end) +module Range_finders = Make_device(struct let name = "RangeFinders" end) +include Range_finders.Interface OP_method GetCalibration : int -> int array OP_method CalibrationStart : int -> bool -> unit @@ -172,7 +177,8 @@ OP_method CalibrationContinue : unit | AX12 | +-----------------------------------------------------------------+ *) -include MakeDevice(struct let name = "AX12" end) +module AX12 = Make_device(struct let name = "AX12" end) +include AX12.Interface OP_method SetAX12 : Types.ax12_action structure list -> unit @@ -180,7 +186,8 @@ OP_method SetAX12 : Types.ax12_action structure list -> unit | Motors | +-----------------------------------------------------------------+ *) -include MakeDevice(struct let name = "Motors" end) +module Motors = Make_device(struct let name = "Motors" end) +include Motors.Interface OP_method Turn : angle : int -> velocity : int -> acceleration : int -> Types.move_result OP_method Move : distance : int -> velocity : int -> acceleration : int -> Types.move_result hooks/post-receive -- krobot |
From: Xavier L. <Ba...@us...> - 2010-02-25 01:27:35
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, motor-nurbs has been updated via 5f1263fc05729c7457e97b0c697a120101edfa93 (commit) from 03ce4e475cf42b892c90fc4f9278e7866c82911d (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 5f1263fc05729c7457e97b0c697a120101edfa93 Author: Xavier Lagorce <Xav...@cr...> Date: Thu Feb 25 01:46:42 2010 +0100 First implementation of a trajectory in the new framework ----------------------------------------------------------------------- Changes: diff --git a/USB_Module/Motor_Controller/Firmware/Motor_Controller.mcw b/USB_Module/Motor_Controller/Firmware/Motor_Controller.mcw index 6528ac9..b596f92 100644 Binary files a/USB_Module/Motor_Controller/Firmware/Motor_Controller.mcw and b/USB_Module/Motor_Controller/Firmware/Motor_Controller.mcw differ diff --git a/USB_Module/Motor_Controller/Firmware/Motor_controller.mcs b/USB_Module/Motor_Controller/Firmware/Motor_controller.mcs index 7e843b1..728e42c 100644 --- a/USB_Module/Motor_Controller/Firmware/Motor_controller.mcs +++ b/USB_Module/Motor_Controller/Firmware/Motor_controller.mcs @@ -2,144 +2,157 @@ MagicCookie={0b13fe8c-dfe0-40eb-8900-6712719559a7} Version=1.0 [File000] -Location=C:\krobot\USB_Module\Motor_Controller\Firmware\output\usb_descriptors.o +Location=Z:\USB_Module\Motor_Controller\Firmware\output\usb_descriptors.o Folder=Intermediary DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} LanguageToolID={E56A1C86-9D32-4DF6-8C34-FE0388B1B644} LanguageToolLocation=C:\MCC18\bin\mcc18.exe PPAD=$(BINDIR)|output||$(TMPDIR)|output||$(AINDIR)||$(INCDIR)|C:\MCC18\h;.;Include||$(LIBDIR)|C:\mcc18\lib||$(LKRDIR)|| -SOLK=<src>|usb_descriptors.c|main.c|eeprom.c|motor.c|lm629.c|usb_device.c|usb_function_hid.c|error.c||<obj>||<lib>||<lkr>|rm18f4550.lkr|| +SOLK=<src>|usb_descriptors.c|main.c|eeprom.c|motor.c|lm629.c|usb_device.c|usb_function_hid.c|error.c|trajectory.c||<obj>||<lib>||<lkr>|rm18f4550.lkr|| SuiteArgsString= ToolArgsString= TraceCmdString= DebugOptions= [File001] -Location=C:\krobot\USB_Module\Motor_Controller\Firmware\output\main.o +Location=Z:\USB_Module\Motor_Controller\Firmware\output\main.o Folder=Intermediary DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} LanguageToolID={E56A1C86-9D32-4DF6-8C34-FE0388B1B644} LanguageToolLocation=C:\MCC18\bin\mcc18.exe PPAD=$(BINDIR)|output||$(TMPDIR)|output||$(AINDIR)||$(INCDIR)|C:\MCC18\h;.;Include||$(LIBDIR)|C:\mcc18\lib||$(LKRDIR)|| -SOLK=<src>|usb_descriptors.c|main.c|eeprom.c|motor.c|lm629.c|usb_device.c|usb_function_hid.c|error.c||<obj>||<lib>||<lkr>|rm18f4550.lkr|| +SOLK=<src>|usb_descriptors.c|main.c|eeprom.c|motor.c|lm629.c|usb_device.c|usb_function_hid.c|error.c|trajectory.c||<obj>||<lib>||<lkr>|rm18f4550.lkr|| SuiteArgsString= ToolArgsString= TraceCmdString= DebugOptions= [File002] -Location=C:\krobot\USB_Module\Motor_Controller\Firmware\output\eeprom.o +Location=Z:\USB_Module\Motor_Controller\Firmware\output\eeprom.o Folder=Intermediary DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} LanguageToolID={E56A1C86-9D32-4DF6-8C34-FE0388B1B644} LanguageToolLocation=C:\MCC18\bin\mcc18.exe PPAD=$(BINDIR)|output||$(TMPDIR)|output||$(AINDIR)||$(INCDIR)|C:\MCC18\h;.;Include||$(LIBDIR)|C:\mcc18\lib||$(LKRDIR)|| -SOLK=<src>|usb_descriptors.c|main.c|eeprom.c|motor.c|lm629.c|usb_device.c|usb_function_hid.c|error.c||<obj>||<lib>||<lkr>|rm18f4550.lkr|| +SOLK=<src>|usb_descriptors.c|main.c|eeprom.c|motor.c|lm629.c|usb_device.c|usb_function_hid.c|error.c|trajectory.c||<obj>||<lib>||<lkr>|rm18f4550.lkr|| SuiteArgsString= ToolArgsString= TraceCmdString= DebugOptions= [File003] -Location=C:\krobot\USB_Module\Motor_Controller\Firmware\output\motor.o +Location=Z:\USB_Module\Motor_Controller\Firmware\output\motor.o Folder=Intermediary DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} LanguageToolID={E56A1C86-9D32-4DF6-8C34-FE0388B1B644} LanguageToolLocation=C:\MCC18\bin\mcc18.exe PPAD=$(BINDIR)|output||$(TMPDIR)|output||$(AINDIR)||$(INCDIR)|C:\MCC18\h;.;Include||$(LIBDIR)|C:\mcc18\lib||$(LKRDIR)|| -SOLK=<src>|usb_descriptors.c|main.c|eeprom.c|motor.c|lm629.c|usb_device.c|usb_function_hid.c|error.c||<obj>||<lib>||<lkr>|rm18f4550.lkr|| +SOLK=<src>|usb_descriptors.c|main.c|eeprom.c|motor.c|lm629.c|usb_device.c|usb_function_hid.c|error.c|trajectory.c||<obj>||<lib>||<lkr>|rm18f4550.lkr|| SuiteArgsString= ToolArgsString= TraceCmdString= DebugOptions= [File004] -Location=C:\krobot\USB_Module\Motor_Controller\Firmware\output\lm629.o +Location=Z:\USB_Module\Motor_Controller\Firmware\output\lm629.o Folder=Intermediary DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} LanguageToolID={E56A1C86-9D32-4DF6-8C34-FE0388B1B644} LanguageToolLocation=C:\MCC18\bin\mcc18.exe PPAD=$(BINDIR)|output||$(TMPDIR)|output||$(AINDIR)||$(INCDIR)|C:\MCC18\h;.;Include||$(LIBDIR)|C:\mcc18\lib||$(LKRDIR)|| -SOLK=<src>|usb_descriptors.c|main.c|eeprom.c|motor.c|lm629.c|usb_device.c|usb_function_hid.c|error.c||<obj>||<lib>||<lkr>|rm18f4550.lkr|| +SOLK=<src>|usb_descriptors.c|main.c|eeprom.c|motor.c|lm629.c|usb_device.c|usb_function_hid.c|error.c|trajectory.c||<obj>||<lib>||<lkr>|rm18f4550.lkr|| SuiteArgsString= ToolArgsString= TraceCmdString= DebugOptions= [File005] -Location=C:\krobot\USB_Module\Motor_Controller\Firmware\output\usb_device.o +Location=Z:\USB_Module\Motor_Controller\Firmware\output\usb_device.o Folder=Intermediary DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} LanguageToolID={E56A1C86-9D32-4DF6-8C34-FE0388B1B644} LanguageToolLocation=C:\MCC18\bin\mcc18.exe PPAD=$(BINDIR)|output||$(TMPDIR)|output||$(AINDIR)||$(INCDIR)|C:\MCC18\h;.;Include||$(LIBDIR)|C:\mcc18\lib||$(LKRDIR)|| -SOLK=<src>|usb_descriptors.c|main.c|eeprom.c|motor.c|lm629.c|usb_device.c|usb_function_hid.c|error.c||<obj>||<lib>||<lkr>|rm18f4550.lkr|| +SOLK=<src>|usb_descriptors.c|main.c|eeprom.c|motor.c|lm629.c|usb_device.c|usb_function_hid.c|error.c|trajectory.c||<obj>||<lib>||<lkr>|rm18f4550.lkr|| SuiteArgsString= ToolArgsString= TraceCmdString= DebugOptions= [File006] -Location=C:\krobot\USB_Module\Motor_Controller\Firmware\output\usb_function_hid.o +Location=Z:\USB_Module\Motor_Controller\Firmware\output\usb_function_hid.o Folder=Intermediary DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} LanguageToolID={E56A1C86-9D32-4DF6-8C34-FE0388B1B644} LanguageToolLocation=C:\MCC18\bin\mcc18.exe PPAD=$(BINDIR)|output||$(TMPDIR)|output||$(AINDIR)||$(INCDIR)|C:\MCC18\h;.;Include||$(LIBDIR)|C:\mcc18\lib||$(LKRDIR)|| -SOLK=<src>|usb_descriptors.c|main.c|eeprom.c|motor.c|lm629.c|usb_device.c|usb_function_hid.c|error.c||<obj>||<lib>||<lkr>|rm18f4550.lkr|| +SOLK=<src>|usb_descriptors.c|main.c|eeprom.c|motor.c|lm629.c|usb_device.c|usb_function_hid.c|error.c|trajectory.c||<obj>||<lib>||<lkr>|rm18f4550.lkr|| SuiteArgsString= ToolArgsString= TraceCmdString= DebugOptions= [File007] -Location=C:\krobot\USB_Module\Motor_Controller\Firmware\output\error.o +Location=Z:\USB_Module\Motor_Controller\Firmware\output\error.o Folder=Intermediary DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} LanguageToolID={E56A1C86-9D32-4DF6-8C34-FE0388B1B644} LanguageToolLocation=C:\MCC18\bin\mcc18.exe PPAD=$(BINDIR)|output||$(TMPDIR)|output||$(AINDIR)||$(INCDIR)|C:\MCC18\h;.;Include||$(LIBDIR)|C:\mcc18\lib||$(LKRDIR)|| -SOLK=<src>|usb_descriptors.c|main.c|eeprom.c|motor.c|lm629.c|usb_device.c|usb_function_hid.c|error.c||<obj>||<lib>||<lkr>|rm18f4550.lkr|| +SOLK=<src>|usb_descriptors.c|main.c|eeprom.c|motor.c|lm629.c|usb_device.c|usb_function_hid.c|error.c|trajectory.c||<obj>||<lib>||<lkr>|rm18f4550.lkr|| SuiteArgsString= ToolArgsString= TraceCmdString= DebugOptions= [File008] -Location=C:\krobot\USB_Module\Motor_Controller\Firmware\output\Motor_controller.cof +Location=Z:\USB_Module\Motor_Controller\Firmware\output\trajectory.o +Folder=Intermediary +DeviceName=PIC18F4550 +LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} +LanguageToolID={E56A1C86-9D32-4DF6-8C34-FE0388B1B644} +LanguageToolLocation=C:\MCC18\bin\mcc18.exe +PPAD=$(BINDIR)|output||$(TMPDIR)|output||$(AINDIR)||$(INCDIR)|C:\MCC18\h;.;Include||$(LIBDIR)|C:\mcc18\lib||$(LKRDIR)|| +SOLK=<src>|usb_descriptors.c|main.c|eeprom.c|motor.c|lm629.c|usb_device.c|usb_function_hid.c|error.c|trajectory.c||<obj>||<lib>||<lkr>|rm18f4550.lkr|| +SuiteArgsString= +ToolArgsString= + TraceCmdString= +DebugOptions= +[File009] +Location=Z:\USB_Module\Motor_Controller\Firmware\output\Motor_controller.cof Folder=Output DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} LanguageToolID={96C98149-AA1B-4CF9-B967-FAE79CAB663C} LanguageToolLocation=C:\MCC18\bin\mplink.exe PPAD=$(BINDIR)|output||$(TMPDIR)|output||$(AINDIR)||$(INCDIR)|C:\MCC18\h;.;Include||$(LIBDIR)|C:\mcc18\lib||$(LKRDIR)|| -SOLK=<src>|usb_descriptors.c|main.c|eeprom.c|motor.c|lm629.c|usb_device.c|usb_function_hid.c|error.c||<obj>||<lib>||<lkr>|rm18f4550.lkr|| +SOLK=<src>|usb_descriptors.c|main.c|eeprom.c|motor.c|lm629.c|usb_device.c|usb_function_hid.c|error.c|trajectory.c||<obj>||<lib>||<lkr>|rm18f4550.lkr|| SuiteArgsString= ToolArgsString=/m"$(BINDIR_)$(TARGETBASE).map" /w /o"$(BINDIR_)$(TARGETBASE).cof" TraceCmdString= DebugOptions= -[File009] -Location=C:\krobot\USB_Module\Motor_Controller\Firmware\output\Motor_controller.hex +[File010] +Location=Z:\USB_Module\Motor_Controller\Firmware\output\Motor_controller.hex Folder=Output DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} LanguageToolID={96C98149-AA1B-4CF9-B967-FAE79CAB663C} LanguageToolLocation=C:\MCC18\bin\mplink.exe PPAD=$(BINDIR)|output||$(TMPDIR)|output||$(AINDIR)||$(INCDIR)|C:\MCC18\h;.;Include||$(LIBDIR)|C:\mcc18\lib||$(LKRDIR)|| -SOLK=<src>|usb_descriptors.c|main.c|eeprom.c|motor.c|lm629.c|usb_device.c|usb_function_hid.c|error.c||<obj>||<lib>||<lkr>|rm18f4550.lkr|| +SOLK=<src>|usb_descriptors.c|main.c|eeprom.c|motor.c|lm629.c|usb_device.c|usb_function_hid.c|error.c|trajectory.c||<obj>||<lib>||<lkr>|rm18f4550.lkr|| SuiteArgsString= ToolArgsString=/m"$(BINDIR_)$(TARGETBASE).map" /w /o"$(BINDIR_)$(TARGETBASE).cof" TraceCmdString= DebugOptions= -[File010] -Location=C:\krobot\USB_Module\Motor_Controller\Firmware\output\Motor_controller.map +[File011] +Location=Z:\USB_Module\Motor_Controller\Firmware\output\Motor_controller.map Folder=Output DeviceName=PIC18F4550 LanguageToolSuiteID={5B7D72DD-9861-47BD-9F60-2BE967BF8416} LanguageToolID={96C98149-AA1B-4CF9-B967-FAE79CAB663C} LanguageToolLocation=C:\MCC18\bin\mplink.exe PPAD=$(BINDIR)|output||$(TMPDIR)|output||$(AINDIR)||$(INCDIR)|C:\MCC18\h;.;Include||$(LIBDIR)|C:\mcc18\lib||$(LKRDIR)|| -SOLK=<src>|usb_descriptors.c|main.c|eeprom.c|motor.c|lm629.c|usb_device.c|usb_function_hid.c|error.c||<obj>||<lib>||<lkr>|rm18f4550.lkr|| +SOLK=<src>|usb_descriptors.c|main.c|eeprom.c|motor.c|lm629.c|usb_device.c|usb_function_hid.c|error.c|trajectory.c||<obj>||<lib>||<lkr>|rm18f4550.lkr|| SuiteArgsString= ToolArgsString=/m"$(BINDIR_)$(TARGETBASE).map" /w /o"$(BINDIR_)$(TARGETBASE).cof" TraceCmdString= diff --git a/USB_Module/Motor_Controller/Firmware/main.c b/USB_Module/Motor_Controller/Firmware/main.c index 0a23cbb..07b3675 100644 --- a/USB_Module/Motor_Controller/Firmware/main.c +++ b/USB_Module/Motor_Controller/Firmware/main.c @@ -1120,7 +1120,7 @@ void ProcessIO(void) { ToSendDataBuffer.DATA[0] = '\0'; strcatpgm2ram((char *) &ToSendDataBuffer.DATA[0], (const rom far char *) "Commande TEST re"); - goToBezier(0, 0, 0, 500, 500, 0, 500, 500, 200); + goToLine(500, 400, 800); USBInHandle = HIDTxPacket(HID_EP, (BYTE*) &ToSendDataBuffer, 64); USBOutHandle = HIDRxPacket(HID_EP,(BYTE*)&ReceivedDataBuffer,64); // Re-arm the OUT endpoint for the next packet diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof index 07d0aec..19b0233 100644 Binary files a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof and b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof differ diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex index 54337cd..982e54b 100644 --- a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex +++ b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex @@ -1,145 +1,145 @@ :020000040000FA -:060000009CEF34F0120039 +:06000000A6EF35F012002E :0600080004EF04F01200F9 :060018000CEF04F01200E1 -:060800009CEF34F0120031 +:06080000A6EF35F0120026 :0608080034EF04F01200C1 :060818009EEF04F0120047 -:06082A000500DE6900007C -:100830006601000021000000D6690000B20100003E -:1008400008000000C86900009A0100000E000000C6 -:10085000C5690000BD01000003000000B26900008E -:080860008701000013000000F5 +:06082A000500F26B000066 +:100830007201000021000000EA6B0000BE01000010 +:1008400008000000DC6B0000A60100000E000000A4 +:10085000D96B0000C901000003000000C66B000056 +:080860009301000013000000E9 :08086800DACFE4FFE2CFDAFF72 :10087000E9CFE4FFEACFE4FFF6CFE4FFF7CFE4FFF0 :10088000F5CFE4FFF3CFE4FFF4CFE4FFFACFE4FFCA :1008900000EE29F0140EE80403E3EECFE4FFFBD7EB :1008A00000EE00F0290EE80403E3EECFE4FFFBD7EF -:1008B000F7EC0FF09EA015D001EC10F00101A02B79 -:1008C000000EA123E80EA05D030EA15905E3A06B65 -:1008D000A16BA22B000EA32322EC2DF08EEC21F0B5 -:1008E0009E900AEC10F002E2E16AE552E16EE552F8 +:1008B000E4EC0FF09EA015D0EEEC0FF00101AC2B94 +:1008C000000EAD23E80EAC5D030EAD5905E3AC6B35 +:1008D000AD6BAE2B000EAF232CEC2EF07BEC21F099 +:1008E0009E90F7EC0FF002E2E16AE552E16EE5520C :1008F000E7CFD9FFE55200EE28F0290EE80403E324 :10090000E5CFEDFFFBD700EE3CF0140EE80403E367 :10091000E5CFEDFFFBD7E5CFFAFFE5CFF4FFE5CF5D :10092000F3FFE5CFF5FFE5CFF7FFE5CFF6FFE5CF26 :10093000EAFFE5CFE9FFE5CFDAFF1100D8CFE4FF0A :10094000E0CFE4FFE46EDACFE4FFE2CFDAFFF3CFEB -:10095000E4FFF4CFE4FFF7EC0FF00AEC10F002E252 +:10095000E4FFF4CFE4FFE4EC0FF0F7EC0FF002E279 :10096000E16AE552E16EE552E7CFD9FFE552E5CF06 :10097000F4FFE5CFF3FFE5CFDAFFE550E5CFE0FF89 -:10098000E5CFD8FF100004D81EEC1CF060D8FCD7CF -:100990000F0EC11202D8E8EF1BF01AEC10F0E6526D -:1009A000CEEC0FF00101BA6F070EBA5D10E1E66AF6 -:1009B00092EC33F0E552DF6E000EDF8012EC10F0A7 -:1009C000E66A6FEC34F0E552DF7012EC10F0D08E76 -:1009D000F28EF28CF30E8C16951601019A6B9B6BBE -:1009E0009C6B9D6B010E9E6FF90E921680160E0E7B -:1009F000E66E7C0EE66EE10EE66E05EC33F0E55237 +:10098000E5CFD8FF100004D80BEC1CF060D8FCD7E2 +:100990000F0EC11202D8D5EF1BF007EC10F0E65293 +:1009A000BBEC0FF00101C66F070EC65D10E1E66AF1 +:1009B0009CEC34F0E552DF6E000EDF80FFEC0FF0B0 +:1009C000E66A79EC35F0E552DF70FFEC0FF0D08E7F +:1009D000F28EF28CF30E8C1695160101A66BA76BA6 +:1009E000A86BA96B010EAA6FF90E921680160E0E57 +:1009F000E66E7C0EE66EE10EE66E0FEC34F0E5522C :100A0000E552E552CF0E9216939894943F0E9516A8 -:100A1000010EE66E1FEC10F0E552838C8188828413 -:100A2000808A838E80888294010EE66EAAEC34F070 -:100A3000E55282849D80C50EE66EFFEC33F0E552F0 -:100A400001EC10F0E552E552E7CFD9FF1200D9CF03 -:100A5000E6FFE1CFD9FF0F0EE12601019E5102E032 -:100A600013EC0FF0200E0101405D03E36D50020B0B -:100A700002E009EF0FF001019C519D1102E1000E0F -:100A800008D09CC1E9FF9DC1EAFFEF50800B01E057 -:100A9000010E000947E101018651EA6A660FE96E1D +:100A1000010EE66E0CEC10F0E552838C8188828426 +:100A2000808A838E80888294010EE66EB4EC35F065 +:100A3000E55282849D80C50EE66E09EC35F0E552E4 +:100A4000EEEC0FF0E552E552E7CFD9FF1200D9CF17 +:100A5000E6FFE1CFD9FF0F0EE1260101AA5102E026 +:100A600000EC0FF0200E01014C5D03E36D50020B12 +:100A700002E0F6EF0EF00101A851A91102E1000E0B +:100A800008D0A8C1E9FFA9C1EAFFEF50800B01E03F +:100A9000010E000947E101019251EA6A720FE96E05 :100AA000010EEA22EF5000083DE20501406B010112 -:100AB0009F519F2B0501416F0501040E426F0101FB -:100AC0008651EA6A660FE96E010EEA22EFCF43F51E +:100AB000AB51AB2B0501416F0501040E426F0101E3 +:100AC0009251EA6A720FE96E010EEA22EFCF43F506 :100AD000400EE66E400EE66E050EE66E010EE66E08 -:100AE000010EE66E39EC20F0006E050EE15E00505E -:100AF000F3CF9CF1F4CF9DF101018651EA6A660FB4 -:100B0000E96E010EEA22EF6A01018651000803E254 -:100B10000101860707D001018551000803E20101A8 -:100B20001F0E866F01019C519D1102E1000E08D03D -:100B30009CC1E9FF9DC1EAFFEF50800B01E0010E6F -:100B400000092CE10101A50529E104EC18F00009D8 -:100B500025E00501406B01019F519F2B0501416F6D +:100AE000010EE66E26EC20F0006E050EE15E005071 +:100AF000F3CFA8F1F4CFA9F101019251EA6A720F84 +:100B0000E96E010EEA22EF6A01019251000803E248 +:100B10000101920707D001019151000803E2010190 +:100B20001F0E926F0101A851A91102E1000E08D019 +:100B3000A8C1E9FFA9C1EAFFEF50800B01E0010E57 +:100B400000092CE10101B10529E1F1EC17F00009E0 +:100B500025E00501406B0101AB51AB2B0501416F55 :100B600005010A0E426F0501436B0501010E486F36 :100B7000400EE66E400EE66E050EE66E010EE66E67 -:100B8000010EE66E39EC20F0006E050EE15E0050BD -:100B9000F3CF9CF1F4CF9DF10101A56B000E010193 -:100BA000E76EA419E8AE02D0A43503D0E750D88090 -:100BB000A45501E38ED00101A451FF0A29E0FD0AEA -:100BC00013E0030A01E06ED0020EE66E6EEC2EF02A -:100BD000E55248EC13F0000904E00101020EA46F95 -:100BE00002D00101A46960D0200EE66E030EE66E0D -:100BF000C80EE66EE66AE80EE66E030EE66E2EECB2 -:100C000015F0006E060EE15E00500101A46B4CD0A1 -:100C100001019C519D1102E1000E08D09CC1E9FF29 -:100C20009DC1EAFFEF50800B01E0010E000939E1A0 -:100C30000501406B01019F519F2B0501416F05018B -:100C4000050E426F0501436B0501486BEB0E006E0C -:100C5000650E016E026A00C0E6FF01C0E6FF02C039 -:100C6000E6FF480EE66E050EE66E56EC33F0036EB8 +:100B8000010EE66E26EC20F0006E050EE15E0050D0 +:100B9000F3CFA8F1F4CFA9F10101B16B000E01016F +:100BA000E76EB019E8AE02D0B03503D0E750D88078 +:100BB000B05501E38ED00101B051FF0A29E0FD0AD2 +:100BC00013E0030A01E06ED0020EE66E78EC2FF01F +:100BD000E55235EC13F0000904E00101020EB06F9C +:100BE00002D00101B06960D0200EE66E030EE66E01 +:100BF000C80EE66EE66AE80EE66E030EE66E1BECC5 +:100C000015F0006E060EE15E00500101B06B4CD095 +:100C10000101A851A91102E1000E08D0A8C1E9FF05 +:100C2000A9C1EAFFEF50800B01E0010E000939E194 +:100C30000501406B0101AB51AB2B0501416F050173 +:100C4000050E426F0501436B0501486BFF0E006EF8 +:100C5000670E016E026A00C0E6FF01C0E6FF02C037 +:100C6000E6FF480EE66E050EE66E60EC34F0036EAD :100C7000050EE15E0350400EE66E400EE66E050E78 -:100C8000E66E010EE66E010EE66E39EC20F0006EA7 -:100C9000050EE15E0050F3CF9CF1F4CF9DF1010110 -:100CA000A46B02D00101A46B020EE66EE66AE1ECD1 +:100C8000E66E010EE66E010EE66E26EC20F0006EBA +:100C9000050EE15E0050F3CFA8F1F4CFA9F10101F8 +:100CA000B06B02D00101B06B020EE66EE66ACEECCC :100CB00012F0E552E55200090AE1020EE66E010E5D -:100CC000E66EE1EC12F0E552E552000902E00101A6 -:100CD000A46901019A519B1102E1000E08D09AC14A -:100CE000E9FF9BC1EAFFEF50800B01E0010E000914 -:100CF00002E009EF0FF005010251070A02E145EF9A +:100CC000E66ECEEC12F0E552E552000902E00101B9 +:100CD000B0690101A651A71102E1000E08D0A6C11A +:100CE000E9FFA7C1EAFFEF50800B01E0010E000908 +:100CF00002E0F6EF0EF005010251070A02E145EFAE :100D00000EF00D0A01E149D2010A01E119D20D0AE2 :100D100001E1B1D1040A1AE0030A07E0010A02E086 -:100D2000C8EF0EF0FF0009EF0FF0E66A92EC33F027 -:100D3000E552DF6E000EDB80DFCFE6FFE66A72EC85 -:100D400033F0E552E552FF0009EF0FF001019C512D -:100D50009D1102E1000E08D09CC1E9FF9DC1EAFF90 +:100D2000B5EF0EF0FF00F6EF0EF0E66A9CEC34F043 +:100D3000E552DF6E000EDB80DFCFE6FFE66A7CEC7B +:100D400034F0E552E552FF00F6EF0EF00101A85134 +:100D5000A91102E1000E08D0A8C1E9FFA9C1EAFF6C :100D6000EF50800B01E0010E000901E082D100C5C7 :100D700040F50501416B0501030E426F0501436B10 :100D8000050108510F0A01E110D1080A01E1BBD0A9 :100D9000010A01E17ED0020A71E0070A64E0010A5B -:100DA00020E0030A06E0010A01E039D1BAC148F5A2 -:100DB00039D10501486BC70E006E650E016E026ADF +:100DA00020E0030A06E0010A01E039D1C6C148F596 +:100DB00039D10501486BDB0E006E670E016E026AC9 :100DC00000C0E6FF01C0E6FF02C0E6FF480EE66E87 -:100DD000050EE66E56EC33F0036E050EE15E035031 -:100DE00021D10501486BBB0E006E650E016E026AD3 +:100DD000050EE66E60EC34F0036E050EE15E035026 +:100DE00021D10501486BCF0E006E670E016E026ABD :100DF00000C0E6FF01C0E6FF02C0E6FF480EE66E57 -:100E0000050EE66E56EC33F0036E050EE15E035000 -:100E1000B90E006E650E016E026A00C0E6FF01C0E9 -:100E2000E6FF02C0E6FF480EE66E050EE66E56ECE3 -:100E300033F0036E050EE15E0350B00E006E650EDA +:100E0000050EE66E60EC34F0036E050EE15E0350F5 +:100E1000CD0E006E670E016E026A00C0E6FF01C0D3 +:100E2000E6FF02C0E6FF480EE66E050EE66E60ECD9 +:100E300034F0036E050EE15E0350C40E006E670EC3 :100E4000016E026A00C0E6FF01C0E6FF02C0E6FFD5 -:100E5000480EE66E050EE66E56EC33F0036E050E98 +:100E5000480EE66E050EE66E60EC34F0036E050E8D :100E6000E15E0350DFD092CF48F593CF49F594CFA0 :100E70004AF595CF4BF596CF4CF5D4D080CF48F5B9 :100E800081CF49F582CF4AF583CF4BF584CF4CF51E -:100E9000C9D0E66AC8EC2DF0E552010E2FC0DBFF89 +:100E9000C9D0E66AD2EC2EF0E552010E2FC0DBFF7E :100EA000020E30C0DBFF030E31C0DBFF040E32C088 :100EB000DBFF040EDBCF48F5030EDBCF49F5020E56 -:100EC000DBCF4AF5010EDBCF4BF5010EE66EC8EC29 -:100ED0002DF0E552010E2FC0DBFF020E30C0DBFF0C +:100EC000DBCF4AF5010EDBCF4BF5010EE66ED2EC1F +:100ED0002EF0E552010E2FC0DBFF020E30C0DBFF0B :100EE000030E31C0DBFF040E32C0DBFF040EDBCF8C :100EF0004CF5030EDBCF4DF5020EDBCF4EF5010EA8 -:100F0000DBCF4FF58FD00A0EE66EE66A6FEC10F07D -:100F1000E552E552E66AD3EC11F0E552030EF3CF49 -:100F2000DBFF040EF4CFDBFFE66AD3EC11F0E552F1 +:100F0000DBCF4FF58FD00A0EE66EE66A5CEC10F090 +:100F1000E552E552E66AC0EC11F0E552030EF3CF5C +:100F2000DBFF040EF4CFDBFFE66AC0EC11F0E55204 :100F3000DE52F3CFDEFFF4CFDDFFDD52040EDBCF58 :100F400048F5030EDBCF49F5020EDBCF4AF5010E63 -:100F5000DBCF4BF50A0EE66E010EE66E6FEC10F07D -:100F6000E552E552010EE66ED3EC11F0E552030EA8 -:100F7000F3CFDBFF040EF4CFDBFF010EE66ED3EC04 +:100F5000DBCF4BF50A0EE66E010EE66E5CEC10F090 +:100F6000E552E552010EE66EC0EC11F0E552030EBB +:100F7000F3CFDBFF040EF4CFDBFF010EE66EC0EC17 :100F800011F0E552DE52F3CFDEFFF4CFDDFFDD528C :100F9000040EDBCF4CF5030EDBCF4DF5020EDBCF9D -:100FA0004EF5010EDBCF4FF53DD0E66A0BEC15F0A8 +:100FA0004EF5010EDBCF4FF53DD0E66AF8EC14F0BC :100FB000E552010E2FC0DBFF020E30C0DBFF030E37 :100FC00031C0DBFF040E32C0DBFF040EDBCF48F57F :100FD000030EDBCF49F5020EDBCF4AF5010EDBCF66 -:100FE0004BF5010EE66E0BEC15F0E552010E2FC02D +:100FE0004BF5010EE66EF8EC14F0E552010E2FC041 :100FF000DBFF020E30C0DBFF030E31C0DBFF040E4F :1010000032C0DBFF040EDBCF4CF5030EDBCF4DF51A :10101000020EDBCF4EF5010EDBCF4FF503D00501FD :10102000020E436F400EE66E400EE66E050EE66E53 -:10103000010EE66E010EE66E39EC20F0006E050E34 -:10104000E15E0050F3CF9CF1F4CF9DF1400EE66ECF -:10105000000EE66E050EE66EE66A010EE66E39ECEF -:1010600020F0006E050EE15E0050F3CF9AF1F4CF50 -:101070009BF109EF0FF005010851030A37E0010A5F +:10103000010EE66E010EE66E26EC20F0006E050E47 +:10104000E15E0050F3CFA8F1F4CFA9F1400EE66EB7 +:10105000000EE66E050EE66EE66A010EE66E26EC02 +:1010600020F0006E050EE15E0050F3CFA6F1F4CF44 +:10107000A7F1F6EF0EF005010851030A37E0010A67 :1010800025E0030A13E0010A01E040D005010951FF :10109000921205010A51931205010B519412050198 :1010A0000C51951205010D51961235D00501091DFF @@ -149,15 +149,15 @@ :1010E0000C1D8C1605010D1D8D1615D0050109511D :1010F000891205010A518A1205010B518B12050153 :101100000C518C1205010D518D1205D0030EE66EA7 -:101110003CEC34F0E552400EE66E000EE66E050E35 -:10112000E66EE66A010EE66E39EC20F0006E050E02 -:10113000E15E0050F3CF9AF1F4CF9BF109EF0FF08D +:1011100046EC35F0E552400EE66E000EE66E050E2A +:10112000E66EE66A010EE66E26EC20F0006E050E15 +:10113000E15E0050F3CFA6F1F4CFA7F1F6EF0EF089 :1011400005010851020A09E0030A01E00CD009C5B3 -:10115000E6FF6EEC2EF0E5520BD009C5E6FF7EEC03 -:101160002EF0E55205D0010EE66E3CEC34F0E5526F +:10115000E6FF78EC2FF0E5520BD009C5E6FF88ECEE +:101160002FF0E55205D0010EE66E46EC35F0E55263 :10117000400EE66E000EE66E050EE66EE66A010EA5 -:10118000E66E39EC20F0006E050EE15E0050F3CF04 -:101190009AF1F4CF9BF109EF0FF005010851060A0F +:10118000E66E26EC20F0006E050EE15E0050F3CF17 +:10119000A6F1F4CFA7F1F6EF0EF005010851060A0B :1011A00002E104EF0EF0080A02E1CAEF0DF0030AB3 :1011B00002E1C1EF0DF0070A02E15DEF0DF0030A55 :1011C00001E1C3D3010A01E1D0D20F0A01E1B9D292 @@ -165,80 +165,80 @@ :1011E0000CD2010A01E1DBD1030A01E1AAD1010A13 :1011F00001E1A4D10C0A01E126D1030A01E194D056 :10120000040A02E02CEF0EF00501095104E0020E81 -:101210000501095D40E10AC5E6FF010EE66E72ECCC -:1012200033F0E552E5520BC5E6FF020EE66E72ECB6 -:1012300033F0E552E5520CC5E6FF030EE66E72ECA4 -:1012400033F0E552E5520DC5E6FF040EE66E72EC92 -:1012500033F0E552E5520EC5E6FF050EE66E72EC80 -:1012600033F0E552E5520FC5E6FF060EE66E72EC6E -:1012700033F0E552E55210C5E6FF070EE66E72EC5C -:1012800033F0E552E55211C5E6FF080EE66E72EC4A -:1012900033F0E552E5520501090504E0020E0501AF -:1012A000095D40E10AC5E6FF090EE66E72EC33F017 -:1012B000E552E5520BC5E6FF0A0EE66E72EC33F01E -:1012C000E552E5520CC5E6FF0B0EE66E72EC33F00C -:1012D000E552E5520DC5E6FF0C0EE66E72EC33F0FA -:1012E000E552E5520EC5E6FF0D0EE66E72EC33F0E8 -:1012F000E552E5520FC5E6FF0E0EE66E72EC33F0D6 -:10130000E552E55210C5E6FF0F0EE66E72EC33F0C3 -:10131000E552E55211C5E6FF100EE66E72EC33F0B1 +:101210000501095D40E10AC5E6FF010EE66E7CECC2 +:1012200034F0E552E5520BC5E6FF020EE66E7CECAB +:1012300034F0E552E5520CC5E6FF030EE66E7CEC99 +:1012400034F0E552E5520DC5E6FF040EE66E7CEC87 +:1012500034F0E552E5520EC5E6FF050EE66E7CEC75 +:1012600034F0E552E5520FC5E6FF060EE66E7CEC63 +:1012700034F0E552E55210C5E6FF070EE66E7CEC51 +:1012800034F0E552E55211C5E6FF080EE66E7CEC3F +:1012900034F0E552E5520501090504E0020E0501AE +:1012A000095D40E10AC5E6FF090EE66E7CEC34F00C +:1012B000E552E5520BC5E6FF0A0EE66E7CEC34F013 +:1012C000E552E5520CC5E6FF0B0EE66E7CEC34F001 +:1012D000E552E5520DC5E6FF0C0EE66E7CEC34F0EF +:1012E000E552E5520EC5E6FF0D0EE66E7CEC34F0DD +:1012F000E552E5520FC5E6FF0E0EE66E7CEC34F0CB +:10130000E552E55210C5E6FF0F0EE66E7CEC34F0B8 +:10131000E552E55211C5E6FF100EE66E7CEC34F0A6 :10132000E552E55231EF0EF000C540F50501416B85 -:101330000501030E426F0501436B010EE66E92EC50 -:1013400033F0E5520501486F020EE66E92EC33F081 -:10135000E5520501496F030EE66E92EC33F0E5525B -:1013600005014A6F040EE66E92EC33F0E55205017A -:101370004B6F050EE66E92EC33F0E55205014C6FB3 -:10138000060EE66E92EC33F0E55205014D6F070E46 -:10139000E66E92EC33F0E55205014E6F080EE66EF4 -:1013A00092EC33F0E55205014F6F090EE66E92ECB8 -:1013B00033F0E5520501506F0A0EE66E92EC33F001 -:1013C000E5520501516F0B0EE66E92EC33F0E552DB -:1013D0000501526F0C0EE66E92EC33F0E5520501FA -:1013E000536F0D0EE66E92EC33F0E5520501546F2B -:1013F0000E0EE66E92EC33F0E5520501556F0F0EBE -:10140000E66E92EC33F0E5520501566F100EE66E73 -:1014100092EC33F0E5520501576F400EE66E400E38 -:10142000E66E050EE66E010EE66E010EE66E39EC16 -:1014300020F0006E050EE15E0050F3CF9CF1F4CF7A -:101440009DF131EF0EF0030EE66E010EE66E72ECCA -:1014500033F0E552E552E80EE66E020EE66E72ECEF -:1014600033F0E552E552E66A030EE66E72EC33F0B5 -:10147000E552E552010EE66E040EE66E72EC33F0B4 -:10148000E552E552E66A050EE66E72EC33F0E5527F -:10149000E552E66A060EE66E72EC33F0E552E5526E -:1014A000270EE66E070EE66E72EC33F0E552E5525B -:1014B000100EE66E080EE66E72EC33F0E552E55261 -:1014C000030EE66E090EE66E72EC33F0E552E5525D -:1014D000E80EE66E0A0EE66E72EC33F0E552E55267 -:1014E000E66A0B0EE66E72EC33F0E552E552010E41 -:1014F000E66E0C0EE66E72EC33F0E552E552E66AEB -:101500000D0EE66E72EC33F0E552E552E66A0E0E11 -:10151000E66E72EC33F0E552E552270EE66E0F0EE2 -:10152000E66E72EC33F0E552E552100EE66E100EE8 -:10153000E66E72EC33F0E552E55293D348EC13F0CB +:101330000501030E426F0501436B010EE66E9CEC46 +:1013400034F0E5520501486F020EE66E9CEC34F075 +:10135000E5520501496F030EE66E9CEC34F0E55250 +:1013600005014A6F040EE66E9CEC34F0E55205016F +:101370004B6F050EE66E9CEC34F0E55205014C6FA8 +:10138000060EE66E9CEC34F0E55205014D6F070E3B +:10139000E66E9CEC34F0E55205014E6F080EE66EE9 +:1013A0009CEC34F0E55205014F6F090EE66E9CECA3 +:1013B00034F0E5520501506F0A0EE66E9CEC34F0F5 +:1013C000E5520501516F0B0EE66E9CEC34F0E552D0 +:1013D0000501526F0C0EE66E9CEC34F0E5520501EF +:1013E000536F0D0EE66E9CEC34F0E5520501546F20 +:1013F0000E0EE66E9CEC34F0E5520501556F0F0EB3 +:10140000E66E9CEC34F0E5520501566F100EE66E68 +:101410009CEC34F0E5520501576F400EE66E400E2D +:10142000E66E050EE66E010EE66E010EE66E26EC29 +:1014300020F0006E050EE15E0050F3CFA8F1F4CF6E +:10144000A9F131EF0EF0030EE66E010EE66E7CECB4 +:1014500034F0E552E552E80EE66E020EE66E7CECE4 +:1014600034F0E552E552E66A030EE66E7CEC34F0A9 +:10147000E552E552010EE66E040EE66E7CEC34F0A9 +:10148000E552E552E66A050EE66E7CEC34F0E55274 +:10149000E552E66A060EE66E7CEC34F0E552E55263 +:1014A000270EE66E070EE66E7CEC34F0E552E55250 +:1014B000100EE66E080EE66E7CEC34F0E552E55256 +:1014C000030EE66E090EE66E7CEC34F0E552E55252 +:1014D000E80EE66E0A0EE66E7CEC34F0E552E5525C +:1014E000E66A0B0EE66E7CEC34F0E552E552010E36 +:1014F000E66E0C0EE66E7CEC34F0E552E552E66AE0 +:101500000D0EE66E7CEC34F0E552E552E66A0E0E06 +:10151000E66E7CEC34F0E552E552270EE66E0F0ED7 +:10152000E66E7CEC34F0E552E552100EE66E100EDD +:10153000E66E7CEC34F0E552E55293D335EC13F0D3 :1015400090D3060E09C5DBFF050E0AC5DBFF080EAA :101550000BC5DBFF070E0CC5DBFF0A0E0DC5DBFF5D :10156000090E0EC5DBFF090EDBCFE6FF0A0EDBCF4F :10157000E6FF070EDBCFE6FF080EDBCFE6FF050E2A -:10158000DBCFE6FF060EDBCFE6FF2EEC15F0006E9C -:10159000060EE15E00500101010EA56F62D3060E3A +:10158000DBCFE6FF060EDBCFE6FF1BEC15F0006EAF +:10159000060EE15E00500101010EB16F62D3060E2E :1015A00009C5DBFF050E0AC5DBFF080E0BC5DBFF17 :1015B000070E0CC5DBFF0A0E0DC5DBFF090E0EC5BD :1015C000DBFF090EDBCFE6FF0A0EDBCFE6FF070EDF :1015D000DBCFE6FF080EDBCFE6FF050EDBCFE6FF35 -:1015E000060EDBCFE6FF35EC15F0006E060EE15E71 -:1015F00000500101010EA56F34D3060E09C5DBFFB3 +:1015E000060EDBCFE6FF22EC15F0006E060EE15E84 +:1015F00000500101010EB16F34D3060E09C5DBFFA7 :10160000050E0AC5DBFF080E0BC5DBFF070E0CC578 :10161000DBFF0A0E0DC5DBFF090E0EC5DBFF090E51 :10162000DBCFE6FF0A0EDBCFE6FF070EDBCFE6FFE0 :10163000080EDBCFE6FF050EDBCFE6FF060EDBCFA5 -:10164000E6FF3CEC15F0006E060EE15E0050010175 -:10165000010EA56F06D3060E09C5DBFF050E0AC5F0 +:10164000E6FF29EC15F0006E060EE15E0050010188 +:10165000010EB16F06D3060E09C5DBFF050E0AC5E4 :10166000DBFF080E0BC5DBFF070E0CC5DBFF0A0E08 :101670000DC5DBFF090E0EC5DBFF090EDBCFE6FF54 :101680000A0EDBCFE6FF070EDBCFE6FF080EDBCF4F -:10169000E6FF050EDBCFE6FF060EDBCFE6FF48ECEC -:1016A00015F0006E060EE15E00500101010EA56FFF +:10169000E6FF050EDBCFE6FF060EDBCFE6FF35ECFF +:1016A00015F0006E060EE15E00500101010EB16FF3 :1016B000D8D2060E09C5DBFF050E0AC5DBFF080EF2 :1016C0000BC5DBFF070E0CC5DBFF0A0E0DC5DBFFEC :1016D000090E0EC5DBFF0C0E0FC5DBFF0B0E10C590 @@ -246,1362 +246,1398 @@ :1016F000DBCFE6FF0E0EDBCFE6FF11C5E6FF0B0EDC :10170000DBCFE6FF0C0EDBCFE6FF090EDBCFE6FFFB :101710000A0EDBCFE6FF070EDBCFE6FF080EDBCFBE -:10172000E6FF050EDBCFE6FF060EDBCFE6FF54EC4F -:1017300015F0006E0B0EE15E00500101010EA56F69 +:10172000E6FF050EDBCFE6FF060EDBCFE6FF41EC62 +:1017300015F0006E0B0EE15E00500101010EB16F5D :1017400090D2060E0AC5DBFF050E0BC5DBFF050EAA -:10175000DBCFE6FF060EDBCFE6FF09C5E6FF02ECB6 -:1017600015F0E552E552E5527CD2060E0AC5DBFFC4 +:10175000DBCFE6FF060EDBCFE6FF09C5E6FFEFECC9 +:1017600014F0E552E552E5527CD2060E0AC5DBFFC5 :10177000050E0BC5DBFF080E0CC5DBFF070E0DC504 :10178000DBFF0A0E0EC5DBFF090E0FC5DBFF09C527 -:10179000E6FFF4EC12F0E552090EDBCF31F00A0E51 -:1017A000DBCF32F041EC25F030C008F031C009F059 +:10179000E6FFE1EC12F0E552090EDBCF31F00A0E64 +:1017A000DBCF32F04BEC26F030C008F031C009F04E :1017B00032C00AF033C00BF0A60E356E280E366E1E :1017C000940E376E3F0E386E08C030F009C031F00D -:1017D0000AC032F00BC033F05BEC26F030C004F0EE +:1017D0000AC032F00BC033F065EC27F030C004F0E3 :1017E00031C005F032C006F033C007F0CC0E356EC4 :1017F000BC0E366E8C0E376E3B0E386E04C030F069 -:1018000005C031F006C032F007C033F05BEC26F0C3 -:101810002BEC27F02FC000F030C001F031C002F0F7 +:1018000005C031F006C032F007C033F065EC27F0B8 +:1018100035EC28F02FC000F030C001F031C002F0EC :1018200032C003F000C0E6FF01C0E6FF02C0E6FFE1 :1018300003C0E6FF070EDBCF31F0080EDBCF32F03E -:1018400041EC25F030C014F031C015F032C016F074 +:101840004BEC26F030C014F031C015F032C016F069 :1018500033C017F0A60E356E280E366E940E376E16 :101860003F0E386E14C030F015C031F016C032F0A3 -:1018700017C033F05BEC26F030C010F031C011F02F +:1018700017C033F065EC27F030C010F031C011F024 :1018800032C012F033C013F0BD0E356E370E366E17 :10189000860E376E410E386E10C030F011C031F038 -:1018A00012C032F013C033F05BEC26F02BEC27F0C3 +:1018A00012C032F013C033F065EC27F035EC28F0AD :1018B0002FC00CF030C00DF031C00EF032C00FF070 :1018C0000CC0E6FF0DC0E6FF0EC0E6FF0FC0E6FF4E -:1018D000050EDBCF31F0060EDBCF32F041EC25F008 +:1018D000050EDBCF31F0060EDBCF32F04BEC26F0FD :1018E00030C01CF031C01DF032C01EF033C01FF0FC :1018F000A60E356E280E366E940E376E3F0E386E7D :101900001CC030F01DC031F01EC032F01FC033F0DB -:101910005BEC26F02BEC27F02FC018F030C019F04C +:1019100065EC27F035EC28F02FC018F030C019F036 :1019200031C01AF032C01BF018C0E6FF19C0E6FF44 -:101930001AC0E6FF1BC0E6FF09C5E6FFCBEC13F0BB +:101930001AC0E6FF1BC0E6FF09C5E6FFB8EC13F0CE :10194000206E0D0EE15E20508CD1060E0AC5DBFF25 :10195000050E0BC5DBFF080E0CC5DBFF070E0DC522 -:10196000DBFF09C5E6FFF4EC12F0E5520EC5E6FF19 -:10197000070EDBCF31F0080EDBCF32F041EC25F063 +:10196000DBFF09C5E6FFE1EC12F0E5520EC5E6FF2C +:10197000070EDBCF31F0080EDBCF32F04BEC26F058 :1019800030C008F031C009F032C00AF033C00BF0AB :10199000A60E356E280E366E940E376E3F0E386EDC :1019A00008C030F009C031F00AC032F00BC033F08B -:1019B0005BEC26F030C004F031C005F032C006F018 +:1019B00065EC27F030C004F031C005F032C006F00D :1019C00033C007F0CC0E356EBC0E366E8C0E376E03 :1019D0003B0E386E04C030F005C031F006C032F066 -:1019E00007C033F05BEC26F02BEC27F02FC000F0A3 +:1019E00007C033F065EC27F035EC28F02FC000F08D :1019F00030C001F031C002F032C003F000C0E6FF99 :101A000001C0E6FF02C0E6FF03C0E6FF050EDBCF24 -:101A100031F0060EDBCF32F041EC25F030C014F08F +:101A100031F0060EDBCF32F04BEC26F030C014F084 :101A200031C015F032C016F033C017F0A60E356E77 :101A3000280E366E940E376E3F0E386E14C030F09E -:101A400015C031F016C032F017C033F05BEC26F051 +:101A400015C031F016C032F017C033F065EC27F046 :101A500030C010F031C011F032C012F033C013F0BA :101A6000BD0E356E370E366E860E376E410E386EF1 :101A700010C030F011C031F012C032F013C033F09A -:101A80005BEC26F02BEC27F02FC00CF030C00DF0F3 +:101A800065EC27F035EC28F02FC00CF030C00DF0DD :101A900031C00EF032C00FF00CC0E6FF0DC0E6FF03 -:101AA0000EC0E6FF0FC0E6FF09C5E6FF5BEC14F0D1 +:101AA0000EC0E6FF0FC0E6FF09C5E6FF48EC14F0E4 :101AB000186E0A0EE15E1850D4D0060E0AC5DBFF80 -:101AC000050E0BC5DBFF09C5E6FFF4EC12F0E5528D +:101AC000050E0BC5DBFF09C5E6FFE1EC12F0E552A0 :101AD0000CC5E6FF050EDBCF31F0060EDBCF32F092 -:101AE00041EC25F030C008F031C009F032C00AF0F6 +:101AE0004BEC26F030C008F031C009F032C00AF0EB :101AF00033C00BF0A60E356E280E366E940E376E80 :101B00003F0E386E08C030F009C031F00AC032F024 -:101B10000BC033F05BEC26F030C004F031C005F0B0 +:101B10000BC033F065EC27F030C004F031C005F0A5 :101B200032C006F033C007F0BD0E356E370E366E8C :101B3000860E376E410E386E04C030F005C031F0AD -:101B400006C032F007C033F05BEC26F02BEC27F038 +:101B400006C032F007C033F065EC27F035EC28F022 :101B50002FC000F030C001F031C002F032C003F0FD :101B600000C0E6FF01C0E6FF02C0E6FF03C0E6FFDB -:101B700009C5E6FFB9EC14F00C6E060EE15E0C50E0 -:101B800070D009C5E6FFD1EC14F0E5520101010E59 -:101B9000A56F67D0D7EC17F0050EF3CFDBFF060E6D -:101BA000F4CFDBFFEDEC17F0070EF3CFDBFF080EF1 +:101B700009C5E6FFA6EC14F00C6E060EE15E0C50F3 +:101B800070D009C5E6FFBEEC14F0E5520101010E6C +:101B9000B16F67D0C4EC17F0050EF3CFDBFF060E74 +:101BA000F4CFDBFFDAEC17F0070EF3CFDBFF080E04 :101BB000F4CFDBFF00C540F50501416B0501030EC5 :101BC000426F0501436B060EDBCF48F5050EDBCFF8 :101BD00049F5080EDBCF4AF5070EDBCF4BF5400E7B :101BE000E66E400EE66E050EE66E010EE66E010E26 -:101BF000E66E39EC20F0006E050EE15E0050F3CF8A -:101C00009CF1F4CF9DF12DD000C540F50501416B4D -:101C10000501030E426F0501436B04EC18F0000947 +:101BF000E66E26EC20F0006E050EE15E0050F3CF9D +:101C0000A8F1F4CFA9F12DD000C540F50501416B35 +:101C10000501030E426F0501436BF1EC17F000095B :101C200004E00501010E486F02D00501486B400E2B :101C3000E66E400EE66E050EE66E010EE66E010ED5 -:101C4000E66E39EC20F0006E050EE15E0050F3CF39 -:101C50009CF1F4CF9DF105D0010EE66E3CEC34F022 +:101C4000E66E26EC20F0006E050EE15E0050F3CF4C +:101C5000A8F1F4CFA9F105D0010EE66E46EC35F0FF :101C6000E552400EE66E000EE66E050EE66EE66A82 -:101C7000010EE66E39EC20F0006E050EE15E0050BC -:101C8000F3CF9AF1F4CF9BF1C4D001019C519D1187 -:101C900002E1000E08D09CC1E9FF9DC1EAFFEF50B0 -:101CA000800B01E0010E000972E10101010EA46F39 -:101CB0000501406B01019F519F2B0501416F0501FB -:101CC000050E426F0501436B0501486B9C0E006ECB -:101CD000650E016E026A00C0E6FF01C0E6FF02C0A9 -:101CE000E6FF480EE66E050EE66E56EC33F0036E28 -:101CF000050EE15E0350C80EE66EE66AF40EE66E6F -:101D0000010EE66EF40EE66E010EE66E000EE66E55 -:101D1000E66AF40EE66E010EE66EF40EE66E010E55 -:101D2000E66E000EE66EE66A000EE66EE66A000EED -:101D3000E66EE66AC0EC22F0006E120EE15E005024 -:101D4000400EE66E400EE66E050EE66E010EE66E85 -:101D5000010EE66E39EC20F0006E050EE15E0050DB -:101D6000F3CF9CF1F4CF9DF1400EE66E000EE66ECF -:101D7000050EE66EE66A010EE66E39EC20F0006EA6 -:101D8000050EE15E0050F3CF9AF1F4CF9BF141D004 -:101D900001019C519D1102E1000E08D09CC1E9FF98 -:101DA0009DC1EAFFEF50800B01E0010E000931E117 -:101DB00000C540F50501416B0501030E426F0501A9 -:101DC000010E436F400EE66E400EE66E050EE66EA7 -:101DD000010EE66E010EE66E39EC20F0006E050E87 -:101DE000E15E0050F3CF9CF1F4CF9DF1400EE66E22 -:101DF000000EE66E050EE66EE66A010EE66E39EC42 -:101E000020F0006E050EE15E0050F3CF9AF1F4CFA2 -:101E10009BF10F0EE15C02E2E16AE552E16EE552F0 -:101E2000E7CFD9FF12000101A651A71104E1100E5E -:101E3000A66F270EA76FA607000EA75B6DA207D09F -:101E4000A651A7112EE18C748CB413D027D00101B8 -:101E5000405102E18C9422D0400502E18C8409D0EB -:101E6000020E405D02E18C8419D0040E405D03E156 -:101E70008C948C861200100E405D06E10101A65183 -:101E8000A7110FE18C740AD0200E405D0AE1010118 -:101E9000A651A71106E18C748CA402D08C96120076 -:101EA0008C8612001200120012001200BFEF31F0F7 -:101EB00012001E0EE66E010EE66E07EC20F0E552F3 -:101EC000E552400EE66E000EE66E050EE66EE66A20 -:101ED000010EE66E39EC20F0006E050EE15E00505A -:101EE000F3CF9AF1F4CF9BF112006D840101080E3B -:101EF000BB6F070EBC6FBB07000EBC5BBB51BC11B8 -:101F0000FAE16D941200D9CFE6FFE1CFD9FFFD0EC3 -:101F1000DBCF31F0FE0EDBCF32F0010E311801E1E4 -:101F2000325033E0E868311802E1E86832182BE0FB -:101F3000030E311801E1325024E0040E311801E1A2 -:101F400032501DE0020E311801E1325016E0170E3A -:101F5000311801E132500FE0160E311801E1325014 -:101F600008E0150E311801E1325001E010D0A1DF78 -:101F70000FD09EDF0DD09ADF0BD096DF09D092DF15 -:101F800007D091DF05D091DF03D0000001D000D051 -:101F9000010E00D0E552E7CFD9FF12004BD8E65230 -:101FA000D0B202D0010E15D0D0B802D0020E11D09E -:101FB000D0B002D0030E0DD0D0B602D0040E09D09E -:101FC000FCAE02D0050E05D0FCAC02D0060E01D04E -:101FD000070EDF6ED088D086D084D082D080FC9E61 -:101FE000FC9CDF50E552E552E7CFD9FF1200E652E4 -:101FF00021D8020EE126F350DF6E010EF4CFDBFF95 -:102000001200C00EE66EE00EE66E20EC34F0E552F3 -:10201000E5521200DF50F36E010EDB50F46E020E3B -:10202000E15C1200DFCFE6FFE66A72EC33F0E552C6 -:0E203000E5521200D9CFE6FFE1CFD9FF120032 -:02203E00FEECB6 -:1020400018F0FE0EDB5006E1F80E96163C0E9416C4 -:10205000959808D0FE0EDB0405E1070E9612C30E1C -:102060009412958803EF19F0D9CFE6FFE1CFD9FF9D -:10207000E652010EE66EE3DFE552809AFE0EDB507B -:1020800004E0FE0EDB5002080FE1839C8188000013 -:10209000839E0000000000008450010BDF6E838EE1 -:1020A00000000000DF04F4E0FE0EDB0404E0FE0E9E -:1020B000DB5002080FE1838C81980000839E0000B2 -:1020C000000000008450010BDF6E838E00000000D2 -:1020D000DF04F4E0E552E552E7CFD9FF1200D9CF93 -:1020E000E6FFE1CFD9FFE652FD0EDB50DF6EFE0EBC -:1020F000DBCFE6FFB9DFE552E66AA1DFE552FE0E6F -:10210000DB5003E1839C81880CD0FE0EDB0403E1ED -:10211000838C819806D0FE0EDB50020802E1839C7E -:102120008198809A00008098D9CFE9FFDACFEAFF42 -:10213000EF50010B02E0848001D08490D9CFE9FFF9 -:10214000DACFEAFFEF50020B02E0848201D08492E2 -:10215000D9CFE9FFDACFEAFFEF50040B02E0848425 -:1021600001D08494D9CFE9FFDACFEAFFEF50080B12 -:1021700002E0838801D08398D9CFE9FFDACFEAFF64 -:10218000EF50100B02E0828201D08292D9CFE9FF9A -:10219000DACFEAFFEF50200B02E0828E01D0829E60 -:1021A000D9CFE9FFDACFEAFFEF50400B02E082809F -:1021B00001D08290D9CFE9FFDACFEAFFEF50800B50 -:1021C00002E0828C01D0829C000000008088000028 -:1021D0000000E552E552E7CFD9FF1200D9CFE6FF64 -:1021E000E1CFD9FF020EE126FC0EDBCFDEFFDBCF15 -:1021F000DDFFFE0EDBCFE6FF37DFE552E66A1FDFCD -:10220000E552FE0EDB5003E1839C81880CD0FE0E6C -:10221000DB0403E1838C819806D0FE0EDB500208BC -:1022200002E1839C8198808A00008098D9CFE9FFE1 -:10223000DACFEAFFEE52EF50010B02E0848001D0CA -:102240008490D9CFE9FFDACFEAFFEE52EF50020BCC -:1022500002E0848201D08492D9CFE9FFDACFEAFF8D -:10226000EE52EF50040B02E0848401D08494D9CF65 -:10227000E9FFDACFEAFFEE52EF50080B02E0838865 -:1022800001D08398D9CFE9FFDACFEAFFEE52EF50C1 -:10229000100B02E0828201D08292D9CFE9FFDACF1F -:1022A000EAFFEE52EF50200B02E0828E01D0829EB8 -:1022B000D9CFE9FFDACFEAFFEE52EF50400B02E050 -:1022C000828001D08290D9CFE9FFDACFEAFFEE52C7 -:1022D000EF50800B02E0828C01D0829C0000000055 -:1022E0008088000000008098D9CFE9FFDACFEAFFAC -:1022F000EF50010B02E0848001D08490D9CFE9FF38 -:10230000DACFEAFFEF50020B02E0848201D0849220 -:10231000D9CFE9FFDACFEAFFEF50040B02E0848463 -:1023200001D08494D9CFE9FFDACFEAFFEF50080B50 -:1023300002E0838801D08398D9CFE9FFDACFEAFFA2 -:10234000EF50100B02E0828201D08292D9CFE9FFD8 -:10235000DACFEAFFEF50200B02E0828E01D0829E9E -:10236000D9CFE9FFDACFEAFFEF50400B02E08280DD -:1023700001D08290D9CFE9FFDACFEAFFEF50800B8E -:1023800002E0828C01D0829C000000008088000066 -:102390000000020EE15C02E2E16AE552E16EE55204 -:1023A000E7CFD9FF1200D9CFE6FFE1CFD9FF020E68 -:1023B000E126FE0EDBCFE6FF57DEE552010EE66EAC -:1023C0003EDEE552FE0EDB5003E1839C818805D0A2 -:1023D000FE0EDB0402E1838C8198808A0000839EDC -:1023E0000000000000008450010B066E8450020BB8 -:1023F00001E0010EE824056E8450040B01E0010E9B -:10240000040DF3CF04F08350100B01E0010E080D12 -:10241000F3CF03F08250020B01E0010E100DF3CF59 -:1024200002F08250800B01E0010E200DF3CF01F08D -:102430008250010B400DF3CF00F08250400B01E0C1 -:10244000010E800DF3500010011002100310041053 -:1024500005100610E76E010EE7CFDBFF838E00004C -:102460000000839E0000000000008450010B066EF7 -:102470008450020B01E0010EE824056E8450040B29 -:1024800001E0010E040DF3CF04F08350100B01E0C6 -:10249000010E080DF3CF03F08250020B01E0010E94 -:1024A000100DF3CF02F08250800B01E0010E200DE1 -:1024B000F3CF01F08250010B400DF3CF00F08250BA -:1024C000400B01E0010E800DF350001001100210CE -:1024D0000310041005100610DF6E838EDECF00F0AF -:1024E000DDCF01F000C0F3FF01C0F4FF00D0020E09 -:1024F000E15C02E2E16AE552E16EE552E7CFD9FF25 -:102500001200D9CFE6FFE1CFD9FFE652DF6AFE0E17 -:10251000DBCFE6FFA9DDE552010EE66E90DDE55268 -:10252000FE0EDB5003E1839C818805D0FE0EDB04A8 -:1025300002E1838C8198809A0000839E0000000055 -:1025400000008450010B066E8450020B01E0010E66 -:10255000E824056E8450040B01E0010E040DF3CF56 -:1025600004F08350100B01E0010E080DF3CF03F0CF -:102570008250020B01E0010E100DF3CF02F08250E9 -:10258000800B01E0010E200DF3CF01F08250010B12 -:10259000400DF3CF00F08250400B01E0010E800DA2 -:1025A000F350001001100210031004100510061063 -:1025B000DF6E838EDF5000D0E552E552E7CFD9FFC2 -:1025C0001200FEEC18F0E652DF6A5AEC19F0DF6EEA -:1025D000FD0EDB50DF14DF6EDF5002E0010E01D094 -:1025E000000EE55203EF19F0FEEC18F01D0EC9ECD9 -:1025F00018F0000EF9EC1AF003EF19F0FEEC18F0E9 -:102600005AEC19F084080FE05AEC19F0C4080BE0FA -:10261000E66ACEEC1AF0C4EC1AF0020EE66E6FEC2D -:1026200034F0E552EDD71C0EC9EC18F00A0EF9ECA7 -:102630001AF0DAEC19F05AEC19F0800804E05AECC0 -:1026400019F0C008E5E15AEC19F0C00802E1DAEC33 -:1026500019F01E0EC9EC18F00F0EF9EC1AF0B3ECDD -:102660001BF0FA0EDBCFE6FFFB0E64EC1AF0F80E5F -:10267000DBCFE6FFF90E64EC1AF0F60EDBCFE6FFD7 -:10268000F70E64EC1AF0040EC9EC18F003EF19F021 -:10269000FEEC18F0080EE126010EFBEC18F0010E1E -:1026A000E7CFDBFF020E22EC1BF0DF6E030EFBEC2C -:1026B00018F0030EE7CFDBFF040EFBEC18F0020E60 -:1026C000E7CFDBFF050EFBEC18F0050EE7CFDBFFD5 -:1026D000060EFBEC18F0040EE7CFDBFF070EFBEC59 -:1026E00018F0070EE7CFDBFF080EFBEC18F031EC1B -:1026F00019F0E66ADFEC19F0090EFBEC18F0010E98 -:10270000E7CFDBFF0A0E22EC1BF0DF6E0B0EFBECBB -:1027100018F0030EE7CFDBFF0C0EFBEC18F0020EF7 -:10272000E7CFDBFF0D0EFBEC18F0050EE7CFDBFF6C -:102730000E0EFBEC18F0040EE7CFDBFF0F0EFBECE8 -:1027400018F0070EE7CFDBFF100EFBEC18F031ECB2 -:1027500019F0010EE66EDFEC19F0020EE66ED7EC12 -:1027600019F0020EE66EE66ACAEC19F007E1020EF5 -:10277000E66E010EE66ECAEC19F002E0000E01D022 -:10278000010E006E080EE15C02E2E16AE552E16EC4 -:10279000005003EF19F0FEEC18F00C0EE12663EC8C -:1027A00019F0D950F20FFDEC1AF0080EEECFDBFF56 -:1027B000090EEECFDBFF0A0EEECFDBFF0B0EEECFE6 -:1027C000DBFF1F0EC9EC18F0080EDBCF00F0090E7E -:1027D000DBCF01F00A0EDBCF02F00B0E0DEC1BF08D -:1027E0000CE02B0EF9EC1AF00A0EDBCFE6FF0B0E15 -:1027F00064EC1AF087EC19F003D00B0EE66EE66A73 -:10280000A1EC18F07BEC1BF0D0EC19F002E0000E0C -:1028100001D0010E000E000907E00FEC19F08DEC5D -:102820001BF0CEEC1AF03DD0D0EC19F003E0FE0E18 -:10283000DB0427E1FA0EDBCF00F0FB0EDBCF01F06B -:10284000FC0EDBCF02F0FD0EDBCF03F0000E006CC0 -:10285000011E0122021E0222031E032200C0DFFF0E -:10286000010E01C0DBFF020E02C0DBFF030E03C03E -:10287000DBFF86EC1BF0AFEC19F0C9EC1AF0AFEC03 -:1028800019F0D0EC19F003E0FE0EDB500CE10FEC78 -:1028900019F086EC1BF0E66A96EC1AF0C9EC1AF017 -:1028A000E66A96EC1AF00C0EE15C02E2E16AE5528F -:1028B000E16E03EF19F0FEEC18F00A0EE1260FECC2 -:1028C00019F063EC19F0080EF36EDB6E090EF3CF0E -:1028D000DBFF1F0EC9EC18F073EC19F007E0D950BC -:1028E000080FE96EDACFEAFFEE8AED52D0EC19F06C -:1028F00002E0000E01D0010E000E00090AE0F50E04 -:10290000DB0402E1B3EC19F087EC19F0CEEC1AF01D -:102910001ED0D0EC19F003E0FE0EDB040AE1F50E48 -:10292000DB50FF0802E1B3EC19F087EC19F0AFECD3 -:1029300019F0D0EC19F003E0FE0EDB500AE1F50EC1 -:10294000DB0402E1B3EC19F087EC19F0E66A96ECCF -:102950001AF073EC19F002E07BEC1BF08DEC1BF02D -:10296000F0DB0A0EE15C02E2E16AE552E16E03EFA0 -:1029700019F0FEEC18F0F90EDBCFE6FFE66AE66A26 -:10298000E66AE66AD950FA0FFDEC1AF094EC1BF0F7 -:10299000CEEC1AF090DF006E0A0EE15E005003EFFD -:1029A00019F0FEEC18F0FE0EDB5003E0D0EC19F04D -:1029B0000FE1B9EC1BF009EC1BF0F3CFB4F1F4CF4D -:1029C000B5F1E66A09EC1BF0F3CFB2F1F4CFB3F145 -:1029D000FE0EDB0403E0D0EC19F010E102EC1BF07A -:1029E00009EC1BF0F3CFB8F1F4CFB9F1010EE66EAC -:1029F00009EC1BF0F3CFB6F1F4CFB7F1010EC9DB50 -:102A000003EF19F0FEEC18F01F0EC3DBB3EC1BF064 -:102A1000010EBFDBF8D327EC1BF0D0EC19F005E179 -:102A20002F6A306A316A326A12D00B0EB2DBCEECFA -:102A30001AF07FEC19F0DE6ADD6ADECF2FF0DECF10 -:102A400030F0DECF31F0DDCF32F0DD52DD52040E5A -:102A5000E15C02E2E16AE552E16ED5D3D2EC1AF014 -:102A6000D4EC19F052EC19F0CED3D2EC1AF0E8DB2A -:102A7000020E52EC19F0C7D3BFEC1BF0E1DBE66AA3 -:102A80008EEC19F0EDEC19F034EC1BF0AEEF1AF00F -:102A9000BFEC1BF034EC1BF0E66A8EEC19F0EDECA9 -:102AA00019F0CEDBAEEF1AF0A9DB3C0EE1265EECAE -:102AB0001AF04AEC1BF05EEC1AF09DEC1BF041ECB6 -:102AC0001BF008C030F009C031F00AC032F00BC072 -:102AD00033F05BEC26F069EC1BF0A9EC1AF053EC38 -:102AE0001BF072EC1BF0A9EC1AF09BEC19F041EC16 -:102AF0001BF014C030F015C031F016C032F017C012 -:102B000033F05BEC26F07CEC1AF060EC1BF072EC1E -:102B100025F038EC1BF0356A366A800E376E2BECE8 -:102B20001BF0380E30C0DBFF390E31C0DBFF3A0E30 -:102B300032C0DBFF3B0E33C0DBFF5EEC1AF038EC3B -:102B40001BF0BDDBA9EC1AF035DBB9DBEEEC2EF0A7 -:102B5000086E080EE15E0850080E2FC0DBFF090E5C -:102B600030C0DBFF0A0E31C0DBFF0B0E32C0DBFFD3 -:102B7000DCDBF60EDB5007E0D950F40FFDEC1AF069 -:102B8000EE50ED103AE143DB080EDBCF0EF0090EFC -:102B9000DBCF0FF00A0EDBCF10F00B0E60DA41DA5C -:102BA0009CEC1AF0306A316A800E326E400E336E41 -:102BB000380EDBCF35F0390EDBCF36F03A0EDBCFF7 -:102BC00037F03B0EAFEC1BF0D7EC1AF078DBBDEC26 -:102BD0001AF02FC002F030C003F031C004F032C050 -:102BE00005F02FC030F014EC1BF0B7EC1AF036DF14 -:102BF0000A6E060EE15E0A50D3D1380EDBCF04F028 -:102C0000390EDBCF05F03A0EDBCF06F03B0EDBCF03 -:102C100007F00C6A0D6A0E6A400E0F6E95DA5BECD7 -:102C200026F02AEC1AF0F40EDBCF31F0F50E83DB40 -:102C3000A2DB79EC1AF072EC25F0140E30C0DBFF49 -:102C4000150E31C0DBFF160E32C0DBFF170E36DA71 -:102C50005EEC1AF079EC1AF05BEC26F0180E30C03E -:102C6000DBFF190E31C0DBFF1A0E32C0DBFF1B0E7B -:102C700025DAA9EC1AF053EC1BF079EC1AF05BECB6 -:102C800026F01C0E30C0DBFF1D0E31C0DBFF1E0E18 -:102C900032C0DBFF1F0E33C0DBFF1C0EDBCF00F0AA -:102CA0001D0EDBCF01F01E0EDBCF02F01F0EDBCFBF -:102CB00003F08CDB70EC1AF05BEC26F0200E30C0D9 -:102CC000DBFF210E31C0DBFF220E32C0DBFF230E03 -:102CD00033C0DBFFD950180FE96EDACFEAFF240EBC -:102CE000EECFDBFF250EEECFDBFF260EEECFDBFFB8 -:102CF000270EEECFDBFFFD0EDBCF31F0FE0ED8EC62 -:102D00001BF0200EDBCF35F0210EDBCF36F0220E8C -:102D1000DBCF37F0230EF3DB280E30C0DBFF290EAC -:102D200031C0DBFF2A0E32C0DBFF2B0E33C0DBFFCE -:102D3000A9EC1AF0D8EC1BF0240EDBCF35F0250EF1 -:102D4000DBCF36F0260EDBCF37F0270ED8DB2C0E8C -:102D500030C0DBFF2D0E31C0DBFF2E0E32C0DBFF9B -:102D60002F0E33C0DBFF2C0EDBCF04F02D0EDBCF9C -:102D700005F02E0EDBCF06F02F0EDBCF07F026DBA3 -:102D800060EC1BF05BEC26F07DDA300E30C0DBFF30 -:102D9000310E31C0DBFF320E32C0DBFF330E33C0E9 -:102DA000DBFF280EDBCF30F0290EDBCF31F02A0E0F -:102DB000DBCF32F02B0EDBCF33F064DA340E30C0D1 -:102DC000DBFF350E31C0DBFF360E32C0DBFF370EC6 -:102DD00033C0DBFFD950300F6CDBD950340F69DBC7 -:102DE000EEEC2EF0006E080EE15E00500C0E2FC0CF -:102DF000DBFF0D0E30C0DBFF0E0E31C0DBFF0F0E10 -:102E000032C0DBFF006A016A026A400E036E00C036 -:102E1000E6FF01C0E6FF02C0E6FFE66E3BDB4AECE0 -:102E20001BF04DDAC3EC1BF02FC014F030C015F0CE -:102E300031C016F032C017F034EC1BF0EEEC2EF07F -:102E4000186E080EE15E1850E552E7CF03F0E55228 -:102E5000E7CF02F0E552E7CF01F0E552E7CF00F00F -:102E60002FC004F030C005F031C006F032C007F0CA -:102E7000A7DB36DB5BEC26F0100E30C0DBFF110E5B -:102E800031C0DBFF120E32C0DBFF130E33C0DBFF9D -:102E9000F60EDB5002081BE137DB71EC25F099DB05 -:102EA00072EC25F07AD951DA060E31C0DBFF070E3D -:102EB00032C0DBFFD4DB7ED9020EDBCF31F0030E54 -:102EC000DDEC1BF0040E31C0DBFF050E4ED0306A86 -:102ED000316A326A400E336E080EDBCF35F0090ED0 -:102EE000DBCF36F00A0EDBCF37F00B0EAFEC1BF06A -:102EF000BFDB0C0EDBCF04F00D0EDBCF05F00E0EAA -:102F0000DBCF06F00F0EDBCF07F004C035F005C0B5 -:102F100036F006C037F007C038F071EC25F00C0E23 -:102F200030C0DBFF0D0E31C0DBFF0E0E32C0DBFF09 -:102F30000F0E33C0DBFFE8DA72EC25F04ADB71ECF0 -:102F400025F02BD902DA040E31C0DBFF050E32C0AA -:102F5000DBFF020EDBCF31F0030E2CD980DBDDEC82 -:102F60001BF0060E31C0DBFF070E32C0DBFF59D865 -:102F70000AD9040EDBCF31F0050E54DA75DB6FDBB6 -:102F8000D1DAE66A58DBFFD8060EDBCF31F0070E48 -:102F900049DA0ADADBCF31F0030EC4DA010E82D946 -:102FA0003C0EE15C02E2E16AE552E16E2CD14FDBBE -:102FB000E0DBA5D9E66AE4D90101B251EE5C066E08 -:102FC000B351EE58076EB451EE58086EB551F5D8AE -:102FD00002E2E16AE552E16E16D139DB13DB8FD9EB -:102FE000010EE66ECDD90101B651EE5C066EB75109 -:102FF000EE58076EB851EE58086EB951DED802E2AD -:10300000E16AE552E16EFFD0040EE66EE66AC2D9CF -:1030100006E0040EE66E010EE66EBCD901E1000C7E -:10302000010CF2DF0009FDE01200B9DB1ADA91DAD7 -:10303000F9D91ADB5EEF1AF030C01CF031C01DF078 -:1030400032C01EF033C01FF032DBAEDB2FC018F0F1 -:1030500030C019F031C01AF032C01BF01200DBCFC3 -:1030600011F0356A366A340E376E430E386E0EC074 -:1030700030F00FC031F010C032F011C033F05BEC13 -:1030800026F030C00AF031C00BF032C00CF033C073 -:103090000DF0DB0E356E0F0E366E490E376EDBDA35 -:1030A00086DAEFDA02C030F0BFDA71EC25F05FDAD1 -:1030B000E3DC126E060EE15E1250120033C0DBFF3D -:1030C000046A056A800E066E3F0E076E0C6A0D6A72 -:1030D0000E6A400E0F6E04C0E6FF05C0E6FF06C094 -:1030E000E6FF07C0E6FF0CC0E6FF0DC0E6FF0EC01E -:1030F000E6FFE66E48DBE552E7CF0FF0E552E7CF9B -:103100000EF0E552E7CF0DF0E552E7CF0CF0E552B7 -:10311000E7CF07F0E552E7CF06F0E552E7CF05F03D -:10312000E552E7CF04F02FC010F030C011F031C0ED -:1031300012F032C013F044DA53DA5BEC26F02AEFD7 -:103140001AF02CDA96EF1AF0F40EDBCF31F0F50E10 -:10315000AADAD2D9F0EF1AF094DA70EF1AF0140E5E -:10316000DBCF00F0150EDBCF01F0160EDBCF02F047 -:10317000170EDBCF03F0356A366ADC0E376E420E6F -:10318000386E70EF1AF0F70EDBCF31F0F80E31EF3A -:103190001AF0E66E03DAC4EF1AF0100EDBCF35F04A -:1031A000110EDBCF36F0120EDBCF37F0130ED7DA6D -:1031B000FCEF26F078DA69EF1BF0EE58096E06C0D6 -:1031C0002FF007C030F008C031F0326E58EC25F017 -:1031D00030C002F031C003F032C004F033C005F05B -:1031E00066DA08EC26F0D4DA31C0F3FF32C0F4FF1F -:1031F000040EE15C120026DAE76E1200D9CFE6FF7A -:10320000E1CFD9FF1200E552E7CFD9FF120094D9E0 -:10321000026A036AB40E046E420E056E1200D9CF24 -:10322000E9FFDACFEAFFFA0EDBCFEEFFFB0EDBCFD2 -:10323000EEFFFC0EDBCFEEFFFD0EDBCFEEFF12004C -:10324000000E186C191E19221A1E1A221B1E1B2290 -:1032500018C0E6FF19C0E6FF1AC0E6FF1BC0E6FF74 -:103260001200060EE7CFDBFFDBCFE6FF070EDBCF5A -:10327000E6FF040EDBCFE6FF050EDBCFE6FF46DA06 -:10328000C9EF1AF0140EDBCF35F0150EDBCF36F098 -:10329000160EDBCF37F0170EDBCF38F008EC26F038 -:1032A00038EF1BF0E66EC7D9020EE66ED1EC14F0D3 -:1032B000E552120073D981EC12F0E552120081DA66 -:1032C00033C0E6FF1200D950F60F97D9040EEECFA7 -:1032D000DBFF050EEECFDBFF060EEECFDBFF070EAA -:1032E000EECFDBFF1200040EDBCF00F0050EDBCFCC -:1032F00001F0060EDBCF02F0070E0DEF1BF089D9AF -:10330000020EF3CFDBFF030EF4CFDBFF1200080E3B -:10331000DBCFE6FF090EDBCFE6FF1200CBEC13F0AC -:10332000286E0D0EE15E28501200020EE66EF4ECDF -:1033300012F0E5521200B7D930C018F031C019F0C0 -:1033400032C01AF033C01BF01200020E31C0DBFF96 -:10335000030E32C0DBFF23DADBCF32F01200010EA6 -:10336000E66E96EF1AF0D950080FE96EDACFEAFF51 -:10337000EE52ED881200356A366A376A2BEF1BF081 -:1033800048D9F3CFDEFFF4CFDDFFD9CFE9FFDACFA5 -:10339000EAFF1200E1EC12F0E552E55200091200DA -:1033A000FE0EDB50020812005FD9020E1200E66E1C -:1033B000C4EF1AF0F3D8F4EC12F0E5521200FEEC70 -:1033C00012F0006E090EE15E00501200356A366A96 -:1033D000800E376EBF0E386E120027DE30C024F02C -:1033E00031C025F032C026F033C027F0350E356EDF -:1033F000FA0E366E0E0E376E3C0E386E5BEC26F013 -:1034000030C020F031C021F032C022F033C023F0B0 -:10341000356A366A5C0E376E430E386E5BEC26F00A -:103420001CEF18F040D95ED942D95BEC26F08ED95A -:10343000BD0E356E370E366E860E376E410E386E07 -:10344000B3D92FC00CF030C00DF031C00EF032C037 -:103450000FF012001FD915D933D908EC26F038EF38 -:103460001BF021D917D923D95BEC26F032D9CC0E29 -:10347000356EBC0E366E8C0E376E3B0E386E94D9A0 -:103480002FC000F030C001F031C002F032C003F0B4 -:1034900034EF1BF0140EDBCF0CF0150EDBCF0DF06C -:1034A000160EDBCF0EF0170EDBCF0FF04DDE71EFF7 -:1034B00025F0E96EDACFEAFF94EF1BF0FD0EDBCFCB -:1034C00031F0FE0E53EF1BF0DBCFE6FFA1EF18F05B -:1034D00066D9E9D832D940DE5BEC26F0FCEF26F065 -:1034E00000C030F001C031F002C032F003C033F050 -:1034F0001200F8D8ACEF18F029D941EF1BF02FD902 -:10350000C9D82ADE71EF25F082DE0C0EDBCF0EF07B -:103510000D0EDBCF0FF00E0EDBCF10F00F0E9FDD88 -:10352000AFEF18F0C0D888DD34EF1BF0EEEC10F0F0 -:10353000E552E552E5521200F70EDBCFE6FFF80E3A -:10354000DBCFE6FFF90EDBCFE6FFFA0EDBCFE6FFBF -:103550001200FB0EDBCF31F0FC0E1200010EE66E06 -:10356000DDDE020EE66ED1EC14F0E5524CD610D939 -:1035700031C0E6FF32C0E6FF120001EC2BF0E5524D -:10358000E552E552E55212006FEC10F0E552E552BB -:103590001200DECFE6FFDDCFE6FF1200FE0EDBCF2E -:1035A000E6FF12002BDEC1DE40DD1CEF18F030C05C -:1035B00006F031C007F032C008F033C009F0120045 -:1035C0002FC035F030C036F031C037F032C038F09F -:1035D0001200E3DD31C0DEFF32C0DDFFAFEF18F0D7 -:1035E0000CC030F00DC031F00EC032F00FC033F01F -:1035F0001200E66EE66AA1EF18F0E96EFF0EDA201F -:10360000EA6E12000A0EE66E010ED1DE010EE66EC3 -:103610001200D3EC11F0E5521200DBCF03F00050A2 -:10362000011002100310120003C031F004C032F088 -:1036300005C033F01200CBEC13F0206E0D0EE15EEE -:1036400020501200E66E92EC33F0E5521200D6DD07 -:10365000040EE1261200400E386E08EF26F0000E30 -:10366000DFCF31F0010E12002FC0E6FFE1EF1BF0BB -:1036700030C000F031C001F032C002F033C003F0BE -:10368000120030C035F031C036F032C037F033C0F0 -:1036900038F0120030C008F031C009F032C00AF032 -:1036A00033C00BF01200DBCF32F043EF25F0A60E53 -:1036B000356E280E366E940E376E3F0E386E120041 -:1036C00004C030F005C031F006C032F007C033F05E -:1036D000120030C004F031C005F032C006F033C033 -:1036E00007F0120030C014F031C015F032C016F0EF -:1036F00033C017F01200060EDBCFE6FF070EE4DE44 -:10370000040EDBCFE6FF050E64EF1AF0020EDBCFEE -:10371000E6FF030EDBCFE6FF1200020EDBCFE6FF73 -:10372000030ED2DEC9EF1AF0EECFE6FFEECFE6FFD2 -:10373000EECFE6FFEFCFE6FF120030C00CF031C055 -:103740000DF032C00EF033C00FF0120030C010F098 -:1037500031C011F032C012F033C013F01200DBCFD1 -:1037600038F05BEF26F0FC0EDBCFE6FFFD0E64EFDA -:103770001AF00A0EE66EE66A07DFE66A12003EDD20 -:10378000D4DDEDEF19F0D950380F93DEBDEF1AF00C -:10379000FCEC26F031C000F032C001F01200F90E4E -:1037A000DBCF31F0FA0E12005BEC26F02BEF27F0A6 -:1037B00001DDE1DD5DDF4AEF1AF075DF4BDE68EF1A -:1037C0001AF030C0E6FF31C0E6FF32C0E6FF12005B -:1037D000E0EC20F06A6A686A13EC21F06D8C6E6A86 -:1037E000C3EC20F06D9CDF6AF4EC20F010E2DF50B7 -:1037F000040DF3CFE9FFF4CFEAFF000EE926040E33 -:10380000EA22EE6AEE6AEE6AEE6ADF2AEDD7160E5B -:10381000706E68A604D0030E89EC20F0FAD701017F -:10382000536B586B596B5A6B6D98080E4B6F040EA7 -:103830004C6F416B406BE5529EEF20F0E0EC20F0C6 -:10384000010140510BE16D6A696A13EC21F06DB61C -:1038500002D06D86FCD70101010E406F400508E1E2 -:103860006DBA06D0686A696A69806988020E406F1D -:103870006850040B07E06950040B04E0020E89EC69 -:1038800020F089D86DB247D06850010B14E0695020 -:10389000010B11E09DDF0101040E406F0401200EB9 -:1038A000026F040E036F080E016F006B8C0E001385 -:1038B000E66A52EC21F06850100B07E06950100BDB -:1038C00004E060D8040E89EC20F06850400B0BE057 -:1038D0006950400B08E01AEC21F0020E91EC20F048 -:1038E000060E89EC20F06850200B04E06950200B94 -:1038F00001E035D86850020B0AE06950020B07E07E -:103900001AEC21F0E668E66872EC21F06A6A040EAF -:103910000101405D02E2A19A1FD069A61CD0DF6AB6 -:10392000040EDF5C18E268A616D06CCF60F1030EBF -:1039300089EC20F0780E0101601502E138D809D039 -:10394000000EE66EE66A600EE66E010EE66E010E91 -:10395000E8DBDF2AE5D7A19AE5529EEF20F070A0C0 -:103960000ED0ACEC20F0EF50800808E1D5DBEF5032 -:10397000840804E1ACEC20F08C0EEF6E7090050E24 -:1039800089EF20F06984040EC4DB6D82CCEC20F05A -:10399000040E91EF20F0CCEC20F0030EC2DB6D9210 -:1039A000699468A403D0020EB4DBFBD71200E0ECEC -:1039B00020F0FD0E010160153DE17E0E6015E8402E -:1039C0007F0B040DF3CF43F1F4CF44F1000E4327F6 -:1039D000040E442343C145F144C146F14575BCDBA7 -:1039E000EF503C0BE842E8420D0822E1B5DB49EC20 -:1039F00021F0EECF00F0EFCF01F0280E001816E115 -:103A0000040E011813E183EC21F0DF6AEDDB0EE216 -:103A1000DF50FCEC20F0DF50EA6A200FE96E040E64 -:103A2000EA22E552E750EF6EDF2AF0D70AD807D036 -:103A30001AD805D0FD0E6015040801E122D8E55220 -:103A40007DD36ADBEF50800B02E066DBEF6A010199 -:103A50004F6B506B546B556B536B64D89DDB170EDB -:103A600060DBC7EF1EF0020E0101505D02E154EF72 -:103A70001FF034D80101615102E14EEF21F0616B7A -:103A800012009EDB49DBEF50400B01E0010EDF6EC0 -:103A900001014B75080E405D09E122C46EFF6E50B6 -:103AA000000802E2100E01D0040E406F500513E131 -:103AB00087EC21F0A6D9020E01014F5D03E12CDB5A -:103AC000840E07D0DF5003E127DBC80E02D024DBD1 -:103AD000880EEF6E01D002D8E55230D32BDB010106 -:103AE000506B1ADBEF6A040E4B19006E4CC101F0EB -:103AF000DE6E4CC1DDFF19DBEF6A58AF0CD05B51B5 -:103B00005C1107E005D05CC1FAFF01015B51F96E61 -:103B1000FADF0101589F020EE15C02E2E16AE55220 -:103B2000E16E0CD304012051600BE842E842E84208 -:103B3000E842E842000901E0120021510C0A45E088 -:103B40000B0A3FE00C0A31E0010A22E00B0A1EE0FA -:103B5000020A1CE0030A18E0080A10E0010A0CE05F -:103B60000F0A08E0030A01E012000101538F080E5A -:103B7000406F120047EF1EF0B0EF1FF00101410E41 -:103B8000516F010E526F0CD088EF1EF0E6EF1DF062 -:103B900024510101516F526B420E5127010E5223E5 -:103BA0005381010E546F538F12000101538F040192 -:103BB0002451EA6A420FE96E010EEA2222C4EFFFA5 -:103BC0001200EADA160E91EF20F012007EDB040EEE -:103BD000E1260401220510E120511F0B00090CE130 -:103BE0000101538F030E0401215D04E10101010E67 -:103BF0005F6F02D001015F6B0401225141E120514E -:103C00001F0B02083DE124510F0B000939E00101AF -:103C1000538F040124BF05D0A4DA470EE926010E14 -:103C200004D09FDA4B0EE926010ED2DA030E215D95 -:103C300003E17BDA840E23D024510F0B016A700F4D -:103C4000006E0F0E0122020E00C0DBFF030E01C04A -:103C5000DBFF020EDBCFE9FF030EDBCFEAFFEE90C6 -:103C6000ED5224AF06D061DAEF6ADF745EDA400EFF -:103C700006D05BDA880EEF6EDF7457DAC80EEF6E8F -:103C8000040EE15C02E2E16AE552E16E57D2800E79 -:103C90000401205D3CE10101C00E536F040123517A -:103CA000030A1EE0010A09E0030A2FE101014C0E9C -:103CB000516F640E526F120E22D0C3DAF60EF62642 -:103CC000640EA2DA020... [truncated message content] |
From: Jérémie D. <Ba...@us...> - 2010-02-25 00:14:44
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 59f35c0d7c2f0bd92c9ac23fc6d0c6d347833723 (commit) via 81a5f63a2c90f5b3fa53cbc452e6764619d920fa (commit) from dd313e5ea3e145e3516b4765ab9028d78f8d0dc7 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 59f35c0d7c2f0bd92c9ac23fc6d0c6d347833723 Author: Jérémie Dimino <je...@di...> Date: Thu Feb 25 01:14:17 2010 +0100 [controller] use bars for range finders commit 81a5f63a2c90f5b3fa53cbc452e6764619d920fa Author: Jérémie Dimino <je...@di...> Date: Thu Feb 25 01:13:45 2010 +0100 [generators] fix names of DBus interfaces ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/clients/controller.ml b/PC_Mainboard/clients/controller.ml index a253a34..3f01691 100644 --- a/PC_Mainboard/clients/controller.ml +++ b/PC_Mainboard/clients/controller.ml @@ -209,7 +209,7 @@ let rec draw krobot = let range_finders = React.S.value (Krobot.range_finders krobot) in for i = 0 to Array.length range_finders - 1 do - Draw.textf zone 0 i "%d : %d" i range_finders.(i) + Draw.textc zone 0 i [textf "%d : " i; text (Text.repeat (range_finders.(i) * 14 / 3146) "=")] done; let logic_sensors = React.S.value (Krobot.logic_sensors krobot) in diff --git a/PC_Mainboard/generators/gen_dbus_exports.ml b/PC_Mainboard/generators/gen_dbus_exports.ml index f761e04..b230cc7 100644 --- a/PC_Mainboard/generators/gen_dbus_exports.ml +++ b/PC_Mainboard/generators/gen_dbus_exports.ml @@ -73,7 +73,7 @@ let rec print path indent = function printf "%smodule %s(M : Object.S)(Get : sig val get : M.t -> Krobot_card.t end) = struct\n" indent (Name.uid name); printf "%s include M.MakeInterface(struct let name = \"fr.krobot.Device.%s.Unsafe\" end)\n" - indent (Name.uid name); + indent (Name.caml_case name); List.iter (print (path ^ Name.uid name ^ ".") (indent ^ " ")) items; printf "%send\n" indent hooks/post-receive -- krobot |
From: Jérémie D. <Ba...@us...> - 2010-02-24 23:59:28
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via dd313e5ea3e145e3516b4765ab9028d78f8d0dc7 (commit) from 085efdbed4f0703aa3d6a2e3be36ed0cc993c32d (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit dd313e5ea3e145e3516b4765ab9028d78f8d0dc7 Author: Jérémie Dimino <je...@di...> Date: Thu Feb 25 00:58:41 2010 +0100 [controller] fix completion on paths ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/clients/script.ml b/PC_Mainboard/clients/script.ml index 614e73c..166ce54 100644 --- a/PC_Mainboard/clients/script.ml +++ b/PC_Mainboard/clients/script.ml @@ -44,15 +44,20 @@ let args_of_command name = let rec after_prefix prefix path = match prefix, path with - | [], p -> Some p - | e1 :: p1, e2 :: p2 when e1 = e2 -> after_prefix p1 p2 - | _ -> None + | [], path -> + Some path + | e1 :: p1, e2 :: p2 when e1 = e2 -> + after_prefix p1 p2 + | [e1], e2 :: p2 when Text.starts_with e2 e1 -> + Some path + | _ -> + None let complete ~before ~after = try match Script_lexer.partial_command (Lexing.from_string before) with | `Command(before, name) -> begin - let full_path, path, name = + let full_path, path, basename = match Text.rev_split ~sep:"." ~max:2 name with | [] -> ("", [], "") @@ -75,12 +80,15 @@ let complete ~before ~after = (TextSet.add name paths, names)) (TextSet.empty, TextSet.empty) !commands) in - let prefix, words = Lwt_read_line.lookup name names in + let prefix, words = Lwt_read_line.lookup basename (TextSet.union paths names) in match TextSet.cardinal words with | 0 -> - Lwt_read_line.complete ~suffix:"." (before ^ full_path) name after paths + { Lwt_read_line.comp_state = (before ^ name, after); + Lwt_read_line.comp_words = words } | 1 -> - { Lwt_read_line.comp_state = (before ^ full_path ^ prefix ^ " ", after); + { Lwt_read_line.comp_state = (before ^ full_path ^ prefix ^ + (if TextSet.mem (TextSet.choose words) paths then "." else " "), + after); Lwt_read_line.comp_words = words } | _ -> { Lwt_read_line.comp_state = (before ^ full_path ^ prefix, after); @@ -183,12 +191,13 @@ let () = register "right" (f3 angle velocity acceleration) (fun logger krobot angle velocity acceleration -> Krobot.turn krobot (-angle) velocity acceleration >>= move_result logger); - register "goto" (f6 - (int ~default:0 "x") (int ~default:0 "y") velocity acceleration - (keyword ~default:`Straight "mode" [("straight", `Straight); - ("curve-left", `Curve_left); - ("curve-right", `Curve_right)]) - (int ~default:0 "bypass-distance")) + register"goto" + (f6 + (int ~default:0 "x") (int ~default:0 "y") velocity acceleration + (keyword ~default:`Straight "mode" [("straight", `Straight); + ("curve-left", `Curve_left); + ("curve-right", `Curve_right)]) + (int ~default:0 "bypass-distance")) (fun logger krobot x y velocity acceleration mode bypass -> Krobot.goto krobot x y velocity acceleration mode bypass >>= move_result logger); @@ -224,18 +233,18 @@ let () = ("motor", `Motor); ("sensor", `Sensor)] in - register "bootloader" (f1 card) + register ~path:["card"] "bootloader" (f1 card) (fun logger -> Krobot.Card.bootloader); - register "reset" (f1 card) + register ~path:["card"] "reset" (f1 card) (fun logger -> Krobot.Card.reset); - register "test" (f1 card) + register ~path:["card"] "test" (f1 card) (fun logger -> Krobot.Card.test); (* +---------------------------------------------------------------+ | Range finders | +---------------------------------------------------------------+ *) - register "get-calibration" f0 + register ~path:["calibration"] "get" f0 (fun logger krobot -> lwt cals = Lwt_list.map_p (Krobot.get_calibration krobot) [0; 1; 2; 3; 4; 5; 6; 7] in let rec loop i = function @@ -252,11 +261,11 @@ let () = in loop 0 cals); - register "calibration-start" (f2 (int "range-finder") (keyword "skip-meas" [("true", true); ("false", false)])) + register ~path:["calibration"] "start" (f2 (int "range-finder") (keyword "skip-meas" [("true", true); ("false", false)])) (fun logger -> Krobot.calibration_start); - register "calibration-stop" f0 + register ~path:["calibration"] "stop" f0 (fun logger -> Krobot.calibration_stop); - register "calibration-continue" f0 + register ~path:["calibration"] "continue" f0 (fun logger -> Krobot.calibration_continue); (* +---------------------------------------------------------------+ hooks/post-receive -- krobot |
From: Xavier L. <Ba...@us...> - 2010-02-24 22:47:33
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, motor-nurbs has been updated via 03ce4e475cf42b892c90fc4f9278e7866c82911d (commit) via d3e48b7aed5c05658abf5cd9c7465f3990f4b9e4 (commit) via 085efdbed4f0703aa3d6a2e3be36ed0cc993c32d (commit) via f763bb5ede549e946affa6f5f8b1817de9656595 (commit) via 4b6f331e6e1c0a2c4e91e5f13838a77ab7110ad7 (commit) via d5cabf5265f1cf7f5d47fd193ada0bd3b4c36e68 (commit) via c8338ac1db819595ad7883625879bc2180fe872c (commit) via ec6a88b803f8747e048f74bd305d67e32be01ac7 (commit) via 0a529d96f005d2befe3919348127e415a4bbd8bc (commit) via 374911310949605868ed9c075f8958a9dcda27db (commit) via dde1617b6333d9005a9bb79542d09fa17e023b3d (commit) via e237a87733351c0f01e319bab5ff335166fa6094 (commit) via 63f14c692283128c4438374445fd1298b31c811e (commit) via 59b4b288ae853d691e5293a9054a765aeeb3a8e8 (commit) via ff69ea42068f9527975208553f04d369e1ba7f5c (commit) via 09b96167adb43821ec7c1a4023be8cb1686a1a27 (commit) via b816f48eab76c6b03cde9297fdf561dd83168995 (commit) via 25eabbea383d06ad591978ba725b9e9b8081599f (commit) via 03b2d41ebef871da47dc3cc3a72773b838fc5c5d (commit) via 421de24efb03bcaa1919f0799f9aa8637cfcb88d (commit) via 6d97e2de14f3e17bba824ae17e4630ed4a5ff5b8 (commit) via 0e26131ab8db136ad132bee9e796b91bcfa54ef8 (commit) via f444918324cd99ce343190d5b122295f6ce31e45 (commit) via 1704a1ff79e3504fe1e5121f576c559b2046766d (commit) via 4a734d6396172ea06a22a0b8c0300c48ea0dbf48 (commit) via 874ddbf56c24c94c9805d5faa15e242b0f7eefba (commit) via cb562ea4bd61d42e8cd13999561155ba29a95952 (commit) via c2a2cd1daade5c0e5d52d2791998f874088988d9 (commit) via a56ae2921c0bad51ebc5c2cd11f1d9ba336c67d5 (commit) via 3192e559c2ab36e98d3b408a015a95d24f6f2cd0 (commit) via 694a02719b4b016a8c206177f9d6d70e00ddee6d (commit) via 4435faf7b86a66387821cbeecbb930e3c575ef67 (commit) via 5e643c4777ad4c8746695c8c566e06e6056e79fa (commit) via b4e019644eb1a56de3a006e2136fb99e9c9517db (commit) via fa42027035da13c7ecdd2a9eebda5f869db6bb63 (commit) via d5dd29f7cee70a51a4bbfb294b48c970927ace06 (commit) via 55485c76b7ae61643fb73003c6f7c02ec144c984 (commit) via 82f453512edd3c3b653149f7025735b943249d93 (commit) via dc7f31e7038f1ac3f97cdad9b76de424fbbab041 (commit) via 4559f9bbbab6518f243fd21f6e406354ac8705ec (commit) via e4578a9f84417da74eafeb2d81d2ab8079cdb6b3 (commit) via f3530f39db8f3f91c4e699cdb2b62dc4deecbd23 (commit) via b8f7544dccaa2e3b7fae129e3aab7753be831561 (commit) via 04715e243dcdaeee3de34246586171c3b4c9883a (commit) via 819b0a90fd152d2390eea791f5a3ab115b2629a3 (commit) via c6ca4d9dab2c4646c8d8e0b5bb9670fb30a3b8af (commit) via c07439dbd3a468aa4347ee5c03fa9905637426d1 (commit) via c0d1d60462dfc4bf44bdc73eb14937bc048a6afc (commit) via 6abe826b5278a9447436ef4209a6db4e8804799d (commit) via 00d6bb9fa4015d784fa097f489b8621d392078f6 (commit) via 6957a1aa373af9614710b18c193c3d062d61d14e (commit) via 57ed3996de596341ae3996edf376de366d39eb2f (commit) via 6945591b460b0b5106b07685b69b78d6407cacf1 (commit) from c72950af55e8c202c2aa7fab117b946af69b1c45 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 03ce4e475cf42b892c90fc4f9278e7866c82911d Author: Xavier Lagorce <Xav...@cr...> Date: Wed Feb 24 23:46:19 2010 +0100 Building new firmware after fixing merge errors commit d3e48b7aed5c05658abf5cd9c7465f3990f4b9e4 Merge: c72950af55e8c202c2aa7fab117b946af69b1c45 085efdbed4f0703aa3d6a2e3be36ed0cc993c32d Author: Xavier Lagorce <Xav...@cr...> Date: Wed Feb 24 23:34:11 2010 +0100 Merge branch 'master' into motor-nurbs Conflicts: USB_Module/Motor_Controller/Firmware/Motor_Controller.mcw USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex USB_Module/Motor_Controller/Firmware/output/Motor_controller.map -> keeping binary files from the master branch (/!\ Firmwares need recompilation) ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/_tags b/PC_Mainboard/_tags index 818fd97..2b3245a 100644 --- a/PC_Mainboard/_tags +++ b/PC_Mainboard/_tags @@ -25,8 +25,7 @@ <clients/**>: pkg_lwt.unix, pkg_obus <clients/joy_control.*>: pkg_sdl <clients/controller.*>: pkg_lwt.text -<clients/script_lexer.*>: pkg_text -<clients/script.*>: pkg_text +<clients/script*>: pkg_text # +------------------------------------------------------------------+ # | Services | @@ -39,8 +38,8 @@ # | Common | # +------------------------------------------------------------------+ -<common/types.{ml,mli}>: syntax_camlp4o, pkg_obus.syntax -<common/types.*>: pkg_obus +<common/{types,util}.{ml,mli}>: syntax_camlp4o, pkg_obus.syntax, pkg_lwt.syntax +<common/{types,util}.*>: pkg_obus # +------------------------------------------------------------------+ # | Driver | diff --git a/PC_Mainboard/card_tools/bootloader.ml b/PC_Mainboard/card_tools/bootloader.ml index 28044cc..35b407e 100644 --- a/PC_Mainboard/card_tools/bootloader.ml +++ b/PC_Mainboard/card_tools/bootloader.ml @@ -54,8 +54,8 @@ let close k = let open_card () = let handle = USB.open_device_with - ~vendor_id:Protocol.usb_vid - ~product_id:Protocol.usb_pid_bootloader + ~vendor_id:PcInterface.usb_vid + ~product_id:PcInterface.usb_pid_bootloader in let kernel_active = USB.kernel_driver_active handle 0 in if kernel_active then USB.detach_kernel_driver handle 0; @@ -109,7 +109,7 @@ let get_flash k ~address ~length = let length = min increment total_length in let response_length = length+header_length in let address = address+offset in - put_message send_buffer Protocol.read_flash length address ""; + put_message send_buffer PcInterface.read_flash length address ""; lwt () = send_receive_packet k send_buffer header_length receive_buffer response_length 1. 3. in let receive_header = String.sub receive_buffer 0 header_length in if receive_header <> send_buffer then @@ -132,10 +132,10 @@ let erase_flash k ~address ~length = return () else begin let address = address+offset in - put_message send_buffer Protocol.erase_flash 1 address ""; + put_message send_buffer PcInterface.erase_flash 1 address ""; lwt () = send_receive_packet k send_buffer header_length receive_buffer response_length 1. 5. in - if int_of_char receive_buffer.[0] <> Protocol.erase_flash then - failwith (UnexpectedReply (receive_buffer, String.make 1 (char_of_int Protocol.erase_flash))) + if int_of_char receive_buffer.[0] <> PcInterface.erase_flash then + failwith (UnexpectedReply (receive_buffer, String.make 1 (char_of_int PcInterface.erase_flash))) else loop (offset+increment) (total_length-increment); end @@ -162,10 +162,10 @@ let write_flash k ~address data offset length = loop (address+increment) (offset+increment) (total_length-increment) end else begin (* lwt () = printf "Processing address 0x%06X...\n" address in *) - put_message send_buffer Protocol.write_flash increment address packet; + put_message send_buffer PcInterface.write_flash increment address packet; lwt () = send_receive_packet k send_buffer send_length receive_buffer receive_length 0.5 1. in - if int_of_char receive_buffer.[0] <> Protocol.write_flash then - failwith (UnexpectedReply (receive_buffer, String.make 1 (char_of_int Protocol.erase_flash))) + if int_of_char receive_buffer.[0] <> PcInterface.write_flash then + failwith (UnexpectedReply (receive_buffer, String.make 1 (char_of_int PcInterface.erase_flash))) else begin lwt written = get_flash k ~address ~length:increment in if written <> packet then @@ -179,6 +179,6 @@ let write_flash k ~address data offset length = let reset_board k = let send_buffer = String.create 64 and receive_buffer = String.create 64 in - send_buffer.[0] <- char_of_int Protocol.reset; + send_buffer.[0] <- char_of_int PcInterface.reset; lwt () = send_receive_packet k send_buffer 1 receive_buffer 64 5. 5. in return () diff --git a/PC_Mainboard/clients/controller.ml b/PC_Mainboard/clients/controller.ml index 1d45d75..a253a34 100644 --- a/PC_Mainboard/clients/controller.ml +++ b/PC_Mainboard/clients/controller.ml @@ -116,13 +116,14 @@ let rec loop krobot history = let line = Text.strip (Engine.all_input (React.S.value engine_state)) in if line = "exit" then save_history history - else begin + else if line <> "" then begin let history = Lwt_read_line.add_entry line history in set_engine_state (Engine.init history); lwt () = Log.notice line in ignore (Script.exec ~krobot ~logger:(fun line -> log_add_line line; return ()) ~command:line); loop krobot history - end + end else + loop krobot history | Command.Complete -> let engine_state = Engine.reset (React.S.value engine_state) in let before, after = Engine.edition_state engine_state in @@ -134,6 +135,21 @@ let rec loop krobot history = loop krobot history (* +-----------------------------------------------------------------+ + | Service monitoring | + +-----------------------------------------------------------------+ *) + +let services, set_services = React.S.create ~eq:TextSet.equal TextSet.empty + +let check_services bus = + lwt l = OBus_bus.list_names bus in + set_services (List.fold_left (fun set name -> + if Text.starts_with name "fr.krobot." then + TextSet.add (String.sub name 10 (String.length name - 10)) set + else + set) TextSet.empty l); + return () + +(* +-----------------------------------------------------------------+ | Drawing | +-----------------------------------------------------------------+ *) @@ -173,6 +189,8 @@ let rec draw krobot = fg line_color; text " ]─┬─[ "; fg name_color; text "Logic Sensors"; fg line_color; text " ]─┬─[ "; + fg name_color; text "Services"; + fg line_color; text " ]─┬─[ "; fg name_color; text "Status"; fg line_color; text " ]─"]; points.(9).(0) <- { line with char = "├" }; @@ -182,9 +200,10 @@ let rec draw krobot = done; for i = 1 to 8 do points.(i).(20) <- { line with char = "│" }; - points.(i).(40) <- { line with char = "│" } + points.(i).(40) <- { line with char = "│" }; + points.(i).(55) <- { line with char = "│" } done; - Draw.textc screen 1 9 [fg line_color; text "───────────────────┴───────────────────┴"]; + Draw.textc screen 1 9 [fg line_color; text "───────────────────┴───────────────────┴──────────────┴"]; let zone = Zone.inner screen in @@ -200,8 +219,18 @@ let rec draw krobot = (j + 0) (if logic_sensors.(j + 0) then "O" else ".") (j + 1) (if logic_sensors.(j + 1) then "O" else ".") done; - let x = 40 in + let zone' = Zone.sub ~zone ~x:40 ~y:0 ~width:14 ~height:8 in + let rec loop y = function + | [] -> + () + | name :: rest -> + Draw.text ~zone:zone' ~x:0 ~y ~text:name; + loop (y + 1) rest + in + loop 0 (TextSet.elements (React.S.value services)); + + let x = 55 in Draw.textf zone x 0 "team = %s" (match React.S.value (Krobot.team krobot) with | Krobot.Team_red -> "red" | Krobot.Team_green -> "green"); @@ -344,6 +373,7 @@ let refresh krobot = lwt () = lwt () = Log.notice "connecting to the krobot bus..." in + lwt bus = Lazy.force Krobot.bus in lwt krobot = Krobot.create () in (* Put the terminal into drawing mode: *) @@ -362,6 +392,10 @@ lwt () = Lwt_main.exit_hooks in + (* Service monitoring *) + lwt () = check_services bus in + Lwt_event.always_notify_p (fun _ -> check_services bus) (OBus_bus.name_owner_changed bus)#event; + (* Minimum delay to wait between two screen redrawing *) let delay = 1.0 /. (float_of_int refresh_rate) in (* Event which refresh the screen when it occurs: *) @@ -384,6 +418,7 @@ lwt () = notify (Krobot.Card.state krobot `Interface); notify (Krobot.Card.state krobot `Sensor); notify (Krobot.Card.state krobot `Motor); + notify services; (* Redraw immedlatly the screen when [signal] changes: *) let urgent signal = Lwt_signal.always_notify_p (fun _ -> refresh krobot) signal in diff --git a/PC_Mainboard/clients/init_position.ml b/PC_Mainboard/clients/init_position.ml index 94073a3..0a4e6d9 100644 --- a/PC_Mainboard/clients/init_position.ml +++ b/PC_Mainboard/clients/init_position.ml @@ -15,7 +15,7 @@ open Lwt let move_backward_slowly krobot = lwt () = Log.notice "moving backward" in - Krobot.move krobot ~dist:(-1000) ~speed:100 ~acc:100 >>= function + Krobot.move krobot ~distance:(-1000) ~velocity:100 ~acceleration:100 >>= function | `OK -> lwt () = Log.error "where am i ???" in exit 1 @@ -28,16 +28,16 @@ lwt () = lwt () = move_backward_slowly krobot in lwt () = Log.notice "going to initial position on first axis" in - lwt _ = Krobot.move krobot ~dist:Config.initial_position ~speed:400 ~acc:800 in + lwt _ = Krobot.move krobot ~distance:Config.initial_position ~velocity:400 ~acceleration:800 in lwt () = Log.notice "turning" in - lwt _ = Krobot.turn krobot ~angle:(-90) ~speed:400 ~acc:800 in + lwt _ = Krobot.turn krobot ~angle:(-90) ~velocity:400 ~acceleration:800 in lwt () = move_backward_slowly krobot in lwt () = Log.notice "going to initial position on second axis" in - lwt _ = Krobot.move krobot ~dist:Config.initial_position ~speed:400 ~acc:800 in + lwt _ = Krobot.move krobot ~distance:Config.initial_position ~velocity:400 ~acceleration:800 in lwt () = Log.notice "turning" in - lwt _ = Krobot.turn krobot ~angle:45 ~speed:400 ~acc:800 in + lwt _ = Krobot.turn krobot ~angle:45 ~velocity:400 ~acceleration:800 in return () diff --git a/PC_Mainboard/clients/joy_control.ml b/PC_Mainboard/clients/joy_control.ml index 7c84d21..a31a0b7 100644 --- a/PC_Mainboard/clients/joy_control.ml +++ b/PC_Mainboard/clients/joy_control.ml @@ -128,7 +128,8 @@ let child_loop pipe joy = let axis_coef = 6 let axis_coef_turn = 4 -let acceleration = 800 +let accelerations = (800, 800) +let duration = 0.2 let try_call action f = try_lwt @@ -137,38 +138,34 @@ let try_call action f = lwt () = Log.error_f "action %s failed with: %s" action msg in return () -let rec set_speed action krobot motor speed abort_waiter = - lwt () = choose [abort_waiter; try_call action (fun () -> Krobot.set_speed krobot ~motor ~speed ~acc:acceleration)] in - if speed = 0 then +let rec set_velocities krobot velocities = + lwt () = Log.info_f "set-velocities: left=%d right=%d" (fst velocities) (snd velocities) in + lwt () = + try_call "set-velocities" + (fun () -> + Krobot.set_velocities krobot ~velocities ~accelerations ~duration) + in + if velocities = (0, 0) then return () else begin - lwt () = select [abort_waiter; Lwt_unix.sleep (Config.stop_motors_delay /. 2.)] in - set_speed action krobot motor speed abort_waiter + lwt () = Lwt_unix.sleep (duration /. 2.) in + set_velocities krobot velocities end let parent_loop krobot pipe = - let rstop = ref false and lstop = ref false in - let rthread = ref (return ()) and lthread = ref (return ()) in - let rabort_wakener = ref None and labort_wakener = ref None in + let stop = ref false in + let thread = ref (return ()) in let raxis_h = ref 0 and raxis_v = ref 0 and laxis_h = ref 0 and laxis_v = ref 0 in - let set_speeds () = - begin match !labort_wakener with - | None -> () - | Some w -> wakeup_exn w Exit - end; - begin match !rabort_wakener with - | None -> () - | Some w -> wakeup_exn w Exit - end; - let waiter, wakener = Lwt.wait () in - labort_wakener := Some wakener; - lthread := set_speed "set-speed-left" krobot `Left (!laxis_v * axis_coef - !raxis_h * axis_coef_turn) waiter; - let waiter, wakener = Lwt.wait () in - rabort_wakener := Some wakener; - rthread := set_speed "set-speed-right" krobot `Right (!laxis_v * axis_coef + !raxis_h * axis_coef_turn) waiter + let set_velocities () = + cancel !thread; + if not !stop then + thread := + set_velocities krobot + (!laxis_v * axis_coef - !raxis_h * axis_coef_turn, + !laxis_v * axis_coef + !raxis_h * axis_coef_turn) in let rec loop () = Lwt_io.read_value pipe >>= function @@ -176,35 +173,27 @@ let parent_loop krobot pipe = return () | JoyLAxisV n -> laxis_v := n; - set_speeds (); + set_velocities (); loop () | JoyLAxisH n -> laxis_h := n; - set_speeds (); + set_velocities (); loop () | JoyRAxisV n -> raxis_v := n; - set_speeds (); + set_velocities (); loop () | JoyRAxisH n -> raxis_h := n; - set_speeds (); - loop () - | JoyButtonPressed ButtonL2 -> - lstop := true; - cancel !lthread; - lwt () = try_call "stop-left-motor" (fun () -> Krobot.stop_motors krobot ~motor:`Left ~mode:`Abrupt) in - ignore (lwt () = Lwt_unix.sleep 1.0 in lstop := false; return ()); + set_velocities (); loop () - | JoyButtonPressed ButtonR2 -> - rstop := true; - cancel !rthread; - lwt () = try_call "stop-right-motor" (fun () -> Krobot.stop_motors krobot ~motor:`Right ~mode:`Abrupt) in - ignore (lwt () = Lwt_unix.sleep 1.0 in rstop := false; return ()); + | JoyButtonPressed ButtonSquare -> + stop := true; + cancel !thread; + lwt () = try_call "stop-motors" (fun () -> Krobot.stop_motors krobot ~mode:`Abrupt) in loop () - | JoyButtonReleased ButtonCircle -> - rstop := false; - lstop := false; + | JoyButtonReleased ButtonSquare -> + stop := false; loop () | _ -> loop () @@ -234,6 +223,6 @@ let () = Unix.close fd_w; Lwt_main.run begin lwt krobot = Krobot.create () in - lwt() = Log.notice "ready to process event" in + lwt () = Log.notice "ready to process event" in parent_loop krobot (Lwt_io.of_unix_fd ~mode:Lwt_io.input fd_r) end diff --git a/PC_Mainboard/clients/script.ml b/PC_Mainboard/clients/script.ml index 2d6a19b..614e73c 100644 --- a/PC_Mainboard/clients/script.ml +++ b/PC_Mainboard/clients/script.ml @@ -9,133 +9,86 @@ open Lwt open Lwt_term +open Script_commands module TextSet = Set.Make(Text) let set_of_list l = List.fold_left (fun set x -> TextSet.add x set) TextSet.empty l (* +-----------------------------------------------------------------+ - | Commands | - +-----------------------------------------------------------------+ *) - -type logger = Lwt_term.styled_text -> unit Lwt.t - -(* Type of an argument *) -type arg_type = - | Int - | Keyword of string list - -type command = { - c_name : string; - (* The command name *) - - c_exec : (string * string) list -> logger -> Krobot.t -> unit Lwt.t; - (* The command implementation. It takes as argument the list of - parameters. *) - - c_args : (string * arg_type) list; - (* Argument description, used for completion. *) -} - -(* An argument description *) -type 'a arg = { - a_type : arg_type; - a_name : string; - a_cast : string -> 'a; - a_default : 'a option; -} - -(* A function description *) -type 'a func = { - f_args : (string * arg_type) list; - (* Arguments of the function, for completion *) - - f_func : (string * string) list -> 'a -> unit Lwt.t; - (* [f_func args f] parses arguments [args] and apply them to [f] *) -} - -(* All registred commands *) -let commands = ref [] - -(* Register a command *) -let register name func f = - let command = { - c_name = name; - c_exec = (fun args logger krobot -> func.f_func args (f logger krobot)); - c_args = func.f_args; - } in - commands := command :: !commands - -exception Argument_error of string - (* Exception raised when there is a problem with an argument *) - -let arg_error msg = raise (Argument_error msg) - -(* Returns the value associated to [key] if any, and the list without - the first occurence of [key] *) -let rec assoc_remove key = function - | [] -> - (None, []) - | (key', value) :: rest when key = key' -> - (Some value, rest) - | pair :: rest -> - let result, l = assoc_remove key rest in - (result, pair :: l) - -let ( --> ) arg func = { - f_args = (arg.a_name, arg.a_type) :: func.f_args; - f_func = - fun args f -> - let result, args = assoc_remove arg.a_name args in - match result with - | Some str -> - func.f_func args (f (arg.a_cast str)) - | None -> - match arg.a_default with - | Some value -> - func.f_func args (f value) - | None -> - Printf.ksprintf arg_error "argument '%s' is mandatory" arg.a_name -} - -let f0 = { - f_args = []; - f_func = - fun args f -> - match args with - | [] -> - f - | (key, _) :: _ -> - Printf.ksprintf arg_error "unused argument '%s'" key -} - -let f1 arg0 = arg0 --> f0 -let f2 arg0 arg1 = arg0 --> (f1 arg1) -let f3 arg0 arg1 arg2 = arg0 --> (f2 arg1 arg2) -let f4 arg0 arg1 arg2 arg3 = arg0 --> (f3 arg1 arg2 arg3) -let f5 arg0 arg1 arg2 arg3 arg4 = arg0 --> (f4 arg1 arg2 arg3 arg4) -let f6 arg0 arg1 arg2 arg3 arg4 arg5 = arg0 --> (f5 arg1 arg2 arg3 arg4 arg5) - -(* +-----------------------------------------------------------------+ | Completion | +-----------------------------------------------------------------+ *) -let rec args_of_command command = function - | { c_name = name; c_args = args } :: _ when name = command -> - Some args - | _ :: rest -> - args_of_command command rest - | [] -> - None +let decompose name = + match Text.rev_split ~sep:"." ~max:2 name with + | [] -> + ([], "") + | [name] -> + ([], name) + | [path; name] -> + (Text.split ~sep:"." path, name) + | _ -> + assert false + +let args_of_command name = + let path, name = decompose name in + let rec loop = function + | cmd :: _ when cmd.c_path = path && cmd.c_name = name -> + Some cmd.c_args + | _ :: rest -> + loop rest + | [] -> + None + in + loop !commands + +let rec after_prefix prefix path = + match prefix, path with + | [], p -> Some p + | e1 :: p1, e2 :: p2 when e1 = e2 -> after_prefix p1 p2 + | _ -> None let complete ~before ~after = try match Script_lexer.partial_command (Lexing.from_string before) with - | `Command(before, name) -> - Lwt_read_line.complete ~suffix:" " before name after - (set_of_list (List.map (fun command -> command.c_name) !commands)) + | `Command(before, name) -> begin + let full_path, path, name = + match Text.rev_split ~sep:"." ~max:2 name with + | [] -> + ("", [], "") + | [name] -> + ("", [], name) + | [path; name] -> + (path ^ ".", Text.split ~sep:"." path, name) + | _ -> + assert false + in + let paths, names = + (List.fold_left + (fun (paths, names) command -> + match after_prefix path command.c_path with + | None -> + (paths, names) + | Some [] -> + (paths, TextSet.add command.c_name names) + | Some (name :: rest) -> + (TextSet.add name paths, names)) + (TextSet.empty, TextSet.empty) !commands) + in + let prefix, words = Lwt_read_line.lookup name names in + match TextSet.cardinal words with + | 0 -> + Lwt_read_line.complete ~suffix:"." (before ^ full_path) name after paths + | 1 -> + { Lwt_read_line.comp_state = (before ^ full_path ^ prefix ^ " ", after); + Lwt_read_line.comp_words = words } + | _ -> + { Lwt_read_line.comp_state = (before ^ full_path ^ prefix, after); + Lwt_read_line.comp_words = words } + end + | `Arg(before, name, args, `Key key) -> begin - match args_of_command name !commands with + match args_of_command name with | None -> raise Exit | Some args' -> @@ -145,7 +98,7 @@ let complete ~before ~after = Lwt_read_line.complete ~suffix:"=" before key after args end | `Arg(before, name, args, `Value(key, value)) -> begin - match args_of_command name !commands with + match args_of_command name with | None -> raise Exit | Some args' -> @@ -175,11 +128,12 @@ let exec ~krobot ~logger ~command = | `Fail exn -> logger [fg lred; textf "parse failure: %s" (Printexc.to_string exn)] | `OK(name, args) -> - try + let path, name = decompose name in + try_lwt let rec search = function | [] -> logger [fg lred; textf "unknown command '%s'" name] - | cmd :: rest when cmd.c_name <> name -> + | cmd :: rest when cmd.c_path <> path || cmd.c_name <> name -> search rest | cmd :: _ -> cmd.c_exec args logger krobot @@ -194,32 +148,6 @@ let exec ~krobot ~logger ~command = logger [fg lred; textf "command '%s' failed with: %s" name (Printexc.to_string exn)] (* +-----------------------------------------------------------------+ - | Arguments | - +-----------------------------------------------------------------+ *) - -let int ?default name = { - a_name = name; - a_type = Int; - a_cast = (fun str -> - try - int_of_string str - with Failure _ -> - Printf.ksprintf arg_error "invalid value for argument '%s': an integer was expected" name); - a_default = default; -} - -let keyword ?default name keywords = { - a_name = name; - a_type = Keyword(List.map fst keywords); - a_cast = (fun key -> - try - List.assoc key keywords - with Not_found -> - Printf.ksprintf arg_error "invalid value for '%s'" name); - a_default = default; -} - -(* +-----------------------------------------------------------------+ | All commands | +-----------------------------------------------------------------+ *) @@ -231,10 +159,10 @@ let () = | Movement | +---------------------------------------------------------------+ *) - let dist = int ~default:100 "dist" + let distance = int ~default:100 "distance" and angle = int ~default:90 "angle" - and speed = int ~default:400 "speed" - and acc = int ~default:800 "acc" in + and velocity = int ~default:400 "velocity" + and acceleration = int ~default:800 "acceleration" in let move_result logger = function | `OK -> @@ -243,40 +171,50 @@ let () = logger [fg lyellow; text "move stopped"] in - register "forward" (f3 dist speed acc) - (fun logger krobot dist speed acc -> - Krobot.move krobot dist speed acc >>= move_result logger); - register "backward" (f3 dist speed acc) - (fun logger krobot dist speed acc -> - Krobot.move krobot (-dist) speed acc >>= move_result logger); - register "left" (f3 angle speed acc) - (fun logger krobot angle speed acc -> - Krobot.turn krobot angle speed acc >>= move_result logger); - register "right" (f3 angle speed acc) - (fun logger krobot angle speed acc -> - Krobot.turn krobot (-angle) speed acc >>= move_result logger); + register "forward" (f3 distance velocity acceleration) + (fun logger krobot distance velocity acceleration -> + Krobot.move krobot distance velocity acceleration >>= move_result logger); + register "backward" (f3 distance velocity acceleration) + (fun logger krobot distance velocity acceleration -> + Krobot.move krobot (-distance) velocity acceleration >>= move_result logger); + register "left" (f3 angle velocity acceleration) + (fun logger krobot angle velocity acceleration -> + Krobot.turn krobot angle velocity acceleration >>= move_result logger); + register "right" (f3 angle velocity acceleration) + (fun logger krobot angle velocity acceleration -> + Krobot.turn krobot (-angle) velocity acceleration >>= move_result logger); register "goto" (f6 - (int ~default:0 "x") (int ~default:0 "y") speed acc + (int ~default:0 "x") (int ~default:0 "y") velocity acceleration (keyword ~default:`Straight "mode" [("straight", `Straight); ("curve-left", `Curve_left); ("curve-right", `Curve_right)]) - (int ~default:0 "bypass-dist")) - (fun logger krobot x y speed acc mode bypass -> - Krobot.goto krobot x y speed acc mode bypass >>= move_result logger); + (int ~default:0 "bypass-distance")) + (fun logger krobot x y velocity acceleration mode bypass -> + Krobot.goto krobot x y velocity acceleration mode bypass >>= move_result logger); (* +---------------------------------------------------------------+ | Motors low-level conrol | +---------------------------------------------------------------+ *) - let motor = keyword ~default:`Both "motor" - [("left", `Left); ("right", `Right); ("both", `Both)] - and stop_mode = keyword ~default:`Smooth "stop-mode" - [("off", `Off); ("abrupt", `Abrupt); ("smooth", `Smooth)] in + let stop_mode = keyword ~default:`Smooth "stop-mode" + [("off", `Off); ("abrupt", `Abrupt); ("smooth", `Smooth)] + and duration = float ~default:1.0 "duration" + and velocity motor = int ~default:400 ("velocity" ^ motor) + and acceleration motor = int ~default:800 ("acceleration" ^ motor) in - register "stop-motors" (f2 motor stop_mode) - (fun logger krobot motor mode -> Krobot.stop_motors krobot ~motor ~mode); - register "set-speed" (f3 motor speed acc) - (fun logger krobot motor speed acc -> Krobot.set_speed krobot ~motor ~speed ~acc); + register "motors-state" f0 + (fun logger krobot -> + lwt state = Krobot.motors_state krobot in + logger [text "motors state: "; text state]); + register "stop-motors" (f1 stop_mode) + (fun logger krobot mode -> + Krobot.stop_motors krobot ~mode); + register "set-velocities" (f5 (velocity "-left") (velocity "-right") (acceleration "-left") (acceleration "-right") duration) + (fun logger krobot velocity_left velocity_right acceleration_left acceleration_right duration -> + Krobot.set_velocities krobot + ~velocities:(velocity_left, velocity_right) + ~accelerations:(acceleration_left, acceleration_right) + ~duration); (* +---------------------------------------------------------------+ | Cards control | @@ -316,9 +254,9 @@ let () = register "calibration-start" (f2 (int "range-finder") (keyword "skip-meas" [("true", true); ("false", false)])) (fun logger -> Krobot.calibration_start); - register "calibartion-stop" f0 + register "calibration-stop" f0 (fun logger -> Krobot.calibration_stop); - register "calibartion-continue" f0 + register "calibration-continue" f0 (fun logger -> Krobot.calibration_continue); (* +---------------------------------------------------------------+ @@ -326,64 +264,44 @@ let () = +---------------------------------------------------------------+ *) let id = int "id" - and pos = int "pos" - and speed = int ~default:50 "speed" + and position = int "position" + and velocity = int ~default:50 "velocity" and timeout = int ~default:100 "timeout" - and reg = int "reg" - and value = int "value" - and now = keyword ~default:true "now" [("true", true); ("false", false)] in + and goto_mode = keyword ~default:`Now "mode" [("now", `Now); ("action", `Action)] in - register "ax12-goto" (f4 id pos speed now) - (fun logger krobot id pos speed now -> - Krobot.AX12.goto krobot id pos speed now); - register "ax12-ping" (f2 id timeout) + register ~path:["ax12"] "goto" (f4 id position velocity goto_mode) + (fun logger krobot id position velocity goto_mode -> + Krobot_unsafe.AX12.goto krobot id position velocity goto_mode); + register ~path:["ax12"] "ping" (f2 id timeout) (fun logger krobot id timeout -> - Krobot.AX12.ping krobot id timeout >>= function - | 0 -> logger [textf "ax12-ping[%d] reply: " id; fg lred; text "timeout"] - | _ -> logger [textf "ax12-ping[%d] reply: " id; fg lgreen; text "success"]); - register "ax12-read8" (f3 id reg timeout) - (fun logger krobot id reg timeout -> - lwt x = Krobot.AX12.read8 krobot id reg timeout in - logger [textf "ax12-read8[%d] reply: %d" id x]); - register "ax12-read16" (f3 id reg timeout) - (fun logger krobot id reg timeout -> - lwt x = Krobot.AX12.read16 krobot id reg timeout in - logger [textf "ax12-read16[%d] reply: %d" id x]); - register "ax12-write8" (f3 id reg value) - (fun logger krobot id reg value -> - Krobot.AX12.write8 krobot id reg value); - register "ax12-write16" (f3 id reg value) - (fun logger krobot id reg value -> - Krobot.AX12.write16 krobot id reg value); - register "ax12-get-pos" (f2 id timeout) + Krobot_unsafe.AX12.ping krobot id timeout >>= function + | 0 -> logger [textf "ping[%d] reply: " id; fg lred; text "timeout"] + | _ -> logger [textf "ping[%d] reply: " id; fg lgreen; text "success"]); + register ~path:["ax12"] "get-position" (f2 id timeout) (fun logger krobot id timeout -> - lwt x = Krobot.AX12.get_pos krobot id timeout in - logger [textf "ax12-position[%d]: %d" id x]); - register "ax12-get-speed" (f2 id timeout) + lwt x = Krobot_unsafe.AX12.get_position krobot id timeout in + logger [textf "positionition[%d]: %d" id x]); + register ~path:["ax12"] "get-velocity" (f2 id timeout) (fun logger krobot id timeout -> - lwt x = Krobot.AX12.get_speed krobot id timeout in - logger [textf "ax12-speed[%d]: %d" id x]); - register "ax12-get-load" (f2 id timeout) + lwt x = Krobot_unsafe.AX12.get_velocity krobot id timeout in + logger [textf "velocity[%d]: %d" id x]); + register ~path:["ax12"] "get-load" (f2 id timeout) (fun logger krobot id timeout -> - lwt x = Krobot.AX12.get_load krobot id timeout in - logger [textf "ax12-load[%d]: %d" id x]); - register "ax12-stats" (f2 id timeout) + lwt x = Krobot_unsafe.AX12.get_load krobot id timeout in + logger [textf "load[%d]: %d" id x]); + register ~path:["ax12"] "get-stats" (f2 id timeout) (fun logger krobot id timeout -> - lwt stats = Krobot.AX12.stats krobot id timeout in + lwt stats = Krobot_unsafe.AX12.get_stats krobot id timeout in lwt () = logger [textf "ax12[%d] position = %d" id stats.Types.ax12_position] in - lwt () = logger [textf "ax12[%d] speed = %d" id stats.Types.ax12_speed] in + lwt () = logger [textf "ax12[%d] velocity = %d" id stats.Types.ax12_velocity] in lwt () = logger [textf "ax12[%d] torque = %d" id stats.Types.ax12_torque] in lwt () = logger [textf "ax12[%d] voltage = %d" id stats.Types.ax12_voltage] in lwt () = logger [textf "ax12[%d] temperature = %d" id stats.Types.ax12_temperature] in lwt () = logger [textf "ax12[%d] cw-angle-limit = %d" id stats.Types.ax12_cw_angle_limit] in lwt () = logger [textf "ax12[%d] ccw-angle-limit = %d" id stats.Types.ax12_ccw_angle_limit] in return ()); - register "ax12-write-reg8" (f3 id reg value) - (fun logger krobot id reg value -> - Krobot.AX12.write_reg8 krobot id reg value); - register "ax12-write-reg16" (f3 id reg value) - (fun logger krobot id reg value -> - Krobot.AX12.write_reg16 krobot id reg value); - register "ax12-action" (f1 (int ~default:254 "id")) + register ~path:["ax12"] "action" (f1 (int ~default:254 "id")) (fun logger krobot id -> - Krobot.AX12.action krobot id) + Krobot_unsafe.AX12.action krobot id) + +let () = Script_unsafe.register () diff --git a/PC_Mainboard/clients/script_commands.ml b/PC_Mainboard/clients/script_commands.ml new file mode 100644 index 0000000..b7369a4 --- /dev/null +++ b/PC_Mainboard/clients/script_commands.ml @@ -0,0 +1,153 @@ +(* + * script_commands.ml + * ------------------ + * Copyright : (c) 2010, Jeremie Dimino <je...@di...> + * Licence : BSD3 + * + * This file is a part of [kro]bot. + *) + + +(* +-----------------------------------------------------------------+ + | Types | + +-----------------------------------------------------------------+ *) + +type logger = Lwt_term.styled_text -> unit Lwt.t + +(* Type of an argument *) +type arg_type = + | Int + | Float + | Keyword of string list + +type command = { + c_name : string; + (* The command name *) + + c_path : string list; + (* The path of the command *) + + c_exec : (string * string) list -> logger -> Krobot.t -> unit Lwt.t; + (* The command implementation. It takes as argument the list of + parameters. *) + + c_args : (string * arg_type) list; + (* Argument description, used for completion. *) +} + +(* An argument description *) +type 'a arg = { + a_type : arg_type; + a_name : string; + a_cast : string -> 'a; + a_default : 'a option; +} + +(* A function description *) +type 'a func = { + f_args : (string * arg_type) list; + (* Arguments of the function, for completion *) + + f_func : (string * string) list -> 'a -> unit Lwt.t; + (* [f_func args f] parses arguments [args] and apply them to [f] *) +} + +(* All registred commands *) +let commands = ref [] + +(* Register a command *) +let register ?(path=[]) name func f = + let command = { + c_name = name; + c_path = path; + c_exec = (fun args logger krobot -> func.f_func args (f logger krobot)); + c_args = func.f_args; + } in + commands := command :: !commands + +exception Argument_error of string + (* Exception raised when there is a problem with an argument *) + +let arg_error msg = raise (Argument_error msg) + +(* Returns the value associated to [key] if any, and the list without + the first occurence of [key] *) +let rec assoc_remove key = function + | [] -> + (None, []) + | (key', value) :: rest when key = key' -> + (Some value, rest) + | pair :: rest -> + let result, l = assoc_remove key rest in + (result, pair :: l) + +let ( --> ) arg func = { + f_args = (arg.a_name, arg.a_type) :: func.f_args; + f_func = + fun args f -> + let result, args = assoc_remove arg.a_name args in + match result with + | Some str -> + func.f_func args (f (arg.a_cast str)) + | None -> + match arg.a_default with + | Some value -> + func.f_func args (f value) + | None -> + Printf.ksprintf a rg_error "argument '%s' is mandatory" arg.a_name +} + +let f0 = { + f_args = []; + f_func = + fun args f -> + match args with + | [] -> + f + | (key, _) :: _ -> + Printf.ksprintf arg_error "unused argument '%s'" key +} + +let f1 arg0 = arg0 --> f0 +let f2 arg0 arg1 = arg0 --> (f1 arg1) +let f3 arg0 arg1 arg2 = arg0 --> (f2 arg1 arg2) +let f4 arg0 arg1 arg2 arg3 = arg0 --> (f3 arg1 arg2 arg3) +let f5 arg0 arg1 arg2 arg3 arg4 = arg0 --> (f4 arg1 arg2 arg3 arg4) +let f6 arg0 arg1 arg2 arg3 arg4 arg5 = arg0 --> (f5 arg1 arg2 arg3 arg4 arg5) + +(* +-----------------------------------------------------------------+ + | Arguments | + +-----------------------------------------------------------------+ *) + +let int ?default name = { + a_name = name; + a_type = Int; + a_cast = (fun str -> + try + int_of_string str + with Failure _ -> + Printf.ksprintf arg_error "invalid value for argument '%s': an integer was expected" name); + a_default = default; +} + +let float ?default name = { + a_name = name; + a_type = Float; + a_cast = (fun str -> + try + float_of_string str + with Failure _ -> + Printf.ksprintf arg_error "invalid value for argument '%s': a float was expected" name); + a_default = default; +} + +let keyword ?default name keywords = { + a_name = name; + a_type = Keyword(List.map fst keywords); + a_cast = (fun key -> + try + List.assoc key keywords + with Not_found -> + Printf.ksprintf arg_error "invalid value for '%s'" name); + a_default = default; +} diff --git a/PC_Mainboard/clients/script_lexer.mll b/PC_Mainboard/clients/script_lexer.mll index 46d64fc..fa5a9a9 100644 --- a/PC_Mainboard/clients/script_lexer.mll +++ b/PC_Mainboard/clients/script_lexer.mll @@ -26,7 +26,7 @@ let xdigit = digit | ['a'-'f' 'A'-'F'] let space = blank | ['\n' '\x0b' '\x0c' '\r'] let identstart = [ 'A'-'Z' 'a'-'z' '_' ] -let identbody = [ 'A'-'Z' 'a'-'z' '_' '-' '\'' '0' - '9' ] +let identbody = [ 'A'-'Z' 'a'-'z' '_' '-' '\'' '0' - '9' '.' ] let ident = identstart identbody* let maybe_ident = "" | ident diff --git a/PC_Mainboard/common/PcInterface.h b/PC_Mainboard/common/PcInterface.h index 8fd98e0..e79e8fa 100644 --- a/PC_Mainboard/common/PcInterface.h +++ b/PC_Mainboard/common/PcInterface.h @@ -78,6 +78,7 @@ typedef struct _UP { #define GET_CURRENT 12 ///< Valeur instantandu courant dtar la batterie [Battery Monitoring] #define GET_POWER_STATE 13 ///< Etat de l'alimentation de puissance (On/Off) [Battery Monitoring] #define GET_BATTERY_STATE 14 ///< Etat des batteries (Pleine charge/Charge moyenne/Charge faible) [Battery Monitoring] +#define GET_CURRENT_SPEED 15 ///< Demande au PIC la valeur actuelle d'un moteur [Carte d'asservissement] // CMD_ERR arguments #define ERR_UNKNOWN_CMD 1 ///< Commande inconnue diff --git a/PC_Mainboard/common/config.ml b/PC_Mainboard/common/config.ml index 6c73d1d..c248d6e 100644 --- a/PC_Mainboard/common/config.ml +++ b/PC_Mainboard/common/config.ml @@ -13,4 +13,3 @@ let initial_position = 200 let bus_address = "unix:abstract=krobot" let update_delay = 0.05 let reopen_delay = 1.0 -let stop_motors_delay = 0.2 diff --git a/PC_Mainboard/common/config.mli b/PC_Mainboard/common/config.mli index f43c1eb..645ac10 100644 --- a/PC_Mainboard/common/config.mli +++ b/PC_Mainboard/common/config.mli @@ -26,7 +26,3 @@ val update_delay : float val reopen_delay : float (** Time to wait before retrying to open a card *) - -val stop_motors_delay : float - (** Amount of time to wait after a set-speed command to stop the - motors *) diff --git a/PC_Mainboard/common/types.ml b/PC_Mainboard/common/types.ml index 60ab4ce..3f970ca 100644 --- a/PC_Mainboard/common/types.ml +++ b/PC_Mainboard/common/types.ml @@ -43,10 +43,26 @@ let obus_goto_mode = OBus_type.mapping obus_int type ax12_stats = { ax12_position : int; - ax12_speed : int; + ax12_velocity : int; ax12_torque : int; ax12_voltage : int; ax12_temperature : int; ax12_cw_angle_limit : int; ax12_ccw_angle_limit : int; } with obus + +type exec_mode = [ `Now | `Action ] + +let obus_exec_mode = OBus_type.mapping obus_int + [(`Now, 0); (`Action, 1)] + +type direction = [ `Forward | `Backward ] + +let obus_direction = OBus_type.mapping obus_int + [(`Forward, 0); (`Backward, 1)] + +type ax12_action = { + aa_id : int; + aa_position : int; + aa_velocity : int; +} with obus diff --git a/PC_Mainboard/common/types.mli b/PC_Mainboard/common/types.mli index 164f85a..6fa04c8 100644 --- a/PC_Mainboard/common/types.mli +++ b/PC_Mainboard/common/types.mli @@ -25,18 +25,30 @@ type motor = [ `Left | `Right | `Both ] with obus(basic) type stop_mode = [ `Off | `Abrupt | `Smooth ] with obus(basic) (** Mode for stopping motors *) +type direction = [ `Forward | `Backward ] with obus(basic) + type card_state = [ `Present | `Absent ] with obus(basic) (** State of a card *) type goto_mode = [ `Straight | `Curve_right | `Curve_left ] with obus(basic) (** Form of the trajectory for the goto command *) +type exec_mode = [ `Now | `Action ] with obus(basic) + (** Mode of execution of the goto command for ax12 *) + type ax12_stats = { ax12_position : int; - ax12_speed : int; + ax12_velocity : int; ax12_torque : int; ax12_voltage : int; ax12_temperature : int; ax12_cw_angle_limit : int; ax12_ccw_angle_limit : int; } with obus(sequence) + +(** Action on an AX12: *) +type ax12_action = { + aa_id : int; + aa_position : int; + aa_velocity : int; +} with obus(sequence) diff --git a/PC_Mainboard/common/util.ml b/PC_Mainboard/common/util.ml index c40e26f..705623f 100644 --- a/PC_Mainboard/common/util.ml +++ b/PC_Mainboard/common/util.ml @@ -7,6 +7,8 @@ * This file is a part of [kro]bot. *) +open Lwt + let front_collide sensors = if Array.length sensors <> 16 then invalid_arg "Until.front_collide"; let rec loop = function @@ -22,3 +24,23 @@ let back_collide sensors = | n -> (sensors.(n) && List.mem n Config.back_sensors) || loop (n + 1) in loop 0 + +let unexpected_reply name reply = + lwt () = Lwt_log.log_f ~level:Lwt_log.Fatal "unexpected reply for request_name(%S): %s" name reply in + exit 1 + +let single_instance bus name = + Lwt_event.always_notify_p + (fun name -> + lwt () = Lwt_log.log ~level:Lwt_log.Notice "service restarted, exiting" in + exit 0) + (React.E.filter ((=) name) (OBus_bus.name_lost bus)#event); + OBus_bus.request_name bus ~allow_replacement:true ~replace_existing:true name >>= function + | `Primary_owner -> + return () + | `In_queue -> + unexpected_reply name "in-queue" + | `Exists -> + unexpected_reply name "exists" + | `Already_owner -> + unexpected_reply name "already-owner" diff --git a/PC_Mainboard/common/util.mli b/PC_Mainboard/common/util.mli index f652bb8..36ad923 100644 --- a/PC_Mainboard/common/util.mli +++ b/PC_Mainboard/common/util.mli @@ -16,3 +16,9 @@ val front_collide : bool array -> bool val back_collide : bool array -> bool (** [front_collide sensors] returns whether on of the back sensors is activated *) + +val single_instance : OBus_bus.t -> OBus_name.bus -> unit Lwt.t + (** [single_instance bus name] requests the bus name [name], and + exit the program when this name is lost. This permit to easily + restart the service and ensures that there is only one running + instance. *) diff --git a/PC_Mainboard/driver/RW.ml b/PC_Mainboard/driver/RW.ml index f7c417a..c43640f 100644 --- a/PC_Mainboard/driver/RW.ml +++ b/PC_Mainboard/driver/RW.ml @@ -7,31 +7,75 @@ * This file is a part of [kro]bot. *) -let get_uint8 data ofs = Char.code data.[ofs] -let set_uint8 data ofs v = data.[ofs] <- Char.unsafe_chr v -let get_int8 = get_uint8 -let set_int8 = set_uint8 - -let get_int16 data ofs = - (get_uint8 data ofs lsl 8) - lor (get_uint8 data (ofs + 1)) -let get_uint16 = get_int16 - -let set_int16 data ofs v = - set_uint8 data ofs ((v lsr 8) land 0xff); - set_uint8 data (ofs + 1) (v land 0xff) -let set_uint16 = set_int16 - -let get_int32 data ofs = - (get_uint8 data ofs lsl 24) - lor (get_uint8 data (ofs + 1) lsl 16) - lor (get_uint8 data (ofs + 2) lsl 8) - lor (get_uint8 data (ofs + 3)) -let get_uint32 = get_int32 - -let set_int32 data ofs v = - set_uint8 data ofs ((v lsr 24) land 0xff); - set_uint8 data (ofs + 1) ((v lsr 16) land 0xff); - set_uint8 data (ofs + 2) ((v lsr 8) land 0xff); - set_uint8 data (ofs + 3) (v land 0xff) -let set_uint32 = set_int32 +type pointer = { + mutable offset : int; + buffer : string; +} + +type writer = pointer +type reader = pointer + +let writer buffer = { buffer = buffer; offset = 0 } +let reader buffer = { buffer = buffer; offset = 0 } + +let get_uint8 pointer = + let offset = pointer.offset in + pointer.offset <- offset + 1; + Char.code pointer.buffer.[offset] +let put_uint8 pointer value = + let offset = pointer.offset in + pointer.offset <- offset + 1; + pointer.buffer.[offset] <- Char.unsafe_chr value +let get_sint8 = get_uint8 +let put_sint8 = put_uint8 + +let get_sint16 pointer = + let v0 = get_uint8 pointer in + let v1 = get_uint8 pointer in + (v0 lsl 8) lor v1 +let get_uint16 = get_sint16 + +let put_sint16 pointer value = + put_uint8 pointer ((value lsr 8) land 0xff); + put_uint8 pointer (value land 0xff) +let put_uint16 = put_sint16 + +let get_sint32 pointer = + let v0 = get_uint8 pointer in + let v1 = get_uint8 pointer in + let v2 = get_uint8 pointer in + let v3 = get_uint8 pointer in + (v0 lsl 24) lor (v1 lsl 16) lor (v2 lsl 8) lor v3 +let get_uint32 = get_sint32 + +let put_sint32 pointer value = + put_uint8 pointer ((value lsr 24) land 0xff); + put_uint8 pointer ((value lsr 16) land 0xff); + put_uint8 pointer ((value lsr 8) land 0xff); + put_uint8 pointer (value land 0xff) +let put_uint32 = put_sint32 + +let get_string pointer = + let index = + try + String.index_from pointer.buffer pointer.offset '\000' + with Not_found -> + String.length pointer.buffer + in + let offset = pointer.offset in + pointer.offset <- index + 1; + String.sub pointer.buffer offset (index - offset) + +let put_string pointer value = + let len = String.length value in + if len > String.length pointer.buffer - pointer.offset then + invalid_arg "RW.put_string: string too long" + else begin + String.blit value 0 pointer.buffer pointer.offset len; + let offset = pointer.offset + len in + if offset < String.length pointer.buffer then begin + pointer.buffer.[offset] <- '\x00'; + pointer.offset <- offset + 1 + end else + pointer.offset <- offset + end diff --git a/PC_Mainboard/driver/RW.mli b/PC_Mainboard/driver/RW.mli index 4fe39fa..92948c0 100644 --- a/PC_Mainboard/driver/RW.mli +++ b/PC_Mainboard/driver/RW.mli @@ -7,20 +7,38 @@ * This file is a part of [kro]bot. *) -val get_int8 : string -> int -> int -val set_int8 : string -> int -> int -> unit +(** Serialisation/deserialisation *) -val get_int16 : string -> int -> int -val set_int16 : string -> int -> int -> unit +(** {6 Writing} *) -val get_int32 : string -> int -> int -val set_int32 : string -> int -> int -> unit +type writer -val get_uint8 : string -> int -> int -val set_uint8 : string -> int -> int -> unit +val writer : string -> writer + (** [writer buffer] creates a writer which writes into [buffer] *) -val get_uint16 : string -> int -> int -val set_uint16 : string -> int -> int -> unit +val put_sint8 : writer -> int -> unit +val put_sint16 : writer -> int -> unit +val put_sint32 : writer -> int -> unit -val get_uint32 : string -> int -> int -val set_uint32 : string -> int -> int -> unit +val put_uint8 : writer -> int -> unit +val put_uint16 : writer -> int -> unit +val put_uint32 : writer -> int -> unit + +val put_string : writer -> string -> unit + +(** {6 Reading} *) + +type reader + +val reader : string -> reader + (** [reader buffer] creates a reader which reads from [buffer] *) + +val get_sint8 : reader -> int +val get_sint16 : reader -> int +val get_sint32 : reader -> int + +val get_uint8 : reader -> int +val get_uint16 : reader -> int +val get_uint32 : reader -> int + +val get_string : reader -> string diff --git a/PC_Mainboard/driver/card.ml b/PC_Mainboard/driver/card.ml deleted file mode 100644 index 5ecf347..0000000 --- a/PC_Mainboard/driver/card.ml +++ /dev/null @@ -1,350 +0,0 @@ -(* - * card.ml - * ------- - * Copyright : (c) 2009, Jeremie Dimino <je...@di...> - * Licence : BSD3 - * - * This file is a part of [kro]bot. - *) - -module Log = Lwt_log.Make(struct let section = "card" end) - -open Lwt - -(* +-----------------------------------------------------------------+ - | Messages | - +-----------------------------------------------------------------+ *) - -let data_length = 52 - (* Taille en octet du corps d'un message *) - -type serial = int - (* Type d'un numéro de série d'un message *) - -type message = { - host_serial : serial; - (* Le numéro de série du message, émis par l'ordinateur. Vaut 0 pour - les messages émis par le PIC. *) - - device_serial : serial; - (* Le numéro de série du message, émis par le PIC. Vaut 0 pour les - messages émis par l'ordinateur. *) - - command : int; - (* La commande, en fait c'est plutôt le type du message *) - - error : int; - (* Si c'est un message d'erreur ce flag est non-nul *) - - data : string; - (* Les données du messages, il y a 52 octets. *) -} - -let make_buffer () = String.make data_length '\000' - -(* Parse un message depuis un buffer brut: *) -let parse_message buf = { - host_serial = Char.code buf.[Protocol.up_hseq]; - device_serial = Char.code buf.[Protocol.up_dseq]; - command = Char.code buf.[Protocol.up_cmd]; - error = Char.code buf.[Protocol.up_err]; - data = String.sub buf Protocol.up_data 52; -} - -(* Créé un buffer brut depuis un message: *) -let forge_message msg = - let buf = String.make 64 '\000' in - buf.[Protocol.up_hseq] <- Char.chr msg.host_serial; - buf.[Protocol.up_dseq] <- Char.chr msg.device_serial; - buf.[Protocol.up_cmd] <- Char.chr msg.command; - buf.[Protocol.up_err] <- Char.chr msg.error; - if String.length msg.data > 52 then - Printf.ksprintf invalid_arg "message body too big: %d > 52" (String.length msg.data) - else begin - String.blit msg.data 0 buf Protocol.up_data (String.length msg.data); - buf - end - -(* +-----------------------------------------------------------------+ - | Definitions | - +-----------------------------------------------------------------+ *) - -exception Card_closed -exception Card_crashed of string - -module Int_map = Map.Make(struct type t = int let compare = compare end) - -(* Type of a up and running card *) -type card = { - mutable serial_pool : serial list; - (* Pool de serial disponibles, comme il n'y a que 256 serial - disponibles on évite de juste incrémenter un compteur au pif. *) - - mutable reply_waiters : string Lwt.u Int_map.t; - (* Threads en attente d'une réponse *) - - handle : USB.handle; - (* Handle pour le périphérique usb *) - - kernel_active : bool; - (* Est-ce qu'un driver noyau était attaché à la carte avant qu'on - l'utilise ? *) - - mutex : Lwt_mutex.t; - (* Mutex pour envoyer des commandes, les cartes n'aiment pas les - appels parallèles. *) - - mutable events : (string -> unit) Lwt_sequence.t Int_map.t; - (* Connected events *) - - abort_waiter : int Lwt.t; - abort_wakener : int Lwt.u; - (* Sleeping thread which is wakeup when the card is closed *) - - wrapper : wrapper; - (* The associated wrapper *) -} - -and state = - | Opened of card - | Closed of exn - -and wrapper = { - mutable state : state; - name : string; - watch : [ `Error of exn | `Closed ] Lwt.t; -} - -type t = wrapper - -let name wrapper = wrapper.name -let closed wrapper = match wrapper.state with - | Opened _ -> false - | Closed _ -> true - -let watch wrapper = wrapper.watch - -(* Return a running card, if possible. *) -let rec get_card wrapper = match wrapper.state with - | Opened card -> - return card - | Closed exn -> - fail exn - -(* +-----------------------------------------------------------------+ - | Aborting | - +-----------------------------------------------------------------+ *) - -let abort wrapper exn = - match wrapper.state with - | Closed exn -> - return exn - | Opened card -> - wrapper.state <- Closed exn; - try_lwt - lwt () = USB.release_interface card.handle 0 in - if card.kernel_active then USB.attach_kernel_driver card.handle 0; - USB.close card.handle; - return exn - finally - wakeup_exn card.abort_wakener exn; - Int_map.iter (fun serial w -> wakeup_exn w exn) card.reply_waiters; - return () - -(* +-----------------------------------------------------------------+ - | Dispatching | - +-----------------------------------------------------------------+ *) - -let dropped typ msg = - lwt () = Log.warning_f "%s dropped" typ in - lwt () = Log.warning_f "===== -host_serial = %d -device_serial = %d -command = %d -error = %d -data:" msg.host_serial msg.device_serial msg.command msg.error in - Lwt_stream.iter_s (fun line -> Log.warning line) (Lwt_stream.hexdump (Lwt_stream.of_string msg.data)) - -(* Dispatch incomming messages continously *) -let rec dispatch card = - let buffer = String.create 64 in - begin - try_lwt - select [card.abort_waiter; - USB.interrupt_recv - ~handle:card.handle - ~endpoint:1 - buffer 0 64] >|= fun len -> `OK len - with exn -> - return (`Error exn) - end >>= function - | `Error exn -> - lwt () = Log.exn_f exn "stop dispatching on %s card" card.wrapper.name in - lwt _ = abort card.wrapper exn in - return () - | `OK len -> - if len <> 64 then begin - let msg = Printf.sprintf "read on %s card returned %d instead of 64" card.wrapper.name len in - lwt () = Log.error msg in - lwt _ = abort card.wrapper (Card_crashed msg) in - return () - end else begin - let msg = parse_message buffer in - if msg.command = Protocol.cmd_respond then begin - match try Some(Int_map.find msg.host_serial card.reply_waiters) with Not_found -> None with - | Some wakener -> - card.reply_waiters <- Int_map.remove msg.host_serial card.reply_waiters; - card.serial_pool <- card.serial_pool @ [msg.host_serial]; - Lwt.wakeup wakener msg.data - | None -> - ignore (dropped "response" msg) - end else begin - match try Some(Int_map.find msg... [truncated message content] |
From: Jérémie D. <Ba...@us...> - 2010-02-24 22:18:40
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 085efdbed4f0703aa3d6a2e3be36ed0cc993c32d (commit) from f763bb5ede549e946affa6f5f8b1817de9656595 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 085efdbed4f0703aa3d6a2e3be36ed0cc993c32d Author: Jérémie Dimino <je...@di...> Date: Wed Feb 24 23:05:17 2010 +0100 Add get-positions ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/interface/interface.ml b/PC_Mainboard/interface/interface.ml index 8d042dc..1d217fe 100644 --- a/PC_Mainboard/interface/interface.ml +++ b/PC_Mainboard/interface/interface.ml @@ -534,5 +534,12 @@ let interfaces = [ ~repl:[Arg("right", sint32); Arg("left", sint32)] (); + request + ~name:"get-positions" + ~code:PcInterface.cmd_get + ~args:[Cst(uint8, PcInterface.get_current_pos)] + ~repl:[Arg("right", sint32); + Arg("left", sint32)] + (); ]); ] hooks/post-receive -- krobot |
From: Olivier B. <Ba...@us...> - 2010-02-24 22:16:17
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via f763bb5ede549e946affa6f5f8b1817de9656595 (commit) from 4b6f331e6e1c0a2c4e91e5f13838a77ab7110ad7 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit f763bb5ede549e946affa6f5f8b1817de9656595 Author: Olivier BICHLER <oli...@gm...> Date: Wed Feb 24 23:15:56 2010 +0100 Fixed goto() ----------------------------------------------------------------------- Changes: diff --git a/USB_Module/Motor_Controller/Firmware/Motor_Controller.mcw b/USB_Module/Motor_Controller/Firmware/Motor_Controller.mcw index fd79bb8..0a02801 100644 Binary files a/USB_Module/Motor_Controller/Firmware/Motor_Controller.mcw and b/USB_Module/Motor_Controller/Firmware/Motor_Controller.mcw differ diff --git a/USB_Module/Motor_Controller/Firmware/lm629.c b/USB_Module/Motor_Controller/Firmware/lm629.c index c022818..426f9cf 100644 --- a/USB_Module/Motor_Controller/Firmware/lm629.c +++ b/USB_Module/Motor_Controller/Firmware/lm629.c @@ -765,7 +765,7 @@ void goTo(short x, short y, short vel, short acc, BYTE mode, short d) { if (mode == GOTO_CURVE_LEFT) { // angle2 = angle2 if we pass left - turnLeft(90.0-angle2*180.0/PI, vel, acc); + turnRight(90.0-angle2*180.0/PI, vel, acc); posRight = (r - (float) WHEELS_DIST/2.0)*angle3; posLeft = (r + (float) WHEELS_DIST/2.0)*angle3; @@ -776,7 +776,7 @@ void goTo(short x, short y, short vel, short acc, BYTE mode, short d) { // If we pass right, we need to adjust the calculated angle angle2 = 2.0*angle1 - angle2; - turnLeft(90.0-angle2*180.0/PI, vel, acc); + turnRight(90.0-angle2*180.0/PI, vel, acc); posRight = (r + (float) WHEELS_DIST/2.0)*angle3; posLeft = (r - (float) WHEELS_DIST/2.0)*angle3; diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof index 0a9c20b..2c0c916 100644 Binary files a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof and b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof differ diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex index 6ddce26..fc58abe 100644 --- a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex +++ b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex @@ -1,18 +1,18 @@ :020000040000FA -:060000006AEF30F012006F +:0600000064EF30F0120075 :0600080004EF04F01200F9 :060018000CEF04F01200E1 -:060800006AEF30F0120067 -:06080800FDEF0FF01200ED -:0608180065EF10F0120074 -:06082A00040067610000FC -:1008300026010000210000005F6100005F01000050 -:100840000800000051610000470100000E00000098 -:0C0850004E6100006A010000030000007F -:04085C000BEC0DF0A4 +:0608000064EF30F012006D +:06080800F7EF0FF01200F3 +:060818005FEF10F012007A +:06082A0004005B61000008 +:100830002601000021000000536100005F0100005C +:100840000800000045610000470100000E000000A4 +:0C085000426100006A010000030000008B +:04085C000DEC0DF0A2 :10086000FE0EDB5006E1F80E96163C0E9416959897 :1008700008D0FE0EDB0405E1070E9612C30E94129B -:10088000958810EF0DF0D9CFE6FFE1CFD9FFE65202 +:10088000958812EF0DF0D9CFE6FFE1CFD9FFE65200 :10089000010EE66EE3DFE552809AFE0EDB5004E0C7 :1008A000FE0EDB5002080FE1839C81880000839ECE :1008B0000000000000008450010BDF6E838E0000FA @@ -98,1374 +98,1372 @@ :100DB000F3CF00F08250400B01E0010E800DF350A4 :100DC0000010011002100310041005100610DF6E51 :100DD000838EDF5000D0E552E552E7CFD9FF1200F5 -:100DE0000BEC0DF0E652DF6A67EC0DF0DF6EFD0EE6 +:100DE0000DEC0DF0E652DF6A69EC0DF0DF6EFD0EE2 :100DF000DB50DF14DF6EDF5002E0010E01D0000E89 -:100E0000E55210EF0DF00BEC0DF01D0ED6EC0CF0D2 -:100E1000000E0EEC0FF010EF0DF00BEC0DF067EC88 -:100E20000DF084080FE067EC0DF0C4080BE0E66AF3 -:100E3000E3EC0EF0D9EC0EF0020EE66E3DEC30F075 -:100E4000E552EDD71C0ED6EC0CF00A0E0EEC0FF0AE -:100E5000E7EC0DF067EC0DF0800804E067EC0DF0B6 -:100E6000C008E5E167EC0DF0C00802E1E7EC0DF029 -:100E70001E0ED6EC0CF00F0E0EEC0FF0C8EC0FF0BF -:100E8000FA0EDBCFE6FFFB0E76EC0EF0F80EDBCFB2 -:100E9000E6FFF90E76EC0EF0F60EDBCFE6FFF70E6E -:100EA00076EC0EF0040ED6EC0CF010EF0DF00BEC1F -:100EB0000DF0080EE126010E08EC0DF0010EE7CF53 -:100EC000DBFF020E37EC0FF0DF6E030E08EC0DF0C7 -:100ED000030EE7CFDBFF040E08EC0DF0020EE7CFA8 -:100EE000DBFF050E08EC0DF0050EE7CFDBFF060E6D -:100EF00008EC0DF0040EE7CFDBFF070E08EC0DF059 -:100F0000070EE7CFDBFF080E08EC0DF03EEC0DF00E -:100F1000E66AECEC0DF0090E08EC0DF0010EE7CFDF -:100F2000DBFF0A0E37EC0FF0DF6E0B0E08EC0DF056 -:100F3000030EE7CFDBFF0C0E08EC0DF0020EE7CF3F -:100F4000DBFF0D0E08EC0DF0050EE7CFDBFF0E0EFC -:100F500008EC0DF0040EE7CFDBFF0F0E08EC0DF0F0 -:100F6000070EE7CFDBFF100E08EC0DF03EEC0DF0A6 -:100F7000010EE66EECEC0DF0020EE66EE4EC0DF008 -:100F8000020EE66EE66AD7EC0DF007E1020EE66EA1 -:100F9000010EE66ED7EC0DF002E0000E01D0010E5E +:100E0000E55212EF0DF00DEC0DF01D0ED8EC0CF0CC +:100E1000000E08EC0FF012EF0DF00DEC0DF069EC88 +:100E20000DF084080FE069EC0DF0C4080BE0E66AF1 +:100E3000DDEC0EF0D3EC0EF0020EE66E37EC30F087 +:100E4000E552EDD71C0ED8EC0CF00A0E08EC0FF0B2 +:100E5000E9EC0DF069EC0DF0800804E069EC0DF0B0 +:100E6000C008E5E169EC0DF0C00802E1E9EC0DF025 +:100E70001E0ED8EC0CF00F0E08EC0FF0C2EC0FF0C9 +:100E8000FA0EDBCFE6FFFB0E73EC0EF0F80EDBCFB5 +:100E9000E6FFF90E73EC0EF0F60EDBCFE6FFF70E71 +:100EA00073EC0EF0040ED8EC0CF012EF0DF00DEC1C +:100EB0000DF0080EE126010E0AEC0DF0010EE7CF51 +:100EC000DBFF020E31EC0FF0DF6E030E0AEC0DF0CB +:100ED000030EE7CFDBFF040E0AEC0DF0020EE7CFA6 +:100EE000DBFF050E0AEC0DF0050EE7CFDBFF060E6B +:100EF0000AEC0DF0040EE7CFDBFF070E0AEC0DF055 +:100F0000070EE7CFDBFF080E0AEC0DF040EC0DF00A +:100F1000E66AEEEC0DF0090E0AEC0DF0010EE7CFDB +:100F2000DBFF0A0E31EC0FF0DF6E0B0E0AEC0DF05A +:100F3000030EE7CFDBFF0C0E0AEC0DF0020EE7CF3D +:100F4000DBFF0D0E0AEC0DF0050EE7CFDBFF0E0EFA +:100F50000AEC0DF0040EE7CFDBFF0F0E0AEC0DF0EC +:100F6000070EE7CFDBFF100E0AEC0DF040EC0DF0A2 +:100F7000010EE66EEEEC0DF0020EE66EE6EC0DF004 +:100F8000020EE66EE66AD9EC0DF007E1020EE66E9F +:100F9000010EE66ED9EC0DF002E0000E01D0010E5C :100FA000006E080EE15C02E2E16AE552E16E00507B -:100FB00010EF0DF00BEC0DF00C0EE12670EC0DF0C7 -:100FC000D950F20F12EC0FF0080EEECFDBFF090E36 +:100FB00012EF0DF00DEC0DF00C0EE12672EC0DF0C1 +:100FC000D950F20F0CEC0FF0080EEECFDBFF090E3C :100FD000EECFDBFF0A0EEECFDBFF0B0EEECFDBFF1B -:100FE0001F0ED6EC0CF0080EDBCF00F0090EDBCFA5 -:100FF00001F00A0EDBCF02F00B0E22EC0FF00CE03A -:101000002B0E0EEC0FF00A0EDBCFE6FF0B0E76EC8C -:101010000EF094EC0DF003D00B0EE66EE66AAEEC2B -:101020000CF090EC0FF0DDEC0DF002E0000E01D0C2 -:10103000010E000E000907E01CEC0DF0A2EC0FF011 -:10104000E3EC0EF03DD0DDEC0DF003E0FE0EDB0432 +:100FE0001F0ED8EC0CF0080EDBCF00F0090EDBCFA3 +:100FF00001F00A0EDBCF02F00B0E1CEC0FF00CE040 +:101000002B0E08EC0FF00A0EDBCFE6FF0B0E73EC95 +:101010000EF096EC0DF003D00B0EE66EE66AB0EC27 +:101020000CF08AEC0FF0DFEC0DF002E0000E01D0C6 +:10103000010E000E000907E01EEC0DF09CEC0FF015 +:10104000DDEC0EF03DD0DFEC0DF003E0FE0EDB0436 :1010500027E1FA0EDBCF00F0FB0EDBCF01F0FC0E38 :10106000DBCF02F0FD0EDBCF03F0000E006C011EA3 :101070000122021E0222031E032200C0DFFF010E16 :1010800001C0DBFF020E02C0DBFF030E03C0DBFF6B -:101090009BEC0FF0BCEC0DF0DEEC0EF0BCEC0DF0B8 -:1010A000DDEC0DF003E0FE0EDB500CE11CEC0DF06E -:1010B0009BEC0FF0E66AABEC0EF0DEEC0EF0E66AAD -:1010C000ABEC0EF00C0EE15C02E2E16AE552E16E7F -:1010D00010EF0DF00BEC0DF00A0EE1261CEC0DF0FC -:1010E00070EC0DF0080EF36EDB6E090EF3CFDBFF34 -:1010F0001F0ED6EC0CF080EC0DF007E0D950080F75 -:10110000E96EDACFEAFFEE8AED52DDEC0DF002E097 +:1010900095EC0FF0BEEC0DF0D8EC0EF0BEEC0DF0C0 +:1010A000DFEC0DF003E0FE0EDB500CE11EEC0DF06A +:1010B00095EC0FF0E66AA5EC0EF0D8EC0EF0E66ABF +:1010C000A5EC0EF00C0EE15C02E2E16AE552E16E85 +:1010D00012EF0DF00DEC0DF00A0EE1261EEC0DF0F6 +:1010E00072EC0DF0080EF36EDB6E090EF3CFDBFF32 +:1010F0001F0ED8EC0CF082EC0DF007E0D950080F71 +:10110000E96EDACFEAFFEE8AED52DFEC0DF002E095 :10111000000E01D0010E000E00090AE0F50EDB04FE -:1011200002E1C0EC0DF094EC0DF0E3EC0EF01ED0FB -:10113000DDEC0DF003E0FE0EDB040AE1F50EDB5002 -:10114000FF0802E1C0EC0DF094EC0DF0BCEC0DF0EA -:10115000DDEC0DF003E0FE0EDB500AE1F50EDB04E2 -:1011600002E1C0EC0DF094EC0DF0E66AABEC0EF091 -:1011700080EC0DF002E090EC0FF0A2EC0FF0EEDB53 -:101180000A0EE15C02E2E16AE552E16E10EF0DF059 -:101190000BEC0DF0F90EDBCFE6FFE66AE66AE66AD5 -:1011A000E66AD950FA0F12EC0FF0A9EC0FF0E3EC5D -:1011B0000EF090DF006E0A0EE15E005010EF0DF0B1 -:1011C0000BEC0DF0FE0EDB5003E0DDEC0DF00FE15B -:1011D000CEEC0FF01EEC0FF0F3CF61F1F4CF62F123 -:1011E000E66A1EEC0FF0F3CF5FF1F4CF60F1FE0E74 -:1011F000DB0403E0DDEC0DF010E117EC0FF01EEC6A -:101200000FF0F3CF65F1F4CF66F1010EE66E1EEC40 -:101210000FF0F3CF63F1F4CF64F1010EC7DB10EFF1 -:101220000DF0F9DB1F0EC2DBC8EC0FF0010EBEDBC8 -:10123000F7D33CEC0FF0DDEC0DF005E12D6A2E6AE2 -:101240002F6A306A12D00B0EB1DBE3EC0EF08CEC9F -:101250000DF0DE6ADD6ADECF2DF0DECF2EF0DECFC0 -:101260002FF0DDCF30F0DD52DD52040EE15C02E202 -:10127000E16AE552E16ED4D3E7EC0EF0E1EC0DF05B -:101280005FEC0DF0CDD3E7EC0EF0E7DB020E5FEC88 -:101290000DF0C6D3D4EC0FF0E0DBE66A9BEC0DF06A -:1012A000FFEC0DF049EC0FF0C3EF0EF0D4EC0FF0B3 -:1012B00049EC0FF0E66A9BEC0DF0FFEC0DF0CDDB96 -:1012C000C3EF0EF0A8DB3C0EE12670EC0EF05FECF5 -:1012D0000FF070EC0EF0B2EC0FF056EC0FF008C00F -:1012E0002EF009C02FF00AC030F00BC031F081ECB5 -:1012F00022F07EEC0FF0BEEC0EF068EC0FF087EC05 -:101300000FF0BEEC0EF0A8EC0DF056EC0FF014C090 -:101310002EF015C02FF016C030F017C031F081EC60 -:1013200022F09FEC0EF075EC0FF098EC21F04DECF4 -:101330000FF0336A346A800E356E40EC0FF0380ED1 -:101340002EC0DBFF390E2FC0DBFF3A0E30C0DBFFB3 -:101350003B0E31C0DBFF70EC0EF04DEC0FF0BCDB50 -:10136000BEEC0EF034DBB8DBE0EC2AF0086E080EC1 -:10137000E15E0850080E2DC0DBFF090E2EC0DBFF1A -:101380000A0E2FC0DBFF0B0E30C0DBFFDBDBF60EDF -:10139000DB5007E0D950F40F12EC0FF0EE50ED10D7 -:1013A0003DE142DB080EDBCF0EF0090EDBCF0FF084 -:1013B0000A0EDBCF10F00B0E64DA6CDFFAEC0DF0E6 -:1013C00042DAB1EC0EF02E6A2F6A800E306E400EBB -:1013D000316E380EDBCF33F0390EDBCF34F03A0EFE -:1013E000DBCF35F03B0EC4EC0FF0ECEC0EF074DB11 -:1013F000D2EC0EF02DC002F02EC003F02FC004F08E -:1014000030C005F02DC02EF029EC0FF0CCEC0EF022 -:1014100033DF0A6E060EE15E0A50D4D1380EDBCF00 -:1014200004F0390EDBCF05F03A0EDBCF06F03B0EB1 -:10143000DBCF07F00C6A0D6A0E6A400E0F6E91DA70 -:1014400081EC22F03CEC0EF0F40EDBCF2FF0F50E29 -:101450007FDB9EDB9CEC0EF098EC21F0140E2EC08E -:10146000DBFF150E2FC0DBFF160E30C0DBFF170EA3 -:1014700032DA70EC0EF09CEC0EF081EC22F0180EDB -:101480002EC0DBFF190E2FC0DBFF1A0E30C0DBFFB2 -:101490001B0E21DABEEC0EF068EC0FF09CEC0EF0A7 -:1014A00081EC22F01C0E2EC0DBFF1D0E2FC0DBFFD7 -:1014B0001E0E30C0DBFF1F0E31C0DBFF1C0EDBCF6A -:1014C00000F01D0EDBCF01F01E0EDBCF02F01F0E71 -:1014D000DBCF03F088DB93EC0EF081EC22F0200EE2 -:1014E0002EC0DBFF210E2FC0DBFF220E30C0DBFF42 -:1014F000230E31C0DBFFD950180FE96EDACFEAFFB7 -:10150000240EEECFDBFF250EEECFDBFF260EEECF57 -:10151000DBFF270EEECFDBFFFD0EDBCF2FF0FE0E45 -:10152000EDEC0FF0200EDBCF33F0210EDBCF34F0EB -:10153000220EDBCF35F0230EA2EC0EF0280E2EC0CB -:10154000DBFF290E2FC0DBFF2A0E30C0DBFF2B0E86 -:1015500031C0DBFFBEEC0EF0EDEC0FF0240EDBCF64 -:1015600033F0250EDBCF34F0260EDBCF35F0270E1F -:10157000E9DB2C0E2EC0DBFF2D0E2FC0DBFF2E0E65 -:1015800030C0DBFF2F0E31C0DBFF2C0EDBCF04F0B1 -:101590002D0EDBCF05F02E0EDBCF06F02F0EDBCFAE -:1015A00007F021DB75EC0FF081EC22F078DA300ED9 -:1015B0002EC0DBFF310E2FC0DBFF320E30C0DBFF51 -:1015C000330E31C0DBFF280EDBCF2EF0290EDBCF30 -:1015D0002FF02A0EDBCF30F02B0EDBCF31F05FDAAD -:1015E000340E2EC0DBFF350E2FC0DBFF360E30C0B1 -:1015F000DBFF370E31C0DBFFD950300F6CDBD95029 -:10160000340F69DBE0EC2AF0006E080EE15E00505A -:101610000C0E2DC0DBFF0D0E2EC0DBFF0E0E2FC0FB -:10162000DBFF0F0E30C0DBFF006A016A026A400E6A -:10163000036E00C0E6FF01C0E6FF02C0E6FFE66EF3 -:101640003BDB5FEC0FF048DAD8EC0FF02DC014F064 -:101650002EC015F02FC016F030C017F049EC0FF077 -:10166000E0EC2AF0186E080EE15E1850E552E7CF64 -:1016700003F0E552E7CF02F0E552E7CF01F0E55283 -:10168000E7CF00F02DC004F02EC005F02FC006F00B -:1016900030C007F0AADB47DB81EC22F0100E2EC031 -:1016A000DBFF110E2FC0DBFF120E30C0DBFF130E6D -:1016B00031C0DBFFF60EDB5002081BE123DB97ECA9 -:1016C00021F09CDB98EC21F075D94CDA060E2FC086 -:1016D000DBFF070E30C0DBFFD7DB79D9020EDBCF93 -:1016E0002FF0030EF2EC0FF0040E2FC0DBFF050EFF -:1016F0004ED02E6A2F6A306A400E316E080EDBCF54 -:1017000033F0090EDBCF34F00A0EDBCF35F00B0ED1 -:10171000C4EC0FF0C2DB0C0EDBCF04F00D0EDBCF00 -:1017200005F00E0EDBCF06F00F0EDBCF07F004C086 -:1017300033F005C034F006C035F007C036F097EC42 -:1017400021F00C0E2EC0DBFF0D0E2FC0DBFF0E0EA6 -:1017500030C0DBFF0F0E31C0DBFFD4DA98EC21F094 -:101760004DDB97EC21F026D9FDD9040E2FC0DBFF0D -:10177000050E30C0DBFF020EDBCF2FF0030E27D9A2 -:1017800083DBF2EC0FF0060E2FC0DBFF070E30C03C -:10179000DBFF59D805D9040EDBCF2FF0050E54DA44 -:1017A00078DB72DBD4DAE66A5BDBFAD8060EDBCFD5 -:1017B0002FF0070E49DA05DADBCF2FF0030EC7DA78 -:1017C000010E7DD93C0EE15C02E2E16AE552E16E78 -:1017D00027D152DBE3DBA0D9E66ADFD901015F51F3 -:1017E000EE5C066E6051EE58076E6151EE58086E61 -:1017F0006251F0D802E2E16AE552E16E11D13CDBC0 -:1018000016DB8AD9010EE66EC8D901016351EE5C80 -:10181000066E6451EE58076E6551EE58086E6651BB -:10182000D9D802E2E16AE552E16EFAD0040EE66E22 -:10183000E66ABDD906E0040EE66E010EE66EB7D983 -:1018400001E1000C010CF2DF0009FDE01200BCDB3D -:101850001ADA94DAF9D91DDB70EF0EF02EC01CF005 -:101860002FC01DF030C01EF031C01FF035DBB1DBE2 -:101870002DC018F02EC019F02FC01AF030C01BF088 -:101880001200DBCF11F0336A346A340E356E430E2A -:10189000366E0EC02EF00FC02FF010C030F011C009 -:1018A00031F081EC22F02EC00AF02FC00BF030C0D6 -:1018B0000CF031C00DF0DB0E336E0F0E346E490E9E -:1018C000356EDEDA89DAF2DA02C02EF0C2DA97EC8F -:1018D00021F0CCEF0EF031C0DBFF046A056A800E08 -:1018E000066E3F0E076E0C6A0D6A0E6A400E0F6E92 -:1018F00004C0E6FF05C0E6FF06C0E6FF07C0E6FF3E -:101900000CC0E6FF0DC0E6FF0EC0E6FFE66E50DB42 -:10191000E552E7CF0FF0E552E7CF0EF0E552E7CF03 -:101920000DF0E552E7CF0CF0E552E7CF07F0E552B6 -:10193000E7CF06F0E552E7CF05F0E552E7CF04F038 -:101940002DC010F02EC011F02FC012F030C013F0D7 -:101950004CDA5BDA81EC22F03CEF0EF034DAABEFDC -:101960000EF0F40EDBCF2FF0F50EB2DAE8D905EF6A -:101970000FF09CDA93EF0EF0140EDBCF00F0150E93 -:10198000DBCF01F0160EDBCF02F0170EDBCF03F03A -:10199000336A346ADC0E356E420E366E93EF0EF00B -:1019A000F70EDBCF2FF0F80E43EF0EF0E66E0BDAFA -:1019B000D9EF0EF0100EDBCF33F0110EDBCF34F089 -:1019C000120EDBCF35F0130EDFDAEEEF22F080DA05 -:1019D0007EEF0FF0EE58096E06C02DF007C02EF016 -:1019E00008C02FF0306E7EEC21F02EC002F02FC028 -:1019F00003F030C004F031C005F06EDA2EEC22F0B6 -:101A0000DCDA2FC0F3FF30C0F4FF040EE15C1200FB -:101A10002EDAE76E1200D9CFE6FFE1CFD9FF120030 -:101A2000E552E7CFD9FF12009CD9026A036AB40ECF -:101A3000046E420E056E1200D9CFE9FFDACFEAFF3D -:101A4000FA0EDBCFEEFFFB0EDBCFEEFFFC0EDBCFA3 -:101A5000EEFFFD0EDBCFEEFF1200000E186C191E1C -:101A600019221A1E1A221B1E1B2218C0E6FF19C0BB -:101A7000E6FF1AC0E6FF1BC0E6FF1200060EE7CF26 -:101A8000DBFFDBCFE6FF070EDBCFE6FF040EDBCF8D -:101A9000E6FF050EDBCFE6FF4EDADEEF0EF0140EAA -:101AA000DBCF33F0150EDBCF34F0160EDBCF35F085 -:101AB000170EDBCF36F02EEC22F04DEF0FF0E66E76 -:101AC000CFD9020EE66EE0EC08F0E55212007BD9A9 -:101AD00090EC06F0E552120089DA31C0E6FF120000 -:101AE000D950F60F9FD9040EEECFDBFF050EEECFD7 -:101AF000DBFF060EEECFDBFF070EEECFDBFF1200A3 -:101B0000040EDBCF00F0050EDBCF01F0060EDBCFBD -:101B100002F0070E22EF0FF091D9020EF3CFDBFF98 -:101B2000030EF4CFDBFF1200080EDBCFE6FF090E39 -:101B3000DBCFE6FF1200DAEC07F0286E0D0EE15E57 -:101B400028501200020EE66E03EC07F0E552120078 -:101B5000BFD92EC018F02FC019F030C01AF031C014 -:101B60001BF01200020E2FC0DBFF030E30C0DBFFA4 -:101B70002BDADBCF30F01200010EE66EABEF0EF089 -:101B8000D950080FE96EDACFEAFFEE52ED88120065 -:101B9000336A346A356A40EF0FF050D9F3CFDEFF75 -:101BA000F4CFDDFFD9CFE9FFDACFEAFF1200F0EC86 -:101BB00006F0E552E55200091200FE0EDB50020865 -:101BC000120067D9020E1200E66ED9EF0EF0FBD8B4 -:101BD00003EC07F0E55212000DEC07F0006E090E61 -:101BE000E15E00501200336A346A800E356EBF0E1B -:101BF000366E1200126E060EE15E1250120027DEE3 -:101C00002EC024F02FC025F030C026F031C027F0C0 -:101C1000350E336EFA0E346E0E0E356E3C0E366E89 -:101C200081EC22F02EC020F02FC021F030C022F035 -:101C300031C023F0336A346A5C0E356E430E366E63 -:101C400081EC22F02EEF0CF043D961D945D981EC1B -:101C500022F091D9BD0E336E370E346E860E356E7E -:101C6000410E366EB6D92DC00CF02EC00DF02FC02F -:101C70000EF030C00FF0120022D918D936D92EEC50 -:101C800022F04DEF0FF024D91AD926D981EC22F099 -:101C900035D9CC0E336EBC0E346E8C0E356E3B0EC9 -:101CA000366E97D92DC000F02EC001F02FC002F083 -:101CB00030C003F049EF0FF0140EDBCF0CF0150E1F -:101CC000DBCF0DF0160EDBCF0EF0170EDBCF0FF0D3 -:101CD00048DE97EF21F0E96EDACFEAFFA9EF0FF0C7 -:101CE000FD0EDBCF2FF0FE0E68EF0FF0DBCFE6FF2F -:101CF000AEEF0CF069D9ECD835D93BDE81EC22F09F -:101D0000EEEF22F091DE0C0EDBCF0EF00D0EDBCFEE -:101D10000FF00E0EDBCF10F00F0EB3DD56EC09F016 -:101D200069DFBCEF0CF000C02EF001C02FF002C044 -:101D300030F003C031F01200EAD8B9EF0CF01BD933 -:101D400056EF0FF021D9BBD814DE97EF21F0C0D8A1 -:101D500085DD49EF0FF0FDEC04F0E552E552E55268 -:101D60001200F70EDBCFE6FFF80EDBCFE6FFF90E31 -:101D7000DBCFE6FFFA0EDBCFE6FF1200FB0EDBCF78 -:101D80002FF0FC0E1200010EE66ED5DE020EE66E9E -:101D9000E0EC08F0E55244D610D92FC0E6FF30C081 -:101DA000E6FF1200F3EC26F0E552E552E552E5526B -:101DB00012007EEC04F0E552E5521200DECFE6FFA1 -:101DC000DDCFE6FF1200FE0EDBCFE6FF120023DEC2 -:101DD000B9DE3DDD2EEF0CF02EC006F02FC007F06F -:101DE00030C008F031C009F012002DC033F02EC011 -:101DF00034F02FC035F030C036F01200DBDD2FC0DC -:101E0000DEFF30C0DDFFBCEF0CF00CC02EF00DC0CB -:101E10002FF00EC030F00FC031F01200E66EE66A0F -:101E2000AEEF0CF0E96EFF0EDA20EA6E12000A0E39 -:101E3000E66E010EC9DE010EE66E1200E2EC05F060 -:101E4000E5521200DBCF03F0005001100210031026 -:101E5000120003C02FF004C030F005C031F01200B2 -:101E6000DAEC07F0206E0D0EE15E20501200E66EF7 -:101E700084EC2FF0E5521200CEDD040EE1261200B4 -:101E8000400E366E2EEF22F0000EDFCF2FF0010E47 -:101E900012002DC0E6FFF6EF0FF02EC000F02FC0AD -:101EA00001F030C002F031C003F012002EC033F058 -:101EB0002FC034F030C035F031C036F012002EC0E3 -:101EC00008F02FC009F030C00AF031C00BF012004A -:101ED000DBCF30F069EF21F0A60E336E280E346EA2 -:101EE000940E356E3F0E366E120004C02EF005C003 -:101EF0002FF006C030F007C031F012002EC004F001 -:101F00002FC005F030C006F031C007F012002EC01F -:101F100014F02FC015F030C016F031C017F01200C9 -:101F2000060EDBCFE6FF070EE1DE040EDBCFE6FF99 -:101F3000050E76EF0EF0020EDBCFE6FF030EDBCFD1 -:101F4000E6FF1200020EDBCFE6FF030ECFDEDEEF70 -:101F50000EF0EECFE6FFEECFE6FFEECFE6FFEFCFDF -:101F6000E6FF12002EC00CF02FC00DF030C00EF0B6 -:101F700031C00FF012002EC010F02FC011F030C091 -:101F800012F031C013F01200DBCF36F081EF22F0F7 -:101F9000FC0EDBCFE6FFFD0E76EF0EF00A0EE66ECE -:101FA000E66A07DFE66A120036DDCCDDFFEF0DF0F2 -:101FB000D950380F90DED2EF0EF0EEEC22F02FC0A9 -:101FC00000F030C001F01200F90EDBCF2FF0FA0E56 -:101FD000120081EC22F01DEF23F0F9DCD9DD5DDF8A -:101FE0005CEF0EF075DF48DE7AEF0EF02EC0E6FFF4 -:0A1FF0002FC0E6FF30C0E6FF12002C -:061FFA00DACFE4FFE2CFA4 -:10200000DAFFE9CFE4FFEACFE4FFF6CFE4FFF7CF52 -:10201000E4FFF5CFE4FFF3CFE4FFF4CFE4FFFACF22 -:10202000E4FF00EE29F0140EE80403E3EECFE4FF32 -:10203000FBD700EE00F0290EE80403E3EECFE4FF47 -:10204000FBD799EC1BF09EA013D0A3EC1BF0010171 -:102050004D2B000E4E23E80E4D5D030E4E5905E349 -:102060004D6B4E6B4F2B000E502314EC29F09E90BD -:10207000ACEC1BF002E2E16AE552E16EE552E7CF1B -:10208000D9FFE55200EE28F0290EE80403E3E5CF7E -:10209000EDFFFBD700EE3CF0140EE80403E3E5CFC0 -:1020A000EDFFFBD7E5CFFAFFE5CFF4FFE5CFF3FF78 -:1020B000E5CFF5FFE5CFF7FFE5CFF6FFE5CFEAFF88 -:1020C000E5CFE9FFE5CFDAFF1100D8CFE4FFE0CF9D -:1020D000E4FFE46EDACFE4FFE2CFDAFFF3CFE4FF10 -:1020E000F4CFE4FF99EC1BF0ACEC1BF002E2E16AE8 -:1020F000E552E16EE552E7CFD9FFE552E5CFF4FFB7 -:10210000E5CFF3FFE5CFDAFFE550E5CFE0FFE5CF20 -:10211000D8FF100004D8F7EC1BF060D8FCD70F0EE6 -:10212000C11202D8C1EF1BF0BCEC1BF0E65270EC00 -:102130001BF00101676F070E675D10E1E66A84EC32 -:102140002FF0E552DF6E000EDF80B4EC1BF0E66A84 -:102150003DEC30F0E552DF70B4EC1BF0D08EF28E27 -:10216000F28CF30E8C1695160101476B486B496B88 -:102170004A6B010E4B6FF90E921680160E0EE66E2C -:102180007C0EE66EE10EE66EF7EC2EF0E552E552BF -:10219000E552CF0E9216939894943F0E9516010E29 -:1021A000E66E2EEC04F0E552838C81888284808A6E -:1021B000838E80888294010EE66E78EC30F0E552D2 -:1021C00082849D80C50EE66ECDEC2FF0E552A3EC27 -:1021D0001BF0E552E552E7CFD9FF1200D9CFE6FF59 -:1021E000E1CFD9FF0F0EE12601014B5102E0B5EC22 -:1021F0001AF0200E0101005D03E36D50020B02E0B6 -:10220000ABEF1AF0010149514A1102E1000E08D06A -:1022100049C1E9FF4AC1EAFFEF50800B01E0010E1E -:10222000000947E101014651EA6A260FE96E010EF5 -:10223000EA22EF5000083DE20501406B01014C51DC -:102240004C2B0501416F0501040E426F01014651FF -:10225000EA6A260FE96E010EEA22EFCF43F5400E3F -:10226000E66E400EE66E050EE66E010EE66E010E9F -:10227000E66E12EC20F0006E050EE15E0050F3CF2A -:1022800049F1F4CF4AF101014651EA6A260FE96E9D -:10229000010EEA22EF6A01014651000803E2010142 -:1022A000460707D001014551000803E201011F0E56 -:1022B000466F010149514A1102E1000E08D049C19F -:1022C000E9FF4AC1EAFFEF50800B01E0010E00096F -:1022D0002CE10101520529E116EC0CF0000925E082 -:1022E0000501406B01014C514C2B0501416F05016B -:1022F0000A0E426F0501436B0501010E486F400E47 -:10230000E66E400EE66E050EE66E010EE66E010EFE -:10231000E66E12EC20F0006E050EE15E0050F3CF89 -:1023200049F1F4CF4AF10101526B000E0101E76E51 -:102330005119E8AE02D0513503D0E750D88051553D -:1023400001E38ED001015151FF0A29E0FD0A13E09B -:10235000030A01E06ED0020EE66E60EC2AF0E55250 -:1023600057EC07F0000904E00101020E516F02D0A2 -:102370000101516960D0200EE66E030EE66EC80EB4 -:10238000E66EE66AE80EE66E030EE66E3CEC09F0D9 -:10239000006E060EE15E00500101516B4CD0010150 -:1023A00049514A1102E1000E08D049C1E9FF4AC172 -:1023B000EAFFEF50800B01E0010E000939E1050151 -:1023C000406B01014C514C2B0501416F0501050E7D -:1023D000426F0501436B0501486BCF0E006E5D0E29 -:1023E000016E026A00C0E6FF01C0E6FF02C0E6FF20 -:1023F000480EE66E050EE66E48EC2FF0036E050EF5 -:10240000E15E0350400EE66E400EE66E050EE66E8F -:10241000010EE66E010EE66E12EC20F0006E050E67 -:10242000E15E0050F3CF49F1F4CF4AF10101516B65 -:1024300002D00101516B020EE66EE66AF0EC06F086 -:10244000E552E55200090AE1020EE66E010EE66E63 -:10245000F0EC06F0E552E552000902E00101516995 -:1024600001014751481102E1000E08D047C1E9FFC0 -:1024700048C1EAFFEF50800B01E0010E000902E0C5 -:10248000ABEF1AF005010251070A02E10CEF1AF056 -:102490000D0A01E149D2010A01E119D20D0A01E157 -:1024A000B1D1040A1AE0030A07E0010A02E06AEF68 -:1024B0001AF0FF00ABEF1AF0E66A84EC2FF0E55259 -:1024C000DF6E000EDB80DFCFE6FFE66A64EC2FF004 -:1024D000E552E552FF00ABEF1AF0010149514A11F4 -:1024E00002E1000E08D049C1E9FF4AC1EAFFEF50FE -:1024F000800B01E0010E000901E082D100C540F52A -:102500000501416B0501030E426F0501436B050197 -:1025100008510F0A01E110D1080A01E1BBD0010AFC -:1025200001E17ED0020A71E0070A64E0010A20E0BE -:10253000030A06E0010A01E039D167C148F539D143 -:102540000501486BAB0E006E5D0E016E026A00C0A5 -:10255000E6FF01C0E6FF02C0E6FF480EE66E050E8C -:10256000E66E48EC2FF0036E050EE15E035021D1BC -:102570000501486B9F0E006E5D0E016E026A00C081 -:10258000E6FF01C0E6FF02C0E6FF480EE66E050E5C -:10259000E66E48EC2FF0036E050EE15E03509D0ED3 -:1025A000006E5D0E016E026A00C0E6FF01C0E6FF2C -:1025B00002C0E6FF480EE66E050EE66E48EC2FF010 -:1025C000036E050EE15E0350940E006E5D0E016E0B -:1025D000026A00C0E6FF01C0E6FF02C0E6FF480E47 -:1025E000E66E050EE66E48EC2FF0036E050EE15E1A -:1025F0000350DFD092CF48F593CF49F594CF4AF5F9 -:1026000095CF4BF596CF4CF5D4D080CF48F581CF00 -:1026100049F582CF4AF583CF4BF584CF4CF5C9D02D -:10262000E66ABAEC29F0E552010E2DC0DBFF020E7E -:102630002EC0DBFF030E2FC0DBFF040E30C0DBFF1C -:10264000040EDBCF48F5030EDBCF49F5020EDBCFDE -:102650004AF5010EDBCF4BF5010EE66EBAEC29F020 -:10266000E552010E2DC0DBFF020E2EC0DBFF030E74 -:102670002FC0DBFF040E30C0DBFF040EDBCF4CF5B8 -:10268000030EDBCF4DF5020EDBCF4EF5010EDBCF97 -:102690004FF58FD00A0EE66EE66A7EEC04F0E55246 -:1026A000E552E66AE2EC05F0E552030EF3CFDBFFFC -:1026B000040EF4CFDBFFE66AE2EC05F0E552DE52F1 -:1026C000F3CFDEFFF4CFDDFFDD52040EDBCF48F5A4 -:1026D000030EDBCF49F5020EDBCF4AF5010EDBCF4F -:1026E0004BF50A0EE66E010EE66E7EEC04F0E55246 -:1026F000E552010EE66EE2EC05F0E552030EF3CF73 -:10270000DBFF040EF4CFDBFF010EE66EE2EC05F01A -:10271000E552DE52F3CFDEFFF4CFDDFFDD52040ED3 -:10272000DBCF4CF5030EDBCF4DF5020EDBCF4EF5C4 -:10273000010EDBCF4FF53DD0E66A19EC09F0E5520A -:10274000010E2DC0DBFF020E2EC0DBFF030E2FC0DB -:10275000DBFF040E30C0DBFF040EDBCF48F5030EB9 -:10276000DBCF49F5020EDBCF4AF5010EDBCF4BF58F -:10277000010EE66E19EC09F0E552010E2DC0DBFFEB -:10278000020E2EC0DBFF030E2FC0DBFF040E30C095 -:10279000DBFF040EDBCF4CF5030EDBCF4DF5020E55 -:1027A000DBCF4EF5010EDBCF4FF503D00501020E56 -:1027B000436F400EE66E400EE66E050EE66E010EAD -:1027C000E66E010EE66E12EC20F0006E050EE15E84 -:1027D0000050F3CF49F1F4CF4AF1400EE66E000EFF -:1027E000E66E050EE66EE66A010EE66E12EC20F06D -:1027F000006E050EE15E0050F3CF47F1F4CF48F1D3 -:10280000ABEF1AF005010851030A37E0010A25E091 -:10281000030A13E0010A01E040D0050109519212B8 -:1028200005010A51931205010B51941205010C5137 -:10283000951205010D51961235D00501091D92160C -:1028400005010A1D931605010B1D941605010C1DAB -:10285000951605010D1D961625D00501091D891631 -:1028600005010A1D8A1605010B1D8B1605010C1D9D -:102870008C1605010D1D8D1615D005010951891203 -:1028800005010A518A1205010B518B1205010C51E9 -:102890008C1205010D518D1205D0030EE66E0AEC67 -:1028A00030F0E552400EE66E000EE66E050EE66E66 -:1028B000E66A010EE66E12EC20F0006E050EE15E97 -:1028C0000050F3CF47F1F4CF48F1ABEF1AF0050118 -:1028D0000851020A09E0030A01E00CD009C5E6FF2D -:1028E00060EC2AF0E5520BD009C5E6FF70EC2AF047 -:1028F000E55205D0010EE66E0AEC30F0E552400ECE -:10290000E66E000EE66E050EE66EE66A010EE66EF7 -:1029100012EC20F0006E050EE15E0050F3CF47F19F -:10292000F4CF48F1ABEF1AF005010851060A02E1B5 -:10293000CBEF19F0080A02E191EF19F0030A02E166 -:1029400088EF19F0070A02E124EF19F0030A01E108 -:10295000C3D3010A01E1D0D20F0A01E1B9D2020AC0 -:1029600001E16ED2010A01E13DD2070A01E10CD278 -:10297000010A01E1DBD1030A01E1AAD1010A01E167 -:10298000A4D10C0A01E126D1030A01E194D0040A82 -:1029900002E0F3EF19F00501095104E0020E050110 -:1029A000095D40E10AC5E6FF010EE66E64EC2FF01A -:1029B000E552E5520BC5E6FF020EE66E64EC2FF021 -:1029C000E552E5520CC5E6FF030EE66E64EC2FF00F -:1029D000E552E5520DC5E6FF040EE66E64EC2FF0FD -:1029E000E552E5520EC5E6FF050EE66E64EC2FF0EB -:1029F000E552E5520FC5E6FF060EE66E64EC2FF0D9 -:102A0000E552E55210C5E6FF070EE66E64EC2FF0C6 -:102A1000E552E55211C5E6FF080EE66E64EC2FF0B4 -:102A2000E552E5520501090504E0020E0501095DC4 -:102A300040E10AC5E6FF090EE66E64EC2FF0E552B0 -:102A4000E5520BC5E6FF0A0EE66E64EC2FF0E55288 -:102A5000E5520CC5E6FF0B0EE66E64EC2FF0E55276 -:102A6000E5520DC5E6FF0C0EE66E64EC2FF0E55264 -:102A7000E5520EC5E6FF0D0EE66E64EC2FF0E55252 -:102A8000E5520FC5E6FF0E0EE66E64EC2FF0E55240 -:102A9000E55210C5E6FF0F0EE66E64EC2FF0E5522E -:102AA000E55211C5E6FF100EE66E64EC2FF0E5521C -:102AB000E552F8EF19F000C540F50501416B05013D -:102AC000030E426F0501436B010EE66E84EC2FF09E -:102AD000E5520501486F020EE66E84EC2FF0E552D8 -:102AE0000501496F030EE66E84EC2FF0E5520501F7 -:102AF0004A6F040EE66E84EC2FF0E55205014B6F31 -:102B0000050EE66E84EC2FF0E55205014C6F060EC3 -:102B1000E66E84EC2FF0E55205014D6F070EE66E70 -:102B200084EC2FF0E55205014E6F080EE66E84EC42 -:102B30002FF0E55205014F6F090EE66E84EC2FF081 -:102B4000E5520501506F0A0EE66E84EC2FF0E55257 -:102B50000501516F0B0EE66E84EC2FF0E552050176 -:102B6000526F0C0EE66E84EC2FF0E5520501536FA8 -:102B70000D0EE66E84EC2FF0E5520501546F0E0E3B -:102B8000E66E84EC2FF0E5520501556F0F0EE66EF0 -:102B900084EC2FF0E5520501566F100EE66E84ECC2 -:102BA0002FF0E5520501576F400EE66E400EE66EBF -:102BB000050EE66E010EE66E010EE66E12EC20F0DA -:102BC000006E050EE15E0050F3CF49F1F4CF4AF1FB -:102BD000F8EF19F0030EE66E010EE66E64EC2FF0CE -:102BE000E552E552E80EE66E020EE66E64EC2FF05A -:102BF000E552E552E66A030EE66E64EC2FF0E5520C -:102C0000E552010EE66E040EE66E64EC2FF0E5521E -:102C1000E552E66A050EE66E64EC2FF0E552E552E9 -:102C2000E66A060EE66E64EC2FF0E552E552270EDA -:102C3000E66E070EE66E64EC2FF0E552E552100EDC -:102C4000E66E080EE66E64EC2FF0E552E552030ED8 -:102C5000E66E090EE66E64EC2FF0E552E552E80EE2 -:102C6000E66E0A0EE66E64EC2FF0E552E552E66A77 -:102C70000B0EE66E64EC2FF0E552E552010EE66EA7 -:102C80000C0EE66E64EC2FF0E552E552E66A0D0E8E -:102C9000E66E64EC2FF0E552E552E66A0E0EE66E43 -:102CA00064EC2FF0E552E552270EE66E0F0EE66E4D -:102CB00064EC2FF0E552E552100EE66E100EE66E53 -:102CC00064EC2FF0E552E55293D357EC07F090D324 -:102CD000060E09C5DBFF050E0AC5DBFF080E0BC596 -:102CE000DBFF070E0CC5DBFF0A0E0DC5DBFF090E6F -:102CF0000EC5DBFF090EDBCFE6FF0A0EDBCFE6FFDA -:102D0000070EDBCFE6FF080EDBCFE6FF050EDBCFBD -:102D1000E6FF060EDBCFE6FF3CEC09F0006E060E88 -:102D2000E15E00500101010E526F62D3060E09C52B -:102D3000DBFF050E0AC5DBFF080E0BC5DBFF070E28 -:102D40000CC5DBFF0A0E0DC5DBFF090E0EC5DBFF50 -:102D5000090EDBCFE6FF0A0EDBCFE6FF070EDBCF67 -:102D6000E6FF080EDBCFE6FF050EDBCFE6FF060E23 -:102D7000DBCFE6FF43EC09F0006E060EE15E00508B -:102D80000101010E526F34D3060E09C5DBFF050E9B -:102D90000AC5DBFF080E0BC5DBFF070E0CC5DBFF0A -:102DA0000A0E0DC5DBFF090E0EC5DBFF090EDBCFDA -:102DB000E6FF0A0EDBCFE6FF070EDBCFE6FF080ECD -:102DC000DBCFE6FF050EDBCFE6FF060EDBCFE6FF2F -:102DD0004AEC09F0006E060EE15E00500101010EA2 -:102DE000526F06D3060E09C5DBFF050E0AC5DBFFD1 -:102DF000080E0BC5DBFF070E0CC5DBFF0A0E0DC569 -:102E0000DBFF090E0EC5DBFF090EDBCFE6FF0A0E66 -:102E1000DBCFE6FF070EDBCFE6FF080EDBCFE6FFDA -:102E2000050EDBCFE6FF060EDBCFE6FF56EC09F022 -:102E3000006E060EE15E00500101010E526FD8D205 -:102E4000060E09C5DBFF050E0AC5DBFF080E0BC524 -:102E5000DBFF070E0CC5DBFF0A0E0DC5DBFF090EFD -:102E60000EC5DBFF0C0E0FC5DBFF0B0E10C5DBFF25 -:102E70000E0E12C5DBFF0D0E13C5DBFF0D0EDBCFF3 -:102E8000E6FF0E0EDBCFE6FF11C5E6FF0B0EDBCF34 -:102E9000E6FF0C0EDBCFE6FF090EDBCFE6FF0A0EE6 -:102EA000DBCFE6FF070EDBCFE6FF080EDBCFE6FF4A -:102EB000050EDBCFE6FF060EDBCFE6FF62EC09F086 -:102EC000006E0B0EE15E00500101010E526F90D2B8 -:102ED000060E0AC5DBFF050E0BC5DBFF050EDBCFBB -:102EE000E6FF060EDBCFE6FF09C5E6FF11EC09F0B1 -:102EF000E552E552E5527CD2060E0AC5DBFF050E0F -:102F00000BC5DBFF080E0CC5DBFF070E0DC5DBFF95 -:102F10000A0E0EC5DBFF090E0FC5DBFF09C5E6FF74 -:102F200003EC07F0E552090EDBCF2FF00A0EDBCFE2 -:102F300030F067EC21F02EC008F02FC009F030C04F -:102F40000AF031C00BF0A60E336E280E346E940ECC -:102F5000356E3F0E366E08C02EF009C02FF00AC045 -:102F600030F00BC031F081EC22F02EC004F02FC005 -:102F700005F030C006F031C007F0CC0E336EBC0E49 -:102F8000346E8C0E356E3B0E366E04C02EF005C0CE -:102F90002FF006C030F007C031F081EC22F01DECBC -:102FA00023F02DC000F02EC001F02FC002F030C081 -:102FB00003F000C0E6FF01C0E6FF02C0E6FF03C069 -:102FC000E6FF070EDBCF2FF0080EDBCF30F067EC0B -:102FD00021F02EC014F02FC015F030C016F031C013 -:102FE00017F0A60E336E280E346E940E356E3F0E1B -:102FF000366E14C02EF015C02FF016C030F017C07A -:1030000031F081EC22F02EC010F02FC011F030C052 -:1030100012F031C013F0BD0E336E370E346E860ED3 -:10302000356E410E366E10C02EF011C02FF012C05A -:1030300030F013C031F081EC22F01DEC23F02DC0F4 -:103040000CF02EC00DF02FC00EF030C00FF00CC0F1 -:10305000E6FF0DC0E6FF0EC0E6FF0FC0E6FF050E5F -:10306000DBCF2FF0060EDBCF30F067EC21F02EC067 -:103070001CF02FC01DF030C01EF031C01FF0A60E96 -:10308000336E280E346E940E356E3F0E366E1CC0B5 -:103090002EF01DC02FF01EC030F01FC031F081ECAB -:1030A00022F01DEC23F02DC018F02EC019F02FC017 -:1030B0001AF030C01BF018C0E6FF19C0E6FF1AC0B6 -:1030C000E6FF1BC0E6FF09C5E6FFDAEC07F0206E5D -:1030D0000D0EE15E20508CD1060E0AC5DBFF050EF9 -:1030E0000BC5DBFF080E0CC5DBFF070E0DC5DBFFB4 -:1030F00009C5E6FF03EC07F0E5520EC5E6FF070E33 -:10310000DBCF2FF0080EDBCF30F067EC21F02EC0C4 -:1031100008F02FC009F030C00AF031C00BF0A60E45 -:10312000336E280E346E940E356E3F0E366E08C028 -:103130002EF009C02FF00AC030F00BC031F081EC46 -:1031400022F02EC004F02FC005F030C006F031C0D0 -:1031500007F0CC0E336EBC0E346E8C0E356E3B0E0B -:10316000366E04C02EF005C02FF006C030F007C048 -:1031700031F081EC22F01DEC23F02DC000F02EC0C8 -:1031800001F02FC002F030C003F000C0E6FF01C024 -:10319000E6FF02C0E6FF03C0E6FF050EDBCF2FF01F -:1031A000060EDBCF30F067EC21F02EC014F02FC0FC -:1031B00015F030C016F031C017F0A60E336E280E91 -:1031C000346E940E356E3F0E366E14C02EF015C060 -:1031D0002FF016C030F017C031F081EC22F02EC075 -:1031E00010F02FC011F030C012F031C013F0BD0E3E -:1031F000336E370E346E860E356E410E366E10C04D -:103200002EF011C02FF012C030F013C031F081EC5D -:1032100022F01DEC23F02DC00CF02EC00DF02FC0BD -:103220000EF030C00FF00CC0E6FF0DC0E6FF0EC080 -:10323000E6FF0FC0E6FF09C5E6FF6AEC08F0186E6E -:103240000A0EE15E1850D4D0060E0AC5DBFF050E4B -:103250000BC5DBFF09C5E6FF03EC07F0E5520CC523 -:10326000E6FF050EDBCF2FF0060EDBCF30F067EC6C -:1032700021F02EC008F02FC009F030C00AF031C094 -:103280000BF0A60E336E280E346E940E356E3F0E84 -:10329000366E08C02EF009C02FF00AC030F00BC007 -:1032A00031F081EC22F02EC004F02FC005F030C0C8 -:1032B00006F031C007F0BD0E336E370E346E860E49 -:1032C000356E410E366E04C02EF005C02FF006C0DC -:1032D00030F007C031F081EC22F01DEC23F02DC05E -:1032E00000F02EC001F02FC002F030C003F000C08B -:1032F000E6FF01C0E6FF02C0E6FF03C0E6FF09C526 -:10330000E6FFC8EC08F00C6E060EE15E0C5070D0C3 -:1033100009C5E6FFE0EC08F0E5520101010E526F2D -:1033200067D0E9EC0BF0050EF3CFDBFF060EF4CF10 -:10333000DBFFFFEC0BF0070EF3CFDBFF080EF4CF43 -:10334000DBFF00C540F50501416B0501030E426F2F -:103350000501436B060EDBCF48F5050EDBCF49F5C3 -:10336000080EDBCF4AF5070EDBCF4BF5400EE66EBD -:10337000400EE66E050EE66E010EE66E010EE66E7E -:1033800012EC20F0006E050EE15E0050F3CF49F123 -:10339000F4CF4AF12DD000C540F50501416B050180 -:1033A000030E426F0501436B16EC0CF0000904E0BC -:1033B0000501010E486F02D00501486B400EE66E14 -:1033C000400EE66E050EE66E010EE66E010EE66E2E -:1033D00012EC20F0006E050EE15E0050F3CF49F1D3 -:1033E000F4CF4AF105D0010EE66E0AEC30F0E5525A -:1033F000400EE66E000EE66E050EE66EE66A010E03 -:10340000E66E12EC20F0006E050EE15E0050F3CF88 -:1034100047F1F4CF48F19FD0010149514A1102E12F -:10342000000E08D049C1E9FF4AC1EAFFEF50800B06 -:1034300001E0010E00094DE10101010E516F05018E -:10344000406B01014C514C2B0501416F0501050EEC -:10345000426F0501436B0501486B800E006E5D0EE7 -:10346000016E026A00C0E6FF01C0E6FF02C0E6FF8F -:10347000480EE66E050EE66E48EC2FF0036E050E64 -:10348000E15E0350400EE66E400EE66E050EE66EFF -:10349000010EE66E010EE66E12EC20F0006E050ED7 -:1034A000E15E0050F3CF49F1F4CF4AF1400EE66EF1 -:1034B000000EE66E050EE66EE66A010EE66E12EC92 -:1034C00020F0006E050EE15E0050F3CF47F1F4CF1F -:1034D00048F141D0010149514A1102E1000E08D0E2 -:1034E00049C1E9FF4AC1EAFFEF50800B01E0010E3C -:1034F000000931E100C540F50501416B0501030EEE -:10350000426F0501010E436F400EE66E400EE66EFF -:10351000050EE66E010EE66E010EE66E12EC20F070 -:10352000006E050EE15E0050F3CF49F1F4CF4AF191 -:10353000400EE66E000EE66E050EE66EE66A010EC1 -:10354000E66E12EC20F0006E050EE15E0050F3CF47 -:1035500047F1F4CF48F10F0EE15C02E2E16AE55277 -:10356000E16EE552E7CFD9FF12000101535154112A -:1035700004E1100E536F270E546F5307000E545B77 -:103580006DA207D0535154112EE18C748CB413D01A -:1035900027D00101005102E18C9422D0000502E104 -:1035A0008C8409D0020E005D02E18C8419D0040ED7 -:1035B000005D03E18C948C861200100E005D06E124 -:1035C0000101535154110FE18C740AD0200E005D9B -:1035D0000AE101015351541106E18C748CA402D00C -:1035E0008C9612008C86120012001200120012003B -:1035F000B1EF2DF012001E0EE66E010EE66EE0EC4D -:103600001FF0E552E552400EE66E000EE66E050E26 -:10361000E66EE66A010EE66E12EC20F0006E050E14 -:10362000E15E0050F3CF47F1F4CF48F112006D8412 -:103630000101080E686F070E696F6807000E695B6D -:1036400068516911FAE16D941200D9CFE6FFE1CF1C -:10365000D9FFFD0EDBCF2FF0FE0EDBCF30F0010ED9 -:103660002F1801E1305033E0E8682F1802E1E868D4 -:1036700030182BE0030E2F1801E1305024E0040E27 -:103680002F1801E130501DE0020E2F1801E13050DB -:1036900016E0170E2F1801E130500FE0160E2F180C -:1036A00001E1305008E0150E2F1801E1305001E023 -:1036B00010D0A1DF0FD09EDF0DD09ADF0BD096DFA8 -:1036C00009D092DF07D091DF05D091DF03D0000051 -:1036D00001D000D0010E00D0E552E7CFD9FF120093 -:1036E0004BD8E652D0B202D0010E15D0D0B802D0DD -:1036F000020E11D0D0B002D0030E0DD0D0B602D041 -:10370000040E09D0FCAE02D0050E05D0FCAC02D0F0 -:10371000060E01D0070EDF6ED088D086D084D0820E -:10372000D080FC9EFC9CDF50E552E552E7CFD9FFEC -:103730001200E65221D8020EE126F350DF6E010E90 -:10374000F4CFDBFF1200C00EE66EE00EE66EEEEC8C -:103750002FF0E552E5521200DF50F36E010EDB5000 -:10376000F46E020EE15C1200DFCFE6FFE66A64EC65 -:103770002FF0E552E5521200D9CFE6FFE1CFD9FF95 -:02378000120035 -:0E378200B9EC20F06A6A686AECEC20F06D8CFD -:103790006E6A9CEC20F06D9CDF6ACDEC20F010E2AC -:1037A000DF50040DF3CFE9FFF4CFEAFF000EE92666 -:1037B000040EEA22EE6AEE6AEE6AEE6ADF2AEDD7BE -:1037C000160E706E68A604D0030E62EC20F0FAD7D5 -:1037D0000101136B186B196B1A6B6D98080E0B6F48 -:1037E000040E0C6F016B006BE55277EF20F0B9EC23 -:1037F00020F0010100510BE16D6A696AECEC20F0E8 -:103800006DB602D06D86FCD70101010E006F000578 -:1038100008E16DBA06D0686A696A69806988020E33 -:10382000006F6850040B07E06950040B04E0020EBF -:1038300062EC20F089D86DB247D06850010B14E0DB -:103840006950010B11E09DDF0101040E006F0401BE -:10385000200E026F040E036F080E016F006B8C0EBA -:103860000013E66A2BEC21F06850100B07E069505A -:10387000100B04E060D8040E62EC20F06850400B9E -:103880000BE06950400B08E0F3EC20F0020E6AEC0C -:1038900020F0060E62EC20F06850200B04E0695026 -:1038A000200B01E035D86850020B0AE06950020B8A -:1038B00007E0F3EC20F0E668E6684BEC21F06A6A7A -:1038C000040E0101005D02E2A19A1FD069A61CD07E -:1038D000DF6A040EDF5C18E268A616D06CCF20F118 -:1038E000030E62EC20F0780E0101201502E138D8B9 -:1038F00009D0000EE66EE66A200EE66E010EE66E58 -:10390000010EE8DBDF2AE5D7A19AE55277EF20F038 -:1039100070A00ED085EC20F0EF50800808E1D5DBD8 -:10392000EF50840804E185EC20F08C0EEF6E70906F -:10393000050E62EF20F06984040EC4DB6D82A5ECF5 -:1039400020F0040E6AEF20F0A5EC20F0030EC2DB9D -:103950006D92699468A403D0020EB4DBFBD7120009 -:10396000B9EC20F0FD0E010120153DE17E0E201581 -:10397000E8407F0B040DF3CF03F1F4CF04F1000E08 -:103980000327040E042303C105F104C106F10575E4 -:10399000BCDBEF503C0BE842E8420D0822E1B5DB0E -:1039A00022EC21F0EECF00F0EFCF01F0280E00184E -:1039B00016E1040E011813E15CEC21F0DF6AEDDB87 -:1039C0000EE2DF50D5EC20F0DF50EA6A200FE96EFE -:1039D000040EEA22E552E750EF6EDF2AF0D70AD84C -:1039E00007D01AD805D0FD0E2015040801E122D811 -:1039F000E5527DD36ADBEF50800B02E066DBEF6AB5 -:103A000001010F6B106B146B156B136B64D89DDB8E -:103A1000170E60DBA0EF1EF0020E0101105D02E147 -:103A20002DEF1FF034D80101215102E127EF21F0E1 -:103A3000216B12009EDB49DBEF50400B01E0010ED1 -:103A4000DF6E01010B75080E005D09E122C46EFFF7 -:103A50006E50000802E2100E01D0040E006F100537 -:103A600013E160EC21F0A6D9020E01010F5D03E124 -:103A70002CDB840E07D0DF5003E127DBC80E02D019 -:103A800024DB880EEF6E01D002D8E55230D32BDB59 -:103A90000101106B1ADBEF6A040E0B19006E0CC1EA -:103AA00001F0DE6E0CC1DDFF19DBEF6A18AF0CD040 -:103AB0001B511C1107E005D01CC1FAFF01011B516D -:103AC000F96EFADF0101189F020EE15C02E2E16A81 -:103AD000E552E16E0CD304012051600BE842E8424C -:103AE000E842E842E842000901E0120021510C0AD4 -:103AF00045E00B0A3FE00C0A31E0010A22E00B0A24 -:103B00001EE0020A1CE0030A18E0080A10E0010A9D -:103B10000CE00F0A08E0030A01E012000101138F14 -:103B2000080E006F120020EF1EF089EF1FF0010158 -:103B3000010E116F010E126F0CD061EF1EF0BFEF7E -:103B40001DF024510101116F126B020E1127010E9D -:103B500012231381010E146F138F12000101138FB2 -:103B600004012451EA6A020FE96E010EEA2222C41E -:103B7000EFFF1200EADA160E6AEF20F012007EDB89 -:103B8000040EE1260401220510E120511F0B00095B -:103B90000CE10101138F030E0401215D04E1010119 -:103BA000010E1F6F02D001011F6B0401225141E180 -:103BB00020511F0B02083DE124510F0B000939E091 -:103BC0000101138F040124BF05D0A4DA070EE926F2 -:103BD000010E04D09FDA0B0EE926010ED2DA030E95 -:103BE000215D03E17BDA840E23D024510F0B016A9F -:103BF000700F006E0F0E0122020E00C0DBFF030EDD -:103C000001C0DBFF020EDBCFE9FF030EDBCFEAFFD3 -:103C1000EE90ED5224AF06D061DAEF6ADF745EDA1F -:103C2000400E06D05BDA880EEF6EDF7457DAC80EEE -:103C3000EF6E040EE15C02E2E16AE552E16E57D2FA -:103C4000800E0401205D3CE10101C00E136F0401F0 -:103C50002351030A1EE0010A09E0030A2FE10101D2 -:103C6000300E116F5C0E126F120E22D0C3DADA0E14 -:103C7000F6265C0EA2DA020E0101F76A1125F66E35 -:103C80001251F7220900F5CF14F10A00F5CF15F112 -:103C90001200030E225D0FE2ADDADC0EF6265C0E9A -:103CA0008CDA11C1F6FF12C1F7FF0800F5500101CF -:103CB000146F156B12000101136B12000101136BDD -:103CC000120011DA0401286B296B20511F0B020A24 -:103CD00011E0030A0CE0010A22E10101138F040143 -:103CE000288101011F051BE10401288318D001016F -:103CF000138F15D00101138F040124BF05D00ADAF8 -:103D0000070EE926010E04D005DA0B0EE926010E96 -:103D100038DAE4D9EF50040B02E0010E286F0101FC -:103D200013AF07D0280E116F040E126F1381020E0D -:103D3000146F020EE15C02E2E16AE552E16ED7D156 -:103D40006D98010113BF08D018AF02D061DA2AD0F4 -:103D50007EDABBD9840E27D018BF2BD0040120AF48 -:103D600024D0010114510401265D01011551040103 -:103D7000275904E226C414F127C415F11BD8010108 -:103D8000010E106FA1DA800EEF6E216BBED9EE52DC -:103D9000080EEF6E91DAB9D9840EEF6E010E216F25 -:103DA0008FDA93D9C80EEF6E1200010131DAC80E16 -:103DB000EF6E120098D90101080E145D000E15591E -:103DC0000DE214C1DEFF15C1DDFF0F5102E1010E4E -:103DD00003D00F0506E1020E0F6F03D0080EDE6E52 -:103DE000DD6A73D9EF9271D9EF906FD9010EDB5074 -:103DF000EF126BD9EE52DFCFEFFF000EDB50145FF6 -:103E0000010EDB50155B280E1D6F040E1E6F13B1E3 -:103E10000FD0F7D91BE011C1F6FF12C1F7FF112B2C -:103E2000000E12230800F55096D9F3E2DB06F1D715 -:103E3000E8D90CE011C1E9FF12C1EAFF112B000E15 -:103E40001223EF5088D9F4E2DB06F2D7020EE15CD0 -:103E500002E2E16AE552E16E4AD145D956D9EE5205 -:103E6000EFCFDFFFDFCF00F000500101195D000E42 -:103E70001A5903E219C1DFFF09D0DF50006E016A51 -:103E8000E850195D196F01501A591A6F010EDB6A5B -:103E9000DF50F36E010EDBCFF4FFF350F45C10E261 -:103EA000010EDB5082D916C1E9FF17C1EAFF162BBC -:103EB000000E1723E552E750EF6E010EDB2AE8D71C -:103EC000000ED8801955000E1A550DE2F4D854D9B9 -:103ED0001CD9EF50400B03E1EAD9C80E02D0E7D954 -:103EE000880EEF6E0FD0F0D9840EEF6E1B511C11AF -:103EF00007E005D01CC1FAFF01011B51F96EFADF82 -:103F00000101189F020EE15C02E2E16AE552E16EF6 -:103F1000EED00101138F10D9010EE66EE66AE66A53 -:103F2000020EE66E010EAFD922C401F10401225146 -:103F300004E10101100E006F12000101200E006F5C -:103F400004D9150E6AEF20F0CED8000EDE6E040EF6 -:103F5000DD6EE8D8040DF350006E016A020E0F0BFF -:103F600005E0D89001320032E806FBE1D890003637 -:103F70000136D89000360136D9CFE9FFDACFEAFF13 -:103F80000050EE260150ED22A9D8EF9EFD0EDB5029 -:103F900002E16AD901D06DD9EA22DECFEEFFDDCF92 -:103FA000EDFF9CD8EF9C9AD8040EE926000EEA2279 -:103FB000EF8C020EE15C02E2E16AE552E16E97D01D -:103FC00092D8FE0EDB50016A700F006E0F0EDFD824 -:103FD00085D8FD0EDBCFEFFFDBA402D0E66AF5D873 -:103FE000FD0EDBA203D0010EE66EEFD8020EE15CFF -:103FF00002E2E16AE552E16E7AD075D8FE0EDB503E -:1040000005E125D962D8840EEF6E05D08BD80CD986 -:1040100089D8010F09D9020EE15C02E2E16AE5529A -:10402000E16E65D060D8FD0EDB5002E022D901D0F0 -:104030001BD9A7D853D806D9FB0EDBCFEEFFFC0E59 -:10404000DBCFEDFF4BD8EE52FA0EDBCFEFFF400E89 -:1040500045D8E850EF16880E41D8E850EF12FD0E13 -:10406000DB5002E006D901D0FFD8EA22EF74DECFA0 -:1040700000F0DDCF01F000C0F3FF01C0F4FF020E3D -:10408000E15C02E2E16AE552E16E31D0F7D8010E5F -:10409000F36EFC0EDB5004E0D890F336E806FCE14A -:1040A000F31C006EFD0EDBCFE9FFFE0EDBCFEAFF57 -:1040B0000050EF161CD0FBD8EE52080EEF6EF7D86A -:1040C00022EF21F0E66E2BEF21F00BC1E9FF0CC1CE -:1040D000EAFF1200E66EE66A4BEF21F0DECFE9FF61 -:1040E000DDCFEAFF1200CAD8020EE1261200E55227 -:1040F000E7CFD9FF1200D6D857EF21F0FE0EEA6ABB -:10410000DB34FE0BEA36E96E120003C1E9FF04C19D -:10411000EAFF120024510F0BE96EEA6AD890E936E3 -:10412000EA361200FD0EDB50E824026EFE0EDB5074 -:10413000040DF35002241200000EE66EE66AE66AF1 -:10414000710EE66E0F0E43EF21F0000EE66EE66A8A -:10415000E66EE66A1200E66E1DC1E9FF1EC1EAFFC7 -:104160001D2B000E1E23E552E750EF6EDF06010EF9 -:10417000120084D8E6521200280EEE6E040EED6E88 -:104180001200EA22EECFDEFFEDCFDDFF12000122AA -:1041900000C0DEFF01C0DDFF1200DF50006E016ACB -:1041A000080E005C000E01581200EA6A280FE96E42 -:1041B000040EEA22EF50E66E1200F7220900F5CF56 -:1041C00011F10A00F5CF12F11200FE0EDBCFE6FF6F -:1041D000BBDEE552E5521200160E6F6E9F0E6B6E3F -:1041E0007B0E696E1200010EE66EE66A000EE66E48 -:1041F000E66A12002251F66EF76AD890F636F73664 -:104200001200D9CFE9FFDACFEAFFEE50ED1012002D -:10421000020E106F5ADFEE52EF6A57DFC80EEF6ED4 -:104220004ADFAADF57EF21F0040DF3CF00F0F4CFFF -:1042300001F0000E0026040EAADF840E4FDFE850C6 -:10424000EF121200020EE926000EEA2212003CD8FC -:104250008C0EEF6E1200680EE66E0F0EE66E16DF25 -:10426000E552E552E552120049DF070EE926010E3C -:10427000120044DF0B0EE926010E1200D9CFE6FF33 -:10428000E1CFD9FF1200E66E2EEC2FF0006E050E86 -:10429000E15E0050120025EC1BF0006E060EE15EA0 -:1042A00000501200200EEE6E040EED6E120005C1DD -:1042B000E9FF06C1EAFF120028DFC4DF52EF21F058 -:0E42C00004DFC0DFBCEF20F0F6DE7BEF20F065 -:0242CE00389E18 -:1042D00008D0389E30AE05D02F6C301EE86A3022F0 -:1042E000388E30C02AF02FC029F03C6A3B6A8E0E0F -:1042F0002B6E2C6A70EF23F0389E0CD0389E30AEB7 -:1043000009D02D6C2E1E2F1E301EE86A2E222F2261 -:104310003022388E30C02AF02FC029F02EC03CF059 -:104320002DC03BF09E0E2B6E2C6A70EF23F0367E74 -:10433000386AACEC23F0C4EC23F038B654EF23F029 -:1043400038A20AD038AA03D038BE54EF23F038A4DC -:1043500060EF23F05DEF23F038AA05D038AC60EFB2 -:1043600023F05DEF23F038A00AD038A808D038BE7B -:1043700004D038A402D069EF23F06DEF23F03B6A3C -:104380002C6A3650315C3A6E10E32EC03CF02FC0E0 -:1043900029F030C02AF031C039F033C02EF034C0DB -:1043A0002FF035C030F0383A09D033C03CF034C07B -:1043B00029F035C02AF036C039F03A6C389E38BC46 -:1043C000388E39C02BF038B09CEF23F01A0E3A60CB -:1043D0009CEF23F02B6A316A38A408D02E6C2F1E74 -:1043E000301E311EE86A2F223022312238AC08D02C -:1043F0003C6C291E2A1E2B1EE86A29222A222B2207 -:104400002D6A3A5207E0313430322F322E322D32BB -:104410003A2EF9D72E503C262F50292230502A22EE -:1044200031502B222DC03BF0389E2BAE0BD03B6C75 -:104430003C1E291E2A1E2B1EE86A3C2229222A2203 -:104440002B22388E2BA006D0D8802A3229323C323B -:104450003B32392A39C02BF070EF23F0386AACECCC -:1044600023F0C4EC23F038B654EF23F038A205D083 -:1044700038BA54EF23F05BEF23F038BA67EF23F03C -:1044800038A005D038B854EF23F067EF23F038B8E0 -:104490005BEF23F02C6A7F0E31242B6EE86A2C220E -:1044A00036502B5EE86A2C5A1A0E396E316A3B6A16 -:1044B0003C6A296A2A6A33502E5E34502F5A35508E -:1044C000305A000E315A09E733502E2634502F222D -:1044D00035503022000E312201D03B8AD8902E3642 -:1044E0002F3630363136D8903B363C3629362A3690 -:1044F000392EE1D730502F102E10D8A43B8A70EF00 -:1045000023F0386AACEC23F0C4EC23F038B654EF57 -:1045100023F038A205D038B854EF23F05BEF23F036 -:1045200038AA05D038B054EF23F05BEF23F038B051 -:1045300002D038A802D067EF23F02C6A365031241D -:104540002B6EE86A2C227E0E2B5EE86A2C5A3B6AA0 -:104550003C6A296A2A6A35503002F4CF2AF0F3CF38 -:1045600029F034503002F3503C26F4502922000E3A -:104570002A2235502F02F3503C26F4502922000EF7 -:104580002A2233503002F3503B26F4503C22000ED6 -:1045900029222A2234502F02F3503B26F4503C2289 -:1045A000000E29222A2235502E02F3503B26F450C9 -:1045B0003C22000E29222A2233502F02F4503B269F -:1045C000000E3C2229222A2234502E02F4503B268F -:1045D000000E3C2229222A2270EF23F0386AACEC2C -:1045E00023F038B6F8EF22F038A20ED038B405D058 -:1045F0007F0E306EFF0E2F6E1FD0800E306E2F6A32 -:104600001BD0306A2F6A18D038B0FBD78F0E3160BC -:10461000EDD77E0E3164F5D78E0E315C05E0D89073 -:1046200030322F32312AF8D738A406D02F6C301E02 -:10463000E86A302230AEE5D71200386AACEC23F0DD -:1046400038B627EF23F038A20FD038B407D07F0E4A -:10465000306EFF0E2F6E2E6E2D6E25D0800E306EBA -:1046600001D0306A000EF6D738B0FBD72D6A9F0E06 -:104670003160EBD77E0E3164F4D79E0E315C07E0DB -:10468000D89030322F322E322D32312AF6D738A43C -:104690000AD02D6C2E1E2F1E301EE86A2E222F22CD -:1046A000302230AEDED712007F0E316EFF0E306E3C -:1046B0002F6E2E6E12007F0E38BEFF0E316E02D0AE -:1046C0007F0E316E800E306E2F6A2E6AF3D738AEB1 -:1046D00004D0800E316E306AF7D7316A306AF4D771 -:1046E0002A5029103C103B10F8E02CBEF0D72ABE0F -:1046F0000CD02B502C10EBE0D8903B363C362936B2 -:104700002A362B06D8A02C06F2D72C50D4E12B2821 -:10471000D2E03BAE11D07F0E3B1402E13CA00CD0A6 -:104720003C2AE86A29222A2207E3D8802A32293241 -:104730003C322B2A2B28BFE02B50C9E03CC02EF086 -:1047400029C02FF02A34306E2B30316E3032319E3A -:1047500038BE318E5AEF23F03036313602E33884DA -:10476000387E06E13880316A306A2F6A2E6A12007C -:10477000312803E0D88030321200D890303202E184 -:1047800038821200388612003536363602E3388C0D -:10479000387E06E13888366A356A346A336A120030 -:1047A000362803E0D88035321200D8903532EAE15D -:1047B000388A1200ECEC23F038B6000C38B0000C4C -:1047C00038B4000C010CECEC23F038B6000C38B017 -:1047D000000C38A4000C010C386AACEC23F0C4ECDB -:1047E00023F038B6120038AE08D038A004D038A86C -:1047F00002D038801200389012003650315C0BE144 -:104800003550305C08E134502F5C05E133502E5CAC -:1048100002E138801200D8A002D0388E10D031507A -:1048200036C031F0366E305035C030F0356E2F5016 -:1048300034C02FF0346E2E5033C02EF0336E36500D -:10484000315C10E0FF0F09E0389038B403D038AE87 -:104850003884120038AE38941200362AD890353297 -:104860003432333233502E5E34502F5A3550305A52 -:1048700030BEEAD7D8902E362F363036312EF8D7C4 -:10488000C8D7376A35AE4AEF24F0346C351EE86A73 -:104890003522371E30AE52EF24F02F6C301EE86AFE -:1048A0003022371E54EC30F030BE62EF24F037AEC9 -:1048B000000C2F6C301EE86A30222B6C2C1EE86A2C -:0E48C0002C22000C37BE59EF24F03888FF0C74 -:0248CE00D9CF40 -:1048D000E6FFDACFE6FFE1CFD9FFE2CFDAFF1D0E28 -:1048E000E12402E3E168E652E16E67DAFA0EDBCF1B -:1048F000EEFFFB0EDBCFEEFFFC0EDBCFEEFFFD0E7F -:10490000DBCFEEFFD950040FE66E000EDA20E66E24 -:104910000BDA96EC2CF0006E060EE15C02E2E16A26 -:10492000E552E16E0050E76E0B0EE7CFDBFFDB5088 -:10493000800807E10A0EDB6ADE68DE68DE687F0E4B -:1049400013D00B0EDB0405E1DE6ADE6ADE6ADD6A87 -:10495000A6D10B0EDB50040809E1DB0EDE6E0F0E54 -:10496000DE6EC90EDE6E3F0EDD6E99D1DDD91EDA28 -:104970002DC0DEFF2EC0DEFF2FC0DEFF30C0DDFF0A -:10498000DD52DD52DBD90DDA3F0E20DA23E12E6A4B -:104990002F6A800E306E3F0E316EDECF33F0DECFE9 -:1049A00034F0DECF35F0DDCF36F0DD52DD522EECC7 -:1049B00022F02EC0DFFF010E2FC0DBFF020E30C041 -:1049C000DBFF030E31C0DBFF020EF36E0C0EF3CFE4 -:1049D000DBFF02D00C0EDB6AB1D9A30E336E300EB2 -:1049E000346E890E356E3E0EF1D96CE1AF0E2E6E2F -:1049F000670E2F6E3B0E306E3F0E316EB2D92EC059 -:104A000008F02FC009F030C00AF031C00BF0C9D94E -:104A10003F0E366E97EC21F02EC004F02FC005F04B -:104A200030C006F031C007F0C8D9EECF0CF0EECFA1 -:104A30000DF0EECF0EF0EFCF0FF00CC033F00DC045 -:104A400034F00EC035F00FC036F098EC21F080D96C -:104A5000D70E146EB30E156EDD0E166E3F0E176E6A -:104A6000ACD9EECF18F0EECF19F0EECF1AF0EFCFB1 -:104A70001BF018C033F019C034F01AC035F01BC059 -:104A800036F014C02EF015C02FF016C030F0316E85 -:104A900098EC21F02EC010F02FC011F030C012F0B1 -:104AA00031C013F02EC033F02FC034F030C035F0D9 -:104AB00031C036F035D92EEC22F05FD9DD52DD520F -:104AC0000C0EDB2A31D972D92DC000F02EC001F0B6 -:104AD0002FC002F030C003F064D9390E366E2DC0FD -:104AE0002EF07AD9E3EC23F0010A01E1B5D04ED9DA -:104AF00038D90D0E2EC0DBFF0E0E2FC0DBFF0F0EC0 -:104B000030C0DBFF100E31C0DBFF910E2E6E860E23 -:104B10002F6E500E306EBD0E316E0D0EDBCF33F0AA -:104B20000E0EDBCF34F00F0EDBCF35F0100E4AD96E -:104B30000FD9F60E336E100E346EF10E356EBE0EBA -:104B4000366E98EC21F0110E2EC0DBFF120E2FC036 -:104B5000DBFF130E30C0DBFF140E31C0DBFF0D0E88 -:104B6000DBCF00F00E0EDBCF01F00F0EDBCF02F03B -:104B7000100EDBCF03F0D30E336ECC0E346EB40EBA -:104B8000356E3F0E366ECCD898EC21F0150E2EC047 -:104B9000DBFF160E2FC0DBFF170E30C0DBFF180E39 -:104BA00031C0DBFF0D0EDBCF2EF00E0EDBCF2FF072 -:104BB0000F0EDBCF30F0100EDBCF31F0110EDBCF5C -:104BC00033F0120EDBCF34F0130EDBCF35F0140EC2 -:104BD000F9D8150EDBCF33F0160EDBCF34F0170EFD -:104BE000DBCF35F0180EDBCF36F02EEC22F0B0D84C -:104BF000190E2EC0DBFF1A0E2FC0DBFF1B0E30C0BC -:104C0000DBFF1C0E31C0DBFFC1D8190EDBCF33F048 -:104C10001A0EDBCF34F01B0EDBCF35F01C0ED2D8D2 -:104C200097D8CBD8EECF2EF0EECF2FF0EECF30F0DE -:104C3000EFCF31F000C033F001C034F002C035F0E6 -:104C400003C036F098EC21F031C0EDFF30C0EDFF2D -:104C50002FC0EDFF2EC0EFFF0C0EDB0409E1920E1A -:104C6000006E0A0E016E060E3FD898EC21F016D0A9 -:104C70000C0EDB50020806E1DB0E006E0F0E016E1B -:104C8000C90E09D00C0EDB5003080BE1920E006E2A -:104C90000A0E016E860E28D897EC21F06ED8DD52F0 -:104CA000DD520A0EDB500AE049D87BD8BF0E366EC3 -:104CB00037D881EC22F061D8DD52DD52DECF2DF005 -:104CC000DECF2EF0DECF2FF0DDCF30F0DD52DD5223 -:104CD0001D0EE15C02E2E16AE552E16EE552E5CFCC -:104CE000DAFFE7CFD9FF1200026E3F0E036E65D8E0 -:104CF000EECF04F0EECF05F0EECF06F0EFCF07F0E9 -:104D000004C033F005C034F006C035F007C036F0FB -:104D100000C02EF001C02FF002C030F0316E120042 -:104D200000C02EF0ECEF26F048D8EECFE6FFEECF35 -:104D3000E6FFEECFE6FFEFCFE6FF12003ED8EECF64 -:104D400000F0EECF01F0EECF02F0EFCF03F0120053 -:104D50002EC000F02FC001F030C002F031C003F0CF -:104D60001200000EDFCF33F0010EDBCF34F0020E65 -:104D7000DBCF35F0030EE2EF26F02EC0DEFF2FC0B2 -:104D8000DEFF30C0DEFF31C0DDFF1200DECF2EF0CF -:104D9000DECF2FF0DECF30F0DDCF31F0DD52DD524F -:104DA0001200336A346A800E356E12009AEC2FF0CE -:104DB000E552E552E552E5521200D9CFE9FFDACFCC -:104DC000EAFF1200DBCF36F081EF22F0366EA8DF6B -:104DD000DAEC23F0010A120001C02FF002C030F01B -:064DE00003C031F01200D7 -:0A4DE600D9CFE6FFDACFE6FFE1CFF8 -:104DF000D9FFE2CFDAFF240EE12402E3E168E652B4 -:104E0000E16ED950FA0FE96EFF0EDA20EA6E020E5B -:104E1000EECFDBFF030EEECFDBFF040EEECFDBFFAA -:104E2000050EEECFDBFFE8D9F2D996EC2CF0006E40 -:104E3000060EE15C02E2E16AE552E16E0050E76EC7 -:104E40000D0EE7CFDBFFDB50800815E0A0D9336AF9 -:104E5000346A356A366A00C02EF001C02FF002C0F5 -:104E600030F003C031F0E3EC23F0010A10E1210E31 -:104E70000101466F476B020EDB68030EDB68040E10 -:104E8000DB687F0EF36E050EF3CFDBFF66D10D0EF0 -:104E9000DB50050B01E061D10A0EDBCF00F00B0EF9 -:104EA000DBCF01F0830E0026FF0E012200C0DEFFE3 -:104EB00001C0DDFFD950060F65D976D9DF50010B4F -:104EC0000FE0DF06010E01E2DB06D950180F5AD9B8 -:104ED000D890EF36010EEB36020EEB36030EEB36B2 -:104EE000D9CFE9FFDACFEAFF020E346E356AEECF92 -:104EF0002FF0EDCF30F041EC24F02FC0EEFF30C0AA -:104F0000EDFF140EDB6A150EDB6A160EDB6A170E58 -:104F1000DB6A1C0EDB6A1D0EDB6A1E0EDB6A010EED -:104F2000F36E1F0EF3CFDBFF010EF36E0E0EF3CF09 -:104F3000DBFF0F0EDB6A0E0EDBCF00F00F0EDBCFB8 -:104F400001F0D890015004E61A0E005C000E0158E2 -:104F500001E398D0180EDBCF00F0190EDBCF01F083 -:104F60001A0EDBCF02F01B0EDBCF03F0010E1F0B7E -:104F700007E0D8900036013602360336E806F9E13C -:104F8000180E00C0DBFF190E01C0DBFF1A0E02C0B5 -:104F9000DBFF1B0E03C0DBFF140EDBCF08F0150E8A -:104FA000DBCF09F0160EDBCF0AF0170EDBCF0BF0CC -:104FB000010E1F0B07E0D890083609360A360B366B -:104FC000E806F9E1D9501C0FDDD80850EE24046E34 -:104FD0000950EE20056E0A50EE20066E0B50EE20B2 -:104FE000076ED950180FCED80450EE5C006E0550F5 -:104FF000EE58016E0650EE58026E0750EE58036EE2 -:10500000200E00C0DBFF210E01C0DBFF220E02C01C -:10501000DBFF230E03C0DBFF200EDBCF2EF0210EC3 -:10502000DBCF2FF0220EDBCF30F0230EDBCF31F0C1 -:105030003134000E311809E6D880000E2E54000ECF -:105040002F54000E3054000E315411E2D950200F6D -:1050500099D8AAD8D8D81C0EDB50EE121D0EDB5002 -:10506000EE121E0EDB50EE121F0EDB50EE12D95068 -:105070001C0F88D8AFD80E0EDB2A0F0E01E25BD7CB -:10508000DB2A59D7C9D8100E00C0DBFF110E01C0B2 -:10509000DBFF180EDBCF2FF0190EDBCF30F0120E36 -:1050A0002FC0DBFF130E30C0DBFFADD893D8D95033 -:1050B000100F68D8EE50ED1012E0D950120F62D8E0 -:1050C000EE50ED1006E1A8D80050011002100310B8 -:1050D00006E099D8EE2A000EEE22EE22EE220C0E09 -:1050E000DB6A91D8060EEECFDBFF070EEECFDBFFBB -:1050F000080EEECFDBFF090EEECFDBFF7E0EF36E68 -:105100000A0EF3CFDBFF0B0EDB6AD950020FE66EFF -:10511000000EDA20E66E70D824EC2DF0E552E55250 -:10512000E552E552DECFE6FFDDCFE6FF70D8FAECC0 -:105130002BF0006E060EE15C02E2E16AE552E16EE0 -:105140000050020E2DC0DBFF030E2EC0DBFF040E4D -:105150002FC0DBFF050E30C0DBFF19D800C02DF0DB -:1051600001C02EF002C02FF003C030F0240EE15C2D -:1051700002E2E16AE552E16EE552E5CFDAFFE7CF00 -:10518000D9FF1200E96E000EDA20EA6E1200020E5C -:10519000DBCF00F0030EDBCF01F0040EDBCF02F01B -:1051A000050EDBCF03F01200180EEECFDBFF190E59 -:1051B000EECFDBFF1A0EEECFDBFF1B0EEECFDBFFD9 -:1051C0001200EECFE6FFEECFE6FFEECFE6FFEFCF29 -:1051D000E6FF1200D890030EEB32020EEB32010E06 -:1051E000EB32EF321200EE500016EE500116EE5088 -:1051F0000216EE5003161200D950060FE66E000E8E -:10520000DA20E66E1200D950140FC2EF28F0D95000 -:10521000020FB8DFE1EF28F0010E006E016A026AAA -:08522000036AF1DFF3EF28F04F -:08522800A5D9E65201016A510B -:10523000040A45E0070A2DE0010A23E0030A0BE017 -:10524000010A01E094D0870EE66E25EC30F0E552BD -:105250000101010E32D0A1EC30F0000901E088D04C -:1052600072D901AE02D0026803686BC1E9FFEA6A35 -:10527000E9BEEA6845D9B00EE926000E56D9020EFD -:105280001CD09F0EE66E25EC30F0E5520101030EB6 -:1052900014D0A1EC30F000096BE155D901AE02D079 -:1052A000026803686BC1E9FFEA6AE9BEEA6828D9C7 -:1052B000D80EE926000E39D9040E6A6F59D06B2B2F -:1052C0000A0EE76E6B19E8AE02D0E73402D0E75061 -:1052D0006B5D4BE36B6B6CC1E9FFEA6AE9BEEA68A0 -:1052E00065D9EA22EE6AEE6AEE6AEE6A6CC1E9FFFF -:1052F000EA6AE9BEEA685FD9EA22EE6AEE6AEE6A15 -:10530000EE6ADF6A31D9E8AE02D0E73402D0E75066 -:10531000005C1EE2DFCFE9FFEA6AE9BEEA68F0D886 -:10532000B00EE926000EFCD8E9BEEA683FD908D9DC -:10533000DFCFE9FFEA6AE9BEEA68E2D8D80EE926DB -:10534000000EEED8E9BEEA6836D9FAD8DF2ADAD7F5 -:1053500001016C2B0A0EE76E6C19E8AE02D0E7343F -:1053600002D0E7506C5D01E36C6B6A6B01D06A6B35 -:10537000E55205D1FFD8050EE126010EDB6A020ECB -:10538000DB6A030EDB6A040EDB6AFE0EDB5011E102 -:10539000DF6AEAD8E8AE02D0E73402D0E750005C1A -:1053A0001CE2DFCFE9FFEA6AE9BEEA68FFD8AFD8BE -:1053B000F0D7FE0EDB0411E1DF6AD6D8E8AE02D0EA -:1053C000E73402D0E750005C08E2DFCFE9FFEA6A89 -:1053D000E9BEEA68F0D89BD8F0D7010EDBCF18F011 -:1053E000020EDBCF19F0030EDBCF1AF0040EDBCF79 -:1053F0001BF018C02DF019C02EF01AC02FF01BC0E2 -:1054000030F07EEC21F02EC014F02FC015F030C02B -:1054100016F031C017F0A0D82EC010F02FC011F038 -:1054200030C012F031C013F097D82EC00CF02FC04E -:105430000DF030C00EF031C00FF0336A346AA00EA8 -:10544000356E400E366E81EC22F02EC008F02FC073 -:1054500009F030C00AF031C00BF0336AC00E346E70 -:105460007F0E356E440E366E2EEC22F02EC004F008 -:105470002FC005F030C006F031C007F0336A346A3F -:10548000200E356E400E366E97EC21F02EC000F0E7 -:105490002FC001F030C002F031C003F0336A500E6B -:1054A000346E430E356E460E366E81EC22F01DECE6 -:1054B00023F0050EE15C02E2E16AE552E16E5FD0A5 -:1054C00059D8FE0EDB5002E1808409D0FE0EDB04C9 -:1054D00005E0FE0EDB50020802E1808480824FD09E -:1054E00049D8FE0EDB5002E1809409D0FE0EDB04A9 -:1054F00005E0FE0EDB50020802E1809480923FD06E -:10550000D890E936EA36D890E936EA3612003BD828 -:10551000D950010FE96EDACFEAFF3FD8DF2A120037 -:1055200032D86CC1E9FFEA6A1200EA2200C0EEFF3D -:1055300001C0EEFF02C0EEFF03C0EEFF010112004A -:10554000EA22CDEF2AF091EC30F0F3CF00F0F4CF67 -:1055500001F0026A036A1200336A346A200E356E63 -:10556000410E366E2EEF22F0DFCF00F00A0EE76E0E -:1055700000181200D9CFE6FFE1CFD9FF1200E552A3 -:10558000E7CFD9FF1200EA22EECF00F0EECF01F014 -:10559000EECF02F0EFCF03F012000050EE260150E4 -:1055A000EE220250EE220350EE221200A9DF600E1E -:1055B000E926000E1200A4DF880EE926000E120074 -:1055C000D9CFE6FFDACFE6FFE1CFD9FFE2CFDAFFAE -:1055D000140EE12402E3E168E652E16ED950040FB3 -:1055E000E66E000EDA20E66ED950F60FDAD802E247 -:1055F000E16AE552E16E0050E76E120EE7CFDBFF85 -:10560000D9500B0FE66E000EDA20E66ED950FA0F75 -:10561000C8D802E2E16AE552E16E0050E76E130E6F -:10562000E7CFDBFFDBCFE6FF120EDB50E552E710E2 -:10563000800B0EE1120EDB50040804E1130EDB5068 -:10564000040806E0120EDB040DE1130EDB040AE190 -:10565000210E0101466F476BDE68DE68DE687F0E53 -:10566000DD6E87D0FA0EDBCF2EF0FB0EDBCF2FF0F6 -:10567000FC0EDBCF30F0FD0EDBCF31F0F60EDBCFD2 -:1056800033F0F70EDBCF34F0F80EDBCF35F0F90E48 -:10569000DBCF36F02EEC22F02EC004F02FC005F048 -:1056A00030C006F031C007F097D831C0E6FF9AEC61 -:1056B0002FF0E552E552E552E5522DC000F02EC024 -:1056C00001F02FC002F030C003F02DC0E6FF84D8F7 -:1056D00067EC24F0E552E552E552E5522DC0DEFFBD -:1056E0002EC0DEFF2FC0DEFF30C0DDFFDD52DD52F9 -:1056F0000A0EDB5023E0DB0E006E0F0E016E490E2A -:10570000026E400E036ED9CFE9FFDACFEAFFEECF8B -:1057100004F0EECF05F0EECF06F0EFCF07F004C0B7 -:1057200033F005C034F006C035F007C036F05BD862 -:10573000316E97EC21F047D8DD52DD52110EDB506F -:105740001AE0D9CFE9FFDACFEAFFEECF00F0EECFD3 -:1057500001F0EECF02F0EFCF03F0336A346A800E2F -:10576000356EBF0E366E3FD803C031F081EC22F0AB -:105770002AD8DD52DD52DECF2DF0DECF2EF0DECF87 -:105780002FF0DDCF30F0DD52DD52140EE15C02E28D -:10579000E16AE552E16EE552E5CFDAFFE7CFD9FFE6 -:1057A0001200E96EFF0EDA20EA6EEECFE6FFEECFD2 -:1057B000E6FFEECFE6FFEFCFE6FF96EC2CF0006EB3 -:1057C000060EE15C12002EC0DEFF2FC0DEFF30C0EF -:1057D000DEFF31C0DDFF12002EC0E6FF2FC0E6FF66 -:1057E00030C0E6FF120000C02EF001C02FF002C052 -:0457F00030F0120083 -:0C57F40096D8E1CFD9FFE2CFDAFF0C0E0F -:10580000E12402E3E168E652E16ED950FA0FE96... [truncated message content] |
From: Olivier B. <Ba...@us...> - 2010-02-24 22:06:41
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via 4b6f331e6e1c0a2c4e91e5f13838a77ab7110ad7 (commit) from d5cabf5265f1cf7f5d47fd193ada0bd3b4c36e68 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 4b6f331e6e1c0a2c4e91e5f13838a77ab7110ad7 Author: Olivier BICHLER <oli...@gm...> Date: Wed Feb 24 23:06:18 2010 +0100 Added missing break ----------------------------------------------------------------------- Changes: diff --git a/USB_Module/Motor_Controller/Firmware/Motor_Controller.mcw b/USB_Module/Motor_Controller/Firmware/Motor_Controller.mcw index 59ac9e8..fd79bb8 100644 Binary files a/USB_Module/Motor_Controller/Firmware/Motor_Controller.mcw and b/USB_Module/Motor_Controller/Firmware/Motor_Controller.mcw differ diff --git a/USB_Module/Motor_Controller/Firmware/main.c b/USB_Module/Motor_Controller/Firmware/main.c index 8344746..f036db5 100644 --- a/USB_Module/Motor_Controller/Firmware/main.c +++ b/USB_Module/Motor_Controller/Firmware/main.c @@ -786,6 +786,7 @@ void ProcessIO(void) { ToSendDataBuffer.DATA[5] = dword.byte.UB; ToSendDataBuffer.DATA[6] = dword.byte.HB; ToSendDataBuffer.DATA[7] = dword.byte.LB; + break; default: ToSendDataBuffer.ERR = ERR_UNKNOWN_GET; diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof index aeb43bb..0a9c20b 100644 Binary files a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof and b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof differ diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex index 93d6151..6ddce26 100644 --- a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex +++ b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex @@ -1,14 +1,14 @@ :020000040000FA -:0600000069EF30F0120070 +:060000006AEF30F012006F :0600080004EF04F01200F9 :060018000CEF04F01200E1 -:0608000069EF30F0120068 +:060800006AEF30F0120067 :06080800FDEF0FF01200ED :0608180065EF10F0120074 -:06082A00040065610000FE -:1008300026010000210000005D6100005F01000052 -:10084000080000004F610000470100000E0000009A -:0C0850004C6100006A0100000300000081 +:06082A00040067610000FC +:1008300026010000210000005F6100005F01000050 +:100840000800000051610000470100000E00000098 +:0C0850004E6100006A010000030000007F :04085C000BEC0DF0A4 :10086000FE0EDB5006E1F80E96163C0E9416959897 :1008700008D0FE0EDB0405E1070E9612C30E94129B @@ -103,7 +103,7 @@ :100E0000E55210EF0DF00BEC0DF01D0ED6EC0CF0D2 :100E1000000E0EEC0FF010EF0DF00BEC0DF067EC88 :100E20000DF084080FE067EC0DF0C4080BE0E66AF3 -:100E3000E3EC0EF0D9EC0EF0020EE66E3CEC30F076 +:100E3000E3EC0EF0D9EC0EF0020EE66E3DEC30F075 :100E4000E552EDD71C0ED6EC0CF00A0E0EEC0FF0AE :100E5000E7EC0DF067EC0DF0800804E067EC0DF0B6 :100E6000C008E5E167EC0DF0C00802E1E7EC0DF029 @@ -178,15 +178,15 @@ :1012B00049EC0FF0E66A9BEC0DF0FFEC0DF0CDDB96 :1012C000C3EF0EF0A8DB3C0EE12670EC0EF05FECF5 :1012D0000FF070EC0EF0B2EC0FF056EC0FF008C00F -:1012E0002EF009C02FF00AC030F00BC031F080ECB6 +:1012E0002EF009C02FF00AC030F00BC031F081ECB5 :1012F00022F07EEC0FF0BEEC0EF068EC0FF087EC05 :101300000FF0BEEC0EF0A8EC0DF056EC0FF014C090 -:101310002EF015C02FF016C030F017C031F080EC61 -:1013200022F09FEC0EF075EC0FF097EC21F04DECF5 +:101310002EF015C02FF016C030F017C031F081EC60 +:1013200022F09FEC0EF075EC0FF098EC21F04DECF4 :101330000FF0336A346A800E356E40EC0FF0380ED1 :101340002EC0DBFF390E2FC0DBFF3A0E30C0DBFFB3 :101350003B0E31C0DBFF70EC0EF04DEC0FF0BCDB50 -:10136000BEEC0EF034DBB8DBDFEC2AF0086E080EC2 +:10136000BEEC0EF034DBB8DBE0EC2AF0086E080EC1 :10137000E15E0850080E2DC0DBFF090E2EC0DBFF1A :101380000A0E2FC0DBFF0B0E30C0DBFFDBDBF60EDF :10139000DB5007E0D950F40F12EC0FF0EE50ED10D7 @@ -200,16 +200,16 @@ :1014100033DF0A6E060EE15E0A50D4D1380EDBCF00 :1014200004F0390EDBCF05F03A0EDBCF06F03B0EB1 :10143000DBCF07F00C6A0D6A0E6A400E0F6E91DA70 -:1014400080EC22F03CEC0EF0F40EDBCF2FF0F50E2A -:101450007FDB9EDB9CEC0EF097EC21F0140E2EC08F +:1014400081EC22F03CEC0EF0F40EDBCF2FF0F50E29 +:101450007FDB9EDB9CEC0EF098EC21F0140E2EC08E :10146000DBFF150E2FC0DBFF160E30C0DBFF170EA3 -:1014700032DA70EC0EF09CEC0EF080EC22F0180EDC +:1014700032DA70EC0EF09CEC0EF081EC22F0180EDB :101480002EC0DBFF190E2FC0DBFF1A0E30C0DBFFB2 :101490001B0E21DABEEC0EF068EC0FF09CEC0EF0A7 -:1014A00080EC22F01C0E2EC0DBFF1D0E2FC0DBFFD8 +:1014A00081EC22F01C0E2EC0DBFF1D0E2FC0DBFFD7 :1014B0001E0E30C0DBFF1F0E31C0DBFF1C0EDBCF6A :1014C00000F01D0EDBCF01F01E0EDBCF02F01F0E71 -:1014D000DBCF03F088DB93EC0EF080EC22F0200EE3 +:1014D000DBCF03F088DB93EC0EF081EC22F0200EE2 :1014E0002EC0DBFF210E2FC0DBFF220E30C0DBFF42 :1014F000230E31C0DBFFD950180FE96EDACFEAFFB7 :10150000240EEECFDBFF250EEECFDBFF260EEECF57 @@ -222,35 +222,35 @@ :10157000E9DB2C0E2EC0DBFF2D0E2FC0DBFF2E0E65 :1015800030C0DBFF2F0E31C0DBFF2C0EDBCF04F0B1 :101590002D0EDBCF05F02E0EDBCF06F02F0EDBCFAE -:1015A00007F021DB75EC0FF080EC22F078DA300EDA +:1015A00007F021DB75EC0FF081EC22F078DA300ED9 :1015B0002EC0DBFF310E2FC0DBFF320E30C0DBFF51 :1015C000330E31C0DBFF280EDBCF2EF0290EDBCF30 :1015D0002FF02A0EDBCF30F02B0EDBCF31F05FDAAD :1015E000340E2EC0DBFF350E2FC0DBFF360E30C0B1 :1015F000DBFF370E31C0DBFFD950300F6CDBD95029 -:10160000340F69DBDFEC2AF0006E080EE15E00505B +:10160000340F69DBE0EC2AF0006E080EE15E00505A :101610000C0E2DC0DBFF0D0E2EC0DBFF0E0E2FC0FB :10162000DBFF0F0E30C0DBFF006A016A026A400E6A :10163000036E00C0E6FF01C0E6FF02C0E6FFE66EF3 :101640003BDB5FEC0FF048DAD8EC0FF02DC014F064 :101650002EC015F02FC016F030C017F049EC0FF077 -:10166000DFEC2AF0186E080EE15E1850E552E7CF65 +:10166000E0EC2AF0186E080EE15E1850E552E7CF64 :1016700003F0E552E7CF02F0E552E7CF01F0E55283 :10168000E7CF00F02DC004F02EC005F02FC006F00B -:1016900030C007F0AADB47DB80EC22F0100E2EC032 +:1016900030C007F0AADB47DB81EC22F0100E2EC031 :1016A000DBFF110E2FC0DBFF120E30C0DBFF130E6D -:1016B00031C0DBFFF60EDB5002081BE123DB96ECAA -:1016C00021F09CDB97EC21F075D94CDA060E2FC087 +:1016B00031C0DBFFF60EDB5002081BE123DB97ECA9 +:1016C00021F09CDB98EC21F075D94CDA060E2FC086 :1016D000DBFF070E30C0DBFFD7DB79D9020EDBCF93 :1016E0002FF0030EF2EC0FF0040E2FC0DBFF050EFF :1016F0004ED02E6A2F6A306A400E316E080EDBCF54 :1017000033F0090EDBCF34F00A0EDBCF35F00B0ED1 :10171000C4EC0FF0C2DB0C0EDBCF04F00D0EDBCF00 :1017200005F00E0EDBCF06F00F0EDBCF07F004C086 -:1017300033F005C034F006C035F007C036F096EC43 +:1017300033F005C034F006C035F007C036F097EC42 :1017400021F00C0E2EC0DBFF0D0E2FC0DBFF0E0EA6 -:1017500030C0DBFF0F0E31C0DBFFD4DA97EC21F095 -:101760004DDB96EC21F026D9FDD9040E2FC0DBFF0E +:1017500030C0DBFF0F0E31C0DBFFD4DA98EC21F094 +:101760004DDB97EC21F026D9FDD9040E2FC0DBFF0D :10177000050E30C0DBFF020EDBCF2FF0030E27D9A2 :1017800083DBF2EC0FF0060E2FC0DBFF070E30C03C :10179000DBFF59D805D9040EDBCF2FF0050E54DA44 @@ -270,9 +270,9 @@ :101870002DC018F02EC019F02FC01AF030C01BF088 :101880001200DBCF11F0336A346A340E356E430E2A :10189000366E0EC02EF00FC02FF010C030F011C009 -:1018A00031F080EC22F02EC00AF02FC00BF030C0D7 +:1018A00031F081EC22F02EC00AF02FC00BF030C0D6 :1018B0000CF031C00DF0DB0E336E0F0E346E490E9E -:1018C000356EDEDA89DAF2DA02C02EF0C2DA96EC90 +:1018C000356EDEDA89DAF2DA02C02EF0C2DA97EC8F :1018D00021F0CCEF0EF031C0DBFF046A056A800E08 :1018E000066E3F0E076E0C6A0D6A0E6A400E0F6E92 :1018F00004C0E6FF05C0E6FF06C0E6FF07C0E6FF3E @@ -281,17 +281,17 @@ :101920000DF0E552E7CF0CF0E552E7CF07F0E552B6 :10193000E7CF06F0E552E7CF05F0E552E7CF04F038 :101940002DC010F02EC011F02FC012F030C013F0D7 -:101950004CDA5BDA80EC22F03CEF0EF034DAABEFDD +:101950004CDA5BDA81EC22F03CEF0EF034DAABEFDC :101960000EF0F40EDBCF2FF0F50EB2DAE8D905EF6A :101970000FF09CDA93EF0EF0140EDBCF00F0150E93 :10198000DBCF01F0160EDBCF02F0170EDBCF03F03A :10199000336A346ADC0E356E420E366E93EF0EF00B :1019A000F70EDBCF2FF0F80E43EF0EF0E66E0BDAFA :1019B000D9EF0EF0100EDBCF33F0110EDBCF34F089 -:1019C000120EDBCF35F0130EDFDAEDEF22F080DA06 +:1019C000120EDBCF35F0130EDFDAEEEF22F080DA05 :1019D0007EEF0FF0EE58096E06C02DF007C02EF016 -:1019E00008C02FF0306E7DEC21F02EC002F02FC029 -:1019F00003F030C004F031C005F06EDA2DEC22F0B7 +:1019E00008C02FF0306E7EEC21F02EC002F02FC028 +:1019F00003F030C004F031C005F06EDA2EEC22F0B6 :101A0000DCDA2FC0F3FF30C0F4FF040EE15C1200FB :101A10002EDAE76E1200D9CFE6FFE1CFD9FF120030 :101A2000E552E7CFD9FF12009CD9026A036AB40ECF @@ -303,7 +303,7 @@ :101A8000DBFFDBCFE6FF070EDBCFE6FF040EDBCF8D :101A9000E6FF050EDBCFE6FF4EDADEEF0EF0140EAA :101AA000DBCF33F0150EDBCF34F0160EDBCF35F085 -:101AB000170EDBCF36F02DEC22F04DEF0FF0E66E77 +:101AB000170EDBCF36F02EEC22F04DEF0FF0E66E76 :101AC000CFD9020EE66EE0EC08F0E55212007BD9A9 :101AD00090EC06F0E552120089DA31C0E6FF120000 :101AE000D950F60F9FD9040EEECFDBFF050EEECFD7 @@ -326,31 +326,31 @@ :101BF000366E1200126E060EE15E1250120027DEE3 :101C00002EC024F02FC025F030C026F031C027F0C0 :101C1000350E336EFA0E346E0E0E356E3C0E366E89 -:101C200080EC22F02EC020F02FC021F030C022F036 +:101C200081EC22F02EC020F02FC021F030C022F035 :101C300031C023F0336A346A5C0E356E430E366E63 -:101C400080EC22F02EEF0CF043D961D945D980EC1D +:101C400081EC22F02EEF0CF043D961D945D981EC1B :101C500022F091D9BD0E336E370E346E860E356E7E :101C6000410E366EB6D92DC00CF02EC00DF02FC02F -:101C70000EF030C00FF0120022D918D936D92DEC51 -:101C800022F04DEF0FF024D91AD926D980EC22F09A +:101C70000EF030C00FF0120022D918D936D92EEC50 +:101C800022F04DEF0FF024D91AD926D981EC22F099 :101C900035D9CC0E336EBC0E346E8C0E356E3B0EC9 :101CA000366E97D92DC000F02EC001F02FC002F083 :101CB00030C003F049EF0FF0140EDBCF0CF0150E1F :101CC000DBCF0DF0160EDBCF0EF0170EDBCF0FF0D3 -:101CD00048DE96EF21F0E96EDACFEAFFA9EF0FF0C8 +:101CD00048DE97EF21F0E96EDACFEAFFA9EF0FF0C7 :101CE000FD0EDBCF2FF0FE0E68EF0FF0DBCFE6FF2F -:101CF000AEEF0CF069D9ECD835D93BDE80EC22F0A0 -:101D0000EDEF22F091DE0C0EDBCF0EF00D0EDBCFEF +:101CF000AEEF0CF069D9ECD835D93BDE81EC22F09F +:101D0000EEEF22F091DE0C0EDBCF0EF00D0EDBCFEE :101D10000FF00E0EDBCF10F00F0EB3DD56EC09F016 :101D200069DFBCEF0CF000C02EF001C02FF002C044 :101D300030F003C031F01200EAD8B9EF0CF01BD933 -:101D400056EF0FF021D9BBD814DE96EF21F0C0D8A2 +:101D400056EF0FF021D9BBD814DE97EF21F0C0D8A1 :101D500085DD49EF0FF0FDEC04F0E552E552E55268 :101D60001200F70EDBCFE6FFF80EDBCFE6FFF90E31 :101D7000DBCFE6FFFA0EDBCFE6FF1200FB0EDBCF78 :101D80002FF0FC0E1200010EE66ED5DE020EE66E9E :101D9000E0EC08F0E55244D610D92FC0E6FF30C081 -:101DA000E6FF1200F2EC26F0E552E552E552E5526C +:101DA000E6FF1200F3EC26F0E552E552E552E5526B :101DB00012007EEC04F0E552E5521200DECFE6FFA1 :101DC000DDCFE6FF1200FE0EDBCFE6FF120023DEC2 :101DD000B9DE3DDD2EEF0CF02EC006F02FC007F06F @@ -363,13 +363,13 @@ :101E4000E5521200DBCF03F0005001100210031026 :101E5000120003C02FF004C030F005C031F01200B2 :101E6000DAEC07F0206E0D0EE15E20501200E66EF7 -:101E700083EC2FF0E5521200CEDD040EE1261200B5 -:101E8000400E366E2DEF22F0000EDFCF2FF0010E48 +:101E700084EC2FF0E5521200CEDD040EE1261200B4 +:101E8000400E366E2EEF22F0000EDFCF2FF0010E47 :101E900012002DC0E6FFF6EF0FF02EC000F02FC0AD :101EA00001F030C002F031C003F012002EC033F058 :101EB0002FC034F030C035F031C036F012002EC0E3 :101EC00008F02FC009F030C00AF031C00BF012004A -:101ED000DBCF30F068EF21F0A60E336E280E346EA3 +:101ED000DBCF30F069EF21F0A60E336E280E346EA2 :101EE000940E356E3F0E366E120004C02EF005C003 :101EF0002FF006C030F007C031F012002EC004F001 :101F00002FC005F030C006F031C007F012002EC01F @@ -380,12 +380,12 @@ :101F50000EF0EECFE6FFEECFE6FFEECFE6FFEFCFDF :101F6000E6FF12002EC00CF02FC00DF030C00EF0B6 :101F700031C00FF012002EC010F02FC011F030C091 -:101F800012F031C013F01200DBCF36F080EF22F0F8 +:101F800012F031C013F01200DBCF36F081EF22F0F7 :101F9000FC0EDBCFE6FFFD0E76EF0EF00A0EE66ECE :101FA000E66A07DFE66A120036DDCCDDFFEF0DF0F2 -:101FB000D950380F90DED2EF0EF0EDEC22F02FC0AA +:101FB000D950380F90DED2EF0EF0EEEC22F02FC0A9 :101FC00000F030C001F01200F90EDBCF2FF0FA0E56 -:101FD000120080EC22F01CEF23F0F9DCD9DD5DDF8C +:101FD000120081EC22F01DEF23F0F9DCD9DD5DDF8A :101FE0005CEF0EF075DF48DE7AEF0EF02EC0E6FFF4 :0A1FF0002FC0E6FF30C0E6FF12002C :061FFA00DACFE4FFE2CFA4 @@ -393,42 +393,42 @@ :10201000E4FFF5CFE4FFF3CFE4FFF4CFE4FFFACF22 :10202000E4FF00EE29F0140EE80403E3EECFE4FF32 :10203000FBD700EE00F0290EE80403E3EECFE4FF47 -:10204000FBD798EC1BF09EA013D0A2EC1BF0010173 +:10204000FBD799EC1BF09EA013D0A3EC1BF0010171 :102050004D2B000E4E23E80E4D5D030E4E5905E349 -:102060004D6B4E6B4F2B000E502313EC29F09E90BE -:10207000ABEC1BF002E2E16AE552E16EE552E7CF1C +:102060004D6B4E6B4F2B000E502314EC29F09E90BD +:10207000ACEC1BF002E2E16AE552E16EE552E7CF1B :10208000D9FFE55200EE28F0290EE80403E3E5CF7E :10209000EDFFFBD700EE3CF0140EE80403E3E5CFC0 :1020A000EDFFFBD7E5CFFAFFE5CFF4FFE5CFF3FF78 :1020B000E5CFF5FFE5CFF7FFE5CFF6FFE5CFEAFF88 :1020C000E5CFE9FFE5CFDAFF1100D8CFE4FFE0CF9D :1020D000E4FFE46EDACFE4FFE2CFDAFFF3CFE4FF10 -:1020E000F4CFE4FF98EC1BF0ABEC1BF002E2E16AEA +:1020E000F4CFE4FF99EC1BF0ACEC1BF002E2E16AE8 :1020F000E552E16EE552E7CFD9FFE552E5CFF4FFB7 :10210000E5CFF3FFE5CFDAFFE550E5CFE0FFE5CF20 -:10211000D8FF100004D8F6EC1BF060D8FCD70F0EE7 -:10212000C11202D8C0EF1BF0BBEC1BF0E6526FEC03 -:102130001BF00101676F070E675D10E1E66A83EC33 -:102140002FF0E552DF6E000EDF80B3EC1BF0E66A85 -:102150003CEC30F0E552DF70B3EC1BF0D08EF28E29 +:10211000D8FF100004D8F7EC1BF060D8FCD70F0EE6 +:10212000C11202D8C1EF1BF0BCEC1BF0E65270EC00 +:102130001BF00101676F070E675D10E1E66A84EC32 +:102140002FF0E552DF6E000EDF80B4EC1BF0E66A84 +:102150003DEC30F0E552DF70B4EC1BF0D08EF28E27 :10216000F28CF30E8C1695160101476B486B496B88 :102170004A6B010E4B6FF90E921680160E0EE66E2C -:102180007C0EE66EE10EE66EF6EC2EF0E552E552C0 +:102180007C0EE66EE10EE66EF7EC2EF0E552E552BF :10219000E552CF0E9216939894943F0E9516010E29 :1021A000E66E2EEC04F0E552838C81888284808A6E -:1021B000838E80888294010EE66E77EC30F0E552D3 -:1021C00082849D80C50EE66ECCEC2FF0E552A2EC29 +:1021B000838E80888294010EE66E78EC30F0E552D2 +:1021C00082849D80C50EE66ECDEC2FF0E552A3EC27 :1021D0001BF0E552E552E7CFD9FF1200D9CFE6FF59 -:1021E000E1CFD9FF0F0EE12601014B5102E0B4EC23 +:1021E000E1CFD9FF0F0EE12601014B5102E0B5EC22 :1021F0001AF0200E0101005D03E36D50020B02E0B6 -:10220000AAEF1AF0010149514A1102E1000E08D06B +:10220000ABEF1AF0010149514A1102E1000E08D06A :1022100049C1E9FF4AC1EAFFEF50800B01E0010E1E :10222000000947E101014651EA6A260FE96E010EF5 :10223000EA22EF5000083DE20501406B01014C51DC :102240004C2B0501416F0501040E426F01014651FF :10225000EA6A260FE96E010EEA22EFCF43F5400E3F :10226000E66E400EE66E050EE66E010EE66E010E9F -:10227000E66E11EC20F0006E050EE15E0050F3CF2B +:10227000E66E12EC20F0006E050EE15E0050F3CF2A :1022800049F1F4CF4AF101014651EA6A260FE96E9D :10229000010EEA22EF6A01014651000803E2010142 :1022A000460707D001014551000803E201011F0E56 @@ -438,11 +438,11 @@ :1022E0000501406B01014C514C2B0501416F05016B :1022F0000A0E426F0501436B0501010E486F400E47 :10230000E66E400EE66E050EE66E010EE66E010EFE -:10231000E66E11EC20F0006E050EE15E0050F3CF8A +:10231000E66E12EC20F0006E050EE15E0050F3CF89 :1023200049F1F4CF4AF10101526B000E0101E76E51 :102330005119E8AE02D0513503D0E750D88051553D :1023400001E38ED001015151FF0A29E0FD0A13E09B -:10235000030A01E06ED0020EE66E5FEC2AF0E55251 +:10235000030A01E06ED0020EE66E60EC2AF0E55250 :1023600057EC07F0000904E00101020E516F02D0A2 :102370000101516960D0200EE66E030EE66EC80EB4 :10238000E66EE66AE80EE66E030EE66E3CEC09F0D9 @@ -450,51 +450,51 @@ :1023A00049514A1102E1000E08D049C1E9FF4AC172 :1023B000EAFFEF50800B01E0010E000939E1050151 :1023C000406B01014C514C2B0501416F0501050E7D -:1023D000426F0501436B0501486BCD0E006E5D0E2B +:1023D000426F0501436B0501486BCF0E006E5D0E29 :1023E000016E026A00C0E6FF01C0E6FF02C0E6FF20 -:1023F000480EE66E050EE66E47EC2FF0036E050EF6 +:1023F000480EE66E050EE66E48EC2FF0036E050EF5 :10240000E15E0350400EE66E400EE66E050EE66E8F -:10241000010EE66E010EE66E11EC20F0006E050E68 +:10241000010EE66E010EE66E12EC20F0006E050E67 :10242000E15E0050F3CF49F1F4CF4AF10101516B65 :1024300002D00101516B020EE66EE66AF0EC06F086 :10244000E552E55200090AE1020EE66E010EE66E63 :10245000F0EC06F0E552E552000902E00101516995 :1024600001014751481102E1000E08D047C1E9FFC0 :1024700048C1EAFFEF50800B01E0010E000902E0C5 -:10248000AAEF1AF005010251070A02E10BEF1AF058 -:102490000D0A01E148D2010A01E118D20D0A01E159 -:1024A000B0D1040A1AE0030A07E0010A02E069EF6A -:1024B0001AF0FF00AAEF1AF0E66A83EC2FF0E5525B -:1024C000DF6E000EDB80DFCFE6FFE66A63EC2FF005 -:1024D000E552E552FF00AAEF1AF0010149514A11F5 +:10248000ABEF1AF005010251070A02E10CEF1AF056 +:102490000D0A01E149D2010A01E119D20D0A01E157 +:1024A000B1D1040A1AE0030A07E0010A02E06AEF68 +:1024B0001AF0FF00ABEF1AF0E66A84EC2FF0E55259 +:1024C000DF6E000EDB80DFCFE6FFE66A64EC2FF004 +:1024D000E552E552FF00ABEF1AF0010149514A11F4 :1024E00002E1000E08D049C1E9FF4AC1EAFFEF50FE -:1024F000800B01E0010E000901E081D100C540F52B +:1024F000800B01E0010E000901E082D100C540F52A :102500000501416B0501030E426F0501436B050197 :1025100008510F0A01E110D1080A01E1BBD0010AFC :1025200001E17ED0020A71E0070A64E0010A20E0BE -:10253000030A06E0010A01E038D167C148F538D145 -:102540000501486BA90E006E5D0E016E026A00C0A7 +:10253000030A06E0010A01E039D167C148F539D143 +:102540000501486BAB0E006E5D0E016E026A00C0A5 :10255000E6FF01C0E6FF02C0E6FF480EE66E050E8C -:10256000E66E47EC2FF0036E050EE15E035020D1BE -:102570000501486B9D0E006E5D0E016E026A00C083 +:10256000E66E48EC2FF0036E050EE15E035021D1BC +:102570000501486B9F0E006E5D0E016E026A00C081 :10258000E6FF01C0E6FF02C0E6FF480EE66E050E5C -:10259000E66E47EC2FF0036E050EE15E03509B0ED6 +:10259000E66E48EC2FF0036E050EE15E03509D0ED3 :1025A000006E5D0E016E026A00C0E6FF01C0E6FF2C -:1025B00002C0E6FF480EE66E050EE66E47EC2FF011 -:1025C000036E050EE15E0350920E006E5D0E016E0D +:1025B00002C0E6FF480EE66E050EE66E48EC2FF010 +:1025C000036E050EE15E0350940E006E5D0E016E0B :1025D000026A00C0E6FF01C0E6FF02C0E6FF480E47 -:1025E000E66E050EE66E47EC2FF0036E050EE15E1B -:1025F0000350DED092CF48F593CF49F594CF4AF5FA -:1026000095CF4BF596CF4CF5D3D080CF48F581CF01 -:1026100049F582CF4AF583CF4BF584CF4CF5C8D02E -:10262000E66AB9EC29F0E552010E2DC0DBFF020E7F +:1025E000E66E050EE66E48EC2FF0036E050EE15E1A +:1025F0000350DFD092CF48F593CF49F594CF4AF5F9 +:1026000095CF4BF596CF4CF5D4D080CF48F581CF00 +:1026100049F582CF4AF583CF4BF584CF4CF5C9D02D +:10262000E66ABAEC29F0E552010E2DC0DBFF020E7E :102630002EC0DBFF030E2FC0DBFF040E30C0DBFF1C :10264000040EDBCF48F5030EDBCF49F5020EDBCFDE -:102650004AF5010EDBCF4BF5010EE66EB9EC29F021 +:102650004AF5010EDBCF4BF5010EE66EBAEC29F020 :10266000E552010E2DC0DBFF020E2EC0DBFF030E74 :102670002FC0DBFF040E30C0DBFF040EDBCF4CF5B8 :10268000030EDBCF4DF5020EDBCF4EF5010EDBCF97 -:102690004FF58ED00A0EE66EE66A7EEC04F0E55247 +:102690004FF58FD00A0EE66EE66A7EEC04F0E55246 :1026A000E552E66AE2EC05F0E552030EF3CFDBFFFC :1026B000040EF4CFDBFFE66AE2EC05F0E552DE52F1 :1026C000F3CFDEFFF4CFDDFFDD52040EDBCF48F5A4 @@ -504,967 +504,968 @@ :10270000DBFF040EF4CFDBFF010EE66EE2EC05F01A :10271000E552DE52F3CFDEFFF4CFDDFFDD52040ED3 :10272000DBCF4CF5030EDBCF4DF5020EDBCF4EF5C4 -:10273000010EDBCF4FF53CD0E66A19EC09F0E5520B +:10273000010EDBCF4FF53DD0E66A19EC09F0E5520A :10274000010E2DC0DBFF020E2EC0DBFF030E2FC0DB :10275000DBFF040E30C0DBFF040EDBCF48F5030EB9 :10276000DBCF49F5020EDBCF4AF5010EDBCF4BF58F :10277000010EE66E19EC09F0E552010E2DC0DBFFEB :10278000020E2EC0DBFF030E2FC0DBFF040E30C095 :10279000DBFF040EDBCF4CF5030EDBCF4DF5020E55 -:1027A000DBCF4EF5010EDBCF4FF50501020E436F77 -:1027B000400EE66E400EE66E050EE66E010EE66E0B -:1027C000010EE66E11EC20F0006E050EE15E005089 -:1027D000F3CF49F1F4CF4AF1400EE66E000EE66EFB -:1027E000050EE66EE66A010EE66E11EC20F0006E54 -:1027F000050EE15E0050F3CF47F1F4CF48F1AAEFA8 -:102800001AF005010851030A37E0010A25E0030A1E -:1028100013E0010A01E040D00501095192120501BF -:102820000A51931205010B51941205010C51951296 -:1028300005010D51961235D00501091D92160501AD -:102840000A1D931605010B1D941605010C1D951606 -:1028500005010D1D961625D00501091D89160501D6 -:102860000A1D8A1605010B1D8B1605010C1D8C1601 -:1028700005010D1D8D1615D005010951891205019F -:102880000A518A1205010B518B1205010C518C1251 -:1028900005010D518D1205D0030EE66E09EC30F0E6 -:1028A000E552400EE66E000EE66E050EE66EE66A36 -:1028B000010EE66E11EC20F0006E050EE15E005098 -:1028C000F3CF47F1F4CF48F1AAEF1AF00501085110 -:1028D000020A09E0030A01E00CD009C5E6FF5FEC3B -:1028E0002AF0E5520BD009C5E6FF6FEC2AF0E5525D -:1028F00005D0010EE66E09EC30F0E552400EE66EB2 -:10290000000EE66E050EE66EE66A010EE66E11EC4E -:1029100020F0006E050EE15E0050F3CF47F1F4CFDA -:1029200048F1AAEF1AF005010851060A02E1CAEFC0 -:1029300019F0080A02E190EF19F0030A02E187EFAB -:1029400019F0070A02E123EF19F0030A01E1C3D3EA -:10295000010A01E1D0D20F0A01E1B9D2020A01E174 -:102960006ED2010A01E13DD2070A01E10CD2010A4F -:1029700001E1DBD1030A01E1AAD1010A01E1A4D1FD -:102980000C0A01E126D1030A01E194D0040A02E015 -:10299000F2EF19F00501095104E0020E0501095D8D -:1029A00040E10AC5E6FF010EE66E63EC2FF0E5524A -:1029B000E5520BC5E6FF020EE66E63EC2FF0E55222 -:1029C000E5520CC5E6FF030EE66E63EC2FF0E55210 -:1029D000E5520DC5E6FF040EE66E63EC2FF0E552FE -:1029E000E5520EC5E6FF050EE66E63EC2FF0E552EC -:1029F000E5520FC5E6FF060EE66E63EC2FF0E552DA -:102A0000E55210C5E6FF070EE66E63EC2FF0E552C7 -:102A1000E55211C5E6FF080EE66E63EC2FF0E552B5 -:102A2000E5520501090504E0020E0501095D40E1DA -:102A30000AC5E6FF090EE66E63EC2FF0E552E5529B -:102A40000BC5E6FF0A0EE66E63EC2FF0E552E55289 -:102A50000CC5E6FF0B0EE66E63EC2FF0E552E55277 -:102A60000DC5E6FF0C0EE66E63EC2FF0E552E55265 -:102A70000EC5E6FF0D0EE66E63EC2FF0E552E55253 -:102A80000FC5E6FF0E0EE66E63EC2FF0E552E55241 -:102A900010C5E6FF0F0EE66E63EC2FF0E552E5522F -:102AA00011C5E6FF100EE66E63EC2FF0E552E5521D -:102AB000F7EF19F000C540F50501416B0501030E64 -:102AC000426F0501436B010EE66E83EC2FF0E55279 -:102AD0000501486F020EE66E83EC2FF0E55205010A -:102AE000496F030EE66E83EC2FF0E55205014A6F45 -:102AF000040EE66E83EC2FF0E55205014B6F050ED8 -:102B0000E66E83EC2FF0E55205014C6F060EE66E83 -:102B100083EC2FF0E55205014D6F070EE66E83EC56 -:102B20002FF0E55205014E6F080EE66E83EC2FF094 -:102B3000E55205014F6F090EE66E83EC2FF0E5526A -:102B40000501506F0A0EE66E83EC2FF0E552050189 -:102B5000516F0B0EE66E83EC2FF0E5520501526FBC -:102B60000C0EE66E83EC2FF0E5520501536F0D0E4F -:102B7000E66E83EC2FF0E5520501546F0E0EE66E03 -:102B800083EC2FF0E5520501556F0F0EE66E83ECD6 -:102B90002FF0E5520501566F100EE66E83EC2FF014 -:102BA000E5520501576F400EE66E400EE66E050ECB -:102BB000E66E010EE66E010EE66E11EC20F0006E80 -:102BC000050EE15E0050F3CF49F1F4CF4AF1F7EF83 -:102BD00019F0030EE66E010EE66E63EC2FF0E5527F -:102BE000E552E80EE66E020EE66E63EC2FF0E5525B -:102BF000E552E66A030EE66E63EC2FF0E552E5520D -:102C0000010EE66E040EE66E63EC2FF0E552E5521F -:102C1000E66A050EE66E63EC2FF0E552E552E66AD1 -:102C2000060EE66E63EC2FF0E552E552270EE66ED7 -:102C3000070EE66E63EC2FF0E552E552100EE66EDD -:102C4000080EE66E63EC2FF0E552E552030EE66ED9 -:102C5000090EE66E63EC2FF0E552E552E80EE66EE3 -:102C60000A0EE66E63EC2FF0E552E552E66A0B0EB3 -:102C7000E66E63EC2FF0E552E552010EE66E0C0EA7 -:102C8000E66E63EC2FF0E552E552E66A0D0EE66E55 -:102C900063EC2FF0E552E552E66A0E0EE66E63EC49 -:102CA0002FF0E552E552270EE66E0F0EE66E63EC4E -:102CB0002FF0E552E552100EE66E100EE66E63EC54 -:102CC0002FF0E552E55293D357EC07F090D3060E60 -:102CD00009C5DBFF050E0AC5DBFF080E0BC5DBFFD0 -:102CE000070E0CC5DBFF0A0E0DC5DBFF090E0EC576 -:102CF000DBFF090EDBCFE6FF0A0EDBCFE6FF070E98 -:102D0000DBCFE6FF080EDBCFE6FF050EDBCFE6FFED -:102D1000060EDBCFE6FF3CEC09F0006E060EE15E2E -:102D200000500101010E526F62D3060E09C5DBFF90 -:102D3000050E0AC5DBFF080E0BC5DBFF070E0CC531 -:102D4000DBFF0A0E0DC5DBFF090E0EC5DBFF090E0A -:102D5000DBCFE6FF0A0EDBCFE6FF070EDBCFE6FF99 -:102D6000080EDBCFE6FF050EDBCFE6FF060EDBCF5E -:102D7000E6FF43EC09F0006E060EE15E0050010133 -:102D8000010E526F34D3060E09C5DBFF050E0AC5CE -:102D9000DBFF080E0BC5DBFF070E0CC5DBFF0A0EC1 -:102DA0000DC5DBFF090E0EC5DBFF090EDBCFE6FF0D -:102DB0000A0EDBCFE6FF070EDBCFE6FF080EDBCF08 -:102DC000E6FF050EDBCFE6FF060EDBCFE6FF4AECA3 -:102DD00009F0006E060EE15E00500101010E526F17 -:102DE00006D3060E09C5DBFF050E0AC5DBFF080E7C -:102DF0000BC5DBFF070E0CC5DBFF0A0E0DC5DBFFA5 -:102E0000090E0EC5DBFF090EDBCFE6FF0A0EDBCF96 -:102E1000E6FF070EDBCFE6FF080EDBCFE6FF050E71 -:102E2000DBCFE6FF060EDBCFE6FF56EC09F0006EC7 -:102E3000060EE15E00500101010E526FD8D2060E5F -:102E400009C5DBFF050E0AC5DBFF080E0BC5DBFF5E -:102E5000070E0CC5DBFF0A0E0DC5DBFF090E0EC504 -:102E6000DBFF0C0E0FC5DBFF0B0E10C5DBFF0E0EDC -:102E700012C5DBFF0D0E13C5DBFF0D0EDBCFE6FF2A -:102E80000E0EDBCFE6FF11C5E6FF0B0EDBCFE6FF34 -:102E90000C0EDBCFE6FF090EDBCFE6FF0A0EDBCF21 -:102EA000E6FF070EDBCFE6FF080EDBCFE6FF050EE1 -:102EB000DBCFE6FF060EDBCFE6FF62EC09F0006E2B -:102EC0000B0EE15E00500101010E526F90D2060E12 -:102ED0000AC5DBFF050E0BC5DBFF050EDBCFE6FFEA -:102EE000060EDBCFE6FF09C5E6FF11EC09F0E5525F -:102EF000E552E5527CD2060E0AC5DBFF050E0BC576 -:102F0000DBFF080E0CC5DBFF070E0DC5DBFF0A0E4D -:102F10000EC5DBFF090E0FC5DBFF09C5E6FF03EC9D -:102F200007F0E552090EDBCF2FF00A0EDBCF30F0B1 -:102F300066EC21F02EC008F02FC009F030C00AF076 -:102F400031C00BF0A60E336E280E346E940E356E23 -:102F50003F0E366E08C02EF009C02FF00AC030F0C8 -:102F60000BC031F080EC22F02EC004F02FC005F031 -:102F700030C006F031C007F0CC0E336EBC0E346E9C -:102F80008C0E356E3B0E366E04C02EF005C02FF051 -:102F900006C030F007C031F080EC22F01CEC23F0CA -:102FA0002DC000F02EC001F02FC002F030C003F0A1 -:102FB00000C0E6FF01C0E6FF02C0E6FF03C0E6FF77 -:102FC000070EDBCF2FF0080EDBCF30F066EC21F0E0 -:102FD0002EC014F02FC015F030C016F031C017F01D -:102FE000A60E336E280E346E940E356E3F0E366E7E -:102FF00014C02EF015C02FF016C030F017C031F0FD -:1030000080EC22F02EC010F02FC011F030C012F072 -:1030100031C013F0BD0E336E370E346E860E356E32 -:10302000410E366E10C02EF011C02FF012C030F0DD -:1030300013C031F080EC22F01CEC23F02DC00CF01A -:103040002EC00DF02FC00EF030C00FF00CC0E6FF08 -:103050000DC0E6FF0EC0E6FF0FC0E6FF050EDBCF9A -:103060002FF0060EDBCF30F066EC21F02EC01CF006 -:103070002FC01DF030C01EF031C01FF0A60E336E01 -:10308000280E346E940E356E3F0E366E1CC02EF038 -:103090001DC02FF01EC030F01FC031F080EC22F0B8 -:1030A0001CEC23F02DC018F02EC019F02FC01AF020 -:1030B00030C01BF018C0E6FF19C0E6FF1AC0E6FFDB -:1030C0001BC0E6FF09C5E6FFDAEC07F0206E0D0E27 -:1030D000E15E20508CD1060E0AC5DBFF050E0BC544 -:1030E000DBFF080E0CC5DBFF070E0DC5DBFF09C5B6 -:1030F000E6FF03EC07F0E5520EC5E6FF070EDBCF57 -:103100002FF0080EDBCF30F066EC21F02EC008F077 -:103110002FC009F030C00AF031C00BF0A60E336E9C -:10312000280E346E940E356E3F0E366E08C02EF0AB -:1031300009C02FF00AC030F00BC031F080EC22F053 -:103140002EC004F02FC005F030C006F031C007F0EB -:10315000CC0E336EBC0E346E8C0E356E3B0E366E5E -:1031600004C02EF005C02FF006C030F007C031F0CB -:1031700080EC22F01CEC23F02DC000F02EC001F0FA -:103180002FC002F030C003F000C0E6FF01C0E6FF30 -:1031900002C0E6FF03C0E6FF050EDBCF2FF0060EF0 -:1031A000DBCF30F066EC21F02EC014F02FC015F00C -:1031B00030C016F031C017F0A60E336E280E346EF4 -:1031C000940E356E3F0E366E14C02EF015C02FF0E3 -:1031D00016C030F017C031F080EC22F02EC010F095 -:1031E0002FC011F030C012F031C013F0BD0E336E9D -:1031F000370E346E860E356E410E366E10C02EF0D0 -:1032000011C02FF012C030F013C031F080EC22F06A -:103210001CEC23F02DC00CF02EC00DF02FC00EF0D2 -:1032200030C00FF00CC0E6FF0DC0E6FF0EC0E6FF99 -:103230000FC0E6FF09C5E6FF6AEC08F0186E0A0E3B -:10324000E15E1850D4D0060E0AC5DBFF050E0BC593 -:10325000DBFF09C5E6FF03EC07F0E5520CC5E6FF0E -:10326000050EDBCF2FF0060EDBCF30F066EC21F041 -:103270002EC008F02FC009F030C00AF031C00BF0AA -:10328000A60E336E280E346E940E356E3F0E366EDB -:1032900008C02EF009C02FF00AC030F00BC031F08A -:1032A00080EC22F02EC004F02FC005F030C006F0F4 -:1032B00031C007F0BD0E336E370E346E860E356E9C -:1032C000410E366E04C02EF005C02FF006C030F05F -:1032D00007C031F080EC22F01CEC23F02DC000F090 -:1032E0002EC001F02FC002F030C003F000C0E6FF96 -:1032F00001C0E6FF02C0E6FF03C0E6FF09C5E6FF26 -:10330000C8EC08F00C6E060EE15E0C5070D009C5DA -:10331000E6FFE0EC08F0E5520101010E526F67D0C4 -:10332000E9EC0BF0050EF3CFDBFF060EF4CFDBFF6D -:10333000FFEC0BF0070EF3CFDBFF080EF4CFDBFF43 -:1033400000C540F50501416B0501030E426F050103 -:10335000436B060EDBCF48F5050EDBCF49F5080EB3 -:10336000DBCF4AF5070EDBCF4BF5400EE66E400E85 -:10337000E66E050EE66E010EE66E010EE66E11ECCF -:1033800020F0006E050EE15E0050F3CF49F1F4CF5E -:103390004AF12DD000C540F50501416B0501030E32 -:1033A000426F0501436B16EC0CF0000904E00501C7 -:1033B000010E486F02D00501486B400EE66E400ECC -:1033C000E66E050EE66E010EE66E010EE66E11EC7F -:1033D00020F0006E050EE15E0050F3CF49F1F4CF0E -:1033E0004AF105D0010EE66E09EC30F0E552400ED0 -:1033F000E66E000EE66E050EE66EE66A010EE66EFD -:1034000011EC20F0006E050EE15E0050F3CF47F1A5 -:10341000F4CF48F19FD0010149514A1102E1000E59 -:1034200008D049C1E9FF4AC1EAFFEF50800B01E033 -:10343000010E00094DE10101010E516F0501406BC4 -:1034400001014C514C2B0501416F0501050E426FE6 -:103450000501436B0501486B7E0E006E5D0E016E2B -:10346000026A00C0E6FF01C0E6FF02C0E6FF480EA8 -:10347000E66E050EE66E47EC2FF0036E050EE15E7C -:103480000350400EE66E400EE66E050EE66E010E2F -:10349000E66E010EE66E11EC20F0006E050EE15EA8 -:1034A0000050F3CF49F1F4CF4AF1400EE66E000E22 -:1034B000E66E050EE66EE66A010EE66E11EC20F091 -:1034C000006E050EE15E0050F3CF47F1F4CF48F1F6 -:1034D00041D0010149514A1102E1000E08D049C111 -:1034E000E9FF4AC1EAFFEF50800B01E0010E00093D -:1034F00031E100C540F50501416B0501030E426F46 -:103500000501010E436F400EE66E400EE66E050E9D -:10351000E66E010EE66E010EE66E11EC20F0006E16 -:10352000050EE15E0050F3CF49F1F4CF4AF1400EB1 -:10353000E66E000EE66E050EE66EE66A010EE66EBB -:1035400011EC20F0006E050EE15E0050F3CF47F164 -:10355000F4CF48F10F0EE15C02E2E16AE552E16E60 -:10356000E552E7CFD9FF120001015351541104E194 -:10357000100E536F270E546F5307000E545B6DA24D -:1035800007D0535154112EE18C748CB413D027D032 -:103590000101005102E18C9422D0000502E18C84EB -:1035A00009D0020E005D02E18C8419D0040E005D8A -:1035B00003E18C948C861200100E005D06E101017F -:1035C000535154110FE18C740AD0200E005D0AE1B2 -:1035D00001015351541106E18C748CA402D08C96D5 -:1035E00012008C8612001200120012001200B0EFBE -:1035F0002DF012001E0EE66E010EE66EDFEC1FF0DF -:10360000E552E552400EE66E000EE66E050EE66EE1 -:10361000E66A010EE66E11EC20F0006E050EE15E2A -:103620000050F3CF47F1F4CF48F112006D8401014F -:10363000080E686F070E696F6807000E695B6851B6 -:103640006911FAE16D941200D9CFE6FFE1CFD9FFFD -:10365000FD0EDBCF2FF0FE0EDBCF30F0010E2F186A -:1036600001E1305033E0E8682F1802E1E8683018D3 -:103670002BE0030E2F1801E1305024E0040E2F1828 -:1036800001E130501DE0020E2F1801E1305016E02C -:10369000170E2F1801E130500FE0160E2F1801E120 -:1036A000305008E0150E2F1801E1305001E010D025 -:1036B000A1DF0FD09EDF0DD09ADF0BD096DF09D0AF -:1036C00092DF07D091DF05D091DF03D0000001D059 -:1036D00000D0010E00D0E552E7CFD9FF12004BD841 -:1036E000E652D0B202D0010E15D0D0B802D0020EF0 -:1036F00011D0D0B002D0030E0DD0D0B602D0040E3F -:1037000009D0FCAE02D0050E05D0FCAC02D0060EEE -:1037100001D0070EDF6ED088D086D084D082D080D2 -:10372000FC9EFC9CDF50E552E552E7CFD9FF12002A -:10373000E65221D8020EE126F350DF6E010EF4CFDF -:10374000DBFF1200C00EE66EE00EE66EEDEC2FF031 -:10375000E552E5521200DF50F36E010EDB50F46EBD -:10376000020EE15C1200DFCFE6FFE66A63EC2FF0A9 -:10377000E552E5521200D9CFE6FFE1CFD9FF1200A2 -:10378000B8EC20F06A6A686AEBEC20F06D8C6E6A27 -:103790009BEC20F06D9CDF6ACCEC20F010E2DF5057 -:1037A000040DF3CFE9FFF4CFEAFF000EE926040E83 -:1037B000EA22EE6AEE6AEE6AEE6ADF2AEDD7160EAC -:1037C000706E68A604D0030E61EC20F0FAD70101F8 -:1037D000136B186B196B1A6B6D98080E0B6F040E38 -:1037E0000C6F016B006BE55276EF20F0B8EC20F027 -:1037F000010100510BE16D6A696AEBEC20F06DB6D6 -:1038000002D06D86FCD70101010E006F000508E1B2 -:103810006DBA06D0686A696A69806988020E006FAD -:103820006850040B07E06950040B04E0020E61ECE1 -:1038300020F089D86DB247D06850010B14E0695070 -:10384000010B11E09DDF0101040E006F0401200E49 -:10385000026F040E036F080E016F006B8C0E0013D5 -:10386000E66A2AEC21F06850100B07E06950100B53 -:1038700004E060D8040E61EC20F06850400B0BE0CF -:103880006950400B08E0F2EC20F0020E69EC20F0E9 -:10389000060E61EC20F06850200B04E06950200B0C -:1038A00001E035D86850020B0AE06950020B07E0CE -:1038B000F2EC20F0E668E6684AEC21F06A6A040E51 -:1038C0000101005D02E2A19A1FD069A61CD0DF6A47 -:1038D000040EDF5C18E268A616D06CCF20F1030E50 -:1038E00061EC20F0780E0101201502E138D809D0F2 -:1038F000000EE66EE66A200EE66E010EE66E010E22 -:10390000E8DBDF2AE5D7A19AE55276EF20F070A038 -:103910000ED084EC20F0EF50800808E1D5DBEF50AA -:10392000840804E184EC20F08C0EEF6E7090050E9C -:1039300061EF20F06984040EC4DB6D82A4EC20F0FA -:10394000040E69EF20F0A4EC20F0030EC2DB6D92B0 -:10395000699468A403D0020EB4DBFBD71200B8EC64 -:1039600020F0FD0E010120153DE17E0E2015E840FE -:103970007F0B040DF3CF03F1F4CF04F1000E032706 -:10398000040E042303C105F104C106F10575BCDB77 -:10399000EF503C0BE842E8420D0822E1B5DB21EC98 -:1039A00021F0EECF00F0EFCF01F0280E001816E165 -:1039B000040E011813E15BEC21F0DF6AEDDB0EE28F -:1039C000DF50D4EC20F0DF50EA6A200FE96E040EDD -:1039D000EA22E552E750EF6EDF2AF0D70AD807D087 -:1039E0001AD805D0FD0E2015040801E122D8E552B1 -:1039F0007DD36ADBEF50800B02E066DBEF6A0101EA -:103A00000F6B106B146B156B136B64D89DDB170E6B -:103A100060DB9FEF1EF0020E0101105D02E12CEF52 -:103A20001FF034D80101215102E126EF21F0216B72 -:103A300012009EDB49DBEF50400B01E0010EDF6E10 -:103A400001010B75080E005D09E122C46EFF6E5086 -:103A5000000802E2100E01D0040E006F100513E101 -:103A60005FEC21F0A6D9020E01010F5D03E12CDB12 -:103A7000840E07D0DF5003E127DBC80E02D024DB21 -:103A8000880EEF6E01D002D8E55230D32BDB010156 -:103A9000106B1ADBEF6A040E0B19006E0CC101F0FB -:103AA000DE6E0CC1DDFF19DBEF6A18AF0CD01B51C5 -:103AB0001C1107E005D01CC1FAFF01011B51F96E72 -:103AC000FADF0101189F020EE15C02E2E16AE552B1 -:103AD000E16E0CD304012051600BE842E842E84259 -:103AE000E842E842000901E0120021510C0A45E0D9 -:103AF0000B0A3FE00C0A31E0010A22E00B0A1EE04B -:103B0000020A1CE0030A18E0080A10E0010A0CE0AF -:103B10000F0A08E0030A01E012000101138F080EEA -:103B2000006F12001FEF1EF088EF1FF00101010E61 -:103B3000116F010E126F0CD060EF1EF0BEEF1DF082 -:103B400024510101116F126B020E1127010E122375 -:103B50001381010E146F138F12000101138F0401E2 -:103B60002451EA6A020FE96E010EEA2222C4EFFF35 -:103B70001200EADA160E69EF20F012007EDB040E66 -:103B8000E1260401220510E120511F0B00090CE180 -:103B90000101138F030E0401215D04E10101010EF7 -:103BA0001F6F02D001011F6B0401225141E120511E -:103BB0001F0B02083DE124510F0B000939E0010100 -:103BC000138F040124BF05D0A4DA070EE926010EE5 -:103BD00004D09FDA0B0EE926010ED2DA030E215D26 -:103BE00003E17BDA840E23D024510F0B016A700F9E -:103BF000006E0F0E0122020E00C0DBFF030E01C09B -:103C0000DBFF020EDBCFE9FF030EDBCFEAFFEE9016 -:103C1000ED5224AF06D061DAEF6ADF745EDA400E4F -:103C200006D05BDA880EEF6EDF7457DAC80EEF6EDF -:103C3000040EE15C02E2E16AE552E16E57D2800EC9 -:103C40000401205D3CE10101C00E136F040123510A -:103C5000030A1EE0010A09E0030A2FE101012E0E0A -:103C6000116F5C0E126F120E22D0C3DAD80EF62638 -:103C70005C0EA2DA020E0101F76A1125F66E1251EE -:103C8000F7220900F5CF14F10A00F5CF15F1120063 -:103C9000030E225D0FE2ADDADA0EF6265C0E8CDA48 -:103CA00011C1F6FF12C1F7FF0800F5500101146FB2 -:103CB000156B12000101136B12000101136B12004E -:103CC00011DA0401286B296B20511F0B020A11E045 -:103CD000030A0CE0010A22E10101138F040128818B -:103CE00001011F051BE10401288318D00101138F76 -:103CF00015D00101138F040124BF05D00ADA070E85 -:103D0000E926010E04D005DA0B0EE926010E38DA99 -:103D1000E4D9EF50040B02E0010E286F010113AF4C -:103D200007D0280E116F040E126F1381020E146F4C -:103D3000020EE15C02E2E16AE552E16ED7D16D98D4 -:103D4000010113BF08D018AF02D061DA2AD07EDAA1 -:103D5000BBD9840E27D018BF2BD0040120AF24D0AC -:103D6000010114510401265D010115510401275977 -:103D700004E226C414F127C415F11BD80101010E79 -:103D8000106FA1DA800EEF6E216BBED9EE52080ED5 -:103D9000EF6E91DAB9D9840EEF6E010E216F8FDAD2 -:103DA00093D9C80EEF6E1200010131DAC80EEF6E22 -:103DB000120098D90101080E145D000E15590DE28C -:103DC00014C1DEFF15C1DDFF0F5102E1010E03D06A -:103DD0000F0506E1020E0F6F03D0080EDE6EDD6ADE -:103DE00073D9EF9271D9EF906FD9010EDB50EF12BA -:103DF0006BD9EE52DFCFEFFF000EDB50145F010EE8 -:103E0000DB50155B280E1D6F040E1E6F13B10FD013 -:103E1000F7D91BE011C1F6FF12C1F7FF112B000EFD -:103E200012230800F55096D9F3E2DB06F1D7E8D962 -:103E30000CE011C1E9FF12C1EAFF112B000E1223A1 -:103E4000EF5088D9F4E2DB06F2D7020EE15C02E221 -:103E5000E16AE552E16E4AD145D956D9EE52EFCF2B -:103E6000DFFFDFCF00F000500101195D000E1A598D -:103E700003E219C1DFFF09D0DF50006E016AE8508C -:103E8000195D196F01501A591A6F010EDB6ADF5064 -:103E9000F36E010EDBCFF4FFF350F45C10E2010E81 -:103EA000DB5082D916C1E9FF17C1EAFF162B000EBD -:103EB0001723E552E750EF6E010EDB2AE8D7000E1C -:103EC000D8801955000E1A550DE2F4D854D91CD9D2 -:103ED000EF50400B03E1EAD9C80E02D0E7D9880EB3 -:103EE000EF6E0FD0F0D9840EEF6E1B511C1107E05E -:103EF00005D01CC1FAFF01011B51F96EFADF010167 -:103F0000189F020EE15C02E2E16AE552E16EEED03A -:103F10000101138F10D9010EE66EE66AE66A020E01 -:103F2000E66E010EAFD922C401F10401225104E171 -:103F30000101100E006F12000101200E006F04D964 -:103F4000150E69EF20F0CED8000EDE6E040EDD6E89 -:103F5000E8D8040DF350006E016A020E0F0B05E065 -:103F6000D89001320032E806FBE1D89000360136E5 -:103F7000D89000360136D9CFE9FFDACFEAFF0050FA -:103F8000EE260150ED22A9D8EF9EFD0EDB5002E196 -:103F90006AD901D06DD9EA22DECFEEFFDDCFEDFF89 -:103FA0009CD8EF9C9AD8040EE926000EEA22EF8CEA -:103FB000020EE15C02E2E16AE552E16E97D092D82E -:103FC000FE0EDB50016A700F006E0F0EDFD885D831 -:103FD000FD0EDBCFEFFFDBA402D0E66AF5D8FD0EC5 -:103FE000DBA203D0010EE66EEFD8020EE15C02E226 -:103FF000E16AE552E16E7AD075D8FE0EDB5005E13C -:1040000025D962D8840EEF6E05D08BD80CD989D80B -:10401000010F09D9020EE15C02E2E16AE552E16EAC -:1040200065D060D8FD0EDB5002E022D901D01BD94B -:10403000A7D853D806D9FB0EDBCFEEFFFC0EDBCFA3 -:10404000EDFF4BD8EE52FA0EDBCFEFFF400E45D816 -:10405000E850EF16880E41D8E850EF12FD0EDB5005 -:1040600002E006D901D0FFD8EA22EF74DECF00F0DB -:10407000DDCF01F000C0F3FF01C0F4FF020EE15CF0 -:1040800002E2E16AE552E16E31D0F7D8010EF36E3B -:10409000FC0EDB5004E0D890F336E806FCE1F31C9C -:1040A000006EFD0EDBCFE9FFFE0EDBCFEAFF005016 -:1040B000EF161CD0FBD8EE52080EEF6EF7D821EFAA -:1040C00021F0E66E2AEF21F00BC1E9FF0CC1EAFFF7 -:1040D0001200E66EE66A4AEF21F0DECFE9FFDDCF9F -:1040E000EAFF1200CAD8020EE1261200E552E7CF1D -:1040F000D9FF1200D6D856EF21F0FE0EEA6ADB3463 -:10410000FE0BEA36E96E120003C1E9FF04C1EAFFC3 -:10411000120024510F0BE96EEA6AD890E936EA36AC -:104120001200FD0EDB50E824026EFE0EDB50040D83 -:10413000F35002241200000EE66EE66AE66A710E83 -:10414000E66E0F0E42EF21F0000EE66EE66AE66EB6 -:10415000E66A1200E66E1DC1E9FF1EC1EAFF1D2BD3 -:10416000000E1E23E552E750EF6EDF06010E12002F -:1041700084D8E6521200280EEE6E040EED6E120088 -:10418000EA22EECFDEFFEDCFDDFF1200012200C0FC -:10419000DEFF01C0DDFF1200DF50006E016A080E75 -:1041A000005C000E01581200EA6A280FE96E040E46 -:1041B000EA22EF50E66E1200F7220900F5CF11F166 -:1041C0000A00F5CF12F11200FE0EDBCFE6FFBBDED8 -:1041D000E552E5521200160E6F6E9F0E6B6E7B0E4F -:1041E000696E1200010EE66EE66A000EE66EE66A81 -:1041F00012002251F66EF76AD890F636F7361200A2 -:10420000D9CFE9FFDACFEAFFEE50ED101200020E2F -:10421000106F5ADFEE52EF6A57DFC80EEF6E4ADFBB -:10422000AADF56EF21F0040DF3CF00F0F4CF01F038 -:10423000000E0026040EAADF840E4FDFE850EF12B6 -:104240001200020EE926000EEA2212003CD88C0E63 -:10425000EF6E1200680EE66E0F0EE66E16DFE55288 -:10426000E552E552120049DF070EE926010E120061 -:1042700044DF0B0EE926010E1200D9CFE6FFE1CF95 -:10428000D9FF1200E66E2DEC2FF0006E050EE15EF8 -:104290000050120024EC1BF0006E060EE15E005090 -:1042A0001200200EEE6E040EED6E120005C1E9FF45 -:1042B00006C1EAFF120028DFC4DF51EF21F004DF5E -:0C42C000C0DFBBEF20F0F6DE7AEF20F04C -:0442CC00389E08D040 -:1042D000389E30AE05D02F6C301EE86A3022388E02 -:1042E00030C02AF02FC029F03C6A3B6A8E0E2B6E3C -:1042F0002C6A6FEF23F0389E0CD0389E30AE09D078 -:104300002D6C2E1E2F1E301EE86A2E222F223022E8 -:10431000388E30C02AF02FC029F02EC03CF02DC0BE -:104320003BF09E0E2B6E2C6A6FEF23F0367E386AC0 -:10433000ABEC23F0C3EC23F038B653EF23F038A2F4 -:104340000AD038AA03D038BE53EF23F038A45FEF69 -:1043500023F05CEF23F038AA05D038AC5FEF23F0F0 -:104360005CEF23F038A00AD038A808D038BE04D0BB -:1043700038A402D068EF23F06CEF23F03B6A2C6A7C -:104380003650315C3A6E10E32EC03CF02FC029F05D -:1043900030C02AF031C039F033C02EF034C02FF0D5 -:1043A00035C030F0383A09D033C03CF034C029F081 -:1043B00035C02AF036C039F03A6C389E38BC388E99 -:1043C00039C02BF038B09BEF23F01A0E3A609BEF08 -:1043D00023F02B6A316A38A408D02E6C2F1E301EB1 -:1043E000311EE86A2F223022312238AC08D03C6CD2 -:1043F000291E2A1E2B1EE86A29222A222B222D6A18 -:104400003A5207E0313430322F322E322D323A2EEA -:10441000F9D72E503C262F50292230502A223150D5 -:104420002B222DC03BF0389E2BAE0BD03B6C3C1E9C -:10443000291E2A1E2B1EE86A3C2229222A222B2210 -:10444000388E2BA006D0D8802A3229323C323B321B -:10445000392A39C02BF06FEF23F0386AABEC23F028 -:10446000C3EC23F038B653EF23F038A205D038BAA6 -:1044700053EF23F05AEF23F038BA66EF23F038A059 -:1044800005D038B853EF23F066EF23F038B85AEF71 -:1044900023F02C6A7F0E31242B6EE86A2C223650D2 -:1044A0002B5EE86A2C5A1A0E396E316A3B6A3C6AF6 -:1044B000296A2A6A33502E5E34502F5A3550305AAA -:1044C000000E315A09E733502E2634502F22355032 -:1044D0003022000E312201D03B8AD8902E362F3662 -:1044E00030363136D8903B363C3629362A36392E8E -:1044F000E1D730502F102E10D8A43B8A6FEF23F055 -:10450000386AABEC23F0C3EC23F038B653EF23F05A -:1045100038A205D038B853EF23F05AEF23F038AA69 -:1045200005D038B053EF23F05AEF23F038B002D063 -:1045300038A802D066EF23F02C6A365031242B6E57 -:10454000E86A2C227E0E2B5EE86A2C5A3B6A3C6A93 -:10455000296A2A6A35503002F4CF2AF0F3CF29F0C5 -:1045600034503002F3503C26F4502922000E2A2207 -:1045700035502F02F3503C26F4502922000E2A22F7 -:1045800033503002F3503B26F4503C22000E2922D7 -:104590002A2234502F02F3503B26F4503C22000EC6 -:1045A00029222A2235502E02F3503B26F4503C2279 -:1045B000000E29222A2233502F02F4503B26000EEF -:1045C0003C2229222A2234502E02F4503B26000E8F -:1045D0003C2229222A226FEF23F0386AABEC23F029 -:1045E00038B6F7EF22F038A20ED038B405D07F0EDF -:1045F000306EFF0E2F6E1FD0800E306E2F6A1BD0D4 -:10460000306A2F6A18D038B0FBD78F0E3160EDD7E3 -:104610007E0E3164F5D78E0E315C05E0D8903032D5 -:104620002F32312AF8D738A406D02F6C301EE86A12 -:10463000302230AEE5D71200386AABEC23F038B642 -:1046400026EF23F038A20FD038B407D07F0E306E9B -:10465000FF0E2F6E2E6E2D6E25D0800E306E01D087 -:10466000306A000EF6D738B0FBD72D6A9F0E316046 -:10467000EBD77E0E3164F4D79E0E315C07E0D89004 -:1046800030322F322E322D32312AF6D738A40AD0CA -:104690002D6C2E1E2F1E301EE86A2E222F22302255 -:1046A00030AEDED712007F0E316EFF0E306E2F6EF1 -:1046B0002E6E12007F0E38BEFF0E316E02D07F0EBE -:1046C000316E800E306E2F6A2E6AF3D738AE04D06A -:1046D000800E316E306AF7D7316A306AF4D72A50CB -:1046E00029103C103B10F8E02CBEF0D72ABE0CD0AD -:1046F0002B502C10EBE0D8903B363C3629362A362E -:104700002B06D8A02C06F2D72C50D4E12B28D2E0CF -:104710003BAE11D07F0E3B1402E13CA00CD03C2AF2 -:10472000E86A29222A2207E3D8802A3229323C3239 -:104730002B2A2B28BFE02B50C9E03CC02EF029C00B -:104740002FF02A34306E2B30316E3032319E38BE2D -:10475000318E59EF23F03036313602E33884387E1B -:1047600006E13880316A306A2F6A2E6A12003128D9 -:1047700003E0D88030321200D890303202E1388223 -:104780001200388612003536363602E3388C387E11 -:1047900006E13888366A356A346A336A1200362888 -:1047A00003E0D88035321200D8903532EAE1388AF9 -:1047B0001200EBEC23F038B6000C38B0000C38B423 -:1047C000000C010CEBEC23F038B6000C38B0000CF8 -:1047D00038A4000C010C386AABEC23F0C3EC23F0D6 -:1047E00038B6120038AE08D038A004D038A802D0AD -:1047F00038801200389012003650315C0BE1355091 -:10480000305C08E134502F5C05E133502E5C02E14E -:1048100038801200D8A002D0388E10D0315036C067 -:1048200031F0366E305035C030F0356E2F5034C018 -:104830002FF0346E2E5033C02EF0336E3650315C74 -:1048400010E0FF0F09E0389038B403D038AE388458 -:10485000120038AE38941200362AD89035323432ED -:10486000333233502E5E34502F5A3550305A30BECA -:10487000EAD7D8902E362F363036312EF8D7C8D713 -:10488000376A35AE49EF24F0346C351EE86A3522BC -:10489000371E30AE51EF24F02F6C301EE86A302204 -:1048A000371E53EC30F030BE61EF24F037AE000C11 -:1048B0002F6C301EE86A30222B6C2C1EE86A2C22EA -:0C48C000000C37BE58EF24F03888FF0CC5 -:0448CC00D9CFE6FF5B -:1048D000DACFE6FFE1CFD9FFE2CFDAFF1D0EE12408 -:1048E00002E3E168E652E16E67DAFA0EDBCFEEFF33 -:1048F000FB0EDBCFEEFFFC0EDBCFEEFFFD0EDBCFC2 -:10490000EEFFD950040FE66E000EDA20E66E0BDAE9 -:1049100095EC2CF0006E060EE15C02E2E16AE552D5 -:10492000E16E0050E76E0B0EE7CFDBFFDB50800837 -:1049300007E10A0EDB6ADE68DE68DE687F0E13D0F0 -:104940000B0EDB0405E1DE6ADE6ADE6ADD6AA6D1F3 -:104950000B0EDB50040809E1DB0EDE6E0F0EDE6E7F -:10496000C90EDE6E3F0EDD6E99D1DDD91EDA2DC087 -:10497000DEFF2EC0DEFF2FC0DEFF30C0DDFFDD52C8 -:10498000DD52DBD90DDA3F0E20DA23E12E6A2F6AE1 -:10499000800E306E3F0E316EDECF33F0DECF34F05E -:1049A000DECF35F0DDCF36F0DD52DD522DEC22F0DA -:1049B0002EC0DFFF010E2FC0DBFF020E30C0DBFF79 -:1049C000030E31C0DBFF020EF36E0C0EF3CFDBFFE4 -:1049D00002D00C0EDB6AB1D9A30E336E300E346EEA -:1049E000890E356E3E0EF1D96CE1AF0E2E6E670E5C -:1049F0002F6E3B0E306E3F0E316EB2D92EC008F0D6 -:104A00002FC009F030C00AF031C00BF0C9D93F0EF9 -:104A1000366E96EC21F02EC004F02FC005F030C0A9 -:104A200006F031C007F0C8D9EECF0CF0EECF0DF094 -:104A3000EECF0EF0EFCF0FF00CC033F00DC034F01E -:104A40000EC035F00FC036F097EC21F080D9D70EAC -:104A5000146EB30E156EDD0E166E3F0E176EACD9CA -:104A6000EECF18F0EECF19F0EECF1AF0EFCF1BF02B -:104A700018C033F019C034F01AC035F01BC036F03E -:104A800014C02EF015C02FF016C030F0316E97EC28 -:104A900021F02EC010F02FC011F030C012F031C044 -:104AA00013F02EC033F02FC034F030C035F031C0D9 -:104AB00036F035D92DEC22F05FD9DD52DD520C0EE7 -:104AC000DB2A31D972D92DC000F02EC001F02FC0E1 -:104AD00002F030C003F064D9390E366E2DC02EF0CE -:104AE0007AD9E2EC23F0010A01E1B5D04ED938D9E8 -:104AF0000D0E2EC0DBFF0E0E2FC0DBFF0F0E30C0E1 -:104B0000DBFF100E31C0DBFF910E2E6E860E2F6E76 -:104B1000500E306EBD0E316E0D0EDBCF33F00E0E2B -:104B2000DBCF34F00F0EDBCF35F0100E4AD90FD9A2 -:104B3000F60E336E100E346EF10E356EBE0E366EFE -:104B400097EC21F0110E2EC0DBFF120E2FC0DBFF01 -:104B5000130E30C0DBFF140E31C0DBFF0D0EDBCFB8 -:104B600000F00E0EDBCF01F00F0EDBCF02F0100EC7 -:104B7000DBCF03F0D30E336ECC0E346EB40E356E35 -:104B80003F0E366ECCD897EC21F0150E2EC0DBFF11 -:104B9000160E2FC0DBFF170E30C0DBFF180E31C022 -:104BA000DBFF0D0EDBCF2EF00E0EDBCF2FF00F0E46 -:104BB000DBCF30F0100EDBCF31F0110EDBCF33F056 -:104BC000120EDBCF34F0130EDBCF35F0140EF9D814 -:104BD000150EDBCF33F0160EDBCF34F0170EDBCF24 -:104BE00035F0180EDBCF36F02DEC22F0B0D8190ED0 -:104BF0002EC0DBFF1A0E2FC0DBFF1B0E30C0DBFF09 -:104C00001C0E31C0DBFFC1D8190EDBCF33F01A0EFA -:104C1000DBCF34F01B0EDBCF35F01C0ED2D897D88B -:104C2000CBD8EECF2EF0EECF2FF0EECF30F0EFCF8F -:104C300031F000C033F001C034F002C035F003C0E1 -:104C400036F097EC21F031C0EDFF30C0EDFF2FC002 -:104C5000EDFF2EC0EFFF0C0EDB0409E1920E006E9B -:104C60000A0E016E060E3FD897EC21F016D00C0EFE -:104C7000DB50020806E1DB0E006E0F0E016EC90E5E -:104C800009D00C0EDB5003080BE1920E006E0A0EE9 -:104C9000016E860E28D896EC21F06ED8DD52DD52DA -:104CA0000A0EDB500AE049D87BD8BF0E366E37D8E3 -:104CB00080EC22F061D8DD52DD52DECF2DF0DECF68 -:104CC0002EF0DECF2FF0DDCF30F0DD52DD521D0EA5 -:104CD000E15C02E2E16AE552E16EE552E5CFDAFF1E -:104CE000E7CFD9FF1200026E3F0E036E65D8EECFFC -:104CF00004F0EECF05F0EECF06F0EFCF07F004C0E2 -:104D000033F005C034F006C035F007C036F000C0FF -:104D10002EF001C02FF002C030F0316E120000C042 -:104D20002EF0EBEF26F048D8EECFE6FFEECFE6FF11 -:104D3000EECFE6FFEFCFE6FF12003ED8EECF00F059 -:104D4000EECF01F0EECF02F0EFCF03F012002EC055 -:104D500000F02FC001F030C002F031C003F01200AB -:104D6000000EDFCF33F0010EDBCF34F0020EDBCFCD -:104D700035F0030EE1EF26F02EC0DEFF2FC0DEFF80 -:104D800030C0DEFF31C0DDFF1200DECF2EF0DECFFF -:104D90002FF0DECF30F0DDCF31F0DD52DD521200EA -:104DA000336A346A800E356E120099EC2FF0E552AA -:104DB000E552E552E5521200D9CFE9FFDACFEAFF1A -:104DC0001200DBCF36F080EF22F0366EA8DFD9EC90 -:104DD00023F0010A120001C02FF002C030F003C01E -:044DE00031F012009C -:0C4DE400D9CFE6FFDACFE6FFE1CFD9FF20 -:104DF000E2CFDAFF240EE12402E3E168E652E16E3D -:104E0000D950FA0FE96EFF0EDA20EA6E020EEECFED -:104E1000DBFF030EEECFDBFF040EEECFDBFF050E54 -:104E2000EECFDBFFE8D9F2D995EC2CF0006E060E40 -:104E3000E15C02E2E16AE552E16E0050E76E0D0EC0 -:104E4000E7CFDBFFDB50800815E0A0D9336A346A76 -:104E5000356A366A00C02EF001C02FF002C030F073 -:104E600003C031F0E2EC23F0010A10E1210E010150 -:104E7000466F476B020EDB68030EDB68040EDB68CF -:104E80007F0EF36E050EF3CFDBFF66D10D0EDB5008 -:104E9000050B01E061D10A0EDBCF00F00B0EDBCF7A -:104EA00001F0830E0026FF0E012200C0DEFF01C0CC -:104EB000DDFFD950060F65D976D9DF50010B0FE021 -:104EC000DF06010E01E2DB06D950180F5AD9D8903F -:104ED000EF36010EEB36020EEB36030EEB36D9CF72 -:104EE000E9FFDACFEAFF020E346E356AEECF2FF01B -:104EF000EDCF30F040EC24F02FC0EEFF30C0EDFFDE -:104F0000140EDB6A150EDB6A160EDB6A170EDB6AFF -:104F10001C0EDB6A1D0EDB6A1E0EDB6A010EF36ED1 -:104F20001F0EF3CFDBFF010EF36E0E0EF3CFDBFF90 -:104F30000F0EDB6A0E0EDBCF00F00F0EDBCF01F0A1 -:104F4000D890015004E61A0E005C000E015801E3EF -:104F500098D0180EDBCF00F0190EDBCF01F01A0E3F -:104F6000DBCF02F01B0EDBCF03F0010E1F0B07E0BF -:104F7000D8900036013602360336E806F9E1180EFD -:104F800000C0DBFF190E01C0DBFF1A0E02C0DBFF01 -:104F90001B0E03C0DBFF140EDBCF08F0150EDBCFBA -:104FA00009F0160EDBCF0AF0170EDBCF0BF0010E67 -:104FB0001F0B07E0D890083609360A360B36E8068C -:104FC000F9E1D9501C0FDDD80850EE24046E0950C9 -:104FD000EE20056E0A50EE20066E0B50EE20076E96 -:104FE000D950180FCED80450EE5C006E0550EE5824 -:104FF000016E0650EE58026E0750EE58036E200EFA -:1050000000C0DBFF210E01C0DBFF220E02C0DBFF70 -:10501000230E03C0DBFF200EDBCF2EF0210EDBCFF3 -:105020002FF0220EDBCF30F0230EDBCF31F0313406 -:10503000000E311809E6D880000E2E54000E2F54B1 -:10504000000E3054000E315411E2D950200F99D87F -:10505000AAD8D8D81C0EDB50EE121D0EDB50EE1273 -:105060001E0EDB50EE121F0EDB50EE12D9501C0F3D -:1050700088D8AFD80E0EDB2A0F0E01E25BD7DB2AF1 -:1050800059D7C9D8100E00C0DBFF110E01C0DBFFDD -:10509000180EDBCF2FF0190EDBCF30F0120E2FC021 -:1050A000DBFF130E30C0DBFFADD893D8D950100F03 -:1050B00068D8EE50ED1012E0D950120F62D8EE50C1 -:1050C000ED1006E1A8D8005001100210031006E010 -:1050D00099D8EE2A000EEE22EE22EE220C0EDB6AAA -:1050E00091D8060EEECFDBFF070EEECFDBFF080EEA -:1050F000EECFDBFF090EEECFDBFF7E0EF36E0A0E66 -:10510000F3CFDBFF0B0EDB6AD950020FE66E000E09 -:10511000DA20E66E70D823EC2DF0E552E552E55228 -:10512000E552DECFE6FFDDCFE6FF70D8F9EC2BF0DD -:10513000006E060EE15C02E2E16AE552E16E0050AB -:10514000020E2DC0DBFF030E2EC0DBFF040E2FC0AE -:10515000DBFF050E30C0DBFF19D800C02DF001C009 -:105160002EF002C02FF003C030F0240EE15C02E20A -:10517000E16AE552E16EE552E5CFDAFFE7CFD9FF0C -:105180001200E96E000EDA20EA6E1200020EDBCF8A -:1051900000F0030EDBCF01F0040EDBCF02F0050EB2 -:1051A000DBCF03F01200180EEECFDBFF190EEECFAF -:1051B000DBFF1A0EEECFDBFF1B0EEECFDBFF120084 -:1051C000EECFE6FFEECFE6FFEECFE6FFEFCFE6FF56 -:1051D0001200D890030EEB32020EEB32010EEB32CE -:1051E000EF321200EE500016EE500116EE5002168D -:1051F000EE5003161200D950060FE66E000EDA20AC -:10520000E66E1200D950140FC1EF28F0D950020FEA -:10521000B8DFE0EF28F0010E006E016A026A036A4F -:06522000F1DFF2EF28F0BF -:0A522600A5D9E65201016A51040AFD -:1052300045E0070A2DE0010A23E0030A0BE0010A1A -:1052400001E094D0870EE66E24EC30F0E5520101C7 -:10525000010E32D0A0EC30F0000901E088D072D904 -:1052600001AE02D0026803686BC1E9FFEA6AE9BED9 -:10527000EA6845D9B00EE926000E56D9020E1CD0B8 -:105280009F0EE66E24EC30F0E5520101030E14D0BF -:10529000A0EC30F000096BE155D901AE02D00268F4 -:1052A00003686BC1E9FFEA6AE9BEEA6828D9D80E4B -:1052B000E926000E39D9040E6A6F59D06B2B0A0EFD -:1052C000E76E6B19E8AE02D0E73402D0E7506B5DB1 -:1052D0004BE36B6B6CC1E9FFEA6AE9BEEA6865D92A -:1052E000EA22EE6AEE6AEE6AEE6A6CC1E9FFEA6AE9 -:1052F000E9BEEA685FD9EA22EE6AEE6AEE6AEE6A11 -:10530000DF6A31D9E8AE02D0E73402D0E750005C62 -:105310001EE2DFCFE9FFEA6AE9BEEA68F0D8B00E24 -:10532000E926000EFCD8E9BEEA683FD908D9DFCFEC -:10533000E9FFEA6AE9BEEA68E2D8D80EE926000E7B -:10534000EED8E9BEEA6836D9FAD8DF2ADAD7010101 -:105350006C2B0A0EE76E6C19E8AE02D0E73402D06F -:10536000E7506C5D01E36C6B6A6B01D06A6BE552D0 -:1053700005D1FFD8050EE126010EDB6A020EDB6ABD -:10538000030EDB6A040EDB6AFE0EDB5011E1DF6AFE -:10539000EAD8E8AE02D0E73402D0E750005C1CE265 -:1053A000DFCFE9FFEA6AE9BEEA68FFD8AFD8F0D7F5 -:1053B000FE0EDB0411E1DF6AD6D8E8AE02D0E73496 -:1053C00002D0E750005C08E2DFCFE9FFEA6AE9BEFD -:1053D000EA68F0D89BD8F0D7010EDBCF18F0020EA8 -:1053E000DBCF19F0030EDBCF1AF0040EDBCF1BF07E -:1053F00018C02DF019C02EF01AC02FF01BC030F0CD -:105400007DEC21F02EC014F02FC015F030C016F046 -:1054100031C017F0A0D82EC010F02FC011F030C04E -:1054200012F031C013F097D82EC00CF02FC00DF041 -:1054300030C00EF031C00FF0336A346AA00E356E02 -:10544000400E366E80EC22F02EC008F02FC009F01E -:1054500030C00AF031C00BF0336AC00E346E7F0EDC -:10546000356E440E366E2DEC22F02EC004F02FC0A7 -:1054700005F030C006F031C007F0336A346A200E00 -:10548000356E400E366E96EC21F02EC000F02FC027 -:1054900001F030C002F031C003F0336A500E346EB8 -:1054A000430E356E460E366E80EC22F01CEC23F077 -:1054B000050EE15C02E2E16AE552E16E5FD059D887 -:1054C000FE0EDB5002E1808409D0FE0EDB0405E015 -:1054D000FE0EDB50020802E1808480824FD049D862 -:1054E000FE0EDB5002E1809409D0FE0EDB0405E0E5 -:1054F000FE0EDB50020802E1809480923FD0D890EB -:10550000E936EA36D890E936EA3612003BD8D95067 -:10551000010FE96EDACFEAFF3FD8DF2A120032D856 -:105520006CC1E9FFEA6A1200EA2200C0EEFF01C086 -:10553000EEFF02C0EEFF03C0EEFF01011200EA22FF -:10554000CCEF2AF090EC30F0F3CF00F0F4CF01F084 -:10555000026A036A1200336A346A200E356E410E05 -:10556000366E2DEF22F0DFCF00F00A0EE76E001846 -:105570001200D9CFE6FFE1CFD9FF1200E552E7CF05 -:10558000D9FF1200EA22EECF00F0EECF01F0EECF0D -:1055900002F0EFCF03F012000050EE260150EE2291 -:1055A0000250EE220350EE221200A9DF600EE9261F -:0E55B000000E1200A4DF880EE926000E120085 -:0255BE00D9CF43 -:1055C000E6FFDACFE6FFE1CFD9FFE2CFDAFF140E34 -:1055D000E12402E3E168E652E16ED950040FE66E81 -:1055E000000EDA20E66ED950F60FDAD802E2E16A50 -:1055F000E552E16E0050E76E120EE7CFDBFFD950A7 -:105600000B0FE66E000EDA20E66ED950FA0FC8D8FE -:1056100002E2E16AE552E16E0050E76E130EE7CF59 -:10562000DBFFDBCFE6FF120EDB50E552E710800B0D -:105630000EE1120EDB50040804E1130EDB500408E7 -:1056400006E0120EDB040DE1130EDB040AE1210E6D -:105650000101466F476BDE68DE68DE687F0EDD6E37 -:1056600087D0FA0EDBCF2EF0FB0EDBCF2FF0FC0E37 -:10567000DBCF30F0FD0EDBCF31F0F60EDBCF33F0B9 -:10568000F70EDBCF34F0F80EDBCF35F0F90EDBCFC1 -:1056900036F02DEC22F02EC004F02FC005F030C003 -:1056A00006F031C007F097D831C0E6FF99EC2FF033 -:1056B000E552E552E552E5522DC000F02EC001F052 -:1056C0002FC002F030C003F02DC0E6FF84D866EC96 -:1056D00024F0E552E552E552E5522DC0DEFF2EC022 -:1056E000DEFF2FC0DEFF30C0DDFFDD52DD520A0ECF -:1056F000DB5023E0DB0E006E0F0E016E490E026ED2 -:10570000400E036ED9CFE9FFDACFEAFFEECF04F007 -:10571000EECF05F0EECF06F0EFCF07F004C033F088 -:1057200005C034F006C035F007C036F05BD8316EE6 -:1057300096EC21F047D8DD52DD52110EDB501AE015 -:10574000D9CFE9FFDACFEAFFEECF00F0EECF01F0DC -:10575000EECF02F0EFCF03F0336A346A800E356E7D -:10576000BF0E366E3FD803C031F080EC22F02AD84D -:10577000DD52DD52DECF2DF0DECF2EF0DECF2FF06A -:10578000DDCF30F0DD52DD52140EE15C02E2E16A61 -:10579000E552E16EE552E5CFDAFFE7CFD9FF12001F -:1057A000E96EFF0EDA20EA6EEECFE6FFEECFE6FFFF -:1057B000EECFE6FFEFCFE6FF95EC2CF0006E060E85 -:1057C000E15C12002EC0DEFF2FC0DEFF30C0DEFF26 -:1057D00031C0DDFF12002EC0E6FF2FC0E6FF30C053 -:1057E000E6FF120000C02EF001C02FF002C030F022 -:0257F0001200A5 -:0E57F20096D8E1CFD9FFE2CFDAFF0C0EE1240A -:1058000002E3E168E652E16ED950FA0FE96EFF0E4D -:10581000DA20EA6E080EEECFDBFF090EEECFDBFFDB -:105820000A0EEECFDBFF0B0EEECFDBFF79D8D9509F -:10583000080FE96E000EDA20EA6EEECFE6FFEECF3B -:10584000E6FFEECFE6FFEFCFE6FF95EC2CF0006E23 -:10585000060EE15C02E2E16AE552E16E0050E76E9D -:10586000070EE7CFDBFFDB50840B3AE1070EDB04CA -:105870001AE1060EDB5006E0006A016A026A800E39 -:10588000036E04D0006A016A026A036A080E00C04F -:10589000DBFF090E01C0DBFF0A0E02C0DBFF0B0EAF -:1058A00003C0DBFF1DD0F80EDBCF00F0F90EDBCF1D -:1058B00001F0D950040FE96E000EDA20EA6E0050B4 -:1058C000EE260150ED22D950080FE66E000EDA20C8 -:1058D000E66E26D823EC2DF0E552E552E552E5526E -:1058E000080EDBCF00F0090EDBCF01F00A0EDBCF94 -:1058F00002F00B0EDBCF03F000C02DF001C02EF044 -:1059000002C02FF003C030F00C0EE15C02E2E16A4D -:10591000E552E16EE552E5CFDAFFE7CFD9FF12009D -:0A592000D9CFE6FFDACFE6FF120050 -:06592A00D9CFE6FFDACF41 -:10593000E6FFE1CFD9FFE2CFDAFFE6520068016867 -:105940007F0E026E036AD950FA0FE96EFF0EDA205D -:10595000EA6EEE500016EE500116EE500216EE50B2 -:1059600003166AD800C0EEFF01C0EEFF02C0EEFFD2 -:1059700003C0EEFFFD0EDB50800B02E0010E01D0F4 -:10598000000EE66E59D8060EE926000EEA22E55210 -:10599000E750EF6EFC0EDBCF00F0FD0EDBCF01F029 -:1059A000D89000360136FC0E00C0DBFFFD0E01C0B2 -:1059B000DBFFDB50E66E40D8040EE926000EEA223B -:1059C000E552E750EE6EED6AFD0EDB50006E016AA7 -:1059D000FF0E001818E1015016E12ED8EECF00F0AE -:1059E000EECF01F0EECF02F0EFCF03F00050011048 -:1059F0000210031006E0210E0101466F476B800E76 -:105A00000BD0040E09D0FD0EDB5008E115D8EE6A6C -:105A1000EE6AEE6AEE6A010EDF6E06D0020EDF6EEF -:105A20000BD8EE52EE52EE8EDF50E552E552E5CF46 -:105A3000DAFFE7CFD9FF1200F80EDBCFE9FFF90E4E -:065A4000DBCFEAFF1200BB -:0A5A4600D9CFE6FFDACFE6FFE1CF8B -:105A5000D9FFE2CFDAFF5BD8013411E20050FE0833 -:105A6000000E01540CE276D805E06CD8800EEE6E84 -:105A7000EE6847D067D8800EEE6E7F0E0ED047D806 -:105A8000D890015004E6010E005C000E01580BE2B4 -:105A900061D805E057D8EE6A800EEE6E32D052D84B -:105AA000EE6AEE6A2ED047D8EECF00F0EECF01F0CE -:105AB000EECF02F0EFCF03F032D800C0EEFF01C00E -:105AC000EEFF02C0EEFF03C0EEFF21D80050010B35 -:105AD00005E025D8020E3AD8EF8E04D020D8020E69 -:105AE00035D8EF9E14D8D8900132003218D8030E62 -:105AF0002DD800C0EFFF1AD804E011D8030E26D825 -:105B0000EF8EE552E5CFDAFFE7CFD9FF120013D8C9 -:105B1000040E1CD8EECF00F0EFCF01F01200FA0E09 -:105B2000DBCFE9FFFB0EDBCFEAFF120004D8060E45 -:105B30000DD8EF501200FC0EDBCFE9FFFD0EDBCFDE -:105B4000EAFF1200ECDFEE6AEE6A1200E926000EB0 -:105B5000EA221200220E0101466F476B96EF2DF0EC -:105B6000040120511F0B010801E01200245101E043 -:105B70001200060E215D21E12351230A1BE0010AD8 -:105B80000CE0030A1AE10101010517E10101520EBF -:105B9000116F5C0E126F090E09D0010101050DE1B4 -:105BA0000101BB0E116F5C0E126F1D0E146F156B91 -:105BB000C00E02D00101800E136F04012051600B52 -:105BC000E842E842E842E842E842010801E0120007 -:105BD00021510B0A26E0080A19E0090A11E0080A17 -:105BE00005E00B0A23E0080A21E0120001016D0E16 -:105BF000116F010E126F010E146F156BC10E0FD0D5 -:105C00000101800E136F23C46DF1120001016E0EAD -:105C1000116F010E126F010E146F156B810E136F51 -:0E5C200012000101800E136F22C46EF11200FB -:025C2E00120161 -:105C3000000200000008D804030002000102000175 -:105C400009022900010100C032090400000203001A -:105C50000000092111010001221D000705810340F8 -:105C6000000107050103400001040309042C034D52 -:105C7000006F00620069006C006500200052006F38 -:105C80000062006F007400200050006C006100741E -:105C90000066006F0072006D0022034D006F0074FB -:105CA000006F007200200043006F006E00740072ED -:105CB000006F006C006C00650072000600FF0901B7 -:105CC000A10119012940150026FF007508954081A2 -:105CD00000190129409100C0405C695C6D5C995CD1 -:105CE0002A0EF66E080EF76E000EF86E010109001E -:105CF000F5505A6F0900F5505B6F03E15A6701D008 -:105D00003DD00900F550556F0900F550566F090058 -:105D1000F550576F09000900F550E96E0900F5507C -:105D2000EA6E090009000900F550586F0900F550A6 -:105D3000596F09000900F6CF5CF1F7CF5DF1F8CF9C -:105D40005EF155C1F6FF56C1F7FF57C1F8FF0101DB -:105D5000585302E1595307E00900F550EE6E580719 -:105D6000F8E25907F9D75CC1F6FF5DC1F7FF5EC1E4 -:0E5D7000F8FF01015A07000E5B5BBFD712005F -:025D7E00436F71 -:105D80006D6D616E64652054455354207265E775EE -:105D9000650032323A34353A3231002000466562CD -:105DA0002032342032303130004361727465206417 -:105DB000276173736572762E20312E300A4F6C691D -:105DC0007669657220424943484C455200457272DB -:105DD00065757220646520636F6D6D616E6465200A -:0C5DE000737572206C6573204C4D7300CD -:045DEC00D9CFE6FF26 -:105DF000DACFE6FFE1CFD9FFE2CFDAFFC26AC06AAD -:105E0000FC0EDB407F0B3C0BC26EFB0EDBCFE6FFD4 -:105E1000FC0EDB38F00B300BE552E710C16EFD0EC7 -:105E2000DB50040DF350380B016EFD0EDB380F0B09 -:105E3000070B006EFD0EDB50800B00100110C06ED2 -:105E4000FC0EDBAE03D09E9C9D8CF28CC280E55292 -:0A5E5000E5CFDAFFE7CFD9FF12001B -:065E5A00FE0EE3CFE9FF9C -:105E6000FF0EE3CFEAFFE9CFF3FFEACFF4FFFB0E2B -:105E7000E35003E1FC0EE35009E0FB0EE30602E20F -:105E8000FC0EE306FD0EE350EE6EF1D71200FB0EA2 -:105E9000E3CFF6FFFC0EE3CFF7FFFD0EE3CFF8FFF5 -:105EA000FE0EE3CFE9FFFF0EE3CFEAFFE9CFF3FFFA -:105EB000EACFF4FFEE66FED7ED520900F5CFEFFF13 -:065EC000EE66FBD71200A4 -:0A5EC6002DD8FD0EDB50A86EA69E3D -:105ED000A69CA684F250800B01E0010E01016F6FB9 -:105EE000F29E550EA76EAA0E... [truncated message content] |
From: Jérémie D. <Ba...@us...> - 2010-02-24 21:54:50
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via d5cabf5265f1cf7f5d47fd193ada0bd3b4c36e68 (commit) from c8338ac1db819595ad7883625879bc2180fe872c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit d5cabf5265f1cf7f5d47fd193ada0bd3b4c36e68 Author: Olivier BICHLER <oli...@en...> Date: Wed Feb 24 22:41:14 2010 +0100 [driver] stop motors on velocity=0 ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/driver/driver.ml b/PC_Mainboard/driver/driver.ml index 1bc7bc8..eae08a2 100644 --- a/PC_Mainboard/driver/driver.ml +++ b/PC_Mainboard/driver/driver.ml @@ -443,27 +443,27 @@ struct let date = Unix.gettimeofday () in if (((direction_l = `Forward && velocity_l > 0) || (direction_r = `Forward && velocity_r > 0)) && date < dev.inhibit_forward_until) || (((direction_l = `Backward && velocity_l > 0) || (direction_r = `Backward && velocity_r > 0)) && date < dev.inhibit_backward_until) then - fail (Failure "inhibited move") + fail (Failure "inhibited move") else begin - if velocity_l <> 0 || velocity_r <> 0 then + cancel stopper; + if velocity_l <> 0 || velocity_r <> 0 then begin dev.state <- Manual(Lwt_unix.sleep duration >> stop_motors dev `Smooth, { velocity = velocity_l; acceleration = acceleration_l; direction = direction_l }, - { velocity = velocity_r; acceleration = acceleration_r; direction = direction_r }) - else - dev.state <- Static; - cancel stopper; - lwt () = - if acceleration_l <> settings_l.acceleration then - USB_commands.Motors.traj_new_velocity dev.card `Left velocity_l acceleration_l direction_l - else - USB_commands.Motors.traj_change_velocity dev.card `Left velocity_l direction_l - and () = - if acceleration_r <> settings_r.acceleration then - USB_commands.Motors.traj_new_velocity dev.card `Right velocity_r acceleration_r direction_r - else - USB_commands.Motors.traj_change_velocity dev.card `Right velocity_r direction_r - in - USB_commands.Motors.traj_start dev.card `Both + { velocity = velocity_r; acceleration = acceleration_r; direction = direction_r }); + lwt () = + if acceleration_l <> settings_l.acceleration then + USB_commands.Motors.traj_new_velocity dev.card `Left velocity_l acceleration_l direction_l + else + USB_commands.Motors.traj_change_velocity dev.card `Left velocity_l direction_l + and () = + if acceleration_r <> settings_r.acceleration then + USB_commands.Motors.traj_new_velocity dev.card `Right velocity_r acceleration_r direction_r + else + USB_commands.Motors.traj_change_velocity dev.card `Right velocity_r direction_r + in + USB_commands.Motors.traj_start dev.card `Both + end else + stop_motors dev `Smooth end let set_velocities dev velocities accelerations duration = hooks/post-receive -- krobot |
From: Olivier B. <Ba...@us...> - 2010-02-24 21:46:47
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via c8338ac1db819595ad7883625879bc2180fe872c (commit) from ec6a88b803f8747e048f74bd305d67e32be01ac7 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit c8338ac1db819595ad7883625879bc2180fe872c Author: Olivier BICHLER <oli...@gm...> Date: Wed Feb 24 22:46:23 2010 +0100 Added missing resetInterrupt() ----------------------------------------------------------------------- Changes: diff --git a/USB_Module/Motor_Controller/Firmware/Motor_Controller.mcw b/USB_Module/Motor_Controller/Firmware/Motor_Controller.mcw index 876b7ff..59ac9e8 100644 Binary files a/USB_Module/Motor_Controller/Firmware/Motor_Controller.mcw and b/USB_Module/Motor_Controller/Firmware/Motor_Controller.mcw differ diff --git a/USB_Module/Motor_Controller/Firmware/main.c b/USB_Module/Motor_Controller/Firmware/main.c index 41d3519..8344746 100644 --- a/USB_Module/Motor_Controller/Firmware/main.c +++ b/USB_Module/Motor_Controller/Firmware/main.c @@ -1032,10 +1032,11 @@ void ProcessIO(void) { word3.byte.HB = ReceivedDataBuffer.DATA[6]; word3.byte.LB = ReceivedDataBuffer.DATA[7]; + resetInterrupt(ReceivedDataBuffer.DATA[1]); newPosition(ReceivedDataBuffer.DATA[1], - (long) ((float) word1.Val * COEF_WHEEL), - (long) ((float) word2.Val * COEF_WHEEL * CONST_VEL), - (long) ((float) word3.Val * COEF_WHEEL * CONST_ACC)); + (long) ((float) word1.Val * COEF_WHEEL), + (long) ((float) word2.Val * COEF_WHEEL * CONST_VEL), + (long) ((float) word3.Val * COEF_WHEEL * CONST_ACC)); break; case TRAJ_NEW_VELOCITY: @@ -1044,19 +1045,21 @@ void ProcessIO(void) { word2.byte.HB = ReceivedDataBuffer.DATA[4]; word2.byte.LB = ReceivedDataBuffer.DATA[5]; + resetInterrupt(ReceivedDataBuffer.DATA[1]); newVelocity(ReceivedDataBuffer.DATA[1], - (long) ((float) word1.Val * COEF_WHEEL * CONST_VEL), - (long) ((float) word2.Val * COEF_WHEEL * CONST_ACC), - ReceivedDataBuffer.DATA[6]); + (long) ((float) word1.Val * COEF_WHEEL * CONST_VEL), + (long) ((float) word2.Val * COEF_WHEEL * CONST_ACC), + ReceivedDataBuffer.DATA[6]); break; case TRAJ_CHANGE_VELOCITY: word1.byte.HB = ReceivedDataBuffer.DATA[2]; word1.byte.LB = ReceivedDataBuffer.DATA[3]; + resetInterrupt(ReceivedDataBuffer.DATA[1]); changeVelocity(ReceivedDataBuffer.DATA[1], - (long) ((float) word1.Val * COEF_WHEEL * CONST_VEL), - ReceivedDataBuffer.DATA[4]); + (long) ((float) word1.Val * COEF_WHEEL * CONST_VEL), + ReceivedDataBuffer.DATA[4]); break; case TRAJ_START: diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof index bf093d3..aeb43bb 100644 Binary files a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof and b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.cof differ diff --git a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex index 6480698..93d6151 100644 --- a/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex +++ b/USB_Module/Motor_Controller/Firmware/output/Motor_controller.hex @@ -1,14 +1,14 @@ :020000040000FA -:060000005AEF30F012007F +:0600000069EF30F0120070 :0600080004EF04F01200F9 :060018000CEF04F01200E1 -:060800005AEF30F0120077 +:0608000069EF30F0120068 :06080800FDEF0FF01200ED :0608180065EF10F0120074 -:06082A000400476100001C -:1008300026010000210000003F6100005F01000070 -:100840000800000031610000470100000E000000B8 -:0C0850002E6100006A010000030000009F +:06082A00040065610000FE +:1008300026010000210000005D6100005F01000052 +:10084000080000004F610000470100000E0000009A +:0C0850004C6100006A0100000300000081 :04085C000BEC0DF0A4 :10086000FE0EDB5006E1F80E96163C0E9416959897 :1008700008D0FE0EDB0405E1070E9612C30E94129B @@ -103,7 +103,7 @@ :100E0000E55210EF0DF00BEC0DF01D0ED6EC0CF0D2 :100E1000000E0EEC0FF010EF0DF00BEC0DF067EC88 :100E20000DF084080FE067EC0DF0C4080BE0E66AF3 -:100E3000E3EC0EF0D9EC0EF0020EE66E2DEC30F085 +:100E3000E3EC0EF0D9EC0EF0020EE66E3CEC30F076 :100E4000E552EDD71C0ED6EC0CF00A0E0EEC0FF0AE :100E5000E7EC0DF067EC0DF0800804E067EC0DF0B6 :100E6000C008E5E167EC0DF0C00802E1E7EC0DF029 @@ -178,15 +178,15 @@ :1012B00049EC0FF0E66A9BEC0DF0FFEC0DF0CDDB96 :1012C000C3EF0EF0A8DB3C0EE12670EC0EF05FECF5 :1012D0000FF070EC0EF0B2EC0FF056EC0FF008C00F -:1012E0002EF009C02FF00AC030F00BC031F071ECC5 +:1012E0002EF009C02FF00AC030F00BC031F080ECB6 :1012F00022F07EEC0FF0BEEC0EF068EC0FF087EC05 :101300000FF0BEEC0EF0A8EC0DF056EC0FF014C090 -:101310002EF015C02FF016C030F017C031F071EC70 -:1013200022F09FEC0EF075EC0FF088EC21F04DEC04 +:101310002EF015C02FF016C030F017C031F080EC61 +:1013200022F09FEC0EF075EC0FF097EC21F04DECF5 :101330000FF0336A346A800E356E40EC0FF0380ED1 :101340002EC0DBFF390E2FC0DBFF3A0E30C0DBFFB3 :101350003B0E31C0DBFF70EC0EF04DEC0FF0BCDB50 -:10136000BEEC0EF034DBB8DBD0EC2AF0086E080ED1 +:10136000BEEC0EF034DBB8DBDFEC2AF0086E080EC2 :10137000E15E0850080E2DC0DBFF090E2EC0DBFF1A :101380000A0E2FC0DBFF0B0E30C0DBFFDBDBF60EDF :10139000DB5007E0D950F40F12EC0FF0EE50ED10D7 @@ -200,16 +200,16 @@ :1014100033DF0A6E060EE15E0A50D4D1380EDBCF00 :1014200004F0390EDBCF05F03A0EDBCF06F03B0EB1 :10143000DBCF07F00C6A0D6A0E6A400E0F6E91DA70 -:1014400071EC22F03CEC0EF0F40EDBCF2FF0F50E39 -:101450007FDB9EDB9CEC0EF088EC21F0140E2EC09E +:1014400080EC22F03CEC0EF0F40EDBCF2FF0F50E2A +:101450007FDB9EDB9CEC0EF097EC21F0140E2EC08F :10146000DBFF150E2FC0DBFF160E30C0DBFF170EA3 -:1014700032DA70EC0EF09CEC0EF071EC22F0180EEB +:1014700032DA70EC0EF09CEC0EF080EC22F0180EDC :101480002EC0DBFF190E2FC0DBFF1A0E30C0DBFFB2 :101490001B0E21DABEEC0EF068EC0FF09CEC0EF0A7 -:1014A00071EC22F01C0E2EC0DBFF1D0E2FC0DBFFE7 +:1014A00080EC22F01C0E2EC0DBFF1D0E2FC0DBFFD8 :1014B0001E0E30C0DBFF1F0E31C0DBFF1C0EDBCF6A :1014C00000F01D0EDBCF01F01E0EDBCF02F01F0E71 -:1014D000DBCF03F088DB93EC0EF071EC22F0200EF2 +:1014D000DBCF03F088DB93EC0EF080EC22F0200EE3 :1014E0002EC0DBFF210E2FC0DBFF220E30C0DBFF42 :1014F000230E31C0DBFFD950180FE96EDACFEAFFB7 :10150000240EEECFDBFF250EEECFDBFF260EEECF57 @@ -222,35 +222,35 @@ :10157000E9DB2C0E2EC0DBFF2D0E2FC0DBFF2E0E65 :1015800030C0DBFF2F0E31C0DBFF2C0EDBCF04F0B1 :101590002D0EDBCF05F02E0EDBCF06F02F0EDBCFAE -:1015A00007F021DB75EC0FF071EC22F078DA300EE9 +:1015A00007F021DB75EC0FF080EC22F078DA300EDA :1015B0002EC0DBFF310E2FC0DBFF320E30C0DBFF51 :1015C000330E31C0DBFF280EDBCF2EF0290EDBCF30 :1015D0002FF02A0EDBCF30F02B0EDBCF31F05FDAAD :1015E000340E2EC0DBFF350E2FC0DBFF360E30C0B1 :1015F000DBFF370E31C0DBFFD950300F6CDBD95029 -:10160000340F69DBD0EC2AF0006E080EE15E00506A +:10160000340F69DBDFEC2AF0006E080EE15E00505B :101610000C0E2DC0DBFF0D0E2EC0DBFF0E0E2FC0FB :10162000DBFF0F0E30C0DBFF006A016A026A400E6A :10163000036E00C0E6FF01C0E6FF02C0E6FFE66EF3 :101640003BDB5FEC0FF048DAD8EC0FF02DC014F064 :101650002EC015F02FC016F030C017F049EC0FF077 -:10166000D0EC2AF0186E080EE15E1850E552E7CF74 +:10166000DFEC2AF0186E080EE15E1850E552E7CF65 :1016700003F0E552E7CF02F0E552E7CF01F0E55283 :10168000E7CF00F02DC004F02EC005F02FC006F00B -:1016900030C007F0AADB47DB71EC22F0100E2EC041 +:1016900030C007F0AADB47DB80EC22F0100E2EC032 :1016A000DBFF110E2FC0DBFF120E30C0DBFF130E6D -:1016B00031C0DBFFF60EDB5002081BE123DB87ECB9 -:1016C00021F09CDB88EC21F075D94CDA060E2FC096 +:1016B00031C0DBFFF60EDB5002081BE123DB96ECAA +:1016C00021F09CDB97EC21F075D94CDA060E2FC087 :1016D000DBFF070E30C0DBFFD7DB79D9020EDBCF93 :1016E0002FF0030EF2EC0FF0040E2FC0DBFF050EFF :1016F0004ED02E6A2F6A306A400E316E080EDBCF54 :1017000033F0090EDBCF34F00A0EDBCF35F00B0ED1 :10171000C4EC0FF0C2DB0C0EDBCF04F00D0EDBCF00 :1017200005F00E0EDBCF06F00F0EDBCF07F004C086 -:1017300033F005C034F006C035F007C036F087EC52 +:1017300033F005C034F006C035F007C036F096EC43 :1017400021F00C0E2EC0DBFF0D0E2FC0DBFF0E0EA6 -:1017500030C0DBFF0F0E31C0DBFFD4DA88EC21F0A4 -:101760004DDB87EC21F026D9FDD9040E2FC0DBFF1D +:1017500030C0DBFF0F0E31C0DBFFD4DA97EC21F095 +:101760004DDB96EC21F026D9FDD9040E2FC0DBFF0E :10177000050E30C0DBFF020EDBCF2FF0030E27D9A2 :1017800083DBF2EC0FF0060E2FC0DBFF070E30C03C :10179000DBFF59D805D9040EDBCF2FF0050E54DA44 @@ -270,9 +270,9 @@ :101870002DC018F02EC019F02FC01AF030C01BF088 :101880001200DBCF11F0336A346A340E356E430E2A :10189000366E0EC02EF00FC02FF010C030F011C009 -:1018A00031F071EC22F02EC00AF02FC00BF030C0E6 +:1018A00031F080EC22F02EC00AF02FC00BF030C0D7 :1018B0000CF031C00DF0DB0E336E0F0E346E490E9E -:1018C000356EDEDA89DAF2DA02C02EF0C2DA87EC9F +:1018C000356EDEDA89DAF2DA02C02EF0C2DA96EC90 :1018D00021F0CCEF0EF031C0DBFF046A056A800E08 :1018E000066E3F0E076E0C6A0D6A0E6A400E0F6E92 :1018F00004C0E6FF05C0E6FF06C0E6FF07C0E6FF3E @@ -281,17 +281,17 @@ :101920000DF0E552E7CF0CF0E552E7CF07F0E552B6 :10193000E7CF06F0E552E7CF05F0E552E7CF04F038 :101940002DC010F02EC011F02FC012F030C013F0D7 -:101950004CDA5BDA71EC22F03CEF0EF034DAABEFEC +:101950004CDA5BDA80EC22F03CEF0EF034DAABEFDD :101960000EF0F40EDBCF2FF0F50EB2DAE8D905EF6A :101970000FF09CDA93EF0EF0140EDBCF00F0150E93 :10198000DBCF01F0160EDBCF02F0170EDBCF03F03A :10199000336A346ADC0E356E420E366E93EF0EF00B :1019A000F70EDBCF2FF0F80E43EF0EF0E66E0BDAFA :1019B000D9EF0EF0100EDBCF33F0110EDBCF34F089 -:1019C000120EDBCF35F0130EDFDADEEF22F080DA15 +:1019C000120EDBCF35F0130EDFDAEDEF22F080DA06 :1019D0007EEF0FF0EE58096E06C02DF007C02EF016 -:1019E00008C02FF0306E6EEC21F02EC002F02FC038 -:1019F00003F030C004F031C005F06EDA1EEC22F0C6 +:1019E00008C02FF0306E7DEC21F02EC002F02FC029 +:1019F00003F030C004F031C005F06EDA2DEC22F0B7 :101A0000DCDA2FC0F3FF30C0F4FF040EE15C1200FB :101A10002EDAE76E1200D9CFE6FFE1CFD9FF120030 :101A2000E552E7CFD9FF12009CD9026A036AB40ECF @@ -303,7 +303,7 @@ :101A8000DBFFDBCFE6FF070EDBCFE6FF040EDBCF8D :101A9000E6FF050EDBCFE6FF4EDADEEF0EF0140EAA :101AA000DBCF33F0150EDBCF34F0160EDBCF35F085 -:101AB000170EDBCF36F01EEC22F04DEF0FF0E66E86 +:101AB000170EDBCF36F02DEC22F04DEF0FF0E66E77 :101AC000CFD9020EE66EE0EC08F0E55212007BD9A9 :101AD00090EC06F0E552120089DA31C0E6FF120000 :101AE000D950F60F9FD9040EEECFDBFF050EEECFD7 @@ -326,31 +326,31 @@ :101BF000366E1200126E060EE15E1250120027DEE3 :101C00002EC024F02FC025F030C026F031C027F0C0 :101C1000350E336EFA0E346E0E0E356E3C0E366E89 -:101C200071EC22F02EC020F02FC021F030C022F045 +:101C200080EC22F02EC020F02FC021F030C022F036 :101C300031C023F0336A346A5C0E356E430E366E63 -:101C400071EC22F02EEF0CF043D961D945D971EC3B +:101C400080EC22F02EEF0CF043D961D945D980EC1D :101C500022F091D9BD0E336E370E346E860E356E7E :101C6000410E366EB6D92DC00CF02EC00DF02FC02F -:101C70000EF030C00FF0120022D918D936D91EEC60 -:101C800022F04DEF0FF024D91AD926D971EC22F0A9 +:101C70000EF030C00FF0120022D918D936D92DEC51 +:101C800022F04DEF0FF024D91AD926D980EC22F09A :101C900035D9CC0E336EBC0E346E8C0E356E3B0EC9 :101CA000366E97D92DC000F02EC001F02FC002F083 :101CB00030C003F049EF0FF0140EDBCF0CF0150E1F :101CC000DBCF0DF0160EDBCF0EF0170EDBCF0FF0D3 -:101CD00048DE87EF21F0E96EDACFEAFFA9EF0FF0D7 +:101CD00048DE96EF21F0E96EDACFEAFFA9EF0FF0C8 :101CE000FD0EDBCF2FF0FE0E68EF0FF0DBCFE6FF2F -:101CF000AEEF0CF069D9ECD835D93BDE71EC22F0AF -:101D0000DEEF22F091DE0C0EDBCF0EF00D0EDBCFFE +:101CF000AEEF0CF069D9ECD835D93BDE80EC22F0A0 +:101D0000EDEF22F091DE0C0EDBCF0EF00D0EDBCFEF :101D10000FF00E0EDBCF10F00F0EB3DD56EC09F016 :101D200069DFBCEF0CF000C02EF001C02FF002C044 :101D300030F003C031F01200EAD8B9EF0CF01BD933 -:101D400056EF0FF021D9BBD814DE87EF21F0C0D8B1 +:101D400056EF0FF021D9BBD814DE96EF21F0C0D8A2 :101D500085DD49EF0FF0FDEC04F0E552E552E55268 :101D60001200F70EDBCFE6FFF80EDBCFE6FFF90E31 :101D7000DBCFE6FFFA0EDBCFE6FF1200FB0EDBCF78 :101D80002FF0FC0E1200010EE66ED5DE020EE66E9E :101D9000E0EC08F0E55244D610D92FC0E6FF30C081 -:101DA000E6FF1200E3EC26F0E552E552E552E5527B +:101DA000E6FF1200F2EC26F0E552E552E552E5526C :101DB00012007EEC04F0E552E5521200DECFE6FFA1 :101DC000DDCFE6FF1200FE0EDBCFE6FF120023DEC2 :101DD000B9DE3DDD2EEF0CF02EC006F02FC007F06F @@ -363,13 +363,13 @@ :101E4000E5521200DBCF03F0005001100210031026 :101E5000120003C02FF004C030F005C031F01200B2 :101E6000DAEC07F0206E0D0EE15E20501200E66EF7 -:101E700074EC2FF0E5521200CEDD040EE1261200C4 -:101E8000400E366E1EEF22F0000EDFCF2FF0010E57 +:101E700083EC2FF0E5521200CEDD040EE1261200B5 +:101E8000400E366E2DEF22F0000EDFCF2FF0010E48 :101E900012002DC0E6FFF6EF0FF02EC000F02FC0AD :101EA00001F030C002F031C003F012002EC033F058 :101EB0002FC034F030C035F031C036F012002EC0E3 :101EC00008F02FC009F030C00AF031C00BF012004A -:101ED000DBCF30F059EF21F0A60E336E280E346EB2 +:101ED000DBCF30F068EF21F0A60E336E280E346EA3 :101EE000940E356E3F0E366E120004C02EF005C003 :101EF0002FF006C030F007C031F012002EC004F001 :101F00002FC005F030C006F031C007F012002EC01F @@ -380,12 +380,12 @@ :101F50000EF0EECFE6FFEECFE6FFEECFE6FFEFCFDF :101F6000E6FF12002EC00CF02FC00DF030C00EF0B6 :101F700031C00FF012002EC010F02FC011F030C091 -:101F800012F031C013F01200DBCF36F071EF22F007 +:101F800012F031C013F01200DBCF36F080EF22F0F8 :101F9000FC0EDBCFE6FFFD0E76EF0EF00A0EE66ECE :101FA000E66A07DFE66A120036DDCCDDFFEF0DF0F2 -:101FB000D950380F90DED2EF0EF0DEEC22F02FC0B9 +:101FB000D950380F90DED2EF0EF0EDEC22F02FC0AA :101FC00000F030C001F01200F90EDBCF2FF0FA0E56 -:101FD000120071EC22F00DEF23F0F9DCD9DD5DDFAA +:101FD000120080EC22F01CEF23F0F9DCD9DD5DDF8C :101FE0005CEF0EF075DF48DE7AEF0EF02EC0E6FFF4 :0A1FF0002FC0E6FF30C0E6FF12002C :061FFA00DACFE4FFE2CFA4 @@ -393,42 +393,42 @@ :10201000E4FFF5CFE4FFF3CFE4FFF4CFE4FFFACF22 :10202000E4FF00EE29F0140EE80403E3EECFE4FF32 :10203000FBD700EE00F0290EE80403E3EECFE4FF47 -:10204000FBD789EC1BF09EA013D093EC1BF0010191 +:10204000FBD798EC1BF09EA013D0A2EC1BF0010173 :102050004D2B000E4E23E80E4D5D030E4E5905E349 -:102060004D6B4E6B4F2B000E502304EC29F09E90CD -:102070009CEC1BF002E2E16AE552E16EE552E7CF2B +:102060004D6B4E6B4F2B000E502313EC29F09E90BE +:10207000ABEC1BF002E2E16AE552E16EE552E7CF1C :10208000D9FFE55200EE28F0290EE80403E3E5CF7E :10209000EDFFFBD700EE3CF0140EE80403E3E5CFC0 :1020A000EDFFFBD7E5CFFAFFE5CFF4FFE5CFF3FF78 :1020B000E5CFF5FFE5CFF7FFE5CFF6FFE5CFEAFF88 :1020C000E5CFE9FFE5CFDAFF1100D8CFE4FFE0CF9D :1020D000E4FFE46EDACFE4FFE2CFDAFFF3CFE4FF10 -:1020E000F4CFE4FF89EC1BF09CEC1BF002E2E16A08 +:1020E000F4CFE4FF98EC1BF0ABEC1BF002E2E16AEA :1020F000E552E16EE552E7CFD9FFE552E5CFF4FFB7 :10210000E5CFF3FFE5CFDAFFE550E5CFE0FFE5CF20 -:10211000D8FF100004D8E7EC1BF060D8FCD70F0EF6 -:10212000C11202D8B1EF1BF0ACEC1BF0E65260EC30 -:102130001BF00101676F070E675D10E1E66A74EC42 -:102140002FF0E552DF6E000EDF80A4EC1BF0E66A94 -:102150002DEC30F0E552DF70A4EC1BF0D08EF28E47 +:10211000D8FF100004D8F6EC1BF060D8FCD70F0EE7 +:10212000C11202D8C0EF1BF0BBEC1BF0E6526FEC03 +:102130001BF00101676F070E675D10E1E66A83EC33 +:102140002FF0E552DF6E000EDF80B3EC1BF0E66A85 +:102150003CEC30F0E552DF70B3EC1BF0D08EF28E29 :10216000F28CF30E8C1695160101476B486B496B88 :102170004A6B010E4B6FF90E921680160E0EE66E2C -:102180007C0EE66EE10EE66EE7EC2EF0E552E552CF +:102180007C0EE66EE10EE66EF6EC2EF0E552E552C0 :10219000E552CF0E9216939894943F0E9516010E29 :1021A000E66E2EEC04F0E552838C81888284808A6E -:1021B000838E80888294010EE66E68EC30F0E552E2 -:1021C00082849D80C50EE66EBDEC2FF0E55293EC47 +:1021B000838E80888294010EE66E77EC30F0E552D3 +:1021C00082849D80C50EE66ECCEC2FF0E552A2EC29 :1021D0001BF0E552E552E7CFD9FF1200D9CFE6FF59 -:1021E000E1CFD9FF0F0EE12601014B5102E0A5EC32 +:1021E000E1CFD9FF0F0EE12601014B5102E0B4EC23 :1021F0001AF0200E0101005D03E36D50020B02E0B6 -:102200009BEF1AF0010149514A1102E1000E08D07A +:10220000AAEF1AF0010149514A1102E1000E08D06B :1022100049C1E9FF4AC1EAFFEF50800B01E0010E1E :10222000000947E101014651EA6A260FE96E010EF5 :10223000EA22EF5000083DE20501406B01014C51DC :102240004C2B0501416F0501040E426F01014651FF :10225000EA6A260FE96E010EEA22EFCF43F5400E3F :10226000E66E400EE66E050EE66E010EE66E010E9F -:10227000E66E02EC20F0006E050EE15E0050F3CF3A +:10227000E66E11EC20F0006E050EE15E0050F3CF2B :1022800049F1F4CF4AF101014651EA6A260FE96E9D :10229000010EEA22EF6A01014651000803E2010142 :1022A000460707D001014551000803E201011F0E56 @@ -438,11 +438,11 @@ :1022E0000501406B01014C514C2B0501416F05016B :1022F0000A0E426F0501436B0501010E486F400E47 :10230000E66E400EE66E050EE66E010EE66E010EFE -:10231000E66E02EC20F0006E050EE15E0050F3CF99 +:10231000E66E11EC20F0006E050EE15E0050F3CF8A :1023200049F1F4CF4AF10101526B000E0101E76E51 :102330005119E8AE02D0513503D0E750D88051553D :1023400001E38ED001015151FF0A29E0FD0A13E09B -:10235000030A01E06ED0020EE66E50EC2AF0E55260 +:10235000030A01E06ED0020EE66E5FEC2AF0E55251 :1023600057EC07F0000904E00101020E516F02D0A2 :102370000101516960D0200EE66E030EE66EC80EB4 :10238000E66EE66AE80EE66E030EE66E3CEC09F0D9 @@ -450,47 +450,47 @@ :1023A00049514A1102E1000E08D049C1E9FF4AC172 :1023B000EAFFEF50800B01E0010E000939E1050151 :1023C000406B01014C514C2B0501416F0501050E7D -:1023D000426F0501436B0501486BAF0E006E5D0E49 +:1023D000426F0501436B0501486BCD0E006E5D0E2B :1023E000016E026A00C0E6FF01C0E6FF02C0E6FF20 -:1023F000480EE66E050EE66E38EC2FF0036E050E05 +:1023F000480EE66E050EE66E47EC2FF0036E050EF6 :10240000E15E0350400EE66E400EE66E050EE66E8F -:10241000010EE66E010EE66E02EC20F0006E050E77 +:10241000010EE66E010EE66E11EC20F0006E050E68 :10242000E15E0050F3CF49F1F4CF4AF10101516B65 :1024300002D00101516B020EE66EE66AF0EC06F086 :10244000E552E55200090AE1020EE66E010EE66E63 :10245000F0EC06F0E552E552000902E00101516995 :1024600001014751481102E1000E08D047C1E9FFC0 :1024700048C1EAFFEF50800B01E0010E000902E0C5 -:102480009BEF1AF005010251070A02E1FCEF19F077 +:10248000AAEF1AF005010251070A02E10BEF1AF058 :102490000D0A01E148D2010A01E118D20D0A01E159 -:1024A000B0D1040A1AE0030A07E0010A02E05AEF79 -:1024B0001AF0FF009BEF1AF0E66A74EC2FF0E55279 -:1024C000DF6E000EDB80DFCFE6FFE66A54EC2FF014 -:1024D000E552E552FF009BEF1AF0010149514A1104 +:1024A000B0D1040A1AE0030A07E0010A02E069EF6A +:1024B0001AF0FF00AAEF1AF0E66A83EC2FF0E5525B +:1024C000DF6E000EDB80DFCFE6FFE66A63EC2FF005 +:1024D000E552E552FF00AAEF1AF0010149514A11F5 :1024E00002E1000E08D049C1E9FF4AC1EAFFEF50FE :1024F000800B01E0010E000901E081D100C540F52B :102500000501416B0501030E426F0501436B050197 :1025100008510F0A01E110D1080A01E1BBD0010AFC :1025200001E17ED0020A71E0070A64E0010A20E0BE :10253000030A06E0010A01E038D167C148F538D145 -:102540000501486B8B0E006E5D0E016E026A00C0C5 +:102540000501486BA90E006E5D0E016E026A00C0A7 :10255000E6FF01C0E6FF02C0E6FF480EE66E050E8C -:10256000E66E38EC2FF0036E050EE15E035020D1CD -:102570000501486B7F0E006E5D0E016E026A00C0A1 +:10256000E66E47EC2FF0036E050EE15E035020D1BE +:102570000501486B9D0E006E5D0E016E026A00C083 :10258000E6FF01C0E6FF02C0E6FF480EE66E050E5C -:10259000E66E38EC2FF0036E050EE15E03507D0E03 +:10259000E66E47EC2FF0036E050EE15E03509B0ED6 :1025A000006E5D0E016E026A00C0E6FF01C0E6FF2C -:1025B00002C0E6FF480EE66E050EE66E38EC2FF020 -:1025C000036E050EE15E0350740E006E5D0E016E2B +:1025B00002C0E6FF480EE66E050EE66E47EC2FF011 +:1025C000036E050EE15E0350920E006E5D0E016E0D :1025D000026A00C0E6FF01C0E6FF02C0E6FF480E47 -:1025E000E66E050EE66E38EC2FF0036E050EE15E2A +:1025E000E66E050EE66E47EC2FF0036E050EE15E1B :1025F0000350DED092CF48F593CF49F594CF4AF5FA :1026000095CF4BF596CF4CF5D3D080CF48F581CF01 :1026100049F582CF4AF583CF4BF584CF4CF5C8D02E -:10262000E66AAAEC29F0E552010E2DC0DBFF020E8E +:10262000E66AB9EC29F0E552010E2DC0DBFF020E7F :102630002EC0DBFF030E2FC0DBFF040E30C0DBFF1C :10264000040EDBCF48F5030EDBCF49F5020EDBCFDE -:102650004AF5010EDBCF4BF5010EE66EAAEC29F030 +:102650004AF5010EDBCF4BF5010EE66EB9EC29F021 :10266000E552010E2DC0DBFF020E2EC0DBFF030E74 :102670002FC0DBFF040E30C0DBFF040EDBCF4CF5B8 :10268000030EDBCF4DF5020EDBCF4EF5010EDBCF97 @@ -513,10 +513,10 @@ :10279000DBFF040EDBCF4CF5030EDBCF4DF5020E55 :1027A000DBCF4EF5010EDBCF4FF50501020E436F77 :1027B000400EE66E400EE66E050EE66E010EE66E0B -:1027C000010EE66E02EC20F0006E050EE15E005098 +:1027C000010EE66E11EC20F0006E050EE15E005089 :1027D000F3CF49F1F4CF4AF1400EE66E000EE66EFB -:1027E000050EE66EE66A010EE66E02EC20F0006E63 -:1027F000050EE15E0050F3CF47F1F4CF48F19BEFB7 +:1027E000050EE66EE66A010EE66E11EC20F0006E54 +:1027F000050EE15E0050F3CF47F1F4CF48F1AAEFA8 :102800001AF005010851030A37E0010A25E0030A1E :1028100013E0010A01E040D00501095192120501BF :102820000A51931205010B51941205010C51951296 @@ -526,97 +526,97 @@ :102860000A1D8A1605010B1D8B1605010C1D8C1601 :1028700005010D1D8D1615D005010951891205019F :102880000A518A1205010B518B1205010C518C1251 -:1028900005010D518D1205D0030EE66EFAEC2FF0F6 +:1028900005010D518D1205D0030EE66E09EC30F0E6 :1028A000E552400EE66E000EE66E050EE66EE66A36 -:1028B000010EE66E02EC20F0006E050EE15E0050A7 -:1028C000F3CF47F1F4CF48F19BEF1AF0050108511F -:1028D000020A09E0030A01E00CD009C5E6FF50EC4A -:1028E0002AF0E5520BD009C5E6FF60EC2AF0E5526C -:1028F00005D0010EE66EFAEC2FF0E552400EE66EC2 -:10290000000EE66E050EE66EE66A010EE66E02EC5D +:1028B000010EE66E11EC20F0006E050EE15E005098 +:1028C000F3CF47F1F4CF48F1AAEF1AF00501085110 +:1028D000020A09E0030A01E00CD009C5E6FF5FEC3B +:1028E0002AF0E5520BD009C5E6FF6FEC2AF0E5525D +:1028F00005D0010EE66E09EC30F0E552400EE66EB2 +:10290000000EE66E050EE66EE66A010EE66E11EC4E :1029100020F0006E050EE15E0050F3CF47F1F4CFDA -:1029200048F19BEF1AF005010851060A02E1BBEFDE -:1029300019F0080A02E181EF19F0030A02E178EFC9 -:1029400019F0070A02E119EF19F0030A01E1BED3F9 +:1029200048F1AAEF1AF005010851060A02E1CAEFC0 +:1029300019F0080A02E190EF19F0030A02E187EFAB +:1029400019F0070A02E123EF19F0030A01E1C3D3EA :10295000010A01E1D0D20F0A01E1B9D2020A01E174 :102960006ED2010A01E13DD2070A01E10CD2010A4F :1029700001E1DBD1030A01E1AAD1010A01E1A4D1FD :102980000C0A01E126D1030A01E194D0040A02E015 -:10299000E3EF19F00501095104E0020E0501095D9C -:1029A00040E10AC5E6FF010EE66E54EC2FF0E55259 -:1029B000E5520BC5E6FF020EE66E54EC2FF0E55231 -:1029C000E5520CC5E6FF030EE66E54EC2FF0E5521F -:1029D000E5520DC5E6FF040EE66E54EC2FF0E5520D -:1029E000E5520EC5E6FF050EE66E54EC2FF0E552FB -:1029F000E5520FC5E6FF060EE66E54EC2FF0E552E9 -:102A0000E55210C5E6FF070EE66E54EC2FF0E552D6 -:102A1000E55211C5E6FF080EE66E54EC2FF0E552C4 +:10299000F2EF19F00501095104E0020E0501095D8D +:1029A00040E10AC5E6FF010EE66E63EC2FF0E5524A +:1029B000E5520BC5E6FF020EE66E63EC2FF0E55222 +:1029C000E5520CC5E6FF030EE66E63EC2FF0E55210 +:1029D000E5520DC5E6FF040EE66E63EC2FF0E552FE +:1029E000E5520EC5E6FF050EE66E63EC2FF0E552EC +:1029F000E5520FC5E6FF060EE66E63EC2FF0E552DA +:102A0000E55210C5E6FF070EE66E63EC2FF0E552C7 +:102A1000E55211C5E6FF080EE66E63EC2FF0E552B5 :102A2000E5520501090504E0020E0501095D40E1DA -:102A30000AC5E6FF090EE66E54EC2FF0E552E552AA -:102A40000BC5E6FF0A0EE66E54EC2FF0E552E55298 -:102A50000CC5E6FF0B0EE66E54EC2FF0E552E55286 -:102A60000DC5E6FF0C0EE66E54EC2FF0E552E55274 -:102A70000EC5E6FF0D0EE66E54EC2FF0E552E55262 -:102A80000FC5E6FF0E0EE66E54EC2FF0E552E55250 -:102A900010C5E6FF0F0EE66E54EC2FF0E552E5523E -:102AA00011C5E6FF100EE66E54EC2FF0E552E5522C -:102AB000E8EF19F000C540F50501416B0501030E73 -:102AC000426F0501436B010EE66E74EC2FF0E55288 -:102AD0000501486F020EE66E74EC2FF0E552050119 -:102AE000496F030EE66E74EC2FF0E55205014A6F54 -:102AF000040EE66E74EC2FF0E55205014B6F050EE7 -:102B0000E66E74EC2FF0E55205014C6F060EE66E92 -:102B100074EC2FF0E55205014D6F070EE66E74EC74 -:102B20002FF0E55205014E6F080EE66E74EC2FF0A3 -:102B3000E55205014F6F090EE66E74EC2FF0E55279 -:102B40000501506F0A0EE66E74EC2FF0E552050198 -:102B5000516F0B0EE66E74EC2FF0E5520501526FCB -:102B60000C0EE66E74EC2FF0E5520501536F0D0E5E -:102B7000E66E74EC2FF0E5520501546F0E0EE66E12 -:102B800074EC2FF0E5520501556F0F0EE66E74ECF4 -:102B90002FF0E5520501566F100EE66E74EC2FF023 +:102A30000AC5E6FF090EE66E63EC2FF0E552E5529B +:102A40000BC5E6FF0A0EE66E63EC2FF0E552E55289 +:102A50000CC5E6FF0B0EE66E63EC2FF0E552E55277 +:102A60000DC5E6FF0C0EE66E63EC2FF0E552E55265 +:102A70000EC5E6FF0D0EE66E63EC2FF0E552E55253 +:102A80000FC5E6FF0E0EE66E63EC2FF0E552E55241 +:102A900010C5E6FF0F0EE66E63EC2FF0E552E5522F +:102AA00011C5E6FF100EE66E63EC2FF0E552E5521D +:102AB000F7EF19F000C540F50501416B0501030E64 +:102AC000426F0501436B010EE66E83EC2FF0E55279 +:102AD0000501486F020EE66E83EC2FF0E55205010A +:102AE000496F030EE66E83EC2FF0E55205014A6F45 +:102AF000040EE66E83EC2FF0E55205014B6F050ED8 +:102B0000E66E83EC2FF0E55205014C6F060EE66E83 +:102B100083EC2FF0E55205014D6F070EE66E83EC56 +:102B20002FF0E55205014E6F080EE66E83EC2FF094 +:102B3000E55205014F6F090EE66E83EC2FF0E5526A +:102B40000501506F0A0EE66E83EC2FF0E552050189 +:102B5000516F0B0EE66E83EC2FF0E5520501526FBC +:102B60000C0EE66E83EC2FF0E5520501536F0D0E4F +:102B7000E66E83EC2FF0E5520501546F0E0EE66E03 +:102B800083EC2FF0E5520501556F0F0EE66E83ECD6 +:102B90002FF0E5520501566F100EE66E83EC2FF014 :102BA000E5520501576F400EE66E400EE66E050ECB -:102BB000E66E010EE66E010EE66E02EC20F0006E8F -:102BC000050EE15E0050F3CF49F1F4CF4AF1E8EF92 -:102BD00019F0030EE66E010EE66E54EC2FF0E5528E -:102BE000E552E80EE66E020EE66E54EC2FF0E5526A -:102BF000E552E66A030EE66E54EC2FF0E552E5521C -:102C0000010EE66E040EE66E54EC2FF0E552E5522E -:102C1000E66A050EE66E54EC2FF0E552E552E66AE0 -:102C2000060EE66E54EC2FF0E552E552270EE66EE6 -:102C3000070EE66E54EC2FF0E552E552100EE66EEC -:102C4000080EE66E54EC2FF0E552E552030EE66EE8 -:102C5000090EE66E54EC2FF0E552E552E80EE66EF2 -:102C60000A0EE66E54EC2FF0E552E552E66A0B0EC2 -:102C7000E66E54EC2FF0E552E552010EE66E0C0EB6 -:102C8000E66E54EC2FF0E552E552E66A0D0EE66E64 -:102C900054EC2FF0E552E552E66A0E0EE66E54EC67 -:102CA0002FF0E552E552270EE66E0F0EE66E54EC5D -:102CB0002FF0E552E552100EE66E100EE66E54EC63 -:102CC0002FF0E552E55284D357EC07F081D3060E7E +:102BB000E66E010EE66E010EE66E11EC20F0006E80 +:102BC000050EE15E0050F3CF49F1F4CF4AF1F7EF83 +:102BD00019F0030EE66E010EE66E63EC2FF0E5527F +:102BE000E552E80EE66E020EE66E63EC2FF0E5525B +:102BF000E552E66A030EE66E63EC2FF0E552E5520D +:102C0000010EE66E040EE66E63EC2FF0E552E5521F +:102C1000E66A050EE66E63EC2FF0E552E552E66AD1 +:102C2000060EE66E63EC2FF0E552E552270EE66ED7 +:102C3000070EE66E63EC2FF0E552E552100EE66EDD +:102C4000080EE66E63EC2FF0E552E552030EE66ED9 +:102C5000090EE66E63EC2FF0E552E552E80EE66EE3 +:102C60000A0EE66E63EC2FF0E552E552E66A0B0EB3 +:102C7000E66E63EC2FF0E552E552010EE66E0C0EA7 +:102C8000E66E63EC2FF0E552E552E66A0D0EE66E55 +:102C900063EC2FF0E552E552E66A0E0EE66E63EC49 +:102CA0002FF0E552E552270EE66E0F0EE66E63EC4E +:102CB0002FF0E552E552100EE66E100EE66E63EC54 +:102CC0002FF0E552E55293D357EC07F090D3060E60 :102CD00009C5DBFF050E0AC5DBFF080E0BC5DBFFD0 :102CE000070E0CC5DBFF0A0E0DC5DBFF090E0EC576 :102CF000DBFF090EDBCFE6FF0A0EDBCFE6FF070E98 :102D0000DBCFE6FF080EDBCFE6FF050EDBCFE6FFED :102D1000060EDBCFE6FF3CEC09F0006E060EE15E2E -:102D200000500101010E526F53D3060E09C5DBFF9F +:102D200000500101010E526F62D3060E09C5DBFF90 :102D3000050E0AC5DBFF080E0BC5DBFF070E0CC531 :102D4000DBFF0A0E0DC5DBFF090E0EC5DBFF090E0A :102D5000DBCFE6FF0A0EDBCFE6FF070EDBCFE6FF99 :102D6000080EDBCFE6FF050EDBCFE6FF060EDBCF5E :102D7000E6FF43EC09F0006E060EE15E0050010133 -:102D8000010E526F25D3060E09C5DBFF050E0AC5DD +:102D8000010E526F34D3060E09C5DBFF050E0AC5CE :102D9000DBFF080E0BC5DBFF070E0CC5DBFF0A0EC1 :102DA0000DC5DBFF090E0EC5DBFF090EDBCFE6FF0D :102DB0000A0EDBCFE6FF070EDBCFE6FF080EDBCF08 :102DC000E6FF050EDBCFE6FF060EDBCFE6FF4AECA3 :102DD00009F0006E060EE15E00500101010E526F17 -:102DE000F7D2060E09C5DBFF050E0AC5DBFF080E8C +:102DE00006D3060E09C5DBFF050E0AC5DBFF080E7C :102DF0000BC5DBFF070E0CC5DBFF0A0E0DC5DBFFA5 :102E0000090E0EC5DBFF090EDBCFE6FF0A0EDBCF96 :102E1000E6FF070EDBCFE6FF080EDBCFE6FF050E71 :102E2000DBCFE6FF060EDBCFE6FF56EC09F0006EC7 -:102E3000060EE15E00500101010E526FC9D2060E6E +:102E3000060EE15E00500101010E526FD8D2060E5F :102E400009C5DBFF050E0AC5DBFF080E0BC5DBFF5E :102E5000070E0CC5DBFF0A0E0DC5DBFF090E0EC504 :102E6000DBFF0C0E0FC5DBFF0B0E10C5DBFF0E0EDC @@ -625,845 +625,846 @@ :102E90000C0EDBCFE6FF090EDBCFE6FF0A0EDBCF21 :102EA000E6FF070EDBCFE6FF080EDBCFE6FF050EE1 :102EB000DBCFE6FF060EDBCFE6FF62EC09F0006E2B -:102EC0000B0EE15E00500101010E526F81D2060E21 +:102EC0000B0EE15E00500101010E526F90D2060E12 :102ED0000AC5DBFF050E0BC5DBFF050EDBCFE6FFEA :102EE000060EDBCFE6FF09C5E6FF11EC09F0E5525F -:102EF000E552E5526DD2060E0AC5DBFF050E0BC585 +:102EF000E552E5527CD2060E0AC5DBFF050E0BC576 :102F0000DBFF080E0CC5DBFF070E0DC5DBFF0A0E4D -:102F10000EC5DBFF090E0FC5DBFF090EDBCF2FF05F -:102F20000A0EDBCF30F057EC21F02EC008F02FC096 -:102F300009F030C00AF031C00BF0A60E336E280E37 -:102F4000346E940E356E3F0E366E08C02EF009C0FA -:102F50002FF00AC030F00BC031F071EC22F02EC01F -:102F600004F02FC005F030C006F031C007F0CC0EE1 -:102F7000336EBC0E346E8C0E356E3B0E366E04C056 -:102F80002EF005C02FF006C030F007C031F071EC14 -:102F900022F00DEC23F02DC000F02EC001F02FC068 -:102FA00002F030C003F000C0E6FF01C0E6FF02C03F -:102FB000E6FF03C0E6FF070EDBCF2FF0080EDBCFE6 -:102FC00030F057EC21F02EC014F02FC015F030C0B7 -:102FD00016F031C017F0A60E336E280E346E940E24 -:102FE000356E3F0E366E14C02EF015C02FF016C091 -:102FF00030F017C031F071EC22F02EC010F02FC06D -:1030000011F030C012F031C013F0BD0E336E370E28 -:10301000346E860E356E410E366E10C02EF011C025 -:103020002FF012C030F013C031F071EC22F00DEC33 -:1030300023F02DC00CF02EC00DF02FC00EF030C0CC -:103040000FF00CC0E6FF0DC0E6FF0EC0E6FF0FC09C -:10305000E6FF050EDBCF2FF0060EDBCF30F057EC8E -:1030600021F02EC01CF02FC01DF030C01EF031C06A -:103070001FF0A60E336E280E346E940E356E3F0E82 -:10308000366E1CC02EF01DC02FF01EC030F01FC0C9 -:1030900031F071EC22F00DEC23F02DC018F02EC0B1 -:1030A00019F02FC01AF030C01BF018C0E6FF19C08D -:1030B000E6FF1AC0E6FF1BC0E6FF09C5E6FFDAEC33 -:1030C00007F0206E0D0EE15E205082D1060E0AC57B -:1030D000DBFF050E0BC5DBFF080E0CC5DBFF070E83 -:1030E0000DC5DBFF0EC5E6FF070EDBCF2FF0080E88 -:1030F000DBCF30F057EC21F02EC008F02FC009F0E4 -:1031000030C00AF031C00BF0A60E336E280E346EBC -:10311000940E356E3F0E366E08C02EF009C02FF0AB -:103120000AC030F00BC031F071EC22F02EC004F078 -:103130002FC005F030C006F031C007F0CC0E336E62 -:10314000BC0E346E8C0E356E3B0E366E04C02EF007 -:1031500005C02FF006C030F007C031F071EC22F04E -:103160000DEC23F02DC000F02EC001F02FC002F0B6 -:1031700030C003F000C0E6FF01C0E6FF02C0E6FF7A -:1031800003C0E6FF050EDBCF2FF0060EDBCF30F0DD -:1031900057EC21F02EC014F02FC015F030C016F0FF -:1031A00031C017F0A60E336E280E346E940E356EB5 -:1031B0003F0E366E14C02EF015C02FF016C030F042 -:1031C00017C031F071EC22F02EC010F02FC011F0BA -:1031D00030C012F031C013F0BD0E336E370E346EB6 -:1031E000860E356E410E366E10C02EF011C02FF0D7 -:1031F00012C030F013C031F071EC22F00DEC23F06E -:103200002DC00CF02EC00DF02FC00EF030C00FF00E -:103210000CC0E6FF0DC0E6FF0EC0E6FF0FC0E6FFE4 -:1032200009C5E6FF6AEC08F0186E0A0EE15E185058 -:10323000CFD0060E0AC5DBFF050E0BC5DBFF0CC5A4 -:10324000E6FF050EDBCF2FF0060EDBCF30F057EC9C -:1032500021F02EC008F02FC009F030C00AF031C0B4 -:103260000BF0A60E336E280E346E940E356E3F0EA4 -:10327000366E08C02EF009C02FF00AC030F00BC027 -:1032800031F071EC22F02EC004F02FC005F030C0F8 -:1032900006F031C007F0BD0E336E370E346E860E69 -:1032A000356E410E366E04C02EF005C02FF006C0FC -:1032B00030F007C031F071EC22F00DEC23F02DC09E -:1032C00000F02EC001F02FC002F030C003F000C0AB -:1032D000E6FF01C0E6FF02C0E6FF03C0E6FF09C546 -:1032E000E6FFC8EC08F00C6E060EE15E0C5070D0E4 -:1032F00009C5E6FFE0EC08F0E5520101010E526F4E -:1033000067D0E9EC0BF0050EF3CFDBFF060EF4CF30 -:10331000DBFFFFEC0BF0070EF3CFDBFF080EF4CF63 -:10332000DBFF00C540F50501416B0501030E426F4F -:103330000501436B060EDBCF48F5050EDBCF49F5E3 -:10334000080EDBCF4AF5070EDBCF4BF5400EE66EDD -:10335000400EE66E050EE66E010EE66E010EE66E9E -:1033600002EC20F0006E050EE15E0050F3CF49F153 -:10337000F4CF4AF12DD000C540F50501416B0501A0 -:10338000030E426F0501436B16EC0CF0000904E0DC -:103390000501010E486F02D00501486B400EE66E34 -:1033A000400EE66E050EE66E010EE66E010EE66E4E -:1033B00002EC20F0006E050EE15E0050F3CF49F103 -:1033C000F4CF4AF105D0010EE66EFAEC2FF0E5528B -:1033D000400EE66E000EE66E050EE66EE66A010E23 -:1033E000E66E02EC20F0006E050EE15E0050F3CFB9 -:1033F00047F1F4CF48F19FD0010149514A1102E150 -:10340000000E08D049C1E9FF4AC1EAFFEF50800B26 -:1034100001E0010E00094DE10101010E516F0501AE -:10342000406B01014C514C2B0501416F0501050E0C -:10343000426F0501436B0501486B600E006E5D0E27 -:10344000016E026A00C0E6FF01C0E6FF02C0E6FFAF -:10345000480EE66E050EE66E38EC2FF0036E050E94 -:10346000E15E0350400EE66E400EE66E050EE66E1F -:10347000010EE66E010EE66E02EC20F0006E050E07 -:10348000E15E0050F3CF49F1F4CF4AF1400EE66E11 -:10349000000EE66E050EE66EE66A010EE66E02ECC2 -:1034A00020F0006E050EE15E0050F3CF47F1F4CF3F -:1034B00048F141D0010149514A1102E1000E08D002 -:1034C00049C1E9FF4AC1EAFFEF50800B01E0010E5C -:1034D000000931E100C540F50501416B0501030E0E -:1034E000426F0501010E436F400EE66E400EE66E20 -:1034F000050EE66E010EE66E010EE66E02EC20F0A1 -:10350000006E050EE15E0050F3CF49F1F4CF4AF1B1 -:10351000400EE66E000EE66E050EE66EE66A010EE1 -:10352000E66E02EC20F0006E050EE15E0050F3CF77 -:1035300047F1F4CF48F10F0EE15C02E2E16AE55297 -:10354000E16EE552E7CFD9FF12000101535154114A -:1035500004E1100E536F270E546F5307000E545B97 -:103560006DA207D0535154112EE18C748CB413D03A -:1035700027D00101005102E18C9422D0000502E124 -:103580008C8409D0020E005D02E18C8419D0040EF7 -:10359000005D03E18C948C861200100E005D06E144 -:1035A0000101535154110FE18C740AD0200E005DBB -:1035B0000AE101015351541106E18C748CA402D02C -:1035C0008C9612008C86120012001200120012005B -:1035D000A1EF2DF012001E0EE66E010EE66ED0EC8D -:1035E0001FF0E552E552400EE66E000EE66E050E47 -:1035F000E66EE66A010EE66E02EC20F0006E050E45 -:10360000E15E0050F3CF47F1F4CF48F112006D8432 -:103610000101080E686F070E696F6807000E695B8D -:1036200068516911FAE16D941200D9CFE6FFE1CF3C -:10363000D9FFFD0EDBCF2FF0FE0EDBCF30F0010EF9 -:103640002F1801E1305033E0E8682F1802E1E868F4 -:1036500030182BE0030E2F1801E1305024E0040E47 -:103660002F1801E130501DE0020E2F1801E13050FB -:1036700016E0170E2F1801E130500FE0160E2F182C -:1036800001E1305008E0150E2F1801E1305001E043 -:1036900010D0A1DF0FD09EDF0DD09ADF0BD096DFC8 -:1036A00009D092DF07D091DF05D091DF03D0000071 -:1036B00001D000D0010E00D0E552E7CFD9FF1200B3 -:1036C0004BD8E652D0B202D0010E15D0D0B802D0FD -:1036D000020E11D0D0B002D0030E0DD0D0B602D061 -:1036E000040E09D0FCAE02D0050E05D0FCAC02D011 -:1036F000060E01D0070EDF6ED088D086D084D0822F -:10370000D080FC9EFC9CDF50E552E552E7CFD9FF0C -:103710001200E65221D8020EE126F350DF6E010EB0 -:10372000F4CFDBFF1200C00EE66EE00EE66EDEECBC -:103730002FF0E552E5521200DF50F36E010EDB5020 -:10374000F46E020EE15C1200DFCFE6FFE66A54EC95 -:103750002FF0E552E5521200D9CFE6FFE1CFD9FFB5 -:02376000120055 -:0E376200A9EC20F06A6A686ADCEC20F06D8C3D -:103770006E6A8CEC20F06D9CDF6ABDEC20F010E2EC -:10378000DF50040DF3CFE9FFF4CFEAFF000EE92686 -:10379000040EEA22EE6AEE6AEE6AEE6ADF2AEDD7DE -:1037A000160E706E68A604D0030E52EC20F0FAD705 -:1037B0000101136B186B196B1A6B6D98080E0B6F68 -:1037C000040E0C6F016B006BE55267EF20F0A9EC63 -:1037D00020F0010100510BE16D6A696ADCEC20F018 -:1037E0006DB602D06D86FCD70101010E006F000599 -:1037F00008E16DBA06D0686A696A69806988020E54 -:10380000006F6850040B07E06950040B04E0020EDF -:1038100052EC20F089D86DB247D06850010B14E00B -:103820006950010B11E09DDF0101040E006F0401DE -:10383000200E026F040E036F080E016F006B8C0EDA -:103840000013E66A1BEC21F06850100B07E069508A -:10385000100B04E060D8040E52EC20F06850400BCE -:103860000BE06950400B08E0E3EC20F0020E5AEC4C -:1038700020F0060E52EC20F06850200B04E0695056 -:10388000200B01E035D86850020B0AE06950020BAA -:1038900007E0E3EC20F0E668E6683BEC21F06A6ABA -:1038A000040E0101005D02E2A19A1FD069A61CD09E -:1038B000DF6A040EDF5C18E268A616D06CCF20F138 -:1038C000030E52EC20F0780E0101201502E138D8E9 -:1038D00009D0000EE66EE66A200EE66E010EE66E78 -:1038E000010EE8DBDF2AE5D7A19AE55267EF20F069 -:1038F00070A00ED075EC20F0EF50800808E1D5DB09 -:10390000EF50840804E175EC20F08C0EEF6E70909F -:10391000050E52EF20F06984040EC4DB6D8295EC35 -:1039200020F0040E5AEF20F095EC20F0030EC2DBDD -:103930006D92699468A403D0020EB4DBFBD7120029 -:10394000A9EC20F0FD0E010120153DE17E0E2015B1 -:10395000E8407F0B040DF3CF03F1F4CF04F1000E28 -:103960000327040E042303C105F104C106F1057504 -:10397000BCDBEF503C0BE842E8420D0822E1B5DB2E -:1039800012EC21F0EECF00F0EFCF01F0280E00187E -:1039900016E1040E011813E14CEC21F0DF6AEDDBB7 -:1039A0000EE2DF50C5EC20F0DF50EA6A200FE96E2E -:1039B000040EEA22E552E750EF6EDF2AF0D70AD86C -:1039C00007D01AD805D0FD0E2015040801E122D831 -:1039D000E5527DD36ADBEF50800B02E066DBEF6AD5 -:1039E00001010F6B106B146B156B136B64D89DDBAF -:1039F000170E60DB90EF1EF0020E0101105D02E178 -:103A00001DEF1FF034D80101215102E117EF21F021 -:103A1000216B12009EDB49DBEF50400B01E0010EF1 -:103A2000DF6E01010B75080E005D09E122C46EFF17 -:103A30006E50000802E2100E01D0040E006F100557 -:103A400013E150EC21F0A6D9020E01010F5D03E154 -:103A50002CDB840E07D0DF5003E127DBC80E02D039 -:103A600024DB880EEF6E01D002D8E55230D32BDB79 -:103A70000101106B1ADBEF6A040E0B19006E0CC10A -:103A800001F0DE6E0CC1DDFF19DBEF6A18AF0CD060 -:103A90001B511C1107E005D01CC1FAFF01011B518D -:103AA000F96EFADF0101189F020EE15C02E2E16AA1 -:103AB000E552E16E0CD304012051600BE842E8426C -:103AC000E842E842E842000901E0120021510C0AF4 -:103AD00045E00B0A3FE00C0A31E0010A22E00B0A44 -:103AE0001EE0020A1CE0030A18E0080A10E0010ABE -:103AF0000CE00F0A08E0030A01E012000101138F35 -:103B0000080E006F120010EF1EF079EF1FF0010198 -:103B1000010E116F010E126F0CD051EF1EF0AFEFBE -:103B20001DF024510101116F126B020E1127010EBD -:103B300012231381010E146F138F12000101138FD2 -:103B400004012451EA6A020FE96E010EEA2222C43E -:103B5000EFFF1200EADA160E5AEF20F012007EDBB9 -:103B6000040EE1260401220510E120511F0B00097B -:103B70000CE10101138F030E0401215D04E1010139 -:103B8000010E1F6F02D001011F6B0401225141E1A0 -:103B900020511F0B02083DE124510F0B000939E0B1 -:103BA0000101138F040124BF05D0A4DA070EE92612 -:103BB000010E04D09FDA0B0EE926010ED2DA030EB5 -:103BC000215D03E17BDA840E23D024510F0B016ABF -:103BD000700F006E0F0E0122020E00C0DBFF030EFD -:103BE00001C0DBFF020EDBCFE9FF030EDBCFEAFFF4 -:103BF000EE90ED5224AF06D061DAEF6ADF745EDA40 -:103C0000400E06D05BDA880EEF6EDF7457DAC80E0E -:103C1000EF6E040EE15C02E2E16AE552E16E57D21A -:103C2000800E0401205D3CE10101C00E136F040110 -:103C30002351030A1EE0010A09E0030A2FE10101F2 -:103C4000100E116F5C0E126F120E22D0C3DABA0E74 -:103C5000F6265C0EA2DA020E0101F76A1125F66E55 -:103C60001251F7220900F5CF14F10A00F5CF15F132 -:103C70001200030E225D0FE2ADDABC0EF6265C0EDA -:103C80008CDA11C1F6FF12C1F7FF0800F5500101EF -:103C9000146F156B12000101136B12000101136BFD -:103CA000120011DA0401286B296B20511F0B020A44 -:103CB00011E0030A0CE0010A22E10101138F040163 -:103CC000288101011F051BE10401288318D001018F -:103CD000138F15D00101138F040124BF05D00ADA18 -:103CE000070EE926010E04D005DA0B0EE926010EB7 -:103CF00038DAE4D9EF50040B02E0010E286F01011D -:103D000013AF07D0280E116F040E126F1381020E2D -:103D1000146F020EE15C02E2E16AE552E16ED7D176 -:103D20006D98010113BF08D018AF02D061DA2AD014 -:103D30007EDABBD9840E27D018BF2BD0040120AF68 -:103D400024D0010114510401265D01011551040123 -:103D5000275904E226C414F127C415F11BD8010128 -:103D6000010E106FA1DA800EEF6E216BBED9EE52FC -:103D7000080EEF6E91DAB9D9840EEF6E010E216F45 -:103D80008FDA93D9C80EEF6E1200010131DAC80E36 -:103D9000EF6E120098D90101080E145D000E15593E -:103DA0000DE214C1DEFF15C1DDFF0F5102E1010E6E -:103DB00003D00F0506E1020E0F6F03D0080EDE6E72 -:103DC000DD6A73D9EF9271D9EF906FD9010EDB5094 -:103DD000EF126BD9EE52DFCFEFFF000EDB50145F16 -:103DE000010EDB50155B280E1D6F040E1E6F13B104 -:103DF0000FD0F7D91BE011C1F6FF12C1F7FF112B4D -:103E0000000E12230800F55096D9F3E2DB06F1D735 -:103E1000E8D90CE011C1E9FF12C1EAFF112B000E35 -:103E20001223EF5088D9F4E2DB06F2D7020EE15CF0 -:103E300002E2E16AE552E16E4AD145D956D9EE5225 -:103E4000EFCFDFFFDFCF00F000500101195D000E62 -:103E50001A5903E219C1DFFF09D0DF50006E016A71 -:103E6000E850195D196F01501A591A6F010EDB6A7B -:103E7000DF50F36E010EDBCFF4FFF350F45C10E281 -:103E8000010EDB5082D916C1E9FF17C1EAFF162BDC -:103E9000000E1723E552E750EF6E010EDB2AE8D73C -:103EA000000ED8801955000E1A550DE2F4D854D9D9 -:103EB0001CD9EF50400B03E1EAD9C80E02D0E7D974 -:103EC000880EEF6E0FD0F0D9840EEF6E1B511C11CF -:103ED00007E005D01CC1FAFF01011B51F96EFADFA2 -:103EE0000101189F020EE15C02E2E16AE552E16E17 -:103EF000EED00101138F10D9010EE66EE66AE66A74 -:103F0000020EE66E010EAFD922C401F10401225166 -:103F100004E10101100E006F12000101200E006F7C -:103F200004D9150E5AEF20F0CED8000EDE6E040E26 -:103F3000DD6EE8D8040DF350006E016A020E0F0B1F -:103F400005E0D89001320032E806FBE1D890003657 -:103F50000136D89000360136D9CFE9FFDACFEAFF33 -:103F60000050EE260150ED22A9D8EF9EFD0EDB5049 -:103F700002E16AD901D06DD9EA22DECFEEFFDDCFB2 -:103F8000EDFF9CD8EF9C9AD8040EE926000EEA2299 -:103F9000EF8C020EE15C02E2E16AE552E16E97D03D -:103FA00092D8FE0EDB50016A700F006E0F0EDFD844 -:103FB00085D8FD0EDBCFEFFFDBA402D0E66AF5D893 -:103FC000FD0EDBA203D0010EE66EEFD8020EE15C1F -:103FD00002E2E16AE552E16E7AD075D8FE0EDB505E -:103FE00005E125D962D8840EEF6E05D08BD80CD9A7 -:103FF00089D8010F09D9020EE15C02E2E16AE552BB -:10400000E16E65D060D8FD0EDB5002E022D901D010 -:104010001BD9A7D853D806D9FB0EDBCFEEFFFC0E79 -:10402000DBCFEDFF4BD8EE52FA0EDBCFEFFF400EA9 -:1040300045D8E850EF16880E41D8E850EF12FD0E33 -:10404000DB5002E006D901D0FFD8EA22EF74DECFC0 -:1040500000F0DDCF01F000C0F3FF01C0F4FF020E5D -:10406000E15C02E2E16AE552E16E31D0F7D8010E7F -:10407000F36EFC0EDB5004E0D890F336E806FCE16A -:10408000F31C006EFD0EDBCFE9FFFE0EDBCFEAFF77 -:104090000050EF161CD0FBD8EE52080EEF6EF7D88A -:1040A00012EF21F0E66E1BEF21F00BC1E9FF0CC10E -:1040B000EAFF1200E66EE66A3BEF21F0DECFE9FF91 -:1040C000DDCFEAFF1200CAD8020EE1261200E55247 -:1040D000E7CFD9FF1200D6D847EF21F0FE0EEA6AEB -:1040E000DB34FE0BEA36E96E120003C1E9FF04C1BE -:1040F000EAFF120024510F0BE96EEA6AD890E93604 -:10410000EA361200FD0EDB50E824026EFE0EDB5094 -:10411000040DF35002241200000EE66EE66AE66A11 -:10412000710EE66E0F0E33EF21F0000EE66EE66ABA -:10413000E66EE66A1200E66E1DC1E9FF1EC1EAFFE7 -:104140001D2B000E1E23E552E750EF6EDF06010E19 -:10415000120084D8E6521200280EEE6E040EED6EA8 -:104160001200EA22EECFDEFFEDCFDDFF12000122CA -:1041700000C0DEFF01C0DDFF1200DF50006E016AEB -:10418000080E005C000E01581200EA6A280FE96E62 -:10419000040EEA22EF50E66E1200F7220900F5CF76 -:1041A00011F10A00F5CF12F11200FE0EDBCFE6FF8F -:1041B000BBDEE552E5521200160E6F6E9F0E6B6E5F -:1041C0007B0E696E1200010EE66EE66A000EE66E68 -:1041D000E66A12002251F66EF76AD890F636F73684 -:1041E0001200D9CFE9FFDACFEAFFEE50ED1012004E -:1041F000020E106F5ADFEE52EF6A57DFC80EEF6EF5 -:104200004ADFAADF47EF21F0040DF3CF00F0F4CF2F -:1042100001F0000E0026040EAADF840E4FDFE850E6 -:10422000EF121200020EE926000EEA2212003CD81C -:104230008C0EEF6E1200680EE66E0F0EE66E16DF45 -:10424000E552E552E552120049DF070EE926010E5C -:10425000120044DF0B0EE926010E1200D9CFE6FF53 -:10426000E1CFD9FF1200E66E1EEC2FF0006E050EB6 -:10427000E15E0050120015EC1BF0006E060EE15ED0 -:1042800000501200200EEE6E040EED6E120005C1FD -:10429000E9FF06C1EAFF120028DFC4DF42EF21F088 -:0E42A00004DFC0DFACEF20F0F6DE6BEF20F0A5 -:0242AE00389E38 -:1042B00008D0389E30AE05D02F6C301EE86A302210 -:1042C000388E30C02AF02FC029F03C6A3B6A8E0E2F -:1042D0002B6E2C6A60EF23F0389E0CD0389E30AEE7 -:1042E00009D02D6C2E1E2F1E301EE86A2E222F2282 -:1042F0003022388E30C02AF02FC029F02EC03CF07A -:104300002DC03BF09E0E2B6E2C6A60EF23F0367EA4 -:10431000386A9CEC23F0B4EC23F038B644EF23F079 -:1043200038A20AD038AA03D038BE44EF23F038A40C -:1043300050EF23F04DEF23F038AA05D038AC50EF02 -:1043400023F04DEF23F038A00AD038A808D038BEAB -:1043500004D038A402D059EF23F05DEF23F03B6A7C -:104360002C6A3650315C3A6E10E32EC03CF02FC000 -:1043700029F030C02AF031C039F033C02EF034C0FB -:104380002FF035C030F0383A09D033C03CF034C09B -:1043900029F035C02AF036C039F03A6C389E38BC66 -:1043A000388E39C02BF038B08CEF23F01A0E3A60FB -:1043B0008CEF23F02B6A316A38A408D02E6C2F1EA4 -:1043C000301E311EE86A2F223022312238AC08D04C -:1043D0003C6C291E2A1E2B1EE86A29222A222B2227 -:1043E0002D6A3A5207E0313430322F322E322D32DC -:1043F0003A2EF9D72E503C262F50292230502A220F -:1044000031502B222DC03BF0389E2BAE0BD03B6C95 -:104410003C1E291E2A1E2B1EE86A3C2229222A2223 -:104420002B22388E2BA006D0D8802A3229323C325B -:104430003B32392A39C02BF060EF23F0386A9CEC0C -:1044400023F0B4EC23F038B644EF23F038A205D0C3 -:1044500038BA44EF23F04BEF23F038BA57EF23F08C -:1044600038A005D038B844EF23F057EF23F038B820 -:104470004BEF23F02C6A7F0E31242B6EE86A2C223E -:1044800036502B5EE86A2C5A1A0E396E316A3B6A36 -:104490003C6A296A2A6A33502E5E34502F5A3550AE -:1044A000305A000E315A09E733502E2634502F224D -:1044B00035503022000E312201D03B8AD8902E3662 -:1044C0002F3630363136D8903B363C3629362A36B0 -:1044D000392EE1D730502F102E10D8A43B8A60EF30 -:1044E00023F0386A9CEC23F0B4EC23F038B644EFA8 -:1044F00023F038A205D038B844EF23F04BEF23F077 -:1045000038AA05D038B044EF23F04BEF23F038B091 -:1045100002D038A802D057EF23F02C6A365031244D -:104520002B6EE86A2C227E0E2B5EE86A2C5A3B6AC0 -:104530003C6A296A2A6A35503002F4CF2AF0F3CF58 -:1045400029F034503002F3503C26F4502922000E5A -:104550002A2235502F02F3503C26F4502922000E17 -:104560002A2233503002F3503B26F4503C22000EF6 -:1045700029222A2234502F02F3503B26F4503C22A9 -:10458000000E29222A2235502E02F3503B26F450E9 -:104590003C22000E29222A2233502F02F4503B26BF -:1045A000000E3C2229222A2234502E02F4503B26AF -:1045B000000E3C2229222A2260EF23F0386A9CEC6C -:1045C00023F038B6E8EF22F038A20ED038B405D088 -:1045D0007F0E306EFF0E2F6E1FD0800E306E2F6A52 -:1045E0001BD0306A2F6A18D038B0FBD78F0E3160DD -:1045F000EDD77E0E3164F5D78E0E315C05E0D89094 -:1046000030322F32312AF8D738A406D02F6C301E22 -:10461000E86A302230AEE5D71200386A9CEC23F00D -:1046200038B617EF23F038A20FD038B407D07F0E7A -:10463000306EFF0E2F6E2E6E2D6E25D0800E306EDA -:1046400001D0306A000EF6D738B0FBD72D6A9F0E26 -:104650003160EBD77E0E3164F4D79E0E315C07E0FB -:10466000D89030322F322E322D32312AF6D738A45C -:104670000AD02D6C2E1E2F1E301EE86A2E222F22ED -:10468000302230AEDED712007F0E316EFF0E306E5C -:104690002F6E2E6E12007F0E38BEFF0E316E02D0CE -:1046A0007F0E316E800E306E2F6A2E6AF3D738AED1 -:1046B00004D0800E316E306AF7D7316A306AF4D791 -:1046C0002A5029103C103B10F8E02CBEF0D72ABE2F -:1046D0000CD02B502C10EBE0D8903B363C362936D2 -:1046E0002A362B06D8A02C06F2D72C50D4E12B2842 -:1046F000D2E03BAE11D07F0E3B1402E13CA00CD0C7 -:104700003C2AE86A29222A2207E3D8802A32293261 -:104710003C322B2A2B28BFE02B50C9E03CC02EF0A6 -:1047200029C02FF02A34306E2B30316E3032319E5A -:1047300038BE318E4AEF23F03036313602E338840A -:10474000387E06E13880316A306A2F6A2E6A12009C -:10475000312803E0D88030321200D890303202E1A4 -:1047600038821200388612003536363602E3388C2D -:10477000387E06E13888366A356A346A336A120050 -:10478000362803E0D88035321200D8903532EAE17D -:10479000388A1200DCEC23F038B6000C38B0000C7C -:1047A00038B4000C010CDCEC23F038B6000C38B047 -:1047B000000C38A4000C010C386A9CEC23F0B4EC1B -:1047C00023F038B6120038AE08D038A004D038A88C -:1047D00002D038801200389012003650315C0BE164 -:1047E0003550305C08E134502F5C05E133502E5CCD -:1047F00002E138801200D8A002D0388E10D031509B -:1048000036C031F0366E305035C030F0356E2F5036 -:1048100034C02FF0346E2E5033C02EF0336E36502D -:10482000315C10E0FF0F09E0389038B403D038AEA7 -:104830003884120038AE38941200362AD8903532B7 -:104840003432333233502E5E34502F5A3550305A72 -:1048500030BEEAD7D8902E362F363036312EF8D7E4 -:10486000C8D7376A35AE3AEF24F0346C351EE86AA3 -:104870003522371E30AE42EF24F02F6C301EE86A2E -:104880003022371E44EC30F030BE52EF24F037AE09 -:10489000000C2F6C301EE86A30222B6C2C1EE86A4C -:0E48A0002C22000C37BE49EF24F03888FF0CA4 -:0248AE00D9CF60 -:1048B000E6FFDACFE6FFE1CFD9FFE2CFDAFF1D0E48 -:1048C000E12402E3E168E652E16E67DAFA0EDBCF3B -:1048D000EEFFFB0EDBCFEEFFFC0EDBCFEEFFFD0E9F -:1048E000DBCFEEFFD950040FE66E000EDA20E66E45 -:1048F0000BDA86EC2CF0006E060EE15C02E2E16A57 -:10490000E552E16E0050E76E0B0EE7CFDBFFDB50A8 -:10491000800807E10A0EDB6ADE68DE68DE687F0E6B -:1049200013D00B0EDB0405E1DE6ADE6ADE6ADD6AA7 -:10493000A6D10B0EDB50040809E1DB0EDE6E0F0E74 -:10494000DE6EC90EDE6E3F0EDD6E99D1DDD91EDA48 -:104950002DC0DEFF2EC0DEFF2FC0DEFF30C0DDFF2A -:10496000DD52DD52DBD90DDA3F0E20DA23E12E6A6B -:104970002F6A800E306E3F0E316EDECF33F0DECF09 -:1049800034F0DECF35F0DDCF36F0DD52DD521EECF7 -:1049900022F02EC0DFFF010E2FC0DBFF020E30C061 -:1049A000DBFF030E31C0DBFF020EF36E0C0EF3CF04 -:1049B000DBFF02D00C0EDB6AB1D9A30E336E300ED2 -:1049C000346E890E356E3E0EF1D96CE1AF0E2E6E4F -:1049D000670E2F6E3B0E306E3F0E316EB2D92EC079 -:1049E00008F02FC009F030C00AF031C00BF0C9D96F -:1049F0003F0E366E87EC21F02EC004F02FC005F07C -:104A000030C006F031C007F0C8D9EECF0CF0EECFC1 -:104A10000DF0EECF0EF0EFCF0FF00CC033F00DC065 -:104A200034F00EC035F00FC036F088EC21F080D99C -:104A3000D70E146EB30E156EDD0E166E3F0E176E8A -:104A4000ACD9EECF18F0EECF19F0EECF1AF0EFCFD1 -:104A50001BF018C033F019C034F01AC035F01BC079 -:104A600036F014C02EF015C02FF016C030F0316EA5 -:104A700088EC21F02EC010F02FC011F030C012F0E1 -:104A800031C013F02EC033F02FC034F030C035F0F9 -:104A900031C036F035D91EEC22F05FD9DD52DD523F -:104AA0000C0EDB2A31D972D92DC000F02EC001F0D6 -:104AB0002FC002F030C003F064D9390E366E2DC01D -:104AC0002EF07AD9D3EC23F0010A01E1B5D04ED90A -:104AD00038D90D0E2EC0DBFF0E0E2FC0DBFF0F0EE0 -:104AE00030C0DBFF100E31C0DBFF910E2E6E860E44 -:104AF0002F6E500E306EBD0E316E0D0EDBCF33F0CB -:104B00000E0EDBCF34F00F0EDBCF35F0100E4AD98E -:104B10000FD9F60E336E100E346EF10E356EBE0EDA -:104B2000366E88EC21F0110E2EC0DBFF120E2FC066 -:104B3000DBFF130E30C0DBFF140E31C0DBFF0D0EA8 -:104B4000DBCF00F00E0EDBCF01F00F0EDBCF02F05B -:104B5000100EDBCF03F0D30E336ECC0E346EB40EDA -:104B6000356E3F0E366ECCD888EC21F0150E2EC077 -:104B7000DBFF160E2FC0DBFF170E30C0DBFF180E59 -:104B800031C0DBFF0D0EDBCF2EF00E0EDBCF2FF092 -:104B90000F0EDBCF30F0100EDBCF31F0110EDBCF7C -:104BA00033F0120EDBCF34F0130EDBCF35F0140EE2 -:104BB000F9D8150EDBCF33F0160EDBCF34F0170E1D -:104BC000DBCF35F0180EDBCF36F01EEC22F0B0D87C -:104BD000190E2EC0DBFF1A0E2FC0DBFF1B0E30C0DC -:104BE000DBFF1C0E31C0DBFFC1D8190EDBCF33F069 -:104BF0001A0EDBCF34F01B0EDBCF35F01C0ED2D8F3 -:104C000097D8CBD8EECF2EF0EECF2FF0EECF30F0FE -:104C1000EFCF31F000C033F001C034F002C035F006 -:104C200003C036F088EC21F031C0EDFF30C0EDFF5D -:104C30002FC0EDFF2EC0EFFF0C0EDB0409E1920E3A -:104C4000006E0A0E016E060E3FD888EC21F016D0D9 -:104C50000C0EDB50020806E1DB0E006E0F0E016E3B -:104C6000C90E09D00C0EDB5003080BE1920E006E4A -:104C70000A0E016E860E28D887EC21F06ED8DD5220 -:104C8000DD520A0EDB500AE049D87BD8BF0E366EE3 -:104C900037D871EC22F061D8DD52DD52DECF2DF035 -:104CA000DECF2EF0DECF2FF0DDCF30F0DD52DD5243 -:104CB0001D0EE15C02E2E16AE552E16EE552E5CFEC -:104CC000DAFFE7CFD9FF1200026E3F0E036E65D800 -:104CD000EECF04F0EECF05F0EECF06F0EFCF07F009 -:104CE00004C033F005C034F006C035F007C036F01C -:104CF00000C02EF001C02FF002C030F0316E120063 -:104D000000C02EF0DCEF26F048D8EECFE6FFEECF65 -:104D1000E6FFEECFE6FFEFCFE6FF12003ED8EECF84 -:104D200000F0EECF01F0EECF02F0EFCF03F0120073 -:104D30002EC000F02FC001F030C002F031C003F0EF -:104D40001200000EDFCF33F0010EDBCF34F0020E85 -:104D5000DBCF35F0030ED2EF26F02EC0DEFF2FC0E2 -:104D6000DEFF30C0DEFF31C0DDFF1200DECF2EF0EF -:104D7000DECF2FF0DECF30F0DDCF31F0DD52DD526F -:104D80001200336A346A800E356E12008AEC2FF0FE -:104D9000E552E552E552E5521200D9CFE9FFDACFEC -:104DA000EAFF1200DBCF36F071EF22F0366EA8DF9B -:104DB000CAEC23F0010A120001C02FF002C030F04B -:064DC00003C031F01200F7 -:0A4DC600D9CFE6FFDACFE6FFE1CF18 -:104DD000D9FFE2CFDAFF240EE12402E3E168E652D4 -:104DE000E16ED950FA0FE96EFF0EDA20EA6E020E7C -:104DF000EECFDBFF030EEECFDBFF040EEECFDBFFCB -:104E0000050EEECFDBFFE8D9F2D986EC2CF0006E70 -:104E1000060EE15C02E2E16AE552E16E0050E76EE7 -:104E20000D0EE7CFDBFFDB50800815E0A0D9336A19 -:104E3000346A356A366A00C02EF001C02FF002C015 -:104E400030F003C031F0D3EC23F0010A10E1210E61 -:104E50000101466F476B020EDB68030EDB68040E30 -:104E6000DB687F0EF36E050EF3CFDBFF66D10D0E10 -:104E7000DB50050B01E061D10A0EDBCF00F00B0E19 -:104E8000DBCF01F0830E0026FF0E012200C0DEFF03 -:104E900001C0DDFFD950060F65D976D9DF50010B6F -:104EA0000FE0DF06010E01E2DB06D950180F5AD9D8 -:104EB000D890EF36010EEB36020EEB36030EEB36D2 -:104EC000D9CFE9FFDACFEAFF020E346E356AEECFB2 -:104ED0002FF0EDCF30F031EC24F02FC0EEFF30C0DA -:104EE000EDFF140EDB6A150EDB6A160EDB6A170E79 -:104EF000DB6A1C0EDB6A1D0EDB6A1E0EDB6A010E0E -:104F0000F36E1F0EF3CFDBFF010EF36E0E0EF3CF29 -:104F1000DBFF0F0EDB6A0E0EDBCF00F00F0EDBCFD8 -:104F200001F0D890015004E61A0E005C000E015802 -:104F300001E398D0180EDBCF00F0190EDBCF01F0A3 -:104F40001A0EDBCF02F01B0EDBCF03F0010E1F0B9E -:104F500007E0D8900036013602360336E806F9E15C -:104F6000180E00C0DBFF190E01C0DBFF1A0E02C0D5 -:104F7000DBFF1B0E03C0DBFF140EDBCF08F0150EAA -:104F8000DBCF09F0160EDBCF0AF0170EDBCF0BF0EC -:104F9000010E1F0B07E0D890083609360A360B368B -:104FA000E806F9E1D9501C0FDDD80850EE24046E54 -:104FB0000950EE20056E0A50EE20066E0B50EE20D2 -:104FC000076ED950180FCED80450EE5C006E055015 -:104FD000EE58016E0650EE58026E0750EE58036E02 -:104FE000200E00C0DBFF210E01C0DBFF220E02C03D -:104FF000DBFF230E03C0DBFF200EDBCF2EF0210EE4 -:10500000DBCF2FF0220EDBCF30F0230EDBCF31F0E1 -:105010003134000E311809E6D880000E2E54000EEF -:105020002F54000E3054000E315411E2D950200F8D -:1050300099D8AAD8D8D81C0EDB50EE121D0EDB5022 -:10504000EE121E0EDB50EE121F0EDB50EE12D95088 -:105050001C0F88D8AFD80E0EDB2A0F0E01E25BD7EB -:10506000DB2A59D7C9D8100E00C0DBFF110E01C0D2 -:10507000DBFF180EDBCF2FF0190EDBCF30F0120E56 -:105080002FC0DBFF130E30C0DBFFADD893D8D95053 -:10509000100F68D8EE50ED1012E0D950120F62D800 -:1050A000EE50ED1006E1A8D80050011002100310D8 -:1050B00006E099D8EE2A000EEE22EE22EE220C0E29 -:1050C000DB6A91D8060EEECFDBFF070EEECFDBFFDB -:1050D000080EEECFDBFF090EEECFDBFF7E0EF36E88 -:1050E0000A0EF3CFDBFF0B0EDB6AD950020FE66E20 -:1050F000000EDA20E66E70D814EC2DF0E552E55281 -:10510000E552E552DECFE6FFDDCFE6FF70D8EAECF0 -:105110002BF0006E060EE15C02E2E16AE552E16E00 -:105120000050020E2DC0DBFF030E2EC0DBFF040E6D -:105130002FC0DBFF050E30C0DBFF19D800C02DF0FB -:1051400001C02EF002C02FF003C030F0240EE15C4D -:1051500002E2E16AE552E16EE552E5CFDAFFE7CF20 -:10516000D9FF1200E96E000EDA20EA6E1200020E7C -:10517000DBCF00F0030EDBCF01F0040EDBCF02F03B -:10518000050EDBCF03F01200180EEECFDBFF190E79 -:10519000EECFDBFF1A0EEECFDBFF1B0EEECFDBFFF9 -:1051A0001200EECFE6FFEECFE6FFEECFE6FFEFCF49 -:1051B000E6FF1200D890030EEB32020EEB32010E26 -:1051C000EB32EF321200EE500016EE500116EE50A8 -:1051D0000216EE5003161200D950060FE66E000EAE -:1051E000DA20E66E1200D950140FB2EF28F0D95031 -:1051F000020FB8DFD1EF28F0010E006E016A026ADB -:08520000036AF1DFE3EF28F07F -:08520800A5D9E65201016A512B -:10521000040A45E0070A2DE0010A23E0030A0BE037 -:10522000010A01E094D0870EE66E15EC30F0E552ED -:105230000101010E32D091EC30F0000901E088D07C -:1052400072D901AE02D0026803686BC1E9FFEA6A55 -:10525000E9BEEA6845D9B00EE926000E56D9020E1D -:105260001CD09F0EE66E15EC30F0E5520101030EE6 -:1052700014D091EC30F000096BE155D901AE02D0A9 -:10528000026803686BC1E9FFEA6AE9BEEA6828D9E7 -:10529000D80EE926000E39D9040E6A6F59D06B2B4F -:1052A0000A0EE76E6B19E8AE02D0E73402D0E75081 -:1052B0006B5D4BE36B6B6CC1E9FFEA6AE9BEEA68C0 -:1052C00065D9EA22EE6AEE6AEE6AEE6A6CC1E9FF1F -:1052D000EA6AE9BEEA685FD9EA22EE6AEE6AEE6A35 -:1052E000EE6ADF6A31D9E8AE02D0E73402D0E75087 -:1052F000005C1EE2DFCFE9FFEA6AE9BEEA68F0D8A7 -:10530000B00EE926000EFCD8E9BEEA683FD908D9FC -:10531000DFCFE9FFEA6AE9BEEA68E2D8D80EE926FB -:10532000000EEED8E9BEEA6836D9FAD8DF2ADAD715 -:1053300001016C2B0A0EE76E6C19E8AE02D0E7345F -:1053400002D0E7506C5D01E36C6B6A6B01D06A6B55 -:10535000E55205D1FFD8050EE126010EDB6A020EEB -:10536000DB6A030EDB6A040EDB6AFE0EDB5011E122 -:10537000DF6AEAD8E8AE02D0E73402D0E750005C3A -:105380001CE2DFCFE9FFEA6AE9BEEA68FFD8AFD8DE -:10539000F0D7FE0EDB0411E1DF6AD6D8E8AE02D00A -:1053A000E73402D0E750005C08E2DFCFE9FFEA6AA9 -:1053B000E9BEEA68F0D89BD8F0D7010EDBCF18F031 -:1053C000020EDBCF19F0030EDBCF1AF0040EDBCF99 -:1053D0001BF018C02DF019C02EF01AC02FF01BC002 -:1053E00030F06EEC21F02EC014F02FC015F030C05C -:1053F00016F031C017F0A0D82EC010F02FC011F059 -:1054000030C012F031C013F097D82EC00CF02FC06E -:105410000DF030C00EF031C00FF0336A346AA00EC8 -:10542000356E400E366E71EC22F02EC008F02FC0A3 -:1054300009F030C00AF031C00BF0336AC00E346E90 -:105440007F0E356E440E366E1EEC22F02EC004F038 -:105450002FC005F030C006F031C007F0336A346A5F -:10546000200E356E400E366E87EC21F02EC000F017 -:105470002FC001F030C002F031C003F0336A500E8B -:10548000346E430E356E460E366E71EC22F00DEC26 -:1054900023F0050EE15C02E2E16AE552E16E5FD0C5 -:1054A00059D8FE0EDB5002E1808409D0FE0EDB04E9 -:1054B00005E0FE0EDB50020802E1808480824FD0BE -:1054C00049D8FE0EDB5002E1809409D0FE0EDB04C9 -:1054D00005E0FE0EDB50020802E1809480923FD08E -:1054E000D890E936EA36D890E936EA3612003BD849 -:1054F000D950010FE96EDACFEAFF3FD8DF2A120058 -:1055000032D86CC1E9FFEA6A1200EA2200C0EEFF5D -:1055100001C0EEFF02C0EEFF03C0EEFF010112006A -:10552000EA22BDEF2AF081EC30F0F3CF00F0F4CFA7 -:1055300001F0026A036A1200336A346A200E356E83 -:10554000410E366E1EEF22F0DFCF00F00A0EE76E3E -:1055500000181200D9CFE6FFE1CFD9FF1200E552C3 -:10556000E7CFD9FF1200EA22EECF00F0EECF01F034 -:10557000EECF02F0EFCF03F012000050EE26015004 -:10558000EE220250EE220350EE221200A9DF600E3E -:10559000E926000E1200A4DF880EE926000E120094 -:1055A000D9CFE6FFDACFE6FFE1CFD9FFE2CFDAFFCE -:1055B000140EE12402E3E168E652E16ED950040FD3 -:1055C000E66E000EDA20E66ED950F60FDAD802E267 -:1055D000E16AE552E16E0050E76E120EE7CFDBFFA5 -:1055E000D9500B0FE66E000EDA20E66ED950FA0F96 -:1055F000C8D802E2E16AE552E16E0050E76E130E90 -:10560000E7CFDBFFDBCFE6FF120EDB50E552E71002 -:10561000800B0EE1120EDB50040804E1130EDB5088 -:10562000040806E0120EDB040DE1130EDB040AE1B0 -:10563000210E0101466F476BDE68DE68DE687F0E73 -:10564000DD6E87D0FA0EDBCF2EF0FB0EDBCF2FF016 -:10565000FC0EDBCF30F0FD0EDBCF31F0F60EDBCFF2 -:1056600033F0F70EDBCF34F0F80EDBCF35F0F90E68 -:10567000DBCF36F01EEC22F02EC004F02FC005F078 -:1056800030C006F031C007F097D831C0E6FF8AEC91 -:105690002FF0E552E552E552E5522DC000F02EC044 -:1056A00001F02FC002F030C003F02DC0E6FF84D817 -:1056B00057EC24F0E552E552E552E5522DC0DEFFED -:1056C0002EC0DEFF2FC0DEFF30C0DDFFDD52DD5219 -:1056D0000A0EDB5023E0DB0E006E0F0E016E490E4A -:1056E000026E400E036ED9CFE9FFDACFEAFFEECFAC -:1056F00004F0EECF05F0EECF06F0EFCF07F004C0D8 -:1057000033F005C034F006C035F007C036F05BD882 -:10571000316E87EC21F047D8DD52DD52110EDB509F -:105720001AE0D9CFE9FFDACFEAFFEECF00F0EECFF3 -:1057300001F0EECF02F0EFCF03F0336A346A800E4F -:10574000356EBF0E366E3FD803C031F071EC22F0DB -:105750002AD8DD52DD52DECF2DF0DECF2EF0DECFA7 -:105760002FF0DDCF30F0DD52DD52140EE15C02E2AD -:10577000E16AE552E16EE552E5CFDAFFE7CFD9FF06 -:105780001200E96EFF0EDA20EA6EEECFE6FFEECFF2 -:10579000E6FFEECFE6FFEFCFE6FF86EC2CF0006EE3 -:1057A000060EE15C12002EC0DEFF2FC0DEFF30C00F -:1057B000DEFF31C0DDFF12002EC0E6FF2FC0E6FF86 -:1057C00030C0E6FF120000C02EF001C02FF002C072 -:0457D00030F01200A3 -:0C57D40096D8E1CFD9FFE2CFDAFF0C0E2F -:1057E000E12402E3E168E652E16ED950FA0FE96E76 -:1057F000FF0EDA20EA6E080EEECFDBFF090EEECFC9 -:10580000DBFF0A0EEECFDBFF0B0EEECFDBFF79D80E -:10581000D950080FE96E000EDA20EA6EEECFE6FFEF -:10582000EECFE6FFEECFE6FFEFCFE6FF86EC2CF003 -:10583000006E060EE15C02E2E16AE552E16E0050A4 -:10584000E76E070EE7CFDBFFDB50840B3AE1070E74 -:10585000DB041AE1060EDB5006E0006A016A026A08 -:10586000800E036E04D0006A016A026A036A080EA1 -:1058700000C0DBFF090E01C0DBFF0A0E02C0DBFF28 -:105880000B0E03C0DBFF1DD0F80EDBCF00F0F90ECE -:10589000DBCF01F0D950040FE96E000EDA20EA6E7A -:1058A0000050EE260150ED22D950080FE66E000E92 -:1058B000DA20E66E26D814EC2DF0E552E552E552DA -:1058C000E552080EDBCF00F0090EDBCF01F00A0E27 -:1058D000DBCF02F00B0EDBCF03F000C02DF001C0D8 -:1058E0002EF002C02FF003C030F00C0EE15C02E29B -:1058F000E16AE552E16EE552E5CFDAFFE7CFD9FF85 -:0C5900001200D9CFE6FFDACFE6FF12005C -:04590C00D9CFE6FF0A -:10591000DACFE6FFE1CFD9FFE2CFDAFFE652006847 -:1059200001687F0E026E036AD950FA0FE96EFF0E0E -:10593000DA20EA6EEE500016EE500116EE50021616 -:10594000EE5003166AD800C0EEFF01C0EEFF02C0A1 -:10595000EEFF03C0EEFFFD0EDB50800B02E0010EF8 -:1059600001D0000EE66E59D8060EE926000EEA2296 -:10597000E552E750EF6EFC0EDBCF00F0FD0EDBCF03 -:1059800001F0D890003... [truncated message content] |
From: Jérémie D. <Ba...@us...> - 2010-02-24 21:26:59
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "krobot". The branch, master has been updated via ec6a88b803f8747e048f74bd305d67e32be01ac7 (commit) from 0a529d96f005d2befe3919348127e415a4bbd8bc (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit ec6a88b803f8747e048f74bd305d67e32be01ac7 Author: Jérémie Dimino <je...@di...> Date: Wed Feb 24 22:23:07 2010 +0100 Add a command to retreive the driver motors state ----------------------------------------------------------------------- Changes: diff --git a/PC_Mainboard/clients/script.ml b/PC_Mainboard/clients/script.ml index ec111c8..614e73c 100644 --- a/PC_Mainboard/clients/script.ml +++ b/PC_Mainboard/clients/script.ml @@ -202,6 +202,10 @@ let () = and velocity motor = int ~default:400 ("velocity" ^ motor) and acceleration motor = int ~default:800 ("acceleration" ^ motor) in + register "motors-state" f0 + (fun logger krobot -> + lwt state = Krobot.motors_state krobot in + logger [text "motors state: "; text state]); register "stop-motors" (f1 stop_mode) (fun logger krobot mode -> Krobot.stop_motors krobot ~mode); diff --git a/PC_Mainboard/driver/driver.ml b/PC_Mainboard/driver/driver.ml index 1ccb0b4..1bc7bc8 100644 --- a/PC_Mainboard/driver/driver.ml +++ b/PC_Mainboard/driver/driver.ml @@ -257,6 +257,28 @@ struct include OBus.MakeInterface(struct let name = "fr.krobot.Device.Motors" end) + let string_of_direction = function + | `Forward -> "forward" + | `Backward -> "backward" + + OL_method GetState : string = fun dev -> + return (match dev.state with + | Static -> + "static" + | Trajectory traj -> + Printf.sprintf "trajectory: trajectory=%s stopped=%B" + (match traj.trajectory with + | `Forward -> "forward" + | `Backward -> "backward" + | `Left -> "left" + | `Right -> "right" + | `Goto -> "goto") + traj.stopped + | Manual(_, settings_l, settings_r) -> + Printf.sprintf "manual: left={ direction=%s; velocity=%d; acceleration=%d } right={ direction=%s; velocity=%d; acceleration=%d }" + (string_of_direction settings_l.direction) settings_l.velocity settings_l.acceleration + (string_of_direction settings_r.direction) settings_r.velocity settings_r.acceleration) + (* +---------------------------------------------------------------+ | High-level movement | +---------------------------------------------------------------+ *) diff --git a/PC_Mainboard/lib_krobot/krobot.ml b/PC_Mainboard/lib_krobot/krobot.ml index bec637f..60d4cd4 100644 --- a/PC_Mainboard/lib_krobot/krobot.ml +++ b/PC_Mainboard/lib_krobot/krobot.ml @@ -189,6 +189,7 @@ OP_method StopMotors : mode : Types.stop_mode -> unit OP_method SetVelocities : velocities : int * int -> accelerations : int * int -> duration : float -> unit OP_method InhibitForward : float -> unit OP_method InhibitBackward : float -> unit +OP_method GetState as motors_state : string (* +-----------------------------------------------------------------+ | Cards | diff --git a/PC_Mainboard/lib_krobot/krobot.mli b/PC_Mainboard/lib_krobot/krobot.mli index ea2e27a..0dbb1c6 100644 --- a/PC_Mainboard/lib_krobot/krobot.mli +++ b/PC_Mainboard/lib_krobot/krobot.mli @@ -70,6 +70,9 @@ val set_ax12 : t -> Types.ax12_action list -> unit Lwt.t (** {6 Motors} *) +val motors_state : t -> string Lwt.t + (** Return a string describing the current state of motors *) + val turn : t -> angle : int -> velocity : int -> acceleration : int -> Types.move_result Lwt.t val move : t -> distance : int -> velocity : int -> acceleration : int -> Types.move_result Lwt.t val goto : t -> hooks/post-receive -- krobot |