diff --git a/.DS_Store b/.DS_Store index 76437d0..b81937c 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/IIc-USB/Arduino/IIc_keyboard/IIc_keyboard.ino b/IIc-USB/Arduino/IIc_keyboard/IIc_keyboard.ino index 3c33927..5ec411a 100644 --- a/IIc-USB/Arduino/IIc_keyboard/IIc_keyboard.ino +++ b/IIc-USB/Arduino/IIc_keyboard/IIc_keyboard.ino @@ -1,8 +1,8 @@ /* requires keypad library by Mark Stanley, Alexander Brevig from: -http://www.arduino.cc/playground/Code/Keypad + http://www.arduino.cc/playground/Code/Keypad -Uses the PJRC Teensy++ 2.0 and Teensyduino libraries, specifically USB HID and Keyboard(): -http://www.pjrc.com/teensy/teensyduino.html + Uses the PJRC Teensy++ 2.0 and Teensyduino libraries, specifically USB HID and Keyboard(): + http://www.pjrc.com/teensy/teensyduino.html */ #include @@ -15,31 +15,34 @@ int ColumnsPin = 10; -/* -Declares the matrix rows/cols of the Apple IIc keyboard. +/* + Declares the matrix rows/cols of the Apple IIc keyboard. */ +// Prevent compiler warning about casts from unsigned ints to chars +#define C(x) ((char) (x)) + const byte ROWS = 8; // rows const byte COLS = 10; // columns char keys[ROWS][COLS] = { -{ KEY_ESC, KEY_1, KEY_2, KEY_3, KEY_4, KEY_6, KEY_5, KEY_7, KEY_8, KEY_9 }, + { C(KEY_ESC), C(KEY_1), C(KEY_2), C(KEY_3), C(KEY_4), C(KEY_6), C(KEY_5), C(KEY_7), C(KEY_8), C(KEY_9) }, -{ KEY_TAB, KEY_Q, KEY_W, KEY_E, KEY_R, KEY_Y, KEY_T, KEY_U, KEY_I, KEY_O}, + { C(KEY_TAB), C(KEY_Q), C(KEY_W), C(KEY_E), C(KEY_R), C(KEY_Y), C(KEY_T), C(KEY_U), C(KEY_I), C(KEY_O)}, -{ KEY_A, KEY_D, KEY_S, KEY_H, KEY_F, KEY_G, KEY_J, KEY_K, KEY_SEMICOLON, KEY_L}, + { C(KEY_A), C(KEY_D), C(KEY_S), C(KEY_H), C(KEY_F), C(KEY_G), C(KEY_J), C(KEY_K), C(KEY_SEMICOLON), C(KEY_L)}, -{ KEY_Z, KEY_X, KEY_C, KEY_V, KEY_B, KEY_N, KEY_M, KEY_COMMA, KEY_PERIOD, KEY_SLASH}, + { C(KEY_Z), C(KEY_X), C(KEY_C), C(KEY_V), C(KEY_B), C(KEY_N), C(KEY_M), C(KEY_COMMA), C(KEY_PERIOD), C(KEY_SLASH)}, -{ 0, 0, 0, 0, 0, 0, KEY_BACKSLASH, KEY_EQUAL, KEY_0, KEY_MINUS}, + { 0, 0, 0, 0, 0, 0, C(KEY_BACKSLASH), C(KEY_EQUAL), C(KEY_0), C(KEY_MINUS)}, -{ 0, 0, 0, 0, 0, 0, KEY_TILDE, KEY_P, KEY_LEFT_BRACE, KEY_RIGHT_BRACE}, + { 0, 0, 0, 0, 0, 0, C(KEY_TILDE), C(KEY_P), C(KEY_LEFT_BRACE), C(KEY_RIGHT_BRACE)}, -{ 0, 0, 0 , 0, 0, 0, KEY_ENTER, KEY_UP, KEY_SPACE, KEY_QUOTE}, + { 0, 0, 0 , 0, 0, 0, C(KEY_ENTER), C(KEY_UP), C(KEY_SPACE), C(KEY_QUOTE)}, -{ 0, 0, 0, 0, 0, 0, KEY_BACKSPACE, KEY_DOWN, KEY_LEFT, KEY_RIGHT}, + { 0, 0, 0, 0, 0, 0, C(KEY_BACKSPACE), C(KEY_DOWN), C(KEY_LEFT), C(KEY_RIGHT)}, @@ -47,109 +50,116 @@ char keys[ROWS][COLS] = { +char Fkeys[2][10] = { + {C(KEY_1), C(KEY_2), C(KEY_3), C(KEY_4), C(KEY_5), C(KEY_6), C(KEY_7), C(KEY_8), C(KEY_9), C(KEY_0)}, + {C(KEY_F1), C(KEY_F2), C(KEY_F3), C(KEY_F4), C(KEY_F5), C(KEY_F6), C(KEY_F7), C(KEY_F8), C(KEY_F9), C(KEY_F10)} +}; + /* -Keyboard matrix + Keyboard matrix X0 1 2 3 4 5 6 7 8 9 -Y0 ESC 1 2 3 4 6 5 7 8 9 + Y0 ESC 1 2 3 4 6 5 7 8 9 -1 TAB Q W E R Y T U I O + 1 TAB Q W E R Y T U I O -2 A D S H F G J K ; L + 2 A D S H F G J K ; L -3 Z X C V B N M < > ? + 3 Z X C V B N M < > ? -4 \ + 0 - + 4 \ + 0 - -5 ~ P [ ] + 5 ~ P [ ] -6 RET UP SPC " + 6 RET UP SPC " -7 DEL DN LT RT + 7 DEL DN LT RT -Matrix + Matrix J9 Teensy -X0 31 26 -1 24 4 -2 22 5 -3 8 14 -4 14 17 -5 6 13 -6 10 15 -7 1 3 -8 4 12 -9 2 11 + X0 31 26 + 1 24 4 + 2 22 5 + 3 8 14 + 4 14 17 + 5 6 13 + 6 10 15 + 7 1 3 + 8 4 12 + 9 2 11 -Y0 12 16 -1 33 25 -2 18 7 -3 20 38 -4 3 2 -5 5 1 -6 7 0 -7 9 27 + Y0 12 16 + 1 33 25 + 2 18 7 + 3 20 38 + 4 3 2 + 5 5 1 + 6 7 0 + 7 9 27 -NC 13 + NC 13 17 30 -GND 21 + GND 21 -SFT 34 24 -CTL 32 23 -CMD 16 8 -CMD 26 20 -CAPS 28 21 + SFT 34 24 + CTL 32 23 + CMD 16 8 + CMD 26 20 + CAPS 28 21 -J9 pinout -1 X7 -2 X9 -3 Y4 -4 X8 -5 Y5 -6 X5 -7 Y6 -8 X3 -9 Y7 -10 X6 -11 DISK LED (5v) -12 Y0 -13 NC -14 X4 -15 KEYBOARD SW -16 CLOSED APPLE -17 NC -18 Y2 -19 40/80 COL SWITCH -20 Y3 -21 GROUND ??? -22 X2 -23 GROUND ??? -24 X1 -25 POWER LED (5v) -26 OPEN APPLE -27 LED GROUND ??? -28 CAPS LOCK -29 RESET -30 NC -31 X0 -32 CONTROL -33 Y1 -34 SHIFT + J9 pinout + 1 X7 + 2 X9 + 3 Y4 + 4 X8 + 5 Y5 + 6 X5 + 7 Y6 + 8 X3 + 9 Y7 + 10 X6 + 11 DISK LED (5v) + 12 Y0 + 13 NC + 14 X4 + 15 KEYBOARD SW + 16 CLOSED APPLE + 17 NC + 18 Y2 + 19 40/80 COL SWITCH + 20 Y3 + 21 GROUND ??? + 22 X2 + 23 GROUND ??? + 24 X1 + 25 POWER LED (5v) + 26 OPEN APPLE + 27 LED GROUND ??? + 28 CAPS LOCK + 29 RESET + 30 NC + 31 X0 + 32 CONTROL + 33 Y1 + 34 SHIFT */ byte rowPins[ROWS] = { // Y0 - Y9 - 16,25,7,38,2,1,0,27}; //connect to the row pinouts of the keypad + 16, 25, 7, 38, 2, 1, 0, 27 +}; //connect to the row pinouts of the keypad byte colPins[COLS] = { // X0 - X7 - 26,4,5,14,17,13,15,3,12,11 }; //connect to the column pinouts of the keypad + 26, 4, 5, 14, 17, 13, 15, 3, 12, 11 +}; //connect to the column pinouts of the keypad Keypad KPD = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); @@ -163,11 +173,11 @@ const int CAPSPin = 21; // these pins are special in that they are dis/connected to ground, instead of to a row/col -/*** +/*** -open/closed apple are grounded through resistors on the //c. need to detect voltage drop as analogread, not digital. + open/closed apple are grounded through resistors on the //c. need to detect voltage drop as analogread, not digital. -must be on analog pin. + must be on analog pin. ***/ @@ -180,16 +190,16 @@ char modifierKeys[4]; - #define KEY_CAPS_UNLOCK 0 +#define KEY_CAPS_UNLOCK 0 - boolean resetCapsLock = false; // Allows one caps unlock signal. - unsigned long dTime = 0; - char CAPSState; // Initialize this to a reasonable value. +boolean resetCapsLock = false; // Allows one caps unlock signal. +unsigned long dTime = 0; +boolean CAPSLock = false; // Initialize this to a reasonable value. - boolean FKEYS = false; // used to set numbers to F-Key equivalent. currently tied to caps lock +boolean FKEYS = false; // used to set numbers to F-Key equivalent. currently tied to caps lock -void setup(){ +void setup() { pinMode(SHIFTPin, INPUT); pinMode(CTRLPin, INPUT); @@ -198,164 +208,179 @@ void setup(){ digitalWrite(APPLEPin1, HIGH); digitalWrite(APPLEPin2, HIGH); - + digitalWrite(SHIFTPin, HIGH); digitalWrite(CTRLPin, HIGH); - + pinMode(CAPSPin, INPUT); digitalWrite(CAPSPin, HIGH); - + // Turn on the DISK READ LED (rev4 board) - // digitalWrite(LEDPin, HIGH); + // digitalWrite(LEDPin, HIGH); + // This gives time for the keyboard to hook up to the PC. + // Otherwise the caps lock state may be incorrect. + delay(1000); } void loop() { -//probably should be on an interrupt, to catch high->low transition + //probably should be on an interrupt, to catch high->low transition - // Only do something if the pin is different from previous state. - if ( (CAPSState!=digitalRead(CAPSPin)) && !resetCapsLock) { - CAPSState = digitalRead(CAPSPin); // Remember new CAPSState. - Keyboard.set_key6(KEY_CAPS_LOCK); // Send KEY_CAPS_LOCK. - dTime = millis(); // Reset delay timer. - resetCapsLock = true; - } - if ( resetCapsLock && (millis()-dTime) > 10) { - Keyboard.set_key6(KEY_CAPS_UNLOCK); - resetCapsLock = false; - } + // Only do something if the pin is different from previous state. + boolean newCaps = digitalRead(CAPSPin) ? false : true; -FKEYS = !CAPSState; + if ( (CAPSLock != newCaps) && !resetCapsLock) + { + CAPSLock = newCaps; // Remember new CAPSLock. + Keyboard.set_key6((uint8_t) KEY_CAPS_LOCK); // Send KEY_CAPS_LOCK. + dTime = millis(); // Reset delay timer. + resetCapsLock = true; + // Serial.print("Caps = "); + // Serial.println(CAPSLock); -/*char CAPSState = digitalRead(CAPSPin); - if (CAPSState == LOW) { - Keyboard.set_key6(KEY_CAPS_LOCK); - } else { - Keyboard.set_key6(0); - } + // Turn on the LED for caps lock. +// digitalWrite(LED, CAPSLock ? HIGH : LOW); + + } + + if ( resetCapsLock && (millis() - dTime) > 10) + { + Keyboard.set_key6(KEY_CAPS_UNLOCK); + resetCapsLock = false; + } + + // If caps lock is set, then turn number keys into function keys. + FKEYS = CAPSLock; + + /*char CAPSState = digitalRead(CAPSPin); + if (CAPSState == LOW) { + Keyboard.set_key6(KEY_CAPS_LOCK); + } else { + Keyboard.set_key6(0); + } */ - - char SHIFTState = digitalRead(SHIFTPin); - if (SHIFTState == LOW) { - modifierKeys[0] = MODIFIERKEY_SHIFT; - digitalWrite(SHIFTPin, HIGH); - } else { - digitalWrite(SHIFTPin, HIGH); - modifierKeys[0] = 0; + char SHIFTState = digitalRead(SHIFTPin); + + if (SHIFTState == LOW) { + modifierKeys[0] = MODIFIERKEY_SHIFT; + digitalWrite(SHIFTPin, HIGH); + } else { + digitalWrite(SHIFTPin, HIGH); + modifierKeys[0] = 0; + } + + char CTRLState = digitalRead(CTRLPin); + + if (CTRLState == LOW) { + modifierKeys[1] = MODIFIERKEY_CTRL; + digitalWrite(CTRLPin, HIGH); + } else { + modifierKeys[1] = 0; + digitalWrite(CTRLPin, HIGH); + } + + + + char OAPPLEState = analogRead(APPLEPin2); + char CAPPLEState = analogRead(APPLEPin1); + + + // *** NOW USING CLOSED APPLE AS ALT/OPTION + if (OAPPLEState < 20) { + modifierKeys[2] = MODIFIERKEY_GUI; + digitalWrite(APPLEPin1, HIGH); + } else { + modifierKeys[2] = 0; + digitalWrite(APPLEPin1, HIGH); + } + + + + if (CAPPLEState < 20) { + modifierKeys[3] = MODIFIERKEY_ALT; + digitalWrite(APPLEPin2, HIGH); + } else { + modifierKeys[3] = 0; + digitalWrite(APPLEPin2, HIGH); + } + + + + + + // to use the TILDE key as ALT/OPTION + /* modifierKeys[3] = 0; + if( KPD.isPressed(KEY_TILDE) ) { + modifierKeys[3] = MODIFIERKEY_ALT; + } + */ + + // *** NOW USING CLOSED APPLE AS ALT/OPTION + + Keyboard.set_modifier( modifierKeys[0] | modifierKeys[1] | modifierKeys[2] | modifierKeys[3] ); + + KPD.getKeys(); // Scan for all pressed keys. 6 Max, + 4 modifiers. Should be plenty, but can be extended to 10+ + + // Set keyboard keys to default values. + Keyboard.set_key1(0); + Keyboard.set_key2(0); + Keyboard.set_key3(0); + Keyboard.set_key4(0); + Keyboard.set_key5(0); + //Keyboard.set_key6(0); + + /* based on suggestion from Craig Brooks + uses CAPS LOCK to turn number keys into F-Key equivalent. + */ + + // Update keyboard keys to active values. + if ( KPD.key[0].kchar && ( KPD.key[0].kstate == PRESSED || KPD.key[0].kstate == HOLD )) { + + //Serial.println(FKEYS); + + + if (FKEYS) { + // number keys 1 through 0 for f1 - f10 + if ((KPD.key[0].kchar >= 0x1E) && (KPD.key[0].kchar <= 0x27)) { + KPD.key[0].kchar += 0x1C; + + // Serial.println( KPD.key[0].kchar, HEX ); + + // - and = for f11 and f12 + } else if ( KPD.key[0].kchar == 0x2D || KPD.key[0].kchar == 0x2E ) { + KPD.key[0].kchar += 0x17; + } + + } - char CTRLState = digitalRead(CTRLPin); - - if (CTRLState == LOW) { - modifierKeys[1] = MODIFIERKEY_CTRL; - digitalWrite(CTRLPin, HIGH); - } else { - modifierKeys[1] = 0; - digitalWrite(CTRLPin, HIGH); - } + Keyboard.set_key1( KPD.key[0].kchar ); + } - char OAPPLEState = analogRead(APPLEPin2); - char CAPPLEState = analogRead(APPLEPin1); + if ( KPD.key[1].kchar && ( KPD.key[1].kstate == PRESSED || KPD.key[1].kstate == HOLD )) + Keyboard.set_key2( KPD.key[1].kchar ); + if ( KPD.key[2].kchar && ( KPD.key[2].kstate == PRESSED || KPD.key[2].kstate == HOLD )) + Keyboard.set_key3( KPD.key[2].kchar ); -// *** NOW USING CLOSED APPLE AS ALT/OPTION - if (OAPPLEState < 20) { - modifierKeys[2] = MODIFIERKEY_GUI; - digitalWrite(APPLEPin1, HIGH); - } else { - modifierKeys[2] = 0; - digitalWrite(APPLEPin1, HIGH); - } + if ( KPD.key[3].kchar && ( KPD.key[3].kstate == PRESSED || KPD.key[3].kstate == HOLD )) + Keyboard.set_key4( KPD.key[3].kchar ); + if ( KPD.key[4].kchar && ( KPD.key[4].kstate == PRESSED || KPD.key[4].kstate == HOLD )) + Keyboard.set_key5( KPD.key[4].kchar ); + //if( KPD.key[5].kchar && ( KPD.key[5].kstate==PRESSED || KPD.key[5].kstate==HOLD )) + //Keyboard.set_key6( KPD.key[5].kchar ); - if (CAPPLEState < 20) { - modifierKeys[3] = MODIFIERKEY_ALT; - digitalWrite(APPLEPin2, HIGH); - } else { - modifierKeys[3] = 0; - digitalWrite(APPLEPin2, HIGH); - } - - - - - -// to use the TILDE key as ALT/OPTION -/* modifierKeys[3] = 0; - if( KPD.isPressed(KEY_TILDE) ) { - modifierKeys[3] = MODIFIERKEY_ALT; - } -*/ - -// *** NOW USING CLOSED APPLE AS ALT/OPTION - -   Keyboard.set_modifier( modifierKeys[0] | modifierKeys[1] | modifierKeys[2] | modifierKeys[3] ); - - KPD.getKeys(); // Scan for all pressed keys. 6 Max, + 4 modifiers. Should be plenty, but can be extended to 10+ - - // Set keyboard keys to default values. - Keyboard.set_key1(0); - Keyboard.set_key2(0); - Keyboard.set_key3(0); - Keyboard.set_key4(0); - Keyboard.set_key5(0); - //Keyboard.set_key6(0); - - /* based on suggestion from Craig Brooks - uses CAPS LOCK to turn number keys into F-Key equivalent. - */ - - // Update keyboard keys to active values. - if( KPD.key[0].kchar && ( KPD.key[0].kstate==PRESSED || KPD.key[0].kstate==HOLD )) { - - //Serial.println(FKEYS); - - - if (FKEYS) { - // number keys 1 through 0 for f1 - f10 - if((KPD.key[0].kchar >= 0x1E) && (KPD.key[0].kchar <= 0x27)){ - KPD.key[0].kchar += 0x1C; - - // Serial.println( KPD.key[0].kchar, HEX ); - - // - and = for f11 and f12 - } else if( KPD.key[0].kchar == 0x2D || KPD.key[0].kchar == 0x2E ) { - KPD.key[0].kchar += 0x17; - } - - - } - - Keyboard.set_key1( KPD.key[0].kchar ); - - - } - - if( KPD.key[1].kchar && ( KPD.key[1].kstate==PRESSED || KPD.key[1].kstate==HOLD )) - Keyboard.set_key2( KPD.key[1].kchar ); - - if( KPD.key[2].kchar && ( KPD.key[2].kstate==PRESSED || KPD.key[2].kstate==HOLD )) - Keyboard.set_key3( KPD.key[2].kchar ); - - if( KPD.key[3].kchar && ( KPD.key[3].kstate==PRESSED || KPD.key[3].kstate==HOLD )) - Keyboard.set_key4( KPD.key[3].kchar ); - - if( KPD.key[4].kchar && ( KPD.key[4].kstate==PRESSED || KPD.key[4].kstate==HOLD )) - Keyboard.set_key5( KPD.key[4].kchar ); - - //if( KPD.key[5].kchar && ( KPD.key[5].kstate==PRESSED || KPD.key[5].kstate==HOLD )) - //Keyboard.set_key6( KPD.key[5].kchar ); - - Keyboard.send_now(); - Keyboard.set_modifier(0); + Keyboard.send_now(); + Keyboard.set_modifier(0); } diff --git a/Joystick Interface/PCB/USB_Joystick-rev6.fzz b/Joystick Interface/PCB/USB_Joystick-rev6.fzz new file mode 100644 index 0000000..ddae1f3 Binary files /dev/null and b/Joystick Interface/PCB/USB_Joystick-rev6.fzz differ diff --git a/Keyboard Interface IIe/Arduino/USB_IIe_Kbd/USB_IIe_Kbd.ino b/Keyboard Interface IIe/Arduino/USB_IIe_Kbd/USB_IIe_Kbd.ino index 974b666..9d53663 100644 --- a/Keyboard Interface IIe/Arduino/USB_IIe_Kbd/USB_IIe_Kbd.ino +++ b/Keyboard Interface IIe/Arduino/USB_IIe_Kbd/USB_IIe_Kbd.ino @@ -1,4 +1,35 @@ -#include +#include +#include + +// Satisfy the IDE, which needs to see the include statment in the ino too. +#ifdef dobogusinclude +#include +#include <../../../../hardware/pic32/libraries/SPI/SPI.h> // Hack to use the SPI library +#include // Hack to use the SPI library +#endif + + + +USB Usb; +//USBHub Hub(&Usb); +//HIDBoot Keyboard(&Usb); +HIDBoot HidKeyboard(&Usb); + +uint32_t next_time; + +class KbdRptParser : public KeyboardReportParser +{ + void PrintKey(uint8_t mod, uint8_t key); + + void PrintLine(int macro); + + protected: + virtual void OnKeyDown (uint8_t mod, uint8_t key); + virtual void OnKeyUp (uint8_t mod, uint8_t key); + virtual void OnKeyPressed(uint8_t key); +}; + +KbdRptParser Prs; /* @@ -42,32 +73,32 @@ Y9 9( O L /? -_ ]} '" RIGHT -IIe Col/Row -1 Y0 -2 Y1 -3 +5V -4 Y2 -5 SW1/SAPL* -6 Y3 -7 SW0/OAPL* -8 Y4 -9 CAPLOCK* -10 Y5 -11 CNTL* -12 Y8 -13 GND -14 X0 -15 RESET* -16 X2 -17 X7 -18 X1 -19 X5 -20 X3 -21 X4 -22 Y9 -23 Y6 -24 SHFT* -25 Y7 +IIe Col/Row +1 Y0 +2 Y1 +3 +5V +4 Y2 +5 SW1/SAPL* +6 Y3 +7 SW0/OAPL* +8 Y4 +9 CAPLOCK* +10 Y5 +11 CNTL* +12 Y8 +13 GND +14 X0 +15 RESET* +16 X2 +17 X7 +18 X1 +19 X5 +20 X3 +21 X4 +22 Y9 +23 Y6 +24 SHFT* +25 Y7 26 X6 * RESET is a switch between CTL (11) and pin 15 @@ -75,7 +106,7 @@ IIe Col/Row CONTROL switched to ground CAPLOCK switched to ground pins 5 and 7 are grounded via 470Ω resistors - Apple keys connect pin 3 (5v) to pins 5 & 7 + Apple keys connect pin 3 (5v) to pins 5 & 7 @@ -124,65 +155,65 @@ CTL = AVR A1 / 15 */ - - int ENABLE_PIN = 0; - int S0_PIN = 3; - int S1_PIN = 4; - int S2_PIN = 2; - int S3_PIN = 1; + +int ENABLE_PIN = 0; +int S0_PIN = 3; +int S1_PIN = 4; +int S2_PIN = 2; +int S3_PIN = 1; // 4051 pins - int S0_4051 = 5; - int S1_4051 = 6; - int S2_4051 = 7; +int S0_4051 = 5; +int S1_4051 = 6; +int S2_4051 = 7; - int SHIFT_PIN = 14; - int CONTROL_PIN = 15; - int OPEN_APPLE_PIN = 8; - int CLOSED_APPLE_PIN = 16; - int CAPS_LOCK_PIN = 17; - int RESET_PIN = 19; +int SHIFT_PIN = 14; +int CONTROL_PIN = 15; +int OPEN_APPLE_PIN = 8; +int CLOSED_APPLE_PIN = 16; +int CAPS_LOCK_PIN = 17; +int RESET_PIN = 19; - int r0; - int r1; - int r2; +int r0; +int r1; +int r2; - int c0; - int c1; - int c2; - int c3; - - int count= 0; - - int CAPS_LOCK_ACTIVE = 0; +int c0; +int c1; +int c2; +int c3; + +int count = 0; + +int CAPS_LOCK_ACTIVE = 0; const int COLUMNS = 8; const int ROWS = 10; -// QWERTY +// QWERTY int KEYS_ARRAY[ROWS][COLUMNS] = { -{ 0x29, 0x2B, 0x04, 0x1D, 0x54, 0x27, 0x55, 0x29 }, - -{ 0x1E, 0x14, 0x07, 0x1B, 0x51, 0x52, 0x50, 0x4F }, - -{ 0x1F, 0x1a, 0x16, 0x06, 0x62, 0x5C, 0x60, 0x26 }, - -{ 0x20, 0x08, 0x0B, 0x19, 0x59, 0x5D, 0x61, 0x56 }, - -{ 0x21, 0x15, 0x09, 0x05, 0x5A, 0x5E, 0x63, 0x58 }, - -{ 0x23, 0x1C, 0x0A, 0x11, 0x5B, 0x5F, 0x57, 0x85 }, + { 0x29, 0x2B, 0x04, 0x1D, 0x54, 0x27, 0x55, 0x29 }, -{ 0x22, 0x17, 0x0D, 0x10, 0x31, 0x35, 0x28, 0x2A }, - -{ 0x24, 0x18, 0x0E, 0x36, 0x2E, 0x13, 0x52, 0x51 }, + { 0x1E, 0x14, 0x07, 0x1B, 0x51, 0x52, 0x50, 0x4F }, -{ 0x25, 0x0C, 0x33, 0x37, 0x27, 0x2F, 0x2C, 0x50 }, + { 0x1F, 0x1a, 0x16, 0x06, 0x62, 0x5C, 0x60, 0x26 }, -{ 0x26, 0x12, 0x0F, 0x38, 0x2D, 0x30, 0x34, 0x4F } + { 0x20, 0x08, 0x0B, 0x19, 0x59, 0x5D, 0x61, 0x56 }, + + { 0x21, 0x15, 0x09, 0x05, 0x5A, 0x5E, 0x63, 0x58 }, + + { 0x23, 0x1C, 0x0A, 0x11, 0x5B, 0x5F, 0x57, 0x85 }, + + { 0x22, 0x17, 0x0D, 0x10, 0x31, 0x35, 0x28, 0x2A }, + + { 0x24, 0x18, 0x0E, 0x36, 0x2E, 0x13, 0x52, 0x51 }, + + { 0x25, 0x0C, 0x33, 0x37, 0x27, 0x2F, 0x2C, 0x50 }, + + { 0x26, 0x12, 0x0F, 0x38, 0x2D, 0x30, 0x34, 0x4F } }; @@ -190,19 +221,19 @@ int KEYS_ARRAY[ROWS][COLUMNS] = { /*int KEYS_ARRAY[ROWS][COLUMNS] = { { 0x29, 0x2B, 0x04, 0x1D, 0x54, 0x27, 0x55, 0x29 }, - + { 0x1E, 0x14, 0x07, 0x1B, 0x51, 0x52, 0x50, 0x4F }, - + { 0x1F, 0x1a, 0x16, 0x06, 0x62, 0x5C, 0x60, 0x26 }, - + { 0x20, 0x08, 0x0B, 0x19, 0x59, 0x5D, 0x61, 0x56 }, - + { 0x21, 0x15, 0x09, 0x05, 0x5A, 0x5E, 0x63, 0x58 }, - + { 0x23, 0x1C, 0x0A, 0x11, 0x5B, 0x5F, 0x57, 0x85 }, { 0x22, 0x17, 0x0D, 0x10, 0x31, 0x35, 0x28, 0x2A }, - + { 0x24, 0x18, 0x0E, 0x36, 0x2E, 0x13, 0x52, 0x51 }, { 0x25, 0x0C, 0x33, 0x37, 0x27, 0x2F, 0x2C, 0x50 }, @@ -396,168 +427,143 @@ int KEYS_ARRAY[ROWS][COLUMNS] = { //USB byte, shift key status const int KEYMAP_SIZE (128); int KEYMAP[KEYMAP_SIZE][2] = { -{0, 0}, /* NUL */ -{0, 0}, /* SOH */ -{0, 0}, /* STX */ -{0, 0}, /* ETX */ -{0, 0}, /* EOT */ -{0, 0}, /* ENQ */ -{0, 0}, /* ACK */ -{0, 0}, /* BEL */ -{0x2a, 0}, /* BS */ /* Keyboard Delete (Backspace) */ -{0x2b, 0}, /* TAB */ /* Keyboard Tab */ -{0x28, 0}, /* LF */ /* Keyboard Return (Enter) */ -{0, 0}, /* VT */ -{0, 0}, /* FF */ -{0, 0}, /* CR */ -{0, 0}, /* SO */ -{0, 0}, /* SI */ -{0, 0}, /* DEL */ -{0, 0}, /* DC1 */ -{0, 0}, /* DC2 */ -{0, 0}, /* DC3 */ -{0, 0}, /* DC4 */ -{0, 0}, /* NAK */ -{0, 0}, /* SYN */ -{0, 0}, /* ETB */ -{0, 0}, /* CAN */ -{0, 0}, /* EM */ -{0, 0}, /* SUB */ -{0, 0}, /* ESC */ -{0, 0}, /* FS */ -{0, 0}, /* GS */ -{0, 0}, /* RS */ -{0, 0}, /* US */ -{0x2c, 0}, /* */ -{0x1e, 1}, /* ! */ -{0x34, 1}, /* " */ -{0x20, 1}, /* # */ -{0x21, 1}, /* $ */ -{0x22, 1}, /* % */ -{0x24, 1}, /* & */ -{0x34, 0}, /* ' */ -{0x26, 1}, /* ( */ -{0x27, 1}, /* ) */ -{0x25, 1}, /* * */ -{0x2e, 1}, /* + */ -{0x36, 0}, /* , */ -{0x2d, 0}, /* - */ -{0x37, 0}, /* . */ -{0x38, 0}, /* / */ -{0x27, 0}, /* 0 */ -{0x1e, 0}, /* 1 */ -{0x1f, 0}, /* 2 */ -{0x20, 0}, /* 3 */ -{0x21, 0}, /* 4 */ -{0x22, 0}, /* 5 */ -{0x23, 0}, /* 6 */ -{0x24, 0}, /* 7 */ -{0x25, 0}, /* 8 */ -{0x26, 0}, /* 9 */ -{0x33, 1}, /* : */ -{0x33, 0}, /* ; */ -{0x36, 1}, /* < */ -{0x2e, 0}, /* = */ -{0x37, 1}, /* > */ -{0x38, 1}, /* ? */ -{0x1f, 1}, /* @ */ -{0x04, 1}, /* A */ -{0x05, 1}, /* B */ -{0x06, 1}, /* C */ -{0x07, 1}, /* D */ -{0x08, 1}, /* E */ -{0x09, 1}, /* F */ -{0x0a, 1}, /* G */ -{0x0b, 1}, /* H */ -{0x0c, 1}, /* I */ -{0x0d, 1}, /* J */ -{0x0e, 1}, /* K */ -{0x0f, 1}, /* L */ -{0x10, 1}, /* M */ -{0x11, 1}, /* N */ -{0x12, 1}, /* O */ -{0x13, 1}, /* P */ -{0x14, 1}, /* Q */ -{0x15, 1}, /* R */ -{0x16, 1}, /* S */ -{0x17, 1}, /* T */ -{0x18, 1}, /* U */ -{0x19, 1}, /* V */ -{0x1a, 1}, /* W */ -{0x1b, 1}, /* X */ -{0x1c, 1}, /* Y */ -{0x1d, 1}, /* Z */ -{0x2f, 0}, /* [ */ -{0x31, 0}, /* \ */ -{0x30, 0}, /* ] */ -{0x23, 1}, /* ^ */ -{0x2d, 1}, /* _ */ -{0x35, 0}, /* ` */ -{0x04, 0}, /* a */ -{0x05, 0}, /* b */ -{0x06, 0}, /* c */ -{0x07, 0}, /* d */ -{0x08, 0}, /* e */ -{0x09, 0}, /* f */ -{0x0a, 0}, /* g */ -{0x0b, 0}, /* h */ -{0x0c, 0}, /* i */ -{0x0d, 0}, /* j */ -{0x0e, 0}, /* k */ -{0x0f, 0}, /* l */ -{0x10, 0}, /* m */ -{0x11, 0}, /* n */ -{0x12, 0}, /* o */ -{0x13, 0}, /* p */ -{0x14, 0}, /* q */ -{0x15, 0}, /* r */ -{0x16, 0}, /* s */ -{0x17, 0}, /* t */ -{0x18, 0}, /* u */ -{0x19, 0}, /* v */ -{0x1a, 0}, /* w */ -{0x1b, 0}, /* x */ -{0x1c, 0}, /* y */ -{0x1d, 0}, /* z */ -{0x2f, 1}, /* { */ -{0x31, 1}, /* | */ -{0x30, 1}, /* } */ -{0x35, 1}, /* ~ */ -{0,0} /* DEL */ + {0, 0}, /* NUL */ + {0, 0}, /* SOH */ + {0, 0}, /* STX */ + {0, 0}, /* ETX */ + {0, 0}, /* EOT */ + {0, 0}, /* ENQ */ + {0, 0}, /* ACK */ + {0, 0}, /* BEL */ + {0x2a, 0}, /* BS */ /* Keyboard Delete (Backspace) */ + {0x2b, 0}, /* TAB */ /* Keyboard Tab */ + {0x28, 0}, /* LF */ /* Keyboard Return (Enter) */ + {0, 0}, /* VT */ + {0, 0}, /* FF */ + {0, 0}, /* CR */ + {0, 0}, /* SO */ + {0, 0}, /* SI */ + {0, 0}, /* DEL */ + {0, 0}, /* DC1 */ + {0, 0}, /* DC2 */ + {0, 0}, /* DC3 */ + {0, 0}, /* DC4 */ + {0, 0}, /* NAK */ + {0, 0}, /* SYN */ + {0, 0}, /* ETB */ + {0, 0}, /* CAN */ + {0, 0}, /* EM */ + {0, 0}, /* SUB */ + {0, 0}, /* ESC */ + {0, 0}, /* FS */ + {0, 0}, /* GS */ + {0, 0}, /* RS */ + {0, 0}, /* US */ + {0x2c, 0}, /* */ + {0x1e, 1}, /* ! */ + {0x34, 1}, /* " */ + {0x20, 1}, /* # */ + {0x21, 1}, /* $ */ + {0x22, 1}, /* % */ + {0x24, 1}, /* & */ + {0x34, 0}, /* ' */ + {0x26, 1}, /* ( */ + {0x27, 1}, /* ) */ + {0x25, 1}, /* * */ + {0x2e, 1}, /* + */ + {0x36, 0}, /* , */ + {0x2d, 0}, /* - */ + {0x37, 0}, /* . */ + {0x38, 0}, /* / */ + {0x27, 0}, /* 0 */ + {0x1e, 0}, /* 1 */ + {0x1f, 0}, /* 2 */ + {0x20, 0}, /* 3 */ + {0x21, 0}, /* 4 */ + {0x22, 0}, /* 5 */ + {0x23, 0}, /* 6 */ + {0x24, 0}, /* 7 */ + {0x25, 0}, /* 8 */ + {0x26, 0}, /* 9 */ + {0x33, 1}, /* : */ + {0x33, 0}, /* ; */ + {0x36, 1}, /* < */ + {0x2e, 0}, /* = */ + {0x37, 1}, /* > */ + {0x38, 1}, /* ? */ + {0x1f, 1}, /* @ */ + {0x04, 1}, /* A */ + {0x05, 1}, /* B */ + {0x06, 1}, /* C */ + {0x07, 1}, /* D */ + {0x08, 1}, /* E */ + {0x09, 1}, /* F */ + {0x0a, 1}, /* G */ + {0x0b, 1}, /* H */ + {0x0c, 1}, /* I */ + {0x0d, 1}, /* J */ + {0x0e, 1}, /* K */ + {0x0f, 1}, /* L */ + {0x10, 1}, /* M */ + {0x11, 1}, /* N */ + {0x12, 1}, /* O */ + {0x13, 1}, /* P */ + {0x14, 1}, /* Q */ + {0x15, 1}, /* R */ + {0x16, 1}, /* S */ + {0x17, 1}, /* T */ + {0x18, 1}, /* U */ + {0x19, 1}, /* V */ + {0x1a, 1}, /* W */ + {0x1b, 1}, /* X */ + {0x1c, 1}, /* Y */ + {0x1d, 1}, /* Z */ + {0x2f, 0}, /* [ */ + {0x31, 0}, /* \ */ + {0x30, 0}, /* ] */ + {0x23, 1}, /* ^ */ + {0x2d, 1}, /* _ */ + {0x35, 0}, /* ` */ + {0x04, 0}, /* a */ + {0x05, 0}, /* b */ + {0x06, 0}, /* c */ + {0x07, 0}, /* d */ + {0x08, 0}, /* e */ + {0x09, 0}, /* f */ + {0x0a, 0}, /* g */ + {0x0b, 0}, /* h */ + {0x0c, 0}, /* i */ + {0x0d, 0}, /* j */ + {0x0e, 0}, /* k */ + {0x0f, 0}, /* l */ + {0x10, 0}, /* m */ + {0x11, 0}, /* n */ + {0x12, 0}, /* o */ + {0x13, 0}, /* p */ + {0x14, 0}, /* q */ + {0x15, 0}, /* r */ + {0x16, 0}, /* s */ + {0x17, 0}, /* t */ + {0x18, 0}, /* u */ + {0x19, 0}, /* v */ + {0x1a, 0}, /* w */ + {0x1b, 0}, /* x */ + {0x1c, 0}, /* y */ + {0x1d, 0}, /* z */ + {0x2f, 1}, /* { */ + {0x31, 1}, /* | */ + {0x30, 1}, /* } */ + {0x35, 1}, /* ~ */ + {0, 0} /* DEL */ }; -//#include -//#include -//#include -//#include -#include -#include -#include -//#include -#include - -//#include -//#include -//#include -//#include - -class KbdRptParser : public KeyboardReportParser -{ - void PrintKey(uint8_t mod, uint8_t key); - - void PrintLine(int macro); - -protected: - virtual void OnKeyDown (uint8_t mod, uint8_t key); - virtual void OnKeyUp (uint8_t mod, uint8_t key); - virtual void OnKeyPressed(uint8_t key); -}; -char* macrostrings[5]= { - "CALL -151\n", + +char* macrostrings[5] = { + "CALL -151\n", "8:20 35 FD 20 ED FD 4C 8 0 8G WeaknessPoint Minus by Martin Haye\n", "2000:20 35 FD C9 95 D0 2 B1\n :28 C9 94 D0 9 98 69 3\n :29 FC 85 24 D0 EA C9 8E\n :D0 8 A5 32 49 C0 85 32\n :D0 DE 20 ED FD 18 90 D8 \n", "5 rem Joystick Calibration \n10 print pdl(0) \" \" pdl(1) \" \" peek(-16287) \" \" peek(-16286) : goto 10\n run\n", @@ -566,39 +572,39 @@ char* macrostrings[5]= { // graphics test by Dagen Brock -void KbdRptParser::PrintLine(int macro) +void KbdRptParser::PrintLine(int macro) { - + int CharDelay = 30; - + //10 print pdl(0) " " pdl(1) " " peek(-16287) " " peek(-16286) : goto 10 - + String MacroString = macrostrings[macro]; char SHIFTDOWN = 0; - -// break up word into array of characters -// for each character in array + // break up word into array of characters -// translate character into USB byte + // for each character in array -// send keydown, wait X miliseconds, send keyup + // translate character into USB byte - for(int letters=0; letters < MacroString.length(); letters++ ) { -// Serial.print(KEYMAP[MacroString[letters]][0]); // look up the USB byte from the KEYMAP array. - - if(KEYMAP[MacroString[letters]][1] == 1) { -// Serial.print("!"); // hold shift - SHIFTDOWN = 2; + // send keydown, wait X miliseconds, send keyup + + for (int letters = 0; letters < MacroString.length(); letters++ ) { + // Serial.print(KEYMAP[MacroString[letters]][0]); // look up the USB byte from the KEYMAP array. + + if (KEYMAP[MacroString[letters]][1] == 1) { + // Serial.print("!"); // hold shift + SHIFTDOWN = 2; } else { - SHIFTDOWN = 0; + SHIFTDOWN = 0; } delay(CharDelay); - - OnKeyDown(SHIFTDOWN,KEYMAP[MacroString[letters]][0]); - + + OnKeyDown(SHIFTDOWN, KEYMAP[MacroString[letters]][0]); + delay(CharDelay); - OnKeyUp(SHIFTDOWN,KEYMAP[MacroString[letters]][0]); + OnKeyUp(SHIFTDOWN, KEYMAP[MacroString[letters]][0]); } @@ -607,204 +613,197 @@ void KbdRptParser::PrintLine(int macro) -void KbdRptParser::PrintKey(uint8_t m, uint8_t key) +void KbdRptParser::PrintKey(uint8_t m, uint8_t key) { - MODIFIERKEYS mod; - *((uint8_t*)&mod) = m; -/* - Serial.print((mod.bmLeftCtrl == 1) ? "C" : " "); - Serial.print((mod.bmLeftShift == 1) ? "S" : " "); - Serial.print((mod.bmLeftAlt == 1) ? "A" : " "); - Serial.print((mod.bmLeftGUI == 1) ? "G" : " "); - - Serial.print(" >"); - PrintHex(key); - Serial.print("< "); + MODIFIERKEYS mod; + *((uint8_t*)&mod) = m; + /* + Serial.print((mod.bmLeftCtrl == 1) ? "C" : " "); + Serial.print((mod.bmLeftShift == 1) ? "S" : " "); + Serial.print((mod.bmLeftAlt == 1) ? "A" : " "); + Serial.print((mod.bmLeftGUI == 1) ? "G" : " "); - Serial.print((mod.bmRightCtrl == 1) ? "C" : " "); - Serial.print((mod.bmRightShift == 1) ? "S" : " "); - Serial.print((mod.bmRightAlt == 1) ? "A" : " "); - Serial.println((mod.bmRightGUI == 1) ? "G" : " "); - - - */ + Serial.print(" >"); + PrintHex(key); + Serial.print("< "); -// needs to send APPLE keys as key presses, not just as modifiers. + Serial.print((mod.bmRightCtrl == 1) ? "C" : " "); + Serial.print((mod.bmRightShift == 1) ? "S" : " "); + Serial.print((mod.bmRightAlt == 1) ? "A" : " "); + Serial.println((mod.bmRightGUI == 1) ? "G" : " "); - if(mod.bmLeftAlt == 1) { - digitalWrite(OPEN_APPLE_PIN, HIGH); + + */ + + // needs to send APPLE keys as key presses, not just as modifiers. + + if (mod.bmLeftAlt == 1) { + digitalWrite(OPEN_APPLE_PIN, HIGH); } else { - digitalWrite(OPEN_APPLE_PIN, LOW); + digitalWrite(OPEN_APPLE_PIN, LOW); } - if(mod.bmRightAlt == 1) { - digitalWrite(CLOSED_APPLE_PIN, HIGH); + if (mod.bmRightAlt == 1) { + digitalWrite(CLOSED_APPLE_PIN, HIGH); } else { - digitalWrite(CLOSED_APPLE_PIN, LOW); + digitalWrite(CLOSED_APPLE_PIN, LOW); } - if((mod.bmLeftShift == 1) || (mod.bmRightShift == 1) ) { - digitalWrite(SHIFT_PIN, LOW); + if ((mod.bmLeftShift == 1) || (mod.bmRightShift == 1) ) { + digitalWrite(SHIFT_PIN, LOW); } else { - digitalWrite(SHIFT_PIN, HIGH); + digitalWrite(SHIFT_PIN, HIGH); } - if((mod.bmRightCtrl == 1) || (mod.bmLeftCtrl == 1) ) { - digitalWrite(CONTROL_PIN, LOW); + if ((mod.bmRightCtrl == 1) || (mod.bmLeftCtrl == 1) ) { + digitalWrite(CONTROL_PIN, LOW); } else { - digitalWrite(CONTROL_PIN, HIGH); + digitalWrite(CONTROL_PIN, HIGH); } }; -void KbdRptParser::OnKeyDown(uint8_t mod, uint8_t key) +void KbdRptParser::OnKeyDown(uint8_t mod, uint8_t key) { Serial.println("DN "); - digitalWrite(S0_4051, LOW); - digitalWrite(S1_4051, LOW); - digitalWrite(S2_4051, LOW); + digitalWrite(S0_4051, LOW); + digitalWrite(S1_4051, LOW); + digitalWrite(S2_4051, LOW); Serial.println(mod); Serial.println(key); - PrintKey(mod, key); - uint8_t c = OemToAscii(mod, key); - - if (c) - OnKeyPressed(c); - - - -int SEARCH_COLUMN = -1; -int SEARCH_ROW = -1; + PrintKey(mod, key); + uint8_t c = OemToAscii(mod, key); -for (int row=0; row Keyboard(&Usb); - -uint32_t next_time; - -KbdRptParser Prs; void setup() { @@ -822,8 +821,8 @@ void setup() pinMode(S0_4051, OUTPUT); pinMode(S1_4051, OUTPUT); pinMode(S2_4051, OUTPUT); - - + + digitalWrite(ENABLE_PIN, HIGH); // write low to enable, high to disable digitalWrite(S0_PIN, LOW); digitalWrite(S1_PIN, LOW); @@ -832,39 +831,45 @@ void setup() digitalWrite(CAPS_LOCK_PIN, HIGH); digitalWrite(RESET_PIN, HIGH); - + digitalWrite(OPEN_APPLE_PIN, LOW); digitalWrite(CLOSED_APPLE_PIN, LOW); -// modifier keys - HIGH == not pressed. LOW == pressed. -digitalWrite(SHIFT_PIN, HIGH); -digitalWrite(CONTROL_PIN, HIGH); + // modifier keys - HIGH == not pressed. LOW == pressed. + digitalWrite(SHIFT_PIN, HIGH); + digitalWrite(CONTROL_PIN, HIGH); - digitalWrite(S0_4051, LOW); - digitalWrite(S1_4051, LOW); - digitalWrite(S2_4051, LOW); + digitalWrite(S0_4051, LOW); + digitalWrite(S1_4051, LOW); + digitalWrite(S2_4051, LOW); - // *** DEBUG -// Serial.begin( 115200 ); -// Serial.println("Start"); + // *** DEBUG + // Serial.begin( 115200 ); + // Serial.println("Start"); - if (Usb.Init() == -1) - Serial.println("OSC did not start."); - - delay( 200 ); - - next_time = millis() + 5000; - - Keyboard.SetReportParser(0, (HIDReportParser*)&Prs); + if (Usb.Init() == -1) { + Serial.println("OSC did not start."); + delay(5000); + digitalWrite(OPEN_APPLE_PIN, HIGH); + digitalWrite(CLOSED_APPLE_PIN, HIGH); + digitalWrite(RESET_PIN, LOW); + digitalWrite(CONTROL_PIN, LOW); + + } + + delay( 200 ); + + next_time = millis() + 5000; + + HidKeyboard.SetReportParser(0, (HIDReportParser*)&Prs); } void loop() { - Usb.Task(); - - + + Usb.Task(); } diff --git a/M0100 USB/trinket pro m0100/M0100-USB-v2/M0100-USB-v2.ino b/M0100 USB/trinket pro m0100/M0100-USB-v2/M0100-USB-v2.ino index dcf7f23..8beefa8 100644 --- a/M0100 USB/trinket pro m0100/M0100-USB-v2/M0100-USB-v2.ino +++ b/M0100 USB/trinket pro m0100/M0100-USB-v2/M0100-USB-v2.ino @@ -1,4 +1,4 @@ -/* + /* * Converts Apple M0100 mouse to USB, using Adafruit Trinket Pro 5v. * * Accelerated mouse tracking, based on speed. Faster movement @@ -8,7 +8,7 @@ * */ - + #include #include diff --git a/USB Mouse Interface/arduino/USBHIDBootMouse/USBHIDBootMouse.ino b/USB Mouse Interface/arduino/USBHIDBootMouse/USBHIDBootMouse.ino new file mode 100644 index 0000000..6290b72 --- /dev/null +++ b/USB Mouse Interface/arduino/USBHIDBootMouse/USBHIDBootMouse.ino @@ -0,0 +1,227 @@ +#include +#include + +// Satisfy the IDE, which needs to see the include statment in the ino too. +#ifdef dobogusinclude +#include +#include +#endif + + + +// pin assignments + +int XMOVE = 3; +int XDIR = 1; +int YMOVE = 2; +int YDIR = 0; +int CLICKPIN = 4; +long XDELAY; +long YDELAY; +long MOVEMENTBASE = 50; +int MOVEMENTFACTORX = 0; +int MOVEMENTFACTORY = 0; +int MOVEMENTTHRESHOLD = 1; +int MOVEMENTDENOM = 12; + +class MouseRptParser : public MouseReportParser +{ + protected: + void OnMouseMove (MOUSEINFO *mi); + void OnLeftButtonUp (MOUSEINFO *mi); + void OnLeftButtonDown (MOUSEINFO *mi); + void OnRightButtonUp (MOUSEINFO *mi); + void OnRightButtonDown (MOUSEINFO *mi); + void OnMiddleButtonUp (MOUSEINFO *mi); + void OnMiddleButtonDown (MOUSEINFO *mi); +}; +void MouseRptParser::OnMouseMove(MOUSEINFO *mi) +{ + + // XDELAY = MOVEMENTBASE + (1 - (abs(mi->dX) / 255.000)) * MOVEMENTFACTOR; + // YDELAY = MOVEMENTBASE + (1 - (abs(mi->dY) / 127.000)) * MOVEMENTFACTOR; + // Serial.print("dx="); + // Serial.println(XDELAY); + // Serial.print(" dy="); + // Serial.println(YDELAY); + // delayMicroseconds(XDELAY); + + + MOVEMENTFACTORX = 1 + (abs(mi->dX)) / MOVEMENTDENOM; + //Serial.println(MOVEMENTFACTOR); + for (int i = 0; i < MOVEMENTFACTORX; i++) { + + if (mi->dX > MOVEMENTTHRESHOLD) { + + digitalWrite(XMOVE, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XDIR, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XMOVE, LOW); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XDIR, LOW); + + } + if (mi->dX < -1 * MOVEMENTTHRESHOLD) { + digitalWrite(XDIR, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XMOVE, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XDIR, LOW); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XMOVE, LOW); + + } + } + MOVEMENTFACTORY = 1 + (abs(mi->dY)) / MOVEMENTDENOM; + for (int i = 0; i < MOVEMENTFACTORY; i++) { + if (mi->dY > MOVEMENTTHRESHOLD) { + + digitalWrite(YMOVE, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YDIR, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YMOVE, LOW); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YDIR, LOW); + + } + + if (mi->dY < -1 * MOVEMENTTHRESHOLD) { + digitalWrite(YDIR, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YMOVE, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YDIR, LOW); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YMOVE, LOW); + + } + + } + /* + XDIR = XMOVE = LOW + + if X > 0 + XMOVE HIGH + delay + XDIR HIGH + delay + XMOVE LOW + delay + XDIR LOW + + else if X < 0 + XDIR HIGH + delay + XMOVE HIGH + delay + XDIR LOW + delay + XMOVE LOW + + + + + + */ + + + +}; +void MouseRptParser::OnLeftButtonUp (MOUSEINFO *mi) +{ + // Serial.println("L Butt Up"); + digitalWrite(CLICKPIN, HIGH); +}; +void MouseRptParser::OnLeftButtonDown (MOUSEINFO *mi) +{ + // Serial.println("L Butt Dn"); + digitalWrite(CLICKPIN, LOW); +}; +void MouseRptParser::OnRightButtonUp (MOUSEINFO *mi) +{ + // Serial.println("R Butt Up"); +}; +void MouseRptParser::OnRightButtonDown (MOUSEINFO *mi) +{ + if (MOVEMENTTHRESHOLD == 1) { + MOVEMENTTHRESHOLD = 0; + } else { + MOVEMENTTHRESHOLD = 1; + } + + if (MOVEMENTDENOM == 12) { + MOVEMENTDENOM = 8; + } else { + MOVEMENTDENOM = 12; + } + + if (MOVEMENTBASE == 50) { + MOVEMENTBASE = 100; + } else { + MOVEMENTBASE = 50; + } + + // Serial.println("R Butt Dn"); +}; +void MouseRptParser::OnMiddleButtonUp (MOUSEINFO *mi) +{ + // Serial.println("M Butt Up"); +}; +void MouseRptParser::OnMiddleButtonDown (MOUSEINFO *mi) +{ + // Serial.println("M Butt Dn"); +}; + +USB Usb; +USBHub Hub(&Usb); +HIDBoot HidMouse(&Usb); + +uint32_t next_time; + +MouseRptParser Prs; + +void setup() +{ + + pinMode(XMOVE, OUTPUT); + pinMode(XDIR, OUTPUT); + pinMode(YMOVE, OUTPUT); + pinMode(YDIR, OUTPUT); + pinMode(CLICKPIN, OUTPUT); + + + + /* Serial.begin( 115200 ); + #if !defined(__MIPSEL__) + while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection + #endif + Serial.println("Start"); + */ + if (Usb.Init() == -1) + Serial.println("OSC did not start."); + + delay( 200 ); + + next_time = millis() + 5000; + + HidMouse.SetReportParser(0, (HIDReportParser*)&Prs); + + + + digitalWrite(XMOVE, LOW); + digitalWrite(XDIR, LOW); + digitalWrite(YMOVE, LOW); + digitalWrite(YDIR, LOW); + digitalWrite(CLICKPIN, HIGH); + + + +} + +void loop() +{ + Usb.Task(); +} + diff --git a/USB Mouse Interface/arduino/USBHIDBootMouse/USBHIDBootMouse.ino.standard.hex b/USB Mouse Interface/arduino/USBHIDBootMouse/USBHIDBootMouse.ino.standard.hex new file mode 100644 index 0000000..9a333fa --- /dev/null +++ b/USB Mouse Interface/arduino/USBHIDBootMouse/USBHIDBootMouse.ino.standard.hex @@ -0,0 +1,853 @@ +:100000000C945E000C9486000C9486000C94860080 +:100010000C9486000C9486000C9486000C94860048 +:100020000C9486000C9486000C9486000C94860038 +:100030000C9486000C9486000C9486000C94860028 +:100040000C948D160C9486000C941E180C94501869 +:100050000C9486000C9486000C9486000C94860008 +:100060000C9486000C948600000000080002010039 +:100070000003040700000000000000000102040863 +:100080001020408001020408102001020408102002 +:10009000040404040404040402020202020203032E +:1000A0000303030300000000250028002B000000CC +:1000B0000000240027002A00D906801811241FBE42 +:1000C000CFEFD8E0DEBFCDBF11E0A0E0B1E0E4E8C3 +:1000D000F4E302C005900D92AC3AB107D9F723E0E2 +:1000E000ACEAB1E001C01D92AE30B207E1F710E01A +:1000F000CCEBD0E004C02297FE010E94351AC83B29 +:10010000D107C9F70E9418190C94401A0C940000EA +:1001100080E00895089580E0089581E008950895AD +:100120008091080190910901019729F41092090129 +:100130001092080106C081E090E09093090180933D +:10014000080180910601909107010C9719F488E04D +:1001500090E002C08CE090E090930701809306014C +:1001600080910A0190910B01A0910C01B0910D01B9 +:10017000C297A105B10529F484E690E0A0E0B0E0C3 +:1001800004C082E390E0A0E0B0E080930A01909385 +:100190000B01A0930C01B0930D01089508950895EB +:1001A000860F911D860F911DFC015687458781E0C2 +:1001B0000895CF93DF93EC018C819D81DC01ED915B +:1001C000FC910480F581E02D6E8109951F86188AC7 +:1001D00081E08A8B1E821B8A1C8A1D8A1E8A1F8AC6 +:1001E00080E0DF91CF910895FC018681089581E040 +:1001F000633009F080E0089581E0623009F080E02A +:100200000895860F911D860F911DFC0185859685A9 +:100210000895FC0187890895EF92FF92CF93DF93B1 +:10022000FC01E7012289223029F16787408B8B810D +:1002300083708330F9F48A8187FF1CC08E81908D92 +:10024000981708F4808F822F90E0DC01AA0FBB1F63 +:10025000A80FB91FAE0FBF1F8A818F7017968C939E +:1002600017978C8118968C93189784E019968C9325 +:100270002F5F228BDF91CF91FF90EF900895EF9247 +:10028000FF920F9302970E940C010F91FF90EF9045 +:100290000895089561E080910E010C94E81760E0E4 +:1002A00080910E010C94E8170F931F93CF93DF9367 +:1002B000EB018981992787FD909597FF03C0919560 +:1002C0008195910960910601709107010E941F1AA2 +:1002D0006F5F7F4F70935A026093590200E010E005 +:1002E0008091590290915A02081719070CF068C0C2 +:1002F0002981332727FD30958091080190910901CC +:100300008217930734F561E0809114010E94E81789 +:1003100080910A0190910B010E94401761E0809149 +:1003200012010E94E81780910A0190910B010E942E +:10033000401760E0809114010E94E81780910A0143 +:1003400090910B010E94401760E0809112010E9481 +:10035000E8172981332727FD309580910801909176 +:1003600009019195819591092817390734F561E0C4 +:10037000809112010E94E81780910A0190910B016F +:100380000E94401761E0809114010E94E81780915B +:100390000A0190910B010E94401760E080911201C8 +:1003A0000E94E81780910A0190910B010E9440176A +:1003B00060E0809114010E94E8170F5F1F4F90CFFB +:1003C0008A81992787FD909597FF03C09195819524 +:1003D000910960910601709107010E941F1A6F5FD9 +:1003E0007F4F709358026093570200E010E08091B5 +:1003F000570290915802081719070CF068C02A811B +:10040000332727FD309580910801909109018217CB +:10041000930734F561E0809110010E94E817809104 +:100420000A0190910B010E94401761E080915B02EC +:100430000E94E81780910A0190910B010E944017D9 +:1004400060E0809110010E94E81780910A0190916C +:100450000B010E94401760E080915B020E94E81748 +:100460002A81332727FD3095809108019091090159 +:100470009195819591092817390734F561E08091AC +:100480005B020E94E81780910A0190910B010E9483 +:10049000401761E0809110010E94E81780910A01E5 +:1004A00090910B010E94401760E080915B020E94D6 +:1004B000E81780910A0190910B010E94401760E0BB +:1004C000809110010E94E8170F5F1F4F90CFDF91BE +:1004D000CF911F910F9108952F923F924F925F926B +:1004E0006F927F928F929F92AF92BF92CF92DF9244 +:1004F000EF92FF920F931F93CF93DF9300D000D022 +:10050000CDB7DEB76C017C836B835A8349834C0182 +:1005100080E1880E911C5601A7E0AA0EB11C11E0E3 +:1005200044E0442E57E0352E3601B2E16B0E711CCB +:1005300063E0262E72E0572E8B819C81892B09F473 +:1005400012C1F60180A1823061F128F4882349F0BC +:10055000813079F0F1CF833041F1843009F44BC020 +:10056000EBCF54828581968190878783528651860E +:1005700010A3AE014D5F5F4FBE016F5F7F4FC5019E +:100580000E944C12882309F4EEC0D6011596ED9115 +:10059000FC911697808191968C9391978181929688 +:1005A0008C93F6017682658220A2D60192968C9178 +:1005B000843081F018F4823079F014C0853081F0F5 +:1005C000813281F4D60191968C9191978250149644 +:1005D0008C9308C0F60113A2D60114963C9202C077 +:1005E000F6018483F60185819681908787838481D3 +:1005F0008287818740A2D60192968C918430B1F097 +:10060000853009F442C0823009F06EC0AE014D5F02 +:100610005F4FBE016F5F7F4FC5010E944C12882360 +:1006200009F4A1C0F601858984A38EC0AE014D5F97 +:100630005F4FBE016F5F7F4FC5010E944C12882340 +:1006400009F491C0D60155968C915597833009F0E5 +:100650007BC056968C915697813009F075C098965C +:100660009C91989757968C91992321F0882309F4AF +:100670006BC003C0823009F067C0F60113A39289F2 +:1006800096A3938997A385A35FC0AE014D5F5F4F8B +:10069000BE016F5F7F4FC5010E944C12882309F491 +:1006A00062C0D60193968C919397882309F44CC02D +:1006B00012968D919C911397009709F445C0DC0127 +:1006C000ED91FC910190F081E02D7401D601959699 +:1006D0000C91959797962C91979796964C91969703 +:1006E00094966C91099530C0F60181A19585992366 +:1006F00019F0913031F023C090E0029797878687F8 +:1007000015872B813C8189819A81782F692FD601A9 +:100710001E964D915C911F9741155105E9F0019688 +:100720002115310541F041505109F601578746879F +:1007300021503109EACF79836A831C821B82F6013A +:1007400086859785892B79F4D60116969C928E9290 +:10075000159790961C92F0CE9A8389833C832B83C5 +:10076000F6011586ECCF0F900F900F900F90DF9150 +:10077000CF911F910F91FF90EF90DF90CF90BF909E +:10078000AF909F908F907F906F905F904F903F9031 +:100790002F9008959FB7F89420916602809164028B +:1007A000213019F48DBB9FBF08958FBF0895CF925C +:1007B000DF92EF92FF920F931F93CF93DF93CDB70A +:1007C000DEB762970FB6F894DEBF0FBECDBF6C01E7 +:1007D000DC0157968C91882369F00E94D716F601A8 +:1007E0000389148925893689601B710B820B930B51 +:1007F00097FF02C0F12C39C0F601838590E09A8BF7 +:10080000898BE12C8E010F5F1F4F9E012F5E3F4FA2 +:1008100042856681848195810E945F0EF82E811148 +:1008200018C029893A892330310598F0D6011D96E0 +:100830008D919C911E97009761F0DC01ED91FC91E8 +:100840000190F081E02D8E010F5F1F4F40E0B60157 +:1008500009950E94D716F601208D620F711D811D2A +:10086000911D638B748B858B968B8F2D62960FB643 +:10087000F894DEBF0FBECDBFDF91CF911F910F91D6 +:10088000FF90EF90DF90CF9008953F924F925F924C +:100890006F927F928F929F92AF92BF92CF92DF9290 +:1008A000EF92FF920F931F93CF93DF93CDB7DEB7F5 +:1008B000EB970FB6F894DEBF0FBECDBF7C01462E7E +:1008C000342E522EDC011496AD90BC9015971696DE +:1008D0008C911697811111C158961C92D501ED91FA +:1008E000FC910190F081E02D60E0C50109956C015B +:1008F000009711F486ED0BC1FC018080918081147A +:10090000910409F4FCC03701F7E06F0E711CDC01A3 +:1009100011967C926E9214965C928E01065D1F4F2A +:1009200028E030E040E060E0F701848195810E949A +:100930005E0D182F8111E7C01AA5D6018D929C92E9 +:10094000D501ED91FC910280F381E02D232D40E053 +:10095000642DC5010995F7018683882309F4D1C068 +:1009600099A99087282F40E060E0848195810E94BA +:100970000B0E982ED501ED91FC91D60114961C9288 +:10098000882361F00480F581E02DD70116966C91E3 +:10099000C5010995F7011682892DB9C00190F08132 +:1009A000E02DD70116966C91C5010995009709F4C1 +:1009B000A1CF133108F012E1FC01548211110FC0D4 +:1009C0004BAC512CEDE2AE2EE1E0BE2E4701F2E041 +:1009D0008F0E911C6E0181E1C80ED11C39C0212FF0 +:1009E00030E08E01065D1F4F40E0D70116966C91F6 +:1009F000169714968D919C9115970E945E0D182F55 +:100A0000811171C0DDCFBA82A9829C828B821E8641 +:100A1000188A1F8619A21AA21BA219A6DF82CE82EB +:100A2000D986C8868D818B878A87DD86CC868E01A4 +:100A30000F5F1F4F252D40E0F7016681848195816E +:100A40000E94AC0DD70152968C91823019F05394CC +:100A50005410D9CFF7018289823009F043C0930145 +:100A600042E06681848195810E94AC0868EE73E063 +:100A700080E090E00E940617D7011F962C911F97E7 +:100A800040E016966C91169714968D919C9115974F +:100A90000E943A0E182F811126C068EE73E080E0A4 +:100AA00090E00E94061740E060E0C7010E94BF117D +:100AB000182F811118C020E040E060E0C7010E94BB +:100AC000951183E391E09A838983AE014F5F5F4F75 +:100AD00060E070E0C7010E94521181E0F701878B4E +:100AE00080E015C011EDD701ED91FC910480F581F6 +:100AF000E02DC7010995812F0AC089ED08C087ED57 +:100B000006C084ED04C0F60191828082ECCFEB96A2 +:100B10000FB6F894DEBF0FBECDBFDF91CF911F910E +:100B20000F91FF90EF90DF90CF90BF90AF909F908C +:100B30008F907F906F905F904F903F90089520919D +:100B40006602222399F03FB7F89420916602213083 +:100B500059F42DB3209364024DB320916502209582 +:100B600024232DBB3FBF02C0309364028CBD9DBDCA +:100B7000089580EE91E00C9459102A9A0895CF932D +:100B8000C82F80E591E00E949F052A98CEBD000005 +:100B90000DB407FEFDCF8EB51EBC00000DB407FEE0 +:100BA000FDCFCEB50E94BD058091660281110E94E5 +:100BB000CA038C2FCF9108951F93CF93DF931F9279 +:100BC000CDB7DEB7182F80E591E069830E949F05BD +:100BD0002A98812F82608EBD69810DB407FEFDCFFA +:100BE0008EB56EBD0DB407FEFDCF8EB50E94BD055E +:100BF00080916602882331F00F90DF91CF911F9191 +:100C00000C94CA030F90DF91CF911F91089588EF44 +:100C10000E94BF05807C8034A1F018F4882301F184 +:100C20000895803819F0803CB9F0089588ED0E944D +:100C3000BF0581FD0BC069EC88ED0E94DC0582E0F8 +:100C40000CC088ED0E94BF0581FDF5CF6BEC88EDEF +:100C50000E94DC0583E001C081E08093AC0108952F +:100C600061ED88ED0E94DC051092AC0108950F93B0 +:100C70001F93CF93DF938C01229A0E94BD050E949F +:100C80005716229A0E94BD05219868E188E80E94C3 +:100C9000DC0560E288E70E94DC0560E088E70E94EE +:100CA000DC05C0E0D0E088E60E94BF05219680FD0B +:100CB00006C0CF3F8FEFD807B1F78FEF1DC061ECB3 +:100CC00088ED0E94DC0560E680ED0E94DC0564E0B2 +:100CD00088EE0E94DC0588EE0E94BF0582FFFBCFF4 +:100CE000C8010E94070660E288EC0E94DC0561E012 +:100CF00080E80E94DC0580E0DF91CF911F910F9189 +:100D0000089561E0809114010E94AF1761E0809125 +:100D100012010E94AF1761E0809110010E94AF178D +:100D200061E080915B020E94AF1761E080910E014B +:100D30000E94AF1780EE91E00E9437068F3F31F49A +:100D400066E171E081E792E00E94051968EC70E0CD +:100D500080E090E00E9406170E94D71668577C4EEC +:100D60008F4F9F4F6093B2017093B3018093B40192 +:100D70009093B5018DEA91E09093C4018093C301F3 +:100D800060E0809114010E94E81760E080911201F8 +:100D90000E94E81760E0809110010E94E81760E06F +:100DA00080915B020E94E81761E080910E010C9433 +:100DB000E81780EE91E00E946A0760EE71E08FEC28 +:100DC00091E00E94E31480EE91E09093BB01809348 +:100DD000BA018DE491E09093B7018093B6018BE660 +:100DE00091E09093B9018093B8011092C9011092DB +:100DF000CA011092CB011092CC011092CD01109239 +:100E0000BD0188E08093BE018CE38093BF01109206 +:100E1000C0011092C10184E08093C20181E08093FF +:100E2000C8011092C7011092C5011092C40110921E +:100E3000C301E6E3F2E080E090E021913191232BC1 +:100E400051F4FC01EE0FFF1FEA5CFD4F86EB91E0D1 +:100E50009183808304C001968031910571F789E305 +:100E600091E09093AE018093AD010895FC01208143 +:100E70002EBDDC019B012150310951F011965C918E +:100E800011970DB407FEFDCF4EB55EBD4D93F3CF68 +:100E9000FB013197E80FF91F0DB407FEFDCF8EB5AA +:100EA000808308958EBD00000DB407FEFDCF8EB582 +:100EB000089580916602882361F09FB7F89420918D +:100EC000660280916402213019F48DBB9FBF0895A2 +:100ED0008FBF0895FC0181E791E0918380831582A3 +:100EE000108681E0818712869F012E5F3F4F3783F6 +:100EF0002683128288E083838CE3848380E090E001 +:100F000041E0DF01A80FB91F1D961C921D971E9688 +:100F10004C931E971F961C921F971C963C932E93E2 +:100F20001B9705968B34910561F7EA58FF4F1082A5 +:100F300081E1809361020895CF92DF92EF92FF9258 +:100F40000F931F93CF93DF931F92CDB7DEB77C0132 +:100F50006623B1F18C01C12CD12CF801EA5AFF4F64 +:100F600080819181009719F1DC01ED91FC91008461 +:100F7000F185E02D698309956981861318C0F60112 +:100F8000BB96EE0FFF1FEE0DFF1D80819181DC01EE +:100F9000ED91FC910480F581E02D0F90DF91CF91D0 +:100FA0001F910F91FF90EF90DF90CF900994BFEFCA +:100FB000CB1ADB0A0E5F1F4FE0E1CE16D10469F6B3 +:100FC00080E00F90DF91CF911F910F91FF90EF90F4 +:100FD000DF90CF90089520E030E041E0FC01E20F87 +:100FE000F31F5585561739F04F5F2B5F3F4F403148 +:100FF000A9F780E00895842F0895EF92FF921F9340 +:10100000CF93DF9300D0CDB7DEB77C01162F67FDFD +:101010005FC0283008F05CC0442331F0DC01159635 +:101020008C91873009F454C060E0C7012A8349835A +:101030000E94EB072A814981882309F449C0E82FDF +:10104000F0E0111123C085E08E9FD0018F9FB00D7D +:101050001124AE0DBF1D442359F081E418968C93E2 +:10106000D70115968C9115978F5F15968C9303C0B9 +:1010700081E018968C9385E08E9FD0018F9FB00DF4 +:101080001124AE0DBF1D18968C9123C0612F67707F +:10109000660F660F660F442361F06064D7011596F2 +:1010A0008C9115978F5F15968C938770687F682B4E +:1010B00003C02770687B622B85E08E9FD0018F9FD5 +:1010C000B00D1124AE0DBF1D18966C93862F01C074 +:1010D00080E00F900F90DF91CF911F91FF90EF90E4 +:1010E0000895CF93DF93EC01662359F00E94EB073C +:1010F000882349F09E0145E0849F200D311D112475 +:10110000C901069602C080E090E0DF91CF9108957A +:10111000CF93DF931F92CDB7DEB749830E9471084A +:101120004981009789F0DC01ED91FC91119730978E +:1011300059F013969C9180E0891731F02081241793 +:1011400031F033968F5FF8CF80E090E001C0CF019F +:101150000F90DF91CF910895EF92FF921F93CF935D +:10116000DF931F92CDB7DEB7162F79012115310518 +:1011700069F049830E947108FC014981009741F0A0 +:101180001283F182E082438380E003C088ED01C0D6 +:1011900086ED0F90DF91CF911F91FF90EF90089512 +:1011A0002A9808951F93CF93DF931F92CDB7DEB790 +:1011B000182F80E591E00E949F050E94D008812FA2 +:1011C0000E94520780E00E94520789830E94BD0559 +:1011D0000E94590789810F90DF91CF911F91089547 +:1011E0001F93CF93DF9300D01F92CDB7DEB7182F98 +:1011F00080E591E06B830E949F050E94D0081260F9 +:1012000019836B816A8362E070E0CE0101960E94CF +:1012100036070E94BD050E9459070F900F900F904E +:10122000DF91CF911F9108958F929F92BF92CF929D +:10123000DF92EF92FF920F931F93CF93DF931F9252 +:10124000CDB7DEB74C01B62E690149830E94710803 +:101250007C014981009709F443C0FC0180819181A0 +:10126000892B09F43FC06B2DC4010E948808F60148 +:10127000918380830097C1F1FC01228126952695F8 +:10128000822F90E0409764F441E050E060E070E02D +:1012900004C0440F551F661F771F2A95D2F702C05E +:1012A00040E050E841505109F801518340836B2DD3 +:1012B00080EE0E94F00888ED0E94D208F701948128 +:1012C000992339F0F401EA58FF4F60816260682B7E +:1012D00002C0682F697F88ED0E94F00880E005C099 +:1012E00086ED03C087ED01C08BED0F90DF91CF91AC +:1012F0001F910F91FF90EF90DF90CF90BF909F9044 +:101300008F9008958F929F92AF92BF92CF92DF926B +:10131000EF92FF920F931F93CF93DF931F92CDB75E +:10132000DEB7A62E890149830E94D7166B017C0186 +:1013300088E8C80E83E1D81EE11CF11C812C912C99 +:10134000B12C20E04981A42A29830E94D7166C1968 +:101350007D098E099F09298197FF2DC06A2D80EF95 +:101360000E94F0080E94D7166C197D098E099F090A +:1013700097FF09C088EC0E94D20887FFF3CF60E88E +:1013800088EC0E94F00888EF0E94D208282F2F7066 +:10139000243019F02E3059F00EC0EFEF8E1A9E0A4D +:1013A0000115110589F28016910671F604C0B394F7 +:1013B000F3E0BF12C9CF822F0F90DF91CF911F9121 +:1013C0000F91FF90EF90DF90CF90BF90AF909F90E4 +:1013D0008F9008959F92AF92BF92CF92DF92EF923B +:1013E000FF920F931F93CF93DF937C01B42E122FA4 +:1013F000AA24A394DC01A60FB11DA60FB11D6D0197 +:1014000086E5C80ED11CC42FD0E0AB96CC0FDD1FF3 +:10141000CE0DDF1DD6018D919C91DC01ED91FC91EB +:101420000280F381E02D202F412F6B2D0995803E06 +:10143000C1F4B1100BC061E088EE0E94F00866E6CE +:1014400070E080E090E00E94061715C088819981C5 +:10145000DC01ED91FC910284F385E02D612F09956B +:101460000AC08D3031F48FEF8A0D833008F042C00E +:1014700017C0811142C0F60180819181DC01ED919C +:10148000FC910190F081E02D202F412F6B2D0995CB +:10149000982EBDE08B130CC08FEF8A0D833050F473 +:1014A00064E670E080E090E00E940617A394B2CF5B +:1014B000882311F1B1100BC061E088EE0E94F008A2 +:1014C00066E670E080E090E00E94061711C0EB2D08 +:1014D000F0E0BB96EE0FFF1FEE0DFF1D80819181A6 +:1014E000DC01ED91FC910284F385E02D612F0995DB +:1014F000892D03C08DE001C080E0DF91CF911F9165 +:101500000F91FF90EF90DF90CF90BF90AF909F90A2 +:1015100008950F931F93CF93DF93D82FC62F8A017F +:1015200080E591E00E949F050E94D0088D2F826087 +:101530000E945207D0E0209721F0BE01C8010E940E +:101540003607C00FD11F0E94BD050E945907CE016A +:10155000DF91CF911F910F9108952F923F924F925B +:101560005F926F927F928F929F92AF92BF92CF9233 +:10157000DF92EF92FF920F931F93CF93DF9300D0F0 +:1015800000D01F92CDB7DEB77D836C835A0169010D +:10159000FB0121808FEF820D803408F06FC00E9424 +:1015A000D7162B013C01F8E84F0EF3E15F1E611CDA +:1015B000711CEC81FD81828180FF02C060E801C066 +:1015C00060E488EE0E94F00820E0312CC114D104C0 +:1015D00009F444C076012C143D0408F47101EA8238 +:1015E000A8016E2D80E10E94890A6E2D88E30E9479 +:1015F000F008EC81FD816081606280EF0E94F0085C +:1016000088EC0E94D20887FFFBCF60E888EC0E943C +:10161000F00888EF0E94D208282F2F70812C912C7F +:101620001982222309F46BC02B830E94D7166419F8 +:101630007509860997092B8197FF61C0263001F152 +:101640002E3009F456C0243049F4FFEF8F1A9F0A58 +:10165000A114B10459F18A149B0441F588EF2B833E +:101660000E94D20885FB882780F9EC81FD81928158 +:1016700080FB90F992832B81822F46C08AED44C073 +:1016800088EF0E94D20885FB882780F991E089279E +:10169000EC81FD81928180FB90F9928390FF02C0E2 +:1016A00060E801C060E488EE0E94F00860E088E332 +:1016B0000E94F008F801608180E10E94F0086A81D0 +:1016C00088E30E94F008EC81FD816081606280EF18 +:1016D0000E94F00888EC0E94D20887FFFBCF60E8E8 +:1016E00088EC0E94F00888EF0E94D208282F2F7003 +:1016F00098CF89818F5F89838330C1F6AFCFCE18B1 +:10170000DF080E0D1F1D62CF0F900F900F900F90EE +:101710000F90DF91CF911F910F91FF90EF90DF908D +:10172000CF90BF90AF909F908F907F906F905F9081 +:101730004F903F902F9008952F923F924F925F923B +:101740006F927F928F929F92AF92BF92CF92DF92D1 +:10175000EF92FF920F931F93CF93DF93CDB7DEB736 +:1017600029970FB6F894DEBF0FBECDBF1C01798755 +:1017700068875B834A836901D9018D909C9011979A +:10178000FB01F181F9831D921C92DB0112968C9171 +:1017900081FF02C060E201C060E188EE0E94F008B3 +:1017A0008E2D90E0A0E0B0E08C839D83AE83BF835C +:1017B000482C2A813B81A885B9854C9160E0C10104 +:1017C0000E948209F82EB6E08B1316C088EF0E94A3 +:1017D000D2088295817091E08927E885F985928108 +:1017E00080FB91F9928391FF02C060E201C060E149 +:1017F00088EE0E94F008DDCF811166C088EC0E945F +:10180000D20882FF5FC080E30E94D208582E90E089 +:101810008816990608F4542CD6018D919C91652C5C +:10182000712CF401E81BF90BCF01F7FF02C080E037 +:1018300090E05301861597050CF45C0180E591E07A +:101840000E949F050E94D00888E00E945207A501CF +:1018500060E070E0C8010E94391AA114B10421F0BF +:10186000B501C8010E9436070A0D1B1D0E94BD0567 +:101870000E94590764E088EC0E94F008D6018D911F +:101880009C911197860D971D8D939C93B9815B1642 +:1018900018F08815990560F088EF0E94D2088295AB +:1018A0008170E885F985928180FB91F992830CC063 +:1018B000EE2009F47ECF6C817D818E819F810E9414 +:1018C000061777CF30EFF32E8F2D29960FB6F894A9 +:1018D000DEBF0FBECDBFDF91CF911F910F91FF9063 +:1018E000EF90DF90CF90BF90AF909F908F907F90C0 +:1018F0006F905F904F903F902F9008952F923F925E +:101900004F925F926F927F928F929F92AF92BF920F +:10191000CF92DF92EF92FF920F931F93CF93DF93BB +:10192000CDB7DEB762970FB6F894DEBF0FBECDBF5E +:101930003C01F42E322E202E5C2D4FA058A4C9A4B9 +:10194000DAA4188A1F861E861D868E01035F1F4F2C +:101950009E01215F3F4F598B0E94140959898111C3 +:1019600094C039822A82EB825C83BE82AD829886E3 +:101970008F82AE014F5F5F4F68E080E20E94890A6C +:101980002D853E854F2D60E1C3010E948209182FED +:1019900081117AC0232C221C2224221CC114D104C0 +:1019A00009F466C0EF85F8898281222009F453C0CA +:1019B00082608283540133243394A114B10409F466 +:1019C00055C05C864B864D855E856F857889E12C98 +:1019D00086019E01255F3F4FC3010E949C0B182F7B +:1019E0008630B1F42F85388988EF298B3A8B0E9495 +:1019F000D20885FB882780F9832529893A89D9016E +:101A000012969C91129780FB91F912969C93D5CFD8 +:101A100081113AC0EBA5FCA53097A1F00190F081AF +:101A2000E02D0190F081E02DC4018A199B099A876D +:101A300089876B857C859E01275F3F4FA6018BA51B +:101A40009CA509958B859C85A81AB90A84159505CE +:101A500008F0B3CF0DC0816082834D855E8586011D +:101A60009201BF01C3010E94AD0A182F11110CC0D1 +:101A70002D853E85222011F060EA01C060E84F2DDF +:101A8000C3010E94820901C0812F62960FB6F894AB +:101A9000DEBF0FBECDBFDF91CF911F910F91FF90A1 +:101AA000EF90DF90CF90BF90AF909F908F907F90FE +:101AB0006F905F904F903F902F9008958F929F92DC +:101AC000AF92BF92CF92EF920F931F931F921F92EC +:101AD0001F930F933F932F934901A12CB12CCC243A +:101AE000C394E12C06E020E80E947E0C0F900F903A +:101AF0000F900F900F900F901F910F91EF90CF903C +:101B0000BF90AF909F908F9008958F929F92AF92C9 +:101B1000BF92CF92EF92FF920F931F921F92FF926C +:101B2000EF923F932F934901A12CB12C52E0C52E87 +:101B3000E02E06E020E80E947E0C0F900F900F90A0 +:101B40000F900F900F900F91FF90EF90CF90BF905C +:101B5000AF909F908F9008953F924F925F926F92B7 +:101B60007F928F929F92AF92BF92CF92DF92EF922D +:101B7000FF920F931F93CF93DF93CDB7DEB7C0547F +:101B8000D1090FB6F894DEBF0FBECDBF3C01562E73 +:101B9000442E322EB02ECE0101966C017C01022F14 +:101BA00029E030E0C3010E94850D81111BC08B80AC +:101BB0009C801F93BF92DF92CF921F9280E48F93FD +:101BC000A12CB12C62E0C62EE32C06E020E8442DC7 +:101BD000652DC3010E947E0C0F900F900F900F9007 +:101BE0000F900F90C05CDF4F0FB6F894DEBF0FBEB2 +:101BF000CDBFDF91CF911F910F91FF90EF90DF90BC +:101C0000CF90BF90AF909F908F907F906F905F909C +:101C10004F903F9008958F929F92AF92BF92CF9234 +:101C2000EF920F93CF931F921F921F921F921F92BA +:101C30001F92812C912CA12CB12CC12CE22E05E0FD +:101C400020E00E947E0CC82F6CE271E080E090E002 +:101C50000E9406170F900F900F900F900F900F900B +:101C60008C2FCF910F91EF90CF90BF90AF909F901E +:101C70008F9008958F929F92AF92BF92CF92EF92E2 +:101C80000F931F921F921F921F921F921F92812CDF +:101C9000912CA12CB12CC12CE22E09E020E00E9455 +:101CA0007E0C0F900F900F900F900F900F900F9150 +:101CB000EF90CF90BF90AF909F908F9008958F92AC +:101CC0009F92AF92BF92CF92DF92EF920F931F93AA +:101CD000CF93DF9300D000D0CDB7DEB76C015901B0 +:101CE00048011C821B821A8219828E010F5F1F4FCE +:101CF0009E012D5F3F4F0E941409811109C0498147 +:101D00005A816B817C8184019501C6010E949C0BE4 +:101D10000F900F900F900F90DF91CF911F910F9127 +:101D2000EF90DF90CF90BF90AF909F908F900895ED +:101D3000CF92DF92FF920F931F93CF93DF9300D048 +:101D4000CDB7DEB76C01662309F442C0062F10E060 +:101D500085E0689FB0011124F601E60FF71F80852A +:101D6000282F277086FF19C031E0E5E0FE2EF6012E +:101D7000F39EE00DF11D112480858695869586954C +:101D800087708217E1F03F5F303188F3F60185817B +:101D9000821303C02150F601258385E0809FF00166 +:101DA000819FF00D1124EC0DFD1D108681E08187CF +:101DB000128682E0C80ED11CD782C68209C0632F6A +:101DC000C6012A8339830E94980E2A813981CFCF98 +:101DD0000F900F90DF91CF911F910F91FF90DF90A7 +:101DE000CF900895CF93DF93EC016134A1F4FC010F +:101DF000855B9F4F41E09E012E5F3F4F15864687D2 +:101E00001786348723873596E817F907B9F71D82B7 +:101E1000DF91CF9108950E94EB07682FCE01DF91EB +:101E2000CF910C94980E0F931F93CF93DF93EC01F7 +:101E3000022FCA3F8FEFD80711F486ED29C08E819B +:101E40009F81892B01F12A87242F40E0CE010E9437 +:101E5000FD07182F8823C9F0682FCE010E94710852 +:101E6000009759F3FC010483212F40E060E0CE018C +:101E70000E940B0E082F882351F0612FCE010E9483 +:101E8000F20E802F05C087ED03C084ED01C080E015 +:101E9000DF91CF911F910F9108952F923F924F9212 +:101EA0005F926F927F928F929F92AF92BF92CF92EA +:101EB000DF92EF92FF920F931F93CF93DF93CDB7F3 +:101EC000DEB766970FB6F894DEBF0FBECDBF7C01BC +:101ED000862E742E922E1B8A88E08C8B8CE38D8B41 +:101EE000D701ED91FC910190F081E02D60E0C701F8 +:101EF00009956C01009709F4ABC0FC01A080B1808A +:101F0000CE0143969183808394828E010F5F1F4F91 +:101F100022E130E040E060E0C7010E945E0DD601A2 +:101F2000AD92BC928111ACC029843A844B845C840C +:101F3000BD81BE8B1E815701612C6501E6E5CE0E89 +:101F4000D11CD6018D919C91009789F1DC01ED9116 +:101F5000FC910084F185E02D0995811128C0F601DE +:101F600080819181DC01ED91FC910088F189E02D67 +:101F7000612F09958823D9F0F60180819181DC01D8 +:101F8000ED91FC910484F585E02DA201B101099544 +:101F9000811160C0F60180819181DC01ED91FC919D +:101FA0000684F785E02D6E890995811153C06394ED +:101FB000B2E0AB0EB11CE0E16E12BFCF5701612C55 +:101FC0006501F6E5CF0ED11CD6018D919C9100974D +:101FD00089F1DC01ED91FC910084F185E02D0995FA +:101FE000811128C0F60180819181DC01ED91FC9185 +:101FF0000088F189E02D612F09958823B1F1F60160 +:1020000080819181DC01ED91FC910484F585E02DC6 +:10201000A201B101099581110DC0F6018081918164 +:10202000DC01ED91FC910684F785E02D6E89099520 +:102030008823D9F06394B2E0AB0EB11CE0E16E12DC +:10204000BFCF292D472D682DC7010E94130F18C03F +:1020500086ED16C0092D272D482D662DC7010E943B +:10206000EA09813D09F4A3CF0BC0092D272D482D86 +:10207000662DC7010E94EA09982F977F913DD1F202 +:1020800066960FB6F894DEBF0FBECDBFDF91CF913D +:102090001F910F91FF90EF90DF90CF90BF90AF9086 +:1020A0009F908F907F906F905F904F903F902F9078 +:1020B0000895FF920F931F93CF93DF93EC0119992B +:1020C0000EC088EC0E94D20885FF05C0CE010E9498 +:1020D000070660E201C060E088EC0E94F008809191 +:1020E000AC01813051F058F0823029F0833039F55D +:1020F000FF24F3940DC0F12C0BC083E106C0809146 +:102100006102807F8031D9F081E18093610217C044 +:1021100080916102807F803199F40E94D7166853C4 +:102120007F4F8F4F9F4F60935D0270935E0280934D +:102130005F029093600280E28093610201C0F12C03 +:1021400000E010E0FE01E00FF11FEA5AFF4F80812E +:102150009181009739F0DC01ED91FC910680F781C7 +:10216000E02D09950E5F1F4F0032110559F7809140 +:102170006102803409F446C070F4803269F1803322 +:10218000D9F1813109F088C0FE01EA58FF4F108271 +:1021900000E010E00AC0813509F45AC0803809F423 +:1021A0006AC0803509F078C03CC0FE01E00FF11F25 +:1021B000EA5AFF4F80819181009739F0DC01ED915F +:1021C000FC910480F581E02D09950E5F1F4F0032D0 +:1021D000110559F782E15EC00E94D71600915D0299 +:1021E00010915E0220915F0230916002601B710BC2 +:1021F000820B930B97FD50C061E088EE0E94F008BF +:1022000080E448C088EE0E94D20880FD45C088ED79 +:102210000E94D208682F686088ED0E94F00880E56F +:1022200039C088EC0E94D20886FF36C081E58093D1 +:1022300061020E94D7166C5E7F4F8F4F9F4F609355 +:102240005D0270935E0280935F029093600224C0EF +:102250000E94D71600915D0210915E0220915F02EC +:1022600030916002601B710B820B930B97FD14C0C1 +:1022700080E8809361022F2D40E060E0CE010E9453 +:102280004D0F882331F0823D39F08093620280EA5D +:1022900001C080E980936102DF91CF911F910F917E +:1022A000FF9008958F929F92AF92BF92CF92EF923C +:1022B0000F93CF93DF93CDB7DEB7C054D1090FB6DC +:1022C000F894DEBF0FBECDBF5F934F939E012F5F8B +:1022D0003F4F3F932F931F9220E42F9320E8822EAD +:1022E000912C5B0132E2C32EE12C06E021E840E0B4 +:1022F000FC016681848195810E947E0C0F900F9075 +:102300000F900F900F900F90C05CDF4F0FB6F894B6 +:10231000DEBF0FBECDBFDF91CF910F91EF90CF9079 +:10232000BF90AF909F908F9008958F929F92AF92A1 +:10233000BF92CF92EF920F93A62EB12C1F921F92B5 +:102340001F921F921F921F92812C912CC22EE42E5D +:102350000AE021E240E0FC016681848195810E94CF +:102360007E0C0F900F900F900F900F900F900F9189 +:10237000EF90CF90BF90AF909F908F9008958F92E5 +:102380009F92AF92BF92CF92EF920F93A62EB12C55 +:102390001F921F921F921F921F921F92812C912CAD +:1023A000C12CE42E0BE021E240E0FC016681848137 +:1023B00095810E947E0C0F900F900F900F900F90C0 +:1023C0000F900F91EF90CF90BF90AF909F908F9014 +:1023D00008950F931F93CF93DF93EC012A8121700F +:1023E000F8018081982F9170291771F0E881F981A7 +:1023F00080FF04C00680F781E02D03C00480F581D2 +:10240000E02DB801CE0109952A8126952170F801A9 +:10241000808181FB992790F9291771F0E881F98172 +:1024200081FF04C00284F385E02D03C00084F185A0 +:10243000E02DB801CE0109952A8122FB222720F93F +:10244000F801808182FB992790F9291771F0E881C2 +:10245000F98182FF04C00684F785E02D03C004845F +:10246000F585E02DB801CE010995F8018181811132 +:1024700003C08281882341F0E881F9810280F381E1 +:10248000E02DB801CE010995F80180818A83DF91A2 +:10249000CF911F910F910895CF93DF93FC01EA0133 +:1024A00080819181892B21F580E028C088819981E4 +:1024B000892BD1F3DB018D919C91DC015C9123810F +:1024C00030E0241B310980819181820F931FDC0150 +:1024D0005C9382818150828388819981019799835D +:1024E0008883DB018D919C91119701968D939C932C +:1024F00042814111DBCF8381828381E0DF91CF91E3 +:102500000895FC018285089581E0693009F080E03A +:102510000895CF93DF93EC018A819B81DC01ED91DB +:10252000FC910480F581E02D6A8509958A858134C6 +:1025300039F4EA81FB81EA58FF4F8081846080830F +:102540001A861B861C861D861E861F86188A80E0BA +:10255000DF91CF9108958F929F92AF92BF92CF92C9 +:10256000EF920F93A42EB12CB22A1F921F921F92AA +:102570001F921F921F92812C912CC12CE62E01E0FC +:1025800023E240E0FC016285828193810E947E0CFF +:102590000F900F900F900F900F900F900F91EF9062 +:1025A000CF90BF90AF909F908F9008958F929F9201 +:1025B000AF92BF92CF92EF920F93A62EB12C1F92A3 +:1025C0001F923F932F935F934F934A01C12CE12CAD +:1025D00000E023EA40E0FC016285828193810E9451 +:1025E0007E0C0F900F900F900F900F900F900F9107 +:1025F000EF90CF90BF90AF909F908F9008958F9263 +:102600009F92AF92BF92CF92EF920F93A42EB12CD4 +:10261000B22A1F921F921F921F921F921F92812C0B +:10262000912CC12CE62E03E023E240E0FC01628500 +:10263000828193810E947E0C0F900F900F900F90DB +:102640000F900F900F91EF90CF90BF90AF909F9011 +:102650008F9008952F923F924F925F926F927F9248 +:102660008F929F92AF92BF92CF92DF92EF92FF92A2 +:102670000F931F93CF93DF93CDB7DEB7E9970FB6D4 +:10268000F894DEBF0FBECDBF3C01362E242EDC01F8 +:102690001296ED90FC9013971A968C91811103C1BC +:1026A000D701ED91FC910190F081E02D60E0C70130 +:1026B00029AF09956C0129AD009709F4F6C0FC011A +:1026C000A080B180A114B10409F4F1C04301F4E089 +:1026D0008F0E911CDC0111969C928E9214962C9375 +:1026E000FE0131962F018F0128E030E040E060E0EC +:1026F000D30112968D919C9113970E945E0DF60165 +:1027000014828111DAC019818D81893009F0D1C01C +:10271000D701ED91FC910280F381E02D222D41E063 +:10272000632DC7010995F3018287882309F4C3C08B +:1027300098859583282F40E060E0828193810E94F4 +:102740000B0E082F882391F0D601AD92BC92D701D1 +:10275000ED91FC910480F581E02DD3011A966C91E6 +:10276000C7010995F3011286102FABC0113208F092 +:1027700010E2D601AD92BC9211110BC0940142E05F +:10278000F3016285828193810E94AC08811198C017 +:1027900011C0212F30E0820140E0D3011A966C91E4 +:1027A0001A9712968D919C9113970E945E0D81113C +:1027B00087C0E4CF1F921F925F924F921F9288E0D2 +:1027C0008F9388E0882E912CA12CB12C99E2C92EF0 +:1027D000E12C06E020EA40E0F301628582819381EA +:1027E0000E947E0C182F0F900F900F900F900F905B +:1027F0000F90811166C08B81D3011B968C931B9720 +:10280000720100E028E030E040E01A966C911A97DF +:1028100012968D919C9113970E94850D811150C045 +:102820002B813C8140E0F3016285828193810E948B +:10283000850D811145C0298130E0CE0181967C0152 +:1028400040E0D3011A966C911A9712968D919C9143 +:1028500013970E94850D811133C02E8140E0F30152 +:102860006285828193810E943A0E811129C001E024 +:10287000D3011B968C911B97801740F020E0402FCE +:1028800068E0C3010E94FF120F5FF2CF1296ED9134 +:10289000FC911397EA58FF4F80818460808381E028 +:1028A00050968C930EC019ED0CC016ED0AC017EDB2 +:1028B00008C011ED06C014ED04C0F601B182A0827B +:1028C000182F812FE9960FB6F894DEBF0FBECDBF4B +:1028D000DF91CF911F910F91FF90EF90DF90CF90FC +:1028E000BF90AF909F908F907F906F905F904F9030 +:1028F0003F902F900895BF92CF92DF92EF92FF9278 +:102900000F931F93CF93DF9300D000D0CDB7DEB7E6 +:102910007C01B62E19821A821B821C8220E0462F6F +:1029200061E10E94AB1220E04B2D60E1C7010E94E3 +:10293000AB1220E04B2D64E0C7010E94FF1223E0A0 +:10294000C22ED12C9E012F5F3F4F44E050E06B2DF3 +:10295000C7010E94D612882301F120E04B2D64E1CB +:10296000C7010E94AB1220E04B2D60E1C7010E941D +:10297000AB1264E170E080E090E00E9406170F90D7 +:102980000F900F900F90DF91CF911F910F91FF90BB +:10299000EF90DF90CF90BF90089509811A812B812D +:1029A0003C811D7F0330114020413105B1F264E6C6 +:1029B00070E080E090E00E94061781E0C81AD1081C +:1029C00009F0C0CFCACFCF93DF93FC018BE791E032 +:1029D000918380837383628312861386148615869F +:1029E00016861786108A148288E085839CE3968376 +:1029F00091E09783808784E0818761157105B9F044 +:102A0000CB01A0E0B0E0EC01CA5ADF4F2881398148 +:102A1000232B41F49B96AA0FBB1FA60FB71FED9364 +:102A2000FC9305C011960296A031B10561F7DF91C4 +:102A3000CF910895DF92EF92FF920F931F93CF9360 +:102A4000DF93EC01D62E7A01FA01008111812281F7 +:102A500033810130F3E01F07F1E02F073105D1F09A +:102A600060F40115E1E01E072E07310571F1013018 +:102A700011402140310571F062C0033081E0180738 +:102A800080E128073105E1F1033013402041310591 +:102A9000B9F155C080916302811151C020E04D2DE4 +:102AA00061E1CE010E94AB1220E04D2D60E1CE012C +:102AB0000E94AB1220E04D2D64E0CE010E94FF1277 +:102AC00081E08093630281EB3BC020E0462F61E10F +:102AD000CE010E94AB1220E04D2D60E1CE010E949C +:102AE000AB12109263026A8567708D2D8770660F36 +:102AF000660F660F682B8A819B810E949C071FC00E +:102B000020E04D2D64E1CE010E94AB1220E04D2D5E +:102B100060E1CE010E94AB1264E170E080E090E0E1 +:102B20000E9406176A85F70121812695217067703A +:102B30004D2D8A819B810E944D0F1092630280E08F +:102B4000DF91CF911F910F91FF90EF90DF9008954B +:102B5000CF92DF92EF920F931F93CF93DF93CDB776 +:102B6000DEB72E970FB6F894DEBF0FBECDBF6C0157 +:102B700081E090E09E878D87E12C8E010F5F1F4FD3 +:102B80009E01235F3F4F41E0F60162858281938180 +:102B90000E945F0E811151C002E011E08981802303 +:102BA000D1F019861A861B861C869E01275F3F4F2F +:102BB00044E050E0612FC6010E94D61281110BC083 +:102BC000AE01475F5F4F612FC6010E941A15813B1E +:102BD00099F1811132C0000F1F5F1830F9F611E032 +:102BE000F6018385811740F119861A861B861C869B +:102BF0009E01275F3F4F44E050E0612FC6010E94D5 +:102C0000D612811117C089859A858770917081309D +:102C1000914081F48B859C8581609C878B87AE0178 +:102C2000475F5F4F612FC6010E941A15813B21F05B +:102C3000811103C01F5FD4CF80E02E960FB6F894A9 +:102C4000DEBF0FBECDBFDF91CF911F910F91EF90EF +:102C5000DF90CF9008950F931F93CF93DF93EC01F4 +:102C600088898823F1F00E94D7160C851D852E8552 +:102C70003F85601B710B820B930B97FD0FC0CE013C +:102C80000E94A815182F0E94D7166C597F4F8F4F9E +:102C90009F4F6C877D878E879F8701C010E0812FB3 +:102CA00001C080E0DF91CF911F910F910895CF93E4 +:102CB000CFB7F89480916702811127C0EAE9F0E06C +:102CC0008491E6E8F0E09491E82FF0E0EE0FFF1F2A +:102CD000E255FF4FA591B4918C91892321F461E0D5 +:102CE0008AE00E94E81761E08AE00E94AF178CB585 +:102CF00080618CBD8CB580648CBD61E08DE00E94EC +:102D0000AF1761E08BE00E94AF17809167028F5F81 +:102D100080936702CFBFCF9108951F920F920FB695 +:102D20000F9211242F933F938F939F93AF93BF9351 +:102D30008091690290916A02A0916B02B0916C023D +:102D40003091680223E0230F2D3720F40196A11D56 +:102D5000B11D05C026E8230F0296A11DB11D2093C9 +:102D600068028093690290936A02A0936B02B09309 +:102D70006C0280916D0290916E02A0916F02B091F1 +:102D800070020196A11DB11D80936D0290936E0299 +:102D9000A0936F02B0937002BF91AF919F918F91FA +:102DA0003F912F910F900FBE0F901F9018952FB746 +:102DB000F8946091690270916A0280916B0290911F +:102DC0006C022FBF08953FB7F89480916D029091E7 +:102DD0006E02A0916F02B091700226B5A89B05C04B +:102DE0002F3F19F00196A11DB11D3FBF6627782F17 +:102DF000892F9A2F620F711D811D911D42E0660F70 +:102E0000771F881F991F4A95D1F708958F929F9237 +:102E1000AF92BF92CF92DF92EF92FF926B017C0153 +:102E20000E94E3164B015C01C114D104E104F104DA +:102E3000F1F00E9427190E94E316681979098A099E +:102E40009B09683E73408105910570F321E0C21A29 +:102E5000D108E108F10888EE880E83E0981EA11CD5 +:102E6000B11CC114D104E104F10429F7DDCFFF90B6 +:102E7000EF90DF90CF90BF90AF909F908F9008958C +:102E80008230910538F0880F991F880F991F059798 +:102E90000197F1F70895789484B5826084BD84B574 +:102EA000816084BD85B5826085BD85B5816085BD45 +:102EB000EEE6F0E0808181608083E1E8F0E010825E +:102EC000808182608083808181608083E0E8F0E09F +:102ED000808181608083E1EBF0E080818460808389 +:102EE000E0EBF0E0808181608083EAE7F0E08081C0 +:102EF0008460808380818260808380818160808320 +:102F00008081806880831092C1000895833081F0B1 +:102F100028F4813099F08230A1F008958730A9F02B +:102F20008830B9F08430D1F4809180008F7D03C067 +:102F3000809180008F7780938000089584B58F778B +:102F400002C084B58F7D84BD08958091B0008F77D5 +:102F500003C08091B0008F7D8093B0000895CF931F +:102F6000DF9390E0FC01E458FF4F2491FC01E0570F +:102F7000FF4F8491882349F190E0880F991FFC014D +:102F8000E255FF4FA591B4918C559F4FFC01C5911F +:102F9000D4919FB7611108C0F8948C912095822339 +:102FA0008C93888182230AC0623051F4F8948C910A +:102FB000322F309583238C938881822B888304C0A1 +:102FC000F8948C91822B8C939FBFDF91CF910895C1 +:102FD0000F931F93CF93DF931F92CDB7DEB7282FA8 +:102FE00030E0F901E859FF4F8491F901E458FF4FAF +:102FF0001491F901E057FF4F04910023C9F0882391 +:1030000021F069830E9486176981E02FF0E0EE0FBE +:10301000FF1FEC55FF4FA591B4919FB7F8948C9189 +:10302000611103C01095812301C0812B8C939FBF38 +:103030000F90DF91CF911F910F9108951F920F92E2 +:103040000FB60F9211242F938F939F93EF93FF93BB +:10305000E0918102F09182028081E0918702F091FB +:10306000880282FD12C0908180918A028F5F8F73E7 +:1030700020918B02821751F0E0918A02F0E0EF5824 +:10308000FD4F958F80938A0201C08081FF91EF915F +:103090009F918F912F910F900FBE0F901F901895B9 +:1030A0001F920F920FB60F9211242F933F934F93BD +:1030B0005F936F937F938F939F93AF93BF93EF93A0 +:1030C000FF9381E792E00E946319FF91EF91BF9116 +:1030D000AF919F918F917F916F915F914F913F91B0 +:1030E0002F910F900FBE0F901F90189581E792E0DF +:1030F0000E94281921E0892B09F420E0822F0895ED +:10310000109274021092730288EE93E0A0E0B0E097 +:103110008093750290937602A0937702B093780221 +:1031200080EA91E0909372028093710285EC90E0C6 +:1031300090937E0280937D0284EC90E090938002D5 +:1031400080937F0280EC90E09093820280938102D2 +:1031500081EC90E0909384028093830282EC90E073 +:10316000909386028093850286EC90E0909388028B +:103170008093870210928A0210928B0210928C0226 +:1031800010928D020895CF92DF92EF92FF920F93EB +:103190001F93CF93DF937C016A01EB0100E010E005 +:1031A0000C151D0571F06991D701ED91FC9101900D +:1031B000F081E02DC7010995892B19F00F5F1F4F92 +:1031C000EFCFC801DF91CF911F910F91FF90EF904A +:1031D000DF90CF9008956115710581F0DB010D90AE +:1031E0000020E9F7AD0141505109461B570BDC01A6 +:1031F000ED91FC910280F381E02D099480E090E054 +:1032000008956DE871E00C94EB180F931F93CF9322 +:10321000DF93EC010E94EB188C01CE010E94011992 +:10322000800F911FDF91CF911F910F910895089505 +:103230000E944B170E9417190E948106C5E5D9E12B +:103240000E94B9052097E1F30E945519F9CF08951E +:10325000FC01818D228D90E0805C9F4F821B910943 +:103260008F7399270895FC01918D828D981731F005 +:10327000828DE80FF11D858D90E008958FEF9FEF0F +:103280000895FC01918D828D981761F0828DDF0188 +:10329000A80FB11D5D968C91928D9F5F9F73928F49 +:1032A00090E008958FEF9FEF089586E798E1892BCE +:1032B00049F080E090E0892B29F00E947618811176 +:1032C0000C9400000895FC01848DDF01A80FB11D4E +:1032D000A35ABF4F2C91848D90E001968F7399274C +:1032E000848FA689B7892C93A089B1898C91806439 +:1032F0008C93938D848D981306C00288F389E02DFA +:1033000080818F7D80830895CF93DF93EC01888D3A +:103310008823C9F0EA89FB89808185FD05C0A889D9 +:10332000B9898C9186FD0FC00FB607FCF5CF80815F +:1033300085FFF2CFA889B9898C9185FFEDCFCE01A9 +:103340000E946319E7CFDF91CF910895CF92DF926A +:10335000FF920F931F93CF93DF931F92CDB7DEB7EA +:103360006C0181E0D60158968C9358975B969C919E +:103370005B975C968C915C97981307C05096ED9183 +:10338000FC915197808185FD2EC0F601038D10E0E0 +:103390000F5F1F4F0F731127F02EF601848DF81267 +:1033A00011C00FB607FCF9CFD6015096ED91FC91F4 +:1033B0005197808185FFF1CFC60169830E9463190F +:1033C0006981EBCF838DE80FF11DE35AFF4F6083D6 +:1033D000D6015B960C935B975296ED91FC915397B7 +:1033E000808180620CC0D6015696ED91FC91579772 +:1033F00060835096ED91FC91519780818064808329 +:1034000081E090E00F90DF91CF911F910F91FF909D +:10341000DF90CF900895AA1BBB1B51E107C0AA1FE4 +:10342000BB1FA617B70710F0A61BB70B881F991F65 +:103430005A95A9F780959095BC01CD01089597FB09 +:10344000072E16F4009407D077FD09D00E940B1ABE +:1034500007FC05D03EF4909581959F4F0895709597 +:1034600061957F4F0895EE0FFF1F0590F491E02DB9 +:103470000994DC0101C06D9341505040E0F708957C +:04348000F894FFCFEE +:1034840000000E0380000C00010032000000040064 +:103494000200010003004F534320646964206E6FEF +:1034A400742073746172742E00000000006C0200BA +:1034B400000000490100000000E91154014A014FD5 +:1034C400018F009000CE00CF00000000004504886A +:1034D40000D900D703F4008A008B00F700FC000138 +:1034E40001D00009010C01FEFF00003F01000000B3 +:1034F400007108FD07F20E000000002A13880089FD +:10350400122B1681127B148B0084128D000D0A007D +:103514006E616E00696E66006F76660000000000E2 +:0C352400A619C31828194119331984197D +:00000001FF diff --git a/USB Mouse Interface/arduino/USBHIDBootMouse/USBHIDBootMouse.ino.with_bootloader.standard.hex b/USB Mouse Interface/arduino/USBHIDBootMouse/USBHIDBootMouse.ino.with_bootloader.standard.hex new file mode 100644 index 0000000..49b6f45 --- /dev/null +++ b/USB Mouse Interface/arduino/USBHIDBootMouse/USBHIDBootMouse.ino.with_bootloader.standard.hex @@ -0,0 +1,887 @@ +:100000000C945E000C9486000C9486000C94860080 +:100010000C9486000C9486000C9486000C94860048 +:100020000C9486000C9486000C9486000C94860038 +:100030000C9486000C9486000C9486000C94860028 +:100040000C948D160C9486000C941E180C94501869 +:100050000C9486000C9486000C9486000C94860008 +:100060000C9486000C948600000000080002010039 +:100070000003040700000000000000000102040863 +:100080001020408001020408102001020408102002 +:10009000040404040404040402020202020203032E +:1000A0000303030300000000250028002B000000CC +:1000B0000000240027002A00D906801811241FBE42 +:1000C000CFEFD8E0DEBFCDBF11E0A0E0B1E0E4E8C3 +:1000D000F4E302C005900D92AC3AB107D9F723E0E2 +:1000E000ACEAB1E001C01D92AE30B207E1F710E01A +:1000F000CCEBD0E004C02297FE010E94351AC83B29 +:10010000D107C9F70E9418190C94401A0C940000EA +:1001100080E00895089580E0089581E008950895AD +:100120008091080190910901019729F41092090129 +:100130001092080106C081E090E09093090180933D +:10014000080180910601909107010C9719F488E04D +:1001500090E002C08CE090E090930701809306014C +:1001600080910A0190910B01A0910C01B0910D01B9 +:10017000C297A105B10529F484E690E0A0E0B0E0C3 +:1001800004C082E390E0A0E0B0E080930A01909385 +:100190000B01A0930C01B0930D01089508950895EB +:1001A000860F911D860F911DFC015687458781E0C2 +:1001B0000895CF93DF93EC018C819D81DC01ED915B +:1001C000FC910480F581E02D6E8109951F86188AC7 +:1001D00081E08A8B1E821B8A1C8A1D8A1E8A1F8AC6 +:1001E00080E0DF91CF910895FC018681089581E040 +:1001F000633009F080E0089581E0623009F080E02A +:100200000895860F911D860F911DFC0185859685A9 +:100210000895FC0187890895EF92FF92CF93DF93B1 +:10022000FC01E7012289223029F16787408B8B810D +:1002300083708330F9F48A8187FF1CC08E81908D92 +:10024000981708F4808F822F90E0DC01AA0FBB1F63 +:10025000A80FB91FAE0FBF1F8A818F7017968C939E +:1002600017978C8118968C93189784E019968C9325 +:100270002F5F228BDF91CF91FF90EF900895EF9247 +:10028000FF920F9302970E940C010F91FF90EF9045 +:100290000895089561E080910E010C94E81760E0E4 +:1002A00080910E010C94E8170F931F93CF93DF9367 +:1002B000EB018981992787FD909597FF03C0919560 +:1002C0008195910960910601709107010E941F1AA2 +:1002D0006F5F7F4F70935A026093590200E010E005 +:1002E0008091590290915A02081719070CF068C0C2 +:1002F0002981332727FD30958091080190910901CC +:100300008217930734F561E0809114010E94E81789 +:1003100080910A0190910B010E94401761E0809149 +:1003200012010E94E81780910A0190910B010E942E +:10033000401760E0809114010E94E81780910A0143 +:1003400090910B010E94401760E0809112010E9481 +:10035000E8172981332727FD309580910801909176 +:1003600009019195819591092817390734F561E0C4 +:10037000809112010E94E81780910A0190910B016F +:100380000E94401761E0809114010E94E81780915B +:100390000A0190910B010E94401760E080911201C8 +:1003A0000E94E81780910A0190910B010E9440176A +:1003B00060E0809114010E94E8170F5F1F4F90CFFB +:1003C0008A81992787FD909597FF03C09195819524 +:1003D000910960910601709107010E941F1A6F5FD9 +:1003E0007F4F709358026093570200E010E08091B5 +:1003F000570290915802081719070CF068C02A811B +:10040000332727FD309580910801909109018217CB +:10041000930734F561E0809110010E94E817809104 +:100420000A0190910B010E94401761E080915B02EC +:100430000E94E81780910A0190910B010E944017D9 +:1004400060E0809110010E94E81780910A0190916C +:100450000B010E94401760E080915B020E94E81748 +:100460002A81332727FD3095809108019091090159 +:100470009195819591092817390734F561E08091AC +:100480005B020E94E81780910A0190910B010E9483 +:10049000401761E0809110010E94E81780910A01E5 +:1004A00090910B010E94401760E080915B020E94D6 +:1004B000E81780910A0190910B010E94401760E0BB +:1004C000809110010E94E8170F5F1F4F90CFDF91BE +:1004D000CF911F910F9108952F923F924F925F926B +:1004E0006F927F928F929F92AF92BF92CF92DF9244 +:1004F000EF92FF920F931F93CF93DF9300D000D022 +:10050000CDB7DEB76C017C836B835A8349834C0182 +:1005100080E1880E911C5601A7E0AA0EB11C11E0E3 +:1005200044E0442E57E0352E3601B2E16B0E711CCB +:1005300063E0262E72E0572E8B819C81892B09F473 +:1005400012C1F60180A1823061F128F4882349F0BC +:10055000813079F0F1CF833041F1843009F44BC020 +:10056000EBCF54828581968190878783528651860E +:1005700010A3AE014D5F5F4FBE016F5F7F4FC5019E +:100580000E944C12882309F4EEC0D6011596ED9115 +:10059000FC911697808191968C9391978181929688 +:1005A0008C93F6017682658220A2D60192968C9178 +:1005B000843081F018F4823079F014C0853081F0F5 +:1005C000813281F4D60191968C9191978250149644 +:1005D0008C9308C0F60113A2D60114963C9202C077 +:1005E000F6018483F60185819681908787838481D3 +:1005F0008287818740A2D60192968C918430B1F097 +:10060000853009F442C0823009F06EC0AE014D5F02 +:100610005F4FBE016F5F7F4FC5010E944C12882360 +:1006200009F4A1C0F601858984A38EC0AE014D5F97 +:100630005F4FBE016F5F7F4FC5010E944C12882340 +:1006400009F491C0D60155968C915597833009F0E5 +:100650007BC056968C915697813009F075C098965C +:100660009C91989757968C91992321F0882309F4AF +:100670006BC003C0823009F067C0F60113A39289F2 +:1006800096A3938997A385A35FC0AE014D5F5F4F8B +:10069000BE016F5F7F4FC5010E944C12882309F491 +:1006A00062C0D60193968C919397882309F44CC02D +:1006B00012968D919C911397009709F445C0DC0127 +:1006C000ED91FC910190F081E02D7401D601959699 +:1006D0000C91959797962C91979796964C91969703 +:1006E00094966C91099530C0F60181A19585992366 +:1006F00019F0913031F023C090E0029797878687F8 +:1007000015872B813C8189819A81782F692FD601A9 +:100710001E964D915C911F9741155105E9F0019688 +:100720002115310541F041505109F601578746879F +:1007300021503109EACF79836A831C821B82F6013A +:1007400086859785892B79F4D60116969C928E9290 +:10075000159790961C92F0CE9A8389833C832B83C5 +:10076000F6011586ECCF0F900F900F900F90DF9150 +:10077000CF911F910F91FF90EF90DF90CF90BF909E +:10078000AF909F908F907F906F905F904F903F9031 +:100790002F9008959FB7F89420916602809164028B +:1007A000213019F48DBB9FBF08958FBF0895CF925C +:1007B000DF92EF92FF920F931F93CF93DF93CDB70A +:1007C000DEB762970FB6F894DEBF0FBECDBF6C01E7 +:1007D000DC0157968C91882369F00E94D716F601A8 +:1007E0000389148925893689601B710B820B930B51 +:1007F00097FF02C0F12C39C0F601838590E09A8BF7 +:10080000898BE12C8E010F5F1F4F9E012F5E3F4FA2 +:1008100042856681848195810E945F0EF82E811148 +:1008200018C029893A892330310598F0D6011D96E0 +:100830008D919C911E97009761F0DC01ED91FC91E8 +:100840000190F081E02D8E010F5F1F4F40E0B60157 +:1008500009950E94D716F601208D620F711D811D2A +:10086000911D638B748B858B968B8F2D62960FB643 +:10087000F894DEBF0FBECDBFDF91CF911F910F91D6 +:10088000FF90EF90DF90CF9008953F924F925F924C +:100890006F927F928F929F92AF92BF92CF92DF9290 +:1008A000EF92FF920F931F93CF93DF93CDB7DEB7F5 +:1008B000EB970FB6F894DEBF0FBECDBF7C01462E7E +:1008C000342E522EDC011496AD90BC9015971696DE +:1008D0008C911697811111C158961C92D501ED91FA +:1008E000FC910190F081E02D60E0C50109956C015B +:1008F000009711F486ED0BC1FC018080918081147A +:10090000910409F4FCC03701F7E06F0E711CDC01A3 +:1009100011967C926E9214965C928E01065D1F4F2A +:1009200028E030E040E060E0F701848195810E949A +:100930005E0D182F8111E7C01AA5D6018D929C92E9 +:10094000D501ED91FC910280F381E02D232D40E053 +:10095000642DC5010995F7018683882309F4D1C068 +:1009600099A99087282F40E060E0848195810E94BA +:100970000B0E982ED501ED91FC91D60114961C9288 +:10098000882361F00480F581E02DD70116966C91E3 +:10099000C5010995F7011682892DB9C00190F08132 +:1009A000E02DD70116966C91C5010995009709F4C1 +:1009B000A1CF133108F012E1FC01548211110FC0D4 +:1009C0004BAC512CEDE2AE2EE1E0BE2E4701F2E041 +:1009D0008F0E911C6E0181E1C80ED11C39C0212FF0 +:1009E00030E08E01065D1F4F40E0D70116966C91F6 +:1009F000169714968D919C9115970E945E0D182F55 +:100A0000811171C0DDCFBA82A9829C828B821E8641 +:100A1000188A1F8619A21AA21BA219A6DF82CE82EB +:100A2000D986C8868D818B878A87DD86CC868E01A4 +:100A30000F5F1F4F252D40E0F7016681848195816E +:100A40000E94AC0DD70152968C91823019F05394CC +:100A50005410D9CFF7018289823009F043C0930145 +:100A600042E06681848195810E94AC0868EE73E063 +:100A700080E090E00E940617D7011F962C911F97E7 +:100A800040E016966C91169714968D919C9115974F +:100A90000E943A0E182F811126C068EE73E080E0A4 +:100AA00090E00E94061740E060E0C7010E94BF117D +:100AB000182F811118C020E040E060E0C7010E94BB +:100AC000951183E391E09A838983AE014F5F5F4F75 +:100AD00060E070E0C7010E94521181E0F701878B4E +:100AE00080E015C011EDD701ED91FC910480F581F6 +:100AF000E02DC7010995812F0AC089ED08C087ED57 +:100B000006C084ED04C0F60191828082ECCFEB96A2 +:100B10000FB6F894DEBF0FBECDBFDF91CF911F910E +:100B20000F91FF90EF90DF90CF90BF90AF909F908C +:100B30008F907F906F905F904F903F90089520919D +:100B40006602222399F03FB7F89420916602213083 +:100B500059F42DB3209364024DB320916502209582 +:100B600024232DBB3FBF02C0309364028CBD9DBDCA +:100B7000089580EE91E00C9459102A9A0895CF932D +:100B8000C82F80E591E00E949F052A98CEBD000005 +:100B90000DB407FEFDCF8EB51EBC00000DB407FEE0 +:100BA000FDCFCEB50E94BD058091660281110E94E5 +:100BB000CA038C2FCF9108951F93CF93DF931F9279 +:100BC000CDB7DEB7182F80E591E069830E949F05BD +:100BD0002A98812F82608EBD69810DB407FEFDCFFA +:100BE0008EB56EBD0DB407FEFDCF8EB50E94BD055E +:100BF00080916602882331F00F90DF91CF911F9191 +:100C00000C94CA030F90DF91CF911F91089588EF44 +:100C10000E94BF05807C8034A1F018F4882301F184 +:100C20000895803819F0803CB9F0089588ED0E944D +:100C3000BF0581FD0BC069EC88ED0E94DC0582E0F8 +:100C40000CC088ED0E94BF0581FDF5CF6BEC88EDEF +:100C50000E94DC0583E001C081E08093AC0108952F +:100C600061ED88ED0E94DC051092AC0108950F93B0 +:100C70001F93CF93DF938C01229A0E94BD050E949F +:100C80005716229A0E94BD05219868E188E80E94C3 +:100C9000DC0560E288E70E94DC0560E088E70E94EE +:100CA000DC05C0E0D0E088E60E94BF05219680FD0B +:100CB00006C0CF3F8FEFD807B1F78FEF1DC061ECB3 +:100CC00088ED0E94DC0560E680ED0E94DC0564E0B2 +:100CD00088EE0E94DC0588EE0E94BF0582FFFBCFF4 +:100CE000C8010E94070660E288EC0E94DC0561E012 +:100CF00080E80E94DC0580E0DF91CF911F910F9189 +:100D0000089561E0809114010E94AF1761E0809125 +:100D100012010E94AF1761E0809110010E94AF178D +:100D200061E080915B020E94AF1761E080910E014B +:100D30000E94AF1780EE91E00E9437068F3F31F49A +:100D400066E171E081E792E00E94051968EC70E0CD +:100D500080E090E00E9406170E94D71668577C4EEC +:100D60008F4F9F4F6093B2017093B3018093B40192 +:100D70009093B5018DEA91E09093C4018093C301F3 +:100D800060E0809114010E94E81760E080911201F8 +:100D90000E94E81760E0809110010E94E81760E06F +:100DA00080915B020E94E81761E080910E010C9433 +:100DB000E81780EE91E00E946A0760EE71E08FEC28 +:100DC00091E00E94E31480EE91E09093BB01809348 +:100DD000BA018DE491E09093B7018093B6018BE660 +:100DE00091E09093B9018093B8011092C9011092DB +:100DF000CA011092CB011092CC011092CD01109239 +:100E0000BD0188E08093BE018CE38093BF01109206 +:100E1000C0011092C10184E08093C20181E08093FF +:100E2000C8011092C7011092C5011092C40110921E +:100E3000C301E6E3F2E080E090E021913191232BC1 +:100E400051F4FC01EE0FFF1FEA5CFD4F86EB91E0D1 +:100E50009183808304C001968031910571F789E305 +:100E600091E09093AE018093AD010895FC01208143 +:100E70002EBDDC019B012150310951F011965C918E +:100E800011970DB407FEFDCF4EB55EBD4D93F3CF68 +:100E9000FB013197E80FF91F0DB407FEFDCF8EB5AA +:100EA000808308958EBD00000DB407FEFDCF8EB582 +:100EB000089580916602882361F09FB7F89420918D +:100EC000660280916402213019F48DBB9FBF0895A2 +:100ED0008FBF0895FC0181E791E0918380831582A3 +:100EE000108681E0818712869F012E5F3F4F3783F6 +:100EF0002683128288E083838CE3848380E090E001 +:100F000041E0DF01A80FB91F1D961C921D971E9688 +:100F10004C931E971F961C921F971C963C932E93E2 +:100F20001B9705968B34910561F7EA58FF4F1082A5 +:100F300081E1809361020895CF92DF92EF92FF9258 +:100F40000F931F93CF93DF931F92CDB7DEB77C0132 +:100F50006623B1F18C01C12CD12CF801EA5AFF4F64 +:100F600080819181009719F1DC01ED91FC91008461 +:100F7000F185E02D698309956981861318C0F60112 +:100F8000BB96EE0FFF1FEE0DFF1D80819181DC01EE +:100F9000ED91FC910480F581E02D0F90DF91CF91D0 +:100FA0001F910F91FF90EF90DF90CF900994BFEFCA +:100FB000CB1ADB0A0E5F1F4FE0E1CE16D10469F6B3 +:100FC00080E00F90DF91CF911F910F91FF90EF90F4 +:100FD000DF90CF90089520E030E041E0FC01E20F87 +:100FE000F31F5585561739F04F5F2B5F3F4F403148 +:100FF000A9F780E00895842F0895EF92FF921F9340 +:10100000CF93DF9300D0CDB7DEB77C01162F67FDFD +:101010005FC0283008F05CC0442331F0DC01159635 +:101020008C91873009F454C060E0C7012A8349835A +:101030000E94EB072A814981882309F449C0E82FDF +:10104000F0E0111123C085E08E9FD0018F9FB00D7D +:101050001124AE0DBF1D442359F081E418968C93E2 +:10106000D70115968C9115978F5F15968C9303C0B9 +:1010700081E018968C9385E08E9FD0018F9FB00DF4 +:101080001124AE0DBF1D18968C9123C0612F67707F +:10109000660F660F660F442361F06064D7011596F2 +:1010A0008C9115978F5F15968C938770687F682B4E +:1010B00003C02770687B622B85E08E9FD0018F9FD5 +:1010C000B00D1124AE0DBF1D18966C93862F01C074 +:1010D00080E00F900F90DF91CF911F91FF90EF90E4 +:1010E0000895CF93DF93EC01662359F00E94EB073C +:1010F000882349F09E0145E0849F200D311D112475 +:10110000C901069602C080E090E0DF91CF9108957A +:10111000CF93DF931F92CDB7DEB749830E9471084A +:101120004981009789F0DC01ED91FC91119730978E +:1011300059F013969C9180E0891731F02081241793 +:1011400031F033968F5FF8CF80E090E001C0CF019F +:101150000F90DF91CF910895EF92FF921F93CF935D +:10116000DF931F92CDB7DEB7162F79012115310518 +:1011700069F049830E947108FC014981009741F0A0 +:101180001283F182E082438380E003C088ED01C0D6 +:1011900086ED0F90DF91CF911F91FF90EF90089512 +:1011A0002A9808951F93CF93DF931F92CDB7DEB790 +:1011B000182F80E591E00E949F050E94D008812FA2 +:1011C0000E94520780E00E94520789830E94BD0559 +:1011D0000E94590789810F90DF91CF911F91089547 +:1011E0001F93CF93DF9300D01F92CDB7DEB7182F98 +:1011F00080E591E06B830E949F050E94D0081260F9 +:1012000019836B816A8362E070E0CE0101960E94CF +:1012100036070E94BD050E9459070F900F900F904E +:10122000DF91CF911F9108958F929F92BF92CF929D +:10123000DF92EF92FF920F931F93CF93DF931F9252 +:10124000CDB7DEB74C01B62E690149830E94710803 +:101250007C014981009709F443C0FC0180819181A0 +:10126000892B09F43FC06B2DC4010E948808F60148 +:10127000918380830097C1F1FC01228126952695F8 +:10128000822F90E0409764F441E050E060E070E02D +:1012900004C0440F551F661F771F2A95D2F702C05E +:1012A00040E050E841505109F801518340836B2DD3 +:1012B00080EE0E94F00888ED0E94D208F701948128 +:1012C000992339F0F401EA58FF4F60816260682B7E +:1012D00002C0682F697F88ED0E94F00880E005C099 +:1012E00086ED03C087ED01C08BED0F90DF91CF91AC +:1012F0001F910F91FF90EF90DF90CF90BF909F9044 +:101300008F9008958F929F92AF92BF92CF92DF926B +:10131000EF92FF920F931F93CF93DF931F92CDB75E +:10132000DEB7A62E890149830E94D7166B017C0186 +:1013300088E8C80E83E1D81EE11CF11C812C912C99 +:10134000B12C20E04981A42A29830E94D7166C1968 +:101350007D098E099F09298197FF2DC06A2D80EF95 +:101360000E94F0080E94D7166C197D098E099F090A +:1013700097FF09C088EC0E94D20887FFF3CF60E88E +:1013800088EC0E94F00888EF0E94D208282F2F7066 +:10139000243019F02E3059F00EC0EFEF8E1A9E0A4D +:1013A0000115110589F28016910671F604C0B394F7 +:1013B000F3E0BF12C9CF822F0F90DF91CF911F9121 +:1013C0000F91FF90EF90DF90CF90BF90AF909F90E4 +:1013D0008F9008959F92AF92BF92CF92DF92EF923B +:1013E000FF920F931F93CF93DF937C01B42E122FA4 +:1013F000AA24A394DC01A60FB11DA60FB11D6D0197 +:1014000086E5C80ED11CC42FD0E0AB96CC0FDD1FF3 +:10141000CE0DDF1DD6018D919C91DC01ED91FC91EB +:101420000280F381E02D202F412F6B2D0995803E06 +:10143000C1F4B1100BC061E088EE0E94F00866E6CE +:1014400070E080E090E00E94061715C088819981C5 +:10145000DC01ED91FC910284F385E02D612F09956B +:101460000AC08D3031F48FEF8A0D833008F042C00E +:1014700017C0811142C0F60180819181DC01ED919C +:10148000FC910190F081E02D202F412F6B2D0995CB +:10149000982EBDE08B130CC08FEF8A0D833050F473 +:1014A00064E670E080E090E00E940617A394B2CF5B +:1014B000882311F1B1100BC061E088EE0E94F008A2 +:1014C00066E670E080E090E00E94061711C0EB2D08 +:1014D000F0E0BB96EE0FFF1FEE0DFF1D80819181A6 +:1014E000DC01ED91FC910284F385E02D612F0995DB +:1014F000892D03C08DE001C080E0DF91CF911F9165 +:101500000F91FF90EF90DF90CF90BF90AF909F90A2 +:1015100008950F931F93CF93DF93D82FC62F8A017F +:1015200080E591E00E949F050E94D0088D2F826087 +:101530000E945207D0E0209721F0BE01C8010E940E +:101540003607C00FD11F0E94BD050E945907CE016A +:10155000DF91CF911F910F9108952F923F924F925B +:101560005F926F927F928F929F92AF92BF92CF9233 +:10157000DF92EF92FF920F931F93CF93DF9300D0F0 +:1015800000D01F92CDB7DEB77D836C835A0169010D +:10159000FB0121808FEF820D803408F06FC00E9424 +:1015A000D7162B013C01F8E84F0EF3E15F1E611CDA +:1015B000711CEC81FD81828180FF02C060E801C066 +:1015C00060E488EE0E94F00820E0312CC114D104C0 +:1015D00009F444C076012C143D0408F47101EA8238 +:1015E000A8016E2D80E10E94890A6E2D88E30E9479 +:1015F000F008EC81FD816081606280EF0E94F0085C +:1016000088EC0E94D20887FFFBCF60E888EC0E943C +:10161000F00888EF0E94D208282F2F70812C912C7F +:101620001982222309F46BC02B830E94D7166419F8 +:101630007509860997092B8197FF61C0263001F152 +:101640002E3009F456C0243049F4FFEF8F1A9F0A58 +:10165000A114B10459F18A149B0441F588EF2B833E +:101660000E94D20885FB882780F9EC81FD81928158 +:1016700080FB90F992832B81822F46C08AED44C073 +:1016800088EF0E94D20885FB882780F991E089279E +:10169000EC81FD81928180FB90F9928390FF02C0E2 +:1016A00060E801C060E488EE0E94F00860E088E332 +:1016B0000E94F008F801608180E10E94F0086A81D0 +:1016C00088E30E94F008EC81FD816081606280EF18 +:1016D0000E94F00888EC0E94D20887FFFBCF60E8E8 +:1016E00088EC0E94F00888EF0E94D208282F2F7003 +:1016F00098CF89818F5F89838330C1F6AFCFCE18B1 +:10170000DF080E0D1F1D62CF0F900F900F900F90EE +:101710000F90DF91CF911F910F91FF90EF90DF908D +:10172000CF90BF90AF909F908F907F906F905F9081 +:101730004F903F902F9008952F923F924F925F923B +:101740006F927F928F929F92AF92BF92CF92DF92D1 +:10175000EF92FF920F931F93CF93DF93CDB7DEB736 +:1017600029970FB6F894DEBF0FBECDBF1C01798755 +:1017700068875B834A836901D9018D909C9011979A +:10178000FB01F181F9831D921C92DB0112968C9171 +:1017900081FF02C060E201C060E188EE0E94F008B3 +:1017A0008E2D90E0A0E0B0E08C839D83AE83BF835C +:1017B000482C2A813B81A885B9854C9160E0C10104 +:1017C0000E948209F82EB6E08B1316C088EF0E94A3 +:1017D000D2088295817091E08927E885F985928108 +:1017E00080FB91F9928391FF02C060E201C060E149 +:1017F00088EE0E94F008DDCF811166C088EC0E945F +:10180000D20882FF5FC080E30E94D208582E90E089 +:101810008816990608F4542CD6018D919C91652C5C +:10182000712CF401E81BF90BCF01F7FF02C080E037 +:1018300090E05301861597050CF45C0180E591E07A +:101840000E949F050E94D00888E00E945207A501CF +:1018500060E070E0C8010E94391AA114B10421F0BF +:10186000B501C8010E9436070A0D1B1D0E94BD0567 +:101870000E94590764E088EC0E94F008D6018D911F +:101880009C911197860D971D8D939C93B9815B1642 +:1018900018F08815990560F088EF0E94D2088295AB +:1018A0008170E885F985928180FB91F992830CC063 +:1018B000EE2009F47ECF6C817D818E819F810E9414 +:1018C000061777CF30EFF32E8F2D29960FB6F894A9 +:1018D000DEBF0FBECDBFDF91CF911F910F91FF9063 +:1018E000EF90DF90CF90BF90AF909F908F907F90C0 +:1018F0006F905F904F903F902F9008952F923F925E +:101900004F925F926F927F928F929F92AF92BF920F +:10191000CF92DF92EF92FF920F931F93CF93DF93BB +:10192000CDB7DEB762970FB6F894DEBF0FBECDBF5E +:101930003C01F42E322E202E5C2D4FA058A4C9A4B9 +:10194000DAA4188A1F861E861D868E01035F1F4F2C +:101950009E01215F3F4F598B0E94140959898111C3 +:1019600094C039822A82EB825C83BE82AD829886E3 +:101970008F82AE014F5F5F4F68E080E20E94890A6C +:101980002D853E854F2D60E1C3010E948209182FED +:1019900081117AC0232C221C2224221CC114D104C0 +:1019A00009F466C0EF85F8898281222009F453C0CA +:1019B00082608283540133243394A114B10409F466 +:1019C00055C05C864B864D855E856F857889E12C98 +:1019D00086019E01255F3F4FC3010E949C0B182F7B +:1019E0008630B1F42F85388988EF298B3A8B0E9495 +:1019F000D20885FB882780F9832529893A89D9016E +:101A000012969C91129780FB91F912969C93D5CFD8 +:101A100081113AC0EBA5FCA53097A1F00190F081AF +:101A2000E02D0190F081E02DC4018A199B099A876D +:101A300089876B857C859E01275F3F4FA6018BA51B +:101A40009CA509958B859C85A81AB90A84159505CE +:101A500008F0B3CF0DC0816082834D855E8586011D +:101A60009201BF01C3010E94AD0A182F11110CC0D1 +:101A70002D853E85222011F060EA01C060E84F2DDF +:101A8000C3010E94820901C0812F62960FB6F894AB +:101A9000DEBF0FBECDBFDF91CF911F910F91FF90A1 +:101AA000EF90DF90CF90BF90AF909F908F907F90FE +:101AB0006F905F904F903F902F9008958F929F92DC +:101AC000AF92BF92CF92EF920F931F931F921F92EC +:101AD0001F930F933F932F934901A12CB12CCC243A +:101AE000C394E12C06E020E80E947E0C0F900F903A +:101AF0000F900F900F900F901F910F91EF90CF903C +:101B0000BF90AF909F908F9008958F929F92AF92C9 +:101B1000BF92CF92EF92FF920F931F921F92FF926C +:101B2000EF923F932F934901A12CB12C52E0C52E87 +:101B3000E02E06E020E80E947E0C0F900F900F90A0 +:101B40000F900F900F900F91FF90EF90CF90BF905C +:101B5000AF909F908F9008953F924F925F926F92B7 +:101B60007F928F929F92AF92BF92CF92DF92EF922D +:101B7000FF920F931F93CF93DF93CDB7DEB7C0547F +:101B8000D1090FB6F894DEBF0FBECDBF3C01562E73 +:101B9000442E322EB02ECE0101966C017C01022F14 +:101BA00029E030E0C3010E94850D81111BC08B80AC +:101BB0009C801F93BF92DF92CF921F9280E48F93FD +:101BC000A12CB12C62E0C62EE32C06E020E8442DC7 +:101BD000652DC3010E947E0C0F900F900F900F9007 +:101BE0000F900F90C05CDF4F0FB6F894DEBF0FBEB2 +:101BF000CDBFDF91CF911F910F91FF90EF90DF90BC +:101C0000CF90BF90AF909F908F907F906F905F909C +:101C10004F903F9008958F929F92AF92BF92CF9234 +:101C2000EF920F93CF931F921F921F921F921F92BA +:101C30001F92812C912CA12CB12CC12CE22E05E0FD +:101C400020E00E947E0CC82F6CE271E080E090E002 +:101C50000E9406170F900F900F900F900F900F900B +:101C60008C2FCF910F91EF90CF90BF90AF909F901E +:101C70008F9008958F929F92AF92BF92CF92EF92E2 +:101C80000F931F921F921F921F921F921F92812CDF +:101C9000912CA12CB12CC12CE22E09E020E00E9455 +:101CA0007E0C0F900F900F900F900F900F900F9150 +:101CB000EF90CF90BF90AF909F908F9008958F92AC +:101CC0009F92AF92BF92CF92DF92EF920F931F93AA +:101CD000CF93DF9300D000D0CDB7DEB76C015901B0 +:101CE00048011C821B821A8219828E010F5F1F4FCE +:101CF0009E012D5F3F4F0E941409811109C0498147 +:101D00005A816B817C8184019501C6010E949C0BE4 +:101D10000F900F900F900F90DF91CF911F910F9127 +:101D2000EF90DF90CF90BF90AF909F908F900895ED +:101D3000CF92DF92FF920F931F93CF93DF9300D048 +:101D4000CDB7DEB76C01662309F442C0062F10E060 +:101D500085E0689FB0011124F601E60FF71F80852A +:101D6000282F277086FF19C031E0E5E0FE2EF6012E +:101D7000F39EE00DF11D112480858695869586954C +:101D800087708217E1F03F5F303188F3F60185817B +:101D9000821303C02150F601258385E0809FF00166 +:101DA000819FF00D1124EC0DFD1D108681E08187CF +:101DB000128682E0C80ED11CD782C68209C0632F6A +:101DC000C6012A8339830E94980E2A813981CFCF98 +:101DD0000F900F90DF91CF911F910F91FF90DF90A7 +:101DE000CF900895CF93DF93EC016134A1F4FC010F +:101DF000855B9F4F41E09E012E5F3F4F15864687D2 +:101E00001786348723873596E817F907B9F71D82B7 +:101E1000DF91CF9108950E94EB07682FCE01DF91EB +:101E2000CF910C94980E0F931F93CF93DF93EC01F7 +:101E3000022FCA3F8FEFD80711F486ED29C08E819B +:101E40009F81892B01F12A87242F40E0CE010E9437 +:101E5000FD07182F8823C9F0682FCE010E94710852 +:101E6000009759F3FC010483212F40E060E0CE018C +:101E70000E940B0E082F882351F0612FCE010E9483 +:101E8000F20E802F05C087ED03C084ED01C080E015 +:101E9000DF91CF911F910F9108952F923F924F9212 +:101EA0005F926F927F928F929F92AF92BF92CF92EA +:101EB000DF92EF92FF920F931F93CF93DF93CDB7F3 +:101EC000DEB766970FB6F894DEBF0FBECDBF7C01BC +:101ED000862E742E922E1B8A88E08C8B8CE38D8B41 +:101EE000D701ED91FC910190F081E02D60E0C701F8 +:101EF00009956C01009709F4ABC0FC01A080B1808A +:101F0000CE0143969183808394828E010F5F1F4F91 +:101F100022E130E040E060E0C7010E945E0DD601A2 +:101F2000AD92BC928111ACC029843A844B845C840C +:101F3000BD81BE8B1E815701612C6501E6E5CE0E89 +:101F4000D11CD6018D919C91009789F1DC01ED9116 +:101F5000FC910084F185E02D0995811128C0F601DE +:101F600080819181DC01ED91FC910088F189E02D67 +:101F7000612F09958823D9F0F60180819181DC01D8 +:101F8000ED91FC910484F585E02DA201B101099544 +:101F9000811160C0F60180819181DC01ED91FC919D +:101FA0000684F785E02D6E890995811153C06394ED +:101FB000B2E0AB0EB11CE0E16E12BFCF5701612C55 +:101FC0006501F6E5CF0ED11CD6018D919C9100974D +:101FD00089F1DC01ED91FC910084F185E02D0995FA +:101FE000811128C0F60180819181DC01ED91FC9185 +:101FF0000088F189E02D612F09958823B1F1F60160 +:1020000080819181DC01ED91FC910484F585E02DC6 +:10201000A201B101099581110DC0F6018081918164 +:10202000DC01ED91FC910684F785E02D6E89099520 +:102030008823D9F06394B2E0AB0EB11CE0E16E12DC +:10204000BFCF292D472D682DC7010E94130F18C03F +:1020500086ED16C0092D272D482D662DC7010E943B +:10206000EA09813D09F4A3CF0BC0092D272D482D86 +:10207000662DC7010E94EA09982F977F913DD1F202 +:1020800066960FB6F894DEBF0FBECDBFDF91CF913D +:102090001F910F91FF90EF90DF90CF90BF90AF9086 +:1020A0009F908F907F906F905F904F903F902F9078 +:1020B0000895FF920F931F93CF93DF93EC0119992B +:1020C0000EC088EC0E94D20885FF05C0CE010E9498 +:1020D000070660E201C060E088EC0E94F008809191 +:1020E000AC01813051F058F0823029F0833039F55D +:1020F000FF24F3940DC0F12C0BC083E106C0809146 +:102100006102807F8031D9F081E18093610217C044 +:1021100080916102807F803199F40E94D7166853C4 +:102120007F4F8F4F9F4F60935D0270935E0280934D +:102130005F029093600280E28093610201C0F12C03 +:1021400000E010E0FE01E00FF11FEA5AFF4F80812E +:102150009181009739F0DC01ED91FC910680F781C7 +:10216000E02D09950E5F1F4F0032110559F7809140 +:102170006102803409F446C070F4803269F1803322 +:10218000D9F1813109F088C0FE01EA58FF4F108271 +:1021900000E010E00AC0813509F45AC0803809F423 +:1021A0006AC0803509F078C03CC0FE01E00FF11F25 +:1021B000EA5AFF4F80819181009739F0DC01ED915F +:1021C000FC910480F581E02D09950E5F1F4F0032D0 +:1021D000110559F782E15EC00E94D71600915D0299 +:1021E00010915E0220915F0230916002601B710BC2 +:1021F000820B930B97FD50C061E088EE0E94F008BF +:1022000080E448C088EE0E94D20880FD45C088ED79 +:102210000E94D208682F686088ED0E94F00880E56F +:1022200039C088EC0E94D20886FF36C081E58093D1 +:1022300061020E94D7166C5E7F4F8F4F9F4F609355 +:102240005D0270935E0280935F029093600224C0EF +:102250000E94D71600915D0210915E0220915F02EC +:1022600030916002601B710B820B930B97FD14C0C1 +:1022700080E8809361022F2D40E060E0CE010E9453 +:102280004D0F882331F0823D39F08093620280EA5D +:1022900001C080E980936102DF91CF911F910F917E +:1022A000FF9008958F929F92AF92BF92CF92EF923C +:1022B0000F93CF93DF93CDB7DEB7C054D1090FB6DC +:1022C000F894DEBF0FBECDBF5F934F939E012F5F8B +:1022D0003F4F3F932F931F9220E42F9320E8822EAD +:1022E000912C5B0132E2C32EE12C06E021E840E0B4 +:1022F000FC016681848195810E947E0C0F900F9075 +:102300000F900F900F900F90C05CDF4F0FB6F894B6 +:10231000DEBF0FBECDBFDF91CF910F91EF90CF9079 +:10232000BF90AF909F908F9008958F929F92AF92A1 +:10233000BF92CF92EF920F93A62EB12C1F921F92B5 +:102340001F921F921F921F92812C912CC22EE42E5D +:102350000AE021E240E0FC016681848195810E94CF +:102360007E0C0F900F900F900F900F900F900F9189 +:10237000EF90CF90BF90AF909F908F9008958F92E5 +:102380009F92AF92BF92CF92EF920F93A62EB12C55 +:102390001F921F921F921F921F921F92812C912CAD +:1023A000C12CE42E0BE021E240E0FC016681848137 +:1023B00095810E947E0C0F900F900F900F900F90C0 +:1023C0000F900F91EF90CF90BF90AF909F908F9014 +:1023D00008950F931F93CF93DF93EC012A8121700F +:1023E000F8018081982F9170291771F0E881F981A7 +:1023F00080FF04C00680F781E02D03C00480F581D2 +:10240000E02DB801CE0109952A8126952170F801A9 +:10241000808181FB992790F9291771F0E881F98172 +:1024200081FF04C00284F385E02D03C00084F185A0 +:10243000E02DB801CE0109952A8122FB222720F93F +:10244000F801808182FB992790F9291771F0E881C2 +:10245000F98182FF04C00684F785E02D03C004845F +:10246000F585E02DB801CE010995F8018181811132 +:1024700003C08281882341F0E881F9810280F381E1 +:10248000E02DB801CE010995F80180818A83DF91A2 +:10249000CF911F910F910895CF93DF93FC01EA0133 +:1024A00080819181892B21F580E028C088819981E4 +:1024B000892BD1F3DB018D919C91DC015C9123810F +:1024C00030E0241B310980819181820F931FDC0150 +:1024D0005C9382818150828388819981019799835D +:1024E0008883DB018D919C91119701968D939C932C +:1024F00042814111DBCF8381828381E0DF91CF91E3 +:102500000895FC018285089581E0693009F080E03A +:102510000895CF93DF93EC018A819B81DC01ED91DB +:10252000FC910480F581E02D6A8509958A858134C6 +:1025300039F4EA81FB81EA58FF4F8081846080830F +:102540001A861B861C861D861E861F86188A80E0BA +:10255000DF91CF9108958F929F92AF92BF92CF92C9 +:10256000EF920F93A42EB12CB22A1F921F921F92AA +:102570001F921F921F92812C912CC12CE62E01E0FC +:1025800023E240E0FC016285828193810E947E0CFF +:102590000F900F900F900F900F900F900F91EF9062 +:1025A000CF90BF90AF909F908F9008958F929F9201 +:1025B000AF92BF92CF92EF920F93A62EB12C1F92A3 +:1025C0001F923F932F935F934F934A01C12CE12CAD +:1025D00000E023EA40E0FC016285828193810E9451 +:1025E0007E0C0F900F900F900F900F900F900F9107 +:1025F000EF90CF90BF90AF909F908F9008958F9263 +:102600009F92AF92BF92CF92EF920F93A42EB12CD4 +:10261000B22A1F921F921F921F921F921F92812C0B +:10262000912CC12CE62E03E023E240E0FC01628500 +:10263000828193810E947E0C0F900F900F900F90DB +:102640000F900F900F91EF90CF90BF90AF909F9011 +:102650008F9008952F923F924F925F926F927F9248 +:102660008F929F92AF92BF92CF92DF92EF92FF92A2 +:102670000F931F93CF93DF93CDB7DEB7E9970FB6D4 +:10268000F894DEBF0FBECDBF3C01362E242EDC01F8 +:102690001296ED90FC9013971A968C91811103C1BC +:1026A000D701ED91FC910190F081E02D60E0C70130 +:1026B00029AF09956C0129AD009709F4F6C0FC011A +:1026C000A080B180A114B10409F4F1C04301F4E089 +:1026D0008F0E911CDC0111969C928E9214962C9375 +:1026E000FE0131962F018F0128E030E040E060E0EC +:1026F000D30112968D919C9113970E945E0DF60165 +:1027000014828111DAC019818D81893009F0D1C01C +:10271000D701ED91FC910280F381E02D222D41E063 +:10272000632DC7010995F3018287882309F4C3C08B +:1027300098859583282F40E060E0828193810E94F4 +:102740000B0E082F882391F0D601AD92BC92D701D1 +:10275000ED91FC910480F581E02DD3011A966C91E6 +:10276000C7010995F3011286102FABC0113208F092 +:1027700010E2D601AD92BC9211110BC0940142E05F +:10278000F3016285828193810E94AC08811198C017 +:1027900011C0212F30E0820140E0D3011A966C91E4 +:1027A0001A9712968D919C9113970E945E0D81113C +:1027B00087C0E4CF1F921F925F924F921F9288E0D2 +:1027C0008F9388E0882E912CA12CB12C99E2C92EF0 +:1027D000E12C06E020EA40E0F301628582819381EA +:1027E0000E947E0C182F0F900F900F900F900F905B +:1027F0000F90811166C08B81D3011B968C931B9720 +:10280000720100E028E030E040E01A966C911A97DF +:1028100012968D919C9113970E94850D811150C045 +:102820002B813C8140E0F3016285828193810E948B +:10283000850D811145C0298130E0CE0181967C0152 +:1028400040E0D3011A966C911A9712968D919C9143 +:1028500013970E94850D811133C02E8140E0F30152 +:102860006285828193810E943A0E811129C001E024 +:10287000D3011B968C911B97801740F020E0402FCE +:1028800068E0C3010E94FF120F5FF2CF1296ED9134 +:10289000FC911397EA58FF4F80818460808381E028 +:1028A00050968C930EC019ED0CC016ED0AC017EDB2 +:1028B00008C011ED06C014ED04C0F601B182A0827B +:1028C000182F812FE9960FB6F894DEBF0FBECDBF4B +:1028D000DF91CF911F910F91FF90EF90DF90CF90FC +:1028E000BF90AF909F908F907F906F905F904F9030 +:1028F0003F902F900895BF92CF92DF92EF92FF9278 +:102900000F931F93CF93DF9300D000D0CDB7DEB7E6 +:102910007C01B62E19821A821B821C8220E0462F6F +:1029200061E10E94AB1220E04B2D60E1C7010E94E3 +:10293000AB1220E04B2D64E0C7010E94FF1223E0A0 +:10294000C22ED12C9E012F5F3F4F44E050E06B2DF3 +:10295000C7010E94D612882301F120E04B2D64E1CB +:10296000C7010E94AB1220E04B2D60E1C7010E941D +:10297000AB1264E170E080E090E00E9406170F90D7 +:102980000F900F900F90DF91CF911F910F91FF90BB +:10299000EF90DF90CF90BF90089509811A812B812D +:1029A0003C811D7F0330114020413105B1F264E6C6 +:1029B00070E080E090E00E94061781E0C81AD1081C +:1029C00009F0C0CFCACFCF93DF93FC018BE791E032 +:1029D000918380837383628312861386148615869F +:1029E00016861786108A148288E085839CE3968376 +:1029F00091E09783808784E0818761157105B9F044 +:102A0000CB01A0E0B0E0EC01CA5ADF4F2881398148 +:102A1000232B41F49B96AA0FBB1FA60FB71FED9364 +:102A2000FC9305C011960296A031B10561F7DF91C4 +:102A3000CF910895DF92EF92FF920F931F93CF9360 +:102A4000DF93EC01D62E7A01FA01008111812281F7 +:102A500033810130F3E01F07F1E02F073105D1F09A +:102A600060F40115E1E01E072E07310571F1013018 +:102A700011402140310571F062C0033081E0180738 +:102A800080E128073105E1F1033013402041310591 +:102A9000B9F155C080916302811151C020E04D2DE4 +:102AA00061E1CE010E94AB1220E04D2D60E1CE012C +:102AB0000E94AB1220E04D2D64E0CE010E94FF1277 +:102AC00081E08093630281EB3BC020E0462F61E10F +:102AD000CE010E94AB1220E04D2D60E1CE010E949C +:102AE000AB12109263026A8567708D2D8770660F36 +:102AF000660F660F682B8A819B810E949C071FC00E +:102B000020E04D2D64E1CE010E94AB1220E04D2D5E +:102B100060E1CE010E94AB1264E170E080E090E0E1 +:102B20000E9406176A85F70121812695217067703A +:102B30004D2D8A819B810E944D0F1092630280E08F +:102B4000DF91CF911F910F91FF90EF90DF9008954B +:102B5000CF92DF92EF920F931F93CF93DF93CDB776 +:102B6000DEB72E970FB6F894DEBF0FBECDBF6C0157 +:102B700081E090E09E878D87E12C8E010F5F1F4FD3 +:102B80009E01235F3F4F41E0F60162858281938180 +:102B90000E945F0E811151C002E011E08981802303 +:102BA000D1F019861A861B861C869E01275F3F4F2F +:102BB00044E050E0612FC6010E94D61281110BC083 +:102BC000AE01475F5F4F612FC6010E941A15813B1E +:102BD00099F1811132C0000F1F5F1830F9F611E032 +:102BE000F6018385811740F119861A861B861C869B +:102BF0009E01275F3F4F44E050E0612FC6010E94D5 +:102C0000D612811117C089859A858770917081309D +:102C1000914081F48B859C8581609C878B87AE0178 +:102C2000475F5F4F612FC6010E941A15813B21F05B +:102C3000811103C01F5FD4CF80E02E960FB6F894A9 +:102C4000DEBF0FBECDBFDF91CF911F910F91EF90EF +:102C5000DF90CF9008950F931F93CF93DF93EC01F4 +:102C600088898823F1F00E94D7160C851D852E8552 +:102C70003F85601B710B820B930B97FD0FC0CE013C +:102C80000E94A815182F0E94D7166C597F4F8F4F9E +:102C90009F4F6C877D878E879F8701C010E0812FB3 +:102CA00001C080E0DF91CF911F910F910895CF93E4 +:102CB000CFB7F89480916702811127C0EAE9F0E06C +:102CC0008491E6E8F0E09491E82FF0E0EE0FFF1F2A +:102CD000E255FF4FA591B4918C91892321F461E0D5 +:102CE0008AE00E94E81761E08AE00E94AF178CB585 +:102CF00080618CBD8CB580648CBD61E08DE00E94EC +:102D0000AF1761E08BE00E94AF17809167028F5F81 +:102D100080936702CFBFCF9108951F920F920FB695 +:102D20000F9211242F933F938F939F93AF93BF9351 +:102D30008091690290916A02A0916B02B0916C023D +:102D40003091680223E0230F2D3720F40196A11D56 +:102D5000B11D05C026E8230F0296A11DB11D2093C9 +:102D600068028093690290936A02A0936B02B09309 +:102D70006C0280916D0290916E02A0916F02B091F1 +:102D800070020196A11DB11D80936D0290936E0299 +:102D9000A0936F02B0937002BF91AF919F918F91FA +:102DA0003F912F910F900FBE0F901F9018952FB746 +:102DB000F8946091690270916A0280916B0290911F +:102DC0006C022FBF08953FB7F89480916D029091E7 +:102DD0006E02A0916F02B091700226B5A89B05C04B +:102DE0002F3F19F00196A11DB11D3FBF6627782F17 +:102DF000892F9A2F620F711D811D911D42E0660F70 +:102E0000771F881F991F4A95D1F708958F929F9237 +:102E1000AF92BF92CF92DF92EF92FF926B017C0153 +:102E20000E94E3164B015C01C114D104E104F104DA +:102E3000F1F00E9427190E94E316681979098A099E +:102E40009B09683E73408105910570F321E0C21A29 +:102E5000D108E108F10888EE880E83E0981EA11CD5 +:102E6000B11CC114D104E104F10429F7DDCFFF90B6 +:102E7000EF90DF90CF90BF90AF909F908F9008958C +:102E80008230910538F0880F991F880F991F059798 +:102E90000197F1F70895789484B5826084BD84B574 +:102EA000816084BD85B5826085BD85B5816085BD45 +:102EB000EEE6F0E0808181608083E1E8F0E010825E +:102EC000808182608083808181608083E0E8F0E09F +:102ED000808181608083E1EBF0E080818460808389 +:102EE000E0EBF0E0808181608083EAE7F0E08081C0 +:102EF0008460808380818260808380818160808320 +:102F00008081806880831092C1000895833081F0B1 +:102F100028F4813099F08230A1F008958730A9F02B +:102F20008830B9F08430D1F4809180008F7D03C067 +:102F3000809180008F7780938000089584B58F778B +:102F400002C084B58F7D84BD08958091B0008F77D5 +:102F500003C08091B0008F7D8093B0000895CF931F +:102F6000DF9390E0FC01E458FF4F2491FC01E0570F +:102F7000FF4F8491882349F190E0880F991FFC014D +:102F8000E255FF4FA591B4918C559F4FFC01C5911F +:102F9000D4919FB7611108C0F8948C912095822339 +:102FA0008C93888182230AC0623051F4F8948C910A +:102FB000322F309583238C938881822B888304C0A1 +:102FC000F8948C91822B8C939FBFDF91CF910895C1 +:102FD0000F931F93CF93DF931F92CDB7DEB7282FA8 +:102FE00030E0F901E859FF4F8491F901E458FF4FAF +:102FF0001491F901E057FF4F04910023C9F0882391 +:1030000021F069830E9486176981E02FF0E0EE0FBE +:10301000FF1FEC55FF4FA591B4919FB7F8948C9189 +:10302000611103C01095812301C0812B8C939FBF38 +:103030000F90DF91CF911F910F9108951F920F92E2 +:103040000FB60F9211242F938F939F93EF93FF93BB +:10305000E0918102F09182028081E0918702F091FB +:10306000880282FD12C0908180918A028F5F8F73E7 +:1030700020918B02821751F0E0918A02F0E0EF5824 +:10308000FD4F958F80938A0201C08081FF91EF915F +:103090009F918F912F910F900FBE0F901F901895B9 +:1030A0001F920F920FB60F9211242F933F934F93BD +:1030B0005F936F937F938F939F93AF93BF93EF93A0 +:1030C000FF9381E792E00E946319FF91EF91BF9116 +:1030D000AF919F918F917F916F915F914F913F91B0 +:1030E0002F910F900FBE0F901F90189581E792E0DF +:1030F0000E94281921E0892B09F420E0822F0895ED +:10310000109274021092730288EE93E0A0E0B0E097 +:103110008093750290937602A0937702B093780221 +:1031200080EA91E0909372028093710285EC90E0C6 +:1031300090937E0280937D0284EC90E090938002D5 +:1031400080937F0280EC90E09093820280938102D2 +:1031500081EC90E0909384028093830282EC90E073 +:10316000909386028093850286EC90E0909388028B +:103170008093870210928A0210928B0210928C0226 +:1031800010928D020895CF92DF92EF92FF920F93EB +:103190001F93CF93DF937C016A01EB0100E010E005 +:1031A0000C151D0571F06991D701ED91FC9101900D +:1031B000F081E02DC7010995892B19F00F5F1F4F92 +:1031C000EFCFC801DF91CF911F910F91FF90EF904A +:1031D000DF90CF9008956115710581F0DB010D90AE +:1031E0000020E9F7AD0141505109461B570BDC01A6 +:1031F000ED91FC910280F381E02D099480E090E054 +:1032000008956DE871E00C94EB180F931F93CF9322 +:10321000DF93EC010E94EB188C01CE010E94011992 +:10322000800F911FDF91CF911F910F910895089505 +:103230000E944B170E9417190E948106C5E5D9E12B +:103240000E94B9052097E1F30E945519F9CF08951E +:10325000FC01818D228D90E0805C9F4F821B910943 +:103260008F7399270895FC01918D828D981731F005 +:10327000828DE80FF11D858D90E008958FEF9FEF0F +:103280000895FC01918D828D981761F0828DDF0188 +:10329000A80FB11D5D968C91928D9F5F9F73928F49 +:1032A00090E008958FEF9FEF089586E798E1892BCE +:1032B00049F080E090E0892B29F00E947618811176 +:1032C0000C9400000895FC01848DDF01A80FB11D4E +:1032D000A35ABF4F2C91848D90E001968F7399274C +:1032E000848FA689B7892C93A089B1898C91806439 +:1032F0008C93938D848D981306C00288F389E02DFA +:1033000080818F7D80830895CF93DF93EC01888D3A +:103310008823C9F0EA89FB89808185FD05C0A889D9 +:10332000B9898C9186FD0FC00FB607FCF5CF80815F +:1033300085FFF2CFA889B9898C9185FFEDCFCE01A9 +:103340000E946319E7CFDF91CF910895CF92DF926A +:10335000FF920F931F93CF93DF931F92CDB7DEB7EA +:103360006C0181E0D60158968C9358975B969C919E +:103370005B975C968C915C97981307C05096ED9183 +:10338000FC915197808185FD2EC0F601038D10E0E0 +:103390000F5F1F4F0F731127F02EF601848DF81267 +:1033A00011C00FB607FCF9CFD6015096ED91FC91F4 +:1033B0005197808185FFF1CFC60169830E9463190F +:1033C0006981EBCF838DE80FF11DE35AFF4F6083D6 +:1033D000D6015B960C935B975296ED91FC915397B7 +:1033E000808180620CC0D6015696ED91FC91579772 +:1033F00060835096ED91FC91519780818064808329 +:1034000081E090E00F90DF91CF911F910F91FF909D +:10341000DF90CF900895AA1BBB1B51E107C0AA1FE4 +:10342000BB1FA617B70710F0A61BB70B881F991F65 +:103430005A95A9F780959095BC01CD01089597FB09 +:10344000072E16F4009407D077FD09D00E940B1ABE +:1034500007FC05D03EF4909581959F4F0895709597 +:1034600061957F4F0895EE0FFF1F0590F491E02DB9 +:103470000994DC0101C06D9341505040E0F708957C +:04348000F894FFCFEE +:1034840000000E0380000C00010032000000040064 +:103494000200010003004F534320646964206E6FEF +:1034A400742073746172742E00000000006C0200BA +:1034B400000000490100000000E91154014A014FD5 +:1034C400018F009000CE00CF00000000004504886A +:1034D40000D900D703F4008A008B00F700FC000138 +:1034E40001D00009010C01FEFF00003F01000000B3 +:1034F400007108FD07F20E000000002A13880089FD +:10350400122B1681127B148B0084128D000D0A007D +:103514006E616E00696E66006F76660000000000E2 +:0C352400A619C31828194119331984197D +:107E0000112484B714BE81FFF0D085E080938100F7 +:107E100082E08093C00088E18093C10086E0809377 +:107E2000C20080E18093C4008EE0C9D0259A86E02C +:107E300020E33CEF91E0309385002093840096BBD3 +:107E4000B09BFECF1D9AA8958150A9F7CC24DD24C4 +:107E500088248394B5E0AB2EA1E19A2EF3E0BF2EE7 +:107E6000A2D0813461F49FD0082FAFD0023811F036 +:107E7000013811F484E001C083E08DD089C08234E0 +:107E800011F484E103C0853419F485E0A6D080C0E4 +:107E9000853579F488D0E82EFF2485D0082F10E0AE +:107EA000102F00270E291F29000F111F8ED06801E7 +:107EB0006FC0863521F484E090D080E0DECF843638 +:107EC00009F040C070D06FD0082F6DD080E0C81688 +:107ED00080E7D80618F4F601B7BEE895C0E0D1E017 +:107EE00062D089930C17E1F7F0E0CF16F0E7DF06D8 +:107EF00018F0F601B7BEE89568D007B600FCFDCFD4 +:107F0000A601A0E0B1E02C9130E011968C91119780 +:107F100090E0982F8827822B932B1296FA010C0160 +:107F200087BEE89511244E5F5F4FF1E0A038BF0790 +:107F300051F7F601A7BEE89507B600FCFDCF97BE46 +:107F4000E89526C08437B1F42ED02DD0F82E2BD052 +:107F50003CD0F601EF2C8F010F5F1F4F84911BD097 +:107F6000EA94F801C1F70894C11CD11CFA94CF0C13 +:107F7000D11C0EC0853739F428D08EE10CD085E9AC +:107F80000AD08FE07ACF813511F488E018D01DD067 +:107F900080E101D065CF982F8091C00085FFFCCF94 +:107FA0009093C60008958091C00087FFFCCF809118 +:107FB000C00084FD01C0A8958091C6000895E0E648 +:107FC000F0E098E1908380830895EDDF803219F02E +:107FD00088E0F5DFFFCF84E1DECF1F93182FE3DFCA +:107FE0001150E9F7F2DF1F91089580E0E8DFEE27F6 +:047FF000FF270994CA +:027FFE00040479 +:0400000300007E007B +:00000001FF diff --git a/USB Mouse Interface/arduino/USBMouseInterface.zip b/USB Mouse Interface/arduino/USBMouseInterface.zip new file mode 100644 index 0000000..d9cdd92 Binary files /dev/null and b/USB Mouse Interface/arduino/USBMouseInterface.zip differ diff --git a/USB Mouse Interface/arduino/USBMouseInterface/USBMouseInterface.ino b/USB Mouse Interface/arduino/USBMouseInterface/USBMouseInterface.ino new file mode 100644 index 0000000..4dd13fd --- /dev/null +++ b/USB Mouse Interface/arduino/USBMouseInterface/USBMouseInterface.ino @@ -0,0 +1,231 @@ +/* + + tracking "mode" switch on right mouse button. + + Mac Plus: 4+ + Apple IIe (MousePaint): 6-8 + +*/ + + + +#include +#include + +// Satisfy the IDE, which needs to see the include statment in the ino too. +#ifdef dobogusinclude +#include +#include +#endif + + + +// pin assignments + +int XMOVE = 3; +int XDIR = 1; +int YMOVE = 2; +int YDIR = 0; +int CLICKPIN = 4; +long XDELAY; +long YDELAY; +long MOVEMENTBASE = 20; +int MOVEMENTFACTORX = 0; +int MOVEMENTFACTORY = 0; +int MOVEMENTTHRESHOLD = 0; +int MOVEMENTDENOM = 8; + +class MouseRptParser : public MouseReportParser +{ + protected: + void OnMouseMove (MOUSEINFO *mi); + void OnLeftButtonUp (MOUSEINFO *mi); + void OnLeftButtonDown (MOUSEINFO *mi); + void OnRightButtonUp (MOUSEINFO *mi); + void OnRightButtonDown (MOUSEINFO *mi); + void OnMiddleButtonUp (MOUSEINFO *mi); + void OnMiddleButtonDown (MOUSEINFO *mi); +}; +void MouseRptParser::OnMouseMove(MOUSEINFO *mi) +{ + + // XDELAY = MOVEMENTBASE + (1 - (abs(mi->dX) / 255.000)) * MOVEMENTFACTOR; + // YDELAY = MOVEMENTBASE + (1 - (abs(mi->dY) / 127.000)) * MOVEMENTFACTOR; + // Serial.print("dx="); + // Serial.println(XDELAY); + // Serial.print(" dy="); + // Serial.println(YDELAY); + // delayMicroseconds(XDELAY); + + + MOVEMENTFACTORX = 1 + (abs(mi->dX)) / MOVEMENTDENOM; + //Serial.println(MOVEMENTFACTOR); + for (int i = 0; i < MOVEMENTFACTORX; i++) { + + if (mi->dX > MOVEMENTTHRESHOLD) { + + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XMOVE, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XDIR, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XMOVE, LOW); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XDIR, LOW); + + } + if (mi->dX < -1 * MOVEMENTTHRESHOLD) { + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XDIR, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XMOVE, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XDIR, LOW); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(XMOVE, LOW); + + } + } + MOVEMENTFACTORY = 1 + (abs(mi->dY)) / MOVEMENTDENOM; + for (int i = 0; i < MOVEMENTFACTORY; i++) { + if (mi->dY > MOVEMENTTHRESHOLD) { + + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YMOVE, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YDIR, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YMOVE, LOW); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YDIR, LOW); + + } + + if (mi->dY < -1 * MOVEMENTTHRESHOLD) { + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YDIR, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YMOVE, HIGH); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YDIR, LOW); + delayMicroseconds(MOVEMENTBASE); + digitalWrite(YMOVE, LOW); + + } + + } + /* + XDIR = XMOVE = LOW + + if X > 0 + XMOVE HIGH + delay + XDIR HIGH + delay + XMOVE LOW + delay + XDIR LOW + + else if X < 0 + XDIR HIGH + delay + XMOVE HIGH + delay + XDIR LOW + delay + XMOVE LOW + + + + + + */ + + + +}; +void MouseRptParser::OnLeftButtonUp (MOUSEINFO *mi) +{ + // Serial.println("L Butt Up"); + digitalWrite(CLICKPIN, HIGH); +}; +void MouseRptParser::OnLeftButtonDown (MOUSEINFO *mi) +{ + // Serial.println("L Butt Dn"); + digitalWrite(CLICKPIN, LOW); +}; +void MouseRptParser::OnRightButtonUp (MOUSEINFO *mi) +{ + // Serial.println("R Butt Up"); +}; +void MouseRptParser::OnRightButtonDown (MOUSEINFO *mi) +{ + + if (MOVEMENTBASE < 200) { + MOVEMENTBASE += 20; + } else { + MOVEMENTBASE = 0; + } + + // Serial.println("R Butt Dn"); +}; +void MouseRptParser::OnMiddleButtonUp (MOUSEINFO *mi) +{ + // Serial.println("M Butt Up"); +}; +void MouseRptParser::OnMiddleButtonDown (MOUSEINFO *mi) +{ + // Serial.println("M Butt Dn"); +}; + +USB Usb; +USBHub Hub(&Usb); +HIDBoot HidMouse(&Usb); + +uint32_t next_time; + +MouseRptParser Prs; + +void setup() +{ + + pinMode(XMOVE, OUTPUT); + pinMode(XDIR, OUTPUT); + pinMode(YMOVE, OUTPUT); + pinMode(YDIR, OUTPUT); + pinMode(CLICKPIN, OUTPUT); + + + + /* Serial.begin( 115200 ); + #if !defined(__MIPSEL__) + while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection + #endif + Serial.println("Start"); + */ + if (Usb.Init() == -1) + Serial.println("OSC did not start."); + + delay( 200 ); + + next_time = millis() + 5000; + + HidMouse.SetReportParser(0, (HIDReportParser*)&Prs); + + + + digitalWrite(XMOVE, LOW); + digitalWrite(XDIR, LOW); + digitalWrite(YMOVE, LOW); + digitalWrite(YDIR, LOW); + digitalWrite(CLICKPIN, HIGH); + + + +} + +void loop() +{ + Usb.Task(); +} + diff --git a/USB Mouse Interface/arduino/USBMouseInterface/USBMouseInterface.ino.standard.hex b/USB Mouse Interface/arduino/USBMouseInterface/USBMouseInterface.ino.standard.hex new file mode 100644 index 0000000..ec8a2a3 --- /dev/null +++ b/USB Mouse Interface/arduino/USBMouseInterface/USBMouseInterface.ino.standard.hex @@ -0,0 +1,849 @@ +:100000000C945E000C9486000C9486000C94860080 +:100010000C9486000C9486000C9486000C94860048 +:100020000C9486000C9486000C9486000C94860038 +:100030000C9486000C9486000C9486000C94860028 +:100040000C946E160C9486000C94FF170C943118C7 +:100050000C9486000C9486000C9486000C94860008 +:100060000C9486000C948600000000080002010039 +:100070000003040700000000000000000102040863 +:100080001020408001020408102001020408102002 +:10009000040404040404040402020202020203032E +:1000A0000303030300000000250028002B000000CC +:1000B0000000240027002A00BA06611811241FBE80 +:1000C000CFEFD8E0DEBFCDBF11E0A0E0B1E0E6E4C5 +:1000D000F4E302C005900D92AC3AB107D9F723E0E2 +:1000E000ACEAB1E001C01D92AE30B207E1F710E01A +:1000F000CCEBD0E004C02297FE010E94161AC83B48 +:10010000D107C9F70E94F9180C94211A0C94000029 +:1001100080E00895089580E0089581E008950895AD +:1001200080910A0190910B01A0910C01B0910D01F9 +:10013000843F21E09207A105B10524F4C296A11DD8 +:10014000B11D04C082E390E0A0E0B0E080930A011A +:1001500090930B01A0930C01B0930D0108950895A5 +:100160000895860F911D860F911DFC0156874587C6 +:1001700081E00895CF93DF93EC018C819D81DC01B8 +:10018000ED91FC910480F581E02D6E8109951F862B +:10019000188A81E08A8B1E821B8A1C8A1D8A1E8A0D +:1001A0001F8A80E0DF91CF910895FC018681089538 +:1001B00081E0633009F080E0089581E0623009F069 +:1001C00080E00895860F911D860F911DFC018585A5 +:1001D00096850895FC0187890895EF92FF92CF9349 +:1001E000DF93FC01E7012289223029F16787408BE8 +:1001F0008B8183708330F9F48A8187FF1CC08E81E4 +:10020000908D981708F4808F822F90E0DC01AA0F60 +:10021000BB1FA80FB91FAE0FBF1F8A818F70179623 +:100220008C9317978C8118968C93189784E0199665 +:100230008C932F5F228BDF91CF91FF90EF900895E9 +:10024000EF92FF920F9302970E94ED000F91FF90A3 +:10025000EF900895089561E080910E010C94C91704 +:1002600060E080910E010C94C9170F931F93CF93F8 +:10027000DF93EB018981992787FD909597FF03C054 +:1002800091958195910960910601709107010E94F5 +:10029000001A6F5F7F4F70935A026093590200E01B +:1002A00010E08091590290915A02081719070CF03A +:1002B00068C02981332727FD3095809108019091EE +:1002C00009018217930734F561E0809114010E94BF +:1002D000C91780910A0190910B010E94211761E0DA +:1002E000809112010E94C91780910A0190910B011F +:1002F0000E94211760E0809114010E94C91780912B +:100300000A0190910B010E94211760E08091120177 +:100310000E94C9172981332727FD30958091080154 +:10032000909109019195819591092817390734F524 +:1003300061E0809112010E94C91780910A01909199 +:100340000B010E94211761E0809114010E94C917DE +:1003500080910A0190910B010E94211760E0809129 +:1003600012010E94C91780910A0190910B010E940D +:10037000211760E0809114010E94C9170F5F1F4F81 +:1003800090CF8A81992787FD909597FF03C091951B +:100390008195910960910601709107010E94001AF0 +:1003A0006F5F7F4F709358026093570200E010E038 +:1003B0008091570290915802081719070CF068C0F5 +:1003C0002A81332727FD30958091080190910901FA +:1003D0008217930734F561E0809110010E94C917DC +:1003E00080910A0190910B010E94211761E0809198 +:1003F0005B020E94C91780910A0190910B010E9433 +:10040000211760E0809110010E94C91780910A01B4 +:1004100090910B010E94211760E080915B020E9485 +:10042000C9172A81332727FD3095809108019091C3 +:1004300009019195819591092817390734F561E0F3 +:1004400080915B020E94C91780910A0190910B0173 +:100450000E94211761E0809110010E94C9178091CC +:100460000A0190910B010E94211760E080915B02CC +:100470000E94C91780910A0190910B010E942117D7 +:1004800060E0809110010E94C9170F5F1F4F90CF4D +:10049000DF91CF911F910F9108952F923F924F922C +:1004A0005F926F927F928F929F92AF92BF92CF9204 +:1004B000DF92EF92FF920F931F93CF93DF9300D0C1 +:1004C00000D0CDB7DEB76C017C836B835A83498340 +:1004D0004C0180E1880E911C5601A7E0AA0EB11CC8 +:1004E00011E044E0442E57E0352E3601B2E16B0EA8 +:1004F000711C63E0262E72E0572E8B819C81892B24 +:1005000009F412C1F60180A1823061F128F4882338 +:1005100049F0813079F0F1CF833041F1843009F432 +:100520004BC0EBCF5482858196819087878352861A +:10053000518610A3AE014D5F5F4FBE016F5F7F4FCD +:10054000C5010E942D12882309F4EEC0D60115962C +:10055000ED91FC911697808191968C939197818172 +:1005600092968C93F6017682658220A2D6019296AD +:100570008C91843081F018F4823079F014C0853089 +:1005800081F0813281F4D60191968C9191978250BD +:1005900014968C9308C0F60113A2D60114963C92CF +:1005A00002C0F6018483F601858196819087878356 +:1005B00084818287818740A2D60192968C91843073 +:1005C000B1F0853009F442C0823009F06EC0AE014E +:1005D0004D5F5F4FBE016F5F7F4FC5010E942D12BF +:1005E000882309F4A1C0F601858984A38EC0AE01D9 +:1005F0004D5F5F4FBE016F5F7F4FC5010E942D129F +:10060000882309F491C0D60155968C915597833073 +:1006100009F07BC056968C915697813009F075C0D1 +:1006200098969C91989757968C91992321F08823BE +:1006300009F46BC003C0823009F067C0F60113A350 +:10064000928996A3938997A385A35FC0AE014D5F5E +:100650005F4FBE016F5F7F4FC5010E942D1288233F +:1006600009F462C0D60193968C919397882309F47C +:100670004CC012968D919C911397009709F445C038 +:10068000DC01ED91FC910190F081E02D7401D60127 +:1006900095960C91959797962C91979796964C9145 +:1006A000969794966C91099530C0F60181A1958535 +:1006B000992319F0913031F023C090E00297978789 +:1006C000868715872B813C8189819A81782F692FB4 +:1006D000D6011E964D915C911F9741155105E9F089 +:1006E00001962115310541F041505109F601578716 +:1006F000468721503109EACF79836A831C821B82A5 +:10070000F60186859785892B79F4D60116969C92F9 +:100710008E92159790961C92F0CE9A8389833C8393 +:100720002B83F6011586ECCF0F900F900F900F9052 +:10073000DF91CF911F910F91FF90EF90DF90CF90BD +:10074000BF90AF909F908F907F906F905F904F90F1 +:100750003F902F9008959FB7F89420916602809162 +:100760006402213019F48DBB9FBF08958FBF089597 +:10077000CF92DF92EF92FF920F931F93CF93DF936D +:10078000CDB7DEB762970FB6F894DEBF0FBECDBF10 +:100790006C01DC0157968C91882369F00E94B81691 +:1007A000F6010389148925893689601B710B820B38 +:1007B000930B97FF02C0F12C39C0F601838590E0BE +:1007C0009A8B898BE12C8E010F5F1F4F9E012F5E4C +:1007D0003F4F42856681848195810E94400EF82EAC +:1007E000811118C029893A892330310598F0D60142 +:1007F0001D968D919C911E97009761F0DC01ED9103 +:10080000FC910190F081E02D8E010F5F1F4F40E0C1 +:10081000B60109950E94B816F601208D620F711D70 +:10082000811D911D638B748B858B968B8F2D6296AA +:100830000FB6F894DEBF0FBECDBFDF91CF911F91F1 +:100840000F91FF90EF90DF90CF9008953F924F92DD +:100850005F926F927F928F929F92AF92BF92CF9250 +:10086000DF92EF92FF920F931F93CF93DF93CDB759 +:10087000DEB7EB970FB6F894DEBF0FBECDBF7C019D +:10088000462E342E522EDC011496AD90BC90159756 +:1008900016968C911697811111C158961C92D5010C +:1008A000ED91FC910190F081E02D60E0C50109958A +:1008B0006C01009711F486ED0BC1FC0180809180E2 +:1008C0008114910409F4FCC03701F7E06F0E711C2C +:1008D000DC0111967C926E9214965C928E01065DFC +:1008E0001F4F28E030E040E060E0F701848195810F +:1008F0000E943F0D182F8111E7C01AA5D6018D92D5 +:100900009C92D501ED91FC910280F381E02D232D85 +:1009100040E0642DC5010995F7018683882309F419 +:10092000D1C099A99087282F40E060E0848195810B +:100930000E94EC0D982ED501ED91FC91D6011496F4 +:100940001C92882361F00480F581E02DD701169672 +:100950006C91C5010995F7011682892DB9C00190E6 +:10096000F081E02DD70116966C91C501099500978D +:1009700009F4A1CF133108F012E1FC0154821111E6 +:100980000FC04BAC512CEDE2AE2EE1E0BE2E470184 +:10099000F2E08F0E911C6E0181E1C80ED11C39C0AE +:1009A000212F30E08E01065D1F4F40E0D7011696E3 +:1009B0006C91169714968D919C9115970E943F0DFE +:1009C000182F811171C0DDCFBA82A9829C828B82DF +:1009D0001E86188A1F8619A21AA21BA219A6DF82D8 +:1009E000CE82D986C8868D818B878A87DD86CC8624 +:1009F0008E010F5F1F4F252D40E0F7016681848136 +:100A000095810E948D0DD70152968C91823019F0FC +:100A100053945410D9CFF7018289823009F043C032 +:100A2000930142E06681848195810E948D0868EE81 +:100A300073E080E090E00E94E716D7011F962C91AA +:100A40001F9740E016966C91169714968D919C9185 +:100A500015970E941B0E182F811126C068EE73E0B7 +:100A600080E090E00E94E71640E060E0C7010E944D +:100A7000A011182F811118C020E040E060E0C701EC +:100A80000E94761183E391E09A838983AE014F5FE0 +:100A90005F4F60E070E0C7010E94331181E0F70111 +:100AA000878B80E015C011EDD701ED91FC9104809A +:100AB000F581E02DC7010995812F0AC089ED08C095 +:100AC00087ED06C084ED04C0F60191828082ECCFF0 +:100AD000EB960FB6F894DEBF0FBECDBFDF91CF917E +:100AE0001F910F91FF90EF90DF90CF90BF90AF904C +:100AF0009F908F907F906F905F904F903F90089560 +:100B000020916602222399F03FB7F8942091660263 +:100B1000213059F42DB3209364024DB32091650226 +:100B2000209524232DBB3FBF02C0309364028CBDAF +:100B30009DBD089580EE91E00C943A102A9A089594 +:100B4000CF93C82F80E591E00E9480052A98CEBD02 +:100B500000000DB407FEFDCF8EB51EBC00000DB425 +:100B600007FEFDCFCEB50E949E05809166028111E1 +:100B70000E94AB038C2FCF9108951F93CF93DF93E7 +:100B80001F92CDB7DEB7182F80E591E069830E94F0 +:100B900080052A98812F82608EBD69810DB407FE81 +:100BA000FDCF8EB56EBD0DB407FEFDCF8EB50E9494 +:100BB0009E0580916602882331F00F90DF91CF91DE +:100BC0001F910C94AB030F90DF91CF911F9108956B +:100BD00088EF0E94A005807C8034A1F018F488235F +:100BE00001F10895803819F0803CB9F0089588ED3E +:100BF0000E94A00581FD0BC069EC88ED0E94BD0537 +:100C000082E00CC088ED0E94A00581FDF5CF6BEC61 +:100C100088ED0E94BD0583E001C081E08093AC01B6 +:100C2000089561ED88ED0E94BD051092AC01089514 +:100C30000F931F93CF93DF938C01229A0E949E05FE +:100C40000E943816229A0E949E05219868E188E841 +:100C50000E94BD0560E288E70E94BD0560E088E76C +:100C60000E94BD05C0E0D0E088E60E94A005219664 +:100C700080FD06C0CF3F8FEFD807B1F78FEF1DC0C3 +:100C800061EC88ED0E94BD0560E680ED0E94BD0527 +:100C900064E088EE0E94BD0588EE0E94A00582FFF8 +:100CA000FBCFC8010E94E80560E288EC0E94BD0508 +:100CB00061E080E80E94BD0580E0DF91CF911F9147 +:100CC0000F91089561E0809114010E94901761E0F6 +:100CD000809112010E94901761E0809110010E94A2 +:100CE000901761E080915B020E94901761E0809113 +:100CF0000E010E94901780EE91E00E9418068F3F2F +:100D000031F466E171E081E792E00E94E61868EC58 +:100D100070E080E090E00E94E7160E94B8166857E5 +:100D20007C4E8F4F9F4F6093B2017093B3018093BD +:100D3000B4019093B5018DEA91E09093C401809342 +:100D4000C30160E0809114010E94C91760E08091A6 +:100D500012010E94C91760E0809110010E94C9171A +:100D600060E080915B020E94C91761E080910E01F2 +:100D70000C94C91780EE91E00E944B0760EE71E081 +:100D80008FEC91E00E94C41480EE91E09093BB013F +:100D90008093BA018DE491E09093B7018093B601FE +:100DA0008BE691E09093B9018093B8011092C9014C +:100DB0001092CA011092CB011092CC011092CD0179 +:100DC0001092BD0188E08093BE018CE38093BF0147 +:100DD0001092C0011092C10184E08093C20181E0B1 +:100DE0008093C8011092C7011092C5011092C401EE +:100DF0001092C301E6E3F2E080E090E021913191AE +:100E0000232B51F4FC01EE0FFF1FEA5CFD4F86EB34 +:100E100091E09183808304C001968031910571F740 +:100E200089E391E09093AE018093AD010895FC01B8 +:100E300020812EBDDC019B012150310951F011961A +:100E40005C9111970DB407FEFDCF4EB55EBD4D937D +:100E5000F3CFFB013197E80FF91F0DB407FEFDCF6B +:100E60008EB5808308958EBD00000DB407FEFDCFC2 +:100E70008EB5089580916602882361F09FB7F8943B +:100E80002091660280916402213019F48DBB9FBFCE +:100E900008958FBF0895FC0181E791E091838083DD +:100EA0001582108681E0818712869F012E5F3F4F59 +:100EB00037832683128288E083838CE3848380E0F7 +:100EC00090E041E0DF01A80FB91F1D961C921D970D +:100ED0001E964C931E971F961C921F971C963C9330 +:100EE0002E931B9705968B34910561F7EA58FF4FB7 +:100EF000108281E1809361020895CF92DF92EF9298 +:100F0000FF920F931F93CF93DF931F92CDB7DEB75E +:100F10007C016623B1F18C01C12CD12CF801EA5A75 +:100F2000FF4F80819181009719F1DC01ED91FC91D7 +:100F30000084F185E02D698309956981861318C0C5 +:100F4000F601BB96EE0FFF1FEE0DFF1D8081918114 +:100F5000DC01ED91FC910480F581E02D0F90DF9193 +:100F6000CF911F910F91FF90EF90DF90CF90099458 +:100F7000BFEFCB1ADB0A0E5F1F4FE0E1CE16D104A4 +:100F800069F680E00F90DF91CF911F910F91FF9054 +:100F9000EF90DF90CF90089520E030E041E0FC0139 +:100FA000E20FF31F5585561739F04F5F2B5F3F4F08 +:100FB0004031A9F780E00895842F0895EF92FF92C1 +:100FC0001F93CF93DF9300D0CDB7DEB77C01162FF0 +:100FD00067FD5FC0283008F05CC0442331F0DC01BD +:100FE00015968C91873009F454C060E0C7012A83BC +:100FF00049830E94CC072A814981882309F449C08A +:10100000E82FF0E0111123C085E08E9FD0018F9F63 +:10101000B00D1124AE0DBF1D442359F081E4189684 +:101020008C93D70115968C9115978F5F15968C939D +:1010300003C081E018968C9385E08E9FD0018F9F2E +:10104000B00D1124AE0DBF1D18968C9123C0612FD9 +:101050006770660F660F660F442361F06064D70106 +:1010600015968C9115978F5F15968C938770687F76 +:10107000682B03C02770687B622B85E08E9FD001B0 +:101080008F9FB00D1124AE0DBF1D18966C93862F47 +:1010900001C080E00F900F90DF91CF911F91FF90E2 +:1010A000EF900895CF93DF93EC01662359F00E94EF +:1010B000CC07882349F09E0145E0849F200D311D17 +:1010C0001124C901069602C080E090E0DF91CF9123 +:1010D0000895CF93DF931F92CDB7DEB749830E9467 +:1010E00052084981009789F0DC01ED91FC9111973C +:1010F000309759F013969C9180E0891731F0208148 +:10110000241731F033968F5FF8CF80E090E001C074 +:10111000CF010F90DF91CF910895EF92FF921F932F +:10112000CF93DF931F92CDB7DEB7162F790121152C +:10113000310569F049830E945208FC0149810097FA +:1011400041F01283F182E082438380E003C088EDA6 +:1011500001C086ED0F90DF91CF911F91FF90EF902E +:1011600008952A9808951F93CF93DF931F92CDB7C8 +:10117000DEB7182F80E591E00E9480050E94B1083B +:10118000812F0E94330780E00E94330789830E94E9 +:101190009E050E943A0789810F90DF91CF911F91A0 +:1011A00008951F93CF93DF9300D01F92CDB7DEB782 +:1011B000182F80E591E06B830E9480050E94B108A2 +:1011C000126019836B816A8362E070E0CE01019640 +:1011D0000E9417070E949E050E943A070F900F90E9 +:1011E0000F90DF91CF911F9108958F929F92BF92A0 +:1011F000CF92DF92EF92FF920F931F93CF93DF93E3 +:101200001F92CDB7DEB74C01B62E690149830E940B +:1012100052087C014981009709F443C0FC01808198 +:101220009181892B09F43FC06B2DC4010E9469088C +:10123000F601918380830097C1F1FC0122812695FC +:101240002695822F90E0409764F441E050E060E002 +:1012500070E004C0440F551F661F771F2A95D2F710 +:1012600002C040E050E841505109F80151834083E9 +:101270006B2D80EE0E94D10888ED0E94B308F70123 +:101280009481992339F0F401EA58FF4F608162603C +:10129000682B02C0682F697F88ED0E94D10880E02A +:1012A00005C086ED03C087ED01C08BED0F90DF9187 +:1012B000CF911F910F91FF90EF90DF90CF90BF9053 +:1012C0009F908F9008958F929F92AF92BF92CF92EE +:1012D000DF92EF92FF920F931F93CF93DF931F92B2 +:1012E000CDB7DEB7A62E890149830E94B8166B01DF +:1012F0007C0188E8C80E83E1D81EE11CF11C812C1A +:10130000912CB12C20E04981A42A29830E94B8168F +:101310006C197D098E099F09298197FF2DC06A2DBF +:1013200080EF0E94D1080E94B8166C197D098E09C1 +:101330009F0997FF09C088EC0E94B30887FFF3CF8D +:1013400060E888EC0E94D10888EF0E94B308282F3B +:101350002F70243019F02E3059F00EC0EFEF8E1A96 +:101360009E0A0115110589F28016910671F604C0D6 +:10137000B394F3E0BF12C9CF822F0F90DF91CF91CA +:101380001F910F91FF90EF90DF90CF90BF90AF90A3 +:101390009F908F9008959F92AF92BF92CF92DF92CD +:1013A000EF92FF920F931F93CF93DF937C01B42EA4 +:1013B000122FAA24A394DC01A60FB11DA60FB11D04 +:1013C0006D0186E5C80ED11CC42FD0E0AB96CC0FC2 +:1013D000DD1FCE0DDF1DD6018D919C91DC01ED91BD +:1013E000FC910280F381E02D202F412F6B2D099578 +:1013F000803EC1F4B1100BC061E088EE0E94D108BC +:1014000066E670E080E090E00E94E71615C08881F3 +:101410009981DC01ED91FC910284F385E02D612F2F +:1014200009950AC08D3031F48FEF8A0D833008F0B2 +:1014300042C017C0811142C0F60180819181DC0158 +:10144000ED91FC910190F081E02D202F412F6B2D2B +:101450000995982EBDE08B130CC08FEF8A0D833059 +:1014600050F464E670E080E090E00E94E716A394F8 +:10147000B2CF882311F1B1100BC061E088EE0E9459 +:10148000D10866E670E080E090E00E94E71611C0A7 +:10149000EB2DF0E0BB96EE0FFF1FEE0DFF1D8081E0 +:1014A0009181DC01ED91FC910284F385E02D612FA7 +:1014B0000995892D03C08DE001C080E0DF91CF91B7 +:1014C0001F910F91FF90EF90DF90CF90BF90AF9062 +:1014D0009F9008950F931F93CF93DF93D82FC62F1C +:1014E0008A0180E591E00E9480050E94B1088D2F5D +:1014F00082600E943307D0E0209721F0BE01C8012E +:101500000E941707C00FD11F0E949E050E943A0734 +:10151000CE01DF91CF911F910F9108952F923F92AD +:101520004F925F926F927F928F929F92AF92BF92F3 +:10153000CF92DF92EF92FF920F931F93CF93DF939F +:1015400000D000D01F92CDB7DEB77D836C835A01E7 +:101550006901FB0121808FEF820D803408F06FC09C +:101560000E94B8162B013C01F8E84F0EF3E15F1E14 +:10157000611C711CEC81FD81828180FF02C060E8EA +:1015800001C060E488EE0E94D10820E0312CC11433 +:10159000D10409F444C076012C143D0408F471010F +:1015A000EA82A8016E2D80E10E946A0A6E2D88E30E +:1015B0000E94D108EC81FD816081606280EF0E9411 +:1015C000D10888EC0E94B30887FFFBCF60E888EC65 +:1015D0000E94D10888EF0E94B308282F2F70812C19 +:1015E000912C1982222309F46BC02B830E94B81618 +:1015F00064197509860997092B8197FF61C0263008 +:1016000001F12E3009F456C0243049F4FFEF8F1A4F +:101610009F0AA114B10459F18A149B0441F588EF83 +:101620002B830E94B30885FB882780F9EC81FD811C +:10163000928180FB90F992832B81822F46C08AEDA4 +:1016400044C088EF0E94B30885FB882780F991E0A9 +:101650008927EC81FD81928180FB90F9928390FF34 +:1016600002C060E801C060E488EE0E94D10860E03A +:1016700088E30E94D108F801608180E10E94D108CE +:101680006A8188E30E94D108EC81FD8160816062FB +:1016900080EF0E94D10888EC0E94B30887FFFBCF3F +:1016A00060E888EC0E94D10888EF0E94B308282FD8 +:1016B0002F7098CF89818F5F89838330C1F6AFCF38 +:1016C000CE18DF080E0D1F1D62CF0F900F900F90E8 +:1016D0000F900F90DF91CF911F910F91FF90EF909E +:1016E000DF90CF90BF90AF909F908F907F906F9042 +:1016F0005F904F903F902F9008952F923F924F927E +:101700005F926F927F928F929F92AF92BF92CF9291 +:10171000DF92EF92FF920F931F93CF93DF93CDB79A +:10172000DEB729970FB6F894DEBF0FBECDBF1C0100 +:10173000798768875B834A836901D9018D909C9082 +:101740001197FB01F181F9831D921C92DB01129626 +:101750008C9181FF02C060E201C060E188EE0E94CE +:10176000D1088E2D90E0A0E0B0E08C839D83AE8305 +:10177000BF83482C2A813B81A885B9854C9160E0C4 +:10178000C1010E946309F82EB6E08B1316C088EFE2 +:101790000E94B3088295817091E08927E885F985D8 +:1017A000928180FB91F9928391FF02C060E201C0B7 +:1017B00060E188EE0E94D108DDCF811166C088EC1F +:1017C0000E94B30882FF5FC080E30E94B308582ED6 +:1017D00090E08816990608F4542CD6018D919C91BE +:1017E000652C712CF401E81BF90BCF01F7FF02C047 +:1017F00080E090E05301861597050CF45C0180E5CC +:1018000091E00E9480050E94B10888E00E943307A1 +:10181000A50160E070E0C8010E941A1AA114B10489 +:1018200021F0B501C8010E9417070A0D1B1D0E9477 +:101830009E050E943A0764E088EC0E94D108D60118 +:101840008D919C911197860D971D8D939C93B981D5 +:101850005B1618F08815990560F088EF0E94B308B0 +:1018600082958170E885F985928180FB91F9928358 +:101870000CC0EE2009F47ECF6C817D818E819F812A +:101880000E94E71677CF30EFF32E8F2D29960FB6F3 +:10189000F894DEBF0FBECDBFDF91CF911F910F91A6 +:1018A000FF90EF90DF90CF90BF90AF909F908F9080 +:1018B0007F906F905F904F903F902F9008952F9260 +:1018C0003F924F925F926F927F928F929F92AF92D0 +:1018D000BF92CF92DF92EF92FF920F931F93CF931D +:1018E000DF93CDB7DEB762970FB6F894DEBF0FBEB9 +:1018F000CDBF3C01F42E322E202E5C2D4FA058A4DB +:10190000C9A4DAA4188A1F861E861D868E01035F6D +:101910001F4F9E01215F3F4F598B0E94F508598947 +:10192000811194C039822A82EB825C83BE82AD82AF +:1019300098868F82AE014F5F5F4F68E080E20E9421 +:101940006A0A2D853E854F2D60E1C3010E9463091F +:10195000182F81117AC0232C221C2224221CC1148E +:10196000D10409F466C0EF85F8898281222009F448 +:1019700053C082608283540133243394A114B10490 +:1019800009F455C05C864B864D855E856F857889E8 +:10199000E12C86019E01255F3F4FC3010E947D0B14 +:1019A000182F8630B1F42F85388988EF298B3A8B30 +:1019B0000E94B30885FB882780F9832529893A8905 +:1019C000D90112969C91129780FB91F912969C93E3 +:1019D000D5CF81113AC0EBA5FCA53097A1F00190BD +:1019E000F081E02D0190F081E02DC4018A199B095E +:1019F0009A8789876B857C859E01275F3F4FA6016B +:101A00008BA59CA509958B859C85A81AB90A841578 +:101A1000950508F0B3CF0DC0816082834D855E854A +:101A200086019201BF01C3010E948E0A182F111175 +:101A30000CC02D853E85222011F060EA01C060E8CF +:101A40004F2DC3010E94630901C0812F62960FB61A +:101A5000F894DEBF0FBECDBFDF91CF911F910F91E4 +:101A6000FF90EF90DF90CF90BF90AF909F908F90BE +:101A70007F906F905F904F903F902F9008958F923E +:101A80009F92AF92BF92CF92EF920F931F931F92AC +:101A90001F921F930F933F932F934901A12CB12CB9 +:101AA000CC24C394E12C06E020E80E945F0C0F9048 +:101AB0000F900F900F900F900F901F910F91EF903C +:101AC000CF90BF90AF909F908F9008958F929F92EC +:101AD000AF92BF92CF92EF92FF920F931F921F92FD +:101AE000FF92EF923F932F934901A12CB12C52E02A +:101AF000C52EE02E06E020E80E945F0C0F900F90AC +:101B00000F900F900F900F900F91FF90EF90CF904C +:101B1000BF90AF909F908F9008953F924F925F92A9 +:101B20006F927F928F929F92AF92BF92CF92DF92ED +:101B3000EF92FF920F931F93CF93DF93CDB7DEB752 +:101B4000C054D1090FB6F894DEBF0FBECDBF3C0123 +:101B5000562E442E322EB02ECE0101966C017C0101 +:101B6000022F29E030E0C3010E94660D81111BC0E5 +:101B70008B809C801F93BF92DF92CF921F9280E454 +:101B80008F93A12CB12C62E0C62EE32C06E020E856 +:101B9000442D652DC3010E945F0C0F900F900F9094 +:101BA0000F900F900F90C05CDF4F0FB6F894DEBF20 +:101BB0000FBECDBFDF91CF911F910F91FF90EF909E +:101BC000DF90CF90BF90AF909F908F907F906F905D +:101BD0005F904F903F9008958F929F92AF92BF92E7 +:101BE000CF92EF920F93CF931F921F921F921F924B +:101BF0001F921F92812C912CA12CB12CC12CE22E72 +:101C000005E020E00E945F0CC82F6CE271E080E0EC +:101C100090E00E94E7160F900F900F900F900F909A +:101C20000F908C2FCF910F91EF90CF90BF90AF90EE +:101C30009F908F9008958F929F92AF92BF92CF9274 +:101C4000EF920F931F921F921F921F921F921F924B +:101C5000812C912CA12CB12CC12CE22E09E020E08A +:101C60000E945F0C0F900F900F900F900F900F90AD +:101C70000F91EF90CF90BF90AF909F908F9008956D +:101C80008F929F92AF92BF92CF92DF92EF920F937B +:101C90001F93CF93DF9300D000D0CDB7DEB76C0198 +:101CA000590148011C821B821A8219828E010F5F22 +:101CB0001F4F9E012D5F3F4F0E94F508811109C003 +:101CC00049815A816B817C8184019501C6010E9402 +:101CD0007D0B0F900F900F900F90DF91CF911F9180 +:101CE0000F91EF90DF90CF90BF90AF909F908F902B +:101CF0000895CF92DF92FF920F931F93CF93DF93BC +:101D000000D0CDB7DEB76C01662309F442C0062FC0 +:101D100010E085E0689FB0011124F601E60FF71F7F +:101D20008085282F277086FF19C031E0E5E0FE2E60 +:101D3000F601F39EE00DF11D1124808586958695B0 +:101D4000869587708217E1F03F5F303188F3F601A6 +:101D50008581821303C02150F601258385E0809F91 +:101D6000F001819FF00D1124EC0DFD1D108681E026 +:101D70008187128682E0C80ED11CD782C68209C034 +:101D8000632FC6012A8339830E94790E2A81398103 +:101D9000CFCF0F900F90DF91CF911F910F91FF90B8 +:101DA000DF90CF900895CF93DF93EC016134A1F4DD +:101DB000FC01855B9F4F41E09E012E5F3F4F1586E2 +:101DC00046871786348723873596E817F907B9F7CA +:101DD0001D82DF91CF9108950E94CC07682FCE011C +:101DE000DF91CF910C94790E0F931F93CF93DF93D4 +:101DF000EC01022FCA3F8FEFD80711F486ED29C0FE +:101E00008E819F81892B01F12A87242F40E0CE010A +:101E10000E94DE07182F8823C9F0682FCE010E9488 +:101E20005208009759F3FC010483212F40E060E041 +:101E3000CE010E94EC0D082F882351F0612FCE01B6 +:101E40000E94D30E802F05C087ED03C084ED01C032 +:101E500080E0DF91CF911F910F9108952F923F92D3 +:101E60004F925F926F927F928F929F92AF92BF92AA +:101E7000CF92DF92EF92FF920F931F93CF93DF9356 +:101E8000CDB7DEB766970FB6F894DEBF0FBECDBFF5 +:101E90007C01862E742E922E1B8A88E08C8B8CE31C +:101EA0008D8BD701ED91FC910190F081E02D60E0E8 +:101EB000C70109956C01009709F4ABC0FC01A08033 +:101EC000B180CE0143969183808394828E010F5F0F +:101ED0001F4F22E130E040E060E0C7010E943F0D6B +:101EE000D601AD92BC928111ACC029843A844B8456 +:101EF0005C84BD81BE8B1E815701612C6501E6E5C6 +:101F0000CE0ED11CD6018D919C91009789F1DC01F8 +:101F1000ED91FC910084F185E02D0995811128C097 +:101F2000F60180819181DC01ED91FC910088F189BD +:101F3000E02D612F09958823D9F0F60180819181E8 +:101F4000DC01ED91FC910484F585E02DA201B10145 +:101F50000995811160C0F60180819181DC01ED91CC +:101F6000FC910684F785E02D6E890995811153C097 +:101F70006394B2E0AB0EB11CE0E16E12BFCF57012B +:101F8000612C6501F6E5CF0ED11CD6018D919C9197 +:101F9000009789F1DC01ED91FC910084F185E02D41 +:101FA0000995811128C0F60180819181DC01ED91B4 +:101FB000FC910088F189E02D612F09958823B1F10A +:101FC000F60180819181DC01ED91FC910484F5851D +:101FD000E02DA201B101099581110DC0F6018081AA +:101FE0009181DC01ED91FC910684F785E02D6E89ED +:101FF00009958823D9F06394B2E0AB0EB11CE0E1FF +:102000006E12BFCF292D472D682DC7010E94F40EF7 +:1020100018C086ED16C0092D272D482D662DC70145 +:102020000E94CB09813D09F4A3CF0BC0092D272DB8 +:10203000482D662DC7010E94CB09982F977F913DAF +:10204000D1F266960FB6F894DEBF0FBECDBFDF911A +:10205000CF911F910F91FF90EF90DF90CF90BF90A5 +:10206000AF909F908F907F906F905F904F903F9038 +:102070002F900895FF920F931F93CF93DF93EC015E +:1020800019990EC088EC0E94B30885FF05C0CE01E7 +:102090000E94E80560E201C060E088EC0E94D1087F +:1020A0008091AC01813051F058F0823029F08330BA +:1020B00039F5FF24F3940DC0F12C0BC083E106C069 +:1020C00080916102807F8031D9F081E1809361024B +:1020D00017C080916102807F803199F40E94B81608 +:1020E00068537F4F8F4F9F4F60935D0270935E02E6 +:1020F00080935F029093600280E28093610201C04E +:10210000F12C00E010E0FE01E00FF11FEA5AFF4F52 +:1021100080819181009739F0DC01ED91FC9106807E +:10212000F781E02D09950E5F1F4F0032110559F719 +:1021300080916102803409F446C070F4803269F104 +:102140008033D9F1813109F088C0FE01EA58FF4F90 +:10215000108200E010E00AC0813509F45AC08038CE +:1021600009F46AC0803509F078C03CC0FE01E00F78 +:10217000F11FEA5AFF4F80819181009739F0DC010D +:10218000ED91FC910480F581E02D09950E5F1F4FC4 +:102190000032110559F782E15EC00E94B816009125 +:1021A0005D0210915E0220915F0230916002601B1F +:1021B000710B820B930B97FD50C061E088EE0E947B +:1021C000D10880E448C088EE0E94B30880FD45C075 +:1021D00088ED0E94B308682F686088ED0E94D108DE +:1021E00080E539C088EC0E94B30886FF36C081E5DF +:1021F000809361020E94B8166C5E7F4F8F4F9F4F95 +:1022000060935D0270935E0280935F029093600220 +:1022100024C00E94B81600915D0210915E022091C8 +:102220005F0230916002601B710B820B930B97FD74 +:1022300014C080E8809361022F2D40E060E0CE0161 +:102240000E942E0F882331F0823D39F08093620284 +:1022500080EA01C080E980936102DF91CF911F91F4 +:102260000F91FF9008958F929F92AF92BF92CF925D +:10227000EF920F93CF93DF93CDB7DEB7C054D10960 +:102280000FB6F894DEBF0FBECDBF5F934F939E0194 +:102290002F5F3F4F3F932F931F9220E42F9320E80F +:1022A000822E912C5B0132E2C32EE12C06E021E864 +:1022B00040E0FC016681848195810E945F0C0F9053 +:1022C0000F900F900F900F900F90C05CDF4F0FB6E4 +:1022D000F894DEBF0FBECDBFDF91CF910F91EF908D +:1022E000CF90BF90AF909F908F9008958F929F92C4 +:1022F000AF92BF92CF92EF920F93A62EB12C1F9266 +:102300001F921F921F921F921F92812C912CC22EFE +:10231000E42E0AE021E240E0FC016681848195819F +:102320000E945F0C0F900F900F900F900F900F90E6 +:102330000F91EF90CF90BF90AF909F908F900895A6 +:102340008F929F92AF92BF92CF92EF920F93A62E51 +:10235000B12C1F921F921F921F921F921F92812CCD +:10236000912CC12CE42E0BE021E240E0FC016681BF +:10237000848195810E945F0C0F900F900F900F90B9 +:102380000F900F900F91EF90CF90BF90AF909F90D4 +:102390008F9008950F931F93CF93DF93EC012A81C1 +:1023A0002170F8018081982F9170291771F0E881D0 +:1023B000F98180FF04C00680F781E02D03C004800E +:1023C000F581E02DB801CE0109952A81269521706D +:1023D000F801808181FB992790F9291771F0E88134 +:1023E000F98181FF04C00284F385E02D03C00084DD +:1023F000F185E02DB801CE0109952A8122FB222723 +:1024000020F9F801808182FB992790F9291771F052 +:10241000E881F98182FF04C00684F785E02D03C0BE +:102420000484F585E02DB801CE010995F80181817C +:10243000811103C08281882341F0E881F981028003 +:10244000F381E02DB801CE010995F80180818A83DE +:10245000DF91CF911F910F910895CF93DF93FC01EE +:10246000EA0180819181892B21F580E028C0888153 +:102470009981892BD1F3DB018D919C91DC015C91D9 +:10248000238130E0241B310980819181820F931FC9 +:10249000DC015C93828181508283888199810197DC +:1024A00099838883DB018D919C91119701968D937F +:1024B0009C9342814111DBCF8381828381E0DF9154 +:1024C000CF910895FC018285089581E0693009F07B +:1024D00080E00895CF93DF93EC018A819B81DC013A +:1024E000ED91FC910480F581E02D6A8509958A853E +:1024F000813439F4EA81FB81EA58FF4F808184609E +:1025000080831A861B861C861D861E861F86188A57 +:1025100080E0DF91CF9108958F929F92AF92BF920A +:10252000CF92EF920F93A42EB12CB22A1F921F923A +:102530001F921F921F921F92812C912CC12CE62E6C +:1025400001E023E240E0FC016285828193810E94E8 +:102550005F0C0F900F900F900F900F900F900F91B6 +:10256000EF90CF90BF90AF909F908F9008958F92F3 +:102570009F92AF92BF92CF92EF920F93A62EB12C63 +:102580001F921F923F932F935F934F934A01C12C49 +:10259000E12C00E023EA40E0FC0162858281938126 +:1025A0000E945F0C0F900F900F900F900F900F9064 +:1025B0000F91EF90CF90BF90AF909F908F90089524 +:1025C0008F929F92AF92BF92CF92EF920F93A42ED1 +:1025D000B12CB22A1F921F921F921F921F921F921C +:1025E000812C912CC12CE62E03E023E240E0FC017B +:1025F0006285828193810E945F0C0F900F900F90F3 +:102600000F900F900F900F91EF90CF90BF90AF90E1 +:102610009F908F9008952F923F924F925F926F926A +:102620007F928F929F92AF92BF92CF92DF92EF9262 +:10263000FF920F931F93CF93DF93CDB7DEB7E99748 +:102640000FB6F894DEBF0FBECDBF3C01362E242E50 +:10265000DC011296ED90FC9013971A968C918111E3 +:1026600003C1D701ED91FC910190F081E02D60E074 +:10267000C70129AF09956C0129AD009709F4F6C08F +:10268000FC01A080B180A114B10409F4F1C04301A0 +:10269000F4E08F0E911CDC0111969C928E921496A0 +:1026A0002C93FE0131962F018F0128E030E040E0AD +:1026B00060E0D30112968D919C9113970E943F0D7B +:1026C000F60114828111DAC019818D81893009F0F7 +:1026D000D1C0D701ED91FC910280F381E02D222D34 +:1026E00041E0632DC7010995F3018287882309F42E +:1026F000C3C098859583282F40E060E08281938154 +:102700000E94EC0D082F882391F0D601AD92BC9267 +:10271000D701ED91FC910480F581E02DD3011A964B +:102720006C91C7010995F3011286102FABC01132CD +:1027300008F010E2D601AD92BC9211110BC09401C9 +:1027400042E0F3016285828193810E948D088111AC +:1027500098C011C0212F30E0820140E0D3011A96C9 +:102760006C911A9712968D919C9113970E943F0D30 +:10277000811187C0E4CF1F921F925F924F921F92E8 +:1027800088E08F9388E0882E912CA12CB12C99E2BF +:10279000C92EE12C06E020EA40E0F3016285828147 +:1027A00093810E945F0C182F0F900F900F900F9045 +:1027B0000F900F90811166C08B81D3011B968C9373 +:1027C0001B97720100E028E030E040E01A966C911F +:1027D0001A9712968D919C9113970E94660D811104 +:1027E00050C02B813C8140E0F3016285828193815E +:1027F0000E94660D811145C0298130E0CE0181968D +:102800007C0140E0D3011A966C911A9712968D9133 +:102810009C9113970E94660D811133C02E8140E078 +:10282000F3016285828193810E941B0E811129C070 +:1028300001E0D3011B968C911B97801740F020E09C +:10284000402F68E0C3010E94E0120F5FF2CF1296A2 +:10285000ED91FC911397EA58FF4F8081846080834B +:1028600081E050968C930EC019ED0CC016ED0AC095 +:1028700017ED08C011ED06C014ED04C0F601B182D9 +:10288000A082182F812FE9960FB6F894DEBF0FBEF5 +:10289000CDBFDF91CF911F910F91FF90EF90DF900F +:1028A000CF90BF90AF909F908F907F906F905F90F0 +:1028B0004F903F902F900895BF92CF92DF92EF926A +:1028C000FF920F931F93CF93DF9300D000D0CDB72B +:1028D000DEB77C01B62E19821A821B821C8220E090 +:1028E000462F61E10E948C1220E04B2D60E1C70170 +:1028F0000E948C1220E04B2D64E0C7010E94E01280 +:1029000023E0C22ED12C9E012F5F3F4F44E050E0C8 +:102910006B2DC7010E94B712882301F120E04B2DD7 +:1029200064E1C7010E948C1220E04B2D60E1C701D9 +:102930000E948C1264E170E080E090E00E94E71653 +:102940000F900F900F900F90DF91CF911F910F91EB +:10295000FF90EF90DF90CF90BF90089509811A818A +:102960002B813C811D7F0330114020413105B1F2A4 +:1029700064E670E080E090E00E94E71681E0C81A0B +:10298000D10809F0C0CFCACFCF93DF93FC018BE70A +:1029900091E0918380837383628312861386148609 +:1029A000158616861786108A148288E085839CE334 +:1029B000968391E09783808784E081876115710514 +:1029C000B9F0CB01A0E0B0E0EC01CA5ADF4F28819A +:1029D0003981232B41F49B96AA0FBB1FA60FB71F6B +:1029E000ED93FC9305C011960296A031B10561F7F5 +:1029F000DF91CF910895DF92EF92FF920F931F9393 +:102A0000CF93DF93EC01D62E7A01FA010081118178 +:102A1000228133810130F3E01F07F1E02F073105F8 +:102A2000D1F060F40115E1E01E072E07310571F1C8 +:102A3000013011402140310571F062C0033081E066 +:102A4000180780E128073105E1F1033013402041E8 +:102A50003105B9F155C080916302811151C020E068 +:102A60004D2D61E1CE010E948C1220E04D2D60E1E0 +:102A7000CE010E948C1220E04D2D64E0CE010E9418 +:102A8000E01281E08093630281EB3BC020E0462F9F +:102A900061E1CE010E948C1220E04D2D60E1CE015B +:102AA0000E948C12109263026A8567708D2D877068 +:102AB000660F660F660F682B8A819B810E947D07D7 +:102AC0001FC020E04D2D64E1CE010E948C1220E059 +:102AD0004D2D60E1CE010E948C1264E170E080E037 +:102AE00090E00E94E7166A85F70121812695217002 +:102AF00067704D2D8A819B810E942E0F1092630278 +:102B000080E0DF91CF911F910F91FF90EF90DF90C8 +:102B10000895CF92DF92EF920F931F93CF93DF939D +:102B2000CDB7DEB72E970FB6F894DEBF0FBECDBF80 +:102B30006C0181E090E09E878D87E12C8E010F5F14 +:102B40001F4F9E01235F3F4F41E0F6016285828166 +:102B500093810E94400E811151C002E011E08981F1 +:102B60008023D1F019861A861B861C869E01275F5A +:102B70003F4F44E050E0612FC6010E94B71281111F +:102B80000BC0AE01475F5F4F612FC6010E94FB146F +:102B9000813B99F1811132C0000F1F5F1830F9F6A7 +:102BA00011E0F6018385811740F119861A861B868C +:102BB0001C869E01275F3F4F44E050E0612FC60115 +:102BC0000E94B712811117C089859A85877091700C +:102BD0008130914081F48B859C8581609C878B87B7 +:102BE000AE01475F5F4F612FC6010E94FB14813B1E +:102BF00021F0811103C01F5FD4CF80E02E960FB665 +:102C0000F894DEBF0FBECDBFDF91CF911F910F9122 +:102C1000EF90DF90CF9008950F931F93CF93DF93A2 +:102C2000EC0188898823F1F00E94B8160C851D8577 +:102C30002E853F85601B710B820B930B97FD0FC098 +:102C4000CE010E948915182F0E94B8166C597F4F2B +:102C50008F4F9F4F6C877D878E879F8701C010E0C5 +:102C6000812F01C080E0DF91CF911F910F910895D6 +:102C7000CF93CFB7F89480916702811127C0EAE91A +:102C8000F0E08491E6E8F0E09491E82FF0E0EE0FB8 +:102C9000FF1FE255FF4FA591B4918C91892321F438 +:102CA00061E08AE00E94C91761E08AE00E94901703 +:102CB0008CB580618CBD8CB580648CBD61E08DE08D +:102CC0000E94901761E08BE00E949017809167024C +:102CD0008F5F80936702CFBFCF9108951F920F92AD +:102CE0000FB60F9211242F933F938F939F93AF931F +:102CF000BF938091690290916A02A0916B02B0919A +:102D00006C023091680223E0230F2D3720F40196E6 +:102D1000A11DB11D05C026E8230F0296A11DB11DFE +:102D2000209368028093690290936A02A0936B02D9 +:102D3000B0936C0280916D0290916E02A0916F022F +:102D4000B09170020196A11DB11D80936D02909308 +:102D50006E02A0936F02B0937002BF91AF919F91EA +:102D60008F913F912F910F900FBE0F901F9018954C +:102D70002FB7F8946091690270916A0280916B029A +:102D800090916C022FBF08953FB7F89480916D0227 +:102D900090916E02A0916F02B091700226B5A89B2F +:102DA00005C02F3F19F00196A11DB11D3FBF662739 +:102DB000782F892F9A2F620F711D811D911D42E07E +:102DC000660F771F881F991F4A95D1F708958F9234 +:102DD0009F92AF92BF92CF92DF92EF92FF926B01E0 +:102DE0007C010E94C4164B015C01C114D104E104B2 +:102DF000F104F1F00E9408190E94C41668197909BB +:102E00008A099B09683E73408105910570F321E0B2 +:102E1000C21AD108E108F10888EE880E83E0981EF6 +:102E2000A11CB11CC114D104E104F10429F7DDCFC8 +:102E3000FF90EF90DF90CF90BF90AF909F908F90DA +:102E400008958230910538F0880F991F880F991FD7 +:102E500005970197F1F70895789484B5826084BD51 +:102E600084B5816084BD85B5826085BD85B581608E +:102E700085BDEEE6F0E0808181608083E1E8F0E0EE +:102E80001082808182608083808181608083E0E81D +:102E9000F0E0808181608083E1EBF0E080818460FC +:102EA0008083E0EBF0E0808181608083EAE7F0E0FE +:102EB0008081846080838081826080838081816062 +:102EC00080838081806880831092C1000895833060 +:102ED00081F028F4813099F08230A1F00895873094 +:102EE000A9F08830B9F08430D1F4809180008F7DD2 +:102EF00003C0809180008F7780938000089584B50F +:102F00008F7702C084B58F7D84BD08958091B00015 +:102F10008F7703C08091B0008F7D8093B0000895BB +:102F2000CF93DF9390E0FC01E458FF4F2491FC0124 +:102F3000E057FF4F8491882349F190E0880F991F53 +:102F4000FC01E255FF4FA591B4918C559F4FFC01B8 +:102F5000C591D4919FB7611108C0F8948C912095C8 +:102F600082238C93888182230AC0623051F4F894C2 +:102F70008C91322F309583238C938881822B888388 +:102F800004C0F8948C91822B8C939FBFDF91CF91DA +:102F900008950F931F93CF93DF931F92CDB7DEB7A2 +:102FA000282F30E0F901E859FF4F8491F901E458E6 +:102FB000FF4F1491F901E057FF4F04910023C9F02E +:102FC000882321F069830E9467176981E02FF0E070 +:102FD000EE0FFF1FEC55FF4FA591B4919FB7F894EA +:102FE0008C91611103C01095812301C0812B8C93BA +:102FF0009FBF0F90DF91CF911F910F9108951F9266 +:103000000F920FB60F9211242F938F939F93EF93EC +:10301000FF93E0918102F09182028081E09187022A +:10302000F091880282FD12C0908180918A028F5FA8 +:103030008F7320918B02821751F0E0918A02F0E0A9 +:10304000EF58FD4F958F80938A0201C08081FF91D8 +:10305000EF919F918F912F910F900FBE0F901F9026 +:1030600018951F920F920FB60F9211242F933F9332 +:103070004F935F936F937F938F939F93AF93BF9380 +:10308000EF93FF9381E792E00E944419FF91EF9143 +:10309000BF91AF919F918F917F916F915F914F9170 +:1030A0003F912F910F900FBE0F901F90189581E7C1 +:1030B00092E00E94091921E0892B09F420E0822F77 +:1030C0000895109274021092730288EE93E0A0E0CB +:1030D000B0E08093750290937602A0937702B0934C +:1030E000780280EA91E0909372028093710285ECFD +:1030F00090E090937E0280937D0284EC90E0909328 +:10310000800280937F0280EC90E090938202809313 +:10311000810281EC90E0909384028093830282ECA0 +:1031200090E0909386028093850286EC90E09093E5 +:1031300088028093870210928A0210928B0210926A +:103140008C0210928D020895CF92DF92EF92FF923F +:103150000F931F93CF93DF937C016A01EB0100E093 +:1031600010E00C151D0571F06991D701ED91FC91EE +:103170000190F081E02DC7010995892B19F00F5FAF +:103180001F4FEFCFC801DF91CF911F910F91FF909B +:10319000EF90DF90CF9008956115710581F0DB010C +:1031A0000D900020E9F7AD0141505109461B570B26 +:1031B000DC01ED91FC910280F381E02D099480E027 +:1031C00090E008956DE871E00C94CC180F931F9374 +:1031D000CF93DF93EC010E94CC188C01CE010E94AA +:1031E000E218800F911FDF91CF911F910F910895E9 +:1031F00008950E942C170E94F8180E946206C6E3E8 +:10320000D9E10E949A052097E1F30E943619F9CF7F +:103210000895FC01818D228D90E0805C9F4F821B80 +:1032200091098F7399270895FC01918D828D9817CC +:1032300031F0828DE80FF11D858D90E008958FEFBC +:103240009FEF0895FC01918D828D981761F0828D1A +:10325000DF01A80FB11D5D968C91928D9F5F9F73CA +:10326000928F90E008958FEF9FEF089587E598E1A2 +:10327000892B49F080E090E0892B29F00E945718B3 +:1032800081110C9400000895FC01848DDF01A80FCA +:10329000B11DA35ABF4F2C91848D90E001968F737E +:1032A0009927848FA689B7892C93A089B1898C919D +:1032B00080648C93938D848D981306C00288F38963 +:1032C000E02D80818F7D80830895CF93DF93EC0183 +:1032D000888D8823C9F0EA89FB89808185FD05C036 +:1032E000A889B9898C9186FD0FC00FB607FCF5CF70 +:1032F000808185FFF2CFA889B9898C9185FFEDCFB8 +:10330000CE010E944419E7CFDF91CF910895CF926B +:10331000DF92FF920F931F93CF93DF931F92CDB74E +:10332000DEB76C0181E0D60158968C9358975B9676 +:103330009C915B975C968C915C97981307C0509614 +:10334000ED91FC915197808185FD2EC0F601038D92 +:1033500010E00F5F1F4F0F731127F02EF601848DC1 +:10336000F81211C00FB607FCF9CFD6015096ED91B7 +:10337000FC915197808185FFF1CFC60169830E943E +:1033800044196981EBCF838DE80FF11DE35AFF4F9C +:103390006083D6015B960C935B975296ED91FC91FE +:1033A0005397808180620CC0D6015696ED91FC91B6 +:1033B000579760835096ED91FC915197808180647E +:1033C000808381E090E00F90DF91CF911F910F916A +:1033D000FF90DF90CF900895AA1BBB1B51E107C05F +:1033E000AA1FBB1FA617B70710F0A61BB70B881F95 +:1033F000991F5A95A9F780959095BC01CD01089524 +:1034000097FB072E16F4009407D077FD09D00E9491 +:10341000EC1907FC05D03EF4909581959F4F0895D7 +:10342000709561957F4F0895EE0FFF1F0590F49101 +:10343000E02D0994DC0101C06D9341505040E0F74C +:063440000895F894FFCF8F +:1034460000000E0380000C000100320000000400A2 +:103456000200010003004F534320646964206E6F2D +:10346600742073746172742E00000000004D020017 +:103476000000002A0100000000CA1135012B0130AE +:10348600018F009000AF00B0000000000026048805 +:1034960000BA00B803D5008A008B00D800DD00E230 +:1034A60000B100EA00ED00FEFF0000200100000070 +:1034B600005208DE07D30E000000000B1388006AD6 +:1034C600120C1662125C148B0065128D000D0A0038 +:1034D6006E616E00696E66006F7666000000000021 +:0C34E6008719A418091922191419651976 +:00000001FF diff --git a/USB Mouse Interface/arduino/USBMouseInterface/USBMouseInterface.ino.with_bootloader.standard.hex b/USB Mouse Interface/arduino/USBMouseInterface/USBMouseInterface.ino.with_bootloader.standard.hex new file mode 100644 index 0000000..0246baa --- /dev/null +++ b/USB Mouse Interface/arduino/USBMouseInterface/USBMouseInterface.ino.with_bootloader.standard.hex @@ -0,0 +1,883 @@ +:100000000C945E000C9486000C9486000C94860080 +:100010000C9486000C9486000C9486000C94860048 +:100020000C9486000C9486000C9486000C94860038 +:100030000C9486000C9486000C9486000C94860028 +:100040000C946E160C9486000C94FF170C943118C7 +:100050000C9486000C9486000C9486000C94860008 +:100060000C9486000C948600000000080002010039 +:100070000003040700000000000000000102040863 +:100080001020408001020408102001020408102002 +:10009000040404040404040402020202020203032E +:1000A0000303030300000000250028002B000000CC +:1000B0000000240027002A00BA06611811241FBE80 +:1000C000CFEFD8E0DEBFCDBF11E0A0E0B1E0E6E4C5 +:1000D000F4E302C005900D92AC3AB107D9F723E0E2 +:1000E000ACEAB1E001C01D92AE30B207E1F710E01A +:1000F000CCEBD0E004C02297FE010E94161AC83B48 +:10010000D107C9F70E94F9180C94211A0C94000029 +:1001100080E00895089580E0089581E008950895AD +:1001200080910A0190910B01A0910C01B0910D01F9 +:10013000843F21E09207A105B10524F4C296A11DD8 +:10014000B11D04C082E390E0A0E0B0E080930A011A +:1001500090930B01A0930C01B0930D0108950895A5 +:100160000895860F911D860F911DFC0156874587C6 +:1001700081E00895CF93DF93EC018C819D81DC01B8 +:10018000ED91FC910480F581E02D6E8109951F862B +:10019000188A81E08A8B1E821B8A1C8A1D8A1E8A0D +:1001A0001F8A80E0DF91CF910895FC018681089538 +:1001B00081E0633009F080E0089581E0623009F069 +:1001C00080E00895860F911D860F911DFC018585A5 +:1001D00096850895FC0187890895EF92FF92CF9349 +:1001E000DF93FC01E7012289223029F16787408BE8 +:1001F0008B8183708330F9F48A8187FF1CC08E81E4 +:10020000908D981708F4808F822F90E0DC01AA0F60 +:10021000BB1FA80FB91FAE0FBF1F8A818F70179623 +:100220008C9317978C8118968C93189784E0199665 +:100230008C932F5F228BDF91CF91FF90EF900895E9 +:10024000EF92FF920F9302970E94ED000F91FF90A3 +:10025000EF900895089561E080910E010C94C91704 +:1002600060E080910E010C94C9170F931F93CF93F8 +:10027000DF93EB018981992787FD909597FF03C054 +:1002800091958195910960910601709107010E94F5 +:10029000001A6F5F7F4F70935A026093590200E01B +:1002A00010E08091590290915A02081719070CF03A +:1002B00068C02981332727FD3095809108019091EE +:1002C00009018217930734F561E0809114010E94BF +:1002D000C91780910A0190910B010E94211761E0DA +:1002E000809112010E94C91780910A0190910B011F +:1002F0000E94211760E0809114010E94C91780912B +:100300000A0190910B010E94211760E08091120177 +:100310000E94C9172981332727FD30958091080154 +:10032000909109019195819591092817390734F524 +:1003300061E0809112010E94C91780910A01909199 +:100340000B010E94211761E0809114010E94C917DE +:1003500080910A0190910B010E94211760E0809129 +:1003600012010E94C91780910A0190910B010E940D +:10037000211760E0809114010E94C9170F5F1F4F81 +:1003800090CF8A81992787FD909597FF03C091951B +:100390008195910960910601709107010E94001AF0 +:1003A0006F5F7F4F709358026093570200E010E038 +:1003B0008091570290915802081719070CF068C0F5 +:1003C0002A81332727FD30958091080190910901FA +:1003D0008217930734F561E0809110010E94C917DC +:1003E00080910A0190910B010E94211761E0809198 +:1003F0005B020E94C91780910A0190910B010E9433 +:10040000211760E0809110010E94C91780910A01B4 +:1004100090910B010E94211760E080915B020E9485 +:10042000C9172A81332727FD3095809108019091C3 +:1004300009019195819591092817390734F561E0F3 +:1004400080915B020E94C91780910A0190910B0173 +:100450000E94211761E0809110010E94C9178091CC +:100460000A0190910B010E94211760E080915B02CC +:100470000E94C91780910A0190910B010E942117D7 +:1004800060E0809110010E94C9170F5F1F4F90CF4D +:10049000DF91CF911F910F9108952F923F924F922C +:1004A0005F926F927F928F929F92AF92BF92CF9204 +:1004B000DF92EF92FF920F931F93CF93DF9300D0C1 +:1004C00000D0CDB7DEB76C017C836B835A83498340 +:1004D0004C0180E1880E911C5601A7E0AA0EB11CC8 +:1004E00011E044E0442E57E0352E3601B2E16B0EA8 +:1004F000711C63E0262E72E0572E8B819C81892B24 +:1005000009F412C1F60180A1823061F128F4882338 +:1005100049F0813079F0F1CF833041F1843009F432 +:100520004BC0EBCF5482858196819087878352861A +:10053000518610A3AE014D5F5F4FBE016F5F7F4FCD +:10054000C5010E942D12882309F4EEC0D60115962C +:10055000ED91FC911697808191968C939197818172 +:1005600092968C93F6017682658220A2D6019296AD +:100570008C91843081F018F4823079F014C0853089 +:1005800081F0813281F4D60191968C9191978250BD +:1005900014968C9308C0F60113A2D60114963C92CF +:1005A00002C0F6018483F601858196819087878356 +:1005B00084818287818740A2D60192968C91843073 +:1005C000B1F0853009F442C0823009F06EC0AE014E +:1005D0004D5F5F4FBE016F5F7F4FC5010E942D12BF +:1005E000882309F4A1C0F601858984A38EC0AE01D9 +:1005F0004D5F5F4FBE016F5F7F4FC5010E942D129F +:10060000882309F491C0D60155968C915597833073 +:1006100009F07BC056968C915697813009F075C0D1 +:1006200098969C91989757968C91992321F08823BE +:1006300009F46BC003C0823009F067C0F60113A350 +:10064000928996A3938997A385A35FC0AE014D5F5E +:100650005F4FBE016F5F7F4FC5010E942D1288233F +:1006600009F462C0D60193968C919397882309F47C +:100670004CC012968D919C911397009709F445C038 +:10068000DC01ED91FC910190F081E02D7401D60127 +:1006900095960C91959797962C91979796964C9145 +:1006A000969794966C91099530C0F60181A1958535 +:1006B000992319F0913031F023C090E00297978789 +:1006C000868715872B813C8189819A81782F692FB4 +:1006D000D6011E964D915C911F9741155105E9F089 +:1006E00001962115310541F041505109F601578716 +:1006F000468721503109EACF79836A831C821B82A5 +:10070000F60186859785892B79F4D60116969C92F9 +:100710008E92159790961C92F0CE9A8389833C8393 +:100720002B83F6011586ECCF0F900F900F900F9052 +:10073000DF91CF911F910F91FF90EF90DF90CF90BD +:10074000BF90AF909F908F907F906F905F904F90F1 +:100750003F902F9008959FB7F89420916602809162 +:100760006402213019F48DBB9FBF08958FBF089597 +:10077000CF92DF92EF92FF920F931F93CF93DF936D +:10078000CDB7DEB762970FB6F894DEBF0FBECDBF10 +:100790006C01DC0157968C91882369F00E94B81691 +:1007A000F6010389148925893689601B710B820B38 +:1007B000930B97FF02C0F12C39C0F601838590E0BE +:1007C0009A8B898BE12C8E010F5F1F4F9E012F5E4C +:1007D0003F4F42856681848195810E94400EF82EAC +:1007E000811118C029893A892330310598F0D60142 +:1007F0001D968D919C911E97009761F0DC01ED9103 +:10080000FC910190F081E02D8E010F5F1F4F40E0C1 +:10081000B60109950E94B816F601208D620F711D70 +:10082000811D911D638B748B858B968B8F2D6296AA +:100830000FB6F894DEBF0FBECDBFDF91CF911F91F1 +:100840000F91FF90EF90DF90CF9008953F924F92DD +:100850005F926F927F928F929F92AF92BF92CF9250 +:10086000DF92EF92FF920F931F93CF93DF93CDB759 +:10087000DEB7EB970FB6F894DEBF0FBECDBF7C019D +:10088000462E342E522EDC011496AD90BC90159756 +:1008900016968C911697811111C158961C92D5010C +:1008A000ED91FC910190F081E02D60E0C50109958A +:1008B0006C01009711F486ED0BC1FC0180809180E2 +:1008C0008114910409F4FCC03701F7E06F0E711C2C +:1008D000DC0111967C926E9214965C928E01065DFC +:1008E0001F4F28E030E040E060E0F701848195810F +:1008F0000E943F0D182F8111E7C01AA5D6018D92D5 +:100900009C92D501ED91FC910280F381E02D232D85 +:1009100040E0642DC5010995F7018683882309F419 +:10092000D1C099A99087282F40E060E0848195810B +:100930000E94EC0D982ED501ED91FC91D6011496F4 +:100940001C92882361F00480F581E02DD701169672 +:100950006C91C5010995F7011682892DB9C00190E6 +:10096000F081E02DD70116966C91C501099500978D +:1009700009F4A1CF133108F012E1FC0154821111E6 +:100980000FC04BAC512CEDE2AE2EE1E0BE2E470184 +:10099000F2E08F0E911C6E0181E1C80ED11C39C0AE +:1009A000212F30E08E01065D1F4F40E0D7011696E3 +:1009B0006C91169714968D919C9115970E943F0DFE +:1009C000182F811171C0DDCFBA82A9829C828B82DF +:1009D0001E86188A1F8619A21AA21BA219A6DF82D8 +:1009E000CE82D986C8868D818B878A87DD86CC8624 +:1009F0008E010F5F1F4F252D40E0F7016681848136 +:100A000095810E948D0DD70152968C91823019F0FC +:100A100053945410D9CFF7018289823009F043C032 +:100A2000930142E06681848195810E948D0868EE81 +:100A300073E080E090E00E94E716D7011F962C91AA +:100A40001F9740E016966C91169714968D919C9185 +:100A500015970E941B0E182F811126C068EE73E0B7 +:100A600080E090E00E94E71640E060E0C7010E944D +:100A7000A011182F811118C020E040E060E0C701EC +:100A80000E94761183E391E09A838983AE014F5FE0 +:100A90005F4F60E070E0C7010E94331181E0F70111 +:100AA000878B80E015C011EDD701ED91FC9104809A +:100AB000F581E02DC7010995812F0AC089ED08C095 +:100AC00087ED06C084ED04C0F60191828082ECCFF0 +:100AD000EB960FB6F894DEBF0FBECDBFDF91CF917E +:100AE0001F910F91FF90EF90DF90CF90BF90AF904C +:100AF0009F908F907F906F905F904F903F90089560 +:100B000020916602222399F03FB7F8942091660263 +:100B1000213059F42DB3209364024DB32091650226 +:100B2000209524232DBB3FBF02C0309364028CBDAF +:100B30009DBD089580EE91E00C943A102A9A089594 +:100B4000CF93C82F80E591E00E9480052A98CEBD02 +:100B500000000DB407FEFDCF8EB51EBC00000DB425 +:100B600007FEFDCFCEB50E949E05809166028111E1 +:100B70000E94AB038C2FCF9108951F93CF93DF93E7 +:100B80001F92CDB7DEB7182F80E591E069830E94F0 +:100B900080052A98812F82608EBD69810DB407FE81 +:100BA000FDCF8EB56EBD0DB407FEFDCF8EB50E9494 +:100BB0009E0580916602882331F00F90DF91CF91DE +:100BC0001F910C94AB030F90DF91CF911F9108956B +:100BD00088EF0E94A005807C8034A1F018F488235F +:100BE00001F10895803819F0803CB9F0089588ED3E +:100BF0000E94A00581FD0BC069EC88ED0E94BD0537 +:100C000082E00CC088ED0E94A00581FDF5CF6BEC61 +:100C100088ED0E94BD0583E001C081E08093AC01B6 +:100C2000089561ED88ED0E94BD051092AC01089514 +:100C30000F931F93CF93DF938C01229A0E949E05FE +:100C40000E943816229A0E949E05219868E188E841 +:100C50000E94BD0560E288E70E94BD0560E088E76C +:100C60000E94BD05C0E0D0E088E60E94A005219664 +:100C700080FD06C0CF3F8FEFD807B1F78FEF1DC0C3 +:100C800061EC88ED0E94BD0560E680ED0E94BD0527 +:100C900064E088EE0E94BD0588EE0E94A00582FFF8 +:100CA000FBCFC8010E94E80560E288EC0E94BD0508 +:100CB00061E080E80E94BD0580E0DF91CF911F9147 +:100CC0000F91089561E0809114010E94901761E0F6 +:100CD000809112010E94901761E0809110010E94A2 +:100CE000901761E080915B020E94901761E0809113 +:100CF0000E010E94901780EE91E00E9418068F3F2F +:100D000031F466E171E081E792E00E94E61868EC58 +:100D100070E080E090E00E94E7160E94B8166857E5 +:100D20007C4E8F4F9F4F6093B2017093B3018093BD +:100D3000B4019093B5018DEA91E09093C401809342 +:100D4000C30160E0809114010E94C91760E08091A6 +:100D500012010E94C91760E0809110010E94C9171A +:100D600060E080915B020E94C91761E080910E01F2 +:100D70000C94C91780EE91E00E944B0760EE71E081 +:100D80008FEC91E00E94C41480EE91E09093BB013F +:100D90008093BA018DE491E09093B7018093B601FE +:100DA0008BE691E09093B9018093B8011092C9014C +:100DB0001092CA011092CB011092CC011092CD0179 +:100DC0001092BD0188E08093BE018CE38093BF0147 +:100DD0001092C0011092C10184E08093C20181E0B1 +:100DE0008093C8011092C7011092C5011092C401EE +:100DF0001092C301E6E3F2E080E090E021913191AE +:100E0000232B51F4FC01EE0FFF1FEA5CFD4F86EB34 +:100E100091E09183808304C001968031910571F740 +:100E200089E391E09093AE018093AD010895FC01B8 +:100E300020812EBDDC019B012150310951F011961A +:100E40005C9111970DB407FEFDCF4EB55EBD4D937D +:100E5000F3CFFB013197E80FF91F0DB407FEFDCF6B +:100E60008EB5808308958EBD00000DB407FEFDCFC2 +:100E70008EB5089580916602882361F09FB7F8943B +:100E80002091660280916402213019F48DBB9FBFCE +:100E900008958FBF0895FC0181E791E091838083DD +:100EA0001582108681E0818712869F012E5F3F4F59 +:100EB00037832683128288E083838CE3848380E0F7 +:100EC00090E041E0DF01A80FB91F1D961C921D970D +:100ED0001E964C931E971F961C921F971C963C9330 +:100EE0002E931B9705968B34910561F7EA58FF4FB7 +:100EF000108281E1809361020895CF92DF92EF9298 +:100F0000FF920F931F93CF93DF931F92CDB7DEB75E +:100F10007C016623B1F18C01C12CD12CF801EA5A75 +:100F2000FF4F80819181009719F1DC01ED91FC91D7 +:100F30000084F185E02D698309956981861318C0C5 +:100F4000F601BB96EE0FFF1FEE0DFF1D8081918114 +:100F5000DC01ED91FC910480F581E02D0F90DF9193 +:100F6000CF911F910F91FF90EF90DF90CF90099458 +:100F7000BFEFCB1ADB0A0E5F1F4FE0E1CE16D104A4 +:100F800069F680E00F90DF91CF911F910F91FF9054 +:100F9000EF90DF90CF90089520E030E041E0FC0139 +:100FA000E20FF31F5585561739F04F5F2B5F3F4F08 +:100FB0004031A9F780E00895842F0895EF92FF92C1 +:100FC0001F93CF93DF9300D0CDB7DEB77C01162FF0 +:100FD00067FD5FC0283008F05CC0442331F0DC01BD +:100FE00015968C91873009F454C060E0C7012A83BC +:100FF00049830E94CC072A814981882309F449C08A +:10100000E82FF0E0111123C085E08E9FD0018F9F63 +:10101000B00D1124AE0DBF1D442359F081E4189684 +:101020008C93D70115968C9115978F5F15968C939D +:1010300003C081E018968C9385E08E9FD0018F9F2E +:10104000B00D1124AE0DBF1D18968C9123C0612FD9 +:101050006770660F660F660F442361F06064D70106 +:1010600015968C9115978F5F15968C938770687F76 +:10107000682B03C02770687B622B85E08E9FD001B0 +:101080008F9FB00D1124AE0DBF1D18966C93862F47 +:1010900001C080E00F900F90DF91CF911F91FF90E2 +:1010A000EF900895CF93DF93EC01662359F00E94EF +:1010B000CC07882349F09E0145E0849F200D311D17 +:1010C0001124C901069602C080E090E0DF91CF9123 +:1010D0000895CF93DF931F92CDB7DEB749830E9467 +:1010E00052084981009789F0DC01ED91FC9111973C +:1010F000309759F013969C9180E0891731F0208148 +:10110000241731F033968F5FF8CF80E090E001C074 +:10111000CF010F90DF91CF910895EF92FF921F932F +:10112000CF93DF931F92CDB7DEB7162F790121152C +:10113000310569F049830E945208FC0149810097FA +:1011400041F01283F182E082438380E003C088EDA6 +:1011500001C086ED0F90DF91CF911F91FF90EF902E +:1011600008952A9808951F93CF93DF931F92CDB7C8 +:10117000DEB7182F80E591E00E9480050E94B1083B +:10118000812F0E94330780E00E94330789830E94E9 +:101190009E050E943A0789810F90DF91CF911F91A0 +:1011A00008951F93CF93DF9300D01F92CDB7DEB782 +:1011B000182F80E591E06B830E9480050E94B108A2 +:1011C000126019836B816A8362E070E0CE01019640 +:1011D0000E9417070E949E050E943A070F900F90E9 +:1011E0000F90DF91CF911F9108958F929F92BF92A0 +:1011F000CF92DF92EF92FF920F931F93CF93DF93E3 +:101200001F92CDB7DEB74C01B62E690149830E940B +:1012100052087C014981009709F443C0FC01808198 +:101220009181892B09F43FC06B2DC4010E9469088C +:10123000F601918380830097C1F1FC0122812695FC +:101240002695822F90E0409764F441E050E060E002 +:1012500070E004C0440F551F661F771F2A95D2F710 +:1012600002C040E050E841505109F80151834083E9 +:101270006B2D80EE0E94D10888ED0E94B308F70123 +:101280009481992339F0F401EA58FF4F608162603C +:10129000682B02C0682F697F88ED0E94D10880E02A +:1012A00005C086ED03C087ED01C08BED0F90DF9187 +:1012B000CF911F910F91FF90EF90DF90CF90BF9053 +:1012C0009F908F9008958F929F92AF92BF92CF92EE +:1012D000DF92EF92FF920F931F93CF93DF931F92B2 +:1012E000CDB7DEB7A62E890149830E94B8166B01DF +:1012F0007C0188E8C80E83E1D81EE11CF11C812C1A +:10130000912CB12C20E04981A42A29830E94B8168F +:101310006C197D098E099F09298197FF2DC06A2DBF +:1013200080EF0E94D1080E94B8166C197D098E09C1 +:101330009F0997FF09C088EC0E94B30887FFF3CF8D +:1013400060E888EC0E94D10888EF0E94B308282F3B +:101350002F70243019F02E3059F00EC0EFEF8E1A96 +:101360009E0A0115110589F28016910671F604C0D6 +:10137000B394F3E0BF12C9CF822F0F90DF91CF91CA +:101380001F910F91FF90EF90DF90CF90BF90AF90A3 +:101390009F908F9008959F92AF92BF92CF92DF92CD +:1013A000EF92FF920F931F93CF93DF937C01B42EA4 +:1013B000122FAA24A394DC01A60FB11DA60FB11D04 +:1013C0006D0186E5C80ED11CC42FD0E0AB96CC0FC2 +:1013D000DD1FCE0DDF1DD6018D919C91DC01ED91BD +:1013E000FC910280F381E02D202F412F6B2D099578 +:1013F000803EC1F4B1100BC061E088EE0E94D108BC +:1014000066E670E080E090E00E94E71615C08881F3 +:101410009981DC01ED91FC910284F385E02D612F2F +:1014200009950AC08D3031F48FEF8A0D833008F0B2 +:1014300042C017C0811142C0F60180819181DC0158 +:10144000ED91FC910190F081E02D202F412F6B2D2B +:101450000995982EBDE08B130CC08FEF8A0D833059 +:1014600050F464E670E080E090E00E94E716A394F8 +:10147000B2CF882311F1B1100BC061E088EE0E9459 +:10148000D10866E670E080E090E00E94E71611C0A7 +:10149000EB2DF0E0BB96EE0FFF1FEE0DFF1D8081E0 +:1014A0009181DC01ED91FC910284F385E02D612FA7 +:1014B0000995892D03C08DE001C080E0DF91CF91B7 +:1014C0001F910F91FF90EF90DF90CF90BF90AF9062 +:1014D0009F9008950F931F93CF93DF93D82FC62F1C +:1014E0008A0180E591E00E9480050E94B1088D2F5D +:1014F00082600E943307D0E0209721F0BE01C8012E +:101500000E941707C00FD11F0E949E050E943A0734 +:10151000CE01DF91CF911F910F9108952F923F92AD +:101520004F925F926F927F928F929F92AF92BF92F3 +:10153000CF92DF92EF92FF920F931F93CF93DF939F +:1015400000D000D01F92CDB7DEB77D836C835A01E7 +:101550006901FB0121808FEF820D803408F06FC09C +:101560000E94B8162B013C01F8E84F0EF3E15F1E14 +:10157000611C711CEC81FD81828180FF02C060E8EA +:1015800001C060E488EE0E94D10820E0312CC11433 +:10159000D10409F444C076012C143D0408F471010F +:1015A000EA82A8016E2D80E10E946A0A6E2D88E30E +:1015B0000E94D108EC81FD816081606280EF0E9411 +:1015C000D10888EC0E94B30887FFFBCF60E888EC65 +:1015D0000E94D10888EF0E94B308282F2F70812C19 +:1015E000912C1982222309F46BC02B830E94B81618 +:1015F00064197509860997092B8197FF61C0263008 +:1016000001F12E3009F456C0243049F4FFEF8F1A4F +:101610009F0AA114B10459F18A149B0441F588EF83 +:101620002B830E94B30885FB882780F9EC81FD811C +:10163000928180FB90F992832B81822F46C08AEDA4 +:1016400044C088EF0E94B30885FB882780F991E0A9 +:101650008927EC81FD81928180FB90F9928390FF34 +:1016600002C060E801C060E488EE0E94D10860E03A +:1016700088E30E94D108F801608180E10E94D108CE +:101680006A8188E30E94D108EC81FD8160816062FB +:1016900080EF0E94D10888EC0E94B30887FFFBCF3F +:1016A00060E888EC0E94D10888EF0E94B308282FD8 +:1016B0002F7098CF89818F5F89838330C1F6AFCF38 +:1016C000CE18DF080E0D1F1D62CF0F900F900F90E8 +:1016D0000F900F90DF91CF911F910F91FF90EF909E +:1016E000DF90CF90BF90AF909F908F907F906F9042 +:1016F0005F904F903F902F9008952F923F924F927E +:101700005F926F927F928F929F92AF92BF92CF9291 +:10171000DF92EF92FF920F931F93CF93DF93CDB79A +:10172000DEB729970FB6F894DEBF0FBECDBF1C0100 +:10173000798768875B834A836901D9018D909C9082 +:101740001197FB01F181F9831D921C92DB01129626 +:101750008C9181FF02C060E201C060E188EE0E94CE +:10176000D1088E2D90E0A0E0B0E08C839D83AE8305 +:10177000BF83482C2A813B81A885B9854C9160E0C4 +:10178000C1010E946309F82EB6E08B1316C088EFE2 +:101790000E94B3088295817091E08927E885F985D8 +:1017A000928180FB91F9928391FF02C060E201C0B7 +:1017B00060E188EE0E94D108DDCF811166C088EC1F +:1017C0000E94B30882FF5FC080E30E94B308582ED6 +:1017D00090E08816990608F4542CD6018D919C91BE +:1017E000652C712CF401E81BF90BCF01F7FF02C047 +:1017F00080E090E05301861597050CF45C0180E5CC +:1018000091E00E9480050E94B10888E00E943307A1 +:10181000A50160E070E0C8010E941A1AA114B10489 +:1018200021F0B501C8010E9417070A0D1B1D0E9477 +:101830009E050E943A0764E088EC0E94D108D60118 +:101840008D919C911197860D971D8D939C93B981D5 +:101850005B1618F08815990560F088EF0E94B308B0 +:1018600082958170E885F985928180FB91F9928358 +:101870000CC0EE2009F47ECF6C817D818E819F812A +:101880000E94E71677CF30EFF32E8F2D29960FB6F3 +:10189000F894DEBF0FBECDBFDF91CF911F910F91A6 +:1018A000FF90EF90DF90CF90BF90AF909F908F9080 +:1018B0007F906F905F904F903F902F9008952F9260 +:1018C0003F924F925F926F927F928F929F92AF92D0 +:1018D000BF92CF92DF92EF92FF920F931F93CF931D +:1018E000DF93CDB7DEB762970FB6F894DEBF0FBEB9 +:1018F000CDBF3C01F42E322E202E5C2D4FA058A4DB +:10190000C9A4DAA4188A1F861E861D868E01035F6D +:101910001F4F9E01215F3F4F598B0E94F508598947 +:10192000811194C039822A82EB825C83BE82AD82AF +:1019300098868F82AE014F5F5F4F68E080E20E9421 +:101940006A0A2D853E854F2D60E1C3010E9463091F +:10195000182F81117AC0232C221C2224221CC1148E +:10196000D10409F466C0EF85F8898281222009F448 +:1019700053C082608283540133243394A114B10490 +:1019800009F455C05C864B864D855E856F857889E8 +:10199000E12C86019E01255F3F4FC3010E947D0B14 +:1019A000182F8630B1F42F85388988EF298B3A8B30 +:1019B0000E94B30885FB882780F9832529893A8905 +:1019C000D90112969C91129780FB91F912969C93E3 +:1019D000D5CF81113AC0EBA5FCA53097A1F00190BD +:1019E000F081E02D0190F081E02DC4018A199B095E +:1019F0009A8789876B857C859E01275F3F4FA6016B +:101A00008BA59CA509958B859C85A81AB90A841578 +:101A1000950508F0B3CF0DC0816082834D855E854A +:101A200086019201BF01C3010E948E0A182F111175 +:101A30000CC02D853E85222011F060EA01C060E8CF +:101A40004F2DC3010E94630901C0812F62960FB61A +:101A5000F894DEBF0FBECDBFDF91CF911F910F91E4 +:101A6000FF90EF90DF90CF90BF90AF909F908F90BE +:101A70007F906F905F904F903F902F9008958F923E +:101A80009F92AF92BF92CF92EF920F931F931F92AC +:101A90001F921F930F933F932F934901A12CB12CB9 +:101AA000CC24C394E12C06E020E80E945F0C0F9048 +:101AB0000F900F900F900F900F901F910F91EF903C +:101AC000CF90BF90AF909F908F9008958F929F92EC +:101AD000AF92BF92CF92EF92FF920F931F921F92FD +:101AE000FF92EF923F932F934901A12CB12C52E02A +:101AF000C52EE02E06E020E80E945F0C0F900F90AC +:101B00000F900F900F900F900F91FF90EF90CF904C +:101B1000BF90AF909F908F9008953F924F925F92A9 +:101B20006F927F928F929F92AF92BF92CF92DF92ED +:101B3000EF92FF920F931F93CF93DF93CDB7DEB752 +:101B4000C054D1090FB6F894DEBF0FBECDBF3C0123 +:101B5000562E442E322EB02ECE0101966C017C0101 +:101B6000022F29E030E0C3010E94660D81111BC0E5 +:101B70008B809C801F93BF92DF92CF921F9280E454 +:101B80008F93A12CB12C62E0C62EE32C06E020E856 +:101B9000442D652DC3010E945F0C0F900F900F9094 +:101BA0000F900F900F90C05CDF4F0FB6F894DEBF20 +:101BB0000FBECDBFDF91CF911F910F91FF90EF909E +:101BC000DF90CF90BF90AF909F908F907F906F905D +:101BD0005F904F903F9008958F929F92AF92BF92E7 +:101BE000CF92EF920F93CF931F921F921F921F924B +:101BF0001F921F92812C912CA12CB12CC12CE22E72 +:101C000005E020E00E945F0CC82F6CE271E080E0EC +:101C100090E00E94E7160F900F900F900F900F909A +:101C20000F908C2FCF910F91EF90CF90BF90AF90EE +:101C30009F908F9008958F929F92AF92BF92CF9274 +:101C4000EF920F931F921F921F921F921F921F924B +:101C5000812C912CA12CB12CC12CE22E09E020E08A +:101C60000E945F0C0F900F900F900F900F900F90AD +:101C70000F91EF90CF90BF90AF909F908F9008956D +:101C80008F929F92AF92BF92CF92DF92EF920F937B +:101C90001F93CF93DF9300D000D0CDB7DEB76C0198 +:101CA000590148011C821B821A8219828E010F5F22 +:101CB0001F4F9E012D5F3F4F0E94F508811109C003 +:101CC00049815A816B817C8184019501C6010E9402 +:101CD0007D0B0F900F900F900F90DF91CF911F9180 +:101CE0000F91EF90DF90CF90BF90AF909F908F902B +:101CF0000895CF92DF92FF920F931F93CF93DF93BC +:101D000000D0CDB7DEB76C01662309F442C0062FC0 +:101D100010E085E0689FB0011124F601E60FF71F7F +:101D20008085282F277086FF19C031E0E5E0FE2E60 +:101D3000F601F39EE00DF11D1124808586958695B0 +:101D4000869587708217E1F03F5F303188F3F601A6 +:101D50008581821303C02150F601258385E0809F91 +:101D6000F001819FF00D1124EC0DFD1D108681E026 +:101D70008187128682E0C80ED11CD782C68209C034 +:101D8000632FC6012A8339830E94790E2A81398103 +:101D9000CFCF0F900F90DF91CF911F910F91FF90B8 +:101DA000DF90CF900895CF93DF93EC016134A1F4DD +:101DB000FC01855B9F4F41E09E012E5F3F4F1586E2 +:101DC00046871786348723873596E817F907B9F7CA +:101DD0001D82DF91CF9108950E94CC07682FCE011C +:101DE000DF91CF910C94790E0F931F93CF93DF93D4 +:101DF000EC01022FCA3F8FEFD80711F486ED29C0FE +:101E00008E819F81892B01F12A87242F40E0CE010A +:101E10000E94DE07182F8823C9F0682FCE010E9488 +:101E20005208009759F3FC010483212F40E060E041 +:101E3000CE010E94EC0D082F882351F0612FCE01B6 +:101E40000E94D30E802F05C087ED03C084ED01C032 +:101E500080E0DF91CF911F910F9108952F923F92D3 +:101E60004F925F926F927F928F929F92AF92BF92AA +:101E7000CF92DF92EF92FF920F931F93CF93DF9356 +:101E8000CDB7DEB766970FB6F894DEBF0FBECDBFF5 +:101E90007C01862E742E922E1B8A88E08C8B8CE31C +:101EA0008D8BD701ED91FC910190F081E02D60E0E8 +:101EB000C70109956C01009709F4ABC0FC01A08033 +:101EC000B180CE0143969183808394828E010F5F0F +:101ED0001F4F22E130E040E060E0C7010E943F0D6B +:101EE000D601AD92BC928111ACC029843A844B8456 +:101EF0005C84BD81BE8B1E815701612C6501E6E5C6 +:101F0000CE0ED11CD6018D919C91009789F1DC01F8 +:101F1000ED91FC910084F185E02D0995811128C097 +:101F2000F60180819181DC01ED91FC910088F189BD +:101F3000E02D612F09958823D9F0F60180819181E8 +:101F4000DC01ED91FC910484F585E02DA201B10145 +:101F50000995811160C0F60180819181DC01ED91CC +:101F6000FC910684F785E02D6E890995811153C097 +:101F70006394B2E0AB0EB11CE0E16E12BFCF57012B +:101F8000612C6501F6E5CF0ED11CD6018D919C9197 +:101F9000009789F1DC01ED91FC910084F185E02D41 +:101FA0000995811128C0F60180819181DC01ED91B4 +:101FB000FC910088F189E02D612F09958823B1F10A +:101FC000F60180819181DC01ED91FC910484F5851D +:101FD000E02DA201B101099581110DC0F6018081AA +:101FE0009181DC01ED91FC910684F785E02D6E89ED +:101FF00009958823D9F06394B2E0AB0EB11CE0E1FF +:102000006E12BFCF292D472D682DC7010E94F40EF7 +:1020100018C086ED16C0092D272D482D662DC70145 +:102020000E94CB09813D09F4A3CF0BC0092D272DB8 +:10203000482D662DC7010E94CB09982F977F913DAF +:10204000D1F266960FB6F894DEBF0FBECDBFDF911A +:10205000CF911F910F91FF90EF90DF90CF90BF90A5 +:10206000AF909F908F907F906F905F904F903F9038 +:102070002F900895FF920F931F93CF93DF93EC015E +:1020800019990EC088EC0E94B30885FF05C0CE01E7 +:102090000E94E80560E201C060E088EC0E94D1087F +:1020A0008091AC01813051F058F0823029F08330BA +:1020B00039F5FF24F3940DC0F12C0BC083E106C069 +:1020C00080916102807F8031D9F081E1809361024B +:1020D00017C080916102807F803199F40E94B81608 +:1020E00068537F4F8F4F9F4F60935D0270935E02E6 +:1020F00080935F029093600280E28093610201C04E +:10210000F12C00E010E0FE01E00FF11FEA5AFF4F52 +:1021100080819181009739F0DC01ED91FC9106807E +:10212000F781E02D09950E5F1F4F0032110559F719 +:1021300080916102803409F446C070F4803269F104 +:102140008033D9F1813109F088C0FE01EA58FF4F90 +:10215000108200E010E00AC0813509F45AC08038CE +:1021600009F46AC0803509F078C03CC0FE01E00F78 +:10217000F11FEA5AFF4F80819181009739F0DC010D +:10218000ED91FC910480F581E02D09950E5F1F4FC4 +:102190000032110559F782E15EC00E94B816009125 +:1021A0005D0210915E0220915F0230916002601B1F +:1021B000710B820B930B97FD50C061E088EE0E947B +:1021C000D10880E448C088EE0E94B30880FD45C075 +:1021D00088ED0E94B308682F686088ED0E94D108DE +:1021E00080E539C088EC0E94B30886FF36C081E5DF +:1021F000809361020E94B8166C5E7F4F8F4F9F4F95 +:1022000060935D0270935E0280935F029093600220 +:1022100024C00E94B81600915D0210915E022091C8 +:102220005F0230916002601B710B820B930B97FD74 +:1022300014C080E8809361022F2D40E060E0CE0161 +:102240000E942E0F882331F0823D39F08093620284 +:1022500080EA01C080E980936102DF91CF911F91F4 +:102260000F91FF9008958F929F92AF92BF92CF925D +:10227000EF920F93CF93DF93CDB7DEB7C054D10960 +:102280000FB6F894DEBF0FBECDBF5F934F939E0194 +:102290002F5F3F4F3F932F931F9220E42F9320E80F +:1022A000822E912C5B0132E2C32EE12C06E021E864 +:1022B00040E0FC016681848195810E945F0C0F9053 +:1022C0000F900F900F900F900F90C05CDF4F0FB6E4 +:1022D000F894DEBF0FBECDBFDF91CF910F91EF908D +:1022E000CF90BF90AF909F908F9008958F929F92C4 +:1022F000AF92BF92CF92EF920F93A62EB12C1F9266 +:102300001F921F921F921F921F92812C912CC22EFE +:10231000E42E0AE021E240E0FC016681848195819F +:102320000E945F0C0F900F900F900F900F900F90E6 +:102330000F91EF90CF90BF90AF909F908F900895A6 +:102340008F929F92AF92BF92CF92EF920F93A62E51 +:10235000B12C1F921F921F921F921F921F92812CCD +:10236000912CC12CE42E0BE021E240E0FC016681BF +:10237000848195810E945F0C0F900F900F900F90B9 +:102380000F900F900F91EF90CF90BF90AF909F90D4 +:102390008F9008950F931F93CF93DF93EC012A81C1 +:1023A0002170F8018081982F9170291771F0E881D0 +:1023B000F98180FF04C00680F781E02D03C004800E +:1023C000F581E02DB801CE0109952A81269521706D +:1023D000F801808181FB992790F9291771F0E88134 +:1023E000F98181FF04C00284F385E02D03C00084DD +:1023F000F185E02DB801CE0109952A8122FB222723 +:1024000020F9F801808182FB992790F9291771F052 +:10241000E881F98182FF04C00684F785E02D03C0BE +:102420000484F585E02DB801CE010995F80181817C +:10243000811103C08281882341F0E881F981028003 +:10244000F381E02DB801CE010995F80180818A83DE +:10245000DF91CF911F910F910895CF93DF93FC01EE +:10246000EA0180819181892B21F580E028C0888153 +:102470009981892BD1F3DB018D919C91DC015C91D9 +:10248000238130E0241B310980819181820F931FC9 +:10249000DC015C93828181508283888199810197DC +:1024A00099838883DB018D919C91119701968D937F +:1024B0009C9342814111DBCF8381828381E0DF9154 +:1024C000CF910895FC018285089581E0693009F07B +:1024D00080E00895CF93DF93EC018A819B81DC013A +:1024E000ED91FC910480F581E02D6A8509958A853E +:1024F000813439F4EA81FB81EA58FF4F808184609E +:1025000080831A861B861C861D861E861F86188A57 +:1025100080E0DF91CF9108958F929F92AF92BF920A +:10252000CF92EF920F93A42EB12CB22A1F921F923A +:102530001F921F921F921F92812C912CC12CE62E6C +:1025400001E023E240E0FC016285828193810E94E8 +:102550005F0C0F900F900F900F900F900F900F91B6 +:10256000EF90CF90BF90AF909F908F9008958F92F3 +:102570009F92AF92BF92CF92EF920F93A62EB12C63 +:102580001F921F923F932F935F934F934A01C12C49 +:10259000E12C00E023EA40E0FC0162858281938126 +:1025A0000E945F0C0F900F900F900F900F900F9064 +:1025B0000F91EF90CF90BF90AF909F908F90089524 +:1025C0008F929F92AF92BF92CF92EF920F93A42ED1 +:1025D000B12CB22A1F921F921F921F921F921F921C +:1025E000812C912CC12CE62E03E023E240E0FC017B +:1025F0006285828193810E945F0C0F900F900F90F3 +:102600000F900F900F900F91EF90CF90BF90AF90E1 +:102610009F908F9008952F923F924F925F926F926A +:102620007F928F929F92AF92BF92CF92DF92EF9262 +:10263000FF920F931F93CF93DF93CDB7DEB7E99748 +:102640000FB6F894DEBF0FBECDBF3C01362E242E50 +:10265000DC011296ED90FC9013971A968C918111E3 +:1026600003C1D701ED91FC910190F081E02D60E074 +:10267000C70129AF09956C0129AD009709F4F6C08F +:10268000FC01A080B180A114B10409F4F1C04301A0 +:10269000F4E08F0E911CDC0111969C928E921496A0 +:1026A0002C93FE0131962F018F0128E030E040E0AD +:1026B00060E0D30112968D919C9113970E943F0D7B +:1026C000F60114828111DAC019818D81893009F0F7 +:1026D000D1C0D701ED91FC910280F381E02D222D34 +:1026E00041E0632DC7010995F3018287882309F42E +:1026F000C3C098859583282F40E060E08281938154 +:102700000E94EC0D082F882391F0D601AD92BC9267 +:10271000D701ED91FC910480F581E02DD3011A964B +:102720006C91C7010995F3011286102FABC01132CD +:1027300008F010E2D601AD92BC9211110BC09401C9 +:1027400042E0F3016285828193810E948D088111AC +:1027500098C011C0212F30E0820140E0D3011A96C9 +:102760006C911A9712968D919C9113970E943F0D30 +:10277000811187C0E4CF1F921F925F924F921F92E8 +:1027800088E08F9388E0882E912CA12CB12C99E2BF +:10279000C92EE12C06E020EA40E0F3016285828147 +:1027A00093810E945F0C182F0F900F900F900F9045 +:1027B0000F900F90811166C08B81D3011B968C9373 +:1027C0001B97720100E028E030E040E01A966C911F +:1027D0001A9712968D919C9113970E94660D811104 +:1027E00050C02B813C8140E0F3016285828193815E +:1027F0000E94660D811145C0298130E0CE0181968D +:102800007C0140E0D3011A966C911A9712968D9133 +:102810009C9113970E94660D811133C02E8140E078 +:10282000F3016285828193810E941B0E811129C070 +:1028300001E0D3011B968C911B97801740F020E09C +:10284000402F68E0C3010E94E0120F5FF2CF1296A2 +:10285000ED91FC911397EA58FF4F8081846080834B +:1028600081E050968C930EC019ED0CC016ED0AC095 +:1028700017ED08C011ED06C014ED04C0F601B182D9 +:10288000A082182F812FE9960FB6F894DEBF0FBEF5 +:10289000CDBFDF91CF911F910F91FF90EF90DF900F +:1028A000CF90BF90AF909F908F907F906F905F90F0 +:1028B0004F903F902F900895BF92CF92DF92EF926A +:1028C000FF920F931F93CF93DF9300D000D0CDB72B +:1028D000DEB77C01B62E19821A821B821C8220E090 +:1028E000462F61E10E948C1220E04B2D60E1C70170 +:1028F0000E948C1220E04B2D64E0C7010E94E01280 +:1029000023E0C22ED12C9E012F5F3F4F44E050E0C8 +:102910006B2DC7010E94B712882301F120E04B2DD7 +:1029200064E1C7010E948C1220E04B2D60E1C701D9 +:102930000E948C1264E170E080E090E00E94E71653 +:102940000F900F900F900F90DF91CF911F910F91EB +:10295000FF90EF90DF90CF90BF90089509811A818A +:102960002B813C811D7F0330114020413105B1F2A4 +:1029700064E670E080E090E00E94E71681E0C81A0B +:10298000D10809F0C0CFCACFCF93DF93FC018BE70A +:1029900091E0918380837383628312861386148609 +:1029A000158616861786108A148288E085839CE334 +:1029B000968391E09783808784E081876115710514 +:1029C000B9F0CB01A0E0B0E0EC01CA5ADF4F28819A +:1029D0003981232B41F49B96AA0FBB1FA60FB71F6B +:1029E000ED93FC9305C011960296A031B10561F7F5 +:1029F000DF91CF910895DF92EF92FF920F931F9393 +:102A0000CF93DF93EC01D62E7A01FA010081118178 +:102A1000228133810130F3E01F07F1E02F073105F8 +:102A2000D1F060F40115E1E01E072E07310571F1C8 +:102A3000013011402140310571F062C0033081E066 +:102A4000180780E128073105E1F1033013402041E8 +:102A50003105B9F155C080916302811151C020E068 +:102A60004D2D61E1CE010E948C1220E04D2D60E1E0 +:102A7000CE010E948C1220E04D2D64E0CE010E9418 +:102A8000E01281E08093630281EB3BC020E0462F9F +:102A900061E1CE010E948C1220E04D2D60E1CE015B +:102AA0000E948C12109263026A8567708D2D877068 +:102AB000660F660F660F682B8A819B810E947D07D7 +:102AC0001FC020E04D2D64E1CE010E948C1220E059 +:102AD0004D2D60E1CE010E948C1264E170E080E037 +:102AE00090E00E94E7166A85F70121812695217002 +:102AF00067704D2D8A819B810E942E0F1092630278 +:102B000080E0DF91CF911F910F91FF90EF90DF90C8 +:102B10000895CF92DF92EF920F931F93CF93DF939D +:102B2000CDB7DEB72E970FB6F894DEBF0FBECDBF80 +:102B30006C0181E090E09E878D87E12C8E010F5F14 +:102B40001F4F9E01235F3F4F41E0F6016285828166 +:102B500093810E94400E811151C002E011E08981F1 +:102B60008023D1F019861A861B861C869E01275F5A +:102B70003F4F44E050E0612FC6010E94B71281111F +:102B80000BC0AE01475F5F4F612FC6010E94FB146F +:102B9000813B99F1811132C0000F1F5F1830F9F6A7 +:102BA00011E0F6018385811740F119861A861B868C +:102BB0001C869E01275F3F4F44E050E0612FC60115 +:102BC0000E94B712811117C089859A85877091700C +:102BD0008130914081F48B859C8581609C878B87B7 +:102BE000AE01475F5F4F612FC6010E94FB14813B1E +:102BF00021F0811103C01F5FD4CF80E02E960FB665 +:102C0000F894DEBF0FBECDBFDF91CF911F910F9122 +:102C1000EF90DF90CF9008950F931F93CF93DF93A2 +:102C2000EC0188898823F1F00E94B8160C851D8577 +:102C30002E853F85601B710B820B930B97FD0FC098 +:102C4000CE010E948915182F0E94B8166C597F4F2B +:102C50008F4F9F4F6C877D878E879F8701C010E0C5 +:102C6000812F01C080E0DF91CF911F910F910895D6 +:102C7000CF93CFB7F89480916702811127C0EAE91A +:102C8000F0E08491E6E8F0E09491E82FF0E0EE0FB8 +:102C9000FF1FE255FF4FA591B4918C91892321F438 +:102CA00061E08AE00E94C91761E08AE00E94901703 +:102CB0008CB580618CBD8CB580648CBD61E08DE08D +:102CC0000E94901761E08BE00E949017809167024C +:102CD0008F5F80936702CFBFCF9108951F920F92AD +:102CE0000FB60F9211242F933F938F939F93AF931F +:102CF000BF938091690290916A02A0916B02B0919A +:102D00006C023091680223E0230F2D3720F40196E6 +:102D1000A11DB11D05C026E8230F0296A11DB11DFE +:102D2000209368028093690290936A02A0936B02D9 +:102D3000B0936C0280916D0290916E02A0916F022F +:102D4000B09170020196A11DB11D80936D02909308 +:102D50006E02A0936F02B0937002BF91AF919F91EA +:102D60008F913F912F910F900FBE0F901F9018954C +:102D70002FB7F8946091690270916A0280916B029A +:102D800090916C022FBF08953FB7F89480916D0227 +:102D900090916E02A0916F02B091700226B5A89B2F +:102DA00005C02F3F19F00196A11DB11D3FBF662739 +:102DB000782F892F9A2F620F711D811D911D42E07E +:102DC000660F771F881F991F4A95D1F708958F9234 +:102DD0009F92AF92BF92CF92DF92EF92FF926B01E0 +:102DE0007C010E94C4164B015C01C114D104E104B2 +:102DF000F104F1F00E9408190E94C41668197909BB +:102E00008A099B09683E73408105910570F321E0B2 +:102E1000C21AD108E108F10888EE880E83E0981EF6 +:102E2000A11CB11CC114D104E104F10429F7DDCFC8 +:102E3000FF90EF90DF90CF90BF90AF909F908F90DA +:102E400008958230910538F0880F991F880F991FD7 +:102E500005970197F1F70895789484B5826084BD51 +:102E600084B5816084BD85B5826085BD85B581608E +:102E700085BDEEE6F0E0808181608083E1E8F0E0EE +:102E80001082808182608083808181608083E0E81D +:102E9000F0E0808181608083E1EBF0E080818460FC +:102EA0008083E0EBF0E0808181608083EAE7F0E0FE +:102EB0008081846080838081826080838081816062 +:102EC00080838081806880831092C1000895833060 +:102ED00081F028F4813099F08230A1F00895873094 +:102EE000A9F08830B9F08430D1F4809180008F7DD2 +:102EF00003C0809180008F7780938000089584B50F +:102F00008F7702C084B58F7D84BD08958091B00015 +:102F10008F7703C08091B0008F7D8093B0000895BB +:102F2000CF93DF9390E0FC01E458FF4F2491FC0124 +:102F3000E057FF4F8491882349F190E0880F991F53 +:102F4000FC01E255FF4FA591B4918C559F4FFC01B8 +:102F5000C591D4919FB7611108C0F8948C912095C8 +:102F600082238C93888182230AC0623051F4F894C2 +:102F70008C91322F309583238C938881822B888388 +:102F800004C0F8948C91822B8C939FBFDF91CF91DA +:102F900008950F931F93CF93DF931F92CDB7DEB7A2 +:102FA000282F30E0F901E859FF4F8491F901E458E6 +:102FB000FF4F1491F901E057FF4F04910023C9F02E +:102FC000882321F069830E9467176981E02FF0E070 +:102FD000EE0FFF1FEC55FF4FA591B4919FB7F894EA +:102FE0008C91611103C01095812301C0812B8C93BA +:102FF0009FBF0F90DF91CF911F910F9108951F9266 +:103000000F920FB60F9211242F938F939F93EF93EC +:10301000FF93E0918102F09182028081E09187022A +:10302000F091880282FD12C0908180918A028F5FA8 +:103030008F7320918B02821751F0E0918A02F0E0A9 +:10304000EF58FD4F958F80938A0201C08081FF91D8 +:10305000EF919F918F912F910F900FBE0F901F9026 +:1030600018951F920F920FB60F9211242F933F9332 +:103070004F935F936F937F938F939F93AF93BF9380 +:10308000EF93FF9381E792E00E944419FF91EF9143 +:10309000BF91AF919F918F917F916F915F914F9170 +:1030A0003F912F910F900FBE0F901F90189581E7C1 +:1030B00092E00E94091921E0892B09F420E0822F77 +:1030C0000895109274021092730288EE93E0A0E0CB +:1030D000B0E08093750290937602A0937702B0934C +:1030E000780280EA91E0909372028093710285ECFD +:1030F00090E090937E0280937D0284EC90E0909328 +:10310000800280937F0280EC90E090938202809313 +:10311000810281EC90E0909384028093830282ECA0 +:1031200090E0909386028093850286EC90E09093E5 +:1031300088028093870210928A0210928B0210926A +:103140008C0210928D020895CF92DF92EF92FF923F +:103150000F931F93CF93DF937C016A01EB0100E093 +:1031600010E00C151D0571F06991D701ED91FC91EE +:103170000190F081E02DC7010995892B19F00F5FAF +:103180001F4FEFCFC801DF91CF911F910F91FF909B +:10319000EF90DF90CF9008956115710581F0DB010C +:1031A0000D900020E9F7AD0141505109461B570B26 +:1031B000DC01ED91FC910280F381E02D099480E027 +:1031C00090E008956DE871E00C94CC180F931F9374 +:1031D000CF93DF93EC010E94CC188C01CE010E94AA +:1031E000E218800F911FDF91CF911F910F910895E9 +:1031F00008950E942C170E94F8180E946206C6E3E8 +:10320000D9E10E949A052097E1F30E943619F9CF7F +:103210000895FC01818D228D90E0805C9F4F821B80 +:1032200091098F7399270895FC01918D828D9817CC +:1032300031F0828DE80FF11D858D90E008958FEFBC +:103240009FEF0895FC01918D828D981761F0828D1A +:10325000DF01A80FB11D5D968C91928D9F5F9F73CA +:10326000928F90E008958FEF9FEF089587E598E1A2 +:10327000892B49F080E090E0892B29F00E945718B3 +:1032800081110C9400000895FC01848DDF01A80FCA +:10329000B11DA35ABF4F2C91848D90E001968F737E +:1032A0009927848FA689B7892C93A089B1898C919D +:1032B00080648C93938D848D981306C00288F38963 +:1032C000E02D80818F7D80830895CF93DF93EC0183 +:1032D000888D8823C9F0EA89FB89808185FD05C036 +:1032E000A889B9898C9186FD0FC00FB607FCF5CF70 +:1032F000808185FFF2CFA889B9898C9185FFEDCFB8 +:10330000CE010E944419E7CFDF91CF910895CF926B +:10331000DF92FF920F931F93CF93DF931F92CDB74E +:10332000DEB76C0181E0D60158968C9358975B9676 +:103330009C915B975C968C915C97981307C0509614 +:10334000ED91FC915197808185FD2EC0F601038D92 +:1033500010E00F5F1F4F0F731127F02EF601848DC1 +:10336000F81211C00FB607FCF9CFD6015096ED91B7 +:10337000FC915197808185FFF1CFC60169830E943E +:1033800044196981EBCF838DE80FF11DE35AFF4F9C +:103390006083D6015B960C935B975296ED91FC91FE +:1033A0005397808180620CC0D6015696ED91FC91B6 +:1033B000579760835096ED91FC915197808180647E +:1033C000808381E090E00F90DF91CF911F910F916A +:1033D000FF90DF90CF900895AA1BBB1B51E107C05F +:1033E000AA1FBB1FA617B70710F0A61BB70B881F95 +:1033F000991F5A95A9F780959095BC01CD01089524 +:1034000097FB072E16F4009407D077FD09D00E9491 +:10341000EC1907FC05D03EF4909581959F4F0895D7 +:10342000709561957F4F0895EE0FFF1F0590F49101 +:10343000E02D0994DC0101C06D9341505040E0F74C +:063440000895F894FFCF8F +:1034460000000E0380000C000100320000000400A2 +:103456000200010003004F534320646964206E6F2D +:10346600742073746172742E00000000004D020017 +:103476000000002A0100000000CA1135012B0130AE +:10348600018F009000AF00B0000000000026048805 +:1034960000BA00B803D5008A008B00D800DD00E230 +:1034A60000B100EA00ED00FEFF0000200100000070 +:1034B600005208DE07D30E000000000B1388006AD6 +:1034C600120C1662125C148B0065128D000D0A0038 +:1034D6006E616E00696E66006F7666000000000021 +:0C34E6008719A418091922191419651976 +:107E0000112484B714BE81FFF0D085E080938100F7 +:107E100082E08093C00088E18093C10086E0809377 +:107E2000C20080E18093C4008EE0C9D0259A86E02C +:107E300020E33CEF91E0309385002093840096BBD3 +:107E4000B09BFECF1D9AA8958150A9F7CC24DD24C4 +:107E500088248394B5E0AB2EA1E19A2EF3E0BF2EE7 +:107E6000A2D0813461F49FD0082FAFD0023811F036 +:107E7000013811F484E001C083E08DD089C08234E0 +:107E800011F484E103C0853419F485E0A6D080C0E4 +:107E9000853579F488D0E82EFF2485D0082F10E0AE +:107EA000102F00270E291F29000F111F8ED06801E7 +:107EB0006FC0863521F484E090D080E0DECF843638 +:107EC00009F040C070D06FD0082F6DD080E0C81688 +:107ED00080E7D80618F4F601B7BEE895C0E0D1E017 +:107EE00062D089930C17E1F7F0E0CF16F0E7DF06D8 +:107EF00018F0F601B7BEE89568D007B600FCFDCFD4 +:107F0000A601A0E0B1E02C9130E011968C91119780 +:107F100090E0982F8827822B932B1296FA010C0160 +:107F200087BEE89511244E5F5F4FF1E0A038BF0790 +:107F300051F7F601A7BEE89507B600FCFDCF97BE46 +:107F4000E89526C08437B1F42ED02DD0F82E2BD052 +:107F50003CD0F601EF2C8F010F5F1F4F84911BD097 +:107F6000EA94F801C1F70894C11CD11CFA94CF0C13 +:107F7000D11C0EC0853739F428D08EE10CD085E9AC +:107F80000AD08FE07ACF813511F488E018D01DD067 +:107F900080E101D065CF982F8091C00085FFFCCF94 +:107FA0009093C60008958091C00087FFFCCF809118 +:107FB000C00084FD01C0A8958091C6000895E0E648 +:107FC000F0E098E1908380830895EDDF803219F02E +:107FD00088E0F5DFFFCF84E1DECF1F93182FE3DFCA +:107FE0001150E9F7F2DF1F91089580E0E8DFEE27F6 +:047FF000FF270994CA +:027FFE00040479 +:0400000300007E007B +:00000001FF diff --git a/USB Mouse Interface/mousepaint.dsk b/USB Mouse Interface/mousepaint.dsk new file mode 100644 index 0000000..2c2e941 Binary files /dev/null and b/USB Mouse Interface/mousepaint.dsk differ