diff --git a/CtrBoard-H7_ALL.ioc b/CtrBoard-H7_ALL.ioc index c5af9d2..94f93b1 100644 --- a/CtrBoard-H7_ALL.ioc +++ b/CtrBoard-H7_ALL.ioc @@ -433,11 +433,13 @@ Mcu.Pin61=VP_OCTOSPI2_VS_quad Mcu.Pin62=VP_SYS_VS_tim23 Mcu.Pin63=VP_USB_DEVICE_VS_USB_DEVICE_CDC_HS Mcu.Pin64=VP_MEMORYMAP_VS_MEMORYMAP +Mcu.Pin65=VP_STMicroelectronics.X-CUBE-ALGOBUILD_VS_DSPOoLibraryJjLibrary_1.4.0_1.4.0 Mcu.Pin7=PC0 Mcu.Pin8=PC1 Mcu.Pin9=PC2_C -Mcu.PinsNb=65 -Mcu.ThirdPartyNb=0 +Mcu.PinsNb=66 +Mcu.ThirdParty0=STMicroelectronics.X-CUBE-ALGOBUILD.1.4.0 +Mcu.ThirdPartyNb=1 Mcu.UserConstants= Mcu.UserName=STM32H723VGTx MxCube.Version=6.14.1 @@ -846,6 +848,10 @@ SPI2.Direction=SPI_DIRECTION_2LINES SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler,CLKPolarity,CLKPhase SPI2.Mode=SPI_MODE_MASTER SPI2.VirtualType=VM_MASTER +STMicroelectronics.X-CUBE-ALGOBUILD.1.4.0.DSPOoLibraryJjLibrary_Checked=true +STMicroelectronics.X-CUBE-ALGOBUILD.1.4.0.IPParameters=LibraryCcDSPOoLibraryJjDSPOoLibrary +STMicroelectronics.X-CUBE-ALGOBUILD.1.4.0.LibraryCcDSPOoLibraryJjDSPOoLibrary=true +STMicroelectronics.X-CUBE-ALGOBUILD.1.4.0_SwParameter=LibraryCcDSPOoLibraryJjDSPOoLibrary\:true; TIM1.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1 TIM1.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3 TIM1.IPParameters=Channel-PWM Generation3 CH3,Channel-PWM Generation1 CH1,Period,Pulse-PWM Generation1 CH1,Pulse-PWM Generation3 CH3,Prescaler @@ -908,6 +914,8 @@ VP_MEMORYMAP_VS_MEMORYMAP.Mode=CurAppReg VP_MEMORYMAP_VS_MEMORYMAP.Signal=MEMORYMAP_VS_MEMORYMAP VP_OCTOSPI2_VS_quad.Mode=quad_mode VP_OCTOSPI2_VS_quad.Signal=OCTOSPI2_VS_quad +VP_STMicroelectronics.X-CUBE-ALGOBUILD_VS_DSPOoLibraryJjLibrary_1.4.0_1.4.0.Mode=DSPOoLibraryJjLibrary +VP_STMicroelectronics.X-CUBE-ALGOBUILD_VS_DSPOoLibraryJjLibrary_1.4.0_1.4.0.Signal=STMicroelectronics.X-CUBE-ALGOBUILD_VS_DSPOoLibraryJjLibrary_1.4.0_1.4.0 VP_SYS_VS_tim23.Mode=TIM23 VP_SYS_VS_tim23.Signal=SYS_VS_tim23 VP_USB_DEVICE_VS_USB_DEVICE_CDC_HS.Mode=CDC_HS diff --git a/MDK-ARM/CtrBoard-H7_ALL.uvoptx b/MDK-ARM/CtrBoard-H7_ALL.uvoptx index 63408c8..873fd37 100644 --- a/MDK-ARM/CtrBoard-H7_ALL.uvoptx +++ b/MDK-ARM/CtrBoard-H7_ALL.uvoptx @@ -175,6 +175,16 @@ 1 n100_cali + + 4 + 1 + n100 + + + 5 + 1 + cmd + 0 diff --git a/MDK-ARM/CtrBoard-H7_ALL/CtrBoard-H7_ALL.axf b/MDK-ARM/CtrBoard-H7_ALL/CtrBoard-H7_ALL.axf index 2c2a4f6..d5d255f 100644 Binary files a/MDK-ARM/CtrBoard-H7_ALL/CtrBoard-H7_ALL.axf and b/MDK-ARM/CtrBoard-H7_ALL/CtrBoard-H7_ALL.axf differ diff --git a/MDK-ARM/CtrBoard-H7_ALL/CtrBoard-H7_ALL.hex b/MDK-ARM/CtrBoard-H7_ALL/CtrBoard-H7_ALL.hex index 11a9d71..cb5c9d4 100644 --- a/MDK-ARM/CtrBoard-H7_ALL/CtrBoard-H7_ALL.hex +++ b/MDK-ARM/CtrBoard-H7_ALL/CtrBoard-H7_ALL.hex @@ -1,29 +1,29 @@ :020000040800F2 -:10000000700C012019050008C1D70008F1C60008CE -:10001000E9D50008893300081D110108000000001F +:10000000700C012019050008EDD700081DC7000875 +:1000100015D60008893300084911010800000000C6 :10002000000000000000000000000000590400086B -:10003000094A000800000000B50400085BE1000860 +:10003000354A000800000000B504000887E1000808 :1000400037050008370500083705000837050008A0 :100050003705000837050008370500083705000890 -:100060003705000837050008370500087143000808 -:100070007D4300088943000895430008A143000818 -:10008000AD430008B943000837050008BD4A000821 -:10009000D54A0008C94A0008E14A000837050008A7 +:100060003705000837050008370500089D430008DC +:10007000A9430008B5430008C1430008CD43000868 +:10008000D9430008E543000837050008E94A00089D +:10009000014B0008F54A00080D4B00083705000821 :1000A0003705000837050008370500083705000840 :1000B0003705000837050008370500083705000830 :1000C0003705000837050008370500083705000820 -:1000D000A5DF0008C5F50008DDF50008F5F5000806 -:1000E0007F4A0008370500080000000037050008B7 -:1000F000370500083705000837050008C543000824 +:1000D000D1DF0008F1F5000809F6000821F6000854 +:1000E000AB4A00083705000800000000370500088B +:1000F000370500083705000837050008F1430008F8 :1001000037050008370500083705000837050008DF -:1001100037050008DDEC0008370500083705000842 -:10012000D1430008DD430008E9430008F543000817 +:100110003705000809ED0008370500083705000815 +:10012000FD43000809440008154400082144000864 :1001300037050008370500083705000837050008AF :1001400000000000000000000000000000000000AF :10015000370500083705000837050008370500088F :10016000370500083705000837050008370500087F -:1001700037050008E9D8000837050008000000002E -:100180003705000837050008F5EC000837050008BA +:100170003705000815D90008370500080000000001 +:10018000370500083705000821ED0008370500088D :10019000370500083705000837050008370500084F :1001A0003705000837050008370500080000000083 :1001B000370500083705000837050008370500082F @@ -42,12 +42,12 @@ :10028000370500083705000837050008370500085E :1002900000000000370500083705000800000000D6 :1002A0000000000037050008370500083705000882 -:1002B000ADF500083705000837050008ED4A0008CD -:1002C000F94A0008F5E200083705000800F002F8D6 +:1002B000D9F500083705000837050008194B000874 +:1002C000254B000821E300083705000800F002F87C :1002D00000F0B2F80AA090E8000C82448344AAF12E :1002E0000107DA4501D100F0A7F8AFF2090EBAE82C :1002F0000F0013F0010F18BFFB1A43F0010318475A -:10030000CC4E0100FC4E01000A444FF0000C10F8E6 +:10030000FC4E01002C4F01000A444FF0000C10F885 :10031000013B13F0070408BF10F8014B1D1108BF83 :1003200010F8015B641E05D010F8016B641E01F823 :10033000016BF9D113F0080F1EBF10F8014BAD1C73 @@ -56,18 +56,18 @@ :10036000704700000023002400250026103A28BF13 :1003700078C1FBD8520728BF30C148BF0B60704717 :100380006E2900F08983702900F0D384662914F067 -:10039000CB82652914F0C882672914F0C5826129CF -:1003A00014F0C48203681B0A28BF41F08001692948 +:10039000E382652914F0E082672914F0DD82612987 +:1003A00014F0DC8203681B0A28BF41F08001692930 :1003B00000F03683642900F03383752900F0308320 :1003C0006F2900F06084782900F09F84E92900F00B :1003D000FB83E42900F0F883F52900F0F583EF2989 :1003E00000F05D84F82900F09E840368DB0928BFD3 :1003F00041F08001632901F0A581732901F0AA81F0 :10040000E32901F0B581F32901F0BA81002070479A -:100410001FB514F00AFA01F009FA040000200021C7 -:1004200014F072F9401C60600020002114F056F9AD +:100410001FB514F022FA01F009FA040000200021AF +:1004200014F08AF9401C60600020002114F06EF97D :10043000E0601FBD10B510BD01F0CAF91146FFF70D -:10044000E7FF11F0C3FF01F0A7FA03B4FFF7F2FFD3 +:10044000E7FF11F0DBFF01F0A7FA03B4FFF7F2FFBB :1004500003BC01F0DFFA00002C4B19680868B0E813 :10046000F04F80F30988BFF36F8F4FF0000080F3E7 :10047000118870470000000008480068006880F399 @@ -77,13 +77,13 @@ :1004B00088ED00E0EFF30980BFF36F8F134B1A68EC :1004C0001EF0100F08BF20ED108A20E9F04F1060D9 :1004D00009B44FF0500080F31188BFF34F8FBFF382 -:1004E0006F8F13F011FA4FF0000080F3118809BCF0 +:1004E0006F8F13F029FA4FF0000080F3118809BCD8 :1004F00019680868B0E8F04F1EF0100F08BFB0ECA4 :10050000108A80F30988BFF36F8F704720010020A5 :10051000EFF30580704700000A4880470A4880478B :100520000A480047FEE7FEE7FEE7FEE7FEE7FEE7D4 :10053000FEE7FEE7FEE7FEE705480649064A074BE9 -:1005400070470000A14A00081DE20008CD02000823 +:1005400070470000CD4A000849E20008CD020008CB :1005500070AC0020700C012070CC002070CC00200A :1005600053EA020C00F069802DE9F04B4FF00006D1 :10057000002B1FBFB3FA83F503FA05F424FA05F63E @@ -187,7 +187,7 @@ :100B900000250DF1080B05E0D4E901211BF8050043 :100BA00090476D1C4D45F7D308F10100B0428046D7 :100BB000E4DB206A384420622046FFF7E4FEBDE80B -:100BC000FF9F0000864301002DE9F0418046D21DC1 +:100BC000FF9F0000B64301002DE9F0418046D21D91 :100BD00022F007020025D2E90002F52915A614D05B :100BE000011E72F1000106DA0023D0EB030063EB73 :100BF000020211A608E0D8F800108B0701D50FA655 @@ -211,19 +211,19 @@ :100D100021461068FFF751FE024629462046BDE8ED :100D200070400023C6E7D21D22F00703D3E9002359 :100D3000C0E70368126843F0200303600823C3611F -:100D40000023B7E7E84101002DE9F05F894604463A +:100D40000023B7E7184201002DE9F05F8946044609 :100D50004FF0000ADFF874B1FB44C0F820A0204631 :100D6000E1688847002874D0252806D0D4E90121FD :100D70009047206A401C2062F1E700265F4620462B :100D8000E16888472028054607DB312D05D2781910 :100D900010F8200C08B10643F1E7B00701D526F0A2 :100DA0000406C4F81CA00027C4F818A02A2D09D0F6 -:100DB000284611F039FA38B304EB8708303DC8F8FB +:100DB000284611F051FA38B304EB8708303DC8F8E3 :100DC000185019E059F8041B204604EB8702916182 :100DD000E1688847012F054618D1E069002820DA2C :100DE00026F020061DE0D8F8180000EB800005EB87 :100DF00040003038C8F818002046E16888470546AA -:100E000011F012FA0028EED1012F0AD02E2D08D1B0 +:100E000011F02AFA0028EED1012F0AD02E2D08D198 :100E10002046E16888477F1C0546022F46F02006E1 :100E2000C4DBA069002803DA404246F00106A06155 :100E3000F00701D026F010066C2D0BD0682D09D0DC @@ -235,8 +235,8 @@ :100E90004A462946204626604E46FFF771FA80B141 :100EA00001280BD0F61D26F0070000F1080956E7CF :100EB0004020E4E78020D8E70020D6E706F10409C7 -:100EC0004DE7284652E7206ABDE8F09F78410100CF -:100ED000004870470CAC002030B5B0F10A024FEA70 +:100EC0004DE7284652E7206ABDE8F09FA84101009F +:100ED0000048704710AC002030B5B0F10A024FEA6C :100EE000900E71F100034EEA817EB0EB0E0061EBD3 :100EF00091014FEA101E4EEA017E10EB0E0041EB0D :100F000011114FEA102E4EEA016E10EB0E0041EB6C @@ -285,7 +285,7 @@ :1011B0000B98099AC0F80880C0E9002B7AE711263D :1011C0004FF0000857E72DE9F04F88460446D21D3E :1011D00022F0070191B0D1E90001CDE90A010FF039 -:1011E0009EFF02460B98C00F01D02D2007E020681B +:1011E000B4FF02460B98C00F01D02D2007E0206805 :1011F000810701D52B2002E0202101EAC000032A4B :10120000099001D0072A05DB03464146204600F03D :1012100011FB0BE12078800601D5E06900E0062093 @@ -323,7 +323,7 @@ :10141000012118F8010B9047206A401C2062381EF9 :10142000A7F10107F3DC2046FFF7ADFA032011B066 :1014300041E600002DE9F04F04460D46D21D22F092 -:10144000070089B0D0E90097484639460FF067FE9B +:10144000070089B0D0E90097484639460FF07DFE85 :101450000246F80F01D02D2307E02068810701D54F :101460002B2302E0202101EAC0038DF820300BB1CC :10147000012000E00020032A824601D0072A04DB75 @@ -369,7 +369,7 @@ :1016F0000FD0D4E901219047206A401C2062B8F144 :101700000108F2D22046FFF73EF909B00320BDE8F8 :10171000F08F206A2844206203E0D4E901213020C0 -:1017200090476D1EEBD3F8E77D3A010002FCFFFF06 +:1017200090476D1EEBD3F8E7AD3A010002FCFFFFD6 :1017300010B5436913B1AFF3008001E0FFF746F93C :10174000012010BD127800F124010A7000224A70B5 :101750000122EDE711684FF0FF32E9E710B5436968 @@ -379,14 +379,14 @@ :1017900000F044F8036893F80101012806D0FF2CFB :1017A0000FD8185D68B101202C7070BDD3F8070107 :1017B0003246214603F2071303442846BDE8704031 -:1017C00018474FF0FF3070BD004870470CAC002048 +:1017C00018474FF0FF3070BD0048704710AC002044 :1017D0007546FFF7F9FFAE4605006946534620F00F :1017E0000700854618B020B5FEF7A6FEBDE82040EC :1017F0004FF000064FF000074FF000084FF0000BCD :1018000021F00701AC46ACE8C009ACE8C009ACE87F :10181000C009ACE8C0098D467047000010B500F063 -:1018200005F8001D10BD00BFE12E01000048704703 -:101830002CAC00202DE9F0411F4604460326016828 +:1018200005F8001D10BD00BF112F010000487047D2 +:1018300030AC00202DE9F0411F4604460326016824 :10184000072A01F4006004DB08B116A505E016A51F :1018500003E008B115A500E015A521F010002060F7 :10186000A069C01EA0610FB1401EA0612046FFF715 @@ -408,7 +408,7 @@ :1019600083E807006D10641C002DE3D14FF00103E4 :1019700032466946B8F1000F03A802D000F0CDFA54 :1019800001E000F0DFFAC9E90001C9F808200AB057 -:10199000BDE8F0878837010010B50446AFF300803A +:10199000BDE8F087B837010010B50446AFF300800A :1019A0002046BDE81040FEF750BD00004FF0013C5E :1019B00050F8042B51F8043B9A4215D1A2EB0C03CA :1019C000934313EACC130BD150F8042B51F8043B8A @@ -540,10 +540,10 @@ :1021A0001C4148BF7047921841EB0101A3F10103A4 :1021B0007047000010B5324904460068884202D0DA :1021C000304A904202D1D1F8080302E02E48D0F8FC -:1021D000080310F4403F10D007F0A8FD6168B1F586 +:1021D000080310F4403F10D007F0BEFD6168B1F570 :1021E000803F06D0B1F5003F03D0B1F5403F26D186 :1021F00001E0090C17E0800821E000214FF40020E5 -:1022000006F04CFE61688A03920B18D18A140C2ADE +:1022000006F062FE61688A03920B18D18A140C2AC8 :1022100015D2DFE802F0140606060606060B0D0FBF :102220001113890C4900B0FBF1F008E0000906E049 :10223000400904E0800902E0C00900E0000A1349F7 @@ -557,19 +557,19 @@ :1022B000D4ED001A94ED020A20EEA01A61EEA01AE5 :1022C00094ED032AF7EE008A00EE001A40EE021A9F :1022D000B0EE008AF0EE680A41EE480A21EE880A64 -:1022E0000FF072FA85ED010A94ED000AD4ED021A9E +:1022E0000FF08AFA85ED010A94ED000AD4ED021A86 :1022F000D4ED030A94ED011A20EE210A00EEC10A82 :1023000020EE080AF0EEC00A10EE900AB0F17E5FEF :1023100006DB10EE101A134860F31E01A96003E0FB -:102320000EF0D2FF85ED020A94ED021AD4ED001AE8 +:102320000EF0E8FF85ED020A94ED021AD4ED001AD2 :1023300094ED030A21EE012AD4ED012A61EE801A00 :10234000F0EE680A00EE002A42EE811A42EE480AD8 -:1023500021EE880A0FF038FA002085ED000ABDEC66 +:1023500021EE880A0FF050FA002085ED000ABDEC4E :10236000028B70BDDB0FC93F70B504000D463ED037 :10237000B7EE001ADFED380AC1EE001A84ED001A3C :10238000C4ED010AC4ED020AC4ED030AC4ED041A47 :1023900065B3D5ED000A95ED010AB7EEE01AB7EE88 -:1023A000C00A0FF02DF9B7EEC00BD5ED002ADFED16 +:1023A000C00A0FF045F9B7EEC00BD5ED002ADFEDFE :1023B0002B0A9FED2B1ADFED2B1A9FED2B2AF5EE42 :1023C000C02AB1EE400AF1EE10FA13D1D5ED012A80 :1023D000F5EEC02AF1EE10FA0CD1D5ED022AF5EE99 @@ -598,10 +598,10 @@ :10254000604A42EE013A42EEC14A25EE00FA64EEDC :1025500000EA23EE80EA64EE80DA09D1B5EEC0AA83 :10256000F1EE10FA04D1B5EEC08AF1EE10FA7CD08B -:102570002AEEAA0A0AEE0A0A08EE080A0AF0D6F8B3 +:102570002AEEAA0A0AEE0A0A08EE080A0AF0ECF89D :102580006AEE801ACDED0B1A6AEE001ACDED0A1A2A :1025900000E0B4E168EE001A29EEA90ACDED091AAF -:1025A00008EEA80A09EE090A0AF0C0F8D4EC021AEB +:1025A00008EEA80A09EE090A0AF0D6F8D4EC021AD5 :1025B000B0EE008AD4ED030A69EE80AA94ED021A07 :1025C00061EEA12A20EE883A21EE88BA62EE08BABE :1025D000F0EE629A61EE822A8DED163A21EE08AA9B @@ -617,7 +617,7 @@ :102670002BEE013A02EE200A2AEE092A42EE201A37 :102680000AEECC0A61EE200ACDED000A48EECD1A22 :102690000AEECD0A8DED043A20EE000A01EEA10A01 -:1026A0000AF044F8DDED1C2ADDED1D1ADDED000A0F +:1026A0000AF05AF8DDED1C2ADDED1D1ADDED000AF9 :1026B000B7EE002A32EEE11ADDED122A9DED043A62 :1026C000DDED0A1A72EEA04AC2EE000A9DED1B0A69 :1026D0001FEE883A0CEEC82A02EE880A6AEE285AE3 @@ -644,14 +644,14 @@ :1028200045EEA0AA4CEE23BA01EE427A40EE069A9B :1028300008EE20AA2AEEAA0A46EE86BA47EE209AA9 :102840000AEE0A0A44EEA0BA09EEA90A0BEEAB0A98 -:1028500009F06CFF6AEE800A2AEE001A69EE801A0F +:1028500009F082FF6AEE800A2AEE001A69EE801AF9 :102860002BEE802A95ED000A00EE60FA40EE41EA78 :1028700000EE61EA40EE42DA94ED040A94ED002A9B :1028800094ED011AD4ED020A0FEE002A0EEE801A22 :102890004EEE000AD4ED031A04E000009EEF273D3F :1028A000A80100204DEE801A22EE020A84ED002AD3 :1028B00084ED011AC4ED020A01EE010AC4ED031A07 -:1028C00000EEA00A01EEA10A09F030FF94ED001A13 +:1028C00000EEA00A01EEA10A09F046FF94ED001AFD :1028D00094ED012AD4ED021AD4ED030A21EE001A78 :1028E00022EE002A61EE801A20EE800A84ED001AA2 :1028F00084ED012AC4ED021A002084ED030A21B000 @@ -666,7 +666,7 @@ :1029800042EEA04A02EE603A65EE21AA24EE21AAA8 :1029900064EEA19A23EE219A09D1F5EEC08AF1EEF8 :1029A00010FA04D1B5EEC08AF1EE10FA7ED02BEE0B -:1029B0000B0A08EEA80A08EE080A09F0B7FE94ED23 +:1029B0000B0A08EEA80A08EE080A09F0CDFE94ED0D :1029C000004AF1EE000AD4ED011AF0EE003A94ED5F :1029D000022A94ED033A2BEE001AB2EE005A68EE8A :1029E000802A68EE004A24EE047A24EE23BA64EECC @@ -680,29 +680,29 @@ :102A6000620A0BEEE28A37EE40BA4DEE628A70EEF1 :102A7000E6BA0CEE27BA43EEA7BA0CEE04BA43EE60 :102A800084BA00EE24BA28EEA80A46EEA4BA0BEEE9 -:102A90000B0A0BEEAB0A08EE080A09F047FE28EE17 +:102A90000B0A0BEEAB0A08EE080A09F05DFE28EE01 :102AA000801A6BEE000A6BEE801A00E00BE028EE55 :102AB000002A95ED000A40EE41AA00EE60AA40EE21 :102AC000619A00EE429A201D94ED002A94ED040ACA :102AD000D0EC030A0AEE802A4AEE000A09EE801AB8 :102AE00049EE001A22EE020A84ED002A00EEA00A46 -:102AF000C0EC030A01EE010A01EEA10A09F016FE7C +:102AF000C0EC030A01EE010A01EEA10A09F02CFE66 :102B000094ED001A94ED012AD4ED021AD4ED030AD3 :102B100021EE001A22EE002A61EE801A20EE800AD1 :102B200084ED001A84ED012AC4ED021A002084ED20 :102B3000030ABDEC0C8B70BD022B073DA8010020E1 :102B4000B1EE601AB4EEC10AF1EE10FA02D2B0EEA4 :102B5000410A7047B4EEE00AF1EE10FAF9DDB0EE8A -:102B6000600A70470248022140680FF085BE0000ED +:102B6000600A70470248022140680FF09DBE0000D5 :102B7000C8010020044A13231221002010B500F0E0 :102B800097F9002010BD00001200002401214FF031 -:102B9000FF3208200FF0AABE9FED010A7047000027 -:102BA000000048430248012140680FF065BE000064 +:102B9000FF3208200FF0C2BE9FED010A704700000F +:102BA000000048430248012140680FF07DBE00004C :102BB000C8010020044A06230221012010B500F0BC :102BC00077F9002010BD00001900002401214FF00A -:102BD000FF3204200FF08ABE2DE9F04106000D46B9 +:102BD000FF3204200FF0A2BE2DE9F04106000D46A1 :102BE0006FF0010726D02DB3434C207818B16FF059 -:102BF0000200BDE8F0810FF0C5FE6060D0B1B622E2 +:102BF0000200BDE8F0810FF0DDFE6060D0B1B622CA :102C0000F5617E21002000F0BBF9B62214210120DD :102C100000F0B6F91E2000F08BFA1E21002000F013 :102C200073F90021084600F06FF91E286FF00305C4 @@ -740,35 +740,35 @@ :102E2000E10AC0ED030AD1ED010A00E009E071EE0C :102E3000600AC0ED040AD1ED020A30EE600A80EDAE :102E4000050A10461EBD0000120000246F12034246 -:102E500035FA8E3C70B5114D0121284604F090FCE6 -:102E60000F4C40B901222846114604F08EFC6068E0 -:102E700008210FF001FD0821284604F081FC0028FC -:102E80000AD101222846082104F07FFC6068042151 -:102E9000BDE870400FF0F0BC70BD000000080258A3 -:102EA000C801002001214FF0FF3203200FF01EBDAA +:102E500035FA8E3C70B5114D0121284604F0A6FCD0 +:102E60000F4C40B901222846114604F0A4FC6068CA +:102E700008210FF019FD0821284604F097FC0028CE +:102E80000AD101222846082104F095FC606804213B +:102E9000BDE870400FF008BD70BD0000000802588A +:102EA000C801002001214FF0FF3203200FF036BD92 :102EB00070B514001E460D4621D0114B10B10128EB :102EC00008D102E00022012101E000220821184679 -:102ED00004F05BFC0B4945F080000870002000F016 -:102EE000B3F908491423012208F023F8002000F068 -:102EF000ABF932462146BDE8704007F01FBF70BDF8 +:102ED00004F071FC0B4945F080000870002000F000 +:102EE000B3F908491423012208F039F8002000F052 +:102EF000ABF932462146BDE8704007F035BF70BDE2 :102F000000080258C901002070B50D460446012092 :102F100000F00EF9184E14B1012C08D102E0002285 -:102F2000012101E000220821304604F02EFC45F08A +:102F2000012101E000220821304604F044FC45F074 :102F30008000124D2870002000F086F914232946E5 -:102F4000012207F0F6FF002000F07EF91423294645 -:102F5000022207F0B9FD44B1012C05D1012230460F -:102F6000082104F012FC287870BD01223046114679 -:102F700004F00BFC687870BD00080258C9010020FD +:102F4000012208F00CF8002000F07EF91423294635 +:102F5000022207F0CFFD44B1012C05D101223046F9 +:102F6000082104F028FC287870BD01223046114663 +:102F700004F021FC687870BD00080258C9010020E7 :102F800070B50446154801F07F01017042700120C0 :102F900000F0CEF8124D14B1012C08D102E000224D -:102FA000012101E000220821284604F0EEFB002068 -:102FB00000F04AF909491423022207F0BAFF44B18C +:102FA000012101E000220821284604F004FC002051 +:102FB00000F04AF909491423022207F0D0FF44B176 :102FC000012C09D1012208212846BDE8704004F0F7 -:102FD000DCBB01221146F7E770BD0000C9010020EB +:102FD000F2BB01221146F7E770BD0000C9010020D5 :102FE0000008025810B52DED028BF0EE408AB0EECD :102FF000608AF5EEC08AF1EE10FA09D9B5EEC08A02 :10300000F1EE10FA04D318EE100AB0F17E5F04DD81 -:103010004FF0FF30BDEC028B10BD06F0A9FE134946 +:103010004FF0FF30BDEC028B10BD06F0BFFE134930 :1030200000EE100AD1E90030F8EE400A401C00EE34 :10303000100AB8EE400A20EE280A80EE801ABCEE94 :10304000C10A10EE100A0246401ED86200EE102A95 @@ -776,34 +776,34 @@ :1030600010EE100A88630020D4E7000090090020C9 :1030700010B504002DED028BB0EE408A04D0B5EE01 :10308000C08AF1EE10FA04D24FF0FF30BDEC028B93 -:1030900010BD06F06DFE184900EE100AF6EE000AAB +:1030900010BD06F083FE184900EE100AF6EE000A95 :1030A000D1E90030B8EE401A401C604300EE100A2F :1030B000B8EE400AC1EE001ABCEEE10A10EE100AAA :1030C0000246401ED86200EE102AC8600968B8EEB9 :1030D000400A20EE200ABCEEC00A10EE100A8863F7 :1030E0009FED060A28EE000ABCEEC00A10EE100A98 :1030F00000F01EF80020C9E79009002000007A4483 -:103100000448042110B508F0A9FB002801D04FF0B5 +:103100000448042110B508F0BFFB002801D04FF09F :10311000FF3010BD900900200448042110B508F0CC -:103120002FFC002801D04FF0FF3010BD9009002087 -:1031300070B505460FF097FA4FF47A71B1FBF0F0D5 -:10314000B5FBF0F40FF078FA02284FF0FF3110D001 +:1031200045FC002801D04FF0FF3010BD9009002071 +:1031300070B505460FF0AFFA4FF47A71B1FBF0F0BD +:10314000B5FBF0F40FF090FA02284FF0FF3110D0E9 :1031500005DC88420BD090B1012813D10FE0032881 :1031600005D0042803D06FF0004290420AD10846EF -:1031700070BD04B9012420460FF038FA02E0284659 -:1031800003F012FE002070BD10F0D8B9B0F5806FCA +:1031700070BD04B9012420460FF050FA02E0284641 +:1031800003F028FE002070BD10F0F0B9B0F5806F9C :1031900010B508D0B0F5805F05D0B0F5004F02D073 -:1031A0004FF0FF3010BD282004F084FB002010BD3C +:1031A0004FF0FF3010BD282004F09AFB002010BD26 :1031B000B0F5806F10B508D0B0F5805F05D0B0F5E0 -:1031C000004F02D04FF0FF3010BD282004F083FBE9 +:1031C000004F02D04FF0FF3010BD282004F099FBD3 :1031D000002010BD10B549B10124002204FA02F309 :1031E000034206D0064840F8221006E06FF00100C6 :1031F00010BD521CD2B2102AF0D3002010BD000026 :10320000409B00200A460E4910B530B1012808D075 :1032100002280AD04FF0FF3010BD08464FF480411D :1032200006E008464FF4005102E008464FF4004122 -:10323000012A00D0002204F0A8FA002010BD0000EE -:10324000000802580FF0E4BF08B1002070470148A1 +:10323000012A00D0002204F0BEFA002010BD0000D8 +:10324000000802580FF0FCBF08B100207047014889 :10325000704700003407002032B1054B03EB4010EB :1032600040F82120002070476FF0010070470000F7 :10327000809B002005280ED2DFE800F00305070B35 @@ -811,8 +811,8 @@ :10329000704706487047002070470000DC09002096 :1032A000980B00202C0C0020700A0020C00C00207D :1032B00070B504460068C169C90617D510210162BE -:1032C00020460BF0C1FE0A4D00EBC00005EB80006C -:1032D000006A00280AD020460BF0B6FE00EBC000C2 +:1032C00020460BF0D7FE0A4D00EBC00005EB800056 +:1032D000006A00280AD020460BF0CCFE00EBC000AC :1032E00005EB8000006ABDE87040004770BD00003B :1032F0008C9A002042B1064B00EBC00003EB80002B :1033000040F82120002070476FF001007047000056 @@ -824,4465 +824,4465 @@ :1033600070B5084E0A88B35C002B08D000251846BB :10337000541CA3B2B554802B0B8000D30D8070BDBC :10338000A0010020A09B0020FEE700207047002045 -:103390007047000005490022054810B50CF000FBFD -:1033A000044903480CF0EFFA002010BDB41E0020C1 +:103390007047000005490022054810B50CF016FBE7 +:1033A000044903480CF005FB002010BDB41E0020AA :1033B000D8110020B41600200348012110B5006880 -:1033C0000FF05AFA002010BDA40100200020704721 +:1033C0000FF072FA002010BDA40100200020704709 :1033D000094A10B5D2F8BC22D2F814220AB1012051 -:1033E00010BD0A46014604480CF0DAFABDE8104068 -:1033F00001480CF04BBB0000D811002008B10020A0 +:1033E00010BD0A46014604480CF0F0FABDE8104052 +:1033F00001480CF061BB0000D811002008B100208A :1034000070474FF0FF3070474FF0FF3210B540B1BA :1034100039B1427C3AB1027C2AB100F007F80020B1 -:1034200010BD104610BD00200871F8E710B5447CAF -:103430000022B4B3012C35D00123022C0ED0032C72 -:103440001AD106E0012B16D0022B14D0032B13D176 -:1034500011E00B71037C002BF4D10CE004240C71FF -:10346000047C44B1012C06D0022C03D0032C03D1E0 -:103470004B7101E003224A7190ED030A81ED030ACA -:1034800090ED020A81ED040A90ED000A81ED050A33 -:1034900090ED050A81ED020A90ED010A81ED070A1F -:1034A00010BDFFE70A71D5E72DE9F04F04000D4686 -:1034B0006FF001002DED0E8BDBB07CD0002D7AD0AB -:1034C0009FEDFE1A2068D4ED020A101A226000EE69 -:1034D000100A2046F8EE401A81EE810A84ED010AB6 -:1034E00070EE800AC4ED020A00F08CFE94F884129B -:1034F0004FF000099FEDF28AD1B101292ED00426A8 -:1035000004F52F709FEDEF9AF2EE04BADFEDEE9A1C -:1035100004294FF0DC0AF1EE04DAB9EE04EAF6EE23 -:10352000008AB0EE00AA00907DD0052915D12CE0CC -:10353000F02101A8FDF7B1F9E449F02201A8FDF757 -:1035400050F9F02201A904F1A000FDF74AF984ED39 -:10355000028A84F8849284F88592AFE25FF00005D5 -:10356000DB49142205EB850004EB8000A030FDF759 -:1035700038F96D1CEDB20C2DF2D3012184F88412C0 -:1035800084F8859284ED028A98E20027D0491422BB -:1035900007EB8700143104EB8000A030FDF721F920 -:1035A0007F1CFFB20C2FF1D3D4ED011AD4EDA30A86 -:1035B000B0EE480A00E0FDE30098B0EE401A0AF0D1 -:1035C00051FAD4EDA90A84EDA60AC24930EE800A68 -:1035D00010EE100A84EDA90A884202DD9FEDBE0AB2 -:1035E00006E010EE100ABD49884203D99FEDBC0ADF -:1035F00084EDA90A94F8850220B101281BD0032884 -:1036000018D13CE100EB400200EB800104EB8202A8 -:10361000401C92ED060A04EB8101C0B20C2881ED3A -:103620002A0AEFD300E04AE284F8846284F88592A3 -:1036300084ED028A26E2D5ED010A94ED640AD4ED08 -:10364000011A00EEA10A84ED640AB0EE480A00985F -:10365000D4EDA30AB0EE401A0AF004FA002604F1F1 -:10366000B40B04F1780804F13C0700BF94EDA90AFB -:10367000B5EEC00AF1EE10FA50DD36B1012E27D0BA -:10368000022E28D0032E28D0DFE090483FABF03048 -:1036900007C883E80700D4ED640A94EDA90A43AA99 -:1036A000F1EE600A3FA830EEC00A8DED410AE168F4 -:1036B00001F1DC03C43109F057F89DED430A84EDB4 -:1036C0002A0A9DED440A84ED2F0A9DED450A4FE03C -:1036D0007E48FC3051E0834874E0824843AB0C30B4 -:1036E00007C883E8070094EDA90AD4ED640A3FAA4D -:1036F00043A830EE600A8DED450AE16801F580735C -:10370000C43109F031F89DED3F0A84ED570A9DED73 -:10371000400A8BED2F0A9DED410A94E036B1012E4F -:1037200029D0022E4CD0032E6DD08EE06D4843ABD5 -:10373000183007C883E80700D4ED640A94EDA90A9D -:103740003FAAF1EE600A43A830EEC00A8DED450AAB -:10375000E16801F1DC03C43109F006F89DED3F0A90 -:1037600084ED2A0A9DED400A84ED2F0A9DED410A61 -:1037700084ED340A69E05B48243043AB07C883E832 -:103780000700D4ED640A94EDA90A3FAAF1EE600A9D -:1037900043A830EEC00A8DED450AE16801F1E80367 -:1037A000C43108F0E1FF9DED3F0A84ED390A9DED3B -:1037B000400A87ED2F0A9DED410A87ED340A44E067 -:1037C000484830303FAB07C883E8070094EDA90AAA -:1037D000D4ED640A43AA3FA830EE600A8DED410A99 -:1037E000E16801F1F403C43108F0BEFF9DED430A26 -:1037F00084ED480A9DED440A88ED2F0A9DED450AA7 -:1038000088ED340A21E037483FAB3C3007C883E8F5 -:10381000070094EDA90AD4ED640A43AA3FA830EE4C -:10382000600A8DED410AE16801F58073C43108F04A -:103830009BFF9DED430A84ED570A9DED440A8BEDF5 -:103840002F0A9DED450A8BED340A761CF6B2042E44 -:10385000FFF40CAF95ED020AB5EEC00AF1EE10FAD6 -:103860000DD195ED030AB5EEC00AF1EE10FA06D1BE -:1038700095ED040AB5EEC00AF1EE10FA7ED0D5ED52 -:10388000010A94ED640A94ED011A00EE810A84EDB8 -:10389000640A94ED020AB4EEC90AF1EE10FA03DDEF -:1038A00030EE490A84ED020A95ED020AD5ED030ACD -:1038B0004E4680EE2BBAC0EEABAA15E000007A446B -:1038C000000000009A99193F8FC2F53D004A010897 -:1038D000E8010020CDCC4C3DCDCC4C3DCDCC4CBDF9 -:1038E000CDCC4CBD084B01089FEDF90BDFEDFACABA -:1038F0009FEDFADAB7EECB1AB1EE4B2A4FF07C58B7 -:103900005746B7EEC22A31EE401B32EE400BF7EEBF -:10391000C1BBB7EEC0CB1AE0CEB1032E17D029EE53 -:10392000280A00BFD4ED020A30EE200AF0EE490A60 -:103930000EF070F9C0EE090AF00700280CFE8D3A6F -:1039400095ED041A022E05D281EE2D0A04E0B0EEA8 -:10395000480AE7E781EE0E0A10EE900A40454CDA7D -:1039600033EE6A2A8DED4ECA9FEDDD1B73EE2A2AD7 -:1039700055A832EE402A32EE804A00E082E02BEE7B -:10398000280A60EE8A3A8DED4F2A94ED642AB7EE4C -:10399000C00AF1EE424ACDED504A51AB3FAA49A9C7 -:1039A00031EE402B30EE010BB7EEC21BB7EEC00B71 -:1039B0008DED491A8DED4A3AD4ED640A79EEE00AAC -:1039C000CDED4B0A8DED3F0A8DED403A94ED640A42 -:1039D00039EEC00A8DED410ACDED51BA8DED524A56 -:1039E00094ED640AB1EE400A8DED530AB0EE630A1D -:1039F00000904EA80AF040F924E033EE2A1A33EE84 -:103A00006A2ACDED3FBA55AA71EE001A32EE401A7D -:103A100030EEE80ACDED401AD4ED640A49A920EE53 -:103A20000A0AF1EE600ACDED410A8DED49CA8DED2D -:103A30004A1AD4ED640A3FA8F1EE600ACDED4B0AB4 -:103A40000AF070F906EB4600E16843AA07EB800034 -:103A50000B18C43155A808F087FEC6EB06109DED83 -:103A6000430A04EB8000761C80ED2A0A9DED440A8F -:103A7000F6B280ED2F0A9DED450A042E80ED340A42 -:103A8000FFF44AAF5FF00005D4ED011A05EB4500E5 -:103A900005EB850104EB800004EB8106D0ED060AFE -:103AA000D4F8B80296ED2A0AB0EE481A09F0DAFF07 -:103AB0006D1CEDB20C2D86ED280AE5D3D6E2002769 -:103AC0008949142207EB870004EB8000A030FCF743 -:103AD00088FE7F1CFFB20C2FF2D3844994ED640A58 -:103AE000D5ED011A9FED821AD4ED010A01EEA00A6C -:103AF00084ED640A94EDA90AD5ED061A01EEA00A38 -:103B000084EDA90A84EDAA8A95ED052AD4EDA81AB8 -:103B100010EE100A42EE201A8842C4EDA81A02DD07 -:103B200084EDA91A08E010EE100A7249884203D900 -:103B30009FED710A84EDA90A94F8850240B1DFF87F -:103B4000A8B10128ABF11C0B19D0032816D159E1FB -:103B500000EB400200EB800104EB8202401C92ED7E -:103B6000060A04EB8101C0B20C2881ED2A0AEFD3CA -:103B700084F8846284F8859284ED028A5AE29BF884 -:103B8000001021B1012961D002295ED1B8E084ED95 -:103B9000028A8BED011AD846DFED58AA5FF00007C4 -:103BA00007EBC70007EB470204EB800004EB82063B -:103BB00090ED060AF90786ED710A90ED090A86ED87 -:103BC000720A90ED0C0A86ED730AC6ED95AAE068BC -:103BD00090ED310A01D1B1EE400A86ED960A94EDDE -:103BE000640A0AEB820206F51570B1EE400A86ED12 -:103BF000970AE1688B18C4313DAA08F0B5FD9DED28 -:103C00003D0AF80786ED950A9DED3E0A86ED960A77 -:103C10009DED3F0A86ED970AC6ED65AAE06890ED36 -:103C2000310A01D1B1EE400A86ED660A94ED640ACC -:103C30007F1CFFB2B1EE400A042F86ED670AAFD3B6 -:103C400098F80010491C88F80010C6E05FF00006E4 -:103C500094ED020ADBED010A06EB4600C0EE20AA55 -:103C600004EB8007D7ED950A97ED710AB0EE6A1A5A -:103C70000AF053F8C6EB0610B0EE6A1A04EB80089F -:103C800088ED2A0AD7ED960A97ED720A0AF045F8F0 -:103C900088ED2F0AD7ED970A97ED730AB0EE6A1AEE -:103CA0000AF03BF8761CF6B2042E88ED340ACFD326 -:103CB00094ED020ADBED010A5846B4EEE00AF1EE9B -:103CC00010FA03DB0178491C8BF8001085E0000036 -:103CD000B81E85EB51B88E3F3255B0BD3255B03D60 -:103CE000B81E85EB51B88EBFFC010020CDCC4C3EF8 -:103CF000CDCC4C3ECDCC4CBECDCC4CBE8FC275BCD9 -:103D0000F0EE601A0098D4EDA30A94EDA90AB0EE83 -:103D1000481A09F0A7FEB0EE401A0098F0EE41AA4A -:103D2000D4ED011AD4EDA40A94EDAA0AB0EE481A13 -:103D300009F098FE94ED641AD4EDA60A00265746C1 -:103D40007AEEC11AB1EE412A32EE6A1A31EEC02A79 -:103D500071EE802A71EE401A31EE000A32EE602ACE -:103D600072EEE02A31EEA01A30EE200A84ED6D2AC0 -:103D7000C4ED702A84ED671A84ED6A0A06EB4601E9 -:103D800042AA04EB810090ED650A8DED3F0A90EDAB -:103D9000660A8DED400A90ED670A07EB81008DED14 -:103DA000410AE1680B18C4313FA808F0DDFCC6EBFE -:103DB000061000E087E19DED420A04EB8000761CCE -:103DC00080ED2A0A9DED430AF6B280ED2F0A9DEDA3 -:103DD000440A042E80ED340AD0D395ED020AB5EEE4 -:103DE000C00AF1EE10FA0DD195ED030AB5EEC00A46 -:103DF000F1EE10FA06D195ED040AB5EEC00AF1EE27 -:103E000010FA7DD094F88502032831D10098D4EDC2 -:103E1000011AD4EDA30A94EDA90AB0EE481A09F0EC -:103E200021FEF0EE400A0098F0EE60AAD4ED011AEF -:103E3000D4EDA40A94EDAA0AB0EE481A09F012FED5 -:103E400094ED641A3AEEC12AF1EE411A71EEEA0AD3 -:103E500032EE401A72EE001A30EEC02A30EE800ABE -:103E600084ED6D1AC4ED701A84ED672A84ED6A0A38 -:103E70008BED019A94ED020A5F46B4EEC90AF1EEA9 -:103E800010FA03DD30EE490A84ED020A95ED020ACC -:103E9000D5ED030A4E46D04680EE2B9A4FF07C5962 -:103EA000C0EEABAA19E0C6B1032E16D097ED010AF9 -:103EB00060EE280A94ED020A30EE800AD7ED010A7E -:103EC0000DF0A8FED7ED010A022E80EE201A95ED26 -:103ED000040A05D2C0EE2D0A04E0F0EE480AE9E734 -:103EE000C0EE0E0A11EE100A484506EB460052DA03 -:103EF00004EB800053A990ED650A70EE491A00E0CA -:103F000098E021EE0A0ACDED3F1A90ED661A50AB0B -:103F10004DAA31EE6A1A31EE601A8DED401A90ED1D -:103F2000671A8DED411A90ED651A09EE681A8DED4C -:103F30004A1A90ED661A8DED4B1A90ED671A31EE24 -:103F4000291A8DED4C1A90ED651A09EE281A8DED9F -:103F50004D1A90ED661A8DED4E1A90ED671A31EEFE -:103F6000291A8DED4F1A90ED651A31EE091A8DED73 -:103F7000501A90ED661A31EE2A1A71EE200ACDED34 -:103F8000510AD0ED670A3FA8CDED520A00914AA927 -:103F900009F072FE2EE004EB800031EE680A90ED2D -:103FA000651A53AA4AA931EE091A20EE0A0A8DEDC4 -:103FB0003D1A90ED661A31EE2A1A31EE201A8DED77 -:103FC0003E1A90ED671A8DED3F1A90ED651A31EEAD -:103FD000491A8DED4A1A90ED661A31EE6A1A71EEA1 -:103FE000600ACDED4B0AD0ED670A3DA8CDED4C0A35 -:103FF00009F098FE06EB4600E16843AA08EB800052 -:104000000B18C43153A808F0AFFBC6EB06109DEDAA -:10401000430A04EB8000761C80ED2A0A9DED440AD9 -:10402000F6B280ED2F0A9DED450A042E80ED340A8C -:10403000FFF439AF5FF00005D4ED011A05EB450040 -:1040400005EB850104EB800004EB8106D0ED060A48 -:10405000D4F8B80296ED2A0AB0EE481A09F002FD2B -:104060006D1CEDB20C2D86ED280AE5D334264FF0F9 -:10407000940864279FED168A002500BFE06806EBD0 -:10408000850C07EB85038444034408EB850105EBAD -:104090004502084404EB820105EB85029CED002AF1 -:1040A00090ED001A91ED060A04EB820000F1A001E8 -:1040B000A830D3ED001A62EE080A08F02DFC6D1C42 -:1040C000EDB20C2DDAD35BB0BDEC0E8BBDE8F08FFA -:1040D0000AD7A33C2DE9F04105000E461ED0002E64 -:1040E0001CD004274FF034085FF00004E86807EBA9 -:1040F000840308EB840204EB84010344024405EBCF -:104100008100A030D3ED000A92ED000A06EB810198 -:1041100008F0C8FB641CE4B20C2CE7D3BDE8F081C6 -:1041200070B504006FF001052DED028BB0EE408AF2 -:1041300056D00020E160DFED320A84F884024FF4AB -:104140003470C4ED640AFFF77DF8C4F8B802E8B330 -:104150004FF4C0763046FFF775F8C4F8F802A8B3FC -:104160003046FFF76FF8C4F8FC0278B35FF0000543 -:10417000D4F8B802E268C5EB0511B0EE480A00EBCE -:104180008100002102F5867209F020FDE168D4F873 -:10419000F802B0EE480AD1ED530A00EB451008F0E2 -:1041A00029FCE168D4F8FC02B0EE480AD1ED540ACB -:1041B00000EB451008F01EFC6D1CEDB20C2DD7D3A2 -:1041C0000021B0EE480A04F52F7000E00AE0E26832 -:1041D00002F5967209F0FAFC0020BDEC028B70BD6E -:1041E0002846FAE7D4F8B80204F52E74FEF7CCFF9F -:1041F000206CFEF7C9FF606CFEF7C6FFF0E7000019 -:10420000AE47613E70B504006FF001002DED028BEA -:104210000CD000290AD094F884220878824208D170 -:1042200094F885224B789A4203D10020BDEC028B92 -:1042300070BD1F4B002204289FED1C8A1A7084F861 -:104240008402487884F8850284ED028A84EDA98A84 -:1042500084EDAA8A94EDA20A84EDA80A03D09FED0A -:10426000150A84ED640A0025D4F8B802C5EB0511DF -:1042700000EB810009F0EAFCD4F8F802B0EE480A3D -:1042800000EB451008F01CFCD4F8FC02B0EE480A24 -:1042900000EB451008F014FC6D1CEDB20C2DE3D3BF -:1042A00004F52F7009F0D2FCBFE700000000000009 -:1042B000E0010020AE47613E2DE9F04104270E46A3 -:1042C000002405464FF0340807EB8403E86808EB48 -:1042D000840204EB44010344024405EB81001030E6 -:1042E000D3ED000A92ED000A06EB810108F0C4FA52 -:1042F000641CE4B20C2CE7D3BDE8F0816FF001023E -:1043000068B161B191ED000A80EDA20A91ED010A58 -:1043100080EDA30A91ED020A80EDA40A70471046D1 -:104320007047B5EEC01AF1EE10FA30EE600A0ADD01 -:10433000F6EE000A61EE200AB4EEE00AF1EE10FAA1 -:1043400002DD30EE410A7047F1EE600AB4EEE00A99 -:10435000F1EE10FAF7D230EE010A7047002804D0CF -:1043600002494FF4B472FCF73CBA704710020020C7 -:10437000014801F079BE0000F8030020014801F077 -:1043800073BE0000540D0020014801F06DBE000016 -:10439000BC070020014801F067BE0000340800207F -:1043A000014801F061BE0000AC0F0020014801F09F -:1043B0005BBE000024100020014801F055BE000043 -:1043C000BC0E0020014801F04FBE0000340F002059 -:1043D000014801F049BE00009C100020014801F096 -:1043E00043BE0000CC0D0020014801F03DBE00009E -:1043F000440E0020014801F037BE000014110020D7 -:10440000294A016891423AD0274A1832914236D05F -:10441000254A3032914232D0234A483291422ED03E -:10442000214A603291422AD01F4A7832914226D0E6 -:104430001D4A9032914222D01B4AA83291421ED08E -:104440001A4A91421BD0194A1832914217D0174A82 -:104450003032914213D0154A483291420FD0134A5C -:10446000603291420BD0114A7832914207D00F4A04 -:104470009032914203D00D4AA832914211D1CAB272 -:104480001823103AB2FBF3F26FF30901032A02F08A -:104490000703074AD25CC26500D9091D8165084639 -:1044A000704721F0FF01F9E71000024010040240BC -:1044B0005449010830B5224A012301689142CAB229 -:1044C0001BD01F4C1434A14217D01D4C2834A142DC -:1044D00013D01B4C3C34A1420FD0194C5034A14294 -:1044E0000BD0174C6434A14207D0154C7834A1424C -:1044F00003D0134C8C34A1420CD11421114C083A36 -:10450000B2FBF1F10F4A803201F01F0504EB81018B -:10451000AB4010E00C4D1824103A0D44B2FBF4F1FE -:10452000A82D00D80831094A01F01F0402EB8101CF -:10453000064AA3408032603080E80E0030BD0000A3 -:104540000854025800580258F0FBFDBF0008024012 -:1045500010B50279531E072B2DD8174C0168A142C4 -:104560001BD0154C1434A14217D0134C2834A1424F -:1045700013D0114C3C34A1420FD00F4C5034A14207 -:104580000BD00D4C6434A14207D00B4C7834A142BF -:1045900003D0094C8C34A14203D10849074C443163 -:1045A00002E00749064C443104EB8202C0E91B21BA -:1045B00001219940416710BD08540258FC58025827 -:1045C000FC08024010B583694FF0C074826A01464E -:1045D000002053B1B3F5005F15D072B1012A0CD0A1 -:1045E000022A0AD0032A09D104E01AB1012A06D00E -:1045F000022A03D1C96AC90100D5012010BDC96AC8 -:10460000A142FAD010BD002AF7D0012AF2D0022A26 -:10461000F3D0032AF3D010BD2DE9F04F804E804F28 -:10462000DFF8FC911836DFF8F8A148370468856D8B -:104630000AF1300ADFF8ECB14C45DFF8ECC1DFF8E5 -:10464000ECE16DD0B4426BD0544569D0BC4267D028 -:10465000DFF8D081A8F11808444561D05C455FD0EF -:1046600064455DD074455BD0DFF8C481444557D0C4 -:10467000DFF8BC8108F11808444551D0DFF8B0815B -:1046800008F1300844454BD0DFF8A48108F1480810 -:10469000444545D0DFF8988108F1600844453FD093 -:1046A000DFF88C8108F17808444539D0DFF8808143 -:1046B00008F19008444533D0DFF8748108F1A80868 -:1046C00044452DD0DFF86C81444529D0DFF8648162 -:1046D00008F11408444523D0DFF8588108F1280870 -:1046E00044451DD0DFF84C8108F13C08444517D003 -:1046F000DFF8408108F15008444511D0DFF83481DB -:1047000008F1640844450BD0DFF8288108F17808E7 -:10471000444505D0DFF81C8108F18C08444509D1D7 -:10472000D0E91948C4F80480C46E1CB1D0E91C4813 -:10473000C4F8048004684C452ED0B4422CD05445B3 -:104740002AD0BC4228D0374E183EB44224D05C4513 -:1047500022D0644520D074451ED0354EB4421BD0C3 -:10476000334E1836B44217D0314E3036B44213D0DF -:104770002F4E4836B4420FD02D4E6036B4420BD087 -:104780002B4E7836B44207D0294E9036B44203D02F -:10479000274EA836B44215D190F85C603F2406F04D -:1047A0001F06B440AC600468256825F480252560A8 -:1047B0002EE09A600068C160BDE8F08F99600068E3 -:1047C000C260F9E71B4EB4421BD01A4E1436B442F5 -:1047D00017D0184E2836B44213D0164E3C36B44289 -:1047E0000FD0144E5036B4420BD0124E6436B44241 -:1047F00007D0104E7836B44203D00E4E8C36B442F9 -:10480000DAD190F85C60012406F01F06B4406C60B9 -:10481000046863608368402B0368CFD1C9E7000058 -:104820001000024088000240A0000240B800024090 -:10483000100402400854025800F0AEB810B520B180 -:104840001621FCF708F8002010BD6FF0010010BD24 -:1048500070B56FF00105B8B10C4C207810B16FF055 -:10486000020070BD0EF08EF8606068B1084A032146 -:104870000020FEF73FFD074A04210020FEF73AFD25 -:1048800001202070002070BD284670BDC0010020AE -:10489000C14900083948000810B504001ED012496B -:1048A00000F0B3F821884FF4A560A1F5B6718142FC -:1048B00017D86188A1F5B671814212D8A188A1F5F7 -:1048C000B67181420DD8E188A1F5B671814208D850 -:1048D000207A30B1607A20B1002010BD6FF0010065 -:1048E00010BD4FF0FF3010BD00000024F0B3E9B35D -:1048F0000288DFED270A01EE902AB0EE001A9FED44 -:10490000250AF8EE611A71EEE01A61EE811A81EE65 -:10491000802A81ED002A428801EE902AF8EE611A81 -:1049200071EEE01A61EE811A81EE802A81ED012A92 -:10493000828801EE902AF8EE611A71EEE01A61EEBB -:10494000811A81EE802A81ED022AC28801EE902A26 -:10495000F8EE611A71EEE01A21EE811AC1EE001A2A -:10496000C1ED031A427A0A74027A00E00DE04A743B -:10497000808A01EE100A0020B8EE411A71EE600A3A -:1049800080EE801A81ED051A70476FF001007047C4 -:10499000000080440000A544002010B5FEF76AFC2A -:1049A0000068016821F0010101600020FEF762FC4F -:1049B0000068016841F001010160002010BD0000A5 -:1049C0000248202140680DF057BF0000C0010020C0 -:1049D000002010B5FEF74EFC0449122207F0D0FD6E -:1049E000002801D04FF0FF3010BD0000000000246F -:1049F00001210246202010B50DF078FF202801D0BB -:104A0000002010BD012010BD7047002810B535D022 -:104A1000002933D00A88C2F30A0202804A788B78D0 -:104A2000D20842EA4312C2F30A0242808A78CB7863 -:104A30000C79920942EA830242EA8422C2F30A0212 -:104A400082800A794B79520842EAC312C2F30A0201 -:104A5000C2804A79C2F3011242724A799209027203 -:104A6000CA8842810A8982814A89C2810A7B02748A -:104A70004A7B4274CA894282098A818210BD4FF4FE -:104A8000806010B502F062FD4FF4805002F05EFDD0 -:104A9000BDE810404FF4004002F058BD72B6FEE78A -:104AA000054805490839026842F0020202600868B8 -:104AB0008004FCD5704700000C480258014802F001 -:104AC00089B9000070040020014802F083B9000099 -:104AD00070040020014802F07DB90000100500209C -:104AE000014802F077B9000010050020014802F0EB -:104AF00071B90000B0050020014802F06BB9000058 -:104B0000B0050020F0B503684FF6FC716D4C426BA8 -:104B1000D3F884508D4345EA8205C3F88450036876 -:104B200053F8845F068F25F47F0545EA06451D602E -:104B3000836B654D9F180268D2F888308B4343EA37 -:104B40008703C2F88830026852F8883F868F23F4C2 -:104B5000FE0343EA06431360066856F8A03FC26BA3 -:104B60008B4307EB420243EA82033360076857F83E -:104B7000A03FB0F8406023F4FE0343EA06433B60E5 -:104B8000D0E9103603FB06220368D3F8B0608E43E9 -:104B900046EA8206C3F8B0600368B0F84860D3F80C -:104BA000B07027F4FE0747EA0646C3F8B060D0E9C4 -:104BB0001267036806FB0722D3F8AC608E4346EA0F -:104BC0008206C3F8AC60D0E91467036806FB0722CD -:104BD000D3F8F0608E4346EA8206C3F8F0600368BB -:104BE000B0F85860D3F8F07027F47C1747EA06460F -:104BF000C3F8F0600368876D53F8C06F02EB47029B -:104C00008E4346EA820119600168B0F85C20D1F851 -:104C1000C03023F47C1343EA0242C1F8C02001688B -:104C200090F86020D1F8C03023F07C5343EA026250 -:104C3000C1F8C020416B04EB8101C166826B01EBBE -:104C400082020267C36B02EBC3024267D0E91034F1 -:104C5000634302EB83028267D0E91234634302EBC1 -:104C60008302C267D0E91434634302EB8302C0F8C5 -:104C70008020836D02EBC303C0F88430C46D826E64 -:104C8000544303EB8403C0F88830046E544303EBB1 -:104C90008402C0F89020AA420AD9D0F89C200321AF -:104CA00042F02002C0F89C2080F898100120F0BD4E -:104CB000002200E004C1D0F890308B42FAD80020E6 -:104CC000F0BD000000AC0040FCD30040004870473D -:104CD00020A000202DE9F0472F4C054601269146E3 -:104CE0008A464FF000086068A0BB04F10C0010E099 -:104CF000006807683846FBF7C5FC0246A85C202818 -:104D000000D020B939462846FBF7DBFC28B16068A3 -:104D1000406860600028EBD134E0D4F804C0DCF8CF -:104D2000000090F90C70002F10DB0020294602468D -:104D300003E0202B18D00022491C0B78002BF8D15F -:104D40000AB1401E40B2B84200D00026BCF1000FAC -:104D500018D07EB160682A4649460068836850468C -:104D6000984706000BD013E0002AE5D10122401C31 -:104D700040B2E1E709494A465046FBF7B5FDC4F8A1 -:104D8000048005E006494A465046FBF7ADFD002683 -:104D90003046BDE8F0870000AC010020A8500108B3 -:104DA0000051010870B5050011D008200EF030FA4E -:104DB000040014D00EF08EFB0D480021C4E9005110 -:104DC00001684C6004600EF0A5FB012070BD50200E -:104DD00080F31188BFF34F8FBFF36F8FFEE7502032 -:104DE00080F31188BFF34F8FBFF36F8FFEE7000092 -:104DF000AC01002070B504006FF0010006D000295E -:104E000004D00B4D287810B16FF0020070BD204621 -:104E1000C4F8E0144FF40471FBF73FFD4FF4347114 -:104E200004F50470FBF739FD01202870002070BDE7 -:104E3000D00100202DE9F041060025D02A48007855 -:104E400030B301275FF0000404EB440000EBC40022 -:104E500006EB800526F8204028466F800DF0E8FA22 -:104E6000032C02D3A01F032815D2D6F8E004007843 -:104E7000FEF700FA0123112205F1180107F0CCFB1F -:104E8000D6F8E004007814E06FF00100BDE8F0818E -:104E90006FF00200FAE7D6F8E0044078FEF7EAF98E -:104EA0000123112205F1180107F0B6FBD6F8E00442 -:104EB0004078FEF7DFF9C4EB0411012306EB810112 -:104EC000102201F50F7107F0E7FAC4EB041006EBAE -:104ED000800000F504700DF005FA641CE4B20C2C9F -:104EE000B2D30020D2E70000D001002030B56FF02F -:104EF000010228B321B30022551C02EB820302EB0E -:104F0000420401EB830304EBC20293ED030A00EBBE -:104F10008204EAB284ED040A93ED040A0C2A84EDBB -:104F2000050A93ED020A84ED030A93ED010A84ED6C -:104F3000020A93ED000A84ED010ADDD3002030BDA2 -:104F4000104630BD6FF0010210B5D8B1D1B10022CA -:104F5000C2EB021402EB420300EB840401EB830377 -:104F600094ED890A521C83ED020A94ED880AD2B2AC -:104F700083ED010A94ED870A0C2A83ED000AE7D33A -:104F8000002010BD104610BD2DE9F0470F4690F8E7 -:104F90005C109CB0044601294FF0000915D0002692 -:104FA000DFF8F880012084F85C00189619962168D3 -:104FB00041450ED13A4D0095284607F09DFC8246AA -:104FC000206807F099FC60B10EE002201CB0BDE83B -:104FD000F087206E84F85C6040F02000206601209D -:104FE000F4E7BAF1000F09D0216E4FF0010941F04A -:104FF00020002066484684F85C60E7E72068414668 -:10500000884201D0A84201D1264800E0264840F657 -:105010001F72D7F800C0254BBCF1000F23D0D0F889 -:1050200008C0D7F804802CF4404C4CEA080CC0F8B7 -:1050300008C0D4F800C08C4501D0AC4507D18968C0 -:10504000AB6801F0010103F00103194302E0996824 -:1050500001F001010029CDD1BD6839688368294379 -:105060009343194317E0876827F440478760276810 -:105070008F4201D0AF4207D18968AB6801F00101CE -:1050800003F00103194302E0996801F001010029CE -:10509000B0D1816891438160ACE7000000200240FC -:1050A00000210240002302400063025800600258C1 -:1050B0002DE9F84F0446DFF8ECB30020FA4E0090DB -:1050C000814694F85C000D46F84F012808D04FF057 -:1050D000010A84F85CA0206807F00AFC18B18FE28E -:1050E0000220BDE8F88F286800280FDB2168B14254 -:1050F0000CD0CA69030327D090FAA0F0B0FA80F070 -:1051000000F01F030AFA03F00243CA61D5E9001256 -:105110004FF00C0C20681F23C1F384610CEA921C31 -:1051200002F01F02604493409140026B9A430A438D -:105130000263206807F0DCFB8046206807F0D4FBA0 -:1051400058EA000003D054E1C0F38460D8E729682E -:105150004FF0040C20680723AA680CEAD15CC1F365 -:10516000045160448B408A40416999431143416135 -:105170002068B04204D1C2686969C2F3C1020BE081 -:10518000CB4A1268BAEB127F02D0C168C90605D4B7 -:10519000C2686969C2F38202520004E0C2686969A8 -:1051A00002F01002520891402A69042A5AD02B6852 -:1051B00000EB8202B04202F1600207D103F0F84036 -:1051C0001368084340F00040106008E0D2F800C0C7 -:1051D00003F0F84008430CF00041014311602068DF -:1051E000B0421CD12969EA6900EB8100016E21F00F -:1051F00080711143016695F8201020682A69012901 -:105200000AD00021B0429ED100EB8200026E22F053 -:1052100000720A430266ECE04FF00071F2E795F885 -:1052200021102A69012917D05FF0000100EB8200EC -:10523000026E22F000420A430266297E20682A6933 -:1052400001290CD00021036902F01F02914023F4D0 -:10525000F0420A430261CCE04FF00041E6E74FF430 -:105260000061F0E7B04273D1002107F037FB000383 -:1052700020684FF000016DD007F030FB90FAA0F0ED -:10528000B0FA80F12868020369D090FAA0F0B0FA71 -:1052900080F0814204D100222068114607F030FBE3 -:1052A0002068012107F01AFB000320684FF001017C -:1052B00058D007F013FB90FAA0F0B0FA80F12868FC -:1052C000020354D090FAA0F0B0FA80F0814204D1E9 -:1052D00020680022012107F013FB2068022107F05B -:1052E000FDFA000320684FF0020143D007F0F6FA00 -:1052F00090FAA0F0B0FA80F1286802033FD090FA4B -:10530000A0F0B0FA80F0814204D12068002202218E -:1053100007F0F6FA2068032107F0E0FA000320689E -:105320004FF003012ED007F0D9FA90FAA0F0B0FAAE -:1053300080F1286802032AD090FAA0F0B0FA80F039 -:10534000814256D120680022032107F0D9FA50E0AB -:1053500020E0FFE707F0C2FAC0F3846192E7C0F3F0 -:10536000846096E707F0BAFAC0F38461A7E7C0F358 -:105370008460ABE707F0B2FAC0F38461BCE7C0F326 -:105380008460C0E707F0AAFAC0F38461D1E7C0F3F4 -:105390008460D5E7016E2A7801F0F841B1EB826FA5 -:1053A00003D1016E21F00041016620682978426E28 -:1053B00002F0F842B2EB816F03D1416E21F000415F -:1053C000416620682978826E02F0F842B2EB816F64 -:1053D00003D1816E21F00041816620682978C26E78 -:1053E00002F0F842B2EB816F03D1C16E21F00041AF -:1053F000C1662068816811F0010F52D12D4AB04278 -:10540000EB6829680FD1D0F8B0C003F01808C1F3D9 -:10541000130322FA08F20A402CEA030C4CEA020CAD -:10542000C0F8B0C00EE0D0F8C0C003F01808C1F357 -:10543000130322FA08F20A402CEA030C4CEA020C8D -:10544000C0F8C0C0E968594570D11B482268DFF830 -:105450006CC0DFF86CB08242DFF868E01A481B4B82 -:10546000DFF86C8043D12968614565D0B1EB4C0C05 -:105470006DD0714569D0A1F1865CBCF1100C75D07E -:10548000DFF850C061456DD0DFF84CC061457FD07A -:10549000814273D0994247D01048814222D11048AE -:1054A00076E0B3E00000FF470060025800210240B0 -:1054B0000010005CFFFF0F000020024002003004DB -:1054C000400020190800900C0008302E00106032B7 -:1054D000002090362000F0140004002A0000214330 -:1054E000000052476E48814251D16E4850E0BA42A6 -:1054F0001DD1296861451FD0A1F1066CBCF1040CD7 -:1055000025D0714521D0A1F1865CBCF1100C2DD0C5 -:10551000DFF894C1614525D0DFF890C1614537D0EF -:1055200081422BD09942DDD1404631E040E0B24289 -:105530002DD12968614501D1012029E0A1F1066C36 -:10554000BCF1040C03D0714503D1594820E0584602 -:105550001EE0A1F1865CBCF1100C07D0DFF848C159 -:10556000614505D1534813E000E007E052480FE0E1 -:10557000DFF838C161450BD0814201D1184607E000 -:105580004E48414504D0814201D14D4800E0002001 -:10559000B2420DD0D16903031AD090FAA0F0B0FA4C -:1055A00080F000BF00F01F030AFA03F00143D1614D -:1055B000D5F800C0BCF1000F28DA424B2068424900 -:1055C000DFF808A1984201D0B84203D10A4602E0B0 -:1055D000800EE7E752469268984202F0E07201D0EE -:1055E000B84209D19D68D7F8088005F0010508F098 -:1055F000010845EA080502E0B56805F0010555B166 -:10560000216E4FF0010941F020002066002084F84F -:105610005C00484665E52E4DAC451CD115021AD4F8 -:10562000B042F3D1984202D0B84200D051468B68C4 -:1056300042F4000023F0E07202438A6026492548C4 -:105640000968B1FBF0F04000801C00E0401E0090B3 -:105650000028FBD1DAE7214DAC450CD1D5010AD4A5 -:10566000B042D3D1984202D0B84200D051468B68A4 -:1056700042F080700EE01A4DAC45C7D15502C5D43A -:10568000B042C3D1984202D0B84200D051468B6894 -:1056900042F4800023F0E07202438A60B6E7000023 -:1056A0000000844B0000B84F2000F0140004002AD2 -:1056B0008000501D0002B025000180210040C03A4A -:1056C0000080F03E002002400023024000630258A8 -:1056D000000052C7400D030088000020000021C3D5 -:1056E000000084CB2DE9F8434FF0000504002E465E -:1056F000009502D0206E18B108E00120BDE8F883C3 -:10570000204600F043F9656684F85C5020688168A3 -:10571000C1F3407119B181688E4A114081602068DF -:105720008168C1F3007181B981688B4A114041F0F1 -:10573000805181608A4989480968B1FBF0F0401CBA -:1057400000E0401E00900028FBD120688168C1F372 -:10575000007141B9216E012641F010012166616E90 -:1057600041F00101616607F0C3F8216EC90600D45B -:1057700020B1206E012640F01000E0E0206E20F401 -:10578000807040F00200206620688168754D11F03D -:10579000010F1ED1744B754A984201D0904207D137 -:1057A0009968976801F0010107F00107394302E0A9 -:1057B000A96801F0010161B9984201D0904201D17C -:1057C0006B4800E06B488268616822F47C120A43EF -:1057D00082602168A9421FD1637ED4E90207E26B8F -:1057E0005B033A43082805D00C280FD01C280FD0A3 -:1057F00018280FD05FF0000000F00C0794F820008C -:1058000043EA47031A4342EA00400FE00420F3E76B -:105810000820F1E71C20EFE7627E94F82030A768AB -:10582000E06B520342EA03423843104394F82020CD -:10583000012A04D1A28C504B03EB42421043A26ACE -:105840002AB1E36A02F47872024343EA0200CA68AA -:10585000A9420BD1494B1A400243CA602068626BCF -:10586000016921F040611143016103E0444B1A409A -:105870000243CA60206807F03BF80746206807F03B -:1058800033F807434ED12068A946484506D1217E0A -:1058900094F83820890341EA420103E0227E216B1B -:1058A00041EA8231C26844F203039A430A43C26068 -:1058B00094F844000128206803D0016921F0010117 -:1058C00022E048450ED1D4E9121CD4E9143502690E -:1058D0002C4F41EA0C012B433A401943114341F04C -:1058E000010111E0D4E91317B4F848C0DFF898803B -:1058F000636D026908EB0C4C224D394343EA0C03FB -:105900006D1E2A401943114301612068236C02690E -:1059100022F070421A4302612068484502D02046B6 -:10592000FCF748FC2069012820680BD0016B21F0AE -:105930000F010163206E20F0020040F0010020669C -:105940003046DBE6E269016B521E21F00F01114384 -:10595000EFE70000C0FFFF5FC0FFFF7F400D0300C7 -:105960008800002000600258002002400021024010 -:1059700000230240006302580000FEFF0740F0FFD2 -:1059800003C0F0FF1FF800FC0100FFFFF0B5B5B049 -:10599000064614212EA8FAF780FFB8216846FAF7C8 -:1059A0007CFF3149306888425BD1022000224FF4ED -:1059B00000210091CDE901201024154606AACDE969 -:1059C0000340C023059082E8290068460995289580 -:1059D00003F0B2FB08B1FFF761F82448016841F019 -:1059E00020010160006800F0200033901F4808305B -:1059F000016841F001010160016801F0010133918A -:105A0000016841F004010160006803272EA9309568 -:105A100000F0040033902020CDE92E07144801F057 -:105A2000A1FD14482EA9CDE92E47309501F09AFD2D -:105A3000114C092111484FF4807C021584E82300A1 -:105A4000D700C4E90352C3142046C4E907C5656200 -:105A5000C4E9053700F07CFE08B1FFF71FF8B46514 -:105A6000A66335B0F0BD000000200240D8440258C3 -:105A70000000025800080258F803002010000240FD -:105A80002DE9F84F044601F085FE00903CB194F8F2 -:105A90003500022806D0802161650020E4E0012065 -:105AA000BDE8F88FC74DC74EC64918352068303657 -:105AB000DFF81483DFF814938842DFF814A3DFF8CB -:105AC00014B32ED0A8422CD0B0422AD0404528D0C2 -:105AD000484526D0504524D0584522D0BD4A1832DA -:105AE00090421ED0BC4A90421BD0BB4A1832904212 -:105AF00017D0B94A3032904213D0B74A4832904258 -:105B00000FD0B54A603290420BD0B34A78329042FF -:105B100007D0B14A9032904203D0AF4AA8329042A7 -:105B200009D1026822F01E0202602068426922F058 -:105B30008002426103E0026822F00E0202602768E0 -:105B40008F4238464DD0A8424BD0B04249D0404554 -:105B500047D0484545D0504543D0584541D09D4A4F -:105B6000183290423DD09C4A90423AD09A4A18321C -:105B7000904236D0984A3032904232D0964A4832DB -:105B800090422ED0944A603290422AD0924A783283 -:105B9000904226D0904A9032904222D08E4AA8322B -:105BA00090421ED08D4A90421BD08C4A14329042B3 -:105BB00017D08A4A2832904213D0884A3C32904209 -:105BC0000FD0864A503290420BD0844A64329042C1 -:105BD00007D0824A7832904203D0804A8C32974272 -:105BE00004D1206E026822F4807202607549206838 -:105BF000884228D0A84226D0B04224D0404522D0A6 -:105C0000484520D050451ED058451CD07149183108 -:105C1000884218D07049884215D06F49183188429F -:105C200011D06D49303188420DD06B4948318842DE -:105C300009D069496031884205D067497831884286 -:105C400001D065499031016821F0010101600EE049 -:105C500001F0A0FD0099401A052808D920226265AC -:105C60000321002084F8351084F8340017E73868E1 -:105C7000C007EDD1534A0121206890422ED0A8429E -:105C80002CD0B0422AD0404528D0484526D0504597 -:105C900024D0584522D04F4B183398421ED04E4B3B -:105CA00098421BD04C4B1833984217D04A4B303394 -:105CB000984213D0484B483398420FD0464B60333C -:105CC00098420BD0444B7833984207D0424B9033E4 -:105CD000984203D0404BA833984208D194F85C70A6 -:105CE0003F23A06D07F01F07BB40836007E094F8D7 -:105CF0005C30A06D03F01F0301FA03F343602068DA -:105D000090424DD0A8424BD0B04249D0404547D0F8 -:105D1000484545D0504543D0584541D02D4A1832CA -:105D200090423DD02C4A90423AD02B4A18329042B1 -:105D300036D0294A3032904232D0274A48329042F7 -:105D40002ED0254A603290422AD0234A783290429F -:105D500026D0214A9032904222D01F4AA832904247 -:105D60001ED01E4A90421BD01C4A1432904217D0BB -:105D70001A4A2832904213D0184A3C3290420FD02F -:105D8000164A503290420BD0144A6432904207D0E7 -:105D9000124A7832904203D0104A8C3290420BD192 -:105DA000D4E919024260E06E30B1026822F48072D8 -:105DB0000260D4E91C024260002084F8351084F8A7 -:105DC00034006DE6100002405800024070000240AE -:105DD00088000240A000024010040240085402580B -:105DE0002DE9F05F28B190F83510022904D0802108 -:105DF00041650120BDE8F09F904C904B0168183C34 -:105E000018338E4ADFF83C92A1428D4CDFF838E21D -:105E10008E4FDFF83CB2DFF83CA28F4D8F4E31D071 -:105E200091422FD099422DD0A1422BD0494529D063 -:105E3000714527D0B94225D0DFF810C20CF1180CFB -:105E400061451FD0DFF808C2ACF1600C614519D084 -:105E5000DFF8FCC1ACF1480C614513D0DFF8F0C1AC -:105E6000ACF1300C61450DD0DFF8E4C1ACF1180C99 -:105E7000614507D0594505D0514503D0A94201D00D -:105E8000B1422CD1DFF8B4C14FF0040880F835805E -:105E9000ACF1180C61451DD091421BD0994219D02C -:105EA000A14217D0494515D0714513D0B94211D040 -:105EB0006648183081420DD065486038814209D06B -:105EC00063484838814205D061483038814201D06A -:105ED0005F481838086820F001000860ABE0D1F88E -:105EE00000C02CF00E08DFF854C1C1F80080ACF1FE -:105EF000180C0168614527D0914225D0994223D0E2 -:105F0000A14221D049451FD071451DD0B9421BD0B7 -:105F1000DFF838C10CF1180C614515D0DFF830C13D -:105F2000ACF1600C61450FD0DFF824C1ACF1480C36 -:105F3000614509D0DFF818C1ACF1300C614503D0E0 -:105F4000DFF80CC1ACF1180CD1F800C02CF0010C3A -:105F5000C1F800C0DFF8E4804FF0010C0168A8F13F -:105F60001808414546D0914244D0994242D0A142BE -:105F700040D049453ED071453CD0B9423AD0334A31 -:105F80001832914236D0324A603A914232D0304A89 -:105F9000483A91422ED02E4A303A91422AD02C4A89 -:105FA000183A914226D0594524D0514522D0A942D1 -:105FB00020D0B1421ED02A4A91421BD0284A143226 -:105FC000914217D0264A2832914213D0244A3C32BB -:105FD00091420FD0224A503291420BD0204A643273 -:105FE000914207D01E4A7832914203D01C4A8C322B -:105FF000914218D1016E0A6822F480720A6090F80A -:106000005C20816D02F01F020CFA02F24A60D0E9B6 -:1060100019124A60C16E31B10A6822F480720A60B6 -:10602000D0E91C124A600022016D80F835C080F86A -:10603000342001B188470020DCE60000280002403F -:10604000580002407000024088000240A000024058 -:106050007004024088040240A0040240B8040240D8 -:1060600008540258406D70472DE9FC5F0446F74E16 -:106070000020DFF8D88300904FF41652F44808F15E -:106080001808A56DDFF8C493DFF8C0A3016809F113 -:10609000300920680AF1480AB1FBF2F1B0420191DF -:1060A0002F68D5F800C0DFF8ACB335D04146884240 -:1060B00032D0484530D050452ED058452CD0E549F7 -:1060C0001831884228D0E3493031884224D0E14950 -:1060D0004831884220D0E04988421DD0DE4918313D -:1060E000884219D0DC493031884215D0DA4948312C -:1060F000884211D0DFF860E30EF1600E70450BD0DE -:10610000D54A7832904207D0D34B9033984203D08F -:10611000D149A83188427DD194F85C20082102F051 -:106120001F0201FA02F23A424AD0B04232D0404550 -:1061300030D048452ED050452CD058452AD0C54A9D -:106140001832904226D0C34A3032904222D0C14AFF -:10615000483290421ED0C04A90421BD0BE4A1832EC -:10616000904217D0BC4A3032904213D0BA4A4832DB -:1061700090420FD0B84A603290420BD0B64A783283 -:10618000904207D0B44A9032904203D0B24AA8322B -:10619000904203D1026802F0040202E0026802F0B9 -:1061A00008026AB1026822F00402026094F85C00FE -:1061B00000F01F008140A960606D40F00100606543 -:1061C00094F85C00012100F01F008140394240D06A -:1061D0002068B04234D0404532D0484530D0504598 -:1061E0002ED058452CD09B4A1832904228D0994A3C -:1061F0003032904224D0974A4832904220D0964A7A -:1062000090421DD0944A1832904219D0924A3032AE -:10621000904200E0AFE113D08F4A483290420FD055 -:106220008D4A603290420BD08B4A7832904207D030 -:10623000894A9032904203D0874AA83290427DD159 -:10624000406910F0800F04D0A960606D40F002003A -:10625000606594F85C00042100F01F008140394221 -:106260003ED02068B04232D0404530D048452ED094 -:1062700050452CD058452AD0764A1832904226D024 -:10628000744A3032904222D0724A483290421ED034 -:10629000714A90421BD0704A1832904217D06E4A11 -:1062A0003032904213D06C4A483290420FD06A4A42 -:1062B000603290420BD0684A7832904207D0664AEA -:1062C0009032904203D0644AA83290424ED1006886 -:1062D00010F0020F04D0A960606D40F0040060650A -:1062E00094F85C00102100F01F008140394258D022 -:1062F0002068B04234D0404532D0484530D0504577 -:106300002ED058452CD0534A1832904228D0514AAA -:106310003032904224D04F4A4832904220D04E4AE8 -:1063200090421DD04C4A1832904219D04A4A30321D -:10633000904215D0484A4832904200E014E00FD015 -:10634000454A603290420BD0434A7832904207D09F -:10635000414A9032904203D03F4AA832904207D13E -:10636000006800F0080006E0006872E70068B7E720 -:10637000006800F00400A0B1A9602068016849032A -:1063800004D50068000308D5A16C07E00168C905C1 -:1063900003D4016821F008010160216C09B1204695 -:1063A000884794F85C00202100F01F0081403942AA -:1063B00079D02068B04232D0404530D048452ED008 -:1063C00050452CD058452AD0224A1832904226D027 -:1063D000204A3032904222D01E4A483290421ED08B -:1063E0001D4A90421BD01C4A1832904217D01A4ABC -:1063F0003032904213D0184A483290420FD0164A99 -:10640000603290420BD0144A7832904207D0124A40 -:106410009032904203D0104AA832904203D10068D3 -:1064200000F0100002E0006800F00200B0B3A960C4 -:1064300094F835000428206801680FD049037ED500 -:10644000006800032BD4616C2AE0000010000240B9 -:1064500088000020700002401004024021F0160164 -:1064600001602068416921F080014161206C08B918 -:10647000A06C20B12068016821F00801016094F847 -:106480005C303F21012003F01F0300229940A960E6 -:1064900084F8350084F83420216D65E003E0E16B79 -:1064A00009B120468847606D00287DD0606DC00727 -:1064B00059D02068042184F83510B0422BD04045D3 -:1064C00029D0484527D0504525D0584523D09D494F -:1064D000884220D09B49183188421CD099493031DC -:1064E000884218D09849884215D097491831884277 -:1064F00011D09549303188420DD0934948318842B6 -:1065000009D091496031884205D08F49783188425D -:1065100001D08D499031016821F0010101602068AE -:106520000099019A491C0091914202D80168C9075B -:10653000F6D10068C00710D003200FE0FFE7016824 -:10654000C905ACD403680121002223F010030360C5 -:1065500084F8351084F83420A1E7012084F8350050 -:10656000002084F83400E16C00291DD002B02046E0 -:10657000BDE8F05F0847754988421DD07349143162 -:10658000884219D071492831884215D06F493C3171 -:10659000884211D06D49503188420DD06B49643129 -:1065A000884209D0694900E084E07831884203D00C -:1065B00066498C3188427DD194F85C80042701685B -:1065C00008F01F0807FA08F717EA0C0F009746D0E3 -:1065D0004F0744D500980F04686003D5C8033CD426 -:1065E000A16CC1E7880638D42068B0422DD0554947 -:1065F0006039884229D0484527D0504525D0584594 -:1066000023D05049884220D04E49183188421CD0AE -:106610004C493031884218D04B49884215D04A49FC -:106620001831884211D04849303188420DD046494E -:106630004831884209D0704507D0904205D0984231 -:1066400003D04149A831884203D1016821F00801F3 -:1066500002E0016821F004010160216C84E7022757 -:1066600007FA08F717EA0C0F00974ED08F074CD5A2 -:1066700000980F04686003D5C80344D4616C73E7C5 -:10668000880640D42068B0422FD02E496039884215 -:106690002BD0484529D0504527D0584525D02949E9 -:1066A000884222D02749183188421ED025493031EE -:1066B000884200E044E018D02349884215D022499E -:1066C0001831884211D02049303188420DD01E49FE -:1066D0004831884209D0704507D0904205D0984291 -:1066E00003D01949A831884203D1016821F014016F -:1066F00002E0016821F00A010160012184F83510EF -:10670000002084F83400E16B2EE7082202FA08F238 -:1067100012EA0C0F14D0090712D5016821F00E01FE -:10672000016094F85C100120002201F01F0100FAC2 -:1067300001F16960606584F8350084F8342012E75F -:10674000BDE8FC9F88000240100402400854025833 -:106750002DE9F05F044601F01DF8002C07467DD0BE -:10676000E24E022120684FF00308DFF884934FF0D7 -:106770000005DFF880A3B042DFF87CB334D0DB4AF9 -:106780001832904230D048452ED050452CD0584534 -:106790002AD0D94A1832904226D0D74A3032904275 -:1067A00022D0D54A483290421ED0D44A90421BD0C3 -:1067B000D24A1832904217D0D04A3032904213D089 -:1067C000CE4A483290420FD0CC4A603290420BD031 -:1067D000CA4A7832904207D0C84A9032904203D0D9 -:1067E000C64AA83290427DD184F83510B04284F870 -:1067F00034502ED0BD49183188422AD0484528D07F -:10680000504526D0584524D0BB491831884220D065 -:10681000B949303188421CD0B7494831884218D034 -:10682000B649884215D0B5491831884211D0B349CC -:10683000303188420DD0B1494831884209D0AF4942 -:106840006031884205D0AD497831884201D0AB49EA -:106850009031016821F00101016008E025E100BFED -:1068600000F098FFC01B052801D920211AE12068FB -:106870000068C007F4D1D4E902032168103418433A -:106880008E4694E88410D4E9033809683A431043EB -:106890009B4A40EA0C00676918431140103C40EAEB -:1068A0000800042F40EA010003D1D4E90B12114380 -:1068B00008436168A1F12902052A0BD9163A032A77 -:1068C00008D9083A012A05D9083A032A02D97439A5 -:1068D000032901D840F48010CEF800002068676AD0 -:1068E000406900E020E0042F20F0070047EA00079D -:1068F0000DD1D4E90A01074349B12046FDF762FEF4 -:1069000028B140206065012184F83510CDE0206871 -:1069100047612046FDF774FD94F85C203F2102F0AA -:106920001F029140816055E0764A90421BD0754B22 -:106930001433984217D0734B2833984213D0714BBD -:106940003C3398420FD06F4B503398420BD06D4B75 -:106950006433984207D06B4B7833984203D0694B2D -:106960008C3398427ED184F8351084F83450664BCD -:106970000168A26801EA030E402A74D0802A73D00D -:106980005FF00002D4E90378D4E9053142EAD70286 -:1069900042EAD8085B4AD4E9077C48EAD30848EAC7 -:1069A000D10141EAD701524241EA1C11142341EAC4 -:1069B0000E01016020681044B0FBF3F08000E06538 -:1069C0002046FDF71DFD94F85C20012102F01F0216 -:1069D000914041602068B04257D044491831884204 -:1069E00053D0484551D050454FD058454DD04249DD -:1069F0001831884249D040493031884245D03E491B -:106A00004831884241D03D4988423ED03B49183107 -:106A100088423AD039493031884236D037494831F6 -:106A2000884232D03549603188422ED0334978319E -:106A300088422AD031499031884226D02F49A83146 -:106A4000884222D02F4988421FD02E4914318842D3 -:106A50001BD02C492831884217D02A493C31884222 -:106A600013D002E01DE017E018E0264950318842BB -:106A70000BD024496431884207D0224978318842BA -:106A800003D020498C31884229D12046FDF712FDE0 -:106A9000A06880280CD00CE0102273E74FF48042ED -:106AA00070E74021616584F835800120BDE8F09FE2 -:106AB0006560216E20790860D4E919014160606841 -:106AC000401E072808D82046FDF742FDE06E05600D -:106AD000D4E91C01416002E0E56625676567012095 -:106AE000656584F835000020E0E7000010000240F2 -:106AF0004000024058000240700002401004024072 -:106B00003F8010FE085402580F00FEFF2DE9F84F99 -:106B100004008C464FF00000009014D094F834002C -:106B2000012812D094F835500120002184F8340057 -:106B3000012D0CD0C00260650120009084F8341053 -:106B40000098BDE8F88F0120FBE70220F9E78C4DA3 -:106B50000226206884F83560A8428A4D61658A4E15 -:106B60008A4FDFF82C82DFF82C92DFF82CA2DFF8B6 -:106B70002CB226D0A84224D0B04222D0B84220D095 -:106B800040451ED048451CD050451AD0584518D015 -:106B90008349884215D082491831884211D08049F2 -:106BA000303188420DD07E494831884209D07C4935 -:106BB0006031884205D07A497831884201D07849DD -:106BC0009031016821F00101016061462046FDF726 -:106BD00023FD6B49206888422CD0A8422AD0B042BD -:106BE00028D0B84226D0404524D0484522D0504530 -:106BF00020D058451ED06A4A90421BD0684A1832AD -:106C0000904217D0664A3032904213D0644A4832DC -:106C100090420FD0624A603290420BD0604A783284 -:106C2000904207D05E4A9032904203D05C4AA8322C -:106C300090420CD1026822F01E0242F0160202605D -:106C4000206C88B12068026842F008020BE00268FC -:106C500022F00E0242F00A020260206C20B120688D -:106C6000026842F004020260206888424BD0A842C9 -:106C700049D0B04247D0B84245D0404543D04845BE -:106C800041D050453FD058453DD0454A90423AD03A -:106C9000434A1832904236D0414A3032904232D084 -:106CA0003F4A483290422ED03D4A603290422AD02C -:106CB0003B4A7832904226D0394A9032904222D0D4 -:106CC000374AA83290421ED0364A90421BD0354AED -:106CD0001432904217D0334A2832904213D0314AAE -:106CE0003C3290420FD02F4A503290420BD02D4A66 -:106CF0006432904207D02B4A7832904203D0294A1E -:106D00008C3290420DD1206E0268D20303D5026806 -:106D100042F480720260E06E18B1026842F4807240 -:106D200002602068884226D0A84224D0B04222D0F7 -:106D3000B84220D040451ED048451CD050451AD0FE -:106D4000584518D01649884215D01549183188423F -:106D500011D01349303188420DD011494831884251 -:106D600009D00F496031884205D00D4978318842F9 -:106D700001D00B499031016841F001010160DFE66B -:106D8000100002402800024040000240580002402B -:106D90007000024088000240A0000240B80002409B -:106DA000100402400854025870B5044600F0F2FC8A -:106DB0000546601C02D004480078044400F0EAFC58 -:106DC000401BA042FAD370BD7C0000207047704782 -:106DD000704770472DE9FF5FDFF80CB304460BF1F5 -:106DE0000401DBF8000025680F68AA468007D5F883 -:106DF0005090696DD5F850806E6D2A6DD5F854C0ED -:106E00002B6D00EA8770009009F470496F6D286D52 -:106E100001EA09010191DAF85410DAF85490DAF82D -:106E2000505008F00F0806EA0806029602F0F00239 -:106E300003F071536FEA09061F4000F060700CEA1E -:106E4000020CCDF80CC0F20501EA00090CD4E843AD -:106E5000C00509D400214FF48073CAF85030CBF834 -:106E600000102046FFF7B5FF700512D4E843400537 -:106E70000FD4206800234FF48068D0F8DC20D0F8CD -:106E8000E410C0F85080CBF800301140204600F0EC -:106E900042FBDFF858A2009850B12268830F00EA45 -:106EA0000A001065CBF8003020460099FFF78EFFEE -:106EB000019850B12268830F00EA0A001065CBF8F0 -:106EC00000302046019900F028FB029850B122685A -:106ED000830F00EA0A001065CBF8003020460299C3 -:106EE00000F011FB039850B12268830F00EA0A00FA -:106EF0001065CBF800302046039900F005FB300503 -:106F00000CD4E843000509D4236800204FF4006244 -:106F10001A65CBF80000204600F000FBB00512D443 -:106F2000E84380050FD4206800234FF40078D0F8A0 -:106F3000D820D0F8E010C0F85080CBF800301140D5 -:106F4000204600F0E9FA30030CD4E843000309D4EA -:106F5000236800204FF400221A65CBF80000204679 -:106F600000F0D0FAF0030CD4E843C00309D423683E -:106F700000204FF480321A65CBF80000204600F064 -:106F8000C9FA70030CD4E843400309D422680020F6 -:106F90004FF480231365CBF80000204600F0B9FAC7 -:106FA000B0030FD4E84380030CD4236800204FF4CF -:106FB00000321A65CBF80000D4F89C0040F0800045 -:106FC000C4F89C00B9F1000F0BD022684FEA997306 -:106FD00009EA0A001065CBF8003049462046FFF761 -:106FE000F7FE5FB12268BB0F07EA0A001065CBF815 -:106FF0000030D4F89C003843C4F89C003C49206819 -:10700000884268D1606881468068800763D0D9F87B -:107010002060D9F82410D9F82080D9F82400D9F8B4 -:1070200020C0D9F82470D9F82030D9F82450D9F8E4 -:10703000202003F4FC4306F00F0AD9F824601D4019 -:10704000D9F824B008F030080CF4C07C02F4F02227 -:1070500011EA0A0100EA080807EA0C0706EA020634 -:10706000D9F820A004D0C9F82010204600F04EFA2C -:10707000B8F1000005D0616808624146204600F082 -:1070800047FA6FEA0B0040060ED46FEA0A0040068A -:107090000AD460684021C36BC26B01622046190CA0 -:1070A00002F03F0200F033FA2FB160680762394600 -:1070B000204600F02AFA35B160680562D4F89C00D9 -:1070C0002843C4F89C0036B160680662D4F89C007E -:1070D0003043C4F89C00D4F89C00002802D020461D -:1070E000FFF775FEBDE8FF9F10A80040FFFFCF3FF0 -:1070F00000A000402DE9F04194B08D494C22044697 -:107100006846F9F76EFB64B18A4D2068A84202D147 -:1071100000F58070606094F898004FF0000820B18E -:1071200008E0012014B0BDE8F081204684F8998081 -:1071300000F002F92068816921F01001816100F0FE -:1071400029FB0327064604E000F024FB801B0A28E5 -:1071500011D8206880690007F6D42068816941F061 -:107160000101816100F016FB06460DE000F012FB04 -:10717000801B0A2808D9D4F89C0040F00100C4F80C -:107180009C0084F89870CCE720688069C007EDD037 -:107190002068816941F002018161207C012820681A -:1071A000816937D041F040018161607C012820680D -:1071B000816932D021F480418161A07C012820685E -:1071C00081692DD041F4805181612068A268816974 -:1071D00021F44071114381612068816921F0A4018B -:1071E00081612068016921F010010161E0680128D6 -:1071F00019D010B302281BD02068816941F08001AA -:1072000081612068016941F010010161E068032893 -:107210000ED012E021F04001C6E741F48041CBE7F7 -:1072200021F48051D0E72068816941F0040103E036 -:107230002068816941F020018161207E6FF0FF02AA -:10724000D4E90773A68A1102400602EB0727A0F1D2 -:107250000070384327685B1E184301EB0646304335 -:10726000F861A068B0F5407F11D104F12800A68C28 -:107270006FF00F0C89C801EB0641401E02EB0322A0 -:10728000104322680CEB071318430843D060206EAC -:1072900030B12068626ED0F8C0101143C0F8C01041 -:1072A000D4E917126846D14209D02168A36E51F87B -:1072B000C82F50F8233022F007021A430A60216CCD -:1072C00049B12168626C51F8BC3F50F8226023F04C -:1072D000070232430A60A16C51B12168E36C51F896 -:1072E000BC2F50F8233022F0700242EA03120A60E9 -:1072F000216D51B12168626D51F8BC3F50F82200F8 -:1073000023F4E06242EA002008602068A84204D129 -:107310006068816821F003018160C4F894800121D4 -:10732000C4F89C8084F898102046FDF7EBFBF9E642 -:107330006C49010800A000402DE9F047B4B0814637 -:1073400014212EA8F9F7A9FAB8216846F9F7A5FA89 -:10735000664C0026D9F800004FF08051644A0C3C7E -:10736000614F4FF00208614D9042DFF888A14FF065 -:10737000090938D100201B914A13CDE90020684645 -:1073800001F0DAFE08B1FDF789FB3868401C38606F -:10739000012807D1286840F480702860286800F42C -:1073A00080703390206840F008002060206803223D -:1073B0002E922EA900F00800CDE92F863196CDE956 -:1073C0003290504600F0CEF800220521132000F044 -:1073D0008FFA132000F07FFA00220521152000F01B -:1073E00087FA15203BE0444A90423DD100201B9192 -:1073F0004FF40042CDE90020684601F09DFE08B13F -:10740000FDF74CFB3868401C3860012807D128681C -:1074100040F480702860286800F480703390206801 -:1074200040F002002060206860222E922EA900F019 -:107430000200CDE92F863196CDE932902F4800F039 -:1074400091F800220521142000F052FA142000F0D7 -:1074500042FA00220521162000F04AFA162000F018 -:107460003AFA34B0BDE8F087254A9042F9D10020BD -:107470001B914FF40042CDE90020684601F05CFE0C -:1074800008B1FDF70BFB3868401C3860012807D1B4 -:10749000286840F480702860286800F48070339079 -:1074A000206840F00800206020684FF440512E9181 -:1074B000052200F00800CDE92F862EA93196CDE9EE -:1074C0003220504600F04EF8002205219F2000F0A7 -:1074D0000FFA9F2000F0FFF900220521A02000F004 -:1074E00007FAA020BBE7000004000020EC4402588B -:1074F00000A00040000C025800A400400004025804 -:1075000000D400407047704770477047704770471D -:10751000704770477047704770477047704700006A -:107520002DE9F041084F01250024064605FA04F034 -:10753000304203D057F8240000B18047641CE4B205 -:10754000102CF3D3BDE8F081409B00204FF0B041F8 -:1075500010B5D1F88820024203D0C1F88800FFF7A7 -:10756000DFFF10BD2DE9F84F03247A4D00234FF0C3 -:1075700001094FF0B04B4FF00F0AE4E009FA03F6AF -:10758000324078D00F7907F00307012F01D0022F86 -:107590001AD187684FEA430ED1F80CC004FA0EF8EE -:1075A00027EA08070CFA0EFC4CEA070CC0F808C0E2 -:1075B000476891F804C0B743CCF3001C0CFA03FCF5 -:1075C0004CEA070CC0F804C00E79F643B6070BD09E -:1075D000C6684FEA43088F6804FA08FC26EA0C06DE -:1075E00007FA08F73743C7600E7906F00306022E44 -:1075F00012D1DE080F694FEA437C00EB8606B646DF -:10760000366A4FEADC6C0AFA0CF807FA0CF726EA3D -:1076100008063743CEF820700F7906684FEA430812 -:1076200007F0030704FA08FC07FA08F726EA0C0635 -:10763000374307604E6816F4403F1CD0464E37680B -:1076400047F00207376036689F0706F0020600968B -:1076500023F0030606F1B046B6463F0FD6F808649D -:10766000DFF8F8800AFA07FC404526EA0C0603D149 -:107670004FF0000C3AE065E0DFF8E4C0604502D16D -:107680004FF0010C32E0DFF8DCC0604502D14FF072 -:10769000020C2BE0DFF8D0C0604502D14FF0030CA4 -:1076A00024E0DFF8C8C0604502D14FF0040C1DE0B3 -:1076B000DFF8BCC0604502D14FF0050C16E0DFF8E2 -:1076C000B4C0604502D14FF0060C0FE0DFF8A8C04F -:1076D000604502D14FF0070C08E0DFF8A0C060451C -:1076E00002D14FF0090C01E04FF00A0C0CFA07FC34 -:1076F0004CEA060CCEF808C44F68DBF80060FF02C5 -:1077000026EA020600D516435F46CBF80060D1F8A2 -:1077100004C0DBF804605FEA8C2C26EA020600D580 -:1077200016437E606E684F6826EA0206BF0300D5E6 -:1077300016436E602E684F6826EA0206FF0300D5E6 -:1077400016432E605B1C0A6832FA03F67FF416AF0C -:10775000BDE8F88F80000058F44402580000025839 -:107760000004025800080258000C02580010025889 -:107770000014025800180258001C02580024025835 -:107780000069084000D0012070470AB1816170474C -:107790000904FBE701488068704700007C00002076 -:1077A0000248816802781144816070477C000020A3 -:1077B000032010B500F0BCF802F0FEFA0F4A1049A1 -:1077C00014681368C4F3032203F00F038A5CC95CD6 -:1077D00002F01F0201F01F01D0400A4A20FA01F115 -:1077E0001160094908600F2000F010F808B101206D -:1077F00010BD00F04DF8002010BD000018440258E4 -:10780000E04901088C0000208800002010B51028F5 -:1078100004468AB02AD200220146A12000F068F86E -:10782000A12000F058F8154804601548016841F09F -:1078300080710160006808A900F0807009906846B6 -:1078400002F046FA02F0A6FA0E49400000220E4C61 -:10785000B0FBF1F10D4840F2E7330460C0E90332B8 -:10786000491EC0E9011203F06BFD10B101200AB0FE -:1078700010BD064803F096FDF9E7000080000020E7 -:10788000EC44025840420F0000E000408C11002000 -:10789000074882B0016841F00201016000680022DF -:1078A0000F2100F002000090901E02B000F020B8FE -:1078B000F444025800280DDB410900F01F02890042 -:1078C000012001F1E0219040C1F88001BFF34F8F0A -:1078D000BFF36F8F7047002809DB410900F01F02DA -:1078E0008900012001F1E0219040C1F800017047BA -:1078F0000E4BF0B41B680D46C3F30223C3F1070619 -:10790000042E00D90426191D072901D2002300E006 -:10791000DB1E012404FA06F19C40491E2940641E26 -:10792000994014402143F0BC09F02BBC0CED00E061 -:10793000064900F0070210B54FF6FF040868044B33 -:10794000204040EA02201843086010BD0CED00E022 -:107950000000FA052DE9F04F02688346FF484FF01A -:10796000000A8DB00C468242564602D10025012005 -:1079700001E001250020E8460027814607EB47018A -:107980007F1C08EBC101F8B205F01CFF20B10820F4 -:107990004FF0010ACBF85400FFB2022FEED3BAF138 -:1079A000000F7CD1DFF8B4E3DEF80000C00707D099 -:1079B000DEF8001046F0010621F00101CEF80010BB -:1079C000E7480068C00706D0E54846F002060168AF -:1079D00021F00101016005EB45030C93E1484246AB -:1079E00008EBC303DFF880B30121DC469F6800EB9E -:1079F0008707D7F8008428F48078C7F80084DBF87C -:107A00000070FF0732D0DCF80070B9F1010F27F0E9 -:107A10000107CCF800705CD1069B00EB8303D3F820 -:107A2000007447F00207C3F80074079B3BB100EBFA -:107A30008303D3F8007447F02007C3F80074099B50 -:107A40004BB121EA030700EB8703D3F8047447F432 -:107A50008027C3F804740A9BDBB321EA030700EB19 -:107A60008703D3F8047447F0806730E00C9F52F826 -:107A7000377077B300EB8707D7F800C42CF0010C00 -:107A8000C7F800C45F683FB100EB8707D7F800C4B0 -:107A90002CF0100CC7F800C4D3F80CC000E05AE179 -:107AA000BCF1000F09D021EA0C0700EB8707D7F8DB -:107AB00004C42CF4803CC7F804C41B694BB121EA10 -:107AC000030700EB8703D3F8047427F08077C3F82B -:107AD000047409EB4903D4F800C0CDF830C09146D6 -:107AE00052F83370BC451BD009EBC302D4F808C070 -:107AF000D2F80880C44513D0D4F804C0D2F804806A -:107B0000C44502D1BCF1000F0AD1D4F80CC0D2F8A0 -:107B10000C80C44504D0D4F810C01269944551D1EA -:107B20000C9ABA4219D109EBC302D4F804C0D2F8B6 -:107B30000480C44511D1D4F80CC0D2F80C80C445DF -:107B40000BD1D4F810C01269944506D1DBF800308F -:107B500043F00103CBF8003034E000EB870709EB7A -:107B6000C302D7F8003423F00103C7F80034536888 -:107B70003BB100EB8303D3F8007427F01007C3F880 -:107B80000074936800EB8303D3F8007427F48077C4 -:107B9000C3F80074D3684BB121EA030700EB8703F5 -:107BA000D3F8047427F48037C3F8047412694AB117 -:107BB00021EA020300EB8302D2F8043423F080733D -:107BC000C2F80434A3685A4600EB8303D3F8007468 -:107BD00027F4407747EA452747F48077C3F80074D5 -:107BE000DBF800C063695F1ECCF3074C674508D91A -:107BF0005E4FD2F800C007EB03472CF47F033B43F2 -:107C000013601268D207226800EB8202D2F80034B7 -:107C10003FD023F003035B1CC2F8003462684AB112 -:107C200000EB8202D2F8003423F0300343F010035B -:107C3000C2F80034E268D3030AD521EA020300EB5C -:107C40008302D2F8043423F4E02343F480330AE0BF -:107C50005AB121EA020300EB8302D2F8043423F084 -:107C6000E06343F08073C2F804342269D30307D57C -:107C7000914300EB8100D0F8041421F4E0214AE0A4 -:107C8000F2B3914300EB8100D0F8041421F0E061DD -:107C90004EE001EB450723F003033B43C2F80034F9 -:107CA00062685AB100EB8202D2F8003423F030034C -:107CB00043EA451343F01003C2F80034E268D303EB -:107CC0000CD521EA020300EB8302D2F8043423F43A -:107CD000E02343EA854343F480330CE06AB121EAB0 -:107CE000020300EB8302D2F8043423F0E06343EA9A -:107CF000856343F08073C2F804342269D30300E043 -:107D00001AE00BD5914300EB8100D0F8041421F464 -:107D1000E02141EA854141F440310BE062B19143F9 -:107D200000EB8100D0F8041421F0E06141EA8561A4 -:107D300041F04071C0F80414F00705D0DEF80010DF -:107D400041F00101CEF80010B00704D504480168E5 -:107D500041F0010101600DB0504609E000500052B1 -:107D600000A0005200B0005200B400520000FFFF1B -:107D7000BDE8F08FF8B500250446FFF70BFD064679 -:107D800024B100206065206D10B170E001256EE027 -:107D9000204600F073F841F28830A065258A6FF024 -:107DA000FF012268D4F814C00F02636B07EB05458E -:107DB000E06801EB0C27D4F81CC0184393683D43DE -:107DC0002D4F28433B4040EA0C0018439060206848 -:107DD000236AC26822F4E0221A43C2602368228E1A -:107DE000A06B40EA024018612268E06B5061D4E960 -:107DF0000003026801EB032322F4F85119430160E8 -:107E0000A06D0022202133460090204605F048FD59 -:107E100005002CD12068626AC168521E21F0FF0162 -:107E20001143C1602068A268016821F0400111433C -:107E300001602068D4E90A12D0F80831114323F018 -:107E4000A0421143C0F808112068016841F0010107 -:107E50000160A069022804D12068816841F0020114 -:107E60008160E068B0F1806F03D002202065284671 -:107E7000F8BD0120FAE70000F4F8E0F82DE9F0433E -:107E8000B5B0044614216846F8F707FDB82106A8E6 -:107E9000F8F703FD4749206888427DD100201990FA -:107EA0004FF000710446CDE9061006A801F044F930 -:107EB00008B1FCF7F3FD4048016841F4001101608E -:107EC000016801F400110591016841F4002101608D -:107ED000006800F40020059037480C30016841F03C -:107EE00001010160016801F001010591016841F0A3 -:107EF00002010160016801F002010591016841F091 -:107F000010010160016801F010010591016841F064 -:107F100008010160006802250927009500F00800AB -:107F2000DFF89880032603966946CDE90470CDE911 -:107F300001544046FFF716FB062102940820CDE9C4 -:107F40000361CDE9000569464046FFF70BFB0121BF -:107F5000DFF86C9002AA4FF00408CDE900156946DD -:107F6000484682E85001FFF7FDFA02AA69464846F2 -:107F700082E8D000CDE90085FFF7F4FA0B21114823 -:107F80004FF40068CDF80080CDE90361CDE90154DC -:107F90006946FFF7E7FA00E008E002AA0A486946E6 -:107FA00082E8D000CDE90085FFF7DCFA35B0BDE806 -:107FB000F083000000A00052D44402580000025890 -:107FC0000004025800100258000C025801680123F6 -:107FD000C0F8D834002280F8CC248869044A40F0E4 -:107FE00000608861486D10434865002070470000BC -:107FF0000300001070470068416200207047F0B530 -:1080000003685D6A39B19F6A4C1E00204FF4827686 -:1080100005EB17450BE045EA0240986210E0471C6B -:1080200006EB800053F800C0F8B205EB1C45A042F7 -:10803000F5D34FF4807000EB810045EA02421A50FC -:108040000020F0BDD0F8E00407F0B5BF01EBC1029D -:1080500000EB8202D0F8E004126A07F008BF01EBDF -:10806000C10200EB8202D0F8E004D2F8602207F0EF -:108070005ABFD0F8E00407F0A0BF0A0601F00F01D4 -:1080800001EBC10100EB810101D5143101E001F5E3 -:108090001571006808F08EBE01F00F020B0670B576 -:1080A00002EBC20104464FF001004FF0000504EB63 -:1080B000810102D54875143103E081F8555201F56C -:1080C00015710A7094F89424012A08D084F8940455 -:1080D000206808F08DFB002084F8945470BD0220C5 -:1080E00070BD70B50279044601F00F00904201D9CD -:1080F000012070BD01F00F024FF000050B0602EBEE -:10810000C2014FF0010204EB810102D54A7514311E -:1081100003E081F8555201F515718D70087094F8DF -:108120009404012808D084F89424206808F0CAFC3C -:10813000002084F8945470BD022070BD01F00F013E -:1081400001EBC10100EB8100D0F8680270472DE916 -:10815000F04101F00F0604460D064FF0010006EB5A -:10816000C6014FF0000504EB810102D548751431BA -:1081700003E081F8555201F51571C2F30A024F78F8 -:108180000B718A600E7007B14E83022B00D14D71C6 -:1081900094F89424012A09D084F89404206808F003 -:1081A0006FFA284684F89454BDE8F0810220FBE77A -:1081B00070B501F00F05002405EBC50100EB81014E -:1081C00001F5187181E81C0001F80B4C01F80C5DF9 -:1081D0008379012B00D1CA618279006808F0CAFC5A -:1081E000002070BD70B50D460179044605F00F0002 -:1081F000884201D9012070BD29064FF000064FF0DA -:10820000010206D500EBC00104EB81014A7514316F -:1082100007E005EBC50104EB810181F8556201F52A -:1082200015718A70087094F89404012807D084F8B6 -:108230009424206808F072FC280702D007E002208E -:1082400070BDA17904F29C42206808F00FFC002068 -:1082500084F8946470BD70B501F00F04002504EB40 -:10826000C401012600EB8101203181E82C0001F8D6 -:108270000B6C01F80C4D8379012B00D1CA61827916 -:10828000006808F077FC002070BD00002DE9FC5F5D -:1082900005680446284608F029FE00287ED120689B -:1082A00008F050FE002879D0D5F80808C0F30D205A -:1082B000C4F8D404206808F045FE800704D520687F -:1082C000416901F002014161206808F03BFEC106EE -:1082D00004F29C40009035D52068816921F010019E -:1082E00081612F6A07F00F01C7F3434001EBC10121 -:1082F000022804EB810606F5157602D0062812D076 -:108300001BE047F6F070074217D0C7F30A12F16876 -:108310001746284608F01AFE7169F0683944716101 -:108320003844F06009E000990822284608F00EFE63 -:108330007069C7F30A11084470612068816941F0CF -:1083400010018161206808F0FDFD00034FF0080B6B -:108350004FF0000A4FF001097CD52068002608F094 -:10836000D0FD074674E0F80770D02068F1B208F03D -:10837000E1FD8046C00707D005EB4611C1F8089B18 -:108380003146204605F0B6FA5FEA087024D505EBC1 -:108390004611C1F808BBFA49206800E03EE2026CD1 -:1083A00000EB461001928A42D0F8081B05D9090457 -:1083B00003D54FF40041C0F8081B204600F001FB34 -:1083C000EF490198884207D9A079012804D1206893 -:1083D0000121009A08F04AFB5FEAC86004D505EB6A -:1083E00046111020C1F8080B5FEA88701DD5686936 -:1083F000000605D5D5F8040840F48061C5F80418D6 -:1084000006EBC60004EB800090F8571200F51570DB -:10841000012905D180F803A02046F1B200F004FA4A -:1084200005EB46110220C1F8080B5FEA886004D50D -:1084300005EB46112020C1F8080B5FEA884005D5FE -:1084400005EB46114FF40050C1F8080B7F08761C6D -:10845000002F88D1206808F075FD40036ED5206894 -:1084600008F048FD0026074666E0F80762D020685D -:10847000F1B208F04DFD8046C00723D0D5F834286E -:1084800006F00F0C05EB461309FA0CF08243C5F811 -:108490003428C3F80899A07901280FD106EBC6004B -:1084A00004EB8000D0E907211144016236B9606A0B -:1084B00020B920680121009A08F0D8FA2046F1B2CC -:1084C000FFF7C4FD5FEA087003D505EB4611C1F85C -:1084D00008B95FEAC86004D505EB46111020C1F861 -:1084E00008095FEA486004D505EB46114020C1F851 -:1084F00008095FEA887016D53146284608F0CBFC9B -:1085000006EBC60004EB8000C17D1430012905D1C3 -:1085100080F803A02046F1B200F082F905EB461185 -:108520000220C1F808095FEA086003D531462046F9 -:1085300005F046FA7F08761C002F96D1206808F0D7 -:1085400001FD002811DAD5F8040820F00101C5F872 -:10855000041894F8CC0401283BD0204600F016FA09 -:108560002068416901F000414161206808F0EAFC9F -:1085700000050BD5D5F80808C00702D0204600F04A -:1085800049FA2068416901F400614161206808F0FE -:10859000D9FC00010AD52068416901F00061416100 -:1085A00094F8CC04E0B1204600F034FA206808F0DA -:1085B000C9FCC00472D5D5F8040820F00100C5F844 -:1085C00004082068102108F066FC00214FF67F3275 -:1085D0002DE00021204684F8CCA4FFF70BFDBFE777 -:1085E00084F8CC942068406D0121C0F38300C4F866 -:1085F000D0042046FFF7FEFCD8E700BF05EB411092 -:10860000C0F80829D0F8003923F40013C0F8003965 -:10861000C0F8082BD0F8003B23F40013C0F8003B4F -:10862000D0F8003B43F00063C0F8003B491C2079C0 -:108630008842E3D8D5F81C0840F00111C5F81C1891 -:10864000E07B68B1D5F8840840F00B01C5F88418C8 -:10865000D5F8440840F00B012846C5F844180DE051 -:10866000D5F8140842F22B010843C5F81408D5F8D0 -:10867000100840F00B012846C5F81018D0F8000883 -:1086800020F4FE61C5F80018A1792068009A08F06E -:10869000EDF92068416901F480514161206808F0DA -:1086A00051FC800416D5206808F02AF8206808F0EC -:1086B00010FCE07101F03AFB23680146E2791846AC -:1086C00008F0A4FC204600F04BF92068416901F451 -:1086D00000514161206808F035FC000707D52046AD -:1086E00000F058F92068416901F0080141612068F3 -:1086F00008F028FC000615D5A869012620F08001A5 -:10870000A9610CE006EBC60004EB800090F857026C -:10871000012803D12046F1B2FFF7AFFC761C207987 -:10872000B042EFD8206808F00DFCC0021FD501262A -:108730004F4614E006EBC60005EB461304EB800140 -:10874000D3F800090A7E012A08D1002806DAF0B21F -:10875000CF7540F080012046FFF78FFC761C207912 -:10876000B042E7D82068416901F480114161206876 -:1087700008F0E8FB800234D501204A4629E00000D9 -:108780000A30544F00EBC00305EB401604EB8301A5 -:10879000D6F8006B91F85832012B19D1002E17DA58 -:1087A00094F8D434C6F3004603F00103B3420FD16A -:1087B00081F85722A96941F08003AB616969090614 -:1087C00006D4D5F8040840F40070C5F8040803E0A6 -:1087D000401C21798142D5D82068416901F40011FB -:1087E0004161206808F0AEFB400007D52046FFF746 -:1087F00029FC2068416901F080414161206808F04E -:10880000A1FB40070AD520684568680702D52046C5 -:10881000FFF72FFC2068416829434160BDE8FC9FB9 -:10882000D0F8E00407F021BCD0F8E00407F031BC38 -:10883000F8B5040004D094F89504002510B106E0C2 -:108840000120F8BD204684F8945400F057F8032026 -:1088500084F89504206808F003F9207C8DF8000066 -:1088600094E80F0007F05AFF0226B0BB20680021F1 -:1088700008F08CFB88BB002001270CE000EBC00156 -:10888000421C04EB81014F750D76CD610D624D6286 -:108890000875C885D0B221798142EFD8002011E057 -:1088A00000EBC001421C04EB810181F8555281F8B4 -:1088B0005852C1F85C52C1F86052C1F8645281F854 -:1088C0005402D0B221798142EAD8207C8DF8000090 -:1088D00094E80F0008F00EF810B184F89564AFE743 -:1088E000207B657484F89574012802D12046FFF737 -:1088F0006DFB206807F0F0FF0020F8BD10B5B0B0A8 -:108900000446B8216846F7F7C8FF13492068884233 -:1089100020D100204FF480214FF440122192CDE964 -:108920000010684600F008FC08B1FCF7B7F800F04A -:10893000B3F80A48016841F0007101600068002244 -:10894000052100F000702E904D20FEF7D1FF4D2044 -:10895000FEF7C1FF30B010BD00000440D8440258FB -:1089600070B50446C079012570B1022801D0FCF72A -:1089700095F8D4F8E004294607F0FAFBD4F8E004AF -:10898000BDE8704007F0AEBB0025F2E7D0F8E00488 -:1089900007F0D7BBD0F8E00407F0DDBB10B5044604 -:1089A00090F8940401280AD00120617484F894049A -:1089B000206808F01AFB002084F8940410BD0220FF -:1089C00010BDD0F8E02400F29C41104607F0DCBB5B -:1089D00010B590F8941404460068012909D00121CB -:1089E00084F89414C168490609D5617B012902D035 -:1089F00005E0022010BD816B41F480318163206865 -:108A000008F027FA206807F059FF002084F8940442 -:108A100010BD000010B50446D0F8E00407F0F6FBE6 -:108A20002068D0F8001E41F00101C0F8001EE07A75 -:108A3000002804D00248016841F00601016010BD21 -:108A400010ED00E0134970B50A68D243520705D50E -:108A5000096801F00701814213D118E00A6822F089 -:108A6000070202430A60FEF795FE0A4D4FF47A763C -:108A70000446083D07E000BFFEF78CFE001BB04235 -:108A800001D9012070BD2868C0438004F4D40020BF -:108A900070BD00000C4802580248016841F0807126 -:108AA000016070470C48025810B501F03FF90549C4 -:108AB0000968054AC1F30211515C01F01F01C84069 -:108AC00010BD000020440258E04901084A4930B571 -:108AD000494C0B1D0A680C3409681D68246802F0B3 -:108AE000030305F00102C1F30511C4F3CC0400290E -:108AF00014FB02F200EE102AF8EE400A76D0414A4A -:108B00009FED3E1ADFED3E1AB7EE000A23B1012BAE -:108B10005AD0022B18D15CE0374C283C23689B06C6 -:108B200012D5394B246801EE901A1168C4F3C104C0 -:108B3000F8EE612AE34001EE903AC1F30801F8EE45 -:108B4000611A81EEA22A07E002EE101A1168F8EE0F -:108B5000422A81EEA22A45E001EE901A1168F8EE51 -:108B6000611A40EE811A71EE800A62EE200AC1F3AA -:108B7000462101EE101AB8EE411A31EE001AC0EE8D -:108B8000811ABCEEE11A80ED001A1168C1F30641AA -:108B900001EE101AB8EE411A31EE001AC0EE811A39 -:108BA000BCEEE11A80ED011A1168C1F3066101EE15 -:108BB000101AB8EE411A31EE000A80EE801ABCEEAF -:108BC000C10A80ED020A30BD01EE901ADFED0F2AD6 -:108BD00003E001EE901ADFED0E2A1168F8EE611A3B -:108BE00082EEA12AC1F30801B6E7FFE70021016088 -:108BF0004160816030BD0000284402580000003907 -:108C00000024744C304402580090D0030024744A6D -:108C1000001BB74B494930B5484C0B1D0A6814344A -:108C200009681D68246802F00303C5F30012C1F34C -:108C30000531C4F3CC04002914FB02F200EE102A23 -:108C4000F8EE400A75D03F4A9FED3D1AB7EE000A94 -:108C50006BB1DFED3D1A012B01D0022B64D002EE87 -:108C6000101A1168F8EE422A81EEA22A21E0334C54 -:108C7000283C23689B0612D5344B246801EE901AD9 -:108C80001168C4F3C104F8EE612AE34001EE903AA2 -:108C9000C1F30801F8EE611A81EEA22A0BE001EEA1 -:108CA000901ADFED2B2A00BFF8EE611A116882EEF0 -:108CB000A12AC1F3080101EE901A1168F8EE611AB9 -:108CC00040EE811A71EE800A62EE200AC1F346215D -:108CD00001EE101AB8EE411A31EE001AC0EE811AF8 -:108CE000BCEEE11A80ED001A1168C1F3064101EEF5 -:108CF000101AB8EE411A31EE001AC0EE811ABCEE1D -:108D0000E11A80ED011A1168C1F3066101EE101A33 -:108D1000B8EE411A31EE000A80EE801ABCEEC10AAC -:108D200080ED020A30BD04E001EE901ADFED092A61 -:108D3000BAE70021016041608160F3E728440258EE -:108D400000000039384402580024744A0090D003CF -:108D50000024744C001BB74B494930B5484C0B1DDF -:108D60000A681C3409681D68246802F00303C5F30F -:108D70000022C1F30551C4F3CC04002914FB02F214 -:108D800000EE102AF8EE400A75D03F4A9FED3D1ADA -:108D9000B7EE000A6BB1DFED3D1A012B01D0022BBB -:108DA00064D002EE101A1168F8EE422A81EEA22A6F -:108DB00021E0334C283C23689B0612D5344B2468B1 -:108DC00001EE901A1168C4F3C104F8EE612AE34081 -:108DD00001EE903AC1F30801F8EE611A81EEA22A81 -:108DE0000BE001EE901ADFED2B2A00BFF8EE611ABE -:108DF000116882EEA12AC1F3080101EE901A1168F0 -:108E0000F8EE611A40EE811A71EE800A62EE200AD5 -:108E1000C1F3462101EE101AB8EE411A31EE001AE4 -:108E2000C0EE811ABCEEE11A80ED001A1168C1F3A0 -:108E3000064101EE101AB8EE411A31EE001AC0EEEA -:108E4000811ABCEEE11A80ED011A1168C1F30661C6 -:108E500001EE101AB8EE411A31EE000A80EE801AC7 -:108E6000BCEEC10A80ED020A30BD04E001EE901AAA -:108E7000DFED092ABAE70021016041608160F3E774 -:108E80002844025800000039404402580024744A23 -:108E90000090D0030024744C001BB74B2DE9F04F19 -:108EA000A14A0546DFF87CA280F48070DFF880924A -:108EB00089B013119F4C08439C48AAF104064FF057 -:108EC000805C4FF0005828D0DFF858B285F48067F6 -:108ED0000F430BF1080B4FD085F400670F4360D0B0 -:108EE00085F480570F4372D085F400570F434FF439 -:108EF00080394FF4003E69D085F400270F4373D0CA -:108F000085F480370F4370D085F480460E436DD0D2 -:108F100085F400420A436AD02AE0DAF8001001F032 -:108F20000701052924D2DFE801F0F9AA6A259F008C -:108F300006A8FFF7CBFD079809B0BDE8F08F68469B -:108F4000FFF768FE0098F7E703A8FFF705FF03980F -:108F5000F2E72068C0F3C10022FA00F0ECE72268D3 -:108F6000D2056ED561456CD11846E5E74145E3D0A1 -:108F70000020E1E74846DFE7DBF8001001F460017C -:108F8000B1F5800F3BD005DC00294AD0B1F5001FB8 -:108F9000EED174E0B1F5C00FECD0B1F5000FE7D120 -:108FA00062E0DBF8001001F0E061B1F1007F26D053 -:108FB00004DCB1B3B1F1807FDAD160E0B1F1407F80 -:108FC000D8D0B1F1806FD3D14EE000E01BE0DAF8E9 -:108FD000001001F4E041B1F5005F10D008DC01B3EE -:108FE000B1F5805FC4D14AE035E058E065E088E043 -:108FF000B1F5405FBED0B1F5804FB9D134E0206803 -:109000008000B5D5A0E7DAF8001001F4E021B1F551 -:10901000403F6DD006DC61B149457BD07145A7D199 -:1090200058E07BE0B1F5802F66D0B1F5A02F9FD13D -:109030000DE000F09DFE7FE76846FFF7EBFD01982D -:109040007AE728E003A8FFF787FE049874E7216811 -:1090500089038AD48CE7DBF8001011F440310ED07C -:10906000494510D0714583D13168256801F04051E0 -:109070006D077FF574AF00297FF471AF69E7206851 -:109080000001E7D55BE720688000E3D503A8FFF780 -:1090900063FE059850E722689203DBD566E73068E7 -:1090A00010F480303AD04845D4D120680001D1D5A1 -:1090B0006846FFF7AFFD02983EE7DBF8001001F0CD -:1090C000E041B1F1405F13D008DC71B1614521D0BE -:1090D0004145BFD120688000B4D449E7B1F1804F49 -:1090E0000AD0B1F1A04FB2D042E7FFF7DDFC23E791 -:1090F00020684007AED52CE72068C005AAD533E725 -:1091000008E0DAF8001011F04051A0D0614505D018 -:1091100041459FD1206800018ED429E72068800155 -:1091200098D505E7504402580090D00300366E01F0 -:109130000080BB00004402582DE9FE4F0546DFF8D1 -:1091400000A450F8081B0024FD4FC943019005F10D -:10915000280026460AF1240A009008011DD4686EF2 -:1091600050B1B0F5801F0CD0B0F5001F0ED0B0F597 -:10917000401F1ED001240FE0386840F400303860F2 -:1091800017E00198022104F0EDFD03E000980221B0 -:1091900004F078FE04000CD026462888C043C005A1 -:1091A00023D4A86D05281ED2DFE800F00C11161B91 -:1091B0001B006A6EDAF8001021F440111143CAF85E -:1091C0000010EAE7386840F40030386009E00198A0 -:1091D000002104F0C7FD03E00098002104F052FED6 -:1091E0000446C4B100E0012426462888DFF85083F5 -:1091F000C04308F12C0840052FD4D5F8A400B0F5E1 -:10920000C00F28D010DCB8B1B0F5001F19D0B0F5F0 -:10921000800F0FD11AE0AA6DDAF8001021F00701D3 -:109220001143CAF80010E0E7B0F5000F13D0B0F515 -:10923000200F10D001240FE0386840F4003038606F -:1092400009E00198002104F08DFD03E00098002161 -:1092500004F018FE044694B126462888C043000551 -:1092600030D4D5F8A800B0F1407F29D011DCC0B1CE -:10927000B0F1807F1AD0B0F1007F10D11BE0D5F89B -:10928000A420D8F8001021F460011143C8F80010A0 -:10929000E3E7B0F1806F13D0B0F1A06F10D00124DC -:1092A0000FE0386840F40030386009E00198002190 -:1092B00004F058FD03E00098002104F0E3FD0446AB -:1092C00094B126462868DFF878B2C0430BF1200B32 -:1092D00080011FD4E86CD8B110280FD0202812D0FC -:1092E000302815D0012414E0D5F8A820D8F80010B3 -:1092F00021F0E0611143C8F80010E3E7386840F45A -:109300000030386004E00198022104F02BFD04468F -:1093100074B126462888C043C0042BD4E86DB0F54C -:10932000005F20D00DDCA0B1B0F5805F0FD115E05B -:10933000EA6CDBF8001021F030011143CBF800108B -:10934000E8E7B0F5405F13D0B0F5804F10D00124AE -:109350000FE0386840F40030386009E001980021DF -:1093600004F000FD03E00098002104F08BFD0446AA -:109370008CB126462888C043800429D4286EB0F5D5 -:10938000403F23D010DC08B3B0F5803F14D0B0F5D7 -:10939000003F0FD115E0EA6DDAF8001021F4E0414A -:1093A0001143CAF80010E5E7B0F5802F0ED0B0F5F4 -:1093B000A02F0BD001240AE00198012104F0D2FC77 -:1093C00003E00098012104F05DFD044694B12646B7 -:1093D0002888C04340042AD4D5F8AC00B0F1405FDF -:1093E00023D010DC08B3B0F1805F14D0B0F1005F7F -:1093F0000FD115E02A6EDAF8001021F4E0211143B4 -:10940000CAF80010E4E7B0F1804F0ED0B0F1A04FE1 -:109410000BD001240AE00198012104F0A3FC03E031 -:109420000098012104F02EFD044674B126462888D8 -:10943000C04300041FD4E86ED8B1B0F1805F0ED0F5 -:10944000B0F1005F10D0012414E0D5F8AC20D8F8BA -:10945000001021F0E0411143C8F80010E7E7386838 -:1094600040F40030386004E00198012104F07AFCF7 -:10947000044674B126462868C043C0011ED4A86CB7 -:10948000D0B101280ED0022811D0032814D0012415 -:1094900013E0EA6EDAF8001021F040511143CAF8E7 -:1094A0000010E8E7386840F40030386004E00198C4 -:1094B000022104F057FC04466CB126462868C043DC -:1094C000400255D41F48016841F480710160FEF7E5 -:1094D00061F981460EE0AA6CDBF8001021F003016F -:1094E0001143CBF80010E9E7FEF754F9A0EB0900AF -:1094F00064283BD813480068C005F5D5BCBBDFF82D -:109500004090B5F8B01009F14409D9F8000001F411 -:10951000407100F44070884211D0D9F80010D9F899 -:10952000002021F4407142F48032C9F80020D9F8BB -:10953000002022F48032C9F80020C9F8001003E0AE -:109540002C44025800480258D5F8B000B0F5807F8E -:1095500019D1FEF71FF9029011E000BFFEF71AF9CA -:109560000299411A41F28830814208D903242646E3 -:109570002878DFF81494C043C00721D03CE0D9F824 -:1095800000008007EAD5D5F8B010C1F30120032808 -:10959000FE480DD0016821F47C510160B5F8B0207F -:1095A000D9F80010C2F30B021143C9F80010DFE72D -:1095B000F74A036802EA111223F47C511143ECE7E5 -:1095C000A86F182816D005DCA0B1082808D01028EC -:1095D00004D10AE020280DD028280BD001240AE06D -:1095E0000198012104F0BEFB03E00098012104F082 -:1095F00049FC044664B126462878C04380071ED43F -:10960000686F062819D2DFE800F0160C111616163E -:10961000AA6FD9F8001021F038011143C9F80010E1 -:10962000EAE70198012104F09DFB03E00098012185 -:1096300004F028FC04467CB100E00124264628788A -:10964000C04340071FD4D5F89000062819D2DFE8A0 -:1096500000F0160C111616166A6FD9F8001021F0DA -:1096600007011143C9F80010E9E70198012104F04E -:1096700079FB03E00098012104F004FC0446A4B146 -:1096800000E0012426462878C04380062BD4D5F874 -:109690008C00B0F1405F24D011DC10B3B0F1805FDA -:1096A00015D0B0F1005F10D116E0D5F89020D8F8B1 -:1096B000001021F007011143C8F80010E3E7B0F1F2 -:1096C000804F0ED0B0F1A04F0BD001240AE00198DA -:1096D000002104F047FB03E00098022104F0D2FBD4 -:1096E000044694B126462878C04340062BD4D5F8CA -:1096F0009800B0F5406F24D011DC10B3B0F5806F46 -:1097000015D0B0F5006F10D116E0D5F88C20D9F83F -:10971000001021F0E0411143C9F80010E3E7B0F573 -:10972000805F0ED0B0F5A05F0BD001240AE0019855 -:10973000002104F017FB03E00098022104F0A2FBD3 -:10974000044694B126462878C04300062BD4D5F8A9 -:109750009C00B0F5C04F24D011DC10B3B0F5005F11 -:1097600015D0B0F5804F10D116E0D5F89820D8F874 -:10977000001021F4E0511143C8F80010E3E7B0F500 -:10978000004F0ED0B0F5204F0BD001240AE0019815 -:10979000002104F0E7FA03E00098022104F072FBD4 -:1097A000044654B126462878C04300071ED4D5F895 -:1097B0008000B0F5805F0AD00FE0D5F89C20D8F883 -:1097C000001021F460411143C8F80010EBE7009845 -:1097D000022104F057FB00B10126D5F88020D9F80A -:1097E000001021F440511143C9F800102878C043FB -:1097F000C00613D4D5F89400B0F5807F05D1009849 -:10980000022104F03FFB00B10126D5F89420D8F8DE -:10981000001021F440711143C8F800102868C043BB -:10982000000316D4D5F8A00038B1B0F5803F09D0B8 -:10983000B0F5003F0BD001240AE00198002104F0AC -:1098400091FA03E00098022104F01CFB04468CB15D -:1098500026462868C043400322D4D5F88400B0F5DA -:10986000801F11D0B0F5001F13D0B0F5401F15D0E8 -:10987000012414E0D5F8A020D8F8001021F44031DC -:109880001143C8F80010E4E7386840F4003038604D -:1098900004E00098012104F0F5FA04465CB1264684 -:1098A0002868C043C0031CD4286D70B1B0F5803F58 -:1098B00010D0012414E0D5F88420D9F8001021F448 -:1098C00040111143C9F80010EAE7386840F400304D -:1098D000386004E00198022104F044FA0446DCB147 -:1098E00026462868C043800005D40098022104F071 -:1098F000C9FA00B101262868C04380031BD4E86F71 -:10990000B8B1B0F5807F10D0B0F5007F11D0B0F5C0 -:10991000407F0ED001240DE02A6DDBF8001021F409 -:1099200080311143CBF80010DBE7386840F4003099 -:1099300038607CB326462868C043C00207D42A6F2B -:10994000DAF8001021F000411143CAF8001028682D -:10995000C043800207D4AA6EDAF8001021F08071AB -:109960001143CAF800102868C043400009D40748D2 -:10997000016821F4004101600168D5F8B420114369 -:1099800001602868C04306E054440258104402585D -:10999000CFFFFF001DE007D46A6DDBF8001021F057 -:1099A00040511143CBF800102868C043000208D48E -:1099B000D5F88820D9F8001021F440011143C9F8E6 -:1099C000001028790024C04300F00100204309D092 -:1099D0000EE0EA6FD9F8001021F440711143C9F884 -:1099E0000010A8E70198002104F0BCF900B1064678 -:1099F0002879C04300F00200204305D101980121DD -:109A000004F0B0F900B106462879C04300F0040024 -:109A1000204305D10198022104F0A4F900B10646C3 -:109A20002879C04300F00800204305D100980021A8 -:109A300004F028FA00B106462879C04300F010006F -:109A4000204305D10098012104F01CFA00B106461C -:109A50002879C04300F02000044304D1009802217B -:109A600004F010FA00B916B10120BDE8FE8F002005 -:109A7000FBE700002DE9F05F04000F467ED0DFF821 -:109A80003882D8F8000000F00F00B8420CD2D8F8A5 -:109A9000001021F00F013943C8F80010D8F8000079 -:109AA00000F00F00B84269D12078844D40070AD5F4 -:109AB0002069296801F07001884204D9296821F0E1 -:109AC00070010143296020787C4E361D00070AD5BD -:109AD0006069316801F07001884204D9316821F071 -:109AE0007001014331602078C0060AD5A069316851 -:109AF00001F4E061884204D9316821F4E061014356 -:109B000031602078DFF8B4B180060BF1080B0CD57A -:109B1000E1695846DBF8002002F07002914204D956 -:109B2000026822F070020A430260207880070AD59A -:109B3000E068296801F00F01884204D9296821F002 -:109B40000F01014329602078C0073ED05B49A2681D -:109B50002868183920F47060104328606068022873 -:109B600018D0032819D00968012819D049070029FD -:109B70004ADADFF848A1AAF1080A00E044E0DAF87E -:109B8000002022F007020243CAF80020FDF702FE7F -:109B9000814612E009688903E9E709688901E6E777 -:109BA000C905E4E7FDF7F6FDA0EB090141F28830B5 -:109BB000814202D90320BDE8F09F6168DAF8000015 -:109BC00000F03800B0EBC10FECD1207880070AD547 -:109BD000E068296801F00F01884204D2296821F069 -:109BE0000F0101432960D8F80010404601F00F0131 -:109BF000B9420BD9016821F00F01394301600068B7 -:109C000000F00F00B84201D00120D4E720784007CF -:109C10000AD52069296801F07001884204D22968B8 -:109C200021F0700101432960207800070AD560699E -:109C3000316801F07001884204D2316821F070016E -:109C4000014331602078C0060AD5A069316801F46B -:109C5000E061884204D2316821F4E061014331605F -:109C6000207880060CD5E1695846DBF8002002F028 -:109C70007002914204D2026822F070020A4302602C -:109C800000F09AF80E492A682B68C2F3032203F009 -:109C90000F038A5CC95C02F01F0201F01F01D04073 -:109CA000084A20FA01F11160074908600748006876 -:109CB000BDE8F05FFDF7AABD00200052184402582D -:109CC000E04901088C00002088000020800000206E -:109CD00070B5144C3F220260124A24680832131DEA -:109CE000114D04F00704446016681C1D06F47066EC -:109CF0008660166806F00F06C660126802F07002F1 -:109D000002611A6802F0700242611A6802F4E062AD -:109D10008261226802F07002C261286800F00F00C0 -:109D2000086070BD104402580020005230B500F0A9 -:109D300043F80B4A0B490C4B15681468C5F3032212 -:109D400004F00F048A5C095D02F01F0201F01F019C -:109D5000D040064A20FA01F119601060084630BD73 -:109D600018440258E04901088C00002088000020B7 -:109D700000B5FFF7DBFF05490968054AC1F3021189 -:109D8000515C01F01F01C84000BD00001C44025896 -:109D9000E049010800B5FFF7C9FF05490968054A10 -:109DA000C1F30221515C01F01F01C84000BD000059 -:109DB0001C440258E0490108454970B54548096806 -:109DC000434B103B11F0380208D00111082A03D090 -:109DD000102A0BD0182A0BD0084670BD19688906C6 -:109DE000FBD51968C1F3C101C84070BD3A4870BDC8 -:109DF0003749374D18310C1D24350A680968266823 -:109E00002D6802F0030406F00102C1F30511C5F349 -:109E1000CC0515FB02F200EE102AB8EE400AE9B3B9 -:109E20002F4ADFED2E0AB7EE001A6CB1DFED2D1AC6 -:109E3000012C01D0022C43D002EE101A1068F8EE6B -:109E4000422A81EEA22A1EE01C68A40611D51B68D6 -:109E500001EE901A1168C3F3C103F8EE612AD840ED -:109E600001EE900AC1F30800F8EE611A81EEA22A11 -:109E70000BE001EE901ADFED1C2A00BFF8EE611A2C -:109E8000106882EEA12AC0F3080001EE900AF8EEF5 -:109E9000611A40EE201A31EE810A00E015E022EE50 -:109EA000000A1068C0F34620401C00EE900AF8EE4D -:109EB000600A80EE201ABCEEC10A10EE100A70BDD6 -:109EC00001EE901ADFED092AD8E7002070BD0000EE -:109ED000104402580090D00300366E010000003993 -:109EE000304402580024744A0024744C001BB74BC1 -:109EF000F0B50D461F49204C002887B016464FF09C -:109F000000004FF002020F684FF0030319D047F032 -:109F100004070F60096801F0040105911102009126 -:109F2000CDE90120CDE9033014486946FDF71AFB5D -:109F3000206845EAC61120F07E400843206007B043 -:109F4000F0BD47F001070F60096801F001010591BC -:109F50004FF480710091CDE90120CDE9033008482C -:109F60006946FDF7FFFA2068354320F0FE7028436C -:109F7000E4E70000E0440258104402580008025888 -:109F8000000002582DE9F05F04007DD0FF4F2078DB -:109F9000FE4D1837DFF8F483103DC00748D0D8F8DD -:109FA0000000396800F03800102815D0182803D1B7 -:109FB00001F0030002280FD06068B0F5803F12D096 -:109FC00010B1B0F5A02F18D0286820F48030286098 -:109FD000286820F4802009E02868800328D560687C -:109FE0000028D2D024E0286840F4803028606068DF -:109FF00088B1FDF7CFFB064609E0286840F48020D1 -:10A000002860F0E7FDF7C6FB801B64287ED828682F -:10A010008003F7D50CE0FDF7BDFB064605E000BF69 -:10A02000FDF7B8FB801B6428F0D828688003F7D4BC -:10A030002078800756D5D8F80000DFF850933968AB -:10A0400010F03800A9F10C090ED0182801D18807AA -:10A050000AD0E068A8B3296821F0190101432960FA -:10A06000FDF798FB064628E02868400702D5E0681F -:10A0700000288AD0E168286820F019000843286089 -:10A08000FDF788FB064606E0D2E000BFFDF782FB45 -:10A09000801B0228BAD828684007F7D5217CD9F858 -:10A0A000002022F0FE4242EA0161C9F8001019E0E6 -:10A0B000FDF770FB801B0228A8D828684007F7D559 -:10A0C000ECE7FFE7286820F001002860FDF762FB5D -:10A0D000064604E0FDF75EFB801B022896D8286840 -:10A0E0004007F7D42078C00646D5D8F80000DFF83E -:10A0F0009C92396800F03800A9F10409082812D0B0 -:10A10000182805D101F00300012800E0CEE00AD0B4 -:10A11000E0690028286820D040F080002860FDF722 -:10A1200039FB064615E02868C00502D5E06980289D -:10A130007ED194F82010D9F8002022F07C5242EA17 -:10A140000161C9F8001017E0FDF724FB801B02280D -:10A15000A0D82868C005F7D5EBE720F0800028607C -:10A16000FDF718FB064604E0FDF714FB801B0228F0 -:10A1700090D82868C005F7D42078000729D58348EF -:10A180006169643000298146016811D041F0010104 -:10A190000160FDF7FFFA064605E000BFFDF7FAFA99 -:10A1A000801B022888D8D9F800008007F6D510E077 -:10A1B00021F001010160FDF7EDFA064605E000BF60 -:10A1C000FDF7E8FA801B022870D8D9F80000800754 -:10A1D000F6D42078800623D5A0690028286810D0FE -:10A1E00040F480502860FDF7D5FA064605E000BF30 -:10A1F000FDF7D0FA801B022858D828688004F7D5CC -:10A200000EE020F480502860FDF7C4FA064604E012 -:10A21000FDF7C0FA801B022848D828688004F7D4CC -:10A220002078400751D5DFF86891D9F8001000E098 -:10A2300015E141F48071C9F80010FDF7ABFA06464C -:10A2400005E000BFFDF7A6FA801B64282ED8D9F8D8 -:10A250000000C005F6D54D4EA068603601280AD032 -:10A2600008B1052813D0306820F001003060306854 -:10A2700020F0040002E0306840F001003060A06887 -:10A2800041F2883A98B1FDF785FA81460AE03068D4 -:10A2900040F004003060EEE7FDF77CFAA0EB090126 -:10A2A000514503D830688007F6D50EE072E0FDF71F -:10A2B00071FA814606E000BFFDF76CFAA0EB0901D8 -:10A2C000514567D830688007F6D4606A00287CD092 -:10A2D000DFF8B8A0D8F800100AF1200A4FF6F87B92 -:10A2E0000AF10408C1F3C2010329AAF104096DD0DF -:10A2F0000228286820F08070286003D0FDF74AFA11 -:10A30000044681E0FDF746FA064604E0FDF742FA0E -:10A31000801B022875D828688001F7D4E26A40F2D1 -:10A32000F331386854F8283F884340EA0210184354 -:10A330003860217B4FF4FE0C22894FF0FE47208AC3 -:10A340004902267D521E401EA1F5007189B2C2F35A -:10A3500008021143761E0CEA00400143484607EA12 -:10A3600006621143CAF80010D9F8001021F001016B -:10A37000C9F80010D8F80030266A23EA0B0343EA34 -:10A38000C601C8F80010D9F8001004E010440258C3 -:10A390000048025835E0A26921F00C011143C9F8C8 -:10A3A00000100168E26921F00201114301600168B7 -:10A3B00041F480310160016841F4003101600168BD -:10A3C00041F480210160016801E06CE020E041F08F -:10A3D00001010160286840F080702860FDF7DAF91B -:10A3E000044604E0FDF7D6F9001B022809D82868C6 -:10A3F0008001F7D557E000BFFDF7CCF9001B02281C -:10A4000002D90320BDE8F09F28688001F4D44AE017 -:10A4100039680128DAF8000021D0A26A01F00303AC -:10A4200093421CD1E26AC1F305118A4217D1216B14 -:10A43000C0F30802491E8A4211D1616BC0F3462263 -:10A44000491E91420BD1A16BC0F30642491E9142B5 -:10A4500005D1E16BC0F30660491E814201D00120A5 -:10A46000D0E7A16C4646D8F80000C0F3CC0081428A -:10A4700019D0D9F800004D4620F00100C9F80000BD -:10A48000FDF788F94FEA0007FDF784F9B842FBD0E1 -:10A49000A26C306820EA0B0040EAC20030602868F5 -:10A4A00040F0010028600020ACE700002DE9F041F9 -:10A4B00004001D4616460F4603D0D4F8880018B194 -:10A4C00008E00120BDE8F081002084F884002046E7 -:10A4D00001F042FD2420C4F888002068016821F0C2 -:10A4E00001010160A06A10B1204604F031FC204651 -:10A4F00004F0D0FD0128E5D0206871050D4A41EA3D -:10A500000541836843F4804383602068836823F4B3 -:10A5100000433B4383602068036813400B430360A0 -:10A520002068016841F0010101602046BDE8F0416A -:10A5300004F072BCFFFF00FC70B5044603F0D2FDCE -:10A54000022811D0204603F0CDFD084D05EB401048 -:10A550008069002808D0204603F0C4FD05EB4010B8 -:10A560008069BDE87040004770BD0000809B0020FE -:10A570002DE9F047044600680021036942698768B5 -:10A5800094F8816000F130095FEA025C03EA020599 -:10A590000AD51A0708D5816941F400618161204616 -:10A5A00000F0C6FCBDE8F08715F0600F08D1680721 -:10A5B00006D5616F20468847216F204688470121D4 -:10A5C00005F04100012805D1680703D4216F20461A -:10A5D0008847012105F02200022806D1680704D42B -:10A5E000616F2046BDE8F04708470029DAD1280707 -:10A5F0004FF001085BD52068816941F00801816155 -:10A600002068816941F0100181612068816941F40D -:10A61000006181612068016921F008010161206801 -:10A62000806810F4404F20D023E0E0680F2806D95E -:10A630002068616E006B0860606E001D0FE00728E7 -:10A6400006D9B9F80000616E0880606E801C06E0D3 -:10A650002068616E90F830000870606E401C606683 -:10A66000B4F86A00401EA4F86A00B4F86A00002832 -:10A67000DBD1204603F09CFC84F88180D4F8840070 -:10A6800018B12046FFF758FF8CE7052E07D0042E9F -:10A6900009D0032E86D1204600F06CFD82E72046CB -:10A6A00000F07AFD7EE7204600F00AFC7AE715F418 -:10A6B000587FE9D068060AD5D4F8840040F0040039 -:10A6C000C4F884002068816941F040018161A805D7 -:10A6D0000AD5D4F8840040F00100C4F88400206852 -:10A6E000816941F400718161E8050AD5D4F88400DC -:10A6F00040F00800C4F884002068816941F480714A -:10A700008161A8060AD5D4F8840040F08000C4F81E -:10A7100084002068816941F020018161D4F88400BF -:10A720000028B1D0206840F26B32C7F38131036852 -:10A73000032923F0010101602068016921EA020177 -:10A74000016102D084F881809BE72068104D816808 -:10A7500021F440418160E06F50B10565E06FFBF787 -:10A760003FFB28B1D4F8840040F04000C4F88400D6 -:10A77000A06F002888D00565A06FFBF731FB00288B -:10A780008CD0D4F8840040F04000C4F8840009E77D -:10A790006DE000082DE9F047040029D0594A4FF038 -:10A7A00000092068584B594D9042C4F8289006D0B3 -:10A7B000984204D0A84202D0E1680F2918D8E16875 -:10A7C0004FF0010AE76B0831C9080AEB57167143CD -:10A7D000904205D0984203D0A84201D0082907D85A -:10A7E000904203D0984201D0A84204D1102902D946 -:10A7F0000120BDE8F08794F8810020B9204684F854 -:10A80000809000F085F8022084F8810020680168BB -:10A8100021F0010101602068A1698268B1F1806FB7 -:10A8200002F4F81110D16268B2F5800F01D01AB1AC -:10A830000AE0A26B22B107E0A26BB2F1805F03D104 -:10A84000026842F4805202606068400209D5E06804 -:10A85000072806D32068236D026822F480721A4309 -:10A8600003E02068026822F480720260A66AE06950 -:10A87000E26B25683043E3680A4310431843A8603D -:10A88000D4E90D02D4E90581636A25691843D4F837 -:10A8900020C00A43266810432843A56DD4E90172FD -:10A8A000D4E9123140EA080040EA0C00384308437A -:10A8B000104318432843F060606868B920688168D5 -:10A8C00021F4C05141F4006181602068816821F465 -:10A8D000C06141F4806181602068016D21F0010157 -:10A8E00001656068400206D52068626DC16821F08C -:10A8F00000411143C160C4F8849084F881A0002015 -:10A9000077E700000030014000380040003C004084 -:10A910002DE9F047B4B0074614212EA8F5F7BDFF86 -:10A92000B8216846F5F7B9FF614902263868002466 -:10A930005D4D4FF00308DFF874A188424FF0050920 -:10A940003DD1811417940020CDE900106846FEF730 -:10A95000F3FB08B1FAF7A2F853481030016841F44C -:10A9600080510160006800F480503390286840F006 -:10A9700008002860286800F008003390286840F03C -:10A9800002002860286830AA45464F4600F00200C1 -:10A9900033908020CDE92E0682E8B00045482EA9EC -:10A9A000FCF7E0FD082030AACDE92E062EA950467E -:10A9B00082E8B000FCF7D6FD34B0BDE8F0873E4930 -:10A9C0008842F9D1811417940020CDE9001068461F -:10A9D000FEF7B2FB08B1FAF761F8334808300168B6 -:10A9E00041F480410160006800F4804033902868A1 -:10A9F00040F004002860286800F0040033902868C4 -:10AA000040F002002860286806214546C84600F04C -:10AA10000200CDE92E16CDE93045CDE93290274828 -:10AA20002EA9FCF79FFD4FF40051504630AACDE906 -:10AA30002E162EA982E83001FCF794FD204E272324 -:10AA4000204A4FF480684FF44039304686E81C00B5 -:10AA5000C6E903487461B461C6E907497462FBF74B -:10AA600077FE08B1FAF71AF8154D28221549402348 -:10AA70007835FE671831B763284685E81E016C619A -:10AA8000AC61C5E907496C62FBF762FE08B1FAF7F1 -:10AA900005F8BD6700220521AF632420FCF728FFDD -:10AAA0002420FCF718FF87E7E0440258000402580E -:10AAB00000300140000C02580038004000080258E5 -:10AAC000BC070020400002402DE9F84F8946C16BC9 -:10AAD000044600689A4616464909491C1FFA81F83F -:10AAE00030300090FCF756FE834694F88100012830 -:10AAF00038D1B9F1000F6FD0002EFCD094F880004F -:10AB000001282FD0A1680025012784F88070042037 -:10AB100084F88100C4F88450C4F86490E565A4F812 -:10AB20006050256765672C34B1F5C02FA687E6878E -:10AB3000E58654F82C0D18D0C16821F4C02141F4E9 -:10AB40008021C160206841686FF30F01314341608B -:10AB50002068016841F0010101606068B0F5800F74 -:10AB600008D00CE00220BDE8F88F016821F40061F4 -:10AB70000160E7E72068016841F400710160E06866 -:10AB80000F2824D829E0206841694269D20705D1FD -:10AB9000B4F86A3043450DD209040BD5006B616EE1 -:10ABA0000860606E001D6066B4F86A00401EA4F87C -:10ABB0006A000CE0FCF7EEFDA0EB0B01514503D35E -:10ABC000BAF1FF3F03D0AAE0BAF1000F40D0B4F8C9 -:10ABD0006A000028D7D194E09FE007283CD88CE099 -:10ABE000216848694969C9070AD000980088616EE0 -:10ABF0000880606E801C6066B4F86A00401E15E034 -:10AC0000B4F86A20424514D2010412D50098008895 -:10AC1000616E0880606E801C606600990988018002 -:10AC2000606E801C6066B4F86A00801EA4F86A003A -:10AC300012E0B4F86A10012901D18004D5D4FCF7E0 -:10AC4000A9FDA0EB0B01514503D3BAF1FF3F03D09F -:10AC500065E0BAF1000F62D0B4F86A000028BFD1F5 -:10AC60004FE0206841694269D2070AD090F830006D -:10AC7000616E0870606E401C6066B4F86A00401E29 -:10AC800024E0B4F86A30434523D20A0421D590F871 -:10AC90003000616E0870606E401C6066216891F83B -:10ACA00030100170606E401C6066216891F83010B1 -:10ACB0000170606E401C6066216891F83010017070 -:10ACC000606E401C6066B4F86A00001FA4F86A0059 -:10ACD00013E0B4F86A20042A02D211F4C04FC5D19F -:10ACE000FCF758FDA0EB0B01514503D3BAF1FF3F30 -:10ACF00003D014E0BAF1000F11D0B4F86A000028B4 -:10AD0000AFD1204603F054F984F88170D4F8840060 -:10AD100084F8805000283FF426AF012023E7204626 -:10AD200003F046F9D4F8840084F8805040F4807031 -:10AD3000C4F8840084F88170032014E72DE9F04101 -:10AD4000044690F8810016460025012802D084F8B8 -:10AD500080502FE059B356B394F88000012829D0D1 -:10AD6000A268012784F88070042084F88100C4F868 -:10AD70008450256765676166A4F860502C34B2F58D -:10AD8000C02FA687E687E58654F82C0D15D0C1683C -:10AD900021F4C02141F48021C0F80C10E0684FF488 -:10ADA00080410F280ED9E26F92698A420AD084F856 -:10ADB000805055E00220BDE8F081016821F4006177 -:10ADC0000160EBE707284FF4005205D9E06F806976 -:10ADD000904201D08842EAD12068836823F48043FE -:10ADE0008360E068072811D8E06F8369934205D13A -:10ADF000B4F86A20521C5208A4F86A20806988427C -:10AE000010D1B4F86A00C01C800809E00F2809D8E6 -:10AE1000E06F8069884205D1B4F86A00401C4008A0 -:10AE2000A4F86A00E06F23490164E16F2248C86317 -:10AE3000E16F2248C864E06F0565B4F86A302168A4 -:10AE4000626EE06F3031FBF761FE58B1D4F88400D8 -:10AE500084F8805040F01000C4F8840084F88170B9 -:10AE60000120A8E7E06FC069B0F5807F20684168E5 -:10AE70006FF30F0100D0314341602068816841F4D5 -:10AE8000804181602068016941F45071016120684E -:10AE9000016841F0010101606068B0F5800F04D1E4 -:10AEA0002068016841F400710160002084F880503E -:10AEB00081E70000B3E00008BDE0000887E000087B -:10AEC00070B5044603F00EF9022811D0204603F0B5 -:10AED00009F9084D05EB40104068002808D02046CD -:10AEE00003F000F905EB40104068BDE870400047F2 -:10AEF00070BD0000809B002070B5044603F0F2F89E -:10AF0000022811D0204603F0EDF8084D05EB401063 -:10AF10000069002808D0204603F0E4F805EB401053 -:10AF20000069BDE87040004770BD0000809B0020B4 -:10AF300070472DE9F84F044600689946174600F11E -:10AF4000200B8A46FCF726FC064694F8810001286F -:10AF500039D1BAF1000F7ED0002FFCD094F88000D8 -:10AF6000012830D0A26800254FF0010884F88080C5 -:10AF7000032184F88110C4F88450C4F85CA065668D -:10AF8000A4F86850656725672C34B2F5C02FA786F2 -:10AF9000E786E58754F82C0D18D0C16821F4C0214C -:10AFA00041F40031C160206841686FF30F013943FB -:10AFB00041602068016841F0010101606068B0F5FE -:10AFC000800F08D00CE00220BDE8F88F016841F442 -:10AFD00000610160E7E72068016841F400710160E9 -:10AFE000E0680F281CD820E02068416989070BD54C -:10AFF000E16D09680162E06D001DE065B4F8620072 -:10B00000401EA4F862000BE0FCF7C4FB811B49451D -:10B0100003D3B9F1FF3F03D09DE0B9F1000F32D067 -:10B02000B4F862000028DFD179E007282FD872E059 -:10B030002068416989071ED5B4F8621001290DD92D -:10B04000E16B59B1E16D09680162E06D001DE065D9 -:10B05000B4F8620000E07CE0801E09E0E06D018849 -:10B06000ABF80010E06D801CE065B4F86200401E93 -:10B07000A4F862000BE0FCF78DFB811B494503D36C -:10B08000B9F1FF3F03D066E0B9F1000F63D0B4F827 -:10B0900062000028CCD142E02068416989072ED5A2 -:10B0A000B4F8621003290CD9E16B402909D9E16D8C -:10B0B00009680162E06D001DE065B4F86200001FE0 -:10B0C0001AE0B4F8621001290CD9E16B51B1E06DBE -:10B0D0000188ABF80010E06D801CE065B4F86200F8 -:10B0E000801E09E0E16D097880F82010E06D401CB9 -:10B0F000E065B4F86200401EA4F862000BE0FCF7C3 -:10B1000049FB811B494503D3B9F1FF3F03D022E03E -:10B11000B9F1000F1FD0B4F862000028BCD10022A2 -:10B120004B4608212046009602F0E6FF28B1D4F8ED -:10B13000840040F02000C4F88400204602F038FF6C -:10B1400084F88180D4F8840084F8805000283FF48B -:10B150003BAF012038E7204602F02AFFD4F88410E4 -:10B1600084F8805041F48071C4F8841084F88180A0 -:10B17000032029E710B502F0B5FF022808D00549E1 -:10B1800001EB40100068002802D0BDE810400047E5 -:10B1900010BD0000809B002070B5044602F0A2FFA5 -:10B1A000022811D0204602F09DFF084D05EB40100B -:10B1B0008068002808D0204602F094FF05EB40107C -:10B1C0008068BDE87040004770BD0000809B002093 -:10B1D000024A136883430B4313607047040400580A -:10B1E0007047704770470000F0B590F83C20012A86 -:10B1F00043D0012280F83C20D1E90242204ECD69A3 -:10B2000022F440722243D1E9004322F480621A43BF -:10B2100022F400622243D1E9043422F480521A431A -:10B220000B6B22F4005222430C8B22F480421A430F -:10B23000036822F4702242EA0442002422F0805281 -:10B24000B34242EA050202D00E4DAB4210D10F8D3F -:10B2500022F4700CD1E90862CD6A4CEA075121F062 -:10B260008071314321F00071114321F000522A43D3 -:10B270005A6480F83C400020F0BD0220F0BD000080 -:10B280000000014000040140F0B590F83C20012A84 -:10B2900041D0224E012480F83C40022280F83D201B -:10B2A00002681F4D5368B242D2F808C001D0AA42CA -:10B2B00003D14F6823F470033B430F6823F07003FE -:10B2C0001F4357600268B24219D0B2F1804F16D0C6 -:10B2D000144B9A4213D0144B9A4210D0134B9A42FB -:10B2E0000DD0AA420BD0124B9A4208D0114B9A4271 -:10B2F00005D0114B9A4202D0104B9A4204D1896872 -:10B300002CF0800319439160002180F83D4080F8C3 -:10B310003C100846F0BD0220F0BD000000000140D6 -:10B32000000401400004004000080040000C004000 -:10B33000001800400040014000E0004000E40040F0 -:10B3400010B5040003D094F83D0010B107E00120CF -:10B3500010BD002084F83C00204600F022F80220B6 -:10B3600084F83D002068211D02F0CAFF012084F806 -:10B37000480084F83E0084F83F0084F8400084F8D8 -:10B38000410084F8420084F8430084F8440084F8C3 -:10B39000450084F8460084F8470084F83D0000200A -:10B3A00010BD704790F83D10012901D00120704771 -:10B3B0001A4A022180F83D100168CB6843F001036E -:10B3C000CB60006890421AD0B0F1804F17D014497A -:10B3D000884214D01349884211D0134988420ED0B4 -:10B3E000124988420BD01249884208D0114988423C -:10B3F00005D01149884202D01049884207D181689E -:10B400000F4A1140062906D0B1F5803F03D00168EC -:10B4100041F0010101600020704700000000014080 -:10B420000004004000080040000C004000040140FF -:10B43000001800400040014000E0004000E40040EF -:10B440000700010070472DE9F0410446006800271D -:10B45000C6680569A90713D5B10711D5FA1E02619F -:10B4600001212177206880698007204602D0FFF7FC -:10B47000E9FF04E000F0F8F8204600F0EDF9277746 -:10B48000680716D5700714D5226802206FF00401F2 -:10B49000116120772068806910F4407F204602D037 -:10B4A000FFF7D0FF04E000F0DFF8204600F0D4F909 -:10B4B0002777280715D5300713D5226804206FF0A9 -:10B4C0000801116120772068C0698007204602D0FA -:10B4D000FFF7B8FF04E000F0C7F8204600F0BCF921 -:10B4E0002777E80616D5F00614D5226808206FF0F5 -:10B4F0001001116120772068C06910F4407F204658 -:10B5000002D0FFF79FFF04E000F0AEF8204600F005 -:10B51000A3F92777E80708D0F00706D021686FF075 -:10B5200001000861204600F083FA280601D4A8042F -:10B5300008D5300606D521686FF402500861204610 -:10B54000FFF74FFEE80508D5300606D521686FF4F1 -:10B55000807008612046FFF743FE680608D5700634 -:10B5600006D521686FF040000861204600F06AFAB5 -:10B57000A8060AD5B00608D521686FF0200008613A -:10B580002046BDE8F041FFF72DBEBDE8F081000088 -:10B5900030B587B0044614216846F5F77EF9246873 -:10B5A00000222B4D022329490120AC4211D10C6805 -:10B5B00044F010040C60096801F0100105914FF48B -:10B5C00008510091CDE90132CDE9032021486946B7 -:10B5D00025E0B4F1804F12D01F4D2048AC4222D15B -:10B5E0000C6844F002040C600968009301F0020149 -:10B5F000CDE901320392CDE9043169460FE00C68D0 -:10B6000044F001040C60096801F001010591052175 -:10B610000091CDE90132CDE9032011486946FBF7DD -:10B62000A1FF07B030BD0F4DAC42FAD10C6844F019 -:10B6300002040C60096801F002010591E913009110 -:10B64000CDE90132CDE903236946E8E7E044025839 -:10B65000000001400010025800040040000402589D -:10B660000000025800180040704770B5044690F87A -:10B670003C0000260D4601280BD0012084F83C0038 -:10B680000C2A4AD007DC82B1042A20D0082A06D12D -:10B6900031E0022070BD102A53D0142A63D0012655 -:10B6A000002084F83C00304670BD206802F0A6FE01 -:10B6B0002068816941F0080181612068816921F079 -:10B6C0000401816120682A698169114311E02068C1 -:10B6D00002F0E6FE2068816941F400618161206822 -:10B6E000816921F48061816120682969826942EA67 -:10B6F00001218161D4E7206802F01EFF2068C16942 -:10B7000041F00801C1612068C16921F00401C161F3 -:10B7100020682A69C169114311E0206802F058FFCE -:10B720002068C16941F40061C1612068C16921F4E8 -:10B730008061C16120682969C26942EA0121C16151 -:10B74000AEE7206802F080FF2068416D41F00801FB -:10B7500041652068416D21F00401416520682A6936 -:10B76000416D114311E0206802F0A8FF2068416D8F -:10B7700041F4006141652068416D21F480614165BB -:10B7800020682969426D42EA0121416588E710B5C8 -:10B79000040003D094F83D0010B107E0012010BD73 -:10B7A000002084F83C00204600F022F8022084F8B3 -:10B7B0003D002068211D02F0A3FD012084F848000F -:10B7C00084F83E0084F83F0084F8400084F841008B -:10B7D00084F8420084F8430084F8440084F845006B -:10B7E00084F8460084F8470084F83D00002010BD2E -:10B7F00008B501681348814201D113480FE013488E -:10B80000B1F1804F0BD0124A914210D1016841F042 -:10B8100002010160006800F00200009008BD0168AC -:10B8200041F001010160006800F00100F5E7094AFC -:10B830009142F3D1016841F040010160006800F0DD -:10B840004000EAE700000140F0440258E844025892 -:10B8500000040040001800407047000030B5044666 -:10B860004FF0020269B1042912D0082917D00C291F -:10B870001CD0102921D094F84300012824D00120A5 -:10B8800030BD94F83E000128F9D184F83E201DE037 -:10B8900094F83F000128F2D184F83F2016E094F894 -:10B8A00040000128EBD184F840200FE094F84100DB -:10B8B0000128E4D184F8412008E094F842000128EE -:10B8C000DDD184F8422001E084F843200122206881 -:10B8D00002F086FD1E4920681E4A1F4B884209D08F -:10B8E000904207D0984205D01C4DA84202D01C4D72 -:10B8F000A84203D1456C45F4004545642068884260 -:10B9000018D0B0F1804F15D01649884212D0164990 -:10B9100088420FD0154988420CD090420AD0144971 -:10B92000884207D0984205D01249884202D0124975 -:10B93000884207D18168114A1140062906D0B1F525 -:10B94000803F03D0016841F001010160002030BD5B -:10B95000000001400004014000400140004401405B -:10B96000004801400004004000080040000C004076 -:10B970000018004000E0004000E400400700010023 -:10B9800030B50022044600680D4602F029FD41F260 -:10B990001111224B20688A1098420BD0204B9842FC -:10B9A00008D0204B984205D01F4B984202D01F4B25 -:10B9B000984209D1036A0B4206D1036A134203D1AC -:10B9C000436C23F4004343642068036A0B4206D1AE -:10B9D000016A114203D1016821F0010101604FF0B9 -:10B9E00001005DB1042D0CD0082D0DD00C2D0ED012 -:10B9F000102D0FD084F84300002030BD84F83E00A5 -:10BA0000FAE784F83F00F7E784F84000F4E784F8A9 -:10BA10004100F1E784F84200EEE700000000014039 -:10BA20000004014000400140004401400048014042 -:10BA300000680349884201D1FBF7B2BE704700009D -:10BA400000E00040704730B590F88410012918D00C -:10BA5000012280F884202421C0F8881000222024AC -:10BA600001680B680D6823F0005325F001050D6097 -:10BA7000426601680B60C0F8884080F88420104658 -:10BA800030BD022030BD7047704770B5044690F855 -:10BA9000840001281DD0012284F884202420C4F8C9 -:10BAA000880020680568026822F0010202602068B0 -:10BAB000826822F060620A438260204603F026F921 -:10BAC0002268202100201560C4F8881084F88400C2 -:10BAD00070BD022070BD70B5044690F88400012846 -:10BAE0001DD0012284F884202420C4F88800206816 -:10BAF0000568026822F0010202602068826822F074 -:10BB000060420A438260204603F000F92268202147 -:10BB100000201560C4F8881084F8840070BD0220ED -:10BB200070BD70477047000010B503F08DFA06280D -:10BB30000AD000EBC001054800EB81000069002835 -:10BB400002D0BDE81040004710BD00008C9A0020D4 -:10BB50002DE9F04107680025044640F60F03022650 -:10BB6000F8693968BA6818420AD183067ED501F0AF -:10BB7000200302F0805C53EA0C0377D0616F7EE112 -:10BB8000D44BDFF854C3134001EA0C0C53EA0C0CFD -:10BB90006CD05FEAC07C0CD05FEAC15C09D54FF085 -:10BBA000010CC7F820C0D4F8907047F00107C4F822 -:10BBB0009070870709D5D70707D027683E62D4F869 -:10BBC000906046F00406C4F8906046070AD5D60790 -:10BBD00008D0276804263E62D4F8906046F002063A -:10BBE000C4F8906006070CD501F020061E4308D06B -:10BBF000266808233362D4F8903043F00803C4F871 -:10BC0000903003050BD54B0109D526684FF400632E -:10BC10003362D4F8903043F02003C4F89030D4F865 -:10BC20009030002B3DD0800609D501F0200002F0B5 -:10BC30008051084303D0616F09B1204688472168CD -:10BC4000D4F890008968490602D410F0280F2AD051 -:10BC5000204603F0B7F92068806840061ED52068AA -:10BC6000083050E8001F21F0400100E021E040E8EA -:10BC70000012002AF3D1D4F8800078B19749016509 -:10BC8000D4F88000FAF7ACF800280AD0D4F8800085 -:10BC9000016D00E02046BDE8F04108472046FFF76F -:10BCA00043FFBDE8F0812046FFF73EFFC4F8905007 -:10BCB000F7E7D4F86CC02023BCF1010F7ED15FEA16 -:10BCC000C06C7BD55FEAC16C78D5102038622068E3 -:10BCD0008068400673D5D4F8802081491068884276 -:10BCE00034D07F491831884230D07D493031884284 -:10BCF0002CD07B494831884228D07949603188422C -:10BD000024D077497831884220D0754990318842D3 -:10BD10001CD07349A831884218D07249884215D086 -:10BD200070491831884211D06E49303188420DD0A7 -:10BD30006C494831884209D06A496031884205D04F -:10BD400068497831884201D06649903140684FF4A3 -:10BD500080770004000C40D0B4F85C1081423CD9DC -:10BD6000A4F85E00D069B8422FD0216851E8000FD6 -:10BD700020F4807041E80002002AF6D120680830E3 -:10BD800050E8001F21F0010140E80012002AF5D11F -:10BD90002068083050E8001F21F0400140E8001200 -:10BDA000002AF5D1C4F88C30E566206850E8001F01 -:10BDB00021F0100140E80012002A01E04AE019E0F9 -:10BDC000F3D1D4F88000F9F75BFE2667B4F85C0085 -:10BDD000B4F85E10401A81B208E0B4F85C108142F9 -:10BDE0007FF466AFD069B842FAD126672046FFF7E4 -:10BDF0004AFE56E7B4F85C00B4F85E10B4F85E2072 -:10BE0000401A81B2002AF4D00029F2D0226852E808 -:10BE1000000F20F4907042E80007002FF6D1324F57 -:10BE2000206800F1080050E8002F02EA070240E80D -:10BE3000002CBCF1000FF3D1C4F88C30E5666567C7 -:10BE4000226852E8000F20F0100042E80003002BA7 -:10BE5000F6D1CAE7C60209D5560207D54FF48010BD -:10BE600038622046BDE8F041FFF75CBE06060AD501 -:10BE700001F0800602F40002164304D0A16F0029ED -:10BE80007FF408AF0DE7420611D54A060FD52046CC -:10BE9000016851E8002F22F0400241E80024002C04 -:10BEA000F6D1C0F88830856700F00EFCF9E6020292 -:10BEB00006D54A0004D52046BDE8F041FFF731BE63 -:10BEC000C00196D5002994DA2046BDE8F041FFF77D -:10BED000DBBD00000100001020010004C3EE0008DB -:10BEE0001000024010040240FEFFFFEF10B50400F6 -:10BEF00003D0D4F8880010B107E0012010BD002065 -:10BF000084F88400204600F027F82420C4F8880034 -:10BF10002068016821F001010160A06A10B120468B -:10BF200002F016FF204603F0B5F80128E6D020689D -:10BF3000416821F4904141602068816821F02A0124 -:10BF400081602068016841F0010101602046BDE880 -:10BF5000104002F061BF00002DE9F04FB5B004467B -:10BF600014212EA8F4F799FCB8216846F4F795FC43 -:10BF7000FA4D0226FA494FF000082068083DDFF824 -:10BF8000DC93770288425DD1002168460222CDF819 -:10BF90007480CDE90021FDF7CFF808B1F8F77EFDF8 -:10BFA000D9F8001041F48011C9F80010D9F8000048 -:10BFB00000F480103390286840F00400286028685E -:10BFC00000F004003390286840F0080028602868DA -:10BFD0000825B146464669022E9100F00800CDE9D9 -:10BFE0002F982EA9CDF8C480CDE93250DD48FBF75B -:10BFF000B9FA04212E91CDE92F96DB482EA9CDE97F -:10C000003165FBF7AFFAD94D4121D94828604FF48B -:10C010004030C5E90116C5E903676E61AE61C5E947 -:10C02000076028466E62FAF793FB08B1F8F736FD11 -:10C03000C4F8805000220521AC633520FBF758FC82 -:10C0400035206CE0CB494FF0070A4FF0400B884297 -:10C050006AD1002168460222CDF87480CDE9002122 -:10C06000FDF76AF808B1F8F719FDD9F8001041F0AA -:10C070008041C9F80010D9F8000000F080403390EA -:10C08000286840F01000286028684FF4C0712E9195 -:10C090002EA900F010004546CDE92F68CDF8C480E8 -:10C0A000CDE932A0B448FBF75DFADFF8C0824F2338 -:10C0B000B24A4FF4803908F17808404688E82C00ED -:10C0C000C0E90357C8F81450C8F81850C8E9075910 -:10C0D000C8F82450FAF73CFB08B1F8F7DFFCA34E90 -:10C0E0005022C4F88080F036C8F83840A349304662 -:10C0F000C6E9035775611831B561C6E9075975621C -:10C1000086E80608FAF724FB08B1F8F7C7FCE667EB -:10C1100000220521B4635220FBF7EAFB5220FBF713 -:10C12000DAFB35B0BDE8F08F9549884230D1002068 -:10C13000CDF878800121CDE900106846FCF7FCFFBE -:10C1400008B1F8F7ABFC85480830016841F01001F0 -:10C150000160006800F010003390286840F0010092 -:10C16000286028682EAA4FF4C06100F0010082E820 -:10C170004201CDE932A083482EA9CDF8C480FBF757 -:10C18000F1F9002205212520FBF7B2FB2520C6E7A7 -:10C190007D49884266D1002168460222CDF874802C -:10C1A000CDE90021FCF7C8FF08B1F8F777FCD9F812 -:10C1B000001041F40031C9F80010D9F8000000F473 -:10C1C00000303390286840F008002860286870210B -:10C1D0002E912EA900F008004546CDE92F68CDF834 -:10C1E000C480CDE932A06048FBF7BCF9674E2B2232 -:10C1F0005F494FF400383046783186E82600C6E9BA -:10C2000003577561B561C6E907587562FAF7A0FA78 -:10C2100008B1F8F743FCDFF874912C23C4F8806070 -:10C2200009F17809B4634846514A9032C0E903578E -:10C23000C9F81450C9F8185089E80C08C9E907581A -:10C24000C9F82450FAF784FA08B1F8F727FCC4F8C3 -:10C250007C9000220521C9F838402620FBF748FBD6 -:10C2600026205CE74A49884276D1002168460222AE -:10C27000CDF87480CDE90021FCF75EFF08B1F8F736 -:10C280000DFCD9F8001041F48021C9F80010D9F84C -:10C29000000000F480203390286840F002002860FD -:10C2A000286800F002003390286840F008002860F9 -:10C2B00028684FF480412E912EA900F008004546D1 -:10C2C000CDE92F68CDF8C480CDE932A03148FBF725 -:10C2D00049F94FF440712E91CDE92F6522482EA9DE -:10C2E000CDE9315AFBF73EF9284E2D2220494FF473 -:10C2F0000039F0364831304686E82600C6E9035753 -:10C300007561B561C6E907597562FAF721FA08B196 -:10C31000F8F7C4FB204D2E23C4F88060B463284690 -:10C32000134AC5E90387C5F814806032C5F8188040 -:10C33000C5E90789C5F8248085E80C08FAF708FAEA -:10C3400008B1F8F7ABFBE56700220521AC632720B5 -:10C35000FBF7CEFA2720E2E620E00000E84402588E -:10C360000050004000080258000C0258540D0020F4 -:10C3700028000240007800400010025828040240C3 -:10C38000001001400000025800440040BC0E002094 -:10C390000048004000040258241000203949884217 -:10C3A0007FF4BFAE0021CDF8788001226846CDE948 -:10C3B0000021FCF7C1FE08B1F8F770FB32480168B4 -:10C3C00041F080010160006800F08000339028682F -:10C3D00040F010002860286845462EA900F01000A3 -:10C3E000339004202E90CDE92F68DFF8A080CDE9AE -:10C3F00031504046FBF7B6F80B2108202E90CDE9CE -:10C400002F65CDE931512EA94046FBF7ABF8DFF897 -:10C41000809077261F4B4FF440384846C0E90357B9 -:10C42000C9F81450C9F8185089E84808C9E90758EC -:10C43000C9F82450FAF78CF908B1F8F72FFB144E1D -:10C44000762114487836C4F87C904830C9F83840D2 -:10C4500086E82300C6E9035775613046B561C6E931 -:10C4600007587562FAF774F908B1F8F717FBC4F8C2 -:10C47000806000220521B4639C20FBF739FA9C20E0 -:10C480004DE60000001C0140F04402580010025824 -:10C490009C100020100402402DE9F84F0446D0F80B -:10C4A0008C009B4616460D46202802D00220BDE88F -:10C4B000F88FC5B1BEB10027C4F890702220C4F82F -:10C4C0008C00E7662034FBF765F9824654F8180CB7 -:10C4D000A6874FF48053E687FF21203C984207D17E -:10C4E000226912B119E00120E1E740F2FF1114E0E6 -:10C4F0004FF07F0278B1B0F1805F11D0A4F8607086 -:10C500009842B4F860704FF0200801D1206970B1F2 -:10C510002E4600250CE0266936B9A4F86010EFE736 -:10C52000216909B13F21F8E7A4F86020E8E7002677 -:10C5300007F0FF09B4F85E00F0B100225346202155 -:10C540002046CDF800B002F0E7FF18B1C4F88C80A7 -:10C550000320ACE72068406A56B100EA090006F8FB -:10C56000010B00BFB4F85E00401EA4F85E00E1E7D6 -:10C57000384025F8020BF5E7C4F88C80002096E7D8 -:10C5800030B4D0F88C30202B02D0022030BC704761 -:10C59000A9B1A2B10B4D00240368C466AB420BD015 -:10C5A0005B681B0208D5046854E8003F43F08063D1 -:10C5B00044E80035002DF6D130BC02F059BF01200F -:10C5C000E4E70000000C005810B502F03DFD06281D -:10C5D0000AD000EBC001054800EB8100C0680028CC -:10C5E00002D0BDE81040004710BD00008C9A00202A -:10C5F00010B502F029FD06280AD000EBC00105485D -:10C6000000EB81008068002802D0BDE810400047A0 -:10C6100010BD00008C9A00202DE9F8430446D0F8A4 -:10C620008800984616460D46202802D00220BDE814 -:10C63000F883A5B19EB10021C4F890102120C4F860 -:10C6400088001834FBF7A6F8814654F8100CA6872A -:10C65000E6872027183CB0F5805F02D003E0012078 -:10C66000E5E7206910B12E46002510E000260EE017 -:10C670008021204602F050FFC0B9DEB116F8010B50 -:10C6800021688862B4F85600401EA4F85600B4F839 -:10C6900056004B464FF00002CDF800800028E7D14D -:10C6A0004FF04001204602F037FF48B1C4F88870CF -:10C6B0000320BCE735F8020B2168C0F30800E0E76F -:10C6C000C4F888700020B2E710B502F0BDFC06285F -:10C6D0000AD000EBC001054800EB8100406800284B -:10C6E00002D0BDE81040004710BD00008C9A002029 -:10C6F000FEE70000F0B500230A251C463026372748 -:10C7000011E000BFB5EB107F02D906EB107C01E011 -:10C7100007EB107C01F813C001EB430C00015B1C1C -:10C720008CF80140DBB29342ECD3F0BD10EE100A5E -:10C730000C49B6EE001AF7EE080A20EE011AA1EB3A -:10C74000600000EE100AF0EE601A21EE002A42EEC0 -:10C75000401A21EE800A21EE001A41EE400A20EE36 -:10C76000800A7047DF59375F70B51C4615462DEDBE -:10C77000088B93ED011A93ED000AD0ED010A90EDBC -:10C7800000BAB4EE410AF1EE10FAB1EE608A01D0BF -:10C79000B0EE608AD1ED00AAD0ED028A91ED011AC7 -:10C7A0002AEE809A2BEE0B0AD1ED020AB1EE41AAD5 -:10C7B00008EE080AF1EE609A08EEA80A05F04CFBB4 -:10C7C00020EE000A0AEEEA0A05F046FBF0EE40AA67 -:10C7D0004FF0FF30F4EE6AAAF1EE10FA49D1B0EE54 -:10C7E000CA0AF0EEE90A30EE200AB4EEEA0AF1EEE7 -:10C7F00010FA3ED328EE080A08EEA80A09EE490A04 -:10C8000005F02AFB28EE891A68EE090A08EE001ADC -:10C8100048EEC00AB0EE410A04F0D6FFB0EE409AEE -:10C82000B0EE6A1AF0EE690AB0EE4A0A06F0ACFD04 -:10C83000F0EE40AAB0EE693AF0EE4A2AB0EE682A6D -:10C84000F0EE481AB0EE4B1AF0EE6A0AB0EE490A62 -:10C8500006F064FD85ED009AD4ED010A002020EE7B -:10C86000800A85ED010A94ED020A20EE2A0A85ED80 -:10C87000020ABDEC088B70BD91ED021A71EE600AE0 -:10C8800080EE801A80ED021AD1ED000A60EE800A77 -:10C89000C0ED000AD1ED010A80EE801A80ED011A88 -:10C8A0000020704790ED021A41EE000AC1ED020A25 -:10C8B000D0ED000A80EE801A81ED001AD0ED010A59 -:10C8C00020EE800A81ED010A90ED030A81ED030A52 -:10C8D00090ED040A002081ED040A704700EB81000E -:10C8E000006E00F0F84070478068C0F3C0007047E9 -:10C8F0008068C0F3800070478068C0F38000704794 -:10C9000000EB8101034B51F8600F20F00040104311 -:10C910000860704700600258D0ED002A32EEC03A3D -:10C92000B0EEC33AB4EEE03AF1EE10FA02DC90ED6C -:10C93000000A0BE0F4EEC02AF1EE10FA02DD30EE50 -:10C94000200A01E030EE600A80ED000AB4EEC10A70 -:10C95000F1EE10FA02DD80ED001A06E0B4EEE10A15 -:10C96000F1EE10FA01D2C0ED001A91ED000AF0EEDE -:10C97000C00AF4EEC20AF1EE10FA0BDDB5EEC00A01 -:10C98000F1EE10FA02DD81ED002A03E0B1EE420A79 -:10C9900081ED000A0020704738B390ED061AD0ED03 -:10C9A000012AF0EE400AD0ED071A41EE620A90ED3E -:10C9B000022A4FF07F4241EEC20A10EE901AB2EB0B -:10C9C000410F01D1F0EE400A90ED040AD0ED032AA8 -:10C9D00090ED052A21EE000A80ED071AC0ED060A47 -:10C9E00000EEA20A01EE820A70479FED010A70472D -:10C9F0000000000010B504002DED068B18D0F5EEF8 -:10CA0000C00A9FED2C1AC4ED000AF1EE10FA84ED75 -:10CA1000061AF7EE008A84ED071A0CD8C4ED038AD3 -:10CA200084ED041A84ED051A84ED011A80ED021AD2 -:10CA3000BDEC068B10BD80EE201ADFED1F0A80EEE4 -:10CA4000810A05F027FA9FED1DAAB0EE408AB0EEEC -:10CA50004A0A05F013F8F0EE009AB0EE689A20EE5C -:10CA6000291AB0EE680A68EE080A18EE080A01EE04 -:10CA7000089A20EE291A08EE089A80EE890AC1EE7B -:10CA8000090A84ED030A20EE291A84ED050AB0EEA6 -:10CA90004A0AC4ED010A84ED041A04F0EFFF20EE07 -:10CAA000290A40EE488A48EE088A88EE890A84ED11 -:10CAB000020ABDE700000000DB0F4940DB0F493FE1 -:10CAC000B8B190ED031AD0ED041AD0ED050A31EE9D -:10CAD000211A31EE201AC0EE010A10EE901A6FEA08 -:10CAE000D15111F0FF0F07D0C0ED060AC0ED070AC3 -:10CAF00006E09FED040A704780ED060A80ED070A04 -:10CB0000FFF74ABF0000000030B58DB00024684632 -:10CB1000242109940A940B94F3F7BFFE24480425BA -:10CB2000224B4FF41012012103600223C0E90124BB -:10CB3000C0E90415047603224176C36180F82040E1 -:10CB40008462C0E90B42C463046480F84440816499 -:10CB5000F8F7C8FD08B1F7F7A1FF154809A909942E -:10CB6000F8F712FA08B1F7F799FF1248062140F2D8 -:10CB7000FF7203928DE823000D486946CDE9045405 -:10CB80008DF82140F8F794FA08B1F7F787FF0C21E8 -:10CB90000948CDE9000106486946F8F789FA0028F6 -:10CBA00001D0F7F77BFF0DB030BD00000020024040 -:10CBB000880300201000C0100000B84F394808B5A5 -:10CBC000016841F001010160016801F0010100917B -:10CBD000016841F00201016000680022052100F0B7 -:10CBE000020000900B20FAF783FE0B20FAF773FE89 -:10CBF000002205210C20FAF77BFE0C20FAF76BFED1 -:10CC0000002205210D20FAF773FE0D20FAF763FECE -:10CC1000002205210E20FAF76BFE0E20FAF75BFECC -:10CC2000002205210F20FAF763FE0F20FAF753FECA -:10CC3000002205211020FAF75BFE1020FAF74BFEC8 -:10CC4000002205211120FAF753FE1120FAF743FEC6 -:10CC5000002205212F20FAF74BFE2F20FAF73BFE8A -:10CC6000002205213820FAF743FE3820FAF733FE78 -:10CC7000002205213920FAF73BFE3920FAF72BFE76 -:10CC8000002205213A20FAF733FE3A20FAF723FE74 -:10CC9000002205213B20FAF72BFEBDE808403B208F -:10CCA000FAF719BED84402581748002170B5154D3F -:10CCB00001228160182605600225C16020240174CC -:10CCC0000423417481744661C0E906250262426210 -:10CCD0008262C262C0E90C210464C0E90E21C0E98D -:10CCE0001131C0E91331C0E91531C0E91714C0E9A9 -:10CCF0001913FAF7FFF9002803D0BDE87040F7F7E1 -:10CD0000CDBE70BD00A00040700400201848002176 -:10CD100070B5164D01220560182581602024C16080 -:10CD20000423017441748174C0E90552C26140F268 -:10CD30000645026242628262C262C0E90C25046456 -:10CD4000C0E90E21C0E91131C0E91331C0E9153144 -:10CD5000C0E91714C0E91913FAF7CCF9002803D079 -:10CD6000BDE87040F7F79ABE70BD000000A4004017 -:10CD7000100500201848002170B5164D01220560ED -:10CD8000182581602024C1600423017441748174DA -:10CD9000C0E90552C26140F6120502624262826237 -:10CDA000C262C0E90C250464C0E90E21C0E911315A -:10CDB000C0E91331C0E91531C0E91714C0E91913EE -:10CDC000FAF798F9002803D0BDE87040F7F766BE7F -:10CDD00070BD000000D40040B0050020074A0021CB -:10CDE000074810B505F0D0FD0649074A0860002144 -:10CDF000BDE81040054805F0C7BD000030490108F6 -:10CE000049E1000800000020504B010831E700080C -:10CE10002DE9F04F87B014216846F3F73EFD5E48D8 -:10CE2000016841F010010160016801F010010591F5 -:10CE3000016841F004010160016801F004010591FD -:10CE4000016841F080010160016801F080010591F5 -:10CE5000016841F001010160016801F001010591E3 -:10CE6000016841F002010160016801F002010591D1 -:10CE7000016841F00801016000684FF46044DFF888 -:10CE80001C81002200F00800214605904046FAF778 -:10CE90007CFC012240462921FAF777FC4FF400463A -:10CEA0003F4800223146FAF770FC4FF440693D4894 -:10CEB00000224946FAF769FC4FF4805A39480122AA -:10CEC0005146FAF762FC4FF4806B3748002259460E -:10CED000FAF75BFC012569464046CDE90045002490 -:10CEE00002940394FAF73EFB032769462920CDE913 -:10CEF0000005CDE902474046FAF734FB4FF48818A5 -:10CF000069464FF4A0500294CDE900082448FAF78E -:10CF100029FB00966946CDE9015421480394FAF7AC -:10CF200021FBCDF800906946CDE901541D480394DA -:10CF3000FAF718FB1B486946CDE900A5CDE9025771 -:10CF4000FAF710FBCDF800B06946CDE90154164858 -:10CF50000394FAF707FB2802144D02218DE8130011 -:10CF60006946284603940494FAF7FCFA0096694649 -:10CF7000CDE901842846FAF7F5FA0021A802FEF768 -:10CF800027F9002205212820FAF7B2FC2820FAF719 -:10CF9000A2FC07B0BDE8F08FE04402580008025838 -:10CFA0000010025800040258000C025800000258F9 -:10CFB00070B586B018216846F3F76FFC1848082250 -:10CFC000164D0021012417238160D606E0E80352A4 -:10CFD000032580E81A0000F11403C0E9031483E874 -:10CFE00062000162C0E90912C16201630C48FAF7EC -:10CFF000C1FE08B1F7F752FD4FF0011041F288323F -:10D0000069460094CDE902400548FAF7A3FC0028E0 -:10D0100001D0F7F743FD06B070BD000000A000523C -:10D02000500600202DE9F0414FF480051448134AC2 -:10D0300007276E114FF0007C2C0180E8E4100021DE -:10D04000A300C0E90514C0E9073141629A0081627A -:10D05000C162C0E90D21C163016441648164C1649E -:10D06000016541658165FDF795FB002803D0BDE8AA -:10D07000F041F7F713BDBDE8F0810000003001403A -:10D08000AC0600202DE9F04117484FF48007DFF887 -:10D0900054C00021FA000726C0F800C01301C0E9FF -:10D0A0000362C0E90171C0E90731416255105400C3 -:10D0B00081625201C162C0E90D21C1630164416412 -:10D0C0008164C164016541658165C0E90554FDF76E -:10D0D00061FB002803D0BDE8F041F7F7DFBCBDE8F5 -:10D0E000F0810000003800403407002010B58AB0FD -:10D0F000002468461C21079408940994F3F7CDFB9B -:10D10000164840F2CF711722134BC0E90241046167 -:10D110008461C0E90032FEF73AFB08B1F7F7BEFCC4 -:10D120000E4807A907940994FEF7AEF808B1F7F77F -:10D13000B5FC60206946CDE9000408480422029449 -:10D140000494FEF792FA08B1F7F7A8FC0348FEF73B -:10D150001FFA0AB010BD000000180040900900201E -:10D1600010B598B000241C210DA8149415941694A1 -:10D17000F3F793FB34216846F3F78FFB2748182217 -:10D18000254942F2107380E81600C0E90334446177 -:10D190008461FEF7FCFA08B1F7F780FC1F4814A978 -:10D1A000149415941694FEF76FF808B1F7F776FC0F -:10D1B0000DAA41F28831602082E81300174800224E -:10D1C0000DA91094119412941394FEF74EFA08B11D -:10D1D000F7F764FC114808220DA9FEF746FA08B1DA -:10D1E000F7F75CFC4FF400500094039401030194A2 -:10D1F000CDE904400294CDE9084108486946069407 -:10D200000A940C94FDF7F0FF08B1F7F747FC0348C8 -:10D21000FEF7BEF918B010BD00000140AC080020B8 -:10D2200010B58AB0002468461C210794089409941C -:10D23000F3F733FB1A4842F2107118224FF0804383 -:10D24000C0E9024104618461C0E90032FEF79FFA3F -:10D2500008B1F7F723FC124807A907940994FEF7D1 -:10D2600013F808B1F7F71AFC602041F288318DE815 -:10D2700013000B48002269460494FEF7F6F908B142 -:10D28000F7F70CFC064808226946FEF7EEF908B1EC -:10D29000F7F704FC0248FEF77BF90AB010BD000066 -:10D2A000F808002030B58BB0002468461C21079494 -:10D2B00008940994F3F7F1FA164842F20F72172313 -:10D2C000134D8021C0E9024204618161C0E900532D -:10D2D000FEF75DFA08B1F7F7E1FB0E4807A90794DE -:10D2E0000994FDF7D1FF08B1F7F7D8FB6020694634 -:10D2F000CDE9000407480C2202940494FEF7B5F926 -:10D3000008B1F7F7CBFB0348FEF742F90BB030BD8D -:10D31000000400404409002070B518480021164C54 -:10D32000042300F10C0C164D22158CE80E008161CF -:10D33000A614C16101624162816280E87000FEF75B -:10D34000D5FD08B1F7F7AAFB0C480021FEF7C3FB97 -:10D3500008B1F7F7A3FB09480021FEF796FB08B1D7 -:10D36000F7F79CFB0548FEF76EFB002803D0BDE8ED -:10D370007040F7F793BB70BD00500040DC090020FF -:10D38000A08601001848002110B5164C0C224FF45D -:10D3900061230460C0E90131C160C0E90412816108 -:10D3A000C161016241628162FEF7A0FD08B1F7F739 -:10D3B00075FB0D480021FEF78EFB08B1F7F76EFBF9 -:10D3C00009480021FEF761FB08B1F7F767FB064843 -:10D3D000FEF739FB002803D0BDE81040F7F75EBB2D -:10D3E00010BD000000780040700A0020184800219D -:10D3F00010B5164C0C224FF461230460C0E90131D2 -:10D40000C160C0E904128161C1610162416281624F -:10D41000FEF76CFD08B1F7F741FB0D480021FEF760 -:10D420005AFB08B1F7F73AFB09480021FEF72DFB3C -:10D4300008B1F7F733FB0648FEF705FB002803D0D9 -:10D44000BDE81040F7F72ABB10BD0000001C0140EA -:10D45000C00C00201848002110B5164C0C224FF4C7 -:10D4600061230460C0E90131C160C0E90412816137 -:10D47000C161016241628162FEF738FD08B1F7F7D0 -:10D480000DFB0D480021FEF726FB08B1F7F706FB60 -:10D4900009480021FEF7F9FA08B1F7F7FFFA064844 -:10D4A000FEF7D1FA002803D0BDE81040F7F7F6BA2E -:10D4B00010BD000000100140040B0020184800219E -:10D4C00010B5164C0C22174B0460C0E90131C16045 -:10D4D0000B46C0E9041281610A46C16101624162E2 -:10D4E0008162FCF7E3FF08B1F7F7D8FA0C48002196 -:10D4F000FEF7F1FA08B1F7F7D1FA09480021FEF773 -:10D50000C4FA08B1F7F7CAFA0548FEF79CFA0028F2 -:10D5100003D0BDE81040F7F7C1BA10BD0044004089 -:10D52000980B002000093D001848002110B5164C4A -:10D530000C22174B0460C0E90131C1600B46C0E901 -:10D54000041281610A46C161016241628162FCF795 -:10D55000ADFF08B1F7F7A2FA0C480021FEF7BBFABD -:10D5600008B1F7F79BFA09480021FEF78EFA08B1D7 -:10D57000F7F794FA0548FEF766FA002803D0BDE8ED -:10D580001040F7F78BBA10BD004800402C0C00206B -:10D5900000093D0010490122104810B502F042FC7C -:10D5A00008B1F7F77BFA0E490C4802F05AFE08B1B1 -:10D5B000F7F774FA0B49094802F0DAF908B1F7F7FE -:10D5C0006DFA064802F0D2FE08B1F7F767FABDE837 -:10D5D0001040FBF761BA000008000020D8110020BD -:10D5E000E800002068000020FEE770B505000C464A -:10D5F00031D0002C2FD020781022287204F11F0186 -:10D6000060786872A078A872E078E8722079287350 -:10D61000B4F805002882D4F807006861D4F80B003C -:10D62000A861D4F80F00E861D4F81300A862D4F818 -:10D6300017006862D4F81B00286205F12C00F3F78C -:10D640008BF8D4F82F002864D4F83300686494F879 -:10D65000370085F8480070BD00F07AB810B520B1E9 -:10D660007821F3F71AF9002010BD6FF0010010BD0A -:10D6700010B50D4C207810B16FF0020010BD05F010 -:10D6800081F9A06068B10321084A0846F5F732FE27 -:10D69000074A04210320F5F72DFE01202070002009 -:10D6A00010BD6FF0010010BDD401002079D7000833 -:10D6B00059D6000870B504000D4604D02248017800 -:10D6C000FC2907D102E06FF0010070BD90F837002F -:10D6D000FD2806D01D484168491C41604FF0FF30CD -:10D6E00070BD19492046FFF780FF04F1200004F1C6 -:10D6F0005C0304F1680607C883E8070004F114001E -:10D700000C3B07C883E8070004F12C000FC886E82B -:10D710000F0094ED190AD5ED000A002030EE200A22 -:10D7200084ED190A94ED180AD5ED010A30EE200AAD -:10D7300084ED180AD5ED020A94ED170A30EE200A9E -:10D7400084ED170A70BD000025000024D4010020DC -:10D75000032010B5F5F78EFD0068016821F0010186 -:10D7600001600320F5F786FD0068016841F00101C2 -:10D770000160002010BD000002481021806805F003 -:10D780007BB80000D4010020032010B5F5F772FD2E -:10D7900004493822FEF7F4FE002801D04FF0FF3094 -:10D7A00010BD000025000024C8220121102010B562 -:10D7B00005F09CF8102801D0002010BD012010BDFC -:10D7C000FEE70000F0B503004FF0000004460BD068 -:10D7D000022B09D841B100220A604A60022B8A60FC -:10D7E000CA600A6102D007E00120F0BD294A126830 -:10D7F000D20734D04FF40074274D002205EB82038A -:10D80000D3F80434DE0707D003F0020604F0020761 -:10D81000BE4201D1561C0E60DE0607D503F020067D -:10D8200004F02007BE4201D1561C4E60DE0507D52C -:10D8300003F4007604F40077BE4201D1561C8E60DA -:10D84000DE0311D503F4802604F48027BE420BD1F9 -:10D850009E0302F1010604D446F4803603E00F4C27 -:10D86000CAE746F08076CE60DE010FD503F0806611 -:10D8700004F08067BE4209D19B0102F1010302D48A -:10D8800043F4803301E043F080730B61521C022AA1 -:10D89000B4D3F0BD00B4005200B000522202040420 -:10D8A0002DE9F041984616460F460446069D08E0CD -:10D8B000681C06D0F9F76EFFA0EB0800A8420AD852 -:10D8C0004DB12068006A384000D00120B042EFD14D -:10D8D0000020BDE8F0814FF400702065606D40F0DD -:10D8E000010060650120F4E70148FAF7CFBC0000B1 -:10D8F000D42800202DE9F041044680790D462027E8 -:10D90000236801284FF4004604F29C4203EB4511C2 -:10D91000D3F840C0D1F8080B09D0DFF89CE0F445FB -:10D920003AD1020433D500BFC1F8086B40E0234B65 -:10D930005FEA007E04D59C453AD90004F4D437E070 -:10D940005FEA806E02D5C1F8087B31E010F0280F45 -:10D950002ED19C4501D90004E6D4D1F8101B05EB6B -:10D96000C50004EB8000C1F31201D0F87432A3EBC0 -:10D970000101C0F8681200F51570ADB903691BB15B -:10D98000C2681144C1600FE0206801210AE08006EE -:10D990000AD5C1F8087B07E035B9D4F8640218B994 -:10D9A0000021184603F062F82046E9B2FAF757FB67 -:10D9B0000020BDE8F08100000A31544F0A30544F76 -:10D9C0002DE9F84F0E460568814601EBC60100EBD4 -:10D9D0008104D4E909201434904202D90120BDE821 -:10D9E000F88FA168101A814200D20846C01C05EBCE -:10D9F000461887081BE000BFA268A0EB010A524549 -:10DA000000D2924699F806100AF1030000911FFA1D -:10DA10008AF3E16887082846F2B203F06BFBE168FD -:10DA200001EB0A00E060616901EB0A006061D8F86F -:10DA3000180980B2B84205D3D4E90401814201D269 -:10DA40000028D9D1D4E90401884208D8D5F834187F -:10DA5000012006F00F0290408143C5F834180020E1 -:10DA6000BDE7000010B504462DED068BF0EE409AA0 -:10DA7000F0EE618AB0EE418AB0EE609A19EE900A3B -:10DA800003F078FB002850D019EE100A03F072FB67 -:10DA900000284AD0B0EE480A10EE100A03F06AFBE4 -:10DAA000002842D018EE900A03F064FBE8B36068E7 -:10DAB000F0EE490AB0EE690A90ED071AF6F731FC6C -:10DAC0006068F0EE409AD0ED000A04F11C0020EEF0 -:10DAD000891A20EEA99AB0EE410AFEF75DFF207880 -:10DAE000DFED38AAB0EE40AA70B101280ED1D4ED16 -:10DAF000020AB0EE680A04F069F8D4ED050A7AEE7D -:10DB0000600A80EE808A01E0B0EE6A8A18EE100AA0 -:10DB1000C4ED049A84ED05AA6FEAD05010F0FF0F0F -:10DB200001D1B0EE6A8A606800E047E0D4ED030AF4 -:10DB300090ED010AD0ED031A49EE280A20EE090AF9 -:10DB400090ED021A204A11EE101A08EE610A21EE39 -:10DB5000201A91421CDD10EE901A6FEAD15111F09B -:10DB6000FF0F15D070EE011A90ED052AF0EEE11AC4 -:10DB7000F4EEC21AF1EE10FA0AD890ED042AF0EE93 -:10DB8000E01AF4EEC21AF1EE10FA01D8C4ED030A5D -:10DB900030EE010A10EE101A6FEAD15111F0FF0FAA -:10DBA0000CD0D0ED050A10EE900A904201DDF4F79A -:10DBB000C7FF84ED060ABDEC068B10BD94ED060A86 -:10DBC000F9E7000000000000BD37863570B504009D -:10DBD0000D464FF0FF3137D050686FEAD05010F04B -:10DBE000FF0F31D090686FEAD05010F0FF0F2BD0AC -:10DBF000D0686FEAD05010F0FF0F25D010696FEA9F -:10DC0000D05010F0FF0F1FD050696FEAD05010F0C5 -:10DC1000FF0F19D0B7EE001A6260C1EE000A10EED5 -:10DC2000900A6FEAD05010F0FF0F0DD0C4ED020A39 -:10DC3000D2ED060A04F11C00FEF7DCFE204625703A -:10DC400000F004F8002070BD084670BD10B570B13A -:10DC50009FED080A80ED030A80ED040A80ED050AB5 -:10DC600080ED060A1C30FEF72BFF002010BD4FF0A0 -:10DC7000FF3010BD00000000F7EE000AB0EE081AF9 -:10DC800070EEC00A60EE004A10B590ED002A60EE1A -:10DC9000811A20EEA04A24EE801AD1ED003A61EEFE -:10DCA000A04A64EE200A21EE804AD2ED002A64EEFA -:10DCB000801A20EE822A24EE000A93ED003A029C9C -:10DCC00001EEA32A00EE222A01EE032A84ED002AA7 -:10DCD00090ED012AD1ED013A92ED013A20EE822A2F -:10DCE000D3ED012A01EEA32A00EE032A01EE222A37 -:10DCF00084ED012AD0ED023A91ED023AD2ED022AEA -:10DD000060EEA30A93ED022A41EE830A40EE220A56 -:10DD100041EE020AC4ED020A10BD70EEC00A00EE28 -:10DD2000810A704791ED001AD0ED000A31EE601AB9 -:10DD300041EE000AC2ED000A91ED011AD0ED010A90 -:10DD400031EE601A41EE000AC2ED010A91ED021AAD -:10DD5000D0ED020A31EE601A41EE000AC2ED020A6D -:10DD6000704700002DE9F047454D044689464FF0C5 -:10DD7000000A2868C04380070AD0414E283E306818 -:10DD800020F080603060F9F705FD0746B04608E0F6 -:10DD90000120BDE8F08700BFF9F7FCFCC01B02289A -:10DDA00067D8D8F800000001F6D4206829684FF43D -:10DDB000FE0721F47C313E0241EA00302860207ADF -:10DDC000A389B4F804C040022D4D2D495B1E227C6E -:10DDD000ACF1010C1035091DA0F5007080B2521E87 -:10DDE000CCF3080C07EA034340EA0C00184306EAA8 -:10DDF0000262104328600868626920F0C000104386 -:10DE000008600A68A06922F0200202430A60281D07 -:10DE10000A6822F010020A6002684FF6F873E4699B -:10DE20009A4342EAC40202600868B9F1000F40F068 -:10DE300010020A6011D00868B9F1010F11D040F446 -:10DE400000100860D8F80000444640F08060C8F830 -:10DE50000000F9F79FFC05460DE0086840F400203B -:10DE6000EFE740F48010ECE7F9F794FC401B022840 -:10DE700001D903208DE720680001F5D5504688E7D9 -:10DE8000284402582DE9F047454D044689464FF095 -:10DE9000000A2868C04380070AD0414E283E3068F7 -:10DEA00020F080503060F9F775FC0746B04608E076 -:10DEB0000120BDE8F08700BFF9F76CFCC01B022809 -:10DEC00067D8D8F800008000F6D4208829684FF47D -:10DED000FE0721F07C713E0241EA00502860207A62 -:10DEE000A389B4F804C040022D4D2D495B1E227C4D -:10DEF000ACF1010C1835091DA0F5007080B2521E5E -:10DF0000CCF3080C07EA034340EA0C00184306EA86 -:10DF10000262104328600868626920F44060104380 -:10DF200008600A68A06922F4007202430A60281D92 -:10DF30000A6822F480720A6002684FF6F873E46996 -:10DF40009A4342EAC40202600868B9F1000F40F443 -:10DF500080720A6011D00868B9F1010F11D040F049 -:10DF600080700860D8F80000444640F08050C8F83F -:10DF70000000F9F70FFC05460DE0086840F480004A -:10DF8000EFE740F40000ECE7F9F704FC401B02283F -:10DF900001D903208DE720688000F5D5504688E739 -:10DFA000284402580148FCF7E3BA00003407002077 -:10DFB00010B5026840F26F335169946944F0080467 -:10DFC00094610268946944F01004946102681468D2 -:10DFD00024F001041460026814699C43146102680F -:10DFE000936823F44043936090F88120042A0CD076 -:10DFF0008A060AD5D0F8842042F08002C0F8842036 -:10E000000268936943F02003936190F88120032A0A -:10E010000CD04A060AD5D0F8842042F00402C0F899 -:10E0200084200268936943F0400393618A050AD50E -:10E03000D0F8842042F00102C0F88420026893697D -:10E0400043F400739361C9050AD5D0F8841041F0F8 -:10E050000801C0F8841001688A6942F480728A61FC -:10E060000021A0F86210A0F86A1010BD10B5806BF6 -:10E0700000210122A0F86A10A0F8621080F8812027 -:10E08000FCF75AFA10BD10B5846BF7F7EBFF0228C6 -:10E090000ED02046FFF78CFFD4F88410012041F009 -:10E0A0001001C4F8841084F881002046FCF744FA7B -:10E0B00010BD10B5806BFCF71FFF10BD10B5806B55 -:10E0C00090F88110072909D0C16FC969B1F5807F27 -:10E0D00005D00068016941F00801016110BDFCF73D -:10E0E000EFFE10BD00680349884201D1002070474F -:10E0F00002207047003800402DE9F0411C461646CA -:10E100000D460746DDF818800AE000BFF9F742FB2C -:10E11000A0EB0800A04202D3601C01D00BE054B178 -:10E120003868406935EA000007D00020B042EDD0E1 -:10E130000020BDE8F0810320FBE70120F6E701782D -:10E14000407841EA0020704710B5FFF723FA04F049 -:10E1500019FCBDE8104004F05FBC4FF0E02010B5A2 -:10E16000006906F0B9F8012803D0BDE8104005F0B9 -:10E1700077BC10BD70B59CB04C216846F2F78DFBA2 -:10E18000202113A8F2F789FB0220FAF75BFC224852 -:10E19000016821F4404101600168002401F440411C -:10E1A0001B9101688904FCD502204025C30323226A -:10E1B0000121CDE90023CDE903152822099006911C -:10E1C00004230D910C260A90CDE90B02CDE90E3007 -:10E1D000CDE9106468461294FBF7D4FE08B172B61C -:10E1E000FEE708221A95CDE91625D30113AA3F2090 -:10E1F0000321CDE9185382E8130013A8FBF73AFC7A -:10E2000008B172B6FEE700214FF480220846FBF702 -:10E210006FFE1CB070BD0000184802582D48F0B5C4 -:10E220002D4A016841F470010160106800F00F0090 -:10E23000072804D2106820F00F00C01D1060274985 -:10E240000020264C10340B68254D43F001030B6071 -:10E2500020600B682B400B60136803F00F03072B43 -:10E2600004D9136823F00F03DB1D13601B4C1D4AF8 -:10E2700018341D4B261D371D2060184C1B4D2834AB -:10E280003060261D3860371D23603B1D35601C1D26 -:10E290003A60251D2E1D1860331D226028603260F3 -:10E2A00018600B680D4A0D4C23F48023D4320B60A8 -:10E2B000603420601068C0040BD4136843F2D200AD -:10E2C0000B4943F4805313600860106820F48050B9 -:10E2D0001060F0BD88ED00E00020005200440258BC -:10E2E0007FEDF6EA80020101000202020000FF0158 -:10E2F000004000520148FDF7A6B800008C11002034 -:10E300002DE9F0472C4B4FF0804A2C4D0268984283 -:10E310002B4E2C4F2C4C09D0504507D0A84205D08D -:10E32000B04203D0B84201D0A04205D1D1F804C018 -:10E3300022F070024CEA0202DFF890C0DFF8908011 -:10E340009842DFF8909015D0504513D0A84211D0D4 -:10E35000B0420FD0B8420DD0A0420BD0604509D0DA -:10E36000404507D0484505D01B4DA84202D01B4D63 -:10E37000A84203D1CD6822F440722A438E684D69C9 -:10E3800022F08002C6620E682A439842866207D055 -:10E39000A04205D0604503D0404501D0484501D199 -:10E3A000096901630368012143F0040303604161CB -:10E3B0000260BDE8F087000000000140000400405A -:10E3C00000080040000C00400004014000400140F3 -:10E3D000004401400048014000E0004000E40040EB -:10E3E00010B5046A012301F01F018B409C430462B5 -:10E3F0008A40016A1143016210BD00002DE9F04F0F -:10E40000DFF88480214EDFF88890DFF888B0026A58 -:10E41000036AB042DFF880A022F0020C1F4F23F005 -:10E4200001020262426885698B680C6805EA08058A -:10E4300025F0030543EA0C0344EA050407D04845E8 -:10E4400005D0584503D0504501D0B84205D1CD681C -:10E4500023F008031D4325F00403B04207D04845CC -:10E4600005D0584503D0504501D0B84205D122F41B -:10E470004076D1E9055235432A43426084614968B8 -:10E4800041630362BDE8F08F8FFFFEFF0000014093 -:10E4900000040140004001400044014000480140A8 -:10E4A000F0B5DFF87CE01F4C1F4D026A036AA04202 -:10E4B00022F0200623F01003036242688369D1F83A -:10E4C00008C00F6803EA0E0323F4407E46EA0C13EB -:10E4D0004EEA072601D0A84206D1CF6823F0800378 -:10E4E00043EA071323F04003A0420AD0A84208D011 -:10E4F0000E4CA04205D00E4CA04202D00D4CA042C2 -:10E5000007D1D1E9054522F4406242EA840242EA99 -:10E51000850242608661496881630362F0BD000044 -:10E52000FF8FFFFE00000140000401400040014059 -:10E530000044014000480140F0B5DFF87CE01F4D89 -:10E540001F4E026A036AA84222F4007723F4807304 -:10E5500003624368C269D1F808C002EA0E020C687F -:10E5600022F0030E47EA0C2244EA0E0401D0B04226 -:10E5700006D1CF6822F4006242EA072222F48062C8 -:10E58000A8420AD0B04208D00E4DA84205D00E4D88 -:10E59000A84202D00D4DA84207D1D1E9055623F477 -:10E5A000405343EA051343EA06134360C4614968D4 -:10E5B000C1630262F0BD00008FFFFEFF000001405A -:10E5C0000004014000400140004401400048014077 -:10E5D000F0B5046A026A22F4805202624268C3699A -:10E5E00024F40054DFF848C08E680D6803EA0C0379 -:10E5F000104F23F4407344EA0634B84243EA05233B -:10E600000BD00D4DA84208D00C4DA84205D00C4DA2 -:10E61000A84202D00B4DA84204D14D6922F4804299 -:10E6200042EA85124260C361496801640462F0BD38 -:10E63000FF8FFFFE00000140000401400040014048 -:10E640000044014000480140F0B5164F164B026AE5 -:10E65000046A984222F4003524F48033036242684D -:10E66000436D0E890C6803EA070344EA030445EA94 -:10E6700006430BD00D4DA84208D00D4DA84205D041 -:10E680000C4DA84202D00C4DA84204D14D6922F491 -:10E69000803242EA0522426044654968816503622E -:10E6A000F0BD00008FFFFEFF0000014000040140AC -:10E6B000004001400044014000480140F0B5164FC1 -:10E6C000164B026A046A984224F48013036222F40F -:10E6D00000144268436D0E890D6803EA070344EA9B -:10E6E000065443EA05230BD00D4DA84208D00D4D2A -:10E6F000A84205D00C4DA84202D00C4DA84204D12E -:10E700004D6922F4802242EA8522426043654968CD -:10E71000C1650462F0BD0000FF8FFFFE00000140F4 -:10E720000004014000400140004401400048014015 -:10E73000314810B5F5F712FE03F0AAFF2F4A002169 -:10E740002F4804F021F92C4C00212E4A483C20602F -:10E750002D4804F019F9606000212C4A2C4804F07F -:10E7600013F9A06000212B4A2B4804F00DF9E0605A -:10E7700000212A4A2A4804F007F920610021294A89 -:10E78000294804F001F960610021284A284804F072 -:10E79000FBF8A0610021274A274804F0F5F8002281 -:10E7A000E0611821022003F0F5FF002260622021C1 -:10E7B000022003F0EFFF0022E0629021022003F02C -:10E7C000E9FF00222063F021022003F0E3FF002292 -:10E7D00060630C21022003F0DDFF002220620C2187 -:10E7E000022003F0D7FFA06303F084FF04F0CAF80F -:10E7F000BDE8104004F010B998A20020744B010845 -:10E8000011EC0008984B01083DE80008BC4B0108DA -:10E8100091EC0008E04B010849E90008044C0108AC -:10E82000F1EB0008284C010849EA00084C4C0108AB -:10E8300075EB0008704C0108C1EA0008002003F0E5 -:10E84000D5FE3E4C94F8AC0110B1012817D10EE072 -:10E850003B4901F11800F4F7BFF939481830F4F7D3 -:10E860009BF937483749B030F3F77EFD07E034486D -:10E870003830FEF7FDFE01210220F4F7C3FC94F8C6 -:10E88000AC0198B10128FAD12D483830FEF77CFF51 -:10E89000FEF78AFFC0B303F0FBFE29490C3101F1FA -:10E8A0002C00FEF707FF03F025FF32E0F4F7FAFA39 -:10E8B000F4F760F9F4F76AF9F4F77CF9F4F786F9FC -:10E8C00003F0E6FE1E481830F4F71EFA1C48183014 -:10E8D000F4F76AFA1A4A1B4B2432A2F10C0101F137 -:10E8E0009800F3F7D1FD1649B03101F11400F3F7A8 -:10E8F000D3FC03F0FFFE206A03F0ACFF10490023B5 -:10E90000206A1A46C43116E0FFE70D483830FEF79A -:10E91000A5FE206A03F09EFF09490023206A1A46DB -:10E9200094310D4603F062FFA06B03F093FF0023C8 -:10E93000A06B1A46294603F059FFA0E750A2002019 -:10E9400048A4002078030020002003F04FFE274851 -:10E95000F6F728FA26A0F4F7DDFC33A0F4F7DAFC8A -:10E96000334F0026334C00BFF4F7F8FC0500FBD012 -:10E97000014631A0F4F7CEFC0D2D10D00A2D0ED09B -:10E980007F2D2AD0082D28D020887F28ECD2202D5A -:10E99000EAD37E2DE8D83D54411C2180E4E727A02E -:10E9A000F4F7B8FC20883E5480B1F6F78FF94FF4A5 -:10E9B000007980461E484A464146F6F78BF90546DF -:10E9C00041461FA0F4F7A6FC002DF3D11848802182 -:10E9D0002680F1F740FF14A005E020880028C3D06E -:10E9E000401E208017A0F4F795FCBDE7944C010869 -:10E9F0000D0AE6ACA2E8BF8EE4BDBFE794A8E5919E -:10EA0000BDE4BBA4E8A18CEFBC8CE8BE93E585A572 -:10EA10002068656C7020E69FA5E79C8BE591BDE4BE -:10EA2000BBA40D0A000000006D723E200000000033 -:10EA300018A5002084030020256300000D0A0000B3 -:10EA400025730000082008002DED028B03F00BFE5B -:10EA50004FF4FA71B0FBF1F6002003F0C7FD154842 -:10EA6000F4F7CCFC03F0F8FD124F0546134C9FED74 -:10EA7000128A354403F00CFE0E490023606A1A46E0 -:10EA8000303103F055FE30B90A49B0EE480A01F1C1 -:10EA90003000F4F7B9FC03F02DFEE06A03F0DAFE73 -:10EAA0000023E06A391D1A4603F0A0FE284603F051 -:10EAB000ABFDDEE798A500206F12033B50A20020BB -:10EAC00003F0D1FD4FF4FA71B0FBF1F6C82003F06A -:10EAD0008DFD244924489FED220AF5F721FB03F020 -:10EAE000BBFD204C05464C3C2049002335441A46CA -:10EAF000206B03F01DFE18B91C491B48F5F7DCFB21 -:10EB00001A490023A06B1A460C3903F011FE20B9F4 -:10EB1000164915480C39F5F7F1FB00231449E06A52 -:10EB20001A4603F005FE03F0B3FD11492A460E48CC -:10EB3000F4F7BAFC0D490C489031F5F7CBFA03F025 -:10EB4000D9FD606B03F086FE08490023606B1A460E -:10EB5000903103F04BFE284603F056FDC4E7000059 -:10EB60000000FA439CA2002060A700206CAA0020AD -:10EB7000ECAB002003F077FD4FF44871B0FBF1F6E9 -:10EB8000C82003F033FD17491748F6F733F903F0AF -:10EB900063FD144D0446483D1449002334441A468D -:10EBA000686B03F0C5FD18B910490F48F6F79EF9D8 -:10EBB00003F06EFD0C48F6F73DF903F09BFD0B49A1 -:10EBC00009489039F6F7BEF9286B03F043FE074970 -:10EBD0000023286B1A46903903F008FE204603F004 -:10EBE00013FDD9E798A200206000002470A6002041 -:10EBF00003F039FD6421B0FBF1F5002003F0F6FCD1 -:10EC000003F02AFD04462C44204603F0FDFCFAE7FD -:10EC1000002003F0EBFC1A48F5F71AFEDFED190AA5 -:10EC20009FED190AF4F7DEF9184C1548F5F7D0FEF8 -:10EC30001420F5F7DDFE0028114807D0F5F72CFE6B -:10EC400001210020F4F7DEFA012106E0F5F7F6FDD8 -:10EC500000210846F4F7D6FA00210120F4F7D2FA91 -:10EC6000074907481831F5F741FE606A03F0F2FDE5 -:10EC700003490023606A1A46183103F0B7FDD4E750 -:10EC800020A20020CDCC4C3E0000964350A2002094 -:10EC900003F0E9FC3221B0FBF1F5002003F0A6FC03 -:10ECA000F4F72EFAB6EE000A40F20510F4F7E0F998 -:10ECB000B6EE000A40F24910F4F7DAF9B6EE000AAF -:10ECC0004FF4C470F4F7D4F9F4F726FA03F0C4FC57 -:10ECD00004462C44204603F097FCFAE7044810B59C -:10ECE000FCF736FFBDE810400148F4F7E1BA000038 -:10ECF000DC090020044810B5FCF72AFFBDE81040ED -:10ED00000148F4F7D5BA0000700A002030B5416E12 -:10ED1000B9B101680D4B03F108048A688968C2F330 -:10ED20004262490F5D5C615C2D01B5FBF1F1A0F819 -:10ED30006A10995CA25C0901B1FBF2F1A0F86810BD -:10ED400030BD0121A0F86A10F8E70000D0490108A1 -:10ED500090F82810090706D50168836B4A6822F4E9 -:10ED600000421A434A6090F82810C90706D001688B -:10ED7000C36A4A6822F400321A434A6090F82810A5 -:10ED8000890706D50168036B4A6822F480321A436A -:10ED90004A6090F82810490706D50168436B4A6815 -:10EDA00022F480221A434A6090F82810C90606D53A -:10EDB0000168C36B8A6822F480521A438A6090F813 -:10EDC0002810890606D50168036C8A6822F400526F -:10EDD0001A438A6090F82810490611D50168436CDF -:10EDE0004A6822F480121A434A60416CB1F5801FD0 -:10EDF00006D10168836C4A6822F4C0021A434A6053 -:10EE000090F82810090606D50168C26C486820F4FD -:10EE100000201043486070472DE9F8430025044660 -:10EE2000C0F89050F8F7B6FC8046206820266FF0B6 -:10EE30007E470068000713D5002243463104204670 -:10EE4000009700F069FB58B1216851E8000F20F0ED -:10EE5000800041E80002002AF6D1C4F8886021E071 -:10EE600020680068400722D5002243464FF4800105 -:10EE70002046009700F050FBC8B1206850E8001F02 -:10EE800021F4907140E80012002AF6D12068083081 -:10EE900050E8001F21F0010140E80012002AF5D1DE -:10EEA000C4F88C60032084F88450BDE8F883C4F86B -:10EEB0008860C4F88C60E5662567002084F884507B -:10EEC000F3E710B5806B0021A0F85E10FCF72CFE74 -:10EED00010BD70B5846B00252168D4F88800D4F883 -:10EEE0008C608968090606D5212804D1A4F85650FB -:10EEF000204600F091F820688068400606D5222E52 -:10EF000004D1A4F85E50204600F05CF8D4F89000DC -:10EF100040F01000C4F890002046FCF705FE70BDDC -:10EF200010B5C1690022806BB1F5807F2DD0A0F8AB -:10EF30005E20036853E8001F21F4807143E8001449 -:10EF4000002CF6D10168083151E8003F23F001039D -:10EF500041E80034002CF5D10168083151E8003F48 -:10EF600023F0400341E80034002CF5D12021C0F803 -:10EF70008C10C16E012908D1016851E8003F23F0CF -:10EF8000100341E80034002CF6D10267C16E01295C -:10EF900002D0FDF719FB10BDB0F85C10FCF773FD53 -:10EFA00010BD10B5806B01210167C16E012902D02F -:10EFB000FDF71EFB10BDB0F85C104908FCF763FDBF -:10EFC00010BD000010B5026852E8001F21F49071D6 -:10EFD00042E80013002BF6D10E4B0268083252E8CB -:10EFE000001F194042E80014002CF6D1C16E01291F -:10EFF00008D1026852E8001F21F0100142E8001316 -:10F00000002BF6D100212022C0F88C20C166416778 -:10F0100010BD0000FEFFFFEF026852E8001F21F064 -:10F02000C00142E80013002BF6D10168083151E815 -:10F03000002F22F4000241E80023002BF5D120210B -:10F04000C0F888107047000000680D49884201D15F -:10F05000002070470B49884201D1012070470A49BE -:10F06000884201D1022070470849884201D103201B -:10F0700070470749884201D1042070470620704735 -:10F08000005000400044004000480040001C014087 -:10F09000007800402DE9F04304468068E24E87B0D6 -:10F0A000E24B2168D4E90427D4F81CC010430A6855 -:10F0B000002547EA0C073843324002430A602068C3 -:10F0C000E268416821F44051114341602268A1691E -:10F0D0009A4201D0206A01439668DFF854C3D54FA5 -:10F0E000D54806EA0C060E4396602168666ACA6A2D -:10F0F00022F00F023243CA622268BA420ED100687F -:10F1000000F0380018286FD07ADCB8B308286CD02B -:10F1100010286BD18BE0282868D18EE0C7498A423D -:10F1200009D1006800F0070006285FD2DFE800F090 -:10F13000507D7F818385C2498A4209D1006800F0F1 -:10F14000070006287BD2DFE800F0437072747678FF -:10F15000BC498A4209D1006800F0070006286ED237 -:10F16000DFE800F036636567696BB7498A420BD107 -:10F17000006800F00700062861D200E043E0DFE805 -:10F1800000F0275456585A5CB0498A4206D10068AC -:10F1900000F0380018284CD0B7DD31E0AC498A4285 -:10F1A00009D1006800F00700062848D2DFE800F027 -:10F1B000103D3F414345A7498A420BD1006800F00A -:10F1C000070006283BD2DFE800F00330323436383F -:10F1D000002035E0A0498A4209D1006800F03800DB -:10F1E000182826D091DD0BE023E01EE027E09B49A4 -:10F1F0008A420AD1006800F03800182819D084DD4E -:10F20000202888D11CE001201AE09A4217D18A48B0 -:10F21000001D006800F00700062810D2DFE800F0AB -:10F22000030507090B0D02200AE0042008E008206E -:10F2300006E0102004E0202002E0402000E08020D2 -:10F240008749DFF820829A42874A4FF400434FEA09 -:10F2500021174FF000064ED110281AD006DC0228E4 -:10F2600009D004280BD008287ED10DE020283ED0FC -:10F27000402879D13DE0F9F717FC014610E06846D7 -:10F28000F9F7C8FC01990BE003A8F9F765FD0499AB -:10F2900006E01068800605D51068C0F3C100C140C3 -:10F2A000002970D0606A676838F8102007EB4703C0 -:10F2B000B1FBF2F0834257D8B0EB073F54D800239C -:10F2C00008461946F1F74CF902467808130E120267 -:10F2D00043EA012110183A4671410023F1F740F941 -:10F2E000624AA0F5407191423ED821688FE03946CC -:10F2F000D8E71946D6E7D4F81CC04FF6EF799C45FD -:10F3000046D1082819D005DC58B101280CD00428B2 -:10F3100075D10DE0102815D0202835D040286ED1A9 -:10F3200034E0FAF725FD01E0FAF734FD014610E07C -:10F330006846F9F76FFC01990BE003A8F9F70CFD9B -:10F34000049906E01068800604D51068C0F3C10077 -:10F35000C140C1B1636A606838F81330B1FBF3F1A2 -:10F36000490001EB500100E049E0B1FBF0F0A0F1F1 -:10F370001001494543D84FF6F0732168C0F34202AB -:10F380001840104343E043E03946E3E71946E1E71C -:10F39000082819D005DC58B101280CD004282ED13A -:10F3A0000DE0102815D020282BD0402827D12AE0A6 -:10F3B000FAF7DEFC01E0FAF7EDFC014610E06846E2 -:10F3C000F9F728FC01990BE003A8F9F7C5FC0499AB -:10F3D00006E01068800604D51068C0F3C100C14083 -:10F3E000B1B1636A606838F81330B1FBF3F101EB37 -:10F3F0005001B1FBF0F0A0F11001494505D90125FC -:10F4000006E03946EDE71946EBE7216880B2C860AF -:10F410000120A4F86A00A4F8680028466667A66779 -:10F4200007B0BDE8F0830000F369FFCF000C00587F -:10F43000FFF4FF1100100140544402580044004002 -:10F4400000480040004C00400050004000140140C3 -:10F4500000780040007C004000180140001C014082 -:10F460000090D003B849010800440258FFFC0F0087 -:10F4700070B50446D0F8800000232225A165A4F8C9 -:10F480005C20C4F89030C4F88C50F0B11F49C163BF -:10F49000D4F880101E480864D4F880101D48C86451 -:10F4A000D4F8800003651346A56D2168D4F8800068 -:10F4B0002A462431F7F72AFB38B11021C4F89010FE -:10F4C0002020C4F88C00012070BD206940B1216863 -:10F4D00051E8000F40F4807041E80002002AF6D1A4 -:10F4E0002068083050E8001F41F0010140E8001298 -:10F4F000002AF5D12068083050E8001F41F0400193 -:10F5000040E80012002AF5D1002070BD21EF00086C -:10F51000A3EF0008D3EE00082DE9F04799461746FF -:10F520000D460446089E4FF0000833E0701C31D0B1 -:10F53000F8F730F9A0EB0900B04218D8BEB1206846 -:10F540000168490726D5802D24D0402D22D0C169DD -:10F55000C94309070DD4082505622046FFF732FD8F -:10F56000C4F89050012084F88480BDE8F08703201F -:10F57000FBE7C069C04300050CD421684FF400606C -:10F5800008622046FFF71EFD2021C4F8901084F881 -:10F590008480ECE72068C06935EA000004D00020D0 -:10F5A000B842C3D00020E0E70120F9E7044810B5D5 -:10F5B000FCF7CEFABDE810400148F3F779BE000031 -:10F5C000C00C0020044810B5FCF7C2FABDE810409A -:10F5D0000148F3F76DBE0000040B0020044810B58D -:10F5E000FCF7B6FABDE810400148F3F761BE000031 -:10F5F000980B0020044810B5FCF7AAFABDE81040AB -:10F600000148F3F755BE00002C0C00202DE9F04115 -:10F610000C46D0F8D412D0F8C83200EB8101D1F8F2 -:10F62000C01229B304F00F02002702EB820500EBA1 -:10F630008506B5694DB102EBC20203EB8202D269C5 -:10F64000B5FBF2F302FB1352A2B1C1F81472D0F869 -:10F65000D42200EB8200D0F8C40203692BB1D1F8A8 -:10F66000080201F50471224698470020BDE8F081A8 -:10F670000320FBE7002321461A46B76100F0D3FDC3 -:10F68000F3E770B50546D0F8D40205EB8000D0F85A -:10F69000C04294B1284600F0A0FCC4F80C02D5F892 -:10F6A000D40205EB8000D0F8C412D4F80402CA6872 -:10F6B00004F503719047002070BD032070BD000069 -:10F6C00070B5224D0446297800F0C8FB2878002642 -:10F6D00000F00F0000EB800004EB800086842046E1 -:10F6E000697800F0BBFB687800F00F0000EB800049 -:10F6F00004EB8000A0F864612046A97800F0AEFB1E -:10F70000A87800F00F0000EB800004EB80008684F6 -:10F71000C684D4F8D40204EB8000D0F8C01299B1AA -:10F72000D0F8C40240688047D4F8D40204EB8000CB -:10F73000D0F8C00200F09FFFD4F8D40204EB8000A0 -:10F74000C0F8C062C4F8BC62002070BD9400002004 -:10F7500010B5D0F8D41200EB8100D0F8C04284B1CB -:10F76000D0F8C41259B194F80002FF2807D08B6872 -:10F77000214694F801229847FF2084F800020020D7 -:10F7800010BD032010BD00000A2101800048704711 -:10F790009800002070B5822106460D4800F076FAE8 -:10F7A000012105460A4800F071FA81210446084803 -:10F7B00000F06CFA0DB11021A9714FF0400104B1B5 -:10F7C000A18000B1818043203080014870BD0000DD -:10F7D000A400002070B5822106460D4800F056FABC -:10F7E000012105460A4800F051FA812104460848E3 -:10F7F00000F04CFA0DB11021A9714FF4007104B161 -:10F80000A18000B1818043203080014870BD00009C -:10F81000A400002070B5822106460D4800F036FA9B -:10F82000012105460A4800F031FA812104460848C2 -:10F8300000F02CFA0DB11021A9714FF0400104B174 -:10F84000A18000B1818043203080014870BD00005C -:10F85000A40000202DE9F0474FF407750446284620 -:10F8600000F00AFF06004FF0000965D02946F1F7C5 -:10F8700014F8D4F8D40201273C4D4FF4007A4FF02D -:10F88000100804EB8000C0F8C062C4F8BC62207CA1 -:10F89000F0B3297840230222204600F00EFC28789D -:10F8A000402300F00F0000EB800004EB8000878411 -:10F8B00002226978204600F000FC697808230322C0 -:10F8C000204601F00F0101EB810104EB8101A1F859 -:10F8D0006471A97801F00F0101EB810104EB810152 -:10F8E000A1F82680A97800F0E8FBA978C84601F0C5 -:10F8F0000F0101EB810104EB81018F84C6F80492B2 -:10F90000D4F8D40204EB8000D0F8C402006800E010 -:10F910001AE006F501768047C6F81080C6F8148014 -:10F9200032687AB1207CF8B140236978204600F033 -:10F93000D0FB0020BDE8F087D4F8D41204EB81019D -:10F94000C1F8C0920220F5E72978022253462046EA -:10F9500000F0B3FB2878534600F00F0000EB800066 -:10F9600004EB80008784A3E75346DEE79400002081 -:10F9700039B1D0F8D42200EB8200C0F8C4120020C4 -:10F98000704703207047D0F8D42200EB8200D0F8F3 -:10F99000C00218B1C0F8041200207047032070475D -:10F9A000D0F8D43200EB8300D0F8C00228B1C0F800 -:10F9B0001022C0F8081200207047032070472DE97C -:10F9C000FC410646D0F8D4020C46002106EB80002C -:10F9D0000D46D0F8C0728DF80010ADF8041037B1A4 -:10F9E000217811F060022CD0202A48D102E00320B7 -:10F9F000BDE8FC81E288E2B109060BD5D0F8C4026B -:10FA00003946836860789847E288072A00D9072238 -:10FA100039462CE0607887F80002E088402800D35F -:10FA200040203946C2B2304687F8012200F07FF804 -:10FA30002AE0D0F8C4020022214683686078984703 -:10FA400022E0607830B101281ED00A2809D00B28A6 -:10FA500015D110E096F89C02032810D1022201A9CA -:10FA600005E096F89C02032809D101226946304638 -:10FA700000F077F808E096F89C02032804D02146AD -:10FA8000304600F049F803252846B1E710B5D0F814 -:10FA9000D41200EB81020121D2F8C0221AB1D2F8AF -:10FAA000143213B116E0032010BD0B490123C2F834 -:10FAB0001432D2F81032097801F00F0404EB8404F8 -:10FAC00000EB8404A361D2F81032D2F8082200F0CF -:10FAD000AAFB0021084610BD9400002010B5D0F804 -:10FAE000B82200245268904700B10324204610BD7C -:10FAF000002070470020704713460A46002110B5C9 -:10FB000000F0E7FA002010BD13460A46002110B5A8 -:10FB100000F089FB002010BD10B58021044600F0E4 -:10FB200063FB2046BDE81040002100F05DBB10B52E -:10FB3000C0F858210323C0F89432C0F85C21134662 -:10FB40000A46002100F0C5FA002010BD10B50521BD -:10FB5000C0F8941200231A46194600F0BAFA0020A1 -:10FB600010BD10B582610223C0F89432C261134601 -:10FB70000A46002100F057FB002010BD10B50421FB -:10FB8000C0F8941200231A46194600F04CFB0020DE -:10FB900010BDF8B504460D460020ADF800004888B9 -:10FBA000010A062947D006DC01290FD0022912D00C -:10FBB000032962D11DE0072946D00F295DD1D4F871 -:10FBC000B402C26920E0694690473BE0D4F8B41221 -:10FBD000207C0A68F7E7207C02260028D4F8B802C7 -:10FBE00005D0C16A684688470146467036E0816A9A -:10FBF000F8E7C0B2062840D2DFE800F003090D1193 -:10FC00001519D4F8B4024268B2B3207CDBE7D4F80B -:10FC1000B4028268F8E7D4F8B402C268F4E7D4F812 -:10FC2000B4020269F0E7D4F8B4024269ECE7D4F810 -:10FC3000B4028269E8E7207CF0B9D4F8B802416BDD -:10FC400068468847014609E0207CA8B9D4F8B80284 -:10FC5000016B68468847014607204870EA888AB1E8 -:10FC6000BDF8000040B1824200D902462046ADF8FE -:10FC70000020FFF776FFF8BDFFE729462046FFF793 -:10FC80004BFFF8E72046FFF779FFF4E778B54288A5 -:10FC90000D460178002604468A4212D9ADF80010BC -:10FCA0000AE0694600F019F84178052904D1817805 -:10FCB0000646A94205D000266188BDF80020914281 -:10FCC000EFD8304678BD002102E0491C401CC9B283 -:10FCD0000278002AF9D1084670470A8803781A4446 -:10FCE0000A8001780844704770B5002816460D4612 -:10FCF00020D00446FFF7E7FF02220146100202EB84 -:10FD00004101814204D82046FFF7DDFF4000801CFE -:10FD100030803378032102202B700022697006E0C6 -:10FD2000431C2954D8B2411C641C2A54C8B22178FF -:10FD30000029F5D170BD01004FF0000004D0012969 -:10FD400001D0022901D00320704701207047000034 -:10FD500004A00A46024910B5FFF7C6FF004810BDCF -:10FD6000B414002043444320436F6E66696700006B -:10FD700012200880004870472C00002004A00A468A -:10FD8000024910B5FFF7B0FF004810BDB4140020C1 -:10FD900043444320496E74657266616365000000E8 -:10FDA00004200880004870472800002004A00A466C -:10FDB000024910B5FFF798FF004810BDB4140020A9 -:10FDC0004D526F626F74000004A00A46024910B5DC -:10FDD000FFF78AFF004810BDB41400204D726F6217 -:10FDE0006F7420436C69000010B51A2008800B481E -:10FDF0000A490830021F096800681468081809D009 -:10FE000007490822FCF776FC0549042220461031F8 -:10FE1000FCF770FC0248801E10BD000000E8F11FD6 -:10FE20004E00002078B10023C0F8B832C0F8C432C8 -:10FE3000C0F8D03209B1C0F8B4120121027080F8C4 -:10FE40009C1200F0CFB80320704710B5D0F8C8025C -:10FE5000F8F747F9BDE81040FFF76DBF10B5D0F8CF -:10FE6000C802F8F719F9BDE81040FFF764BF2DE9A3 -:10FE7000F041174604464FF0000521B194F89C026A -:10FE8000032842D04CE0D4F8941204F11400022963 -:10FE900035D1D0E902639E4206D9F21A3946826012 -:10FEA0002046FFF731FE0FE0B34214D1406898427C -:10FEB00011D3D4F8981288420DD200222046114660 -:10FEC000FFF722FEC4F8985200231A46194620462E -:10FED00000F0FFF813E094F89C02032808D1D4F84E -:10FEE000B802C16821B1C4F8D452C168204688471D -:10FEF0008021204600F078F92046FFF727FE94F88D -:10FF0000A00268B184F8A0520AE0D4F8B8024269AD -:10FF100032B1C4F8D452426920469047002800D13B -:10FF20000020BDE8F08170B5134604464FF0000292 -:10FF300021B194F89C02032830D03AE0D4F894120E -:10FF400004F5AA70032934D1D0E902518D420AD9AF -:10FF50006A1A82600846824200D302461946204649 -:10FF6000FFF7CAFD25E094F8AA0210F01F0003D0A5 -:10FF7000012802D0022800D0002294F89C02032815 -:10FF800008D1D4F8B802016921B1C4F8D4220169BA -:10FF9000204688472046FFF7F1FD0AE0D4F8B80272 -:10FFA000836933B1C4F8D42282692046904700287F -:10FFB00000D1002070BD0020704710B5D0F8B812F5 -:10FFC000012280F89C22002429B103794A68D9B221 -:10FFD000904700B10324204610BDD0F8C802F8F7BE -:10FFE000ADB8000070B50178012929D1154909255E -:10FFF000154C02230022C1F8E004C0F8C8120846DC +:1034200010BD104610BD00200871F8E730B5447C8F +:10343000002274B30123012C04D0022C1BD0032CD6 +:1034400032D10CE0047C34B1012C04D0022C04D025 +:10345000032C29D101E00A7125E00B7123E0062439 +:103460000C71057CFDB1012D0FD0022D0FD0032D65 +:103470001AD1052217E004240C71057C9DB1012DA1 +:1034800011D0022D03D0032D0ED14B710CE04C71E5 +:103490000AE0FFE70A71037C2BB1012B03D0022B5A +:1034A00001D0032B00D14A7190ED030A81ED030A8C +:1034B00090ED020A81ED040A90ED000A81ED050A03 +:1034C00090ED050A81ED020A90ED010A81ED070AEF +:1034D00030BD00002DE9F04F04000D466FF00100F3 +:1034E0002DED0E8BDBB07CD0002D7AD09FEDFE1A37 +:1034F0002068D4ED020A101A226000EE100A20465D +:10350000F8EE401A81EE810A84ED010A70EE800A1D +:10351000C4ED020A00F08CFE94F888124FF0000906 +:103520009FEDF28AD1B101292ED0042604F5307026 +:103530009FEDEF9AF2EE04BADFEDEE9A04294FF018 +:10354000DC0AF1EE04DAB9EE04EAF6EE008AB0EE37 +:1035500000AA00907DD0052915D12CE0F02101A80A +:10356000FDF79BF9E449F02201A8FDF73AF9F022B2 +:1035700001A904F1A000FDF734F984ED028A84F872 +:10358000889284F88992AFE25FF00005DB4914224B +:1035900005EB850004EB8000A030FDF722F96D1CDF +:1035A000EDB20C2DF2D3012184F8881284F88992AF +:1035B00084ED028A98E20027D049142207EB8700A5 +:1035C000143104EB8000A030FDF70BF97F1CFFB233 +:1035D0000C2FF1D3D4ED011AD4EDA40AB0EE480AB1 +:1035E00000E0FDE30098B0EE401A0AF051FAD4ED85 +:1035F000AA0A84EDA70AC24930EE800A10EE100A2A +:1036000084EDAA0A884202DD9FEDBE0A06E010EEB4 +:10361000100ABD49884203D99FEDBC0A84EDAA0A6D +:1036200094F8890220B101281BD0032818D13CE16D +:1036300000EB400200EB800104EB8202401C92EDA3 +:10364000060A04EB8101C0B20C2881ED2A0AEFD3EF +:1036500000E04AE284F8886284F8899284ED028A64 +:1036600026E2D5ED010A94ED640AD4ED011A00EECC +:10367000A10A84ED640AB0EE480A0098D4EDA40AC9 +:10368000B0EE401A0AF004FA002604F1B40B04F17B +:10369000780804F13C0700BF94EDAA0AB5EEC00A11 +:1036A000F1EE10FA50DD36B1012E27D0022E28D0CF +:1036B000032E28D0DFE090483FABF03007C883E806 +:1036C0000700D4ED640A94EDAA0A43AAF1EE600A59 +:1036D0003FA830EEC00A8DED410AE16801F1DC033C +:1036E000C43109F057F89DED430A84ED2A0A9DED97 +:1036F000440A84ED2F0A9DED450A4FE07E48FC30D8 +:1037000051E0834874E0824843AB0C3007C883E83B +:10371000070094EDAA0AD4ED640A3FAA43A830EE4C +:10372000600A8DED450AE16801F58073C43109F046 +:1037300031F89DED3F0A84ED570A9DED400A8BED6F +:103740002F0A9DED410A94E036B1012E29D0022EB8 +:103750004CD0032E6DD08EE06D4843AB183007C8B7 +:1037600083E80700D4ED640A94EDAA0A3FAAF1EEBB +:10377000600A43A830EEC00A8DED450AE16801F108 +:10378000DC03C43109F006F89DED3F0A84ED2A0AF6 +:103790009DED400A84ED2F0A9DED410A84ED340A27 +:1037A00069E05B48243043AB07C883E80700D4EDE9 +:1037B000640A94EDAA0A3FAAF1EE600A43A830EE2B +:1037C000C00A8DED450AE16801F1E803C43108F053 +:1037D000E1FF9DED3F0A84ED390A9DED400A87ED3A +:1037E0002F0A9DED410A87ED340A44E04848303005 +:1037F0003FAB07C883E8070094EDAA0AD4ED640A3A +:1038000043AA3FA830EE600A8DED410AE16801F15C +:10381000F403C43108F0BEFF9DED430A84ED480A6D +:103820009DED440A88ED2F0A9DED450A88ED340A86 +:1038300021E037483FAB3C3007C883E8070094EDF0 +:10384000AA0AD4ED640A43AA3FA830EE600A8DEDBF +:10385000410AE16801F58073C43108F09BFF9DEDDA +:10386000430A84ED570A9DED440A8BED2F0A9DED26 +:10387000450A8BED340A761CF6B2042EFFF40CAF29 +:1038800095ED020AB5EEC00AF1EE10FA0DD195EDF4 +:10389000030AB5EEC00AF1EE10FA06D195ED040A5E +:1038A000B5EEC00AF1EE10FA7ED0D5ED010A94ED26 +:1038B000640A94ED011A00EE810A84ED640A94ED25 +:1038C000020AB4EEC90AF1EE10FA03DD30EE490A3D +:1038D00084ED020A95ED020AD5ED030A4E4680EE0C +:1038E0002BBAC0EEABAA15E000007A44000000003D +:1038F0009A99193F8FC2F53D304A0108E80100202E +:10390000CDCC4C3DCDCC4C3DCDCC4CBDCDCC4CBD2F +:10391000384B01089FEDF90BDFEDFACA9FEDFADA9B +:10392000B7EECB1AB1EE4B2A4FF07C585746B7EEA4 +:10393000C22A31EE401B32EE400BF7EEC1BBB7EEB0 +:10394000C0CB1AE0CEB1032E17D029EE280A00BF53 +:10395000D4ED020A30EE200AF0EE490A0EF072F9B8 +:10396000C0EE090AF00700280CFE8D3A95ED041A06 +:10397000022E05D281EE2D0A04E0B0EE480AE7E7F8 +:1039800081EE0E0A10EE900A40454CDA33EE6A2AB8 +:103990008DED4ECA9FEDDD1B73EE2A2A55A832EE3F +:1039A000402A32EE804A00E082E02BEE280A60EEE8 +:1039B0008A3A8DED4F2A94ED642AB7EEC00AF1EEF3 +:1039C000424ACDED504A51AB3FAA49A931EE402BB6 +:1039D00030EE010BB7EEC21BB7EEC00B8DED491AEE +:1039E0008DED4A3AD4ED640A79EEE00ACDED4B0A4A +:1039F0008DED3F0A8DED403A94ED640A39EEC00A30 +:103A00008DED410ACDED51BA8DED524A94ED640A27 +:103A1000B1EE400A8DED530AB0EE630A00904EA855 +:103A20000AF040F924E033EE2A1A33EE6A2ACDED8B +:103A30003FBA55AA71EE001A32EE401A30EEE80A8B +:103A4000CDED401AD4ED640A49A920EE0A0AF1EE40 +:103A5000600ACDED410A8DED49CA8DED4A1AD4EDCB +:103A6000640A3FA8F1EE600ACDED4B0A0AF070F946 +:103A700006EB4600E16843AA07EB80000B18C4314F +:103A800055A808F087FEC6EB06109DED430A04EB2F +:103A90008000761C80ED2A0A9DED440AF6B280ED86 +:103AA0002F0A9DED450A042E80ED340AFFF44AAF3B +:103AB0005FF00005D4ED011A05EB450005EB85012B +:103AC00004EB800004EB8106D0ED060AD4F8BC02BA +:103AD00096ED2A0AB0EE481A09F0DAFF6D1CEDB235 +:103AE0000C2D86ED280AE5D3D6E200278949142259 +:103AF00007EB870004EB8000A030FCF772FE7F1C10 +:103B0000FFB20C2FF2D3844994ED640AD5ED011A6B +:103B10009FED821AD4ED010A01EEA00A84ED640A39 +:103B200094EDAA0AD5ED061A01EEA00A84EDAA0AC0 +:103B300084EDAB8A95ED052AD4EDA91A10EE100A92 +:103B400042EE201A8842C4EDA91A02DD84EDAA1AB9 +:103B500008E010EE100A7249884203D99FED710AFD +:103B600084EDAA0A94F8890240B1DFF8A8B10128CF +:103B7000ABF11C0B19D0032816D159E100EB400220 +:103B800000EB800104EB8202401C92ED060A04EB7C +:103B90008101C0B20C2881ED2A0AEFD384F8886233 +:103BA00084F8899284ED028A5AE29BF8001021B1D0 +:103BB000012961D002295ED1B8E084ED028A8BED43 +:103BC000011AD846DFED58AA5FF0000707EBC700DF +:103BD00007EB470204EB800004EB820690ED060A37 +:103BE000F90786ED710A90ED090A86ED720A90EDEB +:103BF0000C0A86ED730AC6ED95AAE06890ED310ACD +:103C000001D1B1EE400A86ED960A94ED640A0AEB02 +:103C1000820206F51570B1EE400A86ED970AE1685A +:103C20008B18C4313DAA08F0B5FD9DED3D0AF8079B +:103C300086ED950A9DED3E0A86ED960A9DED3F0ABA +:103C400086ED970AC6ED65AAE06890ED310A01D1CC +:103C5000B1EE400A86ED660A94ED640A7F1CFFB25D +:103C6000B1EE400A042F86ED670AAFD398F8001032 +:103C7000491C88F80010C6E05FF0000694ED020AC7 +:103C8000DBED010A06EB4600C0EE20AA04EB80073C +:103C9000D7ED950A97ED710AB0EE6A1A0AF053F85B +:103CA000C6EB0610B0EE6A1A04EB800888ED2A0A0B +:103CB000D7ED960A97ED720A0AF045F888ED2F0ABB +:103CC000D7ED970A97ED730AB0EE6A1A0AF03BF83F +:103CD000761CF6B2042E88ED340ACFD394ED020A96 +:103CE000DBED010A5846B4EEE00AF1EE10FA03DB10 +:103CF0000178491C8BF8001085E00000B81E85EBA8 +:103D000051B88E3F3255B0BD3255B03DB81E85EB2F +:103D100051B88EBFFC010020CDCC4C3ECDCC4C3EEA +:103D2000CDCC4CBECDCC4CBE8FC275BCF0EE601A73 +:103D30000098D4EDA40A94EDAA0AB0EE481A09F04E +:103D4000A7FEB0EE401A0098F0EE41AAD4ED011A99 +:103D5000D4EDA50A94EDAB0AB0EE481A09F098FE2E +:103D600094ED641AD4EDA70A002657467AEEC11ADC +:103D7000B1EE412A32EE6A1A31EEC02A71EE802A83 +:103D800071EE401A31EE000A32EE602A72EEE02A3D +:103D900031EEA01A30EE200A84ED6D2AC4ED702AAF +:103DA00084ED671A84ED6A0A06EB460142AA04EB29 +:103DB000810090ED650A8DED3F0A90ED660A8DED6C +:103DC000400A90ED670A07EB81008DED410AE1683A +:103DD0000B18C4313FA808F0DDFCC6EB061000E06C +:103DE00087E19DED420A04EB8000761C80ED2A0AF3 +:103DF0009DED430AF6B280ED2F0A9DED440A042E94 +:103E000080ED340AD0D395ED020AB5EEC00AF1EE8A +:103E100010FA0DD195ED030AB5EEC00AF1EE10FAD5 +:103E200006D195ED040AB5EEC00AF1EE10FA7DD088 +:103E300094F88902032831D10098D4ED011AD4ED09 +:103E4000A40A94EDAA0AB0EE481A09F021FEF0EE99 +:103E5000400A0098F0EE60AAD4ED011AD4EDA50A4C +:103E600094EDAB0AB0EE481A09F012FE94ED641A14 +:103E70003AEEC12AF1EE411A71EEEA0A32EE401A28 +:103E800072EE001A30EEC02A30EE800A84ED6D1A10 +:103E9000C4ED701A84ED672A84ED6A0A8BED019AED +:103EA00094ED020A5F46B4EEC90AF1EE10FA03DDA2 +:103EB00030EE490A84ED020A95ED020AD5ED030AB7 +:103EC0004E46D04680EE2B9A4FF07C59C0EEABAAFE +:103ED00019E0C6B1032E16D097ED010A60EE280A4C +:103EE00094ED020A30EE800AD7ED010A0DF0AAFE29 +:103EF000D7ED010A022E80EE201A95ED040A05D2B4 +:103F0000C0EE2D0A04E0F0EE480AE9E7C0EE0E0A22 +:103F100011EE100A484506EB460052DA04EB800029 +:103F200053A990ED650A70EE491A00E098E021EE81 +:103F30000A0ACDED3F1A90ED661A50AB4DAA31EE4C +:103F40006A1A31EE601A8DED401A90ED671A8DED08 +:103F5000411A90ED651A09EE681A8DED4A1A90ED36 +:103F6000661A8DED4B1A90ED671A31EE291A8DED18 +:103F70004C1A90ED651A09EE281A8DED4D1A90ED48 +:103F8000661A8DED4E1A90ED671A31EE291A8DEDF5 +:103F90004F1A90ED651A31EE091A8DED501A90ED19 +:103FA000661A31EE2A1A71EE200ACDED510AD0EDD3 +:103FB000670A3FA8CDED520A00914AA909F072FEA6 +:103FC0002EE004EB800031EE680A90ED651A53AAEA +:103FD0004AA931EE091A20EE0A0A8DED3D1A90ED3C +:103FE000661A31EE2A1A31EE201A8DED3E1A90ED46 +:103FF000671A8DED3F1A90ED651A31EE491A8DED75 +:104000004A1A90ED661A31EE6A1A71EE600ACDED29 +:104010004B0AD0ED670A3DA8CDED4C0A09F098FE99 +:1040200006EB4600E16843AA08EB80000B18C43198 +:1040300053A808F0AFFBC6EB06109DED430A04EB56 +:104040008000761C80ED2A0A9DED440AF6B280EDD0 +:104050002F0A9DED450A042E80ED340AFFF439AF96 +:104060005FF00005D4ED011A05EB450005EB850175 +:1040700004EB800004EB8106D0ED060AD4F8BC0204 +:1040800096ED2A0AB0EE481A09F002FD6D1CEDB259 +:104090000C2D86ED280AE5D334264FF094086427CA +:1040A0009FED168A002500BFE06806EB850C07EB44 +:1040B00085038444034408EB850105EB450208446D +:1040C00004EB820105EB85029CED002A90ED001ABD +:1040D00091ED060A04EB820000F1A001A830D3EDB7 +:1040E000001A62EE080A08F02DFC6D1CEDB20C2DD2 +:1040F000DAD35BB0BDEC0E8BBDE8F08F0AD7A33CE2 +:104100002DE9F04105000E461ED0002E1CD00427DC +:104110004FF034085FF00004E86807EB840308EB15 +:10412000840204EB84010344024405EB8100A030C7 +:10413000D3ED000A92ED000A06EB810108F0C8FBFE +:10414000641CE4B20C2CE7D3BDE8F08170B5040028 +:104150006FF001052DED028BB0EE408A56D00020A5 +:10416000E160DFED320A84F888024FF43470C4ED68 +:10417000640AFFF767F8C4F8BC02E8B34FF4C076EE +:104180003046FFF75FF8C4F8FC02A8B33046FFF7EB +:1041900059F8C4F8000378B35FF00005D4F8BC0206 +:1041A000E268C5EB0511B0EE480A00EB8100002182 +:1041B00002F5867209F020FDE168D4F8FC02B0EE49 +:1041C000480AD1ED530A00EB451008F029FCE168DC +:1041D000D4F80003B0EE480AD1ED540A00EB4510C4 +:1041E00008F01EFC6D1CEDB20C2DD7D30021B0EEF3 +:1041F000480A04F5307000E00AE0E26802F59672C1 +:1042000009F0FAFC0020BDEC028B70BD2846FAE7ED +:10421000D4F8BC0204F52F74FEF7B6FF206CFEF74D +:10422000B3FF606CFEF7B0FFF0E70000AE47613E01 +:1042300070B504006FF001002DED028B0CD0002949 +:104240000AD094F888220878824208D194F889220A +:104250004B789A4203D10020BDEC028B70BD1F4BFE +:10426000002204289FED1C8A1A7084F8880248787E +:1042700084F8890284ED028A84EDAA8A84EDAB8AEF +:1042800094EDA30A84EDA90A03D09FED150A84EDED +:10429000640A0025D4F8BC02C5EB051100EB8100CF +:1042A00009F0EAFCD4F8FC02B0EE480A00EB451035 +:1042B00008F01CFCD4F80003B0EE480A00EB4510EF +:1042C00008F014FC6D1CEDB20C2DE3D304F5307036 +:1042D00009F0D2FCBFE7000000000000E001002070 +:1042E000AE47613E2DE9F04104270E460024054605 +:1042F0004FF0340807EB8403E86808EB840204EB12 +:1043000044010344024405EB81001030D3ED000A60 +:1043100092ED000A06EB810108F0C4FA641CE4B2D5 +:104320000C2CE7D3BDE8F0816FF0010268B161B1F8 +:1043300091ED000A80EDA30A91ED010A80EDA40A37 +:1043400091ED020A80EDA50A704710467047B5EE60 +:10435000C01AF1EE10FA30EE600A0ADDF6EE000A3D +:1043600061EE200AB4EEE00AF1EE10FA02DD30EE62 +:10437000410A7047F1EE600AB4EEE00AF1EE10FA7D +:10438000F7D230EE010A7047002804D002494FF4FA +:10439000B472FCF726BA704710020020014801F001 +:1043A00079BE0000F8030020014801F073BE000050 +:1043B000540D0020014801F06DBE0000BC07002034 +:1043C000014801F067BE000034080020014801F0F8 +:1043D00061BE0000AC0F0020014801F05BBE000090 +:1043E00024100020014801F055BE0000BC0E002042 +:1043F000014801F04FBE0000340F0020014801F0D9 +:1044000049BE00009C100020014801F043BE00009E +:10441000CC0D0020014801F03DBE0000440E0020FC +:10442000014801F037BE000014110020294A01683C +:1044300091423AD0274A1832914236D0254A30323A +:10444000914232D0234A483291422ED0214A6032E2 +:1044500091422AD01F4A7832914226D01D4A90328A +:10446000914222D01B4AA83291421ED01A4A914250 +:104470001BD0194A1832914217D0174A3032914254 +:1044800013D0154A483291420FD0134A60329142FC +:104490000BD0114A7832914207D00F4A90329142A4 +:1044A00003D00D4AA832914211D1CAB21823103A52 +:1044B000B2FBF3F26FF30901032A02F00703074A84 +:1044C000D25CC26500D9091D81650846704721F09C +:1044D000FF01F9E71000024010040240844901087E +:1044E00030B5224A012301689142CAB21BD01F4C49 +:1044F0001434A14217D01D4C2834A14213D01B4CB8 +:104500003C34A1420FD0194C5034A1420BD0174C6F +:104510006434A14207D0154C7834A14203D0134C27 +:104520008C34A1420CD11421114C083AB2FBF1F1A8 +:104530000F4A803201F01F0504EB8101AB4010E00F +:104540000C4D1824103A0D44B2FBF4F1A82D00D8FC +:104550000831094A01F01F0402EB8101064AA34019 +:104560008032603080E80E0030BD000008540258F0 +:1045700000580258F0FBFDBF0008024010B5027958 +:10458000531E072B2DD8174C0168A1421BD0154C88 +:104590001434A14217D0134C2834A14213D0114C2B +:1045A0003C34A1420FD00F4C5034A1420BD00D4CE3 +:1045B0006434A14207D00B4C7834A14203D0094C9B +:1045C0008C34A14203D10849074C443102E0074929 +:1045D000064C443104EB8202C0E91B2101219940C1 +:1045E000416710BD08540258FC580258FC080240AC +:1045F00010B583694FF0C074826A0146002053B140 +:10460000B3F5005F15D072B1012A0CD0022A0AD08E +:10461000032A09D104E01AB1012A06D0022A03D1E3 +:10462000C96AC90100D5012010BDC96AA142FAD0EA +:1046300010BD002AF7D0012AF2D0022AF3D0032AB3 +:10464000F3D010BD2DE9F04F804E804FDFF8FC9184 +:104650001836DFF8F8A148370468856D0AF1300A8A +:10466000DFF8ECB14C45DFF8ECC1DFF8ECE16DD0E0 +:10467000B4426BD0544569D0BC4267D0DFF8D081DA +:10468000A8F11808444561D05C455FD064455DD011 +:1046900074455BD0DFF8C481444557D0DFF8BC8156 +:1046A00008F11808444551D0DFF8B08108F130080E +:1046B00044454BD0DFF8A48108F14808444545D073 +:1046C000DFF8988108F1600844453FD0DFF88C811D +:1046D00008F17808444539D0DFF8808108F1900866 +:1046E000444533D0DFF8748108F1A80844452DD043 +:1046F000DFF86C81444529D0DFF8648108F11408A3 +:10470000444523D0DFF8588108F1280844451DD0DE +:10471000DFF84C8108F13C08444517D0DFF84081B0 +:1047200008F15008444511D0DFF8348108F16408DD +:1047300044450BD0DFF8288108F17808444505D0BE +:10474000DFF81C8108F18C08444509D1D0E91948EB +:10475000C4F80480C46E1CB1D0E91C48C4F80480BD +:1047600004684C452ED0B4422CD054452AD0BC42CB +:1047700028D0374E183EB44224D05C4522D0644540 +:1047800020D074451ED0354EB4421BD0334E18365F +:10479000B44217D0314E3036B44213D02F4E483683 +:1047A000B4420FD02D4E6036B4420BD02B4E78362B +:1047B000B44207D0294E9036B44203D0274EA836D3 +:1047C000B44215D190F85C603F2406F01F06B44057 +:1047D000AC600468256825F4802525602EE09A6089 +:1047E0000068C160BDE8F08F99600068C260F9E7B9 +:1047F0001B4EB4421BD01A4E1436B44217D0184E7A +:104800002836B44213D0164E3C36B4420FD0144E64 +:104810005036B4420BD0124E6436B44207D0104E1C +:104820007836B44203D00E4E8C36B442DAD190F8CA +:104830005C60012406F01F06B4406C60046863608D +:104840008368402B0368CFD1C9E700001000024005 +:1048500088000240A0000240B8000240100402405C +:104860000854025800F0AEB810B520B11621FBF77D +:10487000F2FF002010BD6FF0010010BD70B56FF0A9 +:104880000105B8B10C4C207810B16FF0020070BD7A +:104890000EF090F8606068B1084A03210020FEF72E +:1048A00029FD074A04210020FEF724FD0120207085 +:1048B000002070BD284670BDC0010020ED490008F1 +:1048C0006548000810B504001ED0124900F0B3F886 +:1048D00021884FF4A560A1F5B671814217D861888F +:1048E000A1F5B671814212D8A188A1F5B6718142B5 +:1048F0000DD8E188A1F5B671814208D8207A30B18F +:10490000607A20B1002010BD6FF0010010BD4FF0A3 +:10491000FF3010BD00000024F0B3E9B30288DFEDE2 +:10492000270A01EE902AB0EE001A9FED250AF8EE54 +:10493000611A71EEE01A61EE811A81EE802A81ED32 +:10494000002A428801EE902AF8EE611A71EEE01A10 +:1049500061EE811A81EE802A81ED012A828801EEC2 +:10496000902AF8EE611A71EEE01A61EE811A81EE7A +:10497000802A81ED022AC28801EE902AF8EE611A9F +:1049800071EEE01A21EE811AC1EE001AC1ED031A90 +:10499000427A0A74027A00E00DE04A74808A01EEDD +:1049A000100A0020B8EE411A71EE600A80EE801AFB +:1049B00081ED051A70476FF00100704700008044D8 +:1049C0000000A544002010B5FEF754FC0068016803 +:1049D00021F0010101600020FEF74CFC0068016835 +:1049E00041F001010160002010BD000002482021BB +:1049F00040680DF059BF0000C0010020002010B534 +:104A0000FEF738FC0449122207F0D0FD002801D03F +:104A10004FF0FF3010BD00000000002401210246CD +:104A2000202010B50DF07AFF202801D0002010BD05 +:104A3000012010BD7047002810B535D0002933D0B3 +:104A40000A88C2F30A0202804A788B78D20842EAC6 +:104A50004312C2F30A0242808A78CB780C79920919 +:104A600042EA830242EA8422C2F30A0282800A797D +:104A70004B79520842EAC312C2F30A02C2804A7951 +:104A8000C2F3011242724A7992090272CA884281C3 +:104A90000A8982814A89C2810A7B02744A7B4274F4 +:104AA000CA894282098A818210BD4FF4806010B5A4 +:104AB00002F062FD4FF4805002F05EFDBDE8104050 +:104AC0004FF4004002F058BD72B6FEE705480549B4 +:104AD0000839026842F00202026008688004FCD5CE +:104AE000704700000C480258014802F089B90000E4 +:104AF00070040020014802F083B900007004002017 +:104B0000014802F07DB9000010050020014802F0C4 +:104B100077B9000010050020014802F071B90000CB +:104B2000B0050020014802F06BB90000B00500207C +:104B3000F0B503684FF6FC716D4C426BD3F88450AE +:104B40008D4345EA8205C3F88450036853F8845FB7 +:104B5000068F25F47F0545EA06451D60836B654D8C +:104B60009F180268D2F888308B4343EA8703C2F863 +:104B70008830026852F8883F868F23F4FE0343EAA8 +:104B800006431360066856F8A03FC26B8B4307EBE1 +:104B9000420243EA82033360076857F8A03FB0F847 +:104BA000406023F4FE0343EA06433B60D0E910363D +:104BB00003FB06220368D3F8B0608E4346EA820600 +:104BC000C3F8B0600368B0F84860D3F8B07027F459 +:104BD000FE0747EA0646C3F8B060D0E912670368EB +:104BE00006FB0722D3F8AC608E4346EA8206C3F880 +:104BF000AC60D0E91467036806FB0722D3F8F060C5 +:104C00008E4346EA8206C3F8F0600368B0F8586045 +:104C1000D3F8F07027F47C1747EA0646C3F8F06033 +:104C20000368876D53F8C06F02EB47028E4346EA74 +:104C3000820119600168B0F85C20D1F8C03023F41B +:104C40007C1343EA0242C1F8C020016890F860205A +:104C5000D1F8C03023F07C5343EA0262C1F8C0208F +:104C6000416B04EB8101C166826B01EB820202673A +:104C7000C36B02EBC3024267D0E91034634302EB1B +:104C800083028267D0E91234634302EB8302C26776 +:104C9000D0E91434634302EB8302C0F88020836DB3 +:104CA00002EBC303C0F88430C46D826E544303EB3F +:104CB0008403C0F88830046E544303EB8402C0F8C8 +:104CC0009020AA420AD9D0F89C20032142F0200269 +:104CD000C0F89C2080F898100120F0BD002200E070 +:104CE00004C1D0F890308B42FAD80020F0BD00000B +:104CF00000AC0040FCD300400048704720A00020DA +:104D00002DE9F0472F4C0546012691468A464FF083 +:104D100000086068A0BB04F10C0010E000680768A0 +:104D20003846FBF7AFFC0246A85C202800D020B92B +:104D300039462846FBF7C5FC28B1606840686060CA +:104D40000028EBD134E0D4F804C0DCF8000090F97E +:104D50000C70002F10DB00202946024603E0202BB8 +:104D600018D00022491C0B78002BF8D10AB1401E44 +:104D700040B2B84200D00026BCF1000F18D07EB17E +:104D800060682A464946006883685046984706008E +:104D90000BD013E0002AE5D10122401C40B2E1E72C +:104DA00009494A465046FBF79FFDC4F8048005E0D8 +:104DB00006494A465046FBF797FD00263046BDE8B7 +:104DC000F0870000AC010020D850010830510108E4 +:104DD00070B5050011D008200EF032FA040014D08E +:104DE0000EF090FB0D480021C4E9005101684C60B1 +:104DF00004600EF0A7FB012070BD502080F31188E5 +:104E0000BFF34F8FBFF36F8FFEE7502080F3118801 +:104E1000BFF34F8FBFF36F8FFEE70000AC010020A0 +:104E200070B504006FF0010006D0002904D00B4DCE +:104E3000287810B16FF0020070BD2046C4F8E0146D +:104E40004FF40471FBF729FD4FF4347104F504703D +:104E5000FBF723FD01202870002070BDD001002049 +:104E60002DE9F041060025D02A48007830B301270B +:104E70005FF0000404EB440000EBC40006EB800587 +:104E800026F8204028466F800DF0EAFA032C02D362 +:104E9000A01F032815D2D6F8E0040078FEF7EAF93F +:104EA0000123112205F1180107F0CCFBD6F8E0042C +:104EB000007814E06FF00100BDE8F0816FF00200AF +:104EC000FAE7D6F8E0044078FEF7D4F9012311227E +:104ED00005F1180107F0B6FBD6F8E0044078FEF7BC +:104EE000C9F9C4EB0411012306EB8101102201F57D +:104EF0000F7107F0E7FAC4EB041006EB800000F531 +:104F000004700DF007FA641CE4B20C2CB2D300203C +:104F1000D2E70000D001002030B56FF0010228B3C5 +:104F200021B30022551C02EB820302EB420401EB89 +:104F3000830304EBC20293ED030A00EB8204EAB29E +:104F400084ED040A93ED040A0C2A84ED050A93ED1E +:104F5000020A84ED030A93ED010A84ED020A93ED3F +:104F6000000A84ED010ADDD3002030BD104630BDBB +:104F70006FF0010210B5D8B1D1B10022C2EB02141A +:104F800002EB420300EB840401EB830394ED890AF6 +:104F9000521C83ED020A94ED880AD2B283ED010A15 +:104FA00094ED870A0C2A83ED000AE7D3002010BD98 +:104FB000104610BD2DE9F0470F4690F85C109CB0EC +:104FC000044601294FF0000915D00026DFF8F880CB +:104FD000012084F85C0018961996216841450ED18D +:104FE0003A4D0095284607F09DFC8246206807F060 +:104FF00099FC60B10EE002201CB0BDE8F087206E85 +:1050000084F85C6040F0200020660120F4E7BAF1EB +:10501000000F09D0216E4FF0010941F020002066F9 +:10502000484684F85C60E7E720684146884201D042 +:10503000A84201D1264800E0264840F61F72D7F862 +:1050400000C0254BBCF1000F23D0D0F808C0D7F822 +:1050500004802CF4404C4CEA080CC0F808C0D4F88A +:1050600000C08C4501D0AC4507D18968AB6801F020 +:10507000010103F00103194302E0996801F0010105 +:105080000029CDD1BD68396883682943934319430A +:1050900017E0876827F44047876027688F4201D070 +:1050A000AF4207D18968AB6801F0010103F0010349 +:1050B000194302E0996801F001010029B0D181682B +:1050C00091438160ACE700000020024000210240D3 +:1050D0000023024000630258006002582DE9F84F97 +:1050E0000446DFF8ECB30020FA4E0090814694F8B5 +:1050F0005C000D46F84F012808D04FF0010A84F8F3 +:105100005CA0206807F00AFC18B18FE20220BDE81D +:10511000F88F286800280FDB2168B1420CD0CA69DB +:10512000030327D090FAA0F0B0FA80F000F01F033C +:105130000AFA03F00243CA61D5E900124FF00C0CE1 +:1051400020681F23C1F384610CEA921C02F01F0245 +:10515000604493409140026B9A430A430263206883 +:1051600007F0DCFB8046206807F0D4FB58EA00001B +:1051700003D054E1C0F38460D8E729684FF0040CF1 +:1051800020680723AA680CEAD15CC1F3045160448B +:105190008B408A4041699943114341612068B04284 +:1051A00004D1C2686969C2F3C1020BE0CB4A12683C +:1051B000BAEB127F02D0C168C90605D4C26869691A +:1051C000C2F38202520004E0C268696902F0100270 +:1051D000520891402A69042A5AD02B6800EB8202B7 +:1051E000B04202F1600207D103F0F84013680843AF +:1051F00040F00040106008E0D2F800C003F0F84032 +:1052000008430CF00041014311602068B0421CD1FA +:105210002969EA6900EB8100016E21F08071114378 +:10522000016695F8201020682A6901290AD000211A +:10523000B0429ED100EB8200026E22F000720A435F +:105240000266ECE04FF00071F2E795F821102A6950 +:10525000012917D05FF0000100EB8200026E22F0FE +:1052600000420A430266297E20682A6901290CD07F +:105270000021036902F01F02914023F4F0420A4327 +:105280000261CCE04FF00041E6E74FF40061F0E747 +:10529000B04273D1002107F037FB000320684FF0C4 +:1052A00000016DD007F030FB90FAA0F0B0FA80F169 +:1052B0002868020369D090FAA0F0B0FA80F0814229 +:1052C00004D100222068114607F030FB206801213C +:1052D00007F01AFB000320684FF0010158D007F0D7 +:1052E00013FB90FAA0F0B0FA80F12868020354D0C2 +:1052F00090FAA0F0B0FA80F0814204D12068002238 +:10530000012107F013FB2068022107F0FDFA0003DA +:1053100020684FF0020143D007F0F6FA90FAA0F0AF +:10532000B0FA80F1286802033FD090FAA0F0B0FAFA +:1053300080F0814204D120680022022107F0F6FAB1 +:105340002068032107F0E0FA000320684FF0030112 +:105350002ED007F0D9FA90FAA0F0B0FA80F12868C0 +:1053600002032AD090FAA0F0B0FA80F0814256D120 +:1053700020680022032107F0D9FA50E020E0FFE77F +:1053800007F0C2FAC0F3846192E7C0F3846096E745 +:1053900007F0BAFAC0F38461A7E7C0F38460ABE713 +:1053A00007F0B2FAC0F38461BCE7C0F38460C0E7E1 +:1053B00007F0AAFAC0F38461D1E7C0F38460D5E7AF +:1053C000016E2A7801F0F841B1EB826F03D1016ED2 +:1053D00021F00041016620682978426E02F0F8420F +:1053E000B2EB816F03D1416E21F00041416620682C +:1053F0002978826E02F0F842B2EB816F03D1816EA0 +:1054000021F00041816620682978C26E02F0F842DE +:10541000B2EB816F03D1C16E21F00041C1662068FB +:10542000816811F0010F52D12D4AB042EB68296812 +:105430000FD1D0F8B0C003F01808C1F3130322FA5B +:1054400008F20A402CEA030C4CEA020CC0F8B0C087 +:105450000EE0D0F8C0C003F01808C1F3130322FA1D +:1054600008F20A402CEA030C4CEA020CC0F8C0C057 +:10547000E968594570D11B482268DFF86CC0DFF835 +:105480006CB08242DFF868E01A481B4BDFF86C8092 +:1054900043D12968614565D0B1EB4C0C6DD07145A5 +:1054A00069D0A1F1865CBCF1100C75D0DFF850C05A +:1054B00061456DD0DFF84CC061457FD0814273D02B +:1054C000994247D01048814222D1104876E0B3E09B +:1054D0000000FF4700600258002102400010005CFD +:1054E000FFFF0F000020024002003004400020199E +:1054F0000800900C0008302E00106032002090361A +:105500002000F0140004002A00002143000052474C +:105510006E48814251D16E4850E0BA421DD129688F +:1055200061451FD0A1F1066CBCF1040C25D071457A +:1055300021D0A1F1865CBCF1100C2DD0DFF894C114 +:10554000614525D0DFF890C1614537D081422BD02D +:105550009942DDD1404631E040E0B2422DD1296888 +:10556000614501D1012029E0A1F1066CBCF1040CD8 +:1055700003D0714503D1594820E058461EE0A1F1FF +:10558000865CBCF1100C07D0DFF848C1614505D13D +:10559000534813E000E007E052480FE0DFF838C15D +:1055A00061450BD0814201D1184607E04E48414584 +:1055B00004D0814201D14D4800E00020B2420DD01C +:1055C000D16903031AD090FAA0F0B0FA80F000BFBE +:1055D00000F01F030AFA03F00143D161D5F800C0BF +:1055E000BCF1000F28DA424B20684249DFF808A1DD +:1055F000984201D0B84203D10A4602E0800EE7E7A4 +:1056000052469268984202F0E07201D0B84209D145 +:105610009D68D7F8088005F0010508F0010845EA03 +:10562000080502E0B56805F0010555B1216E4FF09F +:10563000010941F020002066002084F85C00484603 +:1056400065E52E4DAC451CD115021AD4B042F3D1FC +:10565000984202D0B84200D051468B6842F4000014 +:1056600023F0E07202438A60264925480968B1FBAD +:10567000F0F04000801C00E0401E00900028FBD1AC +:10568000DAE7214DAC450CD1D5010AD4B042D3D1D3 +:10569000984202D0B84200D051468B6842F08070E8 +:1056A0000EE01A4DAC45C7D15502C5D4B042C3D1A6 +:1056B000984202D0B84200D051468B6842F4800034 +:1056C00023F0E07202438A60B6E700000000844BDA +:1056D0000000B84F2000F0140004002A8000501D84 +:1056E0000002B025000180210040C03A0080F03E59 +:1056F000002002400023024000630258000052C70D +:10570000400D030088000020000021C3000084CB6E +:105710002DE9F8434FF0000504002E46009502D015 +:10572000206E18B108E00120BDE8F883204600F0A3 +:1057300043F9656684F85C5020688168C1F3407164 +:1057400019B181688E4A1140816020688168C1F377 +:10575000007181B981688B4A114041F080518160AC +:105760008A4989480968B1FBF0F0401C00E0401EFE +:1057700000900028FBD120688168C1F3007141B915 +:10578000216E012641F010012166616E41F0010198 +:10579000616607F0C3F8216EC90600D420B1206EFF +:1057A000012640F01000E0E0206E20F4807040F010 +:1057B0000200206620688168754D11F0010F1ED12E +:1057C000744B754A984201D0904207D19968976806 +:1057D00001F0010107F00107394302E0A96801F077 +:1057E000010161B9984201D0904201D16B4800E0BB +:1057F0006B488268616822F47C120A4382602168E7 +:10580000A9421FD1637ED4E90207E26B5B033A43EE +:10581000082805D00C280FD01C280FD018280FD02E +:105820005FF0000000F00C0794F8200043EA470303 +:105830001A4342EA00400FE00420F3E70820F1E7B2 +:105840001C20EFE7627E94F82030A768E06B5203DB +:1058500042EA03423843104394F82020012A04D13D +:10586000A28C504B03EB42421043A26A2AB1E36A76 +:1058700002F47872024343EA0200CA68A9420BD1DB +:10588000494B1A400243CA602068626B016921F0EB +:1058900040611143016103E0444B1A400243CA6076 +:1058A000206807F03BF80746206807F033F8074305 +:1058B0004ED12068A946484506D1217E94F838206B +:1058C000890341EA420103E0227E216B41EA8231F1 +:1058D000C26844F203039A430A43C26094F8440046 +:1058E0000128206803D0016921F0010122E0484528 +:1058F0000ED1D4E9121CD4E9143502692C4F41EAC7 +:105900000C012B433A401943114341F0010111E0CE +:10591000D4E91317B4F848C0DFF89880636D0269C2 +:1059200008EB0C4C224D394343EA0C036D1E2A4010 +:105930001943114301612068236C026922F070420F +:105940001A4302612068484502D02046FCF732FC29 +:105950002069012820680BD0016B21F00F01016341 +:10596000206E20F0020040F0010020663046DBE6A9 +:10597000E269016B521E21F00F011143EFE70000B5 +:10598000C0FFFF5FC0FFFF7F400D030088000020C5 +:105990000060025800200240002102400023024023 +:1059A000006302580000FEFF0740F0FF03C0F0FF55 +:1059B0001FF800FC0100FFFFF0B5B5B0064614214A +:1059C0002EA8FAF76AFFB8216846FAF766FF314950 +:1059D000306888425BD1022000224FF40021009100 +:1059E000CDE901201024154606AACDE90340C023C5 +:1059F000059082E8290068460995289503F0B2FBD6 +:105A000008B1FFF761F82448016841F02001016006 +:105A1000006800F0200033901F480830016841F012 +:105A200001010160016801F001013391016841F059 +:105A300004010160006803272EA9309500F00400DE +:105A400033902020CDE92E07144801F0A1FD144821 +:105A50002EA9CDE92E47309501F09AFD114C092170 +:105A600011484FF4807C021584E82300D700C4E974 +:105A70000352C3142046C4E907C56562C4E905376B +:105A800000F07CFE08B1FFF71FF8B465A66335B0DF +:105A9000F0BD000000200240D84402580000025827 +:105AA00000080258F8030020100002402DE9F84FCA +:105AB000044601F085FE00903CB194F835000228C0 +:105AC00006D0802161650020E4E00120BDE8F88F68 +:105AD000C74DC74EC649183520683036DFF81483E5 +:105AE000DFF814938842DFF814A3DFF814B32ED044 +:105AF000A8422CD0B0422AD0404528D0484526D0D4 +:105B0000504524D0584522D0BD4A183290421ED06C +:105B1000BC4A90421BD0BB4A1832904217D0B94AB7 +:105B20003032904213D0B74A483290420FD0B54A33 +:105B3000603290420BD0B34A7832904207D0B14ADB +:105B40009032904203D0AF4AA832904209D1026805 +:105B500022F01E0202602068426922F08002426147 +:105B600003E0026822F00E02026027688F42384686 +:105B70004DD0A8424BD0B04249D0404547D04845CF +:105B800045D0504543D0584541D09D4A18329042A7 +:105B90003DD09C4A90423AD09A4A1832904236D030 +:105BA000984A3032904232D0964A483290422ED0B3 +:105BB000944A603290422AD0924A7832904226D05B +:105BC000904A9032904222D08E4AA83290421ED003 +:105BD0008D4A90421BD08C4A1432904217D08A4A88 +:105BE0002832904213D0884A3C3290420FD0864AE5 +:105BF000503290420BD0844A6432904207D0824A9D +:105C00007832904203D0804A8C32974204D1206E81 +:105C1000026822F48072026075492068884228D0A8 +:105C2000A84226D0B04224D0404522D0484520D0BA +:105C300050451ED058451CD071491831884218D0A3 +:105C40007049884215D06F491831884211D06D498A +:105C5000303188420DD06B494831884209D06949BA +:105C60006031884205D067497831884201D0654962 +:105C70009031016821F0010101600EE001F0A0FD0A +:105C80000099401A052808D92022626503210020C6 +:105C900084F8351084F8340017E73868C007EDD170 +:105CA000534A0121206890422ED0A8422CD0B04205 +:105CB0002AD0404528D0484526D0504524D05845C4 +:105CC00022D04F4B183398421ED04E4B98421BD0D7 +:105CD0004C4B1833984217D04A4B3033984213D06C +:105CE000484B483398420FD0464B603398420BD014 +:105CF000444B7833984207D0424B9033984203D0BC +:105D0000404BA833984208D194F85C703F23A06DB3 +:105D100007F01F07BB40836007E094F85C30A06D7C +:105D200003F01F0301FA03F34360206890424DD053 +:105D3000A8424BD0B04249D0404547D0484545D015 +:105D4000504543D0584541D02D4A183290423DD05D +:105D50002C4A90423AD02B4A1832904236D0294AE7 +:105D60003032904232D0274A483290422ED0254AD3 +:105D7000603290422AD0234A7832904226D0214A7B +:105D80009032904222D01F4AA83290421ED01E4A22 +:105D900090421BD01C4A1432904217D01A4A283223 +:105DA000904213D0184A3C3290420FD0164A5032DB +:105DB00090420BD0144A6432904207D0124A783293 +:105DC000904203D0104A8C3290420BD1D4E9190290 +:105DD0004260E06E30B1026822F480720260D4E961 +:105DE0001C024260002084F8351084F834006DE60F +:105DF000100002405800024070000240880002403B +:105E0000A000024010040240085402582DE9F05F3F +:105E100028B190F83510022904D080214165012075 +:105E2000BDE8F09F904C904B0168183C18338E4AA7 +:105E3000DFF83C92A1428D4CDFF838E28E4FDFF85C +:105E40003CB2DFF83CA28F4D8F4E31D091422FD023 +:105E500099422DD0A1422BD0494529D0714527D058 +:105E6000B94225D0DFF810C20CF1180C61451FD0E3 +:105E7000DFF808C2ACF1600C614519D0DFF8FCC155 +:105E8000ACF1480C614513D0DFF8F0C1ACF1300C37 +:105E900061450DD0DFF8E4C1ACF1180C614507D0C5 +:105EA000594505D0514503D0A94201D0B1422CD16A +:105EB000DFF8B4C14FF0040880F83580ACF1180C5D +:105EC00061451DD091421BD0994219D0A14217D0F3 +:105ED000494515D0714513D0B94211D066481830E4 +:105EE00081420DD065486038814209D06348483806 +:105EF000814205D061483038814201D05F4818386E +:105F0000086820F001000860ABE0D1F800C02CF078 +:105F10000E08DFF854C1C1F80080ACF1180C01681C +:105F2000614527D0914225D0994223D0A14221D06A +:105F300049451FD071451DD0B9421BD0DFF838C18B +:105F40000CF1180C614515D0DFF830C1ACF1600CD4 +:105F500061450FD0DFF824C1ACF1480C614509D090 +:105F6000DFF818C1ACF1300C614503D0DFF80CC18B +:105F7000ACF1180CD1F800C02CF0010CC1F800C035 +:105F8000DFF8E4804FF0010C0168A8F118084145E2 +:105F900046D0914244D0994242D0A14240D0494596 +:105FA0003ED071453CD0B9423AD0334A1832914282 +:105FB00036D0324A603A914232D0304A483A914221 +:105FC0002ED02E4A303A91422AD02C4A183A914289 +:105FD00026D0594524D0514522D0A94220D0B142E3 +:105FE0001ED02A4A91421BD0284A1432914217D01F +:105FF000264A2832914213D0244A3C3291420FD093 +:10600000224A503291420BD0204A6432914207D04A +:106010001E4A7832914203D01C4A8C32914218D1E8 +:10602000016E0A6822F480720A6090F85C20816D2B +:1060300002F01F020CFA02F24A60D0E919124A601B +:10604000C16E31B10A6822F480720A60D0E91C1274 +:106050004A600022016D80F835C080F8342001B11B +:1060600088470020DCE6000028000240580002407B +:106070007000024088000240A0000240700402400C +:1060800088040240A0040240B804024008540258A8 +:10609000406D70472DE9FC5F0446F74E0020DFF8A5 +:1060A000D88300904FF41652F44808F11808A56DF3 +:1060B000DFF8C493DFF8C0A3016809F13009206854 +:1060C0000AF1480AB1FBF2F1B04201912F68D5F80C +:1060D00000C0DFF8ACB335D04146884232D04845E5 +:1060E00030D050452ED058452CD0E5491831884243 +:1060F00028D0E3493031884224D0E14948318842F0 +:1061000020D0E04988421DD0DE491831884219D09C +:10611000DC493031884215D0DA494831884211D003 +:10612000DFF860E30EF1600E70450BD0D54A78328F +:10613000904207D0D34B9033984203D0D149A83135 +:1061400088427DD194F85C20082102F01F0201FAF8 +:1061500002F23A424AD0B04232D0404530D04845AF +:106160002ED050452CD058452AD0C54A18329042DE +:1061700026D0C34A3032904222D0C14A483290429F +:106180001ED0C04A90421BD0BE4A1832904217D04F +:10619000BC4A3032904213D0BA4A483290420FD0B3 +:1061A000B84A603290420BD0B64A7832904207D05B +:1061B000B44A9032904203D0B24AA832904203D1FE +:1061C000026802F0040202E0026802F008026AB10A +:1061D000026822F00402026094F85C0000F01F00E4 +:1061E0008140A960606D40F00100606594F85C003A +:1061F000012100F01F008140394240D02068B042A8 +:1062000034D0404532D0484530D050452ED0584546 +:106210002CD09B4A1832904228D0994A3032904272 +:1062200024D0974A4832904220D0964A90421DD0BE +:10623000944A1832904219D0924A3032904200E08B +:10624000AFE113D08F4A483290420FD08D4A60326E +:1062500090420BD08B4A7832904207D0894A9032D4 +:10626000904203D0874AA83290427DD1406910F015 +:10627000800F04D0A960606D40F00200606594F862 +:106280005C00042100F01F00814039423ED02068AC +:10629000B04232D0404530D048452ED050452CD069 +:1062A00058452AD0764A1832904226D0744A303265 +:1062B000904222D0724A483290421ED0714A904297 +:1062C0001BD0704A1832904217D06E4A303290423A +:1062D00013D06C4A483290420FD06A4A60329042E2 +:1062E0000BD0684A7832904207D0664A903290428A +:1062F00003D0644AA83290424ED1006810F0020FD9 +:1063000004D0A960606D40F00400606594F85C0002 +:10631000102100F01F008140394258D02068B0425F +:1063200034D0404532D0484530D050452ED0584525 +:106330002CD0534A1832904228D0514A30329042E1 +:1063400024D04F4A4832904220D04E4A90421DD02D +:106350004C4A1832904219D04A4A3032904215D0F5 +:10636000484A4832904200E014E00FD0454A60327B +:1063700090420BD0434A7832904207D0414A903243 +:10638000904203D03F4AA832904207D1006800F003 +:10639000080006E0006872E70068B7E7006800F0F0 +:1063A0000400A0B1A96020680168490304D5006811 +:1063B000000308D5A16C07E00168C90503D4016892 +:1063C00021F008010160216C09B12046884794F84A +:1063D0005C00202100F01F008140394279D0206804 +:1063E000B04232D0404530D048452ED050452CD018 +:1063F00058452AD0224A1832904226D0204A3032BC +:10640000904222D01E4A483290421ED01D4A9042ED +:106410001BD01C4A1832904217D01A4A3032904290 +:1064200013D0184A483290420FD0164A6032904238 +:106430000BD0144A7832904207D0124A90329042E0 +:1064400003D0104AA832904203D1006800F0100037 +:1064500002E0006800F00200B0B3A96094F83500D3 +:106460000428206801680FD049037ED50068000326 +:106470002BD4616C2AE0000010000240880000204C +:10648000700002401004024021F0160101602068F3 +:10649000416921F080014161206C08B9A06C20B1F4 +:1064A0002068016821F00801016094F85C303F2108 +:1064B000012003F01F0300229940A96084F83500F1 +:1064C00084F83420216D65E003E0E16B09B12046DA +:1064D0008847606D00287DD0606DC00759D0206866 +:1064E000042184F83510B0422BD0404529D04845CE +:1064F00027D0504525D0584523D09D49884220D0EB +:106500009B49183188421CD099493031884218D0B3 +:106510009849884215D097491831884211D0954939 +:10652000303188420DD093494831884209D0914991 +:106530006031884205D08F497831884201D08D4939 +:106540009031016821F00101016020680099019AF1 +:10655000491C0091914202D80168C907F6D1006830 +:10656000C00710D003200FE0FFE70168C905ACD4D5 +:1065700003680121002223F01003036084F8351022 +:1065800084F83420A1E7012084F83500002084F845 +:106590003400E16C00291DD002B02046BDE8F05F58 +:1065A0000847754988421DD073491431884219D073 +:1065B00071492831884215D06F493C31884211D049 +:1065C0006D49503188420DD06B496431884209D001 +:1065D000694900E084E07831884203D066498C3113 +:1065E00088427DD194F85C800427016808F01F0878 +:1065F00007FA08F717EA0C0F009746D04F0744D563 +:1066000000980F04686003D5C8033CD4A16CC1E7AF +:10661000880638D42068B0422DD055496039884268 +:1066200029D0484527D0504525D0584523D050493A +:10663000884220D04E49183188421CD04C49303114 +:10664000884218D04B49884215D04A4918318842AF +:1066500011D04849303188420DD0464948318842EE +:1066600009D0704507D0904205D0984203D04149E7 +:10667000A831884203D1016821F0080102E00168D5 +:1066800021F004010160216C84E7022707FA08F772 +:1066900017EA0C0F00974ED08F074CD500980F04C7 +:1066A000686003D5C80344D4616C73E7880640D49E +:1066B0002068B0422FD02E49603988422BD04845FF +:1066C00029D0504527D0584525D02949884222D085 +:1066D0002749183188421ED025493031884200E0D0 +:1066E00044E018D02349884215D022491831884205 +:1066F00011D02049303188420DD01E49483188429E +:1067000009D0704507D0904205D0984203D019496E +:10671000A831884203D1016821F0140102E0016828 +:1067200021F00A010160012184F83510002084F86D +:106730003400E16B2EE7082202FA08F212EA0C0F8D +:1067400014D0090712D5016821F00E01016094F8F8 +:106750005C100120002201F01F0100FA01F16960C4 +:10676000606584F8350084F8342012E7BDE8FC9FAA +:106770008800024010040240085402582DE9F05FDE +:10678000044601F01DF8002C07467DD0E24E0221A0 +:1067900020684FF00308DFF884934FF00005DFF81E +:1067A00080A3B042DFF87CB334D0DB4A1832904289 +:1067B00030D048452ED050452CD058452AD0D94A03 +:1067C0001832904226D0D74A3032904222D0D54A51 +:1067D000483290421ED0D44A90421BD0D24A18323E +:1067E000904217D0D04A3032904213D0CE4A48322D +:1067F00090420FD0CC4A603290420BD0CA4A7832D5 +:10680000904207D0C84A9032904203D0C64AA8327C +:1068100090427DD184F83510B04284F834502ED0A7 +:10682000BD49183188422AD0484528D0504526D045 +:10683000584524D0BB491831884220D0B94930315D +:1068400088421CD0B7494831884218D0B64988429E +:1068500015D0B5491831884211D0B349303188423A +:106860000DD0B1494831884209D0AF4960318842E2 +:1068700005D0AD497831884201D0AB4990310168EB +:1068800021F00101016008E025E100BF00F098FF60 +:10689000C01B052801D920211AE120680068C00723 +:1068A000F4D1D4E902032168103418438E4694E8E9 +:1068B0008410D4E9033809683A4310439B4A40EAFC +:1068C0000C00676918431140103C40EA0800042F8F +:1068D00040EA010003D1D4E90B1211430843616877 +:1068E000A1F12902052A0BD9163A032A08D9083A38 +:1068F000012A05D9083A032A02D97439032901D893 +:1069000040F48010CEF800002068676A406900E01B +:1069100020E0042F20F0070047EA00070DD1D4E95A +:106920000A01074349B12046FDF762FE28B1402025 +:106930006065012184F83510CDE02068476120466C +:10694000FDF774FD94F85C203F2102F01F02914096 +:10695000816055E0764A90421BD0754B14339842C3 +:1069600017D0734B2833984213D0714B3C33984265 +:106970000FD06F4B503398420BD06D4B643398421D +:1069800007D06B4B7833984203D0694B8C339842D5 +:106990007ED184F8351084F83450664B0168A268C3 +:1069A00001EA030E402A74D0802A73D05FF00002FF +:1069B000D4E90378D4E9053142EAD70242EAD8089B +:1069C0005B4AD4E9077C48EAD30848EAD10141EAA6 +:1069D000D701524241EA1C11142341EA0E01016021 +:1069E00020681044B0FBF3F08000E0652046FDF71E +:1069F0001DFD94F85C20012102F01F0291404160CE +:106A00002068B04257D044491831884253D0484595 +:106A100051D050454FD058454DD042491831884249 +:106A200049D040493031884245D03E4948318842BA +:106A300041D03D4988423ED03B49183188423AD046 +:106A400039493031884236D037494831884232D0CE +:106A50003549603188422ED03349783188422AD076 +:106A600031499031884226D02F49A831884222D01E +:106A70002F4988421FD02E49143188421BD02C49FF +:106A80002831884217D02A493C31884213D002E08D +:106A90001DE017E018E02649503188420BD0244908 +:106AA0006431884207D022497831884203D0204996 +:106AB0008C31884229D12046FDF712FDA06880283C +:106AC0000CD00CE0102273E74FF4804270E74021B5 +:106AD000616584F835800120BDE8F09F6560216E16 +:106AE00020790860D4E9190141606068401E0728D8 +:106AF00008D82046FDF742FDE06E0560D4E91C0190 +:106B0000416002E0E566256765670120656584F8F8 +:106B100035000020E0E70000100002404000024085 +:106B20005800024070000240100402403F8010FEF6 +:106B3000085402580F00FEFF2DE9F84F04008C4660 +:106B40004FF00000009014D094F83400012812D0C7 +:106B500094F835500120002184F83400012D0CD028 +:106B6000C00260650120009084F834100098BDE8F0 +:106B7000F88F0120FBE70220F9E78C4D0226206800 +:106B800084F83560A8428A4D61658A4E8A4FDFF8E5 +:106B90002C82DFF82C92DFF82CA2DFF82CB226D062 +:106BA000A84224D0B04222D0B84220D040451ED0C6 +:106BB00048451CD050451AD0584518D083498842C2 +:106BC00015D082491831884211D08049303188422D +:106BD0000DD07E494831884209D07C4960318842D5 +:106BE00005D07A497831884201D0784990310168DE +:106BF00021F00101016061462046FDF723FD6B494C +:106C0000206888422CD0A8422AD0B04228D0B8426E +:106C100026D0404524D0484522D0504520D0584564 +:106C20001ED06A4A90421BD0684A1832904217D050 +:106C3000664A3032904213D0644A483290420FD0B4 +:106C4000624A603290420BD0604A7832904207D05C +:106C50005E4A9032904203D05C4AA83290420CD1F6 +:106C6000026822F01E0242F016020260206C88B117 +:106C70002068026842F008020BE0026822F00E026F +:106C800042F00A020260206C20B12068026842F0E3 +:106C900004020260206888424BD0A84249D0B0422A +:106CA00047D0B84245D0404543D0484541D05045F3 +:106CB0003FD058453DD0454A90423AD0434A1832D9 +:106CC000904236D0414A3032904232D03F4A483228 +:106CD00090422ED03D4A603290422AD03B4A7832D0 +:106CE000904226D0394A9032904222D0374AA83278 +:106CF00090421ED0364A90421BD0354A1432904200 +:106D000017D0334A2832904213D0314A3C32904255 +:106D10000FD02F4A503290420BD02D4A643290420D +:106D200007D02B4A7832904203D0294A8C329042C5 +:106D30000DD1206E0268D20303D5026842F480723E +:106D40000260E06E18B1026842F48072026020684E +:106D5000884226D0A84224D0B04222D0B84220D0C7 +:106D600040451ED048451CD050451AD0584518D033 +:106D70001649884215D015491831884211D0134957 +:106D8000303188420DD011494831884209D00F492D +:106D90006031884205D00D497831884201D00B49D5 +:106DA0009031016841F001010160DFE6100002400E +:106DB000280002404000024058000240700002409B +:106DC00088000240A0000240B800024010040240C7 +:106DD0000854025870B5044600F0F2FC0546601CE9 +:106DE00002D004480078044400F0EAFC401BA042B2 +:106DF000FAD370BD7C000020704770477047704721 +:106E00002DE9FF5FDFF80CB304460BF10401DBF85A +:106E1000000025680F68AA468007D5F85090696D74 +:106E2000D5F850806E6D2A6DD5F854C02B6D00EAF0 +:106E30008770009009F470496F6D286D01EA0901AF +:106E40000191DAF85410DAF85490DAF8505008F05A +:106E50000F0806EA0806029602F0F00203F07153EA +:106E60006FEA09061F4000F060700CEA020CCDF8D2 +:106E70000CC0F20501EA00090CD4E843C00509D4AE +:106E800000214FF48073CAF85030CBF80010204630 +:106E9000FFF7B5FF700512D4E84340050FD4206812 +:106EA00000234FF48068D0F8DC20D0F8E410C0F85C +:106EB0005080CBF800301140204600F042FBDFF854 +:106EC00058A2009850B12268830F00EA0A001065AA +:106ED000CBF8003020460099FFF78EFF019850B1A3 +:106EE0002268830F00EA0A001065CBF800302046C4 +:106EF000019900F028FB029850B12268830F00EA44 +:106F00000A001065CBF800302046029900F011FB12 +:106F1000039850B12268830F00EA0A001065CBF88D +:106F200000302046039900F005FB30050CD4E843FF +:106F3000000509D4236800204FF400621A65CBF8DD +:106F40000000204600F000FBB00512D4E8438005A5 +:106F50000FD4206800234FF40078D0F8D820D0F860 +:106F6000E010C0F85080CBF800301140204600F00F +:106F7000E9FA30030CD4E843000309D42368002065 +:106F80004FF400221A65CBF80000204600F0D0FA3A +:106F9000F0030CD4E843C00309D4236800204FF465 +:106FA00080321A65CBF80000204600F0C9FA700361 +:106FB0000CD4E843400309D4226800204FF4802316 +:106FC0001365CBF80000204600F0B9FAB0030FD4E7 +:106FD000E84380030CD4236800204FF400321A6584 +:106FE000CBF80000D4F89C0040F08000C4F89C006E +:106FF000B9F1000F0BD022684FEA997309EA0A0031 +:107000001065CBF8003049462046FFF7F7FE5FB128 +:107010002268BB0F07EA0A001065CBF80030D4F8ED +:107020009C003843C4F89C003C492068884268D1E1 +:10703000606881468068800763D0D9F82060D9F8FD +:107040002410D9F82080D9F82400D9F820C0D9F824 +:107050002470D9F82030D9F82450D9F8202003F42E +:10706000FC4306F00F0AD9F824601D40D9F824B07B +:1070700008F030080CF4C07C02F4F02211EA0A0196 +:1070800000EA080807EA0C0706EA0206D9F820A079 +:1070900004D0C9F82010204600F04EFAB8F10000E4 +:1070A00005D0616808624146204600F047FA6FEA61 +:1070B0000B0040060ED46FEA0A0040060AD460684E +:1070C0004021C36BC26B01622046190C02F03F02E3 +:1070D00000F033FA2FB1606807623946204600F0AD +:1070E0002AFA35B160680562D4F89C002843C4F8D8 +:1070F0009C0036B160680662D4F89C003043C4F846 +:107100009C00D4F89C00002802D02046FFF775FEB2 +:10711000BDE8FF9F10A80040FFFFCF3F00A0004048 +:107120002DE9F04194B08D494C2204466846F9F7A8 +:1071300058FB64B18A4D2068A84202D100F58070E6 +:10714000606094F898004FF0000820B108E001203A +:1071500014B0BDE8F081204684F8998000F002F96F +:107160002068816921F01001816100F029FB03276B +:10717000064604E000F024FB801B0A2811D8206892 +:1071800080690007F6D42068816941F001018161BE +:1071900000F016FB06460DE000F012FB801B0A28EB +:1071A00008D9D4F89C0040F00100C4F89C0084F891 +:1071B0009870CCE720688069C007EDD020688169AD +:1071C00041F002018161207C01282068816937D06B +:1071D00041F040018161607C01282068816932D0E2 +:1071E00021F480418161A07C0128206881692DD033 +:1071F00041F4805181612068A268816921F4407165 +:10720000114381612068816921F0A40181612068B6 +:10721000016921F010010161E068012819D010B363 +:1072200002281BD02068816941F0800181612068BB +:10723000016941F010010161E06803280ED012E0FD +:1072400021F04001C6E741F48041CBE721F48051B1 +:10725000D0E72068816941F0040103E0206881697A +:1072600041F020018161207E6FF0FF02D4E90773B5 +:10727000A68A1102400602EB0727A0F100703843EE +:1072800027685B1E184301EB06463043F861A0688F +:10729000B0F5407F11D104F12800A68C6FF00F0CDF +:1072A00089C801EB0641401E02EB0322104322680D +:1072B0000CEB071318430843D060206E30B12068F0 +:1072C000626ED0F8C0101143C0F8C010D4E9171294 +:1072D0006846D14209D02168A36E51F8C82F50F8F2 +:1072E000233022F007021A430A60216C49B1216859 +:1072F000626C51F8BC3F50F8226023F00702324321 +:107300000A60A16C51B12168E36C51F8BC2F50F8B0 +:10731000233022F0700242EA03120A60216D51B15B +:107320002168626D51F8BC3F50F8220023F4E062FE +:1073300042EA002008602068A84204D160688168A1 +:1073400021F003018160C4F894800121C4F89C807D +:1073500084F898102046FDF7EBFBF9E69C490108FC +:1073600000A000402DE9F047B4B0814614212EA8BA +:10737000F9F793FAB8216846F9F78FFA664C0026B8 +:10738000D9F800004FF08051644A0C3C614F4FF037 +:107390000208614D9042DFF888A14FF0090938D109 +:1073A00000201B914A13CDE90020684601F0DAFE67 +:1073B00008B1FDF789FB3868401C3860012807D107 +:1073C000286840F480702860286800F4807033904A +:1073D000206840F008002060206803222E922EA929 +:1073E00000F00800CDE92F863196CDE93290504665 +:1073F00000F0CEF800220521132000F08FFA1320B0 +:1074000000F07FFA00220521152000F087FA1520F0 +:107410003BE0444A90423DD100201B914FF4004292 +:10742000CDE90020684601F09DFE08B1FDF74CFB58 +:107430003868401C3860012807D1286840F4807003 +:107440002860286800F480703390206840F00200C3 +:107450002060206860222E922EA900F00200CDE963 +:107460002F863196CDE932902F4800F091F8002216 +:107470000521142000F052FA142000F042FA0022F4 +:107480000521162000F04AFA162000F03AFA34B02E +:10749000BDE8F087254A9042F9D100201B914FF4B6 +:1074A0000042CDE90020684601F05CFE08B1FDF71E +:1074B0000BFB3868401C3860012807D1286840F46D +:1074C00080702860286800F480703390206840F055 +:1074D0000800206020684FF440512E91052200F0F2 +:1074E0000800CDE92F862EA93196CDE932205046ED +:1074F00000F04EF8002205219F2000F00FFA9F2097 +:1075000000F0FFF900220521A02000F007FAA020DA +:10751000BBE7000004000020EC44025800A000403B +:10752000000C025800A400400004025800D400409F +:107530007047704770477047704770477047704793 +:107540007047704770477047704700002DE9F04161 +:10755000084F01250024064605FA04F0304203D006 +:1075600057F8240000B18047641CE4B2102CF3D318 +:10757000BDE8F081409B00204FF0B04110B5D1F83C +:107580008820024203D0C1F88800FFF7DFFF10BD5A +:107590002DE9F84F03247A4D00234FF001094FF0F5 +:1075A000B04B4FF00F0AE4E009FA03F6324078D00E +:1075B0000F7907F00307012F01D0022F1AD1876836 +:1075C0004FEA430ED1F80CC004FA0EF827EA080778 +:1075D0000CFA0EFC4CEA070CC0F808C0476891F89A +:1075E00004C0B743CCF3001C0CFA03FC4CEA070CB4 +:1075F000C0F804C00E79F643B6070BD0C6684FEA50 +:1076000043088F6804FA08FC26EA0C0607FA08F714 +:107610003743C7600E7906F00306022E12D1DE084A +:107620000F694FEA437C00EB8606B646366A4FEA9E +:10763000DC6C0AFA0CF807FA0CF726EA080637435E +:10764000CEF820700F7906684FEA430807F0030769 +:1076500004FA08FC07FA08F726EA0C063743076025 +:107660004E6816F4403F1CD0464E376847F002077C +:10767000376036689F0706F00206009623F003067F +:1076800006F1B046B6463F0FD6F80864DFF8F8803A +:107690000AFA07FC404526EA0C0603D14FF0000C1D +:1076A0003AE065E0DFF8E4C0604502D14FF0010C3C +:1076B00032E0DFF8DCC0604502D14FF0020C2BE075 +:1076C000DFF8D0C0604502D14FF0030C24E0DFF8B2 +:1076D000C8C0604502D14FF0040C1DE0DFF8BCC00B +:1076E000604502D14FF0050C16E0DFF8B4C06045EC +:1076F00002D14FF0060C0FE0DFF8A8C0604502D1C0 +:107700004FF0070C08E0DFF8A0C0604502D14FF051 +:10771000090C01E04FF00A0C0CFA07FC4CEA060CCD +:10772000CEF808C44F68DBF80060FF0226EA0206C4 +:1077300000D516435F46CBF80060D1F804C0DBF8F3 +:1077400004605FEA8C2C26EA020600D516437E60B0 +:107750006E684F6826EA0206BF0300D516436E60C6 +:107760002E684F6826EA0206FF0300D516432E60F6 +:107770005B1C0A6832FA03F67FF416AFBDE8F88F97 +:1077800080000058F44402580000025800040258D7 +:1077900000080258000C0258001002580014025849 +:1077A00000180258001C02580024025800690840C2 +:1077B00000D0012070470AB1816170470904FBE7DE +:1077C00001488068704700007C0000200248816802 +:1077D00002781144816070477C000020032010B5BE +:1077E00000F0BCF802F0FEFA0F4A10491468136862 +:1077F000C4F3032203F00F038A5CC95C02F01F028A +:1078000001F01F01D0400A4A20FA01F11160094934 +:1078100008600F2000F010F808B1012010BD00F042 +:107820004DF8002010BD000018440258104A01080D +:107830008C0000208800002010B5102804468AB073 +:107840002AD200220146A12000F068F8A12000F011 +:1078500058F8154804601548016841F080710160CE +:10786000006808A900F080700990684602F046FAA6 +:1078700002F0A6FA0E49400000220E4CB0FBF1F1D6 +:107880000D4840F2E7330460C0E90332491EC0E905 +:10789000011203F06BFD10B101200AB010BD0648C3 +:1078A00003F096FDF9E7000080000020EC44025848 +:1078B00040420F0000E000408C110020074882B0D9 +:1078C000016841F002010160006800220F2100F010 +:1078D00002000090901E02B000F020B8F44402585C +:1078E00000280DDB410900F01F028900012001F191 +:1078F000E0219040C1F88001BFF34F8FBFF36F8F3D +:107900007047002809DB410900F01F0289000120AF +:1079100001F1E0219040C1F8000170470E4BF0B436 +:107920001B680D46C3F30223C3F10706042E00D9DA +:107930000426191D072901D2002300E0DB1E0124C3 +:1079400004FA06F19C40491E2940641E99401440E7 +:107950002143F0BC09F02BBC0CED00E0064900F01F +:10796000070210B54FF6FF040868044B204040EAB8 +:1079700002201843086010BD0CED00E00000FA057D +:107980002DE9F04F02688346FF484FF0000A8DB0A2 +:107990000C468242564602D10025012001E0012515 +:1079A0000020E8460027814607EB47017F1C08EBD3 +:1079B000C101F8B205F01CFF20B108204FF0010A08 +:1079C000CBF85400FFB2022FEED3BAF1000F7CD1F6 +:1079D000DFF8B4E3DEF80000C00707D0DEF80010DF +:1079E00046F0010621F00101CEF80010E7480068DA +:1079F000C00706D0E54846F00206016821F0010103 +:107A0000016005EB45030C93E148424608EBC303D4 +:107A1000DFF880B30121DC469F6800EB8707D7F8C9 +:107A2000008428F48078C7F80084DBF80070FF0732 +:107A300032D0DCF80070B9F1010F27F00107CCF863 +:107A400000705CD1069B00EB8303D3F8007447F011 +:107A50000207C3F80074079B3BB100EB8303D3F824 +:107A6000007447F02007C3F80074099B4BB121EA6A +:107A7000030700EB8703D3F8047447F48027C3F8A7 +:107A800004740A9BDBB321EA030700EB8703D3F8F6 +:107A9000047447F0806730E00C9F52F8377077B37A +:107AA00000EB8707D7F800C42CF0010CC7F800C41E +:107AB0005F683FB100EB8707D7F800C42CF0100CCB +:107AC000C7F800C4D3F80CC000E05AE1BCF1000FC5 +:107AD00009D021EA0C0700EB8707D7F804C42CF47F +:107AE000803CC7F804C41B694BB121EA030700EBD3 +:107AF0008703D3F8047427F08077C3F8047409EB84 +:107B00004903D4F800C0CDF830C0914652F8337024 +:107B1000BC451BD009EBC302D4F808C0D2F80880DA +:107B2000C44513D0D4F804C0D2F80480C44502D1AF +:107B3000BCF1000F0AD1D4F80CC0D2F80C80C445B7 +:107B400004D0D4F810C01269944551D10C9ABA42AD +:107B500019D109EBC302D4F804C0D2F80480C4459B +:107B600011D1D4F80CC0D2F80C80C4450BD1D4F894 +:107B700010C01269944506D1DBF8003043F00103D0 +:107B8000CBF8003034E000EB870709EBC302D7F8ED +:107B9000003423F00103C7F8003453683BB100EB15 +:107BA0008303D3F8007427F01007C3F800749368B8 +:107BB00000EB8303D3F8007427F48077C3F80074D4 +:107BC000D3684BB121EA030700EB8703D3F80474B1 +:107BD00027F48037C3F8047412694AB121EA02031A +:107BE00000EB8302D2F8043423F08073C2F804342B +:107BF000A3685A4600EB8303D3F8007427F4407758 +:107C000047EA452747F48077C3F80074DBF800C0E3 +:107C100063695F1ECCF3074C674508D95E4FD2F805 +:107C200000C007EB03472CF47F033B43136012684B +:107C3000D207226800EB8202D2F800343FD023F052 +:107C400003035B1CC2F8003462684AB100EB820295 +:107C5000D2F8003423F0300343F01003C2F80034AC +:107C6000E268D3030AD521EA020300EB8302D2F8CB +:107C7000043423F4E02343F480330AE05AB121EAC8 +:107C8000020300EB8302D2F8043423F0E06343F0F4 +:107C90008073C2F804342269D30307D5914300EB03 +:107CA0008100D0F8041421F4E0214AE0F2B39143BA +:107CB00000EB8100D0F8041421F0E0614EE001EB0C +:107CC000450723F003033B43C2F8003462685AB10E +:107CD00000EB8202D2F8003423F0300343EA45136C +:107CE00043F01003C2F80034E268D3030CD521EA54 +:107CF000020300EB8302D2F8043423F4E02343EAC6 +:107D0000854343F480330CE06AB121EA020300EBBF +:107D10008302D2F8043423F0E06343EA856343F03E +:107D20008073C2F804342269D30300E01AE00BD553 +:107D3000914300EB8100D0F8041421F4E02141EAE2 +:107D4000854141F440310BE062B1914300EB810089 +:107D5000D0F8041421F0E06141EA856141F04071FE +:107D6000C0F80414F00705D0DEF8001041F001015E +:107D7000CEF80010B00704D50448016841F00101B5 +:107D800001600DB0504609E00050005200A00052C2 +:107D900000B0005200B400520000FFFFBDE8F08FB9 +:107DA000F8B500250446FFF70BFD064624B1002078 +:107DB0006065206D10B170E001256EE0204600F096 +:107DC00073F841F28830A065258A6FF0FF012268C0 +:107DD000D4F814C00F02636B07EB0545E06801EBB4 +:107DE0000C27D4F81CC0184393683D432D4F2843FB +:107DF0003B4040EA0C00184390602068236AC26848 +:107E000022F4E0221A43C2602368228EA06B40EA6B +:107E1000024018612268E06B5061D4E900030268F7 +:107E200001EB032322F4F85119430160A06D0022F5 +:107E3000202133460090204605F048FD05002CD156 +:107E40002068626AC168521E21F0FF011143C160BF +:107E50002068A268016821F0400111430160206898 +:107E6000D4E90A12D0F80831114323F0A04211439B +:107E7000C0F808112068016841F001010160A069A3 +:107E8000022804D12068816841F002018160E06825 +:107E9000B0F1806F03D0022020652846F8BD012094 +:107EA000FAE70000F4F8E0F82DE9F043B5B0044635 +:107EB00014216846F8F7F1FCB82106A8F8F7EDFCA4 +:107EC0004749206888427DD1002019904FF0007109 +:107ED0000446CDE9061006A801F044F908B1FCF704 +:107EE000F3FD4048016841F400110160016801F4AC +:107EF00000110591016841F400210160006800F45F +:107F00000020059037480C30016841F00101016004 +:107F1000016801F001010591016841F00201016071 +:107F2000016801F002010591016841F01001016052 +:107F3000016801F010010591016841F0080101603C +:107F4000006802250927009500F00800DFF89880F6 +:107F5000032603966946CDE90470CDE901544046F5 +:107F6000FFF716FB062102940820CDE90361CDE955 +:107F7000000569464046FFF70BFB0121DFF86C90D6 +:107F800002AA4FF00408CDE900156946484682E888 +:107F90005001FFF7FDFA02AA6946484682E8D00080 +:107FA000CDE90085FFF7F4FA0B2111484FF4006882 +:107FB000CDF80080CDE90361CDE901546946FFF7B2 +:107FC000E7FA00E008E002AA0A48694682E8D00021 +:107FD000CDE90085FFF7DCFA35B0BDE8F08300009D +:107FE00000A00052D4440258000002580004025875 +:107FF00000100258000C025801680123C0F8D83460 +:10800000002280F8CC248869044A40F0006088612E +:10801000486D1043486500207047000003000010C1 +:1080200070470068416200207047F0B503685D6AE0 +:1080300039B19F6A4C1E00204FF4827605EB17453C +:108040000BE045EA0240986210E0471C06EB800016 +:1080500053F800C0F8B205EB1C45A042F5D34FF42D +:10806000807000EB810045EA02421A500020F0BD0A +:10807000D0F8E00407F0B5BF01EBC10200EB8202CB +:10808000D0F8E004126A07F008BF01EBC10200EB70 +:108090008202D0F8E004D2F8602207F05ABFD0F88C +:1080A000E00407F0A0BF0A0601F00F0101EBC101D7 +:1080B00000EB810101D5143101E001F51571006873 +:1080C00008F08EBE01F00F020B0670B502EBC20184 +:1080D00004464FF001004FF0000504EB810102D58A +:1080E0004875143103E081F8555201F515710A7095 +:1080F00094F89424012A08D084F89404206808F0A5 +:108100008DFB002084F8945470BD022070BD70B5C2 +:108110000279044601F00F00904201D9012070BDA0 +:1081200001F00F024FF000050B0602EBC2014FF009 +:10813000010204EB810102D54A75143103E081F894 +:10814000555201F515718D70087094F8940401284A +:1081500008D084F89424206808F0CAFC002084F831 +:10816000945470BD022070BD01F00F0101EBC101FC +:1081700000EB8100D0F8680270472DE9F04101F072 +:108180000F0604460D064FF0010006EBC6014FF046 +:10819000000504EB810102D54875143103E081F834 +:1081A000555201F51571C2F30A024F780B718A60BE +:1081B0000E7007B14E83022B00D14D7194F89424B8 +:1081C000012A09D084F89404206808F06FFA284640 +:1081D00084F89454BDE8F0810220FBE770B501F00B +:1081E0000F05002405EBC50100EB810101F51871B5 +:1081F00081E81C0001F80B4C01F80C5D8379012B20 +:1082000000D1CA618279006808F0CAFC002070BD04 +:1082100070B50D460179044605F00F00884201D97A +:10822000012070BD29064FF000064FF0010206D56F +:1082300000EBC00104EB81014A75143107E005EB46 +:10824000C50104EB810181F8556201F515718A7051 +:10825000087094F89404012807D084F894242068C6 +:1082600008F072FC280702D007E0022070BDA17957 +:1082700004F29C42206808F00FFC002084F894640B +:1082800070BD70B501F00F04002504EBC401012698 +:1082900000EB8101203181E82C0001F80B6C01F822 +:1082A0000C4D8379012B00D1CA618279006808F0F6 +:1082B00077FC002070BD00002DE9FC5F05680446D6 +:1082C000284608F029FE00287ED1206808F050FEDC +:1082D000002879D0D5F80808C0F30D20C4F8D404DC +:1082E000206808F045FE800704D52068416901F048 +:1082F00002014161206808F03BFEC10604F29C4087 +:10830000009035D52068816921F0100181612F6AC4 +:1083100007F00F01C7F3434001EBC101022804EB52 +:10832000810606F5157602D0062812D01BE047F626 +:10833000F070074217D0C7F30A12F16817462846B3 +:1083400008F01AFE7169F068394471613844F060D0 +:1083500009E000990822284608F00EFE7069C7F36C +:108360000A11084470612068816941F0100181613F +:10837000206808F0FDFD00034FF0080B4FF0000AE5 +:108380004FF001097CD52068002608F0D0FD074693 +:1083900074E0F80770D02068F1B208F0E1FD804683 +:1083A000C00707D005EB4611C1F8089B31462046AF +:1083B00005F0B6FA5FEA087024D505EB4611C1F85E +:1083C00008BBFA49206800E03EE2026C00EB461070 +:1083D00001928A42D0F8081B05D9090403D54FF44D +:1083E0000041C0F8081B204600F001FBEF4901984E +:1083F000884207D9A079012804D120680121009A78 +:1084000008F04AFB5FEAC86004D505EB461110206E +:10841000C1F8080B5FEA88701DD56869000605D5AC +:10842000D5F8040840F48061C5F8041806EBC600CE +:1084300004EB800090F8571200F51570012905D162 +:1084400080F803A02046F1B200F004FA05EB4611D3 +:108450000220C1F8080B5FEA886004D505EB4611DD +:108460002020C1F8080B5FEA884005D505EB4611CE +:108470004FF40050C1F8080B7F08761C002F88D1FC +:10848000206808F075FD40036ED5206808F048FDAF +:108490000026074666E0F80762D02068F1B208F0CF +:1084A0004DFD8046C00723D0D5F8342806F00F0CC8 +:1084B00005EB461309FA0CF08243C5F83428C3F8DB +:1084C0000899A07901280FD106EBC60004EB8000C3 +:1084D000D0E907211144016236B9606A20B92068E9 +:1084E0000121009A08F0D8FA2046F1B2FFF7C4FD46 +:1084F0005FEA087003D505EB4611C1F808B95FEAD9 +:10850000C86004D505EB46111020C1F808095FEAE0 +:10851000486004D505EB46114020C1F808095FEA20 +:10852000887016D53146284608F0CBFC06EBC6000D +:1085300004EB8000C17D1430012905D180F803A02F +:108540002046F1B200F082F905EB46110220C1F895 +:1085500008095FEA086003D53146204605F046FA6F +:108560007F08761C002F96D1206808F001FD0028B6 +:1085700011DAD5F8040820F00101C5F8041894F8C0 +:10858000CC0401283BD0204600F016FA206841694F +:1085900001F000414161206808F0EAFC00050BD5BC +:1085A000D5F80808C00702D0204600F049FA206834 +:1085B000416901F400614161206808F0D9FC0001C3 +:1085C0000AD52068416901F00061416194F8CC044A +:1085D000E0B1204600F034FA206808F0C9FCC0047D +:1085E00072D5D5F8040820F00100C5F80408206809 +:1085F000102108F066FC00214FF67F322DE00021AB +:10860000204684F8CCA4FFF70BFDBFE784F8CC9498 +:108610002068406D0121C0F38300C4F8D0042046D7 +:10862000FFF7FEFCD8E700BF05EB4110C0F80829B2 +:10863000D0F8003923F40013C0F80039C0F8082B33 +:10864000D0F8003B23F40013C0F8003BD0F8003B07 +:1086500043F00063C0F8003B491C20798842E3D80E +:10866000D5F81C0840F00111C5F81C18E07B68B172 +:10867000D5F8840840F00B01C5F88418D5F84408F3 +:1086800040F00B012846C5F844180DE0D5F8140851 +:1086900042F22B010843C5F81408D5F8100840F041 +:1086A0000B012846C5F81018D0F8000820F4FE6128 +:1086B000C5F80018A1792068009A08F0EDF9206843 +:1086C000416901F480514161206808F051FC800447 +:1086D00016D5206808F02AF8206808F010FCE07130 +:1086E00001F03AFB23680146E279184608F0A4FC41 +:1086F000204600F04BF92068416901F400514161C6 +:10870000206808F035FC000707D5204600F058F92E +:108710002068416901F008014161206808F028FCE7 +:10872000000615D5A869012620F08001A9610CE09A +:1087300006EBC60004EB800090F85702012803D135 +:108740002046F1B2FFF7AFFC761C2079B042EFD89B +:10875000206808F00DFCC0021FD501264F4614E02A +:1087600006EBC60005EB461304EB8001D3F80009C5 +:108770000A7E012A08D1002806DAF0B2CF7540F04F +:1087800080012046FFF78FFC761C2079B042E7D8A5 +:108790002068416901F480114161206808F0E8FB1C +:1087A000800234D501204A4629E000000A30544FA7 +:1087B00000EBC00305EB401604EB8301D6F8006B19 +:1087C00091F85832012B19D1002E17DA94F8D434CD +:1087D000C6F3004603F00103B3420FD181F85722DC +:1087E000A96941F08003AB616969090606D4D5F82F +:1087F000040840F40070C5F8040803E0401C217927 +:108800008142D5D82068416901F400114161206896 +:1088100008F0AEFB400007D52046FFF729FC206892 +:10882000416901F080414161206808F0A1FB4007E7 +:108830000AD520684568680702D52046FFF72FFC57 +:108840002068416829434160BDE8FC9FD0F8E004FE +:1088500007F021BCD0F8E00407F031BCF8B5040003 +:1088600004D094F89504002510B106E00120F8BD6D +:10887000204684F8945400F057F8032084F89504B7 +:10888000206808F003F9207C8DF8000094E80F00C0 +:1088900007F05AFF0226B0BB2068002108F08CFBCD +:1088A00088BB002001270CE000EBC001421C04EB58 +:1088B00081014F750D76CD610D624D620875C885D9 +:1088C000D0B221798142EFD8002011E000EBC00145 +:1088D000421C04EB810181F8555281F85852C1F8CD +:1088E0005C52C1F86052C1F8645281F85402D0B2AF +:1088F00021798142EAD8207C8DF8000094E80F00AD +:1089000008F00EF810B184F89564AFE7207B657429 +:1089100084F89574012802D12046FFF76DFB20688A +:1089200007F0F0FF0020F8BD10B5B0B00446B82144 +:108930006846F7F7B2FF13492068884220D100202B +:108940004FF480214FF440122192CDE90010684687 +:1089500000F008FC08B1FCF7B7F800F0B3F80A48DB +:10896000016841F00071016000680022052100F0FB +:1089700000702E904D20FEF7D1FF4D20FEF7C1FF75 +:1089800030B010BD00000440D844025870B5044611 +:10899000C079012570B1022801D0FCF795F8D4F810 +:1089A000E004294607F0FAFBD4F8E004BDE8704083 +:1089B00007F0AEBB0025F2E7D0F8E00407F0D7BB24 +:1089C000D0F8E00407F0DDBB10B5044690F894043D +:1089D00001280AD00120617484F89404206808F00A +:1089E0001AFB002084F8940410BD022010BDD0F8BA +:1089F000E02400F29C41104607F0DCBB10B590F873 +:108A0000941404460068012909D0012184F89414C3 +:108A1000C168490609D5617B012902D005E0022021 +:108A200010BD816B41F480318163206808F027FA22 +:108A3000206807F059FF002084F8940410BD00005E +:108A400010B50446D0F8E00407F0F6FB2068D0F833 +:108A5000001E41F00101C0F8001EE07A002804D099 +:108A60000248016841F00601016010BD10ED00E010 +:108A7000134970B50A68D243520705D5096801F059 +:108A80000701814213D118E00A6822F0070202436D +:108A90000A60FEF795FE0A4D4FF47A760446083DCB +:108AA00007E000BFFEF78CFE001BB04201D9012099 +:108AB00070BD2868C0438004F4D4002070BD00005D +:108AC0000C4802580248016841F08071016070470B +:108AD0000C48025810B501F03FF905490968054AEC +:108AE000C1F30211515C01F01F01C84010BD00002C +:108AF00020440258104A01084A4930B5494C0B1D20 +:108B00000A680C3409681D68246802F0030305F044 +:108B10000102C1F30511C4F3CC04002914FB02F2D5 +:108B200000EE102AF8EE400A76D0414A9FED3E1A38 +:108B3000DFED3E1AB7EE000A23B1012B5AD0022B0B +:108B400018D15CE0374C283C23689B0612D5394B82 +:108B5000246801EE901A1168C4F3C104F8EE612A8A +:108B6000E34001EE903AC1F30801F8EE611A81EE9C +:108B7000A22A07E002EE101A1168F8EE422A81EEEE +:108B8000A22A45E001EE901A1168F8EE611A40EE53 +:108B9000811A71EE800A62EE200AC1F3462101EECD +:108BA000101AB8EE411A31EE001AC0EE811ABCEE6E +:108BB000E11A80ED001A1168C1F3064101EE101AA6 +:108BC000B8EE411A31EE001AC0EE811ABCEEE11A7D +:108BD00080ED011A1168C1F3066101EE101AB8EEBA +:108BE000411A31EE000A80EE801ABCEEC10A80ED17 +:108BF000020A30BD01EE901ADFED0F2A03E001EE0C +:108C0000901ADFED0E2A1168F8EE611A82EEA12AA1 +:108C1000C1F30801B6E7FFE7002101604160816010 +:108C200030BD000028440258000000390024744C74 +:108C3000304402580090D0030024744A001BB74B04 +:108C4000494930B5484C0B1D0A68143409681D6841 +:108C5000246802F00303C5F30012C1F30531C4F325 +:108C6000CC04002914FB02F200EE102AF8EE400AB0 +:108C700075D03F4A9FED3D1AB7EE000A6BB1DFEDAC +:108C80003D1A012B01D0022B64D002EE101A11689C +:108C9000F8EE422A81EEA22A21E0334C283C2368D8 +:108CA0009B0612D5344B246801EE901A1168C4F368 +:108CB000C104F8EE612AE34001EE903AC1F30801E5 +:108CC000F8EE611A81EEA22A0BE001EE901ADFEDB8 +:108CD0002B2A00BFF8EE611A116882EEA12AC1F3B7 +:108CE000080101EE901A1168F8EE611A40EE811A3F +:108CF00071EE800A62EE200AC1F3462101EE101ADD +:108D0000B8EE411A31EE001AC0EE811ABCEEE11A3B +:108D100080ED001A1168C1F3064101EE101AB8EE99 +:108D2000411A31EE001AC0EE811ABCEEE11A80ED54 +:108D3000011A1168C1F3066101EE101AB8EE411A6A +:108D400031EE000A80EE801ABCEEC10A80ED020A04 +:108D500030BD04E001EE901ADFED092ABAE70021E8 +:108D6000016041608160F3E7284402580000003947 +:108D7000384402580024744A0090D0030024744CF4 +:108D8000001BB74B494930B5484C0B1D0A681C34D1 +:108D900009681D68246802F00303C5F30022C1F3CB +:108DA0000551C4F3CC04002914FB02F200EE102A92 +:108DB000F8EE400A75D03F4A9FED3D1AB7EE000A23 +:108DC0006BB1DFED3D1A012B01D0022B64D002EE16 +:108DD000101A1168F8EE422A81EEA22A21E0334CE3 +:108DE000283C23689B0612D5344B246801EE901A68 +:108DF0001168C4F3C104F8EE612AE34001EE903A31 +:108E0000C1F30801F8EE611A81EEA22A0BE001EE2F +:108E1000901ADFED2B2A00BFF8EE611A116882EE7E +:108E2000A12AC1F3080101EE901A1168F8EE611A47 +:108E300040EE811A71EE800A62EE200AC1F34621EB +:108E400001EE101AB8EE411A31EE001AC0EE811A86 +:108E5000BCEEE11A80ED001A1168C1F3064101EE83 +:108E6000101AB8EE411A31EE001AC0EE811ABCEEAB +:108E7000E11A80ED011A1168C1F3066101EE101AC2 +:108E8000B8EE411A31EE000A80EE801ABCEEC10A3B +:108E900080ED020A30BD04E001EE901ADFED092AF0 +:108EA000BAE70021016041608160F3E7284402587D +:108EB00000000039404402580024744A0090D00356 +:108EC0000024744C001BB74B2DE9F04FA14A054616 +:108ED000DFF87CA280F48070DFF8809289B01311F3 +:108EE0009F4C08439C48AAF104064FF0805C4FF069 +:108EF000005828D0DFF858B285F480670F430BF193 +:108F0000080B4FD085F400670F4360D085F480577D +:108F10000F4372D085F400570F434FF480394FF45C +:108F2000003E69D085F400270F4373D085F4803765 +:108F30000F4370D085F480460E436DD085F4004217 +:108F40000A436AD02AE0DAF8001001F00701052987 +:108F500024D2DFE801F0F9AA6A259F0006A8FFF7EE +:108F6000CBFD079809B0BDE8F08F6846FFF768FEB3 +:108F70000098F7E703A8FFF705FF0398F2E72068DA +:108F8000C0F3C10022FA00F0ECE72268D2056ED5EA +:108F900061456CD11846E5E74145E3D00020E1E7A3 +:108FA0004846DFE7DBF8001001F46001B1F5800FFF +:108FB0003BD005DC00294AD0B1F5001FEED174E0AA +:108FC000B1F5C00FECD0B1F5000FE7D162E0DBF8EE +:108FD000001001F0E061B1F1007F26D004DCB1B3F4 +:108FE000B1F1807FDAD160E0B1F1407FD8D0B1F14A +:108FF000806FD3D14EE000E01BE0DAF8001001F4FE +:10900000E041B1F5005F10D008DC01B3B1F5805F3D +:10901000C4D14AE035E058E065E088E0B1F5405F52 +:10902000BED0B1F5804FB9D134E020688000B5D50D +:10903000A0E7DAF8001001F4E021B1F5403F6DD06F +:1090400006DC61B149457BD07145A7D158E07BE092 +:10905000B1F5802F66D0B1F5A02F9FD10DE000F0C3 +:109060009DFE7FE76846FFF7EBFD01987AE728E071 +:1090700003A8FFF787FE049874E7216889038AD460 +:109080008CE7DBF8001011F440310ED0494510D0C8 +:10909000714583D13168256801F040516D077FF536 +:1090A00074AF00297FF471AF69E720680001E7D54C +:1090B0005BE720688000E3D503A8FFF763FE05980F +:1090C00050E722689203DBD566E7306810F4803001 +:1090D0003AD04845D4D120680001D1D56846FFF781 +:1090E000AFFD02983EE7DBF8001001F0E041B1F17E +:1090F000405F13D008DC71B1614521D04145BFD13B +:1091000020688000B4D449E7B1F1804F0AD0B1F1B2 +:10911000A04FB2D042E7FFF7DDFC23E7206840070D +:10912000AED52CE72068C005AAD533E708E0DAF809 +:10913000001011F04051A0D0614505D041459FD1AC +:10914000206800018ED429E72068800198D505E7C2 +:10915000504402580090D00300366E010080BB00DE +:10916000004402582DE9FE4F0546DFF800A450F8F0 +:10917000081B0024FD4FC943019005F12800264635 +:109180000AF1240A009008011DD4686E50B1B0F5B0 +:10919000801F0CD0B0F5001F0ED0B0F5401F1ED0C0 +:1091A00001240FE0386840F40030386017E001987F +:1091B000022104F0EDFD03E00098022104F078FEA6 +:1091C00004000CD026462888C043C00523D4A86DCF +:1091D00005281ED2DFE800F00C11161B1B006A6E7A +:1091E000DAF8001021F440111143CAF80010EAE740 +:1091F000386840F40030386009E00198002104F03C +:10920000C7FD03E00098002104F052FE0446C4B1FB +:1092100000E0012426462888DFF85083C04308F187 +:109220002C0840052FD4D5F8A400B0F5C00F28D0E5 +:1092300010DCB8B1B0F5001F19D0B0F5800F0FD118 +:109240001AE0AA6DDAF8001021F007011143CAF8FC +:109250000010E0E7B0F5000F13D0B0F5200F10D0EC +:1092600001240FE0386840F40030386009E00198CC +:10927000002104F08DFD03E00098002104F018FEA9 +:10928000044694B126462888C043000530D4D5F85A +:10929000A800B0F1407F29D011DCC0B1B0F1807FCF +:1092A0001AD0B0F1007F10D11BE0D5F8A420D8F877 +:1092B000001021F460011143C8F80010E3E7B0F199 +:1092C000806F13D0B0F1A06F10D001240FE0386888 +:1092D00040F40030386009E00198002104F058FDA6 +:1092E00003E00098002104F0E3FD044694B1264613 +:1092F0002868DFF878B2C0430BF1200B80011FD43F +:10930000E86CD8B110280FD0202812D0302815D002 +:10931000012414E0D5F8A820D8F8001021F0E0616D +:109320001143C8F80010E3E7386840F400303860B3 +:1093300004E00198022104F02BFD044674B1264696 +:109340002888C043C0042BD4E86DB0F5005F20D05E +:109350000DDCA0B1B0F5805F0FD115E0EA6CDBF851 +:10936000001021F030011143CBF80010E8E7B0F510 +:10937000405F13D0B0F5804F10D001240FE0386863 +:1093800040F40030386009E00198002104F000FD4D +:1093900003E00098002104F08BFD04468CB12646C2 +:1093A0002888C043800429D4286EB0F5403F23D0DC +:1093B00010DC08B3B0F5803F14D0B0F5003F0FD1FA +:1093C00015E0EA6DDAF8001021F4E0411143CAF823 +:1093D0000010E5E7B0F5802F0ED0B0F5A02F0BD030 +:1093E00001240AE00198012104F0D2FC03E0009876 +:1093F000012104F05DFD044694B126462888C0434F +:1094000040042AD4D5F8AC00B0F1405F23D010DC82 +:1094100008B3B0F1805F14D0B0F1005F0FD115E058 +:109420002A6EDAF8001021F4E0211143CAF8001086 +:10943000E4E7B0F1804F0ED0B0F1A04F0BD0012483 +:109440000AE00198012104F0A3FC03E00098012147 +:1094500004F02EFD044674B126462888C04300045B +:109460001FD4E86ED8B1B0F1805F0ED0B0F1005FCC +:1094700010D0012414E0D5F8AC20D8F8001021F069 +:10948000E0411143C8F80010E7E7386840F40030C5 +:10949000386004E00198012104F07AFC044674B1BC +:1094A00026462868C043C0011ED4A86CD0B101284C +:1094B0000ED0022811D0032814D0012413E0EA6E44 +:1094C000DAF8001021F040511143CAF80010E8E723 +:1094D000386840F40030386004E00198022104F05C +:1094E00057FC04466CB126462868C043400255D458 +:1094F0001F48016841F480710160FEF761F98146FF +:109500000EE0AA6CDBF8001021F003011143CBF848 +:109510000010E9E7FEF754F9A0EB090064283BD8F6 +:1095200013480068C005F5D5BCBBDFF84090B5F81E +:10953000B01009F14409D9F8000001F4407100F4B9 +:109540004070884211D0D9F80010D9F8002021F4D9 +:10955000407142F48032C9F80020D9F8002022F48A +:109560008032C9F80020C9F8001003E02C440258EA +:1095700000480258D5F8B000B0F5807F19D1FEF749 +:109580001FF9029011E000BFFEF71AF90299411A83 +:1095900041F28830814208D9032426462878DFF832 +:1095A0001494C043C00721D03CE0D9F800008007E4 +:1095B000EAD5D5F8B010C1F301200328FE480DD03C +:1095C000016821F47C510160B5F8B020D9F8001091 +:1095D000C2F30B021143C9F80010DFE7F74A036832 +:1095E00002EA111223F47C511143ECE7A86F18280A +:1095F00016D005DCA0B1082808D0102804D10AE054 +:1096000020280DD028280BD001240AE00198012140 +:1096100004F0BEFB03E00098012104F049FC04467D +:1096200064B126462878C04380071ED4686F062898 +:1096300019D2DFE800F0160C11161616AA6FD9F829 +:10964000001021F038011143C9F80010EAE7019831 +:10965000012104F09DFB03E00098012104F028FCA7 +:1096600004467CB100E0012426462878C043400728 +:109670001FD4D5F89000062819D2DFE800F0160CA8 +:10968000111616166A6FD9F8001021F00701114360 +:10969000C9F80010E9E70198012104F079FB03E023 +:1096A0000098012104F004FC0446A4B100E0012468 +:1096B00026462878C04380062BD4D5F88C00B0F11C +:1096C000405F24D011DC10B3B0F1805F15D0B0F151 +:1096D000005F10D116E0D5F89020D8F8001021F0E6 +:1096E00007011143C8F80010E3E7B0F1804F0ED036 +:1096F000B0F1A04F0BD001240AE00198002104F042 +:1097000047FB03E00098022104F0D2FB044694B129 +:1097100026462878C04340062BD4D5F89800B0F5EB +:10972000406F24D011DC10B3B0F5806F15D0B0F5C8 +:10973000006F10D116E0D5F88C20D9F8001021F078 +:10974000E0411143C9F80010E3E7B0F5805F0ED0A7 +:10975000B0F5A05F0BD001240AE00198002104F0CD +:1097600017FB03E00098022104F0A2FB044694B129 +:1097700026462878C04300062BD4D5F89C00B0F5C7 +:10978000C04F24D011DC10B3B0F5005F15D0B0F598 +:10979000804F10D116E0D5F89820D8F8001021F4A9 +:1097A000E0511143C8F80010E3E7B0F5004F0ED0C8 +:1097B000B0F5204F0BD001240AE00198002104F0FD +:1097C000E7FA03E00098022104F072FB044654B16A +:1097D00026462878C04300071ED4D5F88000B0F58F +:1097E000805F0AD00FE0D5F89C20D8F8001021F453 +:1097F00060411143C8F80010EBE70098022104F023 +:1098000057FB00B10126D5F88020D9F8001021F4CB +:1098100040511143C9F800102878C043C00613D442 +:10982000D5F89400B0F5807F05D10098022104F0AE +:109830003FFB00B10126D5F89420D8F8001021F4A0 +:1098400040711143C8F800102868C043000316D4C3 +:10985000D5F8A00038B1B0F5803F09D0B0F5003F91 +:109860000BD001240AE00198002104F091FA03E0F2 +:109870000098022104F01CFB04468CB1264628689F +:10988000C043400322D4D5F88400B0F5801F11D026 +:10989000B0F5001F13D0B0F5401F15D0012414E01F +:1098A000D5F8A020D8F8001021F440311143C8F8B1 +:1098B0000010E4E7386840F40030386004E00098B5 +:1098C000012104F0F5FA04465CB126462868C0433D +:1098D000C0031CD4286D70B1B0F5803F10D00124B6 +:1098E00014E0D5F88420D9F8001021F44011114378 +:1098F000C9F80010EAE7386840F40030386004E046 +:109900000198022104F044FA0446DCB12646286896 +:10991000C043800005D40098022104F0C9FA00B1C8 +:1099200001262868C04380031BD4E86FB8B1B0F5A6 +:10993000807F10D0B0F5007F11D0B0F5407F0ED001 +:1099400001240DE02A6DDBF8001021F48031114371 +:10995000CBF80010DBE7386840F4003038607CB3A7 +:1099600026462868C043C00207D42A6FDAF80010E0 +:1099700021F000411143CAF800102868C04380025A +:1099800007D4AA6EDAF8001021F080711143CAF8EA +:1099900000102868C043400009D40748016821F43A +:1099A000004101600168D5F8B420114301602868C6 +:1099B000C04306E05444025810440258CFFFFF0051 +:1099C0001DE007D46A6DDBF8001021F0405111430F +:1099D000CBF800102868C043000208D4D5F88820CE +:1099E000D9F8001021F440011143C9F8001028797A +:1099F0000024C04300F00100204309D00EE0EA6FCC +:109A0000D9F8001021F440711143C9F80010A8E7FB +:109A10000198002104F0BCF900B106462879C04342 +:109A200000F00200204305D10198012104F0B0F9B3 +:109A300000B106462879C04300F00400204305D158 +:109A40000198022104F0A4F900B106462879C04328 +:109A500000F00800204305D10098002104F028FA06 +:109A600000B106462879C04300F01000204305D11C +:109A70000098012104F01CFA00B106462879C04381 +:109A800000F02000044304D10098022104F010FAF1 +:109A900000B916B10120BDE8FE8F0020FBE70000F1 +:109AA0002DE9F05F04000F467ED0DFF83882D8F849 +:109AB000000000F00F00B8420CD2D8F8001021F0DE +:109AC0000F013943C8F80010D8F8000000F00F006B +:109AD000B84269D12078844D40070AD520692968A9 +:109AE00001F07001884204D9296821F07001014316 +:109AF000296020787C4E361D00070AD560693168E0 +:109B000001F07001884204D9316821F070010143ED +:109B100031602078C0060AD5A069316801F4E0619F +:109B2000884204D9316821F4E06101433160207832 +:109B3000DFF8B4B180060BF1080B0CD5E16958468B +:109B4000DBF8002002F07002914204D9026822F092 +:109B500070020A430260207880070AD5E06829680D +:109B600001F00F01884204D9296821F00F01014357 +:109B700029602078C0073ED05B49A2682868183960 +:109B800020F47060104328606068022818D0032811 +:109B900019D00968012819D0490700294ADADFF8E5 +:109BA00048A1AAF1080A00E044E0DAF8002022F017 +:109BB00007020243CAF80020FDF702FE814612E0C8 +:109BC00009688903E9E709688901E6E7C905E4E767 +:109BD000FDF7F6FDA0EB090141F28830814202D980 +:109BE0000320BDE8F09F6168DAF8000000F038005B +:109BF000B0EBC10FECD1207880070AD5E068296866 +:109C000001F00F01884204D2296821F00F010143BD +:109C10002960D8F80010404601F00F01B9420BD975 +:109C2000016821F00F0139430160006800F00F0066 +:109C3000B84201D00120D4E7207840070AD5206936 +:109C4000296801F07001884204D2296821F070016E +:109C500001432960207800070AD56069316801F066 +:109C60007001884204D2316821F0700101433160F3 +:109C70002078C0060AD5A069316801F4E061884205 +:109C800004D2316821F4E06101433160207880061C +:109C90000CD5E1695846DBF8002002F070029142D1 +:109CA00004D2026822F070020A43026000F09AF8BF +:109CB0000E492A682B68C2F3032203F00F038A5C63 +:109CC000C95C02F01F0201F01F01D040084A20FACF +:109CD00001F111600749086007480068BDE8F05FBE +:109CE000FDF7AABD0020005218440258104A01088E +:109CF0008C000020880000208000002070B5144CEB +:109D00003F220260124A24680832131D114D04F0EC +:109D10000704446016681C1D06F4706686601668A9 +:109D200006F00F06C660126802F0700202611A683F +:109D300002F0700242611A6802F4E06282612268F5 +:109D400002F07002C261286800F00F00086070BD68 +:109D5000104402580020005230B500F043F80B4A7E +:109D60000B490C4B15681468C5F3032204F00F046B +:109D70008A5C095D02F01F0201F01F01D040064A13 +:109D800020FA01F119601060084630BD18440258ED +:109D9000104A01088C0000208800002000B5FFF761 +:109DA000DBFF05490968054AC1F30211515C01F066 +:109DB0001F01C84000BD00001C440258104A0108A1 +:109DC00000B5FFF7C9FF05490968054AC1F302213B +:109DD000515C01F01F01C84000BD00001C44025846 +:109DE000104A0108454970B545480968434B103B86 +:109DF00011F0380208D00111082A03D0102A0BD024 +:109E0000182A0BD0084670BD19688906FBD5196859 +:109E1000C1F3C101C84070BD3A4870BD3749374DE4 +:109E200018310C1D24350A68096826682D6802F06F +:109E3000030406F00102C1F30511C5F3CC0515FBBF +:109E400002F200EE102AB8EE400AE9B32F4ADFED25 +:109E50002E0AB7EE001A6CB1DFED2D1A012C01D0DD +:109E6000022C43D002EE101A1068F8EE422A81EE5E +:109E7000A22A1EE01C68A40611D51B6801EE901AE8 +:109E80001168C3F3C103F8EE612AD84001EE900ACD +:109E9000C1F30800F8EE611A81EEA22A0BE001EE90 +:109EA000901ADFED1C2A00BFF8EE611A106882EEEE +:109EB000A12AC0F3080001EE900AF8EE611A40EE04 +:109EC000201A31EE810A00E015E022EE000A106847 +:109ED000C0F34620401C00EE900AF8EE600A80EEC7 +:109EE000201ABCEEC10A10EE100A70BD01EE901AE5 +:109EF000DFED092AD8E7002070BD000010440258A9 +:109F00000090D00300366E01000000393044025842 +:109F10000024744A0024744C001BB74BF0B50D4666 +:109F20001F49204C002887B016464FF000004FF024 +:109F300002020F684FF0030319D047F004070F60C7 +:109F4000096801F00401059111020091CDE9012099 +:109F5000CDE9033014486946FDF71AFB206845EA4D +:109F6000C61120F07E400843206007B0F0BD47F0E6 +:109F700001070F60096801F0010105914FF480713C +:109F80000091CDE90120CDE9033008486946FDF78D +:109F9000FFFA2068354320F0FE702843E4E7000014 +:109FA000E0440258104402580008025800000258C9 +:109FB0002DE9F05F04007DD0FF4F2078FE4D18376B +:109FC000DFF8F483103DC00748D0D8F800003968A6 +:109FD00000F03800102815D0182803D101F0030034 +:109FE00002280FD06068B0F5803F12D010B1B0F5F4 +:109FF000A02F18D0286820F480302860286820F42A +:10A00000802009E02868800328D560680028D2D025 +:10A0100024E0286840F480302860606888B1FDF74B +:10A02000CFFB064609E0286840F480202860F0E76E +:10A03000FDF7C6FB801B64287ED828688003F7D50F +:10A040000CE0FDF7BDFB064605E000BFFDF7B8FBE1 +:10A05000801B6428F0D828688003F7D42078800714 +:10A0600056D5D8F80000DFF85093396810F0380062 +:10A07000A9F10C090ED0182801D188070AD0E06890 +:10A08000A8B3296821F0190101432960FDF798FB65 +:10A09000064628E02868400702D5E06800288AD0F4 +:10A0A000E168286820F0190008432860FDF788FB64 +:10A0B000064606E0D2E000BFFDF782FB801B0228C7 +:10A0C000BAD828684007F7D5217CD9F8002022F0BB +:10A0D000FE4242EA0161C9F8001019E0FDF770FB89 +:10A0E000801B0228A8D828684007F7D5ECE7FFE7CF +:10A0F000286820F001002860FDF762FB064604E0B6 +:10A10000FDF75EFB801B022896D828684007F7D42D +:10A110002078C00646D5D8F80000DFF89C92396850 +:10A1200000F03800A9F10409082812D0182805D138 +:10A1300001F00300012800E0CEE00AD0E069002829 +:10A14000286820D040F080002860FDF739FB0646E3 +:10A1500015E02868C00502D5E06980287ED194F812 +:10A160002010D9F8002022F07C5242EA0161C9F89F +:10A17000001017E0FDF724FB801B0228A0D82868F8 +:10A18000C005F7D5EBE720F080002860FDF718FB4D +:10A19000064604E0FDF714FB801B022890D82868CF +:10A1A000C005F7D42078000729D583486169643059 +:10A1B00000298146016811D041F001010160FDF7DD +:10A1C000FFFA064605E000BFFDF7FAFA801B0228F9 +:10A1D00088D8D9F800008007F6D510E021F00101F9 +:10A1E0000160FDF7EDFA064605E000BFFDF7E8FA6D +:10A1F000801B022870D8D9F800008007F6D4207898 +:10A20000800623D5A0690028286810D040F480502B +:10A210002860FDF7D5FA064605E000BFFDF7D0FA45 +:10A22000801B022858D828688004F7D50EE020F457 +:10A2300080502860FDF7C4FA064604E0FDF7C0FA36 +:10A24000801B022848D828688004F7D4207840076B +:10A2500051D5DFF86891D9F8001000E015E141F41C +:10A260008071C9F80010FDF7ABFA064605E000BFA3 +:10A27000FDF7A6FA801B64282ED8D9F80000C00587 +:10A28000F6D54D4EA068603601280AD008B10528E1 +:10A2900013D0306820F001003060306820F00400F6 +:10A2A00002E0306840F001003060A06841F2883A76 +:10A2B00098B1FDF785FA81460AE0306840F0040065 +:10A2C0003060EEE7FDF77CFAA0EB0901514503D8B9 +:10A2D00030688007F6D50EE072E0FDF771FA81462E +:10A2E00006E000BFFDF76CFAA0EB0901514567D805 +:10A2F00030688007F6D4606A00287CD0DFF8B8A008 +:10A30000D8F800100AF1200A4FF6F87B0AF1040889 +:10A31000C1F3C2010329AAF104096DD002282868FB +:10A3200020F08070286003D0FDF74AFA044681E0EF +:10A33000FDF746FA064604E0FDF742FA801B0228C4 +:10A3400075D828688001F7D4E26A40F2F3313868A2 +:10A3500054F8283F884340EA021018433860217BB4 +:10A360004FF4FE0C22894FF0FE47208A4902267DD9 +:10A37000521E401EA1F5007189B2C2F308021143BA +:10A38000761E0CEA00400143484607EA0662114384 +:10A39000CAF80010D9F8001021F00101C9F8001026 +:10A3A000D8F80030266A23EA0B0343EAC601C8F84E +:10A3B0000010D9F8001004E0104402580048025878 +:10A3C00035E0A26921F00C011143C9F800100168C1 +:10A3D000E26921F0020111430160016841F480311A +:10A3E0000160016841F400310160016841F480219D +:10A3F0000160016801E06CE020E041F001010160D2 +:10A40000286840F080702860FDF7DAF9044604E01F +:10A41000FDF7D6F9001B022809D828688001F7D576 +:10A4200057E000BFFDF7CCF9001B022802D903203A +:10A43000BDE8F09F28688001F4D44AE0396801281B +:10A44000DAF8000021D0A26A01F0030393421CD184 +:10A45000E26AC1F305118A4217D1216BC0F30802E9 +:10A46000491E8A4211D1616BC0F34622491E9142B6 +:10A470000BD1A16BC0F30642491E914205D1E16B9D +:10A48000C0F30660491E814201D00120D0E7A16CD3 +:10A490004646D8F80000C0F3CC00814219D0D9F864 +:10A4A00000004D4620F00100C9F80000FDF788F9D2 +:10A4B0004FEA0007FDF784F9B842FBD0A26C306880 +:10A4C00020EA0B0040EAC2003060286840F001003A +:10A4D00028600020ACE700002DE9F04104001D4693 +:10A4E00016460F4603D0D4F8880018B108E00120C2 +:10A4F000BDE8F081002084F88400204601F042FD90 +:10A500002420C4F888002068016821F0010101605E +:10A51000A06A10B1204604F031FC204604F0D0FDC2 +:10A520000128E5D0206871050D4A41EA054183689C +:10A5300043F4804383602068836823F400433B43F3 +:10A5400083602068036813400B4303602068016840 +:10A5500041F0010101602046BDE8F04104F072BC09 +:10A56000FFFF00FC70B5044603F0D2FD022811D0B5 +:10A57000204603F0CDFD084D05EB40108069002812 +:10A5800008D0204603F0C4FD05EB40108069BDE80B +:10A590007040004770BD0000809B00202DE9F0470F +:10A5A00004460068002103694269876894F8816065 +:10A5B00000F130095FEA025C03EA02050AD51A07D6 +:10A5C00008D5816941F400618161204600F0C6FC34 +:10A5D000BDE8F08715F0600F08D1680706D5616FF8 +:10A5E00020468847216F20468847012105F0410019 +:10A5F000012805D1680703D4216F2046884701212F +:10A6000005F02200022806D1680704D4616F2046B5 +:10A61000BDE8F04708470029DAD128074FF00108C4 +:10A620005BD52068816941F00801816120688169FA +:10A6300041F0100181612068816941F4006181610C +:10A640002068016921F0080101612068806810F428 +:10A65000404F20D023E0E0680F2806D92068616EC3 +:10A66000006B0860606E001D0FE0072806D9B9F87E +:10A670000000616E0880606E801C06E02068616EDC +:10A6800090F830000870606E401C6066B4F86A0094 +:10A69000401EA4F86A00B4F86A000028DBD1204606 +:10A6A00003F09CFC84F88180D4F8840018B1204623 +:10A6B000FFF758FF8CE7052E07D0042E09D0032E94 +:10A6C00086D1204600F06CFD82E7204600F07AFD3E +:10A6D0007EE7204600F00AFC7AE715F4587FE9D0BF +:10A6E00068060AD5D4F8840040F00400C4F8840059 +:10A6F0002068816941F040018161A8050AD5D4F83C +:10A70000840040F00100C4F884002068816941F4AD +:10A7100000718161E8050AD5D4F8840040F0080092 +:10A72000C4F884002068816941F480718161A806C1 +:10A730000AD5D4F8840040F08000C4F88400206872 +:10A74000816941F020018161D4F884000028B1D0F2 +:10A75000206840F26B32C7F381310368032923F08C +:10A76000010101602068016921EA0201016102D052 +:10A7700084F881809BE72068104D816821F4404176 +:10A780008160E06F50B10565E06FFBF73FFB28B1DA +:10A79000D4F8840040F04000C4F88400A06F002882 +:10A7A00088D00565A06FFBF731FB00288CD0D4F86A +:10A7B000840040F04000C4F8840009E799E00008F4 +:10A7C0002DE9F047040029D0594A4FF000092068CC +:10A7D000584B594D9042C4F8289006D0984204D066 +:10A7E000A84202D0E1680F2918D8E1684FF0010AA9 +:10A7F000E76B0831C9080AEB57167143904205D040 +:10A80000984203D0A84201D0082907D8904203D02B +:10A81000984201D0A84204D1102902D90120BDE8F4 +:10A82000F08794F8810020B9204684F8809000F0E9 +:10A8300085F8022084F881002068016821F0010178 +:10A8400001602068A1698268B1F1806F02F4F8119B +:10A8500010D16268B2F5800F01D01AB10AE0A26B84 +:10A8600022B107E0A26BB2F1805F03D1026842F42B +:10A87000805202606068400209D5E068072806D36C +:10A880002068236D026822F480721A4303E0206876 +:10A89000026822F480720260A66AE069E26B2568B1 +:10A8A0003043E3680A4310431843A860D4E90D021B +:10A8B000D4E90581636A25691843D4F820C00A43A6 +:10A8C000266810432843A56DD4E90172D4E91231FA +:10A8D00040EA080040EA0C0038430843104318439C +:10A8E0002843F060606868B92068816821F4C0512D +:10A8F00041F4006181602068816821F4C06141F405 +:10A90000806181602068016D21F00101016560684E +:10A91000400206D52068626DC16821F000411143F4 +:10A92000C160C4F8849084F881A0002077E700001B +:10A930000030014000380040003C00402DE9F04765 +:10A94000B4B0074614212EA8F5F7A7FFB821684632 +:10A95000F5F7A3FF61490226386800245D4D4FF0EA +:10A960000308DFF874A188424FF005093DD1811436 +:10A9700017940020CDE900106846FEF7F3FB08B1FC +:10A98000FAF7A2F853481030016841F48051016091 +:10A99000006800F480503390286840F00800286078 +:10A9A000286800F008003390286840F00200286012 +:10A9B000286830AA45464F4600F0020033908020B8 +:10A9C000CDE92E0682E8B00045482EA9FCF7E0FD4F +:10A9D000082030AACDE92E062EA9504682E8B00004 +:10A9E000FCF7D6FD34B0BDE8F0873E498842F9D186 +:10A9F000811417940020CDE900106846FEF7B2FBE1 +:10AA000008B1FAF761F833480830016841F4804131 +:10AA10000160006800F480403390286840F0040032 +:10AA20002860286800F004003390286840F0020095 +:10AA30002860286806214546C84600F00200CDE996 +:10AA40002E16CDE93045CDE9329027482EA9FCF7E6 +:10AA50009FFD4FF40051504630AACDE92E162EA985 +:10AA600082E83001FCF794FD204E2723204A4FF462 +:10AA700080684FF44039304686E81C00C6E9034838 +:10AA80007461B461C6E907497462FBF777FE08B1E7 +:10AA9000FAF71AF8154D2822154940237835FE6734 +:10AAA0001831B763284685E81E016C61AC61C5E9C1 +:10AAB00007496C62FBF762FE08B1FAF705F8BD675B +:10AAC00000220521AF632420FCF728FF2420FCF797 +:10AAD00018FF87E7E04402580004025800300140A4 +:10AAE000000C02580038004000080258BC07002043 +:10AAF000400002402DE9F84F8946C16B04460068CA +:10AB00009A4616464909491C1FFA81F830300090D0 +:10AB1000FCF756FE834694F88100012838D1B9F13C +:10AB2000000F6FD0002EFCD094F8800001282FD0A9 +:10AB3000A1680025012784F88070042084F8810032 +:10AB4000C4F88450C4F86490E565A4F860502567A3 +:10AB500065672C34B1F5C02FA687E687E58654F8E3 +:10AB60002C0D18D0C16821F4C02141F48021C160AE +:10AB7000206841686FF30F0131434160206801682C +:10AB800041F0010101606068B0F5800F08D00CE071 +:10AB90000220BDE8F88F016821F400610160E7E759 +:10ABA0002068016841F400710160E0680F2824D832 +:10ABB00029E0206841694269D20705D1B4F86A30BA +:10ABC00043450DD209040BD5006B616E0860606EC1 +:10ABD000001D6066B4F86A00401EA4F86A000CE02C +:10ABE000FCF7EEFDA0EB0B01514503D3BAF1FF3F9B +:10ABF00003D0AAE0BAF1000F40D0B4F86A000028F0 +:10AC0000D7D194E09FE007283CD88CE021684869C0 +:10AC10004969C9070AD000980088616E0880606E93 +:10AC2000801C6066B4F86A00401E15E0B4F86A2023 +:10AC3000424514D2010412D500980088616E088044 +:10AC4000606E801C6066009909880180606E801CBF +:10AC50006066B4F86A00801EA4F86A0012E0B4F8D6 +:10AC60006A10012901D18004D5D4FCF7A9FDA0EB1D +:10AC70000B01514503D3BAF1FF3F03D065E0BAF1B0 +:10AC8000000F62D0B4F86A000028BFD14FE02068FE +:10AC900041694269D2070AD090F83000616E0870AD +:10ACA000606E401C6066B4F86A00401E24E0B4F890 +:10ACB0006A30434523D20A0421D590F83000616EF2 +:10ACC0000870606E401C6066216891F83010017059 +:10ACD000606E401C6066216891F830100170606EF3 +:10ACE000401C6066216891F830100170606E401C55 +:10ACF0006066B4F86A00001FA4F86A0013E0B4F8B4 +:10AD00006A20042A02D211F4C04FC5D1FCF758FDC5 +:10AD1000A0EB0B01514503D3BAF1FF3F03D014E080 +:10AD2000BAF1000F11D0B4F86A000028AFD1204664 +:10AD300003F054F984F88170D4F8840084F88050CA +:10AD400000283FF426AF012023E7204603F046F910 +:10AD5000D4F8840084F8805040F48070C4F88400F3 +:10AD600084F88170032014E72DE9F041044690F83F +:10AD7000810016460025012802D084F880502FE07B +:10AD800059B356B394F88000012829D0A26801274E +:10AD900084F88070042084F88100C4F8845025670A +:10ADA00065676166A4F860502C34B2F5C02FA687A1 +:10ADB000E687E58654F82C0D15D0C16821F4C02132 +:10ADC00041F48021C0F80C10E0684FF480410F2856 +:10ADD0000ED9E26F92698A420AD084F8805055E019 +:10ADE0000220BDE8F081016821F400610160EBE719 +:10ADF00007284FF4005205D9E06F8069904201D0D6 +:10AE00008842EAD12068836823F480438360E06845 +:10AE1000072811D8E06F8369934205D1B4F86A20FE +:10AE2000521C5208A4F86A208069884210D1B4F8F4 +:10AE30006A00C01C800809E00F2809D8E06F80690B +:10AE4000884205D1B4F86A00401C4008A4F86A00A2 +:10AE5000E06F23490164E16F2248C863E16F224833 +:10AE6000C864E06F0565B4F86A302168626EE06F0F +:10AE70003031FBF761FE58B1D4F8840084F880507B +:10AE800040F01000C4F8840084F881700120A8E725 +:10AE9000E06FC069B0F5807F206841686FF30F01F3 +:10AEA00000D0314341602068816841F48041816075 +:10AEB0002068016941F4507101612068016841F026 +:10AEC000010101606068B0F5800F04D1206801685D +:10AED00041F400710160002084F8805081E7000097 +:10AEE000DFE00008E9E00008B3E0000870B50446C0 +:10AEF00003F00EF9022811D0204603F009F9084D9D +:10AF000005EB40104068002808D0204603F000F907 +:10AF100005EB40104068BDE87040004770BD000080 +:10AF2000809B002070B5044603F0F2F8022811D08F +:10AF3000204603F0EDF8084D05EB401000690028AD +:10AF400008D0204603F0E4F805EB40100069BDE8A6 +:10AF50007040004770BD0000809B002070472DE9C5 +:10AF6000F84F044600689946174600F1200B8A46C0 +:10AF7000FCF726FC064694F88100012839D1BAF185 +:10AF8000000F7ED0002FFCD094F88000012830D034 +:10AF9000A26800254FF0010884F88080032184F81E +:10AFA0008110C4F88450C4F85CA06566A4F86850A9 +:10AFB000656725672C34B2F5C02FA786E786E5873D +:10AFC00054F82C0D18D0C16821F4C02141F400318F +:10AFD000C160206841686FF30F0139434160206808 +:10AFE000016841F0010101606068B0F5800F08D090 +:10AFF0000CE00220BDE8F88F016841F400610160B7 +:10B00000E7E72068016841F400710160E0680F28FB +:10B010001CD820E02068416989070BD5E16D0968DB +:10B020000162E06D001DE065B4F86200401EA4F806 +:10B0300062000BE0FCF7C4FB811B494503D3B9F167 +:10B04000FF3F03D09DE0B9F1000F32D0B4F86200A9 +:10B050000028DFD179E007282FD872E02068416905 +:10B0600089071ED5B4F8621001290DD9E16B59B1D9 +:10B07000E16D09680162E06D001DE065B4F86200F1 +:10B0800000E07CE0801E09E0E06D0188ABF8001074 +:10B09000E06D801CE065B4F86200401EA4F8620018 +:10B0A0000BE0FCF78DFB811B494503D3B9F1FF3F52 +:10B0B00003D066E0B9F1000F63D0B4F86200002855 +:10B0C000CCD142E02068416989072ED5B4F86210DE +:10B0D00003290CD9E16B402909D9E16D09680162A6 +:10B0E000E06D001DE065B4F86200001F1AE0B4F8DE +:10B0F000621001290CD9E16B51B1E06D0188ABF808 +:10B100000010E06D801CE065B4F86200801E09E06C +:10B11000E16D097880F82010E06D401CE065B4F81E +:10B120006200401EA4F862000BE0FCF749FB811BA3 +:10B13000494503D3B9F1FF3F03D022E0B9F1000F35 +:10B140001FD0B4F862000028BCD100224B46082171 +:10B150002046009602F0E6FF28B1D4F8840040F0C3 +:10B160002000C4F88400204602F038FF84F8818073 +:10B17000D4F8840084F8805000283FF43BAF0120CD +:10B1800038E7204602F02AFFD4F8841084F8805073 +:10B1900041F48071C4F8841084F88180032029E789 +:10B1A00010B502F0B5FF022808D0054901EB4010A8 +:10B1B0000068002802D0BDE81040004710BD000024 +:10B1C000809B002070B5044602F0A2FF022811D037 +:10B1D000204602F09DFF084D05EB401080680028D6 +:10B1E00008D0204602F094FF05EB40108068BDE8CF +:10B1F0007040004770BD0000809B0020024A136829 +:10B2000083430B4313607047040400587047704732 +:10B2100070470000F0B590F83C20012A43D001228D +:10B2200080F83C20D1E90242204ECD6922F44072E0 +:10B230002243D1E9004322F480621A4322F40062DF +:10B240002243D1E9043422F480521A430B6B22F4D6 +:10B25000005222430C8B22F480421A43036822F4EA +:10B26000702242EA0442002422F08052B34242EAB1 +:10B27000050202D00E4DAB4210D10F8D22F4700C9E +:10B28000D1E90862CD6A4CEA075121F0807131435F +:10B2900021F00071114321F000522A435A6480F8D2 +:10B2A0003C400020F0BD0220F0BD00000000014045 +:10B2B00000040140F0B590F83C20012A41D0224E14 +:10B2C000012480F83C40022280F83D2002681F4D96 +:10B2D0005368B242D2F808C001D0AA4203D14F68E5 +:10B2E00023F470033B430F6823F070031F43576040 +:10B2F0000268B24219D0B2F1804F16D0144B9A4274 +:10B3000013D0144B9A4210D0134B9A420DD0AA423C +:10B310000BD0124B9A4208D0114B9A4205D0114BD8 +:10B320009A4202D0104B9A4204D189682CF08003D3 +:10B3300019439160002180F83D4080F83C10084698 +:10B34000F0BD0220F0BD00000000014000040140FB +:10B350000004004000080040000C004000180040BD +:10B360000040014000E0004000E4004010B504004F +:10B3700003D094F83D0010B107E0012010BD00207B +:10B3800084F83C00204600F022F8022084F83D00BA +:10B390002068211D02F0CAFF012084F8480084F8CB +:10B3A0003E0084F83F0084F8400084F8410084F8AF +:10B3B000420084F8430084F8440084F8450084F88F +:10B3C000460084F8470084F83D00002010BD704717 +:10B3D00090F83D10012901D0012070471A4A02213E +:10B3E00080F83D100168CB6843F00103CB60006832 +:10B3F00090421AD0B0F1804F17D01449884214D02F +:10B400001349884211D0134988420ED0124988420C +:10B410000BD01249884208D01149884205D0114901 +:10B42000884202D01049884207D181680F4A1140F2 +:10B43000062906D0B1F5803F03D0016841F0010133 +:10B44000016000207047000000000140000400403F +:10B4500000080040000C00400004014000180040BB +:10B460000040014000E0004000E40040070001000F +:10B4700070472DE9F041044600680027C668056959 +:10B48000A90713D5B10711D5FA1E02610121217751 +:10B49000206880698007204602D0FFF7E9FF04E0BA +:10B4A00000F0F8F8204600F0EDF92777680716D588 +:10B4B000700714D5226802206FF004011161207713 +:10B4C0002068806910F4407F204602D0FFF7D0FF4B +:10B4D00004E000F0DFF8204600F0D4F927772807D1 +:10B4E00015D5300713D5226804206FF008011161CB +:10B4F00020772068C0698007204602D0FFF7B8FF98 +:10B5000004E000F0C7F8204600F0BCF92777E80611 +:10B5100016D5F00614D5226808206FF010011161CD +:10B5200020772068C06910F4407F204602D0FFF7E2 +:10B530009FFF04E000F0AEF8204600F0A3F9277763 +:10B54000E80708D0F00706D021686FF00100086115 +:10B55000204600F083FA280601D4A80408D5300656 +:10B5600006D521686FF4025008612046FFF74FFEB0 +:10B57000E80508D5300606D521686FF480700861AB +:10B580002046FFF743FE680608D5700606D52168F9 +:10B590006FF040000861204600F06AFAA8060AD55C +:10B5A000B00608D521686FF0200008612046BDE88C +:10B5B000F041FFF72DBEBDE8F081000030B587B047 +:10B5C000044614216846F5F768F9246800222B4DDB +:10B5D000022329490120AC4211D10C6844F0100427 +:10B5E0000C60096801F0100105914FF408510091B9 +:10B5F000CDE90132CDE903202148694625E0B4F1C7 +:10B60000804F12D01F4D2048AC4222D10C6844F02C +:10B6100002040C600968009301F00201CDE90132D7 +:10B620000392CDE9043169460FE00C6844F001044F +:10B630000C60096801F00101059105210091CDE937 +:10B640000132CDE9032011486946FBF7A1FF07B09D +:10B6500030BD0F4DAC42FAD10C6844F002040C60CE +:10B66000096801F002010591E9130091CDE9013269 +:10B67000CDE903236946E8E7E044025800000140B1 +:10B680000010025800040040000402580000025854 +:10B6900000180040704770B5044690F83C00002642 +:10B6A0000D4601280BD0012084F83C000C2A4AD01A +:10B6B00007DC82B1042A20D0082A06D131E002201A +:10B6C00070BD102A53D0142A63D00126002084F8BC +:10B6D0003C00304670BD206802F0A6FE20688169FB +:10B6E00041F0080181612068816921F004018161D4 +:10B6F00020682A698169114311E0206802F0E6FEA2 +:10B700002068816941F4006181612068816921F4C8 +:10B710008061816120682969826942EA0121816131 +:10B72000D4E7206802F01EFF2068C16941F00801DB +:10B73000C1612068C16921F00401C16120682A69E2 +:10B74000C169114311E0206802F058FF2068C16907 +:10B7500041F40061C1612068C16921F48061C16167 +:10B7600020682969C26942EA0121C161AEE7206807 +:10B7700002F080FF2068416D41F0080141652068BA +:10B78000416D21F00401416520682A69416D114332 +:10B7900011E0206802F0A8FF2068416D41F40061CB +:10B7A00041652068416D21F4806141652068296907 +:10B7B000426D42EA0121416588E710B5040003D0DB +:10B7C00094F83D0010B107E0012010BD002084F87E +:10B7D0003C00204600F022F8022084F83D0020685A +:10B7E000211D02F0A3FD012084F8480084F83E00EA +:10B7F00084F83F0084F8400084F8410084F8420057 +:10B8000084F8430084F8440084F8450084F8460036 +:10B8100084F8470084F83D00002010BD08B5016899 +:10B820001348814201D113480FE01348B1F1804F12 +:10B830000BD0124A914210D1016841F0020101601F +:10B84000006800F00200009008BD016841F00101AD +:10B850000160006800F00100F5E7094A9142F3D168 +:10B86000016841F040010160006800F04000EAE733 +:10B8700000000140F0440258E8440258000400402F +:10B88000001800407047000030B504464FF0020237 +:10B8900069B1042912D0082917D00C291CD010290D +:10B8A00021D094F84300012824D0012030BD94F821 +:10B8B0003E000128F9D184F83E201DE094F83F00B5 +:10B8C0000128F2D184F83F2016E094F840000128C6 +:10B8D000EBD184F840200FE094F841000128E4D136 +:10B8E00084F8412008E094F842000128DDD184F872 +:10B8F000422001E084F843200122206802F086FD06 +:10B900001E4920681E4A1F4B884209D0904207D02A +:10B91000984205D01C4DA84202D01C4DA84203D12C +:10B92000456C45F4004545642068884218D0B0F164 +:10B93000804F15D01649884212D0164988420FD040 +:10B94000154988420CD090420AD01449884207D049 +:10B95000984205D01249884202D01249884207D144 +:10B960008168114A1140062906D0B1F5803F03D005 +:10B97000016841F001010160002030BD000001407C +:10B9800000040140004001400044014000480140E3 +:10B990000004004000080040000C00400018004077 +:10B9A00000E0004000E400400700010030B5002244 +:10B9B000044600680D4602F029FD41F21111224BA8 +:10B9C00020688A1098420BD0204B984208D0204B18 +:10B9D000984205D01F4B984202D01F4B984209D184 +:10B9E000036A0B4206D1036A134203D1436C23F46A +:10B9F000004343642068036A0B4206D1016A114286 +:10BA000003D1016821F0010101604FF001005DB137 +:10BA1000042D0CD0082D0DD00C2D0ED0102D0FD0D4 +:10BA200084F84300002030BD84F83E00FAE784F833 +:10BA30003F00F7E784F84000F4E784F84100F1E7BD +:10BA400084F84200EEE700000000014000040140DD +:10BA500000400140004401400048014000680349A3 +:10BA6000884201D1FBF7B2BE7047000000E0004001 +:10BA7000704730B590F88410012918D0012280F861 +:10BA800084202421C0F888100022202401680B683B +:10BA90000D6823F0005325F001050D604266016832 +:10BAA0000B60C0F8884080F88420104630BD02202A +:10BAB00030BD7047704770B5044690F88400012887 +:10BAC0001DD0012284F884202420C4F88800206836 +:10BAD0000568026822F0010202602068826822F094 +:10BAE00060620A438260204603F026F92268202122 +:10BAF00000201560C4F8881084F8840070BD02200E +:10BB000070BD70B5044690F8840001281DD0012254 +:10BB100084F884202420C4F888002068056802681E +:10BB200022F0010202602068826822F060420A432B +:10BB30008260204603F000F9226820210020156071 +:10BB4000C4F8881084F8840070BD022070BD70476E +:10BB50007047000010B503F08DFA06280AD000EBFC +:10BB6000C001054800EB81000069002802D0BDE853 +:10BB70001040004710BD00008C9A00202DE9F041D4 +:10BB800007680025044640F60F030226F869396865 +:10BB9000BA6818420AD183067ED501F0200302F06C +:10BBA000805C53EA0C0377D0616F7EE1D44BDFF801 +:10BBB00054C3134001EA0C0C53EA0C0C6CD05FEA3E +:10BBC000C07C0CD05FEAC15C09D54FF0010CC7F80E +:10BBD00020C0D4F8907047F00107C4F89070870730 +:10BBE00009D5D70707D027683E62D4F8906046F0A1 +:10BBF0000406C4F8906046070AD5D60708D027681F +:10BC000004263E62D4F8906046F00206C4F89060C4 +:10BC100006070CD501F020061E4308D0266808232D +:10BC20003362D4F8903043F00803C4F89030030531 +:10BC30000BD54B0109D526684FF400633362D4F865 +:10BC4000903043F02003C4F89030D4F89030002BAB +:10BC50003DD0800609D501F0200002F08051084354 +:10BC600003D0616F09B1204688472168D4F890005D +:10BC70008968490602D410F0280F2AD0204603F024 +:10BC8000B7F92068806840061ED52068083050E863 +:10BC9000001F21F0400100E021E040E80012002AEE +:10BCA000F3D1D4F8800078B197490165D4F88000C9 +:10BCB000FAF7ACF800280AD0D4F88000016D00E053 +:10BCC0002046BDE8F04108472046FFF743FFBDE8A6 +:10BCD000F0812046FFF73EFFC4F89050F7E7D4F814 +:10BCE0006CC02023BCF1010F7ED15FEAC06C7BD514 +:10BCF0005FEAC16C78D51020386220688068400601 +:10BD000073D5D4F8802081491068884234D07F49A7 +:10BD10001831884230D07D49303188422CD07B495F +:10BD20004831884228D079496031884224D0774907 +:10BD30007831884220D07549903188421CD07349AF +:10BD4000A831884218D07249884215D070491831FC +:10BD5000884211D06E49303188420DD06C4948314B +:10BD6000884209D06A496031884205D068497831F3 +:10BD7000884201D06649903140684FF480770004D2 +:10BD8000000C40D0B4F85C1081423CD9A4F85E00AD +:10BD9000D069B8422FD0216851E8000F20F480709C +:10BDA00041E80002002AF6D12068083050E8001F60 +:10BDB00021F0010140E80012002AF5D12068083086 +:10BDC00050E8001F21F0400140E80012002AF5D1A0 +:10BDD000C4F88C30E566206850E8001F21F010019F +:10BDE00040E80012002A01E04AE019E0F3D1D4F85B +:10BDF0008000F9F75BFE2667B4F85C00B4F85E10CB +:10BE0000401A81B208E0B4F85C1081427FF466AF5A +:10BE1000D069B842FAD126672046FFF74AFE56E7B6 +:10BE2000B4F85C00B4F85E10B4F85E20401A81B239 +:10BE3000002AF4D00029F2D0226852E8000F20F442 +:10BE4000907042E80007002FF6D1324F206800F1D1 +:10BE5000080050E8002F02EA070240E8002CBCF17D +:10BE6000000FF3D1C4F88C30E5666567226852E8AC +:10BE7000000F20F0100042E80003002BF6D1CAE7C3 +:10BE8000C60209D5560207D54FF480103862204605 +:10BE9000BDE8F041FFF75CBE06060AD501F080065A +:10BEA00002F40002164304D0A16F00297FF408AF0A +:10BEB0000DE7420611D54A060FD52046016851E824 +:10BEC000002F22F0400241E80024002CF6D1C0F8F7 +:10BED0008830856700F00EFCF9E6020206D54A00BC +:10BEE00004D52046BDE8F041FFF731BEC00196D52C +:10BEF000002994DA2046BDE8F041FFF7DBBD0000E1 +:10BF00000100001020010004EFEE000810000240C4 +:10BF100010040240FEFFFFEF10B5040003D0D4F878 +:10BF2000880010B107E0012010BD002084F88400D3 +:10BF3000204600F027F82420C4F888002068016813 +:10BF400021F001010160A06A10B1204602F016FF45 +:10BF5000204603F0B5F80128E6D02068416821F4B6 +:10BF6000904141602068816821F02A018160206849 +:10BF7000016841F0010101602046BDE8104002F077 +:10BF800061BF00002DE9F04FB5B0044614212EA882 +:10BF9000F4F783FCB8216846F4F77FFCFA4D0226DB +:10BFA000FA494FF000082068083DDFF8DC9377027B +:10BFB00088425DD1002168460222CDF87480CDE927 +:10BFC0000021FDF7CFF808B1F8F77EFDD9F8001091 +:10BFD00041F48011C9F80010D9F8000000F4801075 +:10BFE0003390286840F004002860286800F00400BE +:10BFF0003390286840F00800286028680825B1467A +:10C00000464669022E9100F00800CDE92F982EA92E +:10C01000CDF8C480CDE93250DD48FBF7B9FA0421F0 +:10C020002E91CDE92F96DB482EA9CDE93165FBF79E +:10C03000AFFAD94D4121D94828604FF44030C5E9C5 +:10C040000116C5E903676E61AE61C5E90760284660 +:10C050006E62FAF793FB08B1F8F736FDC4F880502A +:10C0600000220521AC633520FBF758FC35206CE03D +:10C07000CB494FF0070A4FF0400B88426AD10021AC +:10C0800068460222CDF87480CDE90021FDF76AF8F8 +:10C0900008B1F8F719FDD9F8001041F08041C9F84E +:10C0A0000010D9F8000000F080403390286840F07C +:10C0B0001000286028684FF4C0712E912EA900F05E +:10C0C00010004546CDE92F68CDF8C480CDE932A0F7 +:10C0D000B448FBF75DFADFF8C0824F23B24A4FF451 +:10C0E000803908F17808404688E82C00C0E90357F9 +:10C0F000C8F81450C8F81850C8E90759C8F82450AF +:10C10000FAF73CFB08B1F8F7DFFCA34E5022C4F865 +:10C110008080F036C8F83840A3493046C6E9035756 +:10C1200075611831B561C6E90759756286E8060878 +:10C13000FAF724FB08B1F8F7C7FCE66700220521EF +:10C14000B4635220FBF7EAFB5220FBF7DAFB35B071 +:10C15000BDE8F08F9549884230D10020CDF8788035 +:10C160000121CDE900106846FCF7FCFF08B1F8F7A3 +:10C17000ABFC85480830016841F01001016000689F +:10C1800000F010003390286840F001002860286813 +:10C190002EAA4FF4C06100F0010082E84201CDE90F +:10C1A00032A083482EA9CDF8C480FBF7F1F9002214 +:10C1B00005212520FBF7B2FB2520C6E77D498842F3 +:10C1C00066D1002168460222CDF87480CDE90021B5 +:10C1D000FCF7C8FF08B1F8F777FCD9F8001041F474 +:10C1E0000031C9F80010D9F8000000F40030339095 +:10C1F000286840F008002860286870212E912EA938 +:10C2000000F008004546CDE92F68CDF8C480CDE99F +:10C2100032A06048FBF7BCF9674E2B225F494FF410 +:10C2200000383046783186E82600C6E90357756144 +:10C23000B561C6E907587562FAF7A0FA08B1F8F7D0 +:10C2400043FCDFF874912C23C4F8806009F178096D +:10C25000B4634846514A9032C0E90357C9F81450B4 +:10C26000C9F8185089E80C08C9E90758C9F82450DA +:10C27000FAF784FA08B1F8F727FCC4F87C9000229A +:10C280000521C9F838402620FBF748FB26205CE74B +:10C290004A49884276D1002168460222CDF874804E +:10C2A000CDE90021FCF75EFF08B1F8F70DFCD9F8E5 +:10C2B000001041F48021C9F80010D9F8000000F402 +:10C2C00080203390286840F002002860286800F041 +:10C2D00002003390286840F00800286028684FF476 +:10C2E00080412E912EA900F008004546CDE92F6827 +:10C2F000CDF8C480CDE932A03148FBF749F94FF4BD +:10C3000040712E91CDE92F6522482EA9CDE9315AF1 +:10C31000FBF73EF9284E2D2220494FF40039F03624 +:10C320004831304686E82600C6E903577561B56195 +:10C33000C6E907597562FAF721FA08B1F8F7C4FBA4 +:10C34000204D2E23C4F88060B4632846134AC5E903 +:10C350000387C5F814806032C5F81880C5E90789DD +:10C36000C5F8248085E80C08FAF708FA08B1F8F750 +:10C37000ABFBE56700220521AC632720FBF7CEFA73 +:10C380002720E2E620E00000E84402580050004088 +:10C3900000080258000C0258540D002028000240EA +:10C3A00000780040001002582804024000100140AC +:10C3B0000000025800440040BC0E0020004800402D +:10C3C0000004025824100020394988427FF4BFAE8F +:10C3D0000021CDF8788001226846CDE90021FCF7E4 +:10C3E000C1FE08B1F8F770FB3248016841F08001E6 +:10C3F0000160006800F080003390286840F0100071 +:10C400002860286845462EA900F0100033900420CB +:10C410002E90CDE92F68DFF8A080CDE9315040465D +:10C42000FBF7B6F80B2108202E90CDE92F65CDE95A +:10C4300031512EA94046FBF7ABF8DFF88090772604 +:10C440001F4B4FF440384846C0E90357C9F8145011 +:10C45000C9F8185089E84808C9E90758C9F82450AC +:10C46000FAF78CF908B1F8F72FFB144E762114482F +:10C470007836C4F87C904830C9F8384086E8230004 +:10C48000C6E9035775613046B561C6E9075875625C +:10C49000FAF774F908B1F8F717FBC4F880600022C6 +:10C4A0000521B4639C20FBF739FA9C204DE600007F +:10C4B000001C0140F0440258001002589C1000205B +:10C4C000100402402DE9F84F0446D0F88C009B463A +:10C4D00016460D46202802D00220BDE8F88FC5B1CF +:10C4E000BEB10027C4F890702220C4F88C00E76623 +:10C4F0002034FBF765F9824654F8180CA6874FF4F0 +:10C500008053E687FF21203C984207D1226912B16F +:10C5100019E00120E1E740F2FF1114E04FF07F0243 +:10C5200078B1B0F1805F11D0A4F860709842B4F88F +:10C5300060704FF0200801D1206970B12E460025AF +:10C540000CE0266936B9A4F86010EFE7216909B15B +:10C550003F21F8E7A4F86020E8E7002607F0FF098C +:10C56000B4F85E00F0B10022534620212046CDF8F9 +:10C5700000B002F0E7FF18B1C4F88C800320ACE7EC +:10C580002068406A56B100EA090006F8010B00BFB6 +:10C59000B4F85E00401EA4F85E00E1E7384025F8DC +:10C5A000020BF5E7C4F88C80002096E730B4D0F891 +:10C5B0008C30202B02D0022030BC7047A9B1A2B130 +:10C5C0000B4D00240368C466AB420BD05B681B02B2 +:10C5D00008D5046854E8003F43F0806344E8003520 +:10C5E000002DF6D130BC02F059BF0120E4E7000075 +:10C5F000000C005810B502F03DFD06280AD000EBF3 +:10C60000C001054800EB8100C068002802D0BDE8E9 +:10C610001040004710BD00008C9A002010B502F0B9 +:10C6200029FD06280AD000EBC001054800EB810077 +:10C630008068002802D0BDE81040004710BD00000F +:10C640008C9A00202DE9F8430446D0F888009846DB +:10C6500016460D46202802D00220BDE8F883A5B179 +:10C660009EB10021C4F890102120C4F8880018342D +:10C67000FBF7A6F8814654F8100CA687E68720271A +:10C68000183CB0F5805F02D003E00120E5E72069A7 +:10C6900010B12E46002510E000260EE08021204635 +:10C6A00002F050FFC0B9DEB116F8010B21688862B4 +:10C6B000B4F85600401EA4F85600B4F856004B4695 +:10C6C0004FF00002CDF800800028E7D14FF0400184 +:10C6D000204602F037FF48B1C4F888700320BCE759 +:10C6E00035F8020B2168C0F30800E0E7C4F8887051 +:10C6F0000020B2E710B502F0BDFC06280AD000EB1E +:10C70000C001054800EB81004068002802D0BDE868 +:10C710001040004710BD00008C9A0020FEE700008A +:10C72000F0B500230A251C463026372711E000BF4C +:10C73000B5EB107F02D906EB107C01E007EB107C13 +:10C7400001F813C001EB430C00015B1C8CF80140A5 +:10C75000DBB29342ECD3F0BD10EE100A0C49B6EEFA +:10C76000001AF7EE080A20EE011AA1EB600000EEB5 +:10C77000100AF0EE601A21EE002A42EE401A21EE75 +:10C78000800A21EE001A41EE400A20EE800A70472E +:10C79000DF59375F70B51C4615462DED088B93EDBC +:10C7A000011A93ED000AD0ED010A90ED00BAB4EE43 +:10C7B000410AF1EE10FAB1EE608A01D0B0EE608A63 +:10C7C000D1ED00AAD0ED028A91ED011A2AEE809AED +:10C7D0002BEE0B0AD1ED020AB1EE41AA08EE080ACF +:10C7E000F1EE609A08EEA80A05F04EFB20EE000A72 +:10C7F0000AEEEA0A05F048FBF0EE40AA4FF0FF30DF +:10C80000F4EE6AAAF1EE10FA49D1B0EECA0AF0EEDF +:10C81000E90A30EE200AB4EEEA0AF1EE10FA3ED34D +:10C8200028EE080A08EEA80A09EE490A05F02CFBD2 +:10C8300028EE891A68EE090A08EE001A48EEC00AC6 +:10C84000B0EE410A04F0D8FFB0EE409AB0EE6A1A9A +:10C85000F0EE690AB0EE4A0A06F0AEFDF0EE40AA2C +:10C86000B0EE693AF0EE4A2AB0EE682AF0EE481AC5 +:10C87000B0EE4B1AF0EE6A0AB0EE490A06F066FD19 +:10C8800085ED009AD4ED010A002020EE800A85EDA6 +:10C89000010A94ED020A20EE2A0A85ED020ABDEC97 +:10C8A000088B70BD91ED021A71EE600A80EE801A5D +:10C8B00080ED021AD1ED000A60EE800AC0ED000A98 +:10C8C000D1ED010A80EE801A80ED011A0020704738 +:10C8D00090ED021A41EE000AC1ED020AD0ED000A05 +:10C8E00080EE801A81ED001AD0ED010A20EE800A58 +:10C8F00081ED010A90ED030A81ED030A90ED040A2F +:10C90000002081ED040A704700EB8100006E00F00A +:10C91000F84070478068C0F3C00070478068C0F37B +:10C92000800070478068C0F38000704700EB810191 +:10C93000034B51F8600F20F000401043086070472F +:10C9400000600258D0ED002A32EEC03AB0EEC33A91 +:10C95000B4EEE03AF1EE10FA02DC90ED000A0BE0E2 +:10C96000F4EEC02AF1EE10FA02DD30EE200A01E00A +:10C9700030EE600A80ED000AB4EEC10AF1EE10FA62 +:10C9800002DD80ED001A06E0B4EEE10AF1EE10FAE5 +:10C9900001D2C0ED001A91ED000AF0EEC00AF4EEEB +:10C9A000C20AF1EE10FA0BDDB5EEC00AF1EE10FA94 +:10C9B00002DD81ED002A03E0B1EE420A81ED000ABA +:10C9C0000020704738B390ED061AD0ED012AF0EE42 +:10C9D000400AD0ED071A41EE620A90ED022A4FF0AC +:10C9E0007F4241EEC20A10EE901AB2EB410F01D124 +:10C9F000F0EE400A90ED040AD0ED032A90ED052AEE +:10CA000021EE000A80ED071AC0ED060A00EEA20A28 +:10CA100001EE820A70479FED010A70470000000096 +:10CA200010B504002DED068B18D0F5EEC00A9FED71 +:10CA30002C1AC4ED000AF1EE10FA84ED061AF7EE96 +:10CA4000008A84ED071A0CD8C4ED038A84ED041A19 +:10CA500084ED051A84ED011A80ED021ABDEC068BF7 +:10CA600010BD80EE201ADFED1F0A80EE810A05F06E +:10CA700029FA9FED1DAAB0EE408AB0EE4A0A05F0F1 +:10CA800015F8F0EE009AB0EE689A20EE291AB0EE92 +:10CA9000680A68EE080A18EE080A01EE089A20EE05 +:10CAA000291A08EE089A80EE890AC1EE090A84ED77 +:10CAB000030A20EE291A84ED050AB0EE4A0AC4EDF5 +:10CAC000010A84ED041A04F0F1FF20EE290A40EE79 +:10CAD000488A48EE088A88EE890A84ED020ABDE792 +:10CAE00000000000DB0F4940DB0F493FB8B190ED7B +:10CAF000031AD0ED041AD0ED050A31EE211A31EEF9 +:10CB0000201AC0EE010A10EE901A6FEAD15111F00E +:10CB1000FF0F07D0C0ED060AC0ED070A06E09FED43 +:10CB2000040A704780ED060A80ED070AFFF74ABF46 +:10CB30000000000030B58DB000246846242109941F +:10CB40000A940B94F3F7A9FE24480425224B4FF4D2 +:10CB50001012012103600223C0E90124C0E9041579 +:10CB6000047603224176C36180F820408462C0E9E4 +:10CB70000B42C463046480F844408164F8F7C8FD44 +:10CB800008B1F7F7A1FF154809A90994F8F712FAB7 +:10CB900008B1F7F799FF1248062140F2FF7203929D +:10CBA0008DE823000D486946CDE904548DF82140F5 +:10CBB000F8F794FA08B1F7F787FF0C210948CDE997 +:10CBC000000106486946F8F789FA002801D0F7F70E +:10CBD0007BFF0DB030BD0000002002408803002024 +:10CBE0001000C0100000B84F394808B5016841F086 +:10CBF00001010160016801F001010091016841F04B +:10CC00000201016000680022052100F0020000908E +:10CC10000B20FAF783FE0B20FAF773FE00220521A2 +:10CC20000C20FAF77BFE0C20FAF76BFE00220521A0 +:10CC30000D20FAF773FE0D20FAF763FE002205219E +:10CC40000E20FAF76BFE0E20FAF75BFE002205219C +:10CC50000F20FAF763FE0F20FAF753FE002205219A +:10CC60001020FAF75BFE1020FAF74BFE0022052198 +:10CC70001120FAF753FE1120FAF743FE0022052196 +:10CC80002F20FAF74BFE2F20FAF73BFE002205215A +:10CC90003820FAF743FE3820FAF733FE0022052148 +:10CCA0003920FAF73BFE3920FAF72BFE0022052146 +:10CCB0003A20FAF733FE3A20FAF723FE0022052144 +:10CCC0003B20FAF72BFEBDE808403B20FAF719BEDF +:10CCD000D84402581748002170B5154D01228160D3 +:10CCE000182605600225C1602024017404234174C4 +:10CCF00081744661C0E90625026242628262C262B4 +:10CD0000C0E90C210464C0E90E21C0E91131C0E979 +:10CD10001331C0E91531C0E91714C0E91913FAF746 +:10CD2000FFF9002803D0BDE87040F7F7CDBE70BD15 +:10CD300000A00040700400201848002170B5164D76 +:10CD400001220560182581602024C160042301743C +:10CD500041748174C0E90552C26140F20645026225 +:10CD600042628262C262C0E90C250464C0E90E21FD +:10CD7000C0E91131C0E91331C0E91531C0E9171418 +:10CD8000C0E91913FAF7CCF9002803D0BDE87040C8 +:10CD9000F7F79ABE70BD000000A400401005002007 +:10CDA0001848002170B5164D0122056018258160D4 +:10CDB0002024C1600423017441748174C0E90552C8 +:10CDC000C26140F61205026242628262C262C0E93A +:10CDD0000C250464C0E90E21C0E91131C0E913310A +:10CDE000C0E91531C0E91714C0E91913FAF798F929 +:10CDF000002803D0BDE87040F7F766BE70BD0000A4 +:10CE000000D40040B0050020074A0021074810B5B3 +:10CE100005F0D2FD0649074A08600021BDE8104030 +:10CE2000054805F0C9BD00006049010875E100082A +:10CE300000000020804B01085DE700082DE9F04F5D +:10CE400087B014216846F3F728FD5E48016841F079 +:10CE500010010160016801F010010591016841F0C5 +:10CE600004010160016801F004010591016841F0CD +:10CE700080010160016801F080010591016841F0C5 +:10CE800001010160016801F001010591016841F0B3 +:10CE900002010160016801F002010591016841F0A1 +:10CEA0000801016000684FF46044DFF81C81002233 +:10CEB00000F00800214605904046FAF77CFC01226C +:10CEC00040462921FAF777FC4FF400463F480022FC +:10CED0003146FAF770FC4FF440693D48002249465C +:10CEE000FAF769FC4FF4805A394801225146FAF7A3 +:10CEF00062FC4FF4806B374800225946FAF75BFC1E +:10CF0000012569464046CDE900450024029403947A +:10CF1000FAF73EFB032769462920CDE90005CDE954 +:10CF200002474046FAF734FB4FF4881869464FF43D +:10CF3000A0500294CDE900082448FAF729FB009696 +:10CF40006946CDE9015421480394FAF721FBCDF855 +:10CF500000906946CDE901541D480394FAF718FB87 +:10CF60001B486946CDE900A5CDE90257FAF710FB49 +:10CF7000CDF800B06946CDE9015416480394FAF79C +:10CF800007FB2802144D02218DE81300694628464C +:10CF900003940494FAF7FCFA00966946CDE90184FB +:10CFA0002846FAF7F5FA0021A802FEF727F9002231 +:10CFB00005212820FAF7B2FC2820FAF7A2FC07B0D6 +:10CFC000BDE8F08FE04402580008025800100258F3 +:10CFD00000040258000C02580000025870B586B0D8 +:10CFE00018216846F3F759FC18480822164D00210D +:10CFF000012417238160D606E0E80352032580E868 +:10D000001A0000F11403C0E9031483E8620001620E +:10D01000C0E90912C16201630C48FAF7C1FE08B108 +:10D02000F7F752FD4FF0011041F288326946009443 +:10D03000CDE902400548FAF7A3FC002801D0F7F734 +:10D0400043FD06B070BD000000A000525006002055 +:10D050002DE9F0414FF480051448134A07276E115B +:10D060004FF0007C2C0180E8E4100021A300C0E90F +:10D070000514C0E9073141629A008162C162C0E9CA +:10D080000D21C163016441648164C164016541652E +:10D090008165FDF795FB002803D0BDE8F041F7F767 +:10D0A00013BDBDE8F081000000300140AC06002057 +:10D0B0002DE9F04117484FF48007DFF854C00021F4 +:10D0C000FA000726C0F800C01301C0E90362C0E9F6 +:10D0D0000171C0E90731416255105400816252016B +:10D0E000C162C0E90D21C163016441648164C1640E +:10D0F000016541658165C0E90554FDF761FB0028C4 +:10D1000003D0BDE8F041F7F7DFBCBDE8F0810000D7 +:10D11000003800403407002010B58AB0002468466B +:10D120001C21079408940994F3F7B7FB164840F2C2 +:10D13000CF711722134BC0E9024104618461C0E939 +:10D140000032FEF73AFB08B1F7F7BEFC0E4807A91C +:10D1500007940994FEF7AEF808B1F7F7B5FC602024 +:10D160006946CDE900040848042202940494FEF7BD +:10D1700092FA08B1F7F7A8FC0348FEF71FFA0AB0C5 +:10D1800010BD0000001800409009002010B598B0B4 +:10D1900000241C210DA8149415941694F3F77DFB1C +:10D1A00034216846F3F779FB27481822254942F2D3 +:10D1B000107380E81600C0E9033444618461FEF70F +:10D1C000FCFA08B1F7F780FC1F4814A914941594D1 +:10D1D0001694FEF76FF808B1F7F776FC0DAA41F246 +:10D1E0008831602082E81300174800220DA91094AE +:10D1F000119412941394FEF74EFA08B1F7F764FCF9 +:10D20000114808220DA9FEF746FA08B1F7F75CFCB1 +:10D210004FF400500094039401030194CDE90440BD +:10D220000294CDE908410848694606940A940C9492 +:10D23000FDF7F0FF08B1F7F747FC0348FEF7BEF92A +:10D2400018B010BD00000140AC08002010B58AB035 +:10D25000002468461C21079408940994F3F71DFBE9 +:10D260001A4842F2107118224FF08043C0E902417F +:10D2700004618461C0E90032FEF79FFA08B1F7F754 +:10D2800023FC124807A907940994FEF713F808B184 +:10D29000F7F71AFC602041F288318DE813000B4843 +:10D2A000002269460494FEF7F6F908B1F7F70CFC82 +:10D2B000064808226946FEF7EEF908B1F7F704FCC4 +:10D2C0000248FEF77BF90AB010BD0000F808002004 +:10D2D00030B58BB0002468461C210794089409944B +:10D2E000F3F7DBFA164842F20F721723134D802131 +:10D2F000C0E9024204618161C0E90053FEF75DFAB2 +:10D3000008B1F7F7E1FB0E4807A907940994FDF768 +:10D31000D1FF08B1F7F7D8FB60206946CDE90004DA +:10D3200007480C2202940494FEF7B5F908B1F7F708 +:10D33000CBFB0348FEF742F90BB030BD00040040C0 +:10D340004409002070B518480021164C042300F150 +:10D350000C0C164D22158CE80E008161A614C161DB +:10D3600001624162816280E87000FEF7D5FD08B17C +:10D37000F7F7AAFB0C480021FEF7C3FB08B1F7F74B +:10D38000A3FB09480021FEF796FB08B1F7F79CFBC9 +:10D390000548FEF76EFB002803D0BDE87040F7F7A4 +:10D3A00093BB70BD00500040DC090020A086010046 +:10D3B0001848002110B5164C0C224FF4612304606C +:10D3C000C0E90131C160C0E904128161C16101623B +:10D3D00041628162FEF7A0FD08B1F7F775FB0D48C9 +:10D3E0000021FEF78EFB08B1F7F76EFB094800211C +:10D3F000FEF761FB08B1F7F767FB0648FEF739FB5C +:10D40000002803D0BDE81040F7F75EBB10BD000058 +:10D4100000780040700A00201848002110B5164C12 +:10D420000C224FF461230460C0E90131C160C0E9FE +:10D4300004128161C161016241628162FEF76CFD8B +:10D4400008B1F7F741FB0D480021FEF75AFB08B180 +:10D45000F7F73AFB09480021FEF72DFB08B1F7F773 +:10D4600033FB0648FEF705FB002803D0BDE810405B +:10D47000F7F72ABB10BD0000001C0140C00C0020C3 +:10D480001848002110B5164C0C224FF4612304609B +:10D49000C0E90131C160C0E904128161C16101626A +:10D4A00041628162FEF738FD08B1F7F70DFB0D48C8 +:10D4B0000021FEF726FB08B1F7F706FB094800211B +:10D4C000FEF7F9FA08B1F7F7FFFA0648FEF7D1FAC6 +:10D4D000002803D0BDE81040F7F7F6BA10BD0000F1 +:10D4E00000100140040B00201848002110B5164C14 +:10D4F0000C22174B0460C0E90131C1600B46C0E942 +:10D50000041281610A46C161016241628162FCF7D5 +:10D51000E3FF08B1F7F7D8FA0C480021FEF7F1FA5B +:10D5200008B1F7F7D1FA09480021FEF7C4FA08B1AB +:10D53000F7F7CAFA0548FEF79CFA002803D0BDE8C1 +:10D540001040F7F7C1BA10BD00440040980B00200E +:10D5500000093D001848002110B5164C0C22174B4D +:10D560000460C0E90131C1600B46C0E90412816169 +:10D570000A46C161016241628162FCF7ADFF08B1F8 +:10D58000F7F7A2FA0C480021FEF7BBFA08B1F7F74B +:10D590009BFA09480021FEF78EFA08B1F7F794FAD2 +:10D5A0000548FEF766FA002803D0BDE81040F7F7FB +:10D5B0008BBA10BD004800402C0C002000093D0033 +:10D5C00010490122104810B502F042FC08B1F7F7EB +:10D5D0007BFA0E490C4802F05AFE08B1F7F774FACC +:10D5E0000B49094802F0DAF908B1F7F76DFA064875 +:10D5F00002F0D2FE08B1F7F767FABDE81040FBF77A +:10D6000061BA000008000020D8110020E8000020C6 +:10D6100068000020FEE770B505000C4631D0002CF4 +:10D620002FD020781022287204F11F0160786872D0 +:10D63000A078A872E078E87220792873B4F8050021 +:10D640002882D4F807006861D4F80B00A861D4F8E8 +:10D650000F00E861D4F81300A862D4F817006862DC +:10D66000D4F81B00286205F12C00F3F775F8D4F804 +:10D670002F002864D4F83300686494F8370085F8E4 +:10D68000480070BD00F07AB810B520B17821F3F7EA +:10D6900004F9002010BD6FF0010010BD10B50D4C55 +:10D6A000207810B16FF0020010BD05F083F9A06082 +:10D6B00068B10321084A0846F5F71CFE074A042111 +:10D6C0000320F5F717FE01202070002010BD6FF039 +:10D6D000010010BDD4010020A5D7000885D60008A0 +:10D6E00070B504000D4604D022480178FC2907D10A +:10D6F00002E06FF0010070BD90F83700FD2806D001 +:10D700001D484168491C41604FF0FF3070BD194908 +:10D710002046FFF780FF04F1200004F15C0304F1D0 +:10D72000680607C883E8070004F114000C3B07C82B +:10D7300083E8070004F12C000FC886E80F0094ED81 +:10D74000190AD5ED000A002030EE200A84ED190AEE +:10D7500094ED180AD5ED010A30EE200A84ED180A7E +:10D76000D5ED020A94ED170A30EE200A84ED170A6F +:10D7700070BD000025000024D4010020032010B556 +:10D78000F5F778FD0068016821F0010101600320D0 +:10D79000F5F770FD0068016841F0010101600020AB +:10D7A00010BD000002481021806805F07DB800001F +:10D7B000D4010020032010B5F5F75CFD04493822A0 +:10D7C000FEF7F4FE002801D04FF0FF3010BD00003E +:10D7D00025000024C8220121102010B505F09EF874 +:10D7E000102801D0002010BD012010BDFEE7000070 +:10D7F000F0B503004FF0000004460BD0022B09D80F +:10D8000041B100220A604A60022B8A60CA600A6144 +:10D8100002D007E00120F0BD294A1268D20734D0B7 +:10D820004FF40074274D002205EB8203D3F8043433 +:10D83000DE0707D003F0020604F00207BE4201D162 +:10D84000561C0E60DE0607D503F0200604F0200704 +:10D85000BE4201D1561C4E60DE0507D503F40076AA +:10D8600004F40077BE4201D1561C8E60DE0311D550 +:10D8700003F4802604F48027BE420BD19E0302F1FC +:10D88000010604D446F4803603E00F4CCAE746F0A4 +:10D890008076CE60DE010FD503F0806604F08067ED +:10D8A000BE4209D19B0102F1010302D443F480334B +:10D8B00001E043F080730B61521C022AB4D3F0BD27 +:10D8C00000B4005200B00052220204042DE9F041DD +:10D8D000984616460F460446069D08E0681C06D08A +:10D8E000F9F76EFFA0EB0800A8420AD84DB12068F6 +:10D8F000006A384000D00120B042EFD10020BDE8DE +:10D90000F0814FF400702065606D40F001006065AB +:10D910000120F4E70148FAF7CFBC0000D42800202A +:10D920002DE9F041044680790D462027236801281F +:10D930004FF4004604F29C4203EB4511D3F840C07B +:10D94000D1F8080B09D0DFF89CE0F4453AD1020485 +:10D9500033D500BFC1F8086B40E0234B5FEA007E7F +:10D9600004D59C453AD90004F4D437E05FEA806ED0 +:10D9700002D5C1F8087B31E010F0280F2ED19C456C +:10D9800001D90004E6D4D1F8101B05EBC50004EB67 +:10D990008000C1F31201D0F87432A3EB0101C0F88A +:10D9A000681200F51570ADB903691BB1C268114466 +:10D9B000C1600FE0206801210AE080060AD5C1F8A5 +:10D9C000087B07E035B9D4F8640218B9002118467D +:10D9D00003F062F82046E9B2FAF757FB0020BDE8F1 +:10D9E000F08100000A31544F0A30544F2DE9F84FAE +:10D9F0000E460568814601EBC60100EB8104D4E9BF +:10DA000009201434904202D90120BDE8F88FA168A2 +:10DA1000101A814200D20846C01C05EB4618870840 +:10DA20001BE000BFA268A0EB010A524500D292465B +:10DA300099F806100AF1030000911FFA8AF3E168D1 +:10DA400087082846F2B203F06BFBE16801EB0A009D +:10DA5000E060616901EB0A006061D8F8180980B2E2 +:10DA6000B84205D3D4E90401814201D20028D9D1BA +:10DA7000D4E90401884208D8D5F83418012006F00A +:10DA80000F0290408143C5F834180020BDE7000024 +:10DA900010B504462DED068BF0EE409AF0EE618A4B +:10DAA000B0EE418AB0EE609A19EE900A03F078FB6E +:10DAB000002850D019EE100A03F072FB00284AD05B +:10DAC000B0EE480A10EE100A03F06AFB002842D0BC +:10DAD00018EE900A03F064FBE8B36068F0EE490AC0 +:10DAE000B0EE690A90ED071AF6F731FC6068F0EEC7 +:10DAF000409AD0ED000A04F11C0020EE891A20EEB5 +:10DB0000A99AB0EE410AFEF75DFF2078DFED38AA52 +:10DB1000B0EE40AA70B101280ED1D4ED020AB0EEE9 +:10DB2000680A04F06BF8D4ED050A7AEE600A80EE1C +:10DB3000808A01E0B0EE6A8A18EE100AC4ED049AF9 +:10DB400084ED05AA6FEAD05010F0FF0F01D1B0EEBE +:10DB50006A8A606800E047E0D4ED030A90ED010AAC +:10DB6000D0ED031A49EE280A20EE090A90ED021AB8 +:10DB7000204A11EE101A08EE610A21EE201A914295 +:10DB80001CDD10EE901A6FEAD15111F0FF0F15D085 +:10DB900070EE011A90ED052AF0EEE11AF4EEC21AC9 +:10DBA000F1EE10FA0AD890ED042AF0EEE01AF4EE45 +:10DBB000C21AF1EE10FA01D8C4ED030A30EE010AE0 +:10DBC00010EE101A6FEAD15111F0FF0F0CD0D0ED0A +:10DBD000050A10EE900A904201DDF4F7B1FF84EDE2 +:10DBE000060ABDEC068B10BD94ED060AF9E70000AD +:10DBF00000000000BD37863570B504000D464FF0BB +:10DC0000FF3137D050686FEAD05010F0FF0F31D09D +:10DC100090686FEAD05010F0FF0F2BD0D0686FEAF9 +:10DC2000D05010F0FF0F25D010696FEAD05010F0DF +:10DC3000FF0F1FD050696FEAD05010F0FF0F19D0BE +:10DC4000B7EE001A6260C1EE000A10EE900A6FEAA9 +:10DC5000D05010F0FF0F0DD0C4ED020AD2ED060A2D +:10DC600004F11C00FEF7DCFE2046257000F004F8ED +:10DC7000002070BD084670BD10B570B19FED080A58 +:10DC800080ED030A80ED040A80ED050A80ED060AA6 +:10DC90001C30FEF72BFF002010BD4FF0FF3010BDF1 +:10DCA00000000000F7EE000AB0EE081A70EEC00A9D +:10DCB00060EE004A10B590ED002A60EE811A20EE69 +:10DCC000A04A24EE801AD1ED003A61EEA04A64EE3B +:10DCD000200A21EE804AD2ED002A64EE801A20EE5E +:10DCE000822A24EE000A93ED003A029C01EEA32A58 +:10DCF00000EE222A01EE032A84ED002A90ED012A8B +:10DD0000D1ED013A92ED013A20EE822AD3ED012ABB +:10DD100001EEA32A00EE032A01EE222A84ED012A55 +:10DD2000D0ED023A91ED023AD2ED022A60EEA30A5A +:10DD300093ED022A41EE830A40EE220A41EE020AE6 +:10DD4000C4ED020A10BD70EEC00A00EE810A7047F1 +:10DD500091ED001AD0ED000A31EE601A41EE000A92 +:10DD6000C2ED000A91ED011AD0ED010A31EE601A00 +:10DD700041EE000AC2ED010A91ED021AD0ED020A4D +:10DD800031EE601A41EE000AC2ED020A704700004F +:10DD90002DE9F047454D044689464FF0000A2868B2 +:10DDA000C04380070AD0414E283E306820F0806092 +:10DDB0003060F9F705FD0746B04608E00120BDE8F0 +:10DDC000F08700BFF9F7FCFCC01B022867D8D8F821 +:10DDD00000000001F6D4206829684FF4FE0721F402 +:10DDE0007C313E0241EA00302860207AA389B4F8F1 +:10DDF00004C040022D4D2D495B1E227CACF1010C6C +:10DE00001035091DA0F5007080B2521ECCF3080C2D +:10DE100007EA034340EA0C00184306EA0262104393 +:10DE200028600868626920F0C000104308600A6832 +:10DE3000A06922F0200202430A60281D0A6822F02D +:10DE400010020A6002684FF6F873E4699A4342EAE6 +:10DE5000C40202600868B9F1000F40F010020A60C5 +:10DE600011D00868B9F1010F11D040F4001008601A +:10DE7000D8F80000444640F08060C8F80000F9F788 +:10DE80009FFC05460DE0086840F40020EFE740F4F1 +:10DE90008010ECE7F9F794FC401B022801D903201D +:10DEA0008DE720680001F5D5504688E728440258E0 +:10DEB0002DE9F047454D044689464FF0000A286891 +:10DEC000C04380070AD0414E283E306820F0805081 +:10DED0003060F9F775FC0746B04608E00120BDE860 +:10DEE000F08700BFF9F76CFCC01B022867D8D8F890 +:10DEF00000008000F6D4208829684FF4FE0721F046 +:10DF00007C713E0241EA00502860207AA389B4F86F +:10DF100004C040022D4D2D495B1E227CACF1010C4A +:10DF20001835091DA0F5007080B2521ECCF3080C04 +:10DF300007EA034340EA0C00184306EA0262104372 +:10DF400028600868626920F44060104308600A682D +:10DF5000A06922F4007202430A60281D0A6822F4B4 +:10DF600080720A6002684FF6F873E4699A4342EAE5 +:10DF7000C40202600868B9F1000F40F480720A60C0 +:10DF800011D00868B9F1010F11D040F0807008601D +:10DF9000D8F80000444640F08050C8F80000F9F777 +:10DFA0000FFC05460DE0086840F48000EFE740F400 +:10DFB0000000ECE7F9F704FC401B022801D903201C +:10DFC0008DE720688000F5D5504688E72844025840 +:10DFD0000148FCF7E3BA00003407002010B50268DE +:10DFE00040F26F335169946944F008049461026807 +:10DFF000946944F0100494610268146824F00104E8 +:10E000001460026814699C4314610268936823F4E5 +:10E010004043936090F88120042A0CD08A060AD5E8 +:10E02000D0F8842042F08002C0F88420026893690E +:10E0300043F02003936190F88120032A0CD04A0614 +:10E040000AD5D0F8842042F00402C0F88420026887 +:10E05000936943F0400393618A050AD5D0F8842080 +:10E0600042F00102C0F884200268936943F400730F +:10E070009361C9050AD5D0F8841041F00801C0F8B1 +:10E08000841001688A6942F480728A610021A0F8D4 +:10E090006210A0F86A1010BD10B5806B002101223B +:10E0A000A0F86A10A0F8621080F88120FCF75AFAF4 +:10E0B00010BD10B5846BF7F7EBFF02280ED0204699 +:10E0C000FFF78CFFD4F88410012041F01001C4F850 +:10E0D000841084F881002046FCF744FA10BD10B586 +:10E0E000806BFCF71FFF10BD10B5806B90F881109E +:10E0F000072909D0C16FC969B1F5807F05D00068D3 +:10E10000016941F00801016110BDFCF7EFFE10BD8F +:10E1100000680349884201D10020704702207047FF +:10E12000003800402DE9F0411C4616460D460746D2 +:10E13000DDF818800AE000BFF9F742FBA0EB080009 +:10E14000A04202D3601C01D00BE054B13868406992 +:10E1500035EA000007D00020B042EDD00020BDE835 +:10E16000F0810320FBE70120F6E70178407841EADF +:10E170000020704710B5FFF723FA04F01BFCBDE840 +:10E18000104004F061BC4FF0E02010B5006906F0CB +:10E19000BBF8012803D0BDE8104005F079BC10BDE4 +:10E1A00070B59CB04C216846F2F777FB202113A88C +:10E1B000F2F773FB0220FAF75BFC2248016821F4B6 +:10E1C000404101600168002401F440411B91016855 +:10E1D0008904FCD502204025C30323220121CDE977 +:10E1E0000023CDE9031528220990069104230D91FF +:10E1F0000C260A90CDE90B02CDE90E30CDE9106472 +:10E2000068461294FBF7D4FE08B172B6FEE7082206 +:10E210001A95CDE91625D30113AA3F200321CDE994 +:10E22000185382E8130013A8FBF73AFC08B172B642 +:10E23000FEE700214FF480220846FBF76FFE1CB07A +:10E2400070BD0000184802582D48F0B52D4A0168ED +:10E2500041F470010160106800F00F00072804D23B +:10E26000106820F00F00C01D106027490020264CC8 +:10E2700010340B68254D43F001030B6020600B68E0 +:10E280002B400B60136803F00F03072B04D91368AE +:10E2900023F00F03DB1D13601B4C1D4A18341D4B6C +:10E2A000261D371D2060184C1B4D28343060261D5C +:10E2B0003860371D23603B1D35601C1D3A60251DED +:10E2C0002E1D1860331D22602860326018600B68B4 +:10E2D0000D4A0D4C23F48023D4320B60603420604F +:10E2E0001068C0040BD4136843F2D2000B4943F406 +:10E2F000805313600860106820F480501060F0BDF7 +:10E3000088ED00E000200052004402587FEDF6EA5C +:10E3100080020101000202020000FF0100400052E1 +:10E320000148FDF7A6B800008C1100202DE9F04748 +:10E330002C4B4FF0804A2C4D026898422B4E2C4FAC +:10E340002C4C09D0504507D0A84205D0B04203D08C +:10E35000B84201D0A04205D1D1F804C022F0700229 +:10E360004CEA0202DFF890C0DFF890809842DFF8B4 +:10E37000909015D0504513D0A84211D0B0420FD084 +:10E38000B8420DD0A0420BD0604509D0404507D01F +:10E39000484505D01B4DA84202D01B4DA84203D1D1 +:10E3A000CD6822F440722A438E684D6922F08002C3 +:10E3B000C6620E682A439842866207D0A04205D002 +:10E3C000604503D0404501D0484501D1096901634A +:10E3D0000368012143F00403036041610260BDE86A +:10E3E000F0870000000001400004004000080040E9 +:10E3F000000C004000040140004001400044014086 +:10E400000048014000E0004000E4004010B5046A0C +:10E41000012301F01F018B409C4304628A40016A82 +:10E420001143016210BD00002DE9F04FDFF8848038 +:10E43000214EDFF88890DFF888B0026A036AB042A4 +:10E44000DFF880A022F0020C1F4F23F001020262CD +:10E45000426885698B680C6805EA080525F00305A4 +:10E4600043EA0C0344EA050407D0484505D0584563 +:10E4700003D0504501D0B84205D1CD6823F0080340 +:10E480001D4325F00403B04207D0484505D0584548 +:10E4900003D0504501D0B84205D122F44076D1E9ED +:10E4A000055235432A4342608461496841630362EF +:10E4B000BDE8F08F8FFFFEFF000001400004014027 +:10E4C000004001400044014000480140F0B5DFF841 +:10E4D0007CE01F4C1F4D026A036AA04222F0200616 +:10E4E00023F01003036242688369D1F808C00F6803 +:10E4F00003EA0E0323F4407E46EA0C134EEA072695 +:10E5000001D0A84206D1CF6823F0800343EA071365 +:10E5100023F04003A0420AD0A84208D00E4CA042EB +:10E5200005D00E4CA04202D00D4CA04207D1D1E93B +:10E53000054522F4406242EA840242EA85024260D2 +:10E540008661496881630362F0BD0000FF8FFFFEB2 +:10E55000000001400004014000400140004401402F +:10E5600000480140F0B5DFF87CE01F4D1F4E026A05 +:10E57000036AA84222F4007723F48073036243689D +:10E58000C269D1F808C002EA0E020C6822F0030E3C +:10E5900047EA0C2244EA0E0401D0B04206D1CF680B +:10E5A00022F4006242EA072222F48062A8420AD0E2 +:10E5B000B04208D00E4DA84205D00E4DA84202D060 +:10E5C0000D4DA84207D1D1E9055623F4405343EA43 +:10E5D000051343EA06134360C4614968C1630262DC +:10E5E000F0BD00008FFFFEFF00000140000401406D +:10E5F000004001400044014000480140F0B5046A79 +:10E60000026A22F4805202624268C36924F4005410 +:10E61000DFF848C08E680D6803EA0C03104F23F43E +:10E62000407344EA0634B84243EA05230BD00D4D4B +:10E63000A84208D00C4DA84205D00C4DA84202D0EB +:10E640000B4DA84204D14D6922F4804242EA851262 +:10E650004260C361496801640462F0BDFF8FFFFE40 +:10E66000000001400004014000400140004401401E +:10E6700000480140F0B5164F164B026A046A9842F2 +:10E6800022F4003524F4803303624268436D0E891E +:10E690000C6803EA070344EA030445EA06430BD087 +:10E6A0000D4DA84208D00D4DA84205D00C4DA842F2 +:10E6B00002D00C4DA84204D14D6922F4803242EAC6 +:10E6C000052242604465496881650362F0BD00002F +:10E6D0008FFFFEFF000001400004014000400140A8 +:10E6E0000044014000480140F0B5164F164B026A45 +:10E6F000046A984224F48013036222F400144268EE +:10E70000436D0E890D6803EA070344EA065443EAA1 +:10E7100005230BD00D4DA84208D00D4DA84205D0C1 +:10E720000C4DA84202D00C4DA84204D14D6922F4F0 +:10E73000802242EA8522426043654968C1650462DD +:10E74000F0BD0000FF8FFFFE00000140000401400B +:10E75000004001400044014000480140314810B5EC +:10E76000F5F712FE03F0ACFF2F4A00212F4804F00A +:10E7700023F92C4C00212E4A483C20602D4804F0FF +:10E780001BF9606000212C4A2C4804F015F9A060A8 +:10E7900000212B4A2B4804F00FF9E06000212A4A9F +:10E7A0002A4804F009F920610021294A294804F087 +:10E7B00003F960610021284A284804F0FDF8A061AF +:10E7C0000021274A274804F0F7F80022E0611821C9 +:10E7D000022003F0F7FF002260622021022003F0F4 +:10E7E000F1FF0022E0629021022003F0EBFF002203 +:10E7F0002063F021022003F0E5FF002260630C217A +:10E80000022003F0DFFF002220620C21022003F02F +:10E81000D9FFA06303F086FF04F0CCF8BDE81040F8 +:10E8200004F012B998A20020A44B01083DEC0008A6 +:10E83000C84B010869E80008EC4B0108BDEC000872 +:10E84000104C010875E90008344C01081DEC000863 +:10E85000584C010875EA00087C4C0108A1EB00083F +:10E86000A04C0108EDEA0008002003F0D7FE3E4C62 +:10E8700094F8AC0110B1012817D10EE03B4901F129 +:10E880001800F4F7A9F939481830F4F785F9374832 +:10E890003749B030F3F768FD07E034483830FEF709 +:10E8A000FDFE01210220F4F7ADFC94F8AC0198B113 +:10E8B0000128FAD12D483830FEF77CFFFEF78AFF99 +:10E8C000C0B303F0FDFE29490C3101F12C00FEF725 +:10E8D00007FF03F027FF32E0F4F7E4FAF4F74AF910 +:10E8E000F4F754F9F4F766F9F4F770F903F0E8FE79 +:10E8F0001E481830F4F708FA1C481830F4F754FA98 +:10E900001A4A1B4B2432A2F10C0101F19800F3F7D3 +:10E91000BBFD1649B03101F11400F3F7BDFC03F063 +:10E9200001FF206A03F0AEFF10490023206A1A4657 +:10E93000C43116E0FFE70D483830FEF7A5FE206A27 +:10E9400003F0A0FF09490023206A1A4694310D46BE +:10E9500003F064FFA06B03F095FF0023A06B1A4641 +:10E96000294603F05BFFA0E750A2002048A4002046 +:10E9700078030020002003F051FE2748F6F728FA1C +:10E9800026A0F4F7C7FC33A0F4F7C4FC334F0026ED +:10E99000334C00BFF4F7E2FC0500FBD0014631A088 +:10E9A000F4F7B8FC0D2D10D00A2D0ED07F2D2AD0F3 +:10E9B000082D28D020887F28ECD2202DEAD37E2D68 +:10E9C000E8D83D54411C2180E4E727A0F4F7A2FCDD +:10E9D00020883E5480B1F6F78FF94FF400798046D5 +:10E9E0001E484A464146F6F78BF9054641461FA0A8 +:10E9F000F4F790FC002DF3D1184880212680F1F720 +:10EA00002AFF14A005E020880028C3D0401E2080E3 +:10EA100017A0F4F77FFCBDE7C44C01080D0AE6AC73 +:10EA2000A2E8BF8EE4BDBFE794A8E591BDE4BBA416 +:10EA3000E8A18CEFBC8CE8BE93E585A52068656CE9 +:10EA40007020E69FA5E79C8BE591BDE4BBA40D0A71 +:10EA5000000000006D723E200000000018A500209C +:10EA600084030020256300000D0A000025730000C8 +:10EA7000082008002DED028B03F00DFE4FF4FA7113 +:10EA8000B0FBF1F6002003F0C9FD1548F4F7B6FC21 +:10EA900003F0FAFD124F0546134C9FED128A3544E0 +:10EAA00003F00EFE0E490023606A1A46303103F06F +:10EAB00057FE30B90A49B0EE480A01F13000F4F7C8 +:10EAC000A3FC03F02FFEE06A03F0DCFE0023E06A03 +:10EAD000391D1A4603F0A2FE284603F0ADFDDEE71D +:10EAE00098A500206F12033B50A2002003F0D3FD35 +:10EAF0004FF4FA71B0FBF1F6C82003F08FFD244902 +:10EB000024489FED220AF5F721FB03F0BDFD204CC0 +:10EB100005464C3C2049002335441A46206B03F03F +:10EB20001FFE18B91C491B48F5F7DCFB1A490023E6 +:10EB3000A06B1A460C3903F013FE20B9164915488C +:10EB40000C39F5F7F1FB00231449E06A1A4603F08B +:10EB500007FE03F0B5FD11492A460E48F4F7BAFC4A +:10EB60000D490C489031F5F7CBFA03F0DBFD606BF3 +:10EB700003F088FE08490023606B1A46903103F0C9 +:10EB80004DFE284603F058FDC4E700000000FA439C +:10EB90009CA2002060A7002070AA0020F0AB0020FB +:10EBA00003F079FD4FF44871B0FBF1F6C82003F093 +:10EBB00035FD17491748F6F733F903F065FD144D95 +:10EBC0000446483D1449002334441A46686B03F058 +:10EBD000C7FD18B910490F48F6F79EF903F070FD0C +:10EBE0000C48F6F73DF903F09DFD0B4909489039B3 +:10EBF000F6F7BEF9286B03F045FE07490023286BA2 +:10EC00001A46903903F00AFE204603F015FDD9E7B5 +:10EC100098A200206000002470A6002003F03BFDB5 +:10EC20006421B0FBF1F5002003F0F8FC03F02CFDAB +:10EC300004462C44204603F0FFFCFAE7002003F0D2 +:10EC4000EDFC1A48F5F71AFEDFED190A9FED190AD7 +:10EC5000F4F7C8F9184C1548F5F7D0FE1420F5F76D +:10EC6000DDFE0028114807D0F5F72CFE0121002019 +:10EC7000F4F7C8FA012106E0F5F7F6FD0021084691 +:10EC8000F4F7C0FA00210120F4F7BCFA074907485D +:10EC90001831F5F741FE606A03F0F4FD03490023E3 +:10ECA000606A1A46183103F0B9FDD4E720A20020AB +:10ECB000CDCC4C3E0000964350A2002003F0EBFC6C +:10ECC0003221B0FBF1F5002003F0A8FCF4F718FAAC +:10ECD000B6EE000A40F20510F4F7CAF9B6EE000AE3 +:10ECE00040F24910F4F7C4F9B6EE000A4FF4C470CC +:10ECF000F4F7BEF9F4F710FA03F0C6FC04462C440E +:10ED0000204603F099FCFAE7044810B5FCF736FFFB +:10ED1000BDE810400148F4F7CBBA0000DC09002040 +:10ED2000044810B5FCF72AFFBDE810400148F4F78D +:10ED3000BFBA0000700A002030B5416EB9B1016859 +:10ED40000D4B03F108048A688968C2F34262490FD7 +:10ED50005D5C615C2D01B5FBF1F1A0F86A10995C76 +:10ED6000A25C0901B1FBF2F1A0F8681030BD0121ED +:10ED7000A0F86A10F8E70000004A010890F828108F +:10ED8000090706D50168836B4A6822F400421A43DA +:10ED90004A6090F82810C90706D00168C36A4A681B +:10EDA00022F400321A434A6090F82810890706D5E9 +:10EDB0000168036B4A6822F480321A434A6090F873 +:10EDC0002810490706D50168436B4A6822F480225F +:10EDD0001A434A6090F82810C90606D50168C36B2B +:10EDE0008A6822F480521A438A6090F828108906B3 +:10EDF00006D50168036C8A6822F400521A438A60BF +:10EE000090F82810490611D50168436C4A6822F42D +:10EE100080121A434A60416CB1F5801F06D1016827 +:10EE2000836C4A6822F4C0021A434A6090F82810A2 +:10EE3000090606D50168C26C486820F4002010431A +:10EE4000486070472DE9F84300250446C0F890500B +:10EE5000F8F7B6FC8046206820266FF07E470068F1 +:10EE6000000713D50022434631042046009700F0E6 +:10EE700069FB58B1216851E8000F20F0800041E89B +:10EE80000002002AF6D1C4F8886021E020680068FA +:10EE9000400722D5002243464FF4800120460097C8 +:10EEA00000F050FBC8B1206850E8001F21F49071B9 +:10EEB00040E80012002AF6D12068083050E8001F10 +:10EEC00021F0010140E80012002AF5D1C4F88C605D +:10EED000032084F88450BDE8F883C4F88860C4F83F +:10EEE0008C60E5662567002084F88450F3E710B550 +:10EEF000806B0021A0F85E10FCF72CFE10BD70B5F1 +:10EF0000846B00252168D4F88800D4F88C60896867 +:10EF1000090606D5212804D1A4F85650204600F051 +:10EF200091F820688068400606D5222E04D1A4F806 +:10EF30005E50204600F05CF8D4F8900040F01000DD +:10EF4000C4F890002046FCF705FE70BD10B5C169FD +:10EF50000022806BB1F5807F2DD0A0F85E20036881 +:10EF600053E8001F21F4807143E80014002CF6D10F +:10EF70000168083151E8003F23F0010341E8003403 +:10EF8000002CF5D10168083151E8003F23F040031F +:10EF900041E80034002CF5D12021C0F88C10C16E5E +:10EFA000012908D1016851E8003F23F0100341E82E +:10EFB0000034002CF6D10267C16E012902D0FDF7A2 +:10EFC00019FB10BDB0F85C10FCF773FD10BD10B557 +:10EFD000806B01210167C16E012902D0FDF71EFB84 +:10EFE00010BDB0F85C104908FCF763FD10BD0000CF +:10EFF00010B5026852E8001F21F4907142E8001336 +:10F00000002BF6D10E4B0268083252E8001F19405F +:10F0100042E80014002CF6D1C16E012908D1026823 +:10F0200052E8001F21F0100142E80013002BF6D136 +:10F0300000212022C0F88C20C166416710BD00006D +:10F04000FEFFFFEF026852E8001F21F0C00142E816 +:10F050000013002BF6D10168083151E8002F22F48B +:10F06000000241E80023002BF5D12021C0F88810D0 +:10F070007047000000680D49884201D100207047A8 +:10F080000B49884201D1012070470A49884201D1C9 +:10F09000022070470849884201D103207047074980 +:10F0A000884201D10420704706207047005000407C +:10F0B0000044004000480040001C0140007800402F +:10F0C0002DE9F04304468068E24E87B0E24B2168A8 +:10F0D000D4E90427D4F81CC010430A68002547EA85 +:10F0E0000C073843324002430A602068E2684168F6 +:10F0F00021F44051114341602268A1699A4201D034 +:10F10000206A01439668DFF854C3D54FD54806EA14 +:10F110000C060E4396602168666ACA6A22F00F02E6 +:10F120003243CA622268BA420ED1006800F0380049 +:10F1300018286FD07ADCB8B308286CD010286BD1AF +:10F140008BE0282868D18EE0C7498A4209D100683F +:10F1500000F0070006285FD2DFE800F0507D7F81D5 +:10F160008385C2498A4209D1006800F00700062859 +:10F170007BD2DFE800F0437072747678BC498A4233 +:10F1800009D1006800F0070006286ED2DFE800F021 +:10F1900036636567696BB7498A420BD1006800F036 +:10F1A0000700062861D200E043E0DFE800F02754C2 +:10F1B00056585A5CB0498A4206D1006800F03800BF +:10F1C00018284CD0B7DD31E0AC498A4209D100683B +:10F1D00000F00700062848D2DFE800F0103D3F416C +:10F1E0004345A7498A420BD1006800F00700062872 +:10F1F0003BD2DFE800F0033032343638002035E00F +:10F20000A0498A4209D1006800F03800182826D0A9 +:10F2100091DD0BE023E01EE027E09B498A420AD102 +:10F22000006800F03800182819D084DD202888D123 +:10F230001CE001201AE09A4217D18A48001D00689C +:10F2400000F00700062810D2DFE800F003050709E8 +:10F250000B0D02200AE0042008E0082006E0102040 +:10F2600004E0202002E0402000E080208749DFF811 +:10F2700020829A42874A4FF400434FEA21174FF009 +:10F2800000064ED110281AD006DC022809D0042826 +:10F290000BD008287ED10DE020283ED0402879D11F +:10F2A0003DE0F9F717FC014610E06846F9F7C8FCA5 +:10F2B00001990BE003A8F9F765FD049906E01068D1 +:10F2C000800605D51068C0F3C100C140002970D088 +:10F2D000606A676838F8102007EB4703B1FBF2F06B +:10F2E000834257D8B0EB073F54D80023084619464D +:10F2F000F1F736F902467808130E120243EA0121AB +:10F3000010183A4671410023F1F72AF9624AA0F534 +:10F31000407191423ED821688FE03946D8E71946BE +:10F32000D6E7D4F81CC04FF6EF799C4546D10828A3 +:10F3300019D005DC58B101280CD0042875D10DE096 +:10F34000102815D0202835D040286ED134E0FAF7A7 +:10F3500025FD01E0FAF734FD014610E06846F9F7B3 +:10F360006FFC01990BE003A8F9F70CFD049906E086 +:10F370001068800604D51068C0F3C100C140C1B157 +:10F38000636A606838F81330B1FBF3F1490001EBB0 +:10F39000500100E049E0B1FBF0F0A0F11001494557 +:10F3A00043D84FF6F0732168C0F34202184010436F +:10F3B00043E043E03946E3E71946E1E7082819D07E +:10F3C00005DC58B101280CD004282ED10DE01028FE +:10F3D00015D020282BD0402827D12AE0FAF7DEFCD0 +:10F3E00001E0FAF7EDFC014610E06846F9F728FC69 +:10F3F00001990BE003A8F9F7C5FC049906E0106831 +:10F40000800604D51068C0F3C100C140B1B1636A81 +:10F41000606838F81330B1FBF3F101EB5001B1FB38 +:10F42000F0F0A0F11001494505D9012506E0394663 +:10F43000EDE71946EBE7216880B2C8600120A4F827 +:10F440006A00A4F8680028466667A66707B0BDE8AA +:10F45000F0830000F369FFCF000C0058FFF4FF11A8 +:10F46000001001405444025800440040004800404D +:10F47000004C004000500040001401400078004063 +:10F48000007C004000180140001C01400090D003A7 +:10F49000E849010800440258FFFC0F0070B504461B +:10F4A000D0F8800000232225A165A4F85C20C4F8D0 +:10F4B0009030C4F88C50F0B11F49C163D4F880106B +:10F4C0001E480864D4F880101D48C864D4F8800031 +:10F4D00003651346A56D2168D4F880002A462431BF +:10F4E000F7F72AFB38B11021C4F890102020C4F897 +:10F4F0008C00012070BD206940B1216851E8000FE7 +:10F5000040F4807041E80002002AF6D120680830FB +:10F5100050E8001F41F0010140E80012002AF5D137 +:10F520002068083050E8001F41F0400140E8001218 +:10F53000002AF5D1002070BD4DEF0008CFEF000884 +:10F54000FFEE00082DE9F047994617460D460446A0 +:10F55000089E4FF0000833E0701C31D0F8F730F906 +:10F56000A0EB0900B04218D8BEB120680168490775 +:10F5700026D5802D24D0402D22D0C169C94309074A +:10F580000DD4082505622046FFF732FDC4F89050DF +:10F59000012084F88480BDE8F0870320FBE7C06980 +:10F5A000C04300050CD421684FF400600862204677 +:10F5B000FFF71EFD2021C4F8901084F88480ECE74A +:10F5C0002068C06935EA000004D00020B842C3D0EA +:10F5D0000020E0E70120F9E7044810B5FCF7CEFA77 +:10F5E000BDE810400148F3F763BE0000C00C0020E6 +:10F5F000044810B5FCF7C2FABDE810400148F3F723 +:10F6000057BE0000040B0020044810B5FCF7B6FA02 +:10F61000BDE810400148F3F74BBE0000980B0020F6 +:10F62000044810B5FCF7AAFABDE810400148F3F70A +:10F630003FBE00002C0C00202DE9F0410C46D0F814 +:10F64000D412D0F8C83200EB8101D1F8C01229B32E +:10F6500004F00F02002702EB820500EB8506B56976 +:10F660004DB102EBC20203EB8202D269B5FBF2F3A9 +:10F6700002FB1352A2B1C1F81472D0F8D42200EBED +:10F680008200D0F8C40203692BB1D1F8080201F559 +:10F690000471224698470020BDE8F0810320FBE773 +:10F6A000002321461A46B76100F0D3FDF3E770B599 +:10F6B0000546D0F8D40205EB8000D0F8C04294B1E2 +:10F6C000284600F0A0FCC4F80C02D5F8D40205EBE3 +:10F6D0008000D0F8C412D4F80402CA6804F503719B +:10F6E0009047002070BD032070BD000070B5224D12 +:10F6F0000446297800F0C8FB2878002600F00F00A7 +:10F7000000EB800004EB800086842046697800F0DE +:10F71000BBFB687800F00F0000EB800004EB80007A +:10F72000A0F864612046A97800F0AEFBA87800F04C +:10F730000F0000EB800004EB80008684C684D4F8C0 +:10F74000D40204EB8000D0F8C01299B1D0F8C40202 +:10F7500040688047D4F8D40204EB8000D0F8C0029F +:10F7600000F09FFFD4F8D40204EB8000C0F8C06220 +:10F77000C4F8BC62002070BD9400002010B5D0F821 +:10F78000D41200EB8100D0F8C04284B1D0F8C4128A +:10F7900059B194F80002FF2807D08B68214694F8ED +:10F7A00001229847FF2084F80002002010BD0320AA +:10F7B00010BD00000A210180004870479800002019 +:10F7C00070B5822106460D4800F076FA0121054603 +:10F7D0000A4800F071FA81210446084800F06CFAEA +:10F7E0000DB11021A9714FF0400104B1A18000B109 +:10F7F000818043203080014870BD0000A4000020BB +:10F8000070B5822106460D4800F056FA01210546E2 +:10F810000A4800F051FA81210446084800F04CFAE9 +:10F820000DB11021A9714FF4007104B1A18000B194 +:10F83000818043203080014870BD0000A40000207A +:10F8400070B5822106460D4800F036FA01210546C2 +:10F850000A4800F031FA81210446084800F02CFAE9 +:10F860000DB11021A9714FF0400104B1A18000B188 +:10F87000818043203080014870BD0000A40000203A +:10F880002DE9F0474FF407750446284600F00AFFBB +:10F8900006004FF0000965D02946F0F7FEFFD4F8C6 +:10F8A000D40201273C4D4FF4007A4FF0100804EBCE +:10F8B0008000C0F8C062C4F8BC62207CF0B3297834 +:10F8C00040230222204600F00EFC2878402300F05E +:10F8D0000F0000EB800004EB80008784022269782F +:10F8E000204600F000FC697808230322204601F03E +:10F8F0000F0101EB810104EB8101A1F86471A9788A +:10F9000001F00F0101EB810104EB8101A1F82680D8 +:10F91000A97800F0E8FBA978C84601F00F0101EBD7 +:10F92000810104EB81018F84C6F80492D4F8D402DB +:10F9300004EB8000D0F8C402006800E01AE006F58D +:10F9400001768047C6F81080C6F8148032687AB114 +:10F95000207CF8B140236978204600F0D0FB0020DD +:10F96000BDE8F087D4F8D41204EB8101C1F8C0924D +:10F970000220F5E7297802225346204600F0B3FB27 +:10F980002878534600F00F0000EB800004EB800065 +:10F990008784A3E75346DEE79400002039B1D0F80E +:10F9A000D42200EB8200C0F8C4120020704703206C +:10F9B0007047D0F8D42200EB8200D0F8C00218B112 +:10F9C000C0F804120020704703207047D0F8D432EA +:10F9D00000EB8300D0F8C00228B1C0F81022C0F8B4 +:10F9E000081200207047032070472DE9FC410646AD +:10F9F000D0F8D4020C46002106EB80000D46D0F86A +:10FA0000C0728DF80010ADF8041037B1217811F0F4 +:10FA100060022CD0202A48D102E00320BDE8FC81FE +:10FA2000E288E2B109060BD5D0F8C40239468368F2 +:10FA300060789847E288072A00D9072239462CE0E7 +:10FA4000607887F80002E088402800D340203946DB +:10FA5000C2B2304687F8012200F07FF82AE0D0F8E1 +:10FA6000C4020022214683686078984722E06078CB +:10FA700030B101281ED00A2809D00B2815D110E07A +:10FA800096F89C02032810D1022201A905E096F8FD +:10FA90009C02032809D101226946304600F077F81C +:10FAA00008E096F89C02032804D02146304600F076 +:10FAB00049F803252846B1E710B5D0F8D41200EB79 +:10FAC00081020121D2F8C0221AB1D2F8143213B146 +:10FAD00016E0032010BD0B490123C2F81432D2F8FE +:10FAE0001032097801F00F0404EB840400EB840465 +:10FAF000A361D2F81032D2F8082200F0AAFB00214C +:10FB0000084610BD9400002010B5D0F8B82200249B +:10FB10005268904700B10324204610BD0020704772 +:10FB20000020704713460A46002110B500F0E7FA9E +:10FB3000002010BD13460A46002110B500F089FBD5 +:10FB4000002010BD10B58021044600F063FB204664 +:10FB5000BDE81040002100F05DBB10B5C0F8582191 +:10FB60000323C0F89432C0F85C2113460A460021F2 +:10FB700000F0C5FA002010BD10B50521C0F89412A0 +:10FB800000231A46194600F0BAFA002010BD10B53D +:10FB900082610223C0F89432C26113460A460021F2 +:10FBA00000F057FB002010BD10B50421C0F89412DE +:10FBB00000231A46194600F04CFB002010BDF8B592 +:10FBC00004460D460020ADF800004888010A0629C9 +:10FBD00047D006DC01290FD0022912D0032962D1B7 +:10FBE0001DE0072946D00F295DD1D4F8B402C269BF +:10FBF00020E0694690473BE0D4F8B412207C0A68C4 +:10FC0000F7E7207C02260028D4F8B80205D0C16AA4 +:10FC1000684688470146467036E0816AF8E7C0B218 +:10FC2000062840D2DFE800F003090D111519D4F8B9 +:10FC3000B4024268B2B3207CDBE7D4F8B402826835 +:10FC4000F8E7D4F8B402C268F4E7D4F8B402026961 +:10FC5000F0E7D4F8B4024269ECE7D4F8B402826960 +:10FC6000E8E7207CF0B9D4F8B802416B68468847D1 +:10FC7000014609E0207CA8B9D4F8B802016B6846B7 +:10FC80008847014607204870EA888AB1BDF800001D +:10FC900040B1824200D902462046ADF80020FFF76D +:10FCA00076FFF8BDFFE729462046FFF74BFFF8E750 +:10FCB0002046FFF779FFF4E778B542880D460178D2 +:10FCC000002604468A4212D9ADF800100AE06946BF +:10FCD00000F019F84178052904D181780646A94237 +:10FCE00005D000266188BDF800209142EFD830464B +:10FCF00078BD002102E0491C401CC9B20278002AEC +:10FD0000F9D1084670470A8803781A440A800178B6 +:10FD10000844704770B5002816460D4620D00446AA +:10FD2000FFF7E7FF02220146100202EB4101814288 +:10FD300004D82046FFF7DDFF4000801C3080337878 +:10FD4000032102202B700022697006E0431C295415 +:10FD5000D8B2411C641C2A54C8B221780029F5D1BC +:10FD600070BD01004FF0000004D0012901D002292C +:10FD700001D00320704701207047000004A00A460C +:10FD8000024910B5FFF7C6FF004810BDB4140020AB +:10FD900043444320436F6E66696700001220088069 +:10FDA000004870472C00002004A00A46024910B504 +:10FDB000FFF7B0FF004810BDB414002043444320B7 +:10FDC000496E7465726661636500000004200880F6 +:10FDD000004870472800002004A00A46024910B5D8 +:10FDE000FFF798FF004810BDB41400204D526F6219 +:10FDF0006F74000004A00A46024910B5FFF78AFF9D +:10FE0000004810BDB41400204D726F626F7420431F +:10FE10006C69000010B51A2008800B480A490830A8 +:10FE2000021F096800681468081809D007490822E9 +:10FE3000FCF776FC0549042220461031FCF770FCE3 +:10FE40000248801E10BD000000E8F11F4E00002097 +:10FE500078B10023C0F8B832C0F8C432C0F8D0324C +:10FE600009B1C0F8B4120121027080F89C1200F0B0 +:10FE7000CFB80320704710B5D0F8C802F8F747F99B +:10FE8000BDE81040FFF76DBF10B5D0F8C802F8F715 +:10FE900019F9BDE81040FFF764BF2DE9F04117469E +:10FEA00004464FF0000521B194F89C02032842D08B +:10FEB0004CE0D4F8941204F11400022935D1D0E9B1 +:10FEC00002639E4206D9F21A394682602046FFF745 +:10FED00031FE0FE0B34214D14068984211D3D4F8F8 +:10FEE000981288420DD2002220461146FFF722FECA +:10FEF000C4F8985200231A461946204600F0FFF82D +:10FF000013E094F89C02032808D1D4F8B802C16821 +:10FF100021B1C4F8D452C1682046884780212046C8 +:10FF200000F078F92046FFF727FE94F8A00268B1A8 +:10FF300084F8A0520AE0D4F8B802426932B1C4F899 +:10FF4000D452426920469047002800D10020BDE8E5 +:10FF5000F08170B5134604464FF0000221B194F8C9 +:10FF60009C02032830D03AE0D4F8941204F5AA7029 +:10FF7000032934D1D0E902518D420AD96A1A82602C +:10FF80000846824200D3024619462046FFF7CAFDC2 +:10FF900025E094F8AA0210F01F0003D0012802D037 +:10FFA000022800D0002294F89C02032808D1D4F83B +:10FFB000B802016921B1C4F8D422016920468847FA +:10FFC0002046FFF7F1FD0AE0D4F8B802836933B1A7 +:10FFD000C4F8D422826920469047002800D100202E +:10FFE00070BD0020704710B5D0F8B812012280F81B +:10FFF0009C22002429B103794A68D9B2904700B104 :020000040801F1 -:100000000C600D71CB718A714B728A72CA720A735D -:100010008A73CA730A74F8F70BFC08B1F4F73EFD53 -:1000200008484FF40071F7F7E6FF064880220021E8 -:10003000F7F7E5FF034801214FF4BA72F7F7DFFF46 -:10004000002070BDD428002000000440D0F8C82251 -:1000500001F07F000B0600EBC00002EB800001D531 -:10006000807D704790F85602704710B5D0F8D422C2 -:1000700000EB8202D2F8B82222B190F89C32032B16 -:1000800002D004E0032010BD126A02B190470020A4 -:1000900010BD10B5D0F8D42200EB8202D2F8B822FD -:1000A00022B190F89C32032B02D004E0032010BD53 -:1000B000526A02B19047002010BD10B51C46D0F81E -:1000C000C80213462246F8F742F8BDE81040FFF791 -:1000D00032BE10B5D0F8C802F8F76AF8BDE8104093 -:1000E000FFF729BE2DE9F041044601250020D4F890 -:1000F000B812064684F89C52C4F894026060C4F8B2 -:10010000A40284F8A00231B14A6822B1002120463D -:10011000904700B103262046002240231146FFF7F6 -:10012000CCFF4027A4F8645100223B4680212046A2 -:10013000C4F86071FFF7C1FFA58430462762BDE8AF -:10014000F08190F89C12042903D190F89D1280F858 -:100150009C120020704710B590F89C12032905D11D -:10016000D0F8B81211B1C96901B18847002010BD9B -:1001700001740020704710B5D0F8C802F8F70EFCE3 -:10018000BDE81040FFF7D7BD70B5044600F2AA20C5 -:10019000054600F051F894F8AA020123B4F8B01211 -:1001A00010F01F02C4F89432C4F898120AD0012A41 -:1001B0000ED0022A12D000F080012046BDE8704027 -:1001C00000F012B829462046BDE8704000F0D0B8D3 -:1001D00029462046BDE8704000F013BA2946204663 -:1001E000BDE8704000F05BB910B5D0F8C802F7F771 -:1001F000F9FFBDE81040FFF79EBD10B5D0F8C8026A -:10020000F8F7E6FBBDE81040FFF795BD90F89C12AB -:10021000042903D090F89C1280F89D12042180F8E4 -:100220009C120020704710B5D0F8C802F8F713F8F8 -:10023000BDE81040FFF77FBD70B5054608788C1CFF -:100240002870487868702046FDF779FFA41C688004 -:100250002046FDF774FFA880A01CFDF770FFE88022 -:1002600070BD38B504460020ADF80000A1B1C4F857 -:10027000B812D4F8D40204EB8000D0F8B802C16AF6 -:1002800019B168468847C4F8D002D4F8D802401C97 -:10029000C4F8D802002038BD032038BDD0F8B832E9 -:1002A00002460020002B02D01B68104618477047FA -:1002B0002DE9F0412C4E0446887800258846C1B2CD -:1002C0000129317006D941462046FFF725FC03205D -:1002D000BDE8F08194F89C02022702280CD0032884 -:1002E0001DD041462046FFF717FC31782046FFF726 -:1002F000F5FB03252846EBE789B320466160FFF74D -:10030000CDFF050004D041462046FFF705FC1DE067 -:100310002046FFF733FC032084F89C02EAE7C1B1D2 -:10032000606888421BD0C1B22046FFF7D7FB317806 -:1003300020466160FFF7B2FF050010D0414620461D -:10034000FFF7EAFB21792046FFF7C8FB84F89C728F -:10035000D0E7616084F89C722046FFF7BFFB20461F -:10036000FFF70CFCC6E7000090000020FFF745BF38 -:100370002DE9F0410A784FF0000512F060020CD030 -:10038000202A01D0402A7DD1D0F8D42200EB82026D -:10039000D2F8B8229268904731E04B7800220126CB -:1003A0000A2B6FD2DFE803F041666E586E08056EC7 -:1003B0002D29FFF7EEFB67E004468888D8B9C88886 -:1003C000C8B94888802816D294F89C2200F07F078C -:1003D000032A10D03946204684F89E72FFF7CBFEE0 -:1003E0002046FFF7CBFB1FB1022084F89C024BE0B4 -:1003F00084F89C6248E0204644E0FFF759FF054638 -:1004000042E0CB88012B3DD190F89C32012B04D0E7 -:10041000022B02D0032B35D104E000F108018260E9 -:10042000012216E00122011D13E090F89C22012A0E -:1004300003D0022A01D0032A24D1CA88022A21D15A -:10044000D0F8A412C66009B10321C160022200F1F4 -:100450000C01FFF786FB17E04A88012A02D0022A26 -:1004600003D00FE0C0F8A46216E08988090A80F87A -:10047000A01211E090F89C32012B08D0022B06D07C -:10048000032B04D0FFF748FB2846BDE8F0814988DC -:100490000129F9D1C0F8A422FFF770FBF4E72DE998 -:1004A000F0410A780E460979054612F060004FF0D7 -:1004B0000008CCB20BD0202801D040286AD12146B8 -:1004C0002846FFF715FBFF2800D0D8B396E07078D8 -:1004D000C8B3012824D003285CD195F89C020228D7 -:1004E00002D0032856D10CE0002C53D0802C51D0E0 -:1004F00021462846FFF778FE80212846FFF774FE44 -:100500007CE0708840B93CB1802C05D0F08818B9E7 -:1005100021462846FFF768FE2846FFF72FFB6DE0CF -:1005200095F89C020228DFD0032863D1708880BB35 -:10053000600603D021462846FFF787FC2846FFF7D0 -:100540001DFBBCE700E00AE0C5F8D402D5F8B8020C -:100550008268F2B131462846904780464EE095F8D1 -:100560009C020027022802D0032843D113E00CB1DB -:10057000802C3FD1200604F07F0000EB800005EBCB -:10058000800101D5143101E001F5AA7102220F604A -:100590002CE033E02EE0200604F00F0000EB80009A -:1005A00005EB800009D5808C20B304F07F0000EBC0 -:1005B000800005EB800614360AE0B0F86401C8B18B -:1005C00004F07F0000EB800005EB800606F5AA76BC -:1005D0004CB1802C07D021462846FFF737FD10B1DB -:1005E0000120306000E03760022231462846FFF7E4 -:1005F000B8FA03E031462846FFF78EFA4046BDE8D8 -:10060000F08170B5054608780E464FF0000410F0F2 -:10061000600003D0202801D0402827D195F89C0203 -:10062000012803D0022801D003281FD1B088C1B20D -:1006300001291AD8C1B22846FFF75CFAFF280CD06E -:1006400058B9D5F8B8128A683AB1C5F8D402284624 -:100650008A6831469047044600E00324F08820432E -:1006600007D12846FFF78AFA03E031462846FFF70C -:1006700053FA204670BD704700487047B4260020EA -:1006800070B54D7801230A78012D1C4C02F00F053E -:1006900003FA05F3D0F81C5817D000EB421245EAD4 -:1006A0000343C0F81C38D2F8000B00040BD40B89AC -:1006B0000979D2F8000BC3F30A03184344EA8141D5 -:1006C0000843C2F8000B002070BD9EB23543C0F84D -:1006D0001C5800EB4213D3F800090004F3D40D8931 -:1006E0000979D3F80009C5F30A058904284341EACA -:1006F000825108432043C3F80009E4E7008000105A -:10070000D0F800196FF30A01C0F80019D0F80418E6 -:1007100041F48071C0F804180020704770B50D4690 -:100720000446C2F307211E460498012922D0E0683E -:1007300040F04000E060204600F03CF8C6F307219E -:100740000029A16B2ED021F48031A163C5F30741AC -:1007500001290ED1E16D154A89B2E165E16D1143C0 -:10076000E165A16841F00601A160A16841F02001A6 -:10077000A16070BDA26BC3B20D49012B22F4803081 -:10078000A063E06800EA0100E060E06820F4401047 -:10079000E06003D1E06840F48010E060204600F0A3 -:1007A00009F8D3E741F48031CFE700000000EE0301 -:1007B000BFFFBDFF08B500214FF070620091009BA4 -:1007C0005B1C009393420CD80369002BF7DA00916D -:1007D000016941F0010101610099491C00919142B8 -:1007E00001D9032008BD0169C907F5D1002008BD62 -:1007F00070B50A7801234C78012C00EB42122CD002 -:10080000D2F8004B002C0BDAD2F8004B44F0006415 -:10081000C2F8004BD2F8004B44F08044C2F8004BC1 -:100820000C78D0F83C5804F00F0403FA04F425EADD -:100830000444C0F83C480978D0F81C4801F00F0186 -:100840008B401C4924EA0343C0F81C38D2F8000B43 -:100850000840C2F8000B002070BDD2F80049002CFF -:100860000BDAD2F8004944F00064C2F80049D2F82B -:10087000004944F08044C2F800490D78D0F83C4863 -:1008800005F00F050C4E03FA05F5ADB2AC43C0F808 -:100890003C48D0F81C48097801F00F018B4099B210 -:1008A0008C43C0F81C48D2F800093040C2F8000957 -:1008B000D1E700000078F3EF007833ECD0F8001EA9 -:1008C00021F00301C0F8001ED0F8041821F0020145 -:1008D000C0F8041800207047D0F8001E21F0030172 -:1008E000C0F8001ED0F8041841F00201C0F8041846 -:1008F000002070472DE9F04F00250F469046044632 -:100900002E46284604EB8001C1F80451401C0F28F4 -:10091000F8D3C3F307405FEA0009204610D0806B8C -:1009200040F40011C4F83810C8F30720C4F8005E82 -:100930000128204617D0D0F8001841F0030119E033 -:10094000D0F8040840F00201C4F80418A06B20F4A9 -:100950000011A163206840F040012160206840F050 -:1009600080012160E0E7D4F80018380E204601D05D -:1009700041F00101C0F80018102100F08CFA00B11C -:100980000126204600F06BFA00B101264FF67F3AAF -:100990004FF0006CC4F810584FF0904BC4F8145846 -:1009A000C4F81C580020FAB214E000BF04EB401158 -:1009B000D1F80039002B06DA10B1C1F800B904E013 -:1009C000C4F800C901E0C1F80059C1F81059C1F8D4 -:1009D00008A9401C8242E9D8002013E004EB401132 -:1009E000D1F8003B002B06DA10B1C1F800BB04E0DF -:1009F000C4F800CB01E0C1F8005BC1F8105BC1F89E -:100A000008AB401C8242E9D8D4F81008C7F307426B -:100A1000002A6FF0804120F48072C4F81028A5618C -:100A2000616103D1A06940F01000A061A069C8F322 -:100A30000741094A1043A06119B1A06940F00800BC -:100A4000A061B9F1010F03D1A06904490843A06175 -:100A50003046BDE8F08F000000383C8004000040C4 -:100A6000816821F0010181600020704710B5144CAD -:100A7000036CA34203D9D0F8003B002B1EDB0023FC -:100A8000C0F8103B0129D0F8101B41F40021C0F838 -:100A9000101BD0F8101B41F01801C0F8101BD0F843 -:100AA000101B41F0C041C0F8101B07D1C0F8142B37 -:100AB000D0F8001B41F08021C0F8001B002010BDC1 -:100AC0000A30544F0B784A78012A00EB43100BD0C0 -:100AD000D0F8002B22F40012C0F8002B097903296A -:100AE00014D0022912D017E0D0F8002922F4001205 -:100AF000C0F800290979032901D002290CD1D0F8C6 -:100B0000001941F08051C0F8001905E0D0F8001B31 -:100B100041F08051C0F8001B002070470A784B78E4 -:100B2000D1B2012B00EB421012D0D0F8002B002ADA -:100B300006DB29B1D0F8001B21F08041C0F8001B72 -:100B4000D0F8001B41F40011C0F8001B00207047D2 -:100B5000D0F80029002A06DB29B1D0F8001921F0CD -:100B60008041C0F80019D0F8001941F40011C0F814 -:100B70000019EBE7F8B50B786FF060464F788C4DB5 -:100B8000DCB2012F00EB43132BD0D3F8107B002CE9 -:100B900007EAC544C3F8104BD3F8104B04EA050428 -:100BA000C3F8104B7ED00D69002D7CD08C68254495 -:100BB0006D1EB5FBF4F5ADB26C430C6206EAC5459B -:100BC000D3F8104B2C43C3F8104BD3F8104B0D6ADD -:100BD000C5F3120554EA0504C3F8104B012A73D07B -:100BE000CEE00F6907B3D3F810796FF31207C3F89B -:100BF0001079D3F8107907EA0507C3F810791CB308 -:100C0000D1F810C08D68D3F81079AC44ACF1010C68 -:100C1000BCFBF5F5ADB206EAC5463743C3F810791B -:100C20000E79012E1CD02AE0D3F810692E40C3F8AB -:100C30001069D3F8105945F40025C3F81059D3F8BA -:100C400010596FF3120520E00E698D68AE4200D98D -:100C50000D61D0F8106946F40026C0F810690EE066 -:100C6000D3F810694FF0C04707EA457726F0C04631 -:100C7000C3F81069D3F810593D43C3F810590E69F1 -:100C8000D3F81059C6F312063543C3F81059012A98 -:100C90001BD000EB4413D3F8004944F00444C3F8DC -:100CA000004901E047E05AE00C79012C2ED00A6996 -:100CB0005AB30B78D0F83418012203F00F039A408E -:100CC0001143C0F8341871E056E0CA691AB100EB5C -:100CD0004413C3F81429097901290ED1D0F8081852 -:100CE000C90500EB4411D1F8002902D442F00052AA -:100CF00001E042F08052C1F8002900EB4410D0F826 -:100D0000001941F00441C0F800194FE0D0F808483C -:100D1000E405D3F8004902D444F0005401E044F063 -:100D20008054C3F8004900920B8A0A78C9689BB2C4 -:100D300000F0E0F93AE00C690CB18C680C618C6849 -:100D40000C62C4F31205D0F8104B2C43C0F8104BC2 -:100D5000D0F8104B44F40024C0F8104B3EE78D68E7 -:100D6000D3F8104BC5F312052C43C3F8104BD3F83E -:100D7000104B44F400242FE7CA680AB1C3F8142BBF -:100D8000097901290CD1D0F80808C005D3F8000B67 -:100D900002D440F0005001E040F08050C3F8000B56 -:100DA000D3F8000B40F00440C3F8000B0020F8BD5E -:100DB000FFFF07E038B5002242F2107400230092D2 -:100DC0000A784D78012D00EB421219D0D2F8005B61 -:100DD000002D3CDAD2F8005B45F00065C2F8005BFC -:100DE0000A7800EB4212D2F8005B45F08045C2F869 -:100DF000005B009A521C0092A24221D9012326E0F6 -:100E0000D2F80059002D22DAD2F8005945F00065D9 -:100E1000C2F800590A7800EB4212D2F8005945F0A6 -:100E20008045C2F80059009A521C0092A242E5D8AF -:100E30000A7800EB4212D2F80029002AF3DB06E020 -:100E40000A7800EB4212D2F8002B002AD1DB1846B8 -:100E500038BD816841F0010181600020704708B50C -:100E600000214FF070620091009B5B1C0093934245 -:100E70000AD80369002BF7DA009110230361009967 -:100E8000491C0091914201D9032008BD0169C9069E -:100E9000F5D4002008BD18B500224FF07063009211 -:100EA000009C641C00949C420CD80469002CF7DA66 -:100EB0002024009244EA811101610099491C0091AB -:100EC000994201D9032018BD01698906F5D4002093 -:100ED00018BDD0F8080810F0060004D0022803D08E -:100EE000062801D00F20704702207047406900F0AB -:100EF00001007047D0F81818D0F81C08084080B2DC -:100F00007047D0F81818D0F81C080840000C70473B -:100F100010B5D0F8102801F00F0300EB4114D0F801 -:100F20003418D4F80809D94001F0010142EAC1118E -:100F3000084010BD00EB4111D1F8081BD0F814088F -:100F40000840704741698069084070470346084679 -:100F500030B5940802F00301002203F5805303E04A -:100F60001D68521C40F8045BA242F9D300290CD042 -:100F70001C680023491EDD00090403F10103090C6C -:100F800024FA05F200F8012BF4D130BD70B5044607 -:100F9000C06801294FF0000520F0C040E06001D09A -:100FA00079B120E0E06840F00050E0600A20F5F7F9 -:100FB000FBFE60690A3510F0010F10D1C82DF5D382 -:100FC0000DE0E06840F08040E0600A20F5F7ECFEBC -:100FD00060690A3510F0010F01D0C82DF5D3C82D76 -:100FE00001D0002070BD012070BDD0F800284FF462 -:100FF000FE6303EA011322F4FE62C0F80028D0F871 -:1010000000181943C0F8001800207047022A3ED18A -:10101000264A274B0A449A4201D20F2138E0254A3A -:10102000254B0A449A4201D20E2131E0234A244B37 -:101030000A449A4201D20D212AE0224A224B0A4454 -:101040009A4201D20C2123E0204B214A0B449342C7 -:1010500001D20B211CE01F4B1F4A0B44934201D2CB -:101060000A2115E01D4B1E4A0B4493420FD31D4B22 -:101070001D4A0B44934201D2082109E01B4B1C4A34 -:101080001944914201D2072102E0062100E0092122 -:10109000C2684FF4705322F47052C26003EA812395 -:1010A000C1681943C160002070470000405327FF0A -:1010B00000350C00401E1BFF40420F0000DC0BFF00 -:1010C000804F1200808CF9FE20D6130060B6E5FE3A -:1010D00060E3160000D3CEFE40771B00C05BB3FE7A -:1010E000C091210000CA91FE20753800E05459FEDD -:1010F000E09C410010B5029C74B900EB0232DB1C8D -:1011000000209B0802F5805204E000BF51F8044B18 -:101110001460401C9842F9D3002010BDFEE703B4D0 -:1011200001984100009850EAC12018BF04204A0DE0 -:1011300018BF40F0010040F2FF72B2EB515F08BFF0 -:1011400040F00200012808BF052002B070474100AE -:10115000080218BF04200A0E18BF40F001004FF02B -:101160007F4232EA010108BF40F00200012808BFB7 -:10117000052070476FEAD05010F0FF0000D001202A -:101180007047090700284FEA116104DB00F1E020F5 -:1011900080F80014704700F00F0000F1E02080F8A4 -:1011A000141D704710B510EE104A4FF01A402DED87 -:1011B000028B00EB4400B0F1C85F4AD84FF0FC400E -:1011C000B0EB440F22D2B0EEC00ADFED310A30EEB0 -:1011D000C00ADFED300A20EE208A18EE100A02F075 -:1011E000FDF800EE100A14F0004F1DBF9FED2A1A03 -:1011F000DFED2A0AB1EE400A9FED291A08BFF0EE92 -:10120000410ADFED281A20EE210A05E020EE008ACF -:101210009FED251ADFED250ADFED251A9FED252A22 -:1012200070EEC00A20EE080A08EE212ADFED221A2D -:1012300048EE021A9FED212A08EE212ADFED201A3E -:1012400048EE021ABDEC028B40EE610A30EE810AD4 -:1012500010BD4FF0CC40B0EB440F82BF9FED190A98 -:10126000BDEC028B10BD4FF07F40B0EB440F05D2B8 -:10127000BDEC028BBDE8104000F016BF0120EFF777 -:1012800066FBBDEC028BBDE8104000F013BF000010 -:101290000000803F0000003F0000494022AA7D3A44 -:1012A00000000000000000C00000C93F22AAFD3974 -:1012B00024FE1C3DC78AD83C1E67383D1B93993DD0 -:1012C000AFAA2A3EDB0FC93F10B54FF00E402DEDFF -:1012D000028BB0EE408A18EE104A00EB4400B0F1E9 -:1012E000506F4AD84FF0FC40B0EB440F22D2B0EE22 -:1012F000C80ADFED360A30EEC00ADFED350A60EECF -:10130000208A18EE900A02F069F801EE100A14F033 -:10131000004F1DBFDFED2F0A9FED2F0AB1EE411ADE -:10132000DFED2E0A08BF9FED2E0ADFED2E1A21EE0B -:10133000218A05E0DFED2C0A68EE088AB0EE600A2B -:101340009FED2A1ADFED2A1A30EE080A48EE811ABC -:101350009FED281A08EEA11ADFED271A48EE811A30 -:101360009FED261A08EEA11A68EE281ABDEC028B32 -:1013700001EE810A30EE200A10BD4FF0E440B0EBE0 -:10138000440F0CD918EE100AFFF7E1FE042808BF3D -:1013900000F098FEB0EE480ABDEC028B10BD4FF095 -:1013A0007F40B0EB440F07D2B0EE480ABDEC028B91 -:1013B000BDE8104000F078BE0120EFF7C8FABDECA0 -:1013C000028BBDE8104000F075BE00000000803FB9 -:1013D0000000003F0000C9BF22AAFDB90000C93FBC -:1013E00022AAFD39000000C00000000024FE1C3DC0 -:1013F000C78AD83C1E67383D1B93993DAFAA2A3E49 -:1014000070B565482DED020B2DED048B059D25F083 -:101410000044A04218DC6148844202DC0AD10498EE -:1014200040B19DED040BBDEC048B02B0BDE87040F3 -:1014300000F028BE002DCCBF9FED590B9FED5A0B3D -:10144000BDEC048B02B070BD5948A04215DD59486F -:10145000A042D8BF4FF0FF3455DD9DED040B51EC99 -:10146000100BFFF75CFE042808BF00F011FE9DED95 -:10147000040BBDEC048B02B070BD9DED040B51EC70 -:10148000100B00F095FFCDE904014B489FED4C0B8C -:10149000A0421CDD4C48A0420BDD9DED042B002436 -:1014A0009FED4B1B12EE010B32EE011B80EE012B68 -:1014B00027E09DED041B9DED042B012431EE401B24 -:1014C00032EE000B81EE002B8DED042B1BE0424829 -:1014D000A0420FDD9DED042B02249FED411B9DEDED -:1014E000043B32EE412B03EE010B82EE001B8DED2F -:1014F000041B08E09DED040B9FED3B1B032481EED4 -:10150000002B8DED042B9DED040B3948062120EEB8 -:10151000009B29EE098BB0EE480B784400F07AFD71 -:1015200020EE099B3348B0EE480B0521784400F0CB -:1015300071FD20EE080B002C0BDA9DED042B39EE2B -:10154000001B9DED040BBDEC048B02B002EE410BC1 -:1015500070BD2948784439EE000B00EBC4009DEDC6 -:10156000042B90ED001B254812EE001B9DED040B93 -:1015700031EE400B784400EBC400002D90ED001BD1 -:1015800031EE400BB8BFB1EE400BBDEC048B02B0A6 -:1015900070BD000000000000000010440000F07F5B -:1015A000182D4454FB21F93F182D4454FB21F9BF59 -:1015B0000000DC3F0000203E0000F33F0000000080 -:1015C000000000000000F03F0000E63F00000000C7 -:1015D0000000000000000040008003400000000008 -:1015E000000000000000F83F000000000000F0BF15 -:1015F000323A0000F8390000B039000070390000BC -:1016000070B5614E2DED040B2DED048B82B0DDF82D -:1016100024C0DDE907235C422CF000411C4341EA71 -:10162000D474069D22F00040B44205D86C422C438D -:1016300040EAD474B4420BD99DED081B9DED060B16 -:1016400002B0BDEC048B04B0BDE8704000F01DBDDD -:10165000ACF14054A4F17F641C430BD0022404EA93 -:10166000AC7444EAD27405439FED498B9FED4A2B3D -:101670000DD016E09DED060B51EC100B00F0DBFDDC -:1016800041EC100B02B0BDEC048B04B070BD002C1B -:1016900014BF012C9DED060BF4D0022C2ED0032C90 -:1016A0002FD00B439FED3E1B9FED3F0B0AD0B14265 -:1016B0001DD1B04209D121F0804120F08040099134 -:1016C000079014E0002ADDDA15E0394B7B44002C4A -:1016D00008BF93ED000BD5D0012C04BF93ED000B98 -:1016E000B1EE400BCED0022C08D0032C09D0B04272 -:1016F0000AD1002AC6DAB0EE410BC3E7B0EE480BC0 -:10170000C0E7B0EE420BBDE7401A00159FED2A9BE3 -:101710003C28C8BF8DED000B15DCBCF1000FBCBF31 -:1017200010F13C0F8DED009B0DDB9DED061B9DED3B -:10173000082B81EE020B51EC100B00F039FE00F08B -:101740007AFDCDE9000194B1012C0CD09DED001B78 -:101750009FED1B0B022C31EE400B0CBF38EE400B03 -:1017600030EE480B8EE7019880F0004001909DED2F -:10177000000BB4EE490BF1EE10FA04BF0220EFF7B4 -:10178000E6F89DED000B7DE70000F07F0000000013 -:10179000182D4454FB210940182D4454FB2109C045 -:1017A000182D4454FB21F9BF182D4454FB21F93F57 -:1017B000B038000000000000000000000000000041 -:1017C000075C143326A6A13C70B54FF068422DED9E -:1017D000048BF0EE408A18EE900AB0EE608A18EEA4 -:1017E000101A02EB4003B3F1654F3CBF02EB41021C -:1017F000B2F1654F7DD200BFC0F3C753C1F3C752EA -:101800009A1A1B2A09DD10F0004F14BF9FED830ABE -:101810009FED830ABDEC048B70BD12F11A0F36DA0E -:1018200011F0004F09D010F0004F0CBF9FED7D0A62 -:101830009FED7D0ABDEC048B70BD88EE889A19EE91 -:10184000100AFFF784FC042808BF00F03BFC18EEE8 -:10185000900AFFF77CFC054618EE100AFFF777FCAC -:10186000044619EE100AFFF772FC042D18BF052D6F -:1018700008D1042C18BF052C04D1002804BF022075 -:10188000EFF765F8B0EE490ABDEC048B70BD42007D -:10189000B2EB410F3AD910F0004F19BFDFED630AE8 -:1018A0009FED630ADFED630A9FED630AB0EE481A0D -:1018B0000A46B1EE688A80F00041F0EE418A104697 -:1018C0000A1A5200B2F1807F34D2484010F0004F23 -:1018D000DFED5A1A9FED5A2A1DBF9FED5A1A70EE7E -:1018E000E10A30EE420A9FED581A08BF70EEA10AD5 -:1018F00000E040E008BF30EE020AB0EE682A01EED8 -:10190000482A08EE818AC2EE081A15E011F0004F4D -:1019100004BF9FED4E0AF0EE400AD1D010F0004F08 -:1019200019BFDFED4B0A9FED4B0ADFED4B0A9FED30 -:101930004B0AC5E7C8EE881A21EEA11A9FED482A86 -:10194000DFED482A41EE022A9FED472A01EE222AC6 -:10195000DFED462A41EE022A9FED452ABDEC048BBD -:1019600001EE222A21EE811A01EE020A30EE210A4E -:1019700030EE200A70BD4FF07F42B2EB400F28BF1F -:10198000B2EB410F09D2F0EE480AB0EE680ABDECA6 -:10199000048BBDE8704000F08ABB40EA01035B00A5 -:1019A00008BF41F0FF410BD0B2EB400F08BFB2EBD4 -:1019B000410F08D120F0804008EE900A21F08041CC -:1019C00008EE101A18E7B2EB400F12BF5FEA4103AE -:1019D00040F0FF4001F000413FF40EAFB2EB410F89 -:1019E00012BF5FEA400200F0004041F0FF413FF4C7 -:1019F00003AF4A0092EA40033FF5FEAE002AACBFB7 -:101A00009FED1C0A9FED1C0A68EE808A28EE008A72 -:101A100018EE900A18EE101AEEE60000DB0FC9BFB0 -:101A2000DB0FC93FDB0F4940DB0F49C00000C9BFD6 -:101A300022AAFDB90000C93F22AAFD390060ED3E8F -:101A4000C30ACE37000000BF0000003F00000000C6 -:101A5000000049C022AA7DBA0000494022AA7D3A6E -:101A60002DAD65BD8FB8D53D0FB511BE61C84C3EDB -:101A7000A8AAAABE0000804F0000802F10EE101A06 -:101A800008B5434A6846B2EB410F26D94FF0E6400D -:101A9000B0EB410F94BF00204FF0FF300090009852 -:101AA000DFED3C0A002860DB10F0010F46D060EE4D -:101AB000000ADFED391A9FED391A10F0020F00EE1F -:101AC000E11ADFED371A40EE811A21EEA01AF0EE8E -:101AD000400A40EE010A2ED041E0324B21F0004294 -:101AE00093423FD911F0004FDFED2F0A20EE201A6C -:101AF000DFED2E0A19BF31EE601A71EE200A31EEC9 -:101B0000201A71EE600ABDEEE01A11EE100A9FED88 -:101B1000281A00F0030000EEC10A9FED261A00907B -:101B200000EEC10A9FED241A00EEC10A9FED231AB0 -:101B300000EEC10AB3E7F1EE600A10E020EE000A01 -:101B40009FED1F1ADFED1F1A10F0020F40EE011A71 -:101B50009FED1D1A00EE211A40EE010AEBD1B0EE06 -:101B6000600A08BD00F0B6FA99E710EE100A4000CE -:101B7000B0F17F4FF3D307D14FF00100EEF7E7FE4E -:101B8000BDE8084000F096BABDE8084000F08CBA05 -:101B9000B61F927E0000803F336D4C39DA82083CDC -:101BA000A0AA2ABE490E494683F9223F0000004BF5 -:101BB0000000C93F00A0FD390020A2331A61342C77 -:101BC000B93AB2BACA9F2A3DDDFFFFBE10B52DED6E -:101BD000028BB0EE608AF0EE408A18EE101A18EE12 -:101BE000900A02F0B3FD00F07040B0F1005F0CD03D -:101BF00018EE100A20F00040C0F1FF40C00F02BFF5 -:101C0000B0EE480ABDEC028B10BDB0EE680ABDEC28 -:101C1000028B10BD10B52DED028BF0EE408A18EE50 -:101C2000900AB0EE608A20F00040C0F1FF40C00F83 -:101C300007D118EE100A20F00040C0F1FF40C00F9D -:101C40002BD018EE101A18EE900A02F0F3FD00EEF9 -:101C5000100A10EE100A6FEAD05010F0FF0F04BF08 -:101C6000BDEC028B10BD18EE900A00F0004110EEA2 -:101C7000100A00F00040814204BFBDEC028B10BD91 -:101C800018EE101A10EE100ABDEC028B61F31E0064 -:101C900000EE900A30EE600A10BD18EE900A4FF088 -:101CA0007F41B1EB400F1CBF18EE100A5FEA400005 -:101CB000C7D10120EEF74BFEBDEC028BBDE8104012 -:101CC00000F0F8B900B510EE101A2DED028B81B0BE -:101CD000524A6846B2EB410F2ED94FF0E640B0EBC6 -:101CE000410F94BF00204FF0FF3000900098B0EEFD -:101CF000408A00286ADB10F0010F4BD068EE080A1A -:101D00009FED471A9FED470A00EE810A9FED461AA4 -:101D100000EE801A9FED450A10F0020F00EE810AD6 -:101D200002BF01B0BDEC028B00BD00BF01B0B1EE3F -:101D3000400ABDEC028B00BD3D4B21F000429342B6 -:101D400041D911F0004FDFED3B0A20EE201ADFED04 -:101D50003A0A19BF31EE601A71EE200A31EE201AEC -:101D600071EE600ABDEEE01A11EE100A9FED331A13 -:101D700000F0030000EEC10A9FED311A009000EE62 -:101D8000C10A9FED301A00EEC10A9FED2F1A00EE36 -:101D9000C10AABE728EE080A9FED2C1ADFED2C0AEA -:101DA00010F0020F40EE410A9FED2A1A00EE201AB1 -:101DB00061EE000AB0EE480A08EE200AB6D101B082 -:101DC000BDEC028B00BD00F085F98FE718EE100A1C -:101DD0004000B0F17F4F0DD218EE100AFFF7B7F9AF -:101DE000042808BF00F06EF9B0EE480A01B0BDEC5F -:101DF000028B00BD09D10120EEF7A9FD01B0BDECB9 -:101E0000028B5DF804EB00F055B901B0B0EE480A62 -:101E1000BDEC028B5DF804EB00F046B9B61F927E74 -:101E2000B93AB2BACA9F2A3DDDFFFFBE0000803F2B -:101E3000490E494683F9223F0000004B0000C93F8C -:101E400000A0FD390020A2331A61342C336D4C39C7 -:101E5000DA82083CA0AA2ABE10B52DED028BB1EEA5 -:101E6000C08A18EE100A20F00040C0F1FF40C00FF9 -:101E70000AD010EE100A20F00040C0F1FF40C00F61 -:101E800004BF0120EEF763FDB0EE480ABDEC028B03 -:101E900010BD000000B510EE101A2DED028B81B0C0 -:101EA0004D4A6846B2EB410F3CD94FF0E640B0EBEB -:101EB000410F94BF00204FF0FF3000900098B0EE2B -:101EC000408A00285FDB28EE080ADFED440A9FED18 -:101ED000441A00EE201ADFED430A40EE010A9FED9E -:101EE000421A00EE201ADFED410A10F0010F40EE19 -:101EF000010A9FED3F1A00EE201A61EE000AB0EED3 -:101F0000480A08EE200A02BF01B0BDEC028B00BDFA -:101F10009FED381A01B0C1EE000ABDEC028BB0EEA5 -:101F2000600A00BD344B21F00042934228D911F0E1 -:101F3000004FDFED320A20EE201ADFED310A19BF23 -:101F400031EE601A71EE200A31EE201A71EE600A4D -:101F5000BDEEE01A11EE100A9FED2A1A00F0030000 -:101F600000EEC10A9FED281A009000EEC10A9FED15 -:101F7000271A00EEC10A9FED261A00EEC10A9DE75E -:101F800000F0A8F89AE718EE100A4000B0F17F4F71 -:101F90000DD218EE100AFFF7DAF8042808BF00F097 -:101FA00091F8B0EE480A01B0BDEC028B00BD09D13A -:101FB0000120EEF7CCFC01B0BDEC028B5DF804EB28 -:101FC00000F078B801B0B0EE480ABDEC028B5DF8C5 -:101FD00004EB00F069B80000B61F927EBBE9223C1A -:101FE0000C6D063B8A76CE3CACB5593D35A1083E1A -:101FF00029AAAA3E000080BF490E494683F9223F24 -:102000000000004B0000C93F00A0FD390020A233B2 -:102010001A61342C491E00EBC102B0EE401B92ED58 -:10202000000B31F006020DD0491E00EBC102B0EEEC -:10203000403B92ED002B31F00602B0EE420B03EE76 -:10204000010BF1D1022914D004290AD0062918BFA6 -:10205000704790ED0A2B00EE012B90ED080B02EE7D -:10206000010B90ED062B00EE012B90ED040B02EE20 -:10207000010B90ED022B00EE012B90ED000B02EE18 -:10208000010B704730EE000B704730EE010B7047CC -:102090009FED030B20EE000B7047000000000000D6 -:1020A000000000000000001030EE000A704730EE23 -:1020B000200A7047DFED020A80EEA00A7047000098 -:1020C000000000009FED020A20EE000A70470000A9 -:1020D000000000102DE9F0014FF07F42B2EB410FFC -:1020E0009FBF4FF0FF310160BDE8F00170474FF036 -:1020F000004242EA0123C1F3C752783A551112F067 -:102100001F0C434CCCF120067C44C1F3C752A2F112 -:1021100078024FEA621204EB820254F8254008BFAD -:10212000D2E9015612D0556804FA0CF425FA06F7E4 -:102130003C43976805FA0CF527FA06F8D26807FAC7 -:102140000CFCF24045EA08054CEA0206A4FB034CED -:10215000A5FB0352A6FB03631D449D4234BF012629 -:1021600000261319334416B1934202D903E0934277 -:1021700001D2012200E00022624402F1200C92060A -:10218000DC0C42EA443200EE102A5B03DFED210A48 -:10219000F8EEC01A00EE103A4FEA9C1C11F0004F06 -:1021A000B8EE400AC0F800C020EE201A00EE105A27 -:1021B000DFED190AB8EE400A20EE200A71EE810A1E -:1021C00070EE800A10EE902A02F500626FF30B02A7 -:1021D00000EE902A70EEE11A31EEC11ADFED101A0E -:1021E00030EE411A9FED0D0A20EE800A01EE210A21 -:1021F0009FED0C1A00EE810A04BFBDE8F0017047A4 -:10220000CCF180510160BDE8F001B1EE400A7047A9 -:102210007C2E0000000000360000802C22AAFD2940 -:10222000DB0FC92F0000C92F30380A2801D2012046 -:1022300070470020704710B541EC100BFFF7E0F835 -:1022400051EC100B10BD10B514460B4603E013F80B -:10225000011B00F003F8641EF9D210BD034A41408F -:10226000C9B232F8111081EA10207047A44C01085D -:102270002DE9F041040006D0184E306884420AD19E -:102280000020BDE8F081502080F31188BFF34F8F0C -:10229000BFF36F8FFEE701F01DF9776B6569B66BD1 -:1022A00001F038F9BD4201D0B54201D10220E8E782 -:1022B0000B48854208D1A06A0028F7D194F858004D -:1022C0000128F3D00320DCE705481438854202D00A -:1022D0000DB10120D5E70420D3E700002001002044 -:1022E000A832002070B5044690F82C000025FD2887 -:1022F00003D194F82D00EE2801D0A06A0EE00E2242 -:10230000002004F12C01FFF79EFF618F20848142A1 -:1023100008D0A06AE56225636563A563401CA561DA -:10232000A06270BD94F8382094F82E0002F00706E1 -:1023300094F93750218F00F00F03C0F30210C4E965 -:1023400001562370C1F3CB0160700122B4F9310052 -:102350009FED140A01EE100ADFED130ADFED131AE8 -:10236000B8EEC11A21EE001A21EE201A84ED041AEB -:10237000B4F92F0001EE100AB8EEC11A21EE000ADE -:1023800084ED030AD4F83300C4E9062100EE100AF4 -:10239000B8EEC00A20EE200A20EE210A84ED050ADC -:1023A00070BD00000000803BD00FC9400000003825 -:1023B00082B0CDE9000121F0004001909DED000BBD -:1023C00002B051EC100B704700207047F5F7F0F9A0 -:1023D000FBF7D0FEFAF71CFDFAF7F0FBFAF794FBD7 -:1023E000FAF784FEFAF71EFEFAF74CFEFAF75AFFE8 -:1023F000FBF730F8FBF762F8FBF796F8FAF7C2FF45 -:10240000FAF7F4FFFAF750FCFAF780FCFAF7B2FC9F -:10241000FAF7A6FEFAF704FFFAF7CAFDFAF77CFF0F -:1024200000F024F9FAF7DAFC00F048F9FEE70000C2 -:1024300010B504460188FE20EE2220760020627648 -:10244000C1B10F2901D30F212180618811B1072962 -:1024500001D30720608094ED040ADFED510A514852 -:102460009FED511AB5EEC00AF1EE10FA04D8C4ED92 -:10247000040A07E02080E8E710EE101A814201DB31 -:1024800084ED041A94ED050AB5EEC00AF1EE10FAD7 -:1024900002D8C4ED050A05E010EE101A814201DBF6 -:1024A00084ED051A41496068884202D39FED400AD5 -:1024B00004E04049884203DB9FED3F0A84ED010AB6 -:1024C0003E49A068884202D39FED3D0A04E03D49A1 -:1024D000884203DB9FED3C0A84ED020A3B49E06839 -:1024E000884202D39FED3A0A04E03A49884203DB6E -:1024F0009FED390A84ED030AD4ED042ADFED370A93 -:102500009FED370A2278C2EEA01AA07EA1789FED37 -:10251000351A62F303009FED342A61F30610A076AA -:102520000F2261EE801AFDEEE11A11EE901AA4F866 -:10253000231004F11801D4ED051AC1EEA02A62EEB1 -:10254000800AFDEEE00A10EE900AA4F82500D4ED12 -:10255000030AC0EE811A21EE800ABDEEC00A10EE19 -:10256000100AC4F81F0094ED020AC0EE010A20EE22 -:10257000820ABDEEC00A10EE100AA4F81D0094ED08 -:10258000010A20EE020ABDEEC00A10EE100AA4F8FD -:102590001B000020FFF757FEA4F8270010BD000025 -:1025A00000000000C1CACC41C1CACC41E1FAFFC25F -:1025B000E1FAFFC2E1FAFF42E1FAFF42000049C43A -:1025C000000049C40000494400004944C00FC9C884 -:1025D000C00FC9C8C00FC948C00FC948CDCCCC4135 -:1025E00000000047D00FC9400000804310B5EFF352 -:1025F000058111B16FF0050404E04FF0000408B14B -:1026000001F040F8204610BD38B50546EFF30580CF -:1026100010B16FF005040CE0002401F06BFE291AE4 -:102620000090002903DD684601F052F801E06FF0E8 -:102630000304204638BD000010B501F04DFE38B14E -:10264000022804D003480068012800D0002010BDF3 -:10265000032010BD70010020EFF3058008B101F0E8 -:102660004FBE01F047BE4FF47A707047EFF305801C -:1026700010B16FF0050070470449086810B14FF0C1 -:10268000FF30704701220A6000207047700100206F -:1026900010B5EFF3058010B16FF0050010BD01F02B -:1026A0001BFE20B1022804D04FF0FF3010BD0120E6 -:1026B00010BD01F021F9002010BD000010B5EFF3AE -:1026C000058010B16FF0050010BD084801680129B0 -:1026D00002D04FF0FF3010BD054A002182F8141DD2 -:1026E0000221016001F0C4F8002010BD700100203B -:1026F0000BE000E070B5EFF3058010B16FF005045A -:1027000013E001F0E9FD4FF0FF3510B102280BD1C5 -:1027100008E0012401F01CFF012806D001F0DCFDD7 -:1027200010B102E0002400E02C46204670BD0000FD -:10273000F8B56FF003021D466FF002064FF000047B -:10274000EFF30583A3B1F0B1E9B1E5B9002200923E -:102750006A4601F0E7FB012817D10098B0B10C4997 -:102760004FF080500860BFF34F8FBFF36F8F0DE0C5 -:1027700048B141B12A4601F037FB012806D025B106 -:102780006FF0010402E0144600E034462046F8BD34 -:1027900004ED00E0F8B514464FF00005EFF30582B4 -:1027A00012BB08B301B3A4B1D4E9023263B1502A19 -:1027B0001AD32269C2B100FB01F66769B74213D38D -:1027C000009501F084F907E072B9226962B9626983 -:1027D00052B9002201F05AF9050005D00CB1216868 -:1027E00000E0002100F018FF2846F8BDF8B56FF0B2 -:1027F00003021D466FF002064FF00004EFF305835D -:10280000ABB100B3F9B1F5B90022009213466A46A4 -:1028100001F08AFA012818D10098B8B10C494FF09C -:1028200080500860BFF34F8FBFF36F8F0EE050B141 -:1028300049B100232A4601F0C7F9012806D025B185 -:102840006FF0010402E0144600E034462046F8BD73 -:1028500004ED00E010B5EFF3058111B16FF0050450 -:1028600004E028B10024214601F064F9204610BD9F -:102870006FF00304FAE700003EB5040001D0002920 -:1028800003DA6FF0030001902BE04FF0FF3001906E -:10289000EFF30580D0B10025029502A82B46012256 -:1028A0000090204601F090FC0022204601AB11462A -:1028B000009501F089FC029898B10B494FF08050C7 -:1028C0000860BFF34F8FBFF36F8F0AE000232046ED -:1028D000012201F009FC0022204601AB114601F063 -:1028E00003FC01983EBD000004ED00E02DE9F84F27 -:1028F000894605464FEA0206EFF3058010B16FF0F6 -:1029000005041EE0002D02DA6FF0030419E05FEA0F -:10291000897002D54FF0000800E0A84692460024D6 -:1029200001F0E8FCE71E8346002053466A46414614 -:1029300001F052FD012807D016B36FF00104002802 -:10294000F2D12046BDE8F88F00982C405FEAC971AB -:1029500044EA00040BD035EA0400F2D056B101F08D -:10296000C9FCA0EB0B00504506D9002006E025422B -:10297000E7D1F3E73C46E4E7AAEB00008246D3E761 -:102980003C46DCE701F0A2BC2DE9FF414FEA010320 -:102990004FF00005EFF30581039561BB58B34FF08D -:1029A00080064FF018014FF000044AB3176807B1D2 -:1029B0003C4697691FB139467F1E382F02D21779DE -:1029C000FF0703D0002004B0BDE8F081576907B1CC -:1029D000BE08D2F808C0BCF1000F0DD0D5685C2D40 -:1029E00018D312693AB137B18DE806103246214644 -:1029F00001F04FFB03900DE0D7685FB912694AB947 -:102A000003AACDE90012B2B2214601F015FB01285C -:102A100000D003950398D6E770B50546EFF305801F -:102A200010B16FF005040FE04DB12846FFF720FC10 -:102A3000042807D00024284600F090FE04E06FF040 -:102A4000030401E06FF00204204670BD2DE9F0415F -:102A5000134C0F460546E6682068001D00F0DDFCBB -:102A6000681C07D137B12168BDE8F0410D48091D48 -:102A700000F024BD20683544B5424560216805D288 -:102A8000A06B091DBDE8F04100F000BD606B091DA1 -:102A900000F0FCFCA06A854200D2A562BDE8F0818E -:102AA00020010020A83200202DE9F041054600F069 -:102AB00011FD2D4C2D4FA068401CA060206810B166 -:102AC000606930B32BE02560A068012827D100267B -:102AD00006EB860007EB800000F0CAFC761C382E5F -:102AE000F6D3234800F0C4FC2148143000F0C0FCA9 -:102AF0001F48283000F0BCFC1D483C3000F0B8FCFA -:102B00001B48503000F0B4FC194860631430A063D7 -:102B100005E0E86A2168C96A814200D82560606AD8 -:102B2000401C60626864E86A2169884200D92061BB -:102B300000EB8000291D07EB800000F0BFFC00F0D7 -:102B4000E9FC606900280CD02068E96AC06A884204 -:102B500007D208494FF080500860BFF34F8FBFF392 -:102B60006F8FBDE8F081000020010020F82D0020CB -:102B70005832002004ED00E038B500F0ABFC104CFA -:102B80002068C8B90F4800F073FC0E48143000F0FC -:102B90006FFC0C490020E16014312161A1F58273C2 -:102BA0000090A1F1B40210210A2000F090FF2060F3 -:102BB00010B105A100F030FDBDE8384000F0AABC1E -:102BC0005C010020AC330020546D72510000000005 -:102BD00030B4026C0B46002A0BD0D0E902411144FC -:102BE000C160A14201D30168C160184630BCEDF755 -:102BF000B3BD30BC70472DE9F041856B1746026CC0 -:102C00000446002682B1C7B1E068EDF7A5FDE16892 -:102C1000206C2268091AE160914202D2A168081A68 -:102C2000E060022F16D017E02068A8B9A06801F074 -:102C300019FC06460020A0600EE06068EDF78CFDF0 -:102C4000D4E90101226C10446060884204D32068FA -:102C5000606001E005B16D1E6D1CA5633046BDE8E6 -:102C6000F08110B5044690F8590058B101280CD0F5 -:102C700002280FD0502080F31188BFF34F8FBFF38D -:102C80006F8FFEE7206B00F059FC2046BDE8104036 -:102C900000F054BC10BD000011484FF4C04110B505 -:102CA000420706D00E49C01D20F00700411AC1F5A9 -:102CB000C0410C4C002301440839A4F1180221F052 -:102CC0000701C4E900030C1A11604B600B60C0E9F6 -:102CD000001494604FF000415460516110BD000039 -:102CE0008C3A00208C01002010B5094CA26812B962 -:102CF00004F10C02A260126853680A461946EDF707 -:102D0000F3FDA0684068A060002800D0012010BD3D -:102D1000AC010020144E4FF08058144CDFF8509056 -:102D2000A6F29C4712E000BF00F0D4FBF068C56833 -:102D3000281D00F072FBA068401EA0606068401E65 -:102D4000606000F0E7FB2846FFF78BFF6068002813 -:102D5000EAD138680128F9D9C9F80080BFF34F8F4C -:102D6000BFF36F8FF2E700009432002020010020B3 -:102D700004ED00E070B51D46049C51B1C4F800207C -:102D8000C4E90F010121204600F0D4FE84F84C5024 -:102D900070BD2460F4E72DE9F05F88469A46910003 -:102DA0001546DDE90B940A9EA5228346206BEDF7BC -:102DB0004AFD206B6FF0030101EB8501084420F010 -:102DC0000707780707D0502080F31188BFF34F8F93 -:102DD000BFF36F8FFEE7B8F1000F4FF000050ED084 -:102DE0000020221818F8001082F8341018F800108B -:102DF00011B1401C1028F4D384F8435001E084F84A -:102E00003450382E00D33726E662201DC4E91365FE -:102E100000F039FB04F1180000F035FB6565C6F1E0 -:102E20003800A06184F8585052462461594638460B -:102E3000646200F05BFAB9F1000F206001D0C9F8BC -:102E40000040BDE8F09F000030B5114900E0114698 -:102E50000A688242FBD34B685C18844203D1446801 -:102E6000084623444B6043681D18954209D1084C1D -:102E7000183C2468A24209D052681A4442600A6889 -:102E800012680260814200D0086030BD0460F9E73A -:102E90008C01002070B50D4D914241604FF000044F -:102EA000006106D88169D21A8A4206D2011D2869BA -:102EB00007E09A4203D2994201D3012403E0011DA5 -:102EC000E86800F0E3FA204670BD00005C010020D5 -:102ED00010B5044600F0FEFAA06B28B15FF00004C4 -:102EE00000F018FB204610BD0124F9E730B53C4D39 -:102EF00089B06BE00498002806DA059ADDE906013E -:102F000090470498002861DB069C606910B1201D81 -:102F100000F083FA03A800F0D5F8024604980A28C6 -:102F200054D2DFE800F00505052D304705052D30AA -:102F300094F8280040F0010084F82800A069059961 -:102F40000B4601442046FFF7A5FF50B3216A2046F7 -:102F5000884794F82800400738D50020009005984D -:102F60000023A16942181946204601F083FBC0B92D -:102F7000502080F31188BFF34F8FBFF36F8FFEE7B0 -:102F800094F828001EE094F8280040F0010084F82E -:102F900028000598A06128B1811813462046FFF744 -:102FA00079FF13E0502080F31188BFF34F8FBFF3F8 -:102FB0006F8FFEE794F82800810703D4204600F0C5 -:102FC000BDFA03E020F0010084F828002868002200 -:102FD00004A900F009FF00288CD109B030BD000021 -:102FE0005C0100202DE9FC410F46054600F084FC01 -:102FF00001A800F067F80446019818B101F0A8FA9A -:10300000BDE8FC81254EAFB130690068D0B3002720 -:103010003068291B3A4600F013FB01F099FA0028AA -:10302000EED11F494FF080500860BFF34F8FBFF3C0 -:103030006F8FE5E7A542EBD801F08AFAF0682746E2 -:10304000C068C468201D00F0E8F994F82800410722 -:1030500019D5A0692B463A4641192046FFF71AFFB9 -:10306000A8B100202A46034601460090204601F000 -:1030700001FB60B9502080F31188BFF34F8FBFF37D -:103080006F8FFEE707E020F0010084F82800216A36 -:1030900020468847B4E70127BAE700005C0100201A -:1030A00004ED00E00648416B096829B1416BC9682D -:1030B000C9684968816270474FF0FF31FAE7000044 -:1030C0002001002070B5054601F014F9064E0446B3 -:1030D000B068844203D200F009F8012000E000202B -:1030E00028602046B46070BD5C010020F8B5194D21 -:1030F00020E0C068C4680668201D00F08EF9216ACF -:103100002046884794F82800400713D5A06930442A -:10311000B04206D92461211D6060E86800F0B6F96C -:1031200008E000203246034601460090204601F0A8 -:10313000A1FA38B1E86801680029DAD12969C5E93E -:103140000310F8BD502080F31188BFF34F8FBFF3F9 -:103150006F8FFEE75C01002008484068401C4FF07C -:10316000500080F3118804D0BFF34F8FBFF36F8FEF -:10317000FEE7BFF34F8FBFF36F8FFEE79401002090 -:10318000074CE068016841B1C0680021D0F8000038 -:10319000FFF728FFFFF7AAFEF3E701210020F7E77A -:1031A0005C0100202DE9F041044600F093F994F908 -:1031B000455004F1240609E0606A48B1304601F048 -:1031C0008FF908B100F01AFB6D1E6DB2002DF3DC13 -:1031D0004FF0FF3684F8456000F09CF900F07AF972 -:1031E00094F9445004F1100709E0206948B13846C9 -:1031F00001F076F908B100F001FB6D1E6DB2002DF3 -:10320000F3DC84F84460BDE8F04100F083B90000CD -:103210002DE9F0410027044600F06EFB324E306885 -:1032200008B9FFF739FD706904424ED1C4B30834C0 -:1032300060070ED004F00700C0F1080004446007E6 -:1032400007D0502080F31188BFF34F8FBFF36F8FEB -:10325000FEE72CB37068844237D823481830014603 -:103260000D6801E028460D466968A14202D229682E -:103270000029F7D131688D4227D00768296801609D -:1032800008376868011B10290FD92819420708D090 -:10329000502080F31188BFF34F8FBFF36F8FFEE78D -:1032A00013E041606C60FFF7CFFD69687068401AF9 -:1032B0007060B268904200D2B06000207269114321 -:1032C000C5E90001F068401CF06001F041F97807A1 -:1032D00007D0502080F31188BFF34F8FBFF36F8F5B -:1032E000FEE73846BDE8F0817401002070B5041F88 -:1032F000094E231F4FF0807521F0010125601C1F2E -:103300001960A0F120010B1F266044380A606FF09D -:1033100002051D6070BD00005931010810B52DED8A -:10332000088BF0EE439AB0EE628AB0EE42AAB0EE9D -:10333000619AF0EE418AB0EE60BAF0EE40AAFEF774 -:10334000C1FC20EE099AB0EE6A0AFEF797FB0AEE7E -:10335000409AB0EE4B0AFEF7B5FC20EE29AAB0EE7B -:103360004B0AFEF78BFB09EE808A6AEE280A2AEEEA -:10337000090A48EE490A08EE280ABDEC088BBDE8A8 -:103380001040FEF721BA000060EE201A10B5B0EE32 -:10339000E12A60EE001AB0EE000A40EEA01A62EEDA -:1033A000000A41EE411A81EEA00A10EE100AB0F1B7 -:1033B0007E5F02DDB7EE000A06E010EE100A10F1A3 -:1033C000814F01D9BFEE000AFDF7ECFEDFED020AE6 -:1033D00030EE600A10BD0000DB0F494010B500EE72 -:1033E000100A2DED028BB1EEC08A18EE100A20F003 -:1033F0000040C0F1FF40C00F0AD010EE100A20F0CC -:103400000040C0F1FF40C00F04BF0120EDF79FFA5C -:1034100018EE100ABDEC028B10BDD0E90132016933 -:103420009A60D0E901235A604A68824201D18268D9 -:103430004A60002202610868401E08600868704700 -:1034400010B5044C8023046004F15C000860136034 -:1034500010BD0000D433002010B5044C4FF480732D -:10346000046004F15C000860136010BD3036002079 -:103470004FF0FF3300F108010022C0E901130260A0 -:10348000C1600161704700210161704730B50B6870 -:103490005A1C02D000F1080202E0026904E0224650 -:1034A000546825689D42FAD953684B6099608A60D8 -:1034B000516008610168491C016030BD42684A6082 -:1034C00093688B6093685960916008610168491C3A -:1034D00001607047502080F31188BFF34F8FBFF316 -:1034E0006F8F0A494868401C486001280CD1084881 -:1034F000006810F0FF0F07D0502080F31188BFF351 -:103500004F8FBFF36F8FFEE77047000094010020DC -:1035100004ED00E00849486828B1401E486001D128 -:1035200080F311887047502080F31188BFF34F8FCC -:10353000BFF36F8FFEE700009401002070B50028F4 -:103540002AD0164DA0F1080461686869014207D1CC -:10355000502080F31188BFF34F8FBFF36F8FFEE7CA -:1035600022683AB1502080F31188BFF34F8FBFF328 -:103570006F8FFEE78143616000F0BEF960686968A3 -:10358000084468602046FFF75FFC2869401C2861FA -:10359000BDE8704000F0DCBF70BD00007401002089 -:1035A0004FF0E020002101614FF47A72816107231E -:1035B00003490968B1FBF2F1491E4161036170479B -:1035C0008800002010B5ECF7A3FF114910280ED396 -:1035D00000F1E0200A7890F8F003904207D25020E2 -:1035E00080F31188BFF34F8FBFF36F8FFEE7094859 -:1035F0008968006800F4E060884207D9502080F3B1 -:103600001188BFF34F8FBFF36F8FFEE710BD00002F -:10361000940100200CED00E0084B5FF0000210B5B3 -:1036200053F832401CB1521C082AF9D310BD03EBE9 -:10363000C20443F83210606010BD0000B82D0020B5 -:1036400070B515460E460446FFF744FF94F9441042 -:103650000020491C01D184F8440094F94510491C0C -:1036600001D184F84500FFF755FFA06B28B904F19C -:1036700024002A46314600F0DFF82046BDE87040BD -:10368000FFF790BD020010B514D00F48006B38B1A1 -:10369000502080F31188BFF34F8FBFF36F8FFEE789 -:1036A00000F02AF900211046FFF7D0F900F050FF92 -:1036B000002807D105494FF080500860BFF34F8FB5 -:1036C000BFF36F8F10BD00002001002004ED00E06B -:1036D00070B504000D460BD095B11E4A106BB8B101 -:1036E000502080F31188BFF34F8FBFF36F8FFEE739 -:1036F000502080F31188BFF34F8FBFF36F8FFEE729 -:10370000502080F31188BFF34F8FBFF36F8FFEE718 -:1037100000F0F2F82368D2685919934204D98B4219 -:103720000AD9914202D807E08B42FAD9881A21605F -:103730000021FFF78BF900E0216000F009FF00286D -:1037400007D105494FF080500860BFF34F8FBFF39A -:103750006F8F70BD2001002004ED00E070B50546BC -:10376000FFF7B8FE1E4C05B92568281DFFF755FE6A -:10377000A86A18B105F11800FFF74FFE606A401CF7 -:1037800060622068854207D11648291DFFF796FE22 -:103790006068401C606007E0A068401EA06028468A -:1037A000FFF75FFAFFF77EFCFFF7B4FE60690028C1 -:1037B00014D02068854211D1206B38B1502080F39D -:1037C0001188BFF34F8FBFF36F8FFEE706494FF0AD -:1037D00080500860BFF34F8FBFF36F8F70BD000044 -:1037E000200100209432002004ED00E002490A6A22 -:1037F0000260C96841607047200100200149012032 -:10380000C86170472001002010B50C4650B109492D -:1038100009681831FFF73AFE2046BDE81040012143 -:10382000FFF714B9502080F31188BFF34F8FBFF317 -:103830006F8FFEE72001002070B514460D4668B179 -:103840000A4909681831FFF739FE0CB14FF0FF350E -:1038500021462846BDE87040FFF7F8B8502080F3B5 -:103860001188BFF34F8FBFF36F8FFEE72001002059 -:1038700030B587B0002405AA04A9039403A80494D2 -:10388000FFF7DEFDDDE9030100940023CDE901101F -:10389000174815A1059A00F0FCFB164D0028E862B8 -:1038A0001FD000F0B7FE012809D0401C19D15020CC -:1038B00080F31188BFF34F8FBFF36F8FFEE7502067 -:1038C00080F31188BFF34F8FBFF36F8F01214FF04B -:1038D000FF30A8626961EC6007B0BDE8304000F0DD -:1038E00045B807B030BD000049444C450000000019 -:1038F000152D0108200100200248016B491C0163BD -:103900007047000020010020164810B5016B11B16E -:103910000121C16110BD0021C161134A016901E0AB -:10392000B9B1491E01EB810352F82330002BF7D0C7 -:1039300001EB810302EB830202F1080453685B6828 -:103940005360A34201D15B685360DA680260016191 -:1039500010BD502080F31188BFF34F8FBFF36F8FDE -:10396000FEE7000020010020F82D002037481CB59C -:10397000374902688A4207D1502080F31188BFF38B -:103980004F8FBFF36F8FFEE731490068491E8842B1 -:1039900007D1502080F31188BFF34F8FBFF36F8F93 -:1039A000FEE72C49FF200A780192087008788DF80C -:1039B00000009DF800209DF8000002F0F002824215 -:1039C00007D0502080F31188BFF34F8FBFF36F8F64 -:1039D000FEE79DF8002007201F4C02F050022270E5 -:1039E000A06005E09DF8002052008DF80020401EE8 -:1039F0009DF800201206F5D40328A06007D05020BF -:103A000080F31188BFF34F8FBFF36F8FFEE74FF442 -:103A10004070A060019808700C482030016841F4A3 -:103A200070010160016841F070410160FFF7B8FD6D -:103A300000206060ECF734FD0848016841F0404127 -:103A40000160ECF719FD00201CBD000000ED00E056 -:103A500071C20F4100E400E09401002034EF00E067 -:103A6000502010B580F31188BFF34F8FBFF36F8FD5 -:103A700000F04EFC18B104494FF08050086000205F -:103A800080F3118810BD000004ED00E0F8B50500DA -:103A900017460E4613D005FB06F05030FFF7B8FB73 -:103AA00004000AD0002084F8460004F150023B468E -:103AB000314628460094FFF75DF92046F8BD5020B6 -:103AC00080F31188BFF34F8FBFF36F8FFEE7F8B518 -:103AD000069D18B153B1CAB181B120E0502080F3E6 -:103AE0001188BFF34F8FBFF36F8FFEE7502080F335 -:103AF0001188BFF34F8FBFF36F8FFEE7502080F325 -:103B00001188BFF34F8FBFF36F8FFEE739B150209D -:103B100080F31188BFF34F8FBFF36F8FFEE7502400 -:103B20001C46012683F8466000932B46FFF722F9D6 -:103B30002046F8BD2DE9F04704008A4629D0FFF75A -:103B4000C9FC21680025D4E90F23D4F840C004F152 -:103B5000100810460E46401E4FF0FF3902FB0312BC -:103B600000FB0C10BAF1000FA563666084F8449066 -:103B700084F84590C4E9022013D04046FFF778FC52 -:103B800004F12400FFF774FCFFF7C4FC0120BDE83A -:103B9000F087502080F31188BFF34F8FBFF36F8FF2 -:103BA000FEE720690028EFD0404600F099FC00288D -:103BB000EAD004494FF080500860BFF34F8FBFF345 -:103BC0006F8FE1E704ED00E02DE9FF4704001D469B -:103BD00082B08A464FF0000803D0BAF1000F08D037 -:103BE00011E0502080F31188BFF34F8FBFF36F8F28 -:103BF000FEE7206C38B1502080F31188BFF34F8F5F -:103C0000BFF36F8FFEE7022D0AD1E06B012807D0CA -:103C1000502080F31188BFF34F8FBFF36F8FFEE703 -:103C200000F05AFB3F4F4FF080564FF0000948B963 -:103C3000049838B1502080F31188BFF34F8FBFF341 -:103C40006F8FFEE7FFF746FCA06BE16B884207D35E -:103C5000022D05D00498D0B1B8F1000F1AD01EE0A3 -:103C60002A4651462046FEF7C6FF616A19B104F1A3 -:103C7000240000F035FC20B13E60BFF34F8FBFF34E -:103C80006F8FFFF747FC012006B0BDE8F087FFF714 -:103C900041FC22E06846FFF7A9FD4FF00108FFF75D -:103CA00039FCFFF729FEFFF715FC94F94400401C8E -:103CB00001D184F8449094F94500401C01D184F866 -:103CC0004590FFF727FC04A9684600F079F930B168 -:103CD0002046FFF767FA00F03BFC0020D4E7FFF72F -:103CE000F9FBA06BE16B884213D1FFF713FC049939 -:103CF00004F11000FFF788FD2046FFF753FA00F0AB -:103D000027FC00289ED13E60BFF34F8FBFF36F8F1B -:103D100098E7FFF7FFFB2046FFF744FA00F018FC96 -:103D200090E7000004ED00E02DE9F04704001F4695 -:103D30009046894603D0B9F1000F08D011E0502019 -:103D400080F31188BFF34F8FBFF36F8FFEE7206CB6 -:103D500038B1502080F31188BFF34F8FBFF36F8FBE -:103D6000FEE7022F0AD1E06B012807D0502080F334 -:103D70001188BFF34F8FBFF36F8FFEE7FFF722FC71 -:103D80005020EFF3118680F31188BFF34F8FBFF3FC -:103D90006F8FA06BE16B884206D3022F04D0002006 -:103DA00086F31188BDE8F08794F94550A06B3A4638 -:103DB00049462046FEF71FFF681C04D06D1C84F89E -:103DC00045500120ECE7606A0028FAD004F1240095 -:103DD00000F086FB0028F4D0B8F1000FF1D00121EB -:103DE000C8F80010EDE700002DE9F74704008A4607 -:103DF00083B04FF0000603D0BAF1000F08D011E0F5 -:103E0000502080F31188BFF34F8FBFF36F8FFEE711 -:103E1000206C38B1502080F31188BFF34F8FBFF36F -:103E20006F8FFEE700F058FADFF8F4804FF080570C -:103E30004FF0000948B9059838B1502080F3118837 -:103E4000BFF34F8FBFF36F8FFEE7FFF743FBA56B09 -:103E5000C5B151462046FEF7BBFE6D1EA563206925 -:103E600050B104F1100000F03BFB28B1C8F800701D -:103E7000BFF34F8FBFF36F8FFFF74CFB012006B0EE -:103E8000BDE8F087059808B11EB106E0FFF742FBD8 -:103E900027E06846FFF7AAFC0126FFF73BFBFFF788 -:103EA0002BFDFFF717FB94F94400401C01D184F867 -:103EB000449094F94500401C01D184F84590FFF7E7 -:103EC00029FB05A9684600F07BF8002820460AD0A7 -:103ED000FFF768F900F03CFB2046FEF7F9FF0028E9 -:103EE000B3D00020CBE7FEF7F3FF90B1059904F1C2 -:103EF0002400FFF789FC2046FFF754F900F028FB67 -:103F00000028A2D1C8F80070BFF34F8FBFF36F8FA6 -:103F10009BE72046FFF746F900F01AFB95E7000003 -:103F200004ED00E02DE9F04704009046894603D0F7 -:103F3000B9F1000F08D011E0502080F31188BFF3D1 -:103F40004F8FBFF36F8FFEE7206C38B1502080F3A6 -:103F50001188BFF34F8FBFF36F8FFEE7FFF732FB80 -:103F60005020EFF3118680F31188BFF34F8FBFF31A -:103F70006F8FA76BFFB194F9445049462046FEF776 -:103F800027FE681CA7F10107A76304D06D1C84F805 -:103F90004450012010E020690028FAD004F11000FC -:103FA00000F09EFA0028F4D0B8F1000FF1D0012102 -:103FB000C8F80010EDE7002086F31188BDE8F0870F -:103FC0002DE9F04105000C4612D0CCB1FFF782FA82 -:103FD000184E2068F268471C6B68A2EB030117D0EB -:103FE0002F68366AB74215D0934213D801251CE0DA -:103FF000502080F31188BFF34F8FBFF36F8FFEE720 -:10400000502080F31188BFF34F8FBFF36F8FFEE70F -:1040100000250AE0884205D9401A20602846FFF7AB -:10402000E5FBF5E7002020600125FFF773FA28463D -:10403000BDE8F081200100202DE9FF5F994616467A -:104040008A4683469000DDE90E87FFF7E1F8050018 -:104050001CD05C20FFF7DCF8040014D0002025639E -:1040600084F859004B46CDE90087CDE9024032463D -:1040700051465846FEF78FFE2046FEF715FD0120FB -:1040800004B0BDE8F09F2846FFF758FA4FF0FF3024 -:10409000F6E7F0B585B0DDE90B740A9DA7B1DCB198 -:1040A0005C262763022684F85960002703970DF1E8 -:1040B000100C0095CDE901C4FEF76DFE2046FEF719 -:1040C000F3FC049805B0F0BD502080F31188BFF3D5 -:1040D0004F8FBFF36F8FFEE7502080F31188BFF33F -:1040E0004F8FBFF36F8FFEE72DE9F0411F469046DB -:1040F0000D464FF0010690B10446FFF7EBF90FB102 -:10410000606D3860022294F8580084F85820B8F1A5 -:10411000050F19D2DFE808F0230B0E14120050200F -:1041200080F31188BFF34F8FBFF36F8FFEE7616D90 -:10413000294301E0616D491C616510E0022801D04E -:1041400065650CE0002634E0616D491C07D0502005 -:1041500080F31188BFF34F8FBFF36F8FFEE7012805 -:1041600027D1201DFFF759F9144DE06A29698842CB -:1041700000D9286100EB8000114901EB8000211D6E -:10418000FFF79CF9A06A38B1502080F31188BFF383 -:104190004F8FBFF36F8FFEE72868E16AC06A8142E4 -:1041A00007D908494FF080500860BFF34F8FBFF325 -:1041B0006F8FFFF7AFF93046BDE8F0812001002096 -:1041C000F82D002004ED00E02DE9F04704001F4623 -:1041D00092460D46DDF820904FF001081AD0FFF707 -:1041E000F1F95020EFF3118680F31188BFF34F8F60 -:1041F000BFF36F8F0FB1606D3860022294F85800E2 -:1042000084F85820BAF1050F1AD2DFE80AF0240B1F -:104210000E141200502080F31188BFF34F8FBFF3AC -:104220006F8FFEE7616D294301E0616D491C616597 -:1042300011E0022801D065650DE04FF000083AE07A -:10424000616D491C07D0502080F31188BFF34F8F58 -:10425000BFF36F8FFEE701282DD1A06A38B150203F -:1042600080F31188BFF34F8FBFF36F8FFEE7144DBC -:10427000286B18B1134804F118010DE0201DFFF759 -:10428000CCF8E06A2969884200D9286100EB8000F7 -:104290000D4901EB8000211DFFF710F9E06A296844 -:1042A000C96A884207D9B9F1000F4FF0010001D067 -:1042B000C9F80000E86186F311884046BDE8F08740 -:1042C0002001002080320020F82D002001480068E5 -:1042D00070470000200100200548416919B1006BBA -:1042E00018B100207047012070470220704700007D -:1042F000200100200148C068704700002001002014 -:1043000010B5FFF75FF90148C06810BD200100201B -:104310002DE9F0412E4C206B002728B1A069401CEC -:10432000A0613846BDE8F081E668761CE66013D1EE -:10433000606B006838B1502080F31188BFF34F8F55 -:10434000BFF36F8FFEE7606BA16B6163A063206AB0 -:10435000401C2062FEF7A6FEDFF87880A06A864245 -:1043600009D3606B0068A0B1606BC068C5686868FD -:10437000864211D2A0622068C06A00EB800158F822 -:104380002100012800D90127E0690028C9D00127B0 -:10439000C7E74FF0FF30EDE7281DFFF73EF8A86AAA -:1043A00018B105F11800FFF738F8E86A216988426A -:1043B00000D9206100EB800108EB8100291DFFF787 -:1043C0007DF82068E96AC06A8142CAD30127C8E73C -:1043D00020010020F82D00202DE9F0411E46154651 -:1043E00088460746FFF776F81C4C206890F858007E -:1043F000022814D02068416DB9434165216801202D -:1044000081F858005EB101213046FEF71FFB1449C8 -:104410004FF080500860BFF34F8FBFF36F8FFFF7EF -:1044200079F8FFF757F815B12068406D28602068CB -:1044300090F85800022801D0002505E02068416D61 -:1044400021EA0801416501252168002081F8580012 -:10445000FFF760F82846BDE8F08100002001002049 -:1044600004ED00E070B504464FF0000190B31A4D22 -:104470002868844207D0502080F31188BFF34F8F03 -:10448000BFF36F8FFEE7206D38B1E36C401EE26A28 -:1044900020659A421ED040B11CE0502080F3118864 -:1044A000BFF34F8FBFF36F8FFEE7201DFEF7B5FF01 -:1044B000E06CC0F13801A161E0622969884200D94D -:1044C000286100EB8000054901EB8000211DFEF70B -:1044D000F5FF0121084670BD20010020F82D0020C5 -:1044E00070B5C068C46854B104F118000646FEF700 -:1044F00094FF144D286B50B11348314615E05020FD -:1045000080F31188BFF34F8FBFF36F8FFEE7201D3D -:10451000FEF783FFE06A2969884200D9286100EB31 -:1045200080000A4901EB8000211DFEF7C7FFE06A09 -:104530002968C96A884203D90121E961084670BD2A -:10454000002070BD2001002080320020F82D0020C6 -:104550002DE9F0472C4D286B0024274638B1FEF793 -:10456000B9FF286B401E2863286B40B147E05020FC -:1045700080F31188BFF34F8FBFF36F8FFEE7234E99 -:104580000120A968D9B3A6F5916980463068E0B1E9 -:10459000F068C46804F11800FEF73FFF201DFEF725 -:1045A0003CFFE06A2969884200D9286100EB80015C -:1045B00009EB8100211DFEF781FFE06A2968C96AC5 -:1045C0008842E3D3C5F81C80E0E70CB1FEF76AFD32 -:1045D000AC694CB14FEA0806FFF79AFE00B1EE61F4 -:1045E000641EF9D10020A861E86940B1084901279B -:1045F0004FF080500860BFF34F8FBFF36F8FFEF70F -:1046000089FF3846BDE8F087200100208032002075 -:1046100004ED00E010B586B0FEF7AEFA114C20684C -:10462000B8B10020039005AA049004A903A8FEF7DE -:1046300013FFDDE90321022000238DE807000C4869 -:1046400009A1059AFFF725FD606010B106B00120B1 -:1046500010BD502080F31188BFF34F8FBFF36F8FD1 -:10466000FEE700005C010020546D72205376630069 -:10467000813101082DE9FF411E46134602004FF02B -:1046800000000A9D16D0144C2768002F0FD0062971 -:104690000292CDE9001317DAFFF71EFE02284FF051 -:1046A00000030FD0002220686946FFF78DFA04B09E -:1046B000BDE8F081502080F31188BFF34F8FBFF326 -:1046C0006F8FFEE72A46EEE70023324669463846FA -:1046D000FFF72AFBEBE700005C01002010B5002982 -:1046E0000AD00878002807D005487844EDF75EF92D -:1046F000002801D0002010BD0248784410BD000001 -:10470000120B00000A0B000010B500290AD008782F -:10471000002807D005487844EDF748F9002801D073 -:10472000002010BD0248784410BD0000020B0000BC -:10473000FA0A000000EE100A00EE901AB4EE600AC9 -:10474000F1EE10FA78BF704700F00DB810B5FFF722 -:10475000F1FFEFF3008020F0104038BF40F0004040 -:1047600080F3008810BDBDE8104010B500F017F8C8 -:104770000000000900F007B84FF0404010F1004F72 -:10478000EFF300807047401058BFC0F1404049101F -:1047900058BFC1F140418142EFF3008070470EF1F4 -:1047A000020E2EF0030E5EF8044B244204D44FEAAE -:1047B0004102B2F17F4F11D84FEA4003B3F17F4F6E -:1047C0000CD80ED14FEAD07CB2F17F4F0CEB4C0CE1 -:1047D0000CF1020C08BF4CEBD17C04E04FF0080C4C -:1047E00001E04FEAD17C0CEB4C0324FA03F404F013 -:1047F0000704B4F1040C06D20EEB840CBDE81040A3 -:104800004CF0010C6047DFE80CF0070802024FF0A3 -:104810000040A0F5800010BD0846420018BFD2F14C -:10482000807288BF00F0004010BD4FF04070E1EE94 -:10483000100A70474FF07F4C3CEA410318BF3CEA36 -:10484000400200F062804FF47F0C10F0004F0CEA41 -:10485000D11318BF43F005031CEAD01218BF13EAA6 -:104860000C0F00F057804FF0004C4CEA00204CEA4F -:104870000121A3F580339A4210DDB0F1004F23F0FF -:10488000020306D3401A43F00203BCBF404283F048 -:1048900001034FEA4000A2F58032ECE74FEA224CD8 -:1048A000BCEB234F08DB884206D31CD0A0EB4100B1 -:1048B000C0F1000083F0010340001DD217D40DD0D9 -:1048C000B0FA80FC0CF1010C00FA0CF0A2EB0C42E7 -:1048D000D2F1000C12DB4FEAC37070474FEA43700D -:1048E00000F00040704713F0020FE5D0DEE7B2F5AC -:1048F00080324FEA4000EBDD002AE9DD4FEAC212C8 -:1049000042EA502040EAC370704710B5FFF747FFF6 -:10491000EDFFFF3E1CEAD11F02D000F000407047BF -:10492000004870470000C07FECF74DBCECF782BD3B -:1049300064500108000000000000000000000000BA -:10494000000000000002000018000000000000004D -:1049500000000000000610160006101600010203F9 -:1049600004050607080C1014182030400000000051 -:104970000000000000000000000000000000000037 -:10498000010000000200000003000000040000001D -:104990000000000005000000000000000000000012 -:1049A0000000000006000000000000000000000001 -:1049B00000000000070000000100020004000600E3 -:1049C00008000A000C0010002000400080000001D8 -:1049D00001010103070100000804020408010101AC -:1049E0000000000001020304010203040607080995 -:1049F000A050010870500108E92C010800000000D7 -:104A000000000000000000000000000000000000A6 -:104A10000000000000000000000000000000000096 -:104A20000000000000000000000000000000000086 +:100000000324204610BDD0F8C802F8F7ADB80000B0 +:1000100070B50178012929D115490925154C02230C +:100020000022C1F8E004C0F8C81208460C600D7147 +:10003000CB718A714B728A72CA720A738A73CA73DD +:100040000A74F8F70BFC08B1F4F73EFD08484FF4CA +:100050000071F7F7E6FF064880220021F7F7E5FF79 +:10006000034801214FF4BA72F7F7DFFF002070BD9B +:10007000D428002000000440D0F8C82201F07F00FE +:100080000B0600EBC00002EB800001D5807D7047BD +:1000900090F85602704710B5D0F8D42200EB8202D7 +:1000A000D2F8B82222B190F89C32032B02D004E09F +:1000B000032010BD126A02B19047002010BD10B598 +:1000C000D0F8D42200EB8202D2F8B82222B190F804 +:1000D0009C32032B02D004E0032010BD526A02B10F +:1000E0009047002010BD10B51C46D0F8C80213463A +:1000F0002246F8F742F8BDE81040FFF732BE10B5CF +:10010000D0F8C802F8F76AF8BDE81040FFF729BE3A +:100110002DE9F041044601250020D4F8B812064626 +:1001200084F89C52C4F894026060C4F8A40284F875 +:10013000A00231B14A6822B100212046904700B1A7 +:1001400003262046002240231146FFF7CCFF40271C +:10015000A4F8645100223B4680212046C4F8607117 +:10016000FFF7C1FFA58430462762BDE8F08190F813 +:100170009C12042903D190F89D1280F89C12002053 +:10018000704710B590F89C12032905D1D0F8B81229 +:1001900011B1C96901B18847002010BD0174002068 +:1001A000704710B5D0F8C802F8F70EFCBDE8104053 +:1001B000FFF7D7BD70B5044600F2AA20054600F04F +:1001C00051F894F8AA020123B4F8B01210F01F02FB +:1001D000C4F89432C4F898120AD0012A0ED0022A28 +:1001E00012D000F080012046BDE8704000F012B847 +:1001F00029462046BDE8704000F0D0B82946204688 +:10020000BDE8704000F013BA29462046BDE87040B2 +:1002100000F05BB910B5D0F8C802F7F7F9FFBDE8F8 +:100220001040FFF79EBD10B5D0F8C802F8F7E6FB06 +:10023000BDE81040FFF795BD90F89C12042903D04B +:1002400090F89C1280F89D12042180F89C120020E6 +:10025000704710B5D0F8C802F8F713F8BDE81040A1 +:10026000FFF77FBD70B5054608788C1C287048786C +:1002700068702046FDF779FFA41C68802046FDF7D2 +:1002800074FFA880A01CFDF770FFE88070BD38B532 +:1002900004460020ADF80000A1B1C4F8B812D4F8AB +:1002A000D40204EB8000D0F8B802C16A19B16846E4 +:1002B0008847C4F8D002D4F8D802401CC4F8D80249 +:1002C000002038BD032038BDD0F8B83202460020E7 +:1002D000002B02D01B681046184770472DE9F041EB +:1002E0002C4E0446887800258846C1B20129317019 +:1002F00006D941462046FFF725FC0320BDE8F081E2 +:1003000094F89C02022702280CD003281DD04146F5 +:100310002046FFF717FC31782046FFF7F5FB032551 +:100320002846EBE789B320466160FFF7CDFF050063 +:1003300004D041462046FFF705FC1DE02046FFF7AC +:1003400033FC032084F89C02EAE7C1B1606888426C +:100350001BD0C1B22046FFF7D7FB31782046616041 +:10036000FFF7B2FF050010D041462046FFF7EAFB39 +:1003700021792046FFF7C8FB84F89C72D0E76160C2 +:1003800084F89C722046FFF7BFFB2046FFF70CFC69 +:10039000C6E7000090000020FFF745BF2DE9F041BF +:1003A0000A784FF0000512F060020CD0202A01D02C +:1003B000402A7DD1D0F8D42200EB8202D2F8B822B4 +:1003C0009268904731E04B78002201260A2B6FD2C9 +:1003D000DFE803F041666E586E08056E2D29FFF7C1 +:1003E000EEFB67E004468888D8B9C888C8B9488851 +:1003F000802816D294F89C2200F07F07032A10D0A0 +:100400003946204684F89E72FFF7CBFE2046FFF760 +:10041000CBFB1FB1022084F89C024BE084F89C6265 +:1004200048E0204644E0FFF759FF054642E0CB880C +:10043000012B3DD190F89C32012B04D0022B02D02D +:10044000032B35D104E000F108018260012216E09F +:100450000122011D13E090F89C22012A03D0022AF8 +:1004600001D0032A24D1CA88022A21D1D0F8A412AB +:10047000C66009B10321C160022200F10C01FFF73F +:1004800086FB17E04A88012A02D0022A03D00FE037 +:10049000C0F8A46216E08988090A80F8A01211E069 +:1004A00090F89C32012B08D0022B06D0032B04D0ED +:1004B000FFF748FB2846BDE8F08149880129F9D1BA +:1004C000C0F8A422FFF770FBF4E72DE9F0410A78A9 +:1004D0000E460979054612F060004FF00008CCB2D4 +:1004E0000BD0202801D040286AD121462846FFF7AA +:1004F00015FBFF2800D0D8B396E07078C8B3012868 +:1005000024D003285CD195F89C02022802D003284D +:1005100056D10CE0002C53D0802C51D021462846D7 +:10052000FFF778FE80212846FFF774FE7CE0708894 +:1005300040B93CB1802C05D0F08818B92146284636 +:10054000FFF768FE2846FFF72FFB6DE095F89C0249 +:100550000228DFD0032863D1708880BB600603D0F7 +:1005600021462846FFF787FC2846FFF71DFBBCE71E +:1005700000E00AE0C5F8D402D5F8B8028268F2B10A +:1005800031462846904780464EE095F89C02002769 +:10059000022802D0032843D113E00CB1802C3FD1B4 +:1005A000200604F07F0000EB800005EB800101D500 +:1005B000143101E001F5AA7102220F602CE033E052 +:1005C0002EE0200604F00F0000EB800005EB800019 +:1005D00009D5808C20B304F07F0000EB800005EB90 +:1005E000800614360AE0B0F86401C8B104F07F0058 +:1005F00000EB800005EB800606F5AA764CB1802C56 +:1006000007D021462846FFF737FD10B101203060A2 +:1006100000E03760022231462846FFF7B8FA03E0CF +:1006200031462846FFF78EFA4046BDE8F08170B5A6 +:10063000054608780E464FF0000410F0600003D025 +:10064000202801D0402827D195F89C02012803D00A +:10065000022801D003281FD1B088C1B201291AD8BD +:10066000C1B22846FFF75CFAFF280CD058B9D5F87C +:10067000B8128A683AB1C5F8D40228468A68314669 +:100680009047044600E00324F088204307D1284621 +:10069000FFF78AFA03E031462846FFF753FA20466F +:1006A00070BD704700487047B426002070B54D7883 +:1006B00001230A78012D1C4C02F00F0503FA05F303 +:1006C000D0F81C5817D000EB421245EA0343C0F89B +:1006D0001C38D2F8000B00040BD40B890979D2F82E +:1006E000000BC3F30A03184344EA81410843C2F8EC +:1006F000000B002070BD9EB23543C0F81C5800EBC3 +:100700004213D3F800090004F3D40D890979D3F812 +:100710000009C5F30A058904284341EA82510843C8 +:100720002043C3F80009E4E700800010D0F8001966 +:100730006FF30A01C0F80019D0F8041841F4807171 +:10074000C0F804180020704770B50D460446C2F387 +:1007500007211E460498012922D0E06840F040009D +:10076000E060204600F03CF8C6F307210029A16BA9 +:100770002ED021F48031A163C5F3074101290ED1A8 +:10078000E16D154A89B2E165E16D1143E165A1684A +:1007900041F00601A160A16841F02001A16070BD97 +:1007A000A26BC3B20D49012B22F48030A063E06834 +:1007B00000EA0100E060E06820F44010E06003D14E +:1007C000E06840F48010E060204600F009F8D3E7CC +:1007D00041F48031CFE700000000EE03BFFFBDFF12 +:1007E00008B500214FF070620091009B5B1C0093E4 +:1007F00093420CD80369002BF7DA0091016941F0AC +:10080000010101610099491C0091914201D9032025 +:1008100008BD0169C907F5D1002008BD70B50A7887 +:1008200001234C78012C00EB42122CD0D2F8004B63 +:10083000002C0BDAD2F8004B44F00064C2F8004BF5 +:10084000D2F8004B44F08044C2F8004B0C78D0F84A +:100850003C5804F00F0403FA04F425EA0444C0F8F9 +:100860003C480978D0F81C4801F00F018B401C4926 +:1008700024EA0343C0F81C38D2F8000B0840C2F841 +:10088000000B002070BDD2F80049002C0BDAD2F822 +:10089000004944F00064C2F80049D2F8004944F02D +:1008A0008044C2F800490D78D0F83C4805F00F05A7 +:1008B0000C4E03FA05F5ADB2AC43C0F83C48D0F895 +:1008C0001C48097801F00F018B4099B28C43C0F8A5 +:1008D0001C48D2F800093040C2F80009D1E70000F6 +:1008E0000078F3EF007833ECD0F8001E21F003011C +:1008F000C0F8001ED0F8041821F00201C0F8041856 +:1009000000207047D0F8001E21F00301C0F8001E3F +:10091000D0F8041841F00201C0F804180020704714 +:100920002DE9F04F00250F46904604462E462846F6 +:1009300004EB8001C1F80451401C0F28F8D3C3F325 +:1009400007405FEA0009204610D0806B40F4001198 +:10095000C4F83810C8F30720C4F8005E0128204608 +:1009600017D0D0F8001841F0030119E0D0F80408BE +:1009700040F00201C4F80418A06B20F40011A16338 +:10098000206840F040012160206840F08001216033 +:10099000E0E7D4F80018380E204601D041F00101FC +:1009A000C0F80018102100F08CFA00B10126204692 +:1009B00000F06BFA00B101264FF67F3A4FF0006C61 +:1009C000C4F810584FF0904BC4F81458C4F81C5891 +:1009D0000020FAB214E000BF04EB4011D1F8003956 +:1009E000002B06DA10B1C1F800B904E0C4F800C960 +:1009F00001E0C1F80059C1F81059C1F808A9401C1C +:100A00008242E9D8002013E004EB4011D1F8003B0A +:100A1000002B06DA10B1C1F800BB04E0C4F800CB2B +:100A200001E0C1F8005BC1F8105BC1F808AB401CE5 +:100A30008242E9D8D4F81008C7F30742002A6FF0C1 +:100A4000804120F48072C4F81028A561616103D14F +:100A5000A06940F01000A061A069C8F30741094AED +:100A60001043A06119B1A06940F00800A061B9F17C +:100A7000010F03D1A06904490843A0613046BDE8D5 +:100A8000F08F000000383C8004000040816821F0B5 +:100A9000010181600020704710B5144C036CA34223 +:100AA00003D9D0F8003B002B1EDB0023C0F8103B1D +:100AB0000129D0F8101B41F40021C0F8101BD0F818 +:100AC000101B41F01801C0F8101BD0F8101B41F0AA +:100AD000C041C0F8101B07D1C0F8142BD0F8001B80 +:100AE00041F08021C0F8001B002010BD0A30544F97 +:100AF0000B784A78012A00EB43100BD0D0F8002B7A +:100B000022F40012C0F8002B0979032914D002291D +:100B100012D017E0D0F8002922F40012C0F8002902 +:100B20000979032901D002290CD1D0F8001941F02C +:100B30008051C0F8001905E0D0F8001B41F0805149 +:100B4000C0F8001B002070470A784B78D1B2012B07 +:100B500000EB421012D0D0F8002B002A06DB29B19E +:100B6000D0F8001B21F08041C0F8001BD0F8001B1A +:100B700041F40011C0F8001B00207047D0F8002994 +:100B8000002A06DB29B1D0F8001921F08041C0F815 +:100B90000019D0F8001941F40011C0F80019EBE772 +:100BA000F8B50B786FF060464F788C4DDCB2012FB2 +:100BB00000EB43132BD0D3F8107B002C07EAC5447D +:100BC000C3F8104BD3F8104B04EA0504C3F8104BDC +:100BD0007ED00D69002D7CD08C6825446D1EB5FB40 +:100BE000F4F5ADB26C430C6206EAC545D3F8104B80 +:100BF0002C43C3F8104BD3F8104B0D6AC5F3120504 +:100C000054EA0504C3F8104B012A73D0CEE00F69F3 +:100C100007B3D3F810796FF31207C3F81079D3F83C +:100C2000107907EA0507C3F810791CB3D1F810C092 +:100C30008D68D3F81079AC44ACF1010CBCFBF5F530 +:100C4000ADB206EAC5463743C3F810790E79012ED6 +:100C50001CD02AE0D3F810692E40C3F81069D3F8ED +:100C6000105945F40025C3F81059D3F810596FF303 +:100C7000120520E00E698D68AE4200D90D61D0F8F2 +:100C8000106946F40026C0F810690EE0D3F8106928 +:100C90004FF0C04707EA457726F0C046C3F8106911 +:100CA000D3F810593D43C3F810590E69D3F81059C1 +:100CB000C6F312063543C3F81059012A1BD000EBC6 +:100CC0004413D3F8004944F00444C3F8004901E058 +:100CD00047E05AE00C79012C2ED00A695AB30B7800 +:100CE000D0F83418012203F00F039A401143C0F8E2 +:100CF000341871E056E0CA691AB100EB4413C3F826 +:100D00001429097901290ED1D0F80818C90500EB7A +:100D10004411D1F8002902D442F0005201E042F01F +:100D20008052C1F8002900EB4410D0F8001941F0BE +:100D30000441C0F800194FE0D0F80848E405D3F8A2 +:100D4000004902D444F0005401E044F08054C3F858 +:100D5000004900920B8A0A78C9689BB200F0E0F95A +:100D60003AE00C690CB18C680C618C680C62C4F3BD +:100D70001205D0F8104B2C43C0F8104BD0F8104B94 +:100D800044F40024C0F8104B3EE78D68D3F8104BB4 +:100D9000C5F312052C43C3F8104BD3F8104B44F4A1 +:100DA00000242FE7CA680AB1C3F8142B0979012976 +:100DB0000CD1D0F80808C005D3F8000B02D440F0DD +:100DC000005001E040F08050C3F8000BD3F8000B56 +:100DD00040F00440C3F8000B0020F8BDFFFF07E01F +:100DE00038B5002242F21074002300920A784D7840 +:100DF000012D00EB421219D0D2F8005B002D3CDA35 +:100E0000D2F8005B45F00065C2F8005B0A7800EBA1 +:100E10004212D2F8005B45F08045C2F8005B009AB0 +:100E2000521C0092A24221D9012326E0D2F8005997 +:100E3000002D22DAD2F8005945F00065C2F80059B9 +:100E40000A7800EB4212D2F8005945F08045C2F80A +:100E50000059009A521C0092A242E5D80A7800EB91 +:100E60004212D2F80029002AF3DB06E00A7800EBF0 +:100E70004212D2F8002B002AD1DB184638BD816817 +:100E800041F0010181600020704708B500214FF05A +:100E900070620091009B5B1C009393420AD8036927 +:100EA000002BF7DA0091102303610099491C00918F +:100EB000914201D9032008BD0169C906F5D400207B +:100EC00008BD18B500224FF070630092009C641CAE +:100ED00000949C420CD80469002CF7DA202400927C +:100EE00044EA811101610099491C0091994201D99C +:100EF000032018BD01698906F5D4002018BDD0F87B +:100F0000080810F0060004D0022803D0062801D0FB +:100F10000F20704702207047406900F001007047C1 +:100F2000D0F81818D0F81C08084080B27047D0F8E4 +:100F30001818D0F81C080840000C704710B5D0F8FD +:100F4000102801F00F0300EB4114D0F83418D4F846 +:100F50000809D94001F0010142EAC111084010BD61 +:100F600000EB4111D1F8081BD0F814080840704775 +:100F700041698069084070470346084630B59408C7 +:100F800002F00301002203F5805303E01D68521CA8 +:100F900040F8045BA242F9D300290CD01C6800235E +:100FA000491EDD00090403F10103090C24FA05F2CE +:100FB00000F8012BF4D130BD70B50446C06801299A +:100FC0004FF0000520F0C040E06001D079B120E092 +:100FD000E06840F00050E0600A20F5F7FBFE606931 +:100FE0000A3510F0010F10D1C82DF5D30DE0E068DF +:100FF00040F08040E0600A20F5F7ECFE60690A35B9 +:1010000010F0010F01D0C82DF5D3C82D01D000205C +:1010100070BD012070BDD0F800284FF4FE6303EAD4 +:10102000011322F4FE62C0F80028D0F8001819431A +:10103000C0F8001800207047022A3ED1264A274BEC +:101040000A449A4201D20F2138E0254A254B0A442E +:101050009A4201D20E2131E0234A244B0A449A429B +:1010600001D20D212AE0224A224B0A449A4201D29F +:101070000C2123E0204B214A0B44934201D20B2147 +:101080001CE01F4B1F4A0B44934201D20A2115E07A +:101090001D4B1E4A0B4493420FD31D4B1D4A0B445C +:1010A000934201D2082109E01B4B1C4A194491428A +:1010B00001D2072102E0062100E00921C2684FF4B5 +:1010C000705322F47052C26003EA8123C16819434D +:1010D000C160002070470000405327FF00350C001E +:1010E000401E1BFF40420F0000DC0BFF804F120030 +:1010F000808CF9FE20D6130060B6E5FE60E3160092 +:1011000000D3CEFE40771B00C05BB3FEC091210030 +:1011100000CA91FE20753800E05459FEE09C410061 +:1011200010B5029C74B900EB0232DB1C00209B0856 +:1011300002F5805204E000BF51F8044B1460401CDB +:101140009842F9D3002010BDFEE703B40198410096 +:10115000009850EAC12018BF04204A0D18BF40F083 +:10116000010040F2FF72B2EB515F08BF40F0020095 +:10117000012808BF052002B070474100080218BFCF +:1011800004200A0E18BF40F001004FF07F4232EAFF +:10119000010108BF40F00200012808BF0520704788 +:1011A0006FEAD05010F0FF0000D00120704709070F +:1011B00000284FEA116104DB00F1E02080F8001400 +:1011C000704700F00F0000F1E02080F8141D704718 +:1011D00010B510EE104A4FF01A402DED028B00EBC7 +:1011E0004400B0F1C85F4AD84FF0FC40B0EB440F68 +:1011F00022D2B0EEC00ADFED310A30EEC00ADFEDD8 +:10120000300A20EE208A18EE100A02F0FFF800EEF5 +:10121000100A14F0004F1DBF9FED2A1ADFED2A0AB5 +:10122000B1EE400A9FED291A08BFF0EE410ADFED4A +:10123000281A20EE210A05E020EE008A9FED251AEB +:10124000DFED250ADFED251A9FED252A70EEC00A95 +:1012500020EE080A08EE212ADFED221A48EE021AD3 +:101260009FED212A08EE212ADFED201A48EE021A0E +:10127000BDEC028B40EE610A30EE810A10BD4FF0EA +:10128000CC40B0EB440F82BF9FED190ABDEC028B3E +:1012900010BD4FF07F40B0EB440F05D2BDEC028B88 +:1012A000BDE8104000F018BF0120EFF750FBBDEC87 +:1012B000028BBDE8104000F015BF00000000803F29 +:1012C0000000003F0000494022AA7D3A00000000D3 +:1012D000000000C00000C93F22AAFD3924FE1C3DC9 +:1012E000C78AD83C1E67383D1B93993DAFAA2A3E5A +:1012F000DB0FC93F10B54FF00E402DED028BB0EE65 +:10130000408A18EE104A00EB4400B0F1506F4AD802 +:101310004FF0FC40B0EB440F22D2B0EEC80ADFED34 +:10132000360A30EEC00ADFED350A60EE208A18EE8C +:10133000900A02F06BF801EE100A14F0004F1DBF86 +:10134000DFED2F0A9FED2F0AB1EE411ADFED2E0AD5 +:1013500008BF9FED2E0ADFED2E1A21EE218A05E04F +:10136000DFED2C0A68EE088AB0EE600A9FED2A1ABB +:10137000DFED2A1A30EE080A48EE811A9FED281A8E +:1013800008EEA11ADFED271A48EE811A9FED261A02 +:1013900008EEA11A68EE281ABDEC028B01EE810A54 +:1013A00030EE200A10BD4FF0E440B0EB440F0CD9F2 +:1013B00018EE100AFFF7E1FE042808BF00F09AFEBD +:1013C000B0EE480ABDEC028B10BD4FF07F40B0EB91 +:1013D000440F07D2B0EE480ABDEC028BBDE81040C6 +:1013E00000F07ABE0120EFF7B2FABDEC028BBDE847 +:1013F000104000F077BE00000000803F0000003F7A +:101400000000C9BF22AAFDB90000C93F22AAFD39C8 +:10141000000000C00000000024FE1C3DC78AD83C2C +:101420001E67383D1B93993DAFAA2A3E000000007D +:1014300070B565482DED020B2DED048B059D25F053 +:101440000044A04218DC6148844202DC0AD10498BE +:1014500040B19DED040BBDEC048B02B0BDE87040C3 +:1014600000F028BE002DCCBF9FED590B9FED5A0B0D +:10147000BDEC048B02B070BD5948A04215DD59483F +:10148000A042D8BF4FF0FF3455DD9DED040B51EC69 +:10149000100BFFF75AFE042808BF00F011FE9DED67 +:1014A000040BBDEC048B02B070BD9DED040B51EC40 +:1014B000100B00F095FFCDE904014B489FED4C0B5C +:1014C000A0421CDD4C48A0420BDD9DED042B002406 +:1014D0009FED4B1B12EE010B32EE011B80EE012B38 +:1014E00027E09DED041B9DED042B012431EE401BF4 +:1014F00032EE000B81EE002B8DED042B1BE04248F9 +:10150000A0420FDD9DED042B02249FED411B9DEDBC +:10151000043B32EE412B03EE010B82EE001B8DEDFE +:10152000041B08E09DED040B9FED3B1B032481EEA3 +:10153000002B8DED042B9DED040B3948062120EE88 +:10154000009B29EE098BB0EE480B784400F07AFD41 +:1015500020EE099B3348B0EE480B0521784400F09B +:1015600071FD20EE080B002C0BDA9DED042B39EEFB +:10157000001B9DED040BBDEC048B02B002EE410B91 +:1015800070BD2948784439EE000B00EBC4009DED96 +:10159000042B90ED001B254812EE001B9DED040B63 +:1015A00031EE400B784400EBC400002D90ED001BA1 +:1015B00031EE400BB8BFB1EE400BBDEC048B02B076 +:1015C00070BD000000000000000010440000F07F2B +:1015D000182D4454FB21F93F182D4454FB21F9BF29 +:1015E0000000DC3F0000203E0000F33F0000000050 +:1015F000000000000000F03F0000E63F0000000097 +:1016000000000000000000400080034000000000D7 +:10161000000000000000F83F000000000000F0BFE4 +:10162000323A0000F8390000B0390000703900008B +:1016300070B5614E2DED040B2DED048B82B0DDF8FD +:1016400024C0DDE907235C422CF000411C4341EA41 +:10165000D474069D22F00040B44205D86C422C435D +:1016600040EAD474B4420BD99DED081B9DED060BE6 +:1016700002B0BDEC048B04B0BDE8704000F01DBDAD +:10168000ACF14054A4F17F641C430BD0022404EA63 +:10169000AC7444EAD27405439FED498B9FED4A2B0D +:1016A0000DD016E09DED060B51EC100B00F0DBFDAC +:1016B00041EC100B02B0BDEC048B04B070BD002CEB +:1016C00014BF012C9DED060BF4D0022C2ED0032C60 +:1016D0002FD00B439FED3E1B9FED3F0B0AD0B14235 +:1016E0001DD1B04209D121F0804120F08040099104 +:1016F000079014E0002ADDDA15E0394B7B44002C1A +:1017000008BF93ED000BD5D0012C04BF93ED000B67 +:10171000B1EE400BCED0022C08D0032C09D0B04241 +:101720000AD1002AC6DAB0EE410BC3E7B0EE480B8F +:10173000C0E7B0EE420BBDE7401A00159FED2A9BB3 +:101740003C28C8BF8DED000B15DCBCF1000FBCBF01 +:1017500010F13C0F8DED009B0DDB9DED061B9DED0B +:10176000082B81EE020B51EC100B00F039FE00F05B +:101770007AFDCDE9000194B1012C0CD09DED001B48 +:101780009FED1B0B022C31EE400B0CBF38EE400BD3 +:1017900030EE480B8EE7019880F0004001909DEDFF +:1017A000000BB4EE490BF1EE10FA04BF0220EFF784 +:1017B000CEF89DED000B7DE70000F07F00000000FB +:1017C000182D4454FB210940182D4454FB2109C015 +:1017D000182D4454FB21F9BF182D4454FB21F93F27 +:1017E000B038000000000000000000000000000011 +:1017F000075C143326A6A13C70B54FF068422DED6E +:10180000048BF0EE408A18EE900AB0EE608A18EE73 +:10181000101A02EB4003B3F1654F3CBF02EB4102EB +:10182000B2F1654F7DD200BFC0F3C753C1F3C752B9 +:101830009A1A1B2A09DD10F0004F14BF9FED830A8E +:101840009FED830ABDEC048B70BD12F11A0F36DADE +:1018500011F0004F09D010F0004F0CBF9FED7D0A32 +:101860009FED7D0ABDEC048B70BD88EE889A19EE61 +:10187000100AFFF782FC042808BF00F03BFC18EEBA +:10188000900AFFF77AFC054618EE100AFFF775FC80 +:10189000044619EE100AFFF770FC042D18BF052D41 +:1018A00008D1042C18BF052C04D1002804BF022045 +:1018B000EFF74DF8B0EE490ABDEC048B70BD420065 +:1018C000B2EB410F3AD910F0004F19BFDFED630AB8 +:1018D0009FED630ADFED630A9FED630AB0EE481ADD +:1018E0000A46B1EE688A80F00041F0EE418A104667 +:1018F0000A1A5200B2F1807F34D2484010F0004FF3 +:10190000DFED5A1A9FED5A2A1DBF9FED5A1A70EE4D +:10191000E10A30EE420A9FED581A08BF70EEA10AA4 +:1019200000E040E008BF30EE020AB0EE682A01EEA7 +:10193000482A08EE818AC2EE081A15E011F0004F1D +:1019400004BF9FED4E0AF0EE400AD1D010F0004FD8 +:1019500019BFDFED4B0A9FED4B0ADFED4B0A9FED00 +:101960004B0AC5E7C8EE881A21EEA11A9FED482A56 +:10197000DFED482A41EE022A9FED472A01EE222A96 +:10198000DFED462A41EE022A9FED452ABDEC048B8D +:1019900001EE222A21EE811A01EE020A30EE210A1E +:1019A00030EE200A70BD4FF07F42B2EB400F28BFEF +:1019B000B2EB410F09D2F0EE480AB0EE680ABDEC76 +:1019C000048BBDE8704000F08ABB40EA01035B0075 +:1019D00008BF41F0FF410BD0B2EB400F08BFB2EBA4 +:1019E000410F08D120F0804008EE900A21F080419C +:1019F00008EE101A18E7B2EB400F12BF5FEA41037E +:101A000040F0FF4001F000413FF40EAFB2EB410F58 +:101A100012BF5FEA400200F0004041F0FF413FF496 +:101A200003AF4A0092EA40033FF5FEAE002AACBF86 +:101A30009FED1C0A9FED1C0A68EE808A28EE008A42 +:101A400018EE900A18EE101AEEE60000DB0FC9BF80 +:101A5000DB0FC93FDB0F4940DB0F49C00000C9BFA6 +:101A600022AAFDB90000C93F22AAFD390060ED3E5F +:101A7000C30ACE37000000BF0000003F0000000096 +:101A8000000049C022AA7DBA0000494022AA7D3A3E +:101A90002DAD65BD8FB8D53D0FB511BE61C84C3EAB +:101AA000A8AAAABE0000804F0000802F10EE101AD6 +:101AB00008B5434A6846B2EB410F26D94FF0E640DD +:101AC000B0EB410F94BF00204FF0FF300090009822 +:101AD000DFED3C0A002860DB10F0010F46D060EE1D +:101AE000000ADFED391A9FED391A10F0020F00EEEF +:101AF000E11ADFED371A40EE811A21EEA01AF0EE5E +:101B0000400A40EE010A2ED041E0324B21F0004263 +:101B100093423FD911F0004FDFED2F0A20EE201A3B +:101B2000DFED2E0A19BF31EE601A71EE200A31EE98 +:101B3000201A71EE600ABDEEE01A11EE100A9FED58 +:101B4000281A00F0030000EEC10A9FED261A00904B +:101B500000EEC10A9FED241A00EEC10A9FED231A80 +:101B600000EEC10AB3E7F1EE600A10E020EE000AD1 +:101B70009FED1F1ADFED1F1A10F0020F40EE011A41 +:101B80009FED1D1A00EE211A40EE010AEBD1B0EED6 +:101B9000600A08BD00F0B6FA99E710EE100A40009E +:101BA000B0F17F4FF3D307D14FF00100EEF7CFFE36 +:101BB000BDE8084000F096BABDE8084000F08CBAD5 +:101BC000B61F927E0000803F336D4C39DA82083CAC +:101BD000A0AA2ABE490E494683F9223F0000004BC5 +:101BE0000000C93F00A0FD390020A2331A61342C47 +:101BF000B93AB2BACA9F2A3DDDFFFFBE10B52DED3E +:101C0000028BB0EE608AF0EE408A18EE101A18EEE1 +:101C1000900A02F0B3FD00F07040B0F1005F0CD00C +:101C200018EE100A20F00040C0F1FF40C00F02BFC4 +:101C3000B0EE480ABDEC028B10BDB0EE680ABDECF8 +:101C4000028B10BD10B52DED028BF0EE408A18EE20 +:101C5000900AB0EE608A20F00040C0F1FF40C00F53 +:101C600007D118EE100A20F00040C0F1FF40C00F6D +:101C70002BD018EE101A18EE900A02F0F3FD00EEC9 +:101C8000100A10EE100A6FEAD05010F0FF0F04BFD8 +:101C9000BDEC028B10BD18EE900A00F0004110EE72 +:101CA000100A00F00040814204BFBDEC028B10BD61 +:101CB00018EE101A10EE100ABDEC028B61F31E0034 +:101CC00000EE900A30EE600A10BD18EE900A4FF058 +:101CD0007F41B1EB400F1CBF18EE100A5FEA4000D5 +:101CE000C7D10120EEF733FEBDEC028BBDE81040FA +:101CF00000F0F8B900B510EE101A2DED028B81B08E +:101D0000524A6846B2EB410F2ED94FF0E640B0EB95 +:101D1000410F94BF00204FF0FF3000900098B0EECC +:101D2000408A00286ADB10F0010F4BD068EE080AE9 +:101D30009FED471A9FED470A00EE810A9FED461A74 +:101D400000EE801A9FED450A10F0020F00EE810AA6 +:101D500002BF01B0BDEC028B00BD00BF01B0B1EE0F +:101D6000400ABDEC028B00BD3D4B21F00042934286 +:101D700041D911F0004FDFED3B0A20EE201ADFEDD4 +:101D80003A0A19BF31EE601A71EE200A31EE201ABC +:101D900071EE600ABDEEE01A11EE100A9FED331AE3 +:101DA00000F0030000EEC10A9FED311A009000EE32 +:101DB000C10A9FED301A00EEC10A9FED2F1A00EE06 +:101DC000C10AABE728EE080A9FED2C1ADFED2C0ABA +:101DD00010F0020F40EE410A9FED2A1A00EE201A81 +:101DE00061EE000AB0EE480A08EE200AB6D101B052 +:101DF000BDEC028B00BD00F085F98FE718EE100AEC +:101E00004000B0F17F4F0DD218EE100AFFF7B5F980 +:101E1000042808BF00F06EF9B0EE480A01B0BDEC2E +:101E2000028B00BD09D10120EEF791FD01B0BDECA0 +:101E3000028B5DF804EB00F055B901B0B0EE480A32 +:101E4000BDEC028B5DF804EB00F046B9B61F927E44 +:101E5000B93AB2BACA9F2A3DDDFFFFBE0000803FFB +:101E6000490E494683F9223F0000004B0000C93F5C +:101E700000A0FD390020A2331A61342C336D4C3997 +:101E8000DA82083CA0AA2ABE10B52DED028BB1EE75 +:101E9000C08A18EE100A20F00040C0F1FF40C00FC9 +:101EA0000AD010EE100A20F00040C0F1FF40C00F31 +:101EB00004BF0120EEF74BFDB0EE480ABDEC028BEB +:101EC00010BD000000B510EE101A2DED028B81B090 +:101ED0004D4A6846B2EB410F3CD94FF0E640B0EBBB +:101EE000410F94BF00204FF0FF3000900098B0EEFB +:101EF000408A00285FDB28EE080ADFED440A9FEDE8 +:101F0000441A00EE201ADFED430A40EE010A9FED6D +:101F1000421A00EE201ADFED410A10F0010F40EEE8 +:101F2000010A9FED3F1A00EE201A61EE000AB0EEA2 +:101F3000480A08EE200A02BF01B0BDEC028B00BDCA +:101F40009FED381A01B0C1EE000ABDEC028BB0EE75 +:101F5000600A00BD344B21F00042934228D911F0B1 +:101F6000004FDFED320A20EE201ADFED310A19BFF3 +:101F700031EE601A71EE200A31EE201A71EE600A1D +:101F8000BDEEE01A11EE100A9FED2A1A00F00300D0 +:101F900000EEC10A9FED281A009000EEC10A9FEDE5 +:101FA000271A00EEC10A9FED261A00EEC10A9DE72E +:101FB00000F0A8F89AE718EE100A4000B0F17F4F41 +:101FC0000DD218EE100AFFF7D8F8042808BF00F069 +:101FD00091F8B0EE480A01B0BDEC028B00BD09D10A +:101FE0000120EEF7B4FC01B0BDEC028B5DF804EB10 +:101FF00000F078B801B0B0EE480ABDEC028B5DF895 +:1020000004EB00F069B80000B61F927EBBE9223CE9 +:102010000C6D063B8A76CE3CACB5593D35A1083EE9 +:1020200029AAAA3E000080BF490E494683F9223FF3 +:102030000000004B0000C93F00A0FD390020A23382 +:102040001A61342C491E00EBC102B0EE401B92ED28 +:10205000000B31F006020DD0491E00EBC102B0EEBC +:10206000403B92ED002B31F00602B0EE420B03EE46 +:10207000010BF1D1022914D004290AD0062918BF76 +:10208000704790ED0A2B00EE012B90ED080B02EE4D +:10209000010B90ED062B00EE012B90ED040B02EEF0 +:1020A000010B90ED022B00EE012B90ED000B02EEE8 +:1020B000010B704730EE000B704730EE010B70479C +:1020C0009FED030B20EE000B7047000000000000A6 +:1020D000000000000000001030EE000A704730EEF3 +:1020E000200A7047DFED020A80EEA00A7047000068 +:1020F000000000009FED020A20EE000A7047000079 +:10210000000000102DE9F0014FF07F42B2EB410FCB +:102110009FBF4FF0FF310160BDE8F00170474FF005 +:10212000004242EA0123C1F3C752783A551112F036 +:102130001F0C434CCCF120067C44C1F3C752A2F1E2 +:1021400078024FEA621204EB820254F8254008BF7D +:10215000D2E9015612D0556804FA0CF425FA06F7B4 +:102160003C43976805FA0CF527FA06F8D26807FA97 +:102170000CFCF24045EA08054CEA0206A4FB034CBD +:10218000A5FB0352A6FB03631D449D4234BF0126F9 +:1021900000261319334416B1934202D903E0934247 +:1021A00001D2012200E00022624402F1200C9206DA +:1021B000DC0C42EA443200EE102A5B03DFED210A18 +:1021C000F8EEC01A00EE103A4FEA9C1C11F0004FD6 +:1021D000B8EE400AC0F800C020EE201A00EE105AF7 +:1021E000DFED190AB8EE400A20EE200A71EE810AEE +:1021F00070EE800A10EE902A02F500626FF30B0277 +:1022000000EE902A70EEE11A31EEC11ADFED101ADD +:1022100030EE411A9FED0D0A20EE800A01EE210AF0 +:102220009FED0C1A00EE810A04BFBDE8F001704773 +:10223000CCF180510160BDE8F001B1EE400A704779 +:102240007C2E0000000000360000802C22AAFD2910 +:10225000DB0FC92F0000C92F30380A2801D2012016 +:1022600070470020704710B541EC100BFFF7E0F805 +:1022700051EC100B10BD10B514460B4603E013F8DB +:10228000011B00F003F8641EF9D210BD034A41405F +:10229000C9B232F8111081EA10207047D44C0108FD +:1022A0002DE9F041040006D0184E306884420AD16E +:1022B0000020BDE8F081502080F31188BFF34F8FDC +:1022C000BFF36F8FFEE701F01DF9776B6569B66BA1 +:1022D00001F038F9BD4201D0B54201D10220E8E752 +:1022E0000B48854208D1A06A0028F7D194F858001D +:1022F0000128F3D00320DCE705481438854202D0DA +:102300000DB10120D5E70420D3E700002001002013 +:10231000A832002070B5044690F82C000025FD2856 +:1023200003D194F82D00EE2801D0A06A0EE00E2211 +:10233000002004F12C01FFF79EFF618F2084814271 +:1023400008D0A06AE56225636563A563401CA561AA +:10235000A06270BD94F8382094F82E0002F00706B1 +:1023600094F93750218F00F00F03C0F30210C4E935 +:1023700001562370C1F3CB0160700122B4F9310022 +:102380009FED140A01EE100ADFED130ADFED131AB8 +:10239000B8EEC11A21EE001A21EE201A84ED041ABB +:1023A000B4F92F0001EE100AB8EEC11A21EE000AAE +:1023B00084ED030AD4F83300C4E9062100EE100AC4 +:1023C000B8EEC00A20EE200A20EE210A84ED050AAC +:1023D00070BD00000000803BD00FC94000000038F5 +:1023E00082B0CDE9000121F0004001909DED000B8D +:1023F00002B051EC100B704700207047F5F7EEF972 +:10240000FBF7CEFEFAF71AFDFAF7EEFBFAF792FBAE +:10241000FAF782FEFAF71CFEFAF74AFEFAF758FFBF +:10242000FBF72EF8FBF760F8FBF794F8FAF7C0FF1C +:10243000FAF7F2FFFAF74EFCFAF77EFCFAF7B0FC77 +:10244000FAF7A4FEFAF702FFFAF7C8FDFAF77AFFE7 +:1024500000F024F9FAF7D8FC00F048F9FEE7000094 +:1024600010B504460188FE20EE2220760020627618 +:10247000C1B10F2901D30F212180618811B1072932 +:1024800001D30720608094ED040ADFED510A514822 +:102490009FED511AB5EEC00AF1EE10FA04D8C4ED62 +:1024A000040A07E02080E8E710EE101A814201DB01 +:1024B00084ED041A94ED050AB5EEC00AF1EE10FAA7 +:1024C00002D8C4ED050A05E010EE101A814201DBC6 +:1024D00084ED051A41496068884202D39FED400AA5 +:1024E00004E04049884203DB9FED3F0A84ED010A86 +:1024F0003E49A068884202D39FED3D0A04E03D4971 +:10250000884203DB9FED3C0A84ED020A3B49E06808 +:10251000884202D39FED3A0A04E03A49884203DB3D +:102520009FED390A84ED030AD4ED042ADFED370A62 +:102530009FED370A2278C2EEA01AA07EA1789FED07 +:10254000351A62F303009FED342A61F30610A0767A +:102550000F2261EE801AFDEEE11A11EE901AA4F836 +:10256000231004F11801D4ED051AC1EEA02A62EE81 +:10257000800AFDEEE00A10EE900AA4F82500D4EDE2 +:10258000030AC0EE811A21EE800ABDEEC00A10EEE9 +:10259000100AC4F81F0094ED020AC0EE010A20EEF2 +:1025A000820ABDEEC00A10EE100AA4F81D0094EDD8 +:1025B000010A20EE020ABDEEC00A10EE100AA4F8CD +:1025C0001B000020FFF757FEA4F8270010BD0000F5 +:1025D00000000000C1CACC41C1CACC41E1FAFFC22F +:1025E000E1FAFFC2E1FAFF42E1FAFF42000049C40A +:1025F000000049C40000494400004944C00FC9C854 +:10260000C00FC9C8C00FC948C00FC948CDCCCC4104 +:1026100000000047D00FC9400000804310B5EFF321 +:10262000058111B16FF0050404E04FF0000408B11A +:1026300001F040F8204610BD38B50546EFF305809F +:1026400010B16FF005040CE0002401F06BFE291AB4 +:102650000090002903DD684601F052F801E06FF0B8 +:102660000304204638BD000010B501F04DFE38B11E +:10267000022804D003480068012800D0002010BDC3 +:10268000032010BD70010020EFF3058008B101F0B8 +:102690004FBE01F047BE4FF47A707047EFF30580EC +:1026A00010B16FF0050070470449086810B14FF091 +:1026B000FF30704701220A6000207047700100203F +:1026C00010B5EFF3058010B16FF0050010BD01F0FB +:1026D0001BFE20B1022804D04FF0FF3010BD0120B6 +:1026E00010BD01F021F9002010BD000010B5EFF37E +:1026F000058010B16FF0050010BD08480168012980 +:1027000002D04FF0FF3010BD054A002182F8141DA1 +:102710000221016001F0C4F8002010BD700100200A +:102720000BE000E070B5EFF3058010B16FF0050429 +:1027300013E001F0E9FD4FF0FF3510B102280BD195 +:1027400008E0012401F01CFF012806D001F0DCFDA7 +:1027500010B102E0002400E02C46204670BD0000CD +:10276000F8B56FF003021D466FF002064FF000044B +:10277000EFF30583A3B1F0B1E9B1E5B9002200920E +:102780006A4601F0E7FB012817D10098B0B10C4967 +:102790004FF080500860BFF34F8FBFF36F8F0DE095 +:1027A00048B141B12A4601F037FB012806D025B1D6 +:1027B0006FF0010402E0144600E034462046F8BD04 +:1027C00004ED00E0F8B514464FF00005EFF3058284 +:1027D00012BB08B301B3A4B1D4E9023263B1502AE9 +:1027E0001AD32269C2B100FB01F66769B74213D35D +:1027F000009501F084F907E072B9226962B9626953 +:1028000052B9002201F05AF9050005D00CB1216837 +:1028100000E0002100F018FF2846F8BDF8B56FF081 +:1028200003021D466FF002064FF00004EFF305832C +:10283000ABB100B3F9B1F5B90022009213466A4674 +:1028400001F08AFA012818D10098B8B10C494FF06C +:1028500080500860BFF34F8FBFF36F8F0EE050B111 +:1028600049B100232A4601F0C7F9012806D025B155 +:102870006FF0010402E0144600E034462046F8BD43 +:1028800004ED00E010B5EFF3058111B16FF0050420 +:1028900004E028B10024214601F064F9204610BD6F +:1028A0006FF00304FAE700003EB5040001D00029F0 +:1028B00003DA6FF0030001902BE04FF0FF3001903E +:1028C000EFF30580D0B10025029502A82B46012226 +:1028D0000090204601F090FC0022204601AB1146FA +:1028E000009501F089FC029898B10B494FF0805097 +:1028F0000860BFF34F8FBFF36F8F0AE000232046BD +:10290000012201F009FC0022204601AB114601F032 +:1029100003FC01983EBD000004ED00E02DE9F84FF6 +:10292000894605464FEA0206EFF3058010B16FF0C5 +:1029300005041EE0002D02DA6FF0030419E05FEADF +:10294000897002D54FF0000800E0A84692460024A6 +:1029500001F0E8FCE71E8346002053466A464146E4 +:1029600001F052FD012807D016B36FF001040028D2 +:10297000F2D12046BDE8F88F00982C405FEAC9717B +:1029800044EA00040BD035EA0400F2D056B101F05D +:10299000C9FCA0EB0B00504506D9002006E02542FB +:1029A000E7D1F3E73C46E4E7AAEB00008246D3E731 +:1029B0003C46DCE701F0A2BC2DE9FF414FEA0103F0 +:1029C0004FF00005EFF30581039561BB58B34FF05D +:1029D00080064FF018014FF000044AB3176807B1A2 +:1029E0003C4697691FB139467F1E382F02D21779AE +:1029F000FF0703D0002004B0BDE8F081576907B19C +:102A0000BE08D2F808C0BCF1000F0DD0D5685C2D0F +:102A100018D312693AB137B18DE806103246214613 +:102A200001F04FFB03900DE0D7685FB912694AB916 +:102A300003AACDE90012B2B2214601F015FB01282C +:102A400000D003950398D6E770B50546EFF30580EF +:102A500010B16FF005040FE04DB12846FFF720FCE0 +:102A6000042807D00024284600F090FE04E06FF010 +:102A7000030401E06FF00204204670BD2DE9F0412F +:102A8000134C0F460546E6682068001D00F0DDFC8B +:102A9000681C07D137B12168BDE8F0410D48091D18 +:102AA00000F024BD20683544B5424560216805D258 +:102AB000A06B091DBDE8F04100F000BD606B091D71 +:102AC00000F0FCFCA06A854200D2A562BDE8F0815E +:102AD00020010020A83200202DE9F041054600F039 +:102AE00011FD2D4C2D4FA068401CA060206810B136 +:102AF000606930B32BE02560A068012827D100264B +:102B000006EB860007EB800000F0CAFC761C382E2E +:102B1000F6D3234800F0C4FC2148143000F0C0FC78 +:102B20001F48283000F0BCFC1D483C3000F0B8FCC9 +:102B30001B48503000F0B4FC194860631430A063A7 +:102B400005E0E86A2168C96A814200D82560606AA8 +:102B5000401C60626864E86A2169884200D920618B +:102B600000EB8000291D07EB800000F0BFFC00F0A7 +:102B7000E9FC606900280CD02068E96AC06A8842D4 +:102B800007D208494FF080500860BFF34F8FBFF362 +:102B90006F8FBDE8F081000020010020F82D00209B +:102BA0005832002004ED00E038B500F0ABFC104CCA +:102BB0002068C8B90F4800F073FC0E48143000F0CC +:102BC0006FFC0C490020E16014312161A1F5827392 +:102BD0000090A1F1B40210210A2000F090FF2060C3 +:102BE00010B105A100F030FDBDE8384000F0AABCEE +:102BF0005C010020AC330020546D725100000000D5 +:102C000030B4026C0B46002A0BD0D0E902411144CB +:102C1000C160A14201D30168C160184630BCEDF724 +:102C20009BBD30BC70472DE9F041856B1746026CA7 +:102C30000446002682B1C7B1E068EDF78DFDE1687A +:102C4000206C2268091AE160914202D2A168081A38 +:102C5000E060022F16D017E02068A8B9A06801F044 +:102C600019FC06460020A0600EE06068EDF774FDD8 +:102C7000D4E90101226C10446060884204D32068CA +:102C8000606001E005B16D1E6D1CA5633046BDE8B6 +:102C9000F08110B5044690F8590058B101280CD0C5 +:102CA00002280FD0502080F31188BFF34F8FBFF35D +:102CB0006F8FFEE7206B00F059FC2046BDE8104006 +:102CC00000F054BC10BD000011484FF4C04110B5D5 +:102CD000420706D00E49C01D20F00700411AC1F579 +:102CE000C0410C4C002301440839A4F1180221F022 +:102CF0000701C4E900030C1A11604B600B60C0E9C6 +:102D0000001494604FF000415460516110BD000008 +:102D10008C3A00208C01002010B5094CA26812B931 +:102D200004F10C02A260126853680A461946EDF7D6 +:102D3000DBFDA0684068A060002800D0012010BD25 +:102D4000AC010020144E4FF08058144CDFF8509026 +:102D5000A6F29C4712E000BF00F0D4FBF068C56803 +:102D6000281D00F072FBA068401EA0606068401E35 +:102D7000606000F0E7FB2846FFF78BFF60680028E3 +:102D8000EAD138680128F9D9C9F80080BFF34F8F1C +:102D9000BFF36F8FF2E70000943200202001002083 +:102DA00004ED00E070B51D46049C51B1C4F800204C +:102DB000C4E90F010121204600F0D4FE84F84C50F4 +:102DC00070BD2460F4E72DE9F05F88469A469100D3 +:102DD0001546DDE90B940A9EA5228346206BEDF78C +:102DE00032FD206B6FF0030101EB8501084420F0F8 +:102DF0000707780707D0502080F31188BFF34F8F63 +:102E0000BFF36F8FFEE7B8F1000F4FF000050ED053 +:102E10000020221818F8001082F8341018F800105A +:102E200011B1401C1028F4D384F8435001E084F819 +:102E30003450382E00D33726E662201DC4E91365CE +:102E400000F039FB04F1180000F035FB6565C6F1B0 +:102E50003800A06184F858505246246159463846DB +:102E6000646200F05BFAB9F1000F206001D0C9F88C +:102E70000040BDE8F09F000030B5114900E0114668 +:102E80000A688242FBD34B685C18844203D14468D1 +:102E9000084623444B6043681D18954209D1084CED +:102EA000183C2468A24209D052681A4442600A6859 +:102EB00012680260814200D0086030BD0460F9E70A +:102EC0008C01002070B50D4D914241604FF000041F +:102ED000006106D88169D21A8A4206D2011D28698A +:102EE00007E09A4203D2994201D3012403E0011D75 +:102EF000E86800F0E3FA204670BD00005C010020A5 +:102F000010B5044600F0FEFAA06B28B15FF0000493 +:102F100000F018FB204610BD0124F9E730B53C4D08 +:102F200089B06BE00498002806DA059ADDE906010D +:102F300090470498002861DB069C606910B1201D51 +:102F400000F083FA03A800F0D5F8024604980A2896 +:102F500054D2DFE800F00505052D304705052D307A +:102F600094F8280040F0010084F82800A069059931 +:102F70000B4601442046FFF7A5FF50B3216A2046C7 +:102F8000884794F82800400738D50020009005981D +:102F90000023A16942181946204601F083FBC0B9FD +:102FA000502080F31188BFF34F8FBFF36F8FFEE780 +:102FB00094F828001EE094F8280040F0010084F8FE +:102FC00028000598A06128B1811813462046FFF714 +:102FD00079FF13E0502080F31188BFF34F8FBFF3C8 +:102FE0006F8FFEE794F82800810703D4204600F095 +:102FF000BDFA03E020F0010084F8280028680022D0 +:1030000004A900F009FF00288CD109B030BD0000F0 +:103010005C0100202DE9FC410F46054600F084FCD0 +:1030200001A800F067F80446019818B101F0A8FA69 +:10303000BDE8FC81254EAFB130690068D0B30027F0 +:103040003068291B3A4600F013FB01F099FA00287A +:10305000EED11F494FF080500860BFF34F8FBFF390 +:103060006F8FE5E7A542EBD801F08AFAF0682746B2 +:10307000C068C468201D00F0E8F994F828004107F2 +:1030800019D5A0692B463A4641192046FFF71AFF89 +:10309000A8B100202A46034601460090204601F0D0 +:1030A00001FB60B9502080F31188BFF34F8FBFF34D +:1030B0006F8FFEE707E020F0010084F82800216A06 +:1030C00020468847B4E70127BAE700005C010020EA +:1030D00004ED00E00648416B096829B1416BC968FD +:1030E000C9684968816270474FF0FF31FAE7000014 +:1030F0002001002070B5054601F014F9064E044683 +:10310000B068844203D200F009F8012000E00020FA +:1031100028602046B46070BD5C010020F8B5194DF0 +:1031200020E0C068C4680668201D00F08EF9216A9E +:103130002046884794F82800400713D5A0693044FA +:10314000B04206D92461211D6060E86800F0B6F93C +:1031500008E000203246034601460090204601F078 +:10316000A1FA38B1E86801680029DAD12969C5E90E +:103170000310F8BD502080F31188BFF34F8FBFF3C9 +:103180006F8FFEE75C01002008484068401C4FF04C +:10319000500080F3118804D0BFF34F8FBFF36F8FBF +:1031A000FEE7BFF34F8FBFF36F8FFEE79401002060 +:1031B000074CE068016841B1C0680021D0F8000008 +:1031C000FFF728FFFFF7AAFEF3E701210020F7E74A +:1031D0005C0100202DE9F041044600F093F994F9D8 +:1031E000455004F1240609E0606A48B1304601F018 +:1031F0008FF908B100F01AFB6D1E6DB2002DF3DCE3 +:103200004FF0FF3684F8456000F09CF900F07AF941 +:1032100094F9445004F1100709E0206948B1384698 +:1032200001F076F908B100F001FB6D1E6DB2002DC2 +:10323000F3DC84F84460BDE8F04100F083B900009D +:103240002DE9F0410027044600F06EFB324E306855 +:1032500008B9FFF739FD706904424ED1C4B3083490 +:1032600060070ED004F00700C0F1080004446007B6 +:1032700007D0502080F31188BFF34F8FBFF36F8FBB +:10328000FEE72CB37068844237D8234818300146D3 +:103290000D6801E028460D466968A14202D22968FE +:1032A0000029F7D131688D4227D00768296801606D +:1032B00008376868011B10290FD92819420708D060 +:1032C000502080F31188BFF34F8FBFF36F8FFEE75D +:1032D00013E041606C60FFF7CFFD69687068401AC9 +:1032E0007060B268904200D2B060002072691143F1 +:1032F000C5E90001F068401CF06001F041F9780771 +:1033000007D0502080F31188BFF34F8FBFF36F8F2A +:10331000FEE73846BDE8F0817401002070B5041F57 +:10332000094E231F4FF0807521F0010125601C1FFD +:103330001960A0F120010B1F266044380A606FF06D +:1033400002051D6070BD00008931010810B52DED2A +:10335000088BF0EE439AB0EE628AB0EE42AAB0EE6D +:10336000619AF0EE418AB0EE60BAF0EE40AAFEF744 +:10337000C1FC20EE099AB0EE6A0AFEF797FB0AEE4E +:10338000409AB0EE4B0AFEF7B5FC20EE29AAB0EE4B +:103390004B0AFEF78BFB09EE808A6AEE280A2AEEBA +:1033A000090A48EE490A08EE280ABDEC088BBDE878 +:1033B0001040FEF721BA000060EE201A10B5B0EE02 +:1033C000E12A60EE001AB0EE000A40EEA01A62EEAA +:1033D000000A41EE411A81EEA00A10EE100AB0F187 +:1033E0007E5F02DDB7EE000A06E010EE100A10F173 +:1033F000814F01D9BFEE000AFDF7EAFEDFED020AB8 +:1034000030EE600A10BD0000DB0F494010B500EE41 +:10341000100A2DED028BB1EEC08A18EE100A20F0D2 +:103420000040C0F1FF40C00F0AD010EE100A20F09B +:103430000040C0F1FF40C00F04BF0120EDF787FA44 +:1034400018EE100ABDEC028B10BDD0E90132016903 +:103450009A60D0E901235A604A68824201D18268A9 +:103460004A60002202610868401E086008687047D0 +:1034700010B5044C8023046004F15C000860136004 +:1034800010BD0000D433002010B5044C4FF48073FD +:10349000046004F15C000860136010BD3036002049 +:1034A0004FF0FF3300F108010022C0E90113026070 +:1034B000C1600161704700210161704730B50B6840 +:1034C0005A1C02D000F1080202E0026904E0224620 +:1034D000546825689D42FAD953684B6099608A60A8 +:1034E000516008610168491C016030BD42684A6052 +:1034F00093688B6093685960916008610168491C0A +:1035000001607047502080F31188BFF34F8FBFF3E5 +:103510006F8F0A494868401C486001280CD1084850 +:10352000006810F0FF0F07D0502080F31188BFF320 +:103530004F8FBFF36F8FFEE77047000094010020AC +:1035400004ED00E00849486828B1401E486001D1F8 +:1035500080F311887047502080F31188BFF34F8F9C +:10356000BFF36F8FFEE700009401002070B50028C4 +:103570002AD0164DA0F1080461686869014207D19C +:10358000502080F31188BFF34F8FBFF36F8FFEE79A +:1035900022683AB1502080F31188BFF34F8FBFF3F8 +:1035A0006F8FFEE78143616000F0BEF96068696873 +:1035B000084468602046FFF75FFC2869401C2861CA +:1035C000BDE8704000F0DCBF70BD00007401002059 +:1035D0004FF0E020002101614FF47A7281610723EE +:1035E00003490968B1FBF2F1491E4161036170476B +:1035F0008800002010B5ECF78BFF114910280ED37E +:1036000000F1E0200A7890F8F003904207D25020B1 +:1036100080F31188BFF34F8FBFF36F8FFEE7094828 +:103620008968006800F4E060884207D9502080F380 +:103630001188BFF34F8FBFF36F8FFEE710BD0000FF +:10364000940100200CED00E0084B5FF0000210B583 +:1036500053F832401CB1521C082AF9D310BD03EBB9 +:10366000C20443F83210606010BD0000B82D002085 +:1036700070B515460E460446FFF744FF94F9441012 +:103680000020491C01D184F8440094F94510491CDC +:1036900001D184F84500FFF755FFA06B28B904F16C +:1036A00024002A46314600F0DFF82046BDE870408D +:1036B000FFF790BD020010B514D00F48006B38B171 +:1036C000502080F31188BFF34F8FBFF36F8FFEE759 +:1036D00000F02AF900211046FFF7D0F900F050FF62 +:1036E000002807D105494FF080500860BFF34F8F85 +:1036F000BFF36F8F10BD00002001002004ED00E03B +:1037000070B504000D460BD095B11E4A106BB8B1D0 +:10371000502080F31188BFF34F8FBFF36F8FFEE708 +:10372000502080F31188BFF34F8FBFF36F8FFEE7F8 +:10373000502080F31188BFF34F8FBFF36F8FFEE7E8 +:1037400000F0F2F82368D2685919934204D98B42E9 +:103750000AD9914202D807E08B42FAD9881A21602F +:103760000021FFF78BF900E0216000F009FF00283D +:1037700007D105494FF080500860BFF34F8FBFF36A +:103780006F8F70BD2001002004ED00E070B505468C +:10379000FFF7B8FE1E4C05B92568281DFFF755FE3A +:1037A000A86A18B105F11800FFF74FFE606A401CC7 +:1037B00060622068854207D11648291DFFF796FEF2 +:1037C0006068401C606007E0A068401EA06028465A +:1037D000FFF75FFAFFF77EFCFFF7B4FE6069002891 +:1037E00014D02068854211D1206B38B1502080F36D +:1037F0001188BFF34F8FBFF36F8FFEE706494FF07D +:1038000080500860BFF34F8FBFF36F8F70BD000013 +:10381000200100209432002004ED00E002490A6AF1 +:103820000260C96841607047200100200149012001 +:10383000C86170472001002010B50C4650B10949FD +:1038400009681831FFF73AFE2046BDE81040012113 +:10385000FFF714B9502080F31188BFF34F8FBFF3E7 +:103860006F8FFEE72001002070B514460D4668B149 +:103870000A4909681831FFF739FE0CB14FF0FF35DE +:1038800021462846BDE87040FFF7F8B8502080F385 +:103890001188BFF34F8FBFF36F8FFEE72001002029 +:1038A00030B587B0002405AA04A9039403A80494A2 +:1038B000FFF7DEFDDDE9030100940023CDE90110EF +:1038C000174815A1059A00F0FCFB164D0028E86288 +:1038D0001FD000F0B7FE012809D0401C19D150209C +:1038E00080F31188BFF34F8FBFF36F8FFEE7502037 +:1038F00080F31188BFF34F8FBFF36F8F01214FF01B +:10390000FF30A8626961EC6007B0BDE8304000F0AC +:1039100045B807B030BD000049444C4500000000E8 +:10392000452D0108200100200248016B491C01635C +:103930007047000020010020164810B5016B11B13E +:103940000121C16110BD0021C161134A016901E07B +:10395000B9B1491E01EB810352F82330002BF7D097 +:1039600001EB810302EB830202F1080453685B68F8 +:103970005360A34201D15B685360DA680260016161 +:1039800010BD502080F31188BFF34F8FBFF36F8FAE +:10399000FEE7000020010020F82D002037481CB56C +:1039A000374902688A4207D1502080F31188BFF35B +:1039B0004F8FBFF36F8FFEE731490068491E884281 +:1039C00007D1502080F31188BFF34F8FBFF36F8F63 +:1039D000FEE72C49FF200A780192087008788DF8DC +:1039E00000009DF800209DF8000002F0F0028242E5 +:1039F00007D0502080F31188BFF34F8FBFF36F8F34 +:103A0000FEE79DF8002007201F4C02F050022270B4 +:103A1000A06005E09DF8002052008DF80020401EB7 +:103A20009DF800201206F5D40328A06007D050208E +:103A300080F31188BFF34F8FBFF36F8FFEE74FF412 +:103A40004070A060019808700C482030016841F473 +:103A500070010160016841F070410160FFF7B8FD3D +:103A600000206060ECF71CFD0848016841F040410F +:103A70000160ECF701FD00201CBD000000ED00E03E +:103A800071C20F4100E400E09401002034EF00E037 +:103A9000502010B580F31188BFF34F8FBFF36F8FA5 +:103AA00000F04EFC18B104494FF08050086000202F +:103AB00080F3118810BD000004ED00E0F8B50500AA +:103AC00017460E4613D005FB06F05030FFF7B8FB43 +:103AD00004000AD0002084F8460004F150023B465E +:103AE000314628460094FFF75DF92046F8BD502086 +:103AF00080F31188BFF34F8FBFF36F8FFEE7F8B5E8 +:103B0000069D18B153B1CAB181B120E0502080F3B5 +:103B10001188BFF34F8FBFF36F8FFEE7502080F304 +:103B20001188BFF34F8FBFF36F8FFEE7502080F3F4 +:103B30001188BFF34F8FBFF36F8FFEE739B150206D +:103B400080F31188BFF34F8FBFF36F8FFEE75024D0 +:103B50001C46012683F8466000932B46FFF722F9A6 +:103B60002046F8BD2DE9F04704008A4629D0FFF72A +:103B7000C9FC21680025D4E90F23D4F840C004F122 +:103B8000100810460E46401E4FF0FF3902FB03128C +:103B900000FB0C10BAF1000FA563666084F8449036 +:103BA00084F84590C4E9022013D04046FFF778FC22 +:103BB00004F12400FFF774FCFFF7C4FC0120BDE80A +:103BC000F087502080F31188BFF34F8FBFF36F8FC2 +:103BD000FEE720690028EFD0404600F099FC00285D +:103BE000EAD004494FF080500860BFF34F8FBFF315 +:103BF0006F8FE1E704ED00E02DE9FF4704001D466B +:103C000082B08A464FF0000803D0BAF1000F08D006 +:103C100011E0502080F31188BFF34F8FBFF36F8FF7 +:103C2000FEE7206C38B1502080F31188BFF34F8F2E +:103C3000BFF36F8FFEE7022D0AD1E06B012807D09A +:103C4000502080F31188BFF34F8FBFF36F8FFEE7D3 +:103C500000F05AFB3F4F4FF080564FF0000948B933 +:103C6000049838B1502080F31188BFF34F8FBFF311 +:103C70006F8FFEE7FFF746FCA06BE16B884207D32E +:103C8000022D05D00498D0B1B8F1000F1AD01EE073 +:103C90002A4651462046FEF7C6FF616A19B104F173 +:103CA000240000F035FC20B13E60BFF34F8FBFF31E +:103CB0006F8FFFF747FC012006B0BDE8F087FFF7E4 +:103CC00041FC22E06846FFF7A9FD4FF00108FFF72D +:103CD00039FCFFF729FEFFF715FC94F94400401C5E +:103CE00001D184F8449094F94500401C01D184F836 +:103CF0004590FFF727FC04A9684600F079F930B138 +:103D00002046FFF767FA00F03BFC0020D4E7FFF7FE +:103D1000F9FBA06BE16B884213D1FFF713FC049908 +:103D200004F11000FFF788FD2046FFF753FA00F07A +:103D300027FC00289ED13E60BFF34F8FBFF36F8FEB +:103D400098E7FFF7FFFB2046FFF744FA00F018FC66 +:103D500090E7000004ED00E02DE9F04704001F4665 +:103D60009046894603D0B9F1000F08D011E05020E9 +:103D700080F31188BFF34F8FBFF36F8FFEE7206C86 +:103D800038B1502080F31188BFF34F8FBFF36F8F8E +:103D9000FEE7022F0AD1E06B012807D0502080F304 +:103DA0001188BFF34F8FBFF36F8FFEE7FFF722FC41 +:103DB0005020EFF3118680F31188BFF34F8FBFF3CC +:103DC0006F8FA06BE16B884206D3022F04D00020D6 +:103DD00086F31188BDE8F08794F94550A06B3A4608 +:103DE00049462046FEF71FFF681C04D06D1C84F86E +:103DF00045500120ECE7606A0028FAD004F1240065 +:103E000000F086FB0028F4D0B8F1000FF1D00121BA +:103E1000C8F80010EDE700002DE9F74704008A46D6 +:103E200083B04FF0000603D0BAF1000F08D011E0C4 +:103E3000502080F31188BFF34F8FBFF36F8FFEE7E1 +:103E4000206C38B1502080F31188BFF34F8FBFF33F +:103E50006F8FFEE700F058FADFF8F4804FF08057DC +:103E60004FF0000948B9059838B1502080F3118807 +:103E7000BFF34F8FBFF36F8FFEE7FFF743FBA56BD9 +:103E8000C5B151462046FEF7BBFE6D1EA5632069F5 +:103E900050B104F1100000F03BFB28B1C8F80070ED +:103EA000BFF34F8FBFF36F8FFFF74CFB012006B0BE +:103EB000BDE8F087059808B11EB106E0FFF742FBA8 +:103EC00027E06846FFF7AAFC0126FFF73BFBFFF758 +:103ED0002BFDFFF717FB94F94400401C01D184F837 +:103EE000449094F94500401C01D184F84590FFF7B7 +:103EF00029FB05A9684600F07BF8002820460AD077 +:103F0000FFF768F900F03CFB2046FEF7F9FF0028B8 +:103F1000B3D00020CBE7FEF7F3FF90B1059904F191 +:103F20002400FFF789FC2046FFF754F900F028FB36 +:103F30000028A2D1C8F80070BFF34F8FBFF36F8F76 +:103F40009BE72046FFF746F900F01AFB95E70000D3 +:103F500004ED00E02DE9F04704009046894603D0C7 +:103F6000B9F1000F08D011E0502080F31188BFF3A1 +:103F70004F8FBFF36F8FFEE7206C38B1502080F376 +:103F80001188BFF34F8FBFF36F8FFEE7FFF732FB50 +:103F90005020EFF3118680F31188BFF34F8FBFF3EA +:103FA0006F8FA76BFFB194F9445049462046FEF746 +:103FB00027FE681CA7F10107A76304D06D1C84F8D5 +:103FC0004450012010E020690028FAD004F11000CC +:103FD00000F09EFA0028F4D0B8F1000FF1D00121D2 +:103FE000C8F80010EDE7002086F31188BDE8F087DF +:103FF0002DE9F04105000C4612D0CCB1FFF782FA52 +:10400000184E2068F268471C6B68A2EB030117D0BA +:104010002F68366AB74215D0934213D801251CE0A9 +:10402000502080F31188BFF34F8FBFF36F8FFEE7EF +:10403000502080F31188BFF34F8FBFF36F8FFEE7DF +:1040400000250AE0884205D9401A20602846FFF77B +:10405000E5FBF5E7002020600125FFF773FA28460D +:10406000BDE8F081200100202DE9FF5F994616464A +:104070008A4683469000DDE90E87FFF7E1F80500E8 +:104080001CD05C20FFF7DCF8040014D0002025636E +:1040900084F859004B46CDE90087CDE9024032460D +:1040A00051465846FEF78FFE2046FEF715FD0120CB +:1040B00004B0BDE8F09F2846FFF758FA4FF0FF30F4 +:1040C000F6E7F0B585B0DDE90B740A9DA7B1DCB168 +:1040D0005C262763022684F85960002703970DF1B8 +:1040E000100C0095CDE901C4FEF76DFE2046FEF7E9 +:1040F000F3FC049805B0F0BD502080F31188BFF3A5 +:104100004F8FBFF36F8FFEE7502080F31188BFF30E +:104110004F8FBFF36F8FFEE72DE9F0411F469046AA +:104120000D464FF0010690B10446FFF7EBF90FB1D1 +:10413000606D3860022294F8580084F85820B8F175 +:10414000050F19D2DFE808F0230B0E1412005020DF +:1041500080F31188BFF34F8FBFF36F8FFEE7616D60 +:10416000294301E0616D491C616510E0022801D01E +:1041700065650CE0002634E0616D491C07D05020D5 +:1041800080F31188BFF34F8FBFF36F8FFEE70128D5 +:1041900027D1201DFFF759F9144DE06A296988429B +:1041A00000D9286100EB8000114901EB8000211D3E +:1041B000FFF79CF9A06A38B1502080F31188BFF353 +:1041C0004F8FBFF36F8FFEE72868E16AC06A8142B4 +:1041D00007D908494FF080500860BFF34F8FBFF3F5 +:1041E0006F8FFFF7AFF93046BDE8F0812001002066 +:1041F000F82D002004ED00E02DE9F04704001F46F3 +:1042000092460D46DDF820904FF001081AD0FFF7D6 +:10421000F1F95020EFF3118680F31188BFF34F8F2F +:10422000BFF36F8F0FB1606D3860022294F85800B1 +:1042300084F85820BAF1050F1AD2DFE80AF0240BEF +:104240000E141200502080F31188BFF34F8FBFF37C +:104250006F8FFEE7616D294301E0616D491C616567 +:1042600011E0022801D065650DE04FF000083AE04A +:10427000616D491C07D0502080F31188BFF34F8F28 +:10428000BFF36F8FFEE701282DD1A06A38B150200F +:1042900080F31188BFF34F8FBFF36F8FFEE7144D8C +:1042A000286B18B1134804F118010DE0201DFFF729 +:1042B000CCF8E06A2969884200D9286100EB8000C7 +:1042C0000D4901EB8000211DFFF710F9E06A296814 +:1042D000C96A884207D9B9F1000F4FF0010001D037 +:1042E000C9F80000E86186F311884046BDE8F08710 +:1042F0002001002080320020F82D002001480068B5 +:1043000070470000200100200548416919B1006B89 +:1043100018B100207047012070470220704700004C +:10432000200100200148C0687047000020010020E3 +:1043300010B5FFF75FF90148C06810BD20010020EB +:104340002DE9F0412E4C206B002728B1A069401CBC +:10435000A0613846BDE8F081E668761CE66013D1BE +:10436000606B006838B1502080F31188BFF34F8F25 +:10437000BFF36F8FFEE7606BA16B6163A063206A80 +:10438000401C2062FEF7A6FEDFF87880A06A864215 +:1043900009D3606B0068A0B1606BC068C5686868CD +:1043A000864211D2A0622068C06A00EB800158F8F2 +:1043B0002100012800D90127E0690028C9D0012780 +:1043C000C7E74FF0FF30EDE7281DFFF73EF8A86A7A +:1043D00018B105F11800FFF738F8E86A216988423A +:1043E00000D9206100EB800108EB8100291DFFF757 +:1043F0007DF82068E96AC06A8142CAD30127C8E70C +:1044000020010020F82D00202DE9F0411E46154620 +:1044100088460746FFF776F81C4C206890F858004D +:10442000022814D02068416DB943416521680120FC +:1044300081F858005EB101213046FEF71FFB144998 +:104440004FF080500860BFF34F8FBFF36F8FFFF7BF +:1044500079F8FFF757F815B12068406D286020689B +:1044600090F85800022801D0002505E02068416D31 +:1044700021EA0801416501252168002081F85800E2 +:10448000FFF760F82846BDE8F08100002001002019 +:1044900004ED00E070B504464FF0000190B31A4DF2 +:1044A0002868844207D0502080F31188BFF34F8FD3 +:1044B000BFF36F8FFEE7206D38B1E36C401EE26AF8 +:1044C00020659A421ED040B11CE0502080F3118834 +:1044D000BFF34F8FBFF36F8FFEE7201DFEF7B5FFD1 +:1044E000E06CC0F13801A161E0622969884200D91D +:1044F000286100EB8000054901EB8000211DFEF7DB +:10450000F5FF0121084670BD20010020F82D002094 +:1045100070B5C068C46854B104F118000646FEF7CF +:1045200094FF144D286B50B11348314615E05020CC +:1045300080F31188BFF34F8FBFF36F8FFEE7201D0D +:10454000FEF783FFE06A2969884200D9286100EB01 +:1045500080000A4901EB8000211DFEF7C7FFE06AD9 +:104560002968C96A884203D90121E961084670BDFA +:10457000002070BD2001002080320020F82D002096 +:104580002DE9F0472C4D286B0024274638B1FEF763 +:10459000B9FF286B401E2863286B40B147E05020CC +:1045A00080F31188BFF34F8FBFF36F8FFEE7234E69 +:1045B0000120A968D9B3A6F5916980463068E0B1B9 +:1045C000F068C46804F11800FEF73FFF201DFEF7F5 +:1045D0003CFFE06A2969884200D9286100EB80012C +:1045E00009EB8100211DFEF781FFE06A2968C96A95 +:1045F0008842E3D3C5F81C80E0E70CB1FEF76AFD02 +:10460000AC694CB14FEA0806FFF79AFE00B1EE61C3 +:10461000641EF9D10020A861E86940B1084901276A +:104620004FF080500860BFF34F8FBFF36F8FFEF7DE +:1046300089FF3846BDE8F087200100208032002045 +:1046400004ED00E010B586B0FEF7AEFA114C20681C +:10465000B8B10020039005AA049004A903A8FEF7AE +:1046600013FFDDE90321022000238DE807000C4839 +:1046700009A1059AFFF725FD606010B106B0012081 +:1046800010BD502080F31188BFF34F8FBFF36F8FA1 +:10469000FEE700005C010020546D72205376630039 +:1046A000B13101082DE9FF411E46134602004FF0CB +:1046B00000000A9D16D0144C2768002F0FD0062941 +:1046C0000292CDE9001317DAFFF71EFE02284FF021 +:1046D00000030FD0002220686946FFF78DFA04B06E +:1046E000BDE8F081502080F31188BFF34F8FBFF3F6 +:1046F0006F8FFEE72A46EEE70023324669463846CA +:10470000FFF72AFBEBE700005C01002010B5002951 +:104710000AD00878002807D005487844EDF746F914 +:10472000002801D0002010BD0248784410BD0000D0 +:10473000120B00000A0B000010B500290AD00878FF +:10474000002807D005487844EDF730F9002801D05B +:10475000002010BD0248784410BD0000020B00008C +:10476000FA0A000000EE100A00EE901AB4EE600A99 +:10477000F1EE10FA78BF704700F00DB810B5FFF7F2 +:10478000F1FFEFF3008020F0104038BF40F0004010 +:1047900080F3008810BDBDE8104010B500F017F898 +:1047A0000000000900F007B84FF0404010F1004F42 +:1047B000EFF300807047401058BFC0F140404910EF +:1047C00058BFC1F140418142EFF3008070470EF1C4 +:1047D000020E2EF0030E5EF8044B244204D44FEA7E +:1047E0004102B2F17F4F11D84FEA4003B3F17F4F3E +:1047F0000CD80ED14FEAD07CB2F17F4F0CEB4C0CB1 +:104800000CF1020C08BF4CEBD17C04E04FF0080C1B +:1048100001E04FEAD17C0CEB4C0324FA03F404F0E2 +:104820000704B4F1040C06D20EEB840CBDE8104072 +:104830004CF0010C6047DFE80CF0070802024FF073 +:104840000040A0F5800010BD0846420018BFD2F11C +:10485000807288BF00F0004010BD4FF04070E1EE64 +:10486000100A70474FF07F4C3CEA410318BF3CEA06 +:10487000400200F062804FF47F0C10F0004F0CEA11 +:10488000D11318BF43F005031CEAD01218BF13EA76 +:104890000C0F00F057804FF0004C4CEA00204CEA1F +:1048A0000121A3F580339A4210DDB0F1004F23F0CF +:1048B000020306D3401A43F00203BCBF404283F018 +:1048C00001034FEA4000A2F58032ECE74FEA224CA8 +:1048D000BCEB234F08DB884206D31CD0A0EB410081 +:1048E000C0F1000083F0010340001DD217D40DD0A9 +:1048F000B0FA80FC0CF1010C00FA0CF0A2EB0C42B7 +:10490000D2F1000C12DB4FEAC37070474FEA4370DC +:1049100000F00040704713F0020FE5D0DEE7B2F57B +:1049200080324FEA4000EBDD002AE9DD4FEAC21297 +:1049300042EA502040EAC370704710B5FFF747FFC6 +:10494000EDFFFF3E1CEAD11F02D000F0004070478F +:10495000004870470000C07FECF735BCECF76ABD3B +:10496000945001080000000000000000000000005A +:10497000000000000002000018000000000000001D +:1049800000000000000610160006101600010203C9 +:1049900004050607080C1014182030400000000021 +:1049A0000000000000000000000000000000000007 +:1049B00001000000020000000300000004000000ED +:1049C00000000000050000000000000000000000E2 +:1049D00000000000060000000000000000000000D1 +:1049E00000000000070000000100020004000600B3 +:1049F00008000A000C0010002000400080000001A8 +:104A0000010101030701000008040204080101017B +:104A10000000000001020304010203040607080964 +:104A2000D0500108A0500108192D01080000000015 :104A30000000000000000000000000000000000076 :104A40000000000000000000000000000000000066 :104A50000000000000000000000000000000000056 @@ -5295,162 +5295,166 @@ :104AC00000000000000000000000000000000000E6 :104AD00000000000000000000000000000000000D6 :104AE00000000000000000000000000000000000C6 -:104AF0008FC275BC3255B0BD000000008FC275BCBE -:104B00003255B03D000000008FC275BC3255B0BDBB -:104B1000000000008FC275BC3255B03D000000009F +:104AF00000000000000000000000000000000000B6 +:104B000000000000000000000000000000000000A5 +:104B10000000000000000000000000000000000095 :104B20008FC275BC3255B0BD000000008FC275BC8D :104B30003255B03D000000008FC275BC3255B0BD8B :104B4000000000008FC275BC3255B03D000000006F -:104B500050510108000000000000000000000000AB -:104B60000000000000040000300000000000000011 -:104B7000000000005C51010800000000000000007F -:104B80000000000000000000000400001800000009 -:104B9000000000000000000060510108000000005B -:104BA0000000000000000000000000000004000001 -:104BB0001800000000000000000000006C51010817 -:104BC00000000000000000000000000000000000E5 -:104BD00000040000180000000000000000000000B9 -:104BE00074510108000000000000000000000000F7 -:104BF0000000000000040000180000000000000099 -:104C000000000000785101080000000000000000D2 -:104C10000000000000000000000400001800000078 -:104C200000000000000000008051010800000000AA -:104C30000000000000000000000000000004000070 -:104C4000180000000000000000000000845101086E -:104C50000000000000000000000000000000000054 -:104C60000008000018000000000000000000000024 -:104C7000905101080000000000000000000000004A -:104C80000000000000080000180000000000000004 -:104C900000000000C4510108A0510108C923010807 -:104CA000000000000000891112239B322446AD57FA -:104CB0003665BF74488CC19D5AAFD3BE6CCAE5DB64 -:104CC0007EE9F7F88110080193331A22A5562C4784 -:104CD000B7753E64C99C408DDBBF52AEEDDA64CB44 -:104CE000FFF976E802218B30100299132667AF7620 -:104CF0003444BD554AADC3BC588ED19F6EEBE7FA24 -:104D00007CC8F5D983310A2091121803A7772E6643 -:104D1000B5543C45CBBD42ACD99E508FEFFB66EA03 -:104D2000FDD874C904428D5316619F702004A915E3 -:104D30003227BB364CCEC5DF5EEDD7FC6888E199E3 -:104D40007AABF3BA85520C4397711E60A114280503 -:104D5000B3373A26CDDE44CFDFFD56ECE9986089C3 -:104D6000FBBB72AA06638F7214409D512225AB349F -:104D70003006B9174EEFC7FE5CCCD5DD6AA9E3B8A3 -:104D8000788AF19B87730E6295501C41A3352A24C3 -:104D9000B1163807CFFF46EEDDDC54CDEBB962A883 -:104DA000F99A708B088481951AA793B62CC2A5D363 -:104DB0003EE1B7F04008C919522BDB3A644EED5F73 -:104DC000766DFF7C899400859BB712A6ADD224C373 -:104DD000BFF136E0C1184809D33B5A2AE55E6C4F53 -:104DE000F77D7E6C0AA583B4188691972EE3A7F20F -:104DF0003CC0B5D14229CB38500AD91B666FEF7E33 -:104E0000744CFD5D8BB502A499961087AFF326E232 -:104E1000BDD034C1C3394A28D11A580BE77F6E6E12 -:104E2000F55C7C4D0CC685D71EE597F42880A191D2 -:104E30003AA3B3B2444ACD5B5669DF78600CE91DF2 -:104E4000722FFB3E8DD604C79FF516E4A9902081F2 -:104E5000BBB332A2C55A4C4BD7795E68E11C680DD2 -:104E6000F33F7A2E0EE787F61CC495D52AA1A3B08E -:104E70003882B193466BCF7A5448DD59622DEB3CB2 -:104E8000700EF91F8FF706E69DD414C5ABB122A0B2 -:104E9000B9923083C77B4E6AD5585C49E33D6A2C92 -:104EA000F11E780F000000000000000030313233A6 -:104EB000343536373839414243444546403058004E -:104EC0003031323334353637383961626364656680 -:104ED00040307800040000080000000000000002DC -:104EE00000010000100000004FBB610567ACDD3F12 -:104EF000182D4454FB21E93F9BF681D20B73EF3F01 -:104F0000182D4454FB21F93FE2652F227F2B7A3C78 -:104F1000075C143326A6813CBDCBF07A8807703C31 -:104F2000075C143326A6913CC4EB98999999C9BFA4 -:104F3000711623FEC671BCBF6D9A74AFF2B0B3BFD9 -:104F40009AFDDE522DDEADBF2F6C6A2C44B4A2BF99 -:104F50000D5555555555D53FFF8300922449C23F05 -:104F60006E204CC5CD45B73F513DD0A0660DB13F39 -:104F7000EB0D76244B7BA93F11DA22E33AAD903F4B -:104F80000000000000000000000000006E83F9A295 -:104F90002915444ED15727FCC0DD34F5999562DBC5 -:104FA0004190433CAB6351FE3031323334353637B8 -:104FB0003839616263646566787000303132333449 -:104FC0003536373839414243444546585000000091 -:104FD00002400000000000A00000000005400000AA -:104FE000000000C8000000000C4000000000409CD1 -:104FF00000000000194000000020BCBE00000000BE -:1050000034400000BFC91B8E00000004B540000002 -:10501000504BCFD06607E2CF010000006C4100008A -:105020003E8251AADFEEA73401000000D942000001 -:10503000DCB5A0E23A301F97FFFFFFFFB445000048 -:10504000FD25A0C8E9A3C14FFFFFFFFFFF3F000000 -:105050000000008000000000FF3F00000000008012 -:105060000000000064656661756C745461736B00C8 -:105070000D0A68656C703A0D0A204C6973747320D0 -:10508000616C6C2074686520726567697374657201 -:10509000656420636F6D6D616E64730D0A0D0A00A7 -:1050A00068656C7000000000496E636F7272656322 -:1050B0007420636F6D6D616E6420706172616D65E7 -:1050C0007465722873292E2020456E746572202223 -:1050D00068656C702220746F207669657720612086 -:1050E0006C697374206F6620617661696C61626CB3 -:1050F0006520636F6D6D616E64732E0D0A0D0A007D -:10510000436F6D6D616E64206E6F74207265636FA6 -:10511000676E697365642E2020456E746572202762 -:1051200068656C702720746F207669657720612030 -:105130006C697374206F6620617661696C61626C62 -:105140006520636F6D6D616E64732E0D0A0D0A002C -:105150005461736B5F496E697400000072630000F4 -:10516000617474695F6573746900000074657374B9 -:1051700000000000636C69006D6F6E69746F7200EF -:10518000636D64006374726C5F6C6567000000009F -:105190006374726C5F63686173736973000000000D -:1051A00068746F703A20E698BEE7A4BA46726565E7 -:1051B00052544F53E4BBBBE58AA1E78AB6E680812F -:1051C0005C720A0068746F700000000028530108C8 -:1051D000000000208803000008030008B454010800 -:1051E000000000244405000008030008B45401082E -:1051F00088030020E8080100640300081C00000088 -:1052000043000000F8FFFFFF0C0000000E0000004C -:105210000F0000002E0000001001000043000000FD -:10522000F8FFFFFF004040404040404040404141C7 -:10523000414141404040404040404040404040406B -:105240004040404040050202020202020202020205 -:105250000202020202202020202020202020200202 -:105260000202020202029090909090901010101092 -:10527000101010101010101010101010101010102E -:1052800002020202020288888888888808080808C2 -:10529000080808080808080808080808080808088E -:1052A00002020202400000000000000000000000B6 -:1052B00000000000000000000000000000000000EE -:1052C00000000000000000000000000000000000DE -:1052D00000000000000000000000000000000000CE +:104B50008FC275BC3255B0BD000000008FC275BC5D +:104B60003255B03D000000008FC275BC3255B0BD5B +:104B7000000000008FC275BC3255B03D000000003F +:104B8000805101080000000000000000000000004B +:104B900000000000000400003000000000000000E1 +:104BA000000000008C51010800000000000000001F +:104BB00000000000000000000004000018000000D9 +:104BC00000000000000000009051010800000000FB +:104BD00000000000000000000000000000040000D1 +:104BE0001800000000000000000000009C510108B7 +:104BF00000000000000000000000000000000000B5 +:104C00000004000018000000000000000000000088 +:104C1000A451010800000000000000000000000096 +:104C20000000000000040000180000000000000068 +:104C300000000000A8510108000000000000000072 +:104C40000000000000000000000400001800000048 +:104C50000000000000000000B0510108000000004A +:104C60000000000000000000000000000004000040 +:104C7000180000000000000000000000B45101080E +:104C80000000000000000000000000000000000024 +:104C900000080000180000000000000000000000F4 +:104CA000C0510108000000000000000000000000EA +:104CB00000000000000800001800000000000000D4 +:104CC00000000000F4510108D0510108F923010847 +:104CD000000000000000891112239B322446AD57CA +:104CE0003665BF74488CC19D5AAFD3BE6CCAE5DB34 +:104CF0007EE9F7F88110080193331A22A5562C4754 +:104D0000B7753E64C99C408DDBBF52AEEDDA64CB13 +:104D1000FFF976E802218B30100299132667AF76EF +:104D20003444BD554AADC3BC588ED19F6EEBE7FAF3 +:104D30007CC8F5D983310A2091121803A7772E6613 +:104D4000B5543C45CBBD42ACD99E508FEFFB66EAD3 +:104D5000FDD874C904428D5316619F702004A915B3 +:104D60003227BB364CCEC5DF5EEDD7FC6888E199B3 +:104D70007AABF3BA85520C4397711E60A1142805D3 +:104D8000B3373A26CDDE44CFDFFD56ECE998608993 +:104D9000FBBB72AA06638F7214409D512225AB346F +:104DA0003006B9174EEFC7FE5CCCD5DD6AA9E3B873 +:104DB000788AF19B87730E6295501C41A3352A2493 +:104DC000B1163807CFFF46EEDDDC54CDEBB962A853 +:104DD000F99A708B088481951AA793B62CC2A5D333 +:104DE0003EE1B7F04008C919522BDB3A644EED5F43 +:104DF000766DFF7C899400859BB712A6ADD224C343 +:104E0000BFF136E0C1184809D33B5A2AE55E6C4F22 +:104E1000F77D7E6C0AA583B4188691972EE3A7F2DE +:104E20003CC0B5D14229CB38500AD91B666FEF7E02 +:104E3000744CFD5D8BB502A499961087AFF326E202 +:104E4000BDD034C1C3394A28D11A580BE77F6E6EE2 +:104E5000F55C7C4D0CC685D71EE597F42880A191A2 +:104E60003AA3B3B2444ACD5B5669DF78600CE91DC2 +:104E7000722FFB3E8DD604C79FF516E4A9902081C2 +:104E8000BBB332A2C55A4C4BD7795E68E11C680DA2 +:104E9000F33F7A2E0EE787F61CC495D52AA1A3B05E +:104EA0003882B193466BCF7A5448DD59622DEB3C82 +:104EB000700EF91F8FF706E69DD414C5ABB122A082 +:104EC000B9923083C77B4E6AD5585C49E33D6A2C62 +:104ED000F11E780F00000000000000003031323376 +:104EE000343536373839414243444546403058001E +:104EF0003031323334353637383961626364656650 +:104F000040307800040000080000000000000002AB +:104F100000010000100000004FBB610567ACDD3FE1 +:104F2000182D4454FB21E93F9BF681D20B73EF3FD0 +:104F3000182D4454FB21F93FE2652F227F2B7A3C48 +:104F4000075C143326A6813CBDCBF07A8807703C01 +:104F5000075C143326A6913CC4EB98999999C9BF74 +:104F6000711623FEC671BCBF6D9A74AFF2B0B3BFA9 +:104F70009AFDDE522DDEADBF2F6C6A2C44B4A2BF69 +:104F80000D5555555555D53FFF8300922449C23FD5 +:104F90006E204CC5CD45B73F513DD0A0660DB13F09 +:104FA000EB0D76244B7BA93F11DA22E33AAD903F1B +:104FB0000000000000000000000000006E83F9A265 +:104FC0002915444ED15727FCC0DD34F5999562DB95 +:104FD0004190433CAB6351FE303132333435363788 +:104FE0003839616263646566787000303132333419 +:104FF0003536373839414243444546585000000061 +:1050000002400000000000A0000000000540000079 +:10501000000000C8000000000C4000000000409CA0 +:1050200000000000194000000020BCBE000000008D +:1050300034400000BFC91B8E00000004B5400000D2 +:10504000504BCFD06607E2CF010000006C4100005A +:105050003E8251AADFEEA73401000000D9420000D1 +:10506000DCB5A0E23A301F97FFFFFFFFB445000018 +:10507000FD25A0C8E9A3C14FFFFFFFFFFF3F0000D0 +:105080000000008000000000FF3F000000000080E2 +:105090000000000064656661756C745461736B0098 +:1050A0000D0A68656C703A0D0A204C6973747320A0 +:1050B000616C6C20746865207265676973746572D1 +:1050C000656420636F6D6D616E64730D0A0D0A0077 +:1050D00068656C7000000000496E636F72726563F2 +:1050E0007420636F6D6D616E6420706172616D65B7 +:1050F0007465722873292E2020456E7465722022F3 +:1051000068656C702220746F207669657720612055 +:105110006C697374206F6620617661696C61626C82 +:105120006520636F6D6D616E64732E0D0A0D0A004C +:10513000436F6D6D616E64206E6F74207265636F76 +:10514000676E697365642E2020456E746572202732 +:1051500068656C702720746F207669657720612000 +:105160006C697374206F6620617661696C61626C32 +:105170006520636F6D6D616E64732E0D0A0D0A00FC +:105180005461736B5F496E697400000072630000C4 +:10519000617474695F657374690000007465737489 +:1051A00000000000636C69006D6F6E69746F7200BF +:1051B000636D64006374726C5F6C6567000000006F +:1051C0006374726C5F6368617373697300000000DD +:1051D00068746F703A20E698BEE7A4BA46726565B7 +:1051E00052544F53E4BBBBE58AA1E78AB6E68081FF +:1051F0005C720A0068746F70000000005853010868 +:10520000000000208803000008030008E85401089B +:10521000000000244405000008030008E8540108C9 +:1052200088030020E8080100640300081C00000057 +:1052300043000000F8FFFFFF0C0000000E0000001C +:105240000F0000002E0000001001000043000000CD +:10525000F8FFFFFF00404040404040404040414197 +:10526000414141404040404040404040404040403B +:1052700040404040400502020202020202020202D5 +:1052800002020202022020202020202020202002D2 +:105290000202020202029090909090901010101062 +:1052A00010101010101010101010101010101010FE +:1052B0000202020202028888888888880808080892 +:1052C000080808080808080808080808080808085E +:1052D0000202020240000000000000000000000086 :1052E00000000000000000000000000000000000BE :1052F00000000000000000000000000000000000AE :10530000000000000000000000000000000000009D :10531000000000000000000000000000000000008D -:105320000000000000000000811371FD1B08A104B3 -:105330001AAD041AC9041AE9041A51041A7D044169 -:1053400017040309041201140202021640FCFFB8FC -:105350002226020102030114050F0C1C010710177D -:1053600021031A1A031395331B088F041A8B041A8E -:10537000B9041ACD04193F1182103C90D0030431B6 -:1053800014810182130A0629532A40241C0902436E -:105390006F1125C03209041B01020B1305241610DE -:1053A00001052401180901042402020524068415BC -:1053B000058203081C100904A5320A2E0705010204 -:1053C00040072A8107111355F81408C1F64C08BF8D -:1053D000F9D01351F71B080D101A8304C11AD51800 -:1053E0001A95041A15301A890801781AAA01C117EA -:1053F000022B073DB80182200C3BF049019CC5CD32 -:10540000CCCC3D600B9A99993FCDCC4C3D0102200C -:10541000190AD7A33C48E14AC03A7907C20AD7AB78 -:10542000407B1416418C311E421B9040284816C008 -:10543000FD6E03C2CDCC2C40AE4729416DAC184265 -:105440005C8FCA40040B224A410C316ABF78490C78 -:105450000F1920C0666626C01819101B20400C4A80 -:10546000400C3924292C0913181D3255B03DA82AA7 -:105470003E041CC3F548045AA8F01A8024390419C4 -:105480003C790469100911081AA0581AA0B0290C17 -:10549000414BC84204893C2D0AD7A33D04411970F1 -:1054A00019781ACC0CB96039D48132011D0AD7237E -:1054B000BC28823C01FF01FF01FF01FF01FF014900 +:10532000000000000000000000000000000000007D +:10533000000000000000000000000000000000006D +:10534000000000000000000000000000000000005D +:10535000000000000000000081139DFD1B08CD042B +:105360001AD9041AF5041315FE1B087D081AA9049E +:105370004117040309041201140202021640FCFF43 +:10538000B82226020102030114050F0C1C010710AC +:105390001721031A1A031395331B088F041A8B0461 +:1053A0001AB9041ACD04193F1182103C90D003049D +:1053B0003114810182130A0629532A40241C090250 +:1053C000436F1125C03209041B01020B130524167B +:1053D0001001052401180901042402020524068491 +:1053E00015058203081C100904A5320A2E070501C1 +:1053F0000240072A8107111381F81408EDF64C08C2 +:10540000EBF9D0137DF71B0839101AAF04C11A014C +:10541000281AC11C1A41081AB50801781AAA01C134 +:1054200017022B073DB80182200C3B204A019CCD7E +:10543000CDCCCC3D1060090C400AD7A33D01021928 +:105440000C20163CCDCC9CC0E8C006C2D7A3A84017 +:1054500087161741F2762242481B9040CDCC4CC0B3 +:105460003A7905C233332340333327410746184284 +:105470005C8FCA40040B224A410C3142BF4D9A99BD +:10548000993F0C0F1920C0666626C01819101B2002 +:10549000400C4A400C3924292C0913181D3255B0F0 +:1054A0003DA82A3E041CC3F548045AA8F01A8024DB +:1054B0003904193C790469100911081AA0581AA076 +:1054C000B0290C414BC84204893C2D0AD7A33D04A6 +:1054D00041197019781ACC0CB96039D48132011D88 +:1054E0000AD723BC28823C0001FF01FF01FF01FF16 +:0454F00001FF01496E :04000005080002CD20 :00000001FF diff --git a/Middlewares/ST/ARM/DSP/Inc/arm_math.h b/Middlewares/ST/ARM/DSP/Inc/arm_math.h new file mode 100644 index 0000000..8daa218 --- /dev/null +++ b/Middlewares/ST/ARM/DSP/Inc/arm_math.h @@ -0,0 +1,8970 @@ +/****************************************************************************** + * @file arm_math.h + * @brief Public header file for CMSIS DSP Library + * @version V1.7.0 + * @date 18. March 2019 + ******************************************************************************/ +/* + * Copyright (c) 2010-2019 Arm Limited or its affiliates. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + \mainpage CMSIS DSP Software Library + * + * Introduction + * ------------ + * + * This user manual describes the CMSIS DSP software library, + * a suite of common signal processing functions for use on Cortex-M and Cortex-A processor + * based devices. + * + * The library is divided into a number of functions each covering a specific category: + * - Basic math functions + * - Fast math functions + * - Complex math functions + * - Filtering functions + * - Matrix functions + * - Transform functions + * - Motor control functions + * - Statistical functions + * - Support functions + * - Interpolation functions + * - Support Vector Machine functions (SVM) + * - Bayes classifier functions + * - Distance functions + * + * The library has generally separate functions for operating on 8-bit integers, 16-bit integers, + * 32-bit integer and 32-bit floating-point values. + * + * Using the Library + * ------------ + * + * The library installer contains prebuilt versions of the libraries in the Lib folder. + * + * Here is the list of pre-built libraries : + * - arm_cortexM7lfdp_math.lib (Cortex-M7, Little endian, Double Precision Floating Point Unit) + * - arm_cortexM7bfdp_math.lib (Cortex-M7, Big endian, Double Precision Floating Point Unit) + * - arm_cortexM7lfsp_math.lib (Cortex-M7, Little endian, Single Precision Floating Point Unit) + * - arm_cortexM7bfsp_math.lib (Cortex-M7, Big endian and Single Precision Floating Point Unit on) + * - arm_cortexM7l_math.lib (Cortex-M7, Little endian) + * - arm_cortexM7b_math.lib (Cortex-M7, Big endian) + * - arm_cortexM4lf_math.lib (Cortex-M4, Little endian, Floating Point Unit) + * - arm_cortexM4bf_math.lib (Cortex-M4, Big endian, Floating Point Unit) + * - arm_cortexM4l_math.lib (Cortex-M4, Little endian) + * - arm_cortexM4b_math.lib (Cortex-M4, Big endian) + * - arm_cortexM3l_math.lib (Cortex-M3, Little endian) + * - arm_cortexM3b_math.lib (Cortex-M3, Big endian) + * - arm_cortexM0l_math.lib (Cortex-M0 / Cortex-M0+, Little endian) + * - arm_cortexM0b_math.lib (Cortex-M0 / Cortex-M0+, Big endian) + * - arm_ARMv8MBLl_math.lib (Armv8-M Baseline, Little endian) + * - arm_ARMv8MMLl_math.lib (Armv8-M Mainline, Little endian) + * - arm_ARMv8MMLlfsp_math.lib (Armv8-M Mainline, Little endian, Single Precision Floating Point Unit) + * - arm_ARMv8MMLld_math.lib (Armv8-M Mainline, Little endian, DSP instructions) + * - arm_ARMv8MMLldfsp_math.lib (Armv8-M Mainline, Little endian, DSP instructions, Single Precision Floating Point Unit) + * + * The library functions are declared in the public file arm_math.h which is placed in the Include folder. + * Simply include this file and link the appropriate library in the application and begin calling the library functions. The Library supports single + * public header file arm_math.h for Cortex-M cores with little endian and big endian. Same header file will be used for floating point unit(FPU) variants. + * + * + * Examples + * -------- + * + * The library ships with a number of examples which demonstrate how to use the library functions. + * + * Toolchain Support + * ------------ + * + * The library is now tested on Fast Models building with cmake. + * Core M0, M7, A5 are tested. + * + * + * + * Building the Library + * ------------ + * + * The library installer contains a project file to rebuild libraries on MDK toolchain in the CMSIS\\DSP\\Projects\\ARM folder. + * - arm_cortexM_math.uvprojx + * + * + * The libraries can be built by opening the arm_cortexM_math.uvprojx project in MDK-ARM, selecting a specific target, and defining the optional preprocessor macros detailed above. + * + * There is also a work in progress cmake build. The README file is giving more details. + * + * Preprocessor Macros + * ------------ + * + * Each library project have different preprocessor macros. + * + * - ARM_MATH_BIG_ENDIAN: + * + * Define macro ARM_MATH_BIG_ENDIAN to build the library for big endian targets. By default library builds for little endian targets. + * + * - ARM_MATH_MATRIX_CHECK: + * + * Define macro ARM_MATH_MATRIX_CHECK for checking on the input and output sizes of matrices + * + * - ARM_MATH_ROUNDING: + * + * Define macro ARM_MATH_ROUNDING for rounding on support functions + * + * - ARM_MATH_LOOPUNROLL: + * + * Define macro ARM_MATH_LOOPUNROLL to enable manual loop unrolling in DSP functions + * + * - ARM_MATH_NEON: + * + * Define macro ARM_MATH_NEON to enable Neon versions of the DSP functions. + * It is not enabled by default when Neon is available because performances are + * dependent on the compiler and target architecture. + * + * - ARM_MATH_NEON_EXPERIMENTAL: + * + * Define macro ARM_MATH_NEON_EXPERIMENTAL to enable experimental Neon versions of + * of some DSP functions. Experimental Neon versions currently do not have better + * performances than the scalar versions. + * + * - ARM_MATH_HELIUM: + * + * It implies the flags ARM_MATH_MVEF and ARM_MATH_MVEI and ARM_MATH_FLOAT16. + * + * - ARM_MATH_MVEF: + * + * Select Helium versions of the f32 algorithms. + * It implies ARM_MATH_FLOAT16 and ARM_MATH_MVEI. + * + * - ARM_MATH_MVEI: + * + * Select Helium versions of the int and fixed point algorithms. + * + * - ARM_MATH_FLOAT16: + * + * Float16 implementations of some algorithms (Requires MVE extension). + * + *
+ * CMSIS-DSP in ARM::CMSIS Pack + * ----------------------------- + * + * The following files relevant to CMSIS-DSP are present in the ARM::CMSIS Pack directories: + * |File/Folder |Content | + * |---------------------------------|------------------------------------------------------------------------| + * |\b CMSIS\\Documentation\\DSP | This documentation | + * |\b CMSIS\\DSP\\DSP_Lib_TestSuite | DSP_Lib test suite | + * |\b CMSIS\\DSP\\Examples | Example projects demonstrating the usage of the library functions | + * |\b CMSIS\\DSP\\Include | DSP_Lib include files | + * |\b CMSIS\\DSP\\Lib | DSP_Lib binaries | + * |\b CMSIS\\DSP\\Projects | Projects to rebuild DSP_Lib binaries | + * |\b CMSIS\\DSP\\Source | DSP_Lib source files | + * + *
+ * Revision History of CMSIS-DSP + * ------------ + * Please refer to \ref ChangeLog_pg. + */ + + +/** + * @defgroup groupMath Basic Math Functions + */ + +/** + * @defgroup groupFastMath Fast Math Functions + * This set of functions provides a fast approximation to sine, cosine, and square root. + * As compared to most of the other functions in the CMSIS math library, the fast math functions + * operate on individual values and not arrays. + * There are separate functions for Q15, Q31, and floating-point data. + * + */ + +/** + * @defgroup groupCmplxMath Complex Math Functions + * This set of functions operates on complex data vectors. + * The data in the complex arrays is stored in an interleaved fashion + * (real, imag, real, imag, ...). + * In the API functions, the number of samples in a complex array refers + * to the number of complex values; the array contains twice this number of + * real values. + */ + +/** + * @defgroup groupFilters Filtering Functions + */ + +/** + * @defgroup groupMatrix Matrix Functions + * + * This set of functions provides basic matrix math operations. + * The functions operate on matrix data structures. For example, + * the type + * definition for the floating-point matrix structure is shown + * below: + *
+ *     typedef struct
+ *     {
+ *       uint16_t numRows;     // number of rows of the matrix.
+ *       uint16_t numCols;     // number of columns of the matrix.
+ *       float32_t *pData;     // points to the data of the matrix.
+ *     } arm_matrix_instance_f32;
+ * 
+ * There are similar definitions for Q15 and Q31 data types. + * + * The structure specifies the size of the matrix and then points to + * an array of data. The array is of size numRows X numCols + * and the values are arranged in row order. That is, the + * matrix element (i, j) is stored at: + *
+ *     pData[i*numCols + j]
+ * 
+ * + * \par Init Functions + * There is an associated initialization function for each type of matrix + * data structure. + * The initialization function sets the values of the internal structure fields. + * Refer to \ref arm_mat_init_f32(), \ref arm_mat_init_q31() and \ref arm_mat_init_q15() + * for floating-point, Q31 and Q15 types, respectively. + * + * \par + * Use of the initialization function is optional. However, if initialization function is used + * then the instance structure cannot be placed into a const data section. + * To place the instance structure in a const data + * section, manually initialize the data structure. For example: + *
+ * arm_matrix_instance_f32 S = {nRows, nColumns, pData};
+ * arm_matrix_instance_q31 S = {nRows, nColumns, pData};
+ * arm_matrix_instance_q15 S = {nRows, nColumns, pData};
+ * 
+ * where nRows specifies the number of rows, nColumns + * specifies the number of columns, and pData points to the + * data array. + * + * \par Size Checking + * By default all of the matrix functions perform size checking on the input and + * output matrices. For example, the matrix addition function verifies that the + * two input matrices and the output matrix all have the same number of rows and + * columns. If the size check fails the functions return: + *
+ *     ARM_MATH_SIZE_MISMATCH
+ * 
+ * Otherwise the functions return + *
+ *     ARM_MATH_SUCCESS
+ * 
+ * There is some overhead associated with this matrix size checking. + * The matrix size checking is enabled via the \#define + *
+ *     ARM_MATH_MATRIX_CHECK
+ * 
+ * within the library project settings. By default this macro is defined + * and size checking is enabled. By changing the project settings and + * undefining this macro size checking is eliminated and the functions + * run a bit faster. With size checking disabled the functions always + * return ARM_MATH_SUCCESS. + */ + +/** + * @defgroup groupTransforms Transform Functions + */ + +/** + * @defgroup groupController Controller Functions + */ + +/** + * @defgroup groupStats Statistics Functions + */ + +/** + * @defgroup groupSupport Support Functions + */ + +/** + * @defgroup groupInterpolation Interpolation Functions + * These functions perform 1- and 2-dimensional interpolation of data. + * Linear interpolation is used for 1-dimensional data and + * bilinear interpolation is used for 2-dimensional data. + */ + +/** + * @defgroup groupExamples Examples + */ + +/** + * @defgroup groupSVM SVM Functions + * This set of functions is implementing SVM classification on 2 classes. + * The training must be done from scikit-learn. The parameters can be easily + * generated from the scikit-learn object. Some examples are given in + * DSP/Testing/PatternGeneration/SVM.py + * + * If more than 2 classes are needed, the functions in this folder + * will have to be used, as building blocks, to do multi-class classification. + * + * No multi-class classification is provided in this SVM folder. + * + */ + + +/** + * @defgroup groupBayes Bayesian estimators + * + * Implement the naive gaussian Bayes estimator. + * The training must be done from scikit-learn. + * + * The parameters can be easily + * generated from the scikit-learn object. Some examples are given in + * DSP/Testing/PatternGeneration/Bayes.py + */ + +/** + * @defgroup groupDistance Distance functions + * + * Distance functions for use with clustering algorithms. + * There are distance functions for float vectors and boolean vectors. + * + */ + + +#ifndef _ARM_MATH_H +#define _ARM_MATH_H + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* Compiler specific diagnostic adjustment */ +#if defined ( __CC_ARM ) + +#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 ) + +#elif defined ( __GNUC__ ) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wsign-conversion" + #pragma GCC diagnostic ignored "-Wconversion" + #pragma GCC diagnostic ignored "-Wunused-parameter" + +#elif defined ( __ICCARM__ ) + +#elif defined ( __TI_ARM__ ) + +#elif defined ( __CSMC__ ) + +#elif defined ( __TASKING__ ) + +#elif defined ( _MSC_VER ) + +#else + #error Unknown compiler +#endif + + +/* Included for instrinsics definitions */ +#if defined (_MSC_VER ) +#include +#define __STATIC_FORCEINLINE static __forceinline +#define __STATIC_INLINE static __inline +#define __ALIGNED(x) __declspec(align(x)) + +#elif defined (__GNUC_PYTHON__) +#include +#define __ALIGNED(x) __attribute__((aligned(x))) +#define __STATIC_FORCEINLINE static __attribute__((inline)) +#define __STATIC_INLINE static __attribute__((inline)) +#pragma GCC diagnostic ignored "-Wunused-function" +#pragma GCC diagnostic ignored "-Wattributes" + +#else +#include "cmsis_compiler.h" +#endif + + + +#include +#include +#include +#include + + +#define F64_MAX ((float64_t)DBL_MAX) +#define F32_MAX ((float32_t)FLT_MAX) + +#if defined(ARM_MATH_FLOAT16) +#define F16_MAX ((float16_t)FLT_MAX) +#endif + +#define F64_MIN (-DBL_MAX) +#define F32_MIN (-FLT_MAX) + +#if defined(ARM_MATH_FLOAT16) +#define F16_MIN (-(float16_t)FLT_MAX) +#endif + +#define F64_ABSMAX ((float64_t)DBL_MAX) +#define F32_ABSMAX ((float32_t)FLT_MAX) + +#if defined(ARM_MATH_FLOAT16) +#define F16_ABSMAX ((float16_t)FLT_MAX) +#endif + +#define F64_ABSMIN ((float64_t)0.0) +#define F32_ABSMIN ((float32_t)0.0) + +#if defined(ARM_MATH_FLOAT16) +#define F16_ABSMIN ((float16_t)0.0) +#endif + +#define Q31_MAX ((q31_t)(0x7FFFFFFFL)) +#define Q15_MAX ((q15_t)(0x7FFF)) +#define Q7_MAX ((q7_t)(0x7F)) +#define Q31_MIN ((q31_t)(0x80000000L)) +#define Q15_MIN ((q15_t)(0x8000)) +#define Q7_MIN ((q7_t)(0x80)) + +#define Q31_ABSMAX ((q31_t)(0x7FFFFFFFL)) +#define Q15_ABSMAX ((q15_t)(0x7FFF)) +#define Q7_ABSMAX ((q7_t)(0x7F)) +#define Q31_ABSMIN ((q31_t)0) +#define Q15_ABSMIN ((q15_t)0) +#define Q7_ABSMIN ((q7_t)0) + +/* evaluate ARM DSP feature */ +#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1)) + #define ARM_MATH_DSP 1 +#endif + +#if defined(ARM_MATH_NEON) +#include +#endif + +#if defined (ARM_MATH_HELIUM) + #define ARM_MATH_MVEF + #define ARM_MATH_FLOAT16 +#endif + +#if defined (ARM_MATH_MVEF) + #define ARM_MATH_MVEI + #define ARM_MATH_FLOAT16 +#endif + +#if defined (ARM_MATH_HELIUM) || defined(ARM_MATH_MVEF) || defined(ARM_MATH_MVEI) +#include +#endif + + + /** + * @brief Macros required for reciprocal calculation in Normalized LMS + */ + +#define DELTA_Q31 ((q31_t)(0x100)) +#define DELTA_Q15 ((q15_t)0x5) +#define INDEX_MASK 0x0000003F +#ifndef PI + #define PI 3.14159265358979f +#endif + + /** + * @brief Macros required for SINE and COSINE Fast math approximations + */ + +#define FAST_MATH_TABLE_SIZE 512 +#define FAST_MATH_Q31_SHIFT (32 - 10) +#define FAST_MATH_Q15_SHIFT (16 - 10) +#define CONTROLLER_Q31_SHIFT (32 - 9) +#define TABLE_SPACING_Q31 0x400000 +#define TABLE_SPACING_Q15 0x80 + + /** + * @brief Macros required for SINE and COSINE Controller functions + */ + /* 1.31(q31) Fixed value of 2/360 */ + /* -1 to +1 is divided into 360 values so total spacing is (2/360) */ +#define INPUT_SPACING 0xB60B61 + + /** + * @brief Macros for complex numbers + */ + + /* Dimension C vector space */ + #define CMPLX_DIM 2 + + /** + * @brief Error status returned by some functions in the library. + */ + + typedef enum + { + ARM_MATH_SUCCESS = 0, /**< No error */ + ARM_MATH_ARGUMENT_ERROR = -1, /**< One or more arguments are incorrect */ + ARM_MATH_LENGTH_ERROR = -2, /**< Length of data buffer is incorrect */ + ARM_MATH_SIZE_MISMATCH = -3, /**< Size of matrices is not compatible with the operation */ + ARM_MATH_NANINF = -4, /**< Not-a-number (NaN) or infinity is generated */ + ARM_MATH_SINGULAR = -5, /**< Input matrix is singular and cannot be inverted */ + ARM_MATH_TEST_FAILURE = -6 /**< Test Failed */ + } arm_status; + + /** + * @brief 8-bit fractional data type in 1.7 format. + */ + typedef int8_t q7_t; + + /** + * @brief 16-bit fractional data type in 1.15 format. + */ + typedef int16_t q15_t; + + /** + * @brief 32-bit fractional data type in 1.31 format. + */ + typedef int32_t q31_t; + + /** + * @brief 64-bit fractional data type in 1.63 format. + */ + typedef int64_t q63_t; + + /** + * @brief 32-bit floating-point type definition. + */ + typedef float float32_t; + + /** + * @brief 64-bit floating-point type definition. + */ + typedef double float64_t; + + /** + * @brief vector types + */ +#if defined(ARM_MATH_NEON) || defined (ARM_MATH_MVEI) + /** + * @brief 64-bit fractional 128-bit vector data type in 1.63 format + */ + typedef int64x2_t q63x2_t; + + /** + * @brief 32-bit fractional 128-bit vector data type in 1.31 format. + */ + typedef int32x4_t q31x4_t; + + /** + * @brief 16-bit fractional 128-bit vector data type with 16-bit alignement in 1.15 format. + */ + typedef __ALIGNED(2) int16x8_t q15x8_t; + + /** + * @brief 8-bit fractional 128-bit vector data type with 8-bit alignement in 1.7 format. + */ + typedef __ALIGNED(1) int8x16_t q7x16_t; + + /** + * @brief 32-bit fractional 128-bit vector pair data type in 1.31 format. + */ + typedef int32x4x2_t q31x4x2_t; + + /** + * @brief 32-bit fractional 128-bit vector quadruplet data type in 1.31 format. + */ + typedef int32x4x4_t q31x4x4_t; + + /** + * @brief 16-bit fractional 128-bit vector pair data type in 1.15 format. + */ + typedef int16x8x2_t q15x8x2_t; + + /** + * @brief 16-bit fractional 128-bit vector quadruplet data type in 1.15 format. + */ + typedef int16x8x4_t q15x8x4_t; + + /** + * @brief 8-bit fractional 128-bit vector pair data type in 1.7 format. + */ + typedef int8x16x2_t q7x16x2_t; + + /** + * @brief 8-bit fractional 128-bit vector quadruplet data type in 1.7 format. + */ + typedef int8x16x4_t q7x16x4_t; + + /** + * @brief 32-bit fractional data type in 9.23 format. + */ + typedef int32_t q23_t; + + /** + * @brief 32-bit fractional 128-bit vector data type in 9.23 format. + */ + typedef int32x4_t q23x4_t; + + /** + * @brief 64-bit status 128-bit vector data type. + */ + typedef int64x2_t status64x2_t; + + /** + * @brief 32-bit status 128-bit vector data type. + */ + typedef int32x4_t status32x4_t; + + /** + * @brief 16-bit status 128-bit vector data type. + */ + typedef int16x8_t status16x8_t; + + /** + * @brief 8-bit status 128-bit vector data type. + */ + typedef int8x16_t status8x16_t; + + +#endif + +#if defined(ARM_MATH_NEON) || defined(ARM_MATH_MVEF) /* floating point vector*/ + /** + * @brief 32-bit floating-point 128-bit vector type + */ + typedef float32x4_t f32x4_t; + +#if defined(ARM_MATH_FLOAT16) + /** + * @brief 16-bit floating-point 128-bit vector data type + */ + typedef __ALIGNED(2) float16x8_t f16x8_t; +#endif + + /** + * @brief 32-bit floating-point 128-bit vector pair data type + */ + typedef float32x4x2_t f32x4x2_t; + + /** + * @brief 32-bit floating-point 128-bit vector quadruplet data type + */ + typedef float32x4x4_t f32x4x4_t; + +#if defined(ARM_MATH_FLOAT16) + /** + * @brief 16-bit floating-point 128-bit vector pair data type + */ + typedef float16x8x2_t f16x8x2_t; + + /** + * @brief 16-bit floating-point 128-bit vector quadruplet data type + */ + typedef float16x8x4_t f16x8x4_t; +#endif + + /** + * @brief 32-bit ubiquitous 128-bit vector data type + */ + typedef union _any32x4_t + { + float32x4_t f; + int32x4_t i; + } any32x4_t; + +#if defined(ARM_MATH_FLOAT16) + /** + * @brief 16-bit ubiquitous 128-bit vector data type + */ + typedef union _any16x8_t + { + float16x8_t f; + int16x8_t i; + } any16x8_t; +#endif + +#endif + +#if defined(ARM_MATH_NEON) + /** + * @brief 32-bit fractional 64-bit vector data type in 1.31 format. + */ + typedef int32x2_t q31x2_t; + + /** + * @brief 16-bit fractional 64-bit vector data type in 1.15 format. + */ + typedef __ALIGNED(2) int16x4_t q15x4_t; + + /** + * @brief 8-bit fractional 64-bit vector data type in 1.7 format. + */ + typedef __ALIGNED(1) int8x8_t q7x8_t; + + /** + * @brief 32-bit float 64-bit vector data type. + */ + typedef float32x2_t f32x2_t; + +#if defined(ARM_MATH_FLOAT16) + /** + * @brief 16-bit float 64-bit vector data type. + */ + typedef __ALIGNED(2) float16x4_t f16x4_t; +#endif + + /** + * @brief 32-bit floating-point 128-bit vector triplet data type + */ + typedef float32x4x3_t f32x4x3_t; + +#if defined(ARM_MATH_FLOAT16) + /** + * @brief 16-bit floating-point 128-bit vector triplet data type + */ + typedef float16x8x3_t f16x8x3_t; +#endif + + /** + * @brief 32-bit fractional 128-bit vector triplet data type in 1.31 format + */ + typedef int32x4x3_t q31x4x3_t; + + /** + * @brief 16-bit fractional 128-bit vector triplet data type in 1.15 format + */ + typedef int16x8x3_t q15x8x3_t; + + /** + * @brief 8-bit fractional 128-bit vector triplet data type in 1.7 format + */ + typedef int8x16x3_t q7x16x3_t; + + /** + * @brief 32-bit floating-point 64-bit vector pair data type + */ + typedef float32x2x2_t f32x2x2_t; + + /** + * @brief 32-bit floating-point 64-bit vector triplet data type + */ + typedef float32x2x3_t f32x2x3_t; + + /** + * @brief 32-bit floating-point 64-bit vector quadruplet data type + */ + typedef float32x2x4_t f32x2x4_t; + +#if defined(ARM_MATH_FLOAT16) + /** + * @brief 16-bit floating-point 64-bit vector pair data type + */ + typedef float16x4x2_t f16x4x2_t; + + /** + * @brief 16-bit floating-point 64-bit vector triplet data type + */ + typedef float16x4x3_t f16x4x3_t; + + /** + * @brief 16-bit floating-point 64-bit vector quadruplet data type + */ + typedef float16x4x4_t f16x4x4_t; +#endif + + /** + * @brief 32-bit fractional 64-bit vector pair data type in 1.31 format + */ + typedef int32x2x2_t q31x2x2_t; + + /** + * @brief 32-bit fractional 64-bit vector triplet data type in 1.31 format + */ + typedef int32x2x3_t q31x2x3_t; + + /** + * @brief 32-bit fractional 64-bit vector quadruplet data type in 1.31 format + */ + typedef int32x4x3_t q31x2x4_t; + + /** + * @brief 16-bit fractional 64-bit vector pair data type in 1.15 format + */ + typedef int16x4x2_t q15x4x2_t; + + /** + * @brief 16-bit fractional 64-bit vector triplet data type in 1.15 format + */ + typedef int16x4x2_t q15x4x3_t; + + /** + * @brief 16-bit fractional 64-bit vector quadruplet data type in 1.15 format + */ + typedef int16x4x3_t q15x4x4_t; + + /** + * @brief 8-bit fractional 64-bit vector pair data type in 1.7 format + */ + typedef int8x8x2_t q7x8x2_t; + + /** + * @brief 8-bit fractional 64-bit vector triplet data type in 1.7 format + */ + typedef int8x8x3_t q7x8x3_t; + + /** + * @brief 8-bit fractional 64-bit vector quadruplet data type in 1.7 format + */ + typedef int8x8x4_t q7x8x4_t; + + /** + * @brief 32-bit ubiquitous 64-bit vector data type + */ + typedef union _any32x2_t + { + float32x2_t f; + int32x2_t i; + } any32x2_t; + +#if defined(ARM_MATH_FLOAT16) + /** + * @brief 16-bit ubiquitous 64-bit vector data type + */ + typedef union _any16x4_t + { + float16x4_t f; + int16x4_t i; + } any16x4_t; +#endif + + /** + * @brief 32-bit status 64-bit vector data type. + */ + typedef int32x4_t status32x2_t; + + /** + * @brief 16-bit status 64-bit vector data type. + */ + typedef int16x8_t status16x4_t; + + /** + * @brief 8-bit status 64-bit vector data type. + */ + typedef int8x16_t status8x8_t; + +#endif + + + +/** + @brief definition to read/write two 16 bit values. + @deprecated + */ +#if defined ( __CC_ARM ) + #define __SIMD32_TYPE int32_t __packed +#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 ) + #define __SIMD32_TYPE int32_t +#elif defined ( __GNUC__ ) + #define __SIMD32_TYPE int32_t +#elif defined ( __ICCARM__ ) + #define __SIMD32_TYPE int32_t __packed +#elif defined ( __TI_ARM__ ) + #define __SIMD32_TYPE int32_t +#elif defined ( __CSMC__ ) + #define __SIMD32_TYPE int32_t +#elif defined ( __TASKING__ ) + #define __SIMD32_TYPE __un(aligned) int32_t +#elif defined(_MSC_VER ) + #define __SIMD32_TYPE int32_t +#else + #error Unknown compiler +#endif + +#define __SIMD32(addr) (*(__SIMD32_TYPE **) & (addr)) +#define __SIMD32_CONST(addr) ( (__SIMD32_TYPE * ) (addr)) +#define _SIMD32_OFFSET(addr) (*(__SIMD32_TYPE * ) (addr)) +#define __SIMD64(addr) (*( int64_t **) & (addr)) + +#define STEP(x) (x) <= 0 ? 0 : 1 +#define SQ(x) ((x) * (x)) + +/* SIMD replacement */ + + +/** + @brief Read 2 Q15 from Q15 pointer. + @param[in] pQ15 points to input value + @return Q31 value + */ +__STATIC_FORCEINLINE q31_t read_q15x2 ( + q15_t * pQ15) +{ + q31_t val; + +#ifdef __ARM_FEATURE_UNALIGNED + memcpy (&val, pQ15, 4); +#else + val = (pQ15[1] << 16) | (pQ15[0] & 0x0FFFF) ; +#endif + + return (val); +} + +/** + @brief Read 2 Q15 from Q15 pointer and increment pointer afterwards. + @param[in] pQ15 points to input value + @return Q31 value + */ +__STATIC_FORCEINLINE q31_t read_q15x2_ia ( + q15_t ** pQ15) +{ + q31_t val; + +#ifdef __ARM_FEATURE_UNALIGNED + memcpy (&val, *pQ15, 4); +#else + val = ((*pQ15)[1] << 16) | ((*pQ15)[0] & 0x0FFFF); +#endif + + *pQ15 += 2; + return (val); +} + +/** + @brief Read 2 Q15 from Q15 pointer and decrement pointer afterwards. + @param[in] pQ15 points to input value + @return Q31 value + */ +__STATIC_FORCEINLINE q31_t read_q15x2_da ( + q15_t ** pQ15) +{ + q31_t val; + +#ifdef __ARM_FEATURE_UNALIGNED + memcpy (&val, *pQ15, 4); +#else + val = ((*pQ15)[1] << 16) | ((*pQ15)[0] & 0x0FFFF); +#endif + + *pQ15 -= 2; + return (val); +} + +/** + @brief Write 2 Q15 to Q15 pointer and increment pointer afterwards. + @param[in] pQ15 points to input value + @param[in] value Q31 value + @return none + */ +__STATIC_FORCEINLINE void write_q15x2_ia ( + q15_t ** pQ15, + q31_t value) +{ + q31_t val = value; +#ifdef __ARM_FEATURE_UNALIGNED + memcpy (*pQ15, &val, 4); +#else + (*pQ15)[0] = (val & 0x0FFFF); + (*pQ15)[1] = (val >> 16) & 0x0FFFF; +#endif + + *pQ15 += 2; +} + +/** + @brief Write 2 Q15 to Q15 pointer. + @param[in] pQ15 points to input value + @param[in] value Q31 value + @return none + */ +__STATIC_FORCEINLINE void write_q15x2 ( + q15_t * pQ15, + q31_t value) +{ + q31_t val = value; + +#ifdef __ARM_FEATURE_UNALIGNED + memcpy (pQ15, &val, 4); +#else + pQ15[0] = val & 0x0FFFF; + pQ15[1] = val >> 16; +#endif +} + + +/** + @brief Read 4 Q7 from Q7 pointer and increment pointer afterwards. + @param[in] pQ7 points to input value + @return Q31 value + */ +__STATIC_FORCEINLINE q31_t read_q7x4_ia ( + q7_t ** pQ7) +{ + q31_t val; + + +#ifdef __ARM_FEATURE_UNALIGNED + memcpy (&val, *pQ7, 4); +#else + val =(((*pQ7)[3] & 0x0FF) << 24) | (((*pQ7)[2] & 0x0FF) << 16) | (((*pQ7)[1] & 0x0FF) << 8) | ((*pQ7)[0] & 0x0FF); +#endif + + *pQ7 += 4; + + return (val); +} + +/** + @brief Read 4 Q7 from Q7 pointer and decrement pointer afterwards. + @param[in] pQ7 points to input value + @return Q31 value + */ +__STATIC_FORCEINLINE q31_t read_q7x4_da ( + q7_t ** pQ7) +{ + q31_t val; +#ifdef __ARM_FEATURE_UNALIGNED + memcpy (&val, *pQ7, 4); +#else + val = ((((*pQ7)[3]) & 0x0FF) << 24) | ((((*pQ7)[2]) & 0x0FF) << 16) | ((((*pQ7)[1]) & 0x0FF) << 8) | ((*pQ7)[0] & 0x0FF); +#endif + *pQ7 -= 4; + + return (val); +} + +/** + @brief Write 4 Q7 to Q7 pointer and increment pointer afterwards. + @param[in] pQ7 points to input value + @param[in] value Q31 value + @return none + */ +__STATIC_FORCEINLINE void write_q7x4_ia ( + q7_t ** pQ7, + q31_t value) +{ + q31_t val = value; +#ifdef __ARM_FEATURE_UNALIGNED + memcpy (*pQ7, &val, 4); +#else + (*pQ7)[0] = val & 0x0FF; + (*pQ7)[1] = (val >> 8) & 0x0FF; + (*pQ7)[2] = (val >> 16) & 0x0FF; + (*pQ7)[3] = (val >> 24) & 0x0FF; + +#endif + *pQ7 += 4; +} + +/* + +Normally those kind of definitions are in a compiler file +in Core or Core_A. + +But for MSVC compiler it is a bit special. The goal is very specific +to CMSIS-DSP and only to allow the use of this library from other +systems like Python or Matlab. + +MSVC is not going to be used to cross-compile to ARM. So, having a MSVC +compiler file in Core or Core_A would not make sense. + +*/ +#if defined ( _MSC_VER ) || defined(__GNUC_PYTHON__) + __STATIC_FORCEINLINE uint8_t __CLZ(uint32_t data) + { + if (data == 0U) { return 32U; } + + uint32_t count = 0U; + uint32_t mask = 0x80000000U; + + while ((data & mask) == 0U) + { + count += 1U; + mask = mask >> 1U; + } + return count; + } + + __STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat) + { + if ((sat >= 1U) && (sat <= 32U)) + { + const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U); + const int32_t min = -1 - max ; + if (val > max) + { + return max; + } + else if (val < min) + { + return min; + } + } + return val; + } + + __STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat) + { + if (sat <= 31U) + { + const uint32_t max = ((1U << sat) - 1U); + if (val > (int32_t)max) + { + return max; + } + else if (val < 0) + { + return 0U; + } + } + return (uint32_t)val; + } +#endif + +#ifndef ARM_MATH_DSP + /** + * @brief definition to pack two 16 bit values. + */ + #define __PKHBT(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) << 0) & (int32_t)0x0000FFFF) | \ + (((int32_t)(ARG2) << ARG3) & (int32_t)0xFFFF0000) ) + #define __PKHTB(ARG1, ARG2, ARG3) ( (((int32_t)(ARG1) << 0) & (int32_t)0xFFFF0000) | \ + (((int32_t)(ARG2) >> ARG3) & (int32_t)0x0000FFFF) ) +#endif + + /** + * @brief definition to pack four 8 bit values. + */ +#ifndef ARM_MATH_BIG_ENDIAN + #define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v0) << 0) & (int32_t)0x000000FF) | \ + (((int32_t)(v1) << 8) & (int32_t)0x0000FF00) | \ + (((int32_t)(v2) << 16) & (int32_t)0x00FF0000) | \ + (((int32_t)(v3) << 24) & (int32_t)0xFF000000) ) +#else + #define __PACKq7(v0,v1,v2,v3) ( (((int32_t)(v3) << 0) & (int32_t)0x000000FF) | \ + (((int32_t)(v2) << 8) & (int32_t)0x0000FF00) | \ + (((int32_t)(v1) << 16) & (int32_t)0x00FF0000) | \ + (((int32_t)(v0) << 24) & (int32_t)0xFF000000) ) +#endif + + + /** + * @brief Clips Q63 to Q31 values. + */ + __STATIC_FORCEINLINE q31_t clip_q63_to_q31( + q63_t x) + { + return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ? + ((0x7FFFFFFF ^ ((q31_t) (x >> 63)))) : (q31_t) x; + } + + /** + * @brief Clips Q63 to Q15 values. + */ + __STATIC_FORCEINLINE q15_t clip_q63_to_q15( + q63_t x) + { + return ((q31_t) (x >> 32) != ((q31_t) x >> 31)) ? + ((0x7FFF ^ ((q15_t) (x >> 63)))) : (q15_t) (x >> 15); + } + + /** + * @brief Clips Q31 to Q7 values. + */ + __STATIC_FORCEINLINE q7_t clip_q31_to_q7( + q31_t x) + { + return ((q31_t) (x >> 24) != ((q31_t) x >> 23)) ? + ((0x7F ^ ((q7_t) (x >> 31)))) : (q7_t) x; + } + + /** + * @brief Clips Q31 to Q15 values. + */ + __STATIC_FORCEINLINE q15_t clip_q31_to_q15( + q31_t x) + { + return ((q31_t) (x >> 16) != ((q31_t) x >> 15)) ? + ((0x7FFF ^ ((q15_t) (x >> 31)))) : (q15_t) x; + } + + /** + * @brief Multiplies 32 X 64 and returns 32 bit result in 2.30 format. + */ + __STATIC_FORCEINLINE q63_t mult32x64( + q63_t x, + q31_t y) + { + return ((((q63_t) (x & 0x00000000FFFFFFFF) * y) >> 32) + + (((q63_t) (x >> 32) * y) ) ); + } + + /** + * @brief Function to Calculates 1/in (reciprocal) value of Q31 Data type. + */ + __STATIC_FORCEINLINE uint32_t arm_recip_q31( + q31_t in, + q31_t * dst, + const q31_t * pRecipTable) + { + q31_t out; + uint32_t tempVal; + uint32_t index, i; + uint32_t signBits; + + if (in > 0) + { + signBits = ((uint32_t) (__CLZ( in) - 1)); + } + else + { + signBits = ((uint32_t) (__CLZ(-in) - 1)); + } + + /* Convert input sample to 1.31 format */ + in = (in << signBits); + + /* calculation of index for initial approximated Val */ + index = (uint32_t)(in >> 24); + index = (index & INDEX_MASK); + + /* 1.31 with exp 1 */ + out = pRecipTable[index]; + + /* calculation of reciprocal value */ + /* running approximation for two iterations */ + for (i = 0U; i < 2U; i++) + { + tempVal = (uint32_t) (((q63_t) in * out) >> 31); + tempVal = 0x7FFFFFFFu - tempVal; + /* 1.31 with exp 1 */ + /* out = (q31_t) (((q63_t) out * tempVal) >> 30); */ + out = clip_q63_to_q31(((q63_t) out * tempVal) >> 30); + } + + /* write output */ + *dst = out; + + /* return num of signbits of out = 1/in value */ + return (signBits + 1U); + } + + + /** + * @brief Function to Calculates 1/in (reciprocal) value of Q15 Data type. + */ + __STATIC_FORCEINLINE uint32_t arm_recip_q15( + q15_t in, + q15_t * dst, + const q15_t * pRecipTable) + { + q15_t out = 0; + uint32_t tempVal = 0; + uint32_t index = 0, i = 0; + uint32_t signBits = 0; + + if (in > 0) + { + signBits = ((uint32_t)(__CLZ( in) - 17)); + } + else + { + signBits = ((uint32_t)(__CLZ(-in) - 17)); + } + + /* Convert input sample to 1.15 format */ + in = (in << signBits); + + /* calculation of index for initial approximated Val */ + index = (uint32_t)(in >> 8); + index = (index & INDEX_MASK); + + /* 1.15 with exp 1 */ + out = pRecipTable[index]; + + /* calculation of reciprocal value */ + /* running approximation for two iterations */ + for (i = 0U; i < 2U; i++) + { + tempVal = (uint32_t) (((q31_t) in * out) >> 15); + tempVal = 0x7FFFu - tempVal; + /* 1.15 with exp 1 */ + out = (q15_t) (((q31_t) out * tempVal) >> 14); + /* out = clip_q31_to_q15(((q31_t) out * tempVal) >> 14); */ + } + + /* write output */ + *dst = out; + + /* return num of signbits of out = 1/in value */ + return (signBits + 1); + } + +/** + * @brief Integer exponentiation + * @param[in] x value + * @param[in] nb integer exponent >= 1 + * @return x^nb + * + */ +__STATIC_INLINE float32_t arm_exponent_f32(float32_t x, int32_t nb) +{ + float32_t r = x; + nb --; + while(nb > 0) + { + r = r * x; + nb--; + } + return(r); +} + +/** + * @brief 64-bit to 32-bit unsigned normalization + * @param[in] in is input unsigned long long value + * @param[out] normalized is the 32-bit normalized value + * @param[out] norm is norm scale + */ +__STATIC_INLINE void arm_norm_64_to_32u(uint64_t in, int32_t * normalized, int32_t *norm) +{ + int32_t n1; + int32_t hi = (int32_t) (in >> 32); + int32_t lo = (int32_t) ((in << 32) >> 32); + + n1 = __CLZ(hi) - 32; + if (!n1) + { + /* + * input fits in 32-bit + */ + n1 = __CLZ(lo); + if (!n1) + { + /* + * MSB set, need to scale down by 1 + */ + *norm = -1; + *normalized = (((uint32_t) lo) >> 1); + } else + { + if (n1 == 32) + { + /* + * input is zero + */ + *norm = 0; + *normalized = 0; + } else + { + /* + * 32-bit normalization + */ + *norm = n1 - 1; + *normalized = lo << *norm; + } + } + } else + { + /* + * input fits in 64-bit + */ + n1 = 1 - n1; + *norm = -n1; + /* + * 64 bit normalization + */ + *normalized = (((uint32_t) lo) >> n1) | (hi << (32 - n1)); + } +} + +__STATIC_INLINE q31_t arm_div_q63_to_q31(q63_t num, q31_t den) +{ + q31_t result; + uint64_t absNum; + int32_t normalized; + int32_t norm; + + /* + * if sum fits in 32bits + * avoid costly 64-bit division + */ + absNum = num > 0 ? num : -num; + arm_norm_64_to_32u(absNum, &normalized, &norm); + if (norm > 0) + /* + * 32-bit division + */ + result = (q31_t) num / den; + else + /* + * 64-bit division + */ + result = (q31_t) (num / den); + + return result; +} + + +/* + * @brief C custom defined intrinsic functions + */ +#if !defined (ARM_MATH_DSP) + + /* + * @brief C custom defined QADD8 + */ + __STATIC_FORCEINLINE uint32_t __QADD8( + uint32_t x, + uint32_t y) + { + q31_t r, s, t, u; + + r = __SSAT(((((q31_t)x << 24) >> 24) + (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF; + s = __SSAT(((((q31_t)x << 16) >> 24) + (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF; + t = __SSAT(((((q31_t)x << 8) >> 24) + (((q31_t)y << 8) >> 24)), 8) & (int32_t)0x000000FF; + u = __SSAT(((((q31_t)x ) >> 24) + (((q31_t)y ) >> 24)), 8) & (int32_t)0x000000FF; + + return ((uint32_t)((u << 24) | (t << 16) | (s << 8) | (r ))); + } + + + /* + * @brief C custom defined QSUB8 + */ + __STATIC_FORCEINLINE uint32_t __QSUB8( + uint32_t x, + uint32_t y) + { + q31_t r, s, t, u; + + r = __SSAT(((((q31_t)x << 24) >> 24) - (((q31_t)y << 24) >> 24)), 8) & (int32_t)0x000000FF; + s = __SSAT(((((q31_t)x << 16) >> 24) - (((q31_t)y << 16) >> 24)), 8) & (int32_t)0x000000FF; + t = __SSAT(((((q31_t)x << 8) >> 24) - (((q31_t)y << 8) >> 24)), 8) & (int32_t)0x000000FF; + u = __SSAT(((((q31_t)x ) >> 24) - (((q31_t)y ) >> 24)), 8) & (int32_t)0x000000FF; + + return ((uint32_t)((u << 24) | (t << 16) | (s << 8) | (r ))); + } + + + /* + * @brief C custom defined QADD16 + */ + __STATIC_FORCEINLINE uint32_t __QADD16( + uint32_t x, + uint32_t y) + { +/* q31_t r, s; without initialisation 'arm_offset_q15 test' fails but 'intrinsic' tests pass! for armCC */ + q31_t r = 0, s = 0; + + r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; + s = __SSAT(((((q31_t)x ) >> 16) + (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SHADD16 + */ + __STATIC_FORCEINLINE uint32_t __SHADD16( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = (((((q31_t)x << 16) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; + s = (((((q31_t)x ) >> 16) + (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined QSUB16 + */ + __STATIC_FORCEINLINE uint32_t __QSUB16( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; + s = __SSAT(((((q31_t)x ) >> 16) - (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SHSUB16 + */ + __STATIC_FORCEINLINE uint32_t __SHSUB16( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = (((((q31_t)x << 16) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; + s = (((((q31_t)x ) >> 16) - (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined QASX + */ + __STATIC_FORCEINLINE uint32_t __QASX( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = __SSAT(((((q31_t)x << 16) >> 16) - (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; + s = __SSAT(((((q31_t)x ) >> 16) + (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SHASX + */ + __STATIC_FORCEINLINE uint32_t __SHASX( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = (((((q31_t)x << 16) >> 16) - (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; + s = (((((q31_t)x ) >> 16) + (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined QSAX + */ + __STATIC_FORCEINLINE uint32_t __QSAX( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = __SSAT(((((q31_t)x << 16) >> 16) + (((q31_t)y ) >> 16)), 16) & (int32_t)0x0000FFFF; + s = __SSAT(((((q31_t)x ) >> 16) - (((q31_t)y << 16) >> 16)), 16) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SHSAX + */ + __STATIC_FORCEINLINE uint32_t __SHSAX( + uint32_t x, + uint32_t y) + { + q31_t r, s; + + r = (((((q31_t)x << 16) >> 16) + (((q31_t)y ) >> 16)) >> 1) & (int32_t)0x0000FFFF; + s = (((((q31_t)x ) >> 16) - (((q31_t)y << 16) >> 16)) >> 1) & (int32_t)0x0000FFFF; + + return ((uint32_t)((s << 16) | (r ))); + } + + + /* + * @brief C custom defined SMUSDX + */ + __STATIC_FORCEINLINE uint32_t __SMUSDX( + uint32_t x, + uint32_t y) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) - + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) )); + } + + /* + * @brief C custom defined SMUADX + */ + __STATIC_FORCEINLINE uint32_t __SMUADX( + uint32_t x, + uint32_t y) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) )); + } + + + /* + * @brief C custom defined QADD + */ + __STATIC_FORCEINLINE int32_t __QADD( + int32_t x, + int32_t y) + { + return ((int32_t)(clip_q63_to_q31((q63_t)x + (q31_t)y))); + } + + + /* + * @brief C custom defined QSUB + */ + __STATIC_FORCEINLINE int32_t __QSUB( + int32_t x, + int32_t y) + { + return ((int32_t)(clip_q63_to_q31((q63_t)x - (q31_t)y))); + } + + + /* + * @brief C custom defined SMLAD + */ + __STATIC_FORCEINLINE uint32_t __SMLAD( + uint32_t x, + uint32_t y, + uint32_t sum) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) + + ( ((q31_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMLADX + */ + __STATIC_FORCEINLINE uint32_t __SMLADX( + uint32_t x, + uint32_t y, + uint32_t sum) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) + + ( ((q31_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMLSDX + */ + __STATIC_FORCEINLINE uint32_t __SMLSDX( + uint32_t x, + uint32_t y, + uint32_t sum) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) - + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) + + ( ((q31_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMLALD + */ + __STATIC_FORCEINLINE uint64_t __SMLALD( + uint32_t x, + uint32_t y, + uint64_t sum) + { +/* return (sum + ((q15_t) (x >> 16) * (q15_t) (y >> 16)) + ((q15_t) x * (q15_t) y)); */ + return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) + + ( ((q63_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMLALDX + */ + __STATIC_FORCEINLINE uint64_t __SMLALDX( + uint32_t x, + uint32_t y, + uint64_t sum) + { +/* return (sum + ((q15_t) (x >> 16) * (q15_t) y)) + ((q15_t) x * (q15_t) (y >> 16)); */ + return ((uint64_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y ) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y << 16) >> 16)) + + ( ((q63_t)sum ) ) )); + } + + + /* + * @brief C custom defined SMUAD + */ + __STATIC_FORCEINLINE uint32_t __SMUAD( + uint32_t x, + uint32_t y) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) + + ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) )); + } + + + /* + * @brief C custom defined SMUSD + */ + __STATIC_FORCEINLINE uint32_t __SMUSD( + uint32_t x, + uint32_t y) + { + return ((uint32_t)(((((q31_t)x << 16) >> 16) * (((q31_t)y << 16) >> 16)) - + ((((q31_t)x ) >> 16) * (((q31_t)y ) >> 16)) )); + } + + + /* + * @brief C custom defined SXTB16 + */ + __STATIC_FORCEINLINE uint32_t __SXTB16( + uint32_t x) + { + return ((uint32_t)(((((q31_t)x << 24) >> 24) & (q31_t)0x0000FFFF) | + ((((q31_t)x << 8) >> 8) & (q31_t)0xFFFF0000) )); + } + + /* + * @brief C custom defined SMMLA + */ + __STATIC_FORCEINLINE int32_t __SMMLA( + int32_t x, + int32_t y, + int32_t sum) + { + return (sum + (int32_t) (((int64_t) x * y) >> 32)); + } + +#endif /* !defined (ARM_MATH_DSP) */ + + + /** + * @brief Instance structure for the Q7 FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + q7_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + const q7_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + } arm_fir_instance_q7; + + /** + * @brief Instance structure for the Q15 FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + const q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + } arm_fir_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + const q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + } arm_fir_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of filter coefficients in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + const float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + } arm_fir_instance_f32; + + /** + * @brief Processing function for the Q7 FIR filter. + * @param[in] S points to an instance of the Q7 FIR filter structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_q7( + const arm_fir_instance_q7 * S, + const q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q7 FIR filter. + * @param[in,out] S points to an instance of the Q7 FIR structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of samples that are processed. + */ + void arm_fir_init_q7( + arm_fir_instance_q7 * S, + uint16_t numTaps, + const q7_t * pCoeffs, + q7_t * pState, + uint32_t blockSize); + + /** + * @brief Processing function for the Q15 FIR filter. + * @param[in] S points to an instance of the Q15 FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_q15( + const arm_fir_instance_q15 * S, + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Processing function for the fast Q15 FIR filter (fast version). + * @param[in] S points to an instance of the Q15 FIR filter structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_fast_q15( + const arm_fir_instance_q15 * S, + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q15 FIR filter. + * @param[in,out] S points to an instance of the Q15 FIR filter structure. + * @param[in] numTaps Number of filter coefficients in the filter. Must be even and greater than or equal to 4. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of samples that are processed at a time. + * @return The function returns either + * ARM_MATH_SUCCESS if initialization was successful or + * ARM_MATH_ARGUMENT_ERROR if numTaps is not a supported value. + */ + arm_status arm_fir_init_q15( + arm_fir_instance_q15 * S, + uint16_t numTaps, + const q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize); + + /** + * @brief Processing function for the Q31 FIR filter. + * @param[in] S points to an instance of the Q31 FIR filter structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_q31( + const arm_fir_instance_q31 * S, + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Processing function for the fast Q31 FIR filter (fast version). + * @param[in] S points to an instance of the Q31 FIR filter structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_fast_q31( + const arm_fir_instance_q31 * S, + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q31 FIR filter. + * @param[in,out] S points to an instance of the Q31 FIR structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of samples that are processed at a time. + */ + void arm_fir_init_q31( + arm_fir_instance_q31 * S, + uint16_t numTaps, + const q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize); + + /** + * @brief Processing function for the floating-point FIR filter. + * @param[in] S points to an instance of the floating-point FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_f32( + const arm_fir_instance_f32 * S, + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the floating-point FIR filter. + * @param[in,out] S points to an instance of the floating-point FIR filter structure. + * @param[in] numTaps Number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of samples that are processed at a time. + */ + void arm_fir_init_f32( + arm_fir_instance_f32 * S, + uint16_t numTaps, + const float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize); + + /** + * @brief Instance structure for the Q15 Biquad cascade filter. + */ + typedef struct + { + int8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + q15_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ + const q15_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ + int8_t postShift; /**< Additional shift, in bits, applied to each output sample. */ + } arm_biquad_casd_df1_inst_q15; + + /** + * @brief Instance structure for the Q31 Biquad cascade filter. + */ + typedef struct + { + uint32_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + q31_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ + const q31_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ + uint8_t postShift; /**< Additional shift, in bits, applied to each output sample. */ + } arm_biquad_casd_df1_inst_q31; + + /** + * @brief Instance structure for the floating-point Biquad cascade filter. + */ + typedef struct + { + uint32_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float32_t *pState; /**< Points to the array of state coefficients. The array is of length 4*numStages. */ + const float32_t *pCoeffs; /**< Points to the array of coefficients. The array is of length 5*numStages. */ + } arm_biquad_casd_df1_inst_f32; + +#if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE) + /** + * @brief Instance structure for the modified Biquad coefs required by vectorized code. + */ + typedef struct + { + float32_t coeffs[8][4]; /**< Points to the array of modified coefficients. The array is of length 32. There is one per stage */ + } arm_biquad_mod_coef_f32; +#endif + + /** + * @brief Processing function for the Q15 Biquad cascade filter. + * @param[in] S points to an instance of the Q15 Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_q15( + const arm_biquad_casd_df1_inst_q15 * S, + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q15 Biquad cascade filter. + * @param[in,out] S points to an instance of the Q15 Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format + */ + void arm_biquad_cascade_df1_init_q15( + arm_biquad_casd_df1_inst_q15 * S, + uint8_t numStages, + const q15_t * pCoeffs, + q15_t * pState, + int8_t postShift); + + /** + * @brief Fast but less precise processing function for the Q15 Biquad cascade filter for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q15 Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_fast_q15( + const arm_biquad_casd_df1_inst_q15 * S, + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + /** + * @brief Processing function for the Q31 Biquad cascade filter + * @param[in] S points to an instance of the Q31 Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_q31( + const arm_biquad_casd_df1_inst_q31 * S, + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Fast but less precise processing function for the Q31 Biquad cascade filter for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q31 Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_fast_q31( + const arm_biquad_casd_df1_inst_q31 * S, + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the Q31 Biquad cascade filter. + * @param[in,out] S points to an instance of the Q31 Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] postShift Shift to be applied to the output. Varies according to the coefficients format + */ + void arm_biquad_cascade_df1_init_q31( + arm_biquad_casd_df1_inst_q31 * S, + uint8_t numStages, + const q31_t * pCoeffs, + q31_t * pState, + int8_t postShift); + + /** + * @brief Processing function for the floating-point Biquad cascade filter. + * @param[in] S points to an instance of the floating-point Biquad cascade structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df1_f32( + const arm_biquad_casd_df1_inst_f32 * S, + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the floating-point Biquad cascade filter. + * @param[in,out] S points to an instance of the floating-point Biquad cascade structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pCoeffsMod points to the modified filter coefficients (only MVE version). + * @param[in] pState points to the state buffer. + */ +#if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE) + void arm_biquad_cascade_df1_mve_init_f32( + arm_biquad_casd_df1_inst_f32 * S, + uint8_t numStages, + const float32_t * pCoeffs, + arm_biquad_mod_coef_f32 * pCoeffsMod, + float32_t * pState); +#endif + + void arm_biquad_cascade_df1_init_f32( + arm_biquad_casd_df1_inst_f32 * S, + uint8_t numStages, + const float32_t * pCoeffs, + float32_t * pState); + + + /** + * @brief Compute the logical bitwise AND of two fixed-point vectors. + * @param[in] pSrcA points to input vector A + * @param[in] pSrcB points to input vector B + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_and_u16( + const uint16_t * pSrcA, + const uint16_t * pSrcB, + uint16_t * pDst, + uint32_t blockSize); + + /** + * @brief Compute the logical bitwise AND of two fixed-point vectors. + * @param[in] pSrcA points to input vector A + * @param[in] pSrcB points to input vector B + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_and_u32( + const uint32_t * pSrcA, + const uint32_t * pSrcB, + uint32_t * pDst, + uint32_t blockSize); + + /** + * @brief Compute the logical bitwise AND of two fixed-point vectors. + * @param[in] pSrcA points to input vector A + * @param[in] pSrcB points to input vector B + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_and_u8( + const uint8_t * pSrcA, + const uint8_t * pSrcB, + uint8_t * pDst, + uint32_t blockSize); + + /** + * @brief Compute the logical bitwise OR of two fixed-point vectors. + * @param[in] pSrcA points to input vector A + * @param[in] pSrcB points to input vector B + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_or_u16( + const uint16_t * pSrcA, + const uint16_t * pSrcB, + uint16_t * pDst, + uint32_t blockSize); + + /** + * @brief Compute the logical bitwise OR of two fixed-point vectors. + * @param[in] pSrcA points to input vector A + * @param[in] pSrcB points to input vector B + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_or_u32( + const uint32_t * pSrcA, + const uint32_t * pSrcB, + uint32_t * pDst, + uint32_t blockSize); + + /** + * @brief Compute the logical bitwise OR of two fixed-point vectors. + * @param[in] pSrcA points to input vector A + * @param[in] pSrcB points to input vector B + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_or_u8( + const uint8_t * pSrcA, + const uint8_t * pSrcB, + uint8_t * pDst, + uint32_t blockSize); + + /** + * @brief Compute the logical bitwise NOT of a fixed-point vector. + * @param[in] pSrc points to input vector + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_not_u16( + const uint16_t * pSrc, + uint16_t * pDst, + uint32_t blockSize); + + /** + * @brief Compute the logical bitwise NOT of a fixed-point vector. + * @param[in] pSrc points to input vector + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_not_u32( + const uint32_t * pSrc, + uint32_t * pDst, + uint32_t blockSize); + + /** + * @brief Compute the logical bitwise NOT of a fixed-point vector. + * @param[in] pSrc points to input vector + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_not_u8( + const uint8_t * pSrc, + uint8_t * pDst, + uint32_t blockSize); + +/** + * @brief Compute the logical bitwise XOR of two fixed-point vectors. + * @param[in] pSrcA points to input vector A + * @param[in] pSrcB points to input vector B + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_xor_u16( + const uint16_t * pSrcA, + const uint16_t * pSrcB, + uint16_t * pDst, + uint32_t blockSize); + + /** + * @brief Compute the logical bitwise XOR of two fixed-point vectors. + * @param[in] pSrcA points to input vector A + * @param[in] pSrcB points to input vector B + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_xor_u32( + const uint32_t * pSrcA, + const uint32_t * pSrcB, + uint32_t * pDst, + uint32_t blockSize); + + /** + * @brief Compute the logical bitwise XOR of two fixed-point vectors. + * @param[in] pSrcA points to input vector A + * @param[in] pSrcB points to input vector B + * @param[out] pDst points to output vector + * @param[in] blockSize number of samples in each vector + * @return none + */ + void arm_xor_u8( + const uint8_t * pSrcA, + const uint8_t * pSrcB, + uint8_t * pDst, + uint32_t blockSize); + + /** + * @brief Struct for specifying sorting algorithm + */ + typedef enum + { + ARM_SORT_BITONIC = 0, + /**< Bitonic sort */ + ARM_SORT_BUBBLE = 1, + /**< Bubble sort */ + ARM_SORT_HEAP = 2, + /**< Heap sort */ + ARM_SORT_INSERTION = 3, + /**< Insertion sort */ + ARM_SORT_QUICK = 4, + /**< Quick sort */ + ARM_SORT_SELECTION = 5 + /**< Selection sort */ + } arm_sort_alg; + + /** + * @brief Struct for specifying sorting algorithm + */ + typedef enum + { + ARM_SORT_DESCENDING = 0, + /**< Descending order (9 to 0) */ + ARM_SORT_ASCENDING = 1 + /**< Ascending order (0 to 9) */ + } arm_sort_dir; + + /** + * @brief Instance structure for the sorting algorithms. + */ + typedef struct + { + arm_sort_alg alg; /**< Sorting algorithm selected */ + arm_sort_dir dir; /**< Sorting order (direction) */ + } arm_sort_instance_f32; + + /** + * @param[in] S points to an instance of the sorting structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_sort_f32( + const arm_sort_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @param[in,out] S points to an instance of the sorting structure. + * @param[in] alg Selected algorithm. + * @param[in] dir Sorting order. + */ + void arm_sort_init_f32( + arm_sort_instance_f32 * S, + arm_sort_alg alg, + arm_sort_dir dir); + + /** + * @brief Instance structure for the sorting algorithms. + */ + typedef struct + { + arm_sort_dir dir; /**< Sorting order (direction) */ + float32_t * buffer; /**< Working buffer */ + } arm_merge_sort_instance_f32; + + /** + * @param[in] S points to an instance of the sorting structure. + * @param[in,out] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_merge_sort_f32( + const arm_merge_sort_instance_f32 * S, + float32_t *pSrc, + float32_t *pDst, + uint32_t blockSize); + + /** + * @param[in,out] S points to an instance of the sorting structure. + * @param[in] dir Sorting order. + * @param[in] buffer Working buffer. + */ + void arm_merge_sort_init_f32( + arm_merge_sort_instance_f32 * S, + arm_sort_dir dir, + float32_t * buffer); + + /** + * @brief Struct for specifying cubic spline type + */ + typedef enum + { + ARM_SPLINE_NATURAL = 0, /**< Natural spline */ + ARM_SPLINE_PARABOLIC_RUNOUT = 1 /**< Parabolic runout spline */ + } arm_spline_type; + + /** + * @brief Instance structure for the floating-point cubic spline interpolation. + */ + typedef struct + { + arm_spline_type type; /**< Type (boundary conditions) */ + const float32_t * x; /**< x values */ + const float32_t * y; /**< y values */ + uint32_t n_x; /**< Number of known data points */ + float32_t * coeffs; /**< Coefficients buffer (b,c, and d) */ + } arm_spline_instance_f32; + + /** + * @brief Processing function for the floating-point cubic spline interpolation. + * @param[in] S points to an instance of the floating-point spline structure. + * @param[in] xq points to the x values ot the interpolated data points. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples of output data. + */ + void arm_spline_f32( + arm_spline_instance_f32 * S, + const float32_t * xq, + float32_t * pDst, + uint32_t blockSize); + + /** + * @brief Initialization function for the floating-point cubic spline interpolation. + * @param[in,out] S points to an instance of the floating-point spline structure. + * @param[in] type type of cubic spline interpolation (boundary conditions) + * @param[in] x points to the x values of the known data points. + * @param[in] y points to the y values of the known data points. + * @param[in] n number of known data points. + * @param[in] coeffs coefficients array for b, c, and d + * @param[in] tempBuffer buffer array for internal computations + */ + void arm_spline_init_f32( + arm_spline_instance_f32 * S, + arm_spline_type type, + const float32_t * x, + const float32_t * y, + uint32_t n, + float32_t * coeffs, + float32_t * tempBuffer); + + /** + * @brief Instance structure for the floating-point matrix structure. + */ + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + float32_t *pData; /**< points to the data of the matrix. */ + } arm_matrix_instance_f32; + + /** + * @brief Instance structure for the floating-point matrix structure. + */ + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + float64_t *pData; /**< points to the data of the matrix. */ + } arm_matrix_instance_f64; + + /** + * @brief Instance structure for the Q15 matrix structure. + */ + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + q15_t *pData; /**< points to the data of the matrix. */ + } arm_matrix_instance_q15; + + /** + * @brief Instance structure for the Q31 matrix structure. + */ + typedef struct + { + uint16_t numRows; /**< number of rows of the matrix. */ + uint16_t numCols; /**< number of columns of the matrix. */ + q31_t *pData; /**< points to the data of the matrix. */ + } arm_matrix_instance_q31; + + /** + * @brief Floating-point matrix addition. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_add_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + /** + * @brief Q15 matrix addition. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_add_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst); + + /** + * @brief Q31 matrix addition. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_add_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + /** + * @brief Floating-point, complex, matrix multiplication. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_cmplx_mult_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + /** + * @brief Q15, complex, matrix multiplication. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_cmplx_mult_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pScratch); + + /** + * @brief Q31, complex, matrix multiplication. + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_cmplx_mult_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + /** + * @brief Floating-point matrix transpose. + * @param[in] pSrc points to the input matrix + * @param[out] pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_trans_f32( + const arm_matrix_instance_f32 * pSrc, + arm_matrix_instance_f32 * pDst); + + /** + * @brief Q15 matrix transpose. + * @param[in] pSrc points to the input matrix + * @param[out] pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_trans_q15( + const arm_matrix_instance_q15 * pSrc, + arm_matrix_instance_q15 * pDst); + + /** + * @brief Q31 matrix transpose. + * @param[in] pSrc points to the input matrix + * @param[out] pDst points to the output matrix + * @return The function returns either ARM_MATH_SIZE_MISMATCH + * or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_trans_q31( + const arm_matrix_instance_q31 * pSrc, + arm_matrix_instance_q31 * pDst); + + /** + * @brief Floating-point matrix multiplication + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_mult_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + /** + * @brief Q15 matrix multiplication + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @param[in] pState points to the array for storing intermediate results + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_mult_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pState); + + /** + * @brief Q15 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @param[in] pState points to the array for storing intermediate results + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_mult_fast_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst, + q15_t * pState); + + /** + * @brief Q31 matrix multiplication + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_mult_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + /** + * @brief Q31 matrix multiplication (fast variant) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_mult_fast_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + /** + * @brief Floating-point matrix subtraction + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_sub_f32( + const arm_matrix_instance_f32 * pSrcA, + const arm_matrix_instance_f32 * pSrcB, + arm_matrix_instance_f32 * pDst); + + /** + * @brief Q15 matrix subtraction + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_sub_q15( + const arm_matrix_instance_q15 * pSrcA, + const arm_matrix_instance_q15 * pSrcB, + arm_matrix_instance_q15 * pDst); + + /** + * @brief Q31 matrix subtraction + * @param[in] pSrcA points to the first input matrix structure + * @param[in] pSrcB points to the second input matrix structure + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_sub_q31( + const arm_matrix_instance_q31 * pSrcA, + const arm_matrix_instance_q31 * pSrcB, + arm_matrix_instance_q31 * pDst); + + /** + * @brief Floating-point matrix scaling. + * @param[in] pSrc points to the input matrix + * @param[in] scale scale factor + * @param[out] pDst points to the output matrix + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_scale_f32( + const arm_matrix_instance_f32 * pSrc, + float32_t scale, + arm_matrix_instance_f32 * pDst); + + /** + * @brief Q15 matrix scaling. + * @param[in] pSrc points to input matrix + * @param[in] scaleFract fractional portion of the scale factor + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to output matrix + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_scale_q15( + const arm_matrix_instance_q15 * pSrc, + q15_t scaleFract, + int32_t shift, + arm_matrix_instance_q15 * pDst); + + /** + * @brief Q31 matrix scaling. + * @param[in] pSrc points to input matrix + * @param[in] scaleFract fractional portion of the scale factor + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to output matrix structure + * @return The function returns either + * ARM_MATH_SIZE_MISMATCH or ARM_MATH_SUCCESS based on the outcome of size checking. + */ +arm_status arm_mat_scale_q31( + const arm_matrix_instance_q31 * pSrc, + q31_t scaleFract, + int32_t shift, + arm_matrix_instance_q31 * pDst); + + /** + * @brief Q31 matrix initialization. + * @param[in,out] S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] pData points to the matrix data array. + */ +void arm_mat_init_q31( + arm_matrix_instance_q31 * S, + uint16_t nRows, + uint16_t nColumns, + q31_t * pData); + + /** + * @brief Q15 matrix initialization. + * @param[in,out] S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] pData points to the matrix data array. + */ +void arm_mat_init_q15( + arm_matrix_instance_q15 * S, + uint16_t nRows, + uint16_t nColumns, + q15_t * pData); + + /** + * @brief Floating-point matrix initialization. + * @param[in,out] S points to an instance of the floating-point matrix structure. + * @param[in] nRows number of rows in the matrix. + * @param[in] nColumns number of columns in the matrix. + * @param[in] pData points to the matrix data array. + */ +void arm_mat_init_f32( + arm_matrix_instance_f32 * S, + uint16_t nRows, + uint16_t nColumns, + float32_t * pData); + + + /** + * @brief Instance structure for the Q15 PID Control. + */ + typedef struct + { + q15_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ +#if !defined (ARM_MATH_DSP) + q15_t A1; + q15_t A2; +#else + q31_t A1; /**< The derived gain A1 = -Kp - 2Kd | Kd.*/ +#endif + q15_t state[3]; /**< The state array of length 3. */ + q15_t Kp; /**< The proportional gain. */ + q15_t Ki; /**< The integral gain. */ + q15_t Kd; /**< The derivative gain. */ + } arm_pid_instance_q15; + + /** + * @brief Instance structure for the Q31 PID Control. + */ + typedef struct + { + q31_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ + q31_t A1; /**< The derived gain, A1 = -Kp - 2Kd. */ + q31_t A2; /**< The derived gain, A2 = Kd . */ + q31_t state[3]; /**< The state array of length 3. */ + q31_t Kp; /**< The proportional gain. */ + q31_t Ki; /**< The integral gain. */ + q31_t Kd; /**< The derivative gain. */ + } arm_pid_instance_q31; + + /** + * @brief Instance structure for the floating-point PID Control. + */ + typedef struct + { + float32_t A0; /**< The derived gain, A0 = Kp + Ki + Kd . */ + float32_t A1; /**< The derived gain, A1 = -Kp - 2Kd. */ + float32_t A2; /**< The derived gain, A2 = Kd . */ + float32_t state[3]; /**< The state array of length 3. */ + float32_t Kp; /**< The proportional gain. */ + float32_t Ki; /**< The integral gain. */ + float32_t Kd; /**< The derivative gain. */ + } arm_pid_instance_f32; + + + + /** + * @brief Initialization function for the floating-point PID Control. + * @param[in,out] S points to an instance of the PID structure. + * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. + */ + void arm_pid_init_f32( + arm_pid_instance_f32 * S, + int32_t resetStateFlag); + + + /** + * @brief Reset function for the floating-point PID Control. + * @param[in,out] S is an instance of the floating-point PID Control structure + */ + void arm_pid_reset_f32( + arm_pid_instance_f32 * S); + + + /** + * @brief Initialization function for the Q31 PID Control. + * @param[in,out] S points to an instance of the Q15 PID structure. + * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. + */ + void arm_pid_init_q31( + arm_pid_instance_q31 * S, + int32_t resetStateFlag); + + + /** + * @brief Reset function for the Q31 PID Control. + * @param[in,out] S points to an instance of the Q31 PID Control structure + */ + + void arm_pid_reset_q31( + arm_pid_instance_q31 * S); + + + /** + * @brief Initialization function for the Q15 PID Control. + * @param[in,out] S points to an instance of the Q15 PID structure. + * @param[in] resetStateFlag flag to reset the state. 0 = no change in state 1 = reset the state. + */ + void arm_pid_init_q15( + arm_pid_instance_q15 * S, + int32_t resetStateFlag); + + + /** + * @brief Reset function for the Q15 PID Control. + * @param[in,out] S points to an instance of the q15 PID Control structure + */ + void arm_pid_reset_q15( + arm_pid_instance_q15 * S); + + + /** + * @brief Instance structure for the floating-point Linear Interpolate function. + */ + typedef struct + { + uint32_t nValues; /**< nValues */ + float32_t x1; /**< x1 */ + float32_t xSpacing; /**< xSpacing */ + float32_t *pYData; /**< pointer to the table of Y values */ + } arm_linear_interp_instance_f32; + + /** + * @brief Instance structure for the floating-point bilinear interpolation function. + */ + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + float32_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_f32; + + /** + * @brief Instance structure for the Q31 bilinear interpolation function. + */ + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + q31_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_q31; + + /** + * @brief Instance structure for the Q15 bilinear interpolation function. + */ + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + q15_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_q15; + + /** + * @brief Instance structure for the Q15 bilinear interpolation function. + */ + typedef struct + { + uint16_t numRows; /**< number of rows in the data table. */ + uint16_t numCols; /**< number of columns in the data table. */ + q7_t *pData; /**< points to the data table. */ + } arm_bilinear_interp_instance_q7; + + + /** + * @brief Q7 vector multiplication. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_mult_q7( + const q7_t * pSrcA, + const q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q15 vector multiplication. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_mult_q15( + const q15_t * pSrcA, + const q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q31 vector multiplication. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_mult_q31( + const q31_t * pSrcA, + const q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Floating-point vector multiplication. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_mult_f32( + const float32_t * pSrcA, + const float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + const q15_t *pTwiddle; /**< points to the Sin twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + } arm_cfft_radix2_instance_q15; + +/* Deprecated */ + arm_status arm_cfft_radix2_init_q15( + arm_cfft_radix2_instance_q15 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix2_q15( + const arm_cfft_radix2_instance_q15 * S, + q15_t * pSrc); + + + /** + * @brief Instance structure for the Q15 CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + const q15_t *pTwiddle; /**< points to the twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + } arm_cfft_radix4_instance_q15; + +/* Deprecated */ + arm_status arm_cfft_radix4_init_q15( + arm_cfft_radix4_instance_q15 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix4_q15( + const arm_cfft_radix4_instance_q15 * S, + q15_t * pSrc); + + /** + * @brief Instance structure for the Radix-2 Q31 CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + const q31_t *pTwiddle; /**< points to the Twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + } arm_cfft_radix2_instance_q31; + +/* Deprecated */ + arm_status arm_cfft_radix2_init_q31( + arm_cfft_radix2_instance_q31 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix2_q31( + const arm_cfft_radix2_instance_q31 * S, + q31_t * pSrc); + + /** + * @brief Instance structure for the Q31 CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + const q31_t *pTwiddle; /**< points to the twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + } arm_cfft_radix4_instance_q31; + +/* Deprecated */ + void arm_cfft_radix4_q31( + const arm_cfft_radix4_instance_q31 * S, + q31_t * pSrc); + +/* Deprecated */ + arm_status arm_cfft_radix4_init_q31( + arm_cfft_radix4_instance_q31 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Instance structure for the floating-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + const float32_t *pTwiddle; /**< points to the Twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + float32_t onebyfftLen; /**< value of 1/fftLen. */ + } arm_cfft_radix2_instance_f32; + +/* Deprecated */ + arm_status arm_cfft_radix2_init_f32( + arm_cfft_radix2_instance_f32 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix2_f32( + const arm_cfft_radix2_instance_f32 * S, + float32_t * pSrc); + + /** + * @brief Instance structure for the floating-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + uint8_t ifftFlag; /**< flag that selects forward (ifftFlag=0) or inverse (ifftFlag=1) transform. */ + uint8_t bitReverseFlag; /**< flag that enables (bitReverseFlag=1) or disables (bitReverseFlag=0) bit reversal of output. */ + const float32_t *pTwiddle; /**< points to the Twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t twidCoefModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + uint16_t bitRevFactor; /**< bit reversal modifier that supports different size FFTs with the same bit reversal table. */ + float32_t onebyfftLen; /**< value of 1/fftLen. */ + } arm_cfft_radix4_instance_f32; + +/* Deprecated */ + arm_status arm_cfft_radix4_init_f32( + arm_cfft_radix4_instance_f32 * S, + uint16_t fftLen, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + +/* Deprecated */ + void arm_cfft_radix4_f32( + const arm_cfft_radix4_instance_f32 * S, + float32_t * pSrc); + + /** + * @brief Instance structure for the fixed-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + const q15_t *pTwiddle; /**< points to the Twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t bitRevLength; /**< bit reversal table length. */ +#if defined(ARM_MATH_MVEI) + const uint32_t *rearranged_twiddle_tab_stride1_arr; /**< Per stage reordered twiddle pointer (offset 1) */ \ + const uint32_t *rearranged_twiddle_tab_stride2_arr; /**< Per stage reordered twiddle pointer (offset 2) */ \ + const uint32_t *rearranged_twiddle_tab_stride3_arr; /**< Per stage reordered twiddle pointer (offset 3) */ \ + const q15_t *rearranged_twiddle_stride1; /**< reordered twiddle offset 1 storage */ \ + const q15_t *rearranged_twiddle_stride2; /**< reordered twiddle offset 2 storage */ \ + const q15_t *rearranged_twiddle_stride3; +#endif + } arm_cfft_instance_q15; + +arm_status arm_cfft_init_q15( + arm_cfft_instance_q15 * S, + uint16_t fftLen); + +void arm_cfft_q15( + const arm_cfft_instance_q15 * S, + q15_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Instance structure for the fixed-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + const q31_t *pTwiddle; /**< points to the Twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t bitRevLength; /**< bit reversal table length. */ +#if defined(ARM_MATH_MVEI) + const uint32_t *rearranged_twiddle_tab_stride1_arr; /**< Per stage reordered twiddle pointer (offset 1) */ \ + const uint32_t *rearranged_twiddle_tab_stride2_arr; /**< Per stage reordered twiddle pointer (offset 2) */ \ + const uint32_t *rearranged_twiddle_tab_stride3_arr; /**< Per stage reordered twiddle pointer (offset 3) */ \ + const q31_t *rearranged_twiddle_stride1; /**< reordered twiddle offset 1 storage */ \ + const q31_t *rearranged_twiddle_stride2; /**< reordered twiddle offset 2 storage */ \ + const q31_t *rearranged_twiddle_stride3; +#endif + } arm_cfft_instance_q31; + +arm_status arm_cfft_init_q31( + arm_cfft_instance_q31 * S, + uint16_t fftLen); + +void arm_cfft_q31( + const arm_cfft_instance_q31 * S, + q31_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Instance structure for the floating-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + const float32_t *pTwiddle; /**< points to the Twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t bitRevLength; /**< bit reversal table length. */ +#if defined(ARM_MATH_MVEF) && !defined(ARM_MATH_AUTOVECTORIZE) + const uint32_t *rearranged_twiddle_tab_stride1_arr; /**< Per stage reordered twiddle pointer (offset 1) */ \ + const uint32_t *rearranged_twiddle_tab_stride2_arr; /**< Per stage reordered twiddle pointer (offset 2) */ \ + const uint32_t *rearranged_twiddle_tab_stride3_arr; /**< Per stage reordered twiddle pointer (offset 3) */ \ + const float32_t *rearranged_twiddle_stride1; /**< reordered twiddle offset 1 storage */ \ + const float32_t *rearranged_twiddle_stride2; /**< reordered twiddle offset 2 storage */ \ + const float32_t *rearranged_twiddle_stride3; +#endif + } arm_cfft_instance_f32; + + + arm_status arm_cfft_init_f32( + arm_cfft_instance_f32 * S, + uint16_t fftLen); + + void arm_cfft_f32( + const arm_cfft_instance_f32 * S, + float32_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + + /** + * @brief Instance structure for the Double Precision Floating-point CFFT/CIFFT function. + */ + typedef struct + { + uint16_t fftLen; /**< length of the FFT. */ + const float64_t *pTwiddle; /**< points to the Twiddle factor table. */ + const uint16_t *pBitRevTable; /**< points to the bit reversal table. */ + uint16_t bitRevLength; /**< bit reversal table length. */ + } arm_cfft_instance_f64; + + void arm_cfft_f64( + const arm_cfft_instance_f64 * S, + float64_t * p1, + uint8_t ifftFlag, + uint8_t bitReverseFlag); + + /** + * @brief Instance structure for the Q15 RFFT/RIFFT function. + */ + typedef struct + { + uint32_t fftLenReal; /**< length of the real FFT. */ + uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ + uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ + uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + const q15_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ + const q15_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ +#if defined(ARM_MATH_MVEI) + arm_cfft_instance_q15 cfftInst; +#else + const arm_cfft_instance_q15 *pCfft; /**< points to the complex FFT instance. */ +#endif + } arm_rfft_instance_q15; + + arm_status arm_rfft_init_q15( + arm_rfft_instance_q15 * S, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag); + + void arm_rfft_q15( + const arm_rfft_instance_q15 * S, + q15_t * pSrc, + q15_t * pDst); + + /** + * @brief Instance structure for the Q31 RFFT/RIFFT function. + */ + typedef struct + { + uint32_t fftLenReal; /**< length of the real FFT. */ + uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ + uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ + uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + const q31_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ + const q31_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ +#if defined(ARM_MATH_MVEI) + arm_cfft_instance_q31 cfftInst; +#else + const arm_cfft_instance_q31 *pCfft; /**< points to the complex FFT instance. */ +#endif + } arm_rfft_instance_q31; + + arm_status arm_rfft_init_q31( + arm_rfft_instance_q31 * S, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag); + + void arm_rfft_q31( + const arm_rfft_instance_q31 * S, + q31_t * pSrc, + q31_t * pDst); + + /** + * @brief Instance structure for the floating-point RFFT/RIFFT function. + */ + typedef struct + { + uint32_t fftLenReal; /**< length of the real FFT. */ + uint16_t fftLenBy2; /**< length of the complex FFT. */ + uint8_t ifftFlagR; /**< flag that selects forward (ifftFlagR=0) or inverse (ifftFlagR=1) transform. */ + uint8_t bitReverseFlagR; /**< flag that enables (bitReverseFlagR=1) or disables (bitReverseFlagR=0) bit reversal of output. */ + uint32_t twidCoefRModifier; /**< twiddle coefficient modifier that supports different size FFTs with the same twiddle factor table. */ + const float32_t *pTwiddleAReal; /**< points to the real twiddle factor table. */ + const float32_t *pTwiddleBReal; /**< points to the imag twiddle factor table. */ + arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */ + } arm_rfft_instance_f32; + + arm_status arm_rfft_init_f32( + arm_rfft_instance_f32 * S, + arm_cfft_radix4_instance_f32 * S_CFFT, + uint32_t fftLenReal, + uint32_t ifftFlagR, + uint32_t bitReverseFlag); + + void arm_rfft_f32( + const arm_rfft_instance_f32 * S, + float32_t * pSrc, + float32_t * pDst); + + /** + * @brief Instance structure for the Double Precision Floating-point RFFT/RIFFT function. + */ +typedef struct + { + arm_cfft_instance_f64 Sint; /**< Internal CFFT structure. */ + uint16_t fftLenRFFT; /**< length of the real sequence */ + const float64_t * pTwiddleRFFT; /**< Twiddle factors real stage */ + } arm_rfft_fast_instance_f64 ; + +arm_status arm_rfft_fast_init_f64 ( + arm_rfft_fast_instance_f64 * S, + uint16_t fftLen); + + +void arm_rfft_fast_f64( + arm_rfft_fast_instance_f64 * S, + float64_t * p, float64_t * pOut, + uint8_t ifftFlag); + + + /** + * @brief Instance structure for the floating-point RFFT/RIFFT function. + */ +typedef struct + { + arm_cfft_instance_f32 Sint; /**< Internal CFFT structure. */ + uint16_t fftLenRFFT; /**< length of the real sequence */ + const float32_t * pTwiddleRFFT; /**< Twiddle factors real stage */ + } arm_rfft_fast_instance_f32 ; + +arm_status arm_rfft_fast_init_f32 ( + arm_rfft_fast_instance_f32 * S, + uint16_t fftLen); + + + void arm_rfft_fast_f32( + const arm_rfft_fast_instance_f32 * S, + float32_t * p, float32_t * pOut, + uint8_t ifftFlag); + + /** + * @brief Instance structure for the floating-point DCT4/IDCT4 function. + */ + typedef struct + { + uint16_t N; /**< length of the DCT4. */ + uint16_t Nby2; /**< half of the length of the DCT4. */ + float32_t normalize; /**< normalizing factor. */ + const float32_t *pTwiddle; /**< points to the twiddle factor table. */ + const float32_t *pCosFactor; /**< points to the cosFactor table. */ + arm_rfft_instance_f32 *pRfft; /**< points to the real FFT instance. */ + arm_cfft_radix4_instance_f32 *pCfft; /**< points to the complex FFT instance. */ + } arm_dct4_instance_f32; + + + /** + * @brief Initialization function for the floating-point DCT4/IDCT4. + * @param[in,out] S points to an instance of floating-point DCT4/IDCT4 structure. + * @param[in] S_RFFT points to an instance of floating-point RFFT/RIFFT structure. + * @param[in] S_CFFT points to an instance of floating-point CFFT/CIFFT structure. + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if fftLenReal is not a supported transform length. + */ + arm_status arm_dct4_init_f32( + arm_dct4_instance_f32 * S, + arm_rfft_instance_f32 * S_RFFT, + arm_cfft_radix4_instance_f32 * S_CFFT, + uint16_t N, + uint16_t Nby2, + float32_t normalize); + + + /** + * @brief Processing function for the floating-point DCT4/IDCT4. + * @param[in] S points to an instance of the floating-point DCT4/IDCT4 structure. + * @param[in] pState points to state buffer. + * @param[in,out] pInlineBuffer points to the in-place input and output buffer. + */ + void arm_dct4_f32( + const arm_dct4_instance_f32 * S, + float32_t * pState, + float32_t * pInlineBuffer); + + + /** + * @brief Instance structure for the Q31 DCT4/IDCT4 function. + */ + typedef struct + { + uint16_t N; /**< length of the DCT4. */ + uint16_t Nby2; /**< half of the length of the DCT4. */ + q31_t normalize; /**< normalizing factor. */ + const q31_t *pTwiddle; /**< points to the twiddle factor table. */ + const q31_t *pCosFactor; /**< points to the cosFactor table. */ + arm_rfft_instance_q31 *pRfft; /**< points to the real FFT instance. */ + arm_cfft_radix4_instance_q31 *pCfft; /**< points to the complex FFT instance. */ + } arm_dct4_instance_q31; + + + /** + * @brief Initialization function for the Q31 DCT4/IDCT4. + * @param[in,out] S points to an instance of Q31 DCT4/IDCT4 structure. + * @param[in] S_RFFT points to an instance of Q31 RFFT/RIFFT structure + * @param[in] S_CFFT points to an instance of Q31 CFFT/CIFFT structure + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. + */ + arm_status arm_dct4_init_q31( + arm_dct4_instance_q31 * S, + arm_rfft_instance_q31 * S_RFFT, + arm_cfft_radix4_instance_q31 * S_CFFT, + uint16_t N, + uint16_t Nby2, + q31_t normalize); + + + /** + * @brief Processing function for the Q31 DCT4/IDCT4. + * @param[in] S points to an instance of the Q31 DCT4 structure. + * @param[in] pState points to state buffer. + * @param[in,out] pInlineBuffer points to the in-place input and output buffer. + */ + void arm_dct4_q31( + const arm_dct4_instance_q31 * S, + q31_t * pState, + q31_t * pInlineBuffer); + + + /** + * @brief Instance structure for the Q15 DCT4/IDCT4 function. + */ + typedef struct + { + uint16_t N; /**< length of the DCT4. */ + uint16_t Nby2; /**< half of the length of the DCT4. */ + q15_t normalize; /**< normalizing factor. */ + const q15_t *pTwiddle; /**< points to the twiddle factor table. */ + const q15_t *pCosFactor; /**< points to the cosFactor table. */ + arm_rfft_instance_q15 *pRfft; /**< points to the real FFT instance. */ + arm_cfft_radix4_instance_q15 *pCfft; /**< points to the complex FFT instance. */ + } arm_dct4_instance_q15; + + + /** + * @brief Initialization function for the Q15 DCT4/IDCT4. + * @param[in,out] S points to an instance of Q15 DCT4/IDCT4 structure. + * @param[in] S_RFFT points to an instance of Q15 RFFT/RIFFT structure. + * @param[in] S_CFFT points to an instance of Q15 CFFT/CIFFT structure. + * @param[in] N length of the DCT4. + * @param[in] Nby2 half of the length of the DCT4. + * @param[in] normalize normalizing factor. + * @return arm_status function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_ARGUMENT_ERROR if N is not a supported transform length. + */ + arm_status arm_dct4_init_q15( + arm_dct4_instance_q15 * S, + arm_rfft_instance_q15 * S_RFFT, + arm_cfft_radix4_instance_q15 * S_CFFT, + uint16_t N, + uint16_t Nby2, + q15_t normalize); + + + /** + * @brief Processing function for the Q15 DCT4/IDCT4. + * @param[in] S points to an instance of the Q15 DCT4 structure. + * @param[in] pState points to state buffer. + * @param[in,out] pInlineBuffer points to the in-place input and output buffer. + */ + void arm_dct4_q15( + const arm_dct4_instance_q15 * S, + q15_t * pState, + q15_t * pInlineBuffer); + + + /** + * @brief Floating-point vector addition. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_add_f32( + const float32_t * pSrcA, + const float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q7 vector addition. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_add_q7( + const q7_t * pSrcA, + const q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q15 vector addition. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_add_q15( + const q15_t * pSrcA, + const q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q31 vector addition. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_add_q31( + const q31_t * pSrcA, + const q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Floating-point vector subtraction. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_sub_f32( + const float32_t * pSrcA, + const float32_t * pSrcB, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q7 vector subtraction. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_sub_q7( + const q7_t * pSrcA, + const q7_t * pSrcB, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q15 vector subtraction. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_sub_q15( + const q15_t * pSrcA, + const q15_t * pSrcB, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q31 vector subtraction. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in each vector + */ + void arm_sub_q31( + const q31_t * pSrcA, + const q31_t * pSrcB, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Multiplies a floating-point vector by a scalar. + * @param[in] pSrc points to the input vector + * @param[in] scale scale factor to be applied + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_scale_f32( + const float32_t * pSrc, + float32_t scale, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Multiplies a Q7 vector by a scalar. + * @param[in] pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_scale_q7( + const q7_t * pSrc, + q7_t scaleFract, + int8_t shift, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Multiplies a Q15 vector by a scalar. + * @param[in] pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_scale_q15( + const q15_t * pSrc, + q15_t scaleFract, + int8_t shift, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Multiplies a Q31 vector by a scalar. + * @param[in] pSrc points to the input vector + * @param[in] scaleFract fractional portion of the scale value + * @param[in] shift number of bits to shift the result by + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_scale_q31( + const q31_t * pSrc, + q31_t scaleFract, + int8_t shift, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q7 vector absolute value. + * @param[in] pSrc points to the input buffer + * @param[out] pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + */ + void arm_abs_q7( + const q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Floating-point vector absolute value. + * @param[in] pSrc points to the input buffer + * @param[out] pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + */ + void arm_abs_f32( + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q15 vector absolute value. + * @param[in] pSrc points to the input buffer + * @param[out] pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + */ + void arm_abs_q15( + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Q31 vector absolute value. + * @param[in] pSrc points to the input buffer + * @param[out] pDst points to the output buffer + * @param[in] blockSize number of samples in each vector + */ + void arm_abs_q31( + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Dot product of floating-point vectors. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] result output result returned here + */ + void arm_dot_prod_f32( + const float32_t * pSrcA, + const float32_t * pSrcB, + uint32_t blockSize, + float32_t * result); + + + /** + * @brief Dot product of Q7 vectors. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] result output result returned here + */ + void arm_dot_prod_q7( + const q7_t * pSrcA, + const q7_t * pSrcB, + uint32_t blockSize, + q31_t * result); + + + /** + * @brief Dot product of Q15 vectors. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] result output result returned here + */ + void arm_dot_prod_q15( + const q15_t * pSrcA, + const q15_t * pSrcB, + uint32_t blockSize, + q63_t * result); + + + /** + * @brief Dot product of Q31 vectors. + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[out] result output result returned here + */ + void arm_dot_prod_q31( + const q31_t * pSrcA, + const q31_t * pSrcB, + uint32_t blockSize, + q63_t * result); + + + /** + * @brief Shifts the elements of a Q7 vector a specified number of bits. + * @param[in] pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_shift_q7( + const q7_t * pSrc, + int8_t shiftBits, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Shifts the elements of a Q15 vector a specified number of bits. + * @param[in] pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_shift_q15( + const q15_t * pSrc, + int8_t shiftBits, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Shifts the elements of a Q31 vector a specified number of bits. + * @param[in] pSrc points to the input vector + * @param[in] shiftBits number of bits to shift. A positive value shifts left; a negative value shifts right. + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_shift_q31( + const q31_t * pSrc, + int8_t shiftBits, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Adds a constant offset to a floating-point vector. + * @param[in] pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_offset_f32( + const float32_t * pSrc, + float32_t offset, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Adds a constant offset to a Q7 vector. + * @param[in] pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_offset_q7( + const q7_t * pSrc, + q7_t offset, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Adds a constant offset to a Q15 vector. + * @param[in] pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_offset_q15( + const q15_t * pSrc, + q15_t offset, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Adds a constant offset to a Q31 vector. + * @param[in] pSrc points to the input vector + * @param[in] offset is the offset to be added + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_offset_q31( + const q31_t * pSrc, + q31_t offset, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Negates the elements of a floating-point vector. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_negate_f32( + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Negates the elements of a Q7 vector. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_negate_q7( + const q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Negates the elements of a Q15 vector. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_negate_q15( + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Negates the elements of a Q31 vector. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] blockSize number of samples in the vector + */ + void arm_negate_q31( + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Copies the elements of a floating-point vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_copy_f32( + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Copies the elements of a Q7 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_copy_q7( + const q7_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Copies the elements of a Q15 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_copy_q15( + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Copies the elements of a Q31 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_copy_q31( + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Fills a constant value into a floating-point vector. + * @param[in] value input value to be filled + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_fill_f32( + float32_t value, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Fills a constant value into a Q7 vector. + * @param[in] value input value to be filled + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_fill_q7( + q7_t value, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Fills a constant value into a Q15 vector. + * @param[in] value input value to be filled + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_fill_q15( + q15_t value, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Fills a constant value into a Q31 vector. + * @param[in] value input value to be filled + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_fill_q31( + q31_t value, + q31_t * pDst, + uint32_t blockSize); + + +/** + * @brief Convolution of floating-point sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + */ + void arm_conv_f32( + const float32_t * pSrcA, + uint32_t srcALen, + const float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst); + + + /** + * @brief Convolution of Q15 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + */ + void arm_conv_opt_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2); + + +/** + * @brief Convolution of Q15 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the location where the output result is written. Length srcALen+srcBLen-1. + */ + void arm_conv_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + + /** + * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + */ + void arm_conv_fast_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + + /** + * @brief Convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + */ + void arm_conv_fast_opt_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Convolution of Q31 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + */ + void arm_conv_q31( + const q31_t * pSrcA, + uint32_t srcALen, + const q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + + /** + * @brief Convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + */ + void arm_conv_fast_q31( + const q31_t * pSrcA, + uint32_t srcALen, + const q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + + /** + * @brief Convolution of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + * @param[in] pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). + */ + void arm_conv_opt_q7( + const q7_t * pSrcA, + uint32_t srcALen, + const q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Convolution of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length srcALen+srcBLen-1. + */ + void arm_conv_q7( + const q7_t * pSrcA, + uint32_t srcALen, + const q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst); + + + /** + * @brief Partial convolution of floating-point sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_f32( + const float32_t * pSrcA, + uint32_t srcALen, + const float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q15 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_opt_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Partial convolution of Q15 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_fast_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q15 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @param[in] pScratch1 points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer of size min(srcALen, srcBLen). + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_fast_opt_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + uint32_t firstIndex, + uint32_t numPoints, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Partial convolution of Q31 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_q31( + const q31_t * pSrcA, + uint32_t srcALen, + const q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q31 sequences (fast version) for Cortex-M3 and Cortex-M4 + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_fast_q31( + const q31_t * pSrcA, + uint32_t srcALen, + const q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Partial convolution of Q7 sequences + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @param[in] pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_opt_q7( + const q7_t * pSrcA, + uint32_t srcALen, + const q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + uint32_t firstIndex, + uint32_t numPoints, + q15_t * pScratch1, + q15_t * pScratch2); + + +/** + * @brief Partial convolution of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data + * @param[in] firstIndex is the first output sample to start with. + * @param[in] numPoints is the number of output points to be computed. + * @return Returns either ARM_MATH_SUCCESS if the function completed correctly or ARM_MATH_ARGUMENT_ERROR if the requested subset is not in the range [0 srcALen+srcBLen-2]. + */ + arm_status arm_conv_partial_q7( + const q7_t * pSrcA, + uint32_t srcALen, + const q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + uint32_t firstIndex, + uint32_t numPoints); + + + /** + * @brief Instance structure for the Q15 FIR decimator. + */ + typedef struct + { + uint8_t M; /**< decimation factor. */ + uint16_t numTaps; /**< number of coefficients in the filter. */ + const q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + } arm_fir_decimate_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR decimator. + */ + typedef struct + { + uint8_t M; /**< decimation factor. */ + uint16_t numTaps; /**< number of coefficients in the filter. */ + const q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + } arm_fir_decimate_instance_q31; + +/** + @brief Instance structure for floating-point FIR decimator. + */ +typedef struct + { + uint8_t M; /**< decimation factor. */ + uint16_t numTaps; /**< number of coefficients in the filter. */ + const float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + } arm_fir_decimate_instance_f32; + + +/** + @brief Processing function for floating-point FIR decimator. + @param[in] S points to an instance of the floating-point FIR decimator structure + @param[in] pSrc points to the block of input data + @param[out] pDst points to the block of output data + @param[in] blockSize number of samples to process + */ +void arm_fir_decimate_f32( + const arm_fir_decimate_instance_f32 * S, + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + +/** + @brief Initialization function for the floating-point FIR decimator. + @param[in,out] S points to an instance of the floating-point FIR decimator structure + @param[in] numTaps number of coefficients in the filter + @param[in] M decimation factor + @param[in] pCoeffs points to the filter coefficients + @param[in] pState points to the state buffer + @param[in] blockSize number of input samples to process per call + @return execution status + - \ref ARM_MATH_SUCCESS : Operation successful + - \ref ARM_MATH_LENGTH_ERROR : blockSize is not a multiple of M + */ +arm_status arm_fir_decimate_init_f32( + arm_fir_decimate_instance_f32 * S, + uint16_t numTaps, + uint8_t M, + const float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 FIR decimator. + * @param[in] S points to an instance of the Q15 FIR decimator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_decimate_q15( + const arm_fir_decimate_instance_q15 * S, + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q15 FIR decimator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_decimate_fast_q15( + const arm_fir_decimate_instance_q15 * S, + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 FIR decimator. + * @param[in,out] S points to an instance of the Q15 FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + */ + arm_status arm_fir_decimate_init_q15( + arm_fir_decimate_instance_q15 * S, + uint16_t numTaps, + uint8_t M, + const q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 FIR decimator. + * @param[in] S points to an instance of the Q31 FIR decimator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_decimate_q31( + const arm_fir_decimate_instance_q31 * S, + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + /** + * @brief Processing function for the Q31 FIR decimator (fast variant) for Cortex-M3 and Cortex-M4. + * @param[in] S points to an instance of the Q31 FIR decimator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_decimate_fast_q31( + const arm_fir_decimate_instance_q31 * S, + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 FIR decimator. + * @param[in,out] S points to an instance of the Q31 FIR decimator structure. + * @param[in] numTaps number of coefficients in the filter. + * @param[in] M decimation factor. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * blockSize is not a multiple of M. + */ + arm_status arm_fir_decimate_init_q31( + arm_fir_decimate_instance_q31 * S, + uint16_t numTaps, + uint8_t M, + const q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 FIR interpolator. + */ + typedef struct + { + uint8_t L; /**< upsample factor. */ + uint16_t phaseLength; /**< length of each polyphase filter component. */ + const q15_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ + q15_t *pState; /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */ + } arm_fir_interpolate_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR interpolator. + */ + typedef struct + { + uint8_t L; /**< upsample factor. */ + uint16_t phaseLength; /**< length of each polyphase filter component. */ + const q31_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ + q31_t *pState; /**< points to the state variable array. The array is of length blockSize+phaseLength-1. */ + } arm_fir_interpolate_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR interpolator. + */ + typedef struct + { + uint8_t L; /**< upsample factor. */ + uint16_t phaseLength; /**< length of each polyphase filter component. */ + const float32_t *pCoeffs; /**< points to the coefficient array. The array is of length L*phaseLength. */ + float32_t *pState; /**< points to the state variable array. The array is of length phaseLength+numTaps-1. */ + } arm_fir_interpolate_instance_f32; + + + /** + * @brief Processing function for the Q15 FIR interpolator. + * @param[in] S points to an instance of the Q15 FIR interpolator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_interpolate_q15( + const arm_fir_interpolate_instance_q15 * S, + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 FIR interpolator. + * @param[in,out] S points to an instance of the Q15 FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficient buffer. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + */ + arm_status arm_fir_interpolate_init_q15( + arm_fir_interpolate_instance_q15 * S, + uint8_t L, + uint16_t numTaps, + const q15_t * pCoeffs, + q15_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 FIR interpolator. + * @param[in] S points to an instance of the Q15 FIR interpolator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_interpolate_q31( + const arm_fir_interpolate_instance_q31 * S, + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 FIR interpolator. + * @param[in,out] S points to an instance of the Q31 FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficient buffer. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + */ + arm_status arm_fir_interpolate_init_q31( + arm_fir_interpolate_instance_q31 * S, + uint8_t L, + uint16_t numTaps, + const q31_t * pCoeffs, + q31_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the floating-point FIR interpolator. + * @param[in] S points to an instance of the floating-point FIR interpolator structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_interpolate_f32( + const arm_fir_interpolate_instance_f32 * S, + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point FIR interpolator. + * @param[in,out] S points to an instance of the floating-point FIR interpolator structure. + * @param[in] L upsample factor. + * @param[in] numTaps number of filter coefficients in the filter. + * @param[in] pCoeffs points to the filter coefficient buffer. + * @param[in] pState points to the state buffer. + * @param[in] blockSize number of input samples to process per call. + * @return The function returns ARM_MATH_SUCCESS if initialization is successful or ARM_MATH_LENGTH_ERROR if + * the filter length numTaps is not a multiple of the interpolation factor L. + */ + arm_status arm_fir_interpolate_init_f32( + arm_fir_interpolate_instance_f32 * S, + uint8_t L, + uint16_t numTaps, + const float32_t * pCoeffs, + float32_t * pState, + uint32_t blockSize); + + + /** + * @brief Instance structure for the high precision Q31 Biquad cascade filter. + */ + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + q63_t *pState; /**< points to the array of state coefficients. The array is of length 4*numStages. */ + const q31_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + uint8_t postShift; /**< additional shift, in bits, applied to each output sample. */ + } arm_biquad_cas_df1_32x64_ins_q31; + + + /** + * @param[in] S points to an instance of the high precision Q31 Biquad cascade filter structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cas_df1_32x64_q31( + const arm_biquad_cas_df1_32x64_ins_q31 * S, + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @param[in,out] S points to an instance of the high precision Q31 Biquad cascade filter structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] postShift shift to be applied to the output. Varies according to the coefficients format + */ + void arm_biquad_cas_df1_32x64_init_q31( + arm_biquad_cas_df1_32x64_ins_q31 * S, + uint8_t numStages, + const q31_t * pCoeffs, + q63_t * pState, + uint8_t postShift); + + + /** + * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter. + */ + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float32_t *pState; /**< points to the array of state coefficients. The array is of length 2*numStages. */ + const float32_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + } arm_biquad_cascade_df2T_instance_f32; + + /** + * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter. + */ + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float32_t *pState; /**< points to the array of state coefficients. The array is of length 4*numStages. */ + const float32_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + } arm_biquad_cascade_stereo_df2T_instance_f32; + + /** + * @brief Instance structure for the floating-point transposed direct form II Biquad cascade filter. + */ + typedef struct + { + uint8_t numStages; /**< number of 2nd order stages in the filter. Overall order is 2*numStages. */ + float64_t *pState; /**< points to the array of state coefficients. The array is of length 2*numStages. */ + const float64_t *pCoeffs; /**< points to the array of coefficients. The array is of length 5*numStages. */ + } arm_biquad_cascade_df2T_instance_f64; + + + /** + * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in] S points to an instance of the filter data structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df2T_f32( + const arm_biquad_cascade_df2T_instance_f32 * S, + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. 2 channels + * @param[in] S points to an instance of the filter data structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_stereo_df2T_f32( + const arm_biquad_cascade_stereo_df2T_instance_f32 * S, + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Processing function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in] S points to an instance of the filter data structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_biquad_cascade_df2T_f64( + const arm_biquad_cascade_df2T_instance_f64 * S, + const float64_t * pSrc, + float64_t * pDst, + uint32_t blockSize); + + +#if defined(ARM_MATH_NEON) +void arm_biquad_cascade_df2T_compute_coefs_f32( + arm_biquad_cascade_df2T_instance_f32 * S, + uint8_t numStages, + float32_t * pCoeffs); +#endif + /** + * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in,out] S points to an instance of the filter data structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + */ + void arm_biquad_cascade_df2T_init_f32( + arm_biquad_cascade_df2T_instance_f32 * S, + uint8_t numStages, + const float32_t * pCoeffs, + float32_t * pState); + + + /** + * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in,out] S points to an instance of the filter data structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + */ + void arm_biquad_cascade_stereo_df2T_init_f32( + arm_biquad_cascade_stereo_df2T_instance_f32 * S, + uint8_t numStages, + const float32_t * pCoeffs, + float32_t * pState); + + + /** + * @brief Initialization function for the floating-point transposed direct form II Biquad cascade filter. + * @param[in,out] S points to an instance of the filter data structure. + * @param[in] numStages number of 2nd order stages in the filter. + * @param[in] pCoeffs points to the filter coefficients. + * @param[in] pState points to the state buffer. + */ + void arm_biquad_cascade_df2T_init_f64( + arm_biquad_cascade_df2T_instance_f64 * S, + uint8_t numStages, + const float64_t * pCoeffs, + float64_t * pState); + + + /** + * @brief Instance structure for the Q15 FIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of filter stages. */ + q15_t *pState; /**< points to the state variable array. The array is of length numStages. */ + const q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ + } arm_fir_lattice_instance_q15; + + /** + * @brief Instance structure for the Q31 FIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of filter stages. */ + q31_t *pState; /**< points to the state variable array. The array is of length numStages. */ + const q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ + } arm_fir_lattice_instance_q31; + + /** + * @brief Instance structure for the floating-point FIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of filter stages. */ + float32_t *pState; /**< points to the state variable array. The array is of length numStages. */ + const float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numStages. */ + } arm_fir_lattice_instance_f32; + + + /** + * @brief Initialization function for the Q15 FIR lattice filter. + * @param[in] S points to an instance of the Q15 FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] pState points to the state buffer. The array is of length numStages. + */ + void arm_fir_lattice_init_q15( + arm_fir_lattice_instance_q15 * S, + uint16_t numStages, + const q15_t * pCoeffs, + q15_t * pState); + + + /** + * @brief Processing function for the Q15 FIR lattice filter. + * @param[in] S points to an instance of the Q15 FIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_fir_lattice_q15( + const arm_fir_lattice_instance_q15 * S, + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 FIR lattice filter. + * @param[in] S points to an instance of the Q31 FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] pState points to the state buffer. The array is of length numStages. + */ + void arm_fir_lattice_init_q31( + arm_fir_lattice_instance_q31 * S, + uint16_t numStages, + const q31_t * pCoeffs, + q31_t * pState); + + + /** + * @brief Processing function for the Q31 FIR lattice filter. + * @param[in] S points to an instance of the Q31 FIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_fir_lattice_q31( + const arm_fir_lattice_instance_q31 * S, + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + +/** + * @brief Initialization function for the floating-point FIR lattice filter. + * @param[in] S points to an instance of the floating-point FIR lattice structure. + * @param[in] numStages number of filter stages. + * @param[in] pCoeffs points to the coefficient buffer. The array is of length numStages. + * @param[in] pState points to the state buffer. The array is of length numStages. + */ + void arm_fir_lattice_init_f32( + arm_fir_lattice_instance_f32 * S, + uint16_t numStages, + const float32_t * pCoeffs, + float32_t * pState); + + + /** + * @brief Processing function for the floating-point FIR lattice filter. + * @param[in] S points to an instance of the floating-point FIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] blockSize number of samples to process. + */ + void arm_fir_lattice_f32( + const arm_fir_lattice_instance_f32 * S, + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 IIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of stages in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ + q15_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ + q15_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ + } arm_iir_lattice_instance_q15; + + /** + * @brief Instance structure for the Q31 IIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of stages in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ + q31_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ + q31_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ + } arm_iir_lattice_instance_q31; + + /** + * @brief Instance structure for the floating-point IIR lattice filter. + */ + typedef struct + { + uint16_t numStages; /**< number of stages in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numStages+blockSize. */ + float32_t *pkCoeffs; /**< points to the reflection coefficient array. The array is of length numStages. */ + float32_t *pvCoeffs; /**< points to the ladder coefficient array. The array is of length numStages+1. */ + } arm_iir_lattice_instance_f32; + + + /** + * @brief Processing function for the floating-point IIR lattice filter. + * @param[in] S points to an instance of the floating-point IIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_f32( + const arm_iir_lattice_instance_f32 * S, + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point IIR lattice filter. + * @param[in] S points to an instance of the floating-point IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. + * @param[in] pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. + * @param[in] pState points to the state buffer. The array is of length numStages+blockSize-1. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_init_f32( + arm_iir_lattice_instance_f32 * S, + uint16_t numStages, + float32_t * pkCoeffs, + float32_t * pvCoeffs, + float32_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 IIR lattice filter. + * @param[in] S points to an instance of the Q31 IIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_q31( + const arm_iir_lattice_instance_q31 * S, + const q31_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 IIR lattice filter. + * @param[in] S points to an instance of the Q31 IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] pkCoeffs points to the reflection coefficient buffer. The array is of length numStages. + * @param[in] pvCoeffs points to the ladder coefficient buffer. The array is of length numStages+1. + * @param[in] pState points to the state buffer. The array is of length numStages+blockSize. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_init_q31( + arm_iir_lattice_instance_q31 * S, + uint16_t numStages, + q31_t * pkCoeffs, + q31_t * pvCoeffs, + q31_t * pState, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 IIR lattice filter. + * @param[in] S points to an instance of the Q15 IIR lattice structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data. + * @param[in] blockSize number of samples to process. + */ + void arm_iir_lattice_q15( + const arm_iir_lattice_instance_q15 * S, + const q15_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + +/** + * @brief Initialization function for the Q15 IIR lattice filter. + * @param[in] S points to an instance of the fixed-point Q15 IIR lattice structure. + * @param[in] numStages number of stages in the filter. + * @param[in] pkCoeffs points to reflection coefficient buffer. The array is of length numStages. + * @param[in] pvCoeffs points to ladder coefficient buffer. The array is of length numStages+1. + * @param[in] pState points to state buffer. The array is of length numStages+blockSize. + * @param[in] blockSize number of samples to process per call. + */ + void arm_iir_lattice_init_q15( + arm_iir_lattice_instance_q15 * S, + uint16_t numStages, + q15_t * pkCoeffs, + q15_t * pvCoeffs, + q15_t * pState, + uint32_t blockSize); + + + /** + * @brief Instance structure for the floating-point LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + float32_t mu; /**< step size that controls filter coefficient updates. */ + } arm_lms_instance_f32; + + + /** + * @brief Processing function for floating-point LMS filter. + * @param[in] S points to an instance of the floating-point LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_f32( + const arm_lms_instance_f32 * S, + const float32_t * pSrc, + float32_t * pRef, + float32_t * pOut, + float32_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for floating-point LMS filter. + * @param[in] S points to an instance of the floating-point LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to the coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_init_f32( + arm_lms_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + float32_t mu, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q15 LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q15_t mu; /**< step size that controls filter coefficient updates. */ + uint32_t postShift; /**< bit shift applied to coefficients. */ + } arm_lms_instance_q15; + + + /** + * @brief Initialization function for the Q15 LMS filter. + * @param[in] S points to an instance of the Q15 LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to the coefficient buffer. + * @param[in] pState points to the state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + */ + void arm_lms_init_q15( + arm_lms_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + q15_t mu, + uint32_t blockSize, + uint32_t postShift); + + + /** + * @brief Processing function for Q15 LMS filter. + * @param[in] S points to an instance of the Q15 LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_q15( + const arm_lms_instance_q15 * S, + const q15_t * pSrc, + q15_t * pRef, + q15_t * pOut, + q15_t * pErr, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q31 LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q31_t mu; /**< step size that controls filter coefficient updates. */ + uint32_t postShift; /**< bit shift applied to coefficients. */ + } arm_lms_instance_q31; + + + /** + * @brief Processing function for Q31 LMS filter. + * @param[in] S points to an instance of the Q15 LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_q31( + const arm_lms_instance_q31 * S, + const q31_t * pSrc, + q31_t * pRef, + q31_t * pOut, + q31_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for Q31 LMS filter. + * @param[in] S points to an instance of the Q31 LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + */ + void arm_lms_init_q31( + arm_lms_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + q31_t mu, + uint32_t blockSize, + uint32_t postShift); + + + /** + * @brief Instance structure for the floating-point normalized LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + float32_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + float32_t mu; /**< step size that control filter coefficient updates. */ + float32_t energy; /**< saves previous frame energy. */ + float32_t x0; /**< saves previous input sample. */ + } arm_lms_norm_instance_f32; + + + /** + * @brief Processing function for floating-point normalized LMS filter. + * @param[in] S points to an instance of the floating-point normalized LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_norm_f32( + arm_lms_norm_instance_f32 * S, + const float32_t * pSrc, + float32_t * pRef, + float32_t * pOut, + float32_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for floating-point normalized LMS filter. + * @param[in] S points to an instance of the floating-point LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_norm_init_f32( + arm_lms_norm_instance_f32 * S, + uint16_t numTaps, + float32_t * pCoeffs, + float32_t * pState, + float32_t mu, + uint32_t blockSize); + + + /** + * @brief Instance structure for the Q31 normalized LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + q31_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q31_t mu; /**< step size that controls filter coefficient updates. */ + uint8_t postShift; /**< bit shift applied to coefficients. */ + const q31_t *recipTable; /**< points to the reciprocal initial value table. */ + q31_t energy; /**< saves previous frame energy. */ + q31_t x0; /**< saves previous input sample. */ + } arm_lms_norm_instance_q31; + + + /** + * @brief Processing function for Q31 normalized LMS filter. + * @param[in] S points to an instance of the Q31 normalized LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_norm_q31( + arm_lms_norm_instance_q31 * S, + const q31_t * pSrc, + q31_t * pRef, + q31_t * pOut, + q31_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for Q31 normalized LMS filter. + * @param[in] S points to an instance of the Q31 normalized LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + */ + void arm_lms_norm_init_q31( + arm_lms_norm_instance_q31 * S, + uint16_t numTaps, + q31_t * pCoeffs, + q31_t * pState, + q31_t mu, + uint32_t blockSize, + uint8_t postShift); + + + /** + * @brief Instance structure for the Q15 normalized LMS filter. + */ + typedef struct + { + uint16_t numTaps; /**< Number of coefficients in the filter. */ + q15_t *pState; /**< points to the state variable array. The array is of length numTaps+blockSize-1. */ + q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps. */ + q15_t mu; /**< step size that controls filter coefficient updates. */ + uint8_t postShift; /**< bit shift applied to coefficients. */ + const q15_t *recipTable; /**< Points to the reciprocal initial value table. */ + q15_t energy; /**< saves previous frame energy. */ + q15_t x0; /**< saves previous input sample. */ + } arm_lms_norm_instance_q15; + + + /** + * @brief Processing function for Q15 normalized LMS filter. + * @param[in] S points to an instance of the Q15 normalized LMS filter structure. + * @param[in] pSrc points to the block of input data. + * @param[in] pRef points to the block of reference data. + * @param[out] pOut points to the block of output data. + * @param[out] pErr points to the block of error data. + * @param[in] blockSize number of samples to process. + */ + void arm_lms_norm_q15( + arm_lms_norm_instance_q15 * S, + const q15_t * pSrc, + q15_t * pRef, + q15_t * pOut, + q15_t * pErr, + uint32_t blockSize); + + + /** + * @brief Initialization function for Q15 normalized LMS filter. + * @param[in] S points to an instance of the Q15 normalized LMS filter structure. + * @param[in] numTaps number of filter coefficients. + * @param[in] pCoeffs points to coefficient buffer. + * @param[in] pState points to state buffer. + * @param[in] mu step size that controls filter coefficient updates. + * @param[in] blockSize number of samples to process. + * @param[in] postShift bit shift applied to coefficients. + */ + void arm_lms_norm_init_q15( + arm_lms_norm_instance_q15 * S, + uint16_t numTaps, + q15_t * pCoeffs, + q15_t * pState, + q15_t mu, + uint32_t blockSize, + uint8_t postShift); + + + /** + * @brief Correlation of floating-point sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + void arm_correlate_f32( + const float32_t * pSrcA, + uint32_t srcALen, + const float32_t * pSrcB, + uint32_t srcBLen, + float32_t * pDst); + + +/** + @brief Correlation of Q15 sequences + @param[in] pSrcA points to the first input sequence + @param[in] srcALen length of the first input sequence + @param[in] pSrcB points to the second input sequence + @param[in] srcBLen length of the second input sequence + @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + @param[in] pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. +*/ +void arm_correlate_opt_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch); + + +/** + @brief Correlation of Q15 sequences. + @param[in] pSrcA points to the first input sequence + @param[in] srcALen length of the first input sequence + @param[in] pSrcB points to the second input sequence + @param[in] srcBLen length of the second input sequence + @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + void arm_correlate_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + +/** + @brief Correlation of Q15 sequences (fast version). + @param[in] pSrcA points to the first input sequence + @param[in] srcALen length of the first input sequence + @param[in] pSrcB points to the second input sequence + @param[in] srcBLen length of the second input sequence + @param[out] pDst points to the location where the output result is written. Length 2 * max(srcALen, srcBLen) - 1. + @return none + */ +void arm_correlate_fast_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst); + + +/** + @brief Correlation of Q15 sequences (fast version). + @param[in] pSrcA points to the first input sequence. + @param[in] srcALen length of the first input sequence. + @param[in] pSrcB points to the second input sequence. + @param[in] srcBLen length of the second input sequence. + @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + @param[in] pScratch points to scratch buffer of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + */ +void arm_correlate_fast_opt_q15( + const q15_t * pSrcA, + uint32_t srcALen, + const q15_t * pSrcB, + uint32_t srcBLen, + q15_t * pDst, + q15_t * pScratch); + + + /** + * @brief Correlation of Q31 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + void arm_correlate_q31( + const q31_t * pSrcA, + uint32_t srcALen, + const q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + +/** + @brief Correlation of Q31 sequences (fast version). + @param[in] pSrcA points to the first input sequence + @param[in] srcALen length of the first input sequence + @param[in] pSrcB points to the second input sequence + @param[in] srcBLen length of the second input sequence + @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ +void arm_correlate_fast_q31( + const q31_t * pSrcA, + uint32_t srcALen, + const q31_t * pSrcB, + uint32_t srcBLen, + q31_t * pDst); + + + /** + * @brief Correlation of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + * @param[in] pScratch1 points to scratch buffer(of type q15_t) of size max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2. + * @param[in] pScratch2 points to scratch buffer (of type q15_t) of size min(srcALen, srcBLen). + */ + void arm_correlate_opt_q7( + const q7_t * pSrcA, + uint32_t srcALen, + const q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst, + q15_t * pScratch1, + q15_t * pScratch2); + + + /** + * @brief Correlation of Q7 sequences. + * @param[in] pSrcA points to the first input sequence. + * @param[in] srcALen length of the first input sequence. + * @param[in] pSrcB points to the second input sequence. + * @param[in] srcBLen length of the second input sequence. + * @param[out] pDst points to the block of output data Length 2 * max(srcALen, srcBLen) - 1. + */ + void arm_correlate_q7( + const q7_t * pSrcA, + uint32_t srcALen, + const q7_t * pSrcB, + uint32_t srcBLen, + q7_t * pDst); + + + /** + * @brief Instance structure for the floating-point sparse FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + float32_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + const float32_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_f32; + + /** + * @brief Instance structure for the Q31 sparse FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + q31_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + const q31_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_q31; + + /** + * @brief Instance structure for the Q15 sparse FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + q15_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + const q15_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_q15; + + /** + * @brief Instance structure for the Q7 sparse FIR filter. + */ + typedef struct + { + uint16_t numTaps; /**< number of coefficients in the filter. */ + uint16_t stateIndex; /**< state buffer index. Points to the oldest sample in the state buffer. */ + q7_t *pState; /**< points to the state buffer array. The array is of length maxDelay+blockSize-1. */ + const q7_t *pCoeffs; /**< points to the coefficient array. The array is of length numTaps.*/ + uint16_t maxDelay; /**< maximum offset specified by the pTapDelay array. */ + int32_t *pTapDelay; /**< points to the array of delay values. The array is of length numTaps. */ + } arm_fir_sparse_instance_q7; + + + /** + * @brief Processing function for the floating-point sparse FIR filter. + * @param[in] S points to an instance of the floating-point sparse FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] pScratchIn points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_sparse_f32( + arm_fir_sparse_instance_f32 * S, + const float32_t * pSrc, + float32_t * pDst, + float32_t * pScratchIn, + uint32_t blockSize); + + + /** + * @brief Initialization function for the floating-point sparse FIR filter. + * @param[in,out] S points to an instance of the floating-point sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] pCoeffs points to the array of filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + */ + void arm_fir_sparse_init_f32( + arm_fir_sparse_instance_f32 * S, + uint16_t numTaps, + const float32_t * pCoeffs, + float32_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q31 sparse FIR filter. + * @param[in] S points to an instance of the Q31 sparse FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] pScratchIn points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_sparse_q31( + arm_fir_sparse_instance_q31 * S, + const q31_t * pSrc, + q31_t * pDst, + q31_t * pScratchIn, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q31 sparse FIR filter. + * @param[in,out] S points to an instance of the Q31 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] pCoeffs points to the array of filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + */ + void arm_fir_sparse_init_q31( + arm_fir_sparse_instance_q31 * S, + uint16_t numTaps, + const q31_t * pCoeffs, + q31_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q15 sparse FIR filter. + * @param[in] S points to an instance of the Q15 sparse FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] pScratchIn points to a temporary buffer of size blockSize. + * @param[in] pScratchOut points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_sparse_q15( + arm_fir_sparse_instance_q15 * S, + const q15_t * pSrc, + q15_t * pDst, + q15_t * pScratchIn, + q31_t * pScratchOut, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q15 sparse FIR filter. + * @param[in,out] S points to an instance of the Q15 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] pCoeffs points to the array of filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + */ + void arm_fir_sparse_init_q15( + arm_fir_sparse_instance_q15 * S, + uint16_t numTaps, + const q15_t * pCoeffs, + q15_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + + /** + * @brief Processing function for the Q7 sparse FIR filter. + * @param[in] S points to an instance of the Q7 sparse FIR structure. + * @param[in] pSrc points to the block of input data. + * @param[out] pDst points to the block of output data + * @param[in] pScratchIn points to a temporary buffer of size blockSize. + * @param[in] pScratchOut points to a temporary buffer of size blockSize. + * @param[in] blockSize number of input samples to process per call. + */ + void arm_fir_sparse_q7( + arm_fir_sparse_instance_q7 * S, + const q7_t * pSrc, + q7_t * pDst, + q7_t * pScratchIn, + q31_t * pScratchOut, + uint32_t blockSize); + + + /** + * @brief Initialization function for the Q7 sparse FIR filter. + * @param[in,out] S points to an instance of the Q7 sparse FIR structure. + * @param[in] numTaps number of nonzero coefficients in the filter. + * @param[in] pCoeffs points to the array of filter coefficients. + * @param[in] pState points to the state buffer. + * @param[in] pTapDelay points to the array of offset times. + * @param[in] maxDelay maximum offset time supported. + * @param[in] blockSize number of samples that will be processed per block. + */ + void arm_fir_sparse_init_q7( + arm_fir_sparse_instance_q7 * S, + uint16_t numTaps, + const q7_t * pCoeffs, + q7_t * pState, + int32_t * pTapDelay, + uint16_t maxDelay, + uint32_t blockSize); + + + /** + * @brief Floating-point sin_cos function. + * @param[in] theta input value in degrees + * @param[out] pSinVal points to the processed sine output. + * @param[out] pCosVal points to the processed cos output. + */ + void arm_sin_cos_f32( + float32_t theta, + float32_t * pSinVal, + float32_t * pCosVal); + + + /** + * @brief Q31 sin_cos function. + * @param[in] theta scaled input value in degrees + * @param[out] pSinVal points to the processed sine output. + * @param[out] pCosVal points to the processed cosine output. + */ + void arm_sin_cos_q31( + q31_t theta, + q31_t * pSinVal, + q31_t * pCosVal); + + + /** + * @brief Floating-point complex conjugate. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_conj_f32( + const float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + + /** + * @brief Q31 complex conjugate. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_conj_q31( + const q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q15 complex conjugate. + * @param[in] pSrc points to the input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_conj_q15( + const q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + + + /** + * @brief Floating-point complex magnitude squared + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_squared_f32( + const float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q31 complex magnitude squared + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_squared_q31( + const q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q15 complex magnitude squared + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_squared_q15( + const q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + + + /** + * @ingroup groupController + */ + + /** + * @defgroup PID PID Motor Control + * + * A Proportional Integral Derivative (PID) controller is a generic feedback control + * loop mechanism widely used in industrial control systems. + * A PID controller is the most commonly used type of feedback controller. + * + * This set of functions implements (PID) controllers + * for Q15, Q31, and floating-point data types. The functions operate on a single sample + * of data and each call to the function returns a single processed value. + * S points to an instance of the PID control data structure. in + * is the input sample value. The functions return the output value. + * + * \par Algorithm: + *
+   *    y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2]
+   *    A0 = Kp + Ki + Kd
+   *    A1 = (-Kp ) - (2 * Kd )
+   *    A2 = Kd
+   * 
+ * + * \par + * where \c Kp is proportional constant, \c Ki is Integral constant and \c Kd is Derivative constant + * + * \par + * \image html PID.gif "Proportional Integral Derivative Controller" + * + * \par + * The PID controller calculates an "error" value as the difference between + * the measured output and the reference input. + * The controller attempts to minimize the error by adjusting the process control inputs. + * The proportional value determines the reaction to the current error, + * the integral value determines the reaction based on the sum of recent errors, + * and the derivative value determines the reaction based on the rate at which the error has been changing. + * + * \par Instance Structure + * The Gains A0, A1, A2 and state variables for a PID controller are stored together in an instance data structure. + * A separate instance structure must be defined for each PID Controller. + * There are separate instance structure declarations for each of the 3 supported data types. + * + * \par Reset Functions + * There is also an associated reset function for each data type which clears the state array. + * + * \par Initialization Functions + * There is also an associated initialization function for each data type. + * The initialization function performs the following operations: + * - Initializes the Gains A0, A1, A2 from Kp,Ki, Kd gains. + * - Zeros out the values in the state buffer. + * + * \par + * Instance structure cannot be placed into a const data section and it is recommended to use the initialization function. + * + * \par Fixed-Point Behavior + * Care must be taken when using the fixed-point versions of the PID Controller functions. + * In particular, the overflow and saturation behavior of the accumulator used in each function must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup PID + * @{ + */ + + /** + * @brief Process function for the floating-point PID Control. + * @param[in,out] S is an instance of the floating-point PID Control structure + * @param[in] in input sample to process + * @return processed output sample. + */ + __STATIC_FORCEINLINE float32_t arm_pid_f32( + arm_pid_instance_f32 * S, + float32_t in) + { + float32_t out; + + /* y[n] = y[n-1] + A0 * x[n] + A1 * x[n-1] + A2 * x[n-2] */ + out = (S->A0 * in) + + (S->A1 * S->state[0]) + (S->A2 * S->state[1]) + (S->state[2]); + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); + + } + +/** + @brief Process function for the Q31 PID Control. + @param[in,out] S points to an instance of the Q31 PID Control structure + @param[in] in input sample to process + @return processed output sample. + + \par Scaling and Overflow Behavior + The function is implemented using an internal 64-bit accumulator. + The accumulator has a 2.62 format and maintains full precision of the intermediate multiplication results but provides only a single guard bit. + Thus, if the accumulator result overflows it wraps around rather than clip. + In order to avoid overflows completely the input signal must be scaled down by 2 bits as there are four additions. + After all multiply-accumulates are performed, the 2.62 accumulator is truncated to 1.32 format and then saturated to 1.31 format. + */ +__STATIC_FORCEINLINE q31_t arm_pid_q31( + arm_pid_instance_q31 * S, + q31_t in) + { + q63_t acc; + q31_t out; + + /* acc = A0 * x[n] */ + acc = (q63_t) S->A0 * in; + + /* acc += A1 * x[n-1] */ + acc += (q63_t) S->A1 * S->state[0]; + + /* acc += A2 * x[n-2] */ + acc += (q63_t) S->A2 * S->state[1]; + + /* convert output to 1.31 format to add y[n-1] */ + out = (q31_t) (acc >> 31U); + + /* out += y[n-1] */ + out += S->state[2]; + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); + } + + +/** + @brief Process function for the Q15 PID Control. + @param[in,out] S points to an instance of the Q15 PID Control structure + @param[in] in input sample to process + @return processed output sample. + + \par Scaling and Overflow Behavior + The function is implemented using a 64-bit internal accumulator. + Both Gains and state variables are represented in 1.15 format and multiplications yield a 2.30 result. + The 2.30 intermediate results are accumulated in a 64-bit accumulator in 34.30 format. + There is no risk of internal overflow with this approach and the full precision of intermediate multiplications is preserved. + After all additions have been performed, the accumulator is truncated to 34.15 format by discarding low 15 bits. + Lastly, the accumulator is saturated to yield a result in 1.15 format. + */ +__STATIC_FORCEINLINE q15_t arm_pid_q15( + arm_pid_instance_q15 * S, + q15_t in) + { + q63_t acc; + q15_t out; + +#if defined (ARM_MATH_DSP) + /* Implementation of PID controller */ + + /* acc = A0 * x[n] */ + acc = (q31_t) __SMUAD((uint32_t)S->A0, (uint32_t)in); + + /* acc += A1 * x[n-1] + A2 * x[n-2] */ + acc = (q63_t)__SMLALD((uint32_t)S->A1, (uint32_t)read_q15x2 (S->state), (uint64_t)acc); +#else + /* acc = A0 * x[n] */ + acc = ((q31_t) S->A0) * in; + + /* acc += A1 * x[n-1] + A2 * x[n-2] */ + acc += (q31_t) S->A1 * S->state[0]; + acc += (q31_t) S->A2 * S->state[1]; +#endif + + /* acc += y[n-1] */ + acc += (q31_t) S->state[2] << 15; + + /* saturate the output */ + out = (q15_t) (__SSAT((q31_t)(acc >> 15), 16)); + + /* Update state */ + S->state[1] = S->state[0]; + S->state[0] = in; + S->state[2] = out; + + /* return to application */ + return (out); + } + + /** + * @} end of PID group + */ + + + /** + * @brief Floating-point matrix inverse. + * @param[in] src points to the instance of the input floating-point matrix structure. + * @param[out] dst points to the instance of the output floating-point matrix structure. + * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match. + * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR. + */ + arm_status arm_mat_inverse_f32( + const arm_matrix_instance_f32 * src, + arm_matrix_instance_f32 * dst); + + + /** + * @brief Floating-point matrix inverse. + * @param[in] src points to the instance of the input floating-point matrix structure. + * @param[out] dst points to the instance of the output floating-point matrix structure. + * @return The function returns ARM_MATH_SIZE_MISMATCH, if the dimensions do not match. + * If the input matrix is singular (does not have an inverse), then the algorithm terminates and returns error status ARM_MATH_SINGULAR. + */ + arm_status arm_mat_inverse_f64( + const arm_matrix_instance_f64 * src, + arm_matrix_instance_f64 * dst); + + + + /** + * @ingroup groupController + */ + + /** + * @defgroup clarke Vector Clarke Transform + * Forward Clarke transform converts the instantaneous stator phases into a two-coordinate time invariant vector. + * Generally the Clarke transform uses three-phase currents Ia, Ib and Ic to calculate currents + * in the two-phase orthogonal stator axis Ialpha and Ibeta. + * When Ialpha is superposed with Ia as shown in the figure below + * \image html clarke.gif Stator current space vector and its components in (a,b). + * and Ia + Ib + Ic = 0, in this condition Ialpha and Ibeta + * can be calculated using only Ia and Ib. + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html clarkeFormula.gif + * where Ia and Ib are the instantaneous stator phases and + * pIalpha and pIbeta are the two coordinates of time invariant vector. + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Clarke transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup clarke + * @{ + */ + + /** + * + * @brief Floating-point Clarke transform + * @param[in] Ia input three-phase coordinate a + * @param[in] Ib input three-phase coordinate b + * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] pIbeta points to output two-phase orthogonal vector axis beta + * @return none + */ + __STATIC_FORCEINLINE void arm_clarke_f32( + float32_t Ia, + float32_t Ib, + float32_t * pIalpha, + float32_t * pIbeta) + { + /* Calculate pIalpha using the equation, pIalpha = Ia */ + *pIalpha = Ia; + + /* Calculate pIbeta using the equation, pIbeta = (1/sqrt(3)) * Ia + (2/sqrt(3)) * Ib */ + *pIbeta = ((float32_t) 0.57735026919 * Ia + (float32_t) 1.15470053838 * Ib); + } + + +/** + @brief Clarke transform for Q31 version + @param[in] Ia input three-phase coordinate a + @param[in] Ib input three-phase coordinate b + @param[out] pIalpha points to output two-phase orthogonal vector axis alpha + @param[out] pIbeta points to output two-phase orthogonal vector axis beta + @return none + + \par Scaling and Overflow Behavior + The function is implemented using an internal 32-bit accumulator. + The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + There is saturation on the addition, hence there is no risk of overflow. + */ +__STATIC_FORCEINLINE void arm_clarke_q31( + q31_t Ia, + q31_t Ib, + q31_t * pIalpha, + q31_t * pIbeta) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + + /* Calculating pIalpha from Ia by equation pIalpha = Ia */ + *pIalpha = Ia; + + /* Intermediate product is calculated by (1/(sqrt(3)) * Ia) */ + product1 = (q31_t) (((q63_t) Ia * 0x24F34E8B) >> 30); + + /* Intermediate product is calculated by (2/sqrt(3) * Ib) */ + product2 = (q31_t) (((q63_t) Ib * 0x49E69D16) >> 30); + + /* pIbeta is calculated by adding the intermediate products */ + *pIbeta = __QADD(product1, product2); + } + + /** + * @} end of clarke group + */ + + + /** + * @ingroup groupController + */ + + /** + * @defgroup inv_clarke Vector Inverse Clarke Transform + * Inverse Clarke transform converts the two-coordinate time invariant vector into instantaneous stator phases. + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html clarkeInvFormula.gif + * where pIa and pIb are the instantaneous stator phases and + * Ialpha and Ibeta are the two coordinates of time invariant vector. + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Clarke transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup inv_clarke + * @{ + */ + + /** + * @brief Floating-point Inverse Clarke transform + * @param[in] Ialpha input two-phase orthogonal vector axis alpha + * @param[in] Ibeta input two-phase orthogonal vector axis beta + * @param[out] pIa points to output three-phase coordinate a + * @param[out] pIb points to output three-phase coordinate b + * @return none + */ + __STATIC_FORCEINLINE void arm_inv_clarke_f32( + float32_t Ialpha, + float32_t Ibeta, + float32_t * pIa, + float32_t * pIb) + { + /* Calculating pIa from Ialpha by equation pIa = Ialpha */ + *pIa = Ialpha; + + /* Calculating pIb from Ialpha and Ibeta by equation pIb = -(1/2) * Ialpha + (sqrt(3)/2) * Ibeta */ + *pIb = -0.5f * Ialpha + 0.8660254039f * Ibeta; + } + + +/** + @brief Inverse Clarke transform for Q31 version + @param[in] Ialpha input two-phase orthogonal vector axis alpha + @param[in] Ibeta input two-phase orthogonal vector axis beta + @param[out] pIa points to output three-phase coordinate a + @param[out] pIb points to output three-phase coordinate b + @return none + + \par Scaling and Overflow Behavior + The function is implemented using an internal 32-bit accumulator. + The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + There is saturation on the subtraction, hence there is no risk of overflow. + */ +__STATIC_FORCEINLINE void arm_inv_clarke_q31( + q31_t Ialpha, + q31_t Ibeta, + q31_t * pIa, + q31_t * pIb) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + + /* Calculating pIa from Ialpha by equation pIa = Ialpha */ + *pIa = Ialpha; + + /* Intermediate product is calculated by (1/(2*sqrt(3)) * Ia) */ + product1 = (q31_t) (((q63_t) (Ialpha) * (0x40000000)) >> 31); + + /* Intermediate product is calculated by (1/sqrt(3) * pIb) */ + product2 = (q31_t) (((q63_t) (Ibeta) * (0x6ED9EBA1)) >> 31); + + /* pIb is calculated by subtracting the products */ + *pIb = __QSUB(product2, product1); + } + + /** + * @} end of inv_clarke group + */ + + + + /** + * @ingroup groupController + */ + + /** + * @defgroup park Vector Park Transform + * + * Forward Park transform converts the input two-coordinate vector to flux and torque components. + * The Park transform can be used to realize the transformation of the Ialpha and the Ibeta currents + * from the stationary to the moving reference frame and control the spatial relationship between + * the stator vector current and rotor flux vector. + * If we consider the d axis aligned with the rotor flux, the diagram below shows the + * current vector and the relationship from the two reference frames: + * \image html park.gif "Stator current space vector and its component in (a,b) and in the d,q rotating reference frame" + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html parkFormula.gif + * where Ialpha and Ibeta are the stator vector components, + * pId and pIq are rotor vector components and cosVal and sinVal are the + * cosine and sine values of theta (rotor flux position). + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Park transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup park + * @{ + */ + + /** + * @brief Floating-point Park transform + * @param[in] Ialpha input two-phase vector coordinate alpha + * @param[in] Ibeta input two-phase vector coordinate beta + * @param[out] pId points to output rotor reference frame d + * @param[out] pIq points to output rotor reference frame q + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + * @return none + * + * The function implements the forward Park transform. + * + */ + __STATIC_FORCEINLINE void arm_park_f32( + float32_t Ialpha, + float32_t Ibeta, + float32_t * pId, + float32_t * pIq, + float32_t sinVal, + float32_t cosVal) + { + /* Calculate pId using the equation, pId = Ialpha * cosVal + Ibeta * sinVal */ + *pId = Ialpha * cosVal + Ibeta * sinVal; + + /* Calculate pIq using the equation, pIq = - Ialpha * sinVal + Ibeta * cosVal */ + *pIq = -Ialpha * sinVal + Ibeta * cosVal; + } + + +/** + @brief Park transform for Q31 version + @param[in] Ialpha input two-phase vector coordinate alpha + @param[in] Ibeta input two-phase vector coordinate beta + @param[out] pId points to output rotor reference frame d + @param[out] pIq points to output rotor reference frame q + @param[in] sinVal sine value of rotation angle theta + @param[in] cosVal cosine value of rotation angle theta + @return none + + \par Scaling and Overflow Behavior + The function is implemented using an internal 32-bit accumulator. + The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + There is saturation on the addition and subtraction, hence there is no risk of overflow. + */ +__STATIC_FORCEINLINE void arm_park_q31( + q31_t Ialpha, + q31_t Ibeta, + q31_t * pId, + q31_t * pIq, + q31_t sinVal, + q31_t cosVal) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + q31_t product3, product4; /* Temporary variables used to store intermediate results */ + + /* Intermediate product is calculated by (Ialpha * cosVal) */ + product1 = (q31_t) (((q63_t) (Ialpha) * (cosVal)) >> 31); + + /* Intermediate product is calculated by (Ibeta * sinVal) */ + product2 = (q31_t) (((q63_t) (Ibeta) * (sinVal)) >> 31); + + + /* Intermediate product is calculated by (Ialpha * sinVal) */ + product3 = (q31_t) (((q63_t) (Ialpha) * (sinVal)) >> 31); + + /* Intermediate product is calculated by (Ibeta * cosVal) */ + product4 = (q31_t) (((q63_t) (Ibeta) * (cosVal)) >> 31); + + /* Calculate pId by adding the two intermediate products 1 and 2 */ + *pId = __QADD(product1, product2); + + /* Calculate pIq by subtracting the two intermediate products 3 from 4 */ + *pIq = __QSUB(product4, product3); + } + + /** + * @} end of park group + */ + + + /** + * @ingroup groupController + */ + + /** + * @defgroup inv_park Vector Inverse Park transform + * Inverse Park transform converts the input flux and torque components to two-coordinate vector. + * + * The function operates on a single sample of data and each call to the function returns the processed output. + * The library provides separate functions for Q31 and floating-point data types. + * \par Algorithm + * \image html parkInvFormula.gif + * where pIalpha and pIbeta are the stator vector components, + * Id and Iq are rotor vector components and cosVal and sinVal are the + * cosine and sine values of theta (rotor flux position). + * \par Fixed-Point Behavior + * Care must be taken when using the Q31 version of the Park transform. + * In particular, the overflow and saturation behavior of the accumulator used must be considered. + * Refer to the function specific documentation below for usage guidelines. + */ + + /** + * @addtogroup inv_park + * @{ + */ + + /** + * @brief Floating-point Inverse Park transform + * @param[in] Id input coordinate of rotor reference frame d + * @param[in] Iq input coordinate of rotor reference frame q + * @param[out] pIalpha points to output two-phase orthogonal vector axis alpha + * @param[out] pIbeta points to output two-phase orthogonal vector axis beta + * @param[in] sinVal sine value of rotation angle theta + * @param[in] cosVal cosine value of rotation angle theta + * @return none + */ + __STATIC_FORCEINLINE void arm_inv_park_f32( + float32_t Id, + float32_t Iq, + float32_t * pIalpha, + float32_t * pIbeta, + float32_t sinVal, + float32_t cosVal) + { + /* Calculate pIalpha using the equation, pIalpha = Id * cosVal - Iq * sinVal */ + *pIalpha = Id * cosVal - Iq * sinVal; + + /* Calculate pIbeta using the equation, pIbeta = Id * sinVal + Iq * cosVal */ + *pIbeta = Id * sinVal + Iq * cosVal; + } + + +/** + @brief Inverse Park transform for Q31 version + @param[in] Id input coordinate of rotor reference frame d + @param[in] Iq input coordinate of rotor reference frame q + @param[out] pIalpha points to output two-phase orthogonal vector axis alpha + @param[out] pIbeta points to output two-phase orthogonal vector axis beta + @param[in] sinVal sine value of rotation angle theta + @param[in] cosVal cosine value of rotation angle theta + @return none + + @par Scaling and Overflow Behavior + The function is implemented using an internal 32-bit accumulator. + The accumulator maintains 1.31 format by truncating lower 31 bits of the intermediate multiplication in 2.62 format. + There is saturation on the addition, hence there is no risk of overflow. + */ +__STATIC_FORCEINLINE void arm_inv_park_q31( + q31_t Id, + q31_t Iq, + q31_t * pIalpha, + q31_t * pIbeta, + q31_t sinVal, + q31_t cosVal) + { + q31_t product1, product2; /* Temporary variables used to store intermediate results */ + q31_t product3, product4; /* Temporary variables used to store intermediate results */ + + /* Intermediate product is calculated by (Id * cosVal) */ + product1 = (q31_t) (((q63_t) (Id) * (cosVal)) >> 31); + + /* Intermediate product is calculated by (Iq * sinVal) */ + product2 = (q31_t) (((q63_t) (Iq) * (sinVal)) >> 31); + + + /* Intermediate product is calculated by (Id * sinVal) */ + product3 = (q31_t) (((q63_t) (Id) * (sinVal)) >> 31); + + /* Intermediate product is calculated by (Iq * cosVal) */ + product4 = (q31_t) (((q63_t) (Iq) * (cosVal)) >> 31); + + /* Calculate pIalpha by using the two intermediate products 1 and 2 */ + *pIalpha = __QSUB(product1, product2); + + /* Calculate pIbeta by using the two intermediate products 3 and 4 */ + *pIbeta = __QADD(product4, product3); + } + + /** + * @} end of Inverse park group + */ + + + /** + * @ingroup groupInterpolation + */ + + /** + * @defgroup LinearInterpolate Linear Interpolation + * + * Linear interpolation is a method of curve fitting using linear polynomials. + * Linear interpolation works by effectively drawing a straight line between two neighboring samples and returning the appropriate point along that line + * + * \par + * \image html LinearInterp.gif "Linear interpolation" + * + * \par + * A Linear Interpolate function calculates an output value(y), for the input(x) + * using linear interpolation of the input values x0, x1( nearest input values) and the output values y0 and y1(nearest output values) + * + * \par Algorithm: + *
+   *       y = y0 + (x - x0) * ((y1 - y0)/(x1-x0))
+   *       where x0, x1 are nearest values of input x
+   *             y0, y1 are nearest values to output y
+   * 
+ * + * \par + * This set of functions implements Linear interpolation process + * for Q7, Q15, Q31, and floating-point data types. The functions operate on a single + * sample of data and each call to the function returns a single processed value. + * S points to an instance of the Linear Interpolate function data structure. + * x is the input sample value. The functions returns the output value. + * + * \par + * if x is outside of the table boundary, Linear interpolation returns first value of the table + * if x is below input range and returns last value of table if x is above range. + */ + + /** + * @addtogroup LinearInterpolate + * @{ + */ + + /** + * @brief Process function for the floating-point Linear Interpolation Function. + * @param[in,out] S is an instance of the floating-point Linear Interpolation structure + * @param[in] x input sample to process + * @return y processed output sample. + * + */ + __STATIC_FORCEINLINE float32_t arm_linear_interp_f32( + arm_linear_interp_instance_f32 * S, + float32_t x) + { + float32_t y; + float32_t x0, x1; /* Nearest input values */ + float32_t y0, y1; /* Nearest output values */ + float32_t xSpacing = S->xSpacing; /* spacing between input values */ + int32_t i; /* Index variable */ + float32_t *pYData = S->pYData; /* pointer to output table */ + + /* Calculation of index */ + i = (int32_t) ((x - S->x1) / xSpacing); + + if (i < 0) + { + /* Iniatilize output for below specified range as least output value of table */ + y = pYData[0]; + } + else if ((uint32_t)i >= (S->nValues - 1)) + { + /* Iniatilize output for above specified range as last output value of table */ + y = pYData[S->nValues - 1]; + } + else + { + /* Calculation of nearest input values */ + x0 = S->x1 + i * xSpacing; + x1 = S->x1 + (i + 1) * xSpacing; + + /* Read of nearest output values */ + y0 = pYData[i]; + y1 = pYData[i + 1]; + + /* Calculation of output */ + y = y0 + (x - x0) * ((y1 - y0) / (x1 - x0)); + + } + + /* returns output value */ + return (y); + } + + + /** + * + * @brief Process function for the Q31 Linear Interpolation Function. + * @param[in] pYData pointer to Q31 Linear Interpolation table + * @param[in] x input sample to process + * @param[in] nValues number of table values + * @return y processed output sample. + * + * \par + * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. + * This function can support maximum of table size 2^12. + * + */ + __STATIC_FORCEINLINE q31_t arm_linear_interp_q31( + q31_t * pYData, + q31_t x, + uint32_t nValues) + { + q31_t y; /* output */ + q31_t y0, y1; /* Nearest output values */ + q31_t fract; /* fractional part */ + int32_t index; /* Index to read nearest output values */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + index = ((x & (q31_t)0xFFF00000) >> 20); + + if (index >= (int32_t)(nValues - 1)) + { + return (pYData[nValues - 1]); + } + else if (index < 0) + { + return (pYData[0]); + } + else + { + /* 20 bits for the fractional part */ + /* shift left by 11 to keep fract in 1.31 format */ + fract = (x & 0x000FFFFF) << 11; + + /* Read two nearest output values from the index in 1.31(q31) format */ + y0 = pYData[index]; + y1 = pYData[index + 1]; + + /* Calculation of y0 * (1-fract) and y is in 2.30 format */ + y = ((q31_t) ((q63_t) y0 * (0x7FFFFFFF - fract) >> 32)); + + /* Calculation of y0 * (1-fract) + y1 *fract and y is in 2.30 format */ + y += ((q31_t) (((q63_t) y1 * fract) >> 32)); + + /* Convert y to 1.31 format */ + return (y << 1U); + } + } + + + /** + * + * @brief Process function for the Q15 Linear Interpolation Function. + * @param[in] pYData pointer to Q15 Linear Interpolation table + * @param[in] x input sample to process + * @param[in] nValues number of table values + * @return y processed output sample. + * + * \par + * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. + * This function can support maximum of table size 2^12. + * + */ + __STATIC_FORCEINLINE q15_t arm_linear_interp_q15( + q15_t * pYData, + q31_t x, + uint32_t nValues) + { + q63_t y; /* output */ + q15_t y0, y1; /* Nearest output values */ + q31_t fract; /* fractional part */ + int32_t index; /* Index to read nearest output values */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + index = ((x & (int32_t)0xFFF00000) >> 20); + + if (index >= (int32_t)(nValues - 1)) + { + return (pYData[nValues - 1]); + } + else if (index < 0) + { + return (pYData[0]); + } + else + { + /* 20 bits for the fractional part */ + /* fract is in 12.20 format */ + fract = (x & 0x000FFFFF); + + /* Read two nearest output values from the index */ + y0 = pYData[index]; + y1 = pYData[index + 1]; + + /* Calculation of y0 * (1-fract) and y is in 13.35 format */ + y = ((q63_t) y0 * (0xFFFFF - fract)); + + /* Calculation of (y0 * (1-fract) + y1 * fract) and y is in 13.35 format */ + y += ((q63_t) y1 * (fract)); + + /* convert y to 1.15 format */ + return (q15_t) (y >> 20); + } + } + + + /** + * + * @brief Process function for the Q7 Linear Interpolation Function. + * @param[in] pYData pointer to Q7 Linear Interpolation table + * @param[in] x input sample to process + * @param[in] nValues number of table values + * @return y processed output sample. + * + * \par + * Input sample x is in 12.20 format which contains 12 bits for table index and 20 bits for fractional part. + * This function can support maximum of table size 2^12. + */ + __STATIC_FORCEINLINE q7_t arm_linear_interp_q7( + q7_t * pYData, + q31_t x, + uint32_t nValues) + { + q31_t y; /* output */ + q7_t y0, y1; /* Nearest output values */ + q31_t fract; /* fractional part */ + uint32_t index; /* Index to read nearest output values */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + if (x < 0) + { + return (pYData[0]); + } + index = (x >> 20) & 0xfff; + + if (index >= (nValues - 1)) + { + return (pYData[nValues - 1]); + } + else + { + /* 20 bits for the fractional part */ + /* fract is in 12.20 format */ + fract = (x & 0x000FFFFF); + + /* Read two nearest output values from the index and are in 1.7(q7) format */ + y0 = pYData[index]; + y1 = pYData[index + 1]; + + /* Calculation of y0 * (1-fract ) and y is in 13.27(q27) format */ + y = ((y0 * (0xFFFFF - fract))); + + /* Calculation of y1 * fract + y0 * (1-fract) and y is in 13.27(q27) format */ + y += (y1 * fract); + + /* convert y to 1.7(q7) format */ + return (q7_t) (y >> 20); + } + } + + /** + * @} end of LinearInterpolate group + */ + + /** + * @brief Fast approximation to the trigonometric sine function for floating-point data. + * @param[in] x input value in radians. + * @return sin(x). + */ + float32_t arm_sin_f32( + float32_t x); + + + /** + * @brief Fast approximation to the trigonometric sine function for Q31 data. + * @param[in] x Scaled input value in radians. + * @return sin(x). + */ + q31_t arm_sin_q31( + q31_t x); + + + /** + * @brief Fast approximation to the trigonometric sine function for Q15 data. + * @param[in] x Scaled input value in radians. + * @return sin(x). + */ + q15_t arm_sin_q15( + q15_t x); + + + /** + * @brief Fast approximation to the trigonometric cosine function for floating-point data. + * @param[in] x input value in radians. + * @return cos(x). + */ + float32_t arm_cos_f32( + float32_t x); + + + /** + * @brief Fast approximation to the trigonometric cosine function for Q31 data. + * @param[in] x Scaled input value in radians. + * @return cos(x). + */ + q31_t arm_cos_q31( + q31_t x); + + + /** + * @brief Fast approximation to the trigonometric cosine function for Q15 data. + * @param[in] x Scaled input value in radians. + * @return cos(x). + */ + q15_t arm_cos_q15( + q15_t x); + + +/** + @brief Floating-point vector of log values. + @param[in] pSrc points to the input vector + @param[out] pDst points to the output vector + @param[in] blockSize number of samples in each vector + @return none + */ + void arm_vlog_f32( + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + +/** + @brief Floating-point vector of exp values. + @param[in] pSrc points to the input vector + @param[out] pDst points to the output vector + @param[in] blockSize number of samples in each vector + @return none + */ + void arm_vexp_f32( + const float32_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + /** + * @ingroup groupFastMath + */ + + + /** + * @defgroup SQRT Square Root + * + * Computes the square root of a number. + * There are separate functions for Q15, Q31, and floating-point data types. + * The square root function is computed using the Newton-Raphson algorithm. + * This is an iterative algorithm of the form: + *
+   *      x1 = x0 - f(x0)/f'(x0)
+   * 
+ * where x1 is the current estimate, + * x0 is the previous estimate, and + * f'(x0) is the derivative of f() evaluated at x0. + * For the square root function, the algorithm reduces to: + *
+   *     x0 = in/2                         [initial guess]
+   *     x1 = 1/2 * ( x0 + in / x0)        [each iteration]
+   * 
+ */ + + + /** + * @addtogroup SQRT + * @{ + */ + +/** + @brief Floating-point square root function. + @param[in] in input value + @param[out] pOut square root of input value + @return execution status + - \ref ARM_MATH_SUCCESS : input value is positive + - \ref ARM_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0 + */ +__STATIC_FORCEINLINE arm_status arm_sqrt_f32( + float32_t in, + float32_t * pOut) + { + if (in >= 0.0f) + { +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + *pOut = __sqrtf(in); + #else + *pOut = sqrtf(in); + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + __ASM("VSQRT.F32 %0,%1" : "=t"(*pOut) : "t"(in)); + #else + *pOut = sqrtf(in); + #endif + +#else + *pOut = sqrtf(in); +#endif + + return (ARM_MATH_SUCCESS); + } + else + { + *pOut = 0.0f; + return (ARM_MATH_ARGUMENT_ERROR); + } + } + + +/** + @brief Q31 square root function. + @param[in] in input value. The range of the input value is [0 +1) or 0x00000000 to 0x7FFFFFFF + @param[out] pOut points to square root of input value + @return execution status + - \ref ARM_MATH_SUCCESS : input value is positive + - \ref ARM_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0 + */ +arm_status arm_sqrt_q31( + q31_t in, + q31_t * pOut); + + +/** + @brief Q15 square root function. + @param[in] in input value. The range of the input value is [0 +1) or 0x0000 to 0x7FFF + @param[out] pOut points to square root of input value + @return execution status + - \ref ARM_MATH_SUCCESS : input value is positive + - \ref ARM_MATH_ARGUMENT_ERROR : input value is negative; *pOut is set to 0 + */ +arm_status arm_sqrt_q15( + q15_t in, + q15_t * pOut); + + /** + * @brief Vector Floating-point square root function. + * @param[in] pIn input vector. + * @param[out] pOut vector of square roots of input elements. + * @param[in] len length of input vector. + * @return The function returns ARM_MATH_SUCCESS if input value is positive value or ARM_MATH_ARGUMENT_ERROR if + * in is negative value and returns zero output for negative values. + */ + void arm_vsqrt_f32( + float32_t * pIn, + float32_t * pOut, + uint16_t len); + + void arm_vsqrt_q31( + q31_t * pIn, + q31_t * pOut, + uint16_t len); + + void arm_vsqrt_q15( + q15_t * pIn, + q15_t * pOut, + uint16_t len); + + /** + * @} end of SQRT group + */ + + + /** + * @brief floating-point Circular write function. + */ + __STATIC_FORCEINLINE void arm_circularWrite_f32( + int32_t * circBuffer, + int32_t L, + uint16_t * writeOffset, + int32_t bufferInc, + const int32_t * src, + int32_t srcInc, + uint32_t blockSize) + { + uint32_t i = 0U; + int32_t wOffset; + + /* Copy the value of Index pointer that points + * to the current location where the input samples to be copied */ + wOffset = *writeOffset; + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the input sample to the circular buffer */ + circBuffer[wOffset] = *src; + + /* Update the input pointer */ + src += srcInc; + + /* Circularly update wOffset. Watch out for positive and negative value */ + wOffset += bufferInc; + if (wOffset >= L) + wOffset -= L; + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *writeOffset = (uint16_t)wOffset; + } + + + + /** + * @brief floating-point Circular Read function. + */ + __STATIC_FORCEINLINE void arm_circularRead_f32( + int32_t * circBuffer, + int32_t L, + int32_t * readOffset, + int32_t bufferInc, + int32_t * dst, + int32_t * dst_base, + int32_t dst_length, + int32_t dstInc, + uint32_t blockSize) + { + uint32_t i = 0U; + int32_t rOffset; + int32_t* dst_end; + + /* Copy the value of Index pointer that points + * to the current location from where the input samples to be read */ + rOffset = *readOffset; + dst_end = dst_base + dst_length; + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the sample from the circular buffer to the destination buffer */ + *dst = circBuffer[rOffset]; + + /* Update the input pointer */ + dst += dstInc; + + if (dst == dst_end) + { + dst = dst_base; + } + + /* Circularly update rOffset. Watch out for positive and negative value */ + rOffset += bufferInc; + + if (rOffset >= L) + { + rOffset -= L; + } + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *readOffset = rOffset; + } + + + /** + * @brief Q15 Circular write function. + */ + __STATIC_FORCEINLINE void arm_circularWrite_q15( + q15_t * circBuffer, + int32_t L, + uint16_t * writeOffset, + int32_t bufferInc, + const q15_t * src, + int32_t srcInc, + uint32_t blockSize) + { + uint32_t i = 0U; + int32_t wOffset; + + /* Copy the value of Index pointer that points + * to the current location where the input samples to be copied */ + wOffset = *writeOffset; + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the input sample to the circular buffer */ + circBuffer[wOffset] = *src; + + /* Update the input pointer */ + src += srcInc; + + /* Circularly update wOffset. Watch out for positive and negative value */ + wOffset += bufferInc; + if (wOffset >= L) + wOffset -= L; + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *writeOffset = (uint16_t)wOffset; + } + + + /** + * @brief Q15 Circular Read function. + */ + __STATIC_FORCEINLINE void arm_circularRead_q15( + q15_t * circBuffer, + int32_t L, + int32_t * readOffset, + int32_t bufferInc, + q15_t * dst, + q15_t * dst_base, + int32_t dst_length, + int32_t dstInc, + uint32_t blockSize) + { + uint32_t i = 0; + int32_t rOffset; + q15_t* dst_end; + + /* Copy the value of Index pointer that points + * to the current location from where the input samples to be read */ + rOffset = *readOffset; + + dst_end = dst_base + dst_length; + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the sample from the circular buffer to the destination buffer */ + *dst = circBuffer[rOffset]; + + /* Update the input pointer */ + dst += dstInc; + + if (dst == dst_end) + { + dst = dst_base; + } + + /* Circularly update wOffset. Watch out for positive and negative value */ + rOffset += bufferInc; + + if (rOffset >= L) + { + rOffset -= L; + } + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *readOffset = rOffset; + } + + + /** + * @brief Q7 Circular write function. + */ + __STATIC_FORCEINLINE void arm_circularWrite_q7( + q7_t * circBuffer, + int32_t L, + uint16_t * writeOffset, + int32_t bufferInc, + const q7_t * src, + int32_t srcInc, + uint32_t blockSize) + { + uint32_t i = 0U; + int32_t wOffset; + + /* Copy the value of Index pointer that points + * to the current location where the input samples to be copied */ + wOffset = *writeOffset; + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the input sample to the circular buffer */ + circBuffer[wOffset] = *src; + + /* Update the input pointer */ + src += srcInc; + + /* Circularly update wOffset. Watch out for positive and negative value */ + wOffset += bufferInc; + if (wOffset >= L) + wOffset -= L; + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *writeOffset = (uint16_t)wOffset; + } + + + /** + * @brief Q7 Circular Read function. + */ + __STATIC_FORCEINLINE void arm_circularRead_q7( + q7_t * circBuffer, + int32_t L, + int32_t * readOffset, + int32_t bufferInc, + q7_t * dst, + q7_t * dst_base, + int32_t dst_length, + int32_t dstInc, + uint32_t blockSize) + { + uint32_t i = 0; + int32_t rOffset; + q7_t* dst_end; + + /* Copy the value of Index pointer that points + * to the current location from where the input samples to be read */ + rOffset = *readOffset; + + dst_end = dst_base + dst_length; + + /* Loop over the blockSize */ + i = blockSize; + + while (i > 0U) + { + /* copy the sample from the circular buffer to the destination buffer */ + *dst = circBuffer[rOffset]; + + /* Update the input pointer */ + dst += dstInc; + + if (dst == dst_end) + { + dst = dst_base; + } + + /* Circularly update rOffset. Watch out for positive and negative value */ + rOffset += bufferInc; + + if (rOffset >= L) + { + rOffset -= L; + } + + /* Decrement the loop counter */ + i--; + } + + /* Update the index pointer */ + *readOffset = rOffset; + } + + + /** + * @brief Sum of the squares of the elements of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_power_q31( + const q31_t * pSrc, + uint32_t blockSize, + q63_t * pResult); + + + /** + * @brief Sum of the squares of the elements of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_power_f32( + const float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Sum of the squares of the elements of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_power_q15( + const q15_t * pSrc, + uint32_t blockSize, + q63_t * pResult); + + + /** + * @brief Sum of the squares of the elements of a Q7 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_power_q7( + const q7_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Mean value of a Q7 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_mean_q7( + const q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult); + + + /** + * @brief Mean value of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_mean_q15( + const q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + + /** + * @brief Mean value of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_mean_q31( + const q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Mean value of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_mean_f32( + const float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Variance of the elements of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_var_f32( + const float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Variance of the elements of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_var_q31( + const q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Variance of the elements of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_var_q15( + const q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + + /** + * @brief Root Mean Square of the elements of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_rms_f32( + const float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Root Mean Square of the elements of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_rms_q31( + const q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Root Mean Square of the elements of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_rms_q15( + const q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + + /** + * @brief Standard deviation of the elements of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_std_f32( + const float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult); + + + /** + * @brief Standard deviation of the elements of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_std_q31( + const q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult); + + + /** + * @brief Standard deviation of the elements of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output value. + */ + void arm_std_q15( + const q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult); + + + /** + * @brief Floating-point complex magnitude + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_f32( + const float32_t * pSrc, + float32_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q31 complex magnitude + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_q31( + const q31_t * pSrc, + q31_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q15 complex magnitude + * @param[in] pSrc points to the complex input vector + * @param[out] pDst points to the real output vector + * @param[in] numSamples number of complex samples in the input vector + */ + void arm_cmplx_mag_q15( + const q15_t * pSrc, + q15_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q15 complex dot product + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] numSamples number of complex samples in each vector + * @param[out] realResult real part of the result returned here + * @param[out] imagResult imaginary part of the result returned here + */ + void arm_cmplx_dot_prod_q15( + const q15_t * pSrcA, + const q15_t * pSrcB, + uint32_t numSamples, + q31_t * realResult, + q31_t * imagResult); + + + /** + * @brief Q31 complex dot product + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] numSamples number of complex samples in each vector + * @param[out] realResult real part of the result returned here + * @param[out] imagResult imaginary part of the result returned here + */ + void arm_cmplx_dot_prod_q31( + const q31_t * pSrcA, + const q31_t * pSrcB, + uint32_t numSamples, + q63_t * realResult, + q63_t * imagResult); + + + /** + * @brief Floating-point complex dot product + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] numSamples number of complex samples in each vector + * @param[out] realResult real part of the result returned here + * @param[out] imagResult imaginary part of the result returned here + */ + void arm_cmplx_dot_prod_f32( + const float32_t * pSrcA, + const float32_t * pSrcB, + uint32_t numSamples, + float32_t * realResult, + float32_t * imagResult); + + + /** + * @brief Q15 complex-by-real multiplication + * @param[in] pSrcCmplx points to the complex input vector + * @param[in] pSrcReal points to the real input vector + * @param[out] pCmplxDst points to the complex output vector + * @param[in] numSamples number of samples in each vector + */ + void arm_cmplx_mult_real_q15( + const q15_t * pSrcCmplx, + const q15_t * pSrcReal, + q15_t * pCmplxDst, + uint32_t numSamples); + + + /** + * @brief Q31 complex-by-real multiplication + * @param[in] pSrcCmplx points to the complex input vector + * @param[in] pSrcReal points to the real input vector + * @param[out] pCmplxDst points to the complex output vector + * @param[in] numSamples number of samples in each vector + */ + void arm_cmplx_mult_real_q31( + const q31_t * pSrcCmplx, + const q31_t * pSrcReal, + q31_t * pCmplxDst, + uint32_t numSamples); + + + /** + * @brief Floating-point complex-by-real multiplication + * @param[in] pSrcCmplx points to the complex input vector + * @param[in] pSrcReal points to the real input vector + * @param[out] pCmplxDst points to the complex output vector + * @param[in] numSamples number of samples in each vector + */ + void arm_cmplx_mult_real_f32( + const float32_t * pSrcCmplx, + const float32_t * pSrcReal, + float32_t * pCmplxDst, + uint32_t numSamples); + + + /** + * @brief Minimum value of a Q7 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] result is output pointer + * @param[in] index is the array index of the minimum value in the input buffer. + */ + void arm_min_q7( + const q7_t * pSrc, + uint32_t blockSize, + q7_t * result, + uint32_t * index); + + + /** + * @brief Minimum value of a Q15 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output pointer + * @param[in] pIndex is the array index of the minimum value in the input buffer. + */ + void arm_min_q15( + const q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult, + uint32_t * pIndex); + + + /** + * @brief Minimum value of a Q31 vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output pointer + * @param[out] pIndex is the array index of the minimum value in the input buffer. + */ + void arm_min_q31( + const q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult, + uint32_t * pIndex); + + + /** + * @brief Minimum value of a floating-point vector. + * @param[in] pSrc is input pointer + * @param[in] blockSize is the number of samples to process + * @param[out] pResult is output pointer + * @param[out] pIndex is the array index of the minimum value in the input buffer. + */ + void arm_min_f32( + const float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult, + uint32_t * pIndex); + + +/** + * @brief Maximum value of a Q7 vector. + * @param[in] pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] pResult maximum value returned here + * @param[out] pIndex index of maximum value returned here + */ + void arm_max_q7( + const q7_t * pSrc, + uint32_t blockSize, + q7_t * pResult, + uint32_t * pIndex); + + +/** + * @brief Maximum value of a Q15 vector. + * @param[in] pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] pResult maximum value returned here + * @param[out] pIndex index of maximum value returned here + */ + void arm_max_q15( + const q15_t * pSrc, + uint32_t blockSize, + q15_t * pResult, + uint32_t * pIndex); + + +/** + * @brief Maximum value of a Q31 vector. + * @param[in] pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] pResult maximum value returned here + * @param[out] pIndex index of maximum value returned here + */ + void arm_max_q31( + const q31_t * pSrc, + uint32_t blockSize, + q31_t * pResult, + uint32_t * pIndex); + + +/** + * @brief Maximum value of a floating-point vector. + * @param[in] pSrc points to the input buffer + * @param[in] blockSize length of the input vector + * @param[out] pResult maximum value returned here + * @param[out] pIndex index of maximum value returned here + */ + void arm_max_f32( + const float32_t * pSrc, + uint32_t blockSize, + float32_t * pResult, + uint32_t * pIndex); + + /** + @brief Maximum value of a floating-point vector. + @param[in] pSrc points to the input vector + @param[in] blockSize number of samples in input vector + @param[out] pResult maximum value returned here + @return none + */ + void arm_max_no_idx_f32( + const float32_t *pSrc, + uint32_t blockSize, + float32_t *pResult); + + /** + * @brief Q15 complex-by-complex multiplication + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_mult_cmplx_q15( + const q15_t * pSrcA, + const q15_t * pSrcB, + q15_t * pDst, + uint32_t numSamples); + + + /** + * @brief Q31 complex-by-complex multiplication + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_mult_cmplx_q31( + const q31_t * pSrcA, + const q31_t * pSrcB, + q31_t * pDst, + uint32_t numSamples); + + + /** + * @brief Floating-point complex-by-complex multiplication + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[out] pDst points to the output vector + * @param[in] numSamples number of complex samples in each vector + */ + void arm_cmplx_mult_cmplx_f32( + const float32_t * pSrcA, + const float32_t * pSrcB, + float32_t * pDst, + uint32_t numSamples); + + + /** + * @brief Converts the elements of the floating-point vector to Q31 vector. + * @param[in] pSrc points to the floating-point input vector + * @param[out] pDst points to the Q31 output vector + * @param[in] blockSize length of the input vector + */ + void arm_float_to_q31( + const float32_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the floating-point vector to Q15 vector. + * @param[in] pSrc points to the floating-point input vector + * @param[out] pDst points to the Q15 output vector + * @param[in] blockSize length of the input vector + */ + void arm_float_to_q15( + const float32_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the floating-point vector to Q7 vector. + * @param[in] pSrc points to the floating-point input vector + * @param[out] pDst points to the Q7 output vector + * @param[in] blockSize length of the input vector + */ + void arm_float_to_q7( + const float32_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q31 vector to floating-point vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q31_to_float( + const q31_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q31 vector to Q15 vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q31_to_q15( + const q31_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q31 vector to Q7 vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q31_to_q7( + const q31_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q15 vector to floating-point vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q15_to_float( + const q15_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q15 vector to Q31 vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q15_to_q31( + const q15_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q15 vector to Q7 vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q15_to_q7( + const q15_t * pSrc, + q7_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q7 vector to floating-point vector. + * @param[in] pSrc is input pointer + * @param[out] pDst is output pointer + * @param[in] blockSize is the number of samples to process + */ + void arm_q7_to_float( + const q7_t * pSrc, + float32_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q7 vector to Q31 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_q7_to_q31( + const q7_t * pSrc, + q31_t * pDst, + uint32_t blockSize); + + + /** + * @brief Converts the elements of the Q7 vector to Q15 vector. + * @param[in] pSrc input pointer + * @param[out] pDst output pointer + * @param[in] blockSize number of samples to process + */ + void arm_q7_to_q15( + const q7_t * pSrc, + q15_t * pDst, + uint32_t blockSize); + +/** + * @brief Struct for specifying SVM Kernel + */ +typedef enum +{ + ARM_ML_KERNEL_LINEAR = 0, + /**< Linear kernel */ + ARM_ML_KERNEL_POLYNOMIAL = 1, + /**< Polynomial kernel */ + ARM_ML_KERNEL_RBF = 2, + /**< Radial Basis Function kernel */ + ARM_ML_KERNEL_SIGMOID = 3 + /**< Sigmoid kernel */ +} arm_ml_kernel_type; + + +/** + * @brief Instance structure for linear SVM prediction function. + */ +typedef struct +{ + uint32_t nbOfSupportVectors; /**< Number of support vectors */ + uint32_t vectorDimension; /**< Dimension of vector space */ + float32_t intercept; /**< Intercept */ + const float32_t *dualCoefficients; /**< Dual coefficients */ + const float32_t *supportVectors; /**< Support vectors */ + const int32_t *classes; /**< The two SVM classes */ +} arm_svm_linear_instance_f32; + + +/** + * @brief Instance structure for polynomial SVM prediction function. + */ +typedef struct +{ + uint32_t nbOfSupportVectors; /**< Number of support vectors */ + uint32_t vectorDimension; /**< Dimension of vector space */ + float32_t intercept; /**< Intercept */ + const float32_t *dualCoefficients; /**< Dual coefficients */ + const float32_t *supportVectors; /**< Support vectors */ + const int32_t *classes; /**< The two SVM classes */ + int32_t degree; /**< Polynomial degree */ + float32_t coef0; /**< Polynomial constant */ + float32_t gamma; /**< Gamma factor */ +} arm_svm_polynomial_instance_f32; + +/** + * @brief Instance structure for rbf SVM prediction function. + */ +typedef struct +{ + uint32_t nbOfSupportVectors; /**< Number of support vectors */ + uint32_t vectorDimension; /**< Dimension of vector space */ + float32_t intercept; /**< Intercept */ + const float32_t *dualCoefficients; /**< Dual coefficients */ + const float32_t *supportVectors; /**< Support vectors */ + const int32_t *classes; /**< The two SVM classes */ + float32_t gamma; /**< Gamma factor */ +} arm_svm_rbf_instance_f32; + +/** + * @brief Instance structure for sigmoid SVM prediction function. + */ +typedef struct +{ + uint32_t nbOfSupportVectors; /**< Number of support vectors */ + uint32_t vectorDimension; /**< Dimension of vector space */ + float32_t intercept; /**< Intercept */ + const float32_t *dualCoefficients; /**< Dual coefficients */ + const float32_t *supportVectors; /**< Support vectors */ + const int32_t *classes; /**< The two SVM classes */ + float32_t coef0; /**< Independant constant */ + float32_t gamma; /**< Gamma factor */ +} arm_svm_sigmoid_instance_f32; + +/** + * @brief SVM linear instance init function + * @param[in] S Parameters for SVM functions + * @param[in] nbOfSupportVectors Number of support vectors + * @param[in] vectorDimension Dimension of vector space + * @param[in] intercept Intercept + * @param[in] dualCoefficients Array of dual coefficients + * @param[in] supportVectors Array of support vectors + * @param[in] classes Array of 2 classes ID + * @return none. + * + */ + + +void arm_svm_linear_init_f32(arm_svm_linear_instance_f32 *S, + uint32_t nbOfSupportVectors, + uint32_t vectorDimension, + float32_t intercept, + const float32_t *dualCoefficients, + const float32_t *supportVectors, + const int32_t *classes); + +/** + * @brief SVM linear prediction + * @param[in] S Pointer to an instance of the linear SVM structure. + * @param[in] in Pointer to input vector + * @param[out] pResult Decision value + * @return none. + * + */ + +void arm_svm_linear_predict_f32(const arm_svm_linear_instance_f32 *S, + const float32_t * in, + int32_t * pResult); + + +/** + * @brief SVM polynomial instance init function + * @param[in] S points to an instance of the polynomial SVM structure. + * @param[in] nbOfSupportVectors Number of support vectors + * @param[in] vectorDimension Dimension of vector space + * @param[in] intercept Intercept + * @param[in] dualCoefficients Array of dual coefficients + * @param[in] supportVectors Array of support vectors + * @param[in] classes Array of 2 classes ID + * @param[in] degree Polynomial degree + * @param[in] coef0 coeff0 (scikit-learn terminology) + * @param[in] gamma gamma (scikit-learn terminology) + * @return none. + * + */ + + +void arm_svm_polynomial_init_f32(arm_svm_polynomial_instance_f32 *S, + uint32_t nbOfSupportVectors, + uint32_t vectorDimension, + float32_t intercept, + const float32_t *dualCoefficients, + const float32_t *supportVectors, + const int32_t *classes, + int32_t degree, + float32_t coef0, + float32_t gamma + ); + +/** + * @brief SVM polynomial prediction + * @param[in] S Pointer to an instance of the polynomial SVM structure. + * @param[in] in Pointer to input vector + * @param[out] pResult Decision value + * @return none. + * + */ +void arm_svm_polynomial_predict_f32(const arm_svm_polynomial_instance_f32 *S, + const float32_t * in, + int32_t * pResult); + + +/** + * @brief SVM radial basis function instance init function + * @param[in] S points to an instance of the polynomial SVM structure. + * @param[in] nbOfSupportVectors Number of support vectors + * @param[in] vectorDimension Dimension of vector space + * @param[in] intercept Intercept + * @param[in] dualCoefficients Array of dual coefficients + * @param[in] supportVectors Array of support vectors + * @param[in] classes Array of 2 classes ID + * @param[in] gamma gamma (scikit-learn terminology) + * @return none. + * + */ + +void arm_svm_rbf_init_f32(arm_svm_rbf_instance_f32 *S, + uint32_t nbOfSupportVectors, + uint32_t vectorDimension, + float32_t intercept, + const float32_t *dualCoefficients, + const float32_t *supportVectors, + const int32_t *classes, + float32_t gamma + ); + +/** + * @brief SVM rbf prediction + * @param[in] S Pointer to an instance of the rbf SVM structure. + * @param[in] in Pointer to input vector + * @param[out] pResult decision value + * @return none. + * + */ +void arm_svm_rbf_predict_f32(const arm_svm_rbf_instance_f32 *S, + const float32_t * in, + int32_t * pResult); + +/** + * @brief SVM sigmoid instance init function + * @param[in] S points to an instance of the rbf SVM structure. + * @param[in] nbOfSupportVectors Number of support vectors + * @param[in] vectorDimension Dimension of vector space + * @param[in] intercept Intercept + * @param[in] dualCoefficients Array of dual coefficients + * @param[in] supportVectors Array of support vectors + * @param[in] classes Array of 2 classes ID + * @param[in] coef0 coeff0 (scikit-learn terminology) + * @param[in] gamma gamma (scikit-learn terminology) + * @return none. + * + */ + +void arm_svm_sigmoid_init_f32(arm_svm_sigmoid_instance_f32 *S, + uint32_t nbOfSupportVectors, + uint32_t vectorDimension, + float32_t intercept, + const float32_t *dualCoefficients, + const float32_t *supportVectors, + const int32_t *classes, + float32_t coef0, + float32_t gamma + ); + +/** + * @brief SVM sigmoid prediction + * @param[in] S Pointer to an instance of the rbf SVM structure. + * @param[in] in Pointer to input vector + * @param[out] pResult Decision value + * @return none. + * + */ +void arm_svm_sigmoid_predict_f32(const arm_svm_sigmoid_instance_f32 *S, + const float32_t * in, + int32_t * pResult); + + + +/** + * @brief Instance structure for Naive Gaussian Bayesian estimator. + */ +typedef struct +{ + uint32_t vectorDimension; /**< Dimension of vector space */ + uint32_t numberOfClasses; /**< Number of different classes */ + const float32_t *theta; /**< Mean values for the Gaussians */ + const float32_t *sigma; /**< Variances for the Gaussians */ + const float32_t *classPriors; /**< Class prior probabilities */ + float32_t epsilon; /**< Additive value to variances */ +} arm_gaussian_naive_bayes_instance_f32; + +/** + * @brief Naive Gaussian Bayesian Estimator + * + * @param[in] S points to a naive bayes instance structure + * @param[in] in points to the elements of the input vector. + * @param[in] pBuffer points to a buffer of length numberOfClasses + * @return The predicted class + * + */ + + +uint32_t arm_gaussian_naive_bayes_predict_f32(const arm_gaussian_naive_bayes_instance_f32 *S, + const float32_t * in, + float32_t *pBuffer); + +/** + * @brief Computation of the LogSumExp + * + * In probabilistic computations, the dynamic of the probability values can be very + * wide because they come from gaussian functions. + * To avoid underflow and overflow issues, the values are represented by their log. + * In this representation, multiplying the original exp values is easy : their logs are added. + * But adding the original exp values is requiring some special handling and it is the + * goal of the LogSumExp function. + * + * If the values are x1...xn, the function is computing: + * + * ln(exp(x1) + ... + exp(xn)) and the computation is done in such a way that + * rounding issues are minimised. + * + * The max xm of the values is extracted and the function is computing: + * xm + ln(exp(x1 - xm) + ... + exp(xn - xm)) + * + * @param[in] *in Pointer to an array of input values. + * @param[in] blockSize Number of samples in the input array. + * @return LogSumExp + * + */ + + +float32_t arm_logsumexp_f32(const float32_t *in, uint32_t blockSize); + +/** + * @brief Dot product with log arithmetic + * + * Vectors are containing the log of the samples + * + * @param[in] pSrcA points to the first input vector + * @param[in] pSrcB points to the second input vector + * @param[in] blockSize number of samples in each vector + * @param[in] pTmpBuffer temporary buffer of length blockSize + * @return The log of the dot product . + * + */ + + +float32_t arm_logsumexp_dot_prod_f32(const float32_t * pSrcA, + const float32_t * pSrcB, + uint32_t blockSize, + float32_t *pTmpBuffer); + +/** + * @brief Entropy + * + * @param[in] pSrcA Array of input values. + * @param[in] blockSize Number of samples in the input array. + * @return Entropy -Sum(p ln p) + * + */ + + +float32_t arm_entropy_f32(const float32_t * pSrcA,uint32_t blockSize); + + +/** + * @brief Entropy + * + * @param[in] pSrcA Array of input values. + * @param[in] blockSize Number of samples in the input array. + * @return Entropy -Sum(p ln p) + * + */ + + +float64_t arm_entropy_f64(const float64_t * pSrcA, uint32_t blockSize); + + +/** + * @brief Kullback-Leibler + * + * @param[in] pSrcA Pointer to an array of input values for probability distribution A. + * @param[in] pSrcB Pointer to an array of input values for probability distribution B. + * @param[in] blockSize Number of samples in the input array. + * @return Kullback-Leibler Divergence D(A || B) + * + */ +float32_t arm_kullback_leibler_f32(const float32_t * pSrcA + ,const float32_t * pSrcB + ,uint32_t blockSize); + + +/** + * @brief Kullback-Leibler + * + * @param[in] pSrcA Pointer to an array of input values for probability distribution A. + * @param[in] pSrcB Pointer to an array of input values for probability distribution B. + * @param[in] blockSize Number of samples in the input array. + * @return Kullback-Leibler Divergence D(A || B) + * + */ +float64_t arm_kullback_leibler_f64(const float64_t * pSrcA, + const float64_t * pSrcB, + uint32_t blockSize); + + +/** + * @brief Weighted sum + * + * + * @param[in] *in Array of input values. + * @param[in] *weigths Weights + * @param[in] blockSize Number of samples in the input array. + * @return Weighted sum + * + */ +float32_t arm_weighted_sum_f32(const float32_t *in + , const float32_t *weigths + , uint32_t blockSize); + + +/** + * @brief Barycenter + * + * + * @param[in] in List of vectors + * @param[in] weights Weights of the vectors + * @param[out] out Barycenter + * @param[in] nbVectors Number of vectors + * @param[in] vecDim Dimension of space (vector dimension) + * @return None + * + */ +void arm_barycenter_f32(const float32_t *in + , const float32_t *weights + , float32_t *out + , uint32_t nbVectors + , uint32_t vecDim); + +/** + * @brief Euclidean distance between two vectors + * @param[in] pA First vector + * @param[in] pB Second vector + * @param[in] blockSize vector length + * @return distance + * + */ + +float32_t arm_euclidean_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize); + +/** + * @brief Bray-Curtis distance between two vectors + * @param[in] pA First vector + * @param[in] pB Second vector + * @param[in] blockSize vector length + * @return distance + * + */ +float32_t arm_braycurtis_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize); + +/** + * @brief Canberra distance between two vectors + * + * This function may divide by zero when samples pA[i] and pB[i] are both zero. + * The result of the computation will be correct. So the division per zero may be + * ignored. + * + * @param[in] pA First vector + * @param[in] pB Second vector + * @param[in] blockSize vector length + * @return distance + * + */ +float32_t arm_canberra_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize); + + +/** + * @brief Chebyshev distance between two vectors + * @param[in] pA First vector + * @param[in] pB Second vector + * @param[in] blockSize vector length + * @return distance + * + */ +float32_t arm_chebyshev_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize); + + +/** + * @brief Cityblock (Manhattan) distance between two vectors + * @param[in] pA First vector + * @param[in] pB Second vector + * @param[in] blockSize vector length + * @return distance + * + */ +float32_t arm_cityblock_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize); + +/** + * @brief Correlation distance between two vectors + * + * The input vectors are modified in place ! + * + * @param[in] pA First vector + * @param[in] pB Second vector + * @param[in] blockSize vector length + * @return distance + * + */ +float32_t arm_correlation_distance_f32(float32_t *pA,float32_t *pB, uint32_t blockSize); + +/** + * @brief Cosine distance between two vectors + * + * @param[in] pA First vector + * @param[in] pB Second vector + * @param[in] blockSize vector length + * @return distance + * + */ + +float32_t arm_cosine_distance_f32(const float32_t *pA,const float32_t *pB, uint32_t blockSize); + +/** + * @brief Jensen-Shannon distance between two vectors + * + * This function is assuming that elements of second vector are > 0 + * and 0 only when the corresponding element of first vector is 0. + * Otherwise the result of the computation does not make sense + * and for speed reasons, the cases returning NaN or Infinity are not + * managed. + * + * When the function is computing x log (x / y) with x 0 and y 0, + * it will compute the right value (0) but a division per zero will occur + * and shoudl be ignored in client code. + * + * @param[in] pA First vector + * @param[in] pB Second vector + * @param[in] blockSize vector length + * @return distance + * + */ + +float32_t arm_jensenshannon_distance_f32(const float32_t *pA,const float32_t *pB,uint32_t blockSize); + +/** + * @brief Minkowski distance between two vectors + * + * @param[in] pA First vector + * @param[in] pB Second vector + * @param[in] n Norm order (>= 2) + * @param[in] blockSize vector length + * @return distance + * + */ + + + +float32_t arm_minkowski_distance_f32(const float32_t *pA,const float32_t *pB, int32_t order, uint32_t blockSize); + +/** + * @brief Dice distance between two vectors + * + * @param[in] pA First vector of packed booleans + * @param[in] pB Second vector of packed booleans + * @param[in] order Distance order + * @param[in] blockSize Number of samples + * @return distance + * + */ + + +float32_t arm_dice_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools); + +/** + * @brief Hamming distance between two vectors + * + * @param[in] pA First vector of packed booleans + * @param[in] pB Second vector of packed booleans + * @param[in] numberOfBools Number of booleans + * @return distance + * + */ + +float32_t arm_hamming_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools); + +/** + * @brief Jaccard distance between two vectors + * + * @param[in] pA First vector of packed booleans + * @param[in] pB Second vector of packed booleans + * @param[in] numberOfBools Number of booleans + * @return distance + * + */ + +float32_t arm_jaccard_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools); + +/** + * @brief Kulsinski distance between two vectors + * + * @param[in] pA First vector of packed booleans + * @param[in] pB Second vector of packed booleans + * @param[in] numberOfBools Number of booleans + * @return distance + * + */ + +float32_t arm_kulsinski_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools); + +/** + * @brief Roger Stanimoto distance between two vectors + * + * @param[in] pA First vector of packed booleans + * @param[in] pB Second vector of packed booleans + * @param[in] numberOfBools Number of booleans + * @return distance + * + */ + +float32_t arm_rogerstanimoto_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools); + +/** + * @brief Russell-Rao distance between two vectors + * + * @param[in] pA First vector of packed booleans + * @param[in] pB Second vector of packed booleans + * @param[in] numberOfBools Number of booleans + * @return distance + * + */ + +float32_t arm_russellrao_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools); + +/** + * @brief Sokal-Michener distance between two vectors + * + * @param[in] pA First vector of packed booleans + * @param[in] pB Second vector of packed booleans + * @param[in] numberOfBools Number of booleans + * @return distance + * + */ + +float32_t arm_sokalmichener_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools); + +/** + * @brief Sokal-Sneath distance between two vectors + * + * @param[in] pA First vector of packed booleans + * @param[in] pB Second vector of packed booleans + * @param[in] numberOfBools Number of booleans + * @return distance + * + */ + +float32_t arm_sokalsneath_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools); + +/** + * @brief Yule distance between two vectors + * + * @param[in] pA First vector of packed booleans + * @param[in] pB Second vector of packed booleans + * @param[in] numberOfBools Number of booleans + * @return distance + * + */ + +float32_t arm_yule_distance(const uint32_t *pA, const uint32_t *pB, uint32_t numberOfBools); + + + /** + * @ingroup groupInterpolation + */ + + /** + * @defgroup BilinearInterpolate Bilinear Interpolation + * + * Bilinear interpolation is an extension of linear interpolation applied to a two dimensional grid. + * The underlying function f(x, y) is sampled on a regular grid and the interpolation process + * determines values between the grid points. + * Bilinear interpolation is equivalent to two step linear interpolation, first in the x-dimension and then in the y-dimension. + * Bilinear interpolation is often used in image processing to rescale images. + * The CMSIS DSP library provides bilinear interpolation functions for Q7, Q15, Q31, and floating-point data types. + * + * Algorithm + * \par + * The instance structure used by the bilinear interpolation functions describes a two dimensional data table. + * For floating-point, the instance structure is defined as: + *
+   *   typedef struct
+   *   {
+   *     uint16_t numRows;
+   *     uint16_t numCols;
+   *     float32_t *pData;
+   * } arm_bilinear_interp_instance_f32;
+   * 
+ * + * \par + * where numRows specifies the number of rows in the table; + * numCols specifies the number of columns in the table; + * and pData points to an array of size numRows*numCols values. + * The data table pTable is organized in row order and the supplied data values fall on integer indexes. + * That is, table element (x,y) is located at pTable[x + y*numCols] where x and y are integers. + * + * \par + * Let (x, y) specify the desired interpolation point. Then define: + *
+   *     XF = floor(x)
+   *     YF = floor(y)
+   * 
+ * \par + * The interpolated output point is computed as: + *
+   *  f(x, y) = f(XF, YF) * (1-(x-XF)) * (1-(y-YF))
+   *           + f(XF+1, YF) * (x-XF)*(1-(y-YF))
+   *           + f(XF, YF+1) * (1-(x-XF))*(y-YF)
+   *           + f(XF+1, YF+1) * (x-XF)*(y-YF)
+   * 
+ * Note that the coordinates (x, y) contain integer and fractional components. + * The integer components specify which portion of the table to use while the + * fractional components control the interpolation processor. + * + * \par + * if (x,y) are outside of the table boundary, Bilinear interpolation returns zero output. + */ + + + /** + * @addtogroup BilinearInterpolate + * @{ + */ + + /** + * @brief Floating-point bilinear interpolation. + * @param[in,out] S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate. + * @param[in] Y interpolation coordinate. + * @return out interpolated value. + */ + __STATIC_FORCEINLINE float32_t arm_bilinear_interp_f32( + const arm_bilinear_interp_instance_f32 * S, + float32_t X, + float32_t Y) + { + float32_t out; + float32_t f00, f01, f10, f11; + float32_t *pData = S->pData; + int32_t xIndex, yIndex, index; + float32_t xdiff, ydiff; + float32_t b1, b2, b3, b4; + + xIndex = (int32_t) X; + yIndex = (int32_t) Y; + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if (xIndex < 0 || xIndex > (S->numCols - 2) || yIndex < 0 || yIndex > (S->numRows - 2)) + { + return (0); + } + + /* Calculation of index for two nearest points in X-direction */ + index = (xIndex ) + (yIndex ) * S->numCols; + + + /* Read two nearest points in X-direction */ + f00 = pData[index]; + f01 = pData[index + 1]; + + /* Calculation of index for two nearest points in Y-direction */ + index = (xIndex ) + (yIndex+1) * S->numCols; + + + /* Read two nearest points in Y-direction */ + f10 = pData[index]; + f11 = pData[index + 1]; + + /* Calculation of intermediate values */ + b1 = f00; + b2 = f01 - f00; + b3 = f10 - f00; + b4 = f00 - f01 - f10 + f11; + + /* Calculation of fractional part in X */ + xdiff = X - xIndex; + + /* Calculation of fractional part in Y */ + ydiff = Y - yIndex; + + /* Calculation of bi-linear interpolated output */ + out = b1 + b2 * xdiff + b3 * ydiff + b4 * xdiff * ydiff; + + /* return to application */ + return (out); + } + + + /** + * @brief Q31 bilinear interpolation. + * @param[in,out] S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate in 12.20 format. + * @param[in] Y interpolation coordinate in 12.20 format. + * @return out interpolated value. + */ + __STATIC_FORCEINLINE q31_t arm_bilinear_interp_q31( + arm_bilinear_interp_instance_q31 * S, + q31_t X, + q31_t Y) + { + q31_t out; /* Temporary output */ + q31_t acc = 0; /* output */ + q31_t xfract, yfract; /* X, Y fractional parts */ + q31_t x1, x2, y1, y2; /* Nearest output values */ + int32_t rI, cI; /* Row and column indices */ + q31_t *pYData = S->pData; /* pointer to output table values */ + uint32_t nCols = S->numCols; /* num of rows */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + rI = ((X & (q31_t)0xFFF00000) >> 20); + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + cI = ((Y & (q31_t)0xFFF00000) >> 20); + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if (rI < 0 || rI > (S->numCols - 2) || cI < 0 || cI > (S->numRows - 2)) + { + return (0); + } + + /* 20 bits for the fractional part */ + /* shift left xfract by 11 to keep 1.31 format */ + xfract = (X & 0x000FFFFF) << 11U; + + /* Read two nearest output values from the index */ + x1 = pYData[(rI) + (int32_t)nCols * (cI) ]; + x2 = pYData[(rI) + (int32_t)nCols * (cI) + 1]; + + /* 20 bits for the fractional part */ + /* shift left yfract by 11 to keep 1.31 format */ + yfract = (Y & 0x000FFFFF) << 11U; + + /* Read two nearest output values from the index */ + y1 = pYData[(rI) + (int32_t)nCols * (cI + 1) ]; + y2 = pYData[(rI) + (int32_t)nCols * (cI + 1) + 1]; + + /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 3.29(q29) format */ + out = ((q31_t) (((q63_t) x1 * (0x7FFFFFFF - xfract)) >> 32)); + acc = ((q31_t) (((q63_t) out * (0x7FFFFFFF - yfract)) >> 32)); + + /* x2 * (xfract) * (1-yfract) in 3.29(q29) and adding to acc */ + out = ((q31_t) ((q63_t) x2 * (0x7FFFFFFF - yfract) >> 32)); + acc += ((q31_t) ((q63_t) out * (xfract) >> 32)); + + /* y1 * (1 - xfract) * (yfract) in 3.29(q29) and adding to acc */ + out = ((q31_t) ((q63_t) y1 * (0x7FFFFFFF - xfract) >> 32)); + acc += ((q31_t) ((q63_t) out * (yfract) >> 32)); + + /* y2 * (xfract) * (yfract) in 3.29(q29) and adding to acc */ + out = ((q31_t) ((q63_t) y2 * (xfract) >> 32)); + acc += ((q31_t) ((q63_t) out * (yfract) >> 32)); + + /* Convert acc to 1.31(q31) format */ + return ((q31_t)(acc << 2)); + } + + + /** + * @brief Q15 bilinear interpolation. + * @param[in,out] S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate in 12.20 format. + * @param[in] Y interpolation coordinate in 12.20 format. + * @return out interpolated value. + */ + __STATIC_FORCEINLINE q15_t arm_bilinear_interp_q15( + arm_bilinear_interp_instance_q15 * S, + q31_t X, + q31_t Y) + { + q63_t acc = 0; /* output */ + q31_t out; /* Temporary output */ + q15_t x1, x2, y1, y2; /* Nearest output values */ + q31_t xfract, yfract; /* X, Y fractional parts */ + int32_t rI, cI; /* Row and column indices */ + q15_t *pYData = S->pData; /* pointer to output table values */ + uint32_t nCols = S->numCols; /* num of rows */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + rI = ((X & (q31_t)0xFFF00000) >> 20); + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + cI = ((Y & (q31_t)0xFFF00000) >> 20); + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if (rI < 0 || rI > (S->numCols - 2) || cI < 0 || cI > (S->numRows - 2)) + { + return (0); + } + + /* 20 bits for the fractional part */ + /* xfract should be in 12.20 format */ + xfract = (X & 0x000FFFFF); + + /* Read two nearest output values from the index */ + x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) ]; + x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1]; + + /* 20 bits for the fractional part */ + /* yfract should be in 12.20 format */ + yfract = (Y & 0x000FFFFF); + + /* Read two nearest output values from the index */ + y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) ]; + y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1]; + + /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 13.51 format */ + + /* x1 is in 1.15(q15), xfract in 12.20 format and out is in 13.35 format */ + /* convert 13.35 to 13.31 by right shifting and out is in 1.31 */ + out = (q31_t) (((q63_t) x1 * (0x0FFFFF - xfract)) >> 4U); + acc = ((q63_t) out * (0x0FFFFF - yfract)); + + /* x2 * (xfract) * (1-yfract) in 1.51 and adding to acc */ + out = (q31_t) (((q63_t) x2 * (0x0FFFFF - yfract)) >> 4U); + acc += ((q63_t) out * (xfract)); + + /* y1 * (1 - xfract) * (yfract) in 1.51 and adding to acc */ + out = (q31_t) (((q63_t) y1 * (0x0FFFFF - xfract)) >> 4U); + acc += ((q63_t) out * (yfract)); + + /* y2 * (xfract) * (yfract) in 1.51 and adding to acc */ + out = (q31_t) (((q63_t) y2 * (xfract)) >> 4U); + acc += ((q63_t) out * (yfract)); + + /* acc is in 13.51 format and down shift acc by 36 times */ + /* Convert out to 1.15 format */ + return ((q15_t)(acc >> 36)); + } + + + /** + * @brief Q7 bilinear interpolation. + * @param[in,out] S points to an instance of the interpolation structure. + * @param[in] X interpolation coordinate in 12.20 format. + * @param[in] Y interpolation coordinate in 12.20 format. + * @return out interpolated value. + */ + __STATIC_FORCEINLINE q7_t arm_bilinear_interp_q7( + arm_bilinear_interp_instance_q7 * S, + q31_t X, + q31_t Y) + { + q63_t acc = 0; /* output */ + q31_t out; /* Temporary output */ + q31_t xfract, yfract; /* X, Y fractional parts */ + q7_t x1, x2, y1, y2; /* Nearest output values */ + int32_t rI, cI; /* Row and column indices */ + q7_t *pYData = S->pData; /* pointer to output table values */ + uint32_t nCols = S->numCols; /* num of rows */ + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + rI = ((X & (q31_t)0xFFF00000) >> 20); + + /* Input is in 12.20 format */ + /* 12 bits for the table index */ + /* Index value calculation */ + cI = ((Y & (q31_t)0xFFF00000) >> 20); + + /* Care taken for table outside boundary */ + /* Returns zero output when values are outside table boundary */ + if (rI < 0 || rI > (S->numCols - 2) || cI < 0 || cI > (S->numRows - 2)) + { + return (0); + } + + /* 20 bits for the fractional part */ + /* xfract should be in 12.20 format */ + xfract = (X & (q31_t)0x000FFFFF); + + /* Read two nearest output values from the index */ + x1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) ]; + x2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI) + 1]; + + /* 20 bits for the fractional part */ + /* yfract should be in 12.20 format */ + yfract = (Y & (q31_t)0x000FFFFF); + + /* Read two nearest output values from the index */ + y1 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) ]; + y2 = pYData[((uint32_t)rI) + nCols * ((uint32_t)cI + 1) + 1]; + + /* Calculation of x1 * (1-xfract ) * (1-yfract) and acc is in 16.47 format */ + out = ((x1 * (0xFFFFF - xfract))); + acc = (((q63_t) out * (0xFFFFF - yfract))); + + /* x2 * (xfract) * (1-yfract) in 2.22 and adding to acc */ + out = ((x2 * (0xFFFFF - yfract))); + acc += (((q63_t) out * (xfract))); + + /* y1 * (1 - xfract) * (yfract) in 2.22 and adding to acc */ + out = ((y1 * (0xFFFFF - xfract))); + acc += (((q63_t) out * (yfract))); + + /* y2 * (xfract) * (yfract) in 2.22 and adding to acc */ + out = ((y2 * (yfract))); + acc += (((q63_t) out * (xfract))); + + /* acc in 16.47 format and down shift by 40 to convert to 1.7 format */ + return ((q7_t)(acc >> 40)); + } + + /** + * @} end of BilinearInterpolate group + */ + + +/* SMMLAR */ +#define multAcc_32x32_keep32_R(a, x, y) \ + a = (q31_t) (((((q63_t) a) << 32) + ((q63_t) x * y) + 0x80000000LL ) >> 32) + +/* SMMLSR */ +#define multSub_32x32_keep32_R(a, x, y) \ + a = (q31_t) (((((q63_t) a) << 32) - ((q63_t) x * y) + 0x80000000LL ) >> 32) + +/* SMMULR */ +#define mult_32x32_keep32_R(a, x, y) \ + a = (q31_t) (((q63_t) x * y + 0x80000000LL ) >> 32) + +/* SMMLA */ +#define multAcc_32x32_keep32(a, x, y) \ + a += (q31_t) (((q63_t) x * y) >> 32) + +/* SMMLS */ +#define multSub_32x32_keep32(a, x, y) \ + a -= (q31_t) (((q63_t) x * y) >> 32) + +/* SMMUL */ +#define mult_32x32_keep32(a, x, y) \ + a = (q31_t) (((q63_t) x * y ) >> 32) + + +#if defined ( __CC_ARM ) + /* Enter low optimization region - place directly above function definition */ + #if defined( __ARM_ARCH_7EM__ ) + #define LOW_OPTIMIZATION_ENTER \ + _Pragma ("push") \ + _Pragma ("O1") + #else + #define LOW_OPTIMIZATION_ENTER + #endif + + /* Exit low optimization region - place directly after end of function definition */ + #if defined ( __ARM_ARCH_7EM__ ) + #define LOW_OPTIMIZATION_EXIT \ + _Pragma ("pop") + #else + #define LOW_OPTIMIZATION_EXIT + #endif + + /* Enter low optimization region - place directly above function definition */ + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + + /* Exit low optimization region - place directly after end of function definition */ + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined (__ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 ) + #define LOW_OPTIMIZATION_ENTER + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined ( __GNUC__ ) + #define LOW_OPTIMIZATION_ENTER \ + __attribute__(( optimize("-O1") )) + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined ( __ICCARM__ ) + /* Enter low optimization region - place directly above function definition */ + #if defined ( __ARM_ARCH_7EM__ ) + #define LOW_OPTIMIZATION_ENTER \ + _Pragma ("optimize=low") + #else + #define LOW_OPTIMIZATION_ENTER + #endif + + /* Exit low optimization region - place directly after end of function definition */ + #define LOW_OPTIMIZATION_EXIT + + /* Enter low optimization region - place directly above function definition */ + #if defined ( __ARM_ARCH_7EM__ ) + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER \ + _Pragma ("optimize=low") + #else + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #endif + + /* Exit low optimization region - place directly after end of function definition */ + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined ( __TI_ARM__ ) + #define LOW_OPTIMIZATION_ENTER + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined ( __CSMC__ ) + #define LOW_OPTIMIZATION_ENTER + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined ( __TASKING__ ) + #define LOW_OPTIMIZATION_ENTER + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT + +#elif defined ( _MSC_VER ) || defined(__GNUC_PYTHON__) + #define LOW_OPTIMIZATION_ENTER + #define LOW_OPTIMIZATION_EXIT + #define IAR_ONLY_LOW_OPTIMIZATION_ENTER + #define IAR_ONLY_LOW_OPTIMIZATION_EXIT +#endif + + + +/* Compiler specific diagnostic adjustment */ +#if defined ( __CC_ARM ) + +#elif defined ( __ARMCC_VERSION ) && ( __ARMCC_VERSION >= 6010050 ) + +#elif defined ( __GNUC__ ) +#pragma GCC diagnostic pop + +#elif defined ( __ICCARM__ ) + +#elif defined ( __TI_ARM__ ) + +#elif defined ( __CSMC__ ) + +#elif defined ( __TASKING__ ) + +#elif defined ( _MSC_VER ) + +#else + #error Unknown compiler +#endif + +#ifdef __cplusplus +} +#endif + + +#endif /* _ARM_MATH_H */ + +/** + * + * End of file. + */ diff --git a/Middlewares/Third_Party/ARM/DSP/LICENSE.txt b/Middlewares/Third_Party/ARM/DSP/LICENSE.txt new file mode 100644 index 0000000..c0ee812 --- /dev/null +++ b/Middlewares/Third_Party/ARM/DSP/LICENSE.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/User/component/cmd.c b/User/component/cmd.c index 161af6e..e1931ad 100644 --- a/User/component/cmd.c +++ b/User/component/cmd.c @@ -19,36 +19,39 @@ static void CMD_RcLogic(const CMD_RC_t *rc, CMD_t *cmd, float dt_sec) { switch (rc->sw_l) { /* 左拨杆相应行为选择和解析 */ case CMD_SW_UP: - cmd->chassis.mode = CHASSIS_MODE_RELAX; switch (rc->sw_r) { /* 右拨杆相应行为选择和解析*/ case CMD_SW_UP: + cmd->chassis.mode = CHASSIS_MODE_RELAX; cmd->chassis.action = CHASSIS_ACTION_NONE; break; case CMD_SW_MID: + cmd->chassis.mode = CHASSIS_MODE_DAMP; cmd->chassis.action = CHASSIS_ACTION_NONE; break; case CMD_SW_DOWN: + cmd->chassis.mode = CHASSIS_MODE_DAMP; cmd->chassis.action = CHASSIS_ACTION_NONE; break; case CMD_SW_ERR: + cmd->chassis.mode = CHASSIS_MODE_RELAX; cmd->chassis.action = CHASSIS_ACTION_NONE; break; } break; case CMD_SW_MID: - cmd->chassis.mode = CHASSIS_MODE_DAMP; + cmd->chassis.mode = CHASSIS_MODE_JUMP; switch (rc->sw_r) { /* 右拨杆相应行为选择和解析*/ case CMD_SW_UP: - cmd->chassis.action = CHASSIS_ACTION_NONE; + cmd->chassis.action = CHASSIS_ACTION_STAND; break; case CMD_SW_MID: - cmd->chassis.action = CHASSIS_ACTION_NONE; + cmd->chassis.action = CHASSIS_ACTION_WAIT_JUMP; break; case CMD_SW_DOWN: - cmd->chassis.action = CHASSIS_ACTION_NONE; + cmd->chassis.action = CHASSIS_ACTION_JUMP; break; case CMD_SW_ERR: cmd->chassis.action = CHASSIS_ACTION_NONE; @@ -67,7 +70,7 @@ static void CMD_RcLogic(const CMD_RC_t *rc, CMD_t *cmd, float dt_sec) { cmd->chassis.action = CHASSIS_ACTION_STAND; break; case CMD_SW_DOWN: - cmd->chassis.action = CHASSIS_ACTION_TROT; + cmd->chassis.action = CHASSIS_ACTION_SLOW_TROT; break; case CMD_SW_ERR: cmd->chassis.action = CHASSIS_ACTION_NONE; diff --git a/User/component/cmd.h b/User/component/cmd.h index db2b331..8e4e0bc 100644 --- a/User/component/cmd.h +++ b/User/component/cmd.h @@ -20,6 +20,7 @@ typedef enum { CHASSIS_MODE_BREAK, /* 刹车模式,电机闭环控制保持静止。用于机器人停止状态 */ CHASSIS_MODE_POSITION, /* 位置模式,电机闭环控制保持在指定位置 */ CHASSIS_MODE_FOLLOW, /* 通过闭环控制使车头方向跟随遥控器 */ + CHASSIS_MODE_JUMP, /*跳跃模式*/ } CMD_ChassisMode_t; typedef enum { @@ -27,6 +28,9 @@ typedef enum { CHASSIS_ACTION_STAND, /* 站立动作 */ CHASSIS_ACTION_WALK, /* 行走动作 */ CHASSIS_ACTION_TROT, /* 小跑动作 */ + CHASSIS_ACTION_SLOW_TROT, + CHASSIS_ACTION_WAIT_JUMP, + CHASSIS_ACTION_JUMP, /* 跳跃动作 */ CHASSIS_ACTION_RUN, CHASSIS_ACTION_NUM, diff --git a/User/module/chassis.c b/User/module/chassis.c index fd2fbcc..b093ac4 100644 --- a/User/module/chassis.c +++ b/User/module/chassis.c @@ -44,8 +44,8 @@ static Kinematics_JointCMD_t position_mode = { .T = 0.0f, /* 零力矩 */ .W = 0.0f, /* 零速度 */ .Pos = 0.0f, /* 零位置 */ - .K_P = 1.2f, /* 刚度系数 */ - .K_W = 0.05f, /* 速度系数 */ + .K_P = 2.2f, /* 刚度系数 */ + .K_W = 0.08f, /* 速度系数 */ }; // static uint8_t chassis_mode_states = 0; diff --git a/User/module/chassis.h b/User/module/chassis.h index f1034a8..6490c29 100644 --- a/User/module/chassis.h +++ b/User/module/chassis.h @@ -41,18 +41,18 @@ typedef enum { typedef union { float id[GO_MOTOR_NUM]; struct{ - float lf_hip; /* 左前腿髋关节长度,单位:米 */ - float lf_thigh; /* 左前腿大腿长度,单位:米 */ - float lf_calf; /* 左前腿小腿长度,单位:米 */ - float rf_hip; /* 右前腿髋关节长度,单位:米 */ - float rf_thigh; /* 右前腿大腿长度,单位:米 */ - float rf_calf; /* 右前腿小腿长度,单位:米 */ - float lr_hip; /* 左后腿髋关节长度,单位:米 */ - float lr_thigh; /* 左后腿大腿长度,单位:米 */ - float lr_calf; /* 左后腿小腿长度,单位:米 */ - float rr_hip; /* 右后腿髋关节长度,单位:米 */ - float rr_thigh; /* 右后腿大腿长度,单位:米 */ - float rr_calf; /* 右后腿小腿长度,单位:米 */ + float lf_hip; + float lf_thigh; + float lf_calf; + float rf_hip; + float rf_thigh; + float rf_calf; + float lr_hip; + float lr_thigh; + float lr_calf; + float rr_hip; + float rr_thigh; + float rr_calf; } named; } joint_params; @@ -61,6 +61,20 @@ typedef struct { float y; float z; } joint_pos; + +typedef struct { + float x; + float y; + float z; +} foot_pos; + +typedef struct { + foot_pos lf; + foot_pos rf; + foot_pos lr; + foot_pos rr; +} foots_pos; + typedef struct { joint_params min; joint_params max; @@ -80,8 +94,6 @@ typedef union { typedef struct{ joint_params zero_point; /* 零点角度,单位:弧度 */ - // joint_params length; /* 关节长度,单位:米 */ - joint_params ratio; /* 关节减速比 */ joint_limits limit; /* 关节的最小和最大角度,单位:弧度 */ @@ -99,6 +111,7 @@ typedef struct { KPID_Params_t torque_pid_param; /* 力矩矩控制PID的参数 */ KPID_Params_t blance_pid_param; /* 平衡PID的参数 */ + /* 低通滤波器截止频率 */ struct { float in; /* 输入 */ @@ -113,11 +126,11 @@ typedef struct { */ typedef struct { uint32_t lask_wakeup; + float dt; float time; const Chassis_Params_t *param; /* 底盘的参数,用Chassis_Init设定 */ - GO_ChassisFeedback_t feedback; /* 底盘反馈信息 */ GO_ChassisCMD_t output; float height; /* 底盘高度,单位:米 */ @@ -143,14 +156,18 @@ typedef struct { }end_pos; } leg_pos; /* 四条腿的关节位置,单位:米 */ + struct { + foots_pos *leg; + } foots; /* 四条腿的足端位置*/ + /* 模块通用 */ CMD_ChassisMode_t mode; /* 底盘模式 */ CMD_ChassisAction_t action; /* 底盘模式 */ - AHRS_Eulr_t eulr_imu; /* 欧拉角,单位:弧度 */ + AHRS_Eulr_t eulr_imu; /* IMU获取的欧拉角 */ - AHRS_Eulr_t delta_eulr; /* 欧拉角变化量,单位:弧度 */ + AHRS_Eulr_t delta_eulr; /* 欧拉角变化量 */ AHRS_Eulr_t eulr_setpoint; /* 期望的欧拉角,单位:弧度 */ diff --git a/User/module/config.c b/User/module/config.c index 7440eb2..fca5dea 100644 --- a/User/module/config.c +++ b/User/module/config.c @@ -11,15 +11,17 @@ #define CONFIG_BASE_ADDRESS (ADDR_FLASH_SECTOR_11) -#define JOINT_CALF_OFFSET (2.7321f * 12.66) +#define JOINT_CALF_OFFSET (2.7321f * 12.66f) Config_t param_default = { - + .uart = { .left_leg = BSP_UART_LEFT_LEG, .right_leg = BSP_UART_RIGHT_LEG, }, + .chassis_imu_type = IMU_WHEELREC_N100, + .cali = { .bmi088 = { .gyro_offset = {0.0f, 0.0f, 0.0f}, @@ -30,25 +32,25 @@ Config_t param_default = { .type = CHASSIS_TYPE_QUADRUPED, .torque_pid_param = { - .k = 5.0f, /* 控制器增益 */ - .p = 20.0f, /* 比例项增益 */ - .i = 1.0f, /* 积分项增益 */ - .d = 0.0f, /* 微分项增益 */ - .i_limit = 100.0f, /* 积分项上限 */ - .out_limit = 100.0f, /* 输出绝对值限制 */ - .d_cutoff_freq = -1.0f, /* D项低通截止频率 */ - .range = -1.0f, /* 计算循环误差时使用,大于0时启用 */ + .k = 5.0f, + .p = 20.0f, + .i = 1.0f, + .d = 0.0f, + .i_limit = 100.0f, + .out_limit = 100.0f, + .d_cutoff_freq = -1.0f, + .range = -1.0f, }, .blance_pid_param = { - .k = 1.00f, /* 控制器增益 */ - .p = 0.08f, /* 比例项增益 */ - .i = 0.08f, /* 积分项增益 */ - .d = 0.0f, /* 微分项增益 */ - .i_limit = 0.05f, /* 积分项上限 */ - .out_limit = 0.1f, /* 输出绝对值限制 */ - .d_cutoff_freq = -1.0f, /* D项低通截止频率 */ - .range = -1.0f, /* 计算循环误差时使用,大于0时启用 */ + .k = 1.00f, + .p = 0.08f, + .i = 0.08f, + .d = 0.0f, + .i_limit = 0.05f, + .out_limit = 0.1f, + .d_cutoff_freq = -1.0f, + .range = -1.0f, }, .low_pass_cutoff_freq = { @@ -57,11 +59,13 @@ Config_t param_default = { }, .mech_param = { + .length = { .hip = 0.0861f, .thigh = 0.20f, .calf = 0.20f, }, + .limit = { .max = { .named = { @@ -79,6 +83,7 @@ Config_t param_default = { .rr_calf = -1.2f, /* 右后腿小腿最大角度,单位:弧度 */ } }, + .min = { .named = { .lf_hip = -0.50f, /* 左前腿髋关节最大角度,单位:弧度 */ @@ -97,29 +102,26 @@ Config_t param_default = { } }, - .zero_point = { .named = { .lf_hip = 0.02f, /* 左前腿髋关节零点角度,单位:弧度 */ - .lf_thigh = -3.17f, /* 左前腿大腿零点角度,单位:弧度 */ - .lf_calf = 0.72f - JOINT_CALF_OFFSET, /* 左前腿小腿零点角度,单位:弧度 */ + .lf_thigh = -4.90f, /* 左前腿大腿零点角度,单位:弧度 */ + .lf_calf = 0.9f - JOINT_CALF_OFFSET, /* 左前腿小腿零点角度,单位:弧度 */ - .rf_hip = 5.37f, /* 右前腿髋关节零点角度,单位:弧度 */ - .rf_thigh = 9.38f, /* 右前腿大腿零点角度,单位:弧度 */ - .rf_calf = 4.96f + JOINT_CALF_OFFSET, /* 右前腿小腿零点角度,单位:弧度 */ + .rf_hip = 5.27f, /* 右前腿髋关节零点角度,单位:弧度 */ + .rf_thigh = 9.443f, /* 右前腿大腿零点角度,单位:弧度 */ + .rf_calf = 6.02777243f + JOINT_CALF_OFFSET, /* 右前腿小腿零点角度,单位:弧度 */ .lr_hip = 4.5f, /* 左后腿髋关节零点角度,单位:弧度 */ .lr_thigh = -3.2f, /* 左后腿大腿零点角度,单位:弧度 */ - .lr_calf = 1.73f - JOINT_CALF_OFFSET, /* 左后腿小腿零点角度,单位:弧度 */ + .lr_calf = 1.22f - JOINT_CALF_OFFSET, /* 左后腿小腿零点角度,单位:弧度 */ - .rr_hip = 2.7f, /* 右后腿髋关节零点角度,单位:弧度 */ - .rr_thigh = 10.58f, /* 右后腿大腿零点角度,单位:弧度 */ - .rr_calf = 3.58f + JOINT_CALF_OFFSET, /* 右后腿小腿零点角度,单位:弧度 */ + .rr_hip = 2.55f, /* 右后腿髋关节零点角度,单位:弧度 */ + .rr_thigh = 10.45f, /* 右后腿大腿零点角度,单位:弧度 */ + .rr_calf = 3.48f + JOINT_CALF_OFFSET, /* 右后腿小腿零点角度,单位:弧度 */ } }, - - .sign = { .leg = { [0] = { .hip = 1, .thigh = 1, .calf = -1 }, /* 左前腿 */ @@ -128,6 +130,7 @@ Config_t param_default = { [3] = { .hip = 1, .thigh = -1, .calf = 1 }, /* 右后腿 */ } }, + .ratio = { .named = { .lf_hip = 6.33f, /* 左前腿髋关节减速比 */ @@ -144,15 +147,13 @@ Config_t param_default = { .rr_calf = 12.66f, /* 右后腿小腿减速比 */ } }, + .leg_offset = { .x = 0.19625f, /* 腿偏移X轴,单位:米 */ .y = 0.0825f, /* 腿偏移Y轴,单位:米 */ .z = 0.0f, /* 腿偏移Z轴,单位:米 */ } - }, - - }, }; /* param_default */