From 7e91610ee30910afb1077b0da11c87f2422f22f9 Mon Sep 17 00:00:00 2001 From: Thibaut VIARD Date: Tue, 21 Mar 2017 20:25:47 +0100 Subject: [PATCH] Adding WINC1500-XSTK bootloader binaries Signed-off-by: Thibaut VIARD --- .../bootloaders/atmel_winc1500_xstk/Makefile | 182 +++++++++ .../atmel_winc1500_xstk/samd21_sam_ba.bin | Bin 0 -> 5972 bytes .../atmel_winc1500_xstk/samd21_sam_ba.hex | 376 ++++++++++++++++++ 3 files changed, 558 insertions(+) create mode 100644 module/bootloaders/atmel_winc1500_xstk/Makefile create mode 100644 module/bootloaders/atmel_winc1500_xstk/samd21_sam_ba.bin create mode 100644 module/bootloaders/atmel_winc1500_xstk/samd21_sam_ba.hex diff --git a/module/bootloaders/atmel_winc1500_xstk/Makefile b/module/bootloaders/atmel_winc1500_xstk/Makefile new file mode 100644 index 0000000..28448d7 --- /dev/null +++ b/module/bootloaders/atmel_winc1500_xstk/Makefile @@ -0,0 +1,182 @@ +# Copyright (c) 2015 Atmel Corp./Thibaut VIARD. All right reserved. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +# ----------------------------------------------------------------------------- +# Paths +ifeq ($(OS),Windows_NT) + + # Are we using mingw/msys/msys2/cygwin? + ifeq ($(TERM),xterm) + T=$(shell cygpath -u $(LOCALAPPDATA)) +# T=$(shell cygpath -u $(APPDATA)) + MODULE_PATH?=$(T)/Arduino15/packages/arduino + ARM_GCC_PATH?=$(MODULE_PATH)/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi- + RM=rm + SEP=/ + else + MODULE_PATH?=$(LOCALAPPDATA)/Arduino15/packages/arduino +# MODULE_PATH?=$(APPDATA)/Arduino15/packages/arduino + ARM_GCC_PATH?=$(MODULE_PATH)/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi- + RM=rm + SEP=\\ + endif +else + UNAME_S := $(shell uname -s) + + ifeq ($(UNAME_S),Linux) + MODULE_PATH?=$HOME/.arduino15/packages/arduino + ARM_GCC_PATH?=$(MODULE_PATH)/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi- + RM=rm + SEP=/ + endif + + ifeq ($(UNAME_S),Darwin) + MODULE_PATH?=$HOME/Library/Arduino15/packages/arduino/ + ARM_GCC_PATH?=$(MODULE_PATH)/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi- + RM=rm + SEP=/ + endif +endif + +BUILD_PATH=build + +# ----------------------------------------------------------------------------- +# Tools +CC=$(ARM_GCC_PATH)gcc +OBJCOPY=$(ARM_GCC_PATH)objcopy +NM=$(ARM_GCC_PATH)nm +SIZE=$(ARM_GCC_PATH)size + +# ----------------------------------------------------------------------------- +# Compiler options +#-w +CFLAGS=-mthumb -mcpu=cortex-m0plus -Wall -c -std=gnu99 -ffunction-sections -fdata-sections -nostdlib -nostartfiles --param max-inline-insns-single=500 +ifdef DEBUG +CFLAGS+=-g3 -O1 -DDEBUG=1 +else +CFLAGS+=-Os -DDEBUG=0 +endif +# we put here the Atmel SAM-BA USB VID/PID and remove the support of Serial, because Serial pins are different than Zero ones +CFLAGS_EXTRA?=-D__SAMD21J18A__ -DUSB_PID_LOW=0x24 -DUSB_PID_HIGH=0x61 -DUSB_VID_LOW=0xEB -DUSB_VID_HIGH=0x03 -DSAM_BA_INTERFACE=2 +INCLUDES=-I"$(MODULE_PATH)/tools/CMSIS/4.0.0-atmel/CMSIS/Include/" -I"$(MODULE_PATH)/tools/CMSIS/4.0.0-atmel/Device/ATMEL/" + +# ----------------------------------------------------------------------------- +# Linker options +LDFLAGS=-mthumb -mcpu=cortex-m0plus -Wall -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all +LDFLAGS+=-Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols --specs=nano.specs --specs=nosys.specs + +# ----------------------------------------------------------------------------- +# Source files and objects +# this path has to be updated if Arduino delivers any samd-core update! +PROJECT_PATH=$(MODULE_PATH)/hardware/samd/1.6.2/bootloaders/zero +SOURCES_ORIG= \ +board_driver_led.c \ +board_driver_serial.c \ +board_driver_usb.c \ +board_init.c \ +board_startup.c \ +main.c \ +sam_ba_usb.c \ +sam_ba_cdc.c \ +sam_ba_monitor.c \ +sam_ba_serial.c + +#VPATH=$(PROJECT_PATH) +SOURCES=$(addprefix $(PROJECT_PATH)/,$(SOURCES_ORIG)) +OBJECTS=$(addprefix $(BUILD_PATH)/,$(SOURCES_ORIG:.c=.o)) +#DEPS=$(addprefix $(BUILD_PATH)/, $(SOURCES:.c=.d)) + +NAME=samd21_sam_ba +ELF=$(NAME).elf +BIN=$(NAME).bin +HEX=$(NAME).hex + +ifneq "test$(AVRSTUDIO_EXE_PATH)" "test" +AS_BUILD=copy_for_atmel_studio +AS_CLEAN=clean_for_atmel_studio +else +AS_BUILD= +AS_CLEAN= +endif + +all: print_info $(BIN) $(HEX) $(AS_BUILD) + +$(ELF): Makefile $(BUILD_PATH) $(OBJECTS) + @echo ---------------------------------------------------------- + @echo Creating ELF binary + "$(CC)" -L"$(PROJECT_PATH)" $(LDFLAGS) -Os -Wl,--gc-sections -save-temps -Tbootloader_samd21x18.ld -Wl,-Map,"$(BUILD_PATH)/$(NAME).map" -o "$(BUILD_PATH)/$(ELF)" -Wl,--start-group $(OBJECTS) -lm -Wl,--end-group + "$(NM)" "$(BUILD_PATH)/$(ELF)" >"$(BUILD_PATH)/$(NAME)_symbols.txt" + "$(SIZE)" --format=sysv -t -x $(BUILD_PATH)/$(ELF) + +$(BIN): $(ELF) + @echo ---------------------------------------------------------- + @echo Creating flash binary + "$(OBJCOPY)" -O binary $(BUILD_PATH)/$< $@ + +$(HEX): $(ELF) + @echo ---------------------------------------------------------- + @echo Creating flash binary + "$(OBJCOPY)" -O ihex $(BUILD_PATH)/$< $@ + +$(BUILD_PATH)/%.o: $(BUILD_PATH) + +$(BUILD_PATH)/%.o: $(PROJECT_PATH)/%.c + @echo ---------------------------------------------------------- + @echo Compiling $< to $@ + "$(CC)" $(CFLAGS) $(CFLAGS_EXTRA) $(INCLUDES) "$<" -o $@ + @echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +$(BUILD_PATH): + @echo ---------------------------------------------------------- + @echo Creating build folder + -mkdir $(BUILD_PATH) + +print_info: + @echo ---------------------------------------------------------- + @echo Compiling bootloader using + @echo BASE PATH = $(MODULE_PATH) + @echo GCC PATH = $(ARM_GCC_PATH) + @echo PROJ PATH = $(PROJECT_PATH) + @echo SRC_ORIG = $(SOURCES_ORIG) + @echo SRC = $(SOURCES) + @echo OBJ = $(OBJECTS) +# @echo OS = $(OS) +# @echo SHELL = $(SHELL) +# @echo TERM = $(TERM) + "$(CC)" -v + "$(MAKE)" -v +# env + @echo ---------------------------------------------------------- + +copy_for_atmel_studio: $(BIN) $(HEX) + @echo ---------------------------------------------------------- + @echo Atmel Studio detected, copying ELF to project root for debug + cp $(BUILD_PATH)/$(ELF) . + +clean_for_atmel_studio: + @echo ---------------------------------------------------------- + @echo Atmel Studio detected, cleaning ELF from project root + -$(RM) ./$(ELF) + +clean: $(AS_CLEAN) + @echo ---------------------------------------------------------- + @echo Cleaning project + -$(RM) -f $(BIN) + -$(RM) -f $(HEX) + -$(RM) -f $(BUILD_PATH)/* + -rmdir $(BUILD_PATH) + +.PHONY: print_info $(BUILD_PATH) clean_for_atmel_studio diff --git a/module/bootloaders/atmel_winc1500_xstk/samd21_sam_ba.bin b/module/bootloaders/atmel_winc1500_xstk/samd21_sam_ba.bin new file mode 100644 index 0000000000000000000000000000000000000000..ac7a41933bc7faf041a184510a2fcdc4eb3bd752 GIT binary patch literal 5972 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 VN(hx8^cOXl4X6?R7pOe^{sTY++QR?< literal 0 HcmV?d00001 diff --git a/module/bootloaders/atmel_winc1500_xstk/samd21_sam_ba.hex b/module/bootloaders/atmel_winc1500_xstk/samd21_sam_ba.hex new file mode 100644 index 0000000..64e0020 --- /dev/null +++ b/module/bootloaders/atmel_winc1500_xstk/samd21_sam_ba.hex @@ -0,0 +1,376 @@ +:10000000FC7F0020E9050000D5050000D9050000AF +:1000100000000000000000000000000000000000E0 +:10002000000000000000000000000000DD050000EE +:100030000000000000000000E1050000E5050000F0 +:1000400010B5064C2378002B07D1054B002B02D0AE +:10005000044800E000BF0123237010BD58000020B9 +:1000600000000000F816000008B5084B002B03D074 +:100070000748084900E000BF07480368002B03D089 +:10008000064B002B00D0984708BDC046000000007A +:10009000F81600005C000020540000200000000062 +:1000A00010B5C3699C07FCD403680224A343036012 +:1000B000C46901231C42FBD1046823430360036825 +:1000C000DC07FCD4C46901231C42FBD1C469DC40B9 +:1000D0001C42F7D1084B1A430260C3695A07FCD48B +:1000E000C0239B0243608181C3699C07FCD40368E1 +:1000F00002221343036010BD04000040037EDA07B0 +:10010000FCD5018570470000027E01235107FBD515 +:10011000428B1A4207D1428BDA401A4203D1428BFA +:1001200092081A4202D0034B01221A70008DC0B20D +:100130007047C0467400002070B50368041C988B9B +:100140001A1C0821FF32084228D0988B174D014312 +:10015000802099839872112353704021144B917120 +:1001600050715E68C0202E40800506435E605E6967 +:100170003540284358610F4818600F4818615D6882 +:100180000E4828408025AD02284358605868800BEF +:100190008003586000235171237105E0137ADA0659 +:1001A00002D5201C00F0A0FA207970BDFFFFFF8F60 +:1001B0008C0100208C0000200C010020FF3F00F08B +:1001C000002303714371044B016083600B780222AA +:1001D00013430B707047C0463901000038B5364BE9 +:1001E0002021DA6901200A43DA61344B06241A78A7 +:1001F00002431A70324B0F22197891431970197803 +:10020000214319702F490C782043087019780A404F +:100210001A701A7860210A431A702B4B2B4A5A80A5 +:100220005A7852B2002AFBDB294B01211A780A4383 +:100230001A709A78D107FCD426480268510B1F2205 +:100240001140914200D1052111408C011D8D2249A0 +:100250002940214319850468A10C0A401F2A00D1B6 +:100260001D221C8D1F210A408C4322431A850268DF +:100270000721D20D0A408A4200D103220A40188D7C +:100280001103164A02400A431A8519787F220A4050 +:100290001A701A78042112480A431A7058621A898F +:1002A0000C218A431A811A8901218A431A8100216B +:1002B000802201F0B6F838BD0004004058440041E7 +:1002C0003C44004159440041000C004006400000FD +:1002D00000500041246080003FF8FFFFFF8FFFFFC8 +:1002E0008C010020F7B5141C234A5F0101971D1CE7 +:1002F000D319061C5869271C4000400F03301033E7 +:10030000C74006D00F1C8022596812060A435A6063 +:1003100009E02F1C7B1E9F41184BBF01FF18381CA2 +:10032000221C01F075F8019913480835421817612D +:10033000131C5269A104920B890C92030A435A615F +:1003400059690F4A02200A405A616B01F318D979A2 +:10035000032211400143D8799043021C0A43DA7109 +:100360005979802252420A435A716B01F318DB79A2 +:100370009A07FAD5201CFEBD8C0100200C0100203C +:10038000FF3F00F0F8B51E4E041C3378151C002BFF +:1003900012D11C4B1C4A1A645A6C920B92035A6479 +:1003A000586C1A4A02405A64A2235B00E25C402067 +:1003B0000243E254012333704827FF37E25D0123F3 +:1003C00013401AD00F4B5A6C9204920CAA4202D2DC +:1003D0005D6CAD04AD0C081C2A1C0B4901F018F82B +:1003E000E25D03231A4001210A43E15D99430B1C9E +:1003F0001343E3550023337000E01D1C281CF8BD97 +:10040000750000208C010020CC000020FF3F00F090 +:10041000FF30827930239A43131C2022002900D117 +:1004200010221343837170470C4BFF305A6902212D +:10043000920B92035A61027A03231A400A43017A0B +:1004400099430B1C13430372827980235B4213434D +:100450008371037A9A07FCD57047C0468C0100204F +:1004600080235B421943C9B28172704770B5A023E3 +:1004700003225B00C254134B134A5C6CC02114402E +:1004800089050C4346255C64FF35402444550F4DD7 +:1004900030261D6490256D0046555D6B154029433F +:1004A000922559636D0080214155094D1D63B0258A +:1004B0006D0044555C6F22405A67B2235B00C15403 +:1004C00070BDC0468C010020FFFFFF8FCC000020D4 +:1004D0004C01002030B5364A1E235168082099434C +:1004E00002231943516033498A6902438A613248C1 +:1004F000324A9082908A03439382D3689807FCD54E +:100500002F4B012018701878C40704D52C48407868 +:1005100040B20028F7DB01209860587840B20028EC +:10052000FBDB284C26484460587840B20028FBDBAF +:1005300082242348E4014480587840B20028FBDB41 +:10054000908C8024A0439084D068C506FCD51E4CB6 +:100550001A48C462D4681948E506FBD5848C1B4D43 +:100560002C438484D4681548E506FBD5848C022589 +:100570002C438484D0680406FCD51048C068450626 +:10058000F8D5D068C406FCD500229A605A7852B2D9 +:10059000002AFBDB0E480A4A50605A7852B2002A01 +:1005A000FBDB00230B724B728B72CB7230BDC046EB +:1005B00000400041000400400C060000000800401C +:1005C000000C004001050100B805FF7D040A000091 +:1005D000000703000EBEFEE70DBEFEE705BEFEE708 +:1005E00002BEFEE701BEFEE70E4A0F4838B5824262 +:1005F00004D10E4A0E4B93420ED10AE00D4C9442A8 +:10060000F7D00023D1188842F3D9E55804330D60A0 +:10061000F8E700F011F804E09342FAD2002102C397 +:10062000FAE7FEE7000000205800002098030020B1 +:1006300058000020FC16000010B5244B0022197849 +:1006400001231940224B0AD11868224A904201D155 +:10065000196014E01A60204A013A002AFCD11A609D +:100660001E4B1968181C4A1C09D0FF22134206D1E0 +:1006700081F3088893431A4A936043681847FFF749 +:1006800029FF62B600F0F2FC00F0C8F9041CA36870 +:10069000201C9847134B002801D001221A701A78A9 +:1006A000002A05D0002000F035FA00F091FAFCE7AE +:1006B0001B78002BEBD100F04DFD0028E7D0012086 +:1006C00000F028FA00F084FAFCE7C0463804004045 +:1006D000FC7F00203581730748E8010000200000FE +:1006E00000ED00E076000020F8B50468051C201C31 +:1006F000FF30037AB64A10210B430372B54F1378CB +:10070000B5493B705378B54E0B7093783380D178F0 +:10071000338809020B4333801179B14B1980517929 +:100720001F8809020F431F809779AE490F80D27945 +:100730000F8812023A430A8040224271A648A54F10 +:1007400002783878A84F12020243181CBA4200D12E +:1007500099E01EDC802149008A4200D158E107DC83 +:10076000812A6AD0822A6ED0802A00D050E164E0CB +:1007700081235B009A4200D1AFE000DA23E1C0237D +:100780009B009A4200D143E1984B9A4200D11AE172 +:100790003EE190231B019A4242D015DCD023DB00BE +:1007A0009A4222D088231B019A4242D0A023DB0028 +:1007B0009A4200D02CE1201CFFF736FE31882868D1 +:1007C00089B2FFF74DFE27E1894B9A4200D1FAE04A +:1007D00000DC1DE1874B9A4200D1E8E0864B9A424B +:1007E00000D015E133886B71EDE033881B0A012BD3 +:1007F00008D10B8812222868934201D80A8892B245 +:100800007E49DCE033881B0A022B00D000E10B8814 +:1008100043222868934201D80A8892B27849CEE0F0 +:100820003388201C2B71FFF7FFFD201CFFF71EFEF5 +:10083000F2E0291C01C90122C1E0724900230B80AA +:1008400028680222BCE06F4900220A8018885022E2 +:1008500010406D4A10701E880F2030401880188894 +:10086000032800D9D4E012781B8808335B01E41810 +:10087000A379002A01D09B0600E0DB06DB0F0B808A +:10088000286802229BE019887F2291435E4AC9B200 +:10089000117018880F21014019803188002900D07B +:1008A000B6E01988002900D1B2E01988032900D9DF +:1008B000AEE012781B8808335B01E318002A05D0EC +:1008C0005A7930218A4320210A4304E05A793021A1 +:1008D0008A43102002435A7175E002887F239A43AD +:1008E000494BD2B21A7001880F220A400280328826 +:1008F000002A00D08CE00288002A00D188E002881B +:10090000032A00D984E01B78002B27D00388083302 +:100910005B01E3189B79990655D50388302108338C +:100920005B01E3181A798A4320210A431A7103886C +:1009300008335B01E318DB795A0644D5038860214C +:1009400008335B01E318DA798A4340210A43DA71FC +:100950000388022208335B01E31826E0038808338A +:100960005B01E3189B79DF062DD50388302108331E +:100970005B01E3181A798A4310210A431A7103882C +:1009800008335B01E318DB7999061CD503886021E5 +:1009900008335B01E318DA798A4320210A43DA71CC +:1009A0000388012208335B01E3181A710BE00B88FE +:1009B00008222868934201D80A8892B2134900237A +:1009C000FFF790FC28E0201CFFF72EFD24E0C04636 +:1009D0008C00002077000020780000207A000020A2 +:1009E0007C000020820000200203000001030000C0 +:1009F00021200000A1210000212200004C14000051 +:100A0000000000207E000020800000204400002024 +:100A1000201C0121FFF7FCFCF8BDC04610B5054BBA +:100A2000054C2360FFF7DAFB201C2168FFF7C8FBA9 +:100A3000201C10BD005000410C02002007B5054BE2 +:100A40000122019001A91868131CFFF74BFC01203B +:100A50000EBDC0460C02002013B5054B6C46073492 +:100A60001868211C0122FFF78DFC207816BDC046B6 +:100A70000C02002010B5074C201CFFF75DFB031C87 +:100A80000020834205D022684823FF33D05C012335 +:100A9000184010BD0C02002010B5054A0C1C031CA8 +:100AA000191C10680123221CFFF71CFC201C10BD20 +:100AB0000C02002070B5084C061C201C0D1CFFF712 +:100AC0003BFB0023984205D02068311C2A1CFFF70D +:100AD00059FC031C181C70BD0C020020F8B50C4C0E +:100AE000051C201C0E1CFFF727FB0023271C341CB1 +:100AF00098420AD0002C07D0291C221C3868FFF726 +:100B000041FC241A2D18F5E7331C181CF8BDC0460B +:100B10000C020020012805D1054B064A1A60064B3D +:100B2000187004E0002802D1044A014B1A60704793 +:100B30007C0200208014000089000020CC140000FA +:100B400030B51A4B85B01B78002B29D0042901D170 +:100B5000026804E0022901D1028800E0027849001D +:100B600004A843180B3B5C1AA3420BD00F20104083 +:100B7000092802D83025284300E0373018701209C0 +:100B8000013BF1E701A830230370782343700A2268 +:100B900043189A700D22DA70054B04311B6801E08E +:100BA000034B1B68DB68984705B030BD8800002008 +:100BB0007C02002072B6EFF30883044A13600368D6 +:100BC00083F30888436818477047C04680020020B6 +:100BD000F0B58FB006A9CD4A0B1C31CA31C351CA3A +:100BE00051C360CA60C3CA4CCA48A3687A255B0374 +:100BF0005B0F9B005B58C8490360A26892B25343E5 +:100C00000A60C649C64A0B6000231360C54B1D70BD +:100C1000C54BC64D1B68281C1B6940219847C44B17 +:100C200000221860C34B1D60C34BC34DC04F1A60F8 +:100C3000286839688842EBD2BE4B1B681A78FF2AB5 +:100C400000D1F7E1232A00D0CEE1BC4E3378002B4F +:100C500005D0B54BBA481B680221DB689847B14BF9 +:100C60001B78532B38D13B682A6893421ED9B14870 +:100C700001322A609A1AB34B01681B680131016086 +:100C8000B14E9A4201D2326000E03360A44832682B +:100C90000068029000F0BCFB336829685A182A608B +:100CA000A44A1668F1181160A84A13702B68013B1A +:100CB0002B60A04B1A68013A1A60A44BA14A1B781A +:100CC00011688B4206D2984A954812680068C91A82 +:100CD00092699047C04676E1522B07D1904A924BD9 +:100CE00010681B68974A5B6911686BE14F2B05D14F +:100CF0008B4B944A1B6812681A7064E1482B05D12B +:100D0000874B904A1B6812681A805CE1572B05D10B +:100D1000834B8C4A1B6812681A6054E16F2B03D115 +:100D20007F4B0121186807E0682B08D17C4B854870 +:100D30001B6802211B880360FFF702FF43E1772B4A +:100D400006D1774B7F481B6804211B680360F3E7DB +:100D5000472B13D17B4B1868FFF72CFF7C4B1B688C +:100D600083F3088862B67B4B1B78002B00D12AE105 +:100D70006D4B06201B681B68984724E1542B04D157 +:100D800001233370684B1B685CE04E2B0BD133782A +:100D9000002B05D1644B6A481B680221DB68984729 +:100DA000002333700FE1562B50D15F4D01212B688A +:100DB0006948DB6898472B680321DB6867489847D8 +:100DC000674E2B68301CDB68012198472B680D218A +:100DD000DB68644898472B68301CDB680121984722 +:100DE000544F614B544E3B60002333603A1C311C1E +:100DF0001368581C10601B780393002B03D00B68FA +:100E000001330B60F4E72B683168DB68564898477C +:100E10002B685348DB68012198470398306053489A +:100E20003860444A1368591C11601A78424B002AF2 +:100E300003D01A6801321A60F3E72A681968D36888 +:100E400098472B68DB683E480221BBE03D4A582B9F +:100E500015D1304E314D366813682A68B10093427F +:100E600008D25808E06142482080207DC507FCD5A3 +:100E70005B18F4E72C4B3F481B68DB68A1E0592B5B +:100E800033D11268264B3C49002A02D11B680B6003 +:100E900026E00868196863688025AB4392086360A0 +:100EA000002A1DD0354B2380237DDE07FCD500238F +:100EB000184D2D680095AD08AB4202D3304D25800A +:100EC00006E09342FAD09D00465901334E51EFE7B8 +:100ED000257DEE07FCD59D0049194019D21ADFE7A0 +:100EE000114B28481B68DB686BE05A2B6BD10C4B0D +:100EF00017681D680026EF19BD4245D02878311CBF +:100F000000F04AF90135061CF6E7C04660140000FF +:100F100000400041340200202C0200202802002062 +:100F200078020020240200207C02002038020020E9 +:100F30001C02002020020020300200208800002037 +:100F4000C014000084020020880200201802002043 +:100F500080020020890000209C140000C5140000BD +:100F60009E140000E8140000A0140000AC1400005F +:100F700002A5FFFFB51400008400002044A5FFFF78 +:100F800004A5FFFFB91400002E4D2F482B68012146 +:100F9000DB68984707230F223240111C3609303195 +:100FA000092A00DD07311020C0186A468154013B30 +:100FB000F1D22B6804A8DB68082198472B682348E6 +:100FC000DB6803219847224D7A232B70214B0022A6 +:100FD0001A60214B1B7893422CD01A4B01211B68BD +:100FE0001E48DB68984725E0111C3039C8B2194B00 +:100FF000092804D81E683201114319601AE0111C37 +:101000004139052903D81868373A010106E0111C57 +:101010006139052904D81D68573A29010A4308E0B7 +:101020002C2A03D10E4A1E68166001E008490A7096 +:1010300000221A600B4B1A6801321A600A4B1A68B8 +:101040000132F2E57C020020BD140000BF14000054 +:10105000240200208402002088000020C314000025 +:1010600078020020300200202002002010B51C4B26 +:1010700001201A78022402431A701A4B0F221978A1 +:101080009143197019782143197017490C7820433E +:10109000087019780A401A701A7820210A431A70C9 +:1010A000124B04211A6A0A431A62114B114A5A80E0 +:1010B0005A7852B2002AFBDBC4220F480F49920330 +:1010C000FEF7EEFF0E4A002313700E4A13700E4A0D +:1010D00013700E4A13700E4A13700E4A137010BD2F +:1010E0004A440041354400414B4400410004004063 +:1010F000000C0040144000000008004204C500003D +:101100008C020020130300208D020020900200209A +:10111000140300201103002008B5C1B20248FEF7F5 +:10112000EDFF012008BDC04600080042024B187EBA +:101130004007C00F7047C0460008004208B5FFF7DF +:10114000F5FF0028FBD00248FEF7DEFF08BDC046D1 +:101150000008004208B5FFF7E9FF0023984205D0D8 +:10116000FFF7ECFF031C233B5A425341181C08BDF8 +:1011700070B5041C0D1C4618B44204D02078FFF74B +:10118000CBFF0134F8E7281C70BD10B5041CFFF735 +:10119000D5FF2070012010BD0B0A5840034B4000C2 +:1011A000C05A0902484080B27047C046F614000099 +:1011B000F7B50024051C0F1C261CBC4220D0FFF7ED +:1011C000BDFF114BC0B21B780190002B1AD1311C0E +:1011D000FFF7E2FF0D4B061C1A88002A04D10C4AC7 +:1011E00011782A1C002907D001996A1C2970802FC8 +:1011F00002D11988013919800134A4B2151CDCE729 +:10120000301C00E00120FEBD110300208E020020F2 +:1012100012030020F0B53E4E85B0002203900C1C56 +:1012200032703C4B914201D1012201E03A490C80DD +:101230001A707F231C4201D080349C43FFF77EFF4D +:101240003378C0B2002B07D000253570FFF776FF4A +:101250003378C0B2AB4236D1432803D0712853D083 +:101260001528EBD1012300930120FFF755FF0098CB +:10127000FFF752FF00998025C843C0B2FFF74CFF2B +:10128000039B00270293244A1388002B1DD1214978 +:1012900001930978002918D10198FFF73DFF391C07 +:1012A0000198FFF779FF013D071C002DEBD1000AE3 +:1012B000C0B2FFF731FFF8B2FFF72EFFFFF73EFF96 +:1012C0003378002B0AD035701FE00299013B097872 +:1012D0001380029B019101330293DDE7C0B206281F +:1012E00007D1009B03990133DBB280310093803C2E +:1012F0000391002CB8D10420FFF70EFFFFF71EFF6B +:10130000044B01251C7000E00025281C05B0F0BD31 +:1013100011030020120300208E020020F0B5384C8B +:1013200087B0002301902370994201D1012301E08D +:10133000344A1180344A642613704320FFF7ECFED0 +:10134000324FFFF7F3FE002803D1002F03D0013FF7 +:10135000F7E7002F03D1013E002EEED14DE001252D +:10136000FFF7ECFE2378002B38D1C0B202900128A1 +:1013700005D004283DD10620FFF7CEFE39E005AEAA +:101380000221301CFFF714FF01988021FFF710FFA6 +:1013900023780390002B18D1FFF7D0FE0702FFF748 +:1013A000CDFEBFB223783F18BFB2012B0DD0039BF7 +:1013B0009F4207D13378AB4204D1EB437278DBB262 +:1013C0009A4204D01820FFF7A7FE002303E006206E +:1013D000FFF7A2FE029B2278002A02D00026267088 +:1013E0000BE0012B05D1019A6B1C8032DDB201921A +:1013F000B6E7054A002313700126301C07B0F0BD84 +:10140000110300208E0200201203002000350C0082 +:1014100010B50023934203D0CC5CC4540133F9E7E8 +:1014200010BD031C8218934202D019700133FAE7F1 +:1014300070470000F8B5C046F8BC08BC9E4670472F +:10144000F8B5C046F8BC08BC9E46704712010002C1 +:1014500002000040EB0324610002000000010000D4 +:101460000800000010000000200000004000000004 +:1014700080000000000100000002000000040000E5 +:10148000191100003D1100002D1100007111000024 +:101490008B110000151200001D13000076002000C3 +:1014A00044656320313520323031350031313A32F4 +:1014B000383A343200580A0D00590A0D005A0023F8 +:1014C0000A0D003E00322E30000000003D0A0000F0 +:1014D000590A0000750A0000990A0000B50A0000C8 +:1014E000990A0000DD0A00005B41726475696E6F45 +:1014F0003A58595A5D000000211042206330844060 +:10150000A550C660E770088129914AA16BB18CC1D2 +:10151000ADD1CEE1EFF13112100273325222B55249 +:101520009442F772D662399318837BB35AA3BDD322 +:101530009CC3FFF3DEE36224433420040114E66419 +:10154000C774A44485546AA54BB528850995EEE572 +:10155000CFF5ACC58DD55336722611163006D77629 +:10156000F6669556B4465BB77AA719973887DFF7C2 +:10157000FEE79DD7BCC7C448E5588668A7784008F1 +:10158000611802282338CCC9EDD98EE9AFF9488912 +:1015900069990AA92BB9F55AD44AB77A966A711A89 +:1015A000500A333A122AFDDBDCCBBFFB9EEB799B62 +:1015B000588B3BBB1AABA66C877CE44CC55C222CD9 +:1015C000033C600C411CAEED8FFDECCDCDDD2AADB2 +:1015D0000BBD688D499D977EB66ED55EF44E133E69 +:1015E000322E511E700E9FFFBEEFDDDFFCCF1BBF02 +:1015F0003AAF599F788F8891A981CAB1EBA10CD1DC +:101600002DC14EF16FE18010A100C230E3200450E3 +:10161000254046706760B9839893FBA3DAB33DC356 +:101620001CD37FE35EF3B1029012F322D232354233 +:10163000145277625672EAB5CBA5A89589856EF5E6 +:101640004FE52CD50DC5E234C324A0148104667483 +:10165000476424540544DBA7FAB79987B8975FE736 +:101660007EF71DC73CD7D326F2369106B0165766D3 +:101670007676154634564CD96DC90EF92FE9C899BE +:10168000E9898AB9ABA94458654806782768C01823 +:10169000E1088238A3287DCB5CDB3FEB1EFBF98B96 +:1016A000D89BBBAB9ABB754A545A376A167AF10A73 +:1016B000D01AB32A923A2EFD0FED6CDD4DCDAABDA6 +:1016C0008BADE89DC98D267C076C645C454CA23CC3 +:1016D000832CE01CC10C1FEF3EFF5DCF7CDF9BAF76 +:1016E000BABFD98FF89F176E367E554E745E932E13 +:0C16F000B23ED10EF01E00000000000011 +:1016FC0009024300020100803209040000010202C9 +:10170C000000052400100104240200052406000139 +:10171C000524010001070583030800FF09040100EB +:10172C00020A0000000705810240000007050202C2 +:10173C004000000000C20100000008006900000029 +:08174C00410000000000000054 +:04000003000005E90B +:00000001FF