├── 3dprint ├── TinyDFplayer2.fcstd ├── TinyDFPlayer_BoardHolder.stl └── TinyDFPlayer_SpeakerHolder_v2.stl ├── hardware ├── TinyDFPlayer_BOM_v1.0.tsv ├── TinyDFPlayer_gerber_v1.0.zip └── TinyDFPlayer_schematic_v1.1.pdf ├── documentation ├── TinyDFPlayer_pic1.jpg ├── TinyDFPlayer_pic2.jpg ├── TinyDFPlayer_pic3.jpg ├── TinyDFPlayer_pic4.jpg ├── TinyDFPlayer_pic5.jpg └── TinyDFPlayer_pic6.jpg ├── software ├── binaries │ ├── readme.txt │ ├── tinyDFPlayer_v1.1.hex │ ├── tinyDFPlayer_v1.2.hex │ ├── tinyDFPlayer_v1.0.hex │ ├── tnympneo.hex │ └── tinympF.hex └── sources │ ├── tinyDFPlayer_v1.0.ino │ ├── tinyDFPlayer_v1.1.ino │ └── tinyDFPlayer_v1.2.ino ├── LICENSE └── README.md /3dprint/TinyDFplayer2.fcstd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wagiminator/ATtiny85-TinyDFPlayer/HEAD/3dprint/TinyDFplayer2.fcstd -------------------------------------------------------------------------------- /hardware/TinyDFPlayer_BOM_v1.0.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wagiminator/ATtiny85-TinyDFPlayer/HEAD/hardware/TinyDFPlayer_BOM_v1.0.tsv -------------------------------------------------------------------------------- /3dprint/TinyDFPlayer_BoardHolder.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wagiminator/ATtiny85-TinyDFPlayer/HEAD/3dprint/TinyDFPlayer_BoardHolder.stl -------------------------------------------------------------------------------- /documentation/TinyDFPlayer_pic1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wagiminator/ATtiny85-TinyDFPlayer/HEAD/documentation/TinyDFPlayer_pic1.jpg -------------------------------------------------------------------------------- /documentation/TinyDFPlayer_pic2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wagiminator/ATtiny85-TinyDFPlayer/HEAD/documentation/TinyDFPlayer_pic2.jpg -------------------------------------------------------------------------------- /documentation/TinyDFPlayer_pic3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wagiminator/ATtiny85-TinyDFPlayer/HEAD/documentation/TinyDFPlayer_pic3.jpg -------------------------------------------------------------------------------- /documentation/TinyDFPlayer_pic4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wagiminator/ATtiny85-TinyDFPlayer/HEAD/documentation/TinyDFPlayer_pic4.jpg -------------------------------------------------------------------------------- /documentation/TinyDFPlayer_pic5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wagiminator/ATtiny85-TinyDFPlayer/HEAD/documentation/TinyDFPlayer_pic5.jpg -------------------------------------------------------------------------------- /documentation/TinyDFPlayer_pic6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wagiminator/ATtiny85-TinyDFPlayer/HEAD/documentation/TinyDFPlayer_pic6.jpg -------------------------------------------------------------------------------- /hardware/TinyDFPlayer_gerber_v1.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wagiminator/ATtiny85-TinyDFPlayer/HEAD/hardware/TinyDFPlayer_gerber_v1.0.zip -------------------------------------------------------------------------------- /software/binaries/readme.txt: -------------------------------------------------------------------------------- 1 | avrdude -c usbasp -p t85 -U lfuse:w:0xe2:m -U hfuse:w:0xd7:m -U efuse:w:0xff:m -U flash:w:tinyDFPlayer_v1.2.hex 2 | -------------------------------------------------------------------------------- /3dprint/TinyDFPlayer_SpeakerHolder_v2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wagiminator/ATtiny85-TinyDFPlayer/HEAD/3dprint/TinyDFPlayer_SpeakerHolder_v2.stl -------------------------------------------------------------------------------- /hardware/TinyDFPlayer_schematic_v1.1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wagiminator/ATtiny85-TinyDFPlayer/HEAD/hardware/TinyDFPlayer_schematic_v1.1.pdf -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. 2 | To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send 3 | a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TinyDFPlayer - MP3-Player based on ATtiny85 and DFPlayerMini 2 | ATtiny controlled and LiPo battery powered MP3-Player using the DFPlayerMini module featuring: 3 | - Micro-SD-card slot 4 | - Battery charging and protection circuit 5 | - Battery level detection 6 | - OLED display 7 | - On/off switch 8 | - Volume control 9 | - Three push buttons to control the player 10 | - Remembers the last track played after switching off (EEPROM) 11 | 12 | You can directly connect a 3.7 V Li-Po battery and a 3 W / 4 Ohm speaker to the board. 13 | 14 | - Project Video (YouTube): https://youtu.be/QYjr8UXhs8I 15 | - Design Files (EasyEDA): https://easyeda.com/wagiminator/attiny85-tinydfplayer-smd 16 | 17 | ![pic1.jpg](https://raw.githubusercontent.com/wagiminator/ATtiny85-TinyDFPlayer/master/documentation/TinyDFPlayer_pic1.jpg) 18 | 19 | # Hardware 20 | ## DFPlayer Mini Module 21 | The [DFPLayer Mini module](https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299) is a serial MP3 module that offers the perfect built-in MP3 hardware decoding. It supports TF cards with FAT16 and FAT32 file systems. Music playback as well as other functions can be controlled by simple serial commands without cumbersome software implementation. The main features of the module are easy to use, stable and reliable functions. 22 | 23 | ## Battery Charger 24 | For battery charging the [TP4056](https://datasheet.lcsc.com/szlcsc/1904031009_TPOWER-TP4056_C382139.pdf) is used. The TP4056 is a complete constant-current/constant-voltage linear charger for single cell lithium-ion batteries. The charge voltage is fixed at 4.2V and the charge current (max 1000mA) can be programmed externally with a single resistor (R6). The TP4056 automatically terminates the charge cycle when the charge current drops to 1/10th the programmed value after the final float voltage is reached. Other features include current monitor, under voltage lockout and automatic recharge. Charging is done via the built-in [Micro USB connector](https://aliexpress.com/wholesale?SearchText=micro+usb+2pin+dip). 25 | 26 | ## Battery Protection 27 | For the battery protection (overcharge, overdischarge, overcurrent and short circuit protection) the [DW01A](https://datasheet.lcsc.com/szlcsc/1901091236_PUOLOP-DW01A_C351410.pdf) is used in combination with an [FS8205](https://datasheet.lcsc.com/szlcsc/Fortune-Semicon-FS8205_C32254.pdf) dual MOSFET. The DW01A is constantly measuring the voltage across the battery and the current flowing in (when charging) or coming out (when discharging). If something goes wrong it takes the battery out of the circuit by closing the MOSFET which acts like a switch between the negative side of the battery (B-) and ground. The overcurrent protection works by comparing the voltage drop across the MOSFET with the internal 150mV reference of the DW01A. As the RDS(on) of one FS8205 is around 2x25mOhm, the DW01A will close the MOSFET at 150mV/50mOhm = 3A. 28 | 29 | ## User Interface 30 | The user interface utilizes three buttons, a wheel potentiometer and a [128x64 pixels OLED display](http://aliexpress.com/wholesale?SearchText=128+64+0.96+oled+new+4pin). An [ATtiny85](https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2586-AVR-8-bit-Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet.pdf) microcontroller brings it all together. 31 | 32 | # Building Instructions 33 | ## Calibrating ATtiny85's Internal Oscillator 34 | Error-free serial communication with the DFPlayer module requires precise timing. Usually the internal oscillator of the ATtiny85 used for this is sufficiently accurate (at least I haven't had any problems so far). However, the serial communication may not work due to an imprecise oscillator. It is therefore recommended to calibrate it manually. There are numerous instructions on how to do this on the [Internet](http://ernstc.dk/arduino/tinytuner.html). Alternatively, the [TinyICOC](https://github.com/wagiminator/ATtiny84-TinyICOC) or the [TinyCalibrator](https://github.com/wagiminator/ATtiny84-TinyCalibrator) can be used for this. 35 | 36 | ## Building the TinyDFPlayer 37 | Solder all of the components onto the circuit board. Connect a 3.7 V Li-Po battery and a 3 W / 4 Ohm speaker to the corresponding pin headers. 38 | 39 | ![pic3.jpg](https://raw.githubusercontent.com/wagiminator/ATtiny85-TinyDFPlayer/master/documentation/TinyDFPlayer_pic3.jpg) 40 | 41 | If you want to use the 3D-printed case, first install a [70 * 40 mm speaker](https://aliexpress.com/wholesale?SearchText=speaker+4070) in the lower part of the housing and screw it in with 2.3 * 5 mm self-tapping screws. Place an approx. 1 cm thick piece of foam behind the speaker, which fits tightly against the outer walls of the housing. This improves the sound quality significantly and separates the battery from the speaker. Then place the battery. Click the upper part of the housing on the lower part and screw on the TinyDFPlayer Board with 2.3 * 5 mm self-tapping screws. Glue four rubber feet to the underside of the player. 42 | 43 | ![pic4.jpg](https://raw.githubusercontent.com/wagiminator/ATtiny85-TinyDFPlayer/master/documentation/TinyDFPlayer_pic4.jpg) 44 | ![pic5.jpg](https://raw.githubusercontent.com/wagiminator/ATtiny85-TinyDFPlayer/master/documentation/TinyDFPlayer_pic5.jpg) 45 | ![pic6.jpg](https://raw.githubusercontent.com/wagiminator/ATtiny85-TinyDFPlayer/master/documentation/TinyDFPlayer_pic6.jpg) 46 | 47 | ## Compiling and Uploading the Software 48 | ### If using the Arduino IDE 49 | - Make sure you have installed the following core and libraries: 50 | - [ATtinyCore](https://github.com/SpenceKonde/ATTinyCore) 51 | - [TinyI2CMaster](https://github.com/technoblogy/tiny-i2c) 52 | - [Tiny4kOLED](https://github.com/datacute/Tiny4kOLED) 53 | - [DFRobotDFPlayerMini](https://github.com/DFRobot/DFRobotDFPlayerMini) 54 | - Go to **Tools -> Board -> ATtinyCore** and select **ATtiny25/45/85 (No bootloader)**. 55 | - Go to **Tools** and choose the following board options: 56 | - **Chip:** ATtiny85 57 | - **Clock:** 8 MHz (internal) 58 | - Leave the rest at the default settings 59 | - Connect your programmer to your PC and to the ICSP header of the device. 60 | - Go to **Tools -> Programmer** and select your ISP programmer (e.g. [USBasp](https://aliexpress.com/wholesale?SearchText=usbasp)). 61 | - Go to **Tools -> Burn Bootloader** to burn the fuses. 62 | - Open TinyDFPlayer sketch and click **Upload**. 63 | 64 | ### If using the precompiled hex-file 65 | - Make sure you have installed [avrdude](https://learn.adafruit.com/usbtinyisp/avrdude). 66 | - Connect your programmer to your PC and to the ICSP header of the device. 67 | - Open a terminal. 68 | - Navigate to the folder with the hex-file. 69 | - Execute the following command (if necessary replace "usbasp" with the programmer you use): 70 | ``` 71 | avrdude -c usbasp -p t85 -U lfuse:w:0xe2:m -U hfuse:w:0xd7:m -U efuse:w:0xff:m -U flash:w:tinyDFPlayer_v1.2.hex 72 | ``` 73 | 74 | # Operating Instructions 75 | ## Preparing the SD-Card 76 | Micro SD cards (TF cards) with a maximum of 32 GB are supported. The card should be formatted in the FAT32 file system. The firmware is written for the folder-play function of the DFPlayer. This means you have to create folders named 01, 02, 03, ... in the SD card root and inside the folders you have to name the audio files 001.mp3, 002.mp3, ... The maximum number of folders is 99 and the maximum number of files per folder is 255. Don't leave gaps in the folders or file numbers. After the three-digit number of the MP3 files, the title name can be added for better identification, e.g. "003_MySong.mp3". Note that the title names cannot be read out and transmitted by the MiniDFPlayer module, so unfortunately it is not possible to display the title names. 77 | 78 | There must not be any unnecessary files on the SD card, such as those stored there by MacOS (e.g. Spotlight). Better take Linux or Windows to write to the SD card. Under MacOS you can try to clean up with the following command: 79 | 80 | ``` 81 | $ dot_clean /Volumes/SD-Card 82 | ``` 83 | 84 | Insert the SD card into the corresponding slot of the DFPlayer Mini module. 85 | 86 | ## Operating the TinyDFPlayer 87 | The device is switched on with the power switch. The two outer buttons are used to switch files and folders. The middle button is used to switch between pause and play. The wheel potentiometer is for choosing the volume. All necessary information is displayed on the OLED. To charge the battery, connect a 5V power supply via the micro USB port. 88 | 89 | ![pic2.jpg](https://raw.githubusercontent.com/wagiminator/ATtiny85-TinyDFPlayer/master/documentation/TinyDFPlayer_pic2.jpg) 90 | 91 | # License 92 | ![license.png](https://i.creativecommons.org/l/by-sa/3.0/88x31.png) 93 | 94 | This work is licensed under Creative Commons Attribution-ShareAlike 3.0 Unported License. 95 | (http://creativecommons.org/licenses/by-sa/3.0/) 96 | -------------------------------------------------------------------------------- /software/sources/tinyDFPlayer_v1.0.ino: -------------------------------------------------------------------------------- 1 | // tinyDFPlayer 2 | // 3 | // MP3-Player using DFPlayer mini, ATtiny85, I2C OLED, 4 | // potentiometer and three buttons. 5 | // 6 | // 7 | // +-\/-+ 8 | // Buttons --------- A0 (D5) PB5 1| |8 Vcc 9 | // Poti ------------ A3 (D3) PB3 2| |7 PB2 (D2) A1 ---- OLED (SCK) 10 | // DFPlayer (TX) --- A2 (D4) PB4 3| |6 PB1 (D1) ---- DFPlayer (RX) 11 | // GND 4| |5 PB0 (D0) ------- OLED (SDA) 12 | // +----+ 13 | // 14 | // Clockspeed 8 MHz internal 15 | // 16 | // RESET pin is used as a weak analog input for the buttons. You don't 17 | // need to disable the RESET pin as the voltage won't go below 40% of Vcc. 18 | // 19 | // 2019 by Stefan Wagner (https://easyeda.com/wagiminator) 20 | // License: http://creativecommons.org/licenses/by-sa/3.0/ 21 | 22 | 23 | // Libraries 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | 33 | 34 | // Pin assignments 35 | #define TXPIN 1 // connect to RX on DFPlayer via 1k resistor 36 | #define RXPIN 4 // connect to TX on DFPlayer 37 | #define POTIPIN A3 // connect to wiper of potentiometer 38 | #define BUTTONS A0 // connect to buttons, make shure voltage 39 | // don't fall below 40% of Vcc 40 | 41 | // Analog values of the buttons 42 | #define NEXT 552 43 | #define OK 712 44 | #define PREV 790 45 | 46 | 47 | // OLED contrast levels 48 | #define BRIGHT 127 49 | #define DIMM 50 50 | 51 | 52 | // Text strings stored in program memory 53 | const char Header[] PROGMEM = "-- Tiny MP3 Player --"; 54 | const char Error1[] PROGMEM = "!!! ERROR !!!"; 55 | const char Error2[] PROGMEM = "Check SD-Card and"; 56 | const char Error3[] PROGMEM = "start again !"; 57 | const char Empty1[] PROGMEM = "!!! Battery empty !!!"; 58 | const char Empty2[] PROGMEM = "Please recharge !"; 59 | 60 | 61 | // Variables 62 | uint8_t filecounts; // total number of files in current folder 63 | uint8_t foldercounts; // total number of folders on sd-card 64 | 65 | uint8_t batlevel; // current battery level in percent 66 | uint8_t volume = 20; // current volume (0 .. 30) 67 | uint8_t folder = 1; // current sd-card folder 68 | uint8_t file = 1; // curent file in current folder 69 | boolean pause = false; // true when player is paused 70 | 71 | uint16_t batcounter; // used to time battery level readings 72 | uint16_t lastpoti; // last value of potentiometer 73 | 74 | 75 | // Initializations 76 | SoftwareSerial tinySerial(RXPIN,TXPIN); // init serial communication 77 | DFRobotDFPlayerMini tinyPlayer; // init DFPlayerMini 78 | 79 | 80 | 81 | void setup() { 82 | // reset watchdog timer 83 | resetWatchdog (); // do this first in case WDT fires 84 | 85 | // setup and disable ADC for energy saving 86 | ADCSRA = bit (ADPS1) | bit (ADPS2); // set ADC clock prescaler to 64 87 | ADCSRA |= bit (ADIE); // enable ADC interrupt 88 | interrupts (); // enable global interrupts 89 | power_adc_disable(); // turn off ADC 90 | 91 | // init pins 92 | pinMode (POTIPIN, INPUT); 93 | pinMode (BUTTONS, INPUT); 94 | 95 | // prepare and start OLED 96 | oled.begin(); 97 | oled.setFont(FONT6X8); 98 | oled.setContrast(BRIGHT); 99 | oled.clear(); 100 | oled.on(); 101 | oled.switchRenderFrame(); 102 | 103 | // write start screen 104 | oled.clear(); 105 | oled.setCursor(0, 0); 106 | printP(Header); 107 | oled.setCursor(0, 1); 108 | oled.print("starting..."); 109 | oled.switchFrame(); 110 | 111 | // start communication with DFPlayer mini 112 | tinySerial.begin(9600); 113 | if (!tinyPlayer.begin(tinySerial)) { 114 | oled.clear(); 115 | oled.setCursor(0, 0); 116 | printP(Error1); 117 | oled.setCursor(0, 2); 118 | printP(Error2); 119 | oled.setCursor(0, 3); 120 | printP(Error3); 121 | oled.switchFrame(); 122 | oled.setContrast(DIMM); 123 | tinyPlayer.sleep(); 124 | while(true) sleep(); 125 | } 126 | 127 | // check battery level 128 | checkBatLevel(); 129 | 130 | // start the player 131 | tinyPlayer.setTimeOut(500); 132 | tinyPlayer.volume(volume); 133 | foldercounts = tinyPlayer.readFolderCounts(); 134 | startFolderPlay(); 135 | } 136 | 137 | 138 | void loop() { 139 | 140 | // check player status 141 | if (tinyPlayer.available()) { 142 | uint8_t type = tinyPlayer.readType(); 143 | int value = tinyPlayer.read(); 144 | 145 | switch (type) { 146 | case DFPlayerPlayFinished: 147 | if (file < filecounts) { 148 | file++; 149 | tinyPlayer.playFolder(folder, file); 150 | updateOLED(); 151 | } 152 | break; 153 | default: 154 | break; 155 | } 156 | } 157 | 158 | 159 | // get, debounce and set volume 160 | uint16_t getpoti = denoiseAnalog(POTIPIN); 161 | if ( (getpoti < (lastpoti - 8)) || (getpoti > (lastpoti + 8)) ) lastpoti = getpoti; 162 | uint8_t getvol = lastpoti / 34; 163 | if (getvol != volume) { 164 | volume = getvol; 165 | tinyPlayer.volume(volume); 166 | updateOLED(); 167 | } 168 | 169 | 170 | // check buttons 171 | uint16_t buttons = getAnalog(BUTTONS); 172 | if (buttons < 1000) { 173 | 174 | if ( (buttons < (PREV + 20)) && (buttons > (PREV - 20)) ) { 175 | if (folder < foldercounts) folder++; else folder = 1; 176 | file = 1; 177 | startFolderPlay(); 178 | } 179 | 180 | if ( (buttons < (NEXT + 20)) && (buttons > (NEXT - 20)) ) { 181 | if (file < filecounts) file++; else file = 1; 182 | startFolderPlay(); 183 | } 184 | 185 | if ( (buttons < (OK + 20)) && (buttons > (OK - 20)) ) { 186 | pause = !pause; 187 | if (pause) tinyPlayer.pause(); 188 | else tinyPlayer.start(); 189 | updateOLED(); 190 | } 191 | 192 | while(getAnalog(BUTTONS) < 1000); 193 | } 194 | 195 | 196 | // check battery level every now and then 197 | if ((--batcounter) == 0) checkBatLevel(); 198 | 199 | // sleep for a short time to save some energy 200 | sleep(); 201 | } 202 | 203 | 204 | // starts to play the actual file in the actual folder 205 | void startFolderPlay() { 206 | filecounts = tinyPlayer.readFileCountsInFolder(folder); 207 | tinyPlayer.playFolder(folder, file); 208 | pause = false; 209 | updateOLED(); 210 | } 211 | 212 | 213 | // prints the actual values on the OLED 214 | void updateOLED() { 215 | oled.clear(); 216 | oled.setCursor(0, 0); 217 | printP(Header); 218 | oled.setCursor(0, 1); 219 | oled.print("Folder: "); 220 | printDigits(folder); 221 | oled.print(" of "); 222 | printDigits(foldercounts); 223 | oled.setCursor(0, 2); 224 | oled.print("File: "); 225 | printDigits(file); 226 | oled.print(" of "); 227 | printDigits(filecounts); 228 | oled.setCursor(0, 3); 229 | if (pause) oled.print("< Pause >"); 230 | else { 231 | oled.print("Volume: "); 232 | printDigits(volume); 233 | } 234 | oled.setCursor(78, 3); 235 | printBatLevel(); 236 | oled.switchFrame(); 237 | } 238 | 239 | 240 | // prints a string from progmem on the OLED 241 | void printP(const char* p) { 242 | char ch = pgm_read_byte(p); 243 | while (ch != 0) 244 | { 245 | oled.print(ch); 246 | ++p; 247 | ch = pgm_read_byte(p); 248 | } 249 | } 250 | 251 | 252 | // converts number to 2-digits and prints it on OLED 253 | void printDigits(uint8_t digits) { 254 | if(digits < 10) oled.print(" "); 255 | oled.print(digits); 256 | } 257 | 258 | 259 | // prints battery charging level on OLED 260 | void printBatLevel() { 261 | oled.print("Bat:"); 262 | if (batlevel <100) oled.print(" "); 263 | if (batlevel <10) oled.print(" "); 264 | oled.print(batlevel); 265 | oled.print("%"); 266 | } 267 | 268 | 269 | // checks and updates battery level; stops player if bat is empty 270 | void checkBatLevel() { 271 | batlevel = getBatLevel(); 272 | 273 | // if battery is empty wait for recharging 274 | if (batlevel == 0) { 275 | oled.setContrast(DIMM); 276 | oled.clear(); 277 | oled.setCursor(0, 0); 278 | printP(Empty1); 279 | oled.setCursor(15, 2); 280 | printP(Empty2); 281 | oled.switchFrame(); 282 | if (!pause) tinyPlayer.pause(); 283 | while(getBatLevel() < 10) sleep(); 284 | oled.setContrast(BRIGHT); 285 | batlevel = getBatLevel(); 286 | if (!pause) tinyPlayer.start(); 287 | } 288 | 289 | updateOLED(); 290 | batcounter = 600; 291 | } 292 | 293 | 294 | // take an ADC reading in sleep mode 295 | uint16_t getAnalog (byte port) { 296 | power_adc_enable(); // power on ADC 297 | ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt 298 | if (port >= A0) port -= A0; // set port and 299 | ADMUX = (port & 0x07); // reference to AVcc 300 | set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction 301 | sleep_mode(); // go to sleep while taking ADC sample 302 | while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed 303 | uint16_t result = ADC; // read ADC sample result 304 | bitClear (ADCSRA, ADEN); // disable ADC 305 | power_adc_disable(); // and save some energy 306 | return result; // return value 307 | } 308 | 309 | 310 | // average several ADC readings to denoise 311 | uint16_t denoiseAnalog (byte port) { 312 | uint16_t result = 0; 313 | power_adc_enable(); // power on ADC 314 | ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt 315 | if (port >= A0) port -= A0; // set port and 316 | ADMUX = (port & 0x07); // reference to AVcc 317 | set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction 318 | for (uint8_t i=0; i<8; i++) { // get 8 readings 319 | sleep_mode(); // go to sleep while taking ADC sample 320 | while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed 321 | result += ADC; // add them up 322 | } 323 | bitClear (ADCSRA, ADEN); // disable ADC 324 | power_adc_disable(); // and save some energy 325 | return (result >> 3); // devide by 8 and return value 326 | } 327 | 328 | 329 | // get the battery charging level in percent by reading 1.1V reference against AVcc 330 | uint8_t getBatLevel() { 331 | power_adc_enable(); // power on ADC 332 | ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt 333 | ADMUX = bit (MUX3) | bit (MUX2); // set Vcc measurement against 1.1V reference 334 | delay(2); // wait for Vref to settle 335 | set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction 336 | sleep_mode(); // go to sleep while taking ADC sample 337 | while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed 338 | uint32_t vcc = ADC; // read ADC sample result 339 | bitClear (ADCSRA, ADEN); // disable ADC 340 | power_adc_disable(); // and save some energy 341 | vcc = 1125300L / vcc; // calculate Vcc in mV; 1125300 = 1.1*1023*1000 342 | vcc = constrain(vcc, 3200, 4100); // 3200mV - bat empty, 4100mV - bat fully charged 343 | uint8_t result = (vcc - 3200) / 9; // calculate bat level in percent 344 | return result; // return percentage value 345 | } 346 | 347 | 348 | // go to sleep in order to save energy, wake up again by watchdog timer 349 | void sleep() { 350 | set_sleep_mode (SLEEP_MODE_PWR_DOWN); // set sleep mode to power down 351 | bitSet (GIFR, PCIF); // clear any outstanding interrupts 352 | power_all_disable (); // power off ADC, Timer 0 and 1, serial interface 353 | noInterrupts (); // timed sequence coming up 354 | resetWatchdog (); // get watchdog ready 355 | sleep_enable (); // ready to sleep 356 | interrupts (); // interrupts are required now 357 | sleep_cpu (); // sleep 358 | sleep_disable (); // precaution 359 | power_all_enable (); // power everything back on 360 | power_adc_disable(); // except ADC 361 | } 362 | 363 | 364 | // reset watchdog timer 365 | void resetWatchdog () { 366 | MCUSR = 0; // clear various "reset" flags 367 | WDTCR = bit (WDCE) | bit (WDE) | bit (WDIF); // allow changes, disable reset, clear existing interrupt 368 | WDTCR = bit (WDIE) | bit (WDP1); // set interval to 64 milliseconds 369 | wdt_reset(); // pat the dog 370 | } 371 | 372 | 373 | // watchdog interrupt service routine 374 | ISR (WDT_vect) { 375 | wdt_disable(); // disable watchdog 376 | } 377 | 378 | 379 | // ADC interrupt service routine 380 | EMPTY_INTERRUPT (ADC_vect); // nothing to be done here 381 | -------------------------------------------------------------------------------- /software/sources/tinyDFPlayer_v1.1.ino: -------------------------------------------------------------------------------- 1 | // tinyDFPlayer 2 | // 3 | // MP3-Player using DFPlayer mini, ATtiny85, I2C OLED, 4 | // potentiometer and three buttons. 5 | // 6 | // +-\/-+ 7 | // Buttons --------- A0 (D5) PB5 1| |8 Vcc 8 | // Poti ------------ A3 (D3) PB3 2| |7 PB2 (D2) A1 ---- OLED (SCK) 9 | // DFPlayer (TX) --- A2 (D4) PB4 3| |6 PB1 (D1) ---- DFPlayer (RX) 10 | // GND 4| |5 PB0 (D0) ------- OLED (SDA) 11 | // +----+ 12 | // 13 | // RESET pin is used as a weak analog input for the buttons. You don't 14 | // need to disable the RESET pin as the voltage won't go below 40% of Vcc. 15 | // 16 | // Core: ATtinyCore (https://github.com/SpenceKonde/ATTinyCore) 17 | // Board: ATtiny25/45/85 (No bootloader) 18 | // Chip: ATtiny85 19 | // Clock: 8 MHz (internal) 20 | // Leave the rest on default settings. Don't forget to "Burn bootloader" ! 21 | // 22 | // 2019 by Stefan Wagner 23 | // Project Files (EasyEDA): https://easyeda.com/wagiminator 24 | // Project Files (Github): https://github.com/wagiminator 25 | // License: http://creativecommons.org/licenses/by-sa/3.0/ 26 | 27 | 28 | // Libraries 29 | #include // for serial communication 30 | #include // https://github.com/technoblogy/tiny-i2c 31 | #include // https://github.com/datacute/Tiny4kOLED 32 | #include // https://github.com/DFRobot/DFRobotDFPlayerMini 33 | #include // for storing last file/folder in EEPROM 34 | #include // for data stored in program memory 35 | #include // for sleep functions 36 | #include // for interrupts 37 | #include // for power saving functions 38 | #include // for watch dog timer 39 | 40 | // Pin assignments 41 | #define TXPIN 1 // connect to RX on DFPlayer via 1k resistor 42 | #define RXPIN 4 // connect to TX on DFPlayer 43 | #define POTIPIN A3 // connect to wiper of potentiometer 44 | #define BUTTONS A0 // connect to buttons, make shure voltage 45 | // don't fall below 40% of Vcc 46 | // EEPROM usage 47 | #define USE_EEPROM true // set false if you don't want to use EEPROM 48 | 49 | // Analog values of the buttons 50 | #define NEXT 552 51 | #define OK 712 52 | #define PREV 790 53 | 54 | // OLED contrast levels 55 | #define BRIGHT 127 56 | #define DIMM 50 57 | 58 | // Text strings stored in program memory 59 | const char Header[] PROGMEM = "-- Tiny MP3 Player --"; 60 | const char Error1[] PROGMEM = "!!! ERROR !!!"; 61 | const char Error2[] PROGMEM = "Check SD-Card and"; 62 | const char Error3[] PROGMEM = "start again !"; 63 | const char Empty1[] PROGMEM = "!!! Battery empty !!!"; 64 | const char Empty2[] PROGMEM = "Please recharge !"; 65 | 66 | // Variables 67 | uint8_t filecounts; // total number of files in current folder 68 | uint8_t foldercounts; // total number of folders on sd-card 69 | 70 | uint8_t batlevel; // current battery level in percent 71 | uint8_t volume = 20; // current volume (0 .. 30) 72 | uint8_t folder = 1; // current sd-card folder 73 | uint8_t file = 1; // curent file in current folder 74 | boolean pause = false; // true when player is paused 75 | 76 | uint16_t batcounter; // used to time battery level readings 77 | uint16_t lastpoti; // last value of potentiometer 78 | 79 | // Initializations 80 | SoftwareSerial tinySerial(RXPIN,TXPIN); // init serial communication 81 | DFRobotDFPlayerMini tinyPlayer; // init DFPlayerMini 82 | 83 | // ----------------------------------------------------------------------------- 84 | // Main Function 85 | // ----------------------------------------------------------------------------- 86 | 87 | // Setup 88 | void setup() { 89 | // reset watchdog timer 90 | resetWatchdog (); // do this first in case WDT fires 91 | 92 | // setup and disable ADC for energy saving 93 | ADCSRA = bit (ADPS1) | bit (ADPS2); // set ADC clock prescaler to 64 94 | ADCSRA |= bit (ADIE); // enable ADC interrupt 95 | interrupts (); // enable global interrupts 96 | power_adc_disable(); // turn off ADC 97 | 98 | // init pins 99 | pinMode (POTIPIN, INPUT); 100 | pinMode (BUTTONS, INPUT); 101 | 102 | // prepare and start OLED 103 | oled.begin(); 104 | oled.setFont(FONT6X8); 105 | oled.setContrast(BRIGHT); 106 | oled.clear(); 107 | oled.on(); 108 | oled.switchRenderFrame(); 109 | 110 | // write start screen 111 | oled.clear(); 112 | oled.setCursor(0, 0); 113 | printP(Header); 114 | oled.setCursor(0, 1); 115 | oled.print("starting..."); 116 | oled.switchFrame(); 117 | 118 | // start communication with DFPlayer mini 119 | tinySerial.begin(9600); 120 | delay(500); 121 | if (!tinyPlayer.begin(tinySerial)) { 122 | oled.clear(); 123 | oled.setCursor(0, 0); 124 | printP(Error1); 125 | oled.setCursor(0, 2); 126 | printP(Error2); 127 | oled.setCursor(0, 3); 128 | printP(Error3); 129 | oled.switchFrame(); 130 | oled.setContrast(DIMM); 131 | tinyPlayer.sleep(); 132 | while(true) sleep(); 133 | } 134 | 135 | // check battery level 136 | checkBatLevel(); 137 | 138 | // read EEPROM 139 | if (USE_EEPROM) { 140 | if (EEPROM.read(0) == 55) { 141 | file = EEPROM.read(1); 142 | folder = EEPROM.read(2); 143 | } 144 | else EEPROM.write(0, 55); 145 | } 146 | 147 | // start the player 148 | tinyPlayer.setTimeOut(500); 149 | tinyPlayer.volume(volume); 150 | foldercounts = tinyPlayer.readFolderCounts(); 151 | startFolderPlay(); 152 | } 153 | 154 | // Loop 155 | void loop() { 156 | 157 | // check player status 158 | if (tinyPlayer.available()) { 159 | uint8_t type = tinyPlayer.readType(); 160 | int value = tinyPlayer.read(); 161 | 162 | if (type == DFPlayerPlayFinished) { 163 | file++; 164 | startFolderPlay(); 165 | } 166 | } 167 | 168 | // get, debounce and set volume 169 | uint16_t getpoti = denoiseAnalog(POTIPIN); 170 | if ( (getpoti < (lastpoti - 8)) || (getpoti > (lastpoti + 8)) ) lastpoti = getpoti; 171 | uint8_t getvol = lastpoti / 34; 172 | if (getvol != volume) { 173 | volume = getvol; 174 | tinyPlayer.volume(volume); 175 | updateOLED(); 176 | } 177 | 178 | // check buttons 179 | uint16_t buttons = getAnalog(BUTTONS); 180 | if (buttons < 1000) { 181 | 182 | if ( (buttons < (PREV + 20)) && (buttons > (PREV - 20)) ) { 183 | folder++; 184 | file = 1; 185 | startFolderPlay(); 186 | } 187 | 188 | if ( (buttons < (NEXT + 20)) && (buttons > (NEXT - 20)) ) { 189 | file++; 190 | startFolderPlay(); 191 | } 192 | 193 | if ( (buttons < (OK + 20)) && (buttons > (OK - 20)) ) { 194 | pause = !pause; 195 | if (pause) tinyPlayer.pause(); 196 | else tinyPlayer.start(); 197 | updateOLED(); 198 | } 199 | 200 | while(getAnalog(BUTTONS) < 1000); 201 | } 202 | 203 | // check battery level every now and then 204 | if ((--batcounter) == 0) checkBatLevel(); 205 | 206 | // sleep for a short time to save some energy 207 | sleep(); 208 | } 209 | 210 | // ----------------------------------------------------------------------------- 211 | // DFPlayer Mini Functions 212 | // ----------------------------------------------------------------------------- 213 | 214 | // starts to play the actual file in the actual folder 215 | void startFolderPlay() { 216 | if (folder > foldercounts) { 217 | folder = 1; 218 | file = 1; 219 | } 220 | filecounts = tinyPlayer.readFileCountsInFolder(folder); 221 | if (file > filecounts) file = 1; 222 | 223 | tinyPlayer.playFolder(folder, file); 224 | pause = false; 225 | updateOLED(); 226 | 227 | if (USE_EEPROM) { 228 | EEPROM.update(1, file); 229 | EEPROM.update(2, folder); 230 | } 231 | } 232 | 233 | // ----------------------------------------------------------------------------- 234 | // Display Functions 235 | // ----------------------------------------------------------------------------- 236 | 237 | // prints the actual values on the OLED 238 | void updateOLED() { 239 | oled.clear(); 240 | oled.setCursor(0, 0); 241 | printP(Header); 242 | oled.setCursor(0, 1); 243 | oled.print("Folder: "); 244 | printDigits(folder); 245 | oled.print(" of "); 246 | printDigits(foldercounts); 247 | oled.setCursor(0, 2); 248 | oled.print("File: "); 249 | printDigits(file); 250 | oled.print(" of "); 251 | printDigits(filecounts); 252 | oled.setCursor(0, 3); 253 | if (pause) oled.print("< Pause >"); 254 | else { 255 | oled.print("Volume: "); 256 | printDigits(volume); 257 | } 258 | oled.setCursor(78, 3); 259 | printBatLevel(); 260 | oled.switchFrame(); 261 | } 262 | 263 | // prints a string from progmem on the OLED 264 | void printP(const char* p) { 265 | char ch = pgm_read_byte(p); 266 | while (ch) { 267 | oled.print(ch); 268 | ch = pgm_read_byte(++p); 269 | } 270 | } 271 | 272 | // converts number to 2-digits and prints it on OLED 273 | void printDigits(uint8_t digits) { 274 | if(digits < 10) oled.print(" "); 275 | oled.print(digits); 276 | } 277 | 278 | // prints battery charging level on OLED 279 | void printBatLevel() { 280 | oled.print("Bat:"); 281 | if (batlevel <100) oled.print(" "); 282 | if (batlevel <10) oled.print(" "); 283 | oled.print(batlevel); 284 | oled.print("%"); 285 | } 286 | 287 | 288 | // checks and updates battery level; stops player if bat is empty 289 | void checkBatLevel() { 290 | batlevel = getBatLevel(); 291 | 292 | // if battery is empty wait for recharging 293 | if (batlevel == 0) { 294 | oled.setContrast(DIMM); 295 | oled.clear(); 296 | oled.setCursor(0, 0); 297 | printP(Empty1); 298 | oled.setCursor(15, 2); 299 | printP(Empty2); 300 | oled.switchFrame(); 301 | if (!pause) tinyPlayer.pause(); 302 | while(getBatLevel() < 10) sleep(); 303 | oled.setContrast(BRIGHT); 304 | batlevel = getBatLevel(); 305 | if (!pause) tinyPlayer.start(); 306 | } 307 | 308 | updateOLED(); 309 | batcounter = 600; 310 | } 311 | 312 | // ----------------------------------------------------------------------------- 313 | // ADC Functions 314 | // ----------------------------------------------------------------------------- 315 | 316 | // take an ADC reading in sleep mode 317 | uint16_t getAnalog (byte port) { 318 | power_adc_enable(); // power on ADC 319 | ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt 320 | if (port >= A0) port -= A0; // set port and 321 | ADMUX = (port & 0x07); // reference to AVcc 322 | set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction 323 | sleep_mode(); // go to sleep while taking ADC sample 324 | while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed 325 | uint16_t result = ADC; // read ADC sample result 326 | bitClear (ADCSRA, ADEN); // disable ADC 327 | power_adc_disable(); // and save some energy 328 | return result; // return value 329 | } 330 | 331 | // average several ADC readings to denoise 332 | uint16_t denoiseAnalog (byte port) { 333 | uint16_t result = 0; 334 | power_adc_enable(); // power on ADC 335 | ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt 336 | if (port >= A0) port -= A0; // set port and 337 | ADMUX = (port & 0x07); // reference to AVcc 338 | set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction 339 | for (uint8_t i=0; i<8; i++) { // get 8 readings 340 | sleep_mode(); // go to sleep while taking ADC sample 341 | while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed 342 | result += ADC; // add them up 343 | } 344 | bitClear (ADCSRA, ADEN); // disable ADC 345 | power_adc_disable(); // and save some energy 346 | return (result >> 3); // devide by 8 and return value 347 | } 348 | 349 | // get the battery charging level in percent by reading 1.1V reference against AVcc 350 | uint8_t getBatLevel() { 351 | power_adc_enable(); // power on ADC 352 | ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt 353 | ADMUX = bit (MUX3) | bit (MUX2); // set Vcc measurement against 1.1V reference 354 | delay(2); // wait for Vref to settle 355 | set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction 356 | sleep_mode(); // go to sleep while taking ADC sample 357 | while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed 358 | uint32_t vcc = ADC; // read ADC sample result 359 | bitClear (ADCSRA, ADEN); // disable ADC 360 | power_adc_disable(); // and save some energy 361 | vcc = 1125300L / vcc; // calculate Vcc in mV; 1125300 = 1.1*1023*1000 362 | vcc = constrain(vcc, 3200, 4100); // 3200mV - bat empty, 4100mV - bat fully charged 363 | uint8_t result = (vcc - 3200) / 9; // calculate bat level in percent 364 | return result; // return percentage value 365 | } 366 | 367 | // ----------------------------------------------------------------------------- 368 | // Sleep Functions and Interrupt Service Routines 369 | // ----------------------------------------------------------------------------- 370 | 371 | // go to sleep in order to save energy, wake up again by watchdog timer 372 | void sleep() { 373 | set_sleep_mode (SLEEP_MODE_PWR_DOWN); // set sleep mode to power down 374 | bitSet (GIFR, PCIF); // clear any outstanding interrupts 375 | power_all_disable (); // power off ADC, Timer 0 and 1, serial interface 376 | noInterrupts (); // timed sequence coming up 377 | resetWatchdog (); // get watchdog ready 378 | sleep_enable (); // ready to sleep 379 | interrupts (); // interrupts are required now 380 | sleep_cpu (); // sleep 381 | sleep_disable (); // precaution 382 | power_all_enable (); // power everything back on 383 | power_adc_disable(); // except ADC 384 | } 385 | 386 | // reset watchdog timer 387 | void resetWatchdog () { 388 | MCUSR = 0; // clear various "reset" flags 389 | WDTCR = bit (WDCE) | bit (WDE) | bit (WDIF); // allow changes, disable reset, clear existing interrupt 390 | WDTCR = bit (WDIE) | bit (WDP1); // set interval to 64 milliseconds 391 | wdt_reset(); // pat the dog 392 | } 393 | 394 | // watchdog interrupt service routine 395 | ISR (WDT_vect) { 396 | wdt_disable(); // disable watchdog 397 | } 398 | 399 | // ADC interrupt service routine 400 | EMPTY_INTERRUPT (ADC_vect); // nothing to be done here 401 | -------------------------------------------------------------------------------- /software/sources/tinyDFPlayer_v1.2.ino: -------------------------------------------------------------------------------- 1 | // tinyDFPlayer 2 | // 3 | // MP3-Player using DFPlayer mini, ATtiny85, I2C OLED, 4 | // potentiometer and three buttons. 5 | // 6 | // +-\/-+ 7 | // Buttons --------- A0 (D5) PB5 1| |8 Vcc 8 | // Poti ------------ A3 (D3) PB3 2| |7 PB2 (D2) A1 ---- OLED (SCK) 9 | // DFPlayer (TX) --- A2 (D4) PB4 3| |6 PB1 (D1) ---- DFPlayer (RX) 10 | // GND 4| |5 PB0 (D0) ------- OLED (SDA) 11 | // +----+ 12 | // 13 | // RESET pin is used as a weak analog input for the buttons. You don't 14 | // need to disable the RESET pin as the voltage won't go below 40% of Vcc. 15 | // 16 | // Core: ATtinyCore (https://github.com/SpenceKonde/ATTinyCore) 17 | // Board: ATtiny25/45/85 (No bootloader) 18 | // Chip: ATtiny85 19 | // Clock: 8 MHz (internal) 20 | // Leave the rest on default settings. Don't forget to "Burn bootloader" ! 21 | // 22 | // 2019 by Stefan Wagner 23 | // Project Files (EasyEDA): https://easyeda.com/wagiminator 24 | // Project Files (Github): https://github.com/wagiminator 25 | // License: http://creativecommons.org/licenses/by-sa/3.0/ 26 | 27 | 28 | // Libraries 29 | #include // for serial communication 30 | #include // https://github.com/technoblogy/tiny-i2c 31 | #include // https://github.com/datacute/Tiny4kOLED 32 | #include // https://github.com/DFRobot/DFRobotDFPlayerMini 33 | #include // for storing last file/folder in EEPROM 34 | #include // for data stored in program memory 35 | #include // for sleep functions 36 | #include // for interrupts 37 | #include // for power saving functions 38 | #include // for watch dog timer 39 | 40 | // Pin assignments 41 | #define TXPIN 1 // connect to RX on DFPlayer via 1k resistor 42 | #define RXPIN 4 // connect to TX on DFPlayer 43 | #define POTIPIN A3 // connect to wiper of potentiometer 44 | #define BUTTONS A0 // connect to buttons, make shure voltage 45 | // don't fall below 40% of Vcc 46 | // EEPROM usage 47 | #define USE_EEPROM true // set false if you don't want to use EEPROM 48 | 49 | // Analog values of the buttons 50 | #define NEXT 552 51 | #define OK 712 52 | #define PREV 790 53 | 54 | // OLED contrast levels 55 | #define BRIGHT 127 56 | #define DIMM 50 57 | 58 | // Text strings stored in program memory 59 | const char Header[] PROGMEM = "-( Tiny MP3 Player )-"; 60 | const char Error1[] PROGMEM = "!!! ERROR !!!"; 61 | const char Error2[] PROGMEM = "Check SD-Card and"; 62 | const char Error3[] PROGMEM = "start again !"; 63 | const char Empty1[] PROGMEM = "!!! Battery empty !!!"; 64 | const char Empty2[] PROGMEM = "Please recharge !"; 65 | 66 | // Variables 67 | uint8_t filecounts; // total number of files in current folder 68 | uint8_t foldercounts; // total number of folders on sd-card 69 | 70 | uint8_t batlevel; // current battery level in percent 71 | uint8_t volume = 20; // current volume (0 .. 30) 72 | uint8_t folder = 1; // current sd-card folder 73 | uint8_t file = 1; // curent file in current folder 74 | boolean pause = false; // true when player is paused 75 | 76 | uint16_t batcounter; // used to time battery level readings 77 | uint16_t lastpoti; // last value of potentiometer 78 | 79 | // Initializations 80 | SoftwareSerial tinySerial(RXPIN,TXPIN); // init serial communication 81 | DFRobotDFPlayerMini tinyPlayer; // init DFPlayerMini 82 | 83 | // ----------------------------------------------------------------------------- 84 | // Main Function 85 | // ----------------------------------------------------------------------------- 86 | 87 | // Setup 88 | void setup() { 89 | // reset watchdog timer 90 | resetWatchdog (); // do this first in case WDT fires 91 | 92 | // setup and disable ADC for energy saving 93 | ADCSRA = bit (ADPS1) | bit (ADPS2); // set ADC clock prescaler to 64 94 | ADCSRA |= bit (ADIE); // enable ADC interrupt 95 | interrupts (); // enable global interrupts 96 | power_adc_disable(); // turn off ADC 97 | 98 | // init pins 99 | pinMode (POTIPIN, INPUT); 100 | pinMode (BUTTONS, INPUT); 101 | 102 | // prepare and start OLED 103 | oled.begin(); 104 | oled.setFont(FONT6X8); 105 | oled.setContrast(BRIGHT); 106 | oled.clear(); 107 | oled.on(); 108 | oled.switchRenderFrame(); 109 | 110 | // write start screen 111 | oled.clear(); 112 | oled.setCursor(0, 0); 113 | printP(Header); 114 | oled.setCursor(0, 1); 115 | oled.print(F("Starting...")); 116 | oled.switchFrame(); 117 | 118 | // start communication with DFPlayer mini 119 | tinySerial.begin(9600); 120 | delay(500); 121 | if (!tinyPlayer.begin(tinySerial)) { 122 | oled.clear(); 123 | oled.setCursor(0, 0); 124 | printP(Error1); 125 | oled.setCursor(0, 2); 126 | printP(Error2); 127 | oled.setCursor(0, 3); 128 | printP(Error3); 129 | oled.switchFrame(); 130 | oled.setContrast(DIMM); 131 | tinyPlayer.sleep(); 132 | while(true) sleep(); 133 | } 134 | 135 | // check battery level 136 | checkBatLevel(); 137 | 138 | // read EEPROM 139 | if (USE_EEPROM) { 140 | if (EEPROM.read(0) == 55) { 141 | file = EEPROM.read(1); 142 | folder = EEPROM.read(2); 143 | } 144 | else EEPROM.write(0, 55); 145 | } 146 | 147 | // start the player 148 | tinyPlayer.setTimeOut(500); 149 | tinyPlayer.volume(volume); 150 | foldercounts = tinyPlayer.readFolderCounts(); 151 | filecounts = tinyPlayer.readFileCountsInFolder(folder); 152 | startFolderPlay(); 153 | } 154 | 155 | // Loop 156 | void loop() { 157 | 158 | // check player status 159 | if (tinyPlayer.available()) { 160 | uint8_t type = tinyPlayer.readType(); 161 | int value = tinyPlayer.read(); 162 | 163 | if (type == DFPlayerPlayFinished) { 164 | file++; 165 | startFolderPlay(); 166 | } 167 | } 168 | 169 | // get, debounce and set volume 170 | uint16_t getpoti = denoiseAnalog(POTIPIN); 171 | if ( (getpoti < (lastpoti - 8)) || (getpoti > (lastpoti + 8)) ) lastpoti = getpoti; 172 | uint8_t getvol = lastpoti / 34; 173 | if (getvol != volume) { 174 | volume = getvol; 175 | tinyPlayer.volume(volume); 176 | updateOLED(); 177 | } 178 | 179 | // check buttons 180 | uint16_t buttons = getAnalog(BUTTONS); 181 | if (buttons < 1000) { 182 | 183 | if ( (buttons < (PREV + 20)) && (buttons > (PREV - 20)) ) { 184 | if (folder < foldercounts) folder++; else folder = 1; 185 | filecounts = tinyPlayer.readFileCountsInFolder(folder); 186 | file = 1; 187 | startFolderPlay(); 188 | } 189 | 190 | if ( (buttons < (NEXT + 20)) && (buttons > (NEXT - 20)) ) { 191 | file++; 192 | startFolderPlay(); 193 | } 194 | 195 | if ( (buttons < (OK + 20)) && (buttons > (OK - 20)) ) { 196 | pause = !pause; 197 | if (pause) tinyPlayer.pause(); 198 | else tinyPlayer.start(); 199 | updateOLED(); 200 | } 201 | 202 | while(getAnalog(BUTTONS) < 1000); 203 | } 204 | 205 | // check battery level every now and then 206 | if ((--batcounter) == 0) checkBatLevel(); 207 | 208 | // sleep for a short time to save some energy 209 | sleep(); 210 | } 211 | 212 | // ----------------------------------------------------------------------------- 213 | // DFPlayer Mini Functions 214 | // ----------------------------------------------------------------------------- 215 | 216 | // starts to play the actual file in the actual folder 217 | void startFolderPlay() { 218 | if (folder > foldercounts) { 219 | folder = 1; 220 | file = 1; 221 | filecounts = tinyPlayer.readFileCountsInFolder(folder); 222 | } 223 | if (file > filecounts) file = 1; 224 | 225 | tinyPlayer.playFolder(folder, file); 226 | pause = false; 227 | updateOLED(); 228 | 229 | if (USE_EEPROM) { 230 | EEPROM.update(1, file); 231 | EEPROM.update(2, folder); 232 | } 233 | } 234 | 235 | // ----------------------------------------------------------------------------- 236 | // Display Functions 237 | // ----------------------------------------------------------------------------- 238 | 239 | // prints the actual values on the OLED 240 | void updateOLED() { 241 | oled.clear(); 242 | oled.setCursor(0, 0); 243 | printP(Header); 244 | oled.setCursor(0, 1); 245 | oled.print(F("Folder: ")); 246 | printDigits(folder); 247 | oled.print(F(" of ")); 248 | printDigits(foldercounts); 249 | oled.setCursor(0, 2); 250 | oled.print(F("File: ")); 251 | printDigits(file); 252 | oled.print(F(" of ")); 253 | printDigits(filecounts); 254 | oled.setCursor(0, 3); 255 | printBatLevel(); 256 | oled.setCursor(66, 3); 257 | if (pause) oled.print(F(" < Pause >")); 258 | else { 259 | oled.print(F("Volume:")); 260 | printDigits(volume); 261 | } 262 | oled.switchFrame(); 263 | } 264 | 265 | // prints a string from progmem on the OLED 266 | void printP(const char* p) { 267 | char ch = pgm_read_byte(p); 268 | while (ch) { 269 | oled.print(ch); 270 | ch = pgm_read_byte(++p); 271 | } 272 | } 273 | 274 | // converts number to 3-digits and prints it on OLED 275 | void printDigits(uint8_t digits) { 276 | if(digits < 100) oled.print(F(" ")); 277 | if(digits < 10) oled.print(F(" ")); 278 | oled.print(digits); 279 | } 280 | 281 | // prints battery charging level on OLED 282 | void printBatLevel() { 283 | oled.print(F("Bat:")); 284 | printDigits(batlevel); 285 | oled.print(F("%")); 286 | } 287 | 288 | 289 | // checks and updates battery level; stops player if bat is empty 290 | void checkBatLevel() { 291 | batlevel = getBatLevel(); 292 | 293 | // if battery is empty wait for recharging 294 | if (batlevel == 0) { 295 | oled.setContrast(DIMM); 296 | oled.clear(); 297 | oled.setCursor(0, 0); 298 | printP(Empty1); 299 | oled.setCursor(15, 2); 300 | printP(Empty2); 301 | oled.switchFrame(); 302 | if (!pause) tinyPlayer.pause(); 303 | while(getBatLevel() < 10) sleep(); 304 | oled.setContrast(BRIGHT); 305 | batlevel = getBatLevel(); 306 | if (!pause) tinyPlayer.start(); 307 | } 308 | 309 | updateOLED(); 310 | batcounter = 600; 311 | } 312 | 313 | // ----------------------------------------------------------------------------- 314 | // ADC Functions 315 | // ----------------------------------------------------------------------------- 316 | 317 | // take an ADC reading in sleep mode 318 | uint16_t getAnalog (byte port) { 319 | power_adc_enable(); // power on ADC 320 | ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt 321 | if (port >= A0) port -= A0; // set port and 322 | ADMUX = (port & 0x07); // reference to AVcc 323 | set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction 324 | sleep_mode(); // go to sleep while taking ADC sample 325 | while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed 326 | uint16_t result = ADC; // read ADC sample result 327 | bitClear (ADCSRA, ADEN); // disable ADC 328 | power_adc_disable(); // and save some energy 329 | return result; // return value 330 | } 331 | 332 | // average several ADC readings to denoise 333 | uint16_t denoiseAnalog (byte port) { 334 | uint16_t result = 0; 335 | power_adc_enable(); // power on ADC 336 | ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt 337 | if (port >= A0) port -= A0; // set port and 338 | ADMUX = (port & 0x07); // reference to AVcc 339 | set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction 340 | for (uint8_t i=0; i<8; i++) { // get 8 readings 341 | sleep_mode(); // go to sleep while taking ADC sample 342 | while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed 343 | result += ADC; // add them up 344 | } 345 | bitClear (ADCSRA, ADEN); // disable ADC 346 | power_adc_disable(); // and save some energy 347 | return (result >> 3); // devide by 8 and return value 348 | } 349 | 350 | // get the battery charging level in percent by reading 1.1V reference against AVcc 351 | uint8_t getBatLevel() { 352 | power_adc_enable(); // power on ADC 353 | ADCSRA |= bit (ADEN) | bit (ADIF); // enable ADC, turn off any pending interrupt 354 | ADMUX = bit (MUX3) | bit (MUX2); // set Vcc measurement against 1.1V reference 355 | delay(2); // wait for Vref to settle 356 | set_sleep_mode (SLEEP_MODE_ADC); // sleep during sample for noise reduction 357 | sleep_mode(); // go to sleep while taking ADC sample 358 | while (bitRead(ADCSRA, ADSC)); // make sure sampling is completed 359 | uint32_t vcc = ADC; // read ADC sample result 360 | bitClear (ADCSRA, ADEN); // disable ADC 361 | power_adc_disable(); // and save some energy 362 | vcc = 1125300L / vcc; // calculate Vcc in mV; 1125300 = 1.1*1023*1000 363 | vcc = constrain(vcc, 3200, 4100); // 3200mV - bat empty, 4100mV - bat fully charged 364 | uint8_t result = (vcc - 3200) / 9; // calculate bat level in percent 365 | return result; // return percentage value 366 | } 367 | 368 | // ----------------------------------------------------------------------------- 369 | // Sleep Functions and Interrupt Service Routines 370 | // ----------------------------------------------------------------------------- 371 | 372 | // go to sleep in order to save energy, wake up again by watchdog timer 373 | void sleep() { 374 | set_sleep_mode (SLEEP_MODE_PWR_DOWN); // set sleep mode to power down 375 | bitSet (GIFR, PCIF); // clear any outstanding interrupts 376 | power_all_disable (); // power off ADC, Timer 0 and 1, serial interface 377 | noInterrupts (); // timed sequence coming up 378 | resetWatchdog (); // get watchdog ready 379 | sleep_enable (); // ready to sleep 380 | interrupts (); // interrupts are required now 381 | sleep_cpu (); // sleep 382 | sleep_disable (); // precaution 383 | power_all_enable (); // power everything back on 384 | power_adc_disable(); // except ADC 385 | } 386 | 387 | // reset watchdog timer 388 | void resetWatchdog () { 389 | MCUSR = 0; // clear various "reset" flags 390 | WDTCR = bit (WDCE) | bit (WDE) | bit (WDIF); // allow changes, disable reset, clear existing interrupt 391 | WDTCR = bit (WDIE) | bit (WDP1); // set interval to 64 milliseconds 392 | wdt_reset(); // pat the dog 393 | } 394 | 395 | // watchdog interrupt service routine 396 | ISR (WDT_vect) { 397 | wdt_disable(); // disable watchdog 398 | } 399 | 400 | // ADC interrupt service routine 401 | EMPTY_INTERRUPT (ADC_vect); // nothing to be done here 402 | -------------------------------------------------------------------------------- /software/binaries/tinyDFPlayer_v1.1.hex: -------------------------------------------------------------------------------- 1 | :100000007DC1A1C161C89FC19EC114C89CC19BC1D3 2 | :10001000D3C899C198C197C1D0C895C194C10000F7 3 | :10002000000000000000002F000000000700070093 4 | :1000300000147F147F1400242A7F2A1200626408AF 5 | :10004000132300364955225000000503000000002C 6 | :100050001C224100000041221C000014083E08142C 7 | :100060000008083E0808000000A06000000808081A 8 | :100070000808000060600000002010080402003E34 9 | :100080005149453E0000427F4000004261514946CF 10 | :10009000002141454B31001814127F1000274545BF 11 | :1000A0004539003C4A4949300001710905030036D1 12 | :1000B0004949493600064949291E000036360000E4 13 | :1000C00000005636000000081422410000141414E9 14 | :1000D00014140000412214080002015109060032E4 15 | :1000E0004959513E007C1211127C007F4949493622 16 | :1000F000003E41414122007F4141221C007F49498D 17 | :100100004941007F09090901003E4149497A007FC0 18 | :100110000808087F0000417F4100002040413F0166 19 | :10012000007F08142241007F40404040007F020CC5 20 | :10013000027F007F0408107F003E4141413E007F66 21 | :1001400009090906003E4151215E007F091929462F 22 | :100150000046494949310001017F0101003F40400B 23 | :10016000403F001F2040201F003F4038403F0063B9 24 | :1001700014081463000708700807006151494543DB 25 | :1001800000007F41410000020408102000004141AE 26 | :100190007F00000402010204004040404040000093 27 | :1001A00001020400002054545478007F484444382D 28 | :1001B00000384444442000384444487F00385454B4 29 | :1001C000541800087E0901020018A4A4A47C007F32 30 | :1001D000080404780000447D4000004080847D00D5 31 | :1001E000007F102844000000417F4000007C04187C 32 | :1001F0000478007C0804047800384444443800FC47 33 | :10020000242424180018242418FC007C0804040862 34 | :1002100000485454542000043F444020003C4040D7 35 | :10022000207C001C2040201C003C4030403C00440E 36 | :1002300028102844001CA0A0A07C004464544C4416 37 | :100240000008364141000000007F000000004141ED 38 | :100250003608000804081008506C65617365207248 39 | :100260006563686172676520210021212120426158 40 | :10027000747465727920656D707479202121210074 41 | :100280000000000036000000000037000000000001 42 | :1002900038000202020202020102040810200102D8 43 | :1002A00000000400C8A1A81FDA028D1473746172E3 44 | :1002B0007420616761696E202100436865636B206B 45 | :1002C00053442D4361726420616E6400212121201A 46 | :1002D000202020204552524F522020202020212132 47 | :1002E00021002D2D2054696E79204D503320506C03 48 | :1002F00061796572202D2D00180BC00B11241FBED3 49 | :10030000CFE5D2E0DEBFCDBF21E0A4EDB0E001C07B 50 | :100310001D92AE37B207E1F710E0A0E6B0E0EEECD8 51 | :10032000F8E102C005900D92A43DB107D9F711E0A4 52 | :10033000CDE7D1E003C02197FE01B7DACC37D10772 53 | :10034000D1F78BD7B8CA5CCE80B58E7F80BD86B121 54 | :10035000806986B917B885B7877E886085BF85B7FD 55 | :10036000806285BF889585B78F7D85BF3699FECF22 56 | :1003700024B135B1379890B5916090BDC901089509 57 | :10038000CF92DF92EF92FF920F931F93CF93DF9361 58 | :100390006C01EB017B01E40EF51E10E000E0CE15D0 59 | :1003A000DF0561F06991D601ED91FC910190F0813A 60 | :1003B000E02DC6010995080F191FF1CFC801DF9183 61 | :1003C000CF911F910F91FF90EF90DF90CF90089504 62 | :1003D000CF93DF9387FF07C08F7769F1813069F191 63 | :1003E000823069F183E090E0FC01E856FD4F2491F2 64 | :1003F0008E569D4FFC0184918823D1F090E0880FA8 65 | :10040000991FFC01EA57FD4FA591B491FC01E457F7 66 | :10041000FD4FC591D491611114C09FB7F8948C9190 67 | :10042000E22FE0958E238C932881E223E8839FBFFF 68 | :10043000DF91CF91089585E0D6CF82E0D4CF84E0DC 69 | :10044000D2CF8FB7F894EC91E22BEC938FBFF0CF23 70 | :100450003FB7F89480911D0190911E01A0911F015A 71 | :10046000B091200122B708B601FE05C02F3F19F058 72 | :100470000196A11DB11D3FBFBA2FA92F982F882724 73 | :10048000BC01CD01620F711D811D911D43E0660FFE 74 | :10049000771F881F991F4A95D1F70895CF92DF9251 75 | :1004A000EF92FF92CF93DF936B017C01D1DFEB01E1 76 | :1004B000C114D104E104F10441F412C081E0C81A6E 77 | :1004C000D108E108F108C851DC4FC2DF6C1B7D0B7D 78 | :1004D000683E734068F3C114D104E104F10471F77C 79 | :1004E000DF91CF91FF90EF90DF90CF9008958091B2 80 | :1004F000520190915301DC01ED91FC910480F58152 81 | :10050000E02D0995892B09F4D3C060E070E0CB01A0 82 | :10051000C5DF209170018091520190915301DC015F 83 | :10052000ED91FC910680F781E02D21110BC009951A 84 | :1005300080935C018E37D9F6809170018F5F809334 85 | :100540007001D5CF099590917001E92FF0E0EE5A36 86 | :10055000FE4F82879230A9F09930C9F0913099F41A 87 | :100560008F3F89F01092700181E0809372011092A8 88 | :10057000750110927401809376011092770180E0EA 89 | :100580000895863079F79F5F90937001B0CF8F3ECA 90 | :1005900049F720915E0180915D01280F3327331FB9 91 | :1005A000E0915F01C9018E0F911D20916001280F1C 92 | :1005B000392F311D4091610150E0240F351F80918A 93 | :1005C000620190E06091630170E0762F6627F09100 94 | :1005D00064016F0F711D280F391F31952195310965 95 | :1005E0006217730709F0BECF10927001E13419F45D 96 | :1005F000109277012EC0E0937301542F4427840F8B 97 | :10060000951F9093750180937401EA53E63108F0C9 98 | :1006100045C0F0E0E35FFC4F09942CC033C03CC000 99 | :1006200012C03AC019C036C039C036C035C034C057 100 | :1006300033C032C031C030C02FC030C02DC02CC03C 101 | :100640002BC02AC029C085E08093720181E080938D 102 | :10065000760180917601089580FF02C089E0F4CF91 103 | :1006600081FF02C084E0F0CF83709927892B89F342 104 | :100670008AE0EACF80FF02C087E0E6CF81FFE9CFC2 105 | :1006800082E0E2CF80FF02C088E0DECF81FFE1CFD1 106 | :1006900083E0DACF86E0D8CF8BE0D6CF81E08093BD 107 | :1006A0007201109275011092740180937601A0CFAF 108 | :1006B00080917701882369F22FB7F89480914E01D9 109 | :1006C00090914F01A0915001B09151012FBF4091E5 110 | :1006D0005401509155016091560170915701841B4E 111 | :1006E000950BA60BB70B40915801509159016091A1 112 | :1006F0005A0170915B0184179507A607B70708F4A4 113 | :10070000A8CF109270011092720110927501109290 114 | :10071000740181E030CF80936901272F30E070931E 115 | :100720006B0160936C014091680190916701490FE2 116 | :100730005527551F840F952F911D40916A01840FF5 117 | :10074000911D820F931F680F792F711D719561950F 118 | :10075000710970936D0160936E01442351F0809193 119 | :100760007701882331F060E070E0CB0197DEBFDED7 120 | :10077000F6CF8091520190915301DC01ED91FC91F3 121 | :100780000280F381E02D4AE050E066E671E00995D1 122 | :100790002FB7F89480914E0190914F01A091500194 123 | :1007A000B09151012FBF8093540190935501A093B4 124 | :1007B0005601B093570180916A0191E0811101C007 125 | :1007C00090E090937701811105C06AE070E080E0CD 126 | :1007D00090E064CE08958F929F92AF92BF92CF9295 127 | :1007E000DF92EF92FF926B017C018FB7F8948090BB 128 | :1007F0004E0190904F01A0905001B09051018FBFD9 129 | :10080000C114D104E104F10441F4C0905801D09026 130 | :100810005901E0905A01F0905B0169DE811119C025 131 | :100820009FB7F89440914E0150914F016091500153 132 | :10083000709151019FBF481959096A097B09C41673 133 | :10084000D506E606F70628F060E070E0CB0126DE6C 134 | :10085000E4CFFF90EF90DF90CF90BF90AF909F904C 135 | :100860008F900895E0911801F09119010994E09199 136 | :100870001601F09117010994E0911A01F0911B0102 137 | :10088000099580E4F4CFE0911A01F0911B010995DC 138 | :1008900080E0EDCFCF93C091640080E2C827C09381 139 | :1008A0006400F1DF8C2FE3DFDDDF8091630094E0F3 140 | :1008B000892780936300CF9108951F93CF93DF938F 141 | :1008C000C82F162FD62FD77080916300D82BDBDF6F 142 | :1008D0008D2FCDDF8C2F82958F708061C8DF8C2F9C 143 | :1008E0008F70C5DFBFDFC093790110937801DF916E 144 | :1008F000CF911F9108950F931F93CF93DF93C0E083 145 | :1009000010E86C2F80E0D9DF80917901012F081B5E 146 | :1009100081F010937901B0DFD0E080E0A8DF811191 147 | :1009200004C0A0DFA9DF80E0A2DFDF5F0D13F5CFF9 148 | :1009300099DFCF5FC43029F760E080E0DF91CF918D 149 | :100940001F910F91BACF80917801860F24E030E09B 150 | :10095000261B31098217130609F034F480937801BD 151 | :100960006091780180E0A9CF84E0861BF7CFAF9239 152 | :10097000BF92CF92DF92EF92FF920F931F93CF938C 153 | :10098000DF93E0912301F0912401309741F06D3025 154 | :1009900031F0D62FC3816A3079F46C2FD4DF81E037 155 | :1009A00090E0DF91CF911F910F91FF90EF90DF903A 156 | :1009B000CF90BF90AF900895A28040917901EA2C2A 157 | :1009C000F12C20E830E02E193F094217130619F0E8 158 | :1009D00014F06C2FB8DFE0912301F0912401248101 159 | :1009E0008C2F90E0B70107D7BC014D2F421B550B50 160 | :1009F000CA0101D78C01BC2E3FDFC801282F201B64 161 | :100A00002A15C0F46C015FEFC51AD50AE0912301E5 162 | :100A1000F09124010190F081E02DE80FF91FD491AD 163 | :100A20008D2F25DF811104C01DDF26DF8D2F1FDFF5 164 | :100A3000C601E4CF0E0D1F1D15DF80917901C13075 165 | :100A400039F48A0D80937901BA94B110D5CFA7CF2C 166 | :100A5000609178016F5F91E09B1510F42EDFF4CF69 167 | :100A60006C1B8A0DFBCFCF93C82F0DDF81E8FFDE13 168 | :100A70008C2FFDDECF91F6CE2091270130912801F9 169 | :100A80002817390781F49091250180912601981744 170 | :100A900051F0E0912501F0E0EA52FF4F8081082EED 171 | :100AA000000C990B08958FEF9FEF08952091270177 172 | :100AB000309128012817390739F48FB7F89410922C 173 | :100AC0002601109225018FBF0895EF92FF920F9398 174 | :100AD0001F93CF93DF93DC015C96ED90FC905D97C4 175 | :100AE000E114F10479F481E090E013969C938E93E5 176 | :100AF000129790E080E0DF91CF911F910F91FF90CE 177 | :100B0000EF9008955196ED91FC91529750968C91EB 178 | :100B10005097982F90950FB75E962C915E97122F55 179 | :100B2000127021FD6095F8942081112319F1282B72 180 | :100B30002083E7012197F1F728E0462F50E030812C 181 | :100B400060FF1AC0382B3083E7012197F1F7BA0113 182 | :100B500075956795215089F7112381F0808189234C 183 | :100B600080830FBF5C968D919C910197F1F781E096 184 | :100B700090E0C1CF2923DCCF3923E5CF9081892BA9 185 | :100B8000EFCF20912701309128012817390769F408 186 | :100B9000809126012091250190E0805C9F4F821B6F 187 | :100BA000910960E470E04CD6089590E080E00895EB 188 | :100BB000209127013091280128173907B9F4909125 189 | :100BC000250180912601981789F0E0912501F0E038 190 | :100BD000EA52FF4F80812091250130E02F5F3F4F87 191 | :100BE0002F7333272093250190E008958FEF9FEF17 192 | :100BF000089585B7877E806185BF8AB780628ABF86 193 | :100C000080B58F6080BDF89414BE88E981BD82E410 194 | :100C100081BDA89585B7806285BF7894889585B792 195 | :100C20008F7D85BF80B5807F80BD80B5816080BDB0 196 | :100C3000089580B58E7F80BD86B1806986B98CE0CD 197 | :100C400087B962E070E080E090E028DC85B7877EBD 198 | :100C5000886085BF85B7806285BF889585B78F7DA1 199 | :100C600085BF3699FECF24B135B150E040E03798CA 200 | :100C700080B5816080BD64EB7BE281E190E0F3D5DB 201 | :100C8000253080E138074105510520F024E030E1AE 202 | :100C900040E050E020388CE038074105510520F451 203 | :100CA00020E83CE040E050E0CA01B90160587C40D7 204 | :100CB0008109910929E030E040E050E0D4D5822F4D 205 | :100CC0000895CF93DF93EC01FE016491662329F030 206 | :100CD0008AE791E04CDE2196F7CFDF91CF9108951E 207 | :100CE0008EB98BE295E09A95F1F700008DB9B29B31 208 | :100CF000FECF92E09A95F1F700C08DB9769BF2CFC6 209 | :100D000085E08A95F1F700008FB19FEF9FB9B89AFF 210 | :100D10000895C2988FB980EFE3DFB8988EEFE0DFD7 211 | :100D2000809581700895C098C29AB29BFECF82E0F0 212 | :100D30008A95F1F700C0C09A85E08A95F1F7000026 213 | :100D400080E00895C29AB29BFECF82E08A95F1F7C7 214 | :100D500000C0C09882E08A95F1F700C0C298C09A9E 215 | :100D6000779B0BC0C29888E78FB980EFB9DFB8983E 216 | :100D70008EEFB6DF80958170089580E00895C09A67 217 | :100D8000C29ABA9AB89A8FEF8FB98AE28DB980EF7A 218 | :100D90008EB9D8DF811106C06AE070E080E090E093 219 | :100DA0007DDBF7CFC0CF8F929F92AF92BF92EF9231 220 | :100DB000FF920F931F93CF93DF93CDB7DEB7A19729 221 | :100DC0000FB6F894DEBF0FBECDBF162F042F19A2A9 222 | :100DD000423008F40AE07E0121E2E20EF11C802E8E 223 | :100DE000912CB12CA12C612FA50194013CD5802F11 224 | :100DF000622FF8D4181B1A303CF5105DF7011293DE 225 | :100E00007F01122F732FCA01232B242B252B59F777 226 | :100E100001900020E9F73197AF014E195F09B70142 227 | :100E20008AE791E0ADDAA1960FB6F894DEBF0FBE67 228 | :100E3000CDBFDF91CF911F910F91FF90EF90BF90A9 229 | :100E4000AF909F908F900895195CD8CFFC010190CE 230 | :100E50000020E9F73197AF01481B590BBC018AE725 231 | :100E600091E08ECACF93C82F8A3018F48CEA90E0B4 232 | :100E7000EDDF6C2F70E090E080E04AE0CF9193CFFF 233 | :100E80003ADD60E080E019DD82EE92E01ADF61E099 234 | :100E900080E013DD8DE890E0D9DF80916000E2DF33 235 | :100EA0008BE990E0D3DF80912901DCDF62E080E014 236 | :100EB00004DD80EA90E0CADF80916200D3DF8BE935 237 | :100EC00090E0C4DF8091D400CDDF63E080E0F5DC0A 238 | :100ED00080914B01882311F18EEA90E0B7DF63E047 239 | :100EE0008EE4EBDC81EC90E0B1DF8091D5008436BC 240 | :100EF00018F48CEA90E0AADF8091D5008A3018F4CB 241 | :100F00008CEA90E0A3DF6091D50070E090E080E093 242 | :100F10004AE049DF86EC90E099DFBCCC88EB90E0BA 243 | :100F200095DF809161009EDFDACF83DE8093D5006C 244 | :100F300081112AC082E397DDDEDC60E080E0BDDC69 245 | :100F40008AE692E0BEDE62E08FE0B7DC88E592E000 246 | :100F5000B8DEA0DC80914B01811104C070E060E03C 247 | :100F60008EE0D9DB66DE8A3010F443DEFBCF8FE7FC 248 | :100F70007ADD5FDE8093D50080914B01811104C042 249 | :100F800070E060E08DE0C7DB7BDF88E592E0909366 250 | :100F90004A01809349010895CF9390916000809118 251 | :100FA0002901891728F481E0809360008093620012 252 | :100FB0006091600070E08EE4AEDB60E070E0CB0139 253 | :100FC0000ADC81112CC08FEF8093D40090916200D5 254 | :100FD000891718F481E0809362006091600080912D 255 | :100FE0006200762F682F8FE096DB10924B0148DF6E 256 | :100FF000C091620081E090E0DFD3C81721F06C2F30 257 | :1010000081E090E0E1D3C091600082E090E0D4D331 258 | :10101000C81771F06C2F82E090E0CF91D5C3109289 259 | :101020007601809172018B3071F680917401CCCF82 260 | :10103000CF9108951F920F920FB60F9211242F9304 261 | :101040003F938F939F93AF93BF9380914E01909165 262 | :101050004F01A0915001B091510130911C0126E047 263 | :10106000230F2D3768F129E8230F0396A11DB11D29 264 | :1010700020931C0180934E0190934F01A093500147 265 | :10108000B093510180911D0190911E01A0911F010B 266 | :10109000B09120010196A11DB11D80931D01909377 267 | :1010A0001E01A0931F01B0932001BF91AF919F91AA 268 | :1010B0008F913F912F910F900FBE0F901F90189519 269 | :1010C0000296A11DB11DD4CF1F920F920FB60F92A1 270 | :1010D00011242F933F934F935F936F937F938F933D 271 | :1010E0009F93AF93BF93EF93FF93E0912701F0910C 272 | :1010F0002801309749F0A685B7858585968D91FFA3 273 | :1011000014C09C918923A1F4FF91EF91BF91AF91FD 274 | :101110009F918F917F916F915F914F913F912F910F 275 | :101120000F900FBE0F901F9018959C91892361F727 276 | :10113000A389B4899C918589809589238C9386891C 277 | :1011400097890197F1F7608D718DA685B7855585D3 278 | :1011500038E020E0CB010197F1F7822F90E09595E0 279 | :101160008795282F4C91452309F02068315091F73D 280 | :10117000868D81FD20958091260190E001968F73E8 281 | :10118000992730912501381799F0A0912601B0E0F8 282 | :10119000AA52BF4F2C9380932601828D938D019785 283 | :1011A000F1F7A389B4898C919589892B8C93ACCF65 284 | :1011B000868D8160868FF1CF18951F920F920FB6A2 285 | :1011C0000F9211248F930FB6F894A89581B588617A 286 | :1011D00081BD11BC0FBE8F910F900FBE0F901F905D 287 | :1011E000189590E0FC01E256FD4F3491FC01E85661 288 | :1011F000FD4F2491FC01EE56FD4FE491EE23B9F032 289 | :10120000332329F03130A1F48AB58F778ABDF0E01D 290 | :10121000EE0FFF1FE457FD4FA591B4918FB76111F9 291 | :1012200018C0F894EC9120952E232C938FBF08952D 292 | :10123000323019F48AB58F7DE9CF333021F480B78D 293 | :101240008F7D80BFE4CF343011F78CB58F7D8CBD9E 294 | :10125000DECFF894EC912E2BE8CF83E08ABD83BFDC 295 | :10126000789489B7826089BF80E48CBD8FEF8DBD93 296 | :1012700087EC80BF86B18877866886B9379A14BEB6 297 | :1012800088E981BD82E481BDA89586E086B9339A5C 298 | :10129000789480B5816080BD60E083E899D860E093 299 | :1012A00080E896D8E0912101F09122010995EBDACE 300 | :1012B000C4EAD2E04CEAE42E42E0F42EFE0114919E 301 | :1012C000812FD5DA811104C0CDDADDDA812FCFDAB2 302 | :1012D0002196EC16FD0691F7C5DA87E890E0909329 303 | :1012E0002401809323018FE7BEDB05DBCCDA8FEA94 304 | :1012F000BEDAB8DA8091630094E0892780936300B6 305 | :10130000FADA60E080E0D9DA82EE92E0DADC61E0DD 306 | :1013100080E0D3DA88EC90E099DDBCDA10924501E8 307 | :101320001092440110924301109242011092410127 308 | :10133000109240018DEC90E090934701809346011C 309 | :1013400030913601363020F545E550E050934101AB 310 | :10135000409340014BEC50E05093430140934201D5 311 | :1013600040E950E050934501409344012BB720627F 312 | :101370002BBF45E350E050933E0140933D0121E0F7 313 | :1013800001C0220F3A95EAF720933F010197F1F748 314 | :101390008091440190914501892B49F1E091270109 315 | :1013A000F091280121E0EA32F20709F1309739F093 316 | :1013B000A389B4899C918589809589238C93809198 317 | :1013C00048018E7F809348011092260110922501DA 318 | :1013D0008AE291E09093280180932701E0913D01FA 319 | :1013E000F0913E01808190913F01892B808364EFD1 320 | :1013F00071E080E090E052D88AE291E0909353014E 321 | :101400008093520181E080936A0170E060E08CE09B 322 | :1014100082D960ED77E080E090E0DDD968EC70E0A3 323 | :1014200080E090E03BD81092760180917201843088 324 | :10143000F1F08930E1F05FDA60E080E03EDA8CECD8 325 | :1014400092E03FDC62E080E038DA8AEB92E039DC5F 326 | :1014500063E080E032DA8CEA92E033DC1BDA82E38C 327 | :1014600002DB70E060E08AE056D9C3DBFECF5DDDD1 328 | :1014700090E080E0A1D1873309F0C9C081E090E01D 329 | :101480009BD18093620082E090E096D180936000CF 330 | :1014900084EF91E0A0E0B0E080935801909359016F 331 | :1014A000A0935A01B0935B016091610070E086E007 332 | :1014B00032D970E060E08FE42ED960E070E0CB01BB 333 | :1014C0008AD98111A9C08FEF8093290165DD33E0AE 334 | :1014D000F32E02E210E0EE24E39409D8882361F0B1 335 | :1014E0001092760180917201853031F48091620012 336 | :1014F0008F5F8093620050DD80B58E7F80BD86B1A6 337 | :10150000806986B9F7B885B7877E886085BF28E08F 338 | :1015100090E080E035B7306235BF889535B73F7DC4 339 | :1015200035BF3699FECF44B155B1840F951F215078 340 | :1015300089F7379820B5216020BD23E096958795DF 341 | :101540002A95E1F720914C0130914D01A9014850B5 342 | :1015500051098417950728F0285F3F4F281739074E 343 | :1015600020F490934D0180934C0180914C01909117 344 | :101570004D01B80151D180916100861731F060931F 345 | :101580006100772786E0C7D87BDCDED6EC01C83E59 346 | :1015900083E0D80770F5CE0183509340879740F4DD 347 | :1015A000809160008F5F80936000E0926200F4DCC5 348 | :1015B000CE0185519240879730F4809162008F5F11 349 | :1015C00080936200E9DCC55BD240A79770F48091FC 350 | :1015D0004B0191E0811190E090934B0170E060E04D 351 | :1015E000811124C08EE097D84BDCAED6883E934064 352 | :1015F000E0F38091490190914A01019790934A014B 353 | :1016000080934901892B09F490DCF3DA66CF67E314 354 | :1016100090E080E0D9D03CCF1092760180917201A9 355 | :101620008B3009F050CF809174014ECF8DE0DBCF2D 356 | :1016300010927D0110927C0183E790E090937B01F2 357 | :1016400080937A018FEB96E09093220180932101A1 358 | :1016500082EA96E090931B0180931A0189E896E054 359 | :10166000909317018093160183E996E090931901F6 360 | :101670008093180110922D0110922C0188EE93E0B6 361 | :10168000A0E0B0E080932E0190932F01A093300151 362 | :10169000B09331018BE790E090932B0180932A0166 363 | :1016A00010924101109240011092430110924201A8 364 | :1016B0001092450110924401109247011092460188 365 | :1016C000609148016E7F6D7F6093480166956170FF 366 | :1016D00081E0682786DD61E081E07AD6E9E9F2E021 367 | :1016E000E491E0933A01E3E9F2E0E491F0E0EE0FF7 368 | :1016F000FF1FE457FD4F8591949190933C01809397 369 | :101700003B0160E084E064D68091480181FD03C024 370 | :1017100061E084E066DD84E080933601ECE9F2E08C 371 | :10172000E491E0933701E6E9F2E0E491F0E0EE0FB6 372 | :10173000FF1FE058FD4F859194919093390180935C 373 | :10174000380184EF91E0A0E0B0E0809358019093DD 374 | :101750005901A0935A01B0935B018AE0E5E6F0E0FD 375 | :10176000A6E6B1E001900D928A95E1F71092700122 376 | :1017700082E08093710110927601109277010895B2 377 | :101780008BE790E090932B0180932A0180912701B1 378 | :10179000909128018A52914071F4E0913D01F091BD 379 | :1017A0003E01908180913F01809589238083109232 380 | :1017B0002801109227010895E199FECF9FBB8EBBAF 381 | :1017C000E09A99278DB30895262FE199FECF1CBA90 382 | :1017D0009FBB8EBB2DBB0FB6F894E29AE19A0FBE69 383 | :1017E00001960895002480FD060E660F11F086957F 384 | :1017F000D1F7802D08950024552704C0080E591FE5 385 | :10180000880F991F009729F076956795B8F37105B1 386 | :10181000B9F7802D952F0895AA1BBB1B51E107C076 387 | :10182000AA1FBB1FA617B70710F0A61BB70B881F70 388 | :10183000991F5A95A9F780959095BC01CD010895FF 389 | :1018400097FB072E16F4009406D077FD08D0E4DF4E 390 | :1018500007FC05D03EF4909581959F4F08957095B3 391 | :1018600061957F4F0895A1E21A2EAA1BBB1BFD01B3 392 | :101870000DC0AA1FBB1FEE1FFF1FA217B307E4076F 393 | :10188000F50720F0A21BB30BE40BF50B661F771FC7 394 | :10189000881F991F1A9469F76095709580959095A7 395 | :1018A0009B01AC01BD01CF010895EE0FFF1F059014 396 | :1018B000F491E02D099411E0CDE7D1E003C0FE01E1 397 | :0E18C000F4DF2196CE37D107D1F7F894FFCF91 398 | :1018CE00011401B0407EFF06000100000000EF0091 399 | :1018DE00000000B704C001000000006505C001C192 400 | :1018EE0005D8053C0556051E000601207E466F6C88 401 | :1018FE006465723A20202020202000206F66200090 402 | :10190E0046696C653A2020202020202020003C20B3 403 | :10191E005061757365203E00566F6C756D653A208B 404 | :10192E00004261743A0025007374617274696E67C7 405 | :04193E002E2E2E001B 406 | :00000001FF 407 | -------------------------------------------------------------------------------- /software/binaries/tinyDFPlayer_v1.2.hex: -------------------------------------------------------------------------------- 1 | :10000000A3C1C7C18DC8C5C1C4C140C8C2C1C1C197 2 | :10001000FFC8BFC1BEC1BDC1FCC8BBC1BAC10000E1 3 | :10002000000000000000002F000000000700070093 4 | :1000300000147F147F1400242A7F2A1200626408AF 5 | :10004000132300364955225000000503000000002C 6 | :100050001C224100000041221C000014083E08142C 7 | :100060000008083E0808000000A06000000808081A 8 | :100070000808000060600000002010080402003E34 9 | :100080005149453E0000427F4000004261514946CF 10 | :10009000002141454B31001814127F1000274545BF 11 | :1000A0004539003C4A4949300001710905030036D1 12 | :1000B0004949493600064949291E000036360000E4 13 | :1000C00000005636000000081422410000141414E9 14 | :1000D00014140000412214080002015109060032E4 15 | :1000E0004959513E007C1211127C007F4949493622 16 | :1000F000003E41414122007F4141221C007F49498D 17 | :100100004941007F09090901003E4149497A007FC0 18 | :100110000808087F0000417F4100002040413F0166 19 | :10012000007F08142241007F40404040007F020CC5 20 | :10013000027F007F0408107F003E4141413E007F66 21 | :1001400009090906003E4151215E007F091929462F 22 | :100150000046494949310001017F0101003F40400B 23 | :10016000403F001F2040201F003F4038403F0063B9 24 | :1001700014081463000708700807006151494543DB 25 | :1001800000007F41410000020408102000004141AE 26 | :100190007F00000402010204004040404040000093 27 | :1001A00001020400002054545478007F484444382D 28 | :1001B00000384444442000384444487F00385454B4 29 | :1001C000541800087E0901020018A4A4A47C007F32 30 | :1001D000080404780000447D4000004080847D00D5 31 | :1001E000007F102844000000417F4000007C04187C 32 | :1001F0000478007C0804047800384444443800FC47 33 | :10020000242424180018242418FC007C0804040862 34 | :1002100000485454542000043F444020003C4040D7 35 | :10022000207C001C2040201C003C4030403C00440E 36 | :1002300028102844001CA0A0A07C004464544C4416 37 | :100240000008364141000000007F000000004141ED 38 | :10025000360800080408100825004261743A005668 39 | :100260006F6C756D653A00203C2050617573652098 40 | :100270003E00206F66200046696C653A20202020F1 41 | :10028000202000206F662000466F6C6465723A2063 42 | :100290002020200020002000506C656173652072D2 43 | :1002A0006563686172676520210021212120426118 44 | :1002B000747465727920656D707479202121210034 45 | :1002C00000000000360000000000370000000000C1 46 | :1002D0003800020202020202010204081020010298 47 | :1002E00000000400C8A1A81FDA028D1473746172A3 48 | :1002F0007420616761696E202100436865636B202B 49 | :1003000053442D4361726420616E640021212120D9 50 | :10031000202020204552524F5220202020202121F1 51 | :1003200021005374617274696E672E2E2E002D2881 52 | :100330002054696E79204D503320506C617965727C 53 | :1003400020292D00580B000C11241FBECFE5D2E050 54 | :10035000DEBFCDBF21E0AEE8B0E001C01D92A83302 55 | :10036000B207E1F710E0A0E6B0E0EEE4F9E102C088 56 | :1003700005900D92AE38B107D9F711E0C3EAD1E08C 57 | :1003800003C02197FE01D1DAC23AD107D1F791D744 58 | :10039000D2CA36CE80B58E7F80BD86B1806986B9DF 59 | :1003A00017B885B7877E886085BF85B7806285BFAF 60 | :1003B000889585B78F7D85BF3699FECF24B135B13D 61 | :1003C000379890B5916090BDC9010895CF92DF92A2 62 | :1003D000EF92FF920F931F93CF93DF936C01EB018A 63 | :1003E0007B01E40EF51E10E000E0CE15DF0561F0A4 64 | :1003F0006991D601ED91FC910190F081E02DC6014B 65 | :100400000995080F191FF1CFC801DF91CF911F91F6 66 | :100410000F91FF90EF90DF90CF900895CF93DF93EF 67 | :1004200087FF07C08F7769F1813069F1823069F108 68 | :1004300083E090E0FC01E852FD4F24918E529D4FE5 69 | :10044000FC0184918823D1F090E0880F991FFC0172 70 | :10045000EA53FD4FA591B491FC01E453FD4FC591C2 71 | :10046000D491611114C09FB7F8948C91E22FE0955C 72 | :100470008E238C932881E223E8839FBFDF91CF9165 73 | :10048000089585E0D6CF82E0D4CF84E0D2CF8FB775 74 | :10049000F894EC91E22BEC938FBFF0CF3FB7F89438 75 | :1004A0008091D6009091D700A091D800B091D9004A 76 | :1004B00022B708B601FE05C02F3F19F00196A11D15 77 | :1004C000B11D3FBFBA2FA92F982F8827BC01CD019E 78 | :1004D000620F711D811D911D43E0660F771F881FFC 79 | :1004E000991F4A95D1F70895CF92DF92EF92FF922C 80 | :1004F000CF93DF936B017C01D1DFEB01C114D104F9 81 | :10050000E104F10441F412C081E0C81AD108E10805 82 | :10051000F108C851DC4FC2DF6C1B7D0B683E734095 83 | :1005200068F3C114D104E104F10471F7DF91CF91B4 84 | :10053000FF90EF90DF90CF90089580910C01909103 85 | :100540000D01DC01ED91FC910480F581E02D099510 86 | :10055000892B09F4D3C060E070E0CB01C5DF2091A6 87 | :100560002A0180910C0190910D01DC01ED91FC912B 88 | :100570000680F781E02D21110BC0099580931601AB 89 | :100580008E37D9F680912A018F5F80932A01D5CFCB 90 | :10059000099590912A01E92FF0E0E45FFE4F8287F0 91 | :1005A0009230A9F09930C9F0913099F48F3F89F0D9 92 | :1005B00010922A0181E080932C0110922F01109259 93 | :1005C0002E01809330011092310180E00895863031 94 | :1005D00079F79F5F90932A01B0CF8F3E49F7209122 95 | :1005E000180180911701280F3327331FE09119015B 96 | :1005F000C9018E0F911D20911A01280F392F311D2D 97 | :1006000040911B0150E0240F351F80911C0190E0A8 98 | :1006100060911D0170E0762F6627F0911E016F0F2B 99 | :10062000711D280F391F3195219531096217730704 100 | :1006300009F0BECF10922A01E13419F41092310171 101 | :100640002EC0E0932D01542F4427840F951F9093C3 102 | :100650002F0180932E01EA53E63108F045C0F0E007 103 | :10066000ED5CFC4F09942CC033C03CC012C03AC0B2 104 | :1006700019C036C039C036C035C034C033C032C0EE 105 | :1006800031C030C02FC030C02DC02CC02BC02AC0FC 106 | :1006900029C085E080932C0181E080933001809116 107 | :1006A0003001089580FF02C089E0F4CF81FF02C0CD 108 | :1006B00084E0F0CF83709927892B89F38AE0EACF11 109 | :1006C00080FF02C087E0E6CF81FFE9CF82E0E2CF82 110 | :1006D00080FF02C088E0DECF81FFE1CF83E0DACF88 111 | :1006E00086E0D8CF8BE0D6CF81E080932C011092AA 112 | :1006F0002F0110922E0180933001A0CF8091310103 113 | :10070000882369F22FB7F89480910801909109012C 114 | :10071000A0910A01B0910B012FBF40910E015091A1 115 | :100720000F016091100170911101841B950BA60BB4 116 | :10073000B70B409112015091130160911401709117 117 | :10074000150184179507A607B70708F4A8CF1092DC 118 | :100750002A0110922C0110922F0110922E0181E09B 119 | :1007600030CF80932301272F30E0709325016093D1 120 | :1007700026014091220190912101490F5527551FD3 121 | :10078000840F952F911D40912401840F911D820F9C 122 | :10079000931F680F792F711D719561957109709381 123 | :1007A000270160932801442351F08091310188236F 124 | :1007B00031F060E070E0CB0197DEBFDEF6CF8091D4 125 | :1007C0000C0190910D01DC01ED91FC910280F3810F 126 | :1007D000E02D4AE050E060E271E009952FB7F8940F 127 | :1007E0008091080190910901A0910A01B0910B013B 128 | :1007F0002FBF80930E0190930F01A0931001B0932F 129 | :1008000011018091240191E0811101C090E0909349 130 | :100810003101811105C06AE070E080E090E064CEB3 131 | :1008200008958F929F92AF92BF92CF92DF92EF92F4 132 | :10083000FF926B017C018FB7F89480900801909033 133 | :100840000901A0900A01B0900B018FBFC114D1041F 134 | :10085000E104F10441F4C0901201D0901301E09042 135 | :100860001401F090150169DE811119C09FB7F89449 136 | :10087000409108015091090160910A0170910B01AA 137 | :100880009FBF481959096A097B09C416D506E606AF 138 | :10089000F70628F060E070E0CB0126DEE4CFFF90A1 139 | :1008A000EF90DF90CF90BF90AF909F908F90089582 140 | :1008B000BC018EE456DF60E070E0CB01B2DF811155 141 | :1008C00003C08FEF9FEF08951092300180912C01AB 142 | :1008D0008B30B9F780912E0190912F010895E0910E 143 | :1008E000D100F091D2000994E091CF00F091D000B6 144 | :1008F0000994E091D300F091D400099580E4F4CFFD 145 | :10090000E091D300F091D400099580E0EDCFCF9332 146 | :10091000C091640080E2C827C0936400F1DF8C2F8F 147 | :10092000E3DFDDDF8091630094E08927809363003B 148 | :10093000CF9108951F93CF93DF93C82F162FD62FF3 149 | :10094000D77080916300D82BDBDF8D2FCDDF8C2F0C 150 | :1009500082958F708061C8DF8C2F8F70C5DFBFDFFD 151 | :10096000C093330110933201DF91CF911F9108950D 152 | :100970000F931F93CF93DF93C0E010E86C2F80E0BC 153 | :10098000D9DF80913301012F081B81F010933301CF 154 | :10099000B0DFD0E080E0A8DF811104C0A0DFA9DFD4 155 | :1009A00080E0A2DFDF5F0D13F5CF99DFCF5FC430AA 156 | :1009B00029F760E080E0DF91CF911F910F91BACFCE 157 | :1009C00080913201860F24E030E0261B3109821726 158 | :1009D000130609F034F4809332016091320180E013 159 | :1009E000A9CF84E0861BF7CFAF92BF92CF92DF9260 160 | :1009F000EF92FF920F931F93CF93DF93E091DC0070 161 | :100A0000F091DD00309741F06D3031F0D62FC38189 162 | :100A10006A3079F46C2FD4DF81E090E0DF91CF91E0 163 | :100A20001F910F91FF90EF90DF90CF90BF90AF900C 164 | :100A30000895A28040913301EA2CF12C20E830E0A7 165 | :100A40002E193F094217130619F014F06C2FB8DF66 166 | :100A5000E091DC00F091DD0024818C2F90E0B70163 167 | :100A60000AD7BC014D2F421B550BCA0104D78C017C 168 | :100A7000BC2E3FDFC801282F201B2A15C0F46C01B3 169 | :100A80005FEFC51AD50AE091DC00F091DD0001901E 170 | :100A9000F081E02DE80FF91FD4918D2F25DF811112 171 | :100AA00004C01DDF26DF8D2F1FDFC601E4CF0E0D32 172 | :100AB0001F1D15DF80913301C13039F48A0D8093F9 173 | :100AC0003301BA94B110D5CFA7CF609132016F5FD7 174 | :100AD00091E09B1510F42EDFF4CF6C1B8A0DFBCF39 175 | :100AE0000F931F93CF93DF938C01D0E0C0E0F80108 176 | :100AF000EC0FFD1F6491662339F084E391E074DF0D 177 | :100B0000892B11F02196F3CFCE01DF91CF911F9168 178 | :100B10000F910895CF93C82FF3DE81E8E5DE8C2F87 179 | :100B2000E3DECF91DCCE2091E0003091E100281788 180 | :100B3000390781F49091DE008091DF00981751F021 181 | :100B4000E091DE00F0E0E157FF4F8081082E000CBD 182 | :100B5000990B08958FEF9FEF08952091E000309159 183 | :100B6000E1002817390739F48FB7F8941092DF00A5 184 | :100B70001092DE008FBF0895EF92FF920F931F93A4 185 | :100B8000CF93DF93DC015C96ED90FC905D97E114D0 186 | :100B9000F10479F481E090E013969C938E93129780 187 | :100BA00090E080E0DF91CF911F910F91FF90EF9047 188 | :100BB00008955196ED91FC91529750968C915097D3 189 | :100BC000982F90950FB75E962C915E97122F12700A 190 | :100BD00021FD6095F8942081112319F1282B2083A1 191 | :100BE000E7012197F1F728E0462F50E0308160FFC0 192 | :100BF0001AC0382B3083E7012197F1F7BA017595B8 193 | :100C00006795215089F7112381F0808189238083A2 194 | :100C10000FBF5C968D919C910197F1F781E090E078 195 | :100C2000C1CF2923DCCF3923E5CF9081892BEFCFAA 196 | :100C30002091E0003091E1002817390769F4809194 197 | :100C4000DF002091DE0090E0805C9F4F821B9109C5 198 | :100C500060E470E035D6089590E080E0089520913A 199 | :100C6000E0003091E10028173907B9F49091DE00D7 200 | :100C70008091DF00981789F0E091DE00F0E0E15705 201 | :100C8000FF4F80812091DE0030E02F5F3F4F2F73B8 202 | :100C900033272093DE0090E008958FEF9FEF0895B3 203 | :100CA00085B7877E806185BF8AB780628ABF80B53D 204 | :100CB0008F6080BDF89414BE88E981BD82E481BD57 205 | :100CC000A89585B7806285BF7894889585B78F7D14 206 | :100CD00085BF80B5807F80BD80B5816080BD08956F 207 | :100CE00080B58E7F80BD86B1806986B98CE087B97A 208 | :100CF00062E070E080E090E0F7DB85B7877E886097 209 | :100D000085BF85B7806285BF889585B78F7D85BF94 210 | :100D10003699FECF24B135B150E040E0379880B528 211 | :100D2000816080BD64EB7BE281E190E0DCD5253021 212 | :100D300080E138074105510520F024E030E140E032 213 | :100D400050E020388CE038074105510520F420E8B8 214 | :100D50003CE040E050E0CA01B90160587C408109A4 215 | :100D6000910929E030E040E050E0BDD5822F0895A0 216 | :100D7000CF93DF93EC01FE016491662329F084E3B5 217 | :100D800091E032DE2196F7CFDF91CF9108958EB9B1 218 | :100D90008BE295E09A95F1F700008DB9B29BFECFFA 219 | :100DA00092E09A95F1F700C08DB9769BF2CF85E07D 220 | :100DB0008A95F1F700008FB19FEF9FB9B89A089517 221 | :100DC000C2988FB980EFE3DFB8988EEFE0DF8095AF 222 | :100DD00081700895C098C29AB29BFECF82E08A9536 223 | :100DE000F1F700C0C09A85E08A95F1F7000080E035 224 | :100DF0000895C29AB29BFECF82E08A95F1F700C0B7 225 | :100E0000C09882E08A95F1F700C0C298C09A779B9B 226 | :100E10000BC0C29888E78FB980EFB9DFB8988EEF22 227 | :100E2000B6DF80958170089580E00895C09AC29AD7 228 | :100E3000BA9AB89A8FEF8FB98AE28DB980EF8EB9DE 229 | :100E4000D8DF811106C06AE070E080E090E04CDB02 230 | :100E5000F7CFC0CF8F929F92AF92BF92CF92DF9287 231 | :100E6000EF92FF920F931F93CF93DF93CDB7DEB72F 232 | :100E7000A1970FB6F894DEBF0FBECDBF182F8436F2 233 | :100E800040F486E992E02CDE1A3018F484E992E00E 234 | :100E900027DEC12ED12CF12CE12C19A28E010F5D81 235 | :100EA0001F4F8AE0882E912CA12CB12CC701B601CE 236 | :100EB000A501940118D5822F6AE0D4D49C2D981BEB 237 | :100EC000892F9A304CF5805DF80182938F0169017A 238 | :100ED0007A01C114D104E104F10441F7019000202A 239 | :100EE000E9F73197AF01401B510BB80184E391E062 240 | :100EF0006DDAA1960FB6F894DEBF0FBECDBFDF91BD 241 | :100F0000CF911F910F91FF90EF90DF90CF90BF9006 242 | :100F1000AF909F908F900895895CD6CF29DD60E0D7 243 | :100F200080E008DD8EE293E023DF61E080E002DD17 244 | :100F300088E892E0D5DD809160008CDF83E892E064 245 | :100F4000CFDD8091050186DF62E080E0F3DC87E79A 246 | :100F500092E0C6DD809162007DDF82E792E0C0DD35 247 | :100F60008091040177DF63E080E0E4DC8AE592E0D1 248 | :100F7000B7DD80918E006EDF88E592E0B1DD63E041 249 | :100F800082E4D8DC80910301882321F087E692E097 250 | :100F9000A7DDBDCC8FE592E0A3DD809161005ADF33 251 | :100FA000F8CF9EDE80938E0081112AC082E3B2DDED 252 | :100FB000DFDC60E080E0BEDC8AEA92E0D9DE62E05D 253 | :100FC0008FE0B8DC88E992E0D3DEA1DC80910301F8 254 | :100FD000811104C070E060E08EE0C3DB81DE8A3006 255 | :100FE00010F45EDEFBCF8FE795DD7ADE80938E0016 256 | :100FF00080910301811104C070E060E08DE0B1DBFD 257 | :101000008DDF88E592E090930201809301010895BD 258 | :10101000CF939091600080910501891750F481E091 259 | :10102000809360008093620081E090E041DC8093D7 260 | :1010300004019091620080910401891718F481E005 261 | :10104000809362006091600080916200762F682F2B 262 | :101050008FE087DB1092030161DFC091620081E0C5 263 | :1010600090E0EAD3C81721F06C2F81E090E0ECD338 264 | :10107000C091600082E090E0DFD3C81729F06C2FA8 265 | :1010800082E090E0CF91E0C3CF9108951F920F923C 266 | :101090000FB60F9211242F933F938F939F93AF938B 267 | :1010A000BF938091080190910901A0910A01B0912C 268 | :1010B0000B013091D50026E0230F2D3768F129E888 269 | :1010C000230F0396A11DB11D2093D5008093080125 270 | :1010D00090930901A0930A01B0930B018091D6006F 271 | :1010E0009091D700A091D800B091D9000196A11D90 272 | :1010F000B11D8093D6009093D700A093D800B093F1 273 | :10110000D900BF91AF919F918F913F912F910F90F7 274 | :101110000FBE0F901F9018950296A11DB11DD4CF40 275 | :101120001F920F920FB60F9211242F933F934F935C 276 | :101130005F936F937F938F939F93AF93BF93EF933F 277 | :10114000FF93E091E000F091E100309749F0A6852F 278 | :10115000B7858585968D91FF14C09C918923A1F454 279 | :10116000FF91EF91BF91AF919F918F917F916F917F 280 | :101170005F914F913F912F910F900FBE0F901F9055 281 | :1011800018959C91892361F7A389B4899C918589DD 282 | :10119000809589238C93868997890197F1F7608DD3 283 | :1011A000718DA685B785558538E020E0CB01019784 284 | :1011B000F1F7822F90E095958795282F4C91452344 285 | :1011C00009F02068315091F7868D81FD209580913E 286 | :1011D000DF0090E001968F7399273091DE00381779 287 | :1011E00099F0A091DF00B0E0A157BF4F2C938093FE 288 | :1011F000DF00828D938D0197F1F7A389B4898C91DB 289 | :101200009589892B8C93ACCF868D8160868FF1CFA9 290 | :1012100018951F920F920FB60F9211248F930FB64D 291 | :10122000F894A89581B5886181BD11BC0FBE8F91DE 292 | :101230000F900FBE0F901F90189590E0FC01E252A6 293 | :10124000FD4F3491FC01E852FD4F2491FC01EE5218 294 | :10125000FD4FE491EE23B9F0332329F03130A1F4AE 295 | :101260008AB58F778ABDF0E0EE0FFF1FE453FD4F84 296 | :10127000A591B4918FB7611118C0F894EC912095A5 297 | :101280002E232C938FBF0895323019F48AB58F7DA9 298 | :10129000E9CF333021F480B78F7D80BFE4CF343085 299 | :1012A00011F78CB58F7D8CBDDECFF894EC912E2B91 300 | :1012B000E8CF83E08ABD83BF789489B7826089BF15 301 | :1012C00080E48CBD8FEF8DBD87EC80BF86B18877C1 302 | :1012D000866886B9379A14BE88E981BD82E481BDEB 303 | :1012E000A89586E086B9339A789480B5816080BDF0 304 | :1012F00060E083E893D860E080E890D8E091DA007D 305 | :10130000F091DB000995FCDAC4EED2E04CEEE42E5D 306 | :1013100042E0F42EFE011491812FE6DA811104C01F 307 | :10132000DEDAEEDA812FE0DA2196EC16FD0691F78F 308 | :10133000D6DA87E890E09093DD008093DC008FE7B9 309 | :10134000E9DB16DBDDDA8FEACFDAC9DA80916300F8 310 | :1013500094E08927809363000BDB60E080E0EADAA9 311 | :101360008EE293E005DD61E080E0E4DA82E293E082 312 | :10137000B7DBCDDA1092FD001092FC001092FB005A 313 | :101380001092FA001092F9001092F8008DEC90E0A3 314 | :101390009093FF008093FE003091EE00363020F5F0 315 | :1013A00045E550E05093F9004093F8004BEC50E0D5 316 | :1013B0005093FB004093FA0040E950E05093FD0049 317 | :1013C0004093FC002BB720622BBF45E350E05093C5 318 | :1013D000F6004093F50021E001C0220F3A95EAF7AC 319 | :1013E0002093F7000197F1F78091FC009091FD00A8 320 | :1013F000892B49F1E091E000F091E10020E0E23E2C 321 | :10140000F20709F1309739F0A389B4899C91858955 322 | :10141000809589238C93809100018E7F80930001B9 323 | :101420001092DF001092DE0082EE90E09093E100D7 324 | :101430008093E000E091F500F091F60080819091BA 325 | :10144000F700892B808364EF71E080E090E04CD856 326 | :1014500082EE90E090930D0180930C0181E08093E7 327 | :10146000240170E060E08CE07CD960ED77E080E002 328 | :1014700090E0D7D968EC70E080E090E035D8109229 329 | :10148000300180912C018430F1F08930E1F070DA84 330 | :1014900060E080E04FDA8CE093E06ADC62E080E0BC 331 | :1014A00049DA8AEF92E064DC63E080E043DA8CEEB4 332 | :1014B00092E05EDC2CDA82E32DDB70E060E08AE013 333 | :1014C00050D9EEDBFECF6DDD90E080E0B5D1873303 334 | :1014D00009F0DAC081E090E0AFD18093620082E051 335 | :1014E00090E0AAD18093600084EF91E0A0E0B0E0AA 336 | :1014F0008093120190931301A0931401B0931501EE 337 | :101500006091610070E086E02CD970E060E08FE4CB 338 | :1015100028D960E070E0CB0184D98111BAC08FEF87 339 | :10152000809305018091600090E0C2D9809304010E 340 | :101530006FDD33E0E32E02E210E0FF24F394FDD7E9 341 | :10154000882361F01092300180912C01853031F4B4 342 | :10155000809162008F5F809362005ADD80B58E7F3C 343 | :1015600080BD86B1806986B9E7B885B7877E886017 344 | :1015700085BF28E090E080E035B7306235BF8895C0 345 | :1015800035B73F7D35BF3699FECF44B155B1840F95 346 | :10159000951F215089F7379820B5216020BD23E0A1 347 | :1015A000969587952A95E1F72091060130910701DC 348 | :1015B000A901485051098417950728F0285F3F4F2B 349 | :1015C0002817390720F49093070180930601809132 350 | :1015D000060190910701B8015FD1809161008617E3 351 | :1015E00031F060936100772786E0BBD897DCD2D6D4 352 | :1015F000EC01C83E83E0D807C8F5CE018350934084 353 | :10160000879798F48091600090910501891708F000 354 | :101610004AC08F5F809360008091600090E048D95D 355 | :1016200080930401F0926200F3DCCE018551924078 356 | :10163000879730F4809162008F5F80936200E8DCCE 357 | :10164000C55BD240A79770F48091030191E08111AE 358 | :1016500090E09093030170E060E0811127C08EE07C 359 | :1016600080D85CDC97D6883E9340E0F380910101FE 360 | :101670009091020101979093020180930101892BBF 361 | :1016800009F48FDC0DDB5BCF67E390E080E0DCD01A 362 | :101690002BCF1092300180912C018B3009F03FCF7D 363 | :1016A00080912E013DCFF0926000B6CF8DE0D8CF73 364 | :1016B000109237011092360183E790E09093350144 365 | :1016C0008093340186E197E09093DB008093DA0009 366 | :1016D00089EF96E09093D4008093D30080EE96E05B 367 | :1016E0009093D0008093CF008AEE96E09093D20042 368 | :1016F0008093D1001092E5001092E40088EE93E010 369 | :10170000A0E0B0E08093E6009093E700A093E800AB 370 | :10171000B093E9008BE790E09093E3008093E200C0 371 | :101720001092F9001092F8001092FB001092FA004B 372 | :101730001092FD001092FC001092FF001092FE002B 373 | :10174000609100016E7F6D7F60930001669561700E 374 | :1017500081E0682772DD61E081E060D6E9EDF2E0CA 375 | :10176000E491E093F200E3EDF2E0E491F0E0EE0FBB 376 | :10177000FF1FE453FD4F859194919093F400809363 377 | :10178000F30060E084E04AD68091000181FD03C04F 378 | :1017900061E084E052DD84E08093EE00ECEDF2E065 379 | :1017A000E491E093EF00E6EDF2E0E491F0E0EE0F7B 380 | :1017B000FF1FE054FD4F859194919093F100809329 381 | :1017C000F00084EF91E0A0E0B0E0809312019093EC 382 | :1017D0001301A0931401B09315018AE0E5E6F0E04F 383 | :1017E000A0E2B1E001900D928A95E1F710922A01F2 384 | :1017F00082E080932B011092300110923101089504 385 | :101800008BE790E09093E3008093E2008091E0000A 386 | :101810009091E100825E904071F4E091F500F091CA 387 | :10182000F60090818091F700809589238083109243 388 | :10183000E1001092E0000895E199FECF9FBB8EBBBE 389 | :10184000E09A99278DB30895262FE199FECF1CBA0F 390 | :101850009FBB8EBB2DBB0FB6F894E29AE19A0FBEE8 391 | :1018600001960895002480FD060E660F11F08695FE 392 | :10187000D1F7802D08950024552704C0080E591F64 393 | :10188000880F991F009729F076956795B8F3710531 394 | :10189000B9F7802D952F0895AA1BBB1B51E107C0F6 395 | :1018A000AA1FBB1FA617B70710F0A61BB70B881FF0 396 | :1018B000991F5A95A9F780959095BC01CD0108957F 397 | :1018C00097FB072E16F4009406D077FD08D0E4DFCE 398 | :1018D00007FC05D03EF4909581959F4F0895709533 399 | :1018E00061957F4F0895A1E21A2EAA1BBB1BFD0133 400 | :1018F0000DC0AA1FBB1FEE1FFF1FA217B307E407EF 401 | :10190000F50720F0A21BB30BE40BF50B661F771F46 402 | :10191000881F991F1A9469F7609570958095909526 403 | :101920009B01AC01BD01CF010895EE0FFF1F059093 404 | :10193000F491E02D099411E0C3EAD1E003C0FE0167 405 | :0E194000F4DF2196C43AD107D1F7F894FFCF17 406 | :10194E00011401B0407EFF06000100000000EF0010 407 | :10195E00000000F404E60100000000BC05E60118DA 408 | :0E196E00062F069305AD051E000601207E0023 409 | :00000001FF 410 | -------------------------------------------------------------------------------- /software/binaries/tinyDFPlayer_v1.0.hex: -------------------------------------------------------------------------------- 1 | :1000000099C1BDC173C5BBC1BAC100C9B8C1B7C12F 2 | :10001000E7C5B5C1B4C1B3C1E4C5B1C1B0C1F2C790 3 | :10002000F9C702C8DEC700C8DEC7FCC704C8FCC7E2 4 | :10003000FBC7FAC7F9C7F8C7F7C7F6C7F5C7FBC7C5 5 | :10004000F3C7F2C7F1C7F0C7EFC700000000000018 6 | :100050000000002F000000000700070000147F14BC 7 | :100060007F1400242A7F2A120062640813230036BA 8 | :100070004955225000000503000000001C224100E9 9 | :10008000000041221C000014083E08140008083E2D 10 | :100090000808000000A06000000808080808000028 11 | :1000A00060600000002010080402003E5149453EF7 12 | :1000B0000000427F40000042615149460021414515 13 | :1000C0004B31001814127F10002745454539003C7C 14 | :1000D0004A4949300001710905030036494949364A 15 | :1000E00000064949291E0000363600000000563639 16 | :1000F000000000081422410000141414141400001D 17 | :100100004122140800020151090600324959513EAA 18 | :10011000007C1211127C007F49494936003E414162 19 | :100120004122007F4141221C007F49494941007F13 20 | :1001300009090901003E4149497A007F0808087F02 21 | :100140000000417F4100002040413F01007F081432 22 | :100150002241007F40404040007F020C027F007F30 23 | :100160000408107F003E4141413E007F0909090615 24 | :10017000003E4151215E007F091929460046494948 25 | :1001800049310001017F0101003F4040403F001F15 26 | :100190002040201F003F4038403F00631408146394 27 | :1001A00000070870080700615149454300007F417E 28 | :1001B0004100000204081020000041417F000004BB 29 | :1001C00002010204004040404040000001020400DF 30 | :1001D000002054545478007F484444380038444444 31 | :1001E000442000384444487F0038545454180008D0 32 | :1001F0007E0901020018A4A4A47C007F08040478EE 33 | :100200000000447D4000004080847D00007F102875 34 | :1002100044000000417F4000007C04180478007C0A 35 | :100220000804047800384444443800FC242424188A 36 | :100230000018242418FC007C0804040800485454C6 37 | :10024000542000043F444020003C4040207C001CDF 38 | :100250002040201C003C4030403C004428102844F2 39 | :10026000001CA0A0A07C004464544C44000836410B 40 | :1002700041000000007F00000000414136080008F6 41 | :1002800004081008506C65617365207265636861CD 42 | :1002900072676520210021212120426174746572FA 43 | :1002A0007920656D70747920212121000000000003 44 | :1002B0003600C8A1A81FDA028D147374617274200D 45 | :1002C000616761696E202100436865636B20534458 46 | :1002D0002D4361726420616E640021212120202061 47 | :1002E00020204552524F5220202020202121210041 48 | :1002F0002D2D2054696E79204D503320506C61793A 49 | :100300006572202D2D000000000037000000000065 50 | :100310003800020202020202020202020102040882 51 | :10032000102020041008010200000400000000005A 52 | :100330005C0B070C11241FBECFE5D2E0DEBFCDBFA2 53 | :1003400010E0A0E6B0E0E6E9F9E102C005900D9208 54 | :10035000AA3DB107D9F721E0AAEDB0E001C01D9296 55 | :10036000A939B207E1F711E0C9E9D1E003C021974B 56 | :10037000FE01FBDAC839D107D1F792D700CB40CEC6 57 | :10038000AF92BF92CF92DF92EF92FF920F931F93A3 58 | :10039000CF93DF936C017B018B01040F151FEB01E1 59 | :1003A0005E01AE18BF08C017D10759F06991D60198 60 | :1003B000ED91FC910190F081E02DC6010995892B0A 61 | :1003C00079F7C501DF91CF911F910F91FF90EF90C9 62 | :1003D000DF90CF90BF90AF90089520913C01309175 63 | :1003E0003D012817390771F490913A0180913B0142 64 | :1003F000981741F0E0913A01F0E0E251FF4F80811F 65 | :1004000090E008958FEF9FEF089508951F93CF9385 66 | :10041000DF93DC015C968D919C915D97009739F498 67 | :1004200021E030E013963C932E9312973BC05196F7 68 | :10043000ED91FC91529750962C915097322F309518 69 | :100440001FB75E964C915E97742F727041FD609558 70 | :10045000F8944081772311F0422B01C0432340835D 71 | :10046000EC012197F1F748E0508160FF02C0522B68 72 | :1004700001C053235083EC012197F1F76695415059 73 | :1004800099F78081772319F08323808302C0282B7A 74 | :1004900020831FBF5C968D919C915D970197F1F72A 75 | :1004A00081E090E0DF91CF911F91089520913C0170 76 | :1004B00030913D012817390769F480913B01209163 77 | :1004C0003A0190E0805C9F4F821B910960E470E0EC 78 | :1004D00017DA089580E090E0089520913C01309172 79 | :1004E0003D0128173907B9F490913A0180913B01F9 80 | :1004F000981789F0E0913A01F0E0E251FF4F8081D6 81 | :1005000020913A0130E02F5F3F4F2F733327209324 82 | :100510003A0190E008958FEF9FEF0895089580E0ED 83 | :1005200090E0089585B7877E806185BF8AB7806235 84 | :100530008ABF80B58F6080BDF89414BE88E981BD04 85 | :1005400082E481BDA89585B7806285BF789488953F 86 | :1005500085B78F7D85BF80B5807F80BD80B5816088 87 | :1005600080BD0895E091EC00E13148F4EF5FE09345 88 | :10057000EC00F0E0E652FF4F808381E0089580E0D8 89 | :1005800008951092EC00880F8093DA000895C09AC5 90 | :10059000C29ABA9AB89A8FEF8FB98AE28DB980EF72 91 | :1005A0008EB9089580B58E7F80BD86B1806986B989 92 | :1005B0008CE087B962E070E080E090E04ED485B7CF 93 | :1005C000877E886085BF85B7806285BF889585B73F 94 | :1005D0008F7D85BF3699FECF24B135B140E050E024 95 | :1005E000379880B5816080BD64EB7BE281E190E06B 96 | :1005F0009AD920388CE038074105510568F0DA01B6 97 | :10060000C901853020E19207A105B10548F084E0D9 98 | :1006100090E1A0E0B0E004C080E89CE0A0E0B0E0A1 99 | :10062000BC01CD0160587C408109910929E030E08E 100 | :1006300040E050E078D9822F08959DD9C29AC29B9C 101 | :10064000FECF8DE08A95F1F70000C0988AE08A9588 102 | :10065000F1F700C0C298C09A779905C083E08093F3 103 | :10066000350180E0089581E008958EB98BE29DE028 104 | :100670009A95F1F700008DB9B29BFECF9AE09A955A 105 | :10068000F1F700C08DB9769BF2CF8DE08A95F1F736 106 | :1006900000008FB19FEF9FB9B89A0895CF92DF9273 107 | :1006A000EF92FF920F931F93CF93DF930091EC0093 108 | :1006B00081E0809335018091DA0080FD03C083E002 109 | :1006C00080933501BBDF882309F452C00F5F102FE0 110 | :1006D000CAEDD0E0DD24DA94CC24C39480913501B6 111 | :1006E00083709E012F5F3F4F7901882369F1C29883 112 | :1006F00088818FB980EFB9DFB8988EEFB6DF90911F 113 | :10070000350180FF0BC0892F817090FF05C081E00B 114 | :100710008093350180E02CC092E00FC0892F857056 115 | :10072000843071F48091DA0081608093DA00C092A5 116 | :10073000350184DF811115C09AE09093350118C00E 117 | :100740009E7F909335010BC0B89880EF8EDF888331 118 | :10075000113011F4DFB801C01FB88EEF86DFE7015A 119 | :1007600003C0102FCAEDD0E0115009F0B7CF81E0DF 120 | :100770001092EC00882391F0C098C29AB29BFECFF1 121 | :100780003AE03A95F1F700C0C09A8DE08A95F1F70A 122 | :100790000000759903C084E080933501DF91CF910B 123 | :1007A0001F910F91FF90EF90DF90CF900895CF931E 124 | :1007B000C82F8A3018F482EB90E09DD26C2F70E045 125 | :1007C00080E090E04AE0CF9157C2E0913001F09193 126 | :1007D00031010994E0912E01F0912F010994E091EB 127 | :1007E0003201F091330180913401099580E4F2CF18 128 | :1007F000E0913201F091330180913401099580E05C 129 | :10080000E9CF1F93CF93DF93C62F142FD42FD77028 130 | :1008100080916300D82BECDF8D2FDCDF8C2F82954D 131 | :100820008F708061D7DF8C2F8F70D4DFCEDFC093C5 132 | :100830008B0110936401DF91CF911F9108958F92E6 133 | :100840009F92AF92BF92CF92DF92EF92FF920F935F 134 | :100850001F93CF93DF93E0913801F09139013097E6 135 | :1008600009F468C06D3009F465C0162FEC01A3804F 136 | :100870006A3019F46A2D9FD25DC0828020918B016D 137 | :1008800030E0E82CF12C80E890E08E199F09821767 138 | :1008900093071CF46A2DCE018ED2212F30E0E09117 139 | :1008A0003801F091390144818A2D90E0B70103D8D5 140 | :1008B000BC01C901841B9109FED78C019A2C8FDFE2 141 | :1008C000F8018E2F801B8815B8F46F018FEFC81ABE 142 | :1008D000D80AA0913801B09139018D919C91E80F0F 143 | :1008E000F91FB4908B2D76DF811104C06EDF77DFA6 144 | :1008F0008B2D70DFF601E5CF0E0D1F1D66DF81E049 145 | :10090000A81206C080918B01880D80938B010FC0C7 146 | :100910004091640181E04F5F891518F460918B016B 147 | :1009200004C04A1960918B01680DCE016ADF9A9468 148 | :100930009110C5CF81E090E0DF91CF911F910F9191 149 | :10094000FF90EF90DF90CF90BF90AF909F908F90EF 150 | :100950000895CF93DF93EC01FE016491662329F0A3 151 | :100960008CE891E06CDF2196F7CFDF91CF9108956D 152 | :10097000D6D140E060E08CE891E043DF80EF92E088 153 | :10098000E8DF41E060E08CE891E03BDF83E990E064 154 | :10099000B2D1809161000BDF81EA90E0ACD180910F 155 | :1009A000600105DF42E060E08CE891E02ADF86EA42 156 | :1009B00090E0A1D180916200FADE81EA90E09BD1C3 157 | :1009C00080916301F4DE43E060E08CE891E019DFA0 158 | :1009D00080915F01882321F084EB90E08CD106C0E8 159 | :1009E0008EEB90E088D180916000E1DE43E06EE420 160 | :1009F0008CE891E006DF87EC90E07DD18091ED00FE 161 | :100A0000843618F482EB90E076D18091ED008A3044 162 | :100A100018F482EB90E06FD16091ED0070E080E01F 163 | :100A200090E04AE029D18CEC90E065D165C1BADD57 164 | :100A30008093ED0081112EC082E3B4D170D140E0EB 165 | :100A400060E08CE891E0DDDE86E992E082DF42E062 166 | :100A50006FE08CE891E0D5DE84E892E07ADF4CD15B 167 | :100A600080915F01811104C060E070E08EE02ED3C0 168 | :100A700099DD8A3010F456DDFBCF8FE793D192DDFC 169 | :100A80008093ED0080915F01811104C060E070E00F 170 | :100A90008DE01CD36DDF88E592E090935E0180933A 171 | :100AA0005D0108956091610070E08EE40FD360E015 172 | :100AB00070E0CB0164D3811102C08FEF08C01092A7 173 | :100AC0008901809185018B30C1F7809187018093E6 174 | :100AD00063016091610070E0762F6627809162006B 175 | :100AE000682B8FE0F3D210925F0142CF1F920F92DA 176 | :100AF0000FB60F9211242F933F934F935F936F93F1 177 | :100B00007F938F939F93AF93BF93EF93FF93E09166 178 | :100B10003C01F0913D01309709F451C0968DA685B6 179 | :100B2000B785858591FF04C09C91892329F447C02E 180 | :100B30009C91892309F043C0A389B4899C9185893C 181 | :100B4000809589238C93868997890197F1F7608D29 182 | :100B5000718DA685B785558538E020E0CB010197DA 183 | :100B6000F1F7822F90E095958795282F4C9145239A 184 | :100B700009F02068315091F7868D81FD2095809194 185 | :100B80003B0190E001968F73992730913A01381715 186 | :100B900049F0A0913B01B0E0A251BF4F2C9380934C 187 | :100BA0003B0103C0868D8160868F828D938D019776 188 | :100BB000F1F7A389B4899C918589892B8C93FF9146 189 | :100BC000EF91BF91AF919F918F917F916F915F91C5 190 | :100BD0004F913F912F910F900FBE0F901F9018953E 191 | :100BE00018951F920F920FB60F9211248F930FB684 192 | :100BF000F894A89581B5886181BD11BC0FBE8F9115 193 | :100C00000F900FBE0F901F9018953FB7F8948091EA 194 | :100C1000910190919201A0919301B091940122B71A 195 | :100C200008B601FE05C02F3F19F00196A11DB11DA8 196 | :100C30003FBFBA2FA92F982F8827820F911DA11D82 197 | :100C4000B11DBC01CD0143E0660F771F881F991FBE 198 | :100C50004A95D1F70895009761F0FC0101900020BA 199 | :100C6000E9F73197AF01481B590BBC018CE891E0C3 200 | :100C700087CB80E090E008958F929F92AF92BF92D1 201 | :100C80000F931F93CF93DF93CDB7DEB7A1970FB626 202 | :100C9000F894DEBF0FBECDBF19A2423008F44AE07F 203 | :100CA0008E010F5D1F4F842E912CA12CB12CA5011C 204 | :100CB000940139D6E62FB901CA0101501109EA3071 205 | :100CC00014F4E05D01C0E95CD801EC93232B242BE4 206 | :100CD000252B69F7C801BFDFA1960FB6F894DEBFD8 207 | :100CE0000FBECDBFDF91CF911F910F91BF90AF90FD 208 | :100CF0009F908F900895AFCFCF93C091640080E212 209 | :100D0000C827C093640074DD8C2F64DD5EDD909194 210 | :100D1000630084E0892780936300CF9108951F9337 211 | :100D2000CF93DF93C0E010E84C2F60E08CE891E0B7 212 | :100D300068DD80918B01D12FD81B10938B014FDD83 213 | :100D400080E048DD811104C040DD49DD80E042DD06 214 | :100D5000D150B1F73ADDCF5FC43031F740E060E009 215 | :100D60008CE891E0DF91CF911F914BCD80B58E7FC4 216 | :100D700080BD86B1806986B917B885B7877E8860DF 217 | :100D800085BF85B7806285BF889585B78F7D85BF14 218 | :100D90003699FECF24B135B1379890B5916090BDAA 219 | :100DA000C9010895CF93C82F23DD81E813DD8C2F6F 220 | :100DB00011DDCF910ACDFC0190916401960F492F6E 221 | :100DC00050E024E030E0261B31092417350714F4E5 222 | :100DD00094E0961B909364014091640160E0CF0120 223 | :100DE00010CDCF93DF9390E0FC01E45EFC4F2491A3 224 | :100DF000FC01EE5EFC4F8491882361F190E0880F46 225 | :100E0000991FFC01EA5FFC4FC591D491FC01E45F9E 226 | :100E1000FC4FA591B491611109C09FB7F8948881E6 227 | :100E2000209582238883EC912E230BC0623061F4DD 228 | :100E30009FB7F8948881322F309583238883EC9173 229 | :100E40002E2B2C939FBF06C08FB7F894E8812E2BD2 230 | :100E500028838FBFDF91CF9108958F929F92AF9299 231 | :100E6000BF92CF92DF92EF92FF926B017C01CDDEB9 232 | :100E70004B015C01C114D104E104F104E9F0C5DEC9 233 | :100E8000DC01CB0188199909AA09BB09883E934066 234 | :100E9000A105B10578F321E0C21AD108E108F108F3 235 | :100EA00088EE880E83E0981EA11CB11CC114D104E9 236 | :100EB000E104F10421F7DECFFF90EF90DF90CF90B7 237 | :100EC000BF90AF909F908F900895CF9380916501D0 238 | :100ED00090916601DC01ED91FC910084F185E02D9B 239 | :100EE0000995892B09F4B7C060E070E0CB01B5DF4C 240 | :100EF000C09183018091650190916601DC01ED91C3 241 | :100F0000FC910284F385E02DC11108C009958093FE 242 | :100F10006F018E37D9F68091830199C00995EC2F26 243 | :100F2000F0E0EB59FE4F8287809183018230A1F07F 244 | :100F30008930C1F0813009F08AC0909170019F3FE3 245 | :100F400009F485C01092830181E08093850110929D 246 | :100F5000880110928701B0C090917101963009F418 247 | :100F600076C0F0CF809178018F3E61F7E0E7F1E045 248 | :100F700086E791E020E030E04191240F311D8E178B 249 | :100F80009F07D1F78091760190E0982F88274091B4 250 | :100F90007701840F911D31952195310982179307AF 251 | :100FA00089F610928301E0917201E13409F44CC09A 252 | :100FB000E09386018091740190E0982F882720911A 253 | :100FC0007501820F911D90938801809387014E2FA8 254 | :100FD00050E0FA01FA97E631F10568F5E15FFF4F5D 255 | :100FE000099485E022C080FF02C089E01EC081FF15 256 | :100FF00002C084E01AC083709927892B09F462C06B 257 | :101000008AE013C080FF02C087E00FC081FF5AC092 258 | :1010100082E00BC080FF02C088E007C081FF52C0A1 259 | :1010200083E003C086E001C08BE08093850181E00E 260 | :101030008093890147C081E08093850110928801E7 261 | :10104000109287018093890110928A013BC08F5FC3 262 | :10105000809383013BCF80918A01882399F12FB738 263 | :10106000F8948091950190919601A0919701B0918B 264 | :1010700098012FBF4091670150916801609169010B 265 | :1010800070916A01841B950BA60BB70B40916B0105 266 | :1010900050916C0160916D0170916E0184179507FC 267 | :1010A000A607B70778F0109283011092850110927D 268 | :1010B00088011092870181E08093890110928A0152 269 | :1010C00080E002C080918901CF91089580937C01D6 270 | :1010D00070937E0160937F01EAE7F1E020E831E060 271 | :1010E00080E090E04191840F911D2E173F07D1F7CA 272 | :1010F00091958195910990938001809381018091D0 273 | :101100007D01882351F080918A01882331F060E0CD 274 | :1011100070E0CB01A2DED9DEF6CF8091650190911F 275 | :101120006601DC01ED91FC910280F381E02D4AE043 276 | :1011300050E069E771E009952FB7F8948091950127 277 | :1011400090919601A0919701B09198012FBF809343 278 | :10115000670190936801A0936901B0936A0180913F 279 | :101160007D0191E0811101C090E090938A0181118D 280 | :1011700005C06AE070E080E090E06FCE08958F9245 281 | :101180009F92AF92BF92CF92DF92EF92FF926B014C 282 | :101190007C018FB7F8948090950190909601A09073 283 | :1011A0009701B09098018FBFC114D104E104F104FC 284 | :1011B00041F4C0906B01D0906C01E0906D01F09013 285 | :1011C0006E0183DE811119C09FB7F894409195019B 286 | :1011D0005091960160919701709198019FBF4819B5 287 | :1011E00059096A097B09C416D506E606F70628F0F0 288 | :1011F00060E070E0CB0131DEE4CFFF90EF90DF9054 289 | :10120000CF90BF90AF909F908F9008951F920F92B4 290 | :101210000FB60F9211242F933F938F939F93AF9309 291 | :10122000BF938091950190919601A0919701B09103 292 | :1012300098013091900126E0230F2D3720F402967B 293 | :10124000A11DB11D05C029E8230F0396A11DB11DE5 294 | :10125000209390018093950190939601A09397011C 295 | :10126000B09398018091910190919201A091930186 296 | :10127000B09194010196A11DB11D809391019093AD 297 | :101280009201A0939301B0939401BF91AF919F916C 298 | :101290008F913F912F910F900FBE0F901F90189537 299 | :1012A00078948AB582608ABD8AB581608ABD83B729 300 | :1012B000826083BF83B7816083BF89B7826089BF43 301 | :1012C00080B7826080BF80B7816080BF329A319AD8 302 | :1012D0003098379A8CB580648CBD14BE88E981BD86 303 | :1012E00082E481BDA89586E086B9339A789480B56A 304 | :1012F000816080BD60E089E074DD60E086E071DDE2 305 | :10130000E0913601F0913701099572DAC2EBD2E033 306 | :101310004AEBE42E42E0F42EFE011491812F5ADABA 307 | :10132000811104C052DA64DA812F54DA2196EC1666 308 | :10133000FD0691F74ADA8DE890E0909339018093A9 309 | :1013400038018FE72FDDEBDC53DA8FEA43DA3DDA41 310 | :101350009091630084E0892780936300E0DC40E0A3 311 | :1013600060E08CE891E04DDA80EF92E0F2DA41E063 312 | :1013700060E08CE891E045DA8EEC90E0BCDCBCDC0F 313 | :101380001092590110925801109257011092560173 314 | :1013900010925501109254018DEC90E090935B01F6 315 | :1013A00080935A0130914A01353020F545E550E0EF 316 | :1013B00050935501409354014BEC50E0509357012A 317 | :1013C0004093560140E950E0509359014093580131 318 | :1013D0002BB720622BBF45E350E05093520140935E 319 | :1013E000510121E001C0220F3A95EAF72093530101 320 | :1013F0000197F1F78091580190915901892B49F19A 321 | :10140000E0913C01F0913D0121E0EE33F20709F15A 322 | :10141000309739F0A389B4899C9185898095892377 323 | :101420008C9380915C018E7F80935C0110923B01D4 324 | :1014300010923A018EE391E090933D0180933C013C 325 | :10144000E0915101F0915201908180915301892BDB 326 | :1014500080838EE391E0909366018093650181E043 327 | :1014600080937D0160E070E08CE030DE60ED77E03D 328 | :1014700080E090E084DE68EC70E080E090E0EDDCFD 329 | :101480001092890180918501843021F1893011F118 330 | :1014900046DC40E060E08CE891E0B3D98AED92E070 331 | :1014A00058DA42E060E08CE891E0ABD988EC92E059 332 | :1014B00050DA43E060E08CE891E0A3D98AEB92E057 333 | :1014C00048DA1ADC82E36EDC60E070E08AE0FEDD80 334 | :1014D00029D8FECFACDA84EF91E0A0E0B0E08093B1 335 | :1014E0006B0190936C01A0936D01B0936E016091BC 336 | :1014F000600070E086E0EADD60E070E08FE4E6DD49 337 | :1015000060E070E0CB013BDE882331F0109289016E 338 | :10151000809185018B3011F08FEF02C0809187019F 339 | :1015200080936001BFDA33E0E32EC2E2D0E0DD2435 340 | :10153000D39400E010E0FF24F394C7DC8823B1F0DB 341 | :101540001092890180918501853081F4609162005B 342 | :1015500080916301681750F46F5F6093620080911F 343 | :10156000610070E0782B8FE0B1DD02DA80B58E7F0C 344 | :1015700080BD86B1806986B9E7B885B7877E886007 345 | :1015800085BF28E080E090E035B7306235BF8895B0 346 | :1015900035B73F7D35BF3699FECF44B155B1840F85 347 | :1015A000951F215089F7379820B5216020BD23E091 348 | :1015B000969587952A95E1F7209161013091620116 349 | :1015C000A901485051098417950728F0285F3F4F1B 350 | :1015D0002817390720F4909362018093610180916C 351 | :1015E000610190916201BE0177D180916000861700 352 | :1015F00031F060936000772786E068DDB9D9B6DB0B 353 | :101600005C0188EEA81683E0B80670F080915D0159 354 | :1016100090915E01019790935E0180935D01892B0B 355 | :1016200009F043C004DA41C0C50183509340879755 356 | :1016300078F48091610090916001891720F48F5FA8 357 | :101640008093610002C0F0926100F09262002ADA99 358 | :10165000C50185519240879768F48091620090910E 359 | :101660006301891720F48F5F8093620002C0F092BB 360 | :10167000620018DAE5EBAE1AE2E0BE0AF7E2AF1656 361 | :10168000B10470F480915F0160E070E08D2580937B 362 | :101690005F01882311F08EE001C08DE017DD68D96D 363 | :1016A00065DB883E9340E0F3B1CF3CD701151105CF 364 | :1016B00009F443CFA5D441CF10928F0110928E012F 365 | :1016C00083E790E090938D0180938C018CE380936D 366 | :1016D000340187EC92E0909337018093360181ECDE 367 | :1016E00092E0909333018093320182EB92E09093E9 368 | :1016F0002F0180932E018EE493E09093310180932B 369 | :101700003001109241011092400188EE93E0A0E078 370 | :10171000B0E08093420190934301A0934401B093C1 371 | :1017200045018FE790E090933F0180933E01109236 372 | :1017300055011092540110925701109256011092C7 373 | :1017400059011092580110925B0110925A01609158 374 | :101750005C016E7F6D7F60935C016695617081E0D6 375 | :10176000682771D061E081E03CDBEDE1F3E0E491DA 376 | :10177000E0934E01E3E1F3E0E491F0E0EE0FFF1FB0 377 | :10178000E45FFC4F859194919093500180934F01B9 378 | :1017900060E084E026DB80915C0181FD03C061E0B4 379 | :1017A00084E051D084E080934A01E0E2F3E0E491E8 380 | :1017B000E0934B01E6E1F3E0E491F0E0EE0FFF1F70 381 | :1017C000E455FD4F8591949190934D0180934C0188 382 | :1017D00084EF91E0A0E0B0E080936B0190936C0106 383 | :1017E000A0936D01B0936E018AE0E5E6F0E0A9E711 384 | :1017F000B1E001900D928A95E1F71092830182E0A9 385 | :10180000809384011092890110928A0108958FE7D4 386 | :1018100090E090933F0180933E0180913C01909134 387 | :101820003D018E53914071F4E0915101F0915201CC 388 | :1018300090818091530180958923808310923D018E 389 | :1018400010923C01089590E0FC01EA5DFC4F249168 390 | :10185000FC01E45EFC4F3491FC01EE5EFC4FE49130 391 | :10186000EE2341F1222399F0223071F028F4213047 392 | :1018700071F48AB58F770AC0233011F0243039F41F 393 | :101880008CB58F7D8CBD03C08AB58F7D8ABDF0E09D 394 | :10189000EE0FFF1FE45FFC4FA591B4919FB7F89442 395 | :1018A000611104C08C913095382302C0EC913E2B1D 396 | :1018B0003C939FBF08950024552704C0080E591F6C 397 | :1018C000880F991F009729F076956795B8F37105F1 398 | :1018D000B9F7802D952F0895AA1BBB1B51E107C0B6 399 | :1018E000AA1FBB1FA617B70710F0A61BB70B881FB0 400 | :1018F000991F5A95A9F780959095BC01CD0108953F 401 | :1019000097FB072E16F4009406D077FD08D0E4DF8D 402 | :1019100007FC05D03EF4909581959F4F08957095F2 403 | :1019200061957F4F0895A1E21A2EAA1BBB1BFD01F2 404 | :101930000DC0AA1FBB1FEE1FFF1FA217B307E407AE 405 | :10194000F50720F0A21BB30BE40BF50B661F771F06 406 | :10195000881F991F1A9469F76095709580959095E6 407 | :101960009B01AC01BD01CF010895EE0FFF1F059053 408 | :10197000F491E02D099481E090E0F89400C011E02A 409 | :10198000C9E9D1E003C0FE01F0DF2196CA39D107D1 410 | :06199000D1F7F894FFCF2F 411 | :10199600140101B0407EFF06000100000000EF00C8 412 | :1019A6000000001F04C0018F028E02000000000626 413 | :1019B60002C0018F02050256026D02ED014A0006C1 414 | :1019C60001207E466F6C6465723A2020202020201C 415 | :1019D60000206F66200046696C653A202020202092 416 | :1019E600202020003C205061757365203E00566F14 417 | :1019F6006C756D653A20004261743A002500737477 418 | :0A1A0600617274696E672E2E2E00C7 419 | :00000001FF 420 | -------------------------------------------------------------------------------- /software/binaries/tnympneo.hex: -------------------------------------------------------------------------------- 1 | :100000008FC1B3C133C7B1C1B0C1C2CCAEC1ADC1E4 2 | :1000100094C4ABC1AAC1A9C17CC4A7C1A6C13FCA2F 3 | :100020004CCA5ECA1FCA5CCA22CA55CA64CA58CA28 4 | :1000300057CA56CA55CA54CA53CA52CA51CA5BCAC9 5 | :100040004FCA4ECA4DCA4CCA4BCA506C65617365E3 6 | :10005000207265636861726765202100212121207B 7 | :100060004261747465727920656D70747920212104 8 | :100070002100737461727420616761696E202100D0 9 | :10008000436865636B2053442D4361726420616E45 10 | :10009000640021212120202020204552524F52204F 11 | :1000A00020202020212121002D2D2054696E79202F 12 | :1000B0004D503320506C61796572202D2D00000069 13 | :1000C000000000000000002F0000000007000700F3 14 | :1000D00000147F147F1400242A7F2A12006264080F 15 | :1000E000132300364955225000000503000000008C 16 | :1000F0001C224100000041221C000014083E08148C 17 | :100100000008083E0808000000A060000008080879 18 | :100110000808000060600000002010080402003E93 19 | :100120005149453E0000427F40000042615149462E 20 | :10013000002141454B31001814127F10002745451E 21 | :100140004539003C4A494930000171090503003630 22 | :100150004949493600064949291E00003636000043 23 | :100160000000563600000008142241000014141448 24 | :100170001414000041221408000201510906003243 25 | :100180004959513E007C1211127C007F4949493681 26 | :10019000003E41414122007F4141221C007F4949EC 27 | :1001A0004941007F09090901003E4149497A007F20 28 | :1001B0000808087F0000417F4100002040413F01C6 29 | :1001C000007F08142241007F40404040007F020C25 30 | :1001D000027F007F0408107F003E4141413E007FC6 31 | :1001E00009090906003E4151215E007F091929468F 32 | :1001F0000046494949310001017F0101003F40406B 33 | :10020000403F001F2040201F003F4038403F006318 34 | :10021000140814630007087008070061514945433A 35 | :1002200000007F414100000204081020000041410D 36 | :100230007F000004020102040040404040400000F2 37 | :1002400001020400002054545478007F484444388C 38 | :1002500000384444442000384444487F0038545413 39 | :10026000541800087E0901020018A4A4A47C007F91 40 | :10027000080404780000447D4000004080847D0034 41 | :10028000007F102844000000417F4000007C0418DB 42 | :100290000478007C0804047800384444443800FCA6 43 | :1002A000242424180018242418FC007C08040408C2 44 | :1002B00000485454542000043F444020003C404037 45 | :1002C000207C001C2040201C003C4030403C00446E 46 | :1002D00028102844001CA0A0A07C004464544C4476 47 | :1002E0000008364141000000007F0000000041414D 48 | :1002F0003608000804081008C8A1A81FDA028D14E7 49 | :1003000001020408102002020202020200000000A2 50 | :1003100036000000000038000000000037009E0496 51 | :1003200011241FBECFE5D2E0DEBFCDBF10E0A0E6B6 52 | :10033000B0E0ECE7FCE102C005900D92A43DB107EE 53 | :10034000D9F721E0A4EDB0E001C01D92A439B207B5 54 | :10035000E1F711E0C0E9D1E003C02197FE0186DC9E 55 | :10036000CF38D107D1F7FFDA87CC4ACE86E791E0C4 56 | :1003700065C7682F86E791E03AD721E0892B09F419 57 | :1003800020E0822F0895682F86E791E02AC786E74C 58 | :1003900091E026C7CF93DF93EC01FE0164916623C1 59 | :1003A00029F086E191E071DA2196F7CFDF91CF91C4 60 | :1003B0000895CF93C82F8A3028F465E970E086E16C 61 | :1003C00091E062DA4AE050E06C2F86E191E0CF9153 62 | :1003D000C4CA6FE670E086E191E056DA80911301BD 63 | :1003E000843628F465E970E086E191E04DDA809189 64 | :1003F00013018A3028F465E970E086E191E044DA7F 65 | :100400004AE050E06091130186E191E0A6DA64E7EA 66 | :1004100070E086E191E038CA86E191E0C5D640E01F 67 | :1004200060E086E191E0E4D588EA90E0B3DF41E066 68 | :1004300060E086E191E0DCD566E770E086E191E07E 69 | :1004400023DA80916100B5DF64E870E086E191E035 70 | :100450001BDA80911401ADDF42E060E086E191E0BB 71 | :10046000C7D569E870E086E191E00EDA809160001E 72 | :10047000A0DF64E870E086E191E006DA8091150182 73 | :1004800098DF43E060E086E191E0B2D5809112010F 74 | :10049000882331F067E970E086E191E0F5D908C082 75 | :1004A00061EA70E086E191E0EFD98091620081DF3E 76 | :1004B00043E06EE486E191E09BD58BDF86E191E03D 77 | :1004C00083C66091610070E084ED90E075D98093FF 78 | :1004D0001501409160006091610084ED90E068D961 79 | :1004E0001092120199CF90B59E7F90BD96B1906900 80 | :1004F00096B987FD8058877087B985B7877E8860F1 81 | :1005000085BF85B7806285BF889585B78F7D85BF9C 82 | :100510003699FECF24B135B1379890B5916090BD32 83 | :10052000C901089590B59E7F90BD96B1906996B926 84 | :1005300087FD8058877087B985B7877E886085BFBB 85 | :1005400028E080E090E035B7306235BF889535B758 86 | :100550003F7D35BF3699FECF44B155B1840F951F0D 87 | :10056000215089F7379820B5216020BD23E096956A 88 | :1005700087952A95E1F7089580B58E7F80BD86B175 89 | :10058000806986B98CE087B962E070E080E090E035 90 | :100590007CDA85B7877E886085BF85B7806285BF36 91 | :1005A000889585B78F7D85BF3699FECF24B135B14B 92 | :1005B00040E050E0379880B5816080BD64EB7BE21D 93 | :1005C00081E190E031DB20388CE0380741055105AE 94 | :1005D00068F0DA01C901853020E19207A105B10573 95 | :1005E00048F084E090E1A0E0B0E004C080E89CE046 96 | :1005F000A0E0B0E0BC01CD0160587C4081099109C8 97 | :1006000029E030E040E050E00FDB822F089514BE77 98 | :1006100088E981BD82E481BDA895089585B7877E6C 99 | :10062000806185BF8AB780628ABF80B58F6080BDD8 100 | :10063000F894EDDF85B7806285BF7894889585B79B 101 | :100640008F7D85BF80B5807F80BD80B5816080BD96 102 | :10065000089592DF80931301811134C062E386E133 103 | :1006600091E0BAD586E191E09FD540E060E086E177 104 | :1006700091E0BED48CE590E08DDE42E06FE086E153 105 | :1006800091E0B6D48AE490E085DE86E191E09CD5E5 106 | :1006900080911201811103C084ED90E087D86CDF56 107 | :1006A0008A3010F4BBDFFBCF6FE786E191E094D591 108 | :1006B00063DF8093130180911201811103C084EDE7 109 | :1006C00090E072D8A9DE88E592E0909311018093C2 110 | :1006D00010010895CF93DF9384ED90E034D7882301 111 | :1006E000C1F084ED90E091D6C82F84ED90E091D6D2 112 | :1006F000C53079F44091600080911501481748F4A5 113 | :100700004F5F409360006091610084ED90E050D8AD 114 | :1007100083DE83E807DF20910E0130910F01A901EC 115 | :10072000485051098417950728F0285F3F4F281734 116 | :10073000390720F490930F0180930E0180910E01F0 117 | :1007400090910F0162E270E048DA809162008617B2 118 | :1007500031F06093620084ED90E0F1D75DDE80E8D7 119 | :10076000C2DEEC01883E23E0920770F08091100118 120 | :100770009091110101979093110180931001892BA1 121 | :1007800009F041C066DF3FC083509340879778F4FB 122 | :100790008091610090911401891710F48F5F01C05E 123 | :1007A00081E08093610081E0809360008ADECE0169 124 | :1007B00085519240879760F4809160009091150177 125 | :1007C000891710F48F5F01C081E08093600079DEAB 126 | :1007D000C55BD240A79788F48091120191E0811106 127 | :1007E00090E090931201811104C084ED90E0DED777 128 | :1007F00003C084ED90E0D8D70FDE80E874DE883E39 129 | :100800009340D8F3B3CFDF91CF9108CF00DF86E0DC 130 | :1008100086B9339A789480B5816080BD60E083E8C2 131 | :1008200073D960E080E870D986E191E0D8D366EBB7 132 | :1008300070E086E191E0D7D36FE786E191E0CCD418 133 | :1008400086E191E0B1D486E191E0C8D486E191E0FF 134 | :10085000ADD486E191E0A8D440E060E086E191E08B 135 | :10086000C7D388EA90E096DD41E060E086E191E060 136 | :10087000BFD36AEA70E086E191E006D886E191E0B4 137 | :10088000A3D460E875E28AEF90E0AAD121E041E0CC 138 | :100890006AEF70E084ED90E05AD7811127C086E1BD 139 | :1008A00091E082D440E060E086E191E0A1D382E96A 140 | :1008B00090E070DD42E060E086E191E099D380E86D 141 | :1008C00090E068DD43E060E086E191E091D382E76B 142 | :1008D00090E060DD86E191E077D462E386E191E02B 143 | :1008E0007BD484ED90E02FD799DEFECFB2DE44EFCB 144 | :1008F00051E060E070E084ED90E071D560916200BD 145 | :1009000084ED90E01CD784ED90E06FD780931401C4 146 | :10091000D8CD1F920F920FB60F9211248F930FB65E 147 | :10092000F894A89581B5886181BD11BC0FBE8F91E7 148 | :100930000F900FBE0F901F9018951895EF92FF9291 149 | :100940000F931F93CF93DF9386EBE82E81E0F82E71 150 | :1009500009EB11E023EC31E047EC51E06CE386E178 151 | :1009600091E0F4D2EAEFF0E01382128288EE93E095 152 | :10097000A0E0B0E084839583A683B78380EC90E009 153 | :100980009183808384E0848781E08587138A128A3B 154 | :10099000C4EDD0E084EF91E0A0E0B0E08E839F83CF 155 | :1009A000A887B9878AE0E5E6F0E0A8EEB0E001901C 156 | :1009B0000D928A95E1F71E8E82E08F8F1CA21DA2F8 157 | :1009C000DF91CF911F910F91FF90EF90089580E0FC 158 | :1009D00090E00895089520911E0180911F018217D3 159 | :1009E00069F030E0F901E05EFE4F80812F5F3F4FFC 160 | :1009F0002F73332720931E0190E008958FEF9FEF10 161 | :100A00000895CF93DF93DC01809167019091680195 162 | :100A1000892B71F11C968C911C97863018F0E0E0C0 163 | :100A2000F0E002C0E5E3F0E05FB7F89410926801EF 164 | :100A3000109267013097D9F01C968C911C978630E4 165 | :100A400018F0C0E0D0E002C0CBE5D0E088818F7D17 166 | :100A50008883408121E030E0C9011C960C9002C0DF 167 | :100A6000880F991F0A94E2F78095842380835FBFE3 168 | :100A7000DF91CF910895CF93DF93EC0180916701CF 169 | :100A800090916801009709F0BCDF60E08C853CD84C 170 | :100A90008C8590E0FC01E050FD4FE491E0931D0156 171 | :100AA000FC01EA5FFC4FE491F0E0EE0FFF1FE45F12 172 | :100AB000FC4F859194919F878E878D8590E0FC01F6 173 | :100AC000E050FD4F249120931C01FC01EA5FFC4F94 174 | :100AD000E491F0E0EE0FFF1FEE5EFC4FA591B491A4 175 | :100AE000B0931B01A0931A01109719F0EC91E22B1F 176 | :100AF000EC9361E08D8508D886E080BF8C858630D8 177 | :100B000008F052C08FEF8093630110921E01109283 178 | :100B10001F01E881F9810284F385E02DCE0109955A 179 | :100B20008889998981152BE4920739F58DE08093A6 180 | :100B300066018EE48093640186E0809365012FB79F 181 | :100B4000F89435B381E090E00C8402C0880F991FBF 182 | :100B50000A94E2F7832B85BB8C85863018F0E0E0A1 183 | :100B6000F0E002C0EBE5F0E0808180628083D0930A 184 | :100B70006801C09367012FBF17C081302BE4920733 185 | :100B800058F480389542D9F68AE18093660187E26D 186 | :100B9000809364018AE0D1CF82312AE7920731F253 187 | :100BA0008115964961F6C2CFDF91CF9108956038E3 188 | :100BB00025E2720721F06115EBE47E0781F4FC0168 189 | :100BC000208931896217730751F0718B608B2091F6 190 | :100BD0006701309168018217930709F44CCF08959B 191 | :100BE000CF93DF93EC01E3DFCE01DF91CF9143CFD1 192 | :100BF0001092630181E08093610110926001089579 193 | :100C0000E0916701F09168013097C1F00288F389A3 194 | :100C1000E02D309709F0099420911F0130E0A901DF 195 | :100C20004F5F5F4F4F73552790911E01941731F01E 196 | :100C3000F901E05EFE4F808340931F010895EF921B 197 | :100C4000FF920F931F93CF93DF93FFB4E0901D01AA 198 | :100C5000E822209163012F3F21F4E11050C0C8DF4A 199 | :100C600049C0809165018F0D90916201891B60914F 200 | :100C7000640170E090E0A0D7C92FC695C69580E0CA 201 | :100C8000D82F49E0421B042F10E00C171D0708F075 202 | :100C90004C2F542F520F509363018091600190911B 203 | :100CA0006101292FE1100FC04150922F990F4F3F42 204 | :100CB00019F0822B292FF8CF809360019093610166 205 | :100CC0005830C0F01AC0415001C0220F4A95EAF7CF 206 | :100CD00020936101822B80936001583058F090DF9F 207 | :100CE00081E0E81621F00C171D0708F4B8CF8FEF4C 208 | :100CF00080936301F092620102C082DFF4CFDF9142 209 | :100D0000CF911F910F91FF90EF900895CF93DF93B4 210 | :100D1000FC01909163019F3FA1F1A685B7852C91BD 211 | :100D200080911D01822369F13FB529E0291BA22F83 212 | :100D3000B0E080916501830F90916201891B609101 213 | :100D4000640170E090E038D7492F4695469550E011 214 | :100D5000A417B507B0F48091600190916101215012 215 | :100D600018F0892B990FFBCFEF01809360019093CE 216 | :100D700061012093630144DF81E02A893B89232BB1 217 | :100D800009F080E0DF91CF9108959C0180911F01CF 218 | :100D900090E040911E01841B9109805C9F4F60E4AC 219 | :100DA00070E02FD7811104C0C901F894AFDF7894A7 220 | :100DB00090E00895DF92EF92FF920F931F93CF93ED 221 | :100DC000DF938C01F62E80911A0190911B01892BE3 222 | :100DD00009F43FC0DFB6F894CFB58AE0E82E90E082 223 | :100DE000EA94E0911A01F0911B0180911C01EE2020 224 | :100DF00029F1992319F09081892B03C09081809566 225 | :100E000089238083D09166018FB58C1B8D1788F460 226 | :100E10000AB605FE0BC08AB780628ABFD8011E964B 227 | :100E2000ED91FC911F9780810ADFEECFC8016EDF44 228 | :100E3000EBCFCD0F9F2D9170F694D2CF9081892B5F 229 | :100E40008083DFBE8FB58C1B8D1730F4C8015EDF49 230 | :100E5000F9CF80E090E002C081E090E0DF91CF9197 231 | :100E60001F910F91FF90EF90DF9008951F920F92C6 232 | :100E70000FB60F9211242F933F934F935F936F936D 233 | :100E80007F938F939F93AF93BF93EF93FF9386B31B 234 | :100E9000D6DEFF91EF91BF91AF919F918F917F919E 235 | :100EA0006F915F914F913F912F910F900FBE0F90D7 236 | :100EB0001F901895E0916B01F0916C010994E091FD 237 | :100EC0006901F0916A010994E0916D01F0916E0160 238 | :100ED00080917501099580E4EDCFCF93C82FEADFAB 239 | :100EE000811105C0ECDFF0DF8C2FCF91E3CFCF91E4 240 | :100EF0000895E0916D01F0916E0180917501099561 241 | :100F000080E0D8CFCF93C82FF4DF8C2FD3DFCF91E1 242 | :100F1000D6CFCF93DF93D82FC62FEBDF8D2FCADF2D 243 | :100F20008C2FC8DFDF91CF91CACF1F93CF93DF9370 244 | :100F3000182FD62FC42FDDDF812FBCDF8D2FBADF16 245 | :100F40008C2FB8DFDF91CF911F91B9CFEF92FF9235 246 | :100F50000F931F93DC0113961C921E921297E0EDE3 247 | :100F6000F0E0ED93FC936093750150937001409312 248 | :100F70006F0130936E0120936D0110936C0100930B 249 | :100F80006B01F0926A01E09269011F910F91FF904D 250 | :100F9000EF900895EF92FF921F93CF93DF93162F58 251 | :100FA0007A01E0916F01F09170010995A2DFE701EC 252 | :100FB000E10EF11CCE15DF0561F0FE011491812FC9 253 | :100FC00079DF811104C07BDF94DF812F73DF2196ED 254 | :100FD000F1CFDF91CF911F91FF90EF9070CF48EF4D 255 | :100FE00052E068E0D7CF7093740160937301089565 256 | :100FF000CF93DF93C62FD42F462F4F7062956F701B 257 | :1010000060619D2F977080916400892B8EDFC09363 258 | :101010007201D0937101DF91CF910895FC019091FD 259 | :101020007101960F492F50E024E030E0261B310972 260 | :101030002417350714F494E0961B909371014091A6 261 | :10104000710160E0CF01D4CF9F92AF92BF92CF9257 262 | :10105000DF92EF92FF920F931F93CF93DF93E09174 263 | :101060007301F0917401309709F461C06D3009F497 264 | :101070005EC0162FEC01D3806A3019F46D2DCEDFDF 265 | :1010800056C092802091720130E0E92CF12C80E86A 266 | :1010900090E08E199F09821793071CF46D2DCE01E5 267 | :1010A000BDDF212F30E0E0917301F09174014481A4 268 | :1010B0008D2D90E0B70180D5BC01C901841B910939 269 | :1010C0007BD58C01CD2C00DFF8018E2F801B89157C 270 | :1010D00080F45F018FEFA81AB80AA0917301B09154 271 | :1010E00074018D919C91E80FF91F8491F6DEF50152 272 | :1010F000ECCF0E0D1F1DE3DE81E0D81206C08091FB 273 | :101100007201890D809372010FC04091710181E0DD 274 | :101110004F5F8C1518F46091720104C04D196091F5 275 | :101120007201690DCE0164DFCA94C110CCCF81E099 276 | :1011300090E0DF91CF911F910F91FF90EF90DF90A2 277 | :10114000CF90BF90AF909F900895CF93DF93D62F0D 278 | :10115000C42F80917201840F80937201B5DE8D2FB0 279 | :10116000BCDEC150E1F7DF91CF91A9CE2091720191 280 | :1011700040E8421BEACF0F931F93CF93DF938C017C 281 | :10118000D62FC0E04C2F60E0C80132DF6D2FC801C0 282 | :10119000EDDFCF5FC430B1F740E060E0C801DF9120 283 | :1011A000CF911F910F9124CF60E0E5CF9091640023 284 | :1011B00084E089278093640008959091630080E221 285 | :1011C0008927809363009ECECF93DF93EC01F5DFF8 286 | :1011D000CE01DF91CF91EACF81E89BCE8FEA92CE0C 287 | :1011E0002FC010927701660F609378010895E09107 288 | :1011F0007701E13150F4EF5FE0937701F0E0E858D8 289 | :10120000FE4F608381E090E0089580E090E00895D3 290 | :10121000CF93C62F609177016F5F88E791E0C4D0CC 291 | :1012200010927701882329F0CC2329F0C0D08111B6 292 | :1012300002C0CF9110C080E0CF91089561E0E8CF67 293 | :10124000C09AC29ABA9AB89A8FEF8FB98AE28DB9CA 294 | :1012500080EF8EB9089580918A0108958EB98BE24E 295 | :101260009DE09A95F1F700008DB9B29BFECF9AE010 296 | :101270009A95F1F700C08DB9769BF2CF8DE08A95F3 297 | :10128000F1F700008FB19FEF9FB9B89A0895C29A05 298 | :10129000C29BFECF8DE08A95F1F70000C0988AE0EE 299 | :1012A0008A95F1F700C0C298C09A779905C083E08B 300 | :1012B00080938A0180E0089581E00895AF92BF9203 301 | :1012C000CF92DF92EF92FF920F931F93CF93DF9312 302 | :1012D0008C01E62E80918A01816080938A01F80159 303 | :1012E000908190FD03C0826080938A01D0DF8823C3 304 | :1012F00009F44FC0FE2CE801BB24BA94AA24A3949D 305 | :1013000080918A0183709E012F5F3F4F690188237E 306 | :1013100061F1C29888818FB980EFA0DFB8988EEF15 307 | :101320009DDF90918A0180FF0BC0892F817090FF13 308 | :1013300005C081E080938A0180E02BC092E00EC05E 309 | :10134000892F8570843069F4F80180818160808301 310 | :10135000A0928A019CDF811116C09AE090938A01C5 311 | :1013600018C09E7F90938A010CC0B89880EF76DFFA 312 | :101370008883F1E0FF1202C0BFB801C01FB88EEF32 313 | :101380006DDFE60102C0FE2CE801FA94F110B8CF3F 314 | :1013900081E0DF91CF911F910F91FF90EF90DF904F 315 | :1013A000CF90BF90AF90089510928A0187CFC098D8 316 | :1013B000C29AB29BFECF8AE08A95F1F700C0C09A2C 317 | :1013C0008DE08A95F1F700009EB1892F807295FD1E 318 | :1013D00004C094E090938A01089581E00895FC018F 319 | :1013E00046835783608771870895FB013196695F53 320 | :1013F0007F4F80E090E02191820F911DE617F70763 321 | :10140000D1F79195819591090895FC0114A280A1CD 322 | :101410000895FC0114A282A193A10895DC011D96F8 323 | :10142000EC911D97E13409F474C09196EC93919777 324 | :101430001F968C911F9790E0982F882750962C919B 325 | :101440005097820F911D93969C938E9392974E2F57 326 | :1014500050E0FA01FA97E631F10508F04CC0E15F7F 327 | :10146000FF4F09945E961C925E9785E03DC080FF19 328 | :1014700005C05E961C925E9789E036C081FF05C06C 329 | :101480005E961C925E9784E02FC083709927892B0B 330 | :1014900009F441C05E961C925E978AE025C080FFE9 331 | :1014A00005C05E961C925E9787E01EC081FF33C028 332 | :1014B0005E961C925E9782E017C080FF05C05E9624 333 | :1014C0001C925E9788E010C081FF25C05E961C923A 334 | :1014D0005E9783E009C05E961C925E9786E004C02A 335 | :1014E0005E961C925E978BE090968C93909781E02D 336 | :1014F00094968C9308955E961C925E9781E09096E8 337 | :101500008C93909793961C921E92929794968C939C 338 | :10151000949795961C920895CF93DF93EC01BC01AC 339 | :10152000665F7F4F62DF298930E0322F22274A89A8 340 | :10153000240F311D41E02817390709F040E0842FBE 341 | :10154000DF91CF9108950F931F93CF93DF93EC0119 342 | :1015500088819981DC01ED91FC910480F581E02D79 343 | :101560000995892BE1F160E070E0CB018ED21E8DF0 344 | :1015700088819981DC01ED91FC910680F781E02D55 345 | :10158000111106C009958A878E3711F78E8D24C0F8 346 | :101590000995FE01E10FF11D82878E8D823069F081 347 | :1015A000893079F08130C1F49B859F3FA9F01E8E70 348 | :1015B00081E088A31BA21AA22EC09C85963061F000 349 | :1015C000F6CF8B898F3E99F7CE01A6DF882379F37A 350 | :1015D0001E8ECE0123DF23C08F5F8E8FB9CF8DA1EA 351 | :1015E0008823E9F01FD20A811B812C813D81DC0117 352 | :1015F000CB01801B910BA20BB30B0E811F812885A1 353 | :10160000398580179107A207B30748F01E8E18A2EC 354 | :101610001BA21AA281E08CA31DA280E001C08CA1B4 355 | :10162000DF91CF911F910F910895CF93DF93EC013C 356 | :10163000888D882351F08DA1882339F060E070E017 357 | :10164000CB0123D2CE017FDFF6CF88819981DC01E7 358 | :10165000ED91FC910280F381E02D4AE050E0BE0163 359 | :101660006C5E7F4F0995DED16A837B838C839D837B 360 | :10167000888D91E0811101C090E09DA3811107C088 361 | :101680006AE070E080E090E0DF91CF91FEC1DF91F1 362 | :10169000CF910895CF93DF93EC016F8B598F4A8FD1 363 | :1016A000BC016C5E7F4FA1DE9B8F8C8FCE01DF91E2 364 | :1016B000CF91BBCF40E050E0EDCF30E0F901F42B0B 365 | :1016C000AF01E8CF8F929F92AF92BF92CF92DF92FD 366 | :1016D000EF92FF921F93CF93DF93EC016A017B019E 367 | :1016E000A1D14B015C01C114D104E104F10421F446 368 | :1016F000CE80DF80E884F984CE0125DF182F8111A8 369 | :1017000011C090D1DC01CB0188199909AA09BB0944 370 | :10171000C816D906EA06FB0628F060E070E0CB01A7 371 | :10172000B4D1EACF812FDF91CF911F91FF90EF903D 372 | :10173000DF90CF90BF90AF909F908F900895462FED 373 | :1017400050E066E0A7CF6AE0B5CF6CE0B3CF1F935F 374 | :10175000CF93DF93EC01142F79836883442319F02E 375 | :1017600081E0888F01C0188E222371F0CE01EDDF59 376 | :1017700040ED57E060E070E0CE01A4DF68EC70E07F 377 | :1017800080E090E082D102C084E088A31CA288A1FE 378 | :10179000843029F0893019F081E0812701C081E08F 379 | :1017A000DF91CF911F9108956DE084CF6EE082CFDD 380 | :1017B000242F462F6FE081CFCF93DF93EC01AB0155 381 | :1017C0006EE468DF40E050E0BA01CE017BDF8111BA 382 | :1017D00003C08FEF9FEF06C01CA288A18B30C9F712 383 | :1017E0008AA19BA1DF91CF910895CF93DF93EC0164 384 | :1017F0006FE460DF40E050E0BA01CE0163DF8111A9 385 | :1018000003C08FEF9FEF06C01CA288A18B30C9F7E1 386 | :101810008AA19BA1DF91CF910895CF92DF92EF92A1 387 | :10182000FF920F931F93CF93DF936C01EB017B012A 388 | :10183000E40EF51E00E010E0CE15DF0561F06991C1 389 | :10184000D601ED91FC910190F081E02DC601099542 390 | :10185000080F191FF1CFC801DF91CF911F910F9190 391 | :10186000FF90EF90DF90CF900895FB010190002052 392 | :10187000E9F73197AF01461B570BDC01ED91FC9165 393 | :101880000280F381E02D0994F0CFDC01ED91FC9111 394 | :101890000190F081E02D09948F929F92AF92BF92B8 395 | :1018A000CF92DF92EF92FF920F931F93CF93DF932C 396 | :1018B000CDB7DEB7A1970FB6F894DEBF0FBECDBF90 397 | :1018C0006C01142FE52FCB01022F19A2223008F44E 398 | :1018D0000AE07E0121E2E20EF11C802E912CA12C67 399 | :1018E000B12C612F7E2FA50194019ED1802F622FF4 400 | :1018F0005AD1181B81E0E81AF1081A3014F4105D6F 401 | :1019000001C0195CF7011083122FE32FCA01232BAA 402 | :10191000242B252B31F7B701C601A7DFA1960FB6FF 403 | :10192000F894DEBF0FBECDBFDF91CF911F910F9115 404 | :10193000FF90EF90DF90CF90BF90AF909F908F90EF 405 | :1019400008952115310541F4DC01ED91FC910190E0 406 | :10195000F081E02D642F09949FCF9A01462F50E02B 407 | :1019600060E070E0EECF81B781BFB9D04FD7B2D67B 408 | :10197000FECF80B7807F80BF80B7806880BF8CB586 409 | :1019800080648CBD8FEF8DBD80B7876080BF089568 410 | :101990001F920F920FB60F9211242F933F938F93A4 411 | :1019A0009F93AF93BF9380918C0190918D01A091F3 412 | :1019B0008E01B0918F0130918B0126E0230F2D37DE 413 | :1019C00030F029E8230F0396A11DB11D03C0029634 414 | :1019D000A11DB11D20938B0180938C0190938D01EB 415 | :1019E000A0938E01B0938F0180919001909191010D 416 | :1019F000A0919201B09193010196A11DB11D809318 417 | :101A0000900190939101A0939201B0939301BF91A3 418 | :101A1000AF919F918F913F912F910F900FBE0F909B 419 | :101A20001F9018952FB7F89460918C0170918D01DB 420 | :101A300080918E0190918F012FBF08953FB7F89448 421 | :101A40008091900190919101A0919201B0919301A8 422 | :101A500022B708B601FE05C02F3F19F00196A11D5F 423 | :101A6000B11D3FBFBA2FA92F982F8827820F911D34 424 | :101A7000A11DB11DBC01CD0143E0660F771F881F7A 425 | :101A8000991F4A95D1F708950895CF92DF92EF926A 426 | :101A9000FF92CF93DF936B017C01D0DFEB01C11488 427 | :101AA000D104E104F104A1F0EFDFC8DF6C1B7D0B72 428 | :101AB000683E7340A0F3C114D104E104F10479F34A 429 | :101AC00081E0C81AD108E108F108C851DC4FEDCF18 430 | :101AD000DF91CF91FF90EF90DF90CF9008958AB57E 431 | :101AE00082608ABD8AB581608ABD83B7887F836042 432 | :101AF00083BF789489B7826089BF3BDF86B18877DE 433 | :101B0000866886B9379A0895CF93DF9387FF11C00F 434 | :101B10008F7741F0813041F0823041F0833041F0E5 435 | :101B20008FEF07C085E005C082E003C084E001C0FC 436 | :101B300083E090E0FC01E050FD4F2491FC01EA5F5E 437 | :101B4000FC4F8491882361F190E0880F991FFC017C 438 | :101B5000E85EFC4FC591D491FC01EE5EFC4FA5916F 439 | :101B6000B491611109C09FB7F894888120958223B0 440 | :101B70008883EC912E230BC0623061F49FB7F894F8 441 | :101B80008881322F309583238883EC912E2B2C93E0 442 | :101B90009FBF06C08FB7F894E8812E2B28838FBF94 443 | :101BA000DF91CF910895002480FD060E660F11F09D 444 | :101BB0008695D1F7802D08950024552704C0080E7E 445 | :101BC000591F880F991F009729F076956795B8F3EC 446 | :101BD0007105B9F7802D952F0895AA1BBB1B51E104 447 | :101BE00007C0AA1FBB1FA617B70710F0A61BB70B8D 448 | :101BF000881F991F5A95A9F780959095BC01CD0132 449 | :101C0000089597FB072E16F4009406D077FD08D0B0 450 | :101C1000E4DF07FC05D03EF4909581959F4F089531 451 | :101C2000709561957F4F0895A1E21A2EAA1BBB1BE8 452 | :101C3000FD010DC0AA1FBB1FEE1FFF1FA217B30798 453 | :101C4000E407F50720F0A21BB30BE40BF50B661FAE 454 | :101C5000771F881F991F1A9469F760957095809572 455 | :101C600090959B01AC01BD01CF010895EE0FFF1FC0 456 | :0C1C70000590F491E02D0994F894FFCF4A 457 | :101C7C0001011440B07EFF06000100000000EF429D 458 | :101C8C0061743A002500466F6C6465723A2020201E 459 | :101C9C0020202000206F66200046696C653A2020C9 460 | :101CAC00202020202020003C205061757365203EB0 461 | :101CBC0000566F6C756D653A2000737461727469AF 462 | :101CCC006E672E2E2E00BE000601207E0000000046 463 | :101CDC00DA060D0CC506EB04E704EA04000000006C 464 | :041CEC0024080D0CAF 465 | :00000001FF 466 | -------------------------------------------------------------------------------- /software/binaries/tinympF.hex: -------------------------------------------------------------------------------- 1 | :1000000093C1B7C1C1C5B5C1B4C1B5CCB2C1B1C14D 2 | :1000100091C4AFC1AEC1ADC179C4ABC1AAC1F0C971 3 | :10002000FDC90FCAD0C90DCAD3C906CA15CA09CAA3 4 | :1000300008CA07CA06CA05CA04CA03CA02CA0CCA41 5 | :1000400000CAFFC9FEC9FDC9FCC9506C6561736572 6 | :10005000207265636861726765202100212121207B 7 | :100060004261747465727920656D70747920212104 8 | :100070002100737461727420616761696E202100D0 9 | :10008000436865636B2053442D4361726420616E45 10 | :10009000640021212120202020204552524F52204F 11 | :1000A00020202020212121002D2D2054696E79202F 12 | :1000B0004D503320506C61796572202D2D00000069 13 | :1000C000000000000000002F0000000007000700F3 14 | :1000D00000147F147F1400242A7F2A12006264080F 15 | :1000E000132300364955225000000503000000008C 16 | :1000F0001C224100000041221C000014083E08148C 17 | :100100000008083E0808000000A060000008080879 18 | :100110000808000060600000002010080402003E93 19 | :100120005149453E0000427F40000042615149462E 20 | :10013000002141454B31001814127F10002745451E 21 | :100140004539003C4A494930000171090503003630 22 | :100150004949493600064949291E00003636000043 23 | :100160000000563600000008142241000014141448 24 | :100170001414000041221408000201510906003243 25 | :100180004959513E007C1211127C007F4949493681 26 | :10019000003E41414122007F4141221C007F4949EC 27 | :1001A0004941007F09090901003E4149497A007F20 28 | :1001B0000808087F0000417F4100002040413F01C6 29 | :1001C000007F08142241007F40404040007F020C25 30 | :1001D000027F007F0408107F003E4141413E007FC6 31 | :1001E00009090906003E4151215E007F091929468F 32 | :1001F0000046494949310001017F0101003F40406B 33 | :10020000403F001F2040201F003F4038403F006318 34 | :10021000140814630007087008070061514945433A 35 | :1002200000007F414100000204081020000041410D 36 | :100230007F000004020102040040404040400000F2 37 | :1002400001020400002054545478007F484444388C 38 | :1002500000384444442000384444487F0038545413 39 | :10026000541800087E0901020018A4A4A47C007F91 40 | :10027000080404780000447D4000004080847D0034 41 | :10028000007F102844000000417F4000007C0418DB 42 | :100290000478007C0804047800384444443800FCA6 43 | :1002A000242424180018242418FC007C08040408C2 44 | :1002B00000485454542000043F444020003C404037 45 | :1002C000207C001C2040201C003C4030403C00446E 46 | :1002D00028102844001CA0A0A07C004464544C4476 47 | :1002E0000008364141000000007F0000000041414D 48 | :1002F0003608000804081008C8A1A81FDA028D14E7 49 | :10030000010200000400010204081020020202029F 50 | :10031000020200000000360000000000380000006B 51 | :10032000000037009B04D20411241FBECFE5D2E0A9 52 | :10033000DEBFCDBF10E0A0E6B0E0EEE7FDE102C019 53 | :1003400005900D92AA3CB107D9F721E0AAECB0E0E4 54 | :1003500001C01D92AF38B207E1F711E0C3E9D1E067 55 | :1003600003C02197FE01F9DCC239D107D1F7EEDADB 56 | :10037000FACC46CE81E791E023C7682F81E791E070 57 | :10038000F8D621E0892B09F420E0822F0895682F08 58 | :1003900081E791E0E8C681E791E0E4C6CF93DF937F 59 | :1003A000EC01FE016491662329F08CE191E060DAB2 60 | :1003B0002196F7CFDF91CF910895CF93C82F8A3040 61 | :1003C00028F46BE870E08CE191E051DA4AE050E00B 62 | :1003D0006C2F8CE191E0CF91B3CA65E670E08CE1BF 63 | :1003E00091E045DA80911901843628F46BE870E0D9 64 | :1003F0008CE191E03CDA809119018A3028F46BE8B5 65 | :1004000070E08CE191E033DA4AE050E0609119014C 66 | :100410008CE191E095DA6AE670E08CE191E027CA20 67 | :100420008CE191E083D640E060E08CE191E0A2D5E0 68 | :1004300088EA90E0B3DF41E060E08CE191E09AD59A 69 | :100440006CE670E08CE191E012DA80916100B5DF3A 70 | :100450006AE770E08CE191E00ADA80911A01ADDF81 71 | :1004600042E060E08CE191E085D56FE770E08CE1DF 72 | :1004700091E0FDD980916000A0DF6AE770E08CE137 73 | :1004800091E0F5D980911B0198DF43E060E08CE1B9 74 | :1004900091E070D580911801882331F06DE870E00B 75 | :1004A0008CE191E0E4D908C067E970E08CE191E06B 76 | :1004B000DED98091620081DF43E06EE48CE191E05F 77 | :1004C00059D58BDF8CE191E041C66091610070E00D 78 | :1004D0008AEC90E0ECD880931B0140916000609121 79 | :1004E00061008AEC90E06FD91092180199CF90B515 80 | :1004F0009E7F90BD96B1906996B987FD80588770B0 81 | :1005000087B985B7877E886085BF85B7806285BFDC 82 | :10051000889585B78F7D85BF3699FECF24B135B1DB 83 | :10052000379890B5916090BDC901089590B59E7FB0 84 | :1005300090BD96B1906996B987FD8058877087B94C 85 | :1005400085B7877E886085BF28E080E090E035B77A 86 | :10055000306235BF889535B73F7D35BF3699FECFC0 87 | :1005600044B155B1840F951F215089F7379820B5B4 88 | :10057000216020BD23E0969587952A95E1F708959F 89 | :1005800080B58E7F80BD86B1806986B98CE087B9E1 90 | :1005900062E070E080E090E06BDA85B7877E88608B 91 | :1005A00085BF85B7806285BF889585B78F7D85BFFC 92 | :1005B0003699FECF24B135B140E050E0379880B590 93 | :1005C000816080BD64EB7BE281E190E088DB2038D4 94 | :1005D0008CE038074105510568F0DA01C901853022 95 | :1005E00020E19207A105B10548F084E090E1A0E088 96 | :1005F000B0E004C080E89CE0A0E0B0E0BC01CD0128 97 | :1006000060587C408109910929E030E040E050E0E9 98 | :1006100066DB822F089514BE88E981BD82E481BD26 99 | :10062000A895089585B7877E806185BF8AB7806267 100 | :100630008ABF80B58F6080BDF894EDDF85B780629A 101 | :1006400085BF7894889585B78F7D85BF80B5807F7D 102 | :1006500080BD80B5816080BD089592DF80931901CF 103 | :10066000811134C062E38CE191E078D58CE191E0B6 104 | :100670005DD540E060E08CE191E07CD48CE590E0D9 105 | :100680008DDE42E06FE08CE191E074D48AE490E08A 106 | :1006900085DE8CE191E05AD580911801811103C06B 107 | :1006A0008AEC90E083D86CDF8A3010F4BBDFFBCF9C 108 | :1006B0006FE78CE191E052D563DF8093190180915F 109 | :1006C0001801811103C08AEC90E00DD8A9DE88E5FD 110 | :1006D00092E090931701809316010895CF93DF93D2 111 | :1006E0008AEC90E0F1D68823C1F08AEC90E03ED607 112 | :1006F000C82F8AEC90E03ED6C53079F44091600076 113 | :1007000080911B01481748F44F5F4093600060914F 114 | :1007100061008AEC90E057D883DE83E807DF209100 115 | :10072000140130911501A90148505109841795070A 116 | :1007300028F0285F3F4F2817390720F490931501C0 117 | :1007400080931401809114019091150162E270E090 118 | :100750009FDA80916200861731F0609362008AEC24 119 | :1007600090E011D85DDE80E8C2DEEC01883E23E037 120 | :10077000920770F080911601909117010197909364 121 | :10078000170180931601892B09F041C066DF3FC035 122 | :1007900083509340879778F48091610090911A017B 123 | :1007A000891710F48F5F01C081E08093610081E0C0 124 | :1007B000809360008ADECE0185519240879760F475 125 | :1007C0008091600090911B01891710F48F5F01C028 126 | :1007D00081E08093600079DEC55BD240A79788F402 127 | :1007E0008091180191E0811190E09093180181119E 128 | :1007F00004C08AEC90E0DAD703C08AEC90E073D7AB 129 | :100800000FDE80E874DE883E9340D8F3B3CFDF91EB 130 | :10081000CF9108CF00DF86E086B9339A789480B50F 131 | :10082000816080BD60E083E885D960E080E882D99E 132 | :100830008CE191E096D36CEA70E08CE191E095D385 133 | :100840006FE78CE191E08AD48CE191E06FD48CE188 134 | :1008500091E086D48CE191E06BD48CE191E066D498 135 | :1008600040E060E08CE191E085D388EA90E096DD9D 136 | :1008700041E060E08CE191E07DD360EA70E08CE1E2 137 | :1008800091E0F5D78CE191E061D440E855E260E079 138 | :1008900070E085EF90E06FD265EF70E08AEC90E059 139 | :1008A00060D5811127C08CE191E040D440E060E048 140 | :1008B0008CE191E05FD382E990E070DD42E060E09E 141 | :1008C0008CE191E057D380E890E068DD43E060E0A0 142 | :1008D0008CE191E04FD382E790E060DD8CE191E024 143 | :1008E00035D462E38CE191E039D48AEC90E079D799 144 | :1008F00099DEFECFB2DE609162008AEC90E043D7D1 145 | :100900008AEC90E006D780931A01DFCD1F920F92F8 146 | :100910000FB60F9211248F930FB6F894A89581B556 147 | :10092000886181BD11BC0FBE8F910F900FBE0F90DB 148 | :100930001F9018951895EF92FF920F931F938AEBD3 149 | :10094000E82E81E0F82E0DEB11E027EC31E04BECC6 150 | :1009500051E06CE38CE191E0BBD220E041E064E047 151 | :1009600085EF90E0DFD18AE0ECECF0E0DF011D9252 152 | :100970008A95E9F7EAECF0E0148615861686178664 153 | :10098000108A118A138A178A108E84EF91E0A0E0F2 154 | :10099000B0E0858F968FA78FB0A31F910F91FF9026 155 | :1009A000EF90089585EF90E069C120916201309148 156 | :1009B000630128173907B9F4909120018091210132 157 | :1009C000981789F0E0912001F0E0EE5DFE4F808104 158 | :1009D0002091200130E02F5F3F4F2F73332720936A 159 | :1009E000200190E008958FEF9FEF08951F93CF931C 160 | :1009F000DF93DC015C968D919C915D97009739F4B3 161 | :100A000021E030E013963C932E9312973BC0519611 162 | :100A1000ED91FC91529750962C915097322F309532 163 | :100A20001FB75E964C915E97742F727041FD609572 164 | :100A3000F8944081772311F0422B01C04323408377 165 | :100A4000EC012197F1F748E0508160FF02C0522B82 166 | :100A500001C053235083EC012197F1F76695415073 167 | :100A600099F78081772319F08323808302C0282B94 168 | :100A700020831FBF5C968D919C915D970197F1F744 169 | :100A800081E090E0DF91CF911F9108952091620164 170 | :100A9000309163012817390781F4909120018091EA 171 | :100AA0002101981751F0E0912001F0E0EE5DFE4F3A 172 | :100AB0008081082E000C990B08958FEF9FEF089509 173 | :100AC00020916201309163012817390769F4809100 174 | :100AD00021012091200190E0805C9F4F821B9109B1 175 | :100AE00060E470E0E9D8089580E090E008952091F6 176 | :100AF0006201309163012817390739F48FB7F894F0 177 | :100B000010922101109220018FBF0895E09162019F 178 | :100B1000F0916301E817F90769F4A389B4899C91FE 179 | :100B20008589809589238C931092630110926201CC 180 | :100B300081E0089580E00895CF93DF93EC018A8DE2 181 | :100B40009B8D892BE9F08091620190916301C81718 182 | :100B5000D907B1F0009709F0D9DF8E8D8E7F8E8F87 183 | :100B60001092210110922001D0936301C093620181 184 | :100B7000EB89FC8990818D89892B808381E001C07C 185 | :100B800080E0DF91CF9108951F920F920FB60F92E0 186 | :100B900011242F933F934F935F936F937F938F9382 187 | :100BA0009F93AF93BF93EF93FF93E0916201F09116 188 | :100BB0006301309709F451C0968DA685B785858568 189 | :100BC00091FF04C09C91892329F447C09C918923FB 190 | :100BD00009F043C0A389B4899C91858980958923B4 191 | :100BE0008C93868997890197F1F7608D718DA68521 192 | :100BF000B785558538E020E0CB010197F1F7822FCA 193 | :100C000090E095958795282F4C91452309F0206811 194 | :100C1000315091F7868D81FD20958091210190E0E2 195 | :100C200001968F73992730912001381749F0A091D0 196 | :100C30002101B0E0AE5DBE4F2C938093210103C033 197 | :100C4000868D8160868F828D938D0197F1F7A389C0 198 | :100C5000B4899C918589892B8C93FF91EF91BF91E9 199 | :100C6000AF919F918F917F916F915F914F913F9144 200 | :100C70002F910F900FBE0F901F90189526EB30E02C 201 | :100C8000FC013183208342CF1F93CF93DF93EC018C 202 | :100C9000162F6E8D6695617081E06827812F99D738 203 | :100CA00061E0812F47D7812F90E0FC01EA5FFC4F84 204 | :100CB000E491E88BFC01E45FFC4FE491F0E0EE0F7F 205 | :100CC000FF1FE85EFC4F859194919A8B898BDF9191 206 | :100CD000CF911F9108951F93CF93DF93EC01162FAF 207 | :100CE00060E0812F27D78E8D81FD03C061E0812FC9 208 | :100CF00070D71C87812F90E0FC01EA5FFC4FE491E4 209 | :100D0000ED87FC01E45FFC4FE491F0E0EE0FFF1F84 210 | :100D1000EE5EFC4F859194919F878E87DF91CF91F6 211 | :100D20001F9108951F93CF93DF93EC01162F1B8221 212 | :100D30001A8288EE93E0A0E0B0E08C839D83AE83BE 213 | :100D4000BF8386EB90E0998388831F8A1E8A198E61 214 | :100D5000188E1B8E1A8E1D8E1C8E8E8D8E7F20FB04 215 | :100D600081F98E8F642FCE018FDF612FCE01DF914D 216 | :100D7000CF911F91B0CFCF93DF93EC019A01AB01DC 217 | :100D80001B8E1A8E198E188E1F8A1E8A60E874E8D0 218 | :100D90008EE190E0C6D7B9012430310518F0C901C1 219 | :100DA000039702C081E090E09D8F8C8F8C85863008 220 | :100DB00008F03EC0C901969587958431910510F0E1 221 | :100DC000439702C081E090E09F8B8E8B6630710567 222 | :100DD00018F0C901059702C081E090E0998F888FD3 223 | :100DE000C90163E070E043D79695879596958795FE 224 | :100DF0008D30910510F00C9702C081E090E09B8F40 225 | :100E00008A8F8BB780628BBF9C85963018F020E06C 226 | :100E100030E002C025E330E03C8B2B8B81E001C049 227 | :100E2000880F9A95EAF78D8B8C8D9D8D0197F1F740 228 | :100E3000CE01DF91CF9180CEE0916601F091670104 229 | :100E40000994E0916401F09165010994E0916801D1 230 | :100E5000F091690180917001099580E4EDCFCF9305 231 | :100E6000C82FEADF811105C0ECDFF0DF8C2FCF91B6 232 | :100E7000E3CFCF910895E0916801F09169018091ED 233 | :100E80007001099580E0D8CFCF93C82FF4DF8C2F65 234 | :100E9000D3DFCF91D6CFCF93DF93D82FC62FEBDF01 235 | :100EA0008D2FCADF8C2FC8DFDF91CF91CACF1F9360 236 | :100EB000CF93DF93182FD62FC42FDDDF812FBCDF18 237 | :100EC0008D2FBADF8C2FB8DFDF91CF911F91B9CF73 238 | :100ED000EF92FF920F931F93DC0113961C921E92C8 239 | :100EE0001297E6ECF0E0ED93FC9360937001509361 240 | :100EF0006B0140936A01309369012093680110935C 241 | :100F0000670100936601F0926501E09264011F9110 242 | :100F10000F91FF90EF900895EF92FF921F93CF9360 243 | :100F2000DF93162F7A01E0916A01F0916B01099528 244 | :100F3000A2DFE701E10EF11CCE15DF0561F0FE0135 245 | :100F40001491812F79DF811104C07BDF94DF812F21 246 | :100F500073DF2196F1CFDF91CF911F91FF90EF903A 247 | :100F600070CF48EF52E068E0D7CF70936F01609385 248 | :100F70006E010895CF93DF93C62FD42F462F4F7065 249 | :100F800062956F7060619D2F977080916400892BCE 250 | :100F90008EDFC0936D01D0936C01DF91CF910895E6 251 | :100FA000FC0190916C01960F492F50E024E030E055 252 | :100FB000261B31092417350714F494E0961B9093EF 253 | :100FC0006C0140916C0160E0CF01D4CF9F92AF9251 254 | :100FD000BF92CF92DF92EF92FF920F931F93CF9326 255 | :100FE000DF93E0916E01F0916F01309709F461C0D9 256 | :100FF0006D3009F45EC0162FEC01D3806A3019F40D 257 | :101000006D2DCEDF56C0928020916D0130E0E92C2D 258 | :10101000F12C80E890E08E199F09821793071CF449 259 | :101020006D2DCE01BDDF212F30E0E0916E01F091FA 260 | :101030006F0144818D2D90E0B70119D6BC01C90123 261 | :10104000841B910914D68C01CD2C00DFF8018E2F62 262 | :10105000801B891580F45F018FEFA81AB80AA09150 263 | :101060006E01B0916F018D919C91E80FF91F8491F1 264 | :10107000F6DEF501ECCF0E0D1F1DE3DE81E0D81288 265 | :1010800006C080916D01890D80936D010FC0409164 266 | :101090006C0181E04F5F8C1518F460916D0104C004 267 | :1010A0004D1960916D01690DCE0164DFCA94C110C4 268 | :1010B000CCCF81E090E0DF91CF911F910F91FF9015 269 | :1010C000EF90DF90CF90BF90AF909F900895CF9317 270 | :1010D000DF93D62FC42F80916D01840F80936D0113 271 | :1010E000B5DE8D2FBCDEC150E1F7DF91CF91A9CEE7 272 | :1010F00020916D0140E8421BEACF0F931F93CF93DD 273 | :10110000DF938C01D62FC0E04C2F60E0C80132DFA6 274 | :101110006D2FC801EDDFCF5FC430B1F740E060E074 275 | :10112000C801DF91CF911F910F9124CF60E0E5CFEF 276 | :101130009091640084E089278093640008959091E1 277 | :10114000630080E28927809363009ECECF93DF9374 278 | :10115000EC01F5DFCE01DF91CF91EACF81E89BCEA4 279 | :101160008FEA92CE2FC010927201660F60937301C6 280 | :101170000895E0917201E13150F4EF5FE093720164 281 | :10118000F0E0ED58FE4F608381E090E0089580E04C 282 | :1011900090E00895CF93C62F609172016F5F83E74F 283 | :1011A00091E0C4D010927201882329F0CC2329F059 284 | :1011B000C0D0811102C0CF9110C080E0CF910895BE 285 | :1011C00061E0E8CFC09AC29ABA9AB89A8FEF8FB905 286 | :1011D0008AE28DB980EF8EB90895809185010895D6 287 | :1011E0008EB98BE29DE09A95F1F700008DB9B29B24 288 | :1011F000FECF9AE09A95F1F700C08DB9769BF2CFB9 289 | :101200008DE08A95F1F700008FB19FEF9FB9B89AF2 290 | :101210000895C29AC29BFECF8DE08A95F1F7000037 291 | :10122000C0988AE08A95F1F700C0C298C09A779971 292 | :1012300005C083E08093850180E0089581E00895F2 293 | :10124000AF92BF92CF92DF92EF92FF920F931F93D4 294 | :10125000CF93DF938C01E62E80918501816080938E 295 | :101260008501F801908190FD03C082608093850123 296 | :10127000D0DF882309F44FC0FE2CE801BB24BA94C8 297 | :10128000AA24A3948091850183709E012F5F3F4F14 298 | :101290006901882361F1C29888818FB980EFA0DF4E 299 | :1012A000B8988EEF9DDF9091850180FF0BC0892F4C 300 | :1012B000817090FF05C081E08093850180E02BC0A4 301 | :1012C00092E00EC0892F8570843069F4F801808126 302 | :1012D00081608083A09285019CDF811116C09AE015 303 | :1012E0009093850118C09E7F909385010CC0B8989B 304 | :1012F00080EF76DF8883F1E0FF1202C0BFB801C043 305 | :101300001FB88EEF6DDFE60102C0FE2CE801FA94F3 306 | :10131000F110B8CF81E0DF91CF911F910F91FF9035 307 | :10132000EF90DF90CF90BF90AF900895109285011D 308 | :1013300087CFC098C29AB29BFECF8AE08A95F1F718 309 | :1013400000C0C09A8DE08A95F1F700009EB1892F08 310 | :10135000807295FD04C094E090938501089581E02A 311 | :101360000895FC017183608381E00895FC01178A70 312 | :1013700082890895FC01178A848995890895DC0182 313 | :101380009496EC919497E13409F474C05696EC93DA 314 | :10139000569796968C91969790E0982F88279796D7 315 | :1013A0002C919797820F911D55969C938E935497ED 316 | :1013B0004E2F50E0FA01FA97E631F10508F04CC0E3 317 | :1013C000E15FFF4F099453961C92539785E03DC00F 318 | :1013D00080FF05C053961C92539789E036C081FF69 319 | :1013E00005C053961C92539784E02FC083709927B1 320 | :1013F000892B09F441C053961C9253978AE025C06B 321 | :1014000080FF05C053961C92539787E01EC081FF52 322 | :1014100033C053961C92539782E017C080FF05C0DB 323 | :1014200053961C92539788E010C081FF25C05396B5 324 | :101430001C92539783E009C053961C92539786E001 325 | :1014400004C053961C9253978BE052968C935297FC 326 | :1014500081E057968C93089553961C92539781E0A0 327 | :1014600052968C93529755961C921E92549757966B 328 | :101470008C93579758961C920895FB013196695F9B 329 | :101480007F4F80E090E02191820F911DE617F707D2 330 | :10149000D1F79195819591090895CF93DF93EC0150 331 | :1014A000BC016F5D7F4FE9DF28A530E0322F222796 332 | :1014B00049A5240F311D41E02817390709F040E004 333 | :1014C000842FDF91CF9108950F931F93CF93DF93D4 334 | :1014D000EC0188819981DC01ED91FC910480F5811A 335 | :1014E000E02D0995892BE1F160E070E0CB01C0D2DD 336 | :1014F0001B8988819981DC01ED91FC910680F7813F 337 | :10150000E02D111106C0099589A38E3711F78B893B 338 | :1015100024C00995FE01E10FF11D81A38B89823062 339 | :1015200069F0893079F08130C1F49AA19F3FA9F028 340 | :101530001B8A81E08A8B1D8A1C8A2EC09BA1963053 341 | :1015400061F0F6CF8AA58F3E99F7CE01A6DF8823FA 342 | :1015500079F31B8ACE0113DF23C08F5F8B8BB9CF4A 343 | :10156000888D8823E9F051D2098D1A8D2B8D3C8D01 344 | :10157000DC01CB01801B910BA20BB30B0D8D1E8DDB 345 | :101580002F8D38A180179107A207B30748F01B8A57 346 | :101590001A8A1D8A1C8A81E08F8B188E80E001C018 347 | :1015A0008F89DF91CF911F910F9108958F929F9214 348 | :1015B000AF92BF92CF92DF92EF92FF921F93CF93A1 349 | :1015C000DF93EC016A017B0120D24B015C01C11465 350 | :1015D000D104E104F10421F4CD8CDE8CEF8CF8A071 351 | :1015E000CE0172DF182F811111C00FD2DC01CB01A7 352 | :1015F00088199909AA09BB09C816D906EA06FB0683 353 | :1016000028F060E070E0CB0133D2EACF812FDF9188 354 | :10161000CF911F91FF90EF90DF90CF90BF90AF9050 355 | :101620009F908F900895CF93DF93EC018E81882354 356 | :1016300051F0888D882339F060E070E0CB0118D23A 357 | :10164000CE0142DFF6CFDE018D919D91BD01DC011F 358 | :10165000ED91FC910280F381E02D4AE050E0099584 359 | :10166000D4D1698F7A8F8B8F9C8F8E8191E081117D 360 | :1016700001C090E0988F811107C06AE070E080E0BF 361 | :1016800090E0DF91CF91F4C1DF91CF910895CF9396 362 | :10169000DF93EC016D835F834887BC016E5F7F4FF2 363 | :1016A000ECDE99878A87CE01DF91CF91BCCFCF93B3 364 | :1016B000DF93EC01AB016EE4EADF40E050E0BA01F9 365 | :1016C000CE0174DF811103C08FEF9FEF06C01F8A28 366 | :1016D0008A898B30C9F78C899D89DF91CF910895D4 367 | :1016E00040E050E0D4CF6DE0FBCFFC01248530E03A 368 | :1016F0002B5F3E4F8585280F311D8685280F311DB4 369 | :101700008785280F311D319521953109308B218B2B 370 | :101710000895CF93DF93EC016FE4E2DF40E050E007 371 | :10172000BA01CE0143DF811103C08FEF9FEF06C0E6 372 | :101730001F8A8A898B30C9F78C899D89DF91CF9167 373 | :101740000895FC018EE782838FEF838386E0848394 374 | :10175000848585838585868386858783878580873D 375 | :1017600080898187818982878FEE8387DF018D91D0 376 | :101770009D91BD01DC01ED91FC910280F381E02D92 377 | :101780004AE050E00994CF93DF936F3160F4EC01AD 378 | :1017900086E08C871D861E866F87CE01A6DFCE0170 379 | :1017A000DF91CF91CECFDF91CF910895FC018EE0F4 380 | :1017B00084871586168681E087878EEF808B8CEE76 381 | :1017C000818BCF01BECFCF93DF93EC018FE08C876D 382 | :1017D0001D866E874F87CE0188DFCE01DF91CF91C6 383 | :1017E000B0CFCF93DF93EC0189E08C871D861E86F6 384 | :1017F00084E08F87CE0179DFCE01DF91CF91A1CF39 385 | :10180000CF92DF92EF92FF920F931F93CF93DF93CC 386 | :101810006C01EB017B01E40EF51E00E010E0CE153B 387 | :10182000DF0561F06991D601ED91FC910190F081A5 388 | :10183000E02DC6010995080F191FF1CFC801DF91EE 389 | :10184000CF911F910F91FF90EF90DF90CF9008956F 390 | :10185000FB0101900020E9F73197AF01461B570BC0 391 | :10186000DC01ED91FC910280F381E02D0994F0CF31 392 | :10187000DC01ED91FC910190F081E02D09948F92B3 393 | :101880009F92AF92BF92CF92DF92EF92FF920F930F 394 | :101890001F93CF93DF93CDB7DEB7A1970FB6F89420 395 | :1018A000DEBF0FBECDBF6C01142FE52FCB01022F81 396 | :1018B00019A2223008F40AE07E0121E2E20EF11CB6 397 | :1018C000802E912CA12CB12C612F7E2FA50194018B 398 | :1018D00006D2802F622FC2D1181B81E0E81AF108CE 399 | :1018E0001A3014F4105D01C0195CF7011083122F37 400 | :1018F000E32FCA01232B242B252B31F7B701C60177 401 | :10190000A7DFA1960FB6F894DEBF0FBECDBFDF9163 402 | :10191000CF911F910F91FF90EF90DF90CF90BF90EC 403 | :10192000AF909F908F9008952115310541F4DC010F 404 | :10193000ED91FC910190F081E02D642F09949FCFEF 405 | :101940009A01462F50E060E070E0EECF81B781BF92 406 | :10195000B9D060D7C3D6FECF80B7807F80BF80B7B5 407 | :10196000806880BF8CB580648CBD8FEF8DBD80B7E3 408 | :10197000876080BF08951F920F920FB60F921124B7 409 | :101980002F933F938F939F93AF93BF938091870142 410 | :1019900090918801A0918901B0918A0130918601CE 411 | :1019A00026E0230F2D3730F029E8230F0396A11DE1 412 | :1019B000B11D03C00296A11DB11D20938601809325 413 | :1019C000870190938801A0938901B0938A01809147 414 | :1019D0008B0190918C01A0918D01B0918E010196A7 415 | :1019E000A11DB11D80938B0190938C01A0938D015B 416 | :1019F000B0938E01BF91AF919F918F913F912F91A5 417 | :101A00000F900FBE0F901F9018952FB7F89460910C 418 | :101A10008701709188018091890190918A012FBF7F 419 | :101A200008953FB7F89480918B0190918C01A0911B 420 | :101A30008D01B0918E0122B708B601FE05C02F3F7F 421 | :101A400019F00196A11DB11D3FBFBA2FA92F982FE4 422 | :101A50008827820F911DA11DB11DBC01CD0143E05E 423 | :101A6000660F771F881F991F4A95D1F7089508952B 424 | :101A7000CF92DF92EF92FF92CF93DF936B017C01C5 425 | :101A8000D0DFEB01C114D104E104F104A1F0EFDFD8 426 | :101A9000C8DF6C1B7D0B683E7340A0F3C114D104FA 427 | :101AA000E104F10479F381E0C81AD108E108F108F2 428 | :101AB000C851DC4FEDCFDF91CF91FF90EF90DF90D9 429 | :101AC000CF9008958AB582608ABD8AB581608ABD4B 430 | :101AD00083B7887F836083BF789489B7826089BF2A 431 | :101AE0003BDF86B18877866886B9379A089581305A 432 | :101AF00031F48AB58F778ABD8AB58F7B07C0823073 433 | :101B000039F48AB58F7D8ABD8AB58F7E8ABD0895E6 434 | :101B1000833039F480B78F7D80BF80B78F7E80BFE0 435 | :101B20000895843031F48CB58F7D8CBD8CB58F7E5B 436 | :101B30008CBD0895CF93DF9387FF11C08F7741F05D 437 | :101B4000813041F0823041F0833041F08FEF07C0A7 438 | :101B500085E005C082E003C084E001C083E090E03E 439 | :101B6000FC01EA5FFC4F2491FC01E45FFC4F84918F 440 | :101B7000882361F190E0880F991FFC01E25EFC4F21 441 | :101B8000C591D491FC01E85EFC4FA591B49161111F 442 | :101B900009C09FB7F8948881209582238883EC91AF 443 | :101BA0002E230BC0623061F49FB7F8948881322FE6 444 | :101BB000309583238883EC912E2B2C939FBF06C0F6 445 | :101BC0008FB7F894E8812E2B28838FBFDF91CF91B8 446 | :101BD00008951F93CF93DF93162F87FF11C08F7740 447 | :101BE00041F0813041F0823041F0833041F08FEF9D 448 | :101BF00007C085E005C082E003C084E001C083E047 449 | :101C0000282F30E0F901E050FD4F8491F901EA5F9F 450 | :101C1000FC4FD491F901E45FFC4FC491CC23D1F087 451 | :101C2000811165DFEC2FF0E0EE0FFF1FE85EFC4F47 452 | :101C3000A591B491111108C09FB7F8948C91D095DB 453 | :101C4000D823DC939FBF06C08FB7F894EC91DE2BAE 454 | :101C5000DC938FBFDF91CF911F910895002480FD09 455 | :101C6000060E660F11F08695D1F7802D0895002499 456 | :101C7000552704C0080E591F880F991F009729F097 457 | :101C800076956795B8F37105B9F7802D952F08956E 458 | :101C9000AA1BBB1B51E107C0AA1FBB1FA617B70792 459 | :101CA00010F0A61BB70B881F991F5A95A9F78095AE 460 | :101CB0009095BC01CD01089597FB072E16F4009472 461 | :101CC00006D077FD08D0E4DF07FC05D03EF4909500 462 | :101CD00081959F4F0895709561957F4F0895A1E27A 463 | :101CE0001A2EAA1BBB1BFD010DC0AA1FBB1FEE1F96 464 | :101CF000FF1FA217B307E407F50720F0A21BB30BE1 465 | :101D0000E40BF50B661F771F881F991F1A9469F75C 466 | :101D100060957095809590959B01AC01BD01CF01B8 467 | :101D20000895052E97FB16F400940FD057FD05D0AB 468 | :101D3000D6DF07FC02D046F408C050954095309598 469 | :101D400021953F4F4F4F5F4F089590958095709527 470 | :101D500061957F4F8F4F9F4F0895EE0FFF1F0590A6 471 | :101D6000F491E02D099411E0C3E9D1E003C0FE0134 472 | :0E1D7000F4DF2196C439D107D1F7F894FFCFE4 473 | :101D7E0001011440B04261743A002500466F6C6454 474 | :101D8E0065723A20202020202000206F6620004619 475 | :101D9E00696C653A2020202020202020003C205015 476 | :101DAE0061757365203E00566F6C756D653A200047 477 | :101DBE007374617274696E672E2E2E00BE0006015A 478 | :101DCE00207E00000000F604000C6005D5044605D8 479 | :0A1DDE00770500000000E607000C86 480 | :00000001FF 481 | --------------------------------------------------------------------------------