From e3efe048365b8bcae93cbcde9424b46573be697d Mon Sep 17 00:00:00 2001 From: Paul XPS Date: Thu, 29 Nov 2018 22:31:26 -0600 Subject: [PATCH] Firmware updates are complete for switchless firmware updates via USB! Have basic testing complete of erasing application/main code, flashing data, and reading it back for verification. This ended up being pretty big task to get working. Some previous efforts helped out quite a bit though. The first thing needed was a path out of the main application and this was done in bootload.c by calling PREP_FWUPDATE. That jumps to the fwupdate area (first 2KByte) of flash. There the 'fwupate main' takes over. It updates the usbFunction Setup/Write ram function pointers to fwupdate's own setup function. Then it must hijack the processor's execution so once the PREP_UPDATE exception is complete the processor returns to the fwupdater instead of the main. This is done by snooping back through the stack and finding the stack frame keying off of xPSR and valid PC address. It then stomps the PC & LR in the stack frame to steal execution from the main thread. After that, all usb transfers are handled by the fwupdater. Able to get buy without the write so far since setup packets provide data but are also IN transfers to give path for sending data back to host. So to keep things small and simple this is all that's handled so far. Once I get tired of it being so slow I can implement the usbFunctionWrite and speed things up quite a bit. Haven't actually timed it yet, but for only 20KByte of data it and not being very frequent it shouldn't be a big deal. The more I say this the more I'm thinking I'll add that next because I'll be using it myself so much for development.. Less time in that state is less likely for ppl to 'semi-brick' their device. There is of course always the stmicro dfuse demo that can always unbrick the device. I tried really hard to jump to their bootloader but no matter what I did I couldn't get it working. It was never recognized by USB. I half way wonder now if I needed to disable the bootpin which I never would want to do anyway.. Created separate build_stm folders for INL6 & INL_NES which is what all the NESmaker kits use. Also update the make files to be more accurate about what chip their using since fwupdate tries to prevent a hardfault from flash access beyond what's available. This update doesn't include a means of updating the first 2KByte of firmware updater space itself. But the application code should be able to take care of that for us in a future update. It's only 2KByte so just temporarily storing the fresh build in SRAM will probably work. Although will have to be careful about any calls from application code to fwupdater. Plus there's always dfuse.. Other problem I ran into was erasing the application code. It worked fine early on for all 30KByte. But as my fwupdater function grew it crashed when page 18 was erased. Realized my bigger switch/case statement was calling a gcc library function that resided in the application code. It was only 50Bytes, so moved it to fwupdate section. Brought 2 of similar library functions over as well, but one of them disappeared with update to latest version of arm-none-eabi-gcc. Not a commit really, but this is the release where I updated gcc. Was previously: gcc version 6.2.1 20161205 (release) [ARM/embedded-6-branch revision 243739] is now: gcc version 7.3.1 20180622 (release) [ARM/embedded-7-branch revision 261907] (GNU Tools for Arm Embedded Processors 7-2018-q2-update) Updating gcc provided a smaller build size of ~250 Bytes from the tail end. But it also freed up ~50Bytes in fwupdate space as well. --- firmware/Make_stm_adapter | 6 +- firmware/Make_stm_inl6 | 9 +- firmware/Make_stm_inl6p | 8 +- firmware/Make_stm_nes | 7 +- firmware/build_stm/inlretro_stm.bin | Bin 20892 -> 0 bytes firmware/build_stm/inlretro_stm.hex | 1309 ---------------- .../inlretro_stm.elf | Bin 204464 -> 208488 bytes firmware/build_stm6/inlretro_stm.hex | 1352 +++++++++++++++++ .../inlretro_stm.map | 830 +++++----- firmware/build_stmn/inlretro_stm.elf | Bin 0 -> 199180 bytes firmware/build_stmn/inlretro_stm.hex | 1249 +++++++++++++++ firmware/build_stmn/inlretro_stm.map | 948 ++++++++++++ firmware/include_stm/nokeep.ld | 63 + firmware/source/bootload.c | 9 + firmware/source/bootload.h | 6 +- firmware/source_stm_only/fwupdate.c | 400 ++++- firmware/source_stm_only/fwupdate.h | 15 +- firmware/source_stm_only/usbstm.c | 53 +- firmware/source_stm_only/usbstm.h | 13 +- host/scripts/app/dict.lua | 57 + host/scripts/app/fwupdate.lua | 156 ++ host/scripts/inlretro.lua | 17 +- shared/shared_dict_bootload.h | 1 + shared/shared_dict_fwupdate.h | 66 + shared/shared_dictionaries.h | 12 + shared/shared_errors.h | 4 + 26 files changed, 4842 insertions(+), 1748 deletions(-) delete mode 100644 firmware/build_stm/inlretro_stm.bin delete mode 100644 firmware/build_stm/inlretro_stm.hex rename firmware/{build_stm => build_stm6}/inlretro_stm.elf (63%) create mode 100644 firmware/build_stm6/inlretro_stm.hex rename firmware/{build_stm => build_stm6}/inlretro_stm.map (69%) create mode 100644 firmware/build_stmn/inlretro_stm.elf create mode 100644 firmware/build_stmn/inlretro_stm.hex create mode 100644 firmware/build_stmn/inlretro_stm.map create mode 100644 host/scripts/app/fwupdate.lua create mode 100644 shared/shared_dict_fwupdate.h diff --git a/firmware/Make_stm_adapter b/firmware/Make_stm_adapter index 65459ec..1c6c1e0 100644 --- a/firmware/Make_stm_adapter +++ b/firmware/Make_stm_adapter @@ -50,14 +50,12 @@ LFLAGS=$(USE_NANO) $(USE_NOHOST) $(LDSCRIPTS) $(GC) $(MAP) DEFINE+=\ -DSTM32F070x6 \ - -DF_CPU=16000000 \ + -DF_CPU=48000000 \ -DSTM_CORE \ -DSTM_ADAPTER #stm32 to kazzo adapter board -# -DSTM_INL6 #inlretro 6connector +# -DSTM32F070x6 \ #32KB version of both packages (TSSOP-20,LQFP-48) # -DSTM32F072x8 \ #64KB version of all packages (LQFP-48,64,100) # -DSTM32F070xB \ #128KB version of both packages (LQFP-48,64) -# -DSTM32F070x6 \ #32KB version of both packages (TSSOP-20,LQFP-48) -# -DF_CPU=8000000 INCLUDE=-I ./include_stm CFLAGS+= $(DEFINE) $(INCLUDE) diff --git a/firmware/Make_stm_inl6 b/firmware/Make_stm_inl6 index bff225c..755e918 100644 --- a/firmware/Make_stm_inl6 +++ b/firmware/Make_stm_inl6 @@ -36,6 +36,7 @@ STARTUP=$(BASE)/include_stm/startup_ARM$(CORE).S # -Os -flto -ffunction-sections -fdata-sections to compile for code size CFLAGS=$(ARCH_FLAGS) $(STARTUP_DEFS) -Os -flto -ffunction-sections -fdata-sections -g +#CFLAGS=$(ARCH_FLAGS) $(STARTUP_DEFS) -Os -flto -ffunction-sections -fdata-sections -g -fno-exceptions -fno-unwind-tables #CFLAGS=$(ARCH_FLAGS) $(STARTUP_DEFS) -flto -ffunction-sections -fdata-sections -g CXXFLAGS=$(CFLAGS) @@ -52,15 +53,13 @@ LFLAGS=$(USE_NANO) $(USE_NOHOST) $(LDSCRIPTS) $(GC) $(MAP) #TODO fix DF_CPU, now runs at 48Mhz DEFINE+=\ - -DSTM32F070x6 \ - -DF_CPU=16000000 \ + -DSTM32F070xB \ + -DF_CPU=48000000 \ -DSTM_CORE \ -DSTM_INL6 #inlretro 6connector -# -DSTM_ADAPTER #stm32 to kazzo adapter board +# -DSTM32F070x6 \ #32KB version of both packages (TSSOP-20,LQFP-48) # -DSTM32F072x8 \ #64KB version of all packages (LQFP-48,64,100) # -DSTM32F070xB \ #128KB version of both packages (LQFP-48,64) -# -DSTM32F070x6 \ #32KB version of both packages (TSSOP-20,LQFP-48) -# -DF_CPU=8000000 INCLUDE=-I ./include_stm CFLAGS+= $(DEFINE) $(INCLUDE) diff --git a/firmware/Make_stm_inl6p b/firmware/Make_stm_inl6p index 7b29559..c9f3bf4 100644 --- a/firmware/Make_stm_inl6p +++ b/firmware/Make_stm_inl6p @@ -51,16 +51,14 @@ LDSCRIPTS=-L. -L$(BASE)/include_stm -T nokeep.ld LFLAGS=$(USE_NANO) $(USE_NOHOST) $(LDSCRIPTS) $(GC) $(MAP) DEFINE+=\ - -DSTM32F070x6 \ - -DF_CPU=16000000 \ + -DSTM32F070xB \ + -DF_CPU=48000000 \ -DSTM_CORE \ -DSTM_INL6_PROTO #inlretro 6connector prototype -# -DSTM_INL6 #inlretro 6connector # -DSTM_ADAPTER #stm32 to kazzo adapter board +# -DSTM32F070x6 \ #32KB version of both packages (TSSOP-20,LQFP-48) # -DSTM32F072x8 \ #64KB version of all packages (LQFP-48,64,100) # -DSTM32F070xB \ #128KB version of both packages (LQFP-48,64) -# -DSTM32F070x6 \ #32KB version of both packages (TSSOP-20,LQFP-48) -# -DF_CPU=8000000 INCLUDE=-I ./include_stm CFLAGS+= $(DEFINE) $(INCLUDE) diff --git a/firmware/Make_stm_nes b/firmware/Make_stm_nes index c99794d..bcde0ad 100644 --- a/firmware/Make_stm_nes +++ b/firmware/Make_stm_nes @@ -50,15 +50,12 @@ LFLAGS=$(USE_NANO) $(USE_NOHOST) $(LDSCRIPTS) $(GC) $(MAP) DEFINE+=\ -DSTM32F070x6 \ - -DF_CPU=8000000 \ + -DF_CPU=4800000 \ -DSTM_CORE \ -DSTM_NES #stm32 with NES connector only v2.0N (070C6T6) -# -DSTM_ADAPTER #stm32 to kazzo adapter board -# -DSTM_INL6 #inlretro 6connector +# -DSTM32F070x6 \ #32KB version of both packages (TSSOP-20,LQFP-48) # -DSTM32F072x8 \ #64KB version of all packages (LQFP-48,64,100) # -DSTM32F070xB \ #128KB version of both packages (LQFP-48,64) -# -DSTM32F070x6 \ #32KB version of both packages (TSSOP-20,LQFP-48) -# -DF_CPU=8000000 INCLUDE=-I ./include_stm CFLAGS+= $(DEFINE) $(INCLUDE) diff --git a/firmware/build_stm/inlretro_stm.bin b/firmware/build_stm/inlretro_stm.bin deleted file mode 100644 index 06bb980d296dcba085bdbdd2b56b0c4e11301ce3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20892 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 OKN9#K3H)D{!2beRBl=7L diff --git a/firmware/build_stm/inlretro_stm.hex b/firmware/build_stm/inlretro_stm.hex deleted file mode 100644 index 94a9cc2..0000000 --- a/firmware/build_stm/inlretro_stm.hex +++ /dev/null @@ -1,1309 +0,0 @@ -:020000040800F2 -:1000000000180020C1000008FD0000089939000810 -:1000100000000000000000000000000000000000E0 -:10002000000000000000000000000000FD000008CB -:100030000000000000000000FD000008FD000008B6 -:10004000FD000008FD000008FD000008FD0000089C -:10005000FD000008FD000008FD000008FD0000088C -:10006000FD000008FD000008FD000008FD0000087C -:10007000FD000008FD000008FD000008FD0000086C -:10008000FD000008FD000008FD000008FD0000085C -:10009000FD000008FD000008FD000008FD0000084C -:1000A000FD000008FD000008FD000008FD0000083C -:1000B000FD000008FD000008FD000008AD36000846 -:1000C00009490A4A0A4B9B1A03DD043BC858D05021 -:1000D000FBDC0849084A0020521A02DD043A885025 -:1000E000FCDC01F0DDFE00006C4D0008000000208B -:1000F000300400203004002020070020FEE7C04626 -:10010000FF23F0B5B74C85B023700023637083796B -:1001100005000093407801380E2801D901F0AAFBB0 -:1001200004F03AFD0F00B1059B07A708650AA80B6C -:10013000930B2D09D509380A620AE508F708090961 -:100140001B09A878AA888C2319281CD804F024FD40 -:1001500024002C0022011E02EA0289031804D404A0 -:10016000F004FC0404050C0515051E052C053405DA -:100170003C0544051A001A001A0049055E0575057C -:10018000D202DE0200232370974B0098A2B2240C07 -:100190005A819C8105B0F0BDB023944A5B0351693C -:1001A0000B4353610023EEE7152A01D900F05CFDF3 -:1001B000100004F0F1FC160023002E005905390050 -:1001C00044004F0059055C00690073008000590528 -:1001D00059058D009A00A700B400C100CE00D800D8 -:1001E000E2009023DB051A6881490A401A608022E8 -:1001F000D96852030A43DA600023C4E7902301223E -:10020000DB05196891431960D9680A43DA60002355 -:10021000B9E790230422DB05196891431960D96876 -:100220000A43DA600023AEE790231022DB05196849 -:1002300091431960D9680A43DA600023A3E7902349 -:100240004022DB05196891431960D9680A43DA60D6 -:10025000002398E79023DB051A6866490A401A6074 -:100260008022D968D2040A43DA6000238BE7902306 -:10027000DB051A6860490A401A608022D968520179 -:100280000A43DA6000237EE704225C4B196891433D -:100290001960D9680A43DA60002374E79023DB050C -:1002A0001A6857490A401A608022D968D2050A4361 -:1002B000DA60002367E79023DB051A6851490A409A -:1002C0001A608022D968D2020A43DA6000235AE712 -:1002D0009023DB051A684C490A401A608022D968CD -:1002E00052000A43DA6000234DE79023DB051A68C9 -:1002F00046490A401A608022D968D2000A43DA606F -:10030000002340E79023DB051A6841490A401A6040 -:100310008022D968D2010A43DA60002333E79023B0 -:10032000DB051A6833490A401A608022D968D20472 -:100330000A43DA60002326E79023DB051A68354973 -:100340000A401A608022D96852050A43DA60002305 -:1003500019E70122294B196891431960D9680A43AA -:10036000DA6000230FE710222B4B196891431960C4 -:10037000D9680A43DA60002305E79023DB051A6891 -:1003800022490A401A608022D968D2000A43DA6002 -:100390000023F8E6152A01D900F069FC100004F0EA -:1003A000FBFB16003D004800660453005E00690038 -:1003B000660474007F0089009400660466049F0050 -:1003C000AA00B500C000CB00D600E000EA009023F0 -:1003D000DB051968064801401960DA680240DA60F6 -:1003E0000023D0E6E4060020006000400010024038 -:1003F000FFFFEFFFFFFFFFFBFFEFFFFF00040048E1 -:10040000FFFFFFBFFFFFFBFFFFFEFFFFFFFBFFFF45 -:10041000FFBFFFFFFFFFFFEF000C0048902301210B -:10042000DB051A688A431A60DA688A43DA600023B7 -:10043000A9E690230421DB051A688A431A60DA686A -:100440008A43DA6000239EE690231021DB051A68B8 -:100450008A431A60DA688A43DA60002393E69023BD -:100460004021DB051A688A431A60DA688A43DA6039 -:10047000002388E69023DB051968CE480140196007 -:10048000DA680240DA6000237DE69023DB05196814 -:10049000C94801401960DA680240DA60002372E658 -:1004A0000421C64B1A688A431A60DA688A43DA6004 -:1004B000002368E69023DB051968C14801401960F4 -:1004C000DA680240DA6000235DE69023DB051968F4 -:1004D000BC4801401960DA680240DA60002352E645 -:1004E0009023DB051968B84801401960DA680240BA -:1004F000DA60002347E69023DB051968B348014022 -:100500001960DA680240DA6000233CE69023DB05DC -:100510001968AF4801401960DA680240DA600023C8 -:1005200031E69023DB051968A24801401960DA68BA -:100530000240DA60002326E69023DB051968A5480F -:1005400001401960DA680240DA6000231BE60121ED -:100550009A4B1A688A431A60DA688A43DA60002381 -:1005600011E610219C4B1A688A431A60DA688A43A4 -:10057000DA60002307E69023DB0519689348014001 -:100580001960DA680240DA600023FCE5152A00D918 -:1005900070E3100004F000FB16001F0027006E033C -:1005A0002F0037003F006E034800510058006100E3 -:1005B0006E036E036A0073007C0085008E00970056 -:1005C0009E00A50090228023D20511685B030B4397 -:1005D00013600023D7E590220123D20511680B4355 -:1005E00013600023CFE590220423D20511680B434A -:1005F00013600023C7E590221023D20511680B4336 -:1006000013600023BFE590224023D20511680B43FD -:1006100013600023B7E590228023D2051168DB0424 -:100620000B4313600023AEE590228023D2051168AE -:100630005B010B4313600023A5E504235F4A1168A7 -:100640000B43136000239EE590228023D20511689E -:10065000DB050B431360002395E590228023D20530 -:100660001168DB020B43136000238CE5902280238A -:10067000D20511685B000B431360002383E59022D1 -:100680008023D2051168DB000B43136000237AE559 -:1006900090228023D2051168DB010B4313600023F5 -:1006A00071E590228023D2051168DB040B431360AF -:1006B000002368E590228023D20511685B050B4377 -:1006C000136000235FE501233C4A11680B4313606C -:1006D000002358E51023404A11680B4313600023A0 -:1006E00051E590228023D2051168DB000B43136093 -:1006F000002348E58D23082A00D044E590224023BA -:10070000D20551680B43536000233CE58D23082A32 -:1007100000D038E590224021D20553688B435360C6 -:10072000002330E5152A00D9A7E2100004F034FABE -:1007300016001D002300A50229002F003500A50288 -:100740003C0056005B006200A502A50269006F0034 -:1007500075007B00820089008E0093008022902328 -:10076000D200DB059A6200230DE590230122DB0510 -:100770009A62002307E590230222DB059A62002398 -:1007800001E590230422DB059A620023FBE4902319 -:100790000822DB059A620023F5E48022902392016F -:1007A000DB059A620023EEE490234022DB059A6287 -:1007B0000023E8E4FFFFFFFBFFEFFFFF000400481A -:1007C000FFFFFFBFFFFFFBFFFFFEFFFFFFFBFFFF82 -:1007D000FFBFFFFFFFFFFFEF000C00480222CF4BDF -:1007E0009A620023CFE4802290231202DB059A62F2 -:1007F0000023C8E4802290239200DB059A62002344 -:10080000C1E490231022DB059A620023BBE490230D -:100810002022DB059A620023B5E490238022DB05C9 -:100820009A620023AFE4802290239201DB059A6252 -:100830000023A8E480229023D201DB059A620023E2 -:10084000A1E40122B54B9A6200239CE40422B44B3C -:100850009A62002397E490232022DB059A6200230A -:1008600091E4152A00D90BE2100004F095F9160066 -:100870001D002300090229002F00350009023C0059 -:10088000420047004E000902090255005B0061006A -:1008900067006E0076007C00820080229023D200E8 -:1008A000DB059A6100236EE490230122DB059A6147 -:1008B000002368E490230222DB059A61002362E4AE -:1008C00090230422DB059A6100235CE49023082234 -:1008D000DB059A61002356E4802290239201DB0518 -:1008E0009A6100234FE490234022DB059A610023A4 -:1008F00049E40222894B9A61002344E48022902338 -:100900001202DB059A6100233DE4802290239200CD -:10091000DB059A61002336E490231022DB059A61FF -:10092000002330E490232022DB059A6100232AE48F -:1009300090238022DB059A61002324E48022902307 -:100940009201DB059A6100231DE480229023D201ED -:10095000DB059A610023FFF716FC01226F4B9A61B9 -:100960000023FFF710FC04226D4B9A610023FFF770 -:100970000AFC90232022DB059A610023FFF703FC89 -:1009800002236370152A00D9B1E0100004F0F0F8DA -:100990000B151EAF273039AF434C545DAFAF6770B6 -:1009A00079828C969EA690238022DB051B69D2005B -:1009B000134063800023FFF7E6FB90230122DB0551 -:1009C0001B69134063800023FFF7DDFB90230222A5 -:1009D000DB051B69134063800023FFF7D4FB9023E2 -:1009E0000422DB051B69134063800023FFF7CBFB68 -:1009F00090230822DB051B69134063800023FFF767 -:100A0000C2FB90238022DB051B69920113406380A7 -:100A10000023FFF7B8FB90234022DB051B6913403E -:100A200063800023FFF7AFFB02223C4B1B6913409E -:100A300063800023FFF7A7FB9023DB051B69DB0B1B -:100A4000DB0363800023FFF79EFB90238022DB05FE -:100A50001B699200134063800023FFF794FB9023EF -:100A60001022DB051B69134063800023FFF78BFB1B -:100A700090232022DB051B69134063800023FFF7CE -:100A800082FB90238022DB051B69134063800023D7 -:100A9000FFF779FB90238022DB051B69920113404D -:100AA00063800023FFF76FFB90238022DB051B6927 -:100AB000D201134063800023FFF765FB0122174B2F -:100AC0001B69134063800023FFF75DFB0422144B76 -:100AD0001B69134063800023FFF755FB90232022FE -:100AE000DB051B69134063800023FFF74CFB0023E9 -:100AF00063708D33FFF747FB80230A4ADB0251699D -:100B00000B435361054B08491A680A401A60D968BB -:100B1000064A0A43DA600023FFF735FB0004004869 -:100B2000000C004800100240FFFFAAAA0000555523 -:100B3000EF4BF0491A680A401A60D968EE4A0A4336 -:100B4000DA600023FFF71FFBE94AEA4913680B400C -:100B500013600023FFF717FBE54AE74B11680B43CF -:100B600013600023FFF70FFBE14912024B69DBB270 -:100B70001A434A610023FFF706FBDD4B1B691B0A82 -:100B8000A370012363700023FFF7FDFA8023DB4A83 -:100B90001B0351690B435361D94ADA4B11680B436C -:100BA00013600023FFF7EFFAD54AD64BD1680B4309 -:100BB000D3600023FFF7E7FAD14AD34913680B400B -:100BC00013600023FFF7DFFACD4ACE4B11680B43C9 -:100BD00013600023FFF7D7FAC94B5A610023FFF7D0 -:100BE000D2FAC023C54ADB0251690B435361C04AA4 -:100BF000C64B11680B4313609022A023D2051168E5 -:100C00005B030B4313600023FFF7BDFAB84ABF4BE9 -:100C1000D1680B43D3609023A021DB05D86849033A -:100C20000143D9601168BA48014011601A68B94996 -:100C30000A401A600023FFF7A6FAFF25AC4893008C -:100C400041692B40B44DD20029400B4343619021B0 -:100C5000C020C905C0004B690240B04803401A4398 -:100C60004A610023FFF78FFA8D23FFF78CFA8D235B -:100C7000FFF789FA8D23FFF786FA8D23FFF783FAB2 -:100C80008D23FFF780FAAA88AD78032D00D10BE100 -:100C900055D8012D63D05ED901F058F8902201217A -:100CA000D20513680B4313601023916111680B4345 -:100CB000136004234021936113680B4313600823DE -:100CC00093619161802311685B010B431360802362 -:100CD0008A48DB024169874E0B43854943610B68B3 -:100CE00033400B60CD68844B1D43CD600C683440AD -:100CF0000C60CC682343CB60802344691B032343EF -:100D00007F4C436125687F4B2B4323600023636145 -:100D1000C0244569E4022C4344610C687B482043AD -:100D20000860A020146840032043106048697A4C92 -:100D300020404861516979480140516151E0052DD9 -:100D400052D000D211E1072D00D191E0802D00D1C9 -:100D500030E1962345E000F0F9FF002341E000F088 -:100D6000F5FF9023DB051A682A431A6080229D61F3 -:100D7000196852030A431A6080220421D2009A6241 -:100D80001A685C4D0A431A6002229A6118680E3292 -:100D900002431A604022996119680A431A600822C6 -:100DA0009A618023554ADB0251690B435361504BD2 -:100DB000196829401960DC684F490C43DC601868E9 -:100DC00028401860D8680143D960802351691B030B -:100DD0000B4353614A4A4B4B11680B43136000238A -:100DE00053614F4CFFF7CFF900F0B0FF9022012183 -:100DF000D20513683F4E0B431360102391611168B5 -:100E00000B43136004234021936113680B43136069 -:100E1000082393618023916211685B010B43136087 -:100E200080233649DB02486903434B61304B186825 -:100E300030401860DD6830480543DD601C68344090 -:100E40001C60DC682043D860802348691B0303438F -:100E50004B612B492B4B086803430B6000234B610C -:100E600080211068C9010143116080219162B8E7B7 -:100E700000F06CFF90220121D205136840200B4343 -:100E800013601023916111680B4313600423936175 -:100E90001168014311600821916111680B431360CF -:100EA0000223936190610DE7D2B2022A3ED0002363 -:100EB000032A96D09723012A93D180230F491B033D -:100EC000486903434B610E490B6893430B60CB6841 -:100ED0001343CB604B6813434B608A610B681A4322 -:100EE00000230A600F4A13700F4A116079E7C04669 -:100EF00000040048FFFFAAAA000055550010024058 -:100F00000008004855555555AAAAAAAA50550000F0 -:100F1000AFAAFFFFFFFFEBFF03FF0000FFF9000098 -:100F2000E4060020F0060020EC060020B023B74ABB -:100F30005B03516940200B4353619023DB051A6822 -:100F4000B3490A401A608022D96852011143D9601E -:100F5000596801435960986119680A4308211A6069 -:100F6000AC4A1170AC4A1360F7E6D2B29823012A5A -:100F700000D036E79022A94BD2051A6006220A213A -:100F8000A74B1A70A74BA84A1360A84A1170A84A29 -:100F900001311360A74A1170A74A13600C22A74BB6 -:100FA0001A70B023994A5B0351690B43536100F0F7 -:100FB000F1FDD2E69023012540218026DB056570F6 -:100FC00099621A68760132431A60C04690481C69DB -:100FD0001A680C4002401A60DA680240DA60F022B7 -:100FE000002C37D11A6802401A60DA681643DE60B6 -:100FF0001A6994461A690192C0461A690292C0465B -:10100000C0461A690392C046C046C0461F69C04622 -:10101000C046C046C0461E691A6802401A60DA68B7 -:101020001040D860634622000B4213D1019B2A0076 -:101030000B420FD1029B02320B420BD10B000399E2 -:101040000332194206D104321F4203D105321E4237 -:1010500000D1D1327A4B9A707FE6E978A888AD78D2 -:101060000D2D00D195E023D8062D56D00FD8022D96 -:101070005AD005D8002D4BD0012D52D0A02549E0E3 -:10108000042D74D0052DF9D101F030FE47E0092D73 -:1010900076D007D8072D00D181E0082DEED101F0E0 -:1010A0002BFF3CE00B2D77D06DD901F0A7FE36E089 -:1010B000222D3CD011D8102D74D006D80E2D65D01D -:1010C0000F2DDBD101F07AFF29E0202D52D054D82A -:1010D000112DD3D101F0D6FE21E0822D00D190E078 -:1010E00009D8802D61D0812DC8D10123637001F012 -:1010F000B7FFA07013E0852D00D1ADE0862D00D1A3 -:10110000AFE0842DBAD10123637001F017FEF0E740 -:1011100000F014FD2570FFF737F802F08FF8002576 -:10112000F8E701F027FEFAE701F0EEFCF7E7454BA0 -:10113000902258610223D20593623A4B424D1E68B9 -:10114000090235431D605D6900B2EDB22943596162 -:10115000002801DA01219162C046C0460121916157 -:10116000491891611A6839490A401A60D7E702F0B4 -:101170008BFAD4E7364B1870D1E7364B1880CEE7A0 -:1011800002F03AF8CBE701F049FFC8E702F00CF8AB -:10119000C5E701F0D7FFC2E701F0D0FEBFE701F0DD -:1011A000A9FFBCE701F07CFFB9E701219023617042 -:1011B000DB051D68164E35401D60DA680225324099 -:1011C000DA608022D2009A6299619D611D4D68614A -:1011D000C046C04600B29A61002800DA9962C04653 -:1011E000C046C046C046C046C046902280210D4B36 -:1011F000D205C9001B69916201211B0A9161A3708C -:101200008DE70123637001F0DDFD72E700100240FD -:10121000FFEFFFFFF0060020EC060020040700208F -:101220000807002000040048FC06002000070020FA -:101230000C07002010070020F4060020F80600200C -:10124000E40600200008004800005555FFFFAAAA48 -:10125000880400203404002001236370C14B1B78F4 -:10126000CDE702236370C04B1B88A3701B0AE37099 -:1012700055E7A878E978AB88AA2206281AD803F09F -:1012800077FC042B1C2327332100FF25B7489A0045 -:1012900041692A40B64DDB0029400A434261902152 -:1012A000C020C905C0004A690340B2480240134348 -:1012B0004B6100222270FEF767FF0022180001F048 -:1012C0007FFBF6E70122F9E7180001F0F5FBF0E7F4 -:1012D000180001F0C9FBECE7012200216270180040 -:1012E00001F09EFBA070E4E701216170F7E7AA78A6 -:1012F000002A07D00023012A01D1FEF744FFAF23C3 -:10130000FEF741FF01236370A933A3701300FEF7BA -:101310003AFFAA78002A07D00023012A01D1FEF75C -:1013200032FFB023FEF72FFF01236370A933A370B0 -:101330001300FEF728FFAA78002A07D00023012A0D -:1013400001D1FEF720FFB123FEF71DFF01236370DB -:10135000A933A3701300FEF716FFAA78002A07D05E -:101360000023012A01D1FEF70EFFB223FEF70BFF87 -:1013700001236370A933A3701300FEF704FFEA781A -:10138000A988AD78112D00D19AE007D8012D6BD036 -:10139000002D0FD0022D7CD08225BBE6212D00D15F -:1013A00084E0222D00D187E0122DF5D102231020F8 -:1013B000637088E0012631006F4D704F2A783B68DA -:1013C000914099625A6810208A435A6001F082FC69 -:1013D00031002B783A6899400B00FA270425916177 -:1013E00051687F000B4353600196380001F072FC96 -:1013F000614A01991278614E9140336838009962D0 -:101400005A68013D8A435A6001F064FC5A4B0199C5 -:101410001B78326899400B0091615168ADB20B4363 -:101420005360002DE1D1FA270435380001F052FC59 -:101430000121514A514E12783368914099625A689D -:1014400038008A435A6001F045FC01214A4B32685A -:101450001B78013D99400B0091615168ADB20B437F -:101460005360002DE1D155E62900434E434F3278B9 -:101470003B68914099625A6810208A435A6001F093 -:1014800029FC32783B6895409D615A6815435D6040 -:1014900045E60123384A6370127839499340374A48 -:1014A0009BB21268002002F07BFA22E601230020A2 -:1014B000637001F05FFB1CE6012310206370F8E706 -:1014C00002230020637001F0AFFB608027E6AB7859 -:1014D000AA88042B1DD007D8022B1FD024D8012B9B -:1014E00012D08723FEF74FFE072B26D003D8052BFB -:1014F000F7D1244B16E0082B24D0802BF1D100F03B -:1015000049FB0023FEF73FFE1F4A1278A27063706A -:10151000F7E71E4B1B78A3700123F8E71A4B1A70EC -:1015200083221A4B1A70ECE7174B184D1A7083235D -:101530002B7000F09FFB2B78EDE7154B1A70120A09 -:101540005A70DEE7124B1A78A2705A78E2709A78D5 -:101550002271DA7862711A79A2715B79E3710623DC -:10156000D5E7C04688040020340400200004004869 -:1015700003FF0000FFF90000F0060020EC06002049 -:1015800004000200D1040020B0040020D204002096 -:10159000B1040020AB78AA88022B18D0032B19D0F5 -:1015A000012B1ED1024885460248001C0047C04658 -:1015B00078120020C5CAFF1F0600050008000700BA -:1015C00019C9FF1FEFBEADDE0023FEF7DCFDBD4BEA -:1015D0001A60F9E7BB4B18680004104302F0DEF90B -:1015E000F2E78A23FEF7CFFD8823FEF7CCFDAA7829 -:1015F0001300303B2F2B1CD8E878032816D803F0B3 -:10160000B7FA18021113B04B512A00D183E029D840 -:10161000312A5BD00FD8002A39D0302A4FD0B423DA -:10162000FEF7B1FDA94BEFE7A94BEDE7B523FEF7B8 -:10163000AAFDA84BE8E7332A56D04ED3502AEED164 -:1016400000222270063262701A7AA270DA78E27092 -:101650005A7A22719A7A62719A78A2715B7CE371EC -:10166000FEF792FD7F2A00D989E0702A63D2602AB2 -:101670003FD0612A47D0522AD1D100221B88227044 -:10168000A37002321B0A6270E370FEF77DFDFF2338 -:10169000914953540132102AFBD18B4A8D49D370A2 -:1016A00093708B4ACB70D370937001228B708749F3 -:1016B000CB708B70894B1A700023FEF764FDAA88EB -:1016C000110AD9721A730023FEF75DFDAA88110A68 -:1016D00059739A730023FEF756FDAA88110AD9732D -:1016E0001A740023FEF74FFDAA885A740023FEF7F0 -:1016F0004AFD0023237001336370AB88764AD35CC4 -:10170000A370FEF741FD0023237001336370744B17 -:101710001B68DB78F4E70022227006326270DA7A06 -:10172000A2701A7BE2705A7B22719A7B6271DA7B1B -:10173000A2711B7C93E7674B69495C682B787F2B10 -:1017400000D99AE06846674B007818700B68D87823 -:1017500000280DD000230093982805D195E00023A0 -:101760000093D02800D190E010205C4B187003E06B -:101770005D4803609020D870FF23009385E0072028 -:10178000104003281AD803F0F3F91C021E174E4B21 -:10179000802A01D2FEF7F8FC872A16D97032D2B21D -:1017A000072A01D9FEF7F0FC00222270EA789A722B -:1017B000AA881A80FEF7E8FC454BE9E7B523FEF757 -:1017C000E2FC444BE4E7414BE2E7A888E978C6B283 -:1017D0008D19BE22102D00DD6CE50432002900D1E8 -:1017E00068E5DD78033AFF2D00D063E59D7801328E -:1017F000FF2D00D05EE50022374DD7B2B9421CD88C -:101800004F01013F1F727701BC460022374F000A8B -:1018100067449870DA705A729A721A80DA721A7380 -:101820005A739A73DA731A745A745F60AD19A854B4 -:101830000132D3B29942FAD83BE50132B718013FE1 -:10184000EF5DFF2FD9D0C12234E5AB78002B04D057 -:10185000402B08D0D223FEF796FC2370AA881F4B9A -:101860001A70FEF791FC00232370013363701B4B49 -:101870001B7845E78023FEF786FC0B68D878D828CC -:1018800000D06CE780205C68D8700B68002159722A -:10189000DB78902B01D0FEF777FC712A01D0FEF7A0 -:1018A00073FC114BA9881A68526811701A68516844 -:1018B000AA88120A4A701A68537A02335372FEF7E2 -:1018C00063FCC046300400204C040020600400206B -:1018D0007404002038040020D30400209004002069 -:1018E0008C0400201807002014070020E4040020C6 -:1018F000F0B5404B8BB0089119783F4B09921B789B -:10190000019002933D4B019D1C683D4B3D481A7868 -:1019100001231E0096403C4AA662102D5ED112782B -:1019200000689340836201200200364B05901F68D7 -:10193000354B1B789A4003920200344B1B68069388 -:10194000334B1B789A4093B202000793314B1B68CC -:101950009C46314B1B789A40002304921A00019850 -:10196000202806D1029D05981D4105423ED00398CE -:10197000B861089820280FD1002B01D11E4883544C -:10198000069805690798054206D01B48855C0598AE -:10199000984005431848855409980139C9B2002870 -:1019A00002D0002900D1A6616046049D0133DBB25C -:1019B00085618562082B05D101320F4BD2B29B5C49 -:1019C000029300230029CAD10E4B1A680E4B1978D6 -:1019D00001238B409362A6620BB0F0BD019D112DD7 -:1019E000A1D112780068934083619CE70398B862A4 -:1019F000BFE7C046D1040020B10400200C0700203E -:101A000010070020FC06002000070020040700202B -:101A100008070020F4060020F8060020F7B51F4B49 -:101A20001F491A781F4B10282ED101241E780D68EB -:101A3000B440AC62012635000C6831001B78019679 -:101A40009D40194B1B680093184B1B78994000234D -:101A50008C46190020280DD1154E019F765C1E4141 -:101A60003E4219D0A5610133DBB2082B02D100231D -:101A70000131C9B26646009F013AD2B2BE61BE6270 -:101A8000002AE7D1A562F7BD1128D3D101241E7821 -:101A90000D68B440AC61CDE7A562E4E7D104002055 -:101AA0000C07002010070020F4060020F806002094 -:101AB000B1040020F7B50D001600FF27000203B2A5 -:101AC0004C7A01932A7AE3B2A24202D26B720020CE -:101AD000FEBD20006A683840D15C019B0134184388 -:101AE00080B2B047A4B2EDE7022907D10F4B104AEC -:101AF000984218D0904209D1180007E0032906D176 -:101B00000A4B0B490B4A98420BD108007047042935 -:101B1000FCD1064B064A984205D006499042F4D0C3 -:101B2000054A8842E6D11000F0E7C046380400209C -:101B30004C0400206004002074040020104B114A63 -:101B400010B558611068104B0902034313605369C4 -:101B50000E4CDBB21943902351618021DB051868DC -:101B600049010843186040209862186820401860B6 -:101B7000D8680143D960136805490B40136010BD54 -:101B8000000800480004004800005555FFEFFFFF23 -:101B9000FFFFAAAAF0B52C4B85B019682B4B2C4837 -:101BA0001B7800780193012302901E0018001F008B -:101BB000019A029C9640A040264D274A2D78126833 -:101BC000AF408E628446906224489D4000688762E0 -:101BD000046803941C00AC402500039C2543056069 -:101BE0004568019CBD4345609C401D00A5400868B8 -:101BF0001C00284308604868B04348601068029998 -:101C000099408C4021000143604611605168814336 -:101C1000134851600078134A984083401268124874 -:101C2000116899431160D1680B43D36080220F4B38 -:101C30001A70002319000E4A13701A18013311701C -:101C4000202BFAD105B0F0BD0C07002010070020B2 -:101C500000070020F8060020FC060020F406002003 -:101C60000807002004070020B1040020D20400204F -:101C7000D104002010B5334B1B78082B5DD016D84B -:101C8000314C032B44D007D8012B2DD0022B31D05F -:101C9000EE222D4B1A7023E0062B44D049D8042B9A -:101CA000F6D18123012223702021112027E00F2B60 -:101CB00034D008D8244C0D2B25D00E2BE8D181230D -:101CC0000022237027E0802B08D01F4CFF2B08D068 -:101CD000102BDDD181230022237027E0FFF75AFF6C -:101CE00010BDF0232370FBE7812320202370FFF732 -:101CF00095FE06E081230122002123702020FFF7BA -:101D0000F7FD8223EEE78123002223701100F5E71F -:101D100081230122237020211020F0E781230A4C27 -:101D200000222370C0E781230122237020210800B4 -:101D3000E5E7812310202370D9E78123024C11208D -:101D40002370D4E7B0040020D2040020BC2347490C -:101D5000DB038A6AF0B513438B628B6A444A012421 -:101D600013408B6290238022DB051868D201024366 -:101D70001A6080229A61B0224869520302434A6184 -:101D80001A683C483C4F02401A608022D8685203CF -:101D900002430420DA601A68A2431A60DA68224318 -:101DA000DA601A6882431A60DA680243DA60102245 -:101DB0001D6895431D60DD682A43DA6040221D6876 -:101DC00095431D60DD682A43DA601A682B4D2A406E -:101DD0001A608022DD68D2042A43DA601A68284D2E -:101DE0002A401A608022DD68D2052A43DA601A6828 -:101DF000244D2A4080251A60DA68ED022A43DA6011 -:101E0000214A1668A6431660D6683443D4601E681B -:101E10003E401E60DC683C40DC6080234C691B0354 -:101E200023434B61194B1A4C1E681A4F26431E6000 -:101E30001E683E401E60DE683443DC604B691D4313 -:101E40004D611368144D2B401360D468134B1C4331 -:101E5000D460116829401160D1680B43D3601368C6 -:101E600083431360D3681843D060F0BD0010024074 -:101E7000FFFFA1FFFFFFEFFFFFEFFFFFFFFFFFFBF4 -:101E8000FFFFFFBFFFFFFBFF000400480008004802 -:101E900055555555AAAAAAAAFFFFAAAA000055554A -:101EA0009022D34B12031968F0B50A431A608022BE -:101EB00089B0920219681142FCD0012259680A4384 -:101EC0005A608022596852020A435A608022596837 -:101ED00052030A435A608022196852040A431A6066 -:101EE0008022920419681142FCD01121C14AC24CCF -:101EF00011605A680E398A43110002220A435A605F -:101F00008022196B0A431A638022D96912040A439A -:101F1000DA61BA4BE381BC231B689847B84B6382F4 -:101F2000B84B238262B6FFF711FFF022B64B1A704E -:101F3000B64E2023327811009943D2292ED1B449CC -:101F4000B448C978C3780224FF2904D1FF3B1C00A0 -:101F5000631E9C41E4B2B04BDB78FF2B00D003241E -:101F6000AE4BDB78FF2B00D00424AD4BAD4F1C7083 -:101F70003860D22A12D10023012505E02100FFF7A5 -:101F8000B3FD01230135EDB2A542F7D3002B00D0FC -:101F9000386080223B68DA70D02333703378F22BBC -:101FA00005D10022023B33709E4B1B68DA703578F6 -:101FB000D02D01D000F0A0FC9A4E3068C378802B61 -:101FC00001D000F099FC964B1978FFF78DFD0023A6 -:101FD00030600400C57006884372C07AF5B21038CC -:101FE000152801D900F086FC02F0D6FD52008A00C7 -:101FF000D200D60084048404840484048404840409 -:102000008404840484048404840484041600250065 -:1020100036003B0041004B00E17BC4230F2901D96E -:1020200000F069FC09013143237AA278C9B26068E3 -:1020300001F0C0FA0EE0E17B3C230A009A438833AA -:10204000002A01D000F057FC237AA2782943606867 -:1020500001F0E6FA607292E0237AA278E17B2943EC -:10206000E5E7E17B3F230A009A438533E8E7227ADC -:10207000E17BA378009200222943606801F05CFABA -:10208000E8E7E17B227AA378294300920122F4E772 -:10209000E37B1E2B0BD1C020B6092233F1B2000224 -:1020A0009D4300F031FD237AA2788021D7E71C2BD5 -:1020B0000FD1A0208121C00100F026FD8020F6096B -:1020C000F1B2000200F020FDA0200021C00100F0CC -:1020D0001BFD8021E27B49421F2A05D00D43EDB252 -:1020E000237AA2782900A2E77022A02095430D430D -:1020F0002188C0010909C9B2EDB200F005FDEFE782 -:10210000E37BFE2B3BD17609F1B2474800F032FE6B -:102110001F21464B0D405A692D02D2B21543802132 -:102120009022C900D205A0786768267A5D61916126 -:102130000121FF259162033191625A692D022A40E3 -:1021400002435A61C0463A4900228C46C046614665 -:1021500009690130090AB9545969C0B229400132EC -:102160000143D2B259619642F0D290230421DB059B -:1021700099618021C9009962012199616272294B9C -:102180001B6819889A7A52181A80D822DA70B3E339 -:10219000237AA278602162E7E37B002B20D1803391 -:1021A000F6091D43F3B20293FF20029B20499B00D6 -:1021B0004A6903401F48024013434B61C0209021ED -:1021C000029BC905C000DB004A6903401A4802406F -:1021D00013434B61227AA3782900009200224CE736 -:1021E000012BE1D14021B604B60E31430291DBE769 -:1021F0000010024000200240006000403CA5FFFFAC -:102200008532000801010008D2040020900400205B -:102210004C040020380400206004002074040020D6 -:10222000110700208C040020FF3F00000008004838 -:102230000004004803FF0000FFF90000E37B002BCF -:102240000BD13300803B657A5BB21B02AFB20393C4 -:10225000237ABB4200D3EBE06572E37B012B06D10E -:1022600030008038C0B2DC4A2100FFF723FCE37B5A -:10227000032B06D130008038C0B2D84A2100FFF7C6 -:1022800019FCE37B042B06D130008038C0B2D44A5D -:102290002100FFF70FFCE37B0A2B06D130008038CA -:1022A000C0B2D04A2100FFF705FCE37BFD2B15D11E -:1022B0003F20238830409B0904936B4680261B7C7B -:1022C00006430693677ABBB2039333021BB20793AC -:1022D000237A039A934200D3C9E06772E37B1E2BF3 -:1022E00011D13F2030408026238806439B09DBB272 -:1022F0000593657A33021BB2AFB20693237ABB42D1 -:1023000000D3FCE06572E37B0C2B17D11F2030401B -:1023100080260643C0202588A5216D09EDB2C001A5 -:1023200000F0F2FB2900B04800F0EEFB677A3502BE -:102330003D43237ABB4200D330E16772E37B1C2B21 -:102340003BD1A02023888121DB09DBB2C0010493AB -:1023500000F0DAFB80200499000200F0D5FBA020F9 -:102360005421C00100F0D0FB677AAA21BBB29F487C -:10237000039300F0C9FB55219D4800F0C5FB2021C7 -:102380009A4800F0C1FB802333431B021BB2069323 -:10239000237A039A934200D33CE1802090210002EB -:1023A000677200F0B1FB80200021000200F0ACFB5E -:1023B0008020F021000200F0A7FBE37B1F2B30D12F -:1023C000A0202188C0010909C9B200F09DFBAA2103 -:1023D0008648657A00F098FB5521854800F094FB0B -:1023E0008248202100F090FB702380209E434042D1 -:1023F000304340B20302AFB20493237ABB4200D30E -:1024000050E1802090210002657200F07DFB802069 -:102410000021000200F078FB8020F021000200F093 -:1024200073FBF4232288E370A37A9B18238083E252 -:10243000039863682843595D80B200F0DDFE63684D -:102440005A5D6C4B824206D004211A680A431A6016 -:1024500002229A61FCE604211A6801358A431A6057 -:10246000DA6801370A43DA60EDB2BFB2F0E6002164 -:10247000614800F049FBAA21604800F0DFFE5521C9 -:102480005F4800F0DBFEA0215C4800F0D7FE6B4601 -:10249000187C5C4B0699C01880B200F035FB079D94 -:1024A00063683D43ADB2D95D280000F0C7FEC04669 -:1024B000280000F0D5FD0590280000F0D1FD059B17 -:1024C0008342F4D163680599DA5D4A4B8A420FD1A1 -:1024D000039A1968013292B203920422914319605F -:1024E000D96801370A43DA600222FFB29A62EFE646 -:1024F000042219680A431A6002229A61E8E6C020A1 -:102500000121000200F000FBAA213F4800F0FCFA84 -:10251000C0200021000200F0F7FA55213B4800F0EE -:10252000F3FAC0200121000200F0EEFAA0213648A3 -:1025300000F0EAFAC0200599000200F0E5FA069BD7 -:102540002B439BB2039363680398595D00F0DCFA58 -:10255000C046039800F084FD0490039800F080FDCD -:10256000049B8342F4D1636804995A5D214B8A42EB -:102570000DD104221968013591431960D9680137DA -:102580000A43DA600222EDB2BFB29A62B6E60422D2 -:1025900019680A431A6002229A61AFE6AA211C4810 -:1025A00000F0B2FA5521194800F0AEFAA0211848FF -:1025B00000F0AAFA63682800D95D00F0A5FAC046C9 -:1025C000280000F04DFD0390280000F049FD039B1A -:1025D0008342F4D1ADE6C046A93100084531000878 -:1025E000F5300008A1300008FFFF0000AA8A0000B3 -:1025F000558500000004004869FD000055550000A5 -:10260000AA2A000069FDFFFF55950000AAAA000054 -:1026100055D50000A0205421C00100F075FA069D98 -:10262000A0213D43ADB2280000F06EFA6368280097 -:10263000D95D00F069FAC046280000F011FD059050 -:10264000280000F00DFD059B8342F4D16368059AD4 -:10265000DB5DC04D93420FD1039B2A6801339BB2CF -:10266000039304239A432A60EA6801371343EB601B -:102670000223FFB2AB628BE6A0208121C00100F0F3 -:1026800043FA80200499000200F03EFAA020542171 -:10269000C00100F039FA04232A6813432B60022397 -:1026A000AB6175E6049EA0212E43B6B2300000F067 -:1026B0002BFA63683000595D00F026FAC0463000FE -:1026C00000F0CEFC0390300000F0CAFC039B834274 -:1026D000F4D1636803995A5D9E4B8A420DD104215F -:1026E0001A6801358A431A60DA6801370A43DA60EA -:1026F0000222EDB2BFB29A627FE604211A680A4351 -:102700001A6002229A6178E6E37B002B04D1924A98 -:1027100021003000FFF7CEF9E37B012B04D18F4A73 -:1027200021003000FFF7C6F9E37B022B04D18C4A6D -:1027300021003000FFF7BEF9E37B042B04D1894A66 -:1027400021003000FFF7B6F9E37B0A2B04D1864A5B -:1027500021003000FFF7AEF9E37B0B2B04D1834A55 -:1027600021003000FFF7A6F9E37BFE2B00D058E6EE -:1027700021887F484909C9B200F0FCFAAA217D48A6 -:10278000657A00F0B3FA55217B4800F0AFFA79483A -:10279000202100F0ABFA1F2030400302AFB20493B7 -:1027A000237ABB420DD265729021002000F09EFA80 -:1027B0000021080000F09AFAF021002000F096FABB -:1027C0002FE6049EA0212E43300000F08FFA6368AC -:1027D0003000595D00F08AFAC046300000F0AEFAD1 -:1027E0000390300000F0AAFA039B8342F4D163689F -:1027F00003995A5D574B8A420DD104211A6801355D -:102800008A431A60DA6801370A43DA600222EDB2BD -:10281000BFB29A62C4E704211A680A431A6002220E -:102820009A61BDE730006030544A2100C0B2FFF722 -:1028300041F9F6E5E37B042B06D130008038C0B2C5 -:102840004F4A2100FFF736F9E37B052B04D14C4AB0 -:1028500021003000FFF72EF9E37B062B06D1300074 -:102860008038C0B2474A2100FFF724F9E37B072BE9 -:1028700004D1444A21003000FFF71CF9E37B002B10 -:102880001CD1FF2580331E4323883248DB09DBB28D -:102890009A0041692A403C4DDB0029400A434261CD -:1028A0009021C020C905C0004A6903403748024052 -:1028B00013434B613000210000F074FDE37B012BDA -:1028C00000D0AEE52388234A2F4851699B049B0E14 -:1028D00001409B000B4390215361C9054B692B4A72 -:1028E00030001A4080239B0013434B61210000F00D -:1028F00059FD96E5C323E370254B1D78F02D1BD1C0 -:10290000244E3468E378982B16D1234B2000197895 -:10291000FFF7EAF800233060C370E07AE570103802 -:102920002678042806D802F02DF989FCEFFE7DFFF9 -:1029300085FF7CFDC323E370184B1B78F02B01D17E -:10294000FFF7F6FA832B01D0FFF7F2FAFFF792F9BF -:10295000FFF7EEFA000400481D300008BD2F000804 -:102960003D2F0008F92E0008852E0008FD2D0008D7 -:10297000FF3F0000AA0A000055050000092B0008CF -:10298000B92A0008692A000803FF0000FFF90000C7 -:10299000900400208C04002011070020D2040020A5 -:1029A000002302000002002A04D1002B01D0802362 -:1029B00018437047DB43511EDBB20A40F3E70000C7 -:1029C000134B10B55861134B13481C680902204380 -:1029D00018605869C0B20143596190210820C905A7 -:1029E0008862002A01D101328A62C046C046C046D0 -:1029F000C046C046C046C046C04690220821D20507 -:102A00009161073991611A6804490A401A6010BD42 -:102A1000000800480004004800005555FFFFAAAA1E -:102A20000F4B58619023DB05002901D101229A62E6 -:102A300004229A62C046C046C046C046C046C04650 -:102A4000C046C046C046C046C046C046C04605490E -:102A500008699A61000A033AC0B29A617047C04699 -:102A6000000800480004004870B504000D00002272 -:102A7000AA210F48FFF7A4FF002255210D48FFF7B8 -:102A80009FFF0022A0210A48FFF79AFF0022290099 -:102A90002000FFF795FF00212000FFF7C1FF050090 -:102AA000C04600212000FFF7BBFF8542F3D170BD77 -:102AB000AA8A00005585000070B504000D000022B0 -:102AC000AA210F48FFF77CFF002255210D48FFF790 -:102AD00077FF0022A0210A48FFF772FF0022290099 -:102AE0002000FFF76DFF00212000FFF799FF050090 -:102AF000C04600212000FFF793FF8542F3D170BD4F -:102B000055550000AA2A00009023DB0530B51C684B -:102B1000134D09022C401C60DA68124C2A40DA601E -:102B2000114A506102229A62104A00B215682C4381 -:102B300014605469E4B2214351618021C900996154 -:102B4000002801DA01209862C046C046996201213E -:102B5000996149189961136805490B40136030BDAC -:102B6000FFEFFFFF00005555000800480004004833 -:102B7000FFFFAAAAF7B501230225294F01923A784F -:102B80000091054393400421A020264E2D049BB2C2 -:102B900029433268C00100F003FF040001283DD141 -:102BA0003B7809209C4005437830A3B23268290065 -:102BB000FF3000F0F5FE040001282FD13B78326889 -:102BC0009C402900A3B2002000F0EAFE0400012886 -:102BD00024D1009B180AFFF7E3FE3B7832689C4043 -:102BE0002900A3B200F0DCFE0400012816D16B46D8 -:102BF0001878FFF7D5FE22003B7829009A4093B25F -:102C0000326800F0CDFE0198FFF7CAFE3B783268CB -:102C10009C402900A3B200F0C3FE0400E0B2FEBD58 -:102C2000F0060020EC060020F7B501230225274F0F -:102C300000903A780191054393400421C020244E2E -:102C40002D049BB229433268800100F0A9FE0400E4 -:102C5000012838D109231D433B78C0209C403268AD -:102C6000A3B22900400000F09BFE040001282AD1F5 -:102C70003B7832689C402900A3B2002000F090FE0F -:102C8000040001281FD1019B180AFFF789FE3B7839 -:102C900032689C402900A3B200F082FE04000128A3 -:102CA00011D16B461879FFF77BFE22003B789A40E2 -:102CB00093B2009A14430922E1B209041143326825 -:102CC00000F06EFE0400A0B2FEBDC046F00600207B -:102CD000EC0600200023800080B2834200D17047C0 -:102CE000C046C04601339BB2F7E700000F4B30B53A -:102CF0009022586180230124D205DB0093620C4BA3 -:102D000094621D680B480902284318605869C0B2D4 -:102D100001435961C04608219162C046916119681A -:102D2000054801401960946130BDC0460008004864 -:102D30000004004800005555FFFFAAAA0B4B10B530 -:102D400080215861902301220424DB05C900996188 -:102D50009A629C62C046C046C046054800699C61B4 -:102D6000000A9962C0B29A6110BDC04600080048CE -:102D7000000400480E4B984202D880231B021843DF -:102D80000C4B0D4A58610D4B0902186802431A603A -:102D90005A69D2B211435961C04690220821D20526 -:102DA0009162C04691611A6805490A401A607047ED -:102DB000FF1F0000000800480000555500040048AF -:102DC000FFFFAAAA0A4B984202D880231B0218438D -:102DD000084B042258619023DB059A62C046C04626 -:102DE000C046C046044908699A61000AC0B27047EB -:102DF000FF1F00000008004800040048F8B5050067 -:102E00000E001C4F1C4B38882021203080B21C78CB -:102E1000FFF77AFEAA211948FFF7ACFF3888102186 -:102E2000103080B2FFF770FE55211548FFF7A2FF62 -:102E300038882021203080B2FFF766FEA0210F489D -:102E4000FFF798FF24013888E4B2001980B221000E -:102E5000FFF75AFE31002800FFF78CFF2800FFF72C -:102E6000B1FF0400C0462800FFF7ACFF8442F5D153 -:102E7000F8BDC04634040020880400205515000029 -:102E8000AA0A000070B50400B0200E0000020A215A -:102E9000FFF73AFEC0200A210002FFF735FEAA2103 -:102EA0001248FFF767FF55211148FFF763FFA02184 -:102EB0000E48FFF75FFFB0200E4D00022978FFF7A4 -:102EC00023FEC02029780002FFF71EFE31002000FB -:102ED000FFF750FF2000FFF775FF0500C0462000F8 -:102EE000FFF770FF8542F5D170BDC0465515000053 -:102EF000AA0A00008804002070B504000D000D48E7 -:102F0000AA21FFF737FF55210B48FFF733FFA02118 -:102F10000848FFF72FFF29002000FFF72BFF2000B4 -:102F2000FFF750FF0500C0462000FFF74BFF85422A -:102F3000F5D170BD55150000AA1A000070B5040047 -:102F40000D001A4E02213088023080B2FFF7DCFDFE -:102F5000AA211748FFF70EFF30880121013080B207 -:102F6000FFF7D2FD55211348FFF704FF30880221F7 -:102F7000023080B2FFF7C8FDA0210D48FFF7FAFE2E -:102F80000D4B30881978401880B2FFF7BDFD29003D -:102F90002000FFF7EFFE2000FFF714FF0500C046FA -:102FA0002000FFF70FFF8542F5D170BD34040020EB -:102FB00055150000AA0A00008804002070B504001E -:102FC000A0200D000002022100F05EFBAA211048A3 -:102FD000FFF7D0FE55210F48FFF7CCFEA0210C488B -:102FE000FFF7C8FEA0200C4B0002197800F04CFB44 -:102FF00029002000FFF7BEFE2000FFF7E3FE0500DA -:10300000C0462000FFF7DEFE8542F5D170BDC04608 -:1030100055150000AA0A00008804002070B50400BD -:103020000D000D48AA21FFF7A5FE55210B48FFF71B -:10303000A1FEA0210848FFF79DFE29002000FFF710 -:1030400099FE2000FFF7BEFE0500C0462000FFF7F6 -:10305000B9FE8542F5D170BD55150000AA0A0000E1 -:103060000D4B802258619023D200DB0500B29A619B -:10307000002801DA01229A62C046C046C046C04616 -:10308000064B802218699023D200DB059A62012248 -:10309000000AC0B29A617047000800480004004866 -:1030A00070B504000D001048AA21FFF72DFD552131 -:1030B0000E48FFF729FDA0210B48FFF725FD290049 -:1030C0002000FFF721FDA020094B00021978FFF72F -:1030D0001BFD2000FFF7C4FF0500C0462000FFF7DE -:1030E000BFFF8542F5D170BDAAFA000055F500007A -:1030F0008804002070B504000D001048AA21FFF7D5 -:1031000003FD55210E48FFF7FFFCA0210B48FFF7F8 -:10311000FBFC29002000FFF7F7FC802000210002C3 -:10312000FFF7F2FC2000FFF79BFF0500C0462000E0 -:10313000FFF796FF8542F5D170BDC04655D500001A -:10314000AAAA000070B504000D00134E00213088BB -:10315000FFF7DAFCAA211148FEF7F0FC55211048D0 -:10316000FEF7ECFCA0210D48FEF7E8FC0D4B308883 -:103170001978401880B2FFF7C7FC29002000FEF73D -:10318000DDFC2000FFF76CFF0500C0462000FFF7C4 -:1031900067FF8542F5D170BD34040020555500000D -:1031A000AA2A00008804002070B50400C0200D0089 -:1031B0000002052100F068FAAA210D48FFF7A4FCDF -:1031C00055210C48FFF7A0FCA0210948FFF79CFC03 -:1031D00029002000FFF798FC2000FFF741FF0500C1 -:1031E000C0462000FFF73CFF8542F5D170BDC046C8 -:1031F00055550000AAAA000070B504000D000D4846 -:10320000AA21FEF79BFC55210B48FEF797FCA02155 -:103210000848FEF793FC29002000FEF78FFC2000F1 -:10322000FFF71EFF05002000FFF71AFF8542F6D1C9 -:10323000280070BD55550000AA2A00000D4B0E4A0B -:1032400058610E4B0902186802431A605A69D2B2DB -:103250001143902259618021D20510684901014330 -:1032600011604021916291611A6805490A401A6013 -:103270007047C0460008004800005555000400484B -:10328000FFFFAAAA70B50F4C2268537A55685A18E6 -:10329000D2B293420FD122680B48537ACB185372A3 -:1032A0000378591AC9B201700020814202D19823D3 -:1032B0000130D37070BD06780130EE540133DBB2BB -:1032C000E7E7C0461407002018070020284B10B578 -:1032D0001A88284B12041B881A43274B198849085F -:1032E0004900885A254908801988023189B2198015 -:1032F000198849084900885A2149088019880231EB -:1033000089B21980198849084900885A1D490880DE -:1033100019881D48023189B2198019884908490065 -:10332000895A1A4A11801A881949023292B21A80AF -:103330001C880288944213D902881C880832121B08 -:1033400092B20A80028892B21A801249124B0A88FD -:103350001343124A1A40302353409BB20B8010BDD6 -:103360000F4804881A889442E6D308230B80ECE7C0 -:103370000C6000400A600040046000404C60004067 -:103380004E600040506000400260004052600040CB -:103390001A600040005C00408080FFFFBF8FFFFF8D -:1033A00000600040F7B504000E004D7AC046C046EC -:1033B000C046C046C046C046C046C046C0460022C1 -:1033C000AA215848FFF7FCFA002255215648FFF77A -:1033D000F7FA2402002220215248FFF7F1FA23B223 -:1033E0000193EBB20093337AAB4217D26B46802045 -:1033F0001B780022737290210002FFF7E1FA00228D -:10340000802011000002FFF7DBFA80200022F0216B -:103410000002FFF7D5FAC0460020FEBD434B444AE8 -:10342000196808200A43FF211A605A690A40A0213E -:1034300009020A435A6190220121D20590629162E9 -:10344000C046C046C046C046FF24906191611A68DC -:1034500038492C400A401A60019B009A1C4373684B -:10346000A4B2995C20000022FFF7AAFAC046C04629 -:10347000C046C046C046C046C046C046C046C0461C -:1034800000212000FFF7CCFA0700C046C046C04626 -:10349000C046C046C046C046C046C0467368009A93 -:1034A0009B5C834217D0C046C046C046C046C0465B -:1034B000C046C046C046C04600212000FFF7B0FA13 -:1034C000B8420BD1C046C046C046C046C046C04602 -:1034D000C046C046C0460135ADB282E7C046C046D0 -:1034E000C046C046C046C046C046C046C046C046AC -:1034F000C046C046C046C046C046C046C046C0469C -:10350000C046C046C046C046C046C046C046C0468B -:10351000C046C046C046C04600212000FFF780FAE2 -:103520000700C9E7AA8A000055850000000400488A -:1035300000005555FFFFAAAAF0B51C4D040005A8D0 -:10354000067868690902C0B20843686190200421C6 -:10355000C00581622900002A01D101328262FF2563 -:1035600000204A692D022A401A43114F4A61C04681 -:10357000C046C046C046C046C046C046C046C0461B -:10358000C0463A690133120A22544A69DBB22A4022 -:1035900001301A43C0B24A61B042E8D990230422F4 -:1035A000DB059A61033A9A61F0BDC0460008004805 -:1035B00000040048F0B5184C050060690E02C0B266 -:1035C0003043606180269020F600C00549B28661D4 -:1035D000002901DA01218162FF266169360231404A -:1035E00011436161C04600200C4FC0463969013269 -:1035F000090A29546169D2B2314001301143C0B285 -:1036000061619842F1D990238022DB05D2009A6251 -:1036100001229A61F0BDC04600080048000400483D -:10362000F0B5174C05000E0060691F2925D88021D0 -:1036300031430902C0B20143616190210420FF2699 -:10364000C905886261693602314011436161C04633 -:1036500000200C4FC04639690132090A29546169BA -:10366000D2B2314001301143C0B261619842F1D908 -:1036700090230422DB059A61F0BDC0B20902DAE7AB -:10368000000800480004004870B506000D0005243D -:103690003000013CFFF7E4FCE4B229003000FFF702 -:1036A00033FA6D08002CF3D170BD00009249F8B5D3 -:1036B0000B88924C002B3BD00A88914B9A4235D113 -:1036C000002302258F4A13808F4A13808F4A13806C -:1036D0008F4A13808F4A13808F4AD08FA843D08798 -:1036E000D08F013DA843D0878C481735C3878C48BD -:1036F00005808C48343505808B4808350580802549 -:103700008A486D0105808025894805808348C387E4 -:103710008020884B00062380874B18608023D08F41 -:10372000DB000343D387854A854B1A8000230B8037 -:1037300023881BB2002B00DBBFE02388814A744F33 -:10374000134080221343238023881B0500D497E075 -:103750007D4D7F232A78110099436E4B1980E988AB -:10376000684B19800021694B19803B88FF318B43DE -:1037700013433B8060231A4208D08022734B12050A -:103780001B8828009B1898475F4B18802B78602275 -:1037900059B2002949DA134014D16A78062A0FD1A8 -:1037A0006A88110A02291AD003291AD001291FD1C7 -:1037B000674B1226674A99B21180674A1B0C138027 -:1037C000514B1E802288654B1343654A1A40C02323 -:1037D0009B0153409BB22380FFF778FD43E0614B90 -:1037E000E7E7D2B2012A0ED0002A03D0022A13D072 -:1037F0001E00E5E75C4B574A99B21180564A1B0CF4 -:1038000013800426DCE7594B524A99B21180524A80 -:103810001B0C1380564ED3E7564B4E4A99B211807B -:103820004D4A1B0C1380544ECAE7134209D16B78E2 -:10383000052B06D13A886B88D2B21B0213439BB288 -:103840003B80002123884D4A13404D4A13439BB2CD -:1038500023804C4B198023881A434B4B1A404B4B07 -:103860005A4092B222802D4BDB8F5B0507D5802218 -:103870002F4B1A800023294AD3872E4B2380F8BD73 -:1038800060213B880B40402BEDD13B881342EAD1AD -:10389000264A3F4B2C481B881188802212059B1812 -:1038A000C9B298472288364B13432D4A1A40C02389 -:1038B0009B0153409BB22380D5E78022238813428B -:1038C000D1D0238833490B40802109020B43238048 -:1038D000104B1B88934200D17EE7FF200C4B1988C8 -:1038E0008143C0D01988090A0A4311490A801A88FD -:1038F00002401A80B7E7C0460E600040005C0040FE -:103900003CA50000006000400260004004600040F0 -:103910000660004008600040025C0040065C004019 -:10392000505C0040186000401C6000401E60004079 -:103930004C5C00402032000000E100E00080FFFF0E -:10394000585C00408F0F0000546000401060004041 -:10395000C64B00080A6000400C6000408081FFFFF9 -:103960008FBFFFFFB44B0008D84B0008DC4B0008AA -:103970002A030000304C00081E0300008F8EFFFF5A -:103980008080FFFF1A600040BFBFFFFF30300000A3 -:10399000126000400F8FFFFFFEE700008047C04627 -:1039A000F0B5474680B4061C081C000C102801D551 -:1039B000162700E004270007000F8046FF20014083 -:1039C0005468251C1D439C43F60313850AD5C04645 -:1039D000C046C046C046C046C046C0469480138319 -:1039E000958002E0012000F081F801390AD4381CEA -:1039F00000F07CF8C046948013839580C046C04692 -:103A00007600E2E7381C013800F070F894801383E8 -:103A10009580042000F06AF8108A184001D0FF2039 -:103A200061E0C046C046C046C046C046C04694801D -:103A30009580108A184055D001200226B04552D0FA -:103A40000921168A1E40FCD1012000F04FF8948015 -:103A5000C0469580C04603E0C046C046C046C0464A -:103A6000948095807600108A1840EFF30080400023 -:103A7000C00F0643381C023800F038F89480958057 -:103A8000022000F033F80139EAD513859480012033 -:103A900000F02CF813839580301C8021022399407C -:103AA0000E401BD1002341085E4149085E41490890 -:103AB0005E4149085E4149085E4149085E41490846 -:103AC0005E4149085E4149085E41760808D34008D6 -:103AD000FF21084048400002013004E00E2002E0CF -:103AE000092000E0002080BCB846F0BD0138FDD1BF -:103AF0007047C04603685A0003D45B005B08C018D7 -:103B00007047802212061343F9E7C046F0B55746C6 -:103B10004E46DE464546E0B5814683B092460029D2 -:103B200025D04B1E9B46002701935B46FB18DC0FFC -:103B3000E4184B466410E5005E193000FFF7DAFF29 -:103B4000019B8046A3420BD0280008304844FFF771 -:103B5000D1FFD04506D80138504509D2671CE4E7AB -:103B6000504505D9A74202D0631E9B46DDE70026DB -:103B7000300003B03CBC90469946A246AB46F0BD2F -:103B8000012809D0022805D0002801D00020704764 -:103B90000248FCE70248FAE70248F8E7A1420008B9 -:103BA000B9420008AD42000830B5234B83B0050090 -:103BB0008C1E002B2AD001A9200000E000BF0028A5 -:103BC00020D001992200FFF7A1FF041E1AD0FFF7B1 -:103BD00091FF6368A864012B10D0201D002B1BDB14 -:103BE000FFF788FF0023E8642B650368002B17DBD1 -:103BF000FFF780FF2861002003B030BD00230520BF -:103C00002B61F9E7002309202B61F5E70B480C49EC -:103C1000091AC9100191D5E70123E8642B65E4E78F -:103C20001801000FFFF7ACFF2861002801D109300F -:103C3000E2E70020E0E7C046000000009C4C0008DE -:103C40006C4D0008036810B50400DA0705D49B0723 -:103C50000FD5483000F084FC23685A070FD51A07A7 -:103C600014D5DB0604D42000D130FF3000F084FCF2 -:103C700010BD483000F070FC23685A07EFD42000D4 -:103C8000D03000F071FC23681A07EAD420005130CC -:103C9000FF3000F06DFC2368E3E7C0460368002BAB -:103CA00000D01B1818007047092070477047C046A5 -:103CB00070B504000D0008E02B6C2A006361210040 -:103CC000012023699847082807D1296C2000FFF7B5 -:103CD0006BFF0028F0D000F09FFE0728FBD10020EA -:103CE000296CFFF7E3FF281D00F020FCF0B5CE465D -:103CF000474680B5C368324C9846A54483690600A0 -:103D000014000431402205A8994600F08DFE0023DE -:103D100004AD296C30000493FFF746FF631E9C41FD -:103D200007000934002F15D0AB6B10216B644B4694 -:103D300021430193C9B20095330032000120C047EE -:103D4000002833D13800F5239B009D440CBC9046DD -:103D50009946F0BDF0222B6C5200736129007CA8BB -:103D600000F062FE7CAA31003369200098478A9BEC -:103D700007006B6403934B460095019332003300B8 -:103D800021000120C047002810D1F0227CA9520058 -:103D9000280000F049FE082F06D1296C3000FFF7FB -:103DA00003FF09240700BDE7072F01D00927C9E752 -:103DB0000020296CFFF77AFF05A800F0B7FBC0468A -:103DC0002CFCFFFF406C704770B5CB6BFAB00B64F6 -:103DD00004000E004022043103A800F025FE012358 -:103DE0005B42029306E002AA21002369984705007E -:103DF00008280AD1129B200019000193FFF7D4FE76 -:103E00000028F0D009207AB070BD02A8FFF71AFF91 -:103E1000062DF7D131002000FFF74AFF10B582616F -:103E2000DA6BC1601A6419000022FFF75FFF10BD52 -:103E3000436970B50B64C36804000D00002B04D007 -:103E40000122FFF753FF00F0E7FD0A00236901009C -:103E500002209847072807D0082803D1290020000E -:103E6000FFF726FF00F0D8FD0020296CFFF71EFFAA -:103E7000281D00F05BFBC046C36810B5002B05D0C1 -:103E8000CB6B00220B64FFF731FF10BDFFF79CFFE7 -:103E9000FBE7C0467047C046836810B5002B02D0D0 -:103EA00001000120984710BD10B5012907D0002955 -:103EB00007D003390224012901D9200010BD0124B3 -:103EC000FBE70224002BF8D10F2AF6D892008218C3 -:103ED0005268029B00241A60EFE7C04600B585B027 -:103EE00003AB0A00009300210023FFF7DDFF0398D6 -:103EF00005B000BD10B5012907D0002907D003394E -:103F00000224012901D9200010BD0124FBE702246D -:103F1000002BF8D10F2AF6D8029B92001B6882185A -:103F200053600024EFE7C04600B585B003AB0392B1 -:103F300000930A0000230021FFF7DCFF05B000BD5D -:103F400070B51A4CD36BA544136406000D0019A874 -:103F5000111D402200F068FD01235B42189314E01C -:103F60000C2118A802AAFFF7DFFF290018A8B04704 -:103F7000002812D1069B18AA02A90830019398477D -:103F8000040005280AD0092807D0289B02A8190098 -:103F90000193FFF709FE0028E2D0092418A8FFF7D3 -:103FA00051FE200090239B009D4470BDC0FDFFFF8B -:103FB000F0B5DE464E464546574693460322E0B5E9 -:103FC0001E0013008BB003400193CB6C0D001C1D31 -:103FD0001B6808940793002E66D11B02079306AB5B -:103FE0005E731A73019B022B00D16EE02B6DDB0711 -:103FF00047D40023A846B2460293083303400393F4 -:104000002568002D00D137E15346022B49D0258881 -:10401000668804340123370099469F4343469B6CCE -:104020000F219C4658466744FFF758FF00228742FD -:1040300006D82A004B469A43D719B84280414242DB -:1040400002230121760033400D402B43012B3ED04B -:10405000002B5AD0022B1CD1236801995F007F08E6 -:10406000002965D1002A06D0039A002A00D188E0F1 -:10407000002F00D1AAE0002B65DB0137BF00E41957 -:10408000BEE700230293022E47DDFFF70DFE002856 -:1040900049D009200BB03CBC90469946A246AB469D -:1040A000F0BD66680834B5E7022E9BDC1A0C1B04D1 -:1040B0000793022306A90B73FD3313409B00E418FA -:1040C000019B4A73022B00D090E7AC6B8EE7019BFB -:1040D000002B3AD1002A16D02368DD0F63689A1CA2 -:1040E000D7D0424658320692013300D1C6E0201D97 -:1040F000FFF7D4FD06AB01002A00404600E000BFF8 -:10410000002800D0A7E008347AE7019B002B02D0FA -:10411000002A00D08BE0043472E707A9584600F06B -:10412000D1FA0028B5D1029B002B5DD10820B1E760 -:1041300043460D2158461D6AFFF7D0FE854263D0E5 -:104140002368002B99DA043497E743460D2158463B -:104150001D6AFFF7C3FE8542D5D143469B6A9C4248 -:10416000D1D145462000FFF7C5FC0F21020058467B -:10417000FFF7DAFE58462A000021FFF7D5FE072098 -:1041800088E7002F22D058235146434406AABA4656 -:10419000251D0026049405911F00914603E0043577 -:1041A0002600A24514D028000697FFF777FD4B465E -:1041B000010000224046741C00E000BF0028EED041 -:1041C0005746059B049C9A46B742B9D1454601E043 -:1041D0004546049C0D215846FFF780FE069B286249 -:1041E0006B62AC62062055E70F215846FFF776FE5A -:1041F0000E2102005846FFF797FE5846274A0F2126 -:10420000FFF792FE072045E743469B6A9C4297D101 -:10421000434642469F620023D36204331363231D47 -:1042200053632368002B32DB0123029325E7200030 -:10423000FFF760FC454604340600AC63404600E0EE -:1042400000BF002800D124E7584632000F21FFF7B5 -:104250006BFE07201EE707000D2158464546FFF775 -:104260003DFE2862022F0FD1069BEB6243462C33A2 -:104270006B62AC6206200DE7564604E70D215846F6 -:104280004546FFF72BFE2862069B6B62F1E738007C -:10429000013080004546201865E7C0460000000058 -:1042A00010B50023FFF784FE10BDC04610B50123F2 -:1042B000FFF77EFE10BDC04610B50223FFF778FE63 -:1042C00010BDC046F0B5CE46474680B50600C3B027 -:1042D00014001D0001294ED0002933D003290AD033 -:1042E000042902D1002B00D189E0022043B00CBC8C -:1042F00090469946F0BD032BF7D11404150C240CFD -:104300002B19102BF1D8082203681A4200D0E7E0DD -:1043100020AB1800984600F02DF9B36BED001A00A1 -:10432000002C09D0E400EA1A1C1942441968D15043 -:1043300004339C42FAD12200B263404600F018F9DF -:104340000020D3E70220002BD0D100230127100446 -:10435000B56B000C321D39009940084202D0296823 -:104360000435116001330432102BF4D10020A30472 -:10437000BCD4B563BAE71404170C240C012B5FD02E -:10438000052BB2D13B19202BAFD80F2F7DD9A146D9 -:10439000002C65D1002223009146B16B002B00DC7C -:1043A00088E020A88046FA00DB00521ACB1842446D -:1043B0000868505004318B42FAD119004B46002B4B -:1043C00010D04B4658003A00102F00D21022002384 -:1043D000103AD2006A448000CC58D450043383424F -:1043E000FAD1C918012D5ED0B1630F2F74D94B4695 -:1043F000002BA5D0684600F0B7F8002076E7102A19 -:1044000000D972E7102203681A4245D120AB180088 -:10441000984600F0B3F800230120B16B02009A40E7 -:10442000144204D045460F689A00AF50043101335E -:10443000042BF3D14046B16300F09EF8002055E70D -:104440003B19102B00D950E70F2F00D94DE700235F -:104450009946012233681A4230D14B46002B5AD07C -:10446000042233681A4242D1012D47D00F2F06D8BB -:1044700020AB180000F076F84B46002B8AD0684637 -:1044800000F074F81023DB1B87E7102BDFD9102214 -:10449000524291469944DCE793430360D130FF30A8 -:1044A00000F06CF8B2E7043120A8B16300F054F8D2 -:1044B00000201BE74B46002B84D193E71900914362 -:1044C0000A003160052D1ED0032230009343336073 -:1044D000483000F043F8C0E720A800F041F886E734 -:1044E000934303605130FF3000F044F810E7300090 -:1044F00093433360D03000F039F8B5E720AB1800B3 -:1045000000F02CF8BEE7022330001A433260483036 -:1045100000F028F8A1E7012D03D00F2F00D939E7CB -:10452000A6E720AB180000F019F833E7011C34317E -:1045300038C9043B9C461D60A646011C20313CC97D -:1045400090469946A246AB46011C0831FCC9416819 -:104550000068E54600BDC0467047C0467047C0468B -:104560007047C0467047C0467047C0467047C04657 -:104570007047C0467047C0467047C0467047C04647 -:1045800001B401A801B585B0FFB408A841464A4668 -:1045900053465C4665463EC001A83EC80F98009051 -:1045A00000230CB401A9FFF70FFC109B12B01847B1 -:1045B00001B401A801B585B0FFB408A841464A4638 -:1045C00053465C4665463EC001A83EC80F98009021 -:1045D00000230CB401A9FFF72BFC109B12B0184765 -:1045E00001B401A801B585B0FFB408A841464A4608 -:1045F00053465C4665463EC001A83EC80F980090F1 -:1046000000230CB401A9FFF737FC109B12B0184728 -:1046100001B401A801B585B0FFB408A841464A46D7 -:1046200053465C4665463EC001A83EC80F980090C0 -:1046300000230CB401ABFFF7F1FB109B12B018473D -:1046400001B401A801B585B0FFB408A841464A46A7 -:1046500053465C4665463EC001A83EC80F98009090 -:1046600000230CB401AAFFF76BFC109B12B0184793 -:10467000027A0300002A04D1427AB020002A07D12E -:104680007047013A02720268100E12021A60F7E7D0 -:10469000013A5A725A68111D596003211268197241 -:1046A000F2E7C04600B585B003AB00930C220023AF -:1046B0000021FFF7F9FB039805B000BD10B5FFF727 -:1046C000F1FF10BDF0B557464E464546DE46002385 -:1046D000E0B587B003930F339846083B9946802393 -:1046E0001B0306000F009A463800FFF7C1FF0400C5 -:1046F000B02821D0030632D4FF2583001D4005AB2E -:104700009B4600930D220023002130000435FFF763 -:10471000CBFB63064CD5059B5D1B05955B46009363 -:1047200000230D2200213000FFF7E4FB3800FFF7E3 -:104730009FFF0400B028DDD1039B0024002B2FD164 -:1047400005AD00950E2200213000FFF7ADFB00956E -:1047500000230F2200213000FFF7CCFB20E00300F4 -:1047600042469343DBB2802B63D0902B25D0A02B05 -:1047700032D0B02B45D0C02B00D173E003004A46A5 -:104780009343DBB2D02B0AD15346024001321A4385 -:10479000052301213000FFF795FD0028A4D009244E -:1047A000200007B03CBC90469946A246AB46F0BDFF -:1047B000059B9C4665440595B0E7833B03400D2B64 -:1047C000EDD0424605AD02400095002300213000A7 -:1047D000FFF76AFB0095A3E7FF234A461B01190078 -:1047E000824311410A001A40030702D58023DB01EE -:1047F0001A43002300213000FFF764FD0028CED1CA -:1048000072E7B1284AD0B2285ED0B32800D18BE03D -:10481000FC230340B42BC2D04A4653460240013227 -:104820001A43012101233000FFF74CFD0028B6D1C7 -:104830005AE704023800FFF71BFF802520432D02B2 -:10484000A842ACD004010005020C00230021300076 -:10485000FFF738FD0028A2D12C4200D144E7012304 -:10486000039341E7C6286AD0C7287CD003004A4694 -:104870009343DBB2C02B00D18BE0C82800D18FE07E -:10488000C92800D08BE73800FFF7F2FEF0230203BF -:104890001B03134042460240013278E73800FFF71D -:1048A000E7FE002800D17AE7030042469343DBB2DB -:1048B000002B00D073E7020000213000FFF702FD5B -:1048C000002800D06BE70FE705AB00939B460D2255 -:1048D000002300213000FFF7E7FA3800FFF7C8FE99 -:1048E00003066AD57F25B03C059B2840A0409C4626 -:1048F0006044059038000734FFF7BAFE0306F3D48E -:10490000812292009446863AFF3A1040A040059BCF -:10491000723A634418185B46059000930021002307 -:104920003000FFF7E7FADFE63800FFF7A1FEF023DB -:1049300002031B03134042460240013270E7380075 -:10494000FFF796FEF02302031B031340424602408A -:1049500001321A43032303213000FFF7B3FC002880 -:1049600000D01CE7C0E63800FFF782FE002800D127 -:1049700015E7030042469343DBB2002B00D00EE75D -:10498000020004213000FFF79DFC002800D006E75C -:10499000AAE64346A0221C40013412032243D9E771 -:1049A0003800FFF765FE434602009A43D2B2103248 -:1049B0001840120301300243EAE60224A0E7C04691 -:1049C000030000B5DB6C85B05A6808001202019242 -:1049D0001A0001A908324A6003220A72DB794B727D -:1049E000FFF770FE05B000BD10B5FFF767FE806CE5 -:1049F00010BDC04610B5FFF761FEC26CD3799B00B5 -:104A00000833D01810BDC04610B500F005F8C046F8 -:104A100010B5FFF7F9FFC04610B5062000F074F896 -:104A2000012000F0A3F8C046F0B505000F2A2FD9E9 -:104A30000B0003439B0734D116000C000300103E0B -:104A4000350901352D01451927681F6067685F60CA -:104A5000A7689F60E7681034DF6010339D42F3D190 -:104A60000F239E431036851989191340032B1AD939 -:104A70001E1F0023B4080134A400CF58EF500433A4 -:104A8000A342FAD10324A643331D2240C918ED18CE -:104A9000002A05D00023CC5CEC5401339342FAD1B8 -:104AA000F0BD0500F6E71A00F2E7C04670B5050054 -:104AB0000C001F2922D8B7239B00C358002B14D009 -:104AC0008A009B181A68002A0FD0012A0BD0511CAB -:104AD00005D00021200019609047002070BD1623EA -:104AE00003600120FAE70020F8E7280000F02AF828 -:104AF00022000100280000F011F8EFE71623036000 -:104B000001204042EAE7C04610B5034B0100186897 -:104B1000FFF7CCFF10BDC04600000020002370B599 -:104B2000074C050008001100236000F017F8431C33 -:104B300000D070BD2368002BFBD02B60F9E7C04686 -:104B40001C07002010B500F001F810BD582201200C -:104B5000014B40421A6070471C0700205822012078 -:104B6000014B40421A6070471C070020FEE7C04618 -:104B700002B4714649084900095C49008E4402BCF0 -:104B80007047C04603B47146490840004900095EB9 -:104B900049008E4403BC704703B471464908400085 -:104BA0004900095A49008E4403BC7047F8B5C04615 -:104BB000F8B5C04609021200010100803209040064 -:104BC00000000000000012010002FF000008C016F3 -:104BD000DC05020201020001040309042A03490062 -:104BE0006E00660069006E006900740065004E008A -:104BF000650073004C0069007600650073002E00AC -:104C000063006F006D000000000000000000000065 -:104C10000000000000000000000000000000000094 -:104C20000000000000000000000000000000000084 -:104C30001E0349004E004C00200052006500740025 -:104C400072006F002D00500072006F0067000000BE -:104C50000000000000000000000000000000000054 -:0C4C600000000000000000000000000048 -:104C6C0074B20181B0AB308000000000800A018179 -:104C7C00B0B0ABF0000000003F020181B0AB30805F -:104C8C000000000080060181B0B0ABF00000000015 -:104C9C0000EDFF7FB0B0B08050EEFF7F0100000050 -:104CAC00FCEEFF7FB0A9028090EFFF7FB0B0A88030 -:104CBC00E0EFFF7F01000000ECEFFF7FB0B0AA80B7 -:104CCC0020F0FF7F9CFFFF7FF0F0FF7F01000000D2 -:104CDC00ECF0FF7FAA3F398038F1FF7FB0B0A8809D -:104CEC0044F1FF7FB0B0AA8084F1FF7FB0B0A88000 -:104CFC0098F1FF7F0100000094F1FF7FB0B0A88015 -:104D0C009CF1FF7F010000002CF2FF7FAA0FB28004 -:104D1C0094F2FF7F58FFFF7F7CF5FF7FB0B0A88037 -:104D2C0098F5FF7F54FFFF7FF8F7FF7F010000002D -:104D3C0068F9FF7F0084048078F9FF7FB0B0A88009 -:104D4C0078F9FF7F40FFFF7F6CFCFF7F00840480BD -:104D5C008CFCFF7FB0B0A880A4FCFF7F010000009A -:104D6C00080000200000000000000000F4020020F9 -:104D7C005C030020C40300200000000000000000C1 -:104D8C000000000000000000000000000000000017 -:104D9C000000000000000000000000000000000007 -:104DAC0000000000000000000000000000000000F7 -:104DBC0000000000000000000000000000000000E7 -:104DCC0000000000000000000000000000000000D7 -:104DDC0000000000000000000000000000000000C7 -:104DEC0000000000000000000000000000000000B7 -:104DFC0000000000000000000000000000000000A7 -:104E0C000000000000000000000000000000000096 -:104E1C0001000000000000000E33CDAB34126DE633 -:104E2C00ECDE05000B00000000000000000000009C -:104E3C000000000000000000000000000000000066 -:104E4C000000000000000000000000000000000056 -:104E5C000000000000000000000000000000000046 -:104E6C000000000000000000000000000000000036 -:104E7C000000000000000000000000000000000026 -:104E8C000000000000000000000000000000000016 -:104E9C000000000000000000000000000000000006 -:104EAC0000000000000000000000000000000000F6 -:104EBC0000000000000000000000000000000000E6 -:104ECC0000000000000000000000000000000000D6 -:104EDC0000000000000000000000000000000000C6 -:104EEC0000000000000000000000000000000000B6 -:104EFC0000000000000000000000000000000000A6 -:104F0C000000000000000000000000000000000095 -:104F1C000000000000000000000000000000000085 -:104F2C000000000000000000000000000000000075 -:104F3C000000000000000000000000000000000065 -:104F4C000000000000000000000000000000000055 -:104F5C000000000000000000000000000000000045 -:104F6C000000000000000000000000000000000035 -:104F7C000000000000000000000000000000000025 -:104F8C000000000000000000000000000000000015 -:104F9C000000000000000000000000000000000005 -:104FAC0000000000000000000000000000000000F5 -:104FBC0000000000000000000000000000000000E5 -:104FCC0000000000000000000000000000000000D5 -:104FDC0000000000000000000000000000000000C5 -:104FEC0000000000000000000000000000000000B5 -:104FFC0000000000000000000000000000000000A5 -:10500C000000000000000000000000000000000094 -:10501C000000000000000000000000000000000084 -:10502C000000000000000000000000000000000074 -:10503C000000000000000000000000000000000064 -:10504C000000000000000000000000000000000054 -:10505C000000000000000000000000000000000044 -:10506C000000000000000000000000000000000034 -:10507C000000000000000000000000000000000024 -:10508C000000000000000000000000000000000014 -:10509C000000000000000000000000000000000004 -:1050AC0000000000000000000000000000000000F4 -:1050BC0000000000000000000000000000000000E4 -:1050CC0000000000000000000000000000000000D4 -:1050DC0000000000000000000000000000000000C4 -:1050EC0000000000000000000000000000000000B4 -:1050FC0000000000000000000000000000000000A4 -:10510C000000000000000000000000000000000093 -:10511C000000000000000000000000000000000083 -:10512C000000000000000000000000000000000073 -:10513C000000000000000000000000000000000063 -:10514C000000000000000000000000000000000053 -:10515C000000000000000000000000000000000043 -:10516C000000000000000000000000000000000033 -:10517C000000000000000000000000000000000023 -:10518C000000000000000000000000000000000013 -:04000005080000C12E -:00000001FF diff --git a/firmware/build_stm/inlretro_stm.elf b/firmware/build_stm6/inlretro_stm.elf similarity index 63% rename from firmware/build_stm/inlretro_stm.elf rename to firmware/build_stm6/inlretro_stm.elf index bb92230db02efbc32a54584965f7b094a1b7d846..61fea18818ff31330b0d042df4ca47527355c0f5 100644 GIT binary patch literal 208488 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 Ht1b6GTqPX< diff --git a/firmware/build_stm6/inlretro_stm.hex b/firmware/build_stm6/inlretro_stm.hex new file mode 100644 index 0000000..a83a51e --- /dev/null +++ b/firmware/build_stm6/inlretro_stm.hex @@ -0,0 +1,1352 @@ +:020000040800F2 +:10000000001800200108000835050008390500081F +:1000100000000000000000000000000000000000E0 +:10002000000000000000000000000000350500088E +:10003000000000000000000035050008350500083C +:1000400035050008350500083505000835050008A8 +:100050003505000835050008350500083505000898 +:100060003505000835050008350500083505000888 +:100070003505000835050008350500083505000878 +:100080003505000835050008350500083505000868 +:100090003505000835050008350500083505000858 +:1000A0003505000835050008350500083505000848 +:1000B00035050008350500083505000899010008D8 +:1000C000284B10B51A88284B12041B881A43274B5B +:1000D000198849084900885A254908801988023139 +:1000E00089B21980198849084900885A214908802D +:1000F0001988023189B21980198849084900885A3B +:100100001D49088019881D48023189B21980198853 +:1001100049084900895A1A4A11801A881949023235 +:1001200092B21A801C880288944213D902881C88D3 +:100130000832121B92B20A80028892B21A801249C7 +:10014000124B0A881343124A1A40302353409BB281 +:100150000B8010BD0F4804881A889442E6D3082308 +:100160000B80ECE70C6000400A6000400460004037 +:100170004C6000404E600040506000400260004013 +:10018000526000401A600040005C00408080FFFF29 +:10019000BF8FFFFF006000409449F8B50B88944C76 +:1001A000002B3BD00A88934B9A4235D1002302257D +:1001B000914A1380914A1380914A1380914A138087 +:1001C000914A1380914AD08FA843D087D08F013DA8 +:1001D000A843D0878E481735C3878E4805808E4840 +:1001E000343505808D480835058080258C486D01A3 +:1001F000058080258B4805808548C38780208A4BF1 +:1002000000062380894B18608023D08FDB000343D6 +:10021000D387874A874B1A8000230B8023881BB221 +:10022000002B00DBC3E02388834A764F13408022F3 +:100230001343238023881B0500D49BE07F4D7F233D +:100240002A7811009943704B1980E9886A4B19800C +:1002500000216B4B19803B88FF318B4313433B805C +:1002600060231A4208D08022754B12051B88280093 +:100270009B189847614B18802B78602259B200294F +:100280004DDA134014D16A78062A0FD16A88110A10 +:1002900002291AD003291BD0012920D1694B12262B +:1002A000694A99B21180694A1B0C1380534B1E8016 +:1002B0002288674B1343674A1A40C0239B0153406F +:1002C0009BB22380FFF7FCFE47E05E4B1233E6E76C +:1002D000D2B2012A0FD0002A03D0022A15D01E0064 +:1002E000E4E7584B584A243399B21180574A1B0C03 +:1002F00013800426DAE7534B534A283399B211800E +:10030000524A1B0C1380544ED0E74E4B4E4A7C335E +:1003100099B211804D4A1B0C1380504EC6E7134210 +:1003200009D16B78052B06D13A886B88D2B21B02B3 +:1003300013439BB23B8000212388494A1340494A1A +:1003400013439BB22380484B198023881A43474BA1 +:100350001A40474B5A4092B222802D4BDB8F5B05EF +:1003600007D580222F4B1A800023294AD3872E4B92 +:100370002380F8BD60213B880B40402BEDD13B88AA +:100380001342EAD1264A3B4B2C481B881188802215 +:1003900012059B18C9B298472288324B13432D4A45 +:1003A0001A40C0239B0153409BB22380D5E7802293 +:1003B00023881342D1D023882F490B408021090282 +:1003C0000B432380104B1B88934200D17AE7FF2018 +:1003D0000C4B19888143C0D01988090A0A43114976 +:1003E0000A801A8802401A80B7E7C0460E600040B3 +:1003F000005C00403CA5000000600040026000403E +:10040000046000400660004008600040025C00405C +:10041000065C0040505C0040186000401C600040DA +:100420001E6000404C5C00402032000000E100E013 +:100430000080FFFF585C00408F0F000054600040B8 +:10044000106000407C0400080A6000400C6000401E +:100450008081FFFF8FBFFFFF2A0300001E03000003 +:100460008F8EFFFF8080FFFF1A600040BFBFFFFF3D +:1004700030300000126000400F8FFFFF12010002B9 +:10048000FF000008C016DC0502020102000109029B +:100490001200010100803209040000000000000089 +:1004A000040309042A0349006E00660069006E0017 +:1004B0006900740065004E00650073004C0069001F +:1004C0007600650073002E0063006F006D00000071 +:1004D000000000000000000000000000000000001C +:1004E000000000000000000000000000000000000C +:1004F00000000000000000001E0349004E004C00F8 +:10050000200052006500740072006F002D00500042 +:1005100072006F0067000000000000000000000093 +:1005200000000000000000000000000000000000CB +:1005300000000000FEE70000004801E02301ADDEFE +:10054000FEE7C04602B4714649084900095C49000B +:100550008E4402BC7047C046411D000000616561C9 +:1005600062690001130000000536532D4D00060C92 +:10057000074D09011901000003B471464908400004 +:100580004900095E49008E4403BC7047411D0000CC +:100590000061656162690001130000000536532D9A +:1005A0004D00060C074D09011901000003B4714606 +:1005B000490840004900095A49008E4403BC70476D +:1005C000411D0000006165616269000113000000C7 +:1005D0000536532D4D00060C074D090119017047D2 +:1005E0000A4B0B4A10B55A600A4A5A600122DC686D +:1005F0001442FCD11A6101220180D9681142FCD158 +:100600002022DA6060321A6110BDC046002002402C +:1006100023016745AB89EFCDFF2370B53D4C2370B7 +:10062000002363704378C588102B00D06FE0C37837 +:1006300081888078384E01387269082800D964E0D2 +:10064000FFF780FF0563632B3B3149515F008B1E31 +:100650008E227D2B19D8314B7360314B736001238F +:10066000F2681A42FCD102233361802389021B0500 +:10067000C918422371613361C046413BF2681A4098 +:10068000FCD12023F360603333612270254BA2B28A +:10069000240CE8B25A819C8170BD58001018FFF7F5 +:1006A0009FFF0022F1E78E22012BEED81804802351 +:1006B0001B05C01840181C49F1E7042363707369D7 +:1006C000A37073691B0AE37073691B0C2371736950 +:1006D0001B0E6371E5E7022363701388A370138810 +:1006E0001B0AE370DDE78E22012BCED880221B048B +:1006F00012059B185918022363700B88A3700B888E +:10070000EEE70A4A0A4BDA60CBE78B22BDE780238B +:100710002370BBE71A070020002002402301674531 +:10072000AB89EFCD00600040FFFF00000400FA0538 +:1007300000ED00E0000000000000000000000000EC +:1007400000000000000000000000000000000000A9 +:100750000000000000000000000000000000000099 +:100760000000000000000000000000000000000089 +:100770000000000000000000000000000000000079 +:10078000144B154A9BB21382144B9BB2538268469A +:100790001C300D4A0D4B0430043001681140C91A59 +:1007A000FAD1074A074B043801681140C91AF2D13F +:1007B0007B460A33036004380133036008E0FEE738 +:1007C0000000FFFF00000008FFFFFF0F0000000116 +:1007D000002070471906000800600040DF0500088F +:1007E0000000000000000000000000000000000009 +:1007F00000000000000000000000000000000000F9 +:1008000009490A4A0A4B9B1A03DD043BC858D050D9 +:10081000FBDC0849084A0020521A02DD043A8850DD +:10082000FCDC01F033FF000018500008000000203D +:1008300030040020300400202807002070B50F4C41 +:100840002268537A55685A18D2B293420FD122685F +:100850000B48537ACB1853720378591AC9B20170F6 +:100860000020814202D198230130D37070BD0678F8 +:100870000130EE540133DBB2E7E7C0461407002035 +:1008800018070020FF23F0B5B74C85B02370002374 +:100890006370837905000093407801380E2801D9F0 +:1008A00001F0B0FBFFF782FE0F00B1059B07A70820 +:1008B0006B0AAE0B990B2D09D5091F0A680AE508CA +:1008C000F70809091B09A878AA888C2319281CD8BD +:1008D000FFF76CFE24002C0022011E02EA028903AD +:1008E0001804D404F004FC0404050C0515051E05C9 +:1008F0002C0534053C0544051A001A001A00490568 +:100900005E057505D202DE0200232370974B009826 +:10091000A2B2240C5A819C8105B0F0BDB023944A48 +:100920005B0351690B4353610023EEE7152A01D99C +:1009300000F05CFD1000FFF739FE160023002E00CA +:100940005905390044004F0059055C0069007300E7 +:100950008000590559058D009A00A700B400C10018 +:10096000CE00D800E2009023DB051A6881490A40D6 +:100970001A608022D96852030A43DA600023C4E770 +:1009800090230122DB05196891431960D9680A4355 +:10099000DA600023B9E790230422DB05196891434C +:1009A0001960D9680A43DA600023AEE79023102269 +:1009B000DB05196891431960D9680A43DA6000239E +:1009C000A3E790234022DB05196891431960D96899 +:1009D0000A43DA60002398E79023DB051A6866492A +:1009E0000A401A608022D968D2040A43DA600023E0 +:1009F0008BE79023DB051A6860490A401A60802261 +:100A0000D96852010A43DA6000237EE704225C4B76 +:100A1000196891431960D9680A43DA60002374E7C2 +:100A20009023DB051A6857490A401A608022D9686A +:100A3000D2050A43DA60002367E79023DB051A68D2 +:100A400051490A401A608022D968D2020A43DA600A +:100A500000235AE79023DB051A684C490A401A60C4 +:100A60008022D96852000A43DA6000234DE79023C0 +:100A7000DB051A6846490A401A608022D968D2000C +:100A80000A43DA60002340E79023DB051A684149F6 +:100A90000A401A608022D968D2010A43DA60002332 +:100AA00033E79023DB051A6833490A401A60802235 +:100AB000D968D2040A43DA60002326E79023DB05D5 +:100AC0001A6835490A401A608022D96852050A43DB +:100AD000DA60002319E70122294B19689143196054 +:100AE000D9680A43DA6000230FE710222B4B1968FC +:100AF00091431960D9680A43DA60002305E790231F +:100B0000DB051A6822490A401A608022D968D2009F +:100B10000A43DA600023F8E6152A01D900F069FCDF +:100B20001000FFF743FD16003D0048006604530027 +:100B30005E006900660474007F008900940066040A +:100B400066049F00AA00B500C000CB00D600E000FC +:100B5000EA009023DB051968064801401960DA684D +:100B60000240DA600023D0E6E40600200060004086 +:100B700000100240FFFFEFFFFFFFFFFBFFEFFFFF53 +:100B800000040048FFFFFFBFFFFFFBFFFFFEFFFF6A +:100B9000FFFBFFFFFFBFFFFFFFFFFFEF000C004861 +:100BA00090230121DB051A688A431A60DA688A43B8 +:100BB000DA600023A9E690230421DB051A688A4342 +:100BC0001A60DA688A43DA6000239EE690231021D7 +:100BD000DB051A688A431A60DA688A43DA60002300 +:100BE00093E690234021DB051A688A431A60DA688D +:100BF0008A43DA60002388E69023DB051968CE4833 +:100C000001401960DA680240DA6000237DE6902333 +:100C1000DB051968C94801401960DA680240DA60EA +:100C2000002372E60421C64B1A688A431A60DA6808 +:100C30008A43DA60002368E69023DB051968C1481F +:100C400001401960DA680240DA6000235DE6902313 +:100C5000DB051968BC4801401960DA680240DA60B7 +:100C6000002352E69023DB051968B848014019605B +:100C7000DA680240DA60002347E69023DB05196852 +:100C8000B34801401960DA680240DA6000233CE6AC +:100C90009023DB051968AF4801401960DA6802400B +:100CA000DA60002331E69023DB051968A248014091 +:100CB0001960DA680240DA60002326E69023DB053B +:100CC0001968A54801401960DA680240DA6000231B +:100CD0001BE601219A4B1A688A431A60DA688A4334 +:100CE000DA60002311E610219C4B1A688A431A60CF +:100CF000DA688A43DA60002307E69023DB05196887 +:100D0000934801401960DA680240DA600023FCE58C +:100D1000152A00D970E31000FFF748FC16001F00E9 +:100D200027006E032F0037003F006E03480051007C +:100D3000580061006E036E036A0073007C0085003A +:100D40008E0097009E00A50090228023D205116896 +:100D50005B030B4313600023D7E590220123D205E8 +:100D600011680B4313600023CFE590220423D205C2 +:100D700011680B4313600023C7E590221023D205AE +:100D800011680B4313600023BFE590224023D20576 +:100D900011680B4313600023B7E590228023D2052E +:100DA0001168DB040B4313600023AEE5902280231F +:100DB000D20511685B010B4313600023A5E50423F2 +:100DC0005F4A11680B43136000239EE59022802345 +:100DD000D2051168DB050B431360002395E59022D3 +:100DE0008023D2051168DB020B43136000238CE5DE +:100DF00090228023D20511685B000B43136000230F +:100E000083E590228023D2051168DB000B43136039 +:100E100000237AE590228023D2051168DB010B4381 +:100E20001360002371E590228023D2051168DB0452 +:100E30000B431360002368E590228023D2051168DC +:100E40005B050B43136000235FE501233C4A1168F7 +:100E50000B431360002358E51023404A11680B43ED +:100E60001360002351E590228023D2051168DB0036 +:100E70000B431360002348E58D23082A00D044E586 +:100E800090224023D20551680B43536000233CE578 +:100E90008D23082A00D038E590224021D2055368DE +:100EA0008B435360002330E5152A00D9A7E21000D8 +:100EB000FFF77CFB16001D002300A50229002F0070 +:100EC0003500A5023C0056005B006200A502A502A9 +:100ED00069006F0075007B00820089008E0093001E +:100EE00080229023D200DB059A6200230DE5902337 +:100EF0000122DB059A62002307E590230222DB052D +:100F00009A62002301E590230422DB059A62002304 +:100F1000FBE490230822DB059A620023F5E480229B +:100F200090239201DB059A620023EEE49023402295 +:100F3000DB059A620023E8E4FFFFFFFBFFEFFFFF02 +:100F400000040048FFFFFFBFFFFFFBFFFFFEFFFFA6 +:100F5000FFFBFFFFFFBFFFFFFFFFFFEF000C00489D +:100F60000222CF4B9A620023CFE480229023120208 +:100F7000DB059A620023C8E4802290239200DB05FF +:100F80009A620023C1E490231022DB059A620023B9 +:100F9000BBE490232022DB059A620023B5E4902372 +:100FA0008022DB059A620023AFE480229023920125 +:100FB000DB059A620023A8E480229023D201DB059E +:100FC0009A620023A1E40122B54B9A6200239CE4BB +:100FD0000422B44B9A62002397E490232022DB057D +:100FE0009A62002391E4152A00D90BE21000FFF762 +:100FF000DDFA16001D002300090229002F0035002C +:1010000009023C00420047004E0009020902550057 +:101010005B00610067006E0076007C008200802229 +:101020009023D200DB059A6100236EE49023012215 +:10103000DB059A61002368E490230222DB059A61B4 +:10104000002362E490230422DB059A6100235CE420 +:1010500090230822DB059A61002356E48022902326 +:101060009201DB059A6100234FE490234022DB05C7 +:101070009A61002349E40222894B9A61002344E4E7 +:10108000802290231202DB059A6100233DE4802236 +:1010900090239200DB059A61002336E4902310220E +:1010A000DB059A61002330E490232022DB059A615E +:1010B00000232AE490238022DB059A61002324E4A4 +:1010C000802290239201DB059A6100231DE4802297 +:1010D0009023D201DB059A610023FFF716FC012261 +:1010E0006F4B9A610023FFF710FC04226D4B9A614D +:1010F0000023FFF70AFC90232022DB059A610023DE +:10110000FFF703FC02236370152A00D9B1E0100039 +:10111000FFF718FA0B151EAF273039AF434C545D5B +:10112000AFAF677079828C969EA690238022DB05F4 +:101130001B69D200134063800023FFF7E6FB902376 +:101140000122DB051B69134063800023FFF7DDFBF1 +:1011500090230222DB051B69134063800023FFF705 +:10116000D4FB90230422DB051B691340638000231A +:10117000FFF7CBFB90230822DB051B69134063803C +:101180000023FFF7C2FB90238022DB051B6992013D +:10119000134063800023FFF7B8FB90234022DB0558 +:1011A0001B69134063800023FFF7AFFB02223C4B17 +:1011B0001B69134063800023FFF7A7FB9023DB0527 +:1011C0001B69DB0BDB0363800023FFF79EFB90238F +:1011D0008022DB051B699200134063800023FFF728 +:1011E00094FB90231022DB051B69134063800023CE +:1011F000FFF78BFB90232022DB051B6913406380E4 +:101200000023FFF782FB90238022DB051B6913403C +:1012100063800023FFF779FB90238022DB051B69A5 +:101220009201134063800023FFF76FFB902380221D +:10123000DB051B69D201134063800023FFF765FBC8 +:101240000122174B1B69134063800023FFF75DFBEE +:101250000422144B1B69134063800023FFF755FBE6 +:1012600090232022DB051B69134063800023FFF7D6 +:101270004CFB002363708D33FFF747FB80230A4A42 +:10128000DB0251690B435361054B08491A680A4058 +:101290001A60D968064A0A43DA600023FFF735FB73 +:1012A00000040048000C004800100240FFFFAAAAFA +:1012B00000005555EF4BF0491A680A401A60D9688A +:1012C000EE4A0A43DA600023FFF71FFBE94AEA49C6 +:1012D00013680B4013600023FFF717FBE54AE74B49 +:1012E00011680B4313600023FFF70FFBE149120263 +:1012F0004B69DBB21A434A610023FFF706FBDD4B63 +:101300001B691B0AA370012363700023FFF7FDFA1A +:101310008023DB4A1B0351690B435361D94ADA4BE3 +:1013200011680B4313600023FFF7EFFAD54AD64B41 +:10133000D1680B43D3600023FFF7E7FAD14AD349C2 +:1013400013680B4013600023FFF7DFFACD4ACE4B42 +:1013500011680B4313600023FFF7D7FAC94B5A619A +:101360000023FFF7D2FAC023C54ADB0251690B43C1 +:101370005361C04AC64B11680B4313609022A023EF +:10138000D20511685B030B4313600023FFF7BDFA1E +:10139000B84ABF4BD1680B43D3609023A021DB0533 +:1013A000D86849030143D9601168BA480140116007 +:1013B0001A68B9490A401A600023FFF7A6FAFF2508 +:1013C000AC48930041692B40B44DD20029400B43F7 +:1013D00043619021C020C905C0004B690240B0485C +:1013E00003401A434A610023FFF78FFA8D23FFF76A +:1013F0008CFA8D23FFF789FA8D23FFF786FA8D2368 +:10140000FFF783FA8D23FFF780FAAA88AD78032DC2 +:1014100000D10BE155D8012D63D05ED901F08CF8D5 +:1014200090220121D20513680B43136010239161B0 +:1014300011680B43136004234021936113680B432D +:101440001360082393619161802311685B010B4352 +:10145000136080238A48DB024169874E0B4385492C +:1014600043610B6833400B60CD68844B1D43CD60F6 +:101470000C6834400C60CC682343CB608023446903 +:101480001B0323437F4C436125687F4B2B43236021 +:1014900000236361C0244569E4022C4344610C6865 +:1014A0007B4820430860A02014684003204310605C +:1014B00048697A4C2040486151697948014051613E +:1014C00051E0052D52D000D211E1072D00D191E05D +:1014D000802D00D130E1962345E001F02DF8002366 +:1014E00041E001F029F89023DB051A682A431A60CD +:1014F00080229D61196852030A431A6080220421E8 +:10150000D2009A621A685C4D0A431A6002229A61FC +:1015100018680E3202431A604022996119680A4322 +:101520001A6008229A618023554ADB0251690B43F5 +:101530005361504B196829401960DC684F490C43CE +:10154000DC60186828401860D8680143D96080239F +:1015500051691B030B4353614A4A4B4B11680B43C0 +:101560001360002353614F4CFFF7CFF900F0E4FF05 +:1015700090220121D20513683F4E0B4313601023C4 +:10158000916111680B431360042340219361136838 +:101590000B431360082393618023916211685B0100 +:1015A0000B43136080233649DB02486903434B61D8 +:1015B000304B186830401860DD6830480543DD6006 +:1015C0001C6834401C60DC682043D8608023486974 +:1015D0001B0303434B612B492B4B086803430B60F0 +:1015E00000234B6180211068C901014311608021F3 +:1015F0009162B8E700F0A0FF90220121D2051368A4 +:1016000040200B4313601023916111680B4313605A +:1016100004239361116801431160082191611168ED +:101620000B4313600223936190610DE7D2B2022A4B +:101630003ED00023032A96D09723012A93D18023FA +:101640000F491B03486903434B610E490B689343E1 +:101650000B60CB681343CB604B6813434B608A61CC +:101660000B681A4300230A600F4A13700F4A116077 +:1016700079E7C04600040048FFFFAAAA00005555BC +:10168000001002400008004855555555AAAAAAAABC +:1016900050550000AFAAFFFFFFFFEBFF03FF000064 +:1016A000FFF90000E4060020F0060020EC06002010 +:1016B000B023B74A5B03516940200B435361902329 +:1016C000DB051A68B3490A401A608022D9685201C2 +:1016D0001143D960596801435960986119680A43F8 +:1016E00008211A60AC4A1170AC4A1360F7E6D2B216 +:1016F0009823012A00D036E79022A94BD2051A6020 +:1017000006220A21A74B1A70A74BA84A1360A84AC1 +:101710001170A84A01311360A74A1170A74A1360DB +:101720000C22A74B1A70B023994A5B0351690B43F3 +:10173000536100F025FED2E690230125402180264A +:10174000DB05657099621A68760132431A60C046FB +:1017500090481C691A680C4002401A60DA6802401E +:10176000DA60F022002C37D11A6802401A60DA6879 +:101770001643DE601A6994461A690192C0461A69D6 +:101780000292C046C0461A690392C046C046C0468F +:101790001F69C046C046C046C0461E691A6802405E +:1017A0001A60DA681040D860634622000B4213D1F9 +:1017B000019B2A000B420FD1029B02320B420BD13C +:1017C0000B0003990332194206D104321F4203D1A0 +:1017D00005321E4200D1D1327A4B9A707FE6E97809 +:1017E000A888AD780D2D00D195E023D8062D56D0D0 +:1017F0000FD8022D5AD005D8002D4BD0012D52D034 +:10180000A02549E0042D74D0052DF9D101F042FE48 +:1018100047E0092D76D007D8072D00D181E0082DAB +:10182000EED101F03DFF3CE00B2D77D06DD901F0FA +:10183000B9FE36E0222D3CD011D8102D74D006D838 +:101840000E2D65D00F2DDBD101F08CFF29E0202D6E +:1018500052D054D8112DD3D101F0E8FE21E0822DD1 +:1018600000D190E009D8802D61D0812DC8D101230D +:10187000637001F0C9FFA07013E0852D00D1ADE0C9 +:10188000862D00D1AFE0842DBAD10123637001F021 +:1018900029FEF0E700F048FD2570FFF737F802F069 +:1018A000A1F80025F8E701F039FEFAE701F000FDA4 +:1018B000F7E7454B902258610223D20593623A4BD9 +:1018C000424D1E68090235431D605D6900B2EDB2EC +:1018D00029435961002801DA01219162C046C046BE +:1018E00001219161491891611A6839490A401A60C9 +:1018F000D7E702F00DFAD4E7364B1870D1E7364B34 +:101900001880CEE702F04CF8CBE701F05BFFC8E7A8 +:1019100002F01EF8C5E701F0E9FFC2E701F0E2FEC0 +:10192000BFE701F0BBFFBCE701F08EFFB9E7012183 +:1019300090236170DB051D68164E35401D60DA6826 +:1019400002253240DA608022D2009A6299619D615C +:101950001D4D6861C046C04600B29A61002800DA99 +:101960009962C046C046C046C046C046C0469022A6 +:1019700080210D4BD205C9001B69916201211B0A10 +:101980009161A3708DE70123637001F0EFFD72E7B1 +:1019900000100240FFEFFFFFF0060020EC060020E1 +:1019A000040700200807002000040048FC0600206F +:1019B000000700200C07002010070020F40600207C +:1019C000F8060020E40600200008004800005555F5 +:1019D000FFFFAAAA880400203404002001236370BA +:1019E000C74B1B78CDE702236370C64B1B88A370DF +:1019F0001B0AE37055E7A878E978AB88AA22062885 +:101A00001AD8FEF79FFD042B1C2327332100FF2546 +:101A1000BD489A0041692A40BC4DDB0029400A4379 +:101A200042619021C020C905C0004A690340B848FE +:101A3000024013434B6100222270FEF767FF002231 +:101A4000180001F091FBF6E70122F9E7180001F018 +:101A500007FCF0E7180001F0DBFBECE701220021B6 +:101A60006270180001F0B0FBA070E4E70121617022 +:101A7000F7E7AA78002A07D00023012A01D1FEF750 +:101A800044FFAF23FEF741FF01236370A933A37026 +:101A90001300FEF73AFFAA78002A07D00023012A94 +:101AA00001D1FEF732FFB023FEF72FFF0123637051 +:101AB000A933A3701300FEF728FFAA78002A07D0E5 +:101AC0000023012A01D1FEF720FFB123FEF71DFFFD +:101AD00001236370A933A3701300FEF716FFAA78E1 +:101AE000002A07D00023012A01D1FEF70EFFB223FE +:101AF000FEF70BFF01236370A933A3701300FEF7F9 +:101B000004FFEA78A988AD78112D00D19AE007D8B2 +:101B1000012D6BD0002D0FD0022D7CD08225BBE68D +:101B2000212D00D184E0222D00D187E0122DF5D1A6 +:101B300002231020637088E001263100754D764F36 +:101B40002A783B68914099625A6810208A435A600B +:101B500001F094FC31002B783A6899400B00FA2789 +:101B60000425916151687F000B4353600196380052 +:101B700001F084FC674A01991278674E91403368FE +:101B8000380099625A68013D8A435A6001F076FC38 +:101B9000604B01991B78326899400B009161516844 +:101BA000ADB20B435360002DE1D1FA270435380064 +:101BB00001F064FC0121574A574E12783368914076 +:101BC00099625A6838008A435A6001F057FC012133 +:101BD000504B32681B78013D99400B009161516870 +:101BE000ADB20B435360002DE1D155E62900494EBB +:101BF000494F32783B68914099625A6810208A4375 +:101C00005A6001F03BFC32783B6895409D615A6810 +:101C100015435D6045E601233E4A637012783F49F3 +:101C200093403D4A9BB21268002002F089F822E6F8 +:101C300001230020637001F071FB1CE601231020DA +:101C40006370F8E702230020637001F0C1FB60803D +:101C500027E6AB78AA88042B1DD007D8022B1FD00B +:101C600024D8012B12D08723FEF74FFE072B26D056 +:101C700003D8052BF7D12A4B16E0082B24D0802B54 +:101C8000F1D100F07DFB0023FEF73FFE254A1278DC +:101C9000A2706370F7E7244B1B78A3700123F8E769 +:101CA000204B1A708322204B1A70ECE71D4B1E4DFF +:101CB0001A7083232B7000F0D3FB2B78EDE71B4BBE +:101CC0001A70120A5A70DEE7184B1A78A2705A7806 +:101CD000E2709A782271DA7862711A79A2715B796E +:101CE000E3710623D5E7A878AA8801388A23032858 +:101CF00001D9FEF70AFEFEF725FC1B30333AC04639 +:101D000088040020340400200004004803FF000081 +:101D1000FFF90000F0060020EC060020040002009D +:101D2000D1040020B0040020D2040020B10400201F +:101D3000024885460248001C0047C0467812002031 +:101D4000C5CAFF1F060005000800070019C9FF1FCC +:101D5000EFBEADDE0023FEF7D8FDBE4B1A60F9E7FB +:101D6000BC4B18680004104301F0E4FFF2E7FEF7F3 +:101D700007FD0300FEF7C9FD8823FEF7C6FDAA781C +:101D80001300303B2F2B1CD8E878032816D8FEF719 +:101D9000D9FB18021113B04B512A00D183E029D886 +:101DA000312A5BD00FD8002A39D0302A4FD0B42343 +:101DB000FEF7ABFDA94BEFE7A94BEDE7B523FEF727 +:101DC000A4FDA84BE8E7332A56D04ED3502AEED1D3 +:101DD00000222270063262701A7AA270DA78E270FB +:101DE0005A7A22719A7A62719A78A2715B7CE37155 +:101DF000FEF78CFD7F2A00D989E0702A63D2602A21 +:101E00003FD0612A47D0522AD1D100221B882270AC +:101E1000A37002321B0A6270E370FEF777FDFF23A6 +:101E2000914953540132102AFBD18B4A8D49D3700A +:101E300093708B4ACB70D370937001228B7087495B +:101E4000CB708B70894B1A700023FEF75EFDAA8859 +:101E5000110AD9721A730023FEF757FDAA88110AD6 +:101E600059739A730023FEF750FDAA88110AD9739B +:101E70001A740023FEF749FDAA885A740023FEF75E +:101E800044FD0023237001336370AB88764AD35C32 +:101E9000A370FEF73BFD0023237001336370744B86 +:101EA0001B68DB78F4E70022227006326270DA7A6F +:101EB000A2701A7BE2705A7B22719A7B6271DA7B84 +:101EC000A2711B7C93E7674B69495C682B787F2B79 +:101ED00000D99AE06846674B007818700B68D8788C +:101EE00000280DD000230093982805D195E0002309 +:101EF0000093D02800D190E010205C4B187003E0D4 +:101F00005D4803609020D870FF23009385E0072090 +:101F1000104003281AD8FEF715FB1C021E174E4B63 +:101F2000802A01D2FEF7F2FC872A16D97032D2B28B +:101F3000072A01D9FEF7EAFC00222270EA789A7299 +:101F4000AA881A80FEF7E2FC454BE9E7B523FEF7C5 +:101F5000DCFC444BE4E7414BE2E7A888E978C6B2F1 +:101F60008D19BE22102D00DD66E50432002900D156 +:101F700062E5DD78033AFF2D00D05DE59D78013202 +:101F8000FF2D00D058E50022374DD7B2B9421CD8FA +:101F90004F01013F1F727701BC460022374F000AF4 +:101FA00067449870DA705A729A721A80DA721A73E9 +:101FB0005A739A73DA731A745A745F60AD19A8541D +:101FC0000132D3B29942FAD835E50132B718013F50 +:101FD000EF5DFF2FD9D0C1222EE5AB78002B04D0C6 +:101FE000402B08D0D223FEF790FC2370AA881F4B09 +:101FF0001A70FEF78BFC00232370013363701B4BB8 +:102000001B7845E78023FEF780FC0B68D878D8283A +:1020100000D06CE780205C68D8700B680021597292 +:10202000DB78902B01D0FEF771FC712A01D0FEF70E +:102030006DFC114BA9881A68526811701A685168B2 +:10204000AA88120A4A701A68537A02335372FEF74A +:102050005DFCC046300400204C04002060040020D9 +:102060007404002038040020D304002090040020D1 +:102070008C0400201807002014070020E40400202E +:10208000F0B5404B8BB0089119783F4B09921B7803 +:10209000019002933D4B019D1C683D4B3D481A78D1 +:1020A00001231E0096403C4AA662102D5ED1127894 +:1020B00000689340836201200200364B05901F6840 +:1020C000354B1B789A4003920200344B1B680693F1 +:1020D000334B1B789A4093B202000793314B1B6835 +:1020E0009C46314B1B789A40002304921A000198B9 +:1020F000202806D1029D05981D4105423ED0039837 +:10210000B861089820280FD1002B01D11E488354B4 +:10211000069805690798054206D01B48855C059816 +:10212000984005431848855409980139C9B20028D8 +:1021300002D0002900D1A6616046049D0133DBB2C4 +:1021400085618562082B05D101320F4BD2B29B5CB1 +:10215000029300230029CAD10E4B1A680E4B19783E +:1021600001238B409362A6620BB0F0BD019D112D3F +:10217000A1D112780068934083619CE70398B8620C +:10218000BFE7C046D1040020B10400200C070020A6 +:1021900010070020FC060020000700200407002094 +:1021A00008070020F4060020F8060020F7B51F4BB2 +:1021B0001F491A781F4B10282ED101241E780D6854 +:1021C000B440AC62012635000C6831001B780196E2 +:1021D0009D40194B1B680093184B1B7899400023B6 +:1021E0008C46190020280DD1154E019F765C1E41AA +:1021F0003E4219D0A5610133DBB2082B02D1002386 +:102200000131C9B26646009F013AD2B2BE61BE62D8 +:10221000002AE7D1A562F7BD1128D3D101241E7889 +:102220000D68B440AC61CDE7A562E4E7D1040020BD +:102230000C07002010070020F4060020F8060020FC +:10224000B1040020F7B50D00042701924C7A00027A +:1022500003B2A6B200932B7AB34202D26C72002072 +:10226000FEBD00986B682043195D80B2019B9847C2 +:102270006B681A5D094B824205D01A683A431A60AE +:1022800002229A61E7E71A680134BA431A60DA68F1 +:1022900001363A43DA60E4B2B6B2DCE70004004843 +:1022A000F7B50D001600FF27000203B24C7A019328 +:1022B0002A7AE3B2A24202D26B720020FEBD200055 +:1022C0006A683840D15C019B0134184380B2B04742 +:1022D000A4B2EDE7022907D10F4B104A984218D05B +:1022E000904209D1180007E0032906D10A4B0B4997 +:1022F0000B4A98420BD1080070470429FCD1064BC9 +:10230000064A984205D006499042F4D0054A8842D0 +:10231000E6D11000F0E7C046380400204C0400204D +:102320006004002074040020104B114A10B558615D +:102330001068104B09020343136053690E4CDBB263 +:102340001943902351618021DB0518684901084336 +:10235000186040209862186820401860D8680143CF +:10236000D960136805490B40136010BD0008004890 +:102370000004004800005555FFEFFFFFFFFFAAAA29 +:10238000F0B52C4B85B019682B4B2C481B78007886 +:102390000193012302901E0018001F00019A029C65 +:1023A0009640A040264D274A2D781268AF408E6295 +:1023B0008446906224489D400068876204680394C4 +:1023C0001C00AC402500039C254305604568019C2A +:1023D000BD4345609C401D00A54008681C00284383 +:1023E00008604868B04348601068029999408C4082 +:1023F00021000143604611605168814313485160D8 +:102400000078134A98408340126812481168994333 +:102410001160D1680B43D36080220F4B1A700023E8 +:1024200019000E4A13701A1801331170202BFAD1BB +:1024300005B0F0BD0C0700201007002000070020A9 +:10244000F8060020FC060020F40600200807002003 +:1024500004070020B1040020D2040020D104002091 +:1024600010B5334B1B78082B5DD016D8314C032B9D +:1024700044D007D8012B2DD0022B31D0EE222D4B8A +:102480001A7023E0062B44D049D8042BF6D18123BF +:10249000012223702021112027E00F2B34D008D8EF +:1024A000244C0D2B25D00E2BE8D181230022237044 +:1024B00027E0802B08D01F4CFF2B08D0102BDDD13C +:1024C00081230022237027E0FFF75AFF10BDF0237D +:1024D0002370FBE7812320202370FFF767FE06E0CF +:1024E00081230122002123702020FFF7C9FD8223D0 +:1024F000EEE78123002223701100F5E781230122FA +:10250000237020211020F0E781230A4C0022237041 +:10251000C0E781230122237020210800E5E7812301 +:1025200010202370D9E78123024C11202370D4E7B7 +:10253000B0040020D2040020BC234749DB038A6A90 +:10254000F0B513438B628B6A444A012413408B62BB +:1025500090238022DB051868D20102431A60802292 +:102560009A61B0224869520302434A611A683C48A2 +:102570003C4F02401A608022D86852030243042074 +:10258000DA601A68A2431A60DA682243DA601A68CD +:1025900082431A60DA680243DA6010221D689543AC +:1025A0001D60DD682A43DA6040221D6895431D6086 +:1025B000DD682A43DA601A682B4D2A401A608022AF +:1025C000DD68D2042A43DA601A68284D2A401A606E +:1025D0008022DD68D2052A43DA601A68244D2A4039 +:1025E00080251A60DA68ED022A43DA60214A16680B +:1025F000A6431660D6683443D4601E683E401E6011 +:10260000DC683C40DC6080234C691B0323434B6146 +:10261000194B1A4C1E681A4F26431E601E683E4016 +:102620001E60DE683443DC604B691D434D611368F6 +:10263000144D2B401360D468134B1C43D4601168B5 +:1026400029401160D1680B43D36013688343136042 +:10265000D3681843D060F0BD00100240FFFFA1FF17 +:10266000FFFFEFFFFFEFFFFFFFFFFFFBFFFFFFBFDE +:10267000FFFFFBFF00040048000800485555555572 +:10268000AAAAAAAAFFFFAAAA000055559022D34BD6 +:1026900012031968F0B50A431A60802289B09202C9 +:1026A00019681142FCD0012259680A435A608022FD +:1026B000596852020A435A608022596852030A43F9 +:1026C0005A608022196852040A431A6080229204D8 +:1026D00019681142FCD01121C14AC24C11605A68DC +:1026E0000E398A43110002220A435A608022196B74 +:1026F0000A431A638022D96912040A43DA61BA4B89 +:10270000E381BC231B689847B84B6382B84B238294 +:1027100062B6FFF711FFF022B64B1A70B64E2023B7 +:10272000327811009943D2292ED1B449B448C978DE +:10273000C3780224FF2904D1FF3B1C00631E9C4187 +:10274000E4B2B04BDB78FF2B00D00324AE4BDB7838 +:10275000FF2B00D00424AD4BAD4F1C703860D22A43 +:1027600012D10023012505E02100FFF7B3FD01236D +:102770000135EDB2A542F7D3002B00D0386080229E +:102780003B68DA70D02333703378F22B05D1002206 +:10279000023B33709E4B1B68DA703578D02D01D028 +:1027A00000F07EFC9A4E3068C378802B01D000F098 +:1027B00077FC964B1978FFF78DFD002330600400FD +:1027C000C57006884372C07AF5B21038152801D951 +:1027D00000F064FCFDF7EAFE52008A00D200D60049 +:1027E00062046204620462046204620462046204B9 +:1027F00062046204620462041600250036003B0095 +:1028000041004B00E17BC4230F2901D900F047FCB4 +:1028100009013143237AA278C9B2606801F00EFA47 +:102820000EE0E17B3C230A009A438833002A01D062 +:1028300000F035FC237AA2782943606801F034FA6D +:10284000607292E0237AA278E17B2943E5E7E17B9D +:102850003F230A009A438533E8E7227AE17BA37895 +:10286000009200222943606801F0AAF9E8E7E17BC1 +:10287000227AA378294300920122F4E7E37B1E2BFE +:102880000BD1C020B6092233F1B200029D4300F003 +:102890000FFD237AA2788021D7E71C2B0FD1A0202F +:1028A0008121C00100F004FD8020F609F1B2000290 +:1028B00000F0FEFCA0200021C00100F0F9FC802106 +:1028C000E27B49421F2A05D00D43EDB2237AA2785C +:1028D0002900A2E77022A02095430D432188C00162 +:1028E0000909C9B2EDB200F0E3FCEFE7E37BFE2B90 +:1028F0003BD17609F1B2474800F010FE1F21464B4C +:102900000D405A692D02D2B2154380219022C90090 +:10291000D205A0786768267A5D6191610121FF2563 +:102920009162033191625A692D022A4002435A6131 +:10293000C0463A4900228C46C046614609690130CA +:10294000090AB9545969C0B2294001320143D2B2CF +:1029500059619642F0D290230421DB0599618021D0 +:10296000C9009962012199616272294B1B6819881B +:102970009A7A52181A80D822DA7091E3237AA278D0 +:10298000602162E7E37B002B20D18033F6091D43F1 +:10299000F3B20293FF20029B20499B004A69034047 +:1029A0001F48024013434B61C0209021029BC90580 +:1029B000C000DB004A6903401A48024013434B61E0 +:1029C000227AA3782900009200224CE7012BE1D162 +:1029D0004021B604B60E31430291DBE700100240FD +:1029E00000200240006000403CA5FFFF3D080008B9 +:1029F00085080008D2040020900400204C04002028 +:102A00003804002060040020740400201107002016 +:102A10008C040020FF3F000000080048000400482C +:102A200003FF0000FFF90000E37B002B06D130001C +:102A30008038C0B2D14A2100FFF704FCE37B012BB0 +:102A400006D130008038C0B2CD4A2100FFF728FC03 +:102A5000E37B032B06D130008038C0B2C94A210085 +:102A6000FFF71EFCE37B042B06D130008038C0B298 +:102A7000C54A2100FFF7E6FBE37B0A2B06D13000B5 +:102A80008038C0B2C14A2100FFF70AFCE37BFD2B6E +:102A900015D13F20238830409B0904936B46802644 +:102AA0001B7C06430693677ABBB2039333021BB2C7 +:102AB0000793237A039A934200D3AAE06772E37BD9 +:102AC0001E2B11D13F2030408026238806439B09CE +:102AD000DBB20593657A33021BB2AFB20693237A59 +:102AE000BB4200D3DDE06572E37B0C2B17D11F20C6 +:102AF000304080260643C0202588A5216D09EDB20F +:102B0000C00100F0D5FB2900A14800F0D1FB677A95 +:102B100035023D43237ABB4200D311E16772E37B68 +:102B20001C2B3BD1A02023888121DB09DBB2C00113 +:102B3000049300F0BDFB80200499000200F0B8FB74 +:102B4000A0205421C00100F0B3FB677AAA21BBB2D8 +:102B50009048039300F0ACFB55218F4800F0A8FB90 +:102B600020218C4800F0A4FB802333431B021BB2BE +:102B70000693237A039A934200D31FE18020902189 +:102B80000002677200F094FB80200021000200F038 +:102B90008FFB8020F021000200F08AFBE37B1F2BDB +:102BA00030D1A0202188C0010909C9B200F080FB02 +:102BB000AA217848657A00F07BFB5521764800F021 +:102BC00077FB7448202100F073FB702380209E4324 +:102BD0004042304340B20302AFB20493237ABB4277 +:102BE00000D333E1802090210002657200F060FB89 +:102BF00080200021000200F05BFB8020F021000219 +:102C000000F056FBF4232288E370A37A9B182380FC +:102C100066E20021614800F04BFBAA21604800F009 +:102C2000E1FE55215F4800F0DDFEA0215C4800F088 +:102C3000D9FE6B46187C5C4B0699C01880B200F038 +:102C400037FB079D63683D43ADB2D95D280000F0B6 +:102C5000C9FEC046280000F0D7FD0590280000F00E +:102C6000D3FD059B8342F4D163680599DA5D4F4B30 +:102C70008A420FD1039A1968013292B20392042258 +:102C800091431960D96801370A43DA600222FFB222 +:102C90009A620EE7042219680A431A6002229A61B6 +:102CA00007E7C0200121000200F002FBAA214048F2 +:102CB00000F0FEFAC0200021000200F0F9FA5521D0 +:102CC0003C4800F0F5FAC0200121000200F0F0FAC3 +:102CD000A021374800F0ECFAC0200599000200F06E +:102CE000E7FA069B2B439BB2039363680398595DF5 +:102CF00000F0DEFAC046039800F086FD04900398C9 +:102D000000F082FD049B8342F4D1636804995A5D0C +:102D1000264B8A420DD1042219680135914319606E +:102D2000D96801370A43DA600222EDB2BFB29A6273 +:102D3000D5E6042219680A431A6002229A61CEE697 +:102D4000AA211D4800F0B4FA55211A4800F0B0FA43 +:102D5000A021194800F0ACFA63682800D95D00F0A2 +:102D6000A7FAC046280000F04FFD0390280000F0AD +:102D70004BFD039B8342F4D1CCE6C046A139000849 +:102D800051390008ED3800089D380008493800081E +:102D9000FFFF0000AA8A00005585000069FD0000C1 +:102DA00055550000AA2A000069FDFFFF00040048F5 +:102DB00055950000AAAA000055D50000A020542176 +:102DC000C00100F075FA069DA0213D43ADB2280078 +:102DD00000F06EFA63682800D95D00F069FAC04619 +:102DE000280000F011FD0590280000F00DFD059B66 +:102DF0008342F4D16368059ADB5DC04D93420FD1E5 +:102E0000039B2A6801339BB2039304239A432A60ED +:102E1000EA6801371343EB600223FFB2AB62A8E616 +:102E2000A0208121C00100F043FA80200499000213 +:102E300000F03EFAA0205421C00100F039FA04232A +:102E40002A6813432B600223AB6192E6049EA02103 +:102E50002E43B6B2300000F02BFA63683000595DA3 +:102E600000F026FAC046300000F0CEFC039030009F +:102E700000F0CAFC039B8342F4D1636803995A5D56 +:102E80009E4B8A420DD104211A6801358A431A608B +:102E9000DA6801370A43DA600222EDB2BFB29A6201 +:102EA0009CE604211A680A431A6002229A6195E698 +:102EB000E37B002B04D1924A21003000FFF7F0F9A8 +:102EC000E37B012B04D18F4A21003000FFF7E8F9A2 +:102ED000E37B022B04D18C4A21003000FFF7E0F99C +:102EE000E37B042B04D1894A21003000FFF7D8F995 +:102EF000E37B0A2B04D1864A21003000FFF7D0F98A +:102F0000E37B0B2B04D1834A21003000FFF7C8F983 +:102F1000E37BFE2B00D075E621887F484909C9B2C2 +:102F200000F0FCFAAA217D48657A00F0B3FA552139 +:102F30007B4800F0AFFA7948202100F0ABFA1F205F +:102F400030400302AFB20493237ABB420DD26572C4 +:102F50009021002000F09EFA0021080000F09AFA6B +:102F6000F021002000F096FA4CE6049EA0212E43AA +:102F7000300000F08FFA63683000595D00F08AFA83 +:102F8000C046300000F0AEFA0390300000F0AAFA1C +:102F9000039B8342F4D1636803995A5D574B8A427D +:102FA0000DD104211A6801358A431A60DA680137A5 +:102FB0000A43DA600222EDB2BFB29A62C4E704218A +:102FC0001A680A431A6002229A61BDE73000603035 +:102FD000544A2100C0B2FFF763F913E6E37B042BE8 +:102FE00006D130008038C0B24F4A2100FFF758F9AF +:102FF000E37B052B04D14C4A21003000FFF750F948 +:10300000E37B062B06D130008038C0B2474A21004E +:10301000FFF746F9E37B072B04D1444A2100300037 +:10302000FFF73EF9E37B002B1CD1FF2580331E43C5 +:1030300023883248DB09DBB29A0041692A403C4DC3 +:10304000DB0029400A4342619021C020C905C0002D +:103050004A6903403748024013434B613000210066 +:1030600000F0E4FCE37B012B00D0CBE52388234A6E +:103070002F4851699B049B0E01409B000B439021FC +:103080005361C9054B692B4A30001A4080239B00CD +:1030900013434B61210000F0C9FCB3E5C323E37087 +:1030A000254B1D78F02D1BD1244E3468E378982BE6 +:1030B00016D1234B20001978FFF70CF9002330605C +:1030C000C370E07AE57010382678042806D8FDF73A +:1030D00053FAABFCEFFE7DFF85FF99FDC323E37040 +:1030E000184B1B78F02B01D1FFF718FB832B01D075 +:1030F000FFF714FBFFF7B4F9FFF710FB00040048DB +:10310000C537000865370008E5360008A136000815 +:103110002D360008A5350008FF3F0000AA0A000070 +:1031200055050000B1320008613200081132000874 +:1031300003FF0000FFF90000900400208C04002031 +:1031400011070020D2040020002302000002002A00 +:1031500004D1002B01D0802318437047DB43511E5C +:10316000DBB20A40F3E70000134B10B55861134B74 +:1031700013481C680902204318605869C0B2014313 +:10318000596190210820C9058862002A01D10132C5 +:103190008A62C046C046C046C046C046C046C04619 +:1031A000C04690220821D2059161073991611A68C1 +:1031B00004490A401A6010BD000800480004004895 +:1031C00000005555FFFFAAAA0F4B58619023DB055D +:1031D000002901D101229A6204229A62C046C046A7 +:1031E000C046C046C046C046C046C046C046C046AF +:1031F000C046C046C046054908699A61000A033ABC +:10320000C0B29A617047C0460008004800040048F8 +:1032100070B504000D000022AA210F48FFF7A4FF9B +:10322000002255210D48FFF79FFF0022A0210A48E8 +:10323000FFF79AFF002229002000FFF795FF0021E9 +:103240002000FFF7C1FF0500C04600212000FFF766 +:10325000BBFF8542F3D170BDAA8A000055850000EE +:1032600070B504000D000022AA210F48FFF77CFF73 +:10327000002255210D48FFF777FF0022A0210A48C0 +:10328000FFF772FF002229002000FFF76DFF0021E9 +:103290002000FFF799FF0500C04600212000FFF73E +:1032A00093FF8542F3D170BD55550000AA2A000056 +:1032B0009023DB0530B51C68134D09022C401C60BF +:1032C000DA68124C2A40DA60114A506102229A628E +:1032D000104A00B215682C4314605469E4B22143CB +:1032E00051618021C9009961002801DA01209862AA +:1032F000C046C046996201219961491899611368D5 +:1033000005490B40136030BDFFEFFFFF000055552E +:103310000008004800040048FFFFAAAAF7B50123EF +:103320000225294F01923A780091054393400421E8 +:10333000A020264E2D049BB229433268C00100F024 +:10334000FFFC040001283DD13B7809209C40054347 +:103350007830A3B232682900FF3000F0F1FC04009D +:1033600001282FD13B7832689C402900A3B200206D +:1033700000F0E6FC0400012824D1009B180AFFF7A6 +:10338000E3FE3B7832689C402900A3B200F0D8FCF1 +:103390000400012816D16B461878FFF7D5FE2200ED +:1033A0003B7829009A4093B2326800F0C9FC01983A +:1033B000FFF7CAFE3B7832689C402900A3B200F0B8 +:1033C000BFFC0400E0B2FEBDF0060020EC060020C9 +:1033D000F7B501230225274F00903A780191054364 +:1033E00093400421C020244E2D049BB2294332680F +:1033F000800100F0A5FC0400012838D109231D43F9 +:103400003B78C0209C403268A3B22900400000F005 +:1034100097FC040001282AD13B7832689C4029009F +:10342000A3B2002000F08CFC040001281FD1019BF6 +:10343000180AFFF789FE3B7832689C402900A3B246 +:1034400000F07EFC0400012811D16B461879FFF7CB +:103450007BFE22003B789A4093B2009A14430922E3 +:10346000E1B209041143326800F06AFC0400A0B222 +:10347000FEBDC046F0060020EC06002000238000C0 +:1034800080B2834200D17047C046C04601339BB230 +:10349000F7E700000F4B30B59022586180230124DC +:1034A000D205DB0093620C4B94621D680B48090245 +:1034B000284318605869C0B201435961C0460821C9 +:1034C0009162C04691611968054801401960946194 +:1034D00030BDC046000800480004004800005555B3 +:1034E000FFFFAAAA0B4B10B580215861902301223F +:1034F0000424DB05C90099619A629C62C046C046FB +:10350000C046054800699C61000A9962C0B29A6190 +:1035100010BDC04600080048000400480E4B984209 +:1035200002D880231B0218430C4B0D4A58610D4BE7 +:103530000902186802431A605A69D2B211435961EC +:10354000C04690220821D2059162C04691611A6856 +:1035500005490A401A607047FF1F00000008004834 +:103560000000555500040048FFFFAAAA0A4B9842E4 +:1035700002D880231B021843084B04225861902371 +:10358000DB059A62C046C046C046C0460449086989 +:103590009A61000AC0B27047FF1F0000000800488F +:1035A00000040048F8B505000E001C4F1C4B38887D +:1035B0002021203080B21C78FFF77AFEAA2119481A +:1035C000FFF7ACFF38881021103080B2FFF770FE93 +:1035D00055211548FFF7A2FF38882021203080B2FE +:1035E000FFF766FEA0210F48FFF798FF24013888F7 +:1035F000E4B2001980B22100FFF75AFE3100280022 +:10360000FFF78CFF2800FFF7B1FF0400C046280039 +:10361000FFF7ACFF8442F5D1F8BDC046340400206A +:103620008804002055150000AA0A000070B50400A7 +:10363000B0200E0000020A21FFF73AFEC0200A2146 +:103640000002FFF735FEAA211248FFF767FF552158 +:103650001148FFF763FFA0210E48FFF75FFFB0207E +:103660000E4D00022978FFF723FEC02029780002C2 +:10367000FFF71EFE31002000FFF750FF2000FFF78C +:1036800075FF0500C0462000FFF770FF8542F5D1A9 +:1036900070BDC04655150000AA0A0000880400202D +:1036A00070B504000D000D48AA21FFF737FF552122 +:1036B0000B48FFF733FFA0210848FFF72FFF290031 +:1036C0002000FFF72BFF2000FFF750FF0500C0464A +:1036D0002000FFF74BFF8542F5D170BD5515000066 +:1036E000AA1A000070B504000D001A4E022130889D +:1036F000023080B2FFF7DCFDAA211748FFF70EFF6A +:1037000030880121013080B2FFF7D2FD55211348E6 +:10371000FFF704FF30880221023080B2FFF7C8FDB6 +:10372000A0210D48FFF7FAFE0D4B3088197840189C +:1037300080B2FFF7BDFD29002000FFF7EFFE20005B +:10374000FFF714FF0500C0462000FFF70FFF85427A +:10375000F5D170BD3404002055150000AA0A000000 +:103760008804002070B50400A0200D000002022192 +:1037700000F0CEFAAA211048FFF7D0FE55210F48DD +:10378000FFF7CCFEA0210C48FFF7C8FEA0200C4B91 +:103790000002197800F0BCFA29002000FFF7BEFEF5 +:1037A0002000FFF7E3FE0500C0462000FFF7DEFE25 +:1037B0008542F5D170BDC04655150000AA0A00002B +:1037C0008804002070B504000D000D48AA21FFF701 +:1037D000A5FE55210B48FFF7A1FEA0210848FFF7E1 +:1037E0009DFE29002000FFF799FE2000FFF7BEFE96 +:1037F0000500C0462000FFF7B9FE8542F5D170BD37 +:1038000055150000AA0A00000D4B80225861902334 +:10381000D200DB0500B29A61002801DA01229A6227 +:10382000C046C046C046C046064B80221869902359 +:10383000D200DB059A620122000AC0B29A61704789 +:10384000000800480004004870B504000D0010484E +:10385000AA21FFF72DFD55210E48FFF729FDA021D4 +:103860000B48FFF725FD29002000FFF721FDA020D0 +:10387000094B00021978FFF71BFD2000FFF7C4FF7A +:103880000500C0462000FFF7BFFF8542F5D170BD9F +:10389000AAFA000055F500008804002070B5040065 +:1038A0000D001048AA21FFF703FD55210E48FFF730 +:1038B000FFFCA0210B48FFF7FBFC29002000FFF7CD +:1038C000F7FC802000210002FFF7F2FC2000FFF748 +:1038D0009BFF0500C0462000FFF796FF8542F5D10B +:1038E000280070BD55D50000AAAA000070B50400DC +:1038F0000D00134E00213088FFF7DAFCAA21114891 +:10390000FEF712FD55211048FEF70EFDA0210D48CF +:10391000FEF70AFD0D4B30881978401880B2FFF78A +:10392000C7FC29002000FEF7FFFC2000FFF76CFF1A +:103930000500C0462000FFF767FF8542F5D170BD46 +:103940003404002055550000AA2A000088040020F5 +:1039500070B50400C0200D000002052100F0D8F968 +:10396000AA210D48FFF7A4FC55210C48FFF7A0FC45 +:10397000A0210948FFF79CFC29002000FFF798FCD4 +:103980002000FFF741FF0500C0462000FFF73CFF85 +:103990008542F5D170BDC04655550000AAAA000069 +:1039A00070B504000D000D48AA21FEF7BDFC55219D +:1039B0000B48FEF7B9FCA0210848FEF7B5FC29002A +:1039C0002000FEF7B1FC2000FFF71EFF05002000DD +:1039D000FFF71AFF8542F6D1280070BD555500004B +:1039E000AA2A00000D4B0E4A58610E4B09021868B6 +:1039F00002431A605A69D2B2114390225961802160 +:103A0000D205106849010143116040219162916122 +:103A10001A6805490A401A607047C0460008004805 +:103A20000000555500040048FFFFAAAAF7B504009E +:103A30000E004D7AC046C046C046C046C046C0468D +:103A4000C046C046C0460022AA215848FFF78CFB5A +:103A5000002255215648FFF787FB2402002220212F +:103A60005248FFF781FB23B20193EBB20093337A04 +:103A7000AB4217D26B4680201B78002273729021D4 +:103A80000002FFF771FB0022802011000002FFF707 +:103A90006BFB80200022F0210002FFF765FBC0468F +:103AA0000020FEBD434B444A196808200A43FF2109 +:103AB0001A605A690A40A02109020A435A619022F9 +:103AC0000121D20590629162C046C046C046C04600 +:103AD000FF24906191611A6838492C400A401A60AD +:103AE000019B009A1C437368A4B2995C20000022D9 +:103AF000FFF73AFBC046C046C046C046C046C04677 +:103B0000C046C046C046C04600212000FFF75CFB0F +:103B10000700C046C046C046C046C046C046C04674 +:103B2000C046C0467368009A9B5C834217D0C0466B +:103B3000C046C046C046C046C046C046C046C04655 +:103B400000212000FFF740FBB8420BD1C046C04621 +:103B5000C046C046C046C046C046C046C046013505 +:103B6000ADB282E7C046C046C046C046C046C04669 +:103B7000C046C046C046C046C046C046C046C04615 +:103B8000C046C046C046C046C046C046C046C04605 +:103B9000C046C046C046C046C046C046C046C046F5 +:103BA00000212000FFF710FB0700C9E7AA8A0000E8 +:103BB000558500000004004800005555FFFFAAAAE3 +:103BC000F0B51C4D040005A8067868690902C0B26A +:103BD0000843686190200421C00581622900002A01 +:103BE00001D101328262FF2500204A692D022A405C +:103BF0001A43114F4A61C046C046C046C046C0463F +:103C0000C046C046C046C046C0463A690133120AA3 +:103C100022544A69DBB22A4001301A43C0B24A61D9 +:103C2000B042E8D990230422DB059A61033A9A61F5 +:103C3000F0BDC0460008004800040048F0B5184C2C +:103C4000050060690E02C0B230436061802690209A +:103C5000F600C00549B28661002901DA01218162BE +:103C6000FF2661693602314011436161C046002080 +:103C70000C4FC04639690132090A29546169D2B230 +:103C8000314001301143C0B261619842F1D99023B3 +:103C90008022DB05D2009A6201229A61F0BDC04603 +:103CA0000008004800040048F0B5174C05000E005D +:103CB00060691F2925D8802131430902C0B2014320 +:103CC000616190210420FF26C9058862616936027E +:103CD000314011436161C04600200C4FC046396934 +:103CE0000132090A29546169D2B2314001301143CD +:103CF000C0B261619842F1D990230422DB059A6138 +:103D0000F0BDC0B20902DAE700080048000400482C +:103D100070B506000D0005243000013CFFF774FD6E +:103D2000E4B229003000FFF7C3FA6D08002CF3D18C +:103D300070BD00008047C046000000000000000089 +:103D4000F0B5474680B4061C081C000C102801D5AD +:103D5000162700E004270007000F8046FF200140DF +:103D60005468251C1D439C43F60313850AD5C046A1 +:103D7000C046C046C046C046C046C0469480138375 +:103D8000958002E0012000F081F801390AD4381C46 +:103D900000F07CF8C046948013839580C046C046EE +:103DA0007600E2E7381C013800F070F89480138345 +:103DB0009580042000F06AF8108A184001D0FF2096 +:103DC00061E0C046C046C046C046C046C04694807A +:103DD0009580108A184055D001200226B04552D057 +:103DE0000921168A1E40FCD1012000F04FF8948072 +:103DF000C0469580C04603E0C046C046C046C046A7 +:103E0000948095807600108A1840EFF3008040007F +:103E1000C00F0643381C023800F038F894809580B3 +:103E2000022000F033F80139EAD51385948001208F +:103E300000F02CF813839580301C802102239940D8 +:103E40000E401BD1002341085E4149085E414908EC +:103E50005E4149085E4149085E4149085E414908A2 +:103E60005E4149085E4149085E41760808D3400832 +:103E7000FF21084048400002013004E00E2002E02B +:103E8000092000E0002080BCB846F0BD0138FDD11B +:103E90007047C04603685A0003D45B005B08C01833 +:103EA0007047802212061343F9E7C046F0B5574623 +:103EB0004E46DE464546E0B5814683B0924600292F +:103EC00025D04B1E9B46002701935B46FB18DC0F59 +:103ED000E4184B466410E5005E193000FFF7DAFF86 +:103EE000019B8046A3420BD0280008304844FFF7CE +:103EF000D1FFD04506D80138504509D2671CE4E708 +:103F0000504505D9A74202D0631E9B46DDE7002637 +:103F1000300003B03CBC90469946A246AB46F0BD8B +:103F2000012809D0022805D0002801D000207047C0 +:103F30000248FCE70248FAE70248F8E74146000871 +:103F4000594600084D46000830B5234B83B00500A4 +:103F50008C1E002B2AD001A9200000E000BF002801 +:103F600020D001992200FFF7A1FF041E1AD0FFF70D +:103F700091FF6368A864012B10D0201D002B1BDB70 +:103F8000FFF788FF0023E8642B650368002B17DB2D +:103F9000FFF780FF2861002003B030BD002305201B +:103FA0002B61F9E7002309202B61F5E70B480C4949 +:103FB000091AC9100191D5E70123E8642B65E4E7EC +:103FC0001801000FFFF7ACFF2861002801D109306C +:103FD000E2E70020E0E7C04600000000484F00088C +:103FE00018500008036810B50400DA0705D49B07D1 +:103FF0000FD5483000F084FC23685A070FD51A0704 +:1040000014D5DB0604D42000D130FF3000F084FC4E +:1040100010BD483000F070FC23685A07EFD4200030 +:10402000D03000F071FC23681A07EAD42000513028 +:10403000FF3000F06DFC2368E3E7C0460368002B07 +:1040400000D01B1818007047092070477047C04601 +:1040500070B504000D0008E02B6C2A00636121009C +:10406000012023699847082807D1296C2000FFF711 +:104070006BFF0028F0D000F09FFE0728FBD1002046 +:10408000296CFFF7E3FF281D00F020FCF0B5CE46B9 +:10409000474680B5C368324C9846A54483690600FC +:1040A00014000431402205A8994600F08DFE00233B +:1040B00004AD296C30000493FFF746FF631E9C415A +:1040C00007000934002F15D0AB6B10216B644B46F1 +:1040D00021430193C9B20095330032000120C0474B +:1040E000002833D13800F5239B009D440CBC90463A +:1040F0009946F0BDF0222B6C5200736129007CA818 +:1041000000F062FE7CAA31003369200098478A9B48 +:1041100007006B6403934B46009501933200330014 +:1041200021000120C047002810D1F0227CA95200B4 +:10413000280000F049FE082F06D1296C3000FFF757 +:1041400003FF09240700BDE7072F01D00927C9E7AE +:104150000020296CFFF77AFF05A800F0B7FBC046E6 +:104160002CFCFFFF406C704770B5CB6BFAB00B6452 +:1041700004000E004022043103A800F025FE0123B4 +:104180005B42029306E002AA2100236998470500DA +:1041900008280AD1129B200019000193FFF7D4FED2 +:1041A0000028F0D009207AB070BD02A8FFF71AFFEE +:1041B000062DF7D131002000FFF74AFF10B58261CC +:1041C000DA6BC1601A6419000022FFF75FFF10BDAF +:1041D000436970B50B64C36804000D00002B04D064 +:1041E0000122FFF753FF00F0E7FD0A0023690100F9 +:1041F00002209847072807D0082803D1290020006B +:10420000FFF726FF00F0D8FD0020296CFFF71EFF06 +:10421000281D00F05BFBC046C36810B5002B05D01D +:10422000CB6B00220B64FFF731FF10BDFFF79CFF43 +:10423000FBE7C0467047C046836810B5002B02D02C +:1042400001000120984710BD10B5012907D00029B1 +:1042500007D003390224012901D9200010BD01240F +:10426000FBE70224002BF8D10F2AF6D8920082181F +:104270005268029B00241A60EFE7C04600B585B083 +:1042800003AB0A00009300210023FFF7DDFF039832 +:1042900005B000BD10B5012907D0002907D00339AA +:1042A0000224012901D9200010BD0124FBE70224CA +:1042B000002BF8D10F2AF6D8029B92001B688218B7 +:1042C00053600024EFE7C04600B585B003AB03920E +:1042D00000930A0000230021FFF7DCFF05B000BDBA +:1042E00070B51A4CD36BA544136406000D0019A8D1 +:1042F000111D402200F068FD01235B42189314E079 +:104300000C2118A802AAFFF7DFFF290018A8B04760 +:10431000002812D1069B18AA02A9083001939847D9 +:10432000040005280AD0092807D0289B02A81900F4 +:104330000193FFF709FE0028E2D0092418A8FFF72F +:1043400051FE200090239B009D4470BDC0FDFFFFE7 +:10435000F0B5DE464E464546574693460322E0B545 +:104360001E0013008BB003400193CB6C0D001C1D8D +:104370001B6808940793002E66D11B02079306ABB7 +:104380005E731A73019B022B00D16EE02B6DDB076D +:1043900047D40023A846B246029308330340039350 +:1043A0002568002D00D137E15346022B49D02588DE +:1043B000668804340123370099469F4343469B6C2B +:1043C0000F219C4658466744FFF758FF002287425A +:1043D00006D82A004B469A43D719B8428041424238 +:1043E00002230121760033400D402B43012B3ED0A8 +:1043F000002B5AD0022B1CD1236801995F007F0843 +:10440000002965D1002A06D0039A002A00D188E04D +:10441000002F00D1AAE0002B65DB0137BF00E419B3 +:10442000BEE700230293022E47DDFFF70DFE0028B2 +:1044300049D009200BB03CBC90469946A246AB46F9 +:10444000F0BD66680834B5E7022E9BDC1A0C1B042D +:104450000793022306A90B73FD3313409B00E41856 +:10446000019B4A73022B00D090E7AC6B8EE7019B57 +:10447000002B3AD1002A16D02368DD0F63689A1CFE +:10448000D7D0424658320692013300D1C6E0201DF3 +:10449000FFF7D4FD06AB01002A00404600E000BF54 +:1044A000002800D0A7E008347AE7019B002B02D057 +:1044B000002A00D08BE0043472E707A9584600F0C8 +:1044C000D1FA0028B5D1029B002B5DD10820B1E7BD +:1044D00043460D2158461D6AFFF7D0FE854263D042 +:1044E0002368002B99DA043497E743460D21584698 +:1044F0001D6AFFF7C3FE8542D5D143469B6A9C42A5 +:10450000D1D145462000FFF7C5FC0F2102005846D7 +:10451000FFF7DAFE58462A000021FFF7D5FE0720F4 +:1045200088E7002F22D058235146434406AABA46B2 +:10453000251D0026049405911F00914603E00435D3 +:104540002600A24514D028000697FFF777FD4B46BA +:10455000010000224046741C00E000BF0028EED09D +:104560005746059B049C9A46B742B9D1454601E09F +:104570004546049C0D215846FFF780FE069B2862A5 +:104580006B62AC62062055E70F215846FFF776FEB6 +:104590000E2102005846FFF797FE5846274A0F2182 +:1045A000FFF792FE072045E743469B6A9C4297D15E +:1045B000434642469F620023D36204331363231DA4 +:1045C00053632368002B32DB0123029325E720008D +:1045D000FFF760FC454604340600AC63404600E04B +:1045E00000BF002800D124E7584632000F21FFF712 +:1045F0006BFE07201EE707000D2158464546FFF7D2 +:104600003DFE2862022F0FD1069BEB6243462C33FE +:104610006B62AC6206200DE7564604E70D21584652 +:104620004546FFF72BFE2862069B6B62F1E73800D8 +:10463000013080004546201865E7C04600000000B4 +:1046400010B50023FFF784FE10BDC04610B501234E +:10465000FFF77EFE10BDC04610B50223FFF778FEBF +:1046600010BDC046F0B5CE46474680B50600C3B083 +:1046700014001D0001294ED0002933D003290AD08F +:10468000042902D1002B00D189E0022043B00CBCE8 +:1046900090469946F0BD032BF7D11404150C240C59 +:1046A0002B19102BF1D8082203681A4200D0E7E03A +:1046B00020AB1800984600F02DF9B36BED001A00FE +:1046C000002C09D0E400EA1A1C1942441968D150A0 +:1046D00004339C42FAD12200B263404600F018F93C +:1046E0000020D3E70220002BD0D1002301271004A3 +:1046F000B56B000C321D39009940084202D0296880 +:104700000435116001330432102BF4D10020A304CE +:10471000BCD4B563BAE71404170C240C012B5FD08A +:10472000052BB2D13B19202BAFD80F2F7DD9A14635 +:10473000002C65D1002223009146B16B002B00DCD8 +:1047400088E020A88046FA00DB00521ACB184244C9 +:104750000868505004318B42FAD119004B46002BA7 +:1047600010D04B4658003A00102F00D210220023E0 +:10477000103AD2006A448000CC58D45004338342AB +:10478000FAD1C918012D5ED0B1630F2F74D94B46F1 +:10479000002BA5D0684600F0B7F8002076E7102A75 +:1047A00000D972E7102203681A4245D120AB1800E5 +:1047B000984600F0B3F800230120B16B02009A4044 +:1047C000144204D045460F689A00AF5004310133BB +:1047D000042BF3D14046B16300F09EF8002055E76A +:1047E0003B19102B00D950E70F2F00D94DE70023BC +:1047F0009946012233681A4230D14B46002B5AD0D9 +:10480000042233681A4242D1012D47D00F2F06D817 +:1048100020AB180000F076F84B46002B8AD0684693 +:1048200000F074F81023DB1B87E7102BDFD9102270 +:10483000524291469944DCE793430360D130FF3004 +:1048400000F06CF8B2E7043120A8B16300F054F82E +:1048500000201BE74B46002B84D193E719009143BE +:104860000A003160052D1ED00322300093433360CF +:10487000483000F043F8C0E720A800F041F886E790 +:10488000934303605130FF3000F044F810E73000EC +:1048900093433360D03000F039F8B5E720AB18000F +:1048A00000F02CF8BEE7022330001A433260483093 +:1048B00000F028F8A1E7012D03D00F2F00D939E728 +:1048C000A6E720AB180000F019F833E7011C3431DB +:1048D00038C9043B9C461D60A646011C20313CC9DA +:1048E00090469946A246AB46011C0831FCC9416876 +:1048F0000068E54600BDC0467047C0467047C046E8 +:104900007047C0467047C0467047C0467047C046B3 +:104910007047C0467047C0467047C0467047C046A3 +:1049200001B401A801B585B0FFB408A841464A46C4 +:1049300053465C4665463EC001A83EC80F980090AD +:1049400000230CB401A9FFF70FFC109B12B018470D +:1049500001B401A801B585B0FFB408A841464A4694 +:1049600053465C4665463EC001A83EC80F9800907D +:1049700000230CB401A9FFF72BFC109B12B01847C1 +:1049800001B401A801B585B0FFB408A841464A4664 +:1049900053465C4665463EC001A83EC80F9800904D +:1049A00000230CB401A9FFF737FC109B12B0184785 +:1049B00001B401A801B585B0FFB408A841464A4634 +:1049C00053465C4665463EC001A83EC80F9800901D +:1049D00000230CB401ABFFF7F1FB109B12B018479A +:1049E00001B401A801B585B0FFB408A841464A4604 +:1049F00053465C4665463EC001A83EC80F980090ED +:104A000000230CB401AAFFF76BFC109B12B01847EF +:104A1000027A0300002A04D1427AB020002A07D18A +:104A20007047013A02720268100E12021A60F7E72C +:104A3000013A5A725A68111D59600321126819729D +:104A4000F2E7C04600B585B003AB00930C2200230B +:104A50000021FFF7F9FB039805B000BD10B5FFF783 +:104A6000F1FF10BDF0B557464E464546DE460023E1 +:104A7000E0B587B003930F339846083B99468023EF +:104A80001B0306000F009A463800FFF7C1FF040021 +:104A9000B02821D0030632D4FF2583001D4005AB8A +:104AA0009B4600930D220023002130000435FFF7C0 +:104AB000CBFB63064CD5059B5D1B05955B460093C0 +:104AC00000230D2200213000FFF7E4FB3800FFF740 +:104AD0009FFF0400B028DDD1039B0024002B2FD1C1 +:104AE00005AD00950E2200213000FFF7ADFB0095CB +:104AF00000230F2200213000FFF7CCFB20E0030051 +:104B000042469343DBB2802B63D0902B25D0A02B61 +:104B100032D0B02B45D0C02B00D173E003004A4601 +:104B20009343DBB2D02B0AD15346024001321A43E1 +:104B3000052301213000FFF795FD0028A4D00924AA +:104B4000200007B03CBC90469946A246AB46F0BD5B +:104B5000059B9C4665440595B0E7833B03400D2BC0 +:104B6000EDD0424605AD0240009500230021300003 +:104B7000FFF76AFB0095A3E7FF234A461B011900D4 +:104B8000824311410A001A40030702D58023DB014A +:104B90001A43002300213000FFF764FD0028CED126 +:104BA00072E7B1284AD0B2285ED0B32800D18BE09A +:104BB000FC230340B42BC2D04A4653460240013284 +:104BC0001A43012101233000FFF74CFD0028B6D124 +:104BD0005AE704023800FFF71BFF802520432D020F +:104BE000A842ACD004010005020C002300213000D3 +:104BF000FFF738FD0028A2D12C4200D144E7012361 +:104C0000039341E7C6286AD0C7287CD003004A46F0 +:104C10009343DBB2C02B00D18BE0C82800D18FE0DA +:104C2000C92800D08BE73800FFF7F2FEF02302031B +:104C30001B03134042460240013278E73800FFF779 +:104C4000E7FE002800D17AE7030042469343DBB237 +:104C5000002B00D073E7020000213000FFF702FDB7 +:104C6000002800D06BE70FE705AB00939B460D22B1 +:104C7000002300213000FFF7E7FA3800FFF7C8FEF5 +:104C800003066AD57F25B03C059B2840A0409C4682 +:104C90006044059038000734FFF7BAFE0306F3D4EA +:104CA000812292009446863AFF3A1040A040059B2C +:104CB000723A634418185B46059000930021002364 +:104CC0003000FFF7E7FADFE63800FFF7A1FEF02338 +:104CD00002031B03134042460240013270E73800D2 +:104CE000FFF796FEF02302031B03134042460240E7 +:104CF00001321A43032303213000FFF7B3FC0028DD +:104D000000D01CE7C0E63800FFF782FE002800D183 +:104D100015E7030042469343DBB2002B00D00EE7B9 +:104D2000020004213000FFF79DFC002800D006E7B8 +:104D3000AAE64346A0221C40013412032243D9E7CD +:104D40003800FFF765FE434602009A43D2B21032A4 +:104D50001840120301300243EAE60224A0E7C046ED +:104D6000030000B5DB6C85B05A680800120201929E +:104D70001A0001A908324A6003220A72DB794B72D9 +:104D8000FFF770FE05B000BD10B5FFF767FE806C41 +:104D900010BDC04610B5FFF761FEC26CD3799B0011 +:104DA0000833D01810BDC04610B500F005F8C04655 +:104DB00010B5FFF7F9FFC04610B5062000F074F8F3 +:104DC000012000F0A3F8C046F0B505000F2A2FD946 +:104DD0000B0003439B0734D116000C000300103E68 +:104DE000350901352D01451927681F6067685F6027 +:104DF000A7689F60E7681034DF6010339D42F3D1ED +:104E00000F239E431036851989191340032B1AD995 +:104E10001E1F0023B4080134A400CF58EF50043300 +:104E2000A342FAD10324A643331D2240C918ED182A +:104E3000002A05D00023CC5CEC5401339342FAD114 +:104E4000F0BD0500F6E71A00F2E7C04670B50500B0 +:104E50000C001F2922D8B7239B00C358002B14D065 +:104E60008A009B181A68002A0FD0012A0BD0511C07 +:104E700005D00021200019609047002070BD162346 +:104E800003600120FAE70020F8E7280000F02AF884 +:104E900022000100280000F011F8EFE7162303605C +:104EA00001204042EAE7C04610B5034B01001868F4 +:104EB000FFF7CCFF10BDC04600000020002370B5F6 +:104EC000074C050008001100236000F017F8431C90 +:104ED00000D070BD2368002BFBD02B60F9E7C046E3 +:104EE0002407002010B500F001F810BD5822012061 +:104EF000014B40421A6070472407002058220120CD +:104F0000014B40421A60704724070020FEE7C0466C +:084F1000F8B5C046F8B5C04633 +:104F180074B20181B0AB308000000000800A0181CA +:104F2800B0B0ABF0000000003F020181B0AB3080B0 +:104F38000000000080060181B0B0ABF00000000066 +:104F4800ECEDFF7FB0B0B08044EFFF7F01000000C0 +:104F5800F0EFFF7FB0A9028084F0FF7FB0B0A88097 +:104F6800D4F0FF7F01000000E0F0FF7FB0B0AA801E +:104F780014F1FF7F9CFFFF7FE4F1FF7F0100000039 +:104F8800E0F1FF7FAA3F39802CF2FF7FB0B0A88004 +:104F980038F2FF7FB0B0AA8078F2FF7FB0B0A88067 +:104FA8008CF2FF7F0100000088F2FF7FB0B0A8807C +:104FB80090F2FF7F0100000020F3FF7FAA0FB2806C +:104FC80088F3FF7F58FFFF7F70F6FF7FB0B0A8809F +:104FD8008CF6FF7F54FFFF7FECF8FF7F0100000095 +:104FE8005CFAFF7F008404806CFAFF7FB0B0A88071 +:104FF8006CFAFF7F40FFFF7F60FDFF7F0084048025 +:1050080080FDFF7FB0B0A88098FDFF7F0100000001 +:10501800080000200000000000000000F40200204A +:105028005C030020C4030020000000000000000012 +:105038000000000000000000000000000000000068 +:105048000000000000000000000000000000000058 +:105058000000000000000000000000000000000048 +:105068000000000000000000000000000000000038 +:105078000000000000000000000000000000000028 +:105088000000000000000000000000000000000018 +:105098000000000000000000000000000000000008 +:1050A80000000000000000000000000000000000F8 +:1050B80000000000000000000000000000000000E8 +:1050C80001000000000000000E33CDAB34126DE685 +:1050D800ECDE05000B0000000000000000000000EE +:1050E80000000000000000000000000000000000B8 +:1050F80000000000000000000000000000000000A8 +:105108000000000000000000000000000000000097 +:105118000000000000000000000000000000000087 +:105128000000000000000000000000000000000077 +:105138000000000000000000000000000000000067 +:105148000000000000000000000000000000000057 +:105158000000000000000000000000000000000047 +:105168000000000000000000000000000000000037 +:105178000000000000000000000000000000000027 +:105188000000000000000000000000000000000017 +:105198000000000000000000000000000000000007 +:1051A80000000000000000000000000000000000F7 +:1051B80000000000000000000000000000000000E7 +:1051C80000000000000000000000000000000000D7 +:1051D80000000000000000000000000000000000C7 +:1051E80000000000000000000000000000000000B7 +:1051F80000000000000000000000000000000000A7 +:105208000000000000000000000000000000000096 +:105218000000000000000000000000000000000086 +:105228000000000000000000000000000000000076 +:105238000000000000000000000000000000000066 +:105248000000000000000000000000000000000056 +:105258000000000000000000000000000000000046 +:105268000000000000000000000000000000000036 +:105278000000000000000000000000000000000026 +:105288000000000000000000000000000000000016 +:105298000000000000000000000000000000000006 +:1052A80000000000000000000000000000000000F6 +:1052B80000000000000000000000000000000000E6 +:1052C80000000000000000000000000000000000D6 +:1052D80000000000000000000000000000000000C6 +:1052E80000000000000000000000000000000000B6 +:1052F80000000000000000000000000000000000A6 +:105308000000000000000000000000000000000095 +:105318000000000000000000000000000000000085 +:105328000000000000000000000000000000000075 +:105338000000000000000000000000000000000065 +:105348000000000000000000000000000000000055 +:105358000000000000000000000000000000000045 +:105368000000000000000000000000000000000035 +:105378000000000000000000000000000000000025 +:105388000000000000000000000000000000000015 +:105398000000000000000000000000000000000005 +:1053A80000000000000000000000000000000000F5 +:1053B80000000000000000000000000000000000E5 +:1053C80000000000000000000000000000000000D5 +:1053D80000000000000000000000000000000000C5 +:1053E80000000000000000000000000000000000B5 +:1053F80000000000000000000000000000000000A5 +:105408000000000000000000000000000000000094 +:105418000000000000000000000000000000000084 +:105428000000000000000000000000000000000074 +:105438000000000000000000000000000000000064 +:0400000508000801E6 +:00000001FF diff --git a/firmware/build_stm/inlretro_stm.map b/firmware/build_stm6/inlretro_stm.map similarity index 69% rename from firmware/build_stm/inlretro_stm.map rename to firmware/build_stm6/inlretro_stm.map index 82bb0fb..036cfb7 100644 --- a/firmware/build_stm/inlretro_stm.map +++ b/firmware/build_stm6/inlretro_stm.map @@ -1,7 +1,7 @@ Archive member included to satisfy reference by file (symbol) c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) - C:\Users\paul\AppData\Local\Temp\cci1eGxe.o (__aeabi_unwind_cpp_pr0) + C:\Users\paul\AppData\Local\Temp\ccWAyB8q.o (__aeabi_unwind_cpp_pr0) c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(libunwind.o) c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) (restore_core_regs) c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(pr-support.o) @@ -49,11 +49,11 @@ c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/ c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o) c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o) (_exit) c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o) - C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o (__gnu_thumb1_case_uqi) + C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o (__gnu_thumb1_case_uqi) c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_shi.o) - C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o (__gnu_thumb1_case_shi) + C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o (__gnu_thumb1_case_shi) c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o) - C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o (__gnu_thumb1_case_uhi) + C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o (__gnu_thumb1_case_uhi) Allocating common symbols Common symbol size file @@ -86,23 +86,29 @@ Discarded input sections .ARM.exidx 0x00000000 0x8 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o .ARM.attributes 0x00000000 0x1b c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o - .data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccA7U3xu.o - .bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccA7U3xu.o + .text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccmcaa9E.o + .data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccmcaa9E.o + .bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccmcaa9E.o .text 0x00000000 0x0 source/bootload.o (symbol from plugin) - .data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o - .bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + .text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o + .data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o + .bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o .rodata.oper_info - 0x00000000 0x4 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + 0x00000000 0x4 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o + .text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o + .data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o + .bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o + .text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + .data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + .bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + .text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o + .data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o + .bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o + .text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o + .data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o + .bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o .rodata.usb_buff - 0x00000000 0x4 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o - .text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o - .data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o - .bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o - .text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - .data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - .bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - .data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o - .bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o + 0x00000000 0x4 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o .text 0x00000000 0x0 source/buffer.o (symbol from plugin) .text 0x00000000 0x0 source/ciccom.o (symbol from plugin) .text 0x00000000 0x0 source/dump.o (symbol from plugin) @@ -120,14 +126,16 @@ Discarded input sections .text 0x00000000 0x0 source/snes.o (symbol from plugin) .text 0x00000000 0x0 source/swim.o (symbol from plugin) .text 0x00000000 0x0 source/usb.o (symbol from plugin) + .text 0x00000000 0x0 source_stm_only/fwupdate.o (symbol from plugin) + .text 0x00000000 0x0 source_stm_only/hardfault.o (symbol from plugin) .text 0x00000000 0x0 source_stm_only/stm_init.o (symbol from plugin) .text 0x00000000 0x0 source_stm_only/usbstm.o (symbol from plugin) - .data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cci1eGxe.o - .bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cci1eGxe.o - .ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cci1eGxe.o - .data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccUzNUgX.o - .bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccUzNUgX.o - .ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccUzNUgX.o + .data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccWAyB8q.o + .bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccWAyB8q.o + .ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccWAyB8q.o + .data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccIpVung.o + .bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccIpVung.o + .ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccIpVung.o .data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) .bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) .debug_frame 0x00000000 0x2c4 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) @@ -364,12 +372,13 @@ Linker script and memory map LOAD c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o LOAD c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o LOAD c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o -LOAD C:\Users\paul\AppData\Local\Temp\ccA7U3xu.o +LOAD C:\Users\paul\AppData\Local\Temp\ccmcaa9E.o LOAD source/bootload.o -LOAD C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o -LOAD C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o -LOAD C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o -LOAD C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o +LOAD C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o +LOAD C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o +LOAD C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o +LOAD C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o +LOAD C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o LOAD source/buffer.o LOAD source/ciccom.o LOAD source/dump.o @@ -387,10 +396,12 @@ LOAD source/sega.o LOAD source/snes.o LOAD source/swim.o LOAD source/usb.o +LOAD source_stm_only/fwupdate.o +LOAD source_stm_only/hardfault.o LOAD source_stm_only/stm_init.o LOAD source_stm_only/usbstm.o -LOAD C:\Users\paul\AppData\Local\Temp\cci1eGxe.o -LOAD C:\Users\paul\AppData\Local\Temp\ccUzNUgX.o +LOAD C:\Users\paul\AppData\Local\Temp\ccWAyB8q.o +LOAD C:\Users\paul\AppData\Local\Temp\ccIpVung.o START GROUP LOAD c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a LOAD c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a @@ -404,260 +415,290 @@ END GROUP LOAD c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtend.o LOAD c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtn.o -.text 0x08000000 0x4c6c +.text 0x08000000 0x4f18 *(.isr_vector) - .isr_vector 0x08000000 0xc0 C:\Users\paul\AppData\Local\Temp\ccA7U3xu.o + .isr_vector 0x08000000 0xc0 C:\Users\paul\AppData\Local\Temp\ccmcaa9E.o 0x08000000 __isr_vector + *(.usb_driver) + .usb_driver 0x080000c0 0x3bc C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o + 0x08000198 USB_IRQHandler + *(.usb_desc) + .usb_desc 0x0800047c 0xb8 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o + *(.hardfault) + .hardfault 0x08000534 0x2 C:\Users\paul\AppData\Local\Temp\ccmcaa9E.o + 0x08000534 TIM1_CC_IRQHandler + 0x08000534 TSC_IRQHandler + 0x08000534 ADC1_COMP_IRQHandler + 0x08000534 SysTick_Handler + 0x08000534 PendSV_Handler + 0x08000534 NMI_Handler + 0x08000534 I2C1_IRQHandler + 0x08000534 RCC_CRS_IRQHandler + 0x08000534 SPI1_IRQHandler + 0x08000534 TIM6_DAC_IRQHandler + 0x08000534 USART3_4_IRQHandler + 0x08000534 EXTI2_3_IRQHandler + 0x08000534 I2C2_IRQHandler + 0x08000534 TIM17_IRQHandler + 0x08000534 CEC_CAN_IRQHandler + 0x08000534 PVD_VDDIO2_IRQHandler + 0x08000534 DMA1_Channel4_5_6_7_IRQHandler + 0x08000534 TIM16_IRQHandler + 0x08000534 TIM3_IRQHandler + 0x08000534 EXTI4_15_IRQHandler + 0x08000534 DMA1_Channel1_IRQHandler + 0x08000534 Default_Handler + 0x08000534 TIM14_IRQHandler + 0x08000534 TIM7_IRQHandler + 0x08000534 TIM15_IRQHandler + 0x08000534 EXTI0_1_IRQHandler + 0x08000534 SPI2_IRQHandler + 0x08000534 SVC_Handler + 0x08000534 RTC_IRQHand + 0x08000534 WWDG_IRQHandler + 0x08000534 TIM2_IRQHandler + 0x08000534 DEF_IRQHandler + 0x08000534 DMA1_Channel2_3_IRQHandler + 0x08000534 USART2_IRQHandler + 0x08000534 FLASH_IRQHandler + 0x08000534 USART1_IRQHandler + 0x08000534 TIM1_BRK_UP_TRG_COM_IRQHandler + *fill* 0x08000536 0x2 + .hardfault 0x08000538 0xc C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o + 0x08000538 HardFault_Handler + *_thumb1_case_uqi.o() + .text 0x08000544 0x14 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o) + 0x08000544 __gnu_thumb1_case_uqi + .ARM.attributes + 0x08000558 0x1e c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o) + *_thumb1_case_shi.o() + *fill* 0x08000576 0x2 + .text 0x08000578 0x14 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_shi.o) + 0x08000578 __gnu_thumb1_case_shi + .ARM.attributes + 0x0800058c 0x1e c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_shi.o) + *_thumb1_case_uhi.o() + *fill* 0x080005aa 0x2 + .text 0x080005ac 0x14 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o) + 0x080005ac __gnu_thumb1_case_uhi + .ARM.attributes + 0x080005c0 0x1e c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o) + *(.fw_update) + .fw_update 0x080005de 0x2 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o + 0x080005de usb_fwupdate_write + .fw_update 0x080005e0 0x154 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o + 0x00000780 . = 0x780 + *fill* 0x08000734 0x4c + *(.fw_up_main) + .fw_up_main 0x08000780 0x60 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o + 0x08000780 fwupdate_forever + 0x00000800 . = 0x800 + *fill* 0x080007e0 0x20 + *(.reset_handler) + .reset_handler + 0x08000800 0x3c C:\Users\paul\AppData\Local\Temp\ccmcaa9E.o + 0x08000800 Reset_Handler + *(.usbFuncWrite) + .usbFuncWrite 0x0800083c 0x48 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o + 0x0800083c usbFunctionWrite + *(.usbFuncSetup) + .usbFuncSetup 0x08000884 0x17fc C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o + 0x08000884 usbFunctionSetup *(.text*) - .text 0x080000c0 0x40 C:\Users\paul\AppData\Local\Temp\ccA7U3xu.o - 0x080000c0 Reset_Handler - 0x080000fc TSC_IRQHandler - 0x080000fc ADC1_COMP_IRQHandler - 0x080000fc SysTick_Handler - 0x080000fc PendSV_Handler - 0x080000fc NMI_Handler - 0x080000fc I2C1_IRQHandler - 0x080000fc RCC_CRS_IRQHandler - 0x080000fc SPI1_IRQHandler - 0x080000fc TIM6_DAC_IRQHandler - 0x080000fc USART3_4_IRQHandler - 0x080000fc EXTI2_3_IRQHandler - 0x080000fc I2C2_IRQHandler - 0x080000fc TIM17_IRQHandler - 0x080000fc CEC_CAN_IRQHandler - 0x080000fc PVD_VDDIO2_IRQHandler - 0x080000fc TIM1_CC_IRQHandler - 0x080000fc DMA1_Channel4_5_6_7_IRQHandler - 0x080000fc TIM16_IRQHandler - 0x080000fc TIM3_IRQHandler - 0x080000fc EXTI4_15_IRQHandler - 0x080000fc DMA1_Channel1_IRQHandler - 0x080000fc Default_Handler - 0x080000fc TIM14_IRQHandler - 0x080000fc TIM7_IRQHandler - 0x080000fc TIM15_IRQHandler - 0x080000fc EXTI0_1_IRQHandler - 0x080000fc SPI2_IRQHandler - 0x080000fc SVC_Handler - 0x080000fc RTC_IRQHand - 0x080000fc WWDG_IRQHandler - 0x080000fc TIM2_IRQHandler - 0x080000fc DEF_IRQHandler - 0x080000fc DMA1_Channel2_3_IRQHandler - 0x080000fc USART2_IRQHandler - 0x080000fc FLASH_IRQHandler - 0x080000fc USART1_IRQHandler - 0x080000fc TIM1_BRK_UP_TRG_COM_IRQHandler - .text 0x08000100 0x17f0 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o - 0x08000100 usbFunctionSetup .text.pbje_scan - 0x080018f0 0x12c C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o + 0x08002080 0x12c C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o .text.pbje_state_change - 0x08001a1c 0x98 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o + 0x080021ac 0x98 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o + .text.write_page_verify + 0x08002244 0x5c C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o .text.write_page - 0x08001ab4 0x34 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o + 0x080022a0 0x34 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o .text.get_next_buff - 0x08001ae8 0x54 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o + 0x080022d4 0x54 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o .text.discrete_exp0_prgrom_wr - 0x08001b3c 0x58 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o - 0x08001b3c discrete_exp0_prgrom_wr + 0x08002328 0x58 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o + 0x08002328 discrete_exp0_prgrom_wr .text.jtag_init_pbje - 0x08001b94 0xe0 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o - 0x08001b94 jtag_init_pbje + 0x08002380 0xe0 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o + 0x08002380 jtag_init_pbje .text.jtag_run_pbje.part.0 - 0x08001c74 0xd8 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o - 0x08001c74 jtag_run_pbje.part.0 + 0x08002460 0xd8 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o + 0x08002460 jtag_run_pbje.part.0 .text.io_reset - 0x08001d4c 0x154 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o - 0x08001d4c io_reset + 0x08002538 0x154 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o + 0x08002538 io_reset .text.startup.main - 0x08001ea0 0xb00 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o - 0x08001ea0 main + 0x0800268c 0xabc C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o + 0x0800268c main .text.append_pairity - 0x080029a0 0x1e C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - *fill* 0x080029be 0x2 - .text.snes_wr 0x080029c0 0x60 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x080029c0 snes_wr - .text.snes_rd 0x08002a20 0x48 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x08002a20 snes_rd + 0x08003148 0x1e C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + *fill* 0x08003166 0x2 + .text.snes_wr 0x08003168 0x60 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x08003168 snes_wr + .text.snes_rd 0x080031c8 0x48 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x080031c8 snes_rd .text.snes_3v_flash_wr - 0x08002a68 0x50 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x08002a68 snes_3v_flash_wr + 0x08003210 0x50 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x08003210 snes_3v_flash_wr .text.snes_5v_flash_wr - 0x08002ab8 0x50 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x08002ab8 snes_5v_flash_wr + 0x08003260 0x50 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x08003260 snes_5v_flash_wr .text.nes_cpu_wr - 0x08002b08 0x6c C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x08002b08 nes_cpu_wr + 0x080032b0 0x6c C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x080032b0 nes_cpu_wr .text.swim_wotf - 0x08002b74 0xb4 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x08002b74 swim_wotf + 0x0800331c 0xb4 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x0800331c swim_wotf .text.swim_rotf - 0x08002c28 0xac C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x08002c28 swim_rotf + 0x080033d0 0xac C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x080033d0 swim_rotf .text.delay_us - 0x08002cd4 0x16 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x08002cd4 delay_us - *fill* 0x08002cea 0x2 + 0x0800347c 0x16 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x0800347c delay_us + *fill* 0x08003492 0x2 .text.nes_dualport_wr - 0x08002cec 0x50 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x08002cec nes_dualport_wr + 0x08003494 0x50 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x08003494 nes_dualport_wr .text.nes_dualport_rd - 0x08002d3c 0x38 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x08002d3c nes_dualport_rd + 0x080034e4 0x38 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x080034e4 nes_dualport_rd .text.nes_ppu_wr - 0x08002d74 0x50 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x08002d74 nes_ppu_wr + 0x0800351c 0x50 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x0800351c nes_ppu_wr .text.nes_ppu_rd - 0x08002dc4 0x38 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x08002dc4 nes_ppu_rd + 0x0800356c 0x38 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x0800356c nes_ppu_rd .text.cdream_chrrom_flash_wr - 0x08002dfc 0x88 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x08002dfc cdream_chrrom_flash_wr + 0x080035a4 0x88 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x080035a4 cdream_chrrom_flash_wr .text.mmc4_chrrom_flash_wr - 0x08002e84 0x74 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x08002e84 mmc4_chrrom_flash_wr + 0x0800362c 0x74 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x0800362c mmc4_chrrom_flash_wr .text.mmc3_chrrom_flash_wr - 0x08002ef8 0x44 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x08002ef8 mmc3_chrrom_flash_wr + 0x080036a0 0x44 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x080036a0 mmc3_chrrom_flash_wr .text.cnrom_chrrom_flash_wr - 0x08002f3c 0x80 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x08002f3c cnrom_chrrom_flash_wr + 0x080036e4 0x80 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x080036e4 cnrom_chrrom_flash_wr .text.mmc1_chrrom_flash_wr - 0x08002fbc 0x60 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x08002fbc mmc1_chrrom_flash_wr + 0x08003764 0x60 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x08003764 mmc1_chrrom_flash_wr .text.nrom_chrrom_flash_wr - 0x0800301c 0x44 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x0800301c nrom_chrrom_flash_wr + 0x080037c4 0x44 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x080037c4 nrom_chrrom_flash_wr .text.nes_cpu_rd - 0x08003060 0x40 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x08003060 nes_cpu_rd + 0x08003808 0x40 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x08003808 nes_cpu_rd .text.mmc4_prgrom_sop_flash_wr - 0x080030a0 0x54 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x080030a0 mmc4_prgrom_sop_flash_wr + 0x08003848 0x54 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x08003848 mmc4_prgrom_sop_flash_wr .text.mmc3_prgrom_flash_wr - 0x080030f4 0x50 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x080030f4 mmc3_prgrom_flash_wr + 0x0800389c 0x50 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x0800389c mmc3_prgrom_flash_wr .text.unrom_prgrom_flash_wr - 0x08003144 0x64 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x08003144 unrom_prgrom_flash_wr + 0x080038ec 0x64 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x080038ec unrom_prgrom_flash_wr .text.mmc1_prgrom_flash_wr - 0x080031a8 0x50 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x080031a8 mmc1_prgrom_flash_wr + 0x08003950 0x50 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x08003950 mmc1_prgrom_flash_wr .text.nrom_prgrom_flash_wr - 0x080031f8 0x44 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x080031f8 nrom_prgrom_flash_wr + 0x080039a0 0x44 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x080039a0 nrom_prgrom_flash_wr .text.disc_push_exp0_prgrom_wr - 0x0800323c 0x48 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - 0x0800323c disc_push_exp0_prgrom_wr - .text 0x08003284 0x48 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o - 0x08003284 usbFunctionWrite - .text.control_xfr_in - 0x080032cc 0xd8 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o + 0x080039e4 0x48 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + 0x080039e4 disc_push_exp0_prgrom_wr .text.write_page_snes.constprop.31 - 0x080033a4 0x194 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o - 0x080033a4 write_page_snes.constprop.31 - .text.snes_page_rd_poll.constprop.22 - 0x08003538 0x7c C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o - 0x08003538 snes_page_rd_poll.constprop.22 - .text.nes_cpu_page_rd_poll.constprop.21 - 0x080035b4 0x6c C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o - 0x080035b4 nes_cpu_page_rd_poll.constprop.21 - .text.nes_ppu_page_rd_poll.constprop.19 - 0x08003620 0x68 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o - 0x08003620 nes_ppu_page_rd_poll.constprop.19 - .text.mmc1_wr.constprop.10 - 0x08003688 0x22 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o - 0x08003688 mmc1_wr.constprop.10 - *fill* 0x080036aa 0x2 - .text.USB_IRQHandler - 0x080036ac 0x2ec C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o - 0x080036ac USB_IRQHandler - .text.HardFault_Handler - 0x08003998 0x2 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o - 0x08003998 HardFault_Handler - *fill* 0x0800399a 0x2 - .text 0x0800399c 0x4 C:\Users\paul\AppData\Local\Temp\cci1eGxe.o - 0x0800399c jump2addr - .text 0x080039a0 0x154 C:\Users\paul\AppData\Local\Temp\ccUzNUgX.o - 0x080039a0 swim_xfr - .text 0x08003af4 0xa38 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) - 0x08003dc4 _Unwind_GetCFA - 0x08003dc8 __gnu_Unwind_RaiseException - 0x08003e1c __gnu_Unwind_ForcedUnwind - 0x08003e30 __gnu_Unwind_Resume - 0x08003e78 __gnu_Unwind_Resume_or_Rethrow - 0x08003e94 _Unwind_Complete - 0x08003e98 _Unwind_DeleteException - 0x08003ea8 _Unwind_VRS_Get - 0x08003ef4 _Unwind_VRS_Set - 0x08003f40 __gnu_Unwind_Backtrace - 0x080042a0 __aeabi_unwind_cpp_pr0 - 0x080042ac __aeabi_unwind_cpp_pr1 - 0x080042b8 __aeabi_unwind_cpp_pr2 - 0x080042c4 _Unwind_VRS_Pop - .text 0x0800452c 0x144 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(libunwind.o) - 0x0800452c __restore_core_regs - 0x0800452c restore_core_regs - 0x08004558 __gnu_Unwind_Restore_VFP - 0x0800455c __gnu_Unwind_Save_VFP - 0x08004560 __gnu_Unwind_Restore_VFP_D - 0x08004564 __gnu_Unwind_Save_VFP_D - 0x08004568 __gnu_Unwind_Restore_VFP_D_16_to_31 - 0x0800456c __gnu_Unwind_Save_VFP_D_16_to_31 - 0x08004570 __gnu_Unwind_Restore_WMMXD - 0x08004574 __gnu_Unwind_Save_WMMXD - 0x08004578 __gnu_Unwind_Restore_WMMXC - 0x0800457c __gnu_Unwind_Save_WMMXC - 0x08004580 ___Unwind_RaiseException - 0x08004580 _Unwind_RaiseException - 0x080045b0 _Unwind_Resume - 0x080045b0 ___Unwind_Resume - 0x080045e0 _Unwind_Resume_or_Rethrow - 0x080045e0 ___Unwind_Resume_or_Rethrow - 0x08004610 _Unwind_ForcedUnwind - 0x08004610 ___Unwind_ForcedUnwind - 0x08004640 ___Unwind_Backtrace - 0x08004640 _Unwind_Backtrace - .text 0x08004670 0x3a8 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(pr-support.o) - 0x080046c4 __gnu_unwind_execute - 0x080049c0 __gnu_unwind_frame - 0x080049e8 _Unwind_GetRegionStart - 0x080049f4 _Unwind_GetLanguageSpecificData - 0x08004a08 _Unwind_GetTextRelBase - 0x08004a10 _Unwind_GetDataRelBase - .text.abort 0x08004a18 0x10 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o) - 0x08004a18 abort - .text.memcpy 0x08004a28 0x84 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o) - 0x08004a28 memcpy + 0x08003a2c 0x194 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o + 0x08003a2c write_page_snes.constprop.31 + .text.snes_page_rd_poll.constprop.23 + 0x08003bc0 0x7c C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o + 0x08003bc0 snes_page_rd_poll.constprop.23 + .text.nes_cpu_page_rd_poll.constprop.22 + 0x08003c3c 0x6c C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o + 0x08003c3c nes_cpu_page_rd_poll.constprop.22 + .text.nes_ppu_page_rd_poll.constprop.20 + 0x08003ca8 0x68 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o + 0x08003ca8 nes_ppu_page_rd_poll.constprop.20 + .text.mmc1_wr.constprop.11 + 0x08003d10 0x22 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o + 0x08003d10 mmc1_wr.constprop.11 + *fill* 0x08003d32 0x2 + .text 0x08003d34 0x4 C:\Users\paul\AppData\Local\Temp\ccWAyB8q.o + 0x08003d34 jump2addr + *fill* 0x08003d38 0x8 + .text 0x08003d40 0x154 C:\Users\paul\AppData\Local\Temp\ccIpVung.o + 0x08003d40 swim_xfr + .text 0x08003e94 0xa38 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) + 0x08004164 _Unwind_GetCFA + 0x08004168 __gnu_Unwind_RaiseException + 0x080041bc __gnu_Unwind_ForcedUnwind + 0x080041d0 __gnu_Unwind_Resume + 0x08004218 __gnu_Unwind_Resume_or_Rethrow + 0x08004234 _Unwind_Complete + 0x08004238 _Unwind_DeleteException + 0x08004248 _Unwind_VRS_Get + 0x08004294 _Unwind_VRS_Set + 0x080042e0 __gnu_Unwind_Backtrace + 0x08004640 __aeabi_unwind_cpp_pr0 + 0x0800464c __aeabi_unwind_cpp_pr1 + 0x08004658 __aeabi_unwind_cpp_pr2 + 0x08004664 _Unwind_VRS_Pop + .text 0x080048cc 0x144 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(libunwind.o) + 0x080048cc __restore_core_regs + 0x080048cc restore_core_regs + 0x080048f8 __gnu_Unwind_Restore_VFP + 0x080048fc __gnu_Unwind_Save_VFP + 0x08004900 __gnu_Unwind_Restore_VFP_D + 0x08004904 __gnu_Unwind_Save_VFP_D + 0x08004908 __gnu_Unwind_Restore_VFP_D_16_to_31 + 0x0800490c __gnu_Unwind_Save_VFP_D_16_to_31 + 0x08004910 __gnu_Unwind_Restore_WMMXD + 0x08004914 __gnu_Unwind_Save_WMMXD + 0x08004918 __gnu_Unwind_Restore_WMMXC + 0x0800491c __gnu_Unwind_Save_WMMXC + 0x08004920 ___Unwind_RaiseException + 0x08004920 _Unwind_RaiseException + 0x08004950 _Unwind_Resume + 0x08004950 ___Unwind_Resume + 0x08004980 _Unwind_Resume_or_Rethrow + 0x08004980 ___Unwind_Resume_or_Rethrow + 0x080049b0 _Unwind_ForcedUnwind + 0x080049b0 ___Unwind_ForcedUnwind + 0x080049e0 ___Unwind_Backtrace + 0x080049e0 _Unwind_Backtrace + .text 0x08004a10 0x3a8 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(pr-support.o) + 0x08004a64 __gnu_unwind_execute + 0x08004d60 __gnu_unwind_frame + 0x08004d88 _Unwind_GetRegionStart + 0x08004d94 _Unwind_GetLanguageSpecificData + 0x08004da8 _Unwind_GetTextRelBase + 0x08004db0 _Unwind_GetDataRelBase + .text.abort 0x08004db8 0x10 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o) + 0x08004db8 abort + .text.memcpy 0x08004dc8 0x84 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o) + 0x08004dc8 memcpy .text._raise_r - 0x08004aac 0x5c c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) - 0x08004aac _raise_r - .text.raise 0x08004b08 0x14 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) - 0x08004b08 raise - .text._kill_r 0x08004b1c 0x28 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o) - 0x08004b1c _kill_r + 0x08004e4c 0x5c c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) + 0x08004e4c _raise_r + .text.raise 0x08004ea8 0x14 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) + 0x08004ea8 raise + .text._kill_r 0x08004ebc 0x28 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o) + 0x08004ebc _kill_r .text._getpid_r - 0x08004b44 0x8 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o) - 0x08004b44 _getpid_r - .text._getpid 0x08004b4c 0x10 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o) - 0x08004b4c _getpid - .text._kill 0x08004b5c 0x10 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o) - 0x08004b5c _kill - .text._exit 0x08004b6c 0x4 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o) - 0x08004b6c _exit - .text 0x08004b70 0x14 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o) - 0x08004b70 __gnu_thumb1_case_uqi - .text 0x08004b84 0x14 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_shi.o) - 0x08004b84 __gnu_thumb1_case_shi - .text 0x08004b98 0x14 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o) - 0x08004b98 __gnu_thumb1_case_uhi + 0x08004ee4 0x8 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o) + 0x08004ee4 _getpid_r + .text._getpid 0x08004eec 0x10 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o) + 0x08004eec _getpid + .text._kill 0x08004efc 0x10 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o) + 0x08004efc _kill + .text._exit 0x08004f0c 0x4 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o) + 0x08004f0c _exit *(.init) - .init 0x08004bac 0x4 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o - 0x08004bac _init + .init 0x08004f10 0x4 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o + 0x08004f10 _init *(.fini) - .fini 0x08004bb0 0x4 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o - 0x08004bb0 _fini + .fini 0x08004f14 0x4 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o + 0x08004f14 _fini *crtbegin.o(.ctors) *crtbegin?.o(.ctors) *(EXCLUDE_FILE(*crtend.o *crtend?.o) .ctors) @@ -669,55 +710,45 @@ LOAD c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none- *(SORT(.dtors.*)) *(.dtors) *(.rodata*) - .rodata.config_desc - 0x08004bb4 0x12 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o - .rodata.device_desc - 0x08004bc6 0x12 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o - .rodata.string0_desc - 0x08004bd8 0x4 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o - .rodata.string1_desc - 0x08004bdc 0x54 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o - .rodata.string2_desc - 0x08004c30 0x3c C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o *(.eh_frame*) -.glue_7 0x08004c6c 0x0 - .glue_7 0x08004c6c 0x0 linker stubs +.glue_7 0x08004f18 0x0 + .glue_7 0x08004f18 0x0 linker stubs -.glue_7t 0x08004c6c 0x0 - .glue_7t 0x08004c6c 0x0 linker stubs +.glue_7t 0x08004f18 0x0 + .glue_7t 0x08004f18 0x0 linker stubs -.vfp11_veneer 0x08004c6c 0x0 - .vfp11_veneer 0x08004c6c 0x0 linker stubs +.vfp11_veneer 0x08004f18 0x0 + .vfp11_veneer 0x08004f18 0x0 linker stubs -.v4_bx 0x08004c6c 0x0 - .v4_bx 0x08004c6c 0x0 linker stubs +.v4_bx 0x08004f18 0x0 + .v4_bx 0x08004f18 0x0 linker stubs -.iplt 0x08004c6c 0x0 - .iplt 0x08004c6c 0x0 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o +.iplt 0x08004f18 0x0 + .iplt 0x08004f18 0x0 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o -.ARM.extab 0x08004c6c 0x30 +.ARM.extab 0x08004f18 0x30 *(.ARM.extab* .gnu.linkonce.armextab.*) - .ARM.extab 0x08004c6c 0x24 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) - .ARM.extab 0x08004c90 0xc c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(pr-support.o) - 0x08004c9c __exidx_start = . + .ARM.extab 0x08004f18 0x24 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) + .ARM.extab 0x08004f3c 0xc c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(pr-support.o) + 0x08004f48 __exidx_start = . -.ARM.exidx 0x08004c9c 0xd0 +.ARM.exidx 0x08004f48 0xd0 *(.ARM.exidx* .gnu.linkonce.armexidx.*) - .ARM.exidx 0x08004c9c 0x8 C:\Users\paul\AppData\Local\Temp\cci1eGxe.o - .ARM.exidx 0x08004ca4 0x0 C:\Users\paul\AppData\Local\Temp\ccUzNUgX.o + .ARM.exidx 0x08004f48 0x8 C:\Users\paul\AppData\Local\Temp\ccWAyB8q.o + .ARM.exidx 0x08004f50 0x0 C:\Users\paul\AppData\Local\Temp\ccIpVung.o 0x10 (size before relaxing) - .ARM.exidx 0x08004ca4 0x98 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) + .ARM.exidx 0x08004f50 0x98 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) 0xd8 (size before relaxing) - .ARM.exidx 0x08004d3c 0x30 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(pr-support.o) + .ARM.exidx 0x08004fe8 0x30 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(pr-support.o) 0x48 (size before relaxing) - 0x08004d6c __exidx_end = . - 0x08004d6c __etext = ALIGN (0x4) + 0x08005018 __exidx_end = . + 0x08005018 __etext = ALIGN (0x4) -.rel.dyn 0x08004d6c 0x0 - .rel.iplt 0x08004d6c 0x0 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o +.rel.dyn 0x08005018 0x0 + .rel.iplt 0x08005018 0x0 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o -.data 0x20000000 0x430 load address 0x08004d6c +.data 0x20000000 0x430 load address 0x08005018 0x20000000 __data_start__ = . *(vtable) *(.data*) @@ -741,108 +772,113 @@ LOAD c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none- *(SORT(.fini_array.*)) *(.fini_array) 0x20000430 PROVIDE (__fini_array_end, .) + 0x20000430 . = ALIGN (0x4) + *(.fastrun) *(.jcr) 0x20000430 . = ALIGN (0x4) 0x20000430 __data_end__ = . -.igot.plt 0x20000430 0x0 load address 0x0800519c +.igot.plt 0x20000430 0x0 load address 0x08005448 .igot.plt 0x20000430 0x0 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o -.bss 0x20000430 0x2f0 load address 0x0800519c +.bss 0x20000430 0x2f8 load address 0x08005448 0x20000430 . = ALIGN (0x4) 0x20000430 __bss_start__ = . *(.bss*) - .bss.addrh 0x20000430 0x4 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + .bss.addrh 0x20000430 0x4 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o .bss.bank_table - 0x20000434 0x2 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + 0x20000434 0x2 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o 0x20000434 bank_table *fill* 0x20000436 0x2 - .bss.buff0 0x20000438 0x14 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + .bss.buff0 0x20000438 0x14 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o 0x20000438 buff0 - .bss.buff1 0x2000044c 0x14 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + .bss.buff1 0x2000044c 0x14 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o 0x2000044c buff1 - .bss.buff2 0x20000460 0x14 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + .bss.buff2 0x20000460 0x14 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o 0x20000460 buff2 - .bss.buff3 0x20000474 0x14 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + .bss.buff3 0x20000474 0x14 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o 0x20000474 buff3 - .bss.cur_bank 0x20000488 0x1 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + .bss.cur_bank 0x20000488 0x1 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o 0x20000488 cur_bank *fill* 0x20000489 0x3 - .bss.cur_buff 0x2000048c 0x4 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + .bss.cur_buff 0x2000048c 0x4 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o 0x2000048c cur_buff .bss.oper_info_struct - 0x20000490 0x20 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + 0x20000490 0x20 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o 0x20000490 oper_info_struct .bss.pbje_command - 0x200004b0 0x1 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + 0x200004b0 0x1 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o 0x200004b0 pbje_command .bss.pbje_data - 0x200004b1 0x20 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + 0x200004b1 0x20 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o 0x200004b1 pbje_data .bss.pbje_numclk - 0x200004d1 0x1 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + 0x200004d1 0x1 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o 0x200004d1 pbje_numclk .bss.pbje_status - 0x200004d2 0x1 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + 0x200004d2 0x1 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o 0x200004d2 pbje_status .bss.raw_bank_status - 0x200004d3 0x10 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + 0x200004d3 0x10 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o *fill* 0x200004e3 0x1 .bss.raw_buffer16 - 0x200004e4 0x200 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o - .bss.rv16.4991 - 0x200006e4 0x8 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + 0x200004e4 0x200 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o + .bss.rv16.5001 + 0x200006e4 0x8 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o .bss.swim_base - 0x200006ec 0x4 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + 0x200006ec 0x4 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o 0x200006ec swim_base - .bss.swim_pin 0x200006f0 0x1 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + .bss.swim_pin 0x200006f0 0x1 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o 0x200006f0 swim_pin *fill* 0x200006f1 0x3 - .bss.tck_base 0x200006f4 0x4 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + .bss.tck_base 0x200006f4 0x4 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o 0x200006f4 tck_base - .bss.tck_pin 0x200006f8 0x1 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + .bss.tck_pin 0x200006f8 0x1 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o 0x200006f8 tck_pin *fill* 0x200006f9 0x3 - .bss.tdi_base 0x200006fc 0x4 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + .bss.tdi_base 0x200006fc 0x4 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o 0x200006fc tdi_base - .bss.tdi_pin 0x20000700 0x1 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + .bss.tdi_pin 0x20000700 0x1 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o 0x20000700 tdi_pin *fill* 0x20000701 0x3 - .bss.tdo_base 0x20000704 0x4 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + .bss.tdo_base 0x20000704 0x4 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o 0x20000704 tdo_base - .bss.tdo_pin 0x20000708 0x1 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + .bss.tdo_pin 0x20000708 0x1 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o 0x20000708 tdo_pin *fill* 0x20000709 0x3 - .bss.tms_base 0x2000070c 0x4 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + .bss.tms_base 0x2000070c 0x4 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o 0x2000070c tms_base - .bss.tms_pin 0x20000710 0x1 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + .bss.tms_pin 0x20000710 0x1 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o 0x20000710 tms_pin - .bss.num_buff.5071 - 0x20000711 0x1 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o + .bss.num_buff.5081 + 0x20000711 0x1 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o *fill* 0x20000712 0x2 .bss.cur_usb_load_buff - 0x20000714 0x4 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o + 0x20000714 0x4 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o 0x20000714 cur_usb_load_buff .bss.incoming_bytes_remain - 0x20000718 0x1 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o + 0x20000718 0x1 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o 0x20000718 incoming_bytes_remain + *fill* 0x20000719 0x1 + .bss.rv16.4770 + 0x2000071a 0x8 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o *(COMMON) - *fill* 0x20000719 0x3 - COMMON 0x2000071c 0x4 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o) - 0x2000071c errno - 0x20000720 . = ALIGN (0x4) - 0x20000720 __bss_end__ = . + *fill* 0x20000722 0x2 + COMMON 0x20000724 0x4 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o) + 0x20000724 errno + 0x20000728 . = ALIGN (0x4) + 0x20000728 __bss_end__ = . -.heap 0x20000720 0x0 - 0x20000720 __end__ = . - 0x20000720 PROVIDE (end, .) +.heap 0x20000728 0x0 + 0x20000728 __end__ = . + 0x20000728 PROVIDE (end, .) *(.heap*) - .heap 0x20000720 0x0 C:\Users\paul\AppData\Local\Temp\ccA7U3xu.o - 0x20000720 __HeapLimit = . + .heap 0x20000728 0x0 C:\Users\paul\AppData\Local\Temp\ccmcaa9E.o + 0x20000728 __HeapLimit = . -.stack_dummy 0x20000720 0xc00 +.stack_dummy 0x20000728 0xc00 *(.stack*) - .stack 0x20000720 0xc00 C:\Users\paul\AppData\Local\Temp\ccA7U3xu.o + .stack 0x20000728 0xc00 C:\Users\paul\AppData\Local\Temp\ccmcaa9E.o 0x20001800 __StackTop = (ORIGIN (RAM) + LENGTH (RAM)) 0x20000c00 __StackLimit = (__StackTop - SIZEOF (.stack_dummy)) 0x20001800 PROVIDE (__stack, __StackTop) @@ -854,103 +890,111 @@ OUTPUT(build_stm/inlretro_stm.elf elf32-littlearm) .ARM.attributes 0x00000000 0x1e c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o .ARM.attributes - 0x0000001e 0x1b C:\Users\paul\AppData\Local\Temp\ccA7U3xu.o + 0x0000001e 0x1b C:\Users\paul\AppData\Local\Temp\ccmcaa9E.o .ARM.attributes - 0x00000039 0x2f C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + 0x00000039 0x2f C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o .ARM.attributes - 0x00000068 0x2f C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o + 0x00000068 0x2f C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o .ARM.attributes - 0x00000097 0x2f C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o + 0x00000097 0x2f C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o .ARM.attributes - 0x000000c6 0x2f C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o + 0x000000c6 0x2f C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o .ARM.attributes - 0x000000f5 0x21 C:\Users\paul\AppData\Local\Temp\cci1eGxe.o + 0x000000f5 0x2f C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o .ARM.attributes - 0x00000116 0x21 C:\Users\paul\AppData\Local\Temp\ccUzNUgX.o + 0x00000124 0x21 C:\Users\paul\AppData\Local\Temp\ccWAyB8q.o .ARM.attributes - 0x00000137 0x1e c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o) - .ARM.attributes - 0x00000155 0x1e c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_shi.o) - .ARM.attributes - 0x00000173 0x1e c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o) + 0x00000145 0x21 C:\Users\paul\AppData\Local\Temp\ccIpVung.o .comment 0x00000000 0x6e - .comment 0x00000000 0x6e C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + .comment 0x00000000 0x6e C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o 0x6f (size before relaxing) - .comment 0x0000006e 0x6f C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o - .comment 0x0000006e 0x6f C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - .comment 0x0000006e 0x6f C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o + .comment 0x0000006e 0x6f C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o + .comment 0x0000006e 0x6f C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + .comment 0x0000006e 0x6f C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o + .comment 0x0000006e 0x6f C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o -.debug_line 0x00000000 0x1ba6 - .debug_line 0x00000000 0x6f C:\Users\paul\AppData\Local\Temp\ccA7U3xu.o - .debug_line 0x0000006f 0xa1e C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o - .debug_line 0x00000a8d 0x6fe C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o - .debug_line 0x0000118b 0x4a9 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - .debug_line 0x00001634 0x436 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o - .debug_line 0x00001a6a 0x49 C:\Users\paul\AppData\Local\Temp\cci1eGxe.o - .debug_line 0x00001ab3 0xf3 C:\Users\paul\AppData\Local\Temp\ccUzNUgX.o +.debug_line 0x00000000 0x1d7e + .debug_line 0x00000000 0x7c C:\Users\paul\AppData\Local\Temp\ccmcaa9E.o + .debug_line 0x0000007c 0xa0a C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o + .debug_line 0x00000a86 0x70a C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o + .debug_line 0x00001190 0x4a9 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + .debug_line 0x00001639 0x412 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o + .debug_line 0x00001a4b 0x1f7 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o + .debug_line 0x00001c42 0x49 C:\Users\paul\AppData\Local\Temp\ccWAyB8q.o + .debug_line 0x00001c8b 0xf3 C:\Users\paul\AppData\Local\Temp\ccIpVung.o -.debug_info 0x00000000 0x4757 - .debug_info 0x00000000 0x9b C:\Users\paul\AppData\Local\Temp\ccA7U3xu.o - .debug_info 0x0000009b 0x149a C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o - .debug_info 0x00001535 0x14bf C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o - .debug_info 0x000029f4 0x11f2 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - .debug_info 0x00003be6 0xa45 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o - .debug_info 0x0000462b 0x98 C:\Users\paul\AppData\Local\Temp\cci1eGxe.o - .debug_info 0x000046c3 0x94 C:\Users\paul\AppData\Local\Temp\ccUzNUgX.o +.debug_info 0x00000000 0x4ae9 + .debug_info 0x00000000 0x97 C:\Users\paul\AppData\Local\Temp\ccmcaa9E.o + .debug_info 0x00000097 0x1488 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o + .debug_info 0x0000151f 0x14b3 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o + .debug_info 0x000029d2 0x11f6 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + .debug_info 0x00003bc8 0x9dc C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o + .debug_info 0x000045a4 0x419 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o + .debug_info 0x000049bd 0x98 C:\Users\paul\AppData\Local\Temp\ccWAyB8q.o + .debug_info 0x00004a55 0x94 C:\Users\paul\AppData\Local\Temp\ccIpVung.o -.debug_abbrev 0x00000000 0xbe3 - .debug_abbrev 0x00000000 0x14 C:\Users\paul\AppData\Local\Temp\ccA7U3xu.o - .debug_abbrev 0x00000014 0x31e C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o - .debug_abbrev 0x00000332 0x3b2 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o - .debug_abbrev 0x000006e4 0x190 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - .debug_abbrev 0x00000874 0x347 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o - .debug_abbrev 0x00000bbb 0x14 C:\Users\paul\AppData\Local\Temp\cci1eGxe.o - .debug_abbrev 0x00000bcf 0x14 C:\Users\paul\AppData\Local\Temp\ccUzNUgX.o +.debug_abbrev 0x00000000 0xde9 + .debug_abbrev 0x00000000 0x12 C:\Users\paul\AppData\Local\Temp\ccmcaa9E.o + .debug_abbrev 0x00000012 0x329 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o + .debug_abbrev 0x0000033b 0x3cd C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o + .debug_abbrev 0x00000708 0x190 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + .debug_abbrev 0x00000898 0x316 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o + .debug_abbrev 0x00000bae 0x213 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o + .debug_abbrev 0x00000dc1 0x14 C:\Users\paul\AppData\Local\Temp\ccWAyB8q.o + .debug_abbrev 0x00000dd5 0x14 C:\Users\paul\AppData\Local\Temp\ccIpVung.o -.debug_aranges 0x00000000 0x228 +.debug_aranges 0x00000000 0x270 .debug_aranges - 0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccA7U3xu.o + 0x00000000 0x28 C:\Users\paul\AppData\Local\Temp\ccmcaa9E.o .debug_aranges - 0x00000020 0x20 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o + 0x00000028 0x20 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o .debug_aranges - 0x00000040 0x60 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o + 0x00000048 0x68 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o .debug_aranges - 0x000000a0 0xe8 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o + 0x000000b0 0xe8 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o .debug_aranges - 0x00000188 0x60 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o + 0x00000198 0x60 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o .debug_aranges - 0x000001e8 0x20 C:\Users\paul\AppData\Local\Temp\cci1eGxe.o + 0x000001f8 0x38 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o .debug_aranges - 0x00000208 0x20 C:\Users\paul\AppData\Local\Temp\ccUzNUgX.o + 0x00000230 0x20 C:\Users\paul\AppData\Local\Temp\ccWAyB8q.o + .debug_aranges + 0x00000250 0x20 C:\Users\paul\AppData\Local\Temp\ccIpVung.o -.debug_loc 0x00000000 0x4958 - .debug_loc 0x00000000 0x2b56 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o - .debug_loc 0x00002b56 0xdec C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o - .debug_loc 0x00003942 0xa3f C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - .debug_loc 0x00004381 0x5d7 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o +.debug_ranges 0x00000000 0xcd0 + .debug_ranges 0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccmcaa9E.o + .debug_ranges 0x00000020 0x838 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o + .debug_ranges 0x00000858 0x220 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o + .debug_ranges 0x00000a78 0xd8 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + .debug_ranges 0x00000b50 0x128 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o + .debug_ranges 0x00000c78 0x58 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o -.debug_ranges 0x00000000 0xc70 - .debug_ranges 0x00000000 0x840 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o - .debug_ranges 0x00000840 0x230 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o - .debug_ranges 0x00000a70 0xd8 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - .debug_ranges 0x00000b48 0x128 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o +.debug_loc 0x00000000 0x4d12 + .debug_loc 0x00000000 0x2b56 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o + .debug_loc 0x00002b56 0xe29 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o + .debug_loc 0x0000397f 0xa3f C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + .debug_loc 0x000043be 0x564 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o + .debug_loc 0x00004922 0x3f0 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o -.debug_str 0x00000000 0xdd5 - .debug_str 0x00000000 0x76d C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o - 0x7d2 (size before relaxing) - .debug_str 0x0000076d 0x22c C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o +.debug_str 0x00000000 0xe46 + .debug_str 0x00000000 0x764 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o + 0x7c9 (size before relaxing) + .debug_str 0x00000764 0x22c C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o 0x4c5 (size before relaxing) - .debug_str 0x00000999 0x1c7 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o + .debug_str 0x00000990 0x1c7 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o 0x3e2 (size before relaxing) - .debug_str 0x00000b60 0x275 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o - 0x555 (size before relaxing) + .debug_str 0x00000b57 0x235 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o + 0x515 (size before relaxing) + .debug_str 0x00000d8c 0xba C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o + 0x361 (size before relaxing) -.debug_frame 0x00000000 0x4fc - .debug_frame 0x00000000 0x30 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans0.ltrans.o - .debug_frame 0x00000030 0x118 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans1.ltrans.o - .debug_frame 0x00000148 0x2a0 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans2.ltrans.o - .debug_frame 0x000003e8 0x114 C:\Users\paul\AppData\Local\Temp\ccGNbBMZ.ltrans3.ltrans.o +.debug_frame 0x00000000 0x584 + .debug_frame 0x00000000 0x30 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans0.ltrans.o + .debug_frame 0x00000030 0x13c C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans1.ltrans.o + .debug_frame 0x0000016c 0x2a0 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans2.ltrans.o + .debug_frame 0x0000040c 0x108 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans3.ltrans.o + .debug_frame 0x00000514 0x70 C:\Users\paul\AppData\Local\Temp\ccoZxUm5.ltrans4.ltrans.o .stabstr 0x00000000 0x76 .stabstr 0x00000000 0x76 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o) diff --git a/firmware/build_stmn/inlretro_stm.elf b/firmware/build_stmn/inlretro_stm.elf new file mode 100644 index 0000000000000000000000000000000000000000..d186bdc36af064cc1cda835329d91338fa1261e7 GIT binary patch literal 199180 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 __HeapLimit), region RAM overflowed with stack) +OUTPUT(build_stm/inlretro_stm.elf elf32-littlearm) + +.ARM.attributes + 0x00000000 0x28 + .ARM.attributes + 0x00000000 0x1e c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o + .ARM.attributes + 0x0000001e 0x1b C:\Users\paul\AppData\Local\Temp\ccst3R5x.o + .ARM.attributes + 0x00000039 0x2f C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans0.ltrans.o + .ARM.attributes + 0x00000068 0x2f C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans1.ltrans.o + .ARM.attributes + 0x00000097 0x2f C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans2.ltrans.o + .ARM.attributes + 0x000000c6 0x2f C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans3.ltrans.o + .ARM.attributes + 0x000000f5 0x21 C:\Users\paul\AppData\Local\Temp\ccMZoj0e.o + .ARM.attributes + 0x00000116 0x21 C:\Users\paul\AppData\Local\Temp\ccScmBUX.o + +.comment 0x00000000 0x6e + .comment 0x00000000 0x6e C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans0.ltrans.o + 0x6f (size before relaxing) + .comment 0x0000006e 0x6f C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans1.ltrans.o + .comment 0x0000006e 0x6f C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans2.ltrans.o + .comment 0x0000006e 0x6f C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans3.ltrans.o + +.debug_line 0x00000000 0x18ed + .debug_line 0x00000000 0x7c C:\Users\paul\AppData\Local\Temp\ccst3R5x.o + .debug_line 0x0000007c 0x835 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans0.ltrans.o + .debug_line 0x000008b1 0x6c4 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans1.ltrans.o + .debug_line 0x00000f75 0x41b C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans2.ltrans.o + .debug_line 0x00001390 0x421 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans3.ltrans.o + .debug_line 0x000017b1 0x49 C:\Users\paul\AppData\Local\Temp\ccMZoj0e.o + .debug_line 0x000017fa 0xf3 C:\Users\paul\AppData\Local\Temp\ccScmBUX.o + +.debug_info 0x00000000 0x4014 + .debug_info 0x00000000 0x97 C:\Users\paul\AppData\Local\Temp\ccst3R5x.o + .debug_info 0x00000097 0x10fb C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans0.ltrans.o + .debug_info 0x00001192 0x141b C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans1.ltrans.o + .debug_info 0x000025ad 0xf84 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans2.ltrans.o + .debug_info 0x00003531 0x9b7 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans3.ltrans.o + .debug_info 0x00003ee8 0x98 C:\Users\paul\AppData\Local\Temp\ccMZoj0e.o + .debug_info 0x00003f80 0x94 C:\Users\paul\AppData\Local\Temp\ccScmBUX.o + +.debug_abbrev 0x00000000 0xcc0 + .debug_abbrev 0x00000000 0x12 C:\Users\paul\AppData\Local\Temp\ccst3R5x.o + .debug_abbrev 0x00000012 0x308 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans0.ltrans.o + .debug_abbrev 0x0000031a 0x3cd C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans1.ltrans.o + .debug_abbrev 0x000006e7 0x19f C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans2.ltrans.o + .debug_abbrev 0x00000886 0x412 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans3.ltrans.o + .debug_abbrev 0x00000c98 0x14 C:\Users\paul\AppData\Local\Temp\ccMZoj0e.o + .debug_abbrev 0x00000cac 0x14 C:\Users\paul\AppData\Local\Temp\ccScmBUX.o + +.debug_aranges 0x00000000 0x228 + .debug_aranges + 0x00000000 0x28 C:\Users\paul\AppData\Local\Temp\ccst3R5x.o + .debug_aranges + 0x00000028 0x20 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans0.ltrans.o + .debug_aranges + 0x00000048 0x68 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans1.ltrans.o + .debug_aranges + 0x000000b0 0xc8 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans2.ltrans.o + .debug_aranges + 0x00000178 0x70 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans3.ltrans.o + .debug_aranges + 0x000001e8 0x20 C:\Users\paul\AppData\Local\Temp\ccMZoj0e.o + .debug_aranges + 0x00000208 0x20 C:\Users\paul\AppData\Local\Temp\ccScmBUX.o + +.debug_ranges 0x00000000 0xaf8 + .debug_ranges 0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccst3R5x.o + .debug_ranges 0x00000020 0x6b8 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans0.ltrans.o + .debug_ranges 0x000006d8 0x228 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans1.ltrans.o + .debug_ranges 0x00000900 0xb8 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans2.ltrans.o + .debug_ranges 0x000009b8 0x140 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans3.ltrans.o + +.debug_loc 0x00000000 0x4133 + .debug_loc 0x00000000 0x241b C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans0.ltrans.o + .debug_loc 0x0000241b 0xdd5 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans1.ltrans.o + .debug_loc 0x000031f0 0x8b8 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans2.ltrans.o + .debug_loc 0x00003aa8 0x68b C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans3.ltrans.o + +.debug_str 0x00000000 0xcdf + .debug_str 0x00000000 0x6c2 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans0.ltrans.o + 0x715 (size before relaxing) + .debug_str 0x000006c2 0x235 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans1.ltrans.o + 0x4ce (size before relaxing) + .debug_str 0x000008f7 0x18e C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans2.ltrans.o + 0x3a9 (size before relaxing) + .debug_str 0x00000a85 0x25a C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans3.ltrans.o + 0x546 (size before relaxing) + +.debug_frame 0x00000000 0x500 + .debug_frame 0x00000000 0x34 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans0.ltrans.o + .debug_frame 0x00000034 0x12c C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans1.ltrans.o + .debug_frame 0x00000160 0x27c C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans2.ltrans.o + .debug_frame 0x000003dc 0x124 C:\Users\paul\AppData\Local\Temp\ccsrSnXZ.ltrans3.ltrans.o + +.stabstr 0x00000000 0x76 + .stabstr 0x00000000 0x76 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o) diff --git a/firmware/include_stm/nokeep.ld b/firmware/include_stm/nokeep.ld index e1e84b2..b508cf0 100644 --- a/firmware/include_stm/nokeep.ld +++ b/firmware/include_stm/nokeep.ld @@ -80,12 +80,33 @@ SECTIONS /* hardfault & dummy handlers */ *(.hardfault) + /*this contains vital code for fwupdater appears to be some case statement helper..*/ + *_thumb1_case_uqi.o /* about 50 bytes */ + /* his freinds are 50 Bytes each as well don't seem to be required + * but lets include them for now anyway. Perhaps we can move them + * if we're ~100 bytes short at some point */ + *_thumb1_case_shi.o /*this disappeared when updating from gcc version 6.2.1 20161205 + *to version 7.3.1 20180622 but we'll keep it here anyway */ + *_thumb1_case_uhi.o + /* put firmware update code at end of first 2KByte * should allow for easier updating of that code alone * by the application code if desired */ *(.fw_update) + /* when created there was about 132 Bytes of free space here */ + + /* fwupdate main needs to be in a fixed location */ + . = 0x0780; + *(.fw_up_main) + + /* when created there was about 32Bytes free space here */ + + /* THIS IS THE END OF THE USB DRIVER & FIRMWARE UDPATER SECTION */ + + . = 0x0800; /*update the location counter to the 3rd KByte */ + /* reset handler fixed to 0x08000800 * that way the vector table should always be accurate */ *(.reset_handler) @@ -101,6 +122,48 @@ SECTIONS *(.text*) + /* GCC LIBRARIES */ + /* Had issues with fwupdater breaking when my switch case got so big + * turns out it must have been calling _thumb1_case_uqi.o library function + * because whenever the sector with that library got stomped the mcu went + * to hard fault (code that was being executed got erased) + * 'quick' fix was to move that library function to fw_update section + * went ahead and moved his case freinds as well. + * + * Possible that this issue could arise again if the fwupdate code calls + * other library functions. I was able to move most of them with the + * linker script, but not the libgcc.a ones. Kept getting a linker + * error with .text having both .exidx and .extab sections. Apparently + * these are for some C++ stack unrolling and exception handling + * I don't even think I want these, and the fwupdater certainly shouldn't + * need them. So just leave them were they land normally at the end of .text + * section. If we run out of flash space some day they can probably + * just get left out of the binary. I tried to turn them off but failed.. + * don't care anymore, fixed my problem, I've banged my head enough for today + */ + + /* *\lib*.a:* */ + /* *\libgcc.a:* */ + /* these are causing compiler issues, but honestly I don't want them anyway! */ + /* some C++ junk about unwinding the stack and raising exeptions. */ + /* *unwind-arm.o */ + /* *pr-support.o */ + /* *libunwind.o */ /*this one is movable I don't think I want it anyway!*/ + + /* some movable library code that doesn't seem to be relied upon by fwupdater + * if the fwupdater fails at somepoint may want to see if it's calling + * code from these libraries and move them to fwupdate space + *\libg.a:* <- includes things like memcpy + *\libnosys.a:* + *\crti.o:* + */ + + /* these got moved to fwupdate section, but so far only the first is used + *_thumb1_case_uqi.o + *_thumb1_case_shi.o + *_thumb1_case_uhi.o + */ + *(.init) *(.fini) diff --git a/firmware/source/bootload.c b/firmware/source/bootload.c index ac5b0a2..721d4a7 100644 --- a/firmware/source/bootload.c +++ b/firmware/source/bootload.c @@ -39,6 +39,15 @@ uint8_t bootload_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8 case JUMP_ADDR: jump2addr((addrh<<16) | (operand)); break; //device may not respond depending on the address/function being jumped to + case PREP_FWUPDATE: //while we are directly jumping to fwupdate section + //it should be okay if it's in a fixed location + return fwupdate_forever(); break; + //this function hijacked the stack frame to steal execution + //after returing from the current USB ISR + //it returns SUCCESS/ERR depending on if it found and modified + //the stack frame successfully + //leaves main application code for good + //will respond to usb interrupts, but are directed to fwupdater default: //opcode doesn't exist return ERR_UNKN_BOOTLOAD_OPCODE; diff --git a/firmware/source/bootload.h b/firmware/source/bootload.h index 3cd9fd8..ad87aa8 100644 --- a/firmware/source/bootload.h +++ b/firmware/source/bootload.h @@ -5,9 +5,9 @@ #include "shared_dictionaries.h" #include "shared_errors.h" -#ifdef STM_INL6 - -#endif //end STM_INL6 +#ifdef STM_CORE +#include "../source_stm_only/fwupdate.h" +#endif uint8_t bootload_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *rdata ); diff --git a/firmware/source_stm_only/fwupdate.c b/firmware/source_stm_only/fwupdate.c index c301665..ee61c3f 100644 --- a/firmware/source_stm_only/fwupdate.c +++ b/firmware/source_stm_only/fwupdate.c @@ -1,7 +1,48 @@ #include "fwupdate.h" -FWUPDATE void erase_main() +#define unlock_flash() FLASH->KEYR = FLASH_KEY1; FLASH->KEYR = FLASH_KEY2 + +#define lock_flash() FLASH->CR = FLASH_CR_LOCK +// //The FLASH_CR register can be locked again by user software by writing the +// //LOCK bit in the FLASH_CR register to 1. + + + +//flash must be erased prior to calling +FWUPDATE void wr_hword(uint16_t *addr, uint16_t data) +{ + //Trying to get by with out a static variable + //writes to the current address of FLASH_AR, + //plus an 8bit address offset. + //the host can set the address by erasing a page + //that's really only useful when starting from a blank page though. + //it can also set the address by writing 0xFFFF to a byte that's already erased + + unlock_flash(); + + //The main Flash memory programming sequence in standard mode is as follows: + // 1.Check that no main Flash memory operation is ongoing by checking the BSY bit in the FLASH_SR register. + while ( FLASH->SR & FLASH_SR_BSY ) { /* forever */ } + + // 2. Set the PG bit in the FLASH_CR register. + FLASH->CR = FLASH_CR_PG; //shouldn't need to mask, all other bits clear by default + + // 3. Perform the data write (half-word) at the desired address. + *addr = data; + + // 4. Wait until the BSY bit is reset in the FLASH_SR register. + while ( FLASH->SR & FLASH_SR_BSY ) { /* forever */ } + + // 5. Check the EOP flag in the FLASH_SR register (it is set when the programming operation has succeeded), and then clear it by software. + FLASH->SR = FLASH_SR_EOP; + + // Note:The registers are not accessible in write mode when the BSY bit of the FLASH_SR register is set. + + lock_flash(); +} + +FWUPDATE void erase_page(uint16_t page_num_1KB) { //usb driver & this code resisdes in first 2KByte of last (0x0800_0800) //The smaller STMF070C6 has 32KByte of flash, and larger STMF070RB has 128KByte @@ -11,7 +52,360 @@ FWUPDATE void erase_main() //But they're both leaving the first 2KByte untouched //And erasing the 30KByte that follows //For now we're ignoring the extra 96KByte of additional flash that the RB contains + + //The program and erase operations can be performed over the whole product voltage range. + //They are managed through the following seven Flash registers: + // + // Key register (FLASH_KEYR) + // Option byte key register (FLASH_OPTKEYR) + // Flash control register (FLASH_CR) + // Flash status register (FLASH_SR) + // Flash address register (FLASH_AR) + // Option byte register (FLASH_OBR) + // Write protection register (FLASH_WRPR) + // + //An ongoing Flash memory operation will not block the CPU as long as the CPU does not access the Flash memory. + //On the contrary, during a program/erase operation to the Flash memory, any attempt to read the Flash memory + //will stall the bus. The read operation will proceed correctly once the program/erase operation has completed. + //This means that code or data fetches cannot be made while a program/erase operation is ongoing. + // + //For program and erase operations on the Flash memory (write/erase), the internal RC oscillator (HSI) must be ON. +//should be running on it right now... + // + //Unlocking the Flash memory + //After reset, the Flash memory is protected against unwanted write or erase operations. + //The FLASH_CR register is not accessible in write mode, except for the OBL_LAUNCH bit, + //used to reload the option bits. An unlocking sequence should be written to the FLASH_KEYR + //register to open the access to the FLASH_CR register. This sequence consists of two write operations: + // Write KEY1 = 0x45670123 + //FLASH->KEYR = FLASH_KEY1; + // Write KEY2 = 0xCDEF89AB + //FLASH->KEYR = FLASH_KEY2; + unlock_flash(); + // + //Any wrong sequence locks up the FLASH_CR register until the next reset. + //In the case of a wrong key sequence, a bus error is detected and a Hard Fault interrupt is generated. + //This is done after the first write cycle if KEY1 does not match, or during the second write cycle if + //KEY1 has been correctly written but KEY2 does not match. + // + //The FLASH_CR register can be locked again by user software by writing the + //LOCK bit in the FLASH_CR register to 1. + //FLASH->CR = FLASH_CR_LOCK; - while(1){ - } + //Page Erase + // To erase a page, the procedure below should be followed: + // 1.Check that no Flash memory operation is ongoing by checking the BSY bit in the FLASH_CR register. + // Think they mean the FLASH_SR register...? + // the BSY bit is supposed to clear itself when flash operation is complete, or errored out + // So it should never remain set forever.. + while ( FLASH->SR & FLASH_SR_BSY ) { /* forever */ } + + // 2. Set the PER bit in the FLASH_CR register. + FLASH->CR = FLASH_CR_PER; //shouldn't need to mask, all other bits clear by default + + // 3. Program the FLASH_AR register to select a page to erase. + FLASH->AR = 0x08000000 + (page_num_1KB<<10); //page 2 (3rd KByte) + + // 4. Set the STRT bit in the FLASH_CR register (see note below). + FLASH->CR = (FLASH_CR_PER | FLASH_CR_STRT); + + // 5. Wait for the BSY bit to be reset. + __asm__ __volatile__ ("nop"); + while ( FLASH->SR & FLASH_SR_BSY) { /* forever */ } + + // 6. Check the EOP flag in the FLASH_SR register (it is set when the erase operation has succeeded). + // 7. Clear the EOP flag. + FLASH->SR = FLASH_SR_EOP; + // Note:The software should start checking if the BSY bit equals ÎéÎí0ÎéÎí at least one CPU cycle after setting the STRT bit. + + //The FLASH_CR register can be locked again by user software by writing the + //LOCK bit in the FLASH_CR register to 1. + lock_flash(); } + + + +FWUPDATE uint8_t fwupdate_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *rdata ) +{ +#define RD_LEN 0 +#define RD0 1 +#define RD1 2 +#define RD2 3 +#define RD3 4 + +#define BYTE_LEN 1 +#define HWORD_LEN 2 +#define WORD_LEN 4 + + //pointer to flash address space + //inialize to the last accessed flash address + uint16_t *flash_addr = (uint16_t *)FLASH->AR; + + switch (opcode) { + case ERASE_1KB_PAGE: + #ifdef STM32F070x6 + if( (operand>1) && (operand<32)) { //only has 32KByte of flash + #else + if( (operand>1) && (operand<128)) { //RB has 128KByte of flash + #endif + erase_page(operand); + }else{ + //don't want to erase ourselves! + //or hardfault + return ERR_FWUPDATE_BAD_ADDR; } + break; + + //Don't really want to leave flash in an unlocked state.. +// case UNLOCK_FLASH: +// unlock_flash(); break; +// +// case LOCK_FLASH: +// lock_flash(); break; + + case WR_HWORD: + //the address is based on previous + //miscdata is the provided offset from last + flash_addr += miscdata; + wr_hword(flash_addr, operand); + break; + + case SET_FLASH_ADDR: + //sets FLASH->AR to desired address by writing 0xFFFF to that address + //so it MUST already be erased! + #ifdef STM32F070x6 //only has 32KByte of flash + if (miscdata) { return ERR_FWUPDATE_BAD_ADDR; } + if (operand>0x7FFF) { return ERR_FWUPDATE_BAD_ADDR; } + #else + if (miscdata>1) { return ERR_FWUPDATE_BAD_ADDR; } //only 128KByte of flash + #endif + flash_addr = (uint16_t *) (0x08000000 + (miscdata<<16) + operand); + wr_hword(flash_addr, 0xFFFF); + + break; + + case GET_FLASH_ADDR: + rdata[RD_LEN] = WORD_LEN; + rdata[RD0] = FLASH->AR; + rdata[RD1] = FLASH->AR>>8; + rdata[RD2] = FLASH->AR>>16; + rdata[RD3] = FLASH->AR>>24; + break; + + case GET_FLASH_DATA: + rdata[RD_LEN] = HWORD_LEN; + rdata[RD0] = *flash_addr; + rdata[RD1] = (*flash_addr)>>8; + break; + + case READ_FLASH: + #ifdef STM32F070x6 //only has 32KByte of flash + if (miscdata) { return ERR_FWUPDATE_BAD_ADDR; } + if (operand>0x7FFF) { return ERR_FWUPDATE_BAD_ADDR; } + #else + if (miscdata>1) { return ERR_FWUPDATE_BAD_ADDR; } //only 128KByte of flash + #endif + flash_addr = (uint16_t *) (0x08000000 + (miscdata<<16) + operand); + rdata[RD_LEN] = HWORD_LEN; + rdata[RD0] = *flash_addr; + rdata[RD1] = (*flash_addr)>>8; + break; + + case RESET_DEVICE: + SCB->AIRCR = 0x05FA0004; + //device will not actually return from this.. + //although we could get it to by having it issue reset once back + //in the fwupdate forever loop: + //usbfuncwrite = RESETME; + //shouldn't need this variable till after reset.. + //couldn't get that method to work though, so just don't bother returning for now.. + break; + + + default: //opcode doesn't exist + return ERR_UNKN_FWUPDATE_OPCODE; + } + + return SUCCESS; + +} + + +FWUPDATE_NOIN uint16_t usb_fwupdate_setup(uint8_t data[8]) +{ + //cast incoming data to a setup_packet + setup_packet *spacket = (void *)data; + + //create a return array for data + static uint16_t rv16[RETURN_BUFF_SIZE/2]; + uint8_t *rv = (uint8_t*)rv16; + + //create a usbMsgPtr variable from the stack which we can use convienently + //but then at end of the function we'll need to copy the value over to usb_buff usbMsgPtr_H/L + usbMsgPtr_t usbMsgPtr; + + rv[RETURN_ERR_IDX] = GEN_FAIL; //default to error till opcode updates. + rv[RETURN_LEN_IDX] = 0; //reset to zero, number of bytes in return data (excluding ERR & LEN) + + usbMsgPtr = (usbMsgPtr_t)rv; + + uint8_t rlen = (uint8_t) spacket->wLength; + + switch(spacket->bRequest) { + case DICT_FWUPDATE: + rv[RETURN_ERR_IDX] = fwupdate_call( spacket->opcode, spacket->miscdata, spacket->operand, &rv[RETURN_LEN_IDX] ); + break; + default: + //request (aka dictionary) is unknown + rv[RETURN_ERR_IDX] = ERR_UNKN_DICTIONARY; + } + + usbMsgPtr_L = (uint32_t)usbMsgPtr; + usbMsgPtr_H = ((uint32_t)usbMsgPtr)>>16; + + return rlen; +} + + +FWUPDATE_NOIN uint8_t usb_fwupdate_write(uint8_t *data, uint8_t len) +{ + +} + + + +//This function has a fixed location so the application code knows where to find it +//and it shouldn't change +FWUPMAIN uint8_t fwupdate_forever() +{ + //need to turn off any interrupt sources except USB + + //TODO turn off WDT + + //update usb function pointers to fwupdate functions + //this file is compiled at same time as the the setup/write functions + //so it's okay to refernce them at compile time + usbfuncsetup = (uint32_t) &usb_fwupdate_setup; //should only assign lower 16bits + usbfuncwrite = (uint32_t) &usb_fwupdate_write; //should only assign lower 16bits + + //need to return back to the bootloader PREP_FWUPDATE call that got us here + //but when that's done we want to hijack execution so the USB ISR returns here + //instead of the application main + + //modify the return PC/LR that's on the stack for the USB interrupt that's + //currently being handled + // + //APSR bits 31-28 NZCV processor flags (could be any value) + //EPSR bit 24 Thumb (should be set) + //IPSR bits 5-0 Exception number (should be zero if not in nested interrupt) + //bits 27-25 & 23-6 should all be cleared for the stacked xPSR + //bit 24 should be set (always in thumb mode) + //bits 5-0 are probably clear if the device was in main (thread mode) + //probably don't want to jump into the fw updater if it wasn't anyway..! + // + //so we don't necessarily know how far the stack pointer has decremented away + //from the current processor stack frame created for the current exception + // + //but if we search back far enough, we'll find stack frame that looks like: + // R0, R1, R2, R3, R12, LR, PC, xPSR + // The PC should be 0x0800_????, and the LR probably is to..? + // PC could be something else if it happened to be executing from RAM + // or we're on a processor with more than 64KByte of flash + // The xPSR should be 0b????0001_00000000_00000000_00000000 + // + // we're going to play it safe and require PC == 0x0800???? and the xPSR == 0x?1000000 + // we're also going to stop the LR just so it can't cause any troubles + // + // once the PC & LR are hijacked to get back here, we need to return to the + // PREP_FWUPDATE call, and let it know all was well. + asm( + //use r0 as our pointer to the stack + "mov r0, r13\n" + + //xPSR has to be atleast 8 words back/up + "add r0, #28\n" + + "ldr r2, psr_mask\n" + "ldr r3, psr_expect\n" + + "skip_2words:\n" + "add r0, #4\n" + + "next_word:\n" + "add r0, #4\n" + "ldr r1, [r0]\n" + "and r1, r1, r2\n" + "sub r1, r1, r3\n" + "bne next_word\n" + + //now r0 should be pointing to xPSR + // + //decrement to PC and verify 0x0800???? + "ldr r2, pc_mask\n" + "ldr r3, pc_expect\n" + "sub r0, #4\n" + + "ldr r1, [r0]\n" + "and r1, r1, r2\n" + "sub r1, r1, r3\n" + "bne skip_2words\n" //the PC didn't match the expected, xPSR must have been false positive + //if we go past the end of SRAM we'll get a hardfault and quit + + //PC matched expectation, we've found it! + + //stomp the PC and then the LR with + //loop forever PC + "mov r3, pc\n" //pc currently points to next instruction + + "add r3, #10\n" //forever loop is 6 instructions ahead of here + //minus one as if the PC was executing the "b done" instruction + //and it should enter at fwupdateloop + + //stomp the PC in stack frame + "str r3, [r0]\n" + "sub r0, #4\n" + //stomp the LR in the stack frame + "add r3, #1\n" //LR need to be Thumb + "str r3, [r0]\n" + + "b done\n" + + "fwupdateloop:\n"); + + //the forever main loop is here! + + //when USB interrupts occur they should return back to here + + //if fwupdate is done, intitate system reset + //maybe it's safer to have the user do this by unpluggig the device..? + + //Couldn't get this to work for some reason... + //if (usbfuncwrite == RESETME ) { + // SCB->AIRCR = 0x05FA0004; + //} + + asm( "b fwupdateloop\n" + + ".p2align 2\n" + "pc_mask:\n" + ".word 0xFFFF0000\n" //bits of the PC we want to match + "pc_expect:\n" + ".word 0x08000000\n" //bits of the PC we want to match + "psr_mask:\n" + ".word 0x0FFFFFFF\n" //bits of the xPSR we want to match + "psr_expect:\n" + ".word 0x01000000\n" //bits of the xPSR we want to match + + // "beef:\n" + // ".word 0xBEAD5678\n" + + "done:\n" +// "bkpt\n" + + + ); + + //return the PREP_FWUPDATE call that got us here + return SUCCESS; + +} + diff --git a/firmware/source_stm_only/fwupdate.h b/firmware/source_stm_only/fwupdate.h index 7753985..d90b94d 100644 --- a/firmware/source_stm_only/fwupdate.h +++ b/firmware/source_stm_only/fwupdate.h @@ -5,11 +5,18 @@ //include target chip port definition library files #include -//#define FWUPDATE __attribute__ ((section (".fw_update"))) -#define FWUPDATE __attribute__ ((section (".fw_update"), noinline, noclone)) +#include "../source/shared_dictionaries.h" +#include "../source/shared_errors.h" +#include "../source/types.h" +#include "usbstm.h" + +#define FWUPDATE __attribute__ ((section (".fw_update"))) //allow inline functions +#define FWUPDATE_NOIN __attribute__ ((section (".fw_update"), noinline, noclone)) //separate usb funcs from main +#define FWUPMAIN __attribute__ ((section (".fw_up_main"), noinline, noclone)) -void erase_main(); - +//bootloader in main application needs to be able to call this +//inorder to exit main application code +FWUPMAIN uint8_t fwupdate_forever(); #endif diff --git a/firmware/source_stm_only/usbstm.c b/firmware/source_stm_only/usbstm.c index 5b069ad..bf56a47 100644 --- a/firmware/source_stm_only/usbstm.c +++ b/firmware/source_stm_only/usbstm.c @@ -165,7 +165,7 @@ USBDRIVER void usb_reset_recovery(){ //uint16_t volatile (* const usb_buff)[512] = (void*)USB_PMAADDR; //this was suggestion by: http://a3f.at/articles/register-syntax-sugar //which errors on compilation due to assigning of type array -USBDRIVER uint16_t volatile (* const usb_buff) = (void*)USB_PMAADDR; +uint16_t volatile (* const usb_buff) = (void*)USB_PMAADDR; //static uint16_t num_bytes_req; @@ -756,17 +756,52 @@ USBDRIVER static void control_xfr_init( usbRequest_t *spacket ) { //but this is where we need to snoop on the setup packet to determine //if it's a firmware update packet -// if (fwupdate logic) { + // + //this isn't needed anymore though. because the application code + //jumps to the fwupdate main which effectively exits the main application + //then updates our usb function pointers for us. + // + // +// if (spacket->bRequest == DICT_FWUPDATE ) { // //send this packet to the firmware updater -// erase_main(); +// //do this by changing the usbfuncsetup pointer +// usbfuncsetup = (uint32_t) &usb_fwupdate_setup; //should only assign lower 16bits +// //now all setup packets will go to the fwupdater instead of application code +// //we're basically stuck in this condition until a reset which is what we want +// //accidentally jumping to the application code that's not existent would brick us +// //hmmm could have the application code do this for us though instead of slowing down +// //all setup packets.. +// //I think I like this idea, use BOOTLOADER dictionary to get it done once +// //rest of update stuff is working +// //other thing that should be protected from is write transfers +// +// //The above was DONE +// +// +// //other thing we need to do is keep the USB ISR from returning to +// //the main function +// //I think this function is inlined with the USB ISR which means the current +// //value in the link register is where the ISR will return to +// asm( +// // "ldr r0, sramconst\n" +// // "mov r13, r0\n" +// // "ldr r0, sramconst+4\n" +// "bkpt\n" +// //"bx r0\n" +// //"mov pc, r0\n" +// //".p2align 2\n" +// //"sramconst:\n" +// ////".word 0xDEADBEEF" +// //".word 0x20001278\n" //MSP for bootloader +// ////".word 0x1FFFC519" //AN2606 note for jumping to bootloader C6 +// //".word 0x1FFFCAC5\n" //C6 reset vector +// ); // } -// else { //normal setup packet send to application code - JumpToApplication = (uint16_t (*)(uint8_t data[8])) ((0x08000000)); //base of flash - //application main makes the following assignment at powerup - //usbfuncsetup = (uint32_t) &usbFunctionSetup; //should only assign lower 16bits - JumpToApplication += usbfuncsetup; -// } + JumpToApplication = (uint16_t (*)(uint8_t data[8])) ((0x08000000)); //base of flash + //application main makes the following assignment at powerup + //usbfuncsetup = (uint32_t) &usbFunctionSetup; //should only assign lower 16bits + JumpToApplication += usbfuncsetup; //perform the actual jump/call num_bytes_sending = JumpToApplication( (uint8_t*) spacket ); diff --git a/firmware/source_stm_only/usbstm.h b/firmware/source_stm_only/usbstm.h index 5975814..9d82def 100644 --- a/firmware/source_stm_only/usbstm.h +++ b/firmware/source_stm_only/usbstm.h @@ -5,6 +5,7 @@ //include target chip port definition library files #include +#include "../source/shared_dictionaries.h" #include "fwupdate.h" #define USBDRIVER __attribute__ ((section (".usb_driver"))) @@ -98,13 +99,19 @@ #define usbflag usb_buff[USBFLAG] //used for communication between USB driver and main application //different values for usbflag // 0x0000 reserved for flag cleared - #define INITUSB 0xA53C + #define INITUSB 0xA53C //used by main application to tell usb driver to initialize itself //need 4 bytes for setup & write functions, bump the BTABLE another 8Bytes for now... #define USBFUNCSETUP 8 -#define usbfuncsetup usb_buff[USBFUNCSETUP] +#define usbfuncsetup usb_buff[USBFUNCSETUP] //will always be odd (Thumb) #define USBFUNCWRITE 9 -#define usbfuncwrite usb_buff[USBFUNCWRITE] +#define usbfuncwrite usb_buff[USBFUNCWRITE] //will always be odd (Thumb) +// #define RESETME 0x5FA4 //used by fwupdater to signal device to reset itself + //being an even number we know it's a safe value because all funcs are thumb +//#define FWPTR_LO 10 +//#define fwptr_lo usb_buff[FWPTR_LO] +//#define FWPTR_HI 11 +//#define fwptr_hi usb_buff[FWPTR_HI] //buffer table itself is located in 1KB buffer above, but it's location is programmable diff --git a/host/scripts/app/dict.lua b/host/scripts/app/dict.lua index c24594b..a829936 100644 --- a/host/scripts/app/dict.lua +++ b/host/scripts/app/dict.lua @@ -728,6 +728,60 @@ local function bootload( opcode, operand, misc, data ) +end + + + +-- external call for firmware update dictionary +local function fwupdate( opcode, operand, misc, data ) + + if not op_fwupdate[opcode] then + print("ERROR undefined opcode:", opcode, "must be defined in shared_dict_fwupdate.h") + return nil + end + + if not operand then + operand = 0 + elseif type(operand) == "string" then + if not op_fwupdate[operand] then + print("ERROR undefined operand:", operand, "must be defined in shared_dict_fwupdate.h") + return nil + end + --decode string operands into + operand = op_fwupdate[operand] + end + + if not misc then misc = 0 end + + local wLength, ep = default_rlen_1_in(op_fwupdate[opcode.."rlen"]) + + local count + count, data = usb_vend_xfr( + -- ep, dictionary wValue[misc:opcode] wIndex wLength data + ep, dict["DICT_FWUPDATE"], ( misc<<8 | op_fwupdate[opcode]), operand, wLength, data) + --print(count) + local error_code, data_len + if ep == USB_IN then + error_code = data:byte(RETURN_ERR_IDX) + data_len = data:byte(RETURN_LEN_IDX) + end + --print("error:", error_code, "data_len:", data_len) + + assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " device error code: " .. error_code) + + if data_len and data_len ~= (wLength - RETURN_LEN_IDX) then + print("WARNING!! Device's return data length:", data_len, "did not match expected:", wLength-RETURN_LEN_IDX) + end + + --process the return data string and return it to calling function + if data_len then + return string_to_int( data:sub(RETURN_DATA, data_len+RETURN_DATA), data_len) + else + return nil + end + + + end @@ -966,6 +1020,7 @@ op_n64 = {} op_swim = {} op_jtag = {} op_bootload = {} +op_fwupdate = {} op_ciccom = {} err_codes = {} @@ -985,6 +1040,7 @@ create_dict_tables( op_n64, "../shared/shared_dict_n64.h") create_dict_tables( op_swim, "../shared/shared_dict_swim.h") create_dict_tables( op_jtag, "../shared/shared_dict_jtag.h") create_dict_tables( op_bootload,"../shared/shared_dict_bootload.h") +create_dict_tables( op_fwupdate,"../shared/shared_dict_fwupdate.h") create_dict_tables( op_ciccom, "../shared/shared_dict_ciccom.h") create_dict_tables( err_codes, "../shared/shared_errors.h") @@ -1005,6 +1061,7 @@ dict.buffer = buffer dict.buffer_payload_in = buffer_payload_in dict.buffer_payload_out = buffer_payload_out dict.operation = operation +dict.fwupdate = fwupdate -- return the module's table return dict diff --git a/host/scripts/app/fwupdate.lua b/host/scripts/app/fwupdate.lua new file mode 100644 index 0000000..6ec24fc --- /dev/null +++ b/host/scripts/app/fwupdate.lua @@ -0,0 +1,156 @@ + +-- create the module's table +local fwupdate = {} + +-- import required modules +local dict = require "scripts.app.dict" + +-- file constants + +-- local functions +local function erase_main() + + --dict.fwupdate("ERASE_1KB_PAGE", 2) --page 0 & 1 (first 2KByte) are forbidden + --dict.fwupdate("ERASE_1KB_PAGE", 3) --this is redundant for RB (aligns C6 to RB when done with above) + --dict.fwupdate("ERASE_1KB_PAGE", 4) --0x0800_1000 - 0x0800_17FF + --dict.fwupdate("ERASE_1KB_PAGE", 5) --redundant RB + --dict.fwupdate("ERASE_1KB_PAGE", 6) --0x0800_1800 - 0x0800_1FFF + --dict.fwupdate("ERASE_1KB_PAGE", 7) + --dict.fwupdate("ERASE_1KB_PAGE", 8) --0x0800_2000 - 0x0800_27FF + --dict.fwupdate("ERASE_1KB_PAGE", 9) + + curpage = 2 --skip the first pages + rv = dict.fwupdate("GET_FLASH_ADDR") + print("flash addr:", string.format("%X", rv) ) + + while (curpage<32) do +-- while (curpage<128) do + print("erasing page:", curpage) + dict.fwupdate("ERASE_1KB_PAGE", curpage) + + rv = dict.fwupdate("GET_FLASH_ADDR") + print("flash addr:", string.format("%X", rv) ) + + curpage = curpage+1 + end + +end + +local function update_firmware(newbuild) + + print("updating") + + --enter fwupdate mode + dict.bootload("PREP_FWUPDATE") + + --now the device will only respond to FWUPDATE dictionary commands + + --open new file + file = assert(io.open(newbuild, "rb")) + + --TODO verify first 2KByte matches build + + --erase 30KByte of application code +-- erase_main() + + rv = dict.fwupdate("GET_FLASH_ADDR") + print("flash addr:", string.format("%X", rv) ) + print("\n"); + + --advance past the first 2KB of build + dict.fwupdate("ERASE_1KB_PAGE", 30) + rv = dict.fwupdate("GET_FLASH_ADDR") + print("flash addr:", string.format("%X", rv) ) + rv = dict.fwupdate("GET_FLASH_ADDR") + print("flash addr:", string.format("%X", rv) ) + rv = dict.fwupdate("GET_FLASH_ADDR") + print("flash addr:", string.format("%X", rv) ) + rv = dict.fwupdate("GET_FLASH_ADDR") + print("flash addr:", string.format("%X", rv) ) + print("\n"); + + dict.fwupdate("SET_FLASH_ADDR", 0x7912, 0x01) + rv = dict.fwupdate("GET_FLASH_ADDR") + print("flash addr:", string.format("%X", rv) ) + +-- dict.fwupdate("UNLOCK_FLASH") + + dict.fwupdate("WR_HWORD", 0xCC33, 0x00) + rv = dict.fwupdate("GET_FLASH_ADDR") + print("flash addr:", string.format("%X", rv) ) + rv = dict.fwupdate("GET_FLASH_DATA") + print("flash data:", string.format("%X", rv) ) + print("\n"); + print("\n"); + + dict.fwupdate("WR_HWORD", 0x1111, 0x01) + rv = dict.fwupdate("GET_FLASH_ADDR") + print("flash addr:", string.format("%X", rv) ) + rv = dict.fwupdate("GET_FLASH_DATA") + print("flash data:", string.format("%X", rv) ) + print("\n"); + + dict.fwupdate("WR_HWORD", 0x2222, 0x01) + rv = dict.fwupdate("GET_FLASH_ADDR") + print("flash addr:", string.format("%X", rv) ) + rv = dict.fwupdate("GET_FLASH_DATA") + print("flash data:", string.format("%X", rv) ) + print("\n"); + + dict.fwupdate("WR_HWORD", 0x4444, 0x02) + rv = dict.fwupdate("GET_FLASH_ADDR") + print("flash addr:", string.format("%X", rv) ) + rv = dict.fwupdate("GET_FLASH_DATA") + print("flash data:", string.format("%X", rv) ) + print("\n"); + + dict.fwupdate("WR_HWORD", 0x7777, 0x03) + rv = dict.fwupdate("GET_FLASH_ADDR") + print("flash addr:", string.format("%X", rv) ) + rv = dict.fwupdate("GET_FLASH_DATA") + print("flash data:", string.format("%X", rv) ) + print("\n"); + + dict.fwupdate("WR_HWORD", 0xAAAA, 0x10) + rv = dict.fwupdate("GET_FLASH_ADDR") + print("flash addr:", string.format("%X", rv) ) + rv = dict.fwupdate("GET_FLASH_DATA") + print("flash data:", string.format("%X", rv) ) + print("\n"); + + dict.fwupdate("WR_HWORD", 0xBBBB, 0x20) + rv = dict.fwupdate("GET_FLASH_ADDR") + print("flash addr:", string.format("%X", rv) ) + rv = dict.fwupdate("GET_FLASH_DATA") + print("flash data:", string.format("%X", rv) ) + print("\n"); + +-- dict.fwupdate("LOCK_FLASH") + + rv = dict.fwupdate("READ_FLASH", 0x0000, 0x00) + print("read data:", string.format("%X", rv) ) + + rv = dict.fwupdate("READ_FLASH", 0x053e, 0x00) + print("read data:", string.format("%X", rv) ) + + rv = dict.fwupdate("READ_FLASH", 0x791a, 0x00) + print("read data:", string.format("%X", rv) ) + + dict.fwupdate("RESET_DEVICE") + + --write build to flash + + print("updated") +end + +-- global variables so other modules can use them + + +-- call functions desired to run when script is called/imported + + +-- functions other modules are able to call +fwupdate.update_firmware = update_firmware + +-- return the module's table +return fwupdate diff --git a/host/scripts/inlretro.lua b/host/scripts/inlretro.lua index 8f66240..f11cd1c 100644 --- a/host/scripts/inlretro.lua +++ b/host/scripts/inlretro.lua @@ -54,6 +54,7 @@ function main () local swim = require "scripts.app.swim" local jtag = require "scripts.app.jtag" local ciccom = require "scripts.app.ciccom" + local fwupdate = require "scripts.app.fwupdate" -- local bootload = require "scripts.app.bootload" -- local crc32 = require "scripts.app.crc32" @@ -67,12 +68,12 @@ function main () --local curcart = require "scripts.nes.mmc1" --local curcart = require "scripts.nes.unrom" --local curcart = require "scripts.nes.cnrom" - local curcart = require "scripts.nes.mmc3" + --local curcart = require "scripts.nes.mmc3" --local curcart = require "scripts.nes.mmc2" --local curcart = require "scripts.nes.mmc4" --local curcart = require "scripts.nes.mm2" --local curcart = require "scripts.nes.mapper30" - --local curcart = require "scripts.nes.bnrom" + local curcart = require "scripts.nes.bnrom" --local curcart = require "scripts.nes.cdream" --local curcart = require "scripts.nes.cninja" --local curcart = require "scripts.nes.action53" @@ -88,7 +89,7 @@ function main () -- ===================================================== -- USERS: set cart_console to the to point to the mapper script you would like to use here. -- ===================================================== - local cart_console = "NES" --includes Famicom + --local cart_console = "NES" --includes Famicom --local cart_console = "SNES" --local cart_console = "SEGA" --local cart_console = "N64" @@ -143,6 +144,12 @@ function main () -- dict.bootload("JUMP_BL") -- dict.bootload("JUMP_TEST") -- print("jumped") +-- + + --Firmware update testing + + fwupdate.update_firmware("../firmware/build_stm/inlretro_stm.bin") + -- debug = true -- rv = cart.detect(debug) @@ -288,7 +295,7 @@ function main () --curcart.process( true, false, true, true, true, "ignore/dump.bin", "ignore/BBC_nonJW.bin", "ignore/verifyout.bin") --curcart.process( true, false, false, false, false, "ignore/dump.bin", "ignore/MysticOrigins.prg", "ignore/verifyout.bin") --curcart.process( true, false, true, true, true, "ignore/dump.bin", "ignore/NESmaker.nes", "ignore/verifyout.bin") - --curcart.process( true, false, true, true, false, "ignore/dump.bin", "ignore/tb_map30.prg", "ignore/verifyout.bin") + --curcart.process( true, false, true, true, true, "ignore/dump.bin", "ignore/tb_map30.prg", "ignore/verifyout.bin") --COLOR NINJA @@ -363,7 +370,7 @@ function main () --BNROM --curcart.process( true, false, true, true, true, "ignore/dump.bin", "ignore/lizard_PG.prg", "ignore/verifyout.bin") - --curcart.process( true, true, true, true, true, "ignore/dump.bin", "ignore/lizard_v2.prg", "ignore/verifyout.bin") + curcart.process( true, false, true, true, true, "ignore/dump.bin", "ignore/lizard_v2.prg", "ignore/verifyout.bin") --curcart.process( true, false, true, true, false, "ignore/dump.bin", "ignore/hh85.prg", "ignore/verifyout.bin") --FME7 diff --git a/shared/shared_dict_bootload.h b/shared/shared_dict_bootload.h index 8c80620..3ee4728 100644 --- a/shared/shared_dict_bootload.h +++ b/shared/shared_dict_bootload.h @@ -23,6 +23,7 @@ #define LOAD_ADDRH 2 //upper address of jump #define JUMP_ADDR 3 //jump to address upper 16bit provided previous opcode +#define PREP_FWUPDATE 4 //leave main application and sets up for fwupdate #endif diff --git a/shared/shared_dict_fwupdate.h b/shared/shared_dict_fwupdate.h new file mode 100644 index 0000000..dba8c10 --- /dev/null +++ b/shared/shared_dict_fwupdate.h @@ -0,0 +1,66 @@ +#ifndef _shared_dict_fwupdate_h +#define _shared_dict_fwupdate_h + +//define dictionary's reference number in the shared_dictionaries.h file +//then include this dictionary file in shared_dictionaries.h +//The dictionary number is literally used as usb transfer request field +//the opcodes and operands in this dictionary are fed directly into usb setup packet's wValue wIndex fields + + +//============================================================================================= +//============================================================================================= +// FIRMWARE UDPATE DICTIONARY +// +// opcodes contained in this dictionary must be implemented in firmware/source_stm_only/fwupdate.c +// dictionary used to control self updating firmware functions +// These commands aren't actually processed by the main application +// they are sniffed out by the device's usb code and handled separately +// this is because we are presumedly erasing the main application code +// +//============================================================================================= +//============================================================================================= + + +//send the 1KByte page address to be erased CANNOT send page 0 or 1 as this is where usb & fwupdater is +//RB has 2KByte pages so the page numbers are off, and 2KByte will be erased per command +//C6 has 1KByte pages which is more aligned with how this function operates +//The argument is effectively A10-A26 of the mcu memory map starting with offset 0x0800_0000 +//ie sending 2 to a C6 erases 0x0800_0800 through 0x0800_0BFF +//ie sending 2 to a RB erases 0x0800_0800 through 0x0800_0FFF +//ie sending 3 to a C6 erases 0x0800_0C00 through 0x0800_0FFF +//ie sending 3 to a RB erases 0x0800_0800 through 0x0800_0FFF (same as 2) +//you can pretend they're the same if you always send the odd page that follows the even +//this will be redundant for the RB erasing the same page twice, but make them behave the same +//you can effectively ignore the odd pages on RB, or pretend the page number is shifted right by 1 +#define ERASE_1KB_PAGE 1 //erase any page except the first 2KByte + +//Don't actually want to leave the flash in an unlocked state +//it's fast to unlock/lock so just do it before each flash operation +//#define UNLOCK_FLASH 2 +//#define LOCK_FLASH 3 + +#define WR_HWORD 4 //operand = data, miscdata = offset from FLASH->AR + +//FLASH->AR seems to drop the upper 16bits of address when flash is unlocked... +//but it's still there apparently when accessed internally for flashing halfwords..? +#define GET_FLASH_ADDR 5 //RL = 6 0-SUCCESS 1-len 2-LSB 3, 4, 5-MSB + +//SET FLASH->AR to an address that's currently erased +// 0x08 8bitmiscdata 16bitoperand +// this also unlocks then locks the flash and writes 0xFFFF to the address selected +// C6 only has 32KByte of flash, so miscdata must be zero +// operand MUST BE EVEN! writes must be half word aligned +#define SET_FLASH_ADDR 6 //only works if the + +#define GET_FLASH_DATA 7 //RL = 4 0-SUCCESS 1-len 2-LSB 3-MSB +//similar to above, but provide an address, FLASH->AR is unchanged +//can generically read from any flash address +// ADDRESS: 0x08 8bitmiscdata 16bitoperand +// this could be used to dump the entire contents of the flash +#define READ_FLASH 8 //RL = 4 0-SUCCESS 1-len 2-LSB 3-MSB + +//device issues system reset to itself +//don't want to do this until the main application has been reprogrammed +#define RESET_DEVICE 9 + +#endif diff --git a/shared/shared_dictionaries.h b/shared/shared_dictionaries.h index 99cbf48..0aee474 100644 --- a/shared/shared_dictionaries.h +++ b/shared/shared_dictionaries.h @@ -270,4 +270,16 @@ //============================================================================================= +//============================================================================================= +//============================================================================================= +#define DICT_FWUPDATE 16 +#include "shared_dict_fwupdate.h" +//dictionary used to control self updating firmware functions +//These commands aren't actually processed by the main application +//they are sniffed out by the device's usb code and handled separately +//this is because we are presumedly erasing the main application code +//============================================================================================= +//============================================================================================= + + #endif diff --git a/shared/shared_errors.h b/shared/shared_errors.h index 6f5ef2b..108a590 100644 --- a/shared/shared_errors.h +++ b/shared/shared_errors.h @@ -13,10 +13,14 @@ #define ERR_UNKN_JTAG_OPCODE 135 #define ERR_UNKN_CICCOM_OPCODE 136 #define ERR_UNKN_BOOTLOAD_OPCODE 138 +#define ERR_UNKN_FWUPDATE_OPCODE 139 #define ERR_UNKN_PP_OPCODE 140 #define ERR_CTL_PIN_NOT_PRESENT 141 +#define ERR_FWUPDATE_BAD_ADDR 142 +#define ERR_FWUPDATE_HIJACK_FAIL 143 + #define ERR_UNKN_IO_OPCODE 150 #define ERR_UNKN_SWIM_LANE 151 #define ERR_UNKN_JTAG_LANE 152